From 3688bbb02477cde41dc385e037e81d768d9e0db7 Mon Sep 17 00:00:00 2001 From: Steve Ayers Date: Wed, 23 Apr 2025 11:49:30 -0400 Subject: [PATCH 1/4] Rename rules to constraints --- Makefile | 2 +- buf.yaml | 4 +- .../custom_constraints_pb2.py | 192 ------ .../cases/custom_rules/custom_rules_pb2.py | 232 ++++++++ .../custom_rules_pb2.pyi} | 67 ++- .../validate/conformance/cases/numbers_pb2.py | 546 +++++++++--------- .../conformance/cases/numbers_pb2.pyi | 2 +- gen/buf/validate/validate_pb2.py | 198 +++---- gen/buf/validate/validate_pb2.pyi | 40 +- .../internal/{constraints.py => rules.py} | 286 +++++---- protovalidate/validator.py | 32 +- tests/conformance/nonconforming.yaml | 4 +- tests/conformance/runner.py | 2 +- tests/validate_test.py | 2 +- 14 files changed, 851 insertions(+), 758 deletions(-) delete mode 100644 gen/buf/validate/conformance/cases/custom_constraints/custom_constraints_pb2.py create mode 100644 gen/buf/validate/conformance/cases/custom_rules/custom_rules_pb2.py rename gen/buf/validate/conformance/cases/{custom_constraints/custom_constraints_pb2.pyi => custom_rules/custom_rules_pb2.pyi} (80%) rename protovalidate/internal/{constraints.py => rules.py} (77%) diff --git a/Makefile b/Makefile index 2d9fe1b..d0cd92a 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ ADD_LICENSE_HEADER := $(BIN)/license-header \ --license-type apache \ --copyright-holder "Buf Technologies, Inc." \ --year-range "2023-2025" -PROTOVALIDATE_VERSION ?= v0.10.4 +PROTOVALIDATE_VERSION ?= v0.11.0 .PHONY: help help: ## Describe useful make targets diff --git a/buf.yaml b/buf.yaml index 5fc5b92..db835e5 100644 --- a/buf.yaml +++ b/buf.yaml @@ -2,8 +2,8 @@ version: v2 modules: - path: proto deps: - - buf.build/bufbuild/protovalidate - - buf.build/bufbuild/protovalidate-testing + - buf.build/bufbuild/protovalidate:v0.11.0 + - buf.build/bufbuild/protovalidate-testing:v0.11.0 lint: use: - STANDARD diff --git a/gen/buf/validate/conformance/cases/custom_constraints/custom_constraints_pb2.py b/gen/buf/validate/conformance/cases/custom_constraints/custom_constraints_pb2.py deleted file mode 100644 index f65ec67..0000000 --- a/gen/buf/validate/conformance/cases/custom_constraints/custom_constraints_pb2.py +++ /dev/null @@ -1,192 +0,0 @@ -# Copyright 2023-2025 Buf Technologies, Inc. -# -# 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. - -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: buf/validate/conformance/cases/custom_constraints/custom_constraints.proto -# Protobuf Python Version: 6.30.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 30, - 1, - '', - 'buf/validate/conformance/cases/custom_constraints/custom_constraints.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nJbuf/validate/conformance/cases/custom_constraints/custom_constraints.proto\x12\x31\x62uf.validate.conformance.cases.custom_constraints\x1a\x1b\x62uf/validate/validate.proto\"\xc5\x01\n\rNoExpressions\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\x12\x45\n\x01\x62\x18\x02 \x01(\x0e\x32\x37.buf.validate.conformance.cases.custom_constraints.EnumR\x01\x62\x12U\n\x01\x63\x18\x03 \x01(\x0b\x32G.buf.validate.conformance.cases.custom_constraints.NoExpressions.NestedR\x01\x63\x1a\x08\n\x06Nested\"\xc3\x05\n\x12MessageExpressions\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\x12\x0c\n\x01\x62\x18\x02 \x01(\x05R\x01\x62\x12\x45\n\x01\x63\x18\x03 \x01(\x0e\x32\x37.buf.validate.conformance.cases.custom_constraints.EnumR\x01\x63\x12\x45\n\x01\x64\x18\x04 \x01(\x0e\x32\x37.buf.validate.conformance.cases.custom_constraints.EnumR\x01\x64\x12Z\n\x01\x65\x18\x05 \x01(\x0b\x32L.buf.validate.conformance.cases.custom_constraints.MessageExpressions.NestedR\x01\x65\x12Z\n\x01\x66\x18\x06 \x01(\x0b\x32L.buf.validate.conformance.cases.custom_constraints.MessageExpressions.NestedR\x01\x66\x1ax\n\x06Nested\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\x12\x0c\n\x01\x62\x18\x02 \x01(\x05R\x01\x62:R\xbaHO\x1aM\n\x19message_expression_nested\x1a\x30this.a > this.b ? \'\': \'a must be greater than b\':\xd0\x01\xbaH\xcc\x01\x1a\x43\n\x19message_expression_scalar\x12\x15\x61 must be less than b\x1a\x0fthis.a < this.b\x1a?\n\x17message_expression_enum\x12\x12\x63 must not equal d\x1a\x10this.c != this.d\x1a\x44\n\x18message_expression_embed\x12\x12\x65.a must equal f.a\x1a\x14this.e.a == this.f.a\"R\n\x0cMissingField\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61:4\xbaH1\x1a/\n\rmissing_field\x12\x12\x62 must be positive\x1a\nthis.b > 0\"g\n\rIncorrectType\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61:H\xbaHE\x1a\x43\n\x0eincorrect_type\x12\x17\x61 must start with \'foo\'\x1a\x18this.a.startsWith(\'foo\')\"}\n\x0f\x44ynRuntimeError\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61:\\\xbaHY\x1aW\n\x0f\x64yn_runtime_err\x12.dynamic type tries to use a non-existent field\x1a\x14\x64yn(this).b == \'foo\'\"\\\n\x0cNowEqualsNow:L\xbaHI\x1aG\n\x0enow_equals_now\x12)now should equal now within an expression\x1a\nnow == now\"\xdf\x02\n\x1d\x46ieldExpressionMultipleScalar\x12\xbd\x02\n\x03val\x18\x01 \x01(\x05\x42\xaa\x02\xbaH\xa6\x02\xba\x01_\n\"field_expression.multiple.scalar.1\x12/test message field_expression.multiple.scalar.1\x1a\x08this > 0\xba\x01_\n\"field_expression.multiple.scalar.2\x12/test message field_expression.multiple.scalar.2\x1a\x08this > 1\xba\x01_\n\"field_expression.multiple.scalar.3\x12/test message field_expression.multiple.scalar.3\x1a\x08this > 2R\x03val\"\x7f\n\x1b\x46ieldExpressionNestedScalar\x12`\n\x06nested\x18\x01 \x01(\x0b\x32H.buf.validate.conformance.cases.custom_constraints.FieldExpressionScalarR\x06nested\"\xa2\x01\n\x1d\x46ieldExpressionOptionalScalar\x12y\n\x03val\x18\x01 \x01(\x05\x42\x62\xbaH_\xba\x01\\\n field_expression.optional.scalar\x12-test message field_expression.optional.scalar\x1a\tthis == 1H\x00R\x03val\x88\x01\x01\x42\x06\n\x04_val\"{\n\x15\x46ieldExpressionScalar\x12\x62\n\x03val\x18\x01 \x01(\x05\x42P\xbaHM\xba\x01J\n\x17\x66ield_expression.scalar\x12$test message field_expression.scalar\x1a\tthis == 1R\x03val\"\xaf\x01\n\x13\x46ieldExpressionEnum\x12\x97\x01\n\x03val\x18\x01 \x01(\x0e\x32\x37.buf.validate.conformance.cases.custom_constraints.EnumBL\xbaHI\xba\x01\x46\n\x15\x66ield_expression.enum\x12\"test message field_expression.enum\x1a\tthis == 1R\x03val\"\xe5\x01\n\x16\x46ieldExpressionMessage\x12\xb5\x01\n\x03val\x18\x01 \x01(\x0b\x32M.buf.validate.conformance.cases.custom_constraints.FieldExpressionMessage.MsgBT\xbaHQ\xba\x01N\n\x18\x66ield_expression.message\x12%test message field_expression.message\x1a\x0bthis.a == 1R\x03val\x1a\x13\n\x03Msg\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\"\xa5\x02\n\x18\x46ieldExpressionMapScalar\x12\xd0\x01\n\x03val\x18\x01 \x03(\x0b\x32T.buf.validate.conformance.cases.custom_constraints.FieldExpressionMapScalar.ValEntryBh\xbaHe\xba\x01\x62\n\x1b\x66ield_expression.map.scalar\x12(test message field_expression.map.scalar\x1a\x19this.all(k, this[k] == 1)R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x02\x38\x01\"\xd6\x02\n\x16\x46ieldExpressionMapEnum\x12\xca\x01\n\x03val\x18\x01 \x03(\x0b\x32R.buf.validate.conformance.cases.custom_constraints.FieldExpressionMapEnum.ValEntryBd\xbaHa\xba\x01^\n\x19\x66ield_expression.map.enum\x12&test message field_expression.map.enum\x1a\x19this.all(k, this[k] == 1)R\x03val\x1ao\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12M\n\x05value\x18\x02 \x01(\x0e\x32\x37.buf.validate.conformance.cases.custom_constraints.EnumR\x05value:\x02\x38\x01\"\x93\x03\n\x19\x46ieldExpressionMapMessage\x12\xd5\x01\n\x03val\x18\x01 \x03(\x0b\x32U.buf.validate.conformance.cases.custom_constraints.FieldExpressionMapMessage.ValEntryBl\xbaHi\xba\x01\x66\n\x1c\x66ield_expression.map.message\x12)test message field_expression.map.message\x1a\x1bthis.all(k, this[k].a == 1)R\x03val\x1a\x88\x01\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x66\n\x05value\x18\x02 \x01(\x0b\x32P.buf.validate.conformance.cases.custom_constraints.FieldExpressionMapMessage.MsgR\x05value:\x02\x38\x01\x1a\x13\n\x03Msg\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\"\x9f\x02\n\x16\x46ieldExpressionMapKeys\x12\xcc\x01\n\x03val\x18\x01 \x03(\x0b\x32R.buf.validate.conformance.cases.custom_constraints.FieldExpressionMapKeys.ValEntryBf\xbaHc\x9a\x01`\"^\xba\x01[\n\x19\x66ield_expression.map.keys\x12&test message field_expression.map.keys\x1a\x16this == 4 || this == 8R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x02\x38\x01\"\xb4\x02\n\x1e\x46ieldExpressionMapScalarValues\x12\xd9\x01\n\x03val\x18\x01 \x03(\x0b\x32Z.buf.validate.conformance.cases.custom_constraints.FieldExpressionMapScalarValues.ValEntryBk\xbaHh\x9a\x01\x65*c\xba\x01`\n\"field_expression.map.scalar.values\x12/test message field_expression.map.scalar.values\x1a\tthis == 1R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x02\x38\x01\"\xe5\x02\n\x1c\x46ieldExpressionMapEnumValues\x12\xd3\x01\n\x03val\x18\x01 \x03(\x0b\x32X.buf.validate.conformance.cases.custom_constraints.FieldExpressionMapEnumValues.ValEntryBg\xbaHd\x9a\x01\x61*_\xba\x01\\\n field_expression.map.enum.values\x12-test message field_expression.map.enum.values\x1a\tthis == 1R\x03val\x1ao\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12M\n\x05value\x18\x02 \x01(\x0e\x32\x37.buf.validate.conformance.cases.custom_constraints.EnumR\x05value:\x02\x38\x01\"\xa8\x03\n\x1f\x46ieldExpressionMapMessageValues\x12\xde\x01\n\x03val\x18\x01 \x03(\x0b\x32[.buf.validate.conformance.cases.custom_constraints.FieldExpressionMapMessageValues.ValEntryBo\xbaHl\x9a\x01i*g\xba\x01\x64\n#field_expression.map.message.values\x12\x30test message field_expression.map.message.values\x1a\x0bthis.a == 1R\x03val\x1a\x8e\x01\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12l\n\x05value\x18\x02 \x01(\x0b\x32V.buf.validate.conformance.cases.custom_constraints.FieldExpressionMapMessageValues.MsgR\x05value:\x02\x38\x01\x1a\x13\n\x03Msg\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\"\x9f\x01\n\x1d\x46ieldExpressionRepeatedScalar\x12~\n\x03val\x18\x01 \x03(\x05\x42l\xbaHi\xba\x01\x66\n field_expression.repeated.scalar\x12-test message field_expression.repeated.scalar\x1a\x13this.all(e, e == 1)R\x03val\"\xd3\x01\n\x1b\x46ieldExpressionRepeatedEnum\x12\xb3\x01\n\x03val\x18\x01 \x03(\x0e\x32\x37.buf.validate.conformance.cases.custom_constraints.EnumBh\xbaHe\xba\x01\x62\n\x1e\x66ield_expression.repeated.enum\x12+test message field_expression.repeated.enum\x1a\x13this.all(e, e == 1)R\x03val\"\x91\x02\n\x1e\x46ieldExpressionRepeatedMessage\x12\xd9\x01\n\x03val\x18\x01 \x03(\x0b\x32U.buf.validate.conformance.cases.custom_constraints.FieldExpressionRepeatedMessage.MsgBp\xbaHm\xba\x01j\n!field_expression.repeated.message\x12.test message field_expression.repeated.message\x1a\x15this.all(e, e.a == 1)R\x03val\x1a\x13\n\x03Msg\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\"\xac\x01\n\"FieldExpressionRepeatedScalarItems\x12\x85\x01\n\x03val\x18\x01 \x03(\x05\x42s\xbaHp\x92\x01m\"k\xba\x01h\n&field_expression.repeated.scalar.items\x12\x33test message field_expression.repeated.scalar.items\x1a\tthis == 1R\x03val\"\xdf\x01\n FieldExpressionRepeatedEnumItems\x12\xba\x01\n\x03val\x18\x01 \x03(\x0e\x32\x37.buf.validate.conformance.cases.custom_constraints.EnumBo\xbaHl\x92\x01i\"g\xba\x01\x64\n$field_expression.repeated.enum.items\x12\x31test message field_expression.repeated.enum.items\x1a\tthis == 1R\x03val\"\xa2\x02\n#FieldExpressionRepeatedMessageItems\x12\xe5\x01\n\x03val\x18\x01 \x03(\x0b\x32Z.buf.validate.conformance.cases.custom_constraints.FieldExpressionRepeatedMessageItems.MsgBw\xbaHt\x92\x01q\"o\xba\x01l\n\'field_expression.repeated.message.items\x12\x34test message field_expression.repeated.message.items\x1a\x0bthis.a == 1R\x03val\x1a\x13\n\x03Msg\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61**\n\x04\x45num\x12\x14\n\x10\x45NUM_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x45NUM_ONE\x10\x01\x42\xb5\x02\n5com.buf.validate.conformance.cases.custom_constraintsB\x16\x43ustomConstraintsProtoP\x01\xa2\x02\x05\x42VCCC\xaa\x02\x30\x42uf.Validate.Conformance.Cases.CustomConstraints\xca\x02\x30\x42uf\\Validate\\Conformance\\Cases\\CustomConstraints\xe2\x02 this.b ? \'\': \'a must be greater than b\'' - _globals['_MESSAGEEXPRESSIONS']._loaded_options = None - _globals['_MESSAGEEXPRESSIONS']._serialized_options = b'\272H\314\001\032C\n\031message_expression_scalar\022\025a must be less than b\032\017this.a < this.b\032?\n\027message_expression_enum\022\022c must not equal d\032\020this.c != this.d\032D\n\030message_expression_embed\022\022e.a must equal f.a\032\024this.e.a == this.f.a' - _globals['_MISSINGFIELD']._loaded_options = None - _globals['_MISSINGFIELD']._serialized_options = b'\272H1\032/\n\rmissing_field\022\022b must be positive\032\nthis.b > 0' - _globals['_INCORRECTTYPE']._loaded_options = None - _globals['_INCORRECTTYPE']._serialized_options = b'\272HE\032C\n\016incorrect_type\022\027a must start with \'foo\'\032\030this.a.startsWith(\'foo\')' - _globals['_DYNRUNTIMEERROR']._loaded_options = None - _globals['_DYNRUNTIMEERROR']._serialized_options = b'\272HY\032W\n\017dyn_runtime_err\022.dynamic type tries to use a non-existent field\032\024dyn(this).b == \'foo\'' - _globals['_NOWEQUALSNOW']._loaded_options = None - _globals['_NOWEQUALSNOW']._serialized_options = b'\272HI\032G\n\016now_equals_now\022)now should equal now within an expression\032\nnow == now' - _globals['_FIELDEXPRESSIONMULTIPLESCALAR'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONMULTIPLESCALAR'].fields_by_name['val']._serialized_options = b'\272H\246\002\272\001_\n\"field_expression.multiple.scalar.1\022/test message field_expression.multiple.scalar.1\032\010this > 0\272\001_\n\"field_expression.multiple.scalar.2\022/test message field_expression.multiple.scalar.2\032\010this > 1\272\001_\n\"field_expression.multiple.scalar.3\022/test message field_expression.multiple.scalar.3\032\010this > 2' - _globals['_FIELDEXPRESSIONOPTIONALSCALAR'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONOPTIONALSCALAR'].fields_by_name['val']._serialized_options = b'\272H_\272\001\\\n field_expression.optional.scalar\022-test message field_expression.optional.scalar\032\tthis == 1' - _globals['_FIELDEXPRESSIONSCALAR'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONSCALAR'].fields_by_name['val']._serialized_options = b'\272HM\272\001J\n\027field_expression.scalar\022$test message field_expression.scalar\032\tthis == 1' - _globals['_FIELDEXPRESSIONENUM'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONENUM'].fields_by_name['val']._serialized_options = b'\272HI\272\001F\n\025field_expression.enum\022\"test message field_expression.enum\032\tthis == 1' - _globals['_FIELDEXPRESSIONMESSAGE'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONMESSAGE'].fields_by_name['val']._serialized_options = b'\272HQ\272\001N\n\030field_expression.message\022%test message field_expression.message\032\013this.a == 1' - _globals['_FIELDEXPRESSIONMAPSCALAR_VALENTRY']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPSCALAR_VALENTRY']._serialized_options = b'8\001' - _globals['_FIELDEXPRESSIONMAPSCALAR'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPSCALAR'].fields_by_name['val']._serialized_options = b'\272He\272\001b\n\033field_expression.map.scalar\022(test message field_expression.map.scalar\032\031this.all(k, this[k] == 1)' - _globals['_FIELDEXPRESSIONMAPENUM_VALENTRY']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPENUM_VALENTRY']._serialized_options = b'8\001' - _globals['_FIELDEXPRESSIONMAPENUM'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPENUM'].fields_by_name['val']._serialized_options = b'\272Ha\272\001^\n\031field_expression.map.enum\022&test message field_expression.map.enum\032\031this.all(k, this[k] == 1)' - _globals['_FIELDEXPRESSIONMAPMESSAGE_VALENTRY']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPMESSAGE_VALENTRY']._serialized_options = b'8\001' - _globals['_FIELDEXPRESSIONMAPMESSAGE'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPMESSAGE'].fields_by_name['val']._serialized_options = b'\272Hi\272\001f\n\034field_expression.map.message\022)test message field_expression.map.message\032\033this.all(k, this[k].a == 1)' - _globals['_FIELDEXPRESSIONMAPKEYS_VALENTRY']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPKEYS_VALENTRY']._serialized_options = b'8\001' - _globals['_FIELDEXPRESSIONMAPKEYS'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPKEYS'].fields_by_name['val']._serialized_options = b'\272Hc\232\001`\"^\272\001[\n\031field_expression.map.keys\022&test message field_expression.map.keys\032\026this == 4 || this == 8' - _globals['_FIELDEXPRESSIONMAPSCALARVALUES_VALENTRY']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPSCALARVALUES_VALENTRY']._serialized_options = b'8\001' - _globals['_FIELDEXPRESSIONMAPSCALARVALUES'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPSCALARVALUES'].fields_by_name['val']._serialized_options = b'\272Hh\232\001e*c\272\001`\n\"field_expression.map.scalar.values\022/test message field_expression.map.scalar.values\032\tthis == 1' - _globals['_FIELDEXPRESSIONMAPENUMVALUES_VALENTRY']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPENUMVALUES_VALENTRY']._serialized_options = b'8\001' - _globals['_FIELDEXPRESSIONMAPENUMVALUES'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPENUMVALUES'].fields_by_name['val']._serialized_options = b'\272Hd\232\001a*_\272\001\\\n field_expression.map.enum.values\022-test message field_expression.map.enum.values\032\tthis == 1' - _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES_VALENTRY']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES_VALENTRY']._serialized_options = b'8\001' - _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES'].fields_by_name['val']._serialized_options = b'\272Hl\232\001i*g\272\001d\n#field_expression.map.message.values\0220test message field_expression.map.message.values\032\013this.a == 1' - _globals['_FIELDEXPRESSIONREPEATEDSCALAR'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONREPEATEDSCALAR'].fields_by_name['val']._serialized_options = b'\272Hi\272\001f\n field_expression.repeated.scalar\022-test message field_expression.repeated.scalar\032\023this.all(e, e == 1)' - _globals['_FIELDEXPRESSIONREPEATEDENUM'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONREPEATEDENUM'].fields_by_name['val']._serialized_options = b'\272He\272\001b\n\036field_expression.repeated.enum\022+test message field_expression.repeated.enum\032\023this.all(e, e == 1)' - _globals['_FIELDEXPRESSIONREPEATEDMESSAGE'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONREPEATEDMESSAGE'].fields_by_name['val']._serialized_options = b'\272Hm\272\001j\n!field_expression.repeated.message\022.test message field_expression.repeated.message\032\025this.all(e, e.a == 1)' - _globals['_FIELDEXPRESSIONREPEATEDSCALARITEMS'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONREPEATEDSCALARITEMS'].fields_by_name['val']._serialized_options = b'\272Hp\222\001m\"k\272\001h\n&field_expression.repeated.scalar.items\0223test message field_expression.repeated.scalar.items\032\tthis == 1' - _globals['_FIELDEXPRESSIONREPEATEDENUMITEMS'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONREPEATEDENUMITEMS'].fields_by_name['val']._serialized_options = b'\272Hl\222\001i\"g\272\001d\n$field_expression.repeated.enum.items\0221test message field_expression.repeated.enum.items\032\tthis == 1' - _globals['_FIELDEXPRESSIONREPEATEDMESSAGEITEMS'].fields_by_name['val']._loaded_options = None - _globals['_FIELDEXPRESSIONREPEATEDMESSAGEITEMS'].fields_by_name['val']._serialized_options = b'\272Ht\222\001q\"o\272\001l\n\'field_expression.repeated.message.items\0224test message field_expression.repeated.message.items\032\013this.a == 1' - _globals['_ENUM']._serialized_start=6442 - _globals['_ENUM']._serialized_end=6484 - _globals['_NOEXPRESSIONS']._serialized_start=159 - _globals['_NOEXPRESSIONS']._serialized_end=356 - _globals['_NOEXPRESSIONS_NESTED']._serialized_start=348 - _globals['_NOEXPRESSIONS_NESTED']._serialized_end=356 - _globals['_MESSAGEEXPRESSIONS']._serialized_start=359 - _globals['_MESSAGEEXPRESSIONS']._serialized_end=1066 - _globals['_MESSAGEEXPRESSIONS_NESTED']._serialized_start=735 - _globals['_MESSAGEEXPRESSIONS_NESTED']._serialized_end=855 - _globals['_MISSINGFIELD']._serialized_start=1068 - _globals['_MISSINGFIELD']._serialized_end=1150 - _globals['_INCORRECTTYPE']._serialized_start=1152 - _globals['_INCORRECTTYPE']._serialized_end=1255 - _globals['_DYNRUNTIMEERROR']._serialized_start=1257 - _globals['_DYNRUNTIMEERROR']._serialized_end=1382 - _globals['_NOWEQUALSNOW']._serialized_start=1384 - _globals['_NOWEQUALSNOW']._serialized_end=1476 - _globals['_FIELDEXPRESSIONMULTIPLESCALAR']._serialized_start=1479 - _globals['_FIELDEXPRESSIONMULTIPLESCALAR']._serialized_end=1830 - _globals['_FIELDEXPRESSIONNESTEDSCALAR']._serialized_start=1832 - _globals['_FIELDEXPRESSIONNESTEDSCALAR']._serialized_end=1959 - _globals['_FIELDEXPRESSIONOPTIONALSCALAR']._serialized_start=1962 - _globals['_FIELDEXPRESSIONOPTIONALSCALAR']._serialized_end=2124 - _globals['_FIELDEXPRESSIONSCALAR']._serialized_start=2126 - _globals['_FIELDEXPRESSIONSCALAR']._serialized_end=2249 - _globals['_FIELDEXPRESSIONENUM']._serialized_start=2252 - _globals['_FIELDEXPRESSIONENUM']._serialized_end=2427 - _globals['_FIELDEXPRESSIONMESSAGE']._serialized_start=2430 - _globals['_FIELDEXPRESSIONMESSAGE']._serialized_end=2659 - _globals['_FIELDEXPRESSIONMESSAGE_MSG']._serialized_start=2640 - _globals['_FIELDEXPRESSIONMESSAGE_MSG']._serialized_end=2659 - _globals['_FIELDEXPRESSIONMAPSCALAR']._serialized_start=2662 - _globals['_FIELDEXPRESSIONMAPSCALAR']._serialized_end=2955 - _globals['_FIELDEXPRESSIONMAPSCALAR_VALENTRY']._serialized_start=2901 - _globals['_FIELDEXPRESSIONMAPSCALAR_VALENTRY']._serialized_end=2955 - _globals['_FIELDEXPRESSIONMAPENUM']._serialized_start=2958 - _globals['_FIELDEXPRESSIONMAPENUM']._serialized_end=3300 - _globals['_FIELDEXPRESSIONMAPENUM_VALENTRY']._serialized_start=3189 - _globals['_FIELDEXPRESSIONMAPENUM_VALENTRY']._serialized_end=3300 - _globals['_FIELDEXPRESSIONMAPMESSAGE']._serialized_start=3303 - _globals['_FIELDEXPRESSIONMAPMESSAGE']._serialized_end=3706 - _globals['_FIELDEXPRESSIONMAPMESSAGE_VALENTRY']._serialized_start=3549 - _globals['_FIELDEXPRESSIONMAPMESSAGE_VALENTRY']._serialized_end=3685 - _globals['_FIELDEXPRESSIONMAPMESSAGE_MSG']._serialized_start=2640 - _globals['_FIELDEXPRESSIONMAPMESSAGE_MSG']._serialized_end=2659 - _globals['_FIELDEXPRESSIONMAPKEYS']._serialized_start=3709 - _globals['_FIELDEXPRESSIONMAPKEYS']._serialized_end=3996 - _globals['_FIELDEXPRESSIONMAPKEYS_VALENTRY']._serialized_start=2901 - _globals['_FIELDEXPRESSIONMAPKEYS_VALENTRY']._serialized_end=2955 - _globals['_FIELDEXPRESSIONMAPSCALARVALUES']._serialized_start=3999 - _globals['_FIELDEXPRESSIONMAPSCALARVALUES']._serialized_end=4307 - _globals['_FIELDEXPRESSIONMAPSCALARVALUES_VALENTRY']._serialized_start=2901 - _globals['_FIELDEXPRESSIONMAPSCALARVALUES_VALENTRY']._serialized_end=2955 - _globals['_FIELDEXPRESSIONMAPENUMVALUES']._serialized_start=4310 - _globals['_FIELDEXPRESSIONMAPENUMVALUES']._serialized_end=4667 - _globals['_FIELDEXPRESSIONMAPENUMVALUES_VALENTRY']._serialized_start=3189 - _globals['_FIELDEXPRESSIONMAPENUMVALUES_VALENTRY']._serialized_end=3300 - _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES']._serialized_start=4670 - _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES']._serialized_end=5094 - _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES_VALENTRY']._serialized_start=4931 - _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES_VALENTRY']._serialized_end=5073 - _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES_MSG']._serialized_start=2640 - _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES_MSG']._serialized_end=2659 - _globals['_FIELDEXPRESSIONREPEATEDSCALAR']._serialized_start=5097 - _globals['_FIELDEXPRESSIONREPEATEDSCALAR']._serialized_end=5256 - _globals['_FIELDEXPRESSIONREPEATEDENUM']._serialized_start=5259 - _globals['_FIELDEXPRESSIONREPEATEDENUM']._serialized_end=5470 - _globals['_FIELDEXPRESSIONREPEATEDMESSAGE']._serialized_start=5473 - _globals['_FIELDEXPRESSIONREPEATEDMESSAGE']._serialized_end=5746 - _globals['_FIELDEXPRESSIONREPEATEDMESSAGE_MSG']._serialized_start=2640 - _globals['_FIELDEXPRESSIONREPEATEDMESSAGE_MSG']._serialized_end=2659 - _globals['_FIELDEXPRESSIONREPEATEDSCALARITEMS']._serialized_start=5749 - _globals['_FIELDEXPRESSIONREPEATEDSCALARITEMS']._serialized_end=5921 - _globals['_FIELDEXPRESSIONREPEATEDENUMITEMS']._serialized_start=5924 - _globals['_FIELDEXPRESSIONREPEATEDENUMITEMS']._serialized_end=6147 - _globals['_FIELDEXPRESSIONREPEATEDMESSAGEITEMS']._serialized_start=6150 - _globals['_FIELDEXPRESSIONREPEATEDMESSAGEITEMS']._serialized_end=6440 - _globals['_FIELDEXPRESSIONREPEATEDMESSAGEITEMS_MSG']._serialized_start=2640 - _globals['_FIELDEXPRESSIONREPEATEDMESSAGEITEMS_MSG']._serialized_end=2659 -# @@protoc_insertion_point(module_scope) diff --git a/gen/buf/validate/conformance/cases/custom_rules/custom_rules_pb2.py b/gen/buf/validate/conformance/cases/custom_rules/custom_rules_pb2.py new file mode 100644 index 0000000..55d25cc --- /dev/null +++ b/gen/buf/validate/conformance/cases/custom_rules/custom_rules_pb2.py @@ -0,0 +1,232 @@ +# Copyright 2023-2025 Buf Technologies, Inc. +# +# 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. + +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: buf/validate/conformance/cases/custom_rules/custom_rules.proto +# Protobuf Python Version: 6.30.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 30, + 1, + '', + 'buf/validate/conformance/cases/custom_rules/custom_rules.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n>buf/validate/conformance/cases/custom_rules/custom_rules.proto\x12+buf.validate.conformance.cases.custom_rules\x1a\x1b\x62uf/validate/validate.proto\"\xb9\x01\n\rNoExpressions\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\x12?\n\x01\x62\x18\x02 \x01(\x0e\x32\x31.buf.validate.conformance.cases.custom_rules.EnumR\x01\x62\x12O\n\x01\x63\x18\x03 \x01(\x0b\x32\x41.buf.validate.conformance.cases.custom_rules.NoExpressions.NestedR\x01\x63\x1a\x08\n\x06Nested\"\xab\x05\n\x12MessageExpressions\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\x12\x0c\n\x01\x62\x18\x02 \x01(\x05R\x01\x62\x12?\n\x01\x63\x18\x03 \x01(\x0e\x32\x31.buf.validate.conformance.cases.custom_rules.EnumR\x01\x63\x12?\n\x01\x64\x18\x04 \x01(\x0e\x32\x31.buf.validate.conformance.cases.custom_rules.EnumR\x01\x64\x12T\n\x01\x65\x18\x05 \x01(\x0b\x32\x46.buf.validate.conformance.cases.custom_rules.MessageExpressions.NestedR\x01\x65\x12T\n\x01\x66\x18\x06 \x01(\x0b\x32\x46.buf.validate.conformance.cases.custom_rules.MessageExpressions.NestedR\x01\x66\x1ax\n\x06Nested\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\x12\x0c\n\x01\x62\x18\x02 \x01(\x05R\x01\x62:R\xbaHO\x1aM\n\x19message_expression_nested\x1a\x30this.a > this.b ? \'\': \'a must be greater than b\':\xd0\x01\xbaH\xcc\x01\x1a\x43\n\x19message_expression_scalar\x12\x15\x61 must be less than b\x1a\x0fthis.a < this.b\x1a?\n\x17message_expression_enum\x12\x12\x63 must not equal d\x1a\x10this.c != this.d\x1a\x44\n\x18message_expression_embed\x12\x12\x65.a must equal f.a\x1a\x14this.e.a == this.f.a\"R\n\x0cMissingField\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61:4\xbaH1\x1a/\n\rmissing_field\x12\x12\x62 must be positive\x1a\nthis.b > 0\"g\n\rIncorrectType\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61:H\xbaHE\x1a\x43\n\x0eincorrect_type\x12\x17\x61 must start with \'foo\'\x1a\x18this.a.startsWith(\'foo\')\"}\n\x0f\x44ynRuntimeError\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61:\\\xbaHY\x1aW\n\x0f\x64yn_runtime_err\x12.dynamic type tries to use a non-existent field\x1a\x14\x64yn(this).b == \'foo\'\"\\\n\x0cNowEqualsNow:L\xbaHI\x1aG\n\x0enow_equals_now\x12)now should equal now within an expression\x1a\nnow == now\"\xdf\x02\n\x1d\x46ieldExpressionMultipleScalar\x12\xbd\x02\n\x03val\x18\x01 \x01(\x05\x42\xaa\x02\xbaH\xa6\x02\xba\x01_\n\"field_expression.multiple.scalar.1\x12/test message field_expression.multiple.scalar.1\x1a\x08this > 0\xba\x01_\n\"field_expression.multiple.scalar.2\x12/test message field_expression.multiple.scalar.2\x1a\x08this > 1\xba\x01_\n\"field_expression.multiple.scalar.3\x12/test message field_expression.multiple.scalar.3\x1a\x08this > 2R\x03val\"y\n\x1b\x46ieldExpressionNestedScalar\x12Z\n\x06nested\x18\x01 \x01(\x0b\x32\x42.buf.validate.conformance.cases.custom_rules.FieldExpressionScalarR\x06nested\"\xa2\x01\n\x1d\x46ieldExpressionOptionalScalar\x12y\n\x03val\x18\x01 \x01(\x05\x42\x62\xbaH_\xba\x01\\\n field_expression.optional.scalar\x12-test message field_expression.optional.scalar\x1a\tthis == 1H\x00R\x03val\x88\x01\x01\x42\x06\n\x04_val\"{\n\x15\x46ieldExpressionScalar\x12\x62\n\x03val\x18\x01 \x01(\x05\x42P\xbaHM\xba\x01J\n\x17\x66ield_expression.scalar\x12$test message field_expression.scalar\x1a\tthis == 1R\x03val\"\xa9\x01\n\x13\x46ieldExpressionEnum\x12\x91\x01\n\x03val\x18\x01 \x01(\x0e\x32\x31.buf.validate.conformance.cases.custom_rules.EnumBL\xbaHI\xba\x01\x46\n\x15\x66ield_expression.enum\x12\"test message field_expression.enum\x1a\tthis == 1R\x03val\"\xdf\x01\n\x16\x46ieldExpressionMessage\x12\xaf\x01\n\x03val\x18\x01 \x01(\x0b\x32G.buf.validate.conformance.cases.custom_rules.FieldExpressionMessage.MsgBT\xbaHQ\xba\x01N\n\x18\x66ield_expression.message\x12%test message field_expression.message\x1a\x0bthis.a == 1R\x03val\x1a\x13\n\x03Msg\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\"\x8f\x02\n\x17\x46ieldExpressionMapInt32\x12\xbb\x01\n\x03val\x18\x01 \x03(\x0b\x32M.buf.validate.conformance.cases.custom_rules.FieldExpressionMapInt32.ValEntryBZ\xbaHW\xba\x01T\n\x1a\x66ield_expression.map.int32\x12\x1b\x61ll map values must equal 1\x1a\x19this.all(k, this[k] == 1)R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x02\x38\x01\"\x8f\x02\n\x17\x46ieldExpressionMapInt64\x12\xbb\x01\n\x03val\x18\x01 \x03(\x0b\x32M.buf.validate.conformance.cases.custom_rules.FieldExpressionMapInt64.ValEntryBZ\xbaHW\xba\x01T\n\x1a\x66ield_expression.map.int64\x12\x1b\x61ll map values must equal 1\x1a\x19this.all(k, this[k] == 1)R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x03R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05value:\x02\x38\x01\"\x98\x02\n\x18\x46ieldExpressionMapUint32\x12\xc3\x01\n\x03val\x18\x01 \x03(\x0b\x32N.buf.validate.conformance.cases.custom_rules.FieldExpressionMapUint32.ValEntryBa\xbaH^\xba\x01[\n\x1b\x66ield_expression.map.uint32\x12\x1b\x61ll map values must equal 1\x1a\x1fthis.all(k, this[k] == uint(1))R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\rR\x03key\x12\x14\n\x05value\x18\x02 \x01(\rR\x05value:\x02\x38\x01\"\x98\x02\n\x18\x46ieldExpressionMapUint64\x12\xc3\x01\n\x03val\x18\x01 \x03(\x0b\x32N.buf.validate.conformance.cases.custom_rules.FieldExpressionMapUint64.ValEntryBa\xbaH^\xba\x01[\n\x1b\x66ield_expression.map.uint64\x12\x1b\x61ll map values must equal 1\x1a\x1fthis.all(k, this[k] == uint(1))R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x04R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x04R\x05value:\x02\x38\x01\"\x94\x02\n\x16\x46ieldExpressionMapBool\x12\xc1\x01\n\x03val\x18\x01 \x03(\x0b\x32L.buf.validate.conformance.cases.custom_rules.FieldExpressionMapBool.ValEntryBa\xbaH^\xba\x01[\n\x19\x66ield_expression.map.bool\x12\x1f\x61ll map values must equal false\x1a\x1dthis.all(k, this[k] == false)R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x08R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x08R\x05value:\x02\x38\x01\"\x9a\x02\n\x18\x46ieldExpressionMapString\x12\xc5\x01\n\x03val\x18\x01 \x03(\x0b\x32N.buf.validate.conformance.cases.custom_rules.FieldExpressionMapString.ValEntryBc\xbaH`\xba\x01]\n\x1b\x66ield_expression.map.string\x12\x1f\x61ll map values must equal \'foo\'\x1a\x1dthis.all(k, this[k] == \'foo\')R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xca\x02\n\x16\x46ieldExpressionMapEnum\x12\xc4\x01\n\x03val\x18\x01 \x03(\x0b\x32L.buf.validate.conformance.cases.custom_rules.FieldExpressionMapEnum.ValEntryBd\xbaHa\xba\x01^\n\x19\x66ield_expression.map.enum\x12&test message field_expression.map.enum\x1a\x19this.all(k, this[k] == 1)R\x03val\x1ai\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12G\n\x05value\x18\x02 \x01(\x0e\x32\x31.buf.validate.conformance.cases.custom_rules.EnumR\x05value:\x02\x38\x01\"\x87\x03\n\x19\x46ieldExpressionMapMessage\x12\xcf\x01\n\x03val\x18\x01 \x03(\x0b\x32O.buf.validate.conformance.cases.custom_rules.FieldExpressionMapMessage.ValEntryBl\xbaHi\xba\x01\x66\n\x1c\x66ield_expression.map.message\x12)test message field_expression.map.message\x1a\x1bthis.all(k, this[k].a == 1)R\x03val\x1a\x82\x01\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12`\n\x05value\x18\x02 \x01(\x0b\x32J.buf.validate.conformance.cases.custom_rules.FieldExpressionMapMessage.MsgR\x05value:\x02\x38\x01\x1a\x13\n\x03Msg\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\"\x99\x02\n\x16\x46ieldExpressionMapKeys\x12\xc6\x01\n\x03val\x18\x01 \x03(\x0b\x32L.buf.validate.conformance.cases.custom_rules.FieldExpressionMapKeys.ValEntryBf\xbaHc\x9a\x01`\"^\xba\x01[\n\x19\x66ield_expression.map.keys\x12&test message field_expression.map.keys\x1a\x16this == 4 || this == 8R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x02\x38\x01\"\xae\x02\n\x1e\x46ieldExpressionMapScalarValues\x12\xd3\x01\n\x03val\x18\x01 \x03(\x0b\x32T.buf.validate.conformance.cases.custom_rules.FieldExpressionMapScalarValues.ValEntryBk\xbaHh\x9a\x01\x65*c\xba\x01`\n\"field_expression.map.scalar.values\x12/test message field_expression.map.scalar.values\x1a\tthis == 1R\x03val\x1a\x36\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\x05R\x05value:\x02\x38\x01\"\xd9\x02\n\x1c\x46ieldExpressionMapEnumValues\x12\xcd\x01\n\x03val\x18\x01 \x03(\x0b\x32R.buf.validate.conformance.cases.custom_rules.FieldExpressionMapEnumValues.ValEntryBg\xbaHd\x9a\x01\x61*_\xba\x01\\\n field_expression.map.enum.values\x12-test message field_expression.map.enum.values\x1a\tthis == 1R\x03val\x1ai\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12G\n\x05value\x18\x02 \x01(\x0e\x32\x31.buf.validate.conformance.cases.custom_rules.EnumR\x05value:\x02\x38\x01\"\x9c\x03\n\x1f\x46ieldExpressionMapMessageValues\x12\xd8\x01\n\x03val\x18\x01 \x03(\x0b\x32U.buf.validate.conformance.cases.custom_rules.FieldExpressionMapMessageValues.ValEntryBo\xbaHl\x9a\x01i*g\xba\x01\x64\n#field_expression.map.message.values\x12\x30test message field_expression.map.message.values\x1a\x0bthis.a == 1R\x03val\x1a\x88\x01\n\x08ValEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x66\n\x05value\x18\x02 \x01(\x0b\x32P.buf.validate.conformance.cases.custom_rules.FieldExpressionMapMessageValues.MsgR\x05value:\x02\x38\x01\x1a\x13\n\x03Msg\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\"\x9f\x01\n\x1d\x46ieldExpressionRepeatedScalar\x12~\n\x03val\x18\x01 \x03(\x05\x42l\xbaHi\xba\x01\x66\n field_expression.repeated.scalar\x12-test message field_expression.repeated.scalar\x1a\x13this.all(e, e == 1)R\x03val\"\xcd\x01\n\x1b\x46ieldExpressionRepeatedEnum\x12\xad\x01\n\x03val\x18\x01 \x03(\x0e\x32\x31.buf.validate.conformance.cases.custom_rules.EnumBh\xbaHe\xba\x01\x62\n\x1e\x66ield_expression.repeated.enum\x12+test message field_expression.repeated.enum\x1a\x13this.all(e, e == 1)R\x03val\"\x8b\x02\n\x1e\x46ieldExpressionRepeatedMessage\x12\xd3\x01\n\x03val\x18\x01 \x03(\x0b\x32O.buf.validate.conformance.cases.custom_rules.FieldExpressionRepeatedMessage.MsgBp\xbaHm\xba\x01j\n!field_expression.repeated.message\x12.test message field_expression.repeated.message\x1a\x15this.all(e, e.a == 1)R\x03val\x1a\x13\n\x03Msg\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61\"\xac\x01\n\"FieldExpressionRepeatedScalarItems\x12\x85\x01\n\x03val\x18\x01 \x03(\x05\x42s\xbaHp\x92\x01m\"k\xba\x01h\n&field_expression.repeated.scalar.items\x12\x33test message field_expression.repeated.scalar.items\x1a\tthis == 1R\x03val\"\xd9\x01\n FieldExpressionRepeatedEnumItems\x12\xb4\x01\n\x03val\x18\x01 \x03(\x0e\x32\x31.buf.validate.conformance.cases.custom_rules.EnumBo\xbaHl\x92\x01i\"g\xba\x01\x64\n$field_expression.repeated.enum.items\x12\x31test message field_expression.repeated.enum.items\x1a\tthis == 1R\x03val\"\x9c\x02\n#FieldExpressionRepeatedMessageItems\x12\xdf\x01\n\x03val\x18\x01 \x03(\x0b\x32T.buf.validate.conformance.cases.custom_rules.FieldExpressionRepeatedMessageItems.MsgBw\xbaHt\x92\x01q\"o\xba\x01l\n\'field_expression.repeated.message.items\x12\x34test message field_expression.repeated.message.items\x1a\x0bthis.a == 1R\x03val\x1a\x13\n\x03Msg\x12\x0c\n\x01\x61\x18\x01 \x01(\x05R\x01\x61**\n\x04\x45num\x12\x14\n\x10\x45NUM_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x45NUM_ONE\x10\x01\x42\x91\x02\n/com.buf.validate.conformance.cases.custom_rulesB\x10\x43ustomRulesProtoP\x01\xa2\x02\x05\x42VCCC\xaa\x02*Buf.Validate.Conformance.Cases.CustomRules\xca\x02*Buf\\Validate\\Conformance\\Cases\\CustomRules\xe2\x02\x36\x42uf\\Validate\\Conformance\\Cases\\CustomRules\\GPBMetadata\xea\x02.Buf::Validate::Conformance::Cases::CustomRulesb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'buf.validate.conformance.cases.custom_rules.custom_rules_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n/com.buf.validate.conformance.cases.custom_rulesB\020CustomRulesProtoP\001\242\002\005BVCCC\252\002*Buf.Validate.Conformance.Cases.CustomRules\312\002*Buf\\Validate\\Conformance\\Cases\\CustomRules\342\0026Buf\\Validate\\Conformance\\Cases\\CustomRules\\GPBMetadata\352\002.Buf::Validate::Conformance::Cases::CustomRules' + _globals['_MESSAGEEXPRESSIONS_NESTED']._loaded_options = None + _globals['_MESSAGEEXPRESSIONS_NESTED']._serialized_options = b'\272HO\032M\n\031message_expression_nested\0320this.a > this.b ? \'\': \'a must be greater than b\'' + _globals['_MESSAGEEXPRESSIONS']._loaded_options = None + _globals['_MESSAGEEXPRESSIONS']._serialized_options = b'\272H\314\001\032C\n\031message_expression_scalar\022\025a must be less than b\032\017this.a < this.b\032?\n\027message_expression_enum\022\022c must not equal d\032\020this.c != this.d\032D\n\030message_expression_embed\022\022e.a must equal f.a\032\024this.e.a == this.f.a' + _globals['_MISSINGFIELD']._loaded_options = None + _globals['_MISSINGFIELD']._serialized_options = b'\272H1\032/\n\rmissing_field\022\022b must be positive\032\nthis.b > 0' + _globals['_INCORRECTTYPE']._loaded_options = None + _globals['_INCORRECTTYPE']._serialized_options = b'\272HE\032C\n\016incorrect_type\022\027a must start with \'foo\'\032\030this.a.startsWith(\'foo\')' + _globals['_DYNRUNTIMEERROR']._loaded_options = None + _globals['_DYNRUNTIMEERROR']._serialized_options = b'\272HY\032W\n\017dyn_runtime_err\022.dynamic type tries to use a non-existent field\032\024dyn(this).b == \'foo\'' + _globals['_NOWEQUALSNOW']._loaded_options = None + _globals['_NOWEQUALSNOW']._serialized_options = b'\272HI\032G\n\016now_equals_now\022)now should equal now within an expression\032\nnow == now' + _globals['_FIELDEXPRESSIONMULTIPLESCALAR'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMULTIPLESCALAR'].fields_by_name['val']._serialized_options = b'\272H\246\002\272\001_\n\"field_expression.multiple.scalar.1\022/test message field_expression.multiple.scalar.1\032\010this > 0\272\001_\n\"field_expression.multiple.scalar.2\022/test message field_expression.multiple.scalar.2\032\010this > 1\272\001_\n\"field_expression.multiple.scalar.3\022/test message field_expression.multiple.scalar.3\032\010this > 2' + _globals['_FIELDEXPRESSIONOPTIONALSCALAR'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONOPTIONALSCALAR'].fields_by_name['val']._serialized_options = b'\272H_\272\001\\\n field_expression.optional.scalar\022-test message field_expression.optional.scalar\032\tthis == 1' + _globals['_FIELDEXPRESSIONSCALAR'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONSCALAR'].fields_by_name['val']._serialized_options = b'\272HM\272\001J\n\027field_expression.scalar\022$test message field_expression.scalar\032\tthis == 1' + _globals['_FIELDEXPRESSIONENUM'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONENUM'].fields_by_name['val']._serialized_options = b'\272HI\272\001F\n\025field_expression.enum\022\"test message field_expression.enum\032\tthis == 1' + _globals['_FIELDEXPRESSIONMESSAGE'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMESSAGE'].fields_by_name['val']._serialized_options = b'\272HQ\272\001N\n\030field_expression.message\022%test message field_expression.message\032\013this.a == 1' + _globals['_FIELDEXPRESSIONMAPINT32_VALENTRY']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPINT32_VALENTRY']._serialized_options = b'8\001' + _globals['_FIELDEXPRESSIONMAPINT32'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPINT32'].fields_by_name['val']._serialized_options = b'\272HW\272\001T\n\032field_expression.map.int32\022\033all map values must equal 1\032\031this.all(k, this[k] == 1)' + _globals['_FIELDEXPRESSIONMAPINT64_VALENTRY']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPINT64_VALENTRY']._serialized_options = b'8\001' + _globals['_FIELDEXPRESSIONMAPINT64'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPINT64'].fields_by_name['val']._serialized_options = b'\272HW\272\001T\n\032field_expression.map.int64\022\033all map values must equal 1\032\031this.all(k, this[k] == 1)' + _globals['_FIELDEXPRESSIONMAPUINT32_VALENTRY']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPUINT32_VALENTRY']._serialized_options = b'8\001' + _globals['_FIELDEXPRESSIONMAPUINT32'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPUINT32'].fields_by_name['val']._serialized_options = b'\272H^\272\001[\n\033field_expression.map.uint32\022\033all map values must equal 1\032\037this.all(k, this[k] == uint(1))' + _globals['_FIELDEXPRESSIONMAPUINT64_VALENTRY']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPUINT64_VALENTRY']._serialized_options = b'8\001' + _globals['_FIELDEXPRESSIONMAPUINT64'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPUINT64'].fields_by_name['val']._serialized_options = b'\272H^\272\001[\n\033field_expression.map.uint64\022\033all map values must equal 1\032\037this.all(k, this[k] == uint(1))' + _globals['_FIELDEXPRESSIONMAPBOOL_VALENTRY']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPBOOL_VALENTRY']._serialized_options = b'8\001' + _globals['_FIELDEXPRESSIONMAPBOOL'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPBOOL'].fields_by_name['val']._serialized_options = b'\272H^\272\001[\n\031field_expression.map.bool\022\037all map values must equal false\032\035this.all(k, this[k] == false)' + _globals['_FIELDEXPRESSIONMAPSTRING_VALENTRY']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPSTRING_VALENTRY']._serialized_options = b'8\001' + _globals['_FIELDEXPRESSIONMAPSTRING'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPSTRING'].fields_by_name['val']._serialized_options = b'\272H`\272\001]\n\033field_expression.map.string\022\037all map values must equal \'foo\'\032\035this.all(k, this[k] == \'foo\')' + _globals['_FIELDEXPRESSIONMAPENUM_VALENTRY']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPENUM_VALENTRY']._serialized_options = b'8\001' + _globals['_FIELDEXPRESSIONMAPENUM'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPENUM'].fields_by_name['val']._serialized_options = b'\272Ha\272\001^\n\031field_expression.map.enum\022&test message field_expression.map.enum\032\031this.all(k, this[k] == 1)' + _globals['_FIELDEXPRESSIONMAPMESSAGE_VALENTRY']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPMESSAGE_VALENTRY']._serialized_options = b'8\001' + _globals['_FIELDEXPRESSIONMAPMESSAGE'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPMESSAGE'].fields_by_name['val']._serialized_options = b'\272Hi\272\001f\n\034field_expression.map.message\022)test message field_expression.map.message\032\033this.all(k, this[k].a == 1)' + _globals['_FIELDEXPRESSIONMAPKEYS_VALENTRY']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPKEYS_VALENTRY']._serialized_options = b'8\001' + _globals['_FIELDEXPRESSIONMAPKEYS'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPKEYS'].fields_by_name['val']._serialized_options = b'\272Hc\232\001`\"^\272\001[\n\031field_expression.map.keys\022&test message field_expression.map.keys\032\026this == 4 || this == 8' + _globals['_FIELDEXPRESSIONMAPSCALARVALUES_VALENTRY']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPSCALARVALUES_VALENTRY']._serialized_options = b'8\001' + _globals['_FIELDEXPRESSIONMAPSCALARVALUES'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPSCALARVALUES'].fields_by_name['val']._serialized_options = b'\272Hh\232\001e*c\272\001`\n\"field_expression.map.scalar.values\022/test message field_expression.map.scalar.values\032\tthis == 1' + _globals['_FIELDEXPRESSIONMAPENUMVALUES_VALENTRY']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPENUMVALUES_VALENTRY']._serialized_options = b'8\001' + _globals['_FIELDEXPRESSIONMAPENUMVALUES'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPENUMVALUES'].fields_by_name['val']._serialized_options = b'\272Hd\232\001a*_\272\001\\\n field_expression.map.enum.values\022-test message field_expression.map.enum.values\032\tthis == 1' + _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES_VALENTRY']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES_VALENTRY']._serialized_options = b'8\001' + _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES'].fields_by_name['val']._serialized_options = b'\272Hl\232\001i*g\272\001d\n#field_expression.map.message.values\0220test message field_expression.map.message.values\032\013this.a == 1' + _globals['_FIELDEXPRESSIONREPEATEDSCALAR'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONREPEATEDSCALAR'].fields_by_name['val']._serialized_options = b'\272Hi\272\001f\n field_expression.repeated.scalar\022-test message field_expression.repeated.scalar\032\023this.all(e, e == 1)' + _globals['_FIELDEXPRESSIONREPEATEDENUM'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONREPEATEDENUM'].fields_by_name['val']._serialized_options = b'\272He\272\001b\n\036field_expression.repeated.enum\022+test message field_expression.repeated.enum\032\023this.all(e, e == 1)' + _globals['_FIELDEXPRESSIONREPEATEDMESSAGE'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONREPEATEDMESSAGE'].fields_by_name['val']._serialized_options = b'\272Hm\272\001j\n!field_expression.repeated.message\022.test message field_expression.repeated.message\032\025this.all(e, e.a == 1)' + _globals['_FIELDEXPRESSIONREPEATEDSCALARITEMS'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONREPEATEDSCALARITEMS'].fields_by_name['val']._serialized_options = b'\272Hp\222\001m\"k\272\001h\n&field_expression.repeated.scalar.items\0223test message field_expression.repeated.scalar.items\032\tthis == 1' + _globals['_FIELDEXPRESSIONREPEATEDENUMITEMS'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONREPEATEDENUMITEMS'].fields_by_name['val']._serialized_options = b'\272Hl\222\001i\"g\272\001d\n$field_expression.repeated.enum.items\0221test message field_expression.repeated.enum.items\032\tthis == 1' + _globals['_FIELDEXPRESSIONREPEATEDMESSAGEITEMS'].fields_by_name['val']._loaded_options = None + _globals['_FIELDEXPRESSIONREPEATEDMESSAGEITEMS'].fields_by_name['val']._serialized_options = b'\272Ht\222\001q\"o\272\001l\n\'field_expression.repeated.message.items\0224test message field_expression.repeated.message.items\032\013this.a == 1' + _globals['_ENUM']._serialized_start=7668 + _globals['_ENUM']._serialized_end=7710 + _globals['_NOEXPRESSIONS']._serialized_start=141 + _globals['_NOEXPRESSIONS']._serialized_end=326 + _globals['_NOEXPRESSIONS_NESTED']._serialized_start=318 + _globals['_NOEXPRESSIONS_NESTED']._serialized_end=326 + _globals['_MESSAGEEXPRESSIONS']._serialized_start=329 + _globals['_MESSAGEEXPRESSIONS']._serialized_end=1012 + _globals['_MESSAGEEXPRESSIONS_NESTED']._serialized_start=681 + _globals['_MESSAGEEXPRESSIONS_NESTED']._serialized_end=801 + _globals['_MISSINGFIELD']._serialized_start=1014 + _globals['_MISSINGFIELD']._serialized_end=1096 + _globals['_INCORRECTTYPE']._serialized_start=1098 + _globals['_INCORRECTTYPE']._serialized_end=1201 + _globals['_DYNRUNTIMEERROR']._serialized_start=1203 + _globals['_DYNRUNTIMEERROR']._serialized_end=1328 + _globals['_NOWEQUALSNOW']._serialized_start=1330 + _globals['_NOWEQUALSNOW']._serialized_end=1422 + _globals['_FIELDEXPRESSIONMULTIPLESCALAR']._serialized_start=1425 + _globals['_FIELDEXPRESSIONMULTIPLESCALAR']._serialized_end=1776 + _globals['_FIELDEXPRESSIONNESTEDSCALAR']._serialized_start=1778 + _globals['_FIELDEXPRESSIONNESTEDSCALAR']._serialized_end=1899 + _globals['_FIELDEXPRESSIONOPTIONALSCALAR']._serialized_start=1902 + _globals['_FIELDEXPRESSIONOPTIONALSCALAR']._serialized_end=2064 + _globals['_FIELDEXPRESSIONSCALAR']._serialized_start=2066 + _globals['_FIELDEXPRESSIONSCALAR']._serialized_end=2189 + _globals['_FIELDEXPRESSIONENUM']._serialized_start=2192 + _globals['_FIELDEXPRESSIONENUM']._serialized_end=2361 + _globals['_FIELDEXPRESSIONMESSAGE']._serialized_start=2364 + _globals['_FIELDEXPRESSIONMESSAGE']._serialized_end=2587 + _globals['_FIELDEXPRESSIONMESSAGE_MSG']._serialized_start=2568 + _globals['_FIELDEXPRESSIONMESSAGE_MSG']._serialized_end=2587 + _globals['_FIELDEXPRESSIONMAPINT32']._serialized_start=2590 + _globals['_FIELDEXPRESSIONMAPINT32']._serialized_end=2861 + _globals['_FIELDEXPRESSIONMAPINT32_VALENTRY']._serialized_start=2807 + _globals['_FIELDEXPRESSIONMAPINT32_VALENTRY']._serialized_end=2861 + _globals['_FIELDEXPRESSIONMAPINT64']._serialized_start=2864 + _globals['_FIELDEXPRESSIONMAPINT64']._serialized_end=3135 + _globals['_FIELDEXPRESSIONMAPINT64_VALENTRY']._serialized_start=3081 + _globals['_FIELDEXPRESSIONMAPINT64_VALENTRY']._serialized_end=3135 + _globals['_FIELDEXPRESSIONMAPUINT32']._serialized_start=3138 + _globals['_FIELDEXPRESSIONMAPUINT32']._serialized_end=3418 + _globals['_FIELDEXPRESSIONMAPUINT32_VALENTRY']._serialized_start=3364 + _globals['_FIELDEXPRESSIONMAPUINT32_VALENTRY']._serialized_end=3418 + _globals['_FIELDEXPRESSIONMAPUINT64']._serialized_start=3421 + _globals['_FIELDEXPRESSIONMAPUINT64']._serialized_end=3701 + _globals['_FIELDEXPRESSIONMAPUINT64_VALENTRY']._serialized_start=3647 + _globals['_FIELDEXPRESSIONMAPUINT64_VALENTRY']._serialized_end=3701 + _globals['_FIELDEXPRESSIONMAPBOOL']._serialized_start=3704 + _globals['_FIELDEXPRESSIONMAPBOOL']._serialized_end=3980 + _globals['_FIELDEXPRESSIONMAPBOOL_VALENTRY']._serialized_start=3926 + _globals['_FIELDEXPRESSIONMAPBOOL_VALENTRY']._serialized_end=3980 + _globals['_FIELDEXPRESSIONMAPSTRING']._serialized_start=3983 + _globals['_FIELDEXPRESSIONMAPSTRING']._serialized_end=4265 + _globals['_FIELDEXPRESSIONMAPSTRING_VALENTRY']._serialized_start=4211 + _globals['_FIELDEXPRESSIONMAPSTRING_VALENTRY']._serialized_end=4265 + _globals['_FIELDEXPRESSIONMAPENUM']._serialized_start=4268 + _globals['_FIELDEXPRESSIONMAPENUM']._serialized_end=4598 + _globals['_FIELDEXPRESSIONMAPENUM_VALENTRY']._serialized_start=4493 + _globals['_FIELDEXPRESSIONMAPENUM_VALENTRY']._serialized_end=4598 + _globals['_FIELDEXPRESSIONMAPMESSAGE']._serialized_start=4601 + _globals['_FIELDEXPRESSIONMAPMESSAGE']._serialized_end=4992 + _globals['_FIELDEXPRESSIONMAPMESSAGE_VALENTRY']._serialized_start=4841 + _globals['_FIELDEXPRESSIONMAPMESSAGE_VALENTRY']._serialized_end=4971 + _globals['_FIELDEXPRESSIONMAPMESSAGE_MSG']._serialized_start=2568 + _globals['_FIELDEXPRESSIONMAPMESSAGE_MSG']._serialized_end=2587 + _globals['_FIELDEXPRESSIONMAPKEYS']._serialized_start=4995 + _globals['_FIELDEXPRESSIONMAPKEYS']._serialized_end=5276 + _globals['_FIELDEXPRESSIONMAPKEYS_VALENTRY']._serialized_start=2807 + _globals['_FIELDEXPRESSIONMAPKEYS_VALENTRY']._serialized_end=2861 + _globals['_FIELDEXPRESSIONMAPSCALARVALUES']._serialized_start=5279 + _globals['_FIELDEXPRESSIONMAPSCALARVALUES']._serialized_end=5581 + _globals['_FIELDEXPRESSIONMAPSCALARVALUES_VALENTRY']._serialized_start=2807 + _globals['_FIELDEXPRESSIONMAPSCALARVALUES_VALENTRY']._serialized_end=2861 + _globals['_FIELDEXPRESSIONMAPENUMVALUES']._serialized_start=5584 + _globals['_FIELDEXPRESSIONMAPENUMVALUES']._serialized_end=5929 + _globals['_FIELDEXPRESSIONMAPENUMVALUES_VALENTRY']._serialized_start=4493 + _globals['_FIELDEXPRESSIONMAPENUMVALUES_VALENTRY']._serialized_end=4598 + _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES']._serialized_start=5932 + _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES']._serialized_end=6344 + _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES_VALENTRY']._serialized_start=6187 + _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES_VALENTRY']._serialized_end=6323 + _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES_MSG']._serialized_start=2568 + _globals['_FIELDEXPRESSIONMAPMESSAGEVALUES_MSG']._serialized_end=2587 + _globals['_FIELDEXPRESSIONREPEATEDSCALAR']._serialized_start=6347 + _globals['_FIELDEXPRESSIONREPEATEDSCALAR']._serialized_end=6506 + _globals['_FIELDEXPRESSIONREPEATEDENUM']._serialized_start=6509 + _globals['_FIELDEXPRESSIONREPEATEDENUM']._serialized_end=6714 + _globals['_FIELDEXPRESSIONREPEATEDMESSAGE']._serialized_start=6717 + _globals['_FIELDEXPRESSIONREPEATEDMESSAGE']._serialized_end=6984 + _globals['_FIELDEXPRESSIONREPEATEDMESSAGE_MSG']._serialized_start=2568 + _globals['_FIELDEXPRESSIONREPEATEDMESSAGE_MSG']._serialized_end=2587 + _globals['_FIELDEXPRESSIONREPEATEDSCALARITEMS']._serialized_start=6987 + _globals['_FIELDEXPRESSIONREPEATEDSCALARITEMS']._serialized_end=7159 + _globals['_FIELDEXPRESSIONREPEATEDENUMITEMS']._serialized_start=7162 + _globals['_FIELDEXPRESSIONREPEATEDENUMITEMS']._serialized_end=7379 + _globals['_FIELDEXPRESSIONREPEATEDMESSAGEITEMS']._serialized_start=7382 + _globals['_FIELDEXPRESSIONREPEATEDMESSAGEITEMS']._serialized_end=7666 + _globals['_FIELDEXPRESSIONREPEATEDMESSAGEITEMS_MSG']._serialized_start=2568 + _globals['_FIELDEXPRESSIONREPEATEDMESSAGEITEMS_MSG']._serialized_end=2587 +# @@protoc_insertion_point(module_scope) diff --git a/gen/buf/validate/conformance/cases/custom_constraints/custom_constraints_pb2.pyi b/gen/buf/validate/conformance/cases/custom_rules/custom_rules_pb2.pyi similarity index 80% rename from gen/buf/validate/conformance/cases/custom_constraints/custom_constraints_pb2.pyi rename to gen/buf/validate/conformance/cases/custom_rules/custom_rules_pb2.pyi index 8c26b16..90c8a73 100644 --- a/gen/buf/validate/conformance/cases/custom_constraints/custom_constraints_pb2.pyi +++ b/gen/buf/validate/conformance/cases/custom_rules/custom_rules_pb2.pyi @@ -128,7 +128,7 @@ class FieldExpressionMessage(_message.Message): val: FieldExpressionMessage.Msg def __init__(self, val: _Optional[_Union[FieldExpressionMessage.Msg, _Mapping]] = ...) -> None: ... -class FieldExpressionMapScalar(_message.Message): +class FieldExpressionMapInt32(_message.Message): __slots__ = ("val",) class ValEntry(_message.Message): __slots__ = ("key", "value") @@ -141,6 +141,71 @@ class FieldExpressionMapScalar(_message.Message): val: _containers.ScalarMap[int, int] def __init__(self, val: _Optional[_Mapping[int, int]] = ...) -> None: ... +class FieldExpressionMapInt64(_message.Message): + __slots__ = ("val",) + class ValEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: int + value: int + def __init__(self, key: _Optional[int] = ..., value: _Optional[int] = ...) -> None: ... + VAL_FIELD_NUMBER: _ClassVar[int] + val: _containers.ScalarMap[int, int] + def __init__(self, val: _Optional[_Mapping[int, int]] = ...) -> None: ... + +class FieldExpressionMapUint32(_message.Message): + __slots__ = ("val",) + class ValEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: int + value: int + def __init__(self, key: _Optional[int] = ..., value: _Optional[int] = ...) -> None: ... + VAL_FIELD_NUMBER: _ClassVar[int] + val: _containers.ScalarMap[int, int] + def __init__(self, val: _Optional[_Mapping[int, int]] = ...) -> None: ... + +class FieldExpressionMapUint64(_message.Message): + __slots__ = ("val",) + class ValEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: int + value: int + def __init__(self, key: _Optional[int] = ..., value: _Optional[int] = ...) -> None: ... + VAL_FIELD_NUMBER: _ClassVar[int] + val: _containers.ScalarMap[int, int] + def __init__(self, val: _Optional[_Mapping[int, int]] = ...) -> None: ... + +class FieldExpressionMapBool(_message.Message): + __slots__ = ("val",) + class ValEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: bool + value: bool + def __init__(self, key: bool = ..., value: bool = ...) -> None: ... + VAL_FIELD_NUMBER: _ClassVar[int] + val: _containers.ScalarMap[bool, bool] + def __init__(self, val: _Optional[_Mapping[bool, bool]] = ...) -> None: ... + +class FieldExpressionMapString(_message.Message): + __slots__ = ("val",) + class ValEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... + VAL_FIELD_NUMBER: _ClassVar[int] + val: _containers.ScalarMap[str, str] + def __init__(self, val: _Optional[_Mapping[str, str]] = ...) -> None: ... + class FieldExpressionMapEnum(_message.Message): __slots__ = ("val",) class ValEntry(_message.Message): diff --git a/gen/buf/validate/conformance/cases/numbers_pb2.py b/gen/buf/validate/conformance/cases/numbers_pb2.py index 25f5da7..96da8de 100644 --- a/gen/buf/validate/conformance/cases/numbers_pb2.py +++ b/gen/buf/validate/conformance/cases/numbers_pb2.py @@ -39,7 +39,7 @@ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n,buf/validate/conformance/cases/numbers.proto\x12\x1e\x62uf.validate.conformance.cases\x1a\x1b\x62uf/validate/validate.proto\"\x1d\n\tFloatNone\x12\x10\n\x03val\x18\x01 \x01(\x02R\x03val\"*\n\nFloatConst\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05\r\xa4p\x9d?R\x03val\",\n\x07\x46loatIn\x12!\n\x03val\x18\x01 \x01(\x02\x42\x0f\xbaH\x0c\n\n5\x85\xeb\x91@5\xe1z\xfc@R\x03val\"*\n\nFloatNotIn\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05=\x00\x00\x00\x00R\x03val\"\'\n\x07\x46loatLT\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05\x15\x00\x00\x00\x00R\x03val\"(\n\x08\x46loatLTE\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05\x1d\x00\x00\x80\x42R\x03val\"\'\n\x07\x46loatGT\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05%\x00\x00\x80\x41R\x03val\"(\n\x08\x46loatGTE\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05-\x00\x00\x00\x41R\x03val\".\n\tFloatGTLT\x12!\n\x03val\x18\x01 \x01(\x02\x42\x0f\xbaH\x0c\n\n\x15\x00\x00 A%\x00\x00\x00\x00R\x03val\"0\n\x0b\x46loatExLTGT\x12!\n\x03val\x18\x01 \x01(\x02\x42\x0f\xbaH\x0c\n\n\x15\x00\x00\x00\x00%\x00\x00 AR\x03val\"0\n\x0b\x46loatGTELTE\x12!\n\x03val\x18\x01 \x01(\x02\x42\x0f\xbaH\x0c\n\n\x1d\x00\x00\x80\x43-\x00\x00\x00\x43R\x03val\"2\n\rFloatExGTELTE\x12!\n\x03val\x18\x01 \x01(\x02\x42\x0f\xbaH\x0c\n\n\x1d\x00\x00\x00\x43-\x00\x00\x80\x43R\x03val\"(\n\x0b\x46loatFinite\x12\x19\n\x03val\x18\x01 \x01(\x02\x42\x07\xbaH\x04\n\x02@\x01R\x03val\"+\n\x0e\x46loatNotFinite\x12\x19\n\x03val\x18\x01 \x01(\x02\x42\x07\xbaH\x04\n\x02@\x00R\x03val\"3\n\x0b\x46loatIgnore\x12$\n\x03val\x18\x01 \x01(\x02\x42\x12\xbaH\x0f\n\n\x1d\x00\x00\x80\x43-\x00\x00\x00\x43\xd8\x01\x01R\x03val\"6\n\x12\x46loatIncorrectType\x12 \n\x03val\x18\x01 \x01(\x02\x42\x0e\xbaH\x0b\x12\t!\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\",\n\x0c\x46loatExample\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05M\x00\x00\x00\x41R\x03val\"\x1e\n\nDoubleNone\x12\x10\n\x03val\x18\x01 \x01(\x01R\x03val\"/\n\x0b\x44oubleConst\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t\t\xaeG\xe1z\x14\xae\xf3?R\x03val\"5\n\x08\x44oubleIn\x12)\n\x03val\x18\x01 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x31=\n\xd7\xa3p=\x12@1\x8f\xc2\xf5(\\\x8f\x1f@R\x03val\"/\n\x0b\x44oubleNotIn\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t9\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\",\n\x08\x44oubleLT\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t\x11\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\"-\n\tDoubleLTE\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t\x19\x00\x00\x00\x00\x00\x00P@R\x03val\",\n\x08\x44oubleGT\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t!\x00\x00\x00\x00\x00\x00\x30@R\x03val\"-\n\tDoubleGTE\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00 @R\x03val\"7\n\nDoubleGTLT\x12)\n\x03val\x18\x01 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x11\x00\x00\x00\x00\x00\x00$@!\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\"9\n\x0c\x44oubleExLTGT\x12)\n\x03val\x18\x01 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x11\x00\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00$@R\x03val\"9\n\x0c\x44oubleGTELTE\x12)\n\x03val\x18\x01 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00p@)\x00\x00\x00\x00\x00\x00`@R\x03val\";\n\x0e\x44oubleExGTELTE\x12)\n\x03val\x18\x01 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00`@)\x00\x00\x00\x00\x00\x00p@R\x03val\")\n\x0c\x44oubleFinite\x12\x19\n\x03val\x18\x01 \x01(\x01\x42\x07\xbaH\x04\x12\x02@\x01R\x03val\",\n\x0f\x44oubleNotFinite\x12\x19\n\x03val\x18\x01 \x01(\x01\x42\x07\xbaH\x04\x12\x02@\x00R\x03val\"<\n\x0c\x44oubleIgnore\x12,\n\x03val\x18\x01 \x01(\x01\x42\x1a\xbaH\x17\x12\x12\x19\x00\x00\x00\x00\x00\x00p@)\x00\x00\x00\x00\x00\x00`@\xd8\x01\x01R\x03val\"3\n\x13\x44oubleIncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x01\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"1\n\rDoubleExample\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\tI\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\"\x1d\n\tInt32None\x12\x10\n\x03val\x18\x01 \x01(\x05R\x03val\"\'\n\nInt32Const\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02\x08\x01R\x03val\"&\n\x07Int32In\x12\x1b\n\x03val\x18\x01 \x01(\x05\x42\t\xbaH\x06\x1a\x04\x30\x02\x30\x03R\x03val\"\'\n\nInt32NotIn\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02\x38\x00R\x03val\"$\n\x07Int32LT\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02\x10\x00R\x03val\"%\n\x08Int32LTE\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02\x18@R\x03val\"$\n\x07Int32GT\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02 \x10R\x03val\"%\n\x08Int32GTE\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02(\x08R\x03val\"(\n\tInt32GTLT\x12\x1b\n\x03val\x18\x01 \x01(\x05\x42\t\xbaH\x06\x1a\x04\x10\n \x00R\x03val\"*\n\x0bInt32ExLTGT\x12\x1b\n\x03val\x18\x01 \x01(\x05\x42\t\xbaH\x06\x1a\x04\x10\x00 \nR\x03val\",\n\x0bInt32GTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x05\x42\x0b\xbaH\x08\x1a\x06\x18\x80\x02(\x80\x01R\x03val\".\n\rInt32ExGTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x05\x42\x0b\xbaH\x08\x1a\x06\x18\x80\x01(\x80\x02R\x03val\"/\n\x0bInt32Ignore\x12 \n\x03val\x18\x01 \x01(\x05\x42\x0e\xbaH\x0b\x1a\x06\x18\x80\x02(\x80\x01\xd8\x01\x01R\x03val\"2\n\x12Int32IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x05\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\")\n\x0cInt32Example\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02@\nR\x03val\"\x1d\n\tInt64None\x12\x10\n\x03val\x18\x01 \x01(\x03R\x03val\"\'\n\nInt64Const\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02\x08\x01R\x03val\"&\n\x07Int64In\x12\x1b\n\x03val\x18\x01 \x01(\x03\x42\t\xbaH\x06\"\x04\x30\x02\x30\x03R\x03val\"\'\n\nInt64NotIn\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02\x38\x00R\x03val\"$\n\x07Int64LT\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02\x10\x00R\x03val\"%\n\x08Int64LTE\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02\x18@R\x03val\"$\n\x07Int64GT\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02 \x10R\x03val\"%\n\x08Int64GTE\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x08R\x03val\"(\n\tInt64GTLT\x12\x1b\n\x03val\x18\x01 \x01(\x03\x42\t\xbaH\x06\"\x04\x10\n \x00R\x03val\"*\n\x0bInt64ExLTGT\x12\x1b\n\x03val\x18\x01 \x01(\x03\x42\t\xbaH\x06\"\x04\x10\x00 \nR\x03val\",\n\x0bInt64GTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x03\x42\x0b\xbaH\x08\"\x06\x18\x80\x02(\x80\x01R\x03val\".\n\rInt64ExGTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x03\x42\x0b\xbaH\x08\"\x06\x18\x80\x01(\x80\x02R\x03val\"/\n\x0bInt64Ignore\x12 \n\x03val\x18\x01 \x01(\x03\x42\x0e\xbaH\x0b\"\x06\x18\x80\x02(\x80\x01\xd8\x01\x01R\x03val\"\x8c\x04\n\x13Int64BigConstraints\x12\"\n\x06lt_pos\x18\x01 \x01(\x03\x42\x0b\xbaH\x08\"\x06\x10\xa6\xdd\x87\xa4\x14R\x05ltPos\x12\'\n\x06lt_neg\x18\x02 \x01(\x03\x42\x10\xbaH\r\"\x0b\x10\xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x05ltNeg\x12\"\n\x06gt_pos\x18\x03 \x01(\x03\x42\x0b\xbaH\x08\"\x06 \xa6\xdd\x87\xa4\x14R\x05gtPos\x12\'\n\x06gt_neg\x18\x04 \x01(\x03\x42\x10\xbaH\r\"\x0b \xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x05gtNeg\x12$\n\x07lte_pos\x18\x05 \x01(\x03\x42\x0b\xbaH\x08\"\x06\x18\xa6\xdd\x87\xa4\x14R\x06ltePos\x12)\n\x07lte_neg\x18\x06 \x01(\x03\x42\x10\xbaH\r\"\x0b\x18\xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x06lteNeg\x12$\n\x07gte_pos\x18\x07 \x01(\x03\x42\x0b\xbaH\x08\"\x06(\xa6\xdd\x87\xa4\x14R\x06gtePos\x12)\n\x07gte_neg\x18\x08 \x01(\x03\x42\x10\xbaH\r\"\x0b(\xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x06gteNeg\x12.\n\x0c\x63onstant_pos\x18\t \x01(\x03\x42\x0b\xbaH\x08\"\x06\x08\xa6\xdd\x87\xa4\x14R\x0b\x63onstantPos\x12\x33\n\x0c\x63onstant_neg\x18\n \x01(\x03\x42\x10\xbaH\r\"\x0b\x08\xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x0b\x63onstantNeg\x12&\n\x02in\x18\x0b \x01(\x03\x42\x16\xbaH\x13\"\x11\x30\xa6\xdd\x87\xa4\x14\x30\xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x02in\x12,\n\x05notin\x18\x0c \x01(\x03\x42\x16\xbaH\x13\"\x11\x38\xa6\xdd\x87\xa4\x14\x38\xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x05notin\"2\n\x12Int64IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x03\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\")\n\x0cInt64Example\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02H\nR\x03val\"\x1e\n\nUInt32None\x12\x10\n\x03val\x18\x01 \x01(\rR\x03val\"(\n\x0bUInt32Const\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02\x08\x01R\x03val\"\'\n\x08UInt32In\x12\x1b\n\x03val\x18\x01 \x01(\rB\t\xbaH\x06*\x04\x30\x02\x30\x03R\x03val\"(\n\x0bUInt32NotIn\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02\x38\x00R\x03val\"%\n\x08UInt32LT\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02\x10\x05R\x03val\"&\n\tUInt32LTE\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02\x18@R\x03val\"%\n\x08UInt32GT\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02 \x10R\x03val\"&\n\tUInt32GTE\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02(\x08R\x03val\")\n\nUInt32GTLT\x12\x1b\n\x03val\x18\x01 \x01(\rB\t\xbaH\x06*\x04\x10\n \x05R\x03val\"+\n\x0cUInt32ExLTGT\x12\x1b\n\x03val\x18\x01 \x01(\rB\t\xbaH\x06*\x04\x10\x05 \nR\x03val\"-\n\x0cUInt32GTELTE\x12\x1d\n\x03val\x18\x01 \x01(\rB\x0b\xbaH\x08*\x06\x18\x80\x02(\x80\x01R\x03val\"/\n\x0eUInt32ExGTELTE\x12\x1d\n\x03val\x18\x01 \x01(\rB\x0b\xbaH\x08*\x06\x18\x80\x01(\x80\x02R\x03val\"0\n\x0cUInt32Ignore\x12 \n\x03val\x18\x01 \x01(\rB\x0e\xbaH\x0b*\x06\x18\x80\x02(\x80\x01\xd8\x01\x01R\x03val\"3\n\x13UInt32IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\rB\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"*\n\rUInt32Example\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02@\x00R\x03val\"\x1e\n\nUInt64None\x12\x10\n\x03val\x18\x01 \x01(\x04R\x03val\"(\n\x0bUInt64Const\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02\x08\x01R\x03val\"\'\n\x08UInt64In\x12\x1b\n\x03val\x18\x01 \x01(\x04\x42\t\xbaH\x06\x32\x04\x30\x02\x30\x03R\x03val\"(\n\x0bUInt64NotIn\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02\x38\x00R\x03val\"%\n\x08UInt64LT\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02\x10\x05R\x03val\"&\n\tUInt64LTE\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02\x18@R\x03val\"%\n\x08UInt64GT\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02 \x10R\x03val\"&\n\tUInt64GTE\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02(\x08R\x03val\")\n\nUInt64GTLT\x12\x1b\n\x03val\x18\x01 \x01(\x04\x42\t\xbaH\x06\x32\x04\x10\n \x05R\x03val\"+\n\x0cUInt64ExLTGT\x12\x1b\n\x03val\x18\x01 \x01(\x04\x42\t\xbaH\x06\x32\x04\x10\x05 \nR\x03val\"-\n\x0cUInt64GTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x04\x42\x0b\xbaH\x08\x32\x06\x18\x80\x02(\x80\x01R\x03val\"/\n\x0eUInt64ExGTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x04\x42\x0b\xbaH\x08\x32\x06\x18\x80\x01(\x80\x02R\x03val\"0\n\x0cUInt64Ignore\x12 \n\x03val\x18\x01 \x01(\x04\x42\x0e\xbaH\x0b\x32\x06\x18\x80\x02(\x80\x01\xd8\x01\x01R\x03val\"3\n\x13UInt64IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x04\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"*\n\rUInt64Example\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02@\x00R\x03val\"\x1e\n\nSInt32None\x12\x10\n\x03val\x18\x01 \x01(\x11R\x03val\"(\n\x0bSInt32Const\x12\x19\n\x03val\x18\x01 \x01(\x11\x42\x07\xbaH\x04:\x02\x08\x02R\x03val\"\'\n\x08SInt32In\x12\x1b\n\x03val\x18\x01 \x01(\x11\x42\t\xbaH\x06:\x04\x30\x04\x30\x06R\x03val\"(\n\x0bSInt32NotIn\x12\x19\n\x03val\x18\x01 \x01(\x11\x42\x07\xbaH\x04:\x02\x38\x00R\x03val\"%\n\x08SInt32LT\x12\x19\n\x03val\x18\x01 \x01(\x11\x42\x07\xbaH\x04:\x02\x10\x00R\x03val\"\'\n\tSInt32LTE\x12\x1a\n\x03val\x18\x01 \x01(\x11\x42\x08\xbaH\x05:\x03\x18\x80\x01R\x03val\"%\n\x08SInt32GT\x12\x19\n\x03val\x18\x01 \x01(\x11\x42\x07\xbaH\x04:\x02 R\x03val\"&\n\tSInt32GTE\x12\x19\n\x03val\x18\x01 \x01(\x11\x42\x07\xbaH\x04:\x02(\x10R\x03val\")\n\nSInt32GTLT\x12\x1b\n\x03val\x18\x01 \x01(\x11\x42\t\xbaH\x06:\x04\x10\x14 \x00R\x03val\"+\n\x0cSInt32ExLTGT\x12\x1b\n\x03val\x18\x01 \x01(\x11\x42\t\xbaH\x06:\x04\x10\x00 \x14R\x03val\"-\n\x0cSInt32GTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x11\x42\x0b\xbaH\x08:\x06\x18\x80\x04(\x80\x02R\x03val\"/\n\x0eSInt32ExGTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x11\x42\x0b\xbaH\x08:\x06\x18\x80\x02(\x80\x04R\x03val\"0\n\x0cSInt32Ignore\x12 \n\x03val\x18\x01 \x01(\x11\x42\x0e\xbaH\x0b:\x06\x18\x80\x04(\x80\x02\xd8\x01\x01R\x03val\"3\n\x13SInt32IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x11\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"*\n\rSInt32Example\x12\x19\n\x03val\x18\x01 \x01(\x11\x42\x07\xbaH\x04:\x02@\x00R\x03val\"\x1e\n\nSInt64None\x12\x10\n\x03val\x18\x01 \x01(\x12R\x03val\"(\n\x0bSInt64Const\x12\x19\n\x03val\x18\x01 \x01(\x12\x42\x07\xbaH\x04\x42\x02\x08\x02R\x03val\"\'\n\x08SInt64In\x12\x1b\n\x03val\x18\x01 \x01(\x12\x42\t\xbaH\x06\x42\x04\x30\x04\x30\x06R\x03val\"(\n\x0bSInt64NotIn\x12\x19\n\x03val\x18\x01 \x01(\x12\x42\x07\xbaH\x04\x42\x02\x38\x00R\x03val\"%\n\x08SInt64LT\x12\x19\n\x03val\x18\x01 \x01(\x12\x42\x07\xbaH\x04\x42\x02\x10\x00R\x03val\"\'\n\tSInt64LTE\x12\x1a\n\x03val\x18\x01 \x01(\x12\x42\x08\xbaH\x05\x42\x03\x18\x80\x01R\x03val\"%\n\x08SInt64GT\x12\x19\n\x03val\x18\x01 \x01(\x12\x42\x07\xbaH\x04\x42\x02 R\x03val\"&\n\tSInt64GTE\x12\x19\n\x03val\x18\x01 \x01(\x12\x42\x07\xbaH\x04\x42\x02(\x10R\x03val\")\n\nSInt64GTLT\x12\x1b\n\x03val\x18\x01 \x01(\x12\x42\t\xbaH\x06\x42\x04\x10\x14 \x00R\x03val\"+\n\x0cSInt64ExLTGT\x12\x1b\n\x03val\x18\x01 \x01(\x12\x42\t\xbaH\x06\x42\x04\x10\x00 \x14R\x03val\"-\n\x0cSInt64GTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x12\x42\x0b\xbaH\x08\x42\x06\x18\x80\x04(\x80\x02R\x03val\"/\n\x0eSInt64ExGTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x12\x42\x0b\xbaH\x08\x42\x06\x18\x80\x02(\x80\x04R\x03val\"0\n\x0cSInt64Ignore\x12 \n\x03val\x18\x01 \x01(\x12\x42\x0e\xbaH\x0b\x42\x06\x18\x80\x04(\x80\x02\xd8\x01\x01R\x03val\"3\n\x13SInt64IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x12\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"*\n\rSInt64Example\x12\x19\n\x03val\x18\x01 \x01(\x12\x42\x07\xbaH\x04\x42\x02@\x00R\x03val\"\x1f\n\x0b\x46ixed32None\x12\x10\n\x03val\x18\x01 \x01(\x07R\x03val\",\n\x0c\x46ixed32Const\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05\r\x01\x00\x00\x00R\x03val\".\n\tFixed32In\x12!\n\x03val\x18\x01 \x01(\x07\x42\x0f\xbaH\x0cJ\n5\x02\x00\x00\x00\x35\x03\x00\x00\x00R\x03val\",\n\x0c\x46ixed32NotIn\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05=\x00\x00\x00\x00R\x03val\")\n\tFixed32LT\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05\x15\x05\x00\x00\x00R\x03val\"*\n\nFixed32LTE\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05\x1d@\x00\x00\x00R\x03val\")\n\tFixed32GT\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05%\x10\x00\x00\x00R\x03val\"*\n\nFixed32GTE\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05-\x08\x00\x00\x00R\x03val\"0\n\x0b\x46ixed32GTLT\x12!\n\x03val\x18\x01 \x01(\x07\x42\x0f\xbaH\x0cJ\n\x15\n\x00\x00\x00%\x05\x00\x00\x00R\x03val\"2\n\rFixed32ExLTGT\x12!\n\x03val\x18\x01 \x01(\x07\x42\x0f\xbaH\x0cJ\n\x15\x05\x00\x00\x00%\n\x00\x00\x00R\x03val\"2\n\rFixed32GTELTE\x12!\n\x03val\x18\x01 \x01(\x07\x42\x0f\xbaH\x0cJ\n\x1d\x00\x01\x00\x00-\x80\x00\x00\x00R\x03val\"4\n\x0f\x46ixed32ExGTELTE\x12!\n\x03val\x18\x01 \x01(\x07\x42\x0f\xbaH\x0cJ\n\x1d\x80\x00\x00\x00-\x00\x01\x00\x00R\x03val\"5\n\rFixed32Ignore\x12$\n\x03val\x18\x01 \x01(\x07\x42\x12\xbaH\x0fJ\n\x1d\x00\x01\x00\x00-\x80\x00\x00\x00\xd8\x01\x01R\x03val\"4\n\x14\x46ixed32IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\".\n\x0e\x46ixed32Example\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05\x45\x00\x00\x00\x00R\x03val\"\x1f\n\x0b\x46ixed64None\x12\x10\n\x03val\x18\x01 \x01(\x06R\x03val\"0\n\x0c\x46ixed64Const\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\t\t\x01\x00\x00\x00\x00\x00\x00\x00R\x03val\"6\n\tFixed64In\x12)\n\x03val\x18\x01 \x01(\x06\x42\x17\xbaH\x14R\x12\x31\x02\x00\x00\x00\x00\x00\x00\x00\x31\x03\x00\x00\x00\x00\x00\x00\x00R\x03val\"0\n\x0c\x46ixed64NotIn\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\t9\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\"-\n\tFixed64LT\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\t\x11\x05\x00\x00\x00\x00\x00\x00\x00R\x03val\".\n\nFixed64LTE\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\t\x19@\x00\x00\x00\x00\x00\x00\x00R\x03val\"-\n\tFixed64GT\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\t!\x10\x00\x00\x00\x00\x00\x00\x00R\x03val\".\n\nFixed64GTE\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\t)\x08\x00\x00\x00\x00\x00\x00\x00R\x03val\"8\n\x0b\x46ixed64GTLT\x12)\n\x03val\x18\x01 \x01(\x06\x42\x17\xbaH\x14R\x12\x11\n\x00\x00\x00\x00\x00\x00\x00!\x05\x00\x00\x00\x00\x00\x00\x00R\x03val\":\n\rFixed64ExLTGT\x12)\n\x03val\x18\x01 \x01(\x06\x42\x17\xbaH\x14R\x12\x11\x05\x00\x00\x00\x00\x00\x00\x00!\n\x00\x00\x00\x00\x00\x00\x00R\x03val\":\n\rFixed64GTELTE\x12)\n\x03val\x18\x01 \x01(\x06\x42\x17\xbaH\x14R\x12\x19\x00\x01\x00\x00\x00\x00\x00\x00)\x80\x00\x00\x00\x00\x00\x00\x00R\x03val\"<\n\x0f\x46ixed64ExGTELTE\x12)\n\x03val\x18\x01 \x01(\x06\x42\x17\xbaH\x14R\x12\x19\x80\x00\x00\x00\x00\x00\x00\x00)\x00\x01\x00\x00\x00\x00\x00\x00R\x03val\"=\n\rFixed64Ignore\x12,\n\x03val\x18\x01 \x01(\x06\x42\x1a\xbaH\x17R\x12\x19\x00\x01\x00\x00\x00\x00\x00\x00)\x80\x00\x00\x00\x00\x00\x00\x00\xd8\x01\x01R\x03val\"4\n\x14\x46ixed64IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x06\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"2\n\x0e\x46ixed64Example\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\tA\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\" \n\x0cSFixed32None\x12\x10\n\x03val\x18\x01 \x01(\x0fR\x03val\"-\n\rSFixed32Const\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05\r\x01\x00\x00\x00R\x03val\"/\n\nSFixed32In\x12!\n\x03val\x18\x01 \x01(\x0f\x42\x0f\xbaH\x0cZ\n5\x02\x00\x00\x00\x35\x03\x00\x00\x00R\x03val\"-\n\rSFixed32NotIn\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05=\x00\x00\x00\x00R\x03val\"*\n\nSFixed32LT\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05\x15\x00\x00\x00\x00R\x03val\"+\n\x0bSFixed32LTE\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05\x1d@\x00\x00\x00R\x03val\"*\n\nSFixed32GT\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05%\x10\x00\x00\x00R\x03val\"+\n\x0bSFixed32GTE\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05-\x08\x00\x00\x00R\x03val\"1\n\x0cSFixed32GTLT\x12!\n\x03val\x18\x01 \x01(\x0f\x42\x0f\xbaH\x0cZ\n\x15\n\x00\x00\x00%\x00\x00\x00\x00R\x03val\"3\n\x0eSFixed32ExLTGT\x12!\n\x03val\x18\x01 \x01(\x0f\x42\x0f\xbaH\x0cZ\n\x15\x00\x00\x00\x00%\n\x00\x00\x00R\x03val\"3\n\x0eSFixed32GTELTE\x12!\n\x03val\x18\x01 \x01(\x0f\x42\x0f\xbaH\x0cZ\n\x1d\x00\x01\x00\x00-\x80\x00\x00\x00R\x03val\"5\n\x10SFixed32ExGTELTE\x12!\n\x03val\x18\x01 \x01(\x0f\x42\x0f\xbaH\x0cZ\n\x1d\x80\x00\x00\x00-\x00\x01\x00\x00R\x03val\"6\n\x0eSFixed32Ignore\x12$\n\x03val\x18\x01 \x01(\x0f\x42\x12\xbaH\x0fZ\n\x1d\x00\x01\x00\x00-\x80\x00\x00\x00\xd8\x01\x01R\x03val\"5\n\x15SFixed32IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"/\n\x0fSFixed32Example\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05\x45\x00\x00\x00\x00R\x03val\" \n\x0cSFixed64None\x12\x10\n\x03val\x18\x01 \x01(\x10R\x03val\"1\n\rSFixed64Const\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\t\t\x01\x00\x00\x00\x00\x00\x00\x00R\x03val\"7\n\nSFixed64In\x12)\n\x03val\x18\x01 \x01(\x10\x42\x17\xbaH\x14\x62\x12\x31\x02\x00\x00\x00\x00\x00\x00\x00\x31\x03\x00\x00\x00\x00\x00\x00\x00R\x03val\"1\n\rSFixed64NotIn\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\t9\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\".\n\nSFixed64LT\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\t\x11\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\"/\n\x0bSFixed64LTE\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\t\x19@\x00\x00\x00\x00\x00\x00\x00R\x03val\".\n\nSFixed64GT\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\t!\x10\x00\x00\x00\x00\x00\x00\x00R\x03val\"/\n\x0bSFixed64GTE\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\t)\x08\x00\x00\x00\x00\x00\x00\x00R\x03val\"9\n\x0cSFixed64GTLT\x12)\n\x03val\x18\x01 \x01(\x10\x42\x17\xbaH\x14\x62\x12\x11\n\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\";\n\x0eSFixed64ExLTGT\x12)\n\x03val\x18\x01 \x01(\x10\x42\x17\xbaH\x14\x62\x12\x11\x00\x00\x00\x00\x00\x00\x00\x00!\n\x00\x00\x00\x00\x00\x00\x00R\x03val\";\n\x0eSFixed64GTELTE\x12)\n\x03val\x18\x01 \x01(\x10\x42\x17\xbaH\x14\x62\x12\x19\x00\x01\x00\x00\x00\x00\x00\x00)\x80\x00\x00\x00\x00\x00\x00\x00R\x03val\"=\n\x10SFixed64ExGTELTE\x12)\n\x03val\x18\x01 \x01(\x10\x42\x17\xbaH\x14\x62\x12\x19\x80\x00\x00\x00\x00\x00\x00\x00)\x00\x01\x00\x00\x00\x00\x00\x00R\x03val\">\n\x0eSFixed64Ignore\x12,\n\x03val\x18\x01 \x01(\x10\x42\x1a\xbaH\x17\x62\x12\x19\x00\x01\x00\x00\x00\x00\x00\x00)\x80\x00\x00\x00\x00\x00\x00\x00\xd8\x01\x01R\x03val\"5\n\x15SFixed64IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x10\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"3\n\x0fSFixed64Example\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\tA\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\":\n\x10Int64LTEOptional\x12\x1e\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02\x18@H\x00R\x03val\x88\x01\x01\x42\x06\n\x04_valB\xce\x01\n\"com.buf.validate.conformance.casesB\x0cNumbersProtoP\x01\xa2\x02\x04\x42VCC\xaa\x02\x1e\x42uf.Validate.Conformance.Cases\xca\x02\x1e\x42uf\\Validate\\Conformance\\Cases\xe2\x02*Buf\\Validate\\Conformance\\Cases\\GPBMetadata\xea\x02!Buf::Validate::Conformance::Casesb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n,buf/validate/conformance/cases/numbers.proto\x12\x1e\x62uf.validate.conformance.cases\x1a\x1b\x62uf/validate/validate.proto\"\x1d\n\tFloatNone\x12\x10\n\x03val\x18\x01 \x01(\x02R\x03val\"*\n\nFloatConst\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05\r\xa4p\x9d?R\x03val\",\n\x07\x46loatIn\x12!\n\x03val\x18\x01 \x01(\x02\x42\x0f\xbaH\x0c\n\n5\x85\xeb\x91@5\xe1z\xfc@R\x03val\"*\n\nFloatNotIn\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05=\x00\x00\x00\x00R\x03val\"\'\n\x07\x46loatLT\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05\x15\x00\x00\x00\x00R\x03val\"(\n\x08\x46loatLTE\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05\x1d\x00\x00\x80\x42R\x03val\"\'\n\x07\x46loatGT\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05%\x00\x00\x80\x41R\x03val\"(\n\x08\x46loatGTE\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05-\x00\x00\x00\x41R\x03val\".\n\tFloatGTLT\x12!\n\x03val\x18\x01 \x01(\x02\x42\x0f\xbaH\x0c\n\n\x15\x00\x00 A%\x00\x00\x00\x00R\x03val\"0\n\x0b\x46loatExLTGT\x12!\n\x03val\x18\x01 \x01(\x02\x42\x0f\xbaH\x0c\n\n\x15\x00\x00\x00\x00%\x00\x00 AR\x03val\"0\n\x0b\x46loatGTELTE\x12!\n\x03val\x18\x01 \x01(\x02\x42\x0f\xbaH\x0c\n\n\x1d\x00\x00\x80\x43-\x00\x00\x00\x43R\x03val\"2\n\rFloatExGTELTE\x12!\n\x03val\x18\x01 \x01(\x02\x42\x0f\xbaH\x0c\n\n\x1d\x00\x00\x00\x43-\x00\x00\x80\x43R\x03val\"(\n\x0b\x46loatFinite\x12\x19\n\x03val\x18\x01 \x01(\x02\x42\x07\xbaH\x04\n\x02@\x01R\x03val\"+\n\x0e\x46loatNotFinite\x12\x19\n\x03val\x18\x01 \x01(\x02\x42\x07\xbaH\x04\n\x02@\x00R\x03val\"3\n\x0b\x46loatIgnore\x12$\n\x03val\x18\x01 \x01(\x02\x42\x12\xbaH\x0f\n\n\x1d\x00\x00\x80\x43-\x00\x00\x00\x43\xd8\x01\x01R\x03val\"6\n\x12\x46loatIncorrectType\x12 \n\x03val\x18\x01 \x01(\x02\x42\x0e\xbaH\x0b\x12\t!\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\",\n\x0c\x46loatExample\x12\x1c\n\x03val\x18\x01 \x01(\x02\x42\n\xbaH\x07\n\x05M\x00\x00\x00\x41R\x03val\"\x1e\n\nDoubleNone\x12\x10\n\x03val\x18\x01 \x01(\x01R\x03val\"/\n\x0b\x44oubleConst\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t\t\xaeG\xe1z\x14\xae\xf3?R\x03val\"5\n\x08\x44oubleIn\x12)\n\x03val\x18\x01 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x31=\n\xd7\xa3p=\x12@1\x8f\xc2\xf5(\\\x8f\x1f@R\x03val\"/\n\x0b\x44oubleNotIn\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t9\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\",\n\x08\x44oubleLT\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t\x11\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\"-\n\tDoubleLTE\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t\x19\x00\x00\x00\x00\x00\x00P@R\x03val\",\n\x08\x44oubleGT\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t!\x00\x00\x00\x00\x00\x00\x30@R\x03val\"-\n\tDoubleGTE\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\t)\x00\x00\x00\x00\x00\x00 @R\x03val\"7\n\nDoubleGTLT\x12)\n\x03val\x18\x01 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x11\x00\x00\x00\x00\x00\x00$@!\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\"9\n\x0c\x44oubleExLTGT\x12)\n\x03val\x18\x01 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x11\x00\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00$@R\x03val\"9\n\x0c\x44oubleGTELTE\x12)\n\x03val\x18\x01 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00p@)\x00\x00\x00\x00\x00\x00`@R\x03val\";\n\x0e\x44oubleExGTELTE\x12)\n\x03val\x18\x01 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00`@)\x00\x00\x00\x00\x00\x00p@R\x03val\")\n\x0c\x44oubleFinite\x12\x19\n\x03val\x18\x01 \x01(\x01\x42\x07\xbaH\x04\x12\x02@\x01R\x03val\",\n\x0f\x44oubleNotFinite\x12\x19\n\x03val\x18\x01 \x01(\x01\x42\x07\xbaH\x04\x12\x02@\x00R\x03val\"<\n\x0c\x44oubleIgnore\x12,\n\x03val\x18\x01 \x01(\x01\x42\x1a\xbaH\x17\x12\x12\x19\x00\x00\x00\x00\x00\x00p@)\x00\x00\x00\x00\x00\x00`@\xd8\x01\x01R\x03val\"3\n\x13\x44oubleIncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x01\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"1\n\rDoubleExample\x12 \n\x03val\x18\x01 \x01(\x01\x42\x0e\xbaH\x0b\x12\tI\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\"\x1d\n\tInt32None\x12\x10\n\x03val\x18\x01 \x01(\x05R\x03val\"\'\n\nInt32Const\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02\x08\x01R\x03val\"&\n\x07Int32In\x12\x1b\n\x03val\x18\x01 \x01(\x05\x42\t\xbaH\x06\x1a\x04\x30\x02\x30\x03R\x03val\"\'\n\nInt32NotIn\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02\x38\x00R\x03val\"$\n\x07Int32LT\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02\x10\x00R\x03val\"%\n\x08Int32LTE\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02\x18@R\x03val\"$\n\x07Int32GT\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02 \x10R\x03val\"%\n\x08Int32GTE\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02(\x08R\x03val\"(\n\tInt32GTLT\x12\x1b\n\x03val\x18\x01 \x01(\x05\x42\t\xbaH\x06\x1a\x04\x10\n \x00R\x03val\"*\n\x0bInt32ExLTGT\x12\x1b\n\x03val\x18\x01 \x01(\x05\x42\t\xbaH\x06\x1a\x04\x10\x00 \nR\x03val\",\n\x0bInt32GTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x05\x42\x0b\xbaH\x08\x1a\x06\x18\x80\x02(\x80\x01R\x03val\".\n\rInt32ExGTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x05\x42\x0b\xbaH\x08\x1a\x06\x18\x80\x01(\x80\x02R\x03val\"/\n\x0bInt32Ignore\x12 \n\x03val\x18\x01 \x01(\x05\x42\x0e\xbaH\x0b\x1a\x06\x18\x80\x02(\x80\x01\xd8\x01\x01R\x03val\"2\n\x12Int32IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x05\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\")\n\x0cInt32Example\x12\x19\n\x03val\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02@\nR\x03val\"\x1d\n\tInt64None\x12\x10\n\x03val\x18\x01 \x01(\x03R\x03val\"\'\n\nInt64Const\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02\x08\x01R\x03val\"&\n\x07Int64In\x12\x1b\n\x03val\x18\x01 \x01(\x03\x42\t\xbaH\x06\"\x04\x30\x02\x30\x03R\x03val\"\'\n\nInt64NotIn\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02\x38\x00R\x03val\"$\n\x07Int64LT\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02\x10\x00R\x03val\"%\n\x08Int64LTE\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02\x18@R\x03val\"$\n\x07Int64GT\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02 \x10R\x03val\"%\n\x08Int64GTE\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x08R\x03val\"(\n\tInt64GTLT\x12\x1b\n\x03val\x18\x01 \x01(\x03\x42\t\xbaH\x06\"\x04\x10\n \x00R\x03val\"*\n\x0bInt64ExLTGT\x12\x1b\n\x03val\x18\x01 \x01(\x03\x42\t\xbaH\x06\"\x04\x10\x00 \nR\x03val\",\n\x0bInt64GTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x03\x42\x0b\xbaH\x08\"\x06\x18\x80\x02(\x80\x01R\x03val\".\n\rInt64ExGTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x03\x42\x0b\xbaH\x08\"\x06\x18\x80\x01(\x80\x02R\x03val\"/\n\x0bInt64Ignore\x12 \n\x03val\x18\x01 \x01(\x03\x42\x0e\xbaH\x0b\"\x06\x18\x80\x02(\x80\x01\xd8\x01\x01R\x03val\"\x86\x04\n\rInt64BigRules\x12\"\n\x06lt_pos\x18\x01 \x01(\x03\x42\x0b\xbaH\x08\"\x06\x10\xa6\xdd\x87\xa4\x14R\x05ltPos\x12\'\n\x06lt_neg\x18\x02 \x01(\x03\x42\x10\xbaH\r\"\x0b\x10\xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x05ltNeg\x12\"\n\x06gt_pos\x18\x03 \x01(\x03\x42\x0b\xbaH\x08\"\x06 \xa6\xdd\x87\xa4\x14R\x05gtPos\x12\'\n\x06gt_neg\x18\x04 \x01(\x03\x42\x10\xbaH\r\"\x0b \xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x05gtNeg\x12$\n\x07lte_pos\x18\x05 \x01(\x03\x42\x0b\xbaH\x08\"\x06\x18\xa6\xdd\x87\xa4\x14R\x06ltePos\x12)\n\x07lte_neg\x18\x06 \x01(\x03\x42\x10\xbaH\r\"\x0b\x18\xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x06lteNeg\x12$\n\x07gte_pos\x18\x07 \x01(\x03\x42\x0b\xbaH\x08\"\x06(\xa6\xdd\x87\xa4\x14R\x06gtePos\x12)\n\x07gte_neg\x18\x08 \x01(\x03\x42\x10\xbaH\r\"\x0b(\xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x06gteNeg\x12.\n\x0c\x63onstant_pos\x18\t \x01(\x03\x42\x0b\xbaH\x08\"\x06\x08\xa6\xdd\x87\xa4\x14R\x0b\x63onstantPos\x12\x33\n\x0c\x63onstant_neg\x18\n \x01(\x03\x42\x10\xbaH\r\"\x0b\x08\xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x0b\x63onstantNeg\x12&\n\x02in\x18\x0b \x01(\x03\x42\x16\xbaH\x13\"\x11\x30\xa6\xdd\x87\xa4\x14\x30\xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x02in\x12,\n\x05notin\x18\x0c \x01(\x03\x42\x16\xbaH\x13\"\x11\x38\xa6\xdd\x87\xa4\x14\x38\xda\xa2\xf8\xdb\xeb\xff\xff\xff\xff\x01R\x05notin\"2\n\x12Int64IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x03\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\")\n\x0cInt64Example\x12\x19\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02H\nR\x03val\"\x1e\n\nUInt32None\x12\x10\n\x03val\x18\x01 \x01(\rR\x03val\"(\n\x0bUInt32Const\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02\x08\x01R\x03val\"\'\n\x08UInt32In\x12\x1b\n\x03val\x18\x01 \x01(\rB\t\xbaH\x06*\x04\x30\x02\x30\x03R\x03val\"(\n\x0bUInt32NotIn\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02\x38\x00R\x03val\"%\n\x08UInt32LT\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02\x10\x05R\x03val\"&\n\tUInt32LTE\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02\x18@R\x03val\"%\n\x08UInt32GT\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02 \x10R\x03val\"&\n\tUInt32GTE\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02(\x08R\x03val\")\n\nUInt32GTLT\x12\x1b\n\x03val\x18\x01 \x01(\rB\t\xbaH\x06*\x04\x10\n \x05R\x03val\"+\n\x0cUInt32ExLTGT\x12\x1b\n\x03val\x18\x01 \x01(\rB\t\xbaH\x06*\x04\x10\x05 \nR\x03val\"-\n\x0cUInt32GTELTE\x12\x1d\n\x03val\x18\x01 \x01(\rB\x0b\xbaH\x08*\x06\x18\x80\x02(\x80\x01R\x03val\"/\n\x0eUInt32ExGTELTE\x12\x1d\n\x03val\x18\x01 \x01(\rB\x0b\xbaH\x08*\x06\x18\x80\x01(\x80\x02R\x03val\"0\n\x0cUInt32Ignore\x12 \n\x03val\x18\x01 \x01(\rB\x0e\xbaH\x0b*\x06\x18\x80\x02(\x80\x01\xd8\x01\x01R\x03val\"3\n\x13UInt32IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\rB\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"*\n\rUInt32Example\x12\x19\n\x03val\x18\x01 \x01(\rB\x07\xbaH\x04*\x02@\x00R\x03val\"\x1e\n\nUInt64None\x12\x10\n\x03val\x18\x01 \x01(\x04R\x03val\"(\n\x0bUInt64Const\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02\x08\x01R\x03val\"\'\n\x08UInt64In\x12\x1b\n\x03val\x18\x01 \x01(\x04\x42\t\xbaH\x06\x32\x04\x30\x02\x30\x03R\x03val\"(\n\x0bUInt64NotIn\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02\x38\x00R\x03val\"%\n\x08UInt64LT\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02\x10\x05R\x03val\"&\n\tUInt64LTE\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02\x18@R\x03val\"%\n\x08UInt64GT\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02 \x10R\x03val\"&\n\tUInt64GTE\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02(\x08R\x03val\")\n\nUInt64GTLT\x12\x1b\n\x03val\x18\x01 \x01(\x04\x42\t\xbaH\x06\x32\x04\x10\n \x05R\x03val\"+\n\x0cUInt64ExLTGT\x12\x1b\n\x03val\x18\x01 \x01(\x04\x42\t\xbaH\x06\x32\x04\x10\x05 \nR\x03val\"-\n\x0cUInt64GTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x04\x42\x0b\xbaH\x08\x32\x06\x18\x80\x02(\x80\x01R\x03val\"/\n\x0eUInt64ExGTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x04\x42\x0b\xbaH\x08\x32\x06\x18\x80\x01(\x80\x02R\x03val\"0\n\x0cUInt64Ignore\x12 \n\x03val\x18\x01 \x01(\x04\x42\x0e\xbaH\x0b\x32\x06\x18\x80\x02(\x80\x01\xd8\x01\x01R\x03val\"3\n\x13UInt64IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x04\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"*\n\rUInt64Example\x12\x19\n\x03val\x18\x01 \x01(\x04\x42\x07\xbaH\x04\x32\x02@\x00R\x03val\"\x1e\n\nSInt32None\x12\x10\n\x03val\x18\x01 \x01(\x11R\x03val\"(\n\x0bSInt32Const\x12\x19\n\x03val\x18\x01 \x01(\x11\x42\x07\xbaH\x04:\x02\x08\x02R\x03val\"\'\n\x08SInt32In\x12\x1b\n\x03val\x18\x01 \x01(\x11\x42\t\xbaH\x06:\x04\x30\x04\x30\x06R\x03val\"(\n\x0bSInt32NotIn\x12\x19\n\x03val\x18\x01 \x01(\x11\x42\x07\xbaH\x04:\x02\x38\x00R\x03val\"%\n\x08SInt32LT\x12\x19\n\x03val\x18\x01 \x01(\x11\x42\x07\xbaH\x04:\x02\x10\x00R\x03val\"\'\n\tSInt32LTE\x12\x1a\n\x03val\x18\x01 \x01(\x11\x42\x08\xbaH\x05:\x03\x18\x80\x01R\x03val\"%\n\x08SInt32GT\x12\x19\n\x03val\x18\x01 \x01(\x11\x42\x07\xbaH\x04:\x02 R\x03val\"&\n\tSInt32GTE\x12\x19\n\x03val\x18\x01 \x01(\x11\x42\x07\xbaH\x04:\x02(\x10R\x03val\")\n\nSInt32GTLT\x12\x1b\n\x03val\x18\x01 \x01(\x11\x42\t\xbaH\x06:\x04\x10\x14 \x00R\x03val\"+\n\x0cSInt32ExLTGT\x12\x1b\n\x03val\x18\x01 \x01(\x11\x42\t\xbaH\x06:\x04\x10\x00 \x14R\x03val\"-\n\x0cSInt32GTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x11\x42\x0b\xbaH\x08:\x06\x18\x80\x04(\x80\x02R\x03val\"/\n\x0eSInt32ExGTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x11\x42\x0b\xbaH\x08:\x06\x18\x80\x02(\x80\x04R\x03val\"0\n\x0cSInt32Ignore\x12 \n\x03val\x18\x01 \x01(\x11\x42\x0e\xbaH\x0b:\x06\x18\x80\x04(\x80\x02\xd8\x01\x01R\x03val\"3\n\x13SInt32IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x11\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"*\n\rSInt32Example\x12\x19\n\x03val\x18\x01 \x01(\x11\x42\x07\xbaH\x04:\x02@\x00R\x03val\"\x1e\n\nSInt64None\x12\x10\n\x03val\x18\x01 \x01(\x12R\x03val\"(\n\x0bSInt64Const\x12\x19\n\x03val\x18\x01 \x01(\x12\x42\x07\xbaH\x04\x42\x02\x08\x02R\x03val\"\'\n\x08SInt64In\x12\x1b\n\x03val\x18\x01 \x01(\x12\x42\t\xbaH\x06\x42\x04\x30\x04\x30\x06R\x03val\"(\n\x0bSInt64NotIn\x12\x19\n\x03val\x18\x01 \x01(\x12\x42\x07\xbaH\x04\x42\x02\x38\x00R\x03val\"%\n\x08SInt64LT\x12\x19\n\x03val\x18\x01 \x01(\x12\x42\x07\xbaH\x04\x42\x02\x10\x00R\x03val\"\'\n\tSInt64LTE\x12\x1a\n\x03val\x18\x01 \x01(\x12\x42\x08\xbaH\x05\x42\x03\x18\x80\x01R\x03val\"%\n\x08SInt64GT\x12\x19\n\x03val\x18\x01 \x01(\x12\x42\x07\xbaH\x04\x42\x02 R\x03val\"&\n\tSInt64GTE\x12\x19\n\x03val\x18\x01 \x01(\x12\x42\x07\xbaH\x04\x42\x02(\x10R\x03val\")\n\nSInt64GTLT\x12\x1b\n\x03val\x18\x01 \x01(\x12\x42\t\xbaH\x06\x42\x04\x10\x14 \x00R\x03val\"+\n\x0cSInt64ExLTGT\x12\x1b\n\x03val\x18\x01 \x01(\x12\x42\t\xbaH\x06\x42\x04\x10\x00 \x14R\x03val\"-\n\x0cSInt64GTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x12\x42\x0b\xbaH\x08\x42\x06\x18\x80\x04(\x80\x02R\x03val\"/\n\x0eSInt64ExGTELTE\x12\x1d\n\x03val\x18\x01 \x01(\x12\x42\x0b\xbaH\x08\x42\x06\x18\x80\x02(\x80\x04R\x03val\"0\n\x0cSInt64Ignore\x12 \n\x03val\x18\x01 \x01(\x12\x42\x0e\xbaH\x0b\x42\x06\x18\x80\x04(\x80\x02\xd8\x01\x01R\x03val\"3\n\x13SInt64IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x12\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"*\n\rSInt64Example\x12\x19\n\x03val\x18\x01 \x01(\x12\x42\x07\xbaH\x04\x42\x02@\x00R\x03val\"\x1f\n\x0b\x46ixed32None\x12\x10\n\x03val\x18\x01 \x01(\x07R\x03val\",\n\x0c\x46ixed32Const\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05\r\x01\x00\x00\x00R\x03val\".\n\tFixed32In\x12!\n\x03val\x18\x01 \x01(\x07\x42\x0f\xbaH\x0cJ\n5\x02\x00\x00\x00\x35\x03\x00\x00\x00R\x03val\",\n\x0c\x46ixed32NotIn\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05=\x00\x00\x00\x00R\x03val\")\n\tFixed32LT\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05\x15\x05\x00\x00\x00R\x03val\"*\n\nFixed32LTE\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05\x1d@\x00\x00\x00R\x03val\")\n\tFixed32GT\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05%\x10\x00\x00\x00R\x03val\"*\n\nFixed32GTE\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05-\x08\x00\x00\x00R\x03val\"0\n\x0b\x46ixed32GTLT\x12!\n\x03val\x18\x01 \x01(\x07\x42\x0f\xbaH\x0cJ\n\x15\n\x00\x00\x00%\x05\x00\x00\x00R\x03val\"2\n\rFixed32ExLTGT\x12!\n\x03val\x18\x01 \x01(\x07\x42\x0f\xbaH\x0cJ\n\x15\x05\x00\x00\x00%\n\x00\x00\x00R\x03val\"2\n\rFixed32GTELTE\x12!\n\x03val\x18\x01 \x01(\x07\x42\x0f\xbaH\x0cJ\n\x1d\x00\x01\x00\x00-\x80\x00\x00\x00R\x03val\"4\n\x0f\x46ixed32ExGTELTE\x12!\n\x03val\x18\x01 \x01(\x07\x42\x0f\xbaH\x0cJ\n\x1d\x80\x00\x00\x00-\x00\x01\x00\x00R\x03val\"5\n\rFixed32Ignore\x12$\n\x03val\x18\x01 \x01(\x07\x42\x12\xbaH\x0fJ\n\x1d\x00\x01\x00\x00-\x80\x00\x00\x00\xd8\x01\x01R\x03val\"4\n\x14\x46ixed32IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\".\n\x0e\x46ixed32Example\x12\x1c\n\x03val\x18\x01 \x01(\x07\x42\n\xbaH\x07J\x05\x45\x00\x00\x00\x00R\x03val\"\x1f\n\x0b\x46ixed64None\x12\x10\n\x03val\x18\x01 \x01(\x06R\x03val\"0\n\x0c\x46ixed64Const\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\t\t\x01\x00\x00\x00\x00\x00\x00\x00R\x03val\"6\n\tFixed64In\x12)\n\x03val\x18\x01 \x01(\x06\x42\x17\xbaH\x14R\x12\x31\x02\x00\x00\x00\x00\x00\x00\x00\x31\x03\x00\x00\x00\x00\x00\x00\x00R\x03val\"0\n\x0c\x46ixed64NotIn\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\t9\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\"-\n\tFixed64LT\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\t\x11\x05\x00\x00\x00\x00\x00\x00\x00R\x03val\".\n\nFixed64LTE\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\t\x19@\x00\x00\x00\x00\x00\x00\x00R\x03val\"-\n\tFixed64GT\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\t!\x10\x00\x00\x00\x00\x00\x00\x00R\x03val\".\n\nFixed64GTE\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\t)\x08\x00\x00\x00\x00\x00\x00\x00R\x03val\"8\n\x0b\x46ixed64GTLT\x12)\n\x03val\x18\x01 \x01(\x06\x42\x17\xbaH\x14R\x12\x11\n\x00\x00\x00\x00\x00\x00\x00!\x05\x00\x00\x00\x00\x00\x00\x00R\x03val\":\n\rFixed64ExLTGT\x12)\n\x03val\x18\x01 \x01(\x06\x42\x17\xbaH\x14R\x12\x11\x05\x00\x00\x00\x00\x00\x00\x00!\n\x00\x00\x00\x00\x00\x00\x00R\x03val\":\n\rFixed64GTELTE\x12)\n\x03val\x18\x01 \x01(\x06\x42\x17\xbaH\x14R\x12\x19\x00\x01\x00\x00\x00\x00\x00\x00)\x80\x00\x00\x00\x00\x00\x00\x00R\x03val\"<\n\x0f\x46ixed64ExGTELTE\x12)\n\x03val\x18\x01 \x01(\x06\x42\x17\xbaH\x14R\x12\x19\x80\x00\x00\x00\x00\x00\x00\x00)\x00\x01\x00\x00\x00\x00\x00\x00R\x03val\"=\n\rFixed64Ignore\x12,\n\x03val\x18\x01 \x01(\x06\x42\x1a\xbaH\x17R\x12\x19\x00\x01\x00\x00\x00\x00\x00\x00)\x80\x00\x00\x00\x00\x00\x00\x00\xd8\x01\x01R\x03val\"4\n\x14\x46ixed64IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x06\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"2\n\x0e\x46ixed64Example\x12 \n\x03val\x18\x01 \x01(\x06\x42\x0e\xbaH\x0bR\tA\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\" \n\x0cSFixed32None\x12\x10\n\x03val\x18\x01 \x01(\x0fR\x03val\"-\n\rSFixed32Const\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05\r\x01\x00\x00\x00R\x03val\"/\n\nSFixed32In\x12!\n\x03val\x18\x01 \x01(\x0f\x42\x0f\xbaH\x0cZ\n5\x02\x00\x00\x00\x35\x03\x00\x00\x00R\x03val\"-\n\rSFixed32NotIn\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05=\x00\x00\x00\x00R\x03val\"*\n\nSFixed32LT\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05\x15\x00\x00\x00\x00R\x03val\"+\n\x0bSFixed32LTE\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05\x1d@\x00\x00\x00R\x03val\"*\n\nSFixed32GT\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05%\x10\x00\x00\x00R\x03val\"+\n\x0bSFixed32GTE\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05-\x08\x00\x00\x00R\x03val\"1\n\x0cSFixed32GTLT\x12!\n\x03val\x18\x01 \x01(\x0f\x42\x0f\xbaH\x0cZ\n\x15\n\x00\x00\x00%\x00\x00\x00\x00R\x03val\"3\n\x0eSFixed32ExLTGT\x12!\n\x03val\x18\x01 \x01(\x0f\x42\x0f\xbaH\x0cZ\n\x15\x00\x00\x00\x00%\n\x00\x00\x00R\x03val\"3\n\x0eSFixed32GTELTE\x12!\n\x03val\x18\x01 \x01(\x0f\x42\x0f\xbaH\x0cZ\n\x1d\x00\x01\x00\x00-\x80\x00\x00\x00R\x03val\"5\n\x10SFixed32ExGTELTE\x12!\n\x03val\x18\x01 \x01(\x0f\x42\x0f\xbaH\x0cZ\n\x1d\x80\x00\x00\x00-\x00\x01\x00\x00R\x03val\"6\n\x0eSFixed32Ignore\x12$\n\x03val\x18\x01 \x01(\x0f\x42\x12\xbaH\x0fZ\n\x1d\x00\x01\x00\x00-\x80\x00\x00\x00\xd8\x01\x01R\x03val\"5\n\x15SFixed32IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"/\n\x0fSFixed32Example\x12\x1c\n\x03val\x18\x01 \x01(\x0f\x42\n\xbaH\x07Z\x05\x45\x00\x00\x00\x00R\x03val\" \n\x0cSFixed64None\x12\x10\n\x03val\x18\x01 \x01(\x10R\x03val\"1\n\rSFixed64Const\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\t\t\x01\x00\x00\x00\x00\x00\x00\x00R\x03val\"7\n\nSFixed64In\x12)\n\x03val\x18\x01 \x01(\x10\x42\x17\xbaH\x14\x62\x12\x31\x02\x00\x00\x00\x00\x00\x00\x00\x31\x03\x00\x00\x00\x00\x00\x00\x00R\x03val\"1\n\rSFixed64NotIn\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\t9\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\".\n\nSFixed64LT\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\t\x11\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\"/\n\x0bSFixed64LTE\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\t\x19@\x00\x00\x00\x00\x00\x00\x00R\x03val\".\n\nSFixed64GT\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\t!\x10\x00\x00\x00\x00\x00\x00\x00R\x03val\"/\n\x0bSFixed64GTE\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\t)\x08\x00\x00\x00\x00\x00\x00\x00R\x03val\"9\n\x0cSFixed64GTLT\x12)\n\x03val\x18\x01 \x01(\x10\x42\x17\xbaH\x14\x62\x12\x11\n\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\";\n\x0eSFixed64ExLTGT\x12)\n\x03val\x18\x01 \x01(\x10\x42\x17\xbaH\x14\x62\x12\x11\x00\x00\x00\x00\x00\x00\x00\x00!\n\x00\x00\x00\x00\x00\x00\x00R\x03val\";\n\x0eSFixed64GTELTE\x12)\n\x03val\x18\x01 \x01(\x10\x42\x17\xbaH\x14\x62\x12\x19\x00\x01\x00\x00\x00\x00\x00\x00)\x80\x00\x00\x00\x00\x00\x00\x00R\x03val\"=\n\x10SFixed64ExGTELTE\x12)\n\x03val\x18\x01 \x01(\x10\x42\x17\xbaH\x14\x62\x12\x19\x80\x00\x00\x00\x00\x00\x00\x00)\x00\x01\x00\x00\x00\x00\x00\x00R\x03val\">\n\x0eSFixed64Ignore\x12,\n\x03val\x18\x01 \x01(\x10\x42\x1a\xbaH\x17\x62\x12\x19\x00\x01\x00\x00\x00\x00\x00\x00)\x80\x00\x00\x00\x00\x00\x00\x00\xd8\x01\x01R\x03val\"5\n\x15SFixed64IncorrectType\x12\x1c\n\x03val\x18\x01 \x01(\x10\x42\n\xbaH\x07\n\x05%\x00\x00\x00\x00R\x03val\"3\n\x0fSFixed64Example\x12 \n\x03val\x18\x01 \x01(\x10\x42\x0e\xbaH\x0b\x62\tA\x00\x00\x00\x00\x00\x00\x00\x00R\x03val\":\n\x10Int64LTEOptional\x12\x1e\n\x03val\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02\x18@H\x00R\x03val\x88\x01\x01\x42\x06\n\x04_valB\xce\x01\n\"com.buf.validate.conformance.casesB\x0cNumbersProtoP\x01\xa2\x02\x04\x42VCC\xaa\x02\x1e\x42uf.Validate.Conformance.Cases\xca\x02\x1e\x42uf\\Validate\\Conformance\\Cases\xe2\x02*Buf\\Validate\\Conformance\\Cases\\GPBMetadata\xea\x02!Buf::Validate::Conformance::Casesb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -163,30 +163,30 @@ _globals['_INT64EXGTELTE'].fields_by_name['val']._serialized_options = b'\272H\010\"\006\030\200\001(\200\002' _globals['_INT64IGNORE'].fields_by_name['val']._loaded_options = None _globals['_INT64IGNORE'].fields_by_name['val']._serialized_options = b'\272H\013\"\006\030\200\002(\200\001\330\001\001' - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['lt_pos']._loaded_options = None - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['lt_pos']._serialized_options = b'\272H\010\"\006\020\246\335\207\244\024' - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['lt_neg']._loaded_options = None - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['lt_neg']._serialized_options = b'\272H\r\"\013\020\332\242\370\333\353\377\377\377\377\001' - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['gt_pos']._loaded_options = None - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['gt_pos']._serialized_options = b'\272H\010\"\006 \246\335\207\244\024' - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['gt_neg']._loaded_options = None - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['gt_neg']._serialized_options = b'\272H\r\"\013 \332\242\370\333\353\377\377\377\377\001' - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['lte_pos']._loaded_options = None - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['lte_pos']._serialized_options = b'\272H\010\"\006\030\246\335\207\244\024' - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['lte_neg']._loaded_options = None - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['lte_neg']._serialized_options = b'\272H\r\"\013\030\332\242\370\333\353\377\377\377\377\001' - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['gte_pos']._loaded_options = None - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['gte_pos']._serialized_options = b'\272H\010\"\006(\246\335\207\244\024' - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['gte_neg']._loaded_options = None - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['gte_neg']._serialized_options = b'\272H\r\"\013(\332\242\370\333\353\377\377\377\377\001' - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['constant_pos']._loaded_options = None - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['constant_pos']._serialized_options = b'\272H\010\"\006\010\246\335\207\244\024' - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['constant_neg']._loaded_options = None - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['constant_neg']._serialized_options = b'\272H\r\"\013\010\332\242\370\333\353\377\377\377\377\001' - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['in']._loaded_options = None - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['in']._serialized_options = b'\272H\023\"\0210\246\335\207\244\0240\332\242\370\333\353\377\377\377\377\001' - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['notin']._loaded_options = None - _globals['_INT64BIGCONSTRAINTS'].fields_by_name['notin']._serialized_options = b'\272H\023\"\0218\246\335\207\244\0248\332\242\370\333\353\377\377\377\377\001' + _globals['_INT64BIGRULES'].fields_by_name['lt_pos']._loaded_options = None + _globals['_INT64BIGRULES'].fields_by_name['lt_pos']._serialized_options = b'\272H\010\"\006\020\246\335\207\244\024' + _globals['_INT64BIGRULES'].fields_by_name['lt_neg']._loaded_options = None + _globals['_INT64BIGRULES'].fields_by_name['lt_neg']._serialized_options = b'\272H\r\"\013\020\332\242\370\333\353\377\377\377\377\001' + _globals['_INT64BIGRULES'].fields_by_name['gt_pos']._loaded_options = None + _globals['_INT64BIGRULES'].fields_by_name['gt_pos']._serialized_options = b'\272H\010\"\006 \246\335\207\244\024' + _globals['_INT64BIGRULES'].fields_by_name['gt_neg']._loaded_options = None + _globals['_INT64BIGRULES'].fields_by_name['gt_neg']._serialized_options = b'\272H\r\"\013 \332\242\370\333\353\377\377\377\377\001' + _globals['_INT64BIGRULES'].fields_by_name['lte_pos']._loaded_options = None + _globals['_INT64BIGRULES'].fields_by_name['lte_pos']._serialized_options = b'\272H\010\"\006\030\246\335\207\244\024' + _globals['_INT64BIGRULES'].fields_by_name['lte_neg']._loaded_options = None + _globals['_INT64BIGRULES'].fields_by_name['lte_neg']._serialized_options = b'\272H\r\"\013\030\332\242\370\333\353\377\377\377\377\001' + _globals['_INT64BIGRULES'].fields_by_name['gte_pos']._loaded_options = None + _globals['_INT64BIGRULES'].fields_by_name['gte_pos']._serialized_options = b'\272H\010\"\006(\246\335\207\244\024' + _globals['_INT64BIGRULES'].fields_by_name['gte_neg']._loaded_options = None + _globals['_INT64BIGRULES'].fields_by_name['gte_neg']._serialized_options = b'\272H\r\"\013(\332\242\370\333\353\377\377\377\377\001' + _globals['_INT64BIGRULES'].fields_by_name['constant_pos']._loaded_options = None + _globals['_INT64BIGRULES'].fields_by_name['constant_pos']._serialized_options = b'\272H\010\"\006\010\246\335\207\244\024' + _globals['_INT64BIGRULES'].fields_by_name['constant_neg']._loaded_options = None + _globals['_INT64BIGRULES'].fields_by_name['constant_neg']._serialized_options = b'\272H\r\"\013\010\332\242\370\333\353\377\377\377\377\001' + _globals['_INT64BIGRULES'].fields_by_name['in']._loaded_options = None + _globals['_INT64BIGRULES'].fields_by_name['in']._serialized_options = b'\272H\023\"\0210\246\335\207\244\0240\332\242\370\333\353\377\377\377\377\001' + _globals['_INT64BIGRULES'].fields_by_name['notin']._loaded_options = None + _globals['_INT64BIGRULES'].fields_by_name['notin']._serialized_options = b'\272H\023\"\0218\246\335\207\244\0248\332\242\370\333\353\377\377\377\377\001' _globals['_INT64INCORRECTTYPE'].fields_by_name['val']._loaded_options = None _globals['_INT64INCORRECTTYPE'].fields_by_name['val']._serialized_options = b'\272H\007\n\005%\000\000\000\000' _globals['_INT64EXAMPLE'].fields_by_name['val']._loaded_options = None @@ -541,252 +541,252 @@ _globals['_INT64EXGTELTE']._serialized_end=2860 _globals['_INT64IGNORE']._serialized_start=2862 _globals['_INT64IGNORE']._serialized_end=2909 - _globals['_INT64BIGCONSTRAINTS']._serialized_start=2912 - _globals['_INT64BIGCONSTRAINTS']._serialized_end=3436 - _globals['_INT64INCORRECTTYPE']._serialized_start=3438 - _globals['_INT64INCORRECTTYPE']._serialized_end=3488 - _globals['_INT64EXAMPLE']._serialized_start=3490 - _globals['_INT64EXAMPLE']._serialized_end=3531 - _globals['_UINT32NONE']._serialized_start=3533 - _globals['_UINT32NONE']._serialized_end=3563 - _globals['_UINT32CONST']._serialized_start=3565 - _globals['_UINT32CONST']._serialized_end=3605 - _globals['_UINT32IN']._serialized_start=3607 - _globals['_UINT32IN']._serialized_end=3646 - _globals['_UINT32NOTIN']._serialized_start=3648 - _globals['_UINT32NOTIN']._serialized_end=3688 - _globals['_UINT32LT']._serialized_start=3690 - _globals['_UINT32LT']._serialized_end=3727 - _globals['_UINT32LTE']._serialized_start=3729 - _globals['_UINT32LTE']._serialized_end=3767 - _globals['_UINT32GT']._serialized_start=3769 - _globals['_UINT32GT']._serialized_end=3806 - _globals['_UINT32GTE']._serialized_start=3808 - _globals['_UINT32GTE']._serialized_end=3846 - _globals['_UINT32GTLT']._serialized_start=3848 - _globals['_UINT32GTLT']._serialized_end=3889 - _globals['_UINT32EXLTGT']._serialized_start=3891 - _globals['_UINT32EXLTGT']._serialized_end=3934 - _globals['_UINT32GTELTE']._serialized_start=3936 - _globals['_UINT32GTELTE']._serialized_end=3981 - _globals['_UINT32EXGTELTE']._serialized_start=3983 - _globals['_UINT32EXGTELTE']._serialized_end=4030 - _globals['_UINT32IGNORE']._serialized_start=4032 - _globals['_UINT32IGNORE']._serialized_end=4080 - _globals['_UINT32INCORRECTTYPE']._serialized_start=4082 - _globals['_UINT32INCORRECTTYPE']._serialized_end=4133 - _globals['_UINT32EXAMPLE']._serialized_start=4135 - _globals['_UINT32EXAMPLE']._serialized_end=4177 - _globals['_UINT64NONE']._serialized_start=4179 - _globals['_UINT64NONE']._serialized_end=4209 - _globals['_UINT64CONST']._serialized_start=4211 - _globals['_UINT64CONST']._serialized_end=4251 - _globals['_UINT64IN']._serialized_start=4253 - _globals['_UINT64IN']._serialized_end=4292 - _globals['_UINT64NOTIN']._serialized_start=4294 - _globals['_UINT64NOTIN']._serialized_end=4334 - _globals['_UINT64LT']._serialized_start=4336 - _globals['_UINT64LT']._serialized_end=4373 - _globals['_UINT64LTE']._serialized_start=4375 - _globals['_UINT64LTE']._serialized_end=4413 - _globals['_UINT64GT']._serialized_start=4415 - _globals['_UINT64GT']._serialized_end=4452 - _globals['_UINT64GTE']._serialized_start=4454 - _globals['_UINT64GTE']._serialized_end=4492 - _globals['_UINT64GTLT']._serialized_start=4494 - _globals['_UINT64GTLT']._serialized_end=4535 - _globals['_UINT64EXLTGT']._serialized_start=4537 - _globals['_UINT64EXLTGT']._serialized_end=4580 - _globals['_UINT64GTELTE']._serialized_start=4582 - _globals['_UINT64GTELTE']._serialized_end=4627 - _globals['_UINT64EXGTELTE']._serialized_start=4629 - _globals['_UINT64EXGTELTE']._serialized_end=4676 - _globals['_UINT64IGNORE']._serialized_start=4678 - _globals['_UINT64IGNORE']._serialized_end=4726 - _globals['_UINT64INCORRECTTYPE']._serialized_start=4728 - _globals['_UINT64INCORRECTTYPE']._serialized_end=4779 - _globals['_UINT64EXAMPLE']._serialized_start=4781 - _globals['_UINT64EXAMPLE']._serialized_end=4823 - _globals['_SINT32NONE']._serialized_start=4825 - _globals['_SINT32NONE']._serialized_end=4855 - _globals['_SINT32CONST']._serialized_start=4857 - _globals['_SINT32CONST']._serialized_end=4897 - _globals['_SINT32IN']._serialized_start=4899 - _globals['_SINT32IN']._serialized_end=4938 - _globals['_SINT32NOTIN']._serialized_start=4940 - _globals['_SINT32NOTIN']._serialized_end=4980 - _globals['_SINT32LT']._serialized_start=4982 - _globals['_SINT32LT']._serialized_end=5019 - _globals['_SINT32LTE']._serialized_start=5021 - _globals['_SINT32LTE']._serialized_end=5060 - _globals['_SINT32GT']._serialized_start=5062 - _globals['_SINT32GT']._serialized_end=5099 - _globals['_SINT32GTE']._serialized_start=5101 - _globals['_SINT32GTE']._serialized_end=5139 - _globals['_SINT32GTLT']._serialized_start=5141 - _globals['_SINT32GTLT']._serialized_end=5182 - _globals['_SINT32EXLTGT']._serialized_start=5184 - _globals['_SINT32EXLTGT']._serialized_end=5227 - _globals['_SINT32GTELTE']._serialized_start=5229 - _globals['_SINT32GTELTE']._serialized_end=5274 - _globals['_SINT32EXGTELTE']._serialized_start=5276 - _globals['_SINT32EXGTELTE']._serialized_end=5323 - _globals['_SINT32IGNORE']._serialized_start=5325 - _globals['_SINT32IGNORE']._serialized_end=5373 - _globals['_SINT32INCORRECTTYPE']._serialized_start=5375 - _globals['_SINT32INCORRECTTYPE']._serialized_end=5426 - _globals['_SINT32EXAMPLE']._serialized_start=5428 - _globals['_SINT32EXAMPLE']._serialized_end=5470 - _globals['_SINT64NONE']._serialized_start=5472 - _globals['_SINT64NONE']._serialized_end=5502 - _globals['_SINT64CONST']._serialized_start=5504 - _globals['_SINT64CONST']._serialized_end=5544 - _globals['_SINT64IN']._serialized_start=5546 - _globals['_SINT64IN']._serialized_end=5585 - _globals['_SINT64NOTIN']._serialized_start=5587 - _globals['_SINT64NOTIN']._serialized_end=5627 - _globals['_SINT64LT']._serialized_start=5629 - _globals['_SINT64LT']._serialized_end=5666 - _globals['_SINT64LTE']._serialized_start=5668 - _globals['_SINT64LTE']._serialized_end=5707 - _globals['_SINT64GT']._serialized_start=5709 - _globals['_SINT64GT']._serialized_end=5746 - _globals['_SINT64GTE']._serialized_start=5748 - _globals['_SINT64GTE']._serialized_end=5786 - _globals['_SINT64GTLT']._serialized_start=5788 - _globals['_SINT64GTLT']._serialized_end=5829 - _globals['_SINT64EXLTGT']._serialized_start=5831 - _globals['_SINT64EXLTGT']._serialized_end=5874 - _globals['_SINT64GTELTE']._serialized_start=5876 - _globals['_SINT64GTELTE']._serialized_end=5921 - _globals['_SINT64EXGTELTE']._serialized_start=5923 - _globals['_SINT64EXGTELTE']._serialized_end=5970 - _globals['_SINT64IGNORE']._serialized_start=5972 - _globals['_SINT64IGNORE']._serialized_end=6020 - _globals['_SINT64INCORRECTTYPE']._serialized_start=6022 - _globals['_SINT64INCORRECTTYPE']._serialized_end=6073 - _globals['_SINT64EXAMPLE']._serialized_start=6075 - _globals['_SINT64EXAMPLE']._serialized_end=6117 - _globals['_FIXED32NONE']._serialized_start=6119 - _globals['_FIXED32NONE']._serialized_end=6150 - _globals['_FIXED32CONST']._serialized_start=6152 - _globals['_FIXED32CONST']._serialized_end=6196 - _globals['_FIXED32IN']._serialized_start=6198 - _globals['_FIXED32IN']._serialized_end=6244 - _globals['_FIXED32NOTIN']._serialized_start=6246 - _globals['_FIXED32NOTIN']._serialized_end=6290 - _globals['_FIXED32LT']._serialized_start=6292 - _globals['_FIXED32LT']._serialized_end=6333 - _globals['_FIXED32LTE']._serialized_start=6335 - _globals['_FIXED32LTE']._serialized_end=6377 - _globals['_FIXED32GT']._serialized_start=6379 - _globals['_FIXED32GT']._serialized_end=6420 - _globals['_FIXED32GTE']._serialized_start=6422 - _globals['_FIXED32GTE']._serialized_end=6464 - _globals['_FIXED32GTLT']._serialized_start=6466 - _globals['_FIXED32GTLT']._serialized_end=6514 - _globals['_FIXED32EXLTGT']._serialized_start=6516 - _globals['_FIXED32EXLTGT']._serialized_end=6566 - _globals['_FIXED32GTELTE']._serialized_start=6568 - _globals['_FIXED32GTELTE']._serialized_end=6618 - _globals['_FIXED32EXGTELTE']._serialized_start=6620 - _globals['_FIXED32EXGTELTE']._serialized_end=6672 - _globals['_FIXED32IGNORE']._serialized_start=6674 - _globals['_FIXED32IGNORE']._serialized_end=6727 - _globals['_FIXED32INCORRECTTYPE']._serialized_start=6729 - _globals['_FIXED32INCORRECTTYPE']._serialized_end=6781 - _globals['_FIXED32EXAMPLE']._serialized_start=6783 - _globals['_FIXED32EXAMPLE']._serialized_end=6829 - _globals['_FIXED64NONE']._serialized_start=6831 - _globals['_FIXED64NONE']._serialized_end=6862 - _globals['_FIXED64CONST']._serialized_start=6864 - _globals['_FIXED64CONST']._serialized_end=6912 - _globals['_FIXED64IN']._serialized_start=6914 - _globals['_FIXED64IN']._serialized_end=6968 - _globals['_FIXED64NOTIN']._serialized_start=6970 - _globals['_FIXED64NOTIN']._serialized_end=7018 - _globals['_FIXED64LT']._serialized_start=7020 - _globals['_FIXED64LT']._serialized_end=7065 - _globals['_FIXED64LTE']._serialized_start=7067 - _globals['_FIXED64LTE']._serialized_end=7113 - _globals['_FIXED64GT']._serialized_start=7115 - _globals['_FIXED64GT']._serialized_end=7160 - _globals['_FIXED64GTE']._serialized_start=7162 - _globals['_FIXED64GTE']._serialized_end=7208 - _globals['_FIXED64GTLT']._serialized_start=7210 - _globals['_FIXED64GTLT']._serialized_end=7266 - _globals['_FIXED64EXLTGT']._serialized_start=7268 - _globals['_FIXED64EXLTGT']._serialized_end=7326 - _globals['_FIXED64GTELTE']._serialized_start=7328 - _globals['_FIXED64GTELTE']._serialized_end=7386 - _globals['_FIXED64EXGTELTE']._serialized_start=7388 - _globals['_FIXED64EXGTELTE']._serialized_end=7448 - _globals['_FIXED64IGNORE']._serialized_start=7450 - _globals['_FIXED64IGNORE']._serialized_end=7511 - _globals['_FIXED64INCORRECTTYPE']._serialized_start=7513 - _globals['_FIXED64INCORRECTTYPE']._serialized_end=7565 - _globals['_FIXED64EXAMPLE']._serialized_start=7567 - _globals['_FIXED64EXAMPLE']._serialized_end=7617 - _globals['_SFIXED32NONE']._serialized_start=7619 - _globals['_SFIXED32NONE']._serialized_end=7651 - _globals['_SFIXED32CONST']._serialized_start=7653 - _globals['_SFIXED32CONST']._serialized_end=7698 - _globals['_SFIXED32IN']._serialized_start=7700 - _globals['_SFIXED32IN']._serialized_end=7747 - _globals['_SFIXED32NOTIN']._serialized_start=7749 - _globals['_SFIXED32NOTIN']._serialized_end=7794 - _globals['_SFIXED32LT']._serialized_start=7796 - _globals['_SFIXED32LT']._serialized_end=7838 - _globals['_SFIXED32LTE']._serialized_start=7840 - _globals['_SFIXED32LTE']._serialized_end=7883 - _globals['_SFIXED32GT']._serialized_start=7885 - _globals['_SFIXED32GT']._serialized_end=7927 - _globals['_SFIXED32GTE']._serialized_start=7929 - _globals['_SFIXED32GTE']._serialized_end=7972 - _globals['_SFIXED32GTLT']._serialized_start=7974 - _globals['_SFIXED32GTLT']._serialized_end=8023 - _globals['_SFIXED32EXLTGT']._serialized_start=8025 - _globals['_SFIXED32EXLTGT']._serialized_end=8076 - _globals['_SFIXED32GTELTE']._serialized_start=8078 - _globals['_SFIXED32GTELTE']._serialized_end=8129 - _globals['_SFIXED32EXGTELTE']._serialized_start=8131 - _globals['_SFIXED32EXGTELTE']._serialized_end=8184 - _globals['_SFIXED32IGNORE']._serialized_start=8186 - _globals['_SFIXED32IGNORE']._serialized_end=8240 - _globals['_SFIXED32INCORRECTTYPE']._serialized_start=8242 - _globals['_SFIXED32INCORRECTTYPE']._serialized_end=8295 - _globals['_SFIXED32EXAMPLE']._serialized_start=8297 - _globals['_SFIXED32EXAMPLE']._serialized_end=8344 - _globals['_SFIXED64NONE']._serialized_start=8346 - _globals['_SFIXED64NONE']._serialized_end=8378 - _globals['_SFIXED64CONST']._serialized_start=8380 - _globals['_SFIXED64CONST']._serialized_end=8429 - _globals['_SFIXED64IN']._serialized_start=8431 - _globals['_SFIXED64IN']._serialized_end=8486 - _globals['_SFIXED64NOTIN']._serialized_start=8488 - _globals['_SFIXED64NOTIN']._serialized_end=8537 - _globals['_SFIXED64LT']._serialized_start=8539 - _globals['_SFIXED64LT']._serialized_end=8585 - _globals['_SFIXED64LTE']._serialized_start=8587 - _globals['_SFIXED64LTE']._serialized_end=8634 - _globals['_SFIXED64GT']._serialized_start=8636 - _globals['_SFIXED64GT']._serialized_end=8682 - _globals['_SFIXED64GTE']._serialized_start=8684 - _globals['_SFIXED64GTE']._serialized_end=8731 - _globals['_SFIXED64GTLT']._serialized_start=8733 - _globals['_SFIXED64GTLT']._serialized_end=8790 - _globals['_SFIXED64EXLTGT']._serialized_start=8792 - _globals['_SFIXED64EXLTGT']._serialized_end=8851 - _globals['_SFIXED64GTELTE']._serialized_start=8853 - _globals['_SFIXED64GTELTE']._serialized_end=8912 - _globals['_SFIXED64EXGTELTE']._serialized_start=8914 - _globals['_SFIXED64EXGTELTE']._serialized_end=8975 - _globals['_SFIXED64IGNORE']._serialized_start=8977 - _globals['_SFIXED64IGNORE']._serialized_end=9039 - _globals['_SFIXED64INCORRECTTYPE']._serialized_start=9041 - _globals['_SFIXED64INCORRECTTYPE']._serialized_end=9094 - _globals['_SFIXED64EXAMPLE']._serialized_start=9096 - _globals['_SFIXED64EXAMPLE']._serialized_end=9147 - _globals['_INT64LTEOPTIONAL']._serialized_start=9149 - _globals['_INT64LTEOPTIONAL']._serialized_end=9207 + _globals['_INT64BIGRULES']._serialized_start=2912 + _globals['_INT64BIGRULES']._serialized_end=3430 + _globals['_INT64INCORRECTTYPE']._serialized_start=3432 + _globals['_INT64INCORRECTTYPE']._serialized_end=3482 + _globals['_INT64EXAMPLE']._serialized_start=3484 + _globals['_INT64EXAMPLE']._serialized_end=3525 + _globals['_UINT32NONE']._serialized_start=3527 + _globals['_UINT32NONE']._serialized_end=3557 + _globals['_UINT32CONST']._serialized_start=3559 + _globals['_UINT32CONST']._serialized_end=3599 + _globals['_UINT32IN']._serialized_start=3601 + _globals['_UINT32IN']._serialized_end=3640 + _globals['_UINT32NOTIN']._serialized_start=3642 + _globals['_UINT32NOTIN']._serialized_end=3682 + _globals['_UINT32LT']._serialized_start=3684 + _globals['_UINT32LT']._serialized_end=3721 + _globals['_UINT32LTE']._serialized_start=3723 + _globals['_UINT32LTE']._serialized_end=3761 + _globals['_UINT32GT']._serialized_start=3763 + _globals['_UINT32GT']._serialized_end=3800 + _globals['_UINT32GTE']._serialized_start=3802 + _globals['_UINT32GTE']._serialized_end=3840 + _globals['_UINT32GTLT']._serialized_start=3842 + _globals['_UINT32GTLT']._serialized_end=3883 + _globals['_UINT32EXLTGT']._serialized_start=3885 + _globals['_UINT32EXLTGT']._serialized_end=3928 + _globals['_UINT32GTELTE']._serialized_start=3930 + _globals['_UINT32GTELTE']._serialized_end=3975 + _globals['_UINT32EXGTELTE']._serialized_start=3977 + _globals['_UINT32EXGTELTE']._serialized_end=4024 + _globals['_UINT32IGNORE']._serialized_start=4026 + _globals['_UINT32IGNORE']._serialized_end=4074 + _globals['_UINT32INCORRECTTYPE']._serialized_start=4076 + _globals['_UINT32INCORRECTTYPE']._serialized_end=4127 + _globals['_UINT32EXAMPLE']._serialized_start=4129 + _globals['_UINT32EXAMPLE']._serialized_end=4171 + _globals['_UINT64NONE']._serialized_start=4173 + _globals['_UINT64NONE']._serialized_end=4203 + _globals['_UINT64CONST']._serialized_start=4205 + _globals['_UINT64CONST']._serialized_end=4245 + _globals['_UINT64IN']._serialized_start=4247 + _globals['_UINT64IN']._serialized_end=4286 + _globals['_UINT64NOTIN']._serialized_start=4288 + _globals['_UINT64NOTIN']._serialized_end=4328 + _globals['_UINT64LT']._serialized_start=4330 + _globals['_UINT64LT']._serialized_end=4367 + _globals['_UINT64LTE']._serialized_start=4369 + _globals['_UINT64LTE']._serialized_end=4407 + _globals['_UINT64GT']._serialized_start=4409 + _globals['_UINT64GT']._serialized_end=4446 + _globals['_UINT64GTE']._serialized_start=4448 + _globals['_UINT64GTE']._serialized_end=4486 + _globals['_UINT64GTLT']._serialized_start=4488 + _globals['_UINT64GTLT']._serialized_end=4529 + _globals['_UINT64EXLTGT']._serialized_start=4531 + _globals['_UINT64EXLTGT']._serialized_end=4574 + _globals['_UINT64GTELTE']._serialized_start=4576 + _globals['_UINT64GTELTE']._serialized_end=4621 + _globals['_UINT64EXGTELTE']._serialized_start=4623 + _globals['_UINT64EXGTELTE']._serialized_end=4670 + _globals['_UINT64IGNORE']._serialized_start=4672 + _globals['_UINT64IGNORE']._serialized_end=4720 + _globals['_UINT64INCORRECTTYPE']._serialized_start=4722 + _globals['_UINT64INCORRECTTYPE']._serialized_end=4773 + _globals['_UINT64EXAMPLE']._serialized_start=4775 + _globals['_UINT64EXAMPLE']._serialized_end=4817 + _globals['_SINT32NONE']._serialized_start=4819 + _globals['_SINT32NONE']._serialized_end=4849 + _globals['_SINT32CONST']._serialized_start=4851 + _globals['_SINT32CONST']._serialized_end=4891 + _globals['_SINT32IN']._serialized_start=4893 + _globals['_SINT32IN']._serialized_end=4932 + _globals['_SINT32NOTIN']._serialized_start=4934 + _globals['_SINT32NOTIN']._serialized_end=4974 + _globals['_SINT32LT']._serialized_start=4976 + _globals['_SINT32LT']._serialized_end=5013 + _globals['_SINT32LTE']._serialized_start=5015 + _globals['_SINT32LTE']._serialized_end=5054 + _globals['_SINT32GT']._serialized_start=5056 + _globals['_SINT32GT']._serialized_end=5093 + _globals['_SINT32GTE']._serialized_start=5095 + _globals['_SINT32GTE']._serialized_end=5133 + _globals['_SINT32GTLT']._serialized_start=5135 + _globals['_SINT32GTLT']._serialized_end=5176 + _globals['_SINT32EXLTGT']._serialized_start=5178 + _globals['_SINT32EXLTGT']._serialized_end=5221 + _globals['_SINT32GTELTE']._serialized_start=5223 + _globals['_SINT32GTELTE']._serialized_end=5268 + _globals['_SINT32EXGTELTE']._serialized_start=5270 + _globals['_SINT32EXGTELTE']._serialized_end=5317 + _globals['_SINT32IGNORE']._serialized_start=5319 + _globals['_SINT32IGNORE']._serialized_end=5367 + _globals['_SINT32INCORRECTTYPE']._serialized_start=5369 + _globals['_SINT32INCORRECTTYPE']._serialized_end=5420 + _globals['_SINT32EXAMPLE']._serialized_start=5422 + _globals['_SINT32EXAMPLE']._serialized_end=5464 + _globals['_SINT64NONE']._serialized_start=5466 + _globals['_SINT64NONE']._serialized_end=5496 + _globals['_SINT64CONST']._serialized_start=5498 + _globals['_SINT64CONST']._serialized_end=5538 + _globals['_SINT64IN']._serialized_start=5540 + _globals['_SINT64IN']._serialized_end=5579 + _globals['_SINT64NOTIN']._serialized_start=5581 + _globals['_SINT64NOTIN']._serialized_end=5621 + _globals['_SINT64LT']._serialized_start=5623 + _globals['_SINT64LT']._serialized_end=5660 + _globals['_SINT64LTE']._serialized_start=5662 + _globals['_SINT64LTE']._serialized_end=5701 + _globals['_SINT64GT']._serialized_start=5703 + _globals['_SINT64GT']._serialized_end=5740 + _globals['_SINT64GTE']._serialized_start=5742 + _globals['_SINT64GTE']._serialized_end=5780 + _globals['_SINT64GTLT']._serialized_start=5782 + _globals['_SINT64GTLT']._serialized_end=5823 + _globals['_SINT64EXLTGT']._serialized_start=5825 + _globals['_SINT64EXLTGT']._serialized_end=5868 + _globals['_SINT64GTELTE']._serialized_start=5870 + _globals['_SINT64GTELTE']._serialized_end=5915 + _globals['_SINT64EXGTELTE']._serialized_start=5917 + _globals['_SINT64EXGTELTE']._serialized_end=5964 + _globals['_SINT64IGNORE']._serialized_start=5966 + _globals['_SINT64IGNORE']._serialized_end=6014 + _globals['_SINT64INCORRECTTYPE']._serialized_start=6016 + _globals['_SINT64INCORRECTTYPE']._serialized_end=6067 + _globals['_SINT64EXAMPLE']._serialized_start=6069 + _globals['_SINT64EXAMPLE']._serialized_end=6111 + _globals['_FIXED32NONE']._serialized_start=6113 + _globals['_FIXED32NONE']._serialized_end=6144 + _globals['_FIXED32CONST']._serialized_start=6146 + _globals['_FIXED32CONST']._serialized_end=6190 + _globals['_FIXED32IN']._serialized_start=6192 + _globals['_FIXED32IN']._serialized_end=6238 + _globals['_FIXED32NOTIN']._serialized_start=6240 + _globals['_FIXED32NOTIN']._serialized_end=6284 + _globals['_FIXED32LT']._serialized_start=6286 + _globals['_FIXED32LT']._serialized_end=6327 + _globals['_FIXED32LTE']._serialized_start=6329 + _globals['_FIXED32LTE']._serialized_end=6371 + _globals['_FIXED32GT']._serialized_start=6373 + _globals['_FIXED32GT']._serialized_end=6414 + _globals['_FIXED32GTE']._serialized_start=6416 + _globals['_FIXED32GTE']._serialized_end=6458 + _globals['_FIXED32GTLT']._serialized_start=6460 + _globals['_FIXED32GTLT']._serialized_end=6508 + _globals['_FIXED32EXLTGT']._serialized_start=6510 + _globals['_FIXED32EXLTGT']._serialized_end=6560 + _globals['_FIXED32GTELTE']._serialized_start=6562 + _globals['_FIXED32GTELTE']._serialized_end=6612 + _globals['_FIXED32EXGTELTE']._serialized_start=6614 + _globals['_FIXED32EXGTELTE']._serialized_end=6666 + _globals['_FIXED32IGNORE']._serialized_start=6668 + _globals['_FIXED32IGNORE']._serialized_end=6721 + _globals['_FIXED32INCORRECTTYPE']._serialized_start=6723 + _globals['_FIXED32INCORRECTTYPE']._serialized_end=6775 + _globals['_FIXED32EXAMPLE']._serialized_start=6777 + _globals['_FIXED32EXAMPLE']._serialized_end=6823 + _globals['_FIXED64NONE']._serialized_start=6825 + _globals['_FIXED64NONE']._serialized_end=6856 + _globals['_FIXED64CONST']._serialized_start=6858 + _globals['_FIXED64CONST']._serialized_end=6906 + _globals['_FIXED64IN']._serialized_start=6908 + _globals['_FIXED64IN']._serialized_end=6962 + _globals['_FIXED64NOTIN']._serialized_start=6964 + _globals['_FIXED64NOTIN']._serialized_end=7012 + _globals['_FIXED64LT']._serialized_start=7014 + _globals['_FIXED64LT']._serialized_end=7059 + _globals['_FIXED64LTE']._serialized_start=7061 + _globals['_FIXED64LTE']._serialized_end=7107 + _globals['_FIXED64GT']._serialized_start=7109 + _globals['_FIXED64GT']._serialized_end=7154 + _globals['_FIXED64GTE']._serialized_start=7156 + _globals['_FIXED64GTE']._serialized_end=7202 + _globals['_FIXED64GTLT']._serialized_start=7204 + _globals['_FIXED64GTLT']._serialized_end=7260 + _globals['_FIXED64EXLTGT']._serialized_start=7262 + _globals['_FIXED64EXLTGT']._serialized_end=7320 + _globals['_FIXED64GTELTE']._serialized_start=7322 + _globals['_FIXED64GTELTE']._serialized_end=7380 + _globals['_FIXED64EXGTELTE']._serialized_start=7382 + _globals['_FIXED64EXGTELTE']._serialized_end=7442 + _globals['_FIXED64IGNORE']._serialized_start=7444 + _globals['_FIXED64IGNORE']._serialized_end=7505 + _globals['_FIXED64INCORRECTTYPE']._serialized_start=7507 + _globals['_FIXED64INCORRECTTYPE']._serialized_end=7559 + _globals['_FIXED64EXAMPLE']._serialized_start=7561 + _globals['_FIXED64EXAMPLE']._serialized_end=7611 + _globals['_SFIXED32NONE']._serialized_start=7613 + _globals['_SFIXED32NONE']._serialized_end=7645 + _globals['_SFIXED32CONST']._serialized_start=7647 + _globals['_SFIXED32CONST']._serialized_end=7692 + _globals['_SFIXED32IN']._serialized_start=7694 + _globals['_SFIXED32IN']._serialized_end=7741 + _globals['_SFIXED32NOTIN']._serialized_start=7743 + _globals['_SFIXED32NOTIN']._serialized_end=7788 + _globals['_SFIXED32LT']._serialized_start=7790 + _globals['_SFIXED32LT']._serialized_end=7832 + _globals['_SFIXED32LTE']._serialized_start=7834 + _globals['_SFIXED32LTE']._serialized_end=7877 + _globals['_SFIXED32GT']._serialized_start=7879 + _globals['_SFIXED32GT']._serialized_end=7921 + _globals['_SFIXED32GTE']._serialized_start=7923 + _globals['_SFIXED32GTE']._serialized_end=7966 + _globals['_SFIXED32GTLT']._serialized_start=7968 + _globals['_SFIXED32GTLT']._serialized_end=8017 + _globals['_SFIXED32EXLTGT']._serialized_start=8019 + _globals['_SFIXED32EXLTGT']._serialized_end=8070 + _globals['_SFIXED32GTELTE']._serialized_start=8072 + _globals['_SFIXED32GTELTE']._serialized_end=8123 + _globals['_SFIXED32EXGTELTE']._serialized_start=8125 + _globals['_SFIXED32EXGTELTE']._serialized_end=8178 + _globals['_SFIXED32IGNORE']._serialized_start=8180 + _globals['_SFIXED32IGNORE']._serialized_end=8234 + _globals['_SFIXED32INCORRECTTYPE']._serialized_start=8236 + _globals['_SFIXED32INCORRECTTYPE']._serialized_end=8289 + _globals['_SFIXED32EXAMPLE']._serialized_start=8291 + _globals['_SFIXED32EXAMPLE']._serialized_end=8338 + _globals['_SFIXED64NONE']._serialized_start=8340 + _globals['_SFIXED64NONE']._serialized_end=8372 + _globals['_SFIXED64CONST']._serialized_start=8374 + _globals['_SFIXED64CONST']._serialized_end=8423 + _globals['_SFIXED64IN']._serialized_start=8425 + _globals['_SFIXED64IN']._serialized_end=8480 + _globals['_SFIXED64NOTIN']._serialized_start=8482 + _globals['_SFIXED64NOTIN']._serialized_end=8531 + _globals['_SFIXED64LT']._serialized_start=8533 + _globals['_SFIXED64LT']._serialized_end=8579 + _globals['_SFIXED64LTE']._serialized_start=8581 + _globals['_SFIXED64LTE']._serialized_end=8628 + _globals['_SFIXED64GT']._serialized_start=8630 + _globals['_SFIXED64GT']._serialized_end=8676 + _globals['_SFIXED64GTE']._serialized_start=8678 + _globals['_SFIXED64GTE']._serialized_end=8725 + _globals['_SFIXED64GTLT']._serialized_start=8727 + _globals['_SFIXED64GTLT']._serialized_end=8784 + _globals['_SFIXED64EXLTGT']._serialized_start=8786 + _globals['_SFIXED64EXLTGT']._serialized_end=8845 + _globals['_SFIXED64GTELTE']._serialized_start=8847 + _globals['_SFIXED64GTELTE']._serialized_end=8906 + _globals['_SFIXED64EXGTELTE']._serialized_start=8908 + _globals['_SFIXED64EXGTELTE']._serialized_end=8969 + _globals['_SFIXED64IGNORE']._serialized_start=8971 + _globals['_SFIXED64IGNORE']._serialized_end=9033 + _globals['_SFIXED64INCORRECTTYPE']._serialized_start=9035 + _globals['_SFIXED64INCORRECTTYPE']._serialized_end=9088 + _globals['_SFIXED64EXAMPLE']._serialized_start=9090 + _globals['_SFIXED64EXAMPLE']._serialized_end=9141 + _globals['_INT64LTEOPTIONAL']._serialized_start=9143 + _globals['_INT64LTEOPTIONAL']._serialized_end=9201 # @@protoc_insertion_point(module_scope) diff --git a/gen/buf/validate/conformance/cases/numbers_pb2.pyi b/gen/buf/validate/conformance/cases/numbers_pb2.pyi index e2a2cfa..acc5633 100644 --- a/gen/buf/validate/conformance/cases/numbers_pb2.pyi +++ b/gen/buf/validate/conformance/cases/numbers_pb2.pyi @@ -391,7 +391,7 @@ class Int64Ignore(_message.Message): val: int def __init__(self, val: _Optional[int] = ...) -> None: ... -class Int64BigConstraints(_message.Message): +class Int64BigRules(_message.Message): __slots__ = ("lt_pos", "lt_neg", "gt_pos", "gt_neg", "lte_pos", "lte_neg", "gte_pos", "gte_neg", "constant_pos", "constant_neg", "notin") LT_POS_FIELD_NUMBER: _ClassVar[int] LT_NEG_FIELD_NUMBER: _ClassVar[int] diff --git a/gen/buf/validate/validate_pb2.py b/gen/buf/validate/validate_pb2.py index d3397b6..59a2beb 100644 --- a/gen/buf/validate/validate_pb2.py +++ b/gen/buf/validate/validate_pb2.py @@ -41,7 +41,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x62uf/validate/validate.proto\x12\x0c\x62uf.validate\x1a google/protobuf/descriptor.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"V\n\nConstraint\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12\x1e\n\nexpression\x18\x03 \x01(\tR\nexpression\"\\\n\x12MessageConstraints\x12\x1a\n\x08\x64isabled\x18\x01 \x01(\x08R\x08\x64isabled\x12*\n\x03\x63\x65l\x18\x03 \x03(\x0b\x32\x18.buf.validate.ConstraintR\x03\x63\x65l\".\n\x10OneofConstraints\x12\x1a\n\x08required\x18\x01 \x01(\x08R\x08required\"\x89\n\n\x10\x46ieldConstraints\x12*\n\x03\x63\x65l\x18\x17 \x03(\x0b\x32\x18.buf.validate.ConstraintR\x03\x63\x65l\x12\x1a\n\x08required\x18\x19 \x01(\x08R\x08required\x12,\n\x06ignore\x18\x1b \x01(\x0e\x32\x14.buf.validate.IgnoreR\x06ignore\x12\x30\n\x05\x66loat\x18\x01 \x01(\x0b\x32\x18.buf.validate.FloatRulesH\x00R\x05\x66loat\x12\x33\n\x06\x64ouble\x18\x02 \x01(\x0b\x32\x19.buf.validate.DoubleRulesH\x00R\x06\x64ouble\x12\x30\n\x05int32\x18\x03 \x01(\x0b\x32\x18.buf.validate.Int32RulesH\x00R\x05int32\x12\x30\n\x05int64\x18\x04 \x01(\x0b\x32\x18.buf.validate.Int64RulesH\x00R\x05int64\x12\x33\n\x06uint32\x18\x05 \x01(\x0b\x32\x19.buf.validate.UInt32RulesH\x00R\x06uint32\x12\x33\n\x06uint64\x18\x06 \x01(\x0b\x32\x19.buf.validate.UInt64RulesH\x00R\x06uint64\x12\x33\n\x06sint32\x18\x07 \x01(\x0b\x32\x19.buf.validate.SInt32RulesH\x00R\x06sint32\x12\x33\n\x06sint64\x18\x08 \x01(\x0b\x32\x19.buf.validate.SInt64RulesH\x00R\x06sint64\x12\x36\n\x07\x66ixed32\x18\t \x01(\x0b\x32\x1a.buf.validate.Fixed32RulesH\x00R\x07\x66ixed32\x12\x36\n\x07\x66ixed64\x18\n \x01(\x0b\x32\x1a.buf.validate.Fixed64RulesH\x00R\x07\x66ixed64\x12\x39\n\x08sfixed32\x18\x0b \x01(\x0b\x32\x1b.buf.validate.SFixed32RulesH\x00R\x08sfixed32\x12\x39\n\x08sfixed64\x18\x0c \x01(\x0b\x32\x1b.buf.validate.SFixed64RulesH\x00R\x08sfixed64\x12-\n\x04\x62ool\x18\r \x01(\x0b\x32\x17.buf.validate.BoolRulesH\x00R\x04\x62ool\x12\x33\n\x06string\x18\x0e \x01(\x0b\x32\x19.buf.validate.StringRulesH\x00R\x06string\x12\x30\n\x05\x62ytes\x18\x0f \x01(\x0b\x32\x18.buf.validate.BytesRulesH\x00R\x05\x62ytes\x12-\n\x04\x65num\x18\x10 \x01(\x0b\x32\x17.buf.validate.EnumRulesH\x00R\x04\x65num\x12\x39\n\x08repeated\x18\x12 \x01(\x0b\x32\x1b.buf.validate.RepeatedRulesH\x00R\x08repeated\x12*\n\x03map\x18\x13 \x01(\x0b\x32\x16.buf.validate.MapRulesH\x00R\x03map\x12*\n\x03\x61ny\x18\x14 \x01(\x0b\x32\x16.buf.validate.AnyRulesH\x00R\x03\x61ny\x12\x39\n\x08\x64uration\x18\x15 \x01(\x0b\x32\x1b.buf.validate.DurationRulesH\x00R\x08\x64uration\x12<\n\ttimestamp\x18\x16 \x01(\x0b\x32\x1c.buf.validate.TimestampRulesH\x00R\ttimestampB\x06\n\x04typeJ\x04\x08\x18\x10\x19J\x04\x08\x1a\x10\x1bR\x07skippedR\x0cignore_empty\"d\n\x15PredefinedConstraints\x12*\n\x03\x63\x65l\x18\x01 \x03(\x0b\x32\x18.buf.validate.ConstraintR\x03\x63\x65lJ\x04\x08\x18\x10\x19J\x04\x08\x1a\x10\x1bR\x13skippedignore_empty\"\xea\x17\n\nFloatRules\x12p\n\x05\x63onst\x18\x01 \x01(\x02\x42Z\xc2HW\nU\n\x0b\x66loat.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\xa3\x01\n\x02lt\x18\x02 \x01(\x02\x42\x90\x01\xc2H\x8c\x01\n\x89\x01\n\x08\x66loat.lt\x1a}!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xb4\x01\n\x03lte\x18\x03 \x01(\x02\x42\x9f\x01\xc2H\x9b\x01\n\x98\x01\n\tfloat.lte\x1a\x8a\x01!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xf3\x07\n\x02gt\x18\x04 \x01(\x02\x42\xe0\x07\xc2H\xdc\x07\n\x8d\x01\n\x08\x66loat.gt\x1a\x80\x01!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xc3\x01\n\x0b\x66loat.gt_lt\x1a\xb3\x01has(rules.lt) && rules.lt >= rules.gt && (this.isNan() || this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xcd\x01\n\x15\x66loat.gt_lt_exclusive\x1a\xb3\x01has(rules.lt) && rules.lt < rules.gt && (this.isNan() || (rules.lt <= this && this <= rules.gt))? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xd3\x01\n\x0c\x66loat.gt_lte\x1a\xc2\x01has(rules.lte) && rules.lte >= rules.gt && (this.isNan() || this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xdd\x01\n\x16\x66loat.gt_lte_exclusive\x1a\xc2\x01has(rules.lte) && rules.lte < rules.gt && (this.isNan() || (rules.lte < this && this <= rules.gt))? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xbf\x08\n\x03gte\x18\x05 \x01(\x02\x42\xaa\x08\xc2H\xa6\x08\n\x9b\x01\n\tfloat.gte\x1a\x8d\x01!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xd2\x01\n\x0c\x66loat.gte_lt\x1a\xc1\x01has(rules.lt) && rules.lt >= rules.gte && (this.isNan() || this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xdc\x01\n\x16\x66loat.gte_lt_exclusive\x1a\xc1\x01has(rules.lt) && rules.lt < rules.gte && (this.isNan() || (rules.lt <= this && this < rules.gte))? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xe2\x01\n\rfloat.gte_lte\x1a\xd0\x01has(rules.lte) && rules.lte >= rules.gte && (this.isNan() || this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xec\x01\n\x17\x66loat.gte_lte_exclusive\x1a\xd0\x01has(rules.lte) && rules.lte < rules.gte && (this.isNan() || (rules.lte < this && this < rules.gte))? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12y\n\x02in\x18\x06 \x03(\x02\x42i\xc2Hf\nd\n\x08\x66loat.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12}\n\x06not_in\x18\x07 \x03(\x02\x42\x66\xc2Hc\na\n\x0c\x66loat.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12}\n\x06\x66inite\x18\x08 \x01(\x08\x42\x65\xc2Hb\n`\n\x0c\x66loat.finite\x1aPrules.finite ? (this.isNan() || this.isInf() ? \'value must be finite\' : \'\') : \'\'R\x06\x66inite\x12\x34\n\x07\x65xample\x18\t \x03(\x02\x42\x1a\xc2H\x17\n\x15\n\rfloat.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xfc\x17\n\x0b\x44oubleRules\x12q\n\x05\x63onst\x18\x01 \x01(\x01\x42[\xc2HX\nV\n\x0c\x64ouble.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\xa4\x01\n\x02lt\x18\x02 \x01(\x01\x42\x91\x01\xc2H\x8d\x01\n\x8a\x01\n\tdouble.lt\x1a}!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xb5\x01\n\x03lte\x18\x03 \x01(\x01\x42\xa0\x01\xc2H\x9c\x01\n\x99\x01\n\ndouble.lte\x1a\x8a\x01!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xf8\x07\n\x02gt\x18\x04 \x01(\x01\x42\xe5\x07\xc2H\xe1\x07\n\x8e\x01\n\tdouble.gt\x1a\x80\x01!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xc4\x01\n\x0c\x64ouble.gt_lt\x1a\xb3\x01has(rules.lt) && rules.lt >= rules.gt && (this.isNan() || this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xce\x01\n\x16\x64ouble.gt_lt_exclusive\x1a\xb3\x01has(rules.lt) && rules.lt < rules.gt && (this.isNan() || (rules.lt <= this && this <= rules.gt))? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xd4\x01\n\rdouble.gt_lte\x1a\xc2\x01has(rules.lte) && rules.lte >= rules.gt && (this.isNan() || this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xde\x01\n\x17\x64ouble.gt_lte_exclusive\x1a\xc2\x01has(rules.lte) && rules.lte < rules.gt && (this.isNan() || (rules.lte < this && this <= rules.gt))? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xc4\x08\n\x03gte\x18\x05 \x01(\x01\x42\xaf\x08\xc2H\xab\x08\n\x9c\x01\n\ndouble.gte\x1a\x8d\x01!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xd3\x01\n\rdouble.gte_lt\x1a\xc1\x01has(rules.lt) && rules.lt >= rules.gte && (this.isNan() || this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xdd\x01\n\x17\x64ouble.gte_lt_exclusive\x1a\xc1\x01has(rules.lt) && rules.lt < rules.gte && (this.isNan() || (rules.lt <= this && this < rules.gte))? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xe3\x01\n\x0e\x64ouble.gte_lte\x1a\xd0\x01has(rules.lte) && rules.lte >= rules.gte && (this.isNan() || this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xed\x01\n\x18\x64ouble.gte_lte_exclusive\x1a\xd0\x01has(rules.lte) && rules.lte < rules.gte && (this.isNan() || (rules.lte < this && this < rules.gte))? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12z\n\x02in\x18\x06 \x03(\x01\x42j\xc2Hg\ne\n\tdouble.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12~\n\x06not_in\x18\x07 \x03(\x01\x42g\xc2Hd\nb\n\rdouble.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12~\n\x06\x66inite\x18\x08 \x01(\x08\x42\x66\xc2Hc\na\n\rdouble.finite\x1aPrules.finite ? (this.isNan() || this.isInf() ? \'value must be finite\' : \'\') : \'\'R\x06\x66inite\x12\x35\n\x07\x65xample\x18\t \x03(\x01\x42\x1b\xc2H\x18\n\x16\n\x0e\x64ouble.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\x94\x15\n\nInt32Rules\x12p\n\x05\x63onst\x18\x01 \x01(\x05\x42Z\xc2HW\nU\n\x0bint32.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\x8e\x01\n\x02lt\x18\x02 \x01(\x05\x42|\xc2Hy\nw\n\x08int32.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa1\x01\n\x03lte\x18\x03 \x01(\x05\x42\x8c\x01\xc2H\x88\x01\n\x85\x01\n\tint32.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\x9b\x07\n\x02gt\x18\x04 \x01(\x05\x42\x88\x07\xc2H\x84\x07\nz\n\x08int32.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb3\x01\n\x0bint32.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbb\x01\n\x15int32.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc3\x01\n\x0cint32.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcb\x01\n\x16int32.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xe8\x07\n\x03gte\x18\x05 \x01(\x05\x42\xd3\x07\xc2H\xcf\x07\n\x88\x01\n\tint32.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc2\x01\n\x0cint32.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xca\x01\n\x16int32.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd2\x01\n\rint32.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xda\x01\n\x17int32.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12y\n\x02in\x18\x06 \x03(\x05\x42i\xc2Hf\nd\n\x08int32.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12}\n\x06not_in\x18\x07 \x03(\x05\x42\x66\xc2Hc\na\n\x0cint32.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x34\n\x07\x65xample\x18\x08 \x03(\x05\x42\x1a\xc2H\x17\n\x15\n\rint32.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\x94\x15\n\nInt64Rules\x12p\n\x05\x63onst\x18\x01 \x01(\x03\x42Z\xc2HW\nU\n\x0bint64.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\x8e\x01\n\x02lt\x18\x02 \x01(\x03\x42|\xc2Hy\nw\n\x08int64.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa1\x01\n\x03lte\x18\x03 \x01(\x03\x42\x8c\x01\xc2H\x88\x01\n\x85\x01\n\tint64.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\x9b\x07\n\x02gt\x18\x04 \x01(\x03\x42\x88\x07\xc2H\x84\x07\nz\n\x08int64.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb3\x01\n\x0bint64.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbb\x01\n\x15int64.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc3\x01\n\x0cint64.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcb\x01\n\x16int64.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xe8\x07\n\x03gte\x18\x05 \x01(\x03\x42\xd3\x07\xc2H\xcf\x07\n\x88\x01\n\tint64.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc2\x01\n\x0cint64.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xca\x01\n\x16int64.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd2\x01\n\rint64.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xda\x01\n\x17int64.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12y\n\x02in\x18\x06 \x03(\x03\x42i\xc2Hf\nd\n\x08int64.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12}\n\x06not_in\x18\x07 \x03(\x03\x42\x66\xc2Hc\na\n\x0cint64.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x34\n\x07\x65xample\x18\t \x03(\x03\x42\x1a\xc2H\x17\n\x15\n\rint64.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xa5\x15\n\x0bUInt32Rules\x12q\n\x05\x63onst\x18\x01 \x01(\rB[\xc2HX\nV\n\x0cuint32.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\x8f\x01\n\x02lt\x18\x02 \x01(\rB}\xc2Hz\nx\n\tuint32.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa2\x01\n\x03lte\x18\x03 \x01(\rB\x8d\x01\xc2H\x89\x01\n\x86\x01\n\nuint32.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xa0\x07\n\x02gt\x18\x04 \x01(\rB\x8d\x07\xc2H\x89\x07\n{\n\tuint32.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb4\x01\n\x0cuint32.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbc\x01\n\x16uint32.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc4\x01\n\ruint32.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcc\x01\n\x17uint32.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xed\x07\n\x03gte\x18\x05 \x01(\rB\xd8\x07\xc2H\xd4\x07\n\x89\x01\n\nuint32.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc3\x01\n\ruint32.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcb\x01\n\x17uint32.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd3\x01\n\x0euint32.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdb\x01\n\x18uint32.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12z\n\x02in\x18\x06 \x03(\rBj\xc2Hg\ne\n\tuint32.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12~\n\x06not_in\x18\x07 \x03(\rBg\xc2Hd\nb\n\ruint32.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x35\n\x07\x65xample\x18\x08 \x03(\rB\x1b\xc2H\x18\n\x16\n\x0euint32.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xa5\x15\n\x0bUInt64Rules\x12q\n\x05\x63onst\x18\x01 \x01(\x04\x42[\xc2HX\nV\n\x0cuint64.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\x8f\x01\n\x02lt\x18\x02 \x01(\x04\x42}\xc2Hz\nx\n\tuint64.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa2\x01\n\x03lte\x18\x03 \x01(\x04\x42\x8d\x01\xc2H\x89\x01\n\x86\x01\n\nuint64.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xa0\x07\n\x02gt\x18\x04 \x01(\x04\x42\x8d\x07\xc2H\x89\x07\n{\n\tuint64.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb4\x01\n\x0cuint64.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbc\x01\n\x16uint64.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc4\x01\n\ruint64.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcc\x01\n\x17uint64.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xed\x07\n\x03gte\x18\x05 \x01(\x04\x42\xd8\x07\xc2H\xd4\x07\n\x89\x01\n\nuint64.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc3\x01\n\ruint64.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcb\x01\n\x17uint64.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd3\x01\n\x0euint64.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdb\x01\n\x18uint64.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12z\n\x02in\x18\x06 \x03(\x04\x42j\xc2Hg\ne\n\tuint64.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12~\n\x06not_in\x18\x07 \x03(\x04\x42g\xc2Hd\nb\n\ruint64.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x35\n\x07\x65xample\x18\x08 \x03(\x04\x42\x1b\xc2H\x18\n\x16\n\x0euint64.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xa5\x15\n\x0bSInt32Rules\x12q\n\x05\x63onst\x18\x01 \x01(\x11\x42[\xc2HX\nV\n\x0csint32.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\x8f\x01\n\x02lt\x18\x02 \x01(\x11\x42}\xc2Hz\nx\n\tsint32.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa2\x01\n\x03lte\x18\x03 \x01(\x11\x42\x8d\x01\xc2H\x89\x01\n\x86\x01\n\nsint32.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xa0\x07\n\x02gt\x18\x04 \x01(\x11\x42\x8d\x07\xc2H\x89\x07\n{\n\tsint32.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb4\x01\n\x0csint32.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbc\x01\n\x16sint32.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc4\x01\n\rsint32.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcc\x01\n\x17sint32.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xed\x07\n\x03gte\x18\x05 \x01(\x11\x42\xd8\x07\xc2H\xd4\x07\n\x89\x01\n\nsint32.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc3\x01\n\rsint32.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcb\x01\n\x17sint32.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd3\x01\n\x0esint32.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdb\x01\n\x18sint32.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12z\n\x02in\x18\x06 \x03(\x11\x42j\xc2Hg\ne\n\tsint32.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12~\n\x06not_in\x18\x07 \x03(\x11\x42g\xc2Hd\nb\n\rsint32.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x35\n\x07\x65xample\x18\x08 \x03(\x11\x42\x1b\xc2H\x18\n\x16\n\x0esint32.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xa5\x15\n\x0bSInt64Rules\x12q\n\x05\x63onst\x18\x01 \x01(\x12\x42[\xc2HX\nV\n\x0csint64.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\x8f\x01\n\x02lt\x18\x02 \x01(\x12\x42}\xc2Hz\nx\n\tsint64.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa2\x01\n\x03lte\x18\x03 \x01(\x12\x42\x8d\x01\xc2H\x89\x01\n\x86\x01\n\nsint64.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xa0\x07\n\x02gt\x18\x04 \x01(\x12\x42\x8d\x07\xc2H\x89\x07\n{\n\tsint64.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb4\x01\n\x0csint64.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbc\x01\n\x16sint64.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc4\x01\n\rsint64.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcc\x01\n\x17sint64.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xed\x07\n\x03gte\x18\x05 \x01(\x12\x42\xd8\x07\xc2H\xd4\x07\n\x89\x01\n\nsint64.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc3\x01\n\rsint64.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcb\x01\n\x17sint64.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd3\x01\n\x0esint64.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdb\x01\n\x18sint64.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12z\n\x02in\x18\x06 \x03(\x12\x42j\xc2Hg\ne\n\tsint64.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12~\n\x06not_in\x18\x07 \x03(\x12\x42g\xc2Hd\nb\n\rsint64.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x35\n\x07\x65xample\x18\x08 \x03(\x12\x42\x1b\xc2H\x18\n\x16\n\x0esint64.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xb6\x15\n\x0c\x46ixed32Rules\x12r\n\x05\x63onst\x18\x01 \x01(\x07\x42\\\xc2HY\nW\n\rfixed32.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\x90\x01\n\x02lt\x18\x02 \x01(\x07\x42~\xc2H{\ny\n\nfixed32.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa3\x01\n\x03lte\x18\x03 \x01(\x07\x42\x8e\x01\xc2H\x8a\x01\n\x87\x01\n\x0b\x66ixed32.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xa5\x07\n\x02gt\x18\x04 \x01(\x07\x42\x92\x07\xc2H\x8e\x07\n|\n\nfixed32.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb5\x01\n\rfixed32.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbd\x01\n\x17\x66ixed32.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc5\x01\n\x0e\x66ixed32.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcd\x01\n\x18\x66ixed32.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xf2\x07\n\x03gte\x18\x05 \x01(\x07\x42\xdd\x07\xc2H\xd9\x07\n\x8a\x01\n\x0b\x66ixed32.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc4\x01\n\x0e\x66ixed32.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcc\x01\n\x18\x66ixed32.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd4\x01\n\x0f\x66ixed32.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdc\x01\n\x19\x66ixed32.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12{\n\x02in\x18\x06 \x03(\x07\x42k\xc2Hh\nf\n\nfixed32.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12\x7f\n\x06not_in\x18\x07 \x03(\x07\x42h\xc2He\nc\n\x0e\x66ixed32.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x36\n\x07\x65xample\x18\x08 \x03(\x07\x42\x1c\xc2H\x19\n\x17\n\x0f\x66ixed32.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xb6\x15\n\x0c\x46ixed64Rules\x12r\n\x05\x63onst\x18\x01 \x01(\x06\x42\\\xc2HY\nW\n\rfixed64.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\x90\x01\n\x02lt\x18\x02 \x01(\x06\x42~\xc2H{\ny\n\nfixed64.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa3\x01\n\x03lte\x18\x03 \x01(\x06\x42\x8e\x01\xc2H\x8a\x01\n\x87\x01\n\x0b\x66ixed64.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xa5\x07\n\x02gt\x18\x04 \x01(\x06\x42\x92\x07\xc2H\x8e\x07\n|\n\nfixed64.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb5\x01\n\rfixed64.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbd\x01\n\x17\x66ixed64.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc5\x01\n\x0e\x66ixed64.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcd\x01\n\x18\x66ixed64.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xf2\x07\n\x03gte\x18\x05 \x01(\x06\x42\xdd\x07\xc2H\xd9\x07\n\x8a\x01\n\x0b\x66ixed64.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc4\x01\n\x0e\x66ixed64.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcc\x01\n\x18\x66ixed64.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd4\x01\n\x0f\x66ixed64.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdc\x01\n\x19\x66ixed64.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12{\n\x02in\x18\x06 \x03(\x06\x42k\xc2Hh\nf\n\nfixed64.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12\x7f\n\x06not_in\x18\x07 \x03(\x06\x42h\xc2He\nc\n\x0e\x66ixed64.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x36\n\x07\x65xample\x18\x08 \x03(\x06\x42\x1c\xc2H\x19\n\x17\n\x0f\x66ixed64.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xc8\x15\n\rSFixed32Rules\x12s\n\x05\x63onst\x18\x01 \x01(\x0f\x42]\xc2HZ\nX\n\x0esfixed32.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\x91\x01\n\x02lt\x18\x02 \x01(\x0f\x42\x7f\xc2H|\nz\n\x0bsfixed32.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa4\x01\n\x03lte\x18\x03 \x01(\x0f\x42\x8f\x01\xc2H\x8b\x01\n\x88\x01\n\x0csfixed32.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xaa\x07\n\x02gt\x18\x04 \x01(\x0f\x42\x97\x07\xc2H\x93\x07\n}\n\x0bsfixed32.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb6\x01\n\x0esfixed32.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbe\x01\n\x18sfixed32.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc6\x01\n\x0fsfixed32.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xce\x01\n\x19sfixed32.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xf7\x07\n\x03gte\x18\x05 \x01(\x0f\x42\xe2\x07\xc2H\xde\x07\n\x8b\x01\n\x0csfixed32.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc5\x01\n\x0fsfixed32.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcd\x01\n\x19sfixed32.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd5\x01\n\x10sfixed32.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdd\x01\n\x1asfixed32.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12|\n\x02in\x18\x06 \x03(\x0f\x42l\xc2Hi\ng\n\x0bsfixed32.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12\x80\x01\n\x06not_in\x18\x07 \x03(\x0f\x42i\xc2Hf\nd\n\x0fsfixed32.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x37\n\x07\x65xample\x18\x08 \x03(\x0f\x42\x1d\xc2H\x1a\n\x18\n\x10sfixed32.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xc8\x15\n\rSFixed64Rules\x12s\n\x05\x63onst\x18\x01 \x01(\x10\x42]\xc2HZ\nX\n\x0esfixed64.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\x91\x01\n\x02lt\x18\x02 \x01(\x10\x42\x7f\xc2H|\nz\n\x0bsfixed64.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa4\x01\n\x03lte\x18\x03 \x01(\x10\x42\x8f\x01\xc2H\x8b\x01\n\x88\x01\n\x0csfixed64.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xaa\x07\n\x02gt\x18\x04 \x01(\x10\x42\x97\x07\xc2H\x93\x07\n}\n\x0bsfixed64.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb6\x01\n\x0esfixed64.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbe\x01\n\x18sfixed64.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc6\x01\n\x0fsfixed64.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xce\x01\n\x19sfixed64.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xf7\x07\n\x03gte\x18\x05 \x01(\x10\x42\xe2\x07\xc2H\xde\x07\n\x8b\x01\n\x0csfixed64.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc5\x01\n\x0fsfixed64.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcd\x01\n\x19sfixed64.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd5\x01\n\x10sfixed64.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdd\x01\n\x1asfixed64.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12|\n\x02in\x18\x06 \x03(\x10\x42l\xc2Hi\ng\n\x0bsfixed64.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12\x80\x01\n\x06not_in\x18\x07 \x03(\x10\x42i\xc2Hf\nd\n\x0fsfixed64.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x37\n\x07\x65xample\x18\x08 \x03(\x10\x42\x1d\xc2H\x1a\n\x18\n\x10sfixed64.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xbc\x01\n\tBoolRules\x12o\n\x05\x63onst\x18\x01 \x01(\x08\x42Y\xc2HV\nT\n\nbool.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\x33\n\x07\x65xample\x18\x02 \x03(\x08\x42\x19\xc2H\x16\n\x14\n\x0c\x62ool.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"\xab\x39\n\x0bStringRules\x12s\n\x05\x63onst\x18\x01 \x01(\tB]\xc2HZ\nX\n\x0cstring.const\x1aHthis != rules.const ? \'value must equal `%s`\'.format([rules.const]) : \'\'R\x05\x63onst\x12\x83\x01\n\x03len\x18\x13 \x01(\x04\x42q\xc2Hn\nl\n\nstring.len\x1a^uint(this.size()) != rules.len ? \'value length must be %s characters\'.format([rules.len]) : \'\'R\x03len\x12\xa1\x01\n\x07min_len\x18\x02 \x01(\x04\x42\x87\x01\xc2H\x83\x01\n\x80\x01\n\x0estring.min_len\x1anuint(this.size()) < rules.min_len ? \'value length must be at least %s characters\'.format([rules.min_len]) : \'\'R\x06minLen\x12\x9f\x01\n\x07max_len\x18\x03 \x01(\x04\x42\x85\x01\xc2H\x81\x01\n\x7f\n\x0estring.max_len\x1amuint(this.size()) > rules.max_len ? \'value length must be at most %s characters\'.format([rules.max_len]) : \'\'R\x06maxLen\x12\xa5\x01\n\tlen_bytes\x18\x14 \x01(\x04\x42\x87\x01\xc2H\x83\x01\n\x80\x01\n\x10string.len_bytes\x1aluint(bytes(this).size()) != rules.len_bytes ? \'value length must be %s bytes\'.format([rules.len_bytes]) : \'\'R\x08lenBytes\x12\xad\x01\n\tmin_bytes\x18\x04 \x01(\x04\x42\x8f\x01\xc2H\x8b\x01\n\x88\x01\n\x10string.min_bytes\x1atuint(bytes(this).size()) < rules.min_bytes ? \'value length must be at least %s bytes\'.format([rules.min_bytes]) : \'\'R\x08minBytes\x12\xac\x01\n\tmax_bytes\x18\x05 \x01(\x04\x42\x8e\x01\xc2H\x8a\x01\n\x87\x01\n\x10string.max_bytes\x1asuint(bytes(this).size()) > rules.max_bytes ? \'value length must be at most %s bytes\'.format([rules.max_bytes]) : \'\'R\x08maxBytes\x12\x96\x01\n\x07pattern\x18\x06 \x01(\tB|\xc2Hy\nw\n\x0estring.pattern\x1a\x65!this.matches(rules.pattern) ? \'value does not match regex pattern `%s`\'.format([rules.pattern]) : \'\'R\x07pattern\x12\x8c\x01\n\x06prefix\x18\x07 \x01(\tBt\xc2Hq\no\n\rstring.prefix\x1a^!this.startsWith(rules.prefix) ? \'value does not have prefix `%s`\'.format([rules.prefix]) : \'\'R\x06prefix\x12\x8a\x01\n\x06suffix\x18\x08 \x01(\tBr\xc2Ho\nm\n\rstring.suffix\x1a\\!this.endsWith(rules.suffix) ? \'value does not have suffix `%s`\'.format([rules.suffix]) : \'\'R\x06suffix\x12\x9a\x01\n\x08\x63ontains\x18\t \x01(\tB~\xc2H{\ny\n\x0fstring.contains\x1a\x66!this.contains(rules.contains) ? \'value does not contain substring `%s`\'.format([rules.contains]) : \'\'R\x08\x63ontains\x12\xa5\x01\n\x0cnot_contains\x18\x17 \x01(\tB\x81\x01\xc2H~\n|\n\x13string.not_contains\x1a\x65this.contains(rules.not_contains) ? \'value contains substring `%s`\'.format([rules.not_contains]) : \'\'R\x0bnotContains\x12z\n\x02in\x18\n \x03(\tBj\xc2Hg\ne\n\tstring.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12~\n\x06not_in\x18\x0b \x03(\tBg\xc2Hd\nb\n\rstring.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\xe6\x01\n\x05\x65mail\x18\x0c \x01(\x08\x42\xcd\x01\xc2H\xc9\x01\na\n\x0cstring.email\x12#value must be a valid email address\x1a,!rules.email || this == \'\' || this.isEmail()\nd\n\x12string.email_empty\x12\x32value is empty, which is not a valid email address\x1a\x1a!rules.email || this != \'\'H\x00R\x05\x65mail\x12\xf1\x01\n\x08hostname\x18\r \x01(\x08\x42\xd2\x01\xc2H\xce\x01\ne\n\x0fstring.hostname\x12\x1evalue must be a valid hostname\x1a\x32!rules.hostname || this == \'\' || this.isHostname()\ne\n\x15string.hostname_empty\x12-value is empty, which is not a valid hostname\x1a\x1d!rules.hostname || this != \'\'H\x00R\x08hostname\x12\xcb\x01\n\x02ip\x18\x0e \x01(\x08\x42\xb8\x01\xc2H\xb4\x01\nU\n\tstring.ip\x12 value must be a valid IP address\x1a&!rules.ip || this == \'\' || this.isIp()\n[\n\x0fstring.ip_empty\x12/value is empty, which is not a valid IP address\x1a\x17!rules.ip || this != \'\'H\x00R\x02ip\x12\xdc\x01\n\x04ipv4\x18\x0f \x01(\x08\x42\xc5\x01\xc2H\xc1\x01\n\\\n\x0bstring.ipv4\x12\"value must be a valid IPv4 address\x1a)!rules.ipv4 || this == \'\' || this.isIp(4)\na\n\x11string.ipv4_empty\x12\x31value is empty, which is not a valid IPv4 address\x1a\x19!rules.ipv4 || this != \'\'H\x00R\x04ipv4\x12\xdc\x01\n\x04ipv6\x18\x10 \x01(\x08\x42\xc5\x01\xc2H\xc1\x01\n\\\n\x0bstring.ipv6\x12\"value must be a valid IPv6 address\x1a)!rules.ipv6 || this == \'\' || this.isIp(6)\na\n\x11string.ipv6_empty\x12\x31value is empty, which is not a valid IPv6 address\x1a\x19!rules.ipv6 || this != \'\'H\x00R\x04ipv6\x12\xc4\x01\n\x03uri\x18\x11 \x01(\x08\x42\xaf\x01\xc2H\xab\x01\nQ\n\nstring.uri\x12\x19value must be a valid URI\x1a(!rules.uri || this == \'\' || this.isUri()\nV\n\x10string.uri_empty\x12(value is empty, which is not a valid URI\x1a\x18!rules.uri || this != \'\'H\x00R\x03uri\x12x\n\x07uri_ref\x18\x12 \x01(\x08\x42]\xc2HZ\nX\n\x0estring.uri_ref\x12#value must be a valid URI Reference\x1a!!rules.uri_ref || this.isUriRef()H\x00R\x06uriRef\x12\x99\x02\n\x07\x61\x64\x64ress\x18\x15 \x01(\x08\x42\xfc\x01\xc2H\xf8\x01\n\x81\x01\n\x0estring.address\x12-value must be a valid hostname, or ip address\x1a@!rules.address || this == \'\' || this.isHostname() || this.isIp()\nr\n\x14string.address_empty\x12!rules.ipv4_with_prefixlen || this == \'\' || this.isIpPrefix(4)\n\x92\x01\n string.ipv4_with_prefixlen_empty\x12\x44value is empty, which is not a valid IPv4 address with prefix length\x1a(!rules.ipv4_with_prefixlen || this != \'\'H\x00R\x11ipv4WithPrefixlen\x12\xe2\x02\n\x13ipv6_with_prefixlen\x18\x1c \x01(\x08\x42\xaf\x02\xc2H\xab\x02\n\x93\x01\n\x1astring.ipv6_with_prefixlen\x12\x35value must be a valid IPv6 address with prefix length\x1a>!rules.ipv6_with_prefixlen || this == \'\' || this.isIpPrefix(6)\n\x92\x01\n string.ipv6_with_prefixlen_empty\x12\x44value is empty, which is not a valid IPv6 address with prefix length\x1a(!rules.ipv6_with_prefixlen || this != \'\'H\x00R\x11ipv6WithPrefixlen\x12\xfc\x01\n\tip_prefix\x18\x1d \x01(\x08\x42\xdc\x01\xc2H\xd8\x01\nl\n\x10string.ip_prefix\x12\x1fvalue must be a valid IP prefix\x1a\x37!rules.ip_prefix || this == \'\' || this.isIpPrefix(true)\nh\n\x16string.ip_prefix_empty\x12.value is empty, which is not a valid IP prefix\x1a\x1e!rules.ip_prefix || this != \'\'H\x00R\x08ipPrefix\x12\x8f\x02\n\x0bipv4_prefix\x18\x1e \x01(\x08\x42\xeb\x01\xc2H\xe7\x01\nu\n\x12string.ipv4_prefix\x12!value must be a valid IPv4 prefix\x1a!rules.host_and_port || this == \'\' || this.isHostAndPort(true)\ny\n\x1astring.host_and_port_empty\x12\x37value is empty, which is not a valid host and port pair\x1a\"!rules.host_and_port || this != \'\'H\x00R\x0bhostAndPort\x12\xb8\x05\n\x10well_known_regex\x18\x18 \x01(\x0e\x32\x18.buf.validate.KnownRegexB\xf1\x04\xc2H\xed\x04\n\xf0\x01\n#string.well_known_regex.header_name\x12&value must be a valid HTTP header name\x1a\xa0\x01rules.well_known_regex != 1 || this == \'\' || this.matches(!has(rules.strict) || rules.strict ?\'^:?[0-9a-zA-Z!#$%&\\\'*+-.^_|~\\x60]+$\' :\'^[^\\u0000\\u000A\\u000D]+$\')\n\x8d\x01\n)string.well_known_regex.header_name_empty\x12\x35value is empty, which is not a valid HTTP header name\x1a)rules.well_known_regex != 1 || this != \'\'\n\xe7\x01\n$string.well_known_regex.header_value\x12\'value must be a valid HTTP header value\x1a\x95\x01rules.well_known_regex != 2 || this.matches(!has(rules.strict) || rules.strict ?\'^[^\\u0000-\\u0008\\u000A-\\u001F\\u007F]*$\' :\'^[^\\u0000\\u000A\\u000D]*$\')H\x00R\x0ewellKnownRegex\x12\x16\n\x06strict\x18\x19 \x01(\x08R\x06strict\x12\x35\n\x07\x65xample\x18\" \x03(\tB\x1b\xc2H\x18\n\x16\n\x0estring.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0c\n\nwell_known\"\xa3\x11\n\nBytesRules\x12m\n\x05\x63onst\x18\x01 \x01(\x0c\x42W\xc2HT\nR\n\x0b\x62ytes.const\x1a\x43this != rules.const ? \'value must be %x\'.format([rules.const]) : \'\'R\x05\x63onst\x12}\n\x03len\x18\r \x01(\x04\x42k\xc2Hh\nf\n\tbytes.len\x1aYuint(this.size()) != rules.len ? \'value length must be %s bytes\'.format([rules.len]) : \'\'R\x03len\x12\x98\x01\n\x07min_len\x18\x02 \x01(\x04\x42\x7f\xc2H|\nz\n\rbytes.min_len\x1aiuint(this.size()) < rules.min_len ? \'value length must be at least %s bytes\'.format([rules.min_len]) : \'\'R\x06minLen\x12\x90\x01\n\x07max_len\x18\x03 \x01(\x04\x42w\xc2Ht\nr\n\rbytes.max_len\x1a\x61uint(this.size()) > rules.max_len ? \'value must be at most %s bytes\'.format([rules.max_len]) : \'\'R\x06maxLen\x12\x99\x01\n\x07pattern\x18\x04 \x01(\tB\x7f\xc2H|\nz\n\rbytes.pattern\x1ai!string(this).matches(rules.pattern) ? \'value must match regex pattern `%s`\'.format([rules.pattern]) : \'\'R\x07pattern\x12\x89\x01\n\x06prefix\x18\x05 \x01(\x0c\x42q\xc2Hn\nl\n\x0c\x62ytes.prefix\x1a\\!this.startsWith(rules.prefix) ? \'value does not have prefix %x\'.format([rules.prefix]) : \'\'R\x06prefix\x12\x87\x01\n\x06suffix\x18\x06 \x01(\x0c\x42o\xc2Hl\nj\n\x0c\x62ytes.suffix\x1aZ!this.endsWith(rules.suffix) ? \'value does not have suffix %x\'.format([rules.suffix]) : \'\'R\x06suffix\x12\x8d\x01\n\x08\x63ontains\x18\x07 \x01(\x0c\x42q\xc2Hn\nl\n\x0e\x62ytes.contains\x1aZ!this.contains(rules.contains) ? \'value does not contain %x\'.format([rules.contains]) : \'\'R\x08\x63ontains\x12\x9b\x01\n\x02in\x18\x08 \x03(\x0c\x42\x8a\x01\xc2H\x86\x01\n\x83\x01\n\x08\x62ytes.in\x1awdyn(rules)[\'in\'].size() > 0 && !(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12}\n\x06not_in\x18\t \x03(\x0c\x42\x66\xc2Hc\na\n\x0c\x62ytes.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\xef\x01\n\x02ip\x18\n \x01(\x08\x42\xdc\x01\xc2H\xd8\x01\nt\n\x08\x62ytes.ip\x12 value must be a valid IP address\x1a\x46!rules.ip || this.size() == 0 || this.size() == 4 || this.size() == 16\n`\n\x0e\x62ytes.ip_empty\x12/value is empty, which is not a valid IP address\x1a\x1d!rules.ip || this.size() != 0H\x00R\x02ip\x12\xea\x01\n\x04ipv4\x18\x0b \x01(\x08\x42\xd3\x01\xc2H\xcf\x01\ne\n\nbytes.ipv4\x12\"value must be a valid IPv4 address\x1a\x33!rules.ipv4 || this.size() == 0 || this.size() == 4\nf\n\x10\x62ytes.ipv4_empty\x12\x31value is empty, which is not a valid IPv4 address\x1a\x1f!rules.ipv4 || this.size() != 0H\x00R\x04ipv4\x12\xeb\x01\n\x04ipv6\x18\x0c \x01(\x08\x42\xd4\x01\xc2H\xd0\x01\nf\n\nbytes.ipv6\x12\"value must be a valid IPv6 address\x1a\x34!rules.ipv6 || this.size() == 0 || this.size() == 16\nf\n\x10\x62ytes.ipv6_empty\x12\x31value is empty, which is not a valid IPv6 address\x1a\x1f!rules.ipv6 || this.size() != 0H\x00R\x04ipv6\x12\x34\n\x07\x65xample\x18\x0e \x03(\x0c\x42\x1a\xc2H\x17\n\x15\n\rbytes.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0c\n\nwell_known\"\xd7\x03\n\tEnumRules\x12o\n\x05\x63onst\x18\x01 \x01(\x05\x42Y\xc2HV\nT\n\nenum.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12!\n\x0c\x64\x65\x66ined_only\x18\x02 \x01(\x08R\x0b\x64\x65\x66inedOnly\x12x\n\x02in\x18\x03 \x03(\x05\x42h\xc2He\nc\n\x07\x65num.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12|\n\x06not_in\x18\x04 \x03(\x05\x42\x65\xc2Hb\n`\n\x0b\x65num.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x33\n\x07\x65xample\x18\x05 \x03(\x05\x42\x19\xc2H\x16\n\x14\n\x0c\x65num.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"\xa4\x04\n\rRepeatedRules\x12\xa8\x01\n\tmin_items\x18\x01 \x01(\x04\x42\x8a\x01\xc2H\x86\x01\n\x83\x01\n\x12repeated.min_items\x1amuint(this.size()) < rules.min_items ? \'value must contain at least %d item(s)\'.format([rules.min_items]) : \'\'R\x08minItems\x12\xac\x01\n\tmax_items\x18\x02 \x01(\x04\x42\x8e\x01\xc2H\x8a\x01\n\x87\x01\n\x12repeated.max_items\x1aquint(this.size()) > rules.max_items ? \'value must contain no more than %s item(s)\'.format([rules.max_items]) : \'\'R\x08maxItems\x12x\n\x06unique\x18\x03 \x01(\x08\x42`\xc2H]\n[\n\x0frepeated.unique\x12(repeated value must contain unique items\x1a\x1e!rules.unique || this.unique()R\x06unique\x12\x34\n\x05items\x18\x04 \x01(\x0b\x32\x1e.buf.validate.FieldConstraintsR\x05items*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"\xb8\x03\n\x08MapRules\x12\x99\x01\n\tmin_pairs\x18\x01 \x01(\x04\x42|\xc2Hy\nw\n\rmap.min_pairs\x1a\x66uint(this.size()) < rules.min_pairs ? \'map must be at least %d entries\'.format([rules.min_pairs]) : \'\'R\x08minPairs\x12\x98\x01\n\tmax_pairs\x18\x02 \x01(\x04\x42{\xc2Hx\nv\n\rmap.max_pairs\x1a\x65uint(this.size()) > rules.max_pairs ? \'map must be at most %d entries\'.format([rules.max_pairs]) : \'\'R\x08maxPairs\x12\x32\n\x04keys\x18\x04 \x01(\x0b\x32\x1e.buf.validate.FieldConstraintsR\x04keys\x12\x36\n\x06values\x18\x05 \x01(\x0b\x32\x1e.buf.validate.FieldConstraintsR\x06values*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"1\n\x08\x41nyRules\x12\x0e\n\x02in\x18\x02 \x03(\tR\x02in\x12\x15\n\x06not_in\x18\x03 \x03(\tR\x05notIn\"\xa2\x17\n\rDurationRules\x12\x8e\x01\n\x05\x63onst\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB]\xc2HZ\nX\n\x0e\x64uration.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\xac\x01\n\x02lt\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x7f\xc2H|\nz\n\x0b\x64uration.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xbf\x01\n\x03lte\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationB\x8f\x01\xc2H\x8b\x01\n\x88\x01\n\x0c\x64uration.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xc5\x07\n\x02gt\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationB\x97\x07\xc2H\x93\x07\n}\n\x0b\x64uration.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb6\x01\n\x0e\x64uration.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbe\x01\n\x18\x64uration.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc6\x01\n\x0f\x64uration.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xce\x01\n\x19\x64uration.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\x92\x08\n\x03gte\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationB\xe2\x07\xc2H\xde\x07\n\x8b\x01\n\x0c\x64uration.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc5\x01\n\x0f\x64uration.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcd\x01\n\x19\x64uration.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd5\x01\n\x10\x64uration.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdd\x01\n\x1a\x64uration.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x97\x01\n\x02in\x18\x07 \x03(\x0b\x32\x19.google.protobuf.DurationBl\xc2Hi\ng\n\x0b\x64uration.in\x1aX!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'R\x02in\x12\x9b\x01\n\x06not_in\x18\x08 \x03(\x0b\x32\x19.google.protobuf.DurationBi\xc2Hf\nd\n\x0f\x64uration.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12R\n\x07\x65xample\x18\t \x03(\x0b\x32\x19.google.protobuf.DurationB\x1d\xc2H\x1a\n\x18\n\x10\x64uration.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xb0\x18\n\x0eTimestampRules\x12\x90\x01\n\x05\x63onst\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB^\xc2H[\nY\n\x0ftimestamp.const\x1a\x46this != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'R\x05\x63onst\x12\xaf\x01\n\x02lt\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x80\x01\xc2H}\n{\n\x0ctimestamp.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xc1\x01\n\x03lte\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x90\x01\xc2H\x8c\x01\n\x89\x01\n\rtimestamp.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12s\n\x06lt_now\x18\x07 \x01(\x08\x42Z\xc2HW\nU\n\x10timestamp.lt_now\x1a\x41(rules.lt_now && this > now) ? \'value must be less than now\' : \'\'H\x00R\x05ltNow\x12\xcb\x07\n\x02gt\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x9c\x07\xc2H\x98\x07\n~\n\x0ctimestamp.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb7\x01\n\x0ftimestamp.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbf\x01\n\x19timestamp.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc7\x01\n\x10timestamp.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcf\x01\n\x1atimestamp.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\x98\x08\n\x03gte\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xe7\x07\xc2H\xe3\x07\n\x8c\x01\n\rtimestamp.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc6\x01\n\x10timestamp.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xce\x01\n\x1atimestamp.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd6\x01\n\x11timestamp.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xde\x01\n\x1btimestamp.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12v\n\x06gt_now\x18\x08 \x01(\x08\x42]\xc2HZ\nX\n\x10timestamp.gt_now\x1a\x44(rules.gt_now && this < now) ? \'value must be greater than now\' : \'\'H\x01R\x05gtNow\x12\xc0\x01\n\x06within\x18\t \x01(\x0b\x32\x19.google.protobuf.DurationB\x8c\x01\xc2H\x88\x01\n\x85\x01\n\x10timestamp.within\x1aqthis < now-rules.within || this > now+rules.within ? \'value must be within %s of now\'.format([rules.within]) : \'\'R\x06within\x12T\n\x07\x65xample\x18\n \x03(\x0b\x32\x1a.google.protobuf.TimestampB\x1e\xc2H\x1b\n\x19\n\x11timestamp.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"E\n\nViolations\x12\x37\n\nviolations\x18\x01 \x03(\x0b\x32\x17.buf.validate.ViolationR\nviolations\"\xd1\x01\n\tViolation\x12-\n\x05\x66ield\x18\x05 \x01(\x0b\x32\x17.buf.validate.FieldPathR\x05\x66ield\x12+\n\x04rule\x18\x06 \x01(\x0b\x32\x17.buf.validate.FieldPathR\x04rule\x12#\n\rconstraint_id\x18\x02 \x01(\tR\x0c\x63onstraintId\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\x12\x17\n\x07\x66or_key\x18\x04 \x01(\x08R\x06\x66orKeyJ\x04\x08\x01\x10\x02R\nfield_path\"G\n\tFieldPath\x12:\n\x08\x65lements\x18\x01 \x03(\x0b\x32\x1e.buf.validate.FieldPathElementR\x08\x65lements\"\xcc\x03\n\x10\x46ieldPathElement\x12!\n\x0c\x66ield_number\x18\x01 \x01(\x05R\x0b\x66ieldNumber\x12\x1d\n\nfield_name\x18\x02 \x01(\tR\tfieldName\x12I\n\nfield_type\x18\x03 \x01(\x0e\x32*.google.protobuf.FieldDescriptorProto.TypeR\tfieldType\x12\x45\n\x08key_type\x18\x04 \x01(\x0e\x32*.google.protobuf.FieldDescriptorProto.TypeR\x07keyType\x12I\n\nvalue_type\x18\x05 \x01(\x0e\x32*.google.protobuf.FieldDescriptorProto.TypeR\tvalueType\x12\x16\n\x05index\x18\x06 \x01(\x04H\x00R\x05index\x12\x1b\n\x08\x62ool_key\x18\x07 \x01(\x08H\x00R\x07\x62oolKey\x12\x19\n\x07int_key\x18\x08 \x01(\x03H\x00R\x06intKey\x12\x1b\n\x08uint_key\x18\t \x01(\x04H\x00R\x07uintKey\x12\x1f\n\nstring_key\x18\n \x01(\tH\x00R\tstringKeyB\x0b\n\tsubscript*\x87\x01\n\x06Ignore\x12\x16\n\x12IGNORE_UNSPECIFIED\x10\x00\x12\x19\n\x15IGNORE_IF_UNPOPULATED\x10\x01\x12\x1b\n\x17IGNORE_IF_DEFAULT_VALUE\x10\x02\x12\x11\n\rIGNORE_ALWAYS\x10\x03*\x1aIGNORE_EMPTYIGNORE_DEFAULT*n\n\nKnownRegex\x12\x1b\n\x17KNOWN_REGEX_UNSPECIFIED\x10\x00\x12 \n\x1cKNOWN_REGEX_HTTP_HEADER_NAME\x10\x01\x12!\n\x1dKNOWN_REGEX_HTTP_HEADER_VALUE\x10\x02:\\\n\x07message\x12\x1f.google.protobuf.MessageOptions\x18\x87\t \x01(\x0b\x32 .buf.validate.MessageConstraintsR\x07message:T\n\x05oneof\x12\x1d.google.protobuf.OneofOptions\x18\x87\t \x01(\x0b\x32\x1e.buf.validate.OneofConstraintsR\x05oneof:T\n\x05\x66ield\x12\x1d.google.protobuf.FieldOptions\x18\x87\t \x01(\x0b\x32\x1e.buf.validate.FieldConstraintsR\x05\x66ield:c\n\npredefined\x12\x1d.google.protobuf.FieldOptions\x18\x88\t \x01(\x0b\x32#.buf.validate.PredefinedConstraintsR\npredefinedB\xbb\x01\n\x10\x63om.buf.validateB\rValidateProtoP\x01ZGbuf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate\xa2\x02\x03\x42VX\xaa\x02\x0c\x42uf.Validate\xca\x02\x0c\x42uf\\Validate\xe2\x02\x18\x42uf\\Validate\\GPBMetadata\xea\x02\rBuf::Validate') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x62uf/validate/validate.proto\x12\x0c\x62uf.validate\x1a google/protobuf/descriptor.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"P\n\x04Rule\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12\x1e\n\nexpression\x18\x03 \x01(\tR\nexpression\"P\n\x0cMessageRules\x12\x1a\n\x08\x64isabled\x18\x01 \x01(\x08R\x08\x64isabled\x12$\n\x03\x63\x65l\x18\x03 \x03(\x0b\x32\x12.buf.validate.RuleR\x03\x63\x65l\"(\n\nOneofRules\x12\x1a\n\x08required\x18\x01 \x01(\x08R\x08required\"\xfd\t\n\nFieldRules\x12$\n\x03\x63\x65l\x18\x17 \x03(\x0b\x32\x12.buf.validate.RuleR\x03\x63\x65l\x12\x1a\n\x08required\x18\x19 \x01(\x08R\x08required\x12,\n\x06ignore\x18\x1b \x01(\x0e\x32\x14.buf.validate.IgnoreR\x06ignore\x12\x30\n\x05\x66loat\x18\x01 \x01(\x0b\x32\x18.buf.validate.FloatRulesH\x00R\x05\x66loat\x12\x33\n\x06\x64ouble\x18\x02 \x01(\x0b\x32\x19.buf.validate.DoubleRulesH\x00R\x06\x64ouble\x12\x30\n\x05int32\x18\x03 \x01(\x0b\x32\x18.buf.validate.Int32RulesH\x00R\x05int32\x12\x30\n\x05int64\x18\x04 \x01(\x0b\x32\x18.buf.validate.Int64RulesH\x00R\x05int64\x12\x33\n\x06uint32\x18\x05 \x01(\x0b\x32\x19.buf.validate.UInt32RulesH\x00R\x06uint32\x12\x33\n\x06uint64\x18\x06 \x01(\x0b\x32\x19.buf.validate.UInt64RulesH\x00R\x06uint64\x12\x33\n\x06sint32\x18\x07 \x01(\x0b\x32\x19.buf.validate.SInt32RulesH\x00R\x06sint32\x12\x33\n\x06sint64\x18\x08 \x01(\x0b\x32\x19.buf.validate.SInt64RulesH\x00R\x06sint64\x12\x36\n\x07\x66ixed32\x18\t \x01(\x0b\x32\x1a.buf.validate.Fixed32RulesH\x00R\x07\x66ixed32\x12\x36\n\x07\x66ixed64\x18\n \x01(\x0b\x32\x1a.buf.validate.Fixed64RulesH\x00R\x07\x66ixed64\x12\x39\n\x08sfixed32\x18\x0b \x01(\x0b\x32\x1b.buf.validate.SFixed32RulesH\x00R\x08sfixed32\x12\x39\n\x08sfixed64\x18\x0c \x01(\x0b\x32\x1b.buf.validate.SFixed64RulesH\x00R\x08sfixed64\x12-\n\x04\x62ool\x18\r \x01(\x0b\x32\x17.buf.validate.BoolRulesH\x00R\x04\x62ool\x12\x33\n\x06string\x18\x0e \x01(\x0b\x32\x19.buf.validate.StringRulesH\x00R\x06string\x12\x30\n\x05\x62ytes\x18\x0f \x01(\x0b\x32\x18.buf.validate.BytesRulesH\x00R\x05\x62ytes\x12-\n\x04\x65num\x18\x10 \x01(\x0b\x32\x17.buf.validate.EnumRulesH\x00R\x04\x65num\x12\x39\n\x08repeated\x18\x12 \x01(\x0b\x32\x1b.buf.validate.RepeatedRulesH\x00R\x08repeated\x12*\n\x03map\x18\x13 \x01(\x0b\x32\x16.buf.validate.MapRulesH\x00R\x03map\x12*\n\x03\x61ny\x18\x14 \x01(\x0b\x32\x16.buf.validate.AnyRulesH\x00R\x03\x61ny\x12\x39\n\x08\x64uration\x18\x15 \x01(\x0b\x32\x1b.buf.validate.DurationRulesH\x00R\x08\x64uration\x12<\n\ttimestamp\x18\x16 \x01(\x0b\x32\x1c.buf.validate.TimestampRulesH\x00R\ttimestampB\x06\n\x04typeJ\x04\x08\x18\x10\x19J\x04\x08\x1a\x10\x1bR\x07skippedR\x0cignore_empty\"X\n\x0fPredefinedRules\x12$\n\x03\x63\x65l\x18\x01 \x03(\x0b\x32\x12.buf.validate.RuleR\x03\x63\x65lJ\x04\x08\x18\x10\x19J\x04\x08\x1a\x10\x1bR\x13skippedignore_empty\"\x90\x18\n\nFloatRules\x12\x8a\x01\n\x05\x63onst\x18\x01 \x01(\x02\x42t\xc2Hq\no\n\x0b\x66loat.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\xa3\x01\n\x02lt\x18\x02 \x01(\x02\x42\x90\x01\xc2H\x8c\x01\n\x89\x01\n\x08\x66loat.lt\x1a}!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xb4\x01\n\x03lte\x18\x03 \x01(\x02\x42\x9f\x01\xc2H\x9b\x01\n\x98\x01\n\tfloat.lte\x1a\x8a\x01!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xf3\x07\n\x02gt\x18\x04 \x01(\x02\x42\xe0\x07\xc2H\xdc\x07\n\x8d\x01\n\x08\x66loat.gt\x1a\x80\x01!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xc3\x01\n\x0b\x66loat.gt_lt\x1a\xb3\x01has(rules.lt) && rules.lt >= rules.gt && (this.isNan() || this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xcd\x01\n\x15\x66loat.gt_lt_exclusive\x1a\xb3\x01has(rules.lt) && rules.lt < rules.gt && (this.isNan() || (rules.lt <= this && this <= rules.gt))? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xd3\x01\n\x0c\x66loat.gt_lte\x1a\xc2\x01has(rules.lte) && rules.lte >= rules.gt && (this.isNan() || this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xdd\x01\n\x16\x66loat.gt_lte_exclusive\x1a\xc2\x01has(rules.lte) && rules.lte < rules.gt && (this.isNan() || (rules.lte < this && this <= rules.gt))? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xbf\x08\n\x03gte\x18\x05 \x01(\x02\x42\xaa\x08\xc2H\xa6\x08\n\x9b\x01\n\tfloat.gte\x1a\x8d\x01!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xd2\x01\n\x0c\x66loat.gte_lt\x1a\xc1\x01has(rules.lt) && rules.lt >= rules.gte && (this.isNan() || this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xdc\x01\n\x16\x66loat.gte_lt_exclusive\x1a\xc1\x01has(rules.lt) && rules.lt < rules.gte && (this.isNan() || (rules.lt <= this && this < rules.gte))? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xe2\x01\n\rfloat.gte_lte\x1a\xd0\x01has(rules.lte) && rules.lte >= rules.gte && (this.isNan() || this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xec\x01\n\x17\x66loat.gte_lte_exclusive\x1a\xd0\x01has(rules.lte) && rules.lte < rules.gte && (this.isNan() || (rules.lte < this && this < rules.gte))? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x83\x01\n\x02in\x18\x06 \x03(\x02\x42s\xc2Hp\nn\n\x08\x66loat.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12}\n\x06not_in\x18\x07 \x03(\x02\x42\x66\xc2Hc\na\n\x0c\x66loat.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12}\n\x06\x66inite\x18\x08 \x01(\x08\x42\x65\xc2Hb\n`\n\x0c\x66loat.finite\x1aPrules.finite ? (this.isNan() || this.isInf() ? \'value must be finite\' : \'\') : \'\'R\x06\x66inite\x12\x34\n\x07\x65xample\x18\t \x03(\x02\x42\x1a\xc2H\x17\n\x15\n\rfloat.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xa2\x18\n\x0b\x44oubleRules\x12\x8b\x01\n\x05\x63onst\x18\x01 \x01(\x01\x42u\xc2Hr\np\n\x0c\x64ouble.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\xa4\x01\n\x02lt\x18\x02 \x01(\x01\x42\x91\x01\xc2H\x8d\x01\n\x8a\x01\n\tdouble.lt\x1a}!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xb5\x01\n\x03lte\x18\x03 \x01(\x01\x42\xa0\x01\xc2H\x9c\x01\n\x99\x01\n\ndouble.lte\x1a\x8a\x01!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xf8\x07\n\x02gt\x18\x04 \x01(\x01\x42\xe5\x07\xc2H\xe1\x07\n\x8e\x01\n\tdouble.gt\x1a\x80\x01!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xc4\x01\n\x0c\x64ouble.gt_lt\x1a\xb3\x01has(rules.lt) && rules.lt >= rules.gt && (this.isNan() || this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xce\x01\n\x16\x64ouble.gt_lt_exclusive\x1a\xb3\x01has(rules.lt) && rules.lt < rules.gt && (this.isNan() || (rules.lt <= this && this <= rules.gt))? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xd4\x01\n\rdouble.gt_lte\x1a\xc2\x01has(rules.lte) && rules.lte >= rules.gt && (this.isNan() || this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xde\x01\n\x17\x64ouble.gt_lte_exclusive\x1a\xc2\x01has(rules.lte) && rules.lte < rules.gt && (this.isNan() || (rules.lte < this && this <= rules.gt))? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xc4\x08\n\x03gte\x18\x05 \x01(\x01\x42\xaf\x08\xc2H\xab\x08\n\x9c\x01\n\ndouble.gte\x1a\x8d\x01!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xd3\x01\n\rdouble.gte_lt\x1a\xc1\x01has(rules.lt) && rules.lt >= rules.gte && (this.isNan() || this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xdd\x01\n\x17\x64ouble.gte_lt_exclusive\x1a\xc1\x01has(rules.lt) && rules.lt < rules.gte && (this.isNan() || (rules.lt <= this && this < rules.gte))? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xe3\x01\n\x0e\x64ouble.gte_lte\x1a\xd0\x01has(rules.lte) && rules.lte >= rules.gte && (this.isNan() || this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xed\x01\n\x18\x64ouble.gte_lte_exclusive\x1a\xd0\x01has(rules.lte) && rules.lte < rules.gte && (this.isNan() || (rules.lte < this && this < rules.gte))? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x84\x01\n\x02in\x18\x06 \x03(\x01\x42t\xc2Hq\no\n\tdouble.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12~\n\x06not_in\x18\x07 \x03(\x01\x42g\xc2Hd\nb\n\rdouble.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12~\n\x06\x66inite\x18\x08 \x01(\x08\x42\x66\xc2Hc\na\n\rdouble.finite\x1aPrules.finite ? (this.isNan() || this.isInf() ? \'value must be finite\' : \'\') : \'\'R\x06\x66inite\x12\x35\n\x07\x65xample\x18\t \x03(\x01\x42\x1b\xc2H\x18\n\x16\n\x0e\x64ouble.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xba\x15\n\nInt32Rules\x12\x8a\x01\n\x05\x63onst\x18\x01 \x01(\x05\x42t\xc2Hq\no\n\x0bint32.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x8e\x01\n\x02lt\x18\x02 \x01(\x05\x42|\xc2Hy\nw\n\x08int32.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa1\x01\n\x03lte\x18\x03 \x01(\x05\x42\x8c\x01\xc2H\x88\x01\n\x85\x01\n\tint32.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\x9b\x07\n\x02gt\x18\x04 \x01(\x05\x42\x88\x07\xc2H\x84\x07\nz\n\x08int32.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb3\x01\n\x0bint32.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbb\x01\n\x15int32.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc3\x01\n\x0cint32.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcb\x01\n\x16int32.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xe8\x07\n\x03gte\x18\x05 \x01(\x05\x42\xd3\x07\xc2H\xcf\x07\n\x88\x01\n\tint32.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc2\x01\n\x0cint32.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xca\x01\n\x16int32.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd2\x01\n\rint32.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xda\x01\n\x17int32.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x83\x01\n\x02in\x18\x06 \x03(\x05\x42s\xc2Hp\nn\n\x08int32.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12}\n\x06not_in\x18\x07 \x03(\x05\x42\x66\xc2Hc\na\n\x0cint32.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x34\n\x07\x65xample\x18\x08 \x03(\x05\x42\x1a\xc2H\x17\n\x15\n\rint32.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xba\x15\n\nInt64Rules\x12\x8a\x01\n\x05\x63onst\x18\x01 \x01(\x03\x42t\xc2Hq\no\n\x0bint64.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x8e\x01\n\x02lt\x18\x02 \x01(\x03\x42|\xc2Hy\nw\n\x08int64.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa1\x01\n\x03lte\x18\x03 \x01(\x03\x42\x8c\x01\xc2H\x88\x01\n\x85\x01\n\tint64.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\x9b\x07\n\x02gt\x18\x04 \x01(\x03\x42\x88\x07\xc2H\x84\x07\nz\n\x08int64.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb3\x01\n\x0bint64.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbb\x01\n\x15int64.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc3\x01\n\x0cint64.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcb\x01\n\x16int64.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xe8\x07\n\x03gte\x18\x05 \x01(\x03\x42\xd3\x07\xc2H\xcf\x07\n\x88\x01\n\tint64.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc2\x01\n\x0cint64.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xca\x01\n\x16int64.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd2\x01\n\rint64.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xda\x01\n\x17int64.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x83\x01\n\x02in\x18\x06 \x03(\x03\x42s\xc2Hp\nn\n\x08int64.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12}\n\x06not_in\x18\x07 \x03(\x03\x42\x66\xc2Hc\na\n\x0cint64.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x34\n\x07\x65xample\x18\t \x03(\x03\x42\x1a\xc2H\x17\n\x15\n\rint64.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xcb\x15\n\x0bUInt32Rules\x12\x8b\x01\n\x05\x63onst\x18\x01 \x01(\rBu\xc2Hr\np\n\x0cuint32.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x8f\x01\n\x02lt\x18\x02 \x01(\rB}\xc2Hz\nx\n\tuint32.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa2\x01\n\x03lte\x18\x03 \x01(\rB\x8d\x01\xc2H\x89\x01\n\x86\x01\n\nuint32.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xa0\x07\n\x02gt\x18\x04 \x01(\rB\x8d\x07\xc2H\x89\x07\n{\n\tuint32.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb4\x01\n\x0cuint32.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbc\x01\n\x16uint32.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc4\x01\n\ruint32.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcc\x01\n\x17uint32.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xed\x07\n\x03gte\x18\x05 \x01(\rB\xd8\x07\xc2H\xd4\x07\n\x89\x01\n\nuint32.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc3\x01\n\ruint32.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcb\x01\n\x17uint32.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd3\x01\n\x0euint32.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdb\x01\n\x18uint32.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x84\x01\n\x02in\x18\x06 \x03(\rBt\xc2Hq\no\n\tuint32.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12~\n\x06not_in\x18\x07 \x03(\rBg\xc2Hd\nb\n\ruint32.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x35\n\x07\x65xample\x18\x08 \x03(\rB\x1b\xc2H\x18\n\x16\n\x0euint32.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xcb\x15\n\x0bUInt64Rules\x12\x8b\x01\n\x05\x63onst\x18\x01 \x01(\x04\x42u\xc2Hr\np\n\x0cuint64.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x8f\x01\n\x02lt\x18\x02 \x01(\x04\x42}\xc2Hz\nx\n\tuint64.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa2\x01\n\x03lte\x18\x03 \x01(\x04\x42\x8d\x01\xc2H\x89\x01\n\x86\x01\n\nuint64.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xa0\x07\n\x02gt\x18\x04 \x01(\x04\x42\x8d\x07\xc2H\x89\x07\n{\n\tuint64.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb4\x01\n\x0cuint64.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbc\x01\n\x16uint64.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc4\x01\n\ruint64.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcc\x01\n\x17uint64.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xed\x07\n\x03gte\x18\x05 \x01(\x04\x42\xd8\x07\xc2H\xd4\x07\n\x89\x01\n\nuint64.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc3\x01\n\ruint64.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcb\x01\n\x17uint64.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd3\x01\n\x0euint64.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdb\x01\n\x18uint64.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x84\x01\n\x02in\x18\x06 \x03(\x04\x42t\xc2Hq\no\n\tuint64.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12~\n\x06not_in\x18\x07 \x03(\x04\x42g\xc2Hd\nb\n\ruint64.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x35\n\x07\x65xample\x18\x08 \x03(\x04\x42\x1b\xc2H\x18\n\x16\n\x0euint64.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xcb\x15\n\x0bSInt32Rules\x12\x8b\x01\n\x05\x63onst\x18\x01 \x01(\x11\x42u\xc2Hr\np\n\x0csint32.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x8f\x01\n\x02lt\x18\x02 \x01(\x11\x42}\xc2Hz\nx\n\tsint32.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa2\x01\n\x03lte\x18\x03 \x01(\x11\x42\x8d\x01\xc2H\x89\x01\n\x86\x01\n\nsint32.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xa0\x07\n\x02gt\x18\x04 \x01(\x11\x42\x8d\x07\xc2H\x89\x07\n{\n\tsint32.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb4\x01\n\x0csint32.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbc\x01\n\x16sint32.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc4\x01\n\rsint32.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcc\x01\n\x17sint32.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xed\x07\n\x03gte\x18\x05 \x01(\x11\x42\xd8\x07\xc2H\xd4\x07\n\x89\x01\n\nsint32.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc3\x01\n\rsint32.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcb\x01\n\x17sint32.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd3\x01\n\x0esint32.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdb\x01\n\x18sint32.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x84\x01\n\x02in\x18\x06 \x03(\x11\x42t\xc2Hq\no\n\tsint32.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12~\n\x06not_in\x18\x07 \x03(\x11\x42g\xc2Hd\nb\n\rsint32.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x35\n\x07\x65xample\x18\x08 \x03(\x11\x42\x1b\xc2H\x18\n\x16\n\x0esint32.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xcb\x15\n\x0bSInt64Rules\x12\x8b\x01\n\x05\x63onst\x18\x01 \x01(\x12\x42u\xc2Hr\np\n\x0csint64.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x8f\x01\n\x02lt\x18\x02 \x01(\x12\x42}\xc2Hz\nx\n\tsint64.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa2\x01\n\x03lte\x18\x03 \x01(\x12\x42\x8d\x01\xc2H\x89\x01\n\x86\x01\n\nsint64.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xa0\x07\n\x02gt\x18\x04 \x01(\x12\x42\x8d\x07\xc2H\x89\x07\n{\n\tsint64.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb4\x01\n\x0csint64.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbc\x01\n\x16sint64.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc4\x01\n\rsint64.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcc\x01\n\x17sint64.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xed\x07\n\x03gte\x18\x05 \x01(\x12\x42\xd8\x07\xc2H\xd4\x07\n\x89\x01\n\nsint64.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc3\x01\n\rsint64.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcb\x01\n\x17sint64.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd3\x01\n\x0esint64.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdb\x01\n\x18sint64.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x84\x01\n\x02in\x18\x06 \x03(\x12\x42t\xc2Hq\no\n\tsint64.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12~\n\x06not_in\x18\x07 \x03(\x12\x42g\xc2Hd\nb\n\rsint64.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x35\n\x07\x65xample\x18\x08 \x03(\x12\x42\x1b\xc2H\x18\n\x16\n\x0esint64.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xdc\x15\n\x0c\x46ixed32Rules\x12\x8c\x01\n\x05\x63onst\x18\x01 \x01(\x07\x42v\xc2Hs\nq\n\rfixed32.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x90\x01\n\x02lt\x18\x02 \x01(\x07\x42~\xc2H{\ny\n\nfixed32.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa3\x01\n\x03lte\x18\x03 \x01(\x07\x42\x8e\x01\xc2H\x8a\x01\n\x87\x01\n\x0b\x66ixed32.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xa5\x07\n\x02gt\x18\x04 \x01(\x07\x42\x92\x07\xc2H\x8e\x07\n|\n\nfixed32.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb5\x01\n\rfixed32.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbd\x01\n\x17\x66ixed32.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc5\x01\n\x0e\x66ixed32.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcd\x01\n\x18\x66ixed32.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xf2\x07\n\x03gte\x18\x05 \x01(\x07\x42\xdd\x07\xc2H\xd9\x07\n\x8a\x01\n\x0b\x66ixed32.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc4\x01\n\x0e\x66ixed32.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcc\x01\n\x18\x66ixed32.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd4\x01\n\x0f\x66ixed32.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdc\x01\n\x19\x66ixed32.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x85\x01\n\x02in\x18\x06 \x03(\x07\x42u\xc2Hr\np\n\nfixed32.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12\x7f\n\x06not_in\x18\x07 \x03(\x07\x42h\xc2He\nc\n\x0e\x66ixed32.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x36\n\x07\x65xample\x18\x08 \x03(\x07\x42\x1c\xc2H\x19\n\x17\n\x0f\x66ixed32.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xdc\x15\n\x0c\x46ixed64Rules\x12\x8c\x01\n\x05\x63onst\x18\x01 \x01(\x06\x42v\xc2Hs\nq\n\rfixed64.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x90\x01\n\x02lt\x18\x02 \x01(\x06\x42~\xc2H{\ny\n\nfixed64.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa3\x01\n\x03lte\x18\x03 \x01(\x06\x42\x8e\x01\xc2H\x8a\x01\n\x87\x01\n\x0b\x66ixed64.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xa5\x07\n\x02gt\x18\x04 \x01(\x06\x42\x92\x07\xc2H\x8e\x07\n|\n\nfixed64.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb5\x01\n\rfixed64.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbd\x01\n\x17\x66ixed64.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc5\x01\n\x0e\x66ixed64.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcd\x01\n\x18\x66ixed64.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xf2\x07\n\x03gte\x18\x05 \x01(\x06\x42\xdd\x07\xc2H\xd9\x07\n\x8a\x01\n\x0b\x66ixed64.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc4\x01\n\x0e\x66ixed64.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcc\x01\n\x18\x66ixed64.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd4\x01\n\x0f\x66ixed64.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdc\x01\n\x19\x66ixed64.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x85\x01\n\x02in\x18\x06 \x03(\x06\x42u\xc2Hr\np\n\nfixed64.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12\x7f\n\x06not_in\x18\x07 \x03(\x06\x42h\xc2He\nc\n\x0e\x66ixed64.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x36\n\x07\x65xample\x18\x08 \x03(\x06\x42\x1c\xc2H\x19\n\x17\n\x0f\x66ixed64.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xee\x15\n\rSFixed32Rules\x12\x8d\x01\n\x05\x63onst\x18\x01 \x01(\x0f\x42w\xc2Ht\nr\n\x0esfixed32.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x91\x01\n\x02lt\x18\x02 \x01(\x0f\x42\x7f\xc2H|\nz\n\x0bsfixed32.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa4\x01\n\x03lte\x18\x03 \x01(\x0f\x42\x8f\x01\xc2H\x8b\x01\n\x88\x01\n\x0csfixed32.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xaa\x07\n\x02gt\x18\x04 \x01(\x0f\x42\x97\x07\xc2H\x93\x07\n}\n\x0bsfixed32.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb6\x01\n\x0esfixed32.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbe\x01\n\x18sfixed32.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc6\x01\n\x0fsfixed32.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xce\x01\n\x19sfixed32.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xf7\x07\n\x03gte\x18\x05 \x01(\x0f\x42\xe2\x07\xc2H\xde\x07\n\x8b\x01\n\x0csfixed32.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc5\x01\n\x0fsfixed32.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcd\x01\n\x19sfixed32.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd5\x01\n\x10sfixed32.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdd\x01\n\x1asfixed32.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x86\x01\n\x02in\x18\x06 \x03(\x0f\x42v\xc2Hs\nq\n\x0bsfixed32.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12\x80\x01\n\x06not_in\x18\x07 \x03(\x0f\x42i\xc2Hf\nd\n\x0fsfixed32.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x37\n\x07\x65xample\x18\x08 \x03(\x0f\x42\x1d\xc2H\x1a\n\x18\n\x10sfixed32.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xee\x15\n\rSFixed64Rules\x12\x8d\x01\n\x05\x63onst\x18\x01 \x01(\x10\x42w\xc2Ht\nr\n\x0esfixed64.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x91\x01\n\x02lt\x18\x02 \x01(\x10\x42\x7f\xc2H|\nz\n\x0bsfixed64.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xa4\x01\n\x03lte\x18\x03 \x01(\x10\x42\x8f\x01\xc2H\x8b\x01\n\x88\x01\n\x0csfixed64.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xaa\x07\n\x02gt\x18\x04 \x01(\x10\x42\x97\x07\xc2H\x93\x07\n}\n\x0bsfixed64.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb6\x01\n\x0esfixed64.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbe\x01\n\x18sfixed64.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc6\x01\n\x0fsfixed64.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xce\x01\n\x19sfixed64.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xf7\x07\n\x03gte\x18\x05 \x01(\x10\x42\xe2\x07\xc2H\xde\x07\n\x8b\x01\n\x0csfixed64.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc5\x01\n\x0fsfixed64.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcd\x01\n\x19sfixed64.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd5\x01\n\x10sfixed64.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdd\x01\n\x1asfixed64.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x86\x01\n\x02in\x18\x06 \x03(\x10\x42v\xc2Hs\nq\n\x0bsfixed64.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12\x80\x01\n\x06not_in\x18\x07 \x03(\x10\x42i\xc2Hf\nd\n\x0fsfixed64.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x37\n\x07\x65xample\x18\x08 \x03(\x10\x42\x1d\xc2H\x1a\n\x18\n\x10sfixed64.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xd7\x01\n\tBoolRules\x12\x89\x01\n\x05\x63onst\x18\x01 \x01(\x08\x42s\xc2Hp\nn\n\nbool.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x33\n\x07\x65xample\x18\x02 \x03(\x08\x42\x19\xc2H\x16\n\x14\n\x0c\x62ool.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"\xd1\x39\n\x0bStringRules\x12\x8d\x01\n\x05\x63onst\x18\x01 \x01(\tBw\xc2Ht\nr\n\x0cstring.const\x1a\x62this != getField(rules, \'const\') ? \'value must equal `%s`\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x83\x01\n\x03len\x18\x13 \x01(\x04\x42q\xc2Hn\nl\n\nstring.len\x1a^uint(this.size()) != rules.len ? \'value length must be %s characters\'.format([rules.len]) : \'\'R\x03len\x12\xa1\x01\n\x07min_len\x18\x02 \x01(\x04\x42\x87\x01\xc2H\x83\x01\n\x80\x01\n\x0estring.min_len\x1anuint(this.size()) < rules.min_len ? \'value length must be at least %s characters\'.format([rules.min_len]) : \'\'R\x06minLen\x12\x9f\x01\n\x07max_len\x18\x03 \x01(\x04\x42\x85\x01\xc2H\x81\x01\n\x7f\n\x0estring.max_len\x1amuint(this.size()) > rules.max_len ? \'value length must be at most %s characters\'.format([rules.max_len]) : \'\'R\x06maxLen\x12\xa5\x01\n\tlen_bytes\x18\x14 \x01(\x04\x42\x87\x01\xc2H\x83\x01\n\x80\x01\n\x10string.len_bytes\x1aluint(bytes(this).size()) != rules.len_bytes ? \'value length must be %s bytes\'.format([rules.len_bytes]) : \'\'R\x08lenBytes\x12\xad\x01\n\tmin_bytes\x18\x04 \x01(\x04\x42\x8f\x01\xc2H\x8b\x01\n\x88\x01\n\x10string.min_bytes\x1atuint(bytes(this).size()) < rules.min_bytes ? \'value length must be at least %s bytes\'.format([rules.min_bytes]) : \'\'R\x08minBytes\x12\xac\x01\n\tmax_bytes\x18\x05 \x01(\x04\x42\x8e\x01\xc2H\x8a\x01\n\x87\x01\n\x10string.max_bytes\x1asuint(bytes(this).size()) > rules.max_bytes ? \'value length must be at most %s bytes\'.format([rules.max_bytes]) : \'\'R\x08maxBytes\x12\x96\x01\n\x07pattern\x18\x06 \x01(\tB|\xc2Hy\nw\n\x0estring.pattern\x1a\x65!this.matches(rules.pattern) ? \'value does not match regex pattern `%s`\'.format([rules.pattern]) : \'\'R\x07pattern\x12\x8c\x01\n\x06prefix\x18\x07 \x01(\tBt\xc2Hq\no\n\rstring.prefix\x1a^!this.startsWith(rules.prefix) ? \'value does not have prefix `%s`\'.format([rules.prefix]) : \'\'R\x06prefix\x12\x8a\x01\n\x06suffix\x18\x08 \x01(\tBr\xc2Ho\nm\n\rstring.suffix\x1a\\!this.endsWith(rules.suffix) ? \'value does not have suffix `%s`\'.format([rules.suffix]) : \'\'R\x06suffix\x12\x9a\x01\n\x08\x63ontains\x18\t \x01(\tB~\xc2H{\ny\n\x0fstring.contains\x1a\x66!this.contains(rules.contains) ? \'value does not contain substring `%s`\'.format([rules.contains]) : \'\'R\x08\x63ontains\x12\xa5\x01\n\x0cnot_contains\x18\x17 \x01(\tB\x81\x01\xc2H~\n|\n\x13string.not_contains\x1a\x65this.contains(rules.not_contains) ? \'value contains substring `%s`\'.format([rules.not_contains]) : \'\'R\x0bnotContains\x12\x84\x01\n\x02in\x18\n \x03(\tBt\xc2Hq\no\n\tstring.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12~\n\x06not_in\x18\x0b \x03(\tBg\xc2Hd\nb\n\rstring.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\xe6\x01\n\x05\x65mail\x18\x0c \x01(\x08\x42\xcd\x01\xc2H\xc9\x01\na\n\x0cstring.email\x12#value must be a valid email address\x1a,!rules.email || this == \'\' || this.isEmail()\nd\n\x12string.email_empty\x12\x32value is empty, which is not a valid email address\x1a\x1a!rules.email || this != \'\'H\x00R\x05\x65mail\x12\xf1\x01\n\x08hostname\x18\r \x01(\x08\x42\xd2\x01\xc2H\xce\x01\ne\n\x0fstring.hostname\x12\x1evalue must be a valid hostname\x1a\x32!rules.hostname || this == \'\' || this.isHostname()\ne\n\x15string.hostname_empty\x12-value is empty, which is not a valid hostname\x1a\x1d!rules.hostname || this != \'\'H\x00R\x08hostname\x12\xcb\x01\n\x02ip\x18\x0e \x01(\x08\x42\xb8\x01\xc2H\xb4\x01\nU\n\tstring.ip\x12 value must be a valid IP address\x1a&!rules.ip || this == \'\' || this.isIp()\n[\n\x0fstring.ip_empty\x12/value is empty, which is not a valid IP address\x1a\x17!rules.ip || this != \'\'H\x00R\x02ip\x12\xdc\x01\n\x04ipv4\x18\x0f \x01(\x08\x42\xc5\x01\xc2H\xc1\x01\n\\\n\x0bstring.ipv4\x12\"value must be a valid IPv4 address\x1a)!rules.ipv4 || this == \'\' || this.isIp(4)\na\n\x11string.ipv4_empty\x12\x31value is empty, which is not a valid IPv4 address\x1a\x19!rules.ipv4 || this != \'\'H\x00R\x04ipv4\x12\xdc\x01\n\x04ipv6\x18\x10 \x01(\x08\x42\xc5\x01\xc2H\xc1\x01\n\\\n\x0bstring.ipv6\x12\"value must be a valid IPv6 address\x1a)!rules.ipv6 || this == \'\' || this.isIp(6)\na\n\x11string.ipv6_empty\x12\x31value is empty, which is not a valid IPv6 address\x1a\x19!rules.ipv6 || this != \'\'H\x00R\x04ipv6\x12\xc4\x01\n\x03uri\x18\x11 \x01(\x08\x42\xaf\x01\xc2H\xab\x01\nQ\n\nstring.uri\x12\x19value must be a valid URI\x1a(!rules.uri || this == \'\' || this.isUri()\nV\n\x10string.uri_empty\x12(value is empty, which is not a valid URI\x1a\x18!rules.uri || this != \'\'H\x00R\x03uri\x12x\n\x07uri_ref\x18\x12 \x01(\x08\x42]\xc2HZ\nX\n\x0estring.uri_ref\x12#value must be a valid URI Reference\x1a!!rules.uri_ref || this.isUriRef()H\x00R\x06uriRef\x12\x99\x02\n\x07\x61\x64\x64ress\x18\x15 \x01(\x08\x42\xfc\x01\xc2H\xf8\x01\n\x81\x01\n\x0estring.address\x12-value must be a valid hostname, or ip address\x1a@!rules.address || this == \'\' || this.isHostname() || this.isIp()\nr\n\x14string.address_empty\x12!rules.ipv4_with_prefixlen || this == \'\' || this.isIpPrefix(4)\n\x92\x01\n string.ipv4_with_prefixlen_empty\x12\x44value is empty, which is not a valid IPv4 address with prefix length\x1a(!rules.ipv4_with_prefixlen || this != \'\'H\x00R\x11ipv4WithPrefixlen\x12\xe2\x02\n\x13ipv6_with_prefixlen\x18\x1c \x01(\x08\x42\xaf\x02\xc2H\xab\x02\n\x93\x01\n\x1astring.ipv6_with_prefixlen\x12\x35value must be a valid IPv6 address with prefix length\x1a>!rules.ipv6_with_prefixlen || this == \'\' || this.isIpPrefix(6)\n\x92\x01\n string.ipv6_with_prefixlen_empty\x12\x44value is empty, which is not a valid IPv6 address with prefix length\x1a(!rules.ipv6_with_prefixlen || this != \'\'H\x00R\x11ipv6WithPrefixlen\x12\xfc\x01\n\tip_prefix\x18\x1d \x01(\x08\x42\xdc\x01\xc2H\xd8\x01\nl\n\x10string.ip_prefix\x12\x1fvalue must be a valid IP prefix\x1a\x37!rules.ip_prefix || this == \'\' || this.isIpPrefix(true)\nh\n\x16string.ip_prefix_empty\x12.value is empty, which is not a valid IP prefix\x1a\x1e!rules.ip_prefix || this != \'\'H\x00R\x08ipPrefix\x12\x8f\x02\n\x0bipv4_prefix\x18\x1e \x01(\x08\x42\xeb\x01\xc2H\xe7\x01\nu\n\x12string.ipv4_prefix\x12!value must be a valid IPv4 prefix\x1a!rules.host_and_port || this == \'\' || this.isHostAndPort(true)\ny\n\x1astring.host_and_port_empty\x12\x37value is empty, which is not a valid host and port pair\x1a\"!rules.host_and_port || this != \'\'H\x00R\x0bhostAndPort\x12\xb8\x05\n\x10well_known_regex\x18\x18 \x01(\x0e\x32\x18.buf.validate.KnownRegexB\xf1\x04\xc2H\xed\x04\n\xf0\x01\n#string.well_known_regex.header_name\x12&value must be a valid HTTP header name\x1a\xa0\x01rules.well_known_regex != 1 || this == \'\' || this.matches(!has(rules.strict) || rules.strict ?\'^:?[0-9a-zA-Z!#$%&\\\'*+-.^_|~\\x60]+$\' :\'^[^\\u0000\\u000A\\u000D]+$\')\n\x8d\x01\n)string.well_known_regex.header_name_empty\x12\x35value is empty, which is not a valid HTTP header name\x1a)rules.well_known_regex != 1 || this != \'\'\n\xe7\x01\n$string.well_known_regex.header_value\x12\'value must be a valid HTTP header value\x1a\x95\x01rules.well_known_regex != 2 || this.matches(!has(rules.strict) || rules.strict ?\'^[^\\u0000-\\u0008\\u000A-\\u001F\\u007F]*$\' :\'^[^\\u0000\\u000A\\u000D]*$\')H\x00R\x0ewellKnownRegex\x12\x16\n\x06strict\x18\x19 \x01(\x08R\x06strict\x12\x35\n\x07\x65xample\x18\" \x03(\tB\x1b\xc2H\x18\n\x16\n\x0estring.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0c\n\nwell_known\"\xce\x11\n\nBytesRules\x12\x87\x01\n\x05\x63onst\x18\x01 \x01(\x0c\x42q\xc2Hn\nl\n\x0b\x62ytes.const\x1a]this != getField(rules, \'const\') ? \'value must be %x\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12}\n\x03len\x18\r \x01(\x04\x42k\xc2Hh\nf\n\tbytes.len\x1aYuint(this.size()) != rules.len ? \'value length must be %s bytes\'.format([rules.len]) : \'\'R\x03len\x12\x98\x01\n\x07min_len\x18\x02 \x01(\x04\x42\x7f\xc2H|\nz\n\rbytes.min_len\x1aiuint(this.size()) < rules.min_len ? \'value length must be at least %s bytes\'.format([rules.min_len]) : \'\'R\x06minLen\x12\x90\x01\n\x07max_len\x18\x03 \x01(\x04\x42w\xc2Ht\nr\n\rbytes.max_len\x1a\x61uint(this.size()) > rules.max_len ? \'value must be at most %s bytes\'.format([rules.max_len]) : \'\'R\x06maxLen\x12\x99\x01\n\x07pattern\x18\x04 \x01(\tB\x7f\xc2H|\nz\n\rbytes.pattern\x1ai!string(this).matches(rules.pattern) ? \'value must match regex pattern `%s`\'.format([rules.pattern]) : \'\'R\x07pattern\x12\x89\x01\n\x06prefix\x18\x05 \x01(\x0c\x42q\xc2Hn\nl\n\x0c\x62ytes.prefix\x1a\\!this.startsWith(rules.prefix) ? \'value does not have prefix %x\'.format([rules.prefix]) : \'\'R\x06prefix\x12\x87\x01\n\x06suffix\x18\x06 \x01(\x0c\x42o\xc2Hl\nj\n\x0c\x62ytes.suffix\x1aZ!this.endsWith(rules.suffix) ? \'value does not have suffix %x\'.format([rules.suffix]) : \'\'R\x06suffix\x12\x8d\x01\n\x08\x63ontains\x18\x07 \x01(\x0c\x42q\xc2Hn\nl\n\x0e\x62ytes.contains\x1aZ!this.contains(rules.contains) ? \'value does not contain %x\'.format([rules.contains]) : \'\'R\x08\x63ontains\x12\xab\x01\n\x02in\x18\x08 \x03(\x0c\x42\x9a\x01\xc2H\x96\x01\n\x93\x01\n\x08\x62ytes.in\x1a\x86\x01getField(rules, \'in\').size() > 0 && !(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12}\n\x06not_in\x18\t \x03(\x0c\x42\x66\xc2Hc\na\n\x0c\x62ytes.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\xef\x01\n\x02ip\x18\n \x01(\x08\x42\xdc\x01\xc2H\xd8\x01\nt\n\x08\x62ytes.ip\x12 value must be a valid IP address\x1a\x46!rules.ip || this.size() == 0 || this.size() == 4 || this.size() == 16\n`\n\x0e\x62ytes.ip_empty\x12/value is empty, which is not a valid IP address\x1a\x1d!rules.ip || this.size() != 0H\x00R\x02ip\x12\xea\x01\n\x04ipv4\x18\x0b \x01(\x08\x42\xd3\x01\xc2H\xcf\x01\ne\n\nbytes.ipv4\x12\"value must be a valid IPv4 address\x1a\x33!rules.ipv4 || this.size() == 0 || this.size() == 4\nf\n\x10\x62ytes.ipv4_empty\x12\x31value is empty, which is not a valid IPv4 address\x1a\x1f!rules.ipv4 || this.size() != 0H\x00R\x04ipv4\x12\xeb\x01\n\x04ipv6\x18\x0c \x01(\x08\x42\xd4\x01\xc2H\xd0\x01\nf\n\nbytes.ipv6\x12\"value must be a valid IPv6 address\x1a\x34!rules.ipv6 || this.size() == 0 || this.size() == 16\nf\n\x10\x62ytes.ipv6_empty\x12\x31value is empty, which is not a valid IPv6 address\x1a\x1f!rules.ipv6 || this.size() != 0H\x00R\x04ipv6\x12\x34\n\x07\x65xample\x18\x0e \x03(\x0c\x42\x1a\xc2H\x17\n\x15\n\rbytes.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0c\n\nwell_known\"\xfd\x03\n\tEnumRules\x12\x89\x01\n\x05\x63onst\x18\x01 \x01(\x05\x42s\xc2Hp\nn\n\nenum.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12!\n\x0c\x64\x65\x66ined_only\x18\x02 \x01(\x08R\x0b\x64\x65\x66inedOnly\x12\x82\x01\n\x02in\x18\x03 \x03(\x05\x42r\xc2Ho\nm\n\x07\x65num.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12|\n\x06not_in\x18\x04 \x03(\x05\x42\x65\xc2Hb\n`\n\x0b\x65num.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\x33\n\x07\x65xample\x18\x05 \x03(\x05\x42\x19\xc2H\x16\n\x14\n\x0c\x65num.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"\x9e\x04\n\rRepeatedRules\x12\xa8\x01\n\tmin_items\x18\x01 \x01(\x04\x42\x8a\x01\xc2H\x86\x01\n\x83\x01\n\x12repeated.min_items\x1amuint(this.size()) < rules.min_items ? \'value must contain at least %d item(s)\'.format([rules.min_items]) : \'\'R\x08minItems\x12\xac\x01\n\tmax_items\x18\x02 \x01(\x04\x42\x8e\x01\xc2H\x8a\x01\n\x87\x01\n\x12repeated.max_items\x1aquint(this.size()) > rules.max_items ? \'value must contain no more than %s item(s)\'.format([rules.max_items]) : \'\'R\x08maxItems\x12x\n\x06unique\x18\x03 \x01(\x08\x42`\xc2H]\n[\n\x0frepeated.unique\x12(repeated value must contain unique items\x1a\x1e!rules.unique || this.unique()R\x06unique\x12.\n\x05items\x18\x04 \x01(\x0b\x32\x18.buf.validate.FieldRulesR\x05items*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"\xac\x03\n\x08MapRules\x12\x99\x01\n\tmin_pairs\x18\x01 \x01(\x04\x42|\xc2Hy\nw\n\rmap.min_pairs\x1a\x66uint(this.size()) < rules.min_pairs ? \'map must be at least %d entries\'.format([rules.min_pairs]) : \'\'R\x08minPairs\x12\x98\x01\n\tmax_pairs\x18\x02 \x01(\x04\x42{\xc2Hx\nv\n\rmap.max_pairs\x1a\x65uint(this.size()) > rules.max_pairs ? \'map must be at most %d entries\'.format([rules.max_pairs]) : \'\'R\x08maxPairs\x12,\n\x04keys\x18\x04 \x01(\x0b\x32\x18.buf.validate.FieldRulesR\x04keys\x12\x30\n\x06values\x18\x05 \x01(\x0b\x32\x18.buf.validate.FieldRulesR\x06values*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"1\n\x08\x41nyRules\x12\x0e\n\x02in\x18\x02 \x03(\tR\x02in\x12\x15\n\x06not_in\x18\x03 \x03(\tR\x05notIn\"\xc6\x17\n\rDurationRules\x12\xa8\x01\n\x05\x63onst\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationBw\xc2Ht\nr\n\x0e\x64uration.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\xac\x01\n\x02lt\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x7f\xc2H|\nz\n\x0b\x64uration.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xbf\x01\n\x03lte\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationB\x8f\x01\xc2H\x8b\x01\n\x88\x01\n\x0c\x64uration.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xc5\x07\n\x02gt\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationB\x97\x07\xc2H\x93\x07\n}\n\x0b\x64uration.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb6\x01\n\x0e\x64uration.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbe\x01\n\x18\x64uration.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc6\x01\n\x0f\x64uration.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xce\x01\n\x19\x64uration.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\x92\x08\n\x03gte\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationB\xe2\x07\xc2H\xde\x07\n\x8b\x01\n\x0c\x64uration.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc5\x01\n\x0f\x64uration.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcd\x01\n\x19\x64uration.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd5\x01\n\x10\x64uration.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xdd\x01\n\x1a\x64uration.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\xa1\x01\n\x02in\x18\x07 \x03(\x0b\x32\x19.google.protobuf.DurationBv\xc2Hs\nq\n\x0b\x64uration.in\x1a\x62!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12\x9b\x01\n\x06not_in\x18\x08 \x03(\x0b\x32\x19.google.protobuf.DurationBi\xc2Hf\nd\n\x0f\x64uration.not_in\x1aQthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12R\n\x07\x65xample\x18\t \x03(\x0b\x32\x19.google.protobuf.DurationB\x1d\xc2H\x1a\n\x18\n\x10\x64uration.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"\xca\x18\n\x0eTimestampRules\x12\xaa\x01\n\x05\x63onst\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampBx\xc2Hu\ns\n\x0ftimestamp.const\x1a`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\xaf\x01\n\x02lt\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x80\x01\xc2H}\n{\n\x0ctimestamp.lt\x1ak!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xc1\x01\n\x03lte\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x90\x01\xc2H\x8c\x01\n\x89\x01\n\rtimestamp.lte\x1ax!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12s\n\x06lt_now\x18\x07 \x01(\x08\x42Z\xc2HW\nU\n\x10timestamp.lt_now\x1a\x41(rules.lt_now && this > now) ? \'value must be less than now\' : \'\'H\x00R\x05ltNow\x12\xcb\x07\n\x02gt\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x9c\x07\xc2H\x98\x07\n~\n\x0ctimestamp.gt\x1an!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\xb7\x01\n\x0ftimestamp.gt_lt\x1a\xa3\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'value must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbf\x01\n\x19timestamp.gt_lt_exclusive\x1a\xa1\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'value must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc7\x01\n\x10timestamp.gt_lte\x1a\xb2\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'value must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xcf\x01\n\x1atimestamp.gt_lte_exclusive\x1a\xb0\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'value must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\x98\x08\n\x03gte\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xe7\x07\xc2H\xe3\x07\n\x8c\x01\n\rtimestamp.gte\x1a{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc6\x01\n\x10timestamp.gte_lt\x1a\xb1\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xce\x01\n\x1atimestamp.gte_lt_exclusive\x1a\xaf\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd6\x01\n\x11timestamp.gte_lte\x1a\xc0\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xde\x01\n\x1btimestamp.gte_lte_exclusive\x1a\xbe\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12v\n\x06gt_now\x18\x08 \x01(\x08\x42]\xc2HZ\nX\n\x10timestamp.gt_now\x1a\x44(rules.gt_now && this < now) ? \'value must be greater than now\' : \'\'H\x01R\x05gtNow\x12\xc0\x01\n\x06within\x18\t \x01(\x0b\x32\x19.google.protobuf.DurationB\x8c\x01\xc2H\x88\x01\n\x85\x01\n\x10timestamp.within\x1aqthis < now-rules.within || this > now+rules.within ? \'value must be within %s of now\'.format([rules.within]) : \'\'R\x06within\x12T\n\x07\x65xample\x18\n \x03(\x0b\x32\x1a.google.protobuf.TimestampB\x1e\xc2H\x1b\n\x19\n\x11timestamp.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\x0b\n\tless_thanB\x0e\n\x0cgreater_than\"E\n\nViolations\x12\x37\n\nviolations\x18\x01 \x03(\x0b\x32\x17.buf.validate.ViolationR\nviolations\"\xc5\x01\n\tViolation\x12-\n\x05\x66ield\x18\x05 \x01(\x0b\x32\x17.buf.validate.FieldPathR\x05\x66ield\x12+\n\x04rule\x18\x06 \x01(\x0b\x32\x17.buf.validate.FieldPathR\x04rule\x12\x17\n\x07rule_id\x18\x02 \x01(\tR\x06ruleId\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\x12\x17\n\x07\x66or_key\x18\x04 \x01(\x08R\x06\x66orKeyJ\x04\x08\x01\x10\x02R\nfield_path\"G\n\tFieldPath\x12:\n\x08\x65lements\x18\x01 \x03(\x0b\x32\x1e.buf.validate.FieldPathElementR\x08\x65lements\"\xcc\x03\n\x10\x46ieldPathElement\x12!\n\x0c\x66ield_number\x18\x01 \x01(\x05R\x0b\x66ieldNumber\x12\x1d\n\nfield_name\x18\x02 \x01(\tR\tfieldName\x12I\n\nfield_type\x18\x03 \x01(\x0e\x32*.google.protobuf.FieldDescriptorProto.TypeR\tfieldType\x12\x45\n\x08key_type\x18\x04 \x01(\x0e\x32*.google.protobuf.FieldDescriptorProto.TypeR\x07keyType\x12I\n\nvalue_type\x18\x05 \x01(\x0e\x32*.google.protobuf.FieldDescriptorProto.TypeR\tvalueType\x12\x16\n\x05index\x18\x06 \x01(\x04H\x00R\x05index\x12\x1b\n\x08\x62ool_key\x18\x07 \x01(\x08H\x00R\x07\x62oolKey\x12\x19\n\x07int_key\x18\x08 \x01(\x03H\x00R\x06intKey\x12\x1b\n\x08uint_key\x18\t \x01(\x04H\x00R\x07uintKey\x12\x1f\n\nstring_key\x18\n \x01(\tH\x00R\tstringKeyB\x0b\n\tsubscript*\x87\x01\n\x06Ignore\x12\x16\n\x12IGNORE_UNSPECIFIED\x10\x00\x12\x19\n\x15IGNORE_IF_UNPOPULATED\x10\x01\x12\x1b\n\x17IGNORE_IF_DEFAULT_VALUE\x10\x02\x12\x11\n\rIGNORE_ALWAYS\x10\x03*\x1aIGNORE_EMPTYIGNORE_DEFAULT*n\n\nKnownRegex\x12\x1b\n\x17KNOWN_REGEX_UNSPECIFIED\x10\x00\x12 \n\x1cKNOWN_REGEX_HTTP_HEADER_NAME\x10\x01\x12!\n\x1dKNOWN_REGEX_HTTP_HEADER_VALUE\x10\x02:V\n\x07message\x12\x1f.google.protobuf.MessageOptions\x18\x87\t \x01(\x0b\x32\x1a.buf.validate.MessageRulesR\x07message:N\n\x05oneof\x12\x1d.google.protobuf.OneofOptions\x18\x87\t \x01(\x0b\x32\x18.buf.validate.OneofRulesR\x05oneof:N\n\x05\x66ield\x12\x1d.google.protobuf.FieldOptions\x18\x87\t \x01(\x0b\x32\x18.buf.validate.FieldRulesR\x05\x66ield:]\n\npredefined\x12\x1d.google.protobuf.FieldOptions\x18\x88\t \x01(\x0b\x32\x1d.buf.validate.PredefinedRulesR\npredefinedB\xbb\x01\n\x10\x63om.buf.validateB\rValidateProtoP\x01ZGbuf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate\xa2\x02\x03\x42VX\xaa\x02\x0c\x42uf.Validate\xca\x02\x0c\x42uf\\Validate\xe2\x02\x18\x42uf\\Validate\\GPBMetadata\xea\x02\rBuf::Validate') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -50,7 +50,7 @@ _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020com.buf.validateB\rValidateProtoP\001ZGbuf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate\242\002\003BVX\252\002\014Buf.Validate\312\002\014Buf\\Validate\342\002\030Buf\\Validate\\GPBMetadata\352\002\rBuf::Validate' _globals['_FLOATRULES'].fields_by_name['const']._loaded_options = None - _globals['_FLOATRULES'].fields_by_name['const']._serialized_options = b'\302HW\nU\n\013float.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_FLOATRULES'].fields_by_name['const']._serialized_options = b'\302Hq\no\n\013float.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_FLOATRULES'].fields_by_name['lt']._loaded_options = None _globals['_FLOATRULES'].fields_by_name['lt']._serialized_options = b'\302H\214\001\n\211\001\n\010float.lt\032}!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_FLOATRULES'].fields_by_name['lte']._loaded_options = None @@ -60,7 +60,7 @@ _globals['_FLOATRULES'].fields_by_name['gte']._loaded_options = None _globals['_FLOATRULES'].fields_by_name['gte']._serialized_options = b'\302H\246\010\n\233\001\n\tfloat.gte\032\215\001!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\322\001\n\014float.gte_lt\032\301\001has(rules.lt) && rules.lt >= rules.gte && (this.isNan() || this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\334\001\n\026float.gte_lt_exclusive\032\301\001has(rules.lt) && rules.lt < rules.gte && (this.isNan() || (rules.lt <= this && this < rules.gte))? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\342\001\n\rfloat.gte_lte\032\320\001has(rules.lte) && rules.lte >= rules.gte && (this.isNan() || this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\354\001\n\027float.gte_lte_exclusive\032\320\001has(rules.lte) && rules.lte < rules.gte && (this.isNan() || (rules.lte < this && this < rules.gte))? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_FLOATRULES'].fields_by_name['in']._loaded_options = None - _globals['_FLOATRULES'].fields_by_name['in']._serialized_options = b'\302Hf\nd\n\010float.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_FLOATRULES'].fields_by_name['in']._serialized_options = b'\302Hp\nn\n\010float.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_FLOATRULES'].fields_by_name['not_in']._loaded_options = None _globals['_FLOATRULES'].fields_by_name['not_in']._serialized_options = b'\302Hc\na\n\014float.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_FLOATRULES'].fields_by_name['finite']._loaded_options = None @@ -68,7 +68,7 @@ _globals['_FLOATRULES'].fields_by_name['example']._loaded_options = None _globals['_FLOATRULES'].fields_by_name['example']._serialized_options = b'\302H\027\n\025\n\rfloat.example\032\004true' _globals['_DOUBLERULES'].fields_by_name['const']._loaded_options = None - _globals['_DOUBLERULES'].fields_by_name['const']._serialized_options = b'\302HX\nV\n\014double.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_DOUBLERULES'].fields_by_name['const']._serialized_options = b'\302Hr\np\n\014double.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_DOUBLERULES'].fields_by_name['lt']._loaded_options = None _globals['_DOUBLERULES'].fields_by_name['lt']._serialized_options = b'\302H\215\001\n\212\001\n\tdouble.lt\032}!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_DOUBLERULES'].fields_by_name['lte']._loaded_options = None @@ -78,7 +78,7 @@ _globals['_DOUBLERULES'].fields_by_name['gte']._loaded_options = None _globals['_DOUBLERULES'].fields_by_name['gte']._serialized_options = b'\302H\253\010\n\234\001\n\ndouble.gte\032\215\001!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\323\001\n\rdouble.gte_lt\032\301\001has(rules.lt) && rules.lt >= rules.gte && (this.isNan() || this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\335\001\n\027double.gte_lt_exclusive\032\301\001has(rules.lt) && rules.lt < rules.gte && (this.isNan() || (rules.lt <= this && this < rules.gte))? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\343\001\n\016double.gte_lte\032\320\001has(rules.lte) && rules.lte >= rules.gte && (this.isNan() || this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\355\001\n\030double.gte_lte_exclusive\032\320\001has(rules.lte) && rules.lte < rules.gte && (this.isNan() || (rules.lte < this && this < rules.gte))? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_DOUBLERULES'].fields_by_name['in']._loaded_options = None - _globals['_DOUBLERULES'].fields_by_name['in']._serialized_options = b'\302Hg\ne\n\tdouble.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_DOUBLERULES'].fields_by_name['in']._serialized_options = b'\302Hq\no\n\tdouble.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_DOUBLERULES'].fields_by_name['not_in']._loaded_options = None _globals['_DOUBLERULES'].fields_by_name['not_in']._serialized_options = b'\302Hd\nb\n\rdouble.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_DOUBLERULES'].fields_by_name['finite']._loaded_options = None @@ -86,7 +86,7 @@ _globals['_DOUBLERULES'].fields_by_name['example']._loaded_options = None _globals['_DOUBLERULES'].fields_by_name['example']._serialized_options = b'\302H\030\n\026\n\016double.example\032\004true' _globals['_INT32RULES'].fields_by_name['const']._loaded_options = None - _globals['_INT32RULES'].fields_by_name['const']._serialized_options = b'\302HW\nU\n\013int32.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_INT32RULES'].fields_by_name['const']._serialized_options = b'\302Hq\no\n\013int32.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_INT32RULES'].fields_by_name['lt']._loaded_options = None _globals['_INT32RULES'].fields_by_name['lt']._serialized_options = b'\302Hy\nw\n\010int32.lt\032k!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_INT32RULES'].fields_by_name['lte']._loaded_options = None @@ -96,13 +96,13 @@ _globals['_INT32RULES'].fields_by_name['gte']._loaded_options = None _globals['_INT32RULES'].fields_by_name['gte']._serialized_options = b'\302H\317\007\n\210\001\n\tint32.gte\032{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\302\001\n\014int32.gte_lt\032\261\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\312\001\n\026int32.gte_lt_exclusive\032\257\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\322\001\n\rint32.gte_lte\032\300\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\332\001\n\027int32.gte_lte_exclusive\032\276\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_INT32RULES'].fields_by_name['in']._loaded_options = None - _globals['_INT32RULES'].fields_by_name['in']._serialized_options = b'\302Hf\nd\n\010int32.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_INT32RULES'].fields_by_name['in']._serialized_options = b'\302Hp\nn\n\010int32.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_INT32RULES'].fields_by_name['not_in']._loaded_options = None _globals['_INT32RULES'].fields_by_name['not_in']._serialized_options = b'\302Hc\na\n\014int32.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_INT32RULES'].fields_by_name['example']._loaded_options = None _globals['_INT32RULES'].fields_by_name['example']._serialized_options = b'\302H\027\n\025\n\rint32.example\032\004true' _globals['_INT64RULES'].fields_by_name['const']._loaded_options = None - _globals['_INT64RULES'].fields_by_name['const']._serialized_options = b'\302HW\nU\n\013int64.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_INT64RULES'].fields_by_name['const']._serialized_options = b'\302Hq\no\n\013int64.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_INT64RULES'].fields_by_name['lt']._loaded_options = None _globals['_INT64RULES'].fields_by_name['lt']._serialized_options = b'\302Hy\nw\n\010int64.lt\032k!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_INT64RULES'].fields_by_name['lte']._loaded_options = None @@ -112,13 +112,13 @@ _globals['_INT64RULES'].fields_by_name['gte']._loaded_options = None _globals['_INT64RULES'].fields_by_name['gte']._serialized_options = b'\302H\317\007\n\210\001\n\tint64.gte\032{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\302\001\n\014int64.gte_lt\032\261\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\312\001\n\026int64.gte_lt_exclusive\032\257\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\322\001\n\rint64.gte_lte\032\300\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\332\001\n\027int64.gte_lte_exclusive\032\276\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_INT64RULES'].fields_by_name['in']._loaded_options = None - _globals['_INT64RULES'].fields_by_name['in']._serialized_options = b'\302Hf\nd\n\010int64.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_INT64RULES'].fields_by_name['in']._serialized_options = b'\302Hp\nn\n\010int64.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_INT64RULES'].fields_by_name['not_in']._loaded_options = None _globals['_INT64RULES'].fields_by_name['not_in']._serialized_options = b'\302Hc\na\n\014int64.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_INT64RULES'].fields_by_name['example']._loaded_options = None _globals['_INT64RULES'].fields_by_name['example']._serialized_options = b'\302H\027\n\025\n\rint64.example\032\004true' _globals['_UINT32RULES'].fields_by_name['const']._loaded_options = None - _globals['_UINT32RULES'].fields_by_name['const']._serialized_options = b'\302HX\nV\n\014uint32.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_UINT32RULES'].fields_by_name['const']._serialized_options = b'\302Hr\np\n\014uint32.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_UINT32RULES'].fields_by_name['lt']._loaded_options = None _globals['_UINT32RULES'].fields_by_name['lt']._serialized_options = b'\302Hz\nx\n\tuint32.lt\032k!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_UINT32RULES'].fields_by_name['lte']._loaded_options = None @@ -128,13 +128,13 @@ _globals['_UINT32RULES'].fields_by_name['gte']._loaded_options = None _globals['_UINT32RULES'].fields_by_name['gte']._serialized_options = b'\302H\324\007\n\211\001\n\nuint32.gte\032{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\303\001\n\ruint32.gte_lt\032\261\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\313\001\n\027uint32.gte_lt_exclusive\032\257\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\323\001\n\016uint32.gte_lte\032\300\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\333\001\n\030uint32.gte_lte_exclusive\032\276\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_UINT32RULES'].fields_by_name['in']._loaded_options = None - _globals['_UINT32RULES'].fields_by_name['in']._serialized_options = b'\302Hg\ne\n\tuint32.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_UINT32RULES'].fields_by_name['in']._serialized_options = b'\302Hq\no\n\tuint32.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_UINT32RULES'].fields_by_name['not_in']._loaded_options = None _globals['_UINT32RULES'].fields_by_name['not_in']._serialized_options = b'\302Hd\nb\n\ruint32.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_UINT32RULES'].fields_by_name['example']._loaded_options = None _globals['_UINT32RULES'].fields_by_name['example']._serialized_options = b'\302H\030\n\026\n\016uint32.example\032\004true' _globals['_UINT64RULES'].fields_by_name['const']._loaded_options = None - _globals['_UINT64RULES'].fields_by_name['const']._serialized_options = b'\302HX\nV\n\014uint64.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_UINT64RULES'].fields_by_name['const']._serialized_options = b'\302Hr\np\n\014uint64.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_UINT64RULES'].fields_by_name['lt']._loaded_options = None _globals['_UINT64RULES'].fields_by_name['lt']._serialized_options = b'\302Hz\nx\n\tuint64.lt\032k!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_UINT64RULES'].fields_by_name['lte']._loaded_options = None @@ -144,13 +144,13 @@ _globals['_UINT64RULES'].fields_by_name['gte']._loaded_options = None _globals['_UINT64RULES'].fields_by_name['gte']._serialized_options = b'\302H\324\007\n\211\001\n\nuint64.gte\032{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\303\001\n\ruint64.gte_lt\032\261\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\313\001\n\027uint64.gte_lt_exclusive\032\257\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\323\001\n\016uint64.gte_lte\032\300\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\333\001\n\030uint64.gte_lte_exclusive\032\276\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_UINT64RULES'].fields_by_name['in']._loaded_options = None - _globals['_UINT64RULES'].fields_by_name['in']._serialized_options = b'\302Hg\ne\n\tuint64.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_UINT64RULES'].fields_by_name['in']._serialized_options = b'\302Hq\no\n\tuint64.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_UINT64RULES'].fields_by_name['not_in']._loaded_options = None _globals['_UINT64RULES'].fields_by_name['not_in']._serialized_options = b'\302Hd\nb\n\ruint64.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_UINT64RULES'].fields_by_name['example']._loaded_options = None _globals['_UINT64RULES'].fields_by_name['example']._serialized_options = b'\302H\030\n\026\n\016uint64.example\032\004true' _globals['_SINT32RULES'].fields_by_name['const']._loaded_options = None - _globals['_SINT32RULES'].fields_by_name['const']._serialized_options = b'\302HX\nV\n\014sint32.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_SINT32RULES'].fields_by_name['const']._serialized_options = b'\302Hr\np\n\014sint32.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_SINT32RULES'].fields_by_name['lt']._loaded_options = None _globals['_SINT32RULES'].fields_by_name['lt']._serialized_options = b'\302Hz\nx\n\tsint32.lt\032k!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_SINT32RULES'].fields_by_name['lte']._loaded_options = None @@ -160,13 +160,13 @@ _globals['_SINT32RULES'].fields_by_name['gte']._loaded_options = None _globals['_SINT32RULES'].fields_by_name['gte']._serialized_options = b'\302H\324\007\n\211\001\n\nsint32.gte\032{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\303\001\n\rsint32.gte_lt\032\261\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\313\001\n\027sint32.gte_lt_exclusive\032\257\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\323\001\n\016sint32.gte_lte\032\300\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\333\001\n\030sint32.gte_lte_exclusive\032\276\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_SINT32RULES'].fields_by_name['in']._loaded_options = None - _globals['_SINT32RULES'].fields_by_name['in']._serialized_options = b'\302Hg\ne\n\tsint32.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_SINT32RULES'].fields_by_name['in']._serialized_options = b'\302Hq\no\n\tsint32.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_SINT32RULES'].fields_by_name['not_in']._loaded_options = None _globals['_SINT32RULES'].fields_by_name['not_in']._serialized_options = b'\302Hd\nb\n\rsint32.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_SINT32RULES'].fields_by_name['example']._loaded_options = None _globals['_SINT32RULES'].fields_by_name['example']._serialized_options = b'\302H\030\n\026\n\016sint32.example\032\004true' _globals['_SINT64RULES'].fields_by_name['const']._loaded_options = None - _globals['_SINT64RULES'].fields_by_name['const']._serialized_options = b'\302HX\nV\n\014sint64.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_SINT64RULES'].fields_by_name['const']._serialized_options = b'\302Hr\np\n\014sint64.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_SINT64RULES'].fields_by_name['lt']._loaded_options = None _globals['_SINT64RULES'].fields_by_name['lt']._serialized_options = b'\302Hz\nx\n\tsint64.lt\032k!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_SINT64RULES'].fields_by_name['lte']._loaded_options = None @@ -176,13 +176,13 @@ _globals['_SINT64RULES'].fields_by_name['gte']._loaded_options = None _globals['_SINT64RULES'].fields_by_name['gte']._serialized_options = b'\302H\324\007\n\211\001\n\nsint64.gte\032{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\303\001\n\rsint64.gte_lt\032\261\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\313\001\n\027sint64.gte_lt_exclusive\032\257\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\323\001\n\016sint64.gte_lte\032\300\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\333\001\n\030sint64.gte_lte_exclusive\032\276\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_SINT64RULES'].fields_by_name['in']._loaded_options = None - _globals['_SINT64RULES'].fields_by_name['in']._serialized_options = b'\302Hg\ne\n\tsint64.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_SINT64RULES'].fields_by_name['in']._serialized_options = b'\302Hq\no\n\tsint64.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_SINT64RULES'].fields_by_name['not_in']._loaded_options = None _globals['_SINT64RULES'].fields_by_name['not_in']._serialized_options = b'\302Hd\nb\n\rsint64.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_SINT64RULES'].fields_by_name['example']._loaded_options = None _globals['_SINT64RULES'].fields_by_name['example']._serialized_options = b'\302H\030\n\026\n\016sint64.example\032\004true' _globals['_FIXED32RULES'].fields_by_name['const']._loaded_options = None - _globals['_FIXED32RULES'].fields_by_name['const']._serialized_options = b'\302HY\nW\n\rfixed32.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_FIXED32RULES'].fields_by_name['const']._serialized_options = b'\302Hs\nq\n\rfixed32.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_FIXED32RULES'].fields_by_name['lt']._loaded_options = None _globals['_FIXED32RULES'].fields_by_name['lt']._serialized_options = b'\302H{\ny\n\nfixed32.lt\032k!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_FIXED32RULES'].fields_by_name['lte']._loaded_options = None @@ -192,13 +192,13 @@ _globals['_FIXED32RULES'].fields_by_name['gte']._loaded_options = None _globals['_FIXED32RULES'].fields_by_name['gte']._serialized_options = b'\302H\331\007\n\212\001\n\013fixed32.gte\032{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\304\001\n\016fixed32.gte_lt\032\261\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\314\001\n\030fixed32.gte_lt_exclusive\032\257\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\324\001\n\017fixed32.gte_lte\032\300\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\334\001\n\031fixed32.gte_lte_exclusive\032\276\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_FIXED32RULES'].fields_by_name['in']._loaded_options = None - _globals['_FIXED32RULES'].fields_by_name['in']._serialized_options = b'\302Hh\nf\n\nfixed32.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_FIXED32RULES'].fields_by_name['in']._serialized_options = b'\302Hr\np\n\nfixed32.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_FIXED32RULES'].fields_by_name['not_in']._loaded_options = None _globals['_FIXED32RULES'].fields_by_name['not_in']._serialized_options = b'\302He\nc\n\016fixed32.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_FIXED32RULES'].fields_by_name['example']._loaded_options = None _globals['_FIXED32RULES'].fields_by_name['example']._serialized_options = b'\302H\031\n\027\n\017fixed32.example\032\004true' _globals['_FIXED64RULES'].fields_by_name['const']._loaded_options = None - _globals['_FIXED64RULES'].fields_by_name['const']._serialized_options = b'\302HY\nW\n\rfixed64.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_FIXED64RULES'].fields_by_name['const']._serialized_options = b'\302Hs\nq\n\rfixed64.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_FIXED64RULES'].fields_by_name['lt']._loaded_options = None _globals['_FIXED64RULES'].fields_by_name['lt']._serialized_options = b'\302H{\ny\n\nfixed64.lt\032k!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_FIXED64RULES'].fields_by_name['lte']._loaded_options = None @@ -208,13 +208,13 @@ _globals['_FIXED64RULES'].fields_by_name['gte']._loaded_options = None _globals['_FIXED64RULES'].fields_by_name['gte']._serialized_options = b'\302H\331\007\n\212\001\n\013fixed64.gte\032{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\304\001\n\016fixed64.gte_lt\032\261\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\314\001\n\030fixed64.gte_lt_exclusive\032\257\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\324\001\n\017fixed64.gte_lte\032\300\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\334\001\n\031fixed64.gte_lte_exclusive\032\276\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_FIXED64RULES'].fields_by_name['in']._loaded_options = None - _globals['_FIXED64RULES'].fields_by_name['in']._serialized_options = b'\302Hh\nf\n\nfixed64.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_FIXED64RULES'].fields_by_name['in']._serialized_options = b'\302Hr\np\n\nfixed64.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_FIXED64RULES'].fields_by_name['not_in']._loaded_options = None _globals['_FIXED64RULES'].fields_by_name['not_in']._serialized_options = b'\302He\nc\n\016fixed64.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_FIXED64RULES'].fields_by_name['example']._loaded_options = None _globals['_FIXED64RULES'].fields_by_name['example']._serialized_options = b'\302H\031\n\027\n\017fixed64.example\032\004true' _globals['_SFIXED32RULES'].fields_by_name['const']._loaded_options = None - _globals['_SFIXED32RULES'].fields_by_name['const']._serialized_options = b'\302HZ\nX\n\016sfixed32.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_SFIXED32RULES'].fields_by_name['const']._serialized_options = b'\302Ht\nr\n\016sfixed32.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_SFIXED32RULES'].fields_by_name['lt']._loaded_options = None _globals['_SFIXED32RULES'].fields_by_name['lt']._serialized_options = b'\302H|\nz\n\013sfixed32.lt\032k!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_SFIXED32RULES'].fields_by_name['lte']._loaded_options = None @@ -224,13 +224,13 @@ _globals['_SFIXED32RULES'].fields_by_name['gte']._loaded_options = None _globals['_SFIXED32RULES'].fields_by_name['gte']._serialized_options = b'\302H\336\007\n\213\001\n\014sfixed32.gte\032{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\305\001\n\017sfixed32.gte_lt\032\261\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\315\001\n\031sfixed32.gte_lt_exclusive\032\257\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\325\001\n\020sfixed32.gte_lte\032\300\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\335\001\n\032sfixed32.gte_lte_exclusive\032\276\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_SFIXED32RULES'].fields_by_name['in']._loaded_options = None - _globals['_SFIXED32RULES'].fields_by_name['in']._serialized_options = b'\302Hi\ng\n\013sfixed32.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_SFIXED32RULES'].fields_by_name['in']._serialized_options = b'\302Hs\nq\n\013sfixed32.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_SFIXED32RULES'].fields_by_name['not_in']._loaded_options = None _globals['_SFIXED32RULES'].fields_by_name['not_in']._serialized_options = b'\302Hf\nd\n\017sfixed32.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_SFIXED32RULES'].fields_by_name['example']._loaded_options = None _globals['_SFIXED32RULES'].fields_by_name['example']._serialized_options = b'\302H\032\n\030\n\020sfixed32.example\032\004true' _globals['_SFIXED64RULES'].fields_by_name['const']._loaded_options = None - _globals['_SFIXED64RULES'].fields_by_name['const']._serialized_options = b'\302HZ\nX\n\016sfixed64.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_SFIXED64RULES'].fields_by_name['const']._serialized_options = b'\302Ht\nr\n\016sfixed64.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_SFIXED64RULES'].fields_by_name['lt']._loaded_options = None _globals['_SFIXED64RULES'].fields_by_name['lt']._serialized_options = b'\302H|\nz\n\013sfixed64.lt\032k!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_SFIXED64RULES'].fields_by_name['lte']._loaded_options = None @@ -240,17 +240,17 @@ _globals['_SFIXED64RULES'].fields_by_name['gte']._loaded_options = None _globals['_SFIXED64RULES'].fields_by_name['gte']._serialized_options = b'\302H\336\007\n\213\001\n\014sfixed64.gte\032{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\305\001\n\017sfixed64.gte_lt\032\261\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\315\001\n\031sfixed64.gte_lt_exclusive\032\257\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\325\001\n\020sfixed64.gte_lte\032\300\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\335\001\n\032sfixed64.gte_lte_exclusive\032\276\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_SFIXED64RULES'].fields_by_name['in']._loaded_options = None - _globals['_SFIXED64RULES'].fields_by_name['in']._serialized_options = b'\302Hi\ng\n\013sfixed64.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_SFIXED64RULES'].fields_by_name['in']._serialized_options = b'\302Hs\nq\n\013sfixed64.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_SFIXED64RULES'].fields_by_name['not_in']._loaded_options = None _globals['_SFIXED64RULES'].fields_by_name['not_in']._serialized_options = b'\302Hf\nd\n\017sfixed64.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_SFIXED64RULES'].fields_by_name['example']._loaded_options = None _globals['_SFIXED64RULES'].fields_by_name['example']._serialized_options = b'\302H\032\n\030\n\020sfixed64.example\032\004true' _globals['_BOOLRULES'].fields_by_name['const']._loaded_options = None - _globals['_BOOLRULES'].fields_by_name['const']._serialized_options = b'\302HV\nT\n\nbool.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_BOOLRULES'].fields_by_name['const']._serialized_options = b'\302Hp\nn\n\nbool.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_BOOLRULES'].fields_by_name['example']._loaded_options = None _globals['_BOOLRULES'].fields_by_name['example']._serialized_options = b'\302H\026\n\024\n\014bool.example\032\004true' _globals['_STRINGRULES'].fields_by_name['const']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['const']._serialized_options = b'\302HZ\nX\n\014string.const\032Hthis != rules.const ? \'value must equal `%s`\'.format([rules.const]) : \'\'' + _globals['_STRINGRULES'].fields_by_name['const']._serialized_options = b'\302Ht\nr\n\014string.const\032bthis != getField(rules, \'const\') ? \'value must equal `%s`\'.format([getField(rules, \'const\')]) : \'\'' _globals['_STRINGRULES'].fields_by_name['len']._loaded_options = None _globals['_STRINGRULES'].fields_by_name['len']._serialized_options = b'\302Hn\nl\n\nstring.len\032^uint(this.size()) != rules.len ? \'value length must be %s characters\'.format([rules.len]) : \'\'' _globals['_STRINGRULES'].fields_by_name['min_len']._loaded_options = None @@ -274,7 +274,7 @@ _globals['_STRINGRULES'].fields_by_name['not_contains']._loaded_options = None _globals['_STRINGRULES'].fields_by_name['not_contains']._serialized_options = b'\302H~\n|\n\023string.not_contains\032ethis.contains(rules.not_contains) ? \'value contains substring `%s`\'.format([rules.not_contains]) : \'\'' _globals['_STRINGRULES'].fields_by_name['in']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['in']._serialized_options = b'\302Hg\ne\n\tstring.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_STRINGRULES'].fields_by_name['in']._serialized_options = b'\302Hq\no\n\tstring.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_STRINGRULES'].fields_by_name['not_in']._loaded_options = None _globals['_STRINGRULES'].fields_by_name['not_in']._serialized_options = b'\302Hd\nb\n\rstring.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_STRINGRULES'].fields_by_name['email']._loaded_options = None @@ -316,7 +316,7 @@ _globals['_STRINGRULES'].fields_by_name['example']._loaded_options = None _globals['_STRINGRULES'].fields_by_name['example']._serialized_options = b'\302H\030\n\026\n\016string.example\032\004true' _globals['_BYTESRULES'].fields_by_name['const']._loaded_options = None - _globals['_BYTESRULES'].fields_by_name['const']._serialized_options = b'\302HT\nR\n\013bytes.const\032Cthis != rules.const ? \'value must be %x\'.format([rules.const]) : \'\'' + _globals['_BYTESRULES'].fields_by_name['const']._serialized_options = b'\302Hn\nl\n\013bytes.const\032]this != getField(rules, \'const\') ? \'value must be %x\'.format([getField(rules, \'const\')]) : \'\'' _globals['_BYTESRULES'].fields_by_name['len']._loaded_options = None _globals['_BYTESRULES'].fields_by_name['len']._serialized_options = b'\302Hh\nf\n\tbytes.len\032Yuint(this.size()) != rules.len ? \'value length must be %s bytes\'.format([rules.len]) : \'\'' _globals['_BYTESRULES'].fields_by_name['min_len']._loaded_options = None @@ -332,7 +332,7 @@ _globals['_BYTESRULES'].fields_by_name['contains']._loaded_options = None _globals['_BYTESRULES'].fields_by_name['contains']._serialized_options = b'\302Hn\nl\n\016bytes.contains\032Z!this.contains(rules.contains) ? \'value does not contain %x\'.format([rules.contains]) : \'\'' _globals['_BYTESRULES'].fields_by_name['in']._loaded_options = None - _globals['_BYTESRULES'].fields_by_name['in']._serialized_options = b'\302H\206\001\n\203\001\n\010bytes.in\032wdyn(rules)[\'in\'].size() > 0 && !(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_BYTESRULES'].fields_by_name['in']._serialized_options = b'\302H\226\001\n\223\001\n\010bytes.in\032\206\001getField(rules, \'in\').size() > 0 && !(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_BYTESRULES'].fields_by_name['not_in']._loaded_options = None _globals['_BYTESRULES'].fields_by_name['not_in']._serialized_options = b'\302Hc\na\n\014bytes.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_BYTESRULES'].fields_by_name['ip']._loaded_options = None @@ -344,9 +344,9 @@ _globals['_BYTESRULES'].fields_by_name['example']._loaded_options = None _globals['_BYTESRULES'].fields_by_name['example']._serialized_options = b'\302H\027\n\025\n\rbytes.example\032\004true' _globals['_ENUMRULES'].fields_by_name['const']._loaded_options = None - _globals['_ENUMRULES'].fields_by_name['const']._serialized_options = b'\302HV\nT\n\nenum.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_ENUMRULES'].fields_by_name['const']._serialized_options = b'\302Hp\nn\n\nenum.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_ENUMRULES'].fields_by_name['in']._loaded_options = None - _globals['_ENUMRULES'].fields_by_name['in']._serialized_options = b'\302He\nc\n\007enum.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_ENUMRULES'].fields_by_name['in']._serialized_options = b'\302Ho\nm\n\007enum.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_ENUMRULES'].fields_by_name['not_in']._loaded_options = None _globals['_ENUMRULES'].fields_by_name['not_in']._serialized_options = b'\302Hb\n`\n\013enum.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_ENUMRULES'].fields_by_name['example']._loaded_options = None @@ -362,7 +362,7 @@ _globals['_MAPRULES'].fields_by_name['max_pairs']._loaded_options = None _globals['_MAPRULES'].fields_by_name['max_pairs']._serialized_options = b'\302Hx\nv\n\rmap.max_pairs\032euint(this.size()) > rules.max_pairs ? \'map must be at most %d entries\'.format([rules.max_pairs]) : \'\'' _globals['_DURATIONRULES'].fields_by_name['const']._loaded_options = None - _globals['_DURATIONRULES'].fields_by_name['const']._serialized_options = b'\302HZ\nX\n\016duration.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_DURATIONRULES'].fields_by_name['const']._serialized_options = b'\302Ht\nr\n\016duration.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_DURATIONRULES'].fields_by_name['lt']._loaded_options = None _globals['_DURATIONRULES'].fields_by_name['lt']._serialized_options = b'\302H|\nz\n\013duration.lt\032k!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_DURATIONRULES'].fields_by_name['lte']._loaded_options = None @@ -372,13 +372,13 @@ _globals['_DURATIONRULES'].fields_by_name['gte']._loaded_options = None _globals['_DURATIONRULES'].fields_by_name['gte']._serialized_options = b'\302H\336\007\n\213\001\n\014duration.gte\032{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\305\001\n\017duration.gte_lt\032\261\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'value must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\315\001\n\031duration.gte_lt_exclusive\032\257\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'value must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\325\001\n\020duration.gte_lte\032\300\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'value must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\335\001\n\032duration.gte_lte_exclusive\032\276\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'value must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_DURATIONRULES'].fields_by_name['in']._loaded_options = None - _globals['_DURATIONRULES'].fields_by_name['in']._serialized_options = b'\302Hi\ng\n\013duration.in\032X!(this in dyn(rules)[\'in\']) ? \'value must be in list %s\'.format([dyn(rules)[\'in\']]) : \'\'' + _globals['_DURATIONRULES'].fields_by_name['in']._serialized_options = b'\302Hs\nq\n\013duration.in\032b!(this in getField(rules, \'in\')) ? \'value must be in list %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_DURATIONRULES'].fields_by_name['not_in']._loaded_options = None _globals['_DURATIONRULES'].fields_by_name['not_in']._serialized_options = b'\302Hf\nd\n\017duration.not_in\032Qthis in rules.not_in ? \'value must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_DURATIONRULES'].fields_by_name['example']._loaded_options = None _globals['_DURATIONRULES'].fields_by_name['example']._serialized_options = b'\302H\032\n\030\n\020duration.example\032\004true' _globals['_TIMESTAMPRULES'].fields_by_name['const']._loaded_options = None - _globals['_TIMESTAMPRULES'].fields_by_name['const']._serialized_options = b'\302H[\nY\n\017timestamp.const\032Fthis != rules.const ? \'value must equal %s\'.format([rules.const]) : \'\'' + _globals['_TIMESTAMPRULES'].fields_by_name['const']._serialized_options = b'\302Hu\ns\n\017timestamp.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' _globals['_TIMESTAMPRULES'].fields_by_name['lt']._loaded_options = None _globals['_TIMESTAMPRULES'].fields_by_name['lt']._serialized_options = b'\302H}\n{\n\014timestamp.lt\032k!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'value must be less than %s\'.format([rules.lt]) : \'\'' _globals['_TIMESTAMPRULES'].fields_by_name['lte']._loaded_options = None @@ -395,68 +395,68 @@ _globals['_TIMESTAMPRULES'].fields_by_name['within']._serialized_options = b'\302H\210\001\n\205\001\n\020timestamp.within\032qthis < now-rules.within || this > now+rules.within ? \'value must be within %s of now\'.format([rules.within]) : \'\'' _globals['_TIMESTAMPRULES'].fields_by_name['example']._loaded_options = None _globals['_TIMESTAMPRULES'].fields_by_name['example']._serialized_options = b'\302H\033\n\031\n\021timestamp.example\032\004true' - _globals['_IGNORE']._serialized_start=53432 - _globals['_IGNORE']._serialized_end=53567 - _globals['_KNOWNREGEX']._serialized_start=53569 - _globals['_KNOWNREGEX']._serialized_end=53679 - _globals['_CONSTRAINT']._serialized_start=144 - _globals['_CONSTRAINT']._serialized_end=230 - _globals['_MESSAGECONSTRAINTS']._serialized_start=232 - _globals['_MESSAGECONSTRAINTS']._serialized_end=324 - _globals['_ONEOFCONSTRAINTS']._serialized_start=326 - _globals['_ONEOFCONSTRAINTS']._serialized_end=372 - _globals['_FIELDCONSTRAINTS']._serialized_start=375 - _globals['_FIELDCONSTRAINTS']._serialized_end=1664 - _globals['_PREDEFINEDCONSTRAINTS']._serialized_start=1666 - _globals['_PREDEFINEDCONSTRAINTS']._serialized_end=1766 - _globals['_FLOATRULES']._serialized_start=1769 - _globals['_FLOATRULES']._serialized_end=4819 - _globals['_DOUBLERULES']._serialized_start=4822 - _globals['_DOUBLERULES']._serialized_end=7890 - _globals['_INT32RULES']._serialized_start=7893 - _globals['_INT32RULES']._serialized_end=10601 - _globals['_INT64RULES']._serialized_start=10604 - _globals['_INT64RULES']._serialized_end=13312 - _globals['_UINT32RULES']._serialized_start=13315 - _globals['_UINT32RULES']._serialized_end=16040 - _globals['_UINT64RULES']._serialized_start=16043 - _globals['_UINT64RULES']._serialized_end=18768 - _globals['_SINT32RULES']._serialized_start=18771 - _globals['_SINT32RULES']._serialized_end=21496 - _globals['_SINT64RULES']._serialized_start=21499 - _globals['_SINT64RULES']._serialized_end=24224 - _globals['_FIXED32RULES']._serialized_start=24227 - _globals['_FIXED32RULES']._serialized_end=26969 - _globals['_FIXED64RULES']._serialized_start=26972 - _globals['_FIXED64RULES']._serialized_end=29714 - _globals['_SFIXED32RULES']._serialized_start=29717 - _globals['_SFIXED32RULES']._serialized_end=32477 - _globals['_SFIXED64RULES']._serialized_start=32480 - _globals['_SFIXED64RULES']._serialized_end=35240 - _globals['_BOOLRULES']._serialized_start=35243 - _globals['_BOOLRULES']._serialized_end=35431 - _globals['_STRINGRULES']._serialized_start=35434 - _globals['_STRINGRULES']._serialized_end=42773 - _globals['_BYTESRULES']._serialized_start=42776 - _globals['_BYTESRULES']._serialized_end=44987 - _globals['_ENUMRULES']._serialized_start=44990 - _globals['_ENUMRULES']._serialized_end=45461 - _globals['_REPEATEDRULES']._serialized_start=45464 - _globals['_REPEATEDRULES']._serialized_end=46012 - _globals['_MAPRULES']._serialized_start=46015 - _globals['_MAPRULES']._serialized_end=46455 - _globals['_ANYRULES']._serialized_start=46457 - _globals['_ANYRULES']._serialized_end=46506 - _globals['_DURATIONRULES']._serialized_start=46509 - _globals['_DURATIONRULES']._serialized_end=49487 - _globals['_TIMESTAMPRULES']._serialized_start=49490 - _globals['_TIMESTAMPRULES']._serialized_end=52610 - _globals['_VIOLATIONS']._serialized_start=52612 - _globals['_VIOLATIONS']._serialized_end=52681 - _globals['_VIOLATION']._serialized_start=52684 - _globals['_VIOLATION']._serialized_end=52893 - _globals['_FIELDPATH']._serialized_start=52895 - _globals['_FIELDPATH']._serialized_end=52966 - _globals['_FIELDPATHELEMENT']._serialized_start=52969 - _globals['_FIELDPATHELEMENT']._serialized_end=53429 + _globals['_IGNORE']._serialized_start=54018 + _globals['_IGNORE']._serialized_end=54153 + _globals['_KNOWNREGEX']._serialized_start=54155 + _globals['_KNOWNREGEX']._serialized_end=54265 + _globals['_RULE']._serialized_start=144 + _globals['_RULE']._serialized_end=224 + _globals['_MESSAGERULES']._serialized_start=226 + _globals['_MESSAGERULES']._serialized_end=306 + _globals['_ONEOFRULES']._serialized_start=308 + _globals['_ONEOFRULES']._serialized_end=348 + _globals['_FIELDRULES']._serialized_start=351 + _globals['_FIELDRULES']._serialized_end=1628 + _globals['_PREDEFINEDRULES']._serialized_start=1630 + _globals['_PREDEFINEDRULES']._serialized_end=1718 + _globals['_FLOATRULES']._serialized_start=1721 + _globals['_FLOATRULES']._serialized_end=4809 + _globals['_DOUBLERULES']._serialized_start=4812 + _globals['_DOUBLERULES']._serialized_end=7918 + _globals['_INT32RULES']._serialized_start=7921 + _globals['_INT32RULES']._serialized_end=10667 + _globals['_INT64RULES']._serialized_start=10670 + _globals['_INT64RULES']._serialized_end=13416 + _globals['_UINT32RULES']._serialized_start=13419 + _globals['_UINT32RULES']._serialized_end=16182 + _globals['_UINT64RULES']._serialized_start=16185 + _globals['_UINT64RULES']._serialized_end=18948 + _globals['_SINT32RULES']._serialized_start=18951 + _globals['_SINT32RULES']._serialized_end=21714 + _globals['_SINT64RULES']._serialized_start=21717 + _globals['_SINT64RULES']._serialized_end=24480 + _globals['_FIXED32RULES']._serialized_start=24483 + _globals['_FIXED32RULES']._serialized_end=27263 + _globals['_FIXED64RULES']._serialized_start=27266 + _globals['_FIXED64RULES']._serialized_end=30046 + _globals['_SFIXED32RULES']._serialized_start=30049 + _globals['_SFIXED32RULES']._serialized_end=32847 + _globals['_SFIXED64RULES']._serialized_start=32850 + _globals['_SFIXED64RULES']._serialized_end=35648 + _globals['_BOOLRULES']._serialized_start=35651 + _globals['_BOOLRULES']._serialized_end=35866 + _globals['_STRINGRULES']._serialized_start=35869 + _globals['_STRINGRULES']._serialized_end=43246 + _globals['_BYTESRULES']._serialized_start=43249 + _globals['_BYTESRULES']._serialized_end=45503 + _globals['_ENUMRULES']._serialized_start=45506 + _globals['_ENUMRULES']._serialized_end=46015 + _globals['_REPEATEDRULES']._serialized_start=46018 + _globals['_REPEATEDRULES']._serialized_end=46560 + _globals['_MAPRULES']._serialized_start=46563 + _globals['_MAPRULES']._serialized_end=46991 + _globals['_ANYRULES']._serialized_start=46993 + _globals['_ANYRULES']._serialized_end=47042 + _globals['_DURATIONRULES']._serialized_start=47045 + _globals['_DURATIONRULES']._serialized_end=50059 + _globals['_TIMESTAMPRULES']._serialized_start=50062 + _globals['_TIMESTAMPRULES']._serialized_end=53208 + _globals['_VIOLATIONS']._serialized_start=53210 + _globals['_VIOLATIONS']._serialized_end=53279 + _globals['_VIOLATION']._serialized_start=53282 + _globals['_VIOLATION']._serialized_end=53479 + _globals['_FIELDPATH']._serialized_start=53481 + _globals['_FIELDPATH']._serialized_end=53552 + _globals['_FIELDPATHELEMENT']._serialized_start=53555 + _globals['_FIELDPATHELEMENT']._serialized_end=54015 # @@protoc_insertion_point(module_scope) diff --git a/gen/buf/validate/validate_pb2.pyi b/gen/buf/validate/validate_pb2.pyi index 46ec5ef..f65e26c 100644 --- a/gen/buf/validate/validate_pb2.pyi +++ b/gen/buf/validate/validate_pb2.pyi @@ -53,7 +53,7 @@ field: _descriptor.FieldDescriptor PREDEFINED_FIELD_NUMBER: _ClassVar[int] predefined: _descriptor.FieldDescriptor -class Constraint(_message.Message): +class Rule(_message.Message): __slots__ = ("id", "message", "expression") ID_FIELD_NUMBER: _ClassVar[int] MESSAGE_FIELD_NUMBER: _ClassVar[int] @@ -63,21 +63,21 @@ class Constraint(_message.Message): expression: str def __init__(self, id: _Optional[str] = ..., message: _Optional[str] = ..., expression: _Optional[str] = ...) -> None: ... -class MessageConstraints(_message.Message): +class MessageRules(_message.Message): __slots__ = ("disabled", "cel") DISABLED_FIELD_NUMBER: _ClassVar[int] CEL_FIELD_NUMBER: _ClassVar[int] disabled: bool - cel: _containers.RepeatedCompositeFieldContainer[Constraint] - def __init__(self, disabled: bool = ..., cel: _Optional[_Iterable[_Union[Constraint, _Mapping]]] = ...) -> None: ... + cel: _containers.RepeatedCompositeFieldContainer[Rule] + def __init__(self, disabled: bool = ..., cel: _Optional[_Iterable[_Union[Rule, _Mapping]]] = ...) -> None: ... -class OneofConstraints(_message.Message): +class OneofRules(_message.Message): __slots__ = ("required",) REQUIRED_FIELD_NUMBER: _ClassVar[int] required: bool def __init__(self, required: bool = ...) -> None: ... -class FieldConstraints(_message.Message): +class FieldRules(_message.Message): __slots__ = ("cel", "required", "ignore", "float", "double", "int32", "int64", "uint32", "uint64", "sint32", "sint64", "fixed32", "fixed64", "sfixed32", "sfixed64", "bool", "string", "bytes", "enum", "repeated", "map", "any", "duration", "timestamp") CEL_FIELD_NUMBER: _ClassVar[int] REQUIRED_FIELD_NUMBER: _ClassVar[int] @@ -103,7 +103,7 @@ class FieldConstraints(_message.Message): ANY_FIELD_NUMBER: _ClassVar[int] DURATION_FIELD_NUMBER: _ClassVar[int] TIMESTAMP_FIELD_NUMBER: _ClassVar[int] - cel: _containers.RepeatedCompositeFieldContainer[Constraint] + cel: _containers.RepeatedCompositeFieldContainer[Rule] required: bool ignore: Ignore float: FloatRules @@ -127,13 +127,13 @@ class FieldConstraints(_message.Message): any: AnyRules duration: DurationRules timestamp: TimestampRules - def __init__(self, cel: _Optional[_Iterable[_Union[Constraint, _Mapping]]] = ..., required: bool = ..., ignore: _Optional[_Union[Ignore, str]] = ..., float: _Optional[_Union[FloatRules, _Mapping]] = ..., double: _Optional[_Union[DoubleRules, _Mapping]] = ..., int32: _Optional[_Union[Int32Rules, _Mapping]] = ..., int64: _Optional[_Union[Int64Rules, _Mapping]] = ..., uint32: _Optional[_Union[UInt32Rules, _Mapping]] = ..., uint64: _Optional[_Union[UInt64Rules, _Mapping]] = ..., sint32: _Optional[_Union[SInt32Rules, _Mapping]] = ..., sint64: _Optional[_Union[SInt64Rules, _Mapping]] = ..., fixed32: _Optional[_Union[Fixed32Rules, _Mapping]] = ..., fixed64: _Optional[_Union[Fixed64Rules, _Mapping]] = ..., sfixed32: _Optional[_Union[SFixed32Rules, _Mapping]] = ..., sfixed64: _Optional[_Union[SFixed64Rules, _Mapping]] = ..., bool: _Optional[_Union[BoolRules, _Mapping]] = ..., string: _Optional[_Union[StringRules, _Mapping]] = ..., bytes: _Optional[_Union[BytesRules, _Mapping]] = ..., enum: _Optional[_Union[EnumRules, _Mapping]] = ..., repeated: _Optional[_Union[RepeatedRules, _Mapping]] = ..., map: _Optional[_Union[MapRules, _Mapping]] = ..., any: _Optional[_Union[AnyRules, _Mapping]] = ..., duration: _Optional[_Union[DurationRules, _Mapping]] = ..., timestamp: _Optional[_Union[TimestampRules, _Mapping]] = ...) -> None: ... + def __init__(self, cel: _Optional[_Iterable[_Union[Rule, _Mapping]]] = ..., required: bool = ..., ignore: _Optional[_Union[Ignore, str]] = ..., float: _Optional[_Union[FloatRules, _Mapping]] = ..., double: _Optional[_Union[DoubleRules, _Mapping]] = ..., int32: _Optional[_Union[Int32Rules, _Mapping]] = ..., int64: _Optional[_Union[Int64Rules, _Mapping]] = ..., uint32: _Optional[_Union[UInt32Rules, _Mapping]] = ..., uint64: _Optional[_Union[UInt64Rules, _Mapping]] = ..., sint32: _Optional[_Union[SInt32Rules, _Mapping]] = ..., sint64: _Optional[_Union[SInt64Rules, _Mapping]] = ..., fixed32: _Optional[_Union[Fixed32Rules, _Mapping]] = ..., fixed64: _Optional[_Union[Fixed64Rules, _Mapping]] = ..., sfixed32: _Optional[_Union[SFixed32Rules, _Mapping]] = ..., sfixed64: _Optional[_Union[SFixed64Rules, _Mapping]] = ..., bool: _Optional[_Union[BoolRules, _Mapping]] = ..., string: _Optional[_Union[StringRules, _Mapping]] = ..., bytes: _Optional[_Union[BytesRules, _Mapping]] = ..., enum: _Optional[_Union[EnumRules, _Mapping]] = ..., repeated: _Optional[_Union[RepeatedRules, _Mapping]] = ..., map: _Optional[_Union[MapRules, _Mapping]] = ..., any: _Optional[_Union[AnyRules, _Mapping]] = ..., duration: _Optional[_Union[DurationRules, _Mapping]] = ..., timestamp: _Optional[_Union[TimestampRules, _Mapping]] = ...) -> None: ... -class PredefinedConstraints(_message.Message): +class PredefinedRules(_message.Message): __slots__ = ("cel",) CEL_FIELD_NUMBER: _ClassVar[int] - cel: _containers.RepeatedCompositeFieldContainer[Constraint] - def __init__(self, cel: _Optional[_Iterable[_Union[Constraint, _Mapping]]] = ...) -> None: ... + cel: _containers.RepeatedCompositeFieldContainer[Rule] + def __init__(self, cel: _Optional[_Iterable[_Union[Rule, _Mapping]]] = ...) -> None: ... class FloatRules(_message.Message): __slots__ = ("const", "lt", "lte", "gt", "gte", "not_in", "finite", "example") @@ -516,8 +516,8 @@ class RepeatedRules(_message.Message): min_items: int max_items: int unique: bool - items: FieldConstraints - def __init__(self, min_items: _Optional[int] = ..., max_items: _Optional[int] = ..., unique: bool = ..., items: _Optional[_Union[FieldConstraints, _Mapping]] = ...) -> None: ... + items: FieldRules + def __init__(self, min_items: _Optional[int] = ..., max_items: _Optional[int] = ..., unique: bool = ..., items: _Optional[_Union[FieldRules, _Mapping]] = ...) -> None: ... class MapRules(_message.Message): __slots__ = ("min_pairs", "max_pairs", "keys", "values") @@ -528,9 +528,9 @@ class MapRules(_message.Message): VALUES_FIELD_NUMBER: _ClassVar[int] min_pairs: int max_pairs: int - keys: FieldConstraints - values: FieldConstraints - def __init__(self, min_pairs: _Optional[int] = ..., max_pairs: _Optional[int] = ..., keys: _Optional[_Union[FieldConstraints, _Mapping]] = ..., values: _Optional[_Union[FieldConstraints, _Mapping]] = ...) -> None: ... + keys: FieldRules + values: FieldRules + def __init__(self, min_pairs: _Optional[int] = ..., max_pairs: _Optional[int] = ..., keys: _Optional[_Union[FieldRules, _Mapping]] = ..., values: _Optional[_Union[FieldRules, _Mapping]] = ...) -> None: ... class AnyRules(_message.Message): __slots__ = ("not_in",) @@ -589,18 +589,18 @@ class Violations(_message.Message): def __init__(self, violations: _Optional[_Iterable[_Union[Violation, _Mapping]]] = ...) -> None: ... class Violation(_message.Message): - __slots__ = ("field", "rule", "constraint_id", "message", "for_key") + __slots__ = ("field", "rule", "rule_id", "message", "for_key") FIELD_FIELD_NUMBER: _ClassVar[int] RULE_FIELD_NUMBER: _ClassVar[int] - CONSTRAINT_ID_FIELD_NUMBER: _ClassVar[int] + RULE_ID_FIELD_NUMBER: _ClassVar[int] MESSAGE_FIELD_NUMBER: _ClassVar[int] FOR_KEY_FIELD_NUMBER: _ClassVar[int] field: FieldPath rule: FieldPath - constraint_id: str + rule_id: str message: str for_key: bool - def __init__(self, field: _Optional[_Union[FieldPath, _Mapping]] = ..., rule: _Optional[_Union[FieldPath, _Mapping]] = ..., constraint_id: _Optional[str] = ..., message: _Optional[str] = ..., for_key: bool = ...) -> None: ... + def __init__(self, field: _Optional[_Union[FieldPath, _Mapping]] = ..., rule: _Optional[_Union[FieldPath, _Mapping]] = ..., rule_id: _Optional[str] = ..., message: _Optional[str] = ..., for_key: bool = ...) -> None: ... class FieldPath(_message.Message): __slots__ = ("elements",) diff --git a/protovalidate/internal/constraints.py b/protovalidate/internal/rules.py similarity index 77% rename from protovalidate/internal/constraints.py rename to protovalidate/internal/rules.py index 2519108..af71988 100644 --- a/protovalidate/internal/constraints.py +++ b/protovalidate/internal/rules.py @@ -232,7 +232,7 @@ def _set_path_element_map_key( class Violation: - """A singular constraint violation.""" + """A singular rule violation.""" proto: validate_pb2.Violation field_value: typing.Any @@ -244,8 +244,8 @@ def __init__(self, *, field_value: typing.Any = None, rule_value: typing.Any = N self.rule_value = rule_value -class ConstraintContext: - """The state associated with a single constraint evaluation.""" +class RuleContext: + """The state associated with a single rule evaluation.""" def __init__(self, *, fail_fast: bool = False, violations: typing.Optional[list[Violation]] = None): self._fail_fast = fail_fast @@ -283,28 +283,28 @@ def has_errors(self) -> bool: return len(self._violations) > 0 def sub_context(self): - return ConstraintContext(fail_fast=self._fail_fast) + return RuleContext(fail_fast=self._fail_fast) -class ConstraintRules: - """The constraints associated with a single 'rules' message.""" +class RuleRules: + """The rules associated with a single 'rules' message.""" - def validate(self, ctx: ConstraintContext, _: message.Message): - """Validate the message against the rules in this constraint.""" - ctx.add(Violation(constraint_id="unimplemented", message="Unimplemented")) + def validate(self, ctx: RuleContext, _: message.Message): + """Validate the message against the rules in this rule.""" + ctx.add(Violation(rule_id="unimplemented", message="Unimplemented")) @dataclasses.dataclass class CelRunner: runner: celpy.Runner - constraint: validate_pb2.Constraint + rule: validate_pb2.Rule rule_value: typing.Optional[typing.Any] = None rule_cel: typing.Optional[celtypes.Value] = None rule_path: typing.Optional[validate_pb2.FieldPath] = None -class CelConstraintRules(ConstraintRules): - """A constraint that has rules written in CEL.""" +class CelRuleRules(RuleRules): + """A rule that has rules written in CEL.""" _cel: list[CelRunner] _rules: typing.Optional[message.Message] = None @@ -318,7 +318,7 @@ def __init__(self, rules: typing.Optional[message.Message]): def _validate_cel( self, - ctx: ConstraintContext, + ctx: RuleContext, *, this_value: typing.Optional[typing.Any] = None, this_cel: typing.Optional[celtypes.Value] = None, @@ -339,8 +339,8 @@ def _validate_cel( field_value=this_value, rule=cel.rule_path, rule_value=cel.rule_value, - constraint_id=cel.constraint.id, - message=cel.constraint.message, + rule_id=cel.rule.id, + message=cel.rule.message, for_key=for_key, ), ) @@ -351,7 +351,7 @@ def _validate_cel( field_value=this_value, rule=cel.rule_path, rule_value=cel.rule_value, - constraint_id=cel.constraint.id, + rule_id=cel.rule.id, message=result, for_key=for_key, ), @@ -363,7 +363,7 @@ def add_rule( self, env: celpy.Environment, funcs: dict[str, celpy.CELFunction], - rules: validate_pb2.Constraint, + rules: validate_pb2.Rule, *, rule_field: typing.Optional[descriptor.FieldDescriptor] = None, rule_path: typing.Optional[validate_pb2.FieldPath] = None, @@ -378,7 +378,7 @@ def add_rule( self._cel.append( CelRunner( runner=prog, - constraint=rules, + rule=rules, rule_value=rule_value, rule_cel=rule_cel, rule_path=rule_path, @@ -386,10 +386,10 @@ def add_rule( ) -class MessageConstraintRules(CelConstraintRules): +class MessageRuleRules(CelRuleRules): """Message-level rules.""" - def validate(self, ctx: ConstraintContext, message: message.Message): + def validate(self, ctx: RuleContext, message: message.Message): self._validate_cel(ctx, this_cel=_msg_to_cel(message)) @@ -420,7 +420,7 @@ def _zero_value(field: descriptor.FieldDescriptor): return _field_value_to_cel(field.default_value, field) -class FieldConstraintRules(CelConstraintRules): +class FieldRuleRules(CelRuleRules): """Field-level rules.""" _ignore_empty = False @@ -431,9 +431,7 @@ class FieldConstraintRules(CelConstraintRules): _required_rule_path: typing.ClassVar[validate_pb2.FieldPath] = validate_pb2.FieldPath( elements=[ _field_to_element( - validate_pb2.FieldConstraints.DESCRIPTOR.fields_by_number[ - validate_pb2.FieldConstraints.REQUIRED_FIELD_NUMBER - ] + validate_pb2.FieldRules.DESCRIPTOR.fields_by_number[validate_pb2.FieldRules.REQUIRED_FIELD_NUMBER] ) ] ) @@ -441,9 +439,7 @@ class FieldConstraintRules(CelConstraintRules): _cel_rule_path: typing.ClassVar[validate_pb2.FieldPath] = validate_pb2.FieldPath( elements=[ _field_to_element( - validate_pb2.FieldConstraints.DESCRIPTOR.fields_by_number[ - validate_pb2.FieldConstraints.CEL_FIELD_NUMBER - ] + validate_pb2.FieldRules.DESCRIPTOR.fields_by_number[validate_pb2.FieldRules.CEL_FIELD_NUMBER] ) ] ) @@ -453,7 +449,7 @@ def __init__( env: celpy.Environment, funcs: dict[str, celpy.CELFunction], field: descriptor.FieldDescriptor, - field_level: validate_pb2.FieldConstraints, + field_level: validate_pb2.FieldRules, *, for_items: bool = False, ): @@ -474,7 +470,7 @@ def __init__( type_case = field_level.WhichOneof("type") if type_case is not None: rules: message.Message = getattr(field_level, type_case) - # For each set field in the message, look for the private constraint + # For each set field in the message, look for the private rule # extension. for list_field, _ in rules.ListFields(): if validate_pb2.predefined in list_field.GetOptions().Extensions: @@ -499,7 +495,7 @@ def __init__( rule_path.elements[0].index = i self.add_rule(env, funcs, cel, rule_path=rule_path) - def validate(self, ctx: ConstraintContext, message: message.Message): + def validate(self, ctx: RuleContext, message: message.Message): if _is_empty_field(message, self._field): if self._required: ctx.add( @@ -509,9 +505,9 @@ def validate(self, ctx: ConstraintContext, message: message.Message): _field_to_element(self._field), ], ), - rule=FieldConstraintRules._required_rule_path, + rule=FieldRuleRules._required_rule_path, rule_value=self._required, - constraint_id="required", + rule_id="required", message="value is required", ), ) @@ -530,24 +526,22 @@ def validate(self, ctx: ConstraintContext, message: message.Message): sub_ctx.add_field_path_element(element) ctx.add_errors(sub_ctx) - def validate_item(self, ctx: ConstraintContext, val: typing.Any, *, for_key: bool = False): + def validate_item(self, ctx: RuleContext, val: typing.Any, *, for_key: bool = False): self._validate_value(ctx, val, for_key=for_key) self._validate_cel(ctx, this_value=val, this_cel=_scalar_field_value_to_cel(val, self._field), for_key=for_key) - def _validate_value(self, ctx: ConstraintContext, val: typing.Any, *, for_key: bool = False): + def _validate_value(self, ctx: RuleContext, val: typing.Any, *, for_key: bool = False): pass -class AnyConstraintRules(FieldConstraintRules): +class AnyRuleRules(FieldRuleRules): """Rules for an Any field.""" _in_rule_path: typing.ClassVar[validate_pb2.FieldPath] = validate_pb2.FieldPath( elements=[ _field_to_element(validate_pb2.AnyRules.DESCRIPTOR.fields_by_number[validate_pb2.AnyRules.IN_FIELD_NUMBER]), _field_to_element( - validate_pb2.FieldConstraints.DESCRIPTOR.fields_by_number[ - validate_pb2.FieldConstraints.ANY_FIELD_NUMBER - ] + validate_pb2.FieldRules.DESCRIPTOR.fields_by_number[validate_pb2.FieldRules.ANY_FIELD_NUMBER] ), ], ) @@ -558,9 +552,7 @@ class AnyConstraintRules(FieldConstraintRules): validate_pb2.AnyRules.DESCRIPTOR.fields_by_number[validate_pb2.AnyRules.NOT_IN_FIELD_NUMBER] ), _field_to_element( - validate_pb2.FieldConstraints.DESCRIPTOR.fields_by_number[ - validate_pb2.FieldConstraints.ANY_FIELD_NUMBER - ] + validate_pb2.FieldRules.DESCRIPTOR.fields_by_number[validate_pb2.FieldRules.ANY_FIELD_NUMBER] ), ], ) @@ -570,7 +562,7 @@ def __init__( env: celpy.Environment, funcs: dict[str, celpy.CELFunction], field: descriptor.FieldDescriptor, - field_level: validate_pb2.FieldConstraints, + field_level: validate_pb2.FieldRules, ): super().__init__(env, funcs, field, field_level) self._in = [] @@ -580,14 +572,14 @@ def __init__( if field_level.any.not_in: self._not_in = field_level.any.not_in - def _validate_value(self, ctx: ConstraintContext, value: any_pb2.Any, *, for_key: bool = False): + def _validate_value(self, ctx: RuleContext, value: any_pb2.Any, *, for_key: bool = False): if len(self._in) > 0: if value.type_url not in self._in: ctx.add( Violation( - rule=AnyConstraintRules._in_rule_path, + rule=AnyRuleRules._in_rule_path, rule_value=self._in, - constraint_id="any.in", + rule_id="any.in", message="type URL must be in the allow list", for_key=for_key, ) @@ -595,16 +587,16 @@ def _validate_value(self, ctx: ConstraintContext, value: any_pb2.Any, *, for_key if value.type_url in self._not_in: ctx.add( Violation( - rule=AnyConstraintRules._not_in_rule_path, + rule=AnyRuleRules._not_in_rule_path, rule_value=self._not_in, - constraint_id="any.not_in", + rule_id="any.not_in", message="type URL must not be in the block list", for_key=for_key, ) ) -class EnumConstraintRules(FieldConstraintRules): +class EnumRuleRules(FieldRuleRules): """Rules for an enum field.""" _defined_only = False @@ -615,9 +607,7 @@ class EnumConstraintRules(FieldConstraintRules): validate_pb2.EnumRules.DESCRIPTOR.fields_by_number[validate_pb2.EnumRules.DEFINED_ONLY_FIELD_NUMBER] ), _field_to_element( - validate_pb2.FieldConstraints.DESCRIPTOR.fields_by_number[ - validate_pb2.FieldConstraints.ENUM_FIELD_NUMBER - ] + validate_pb2.FieldRules.DESCRIPTOR.fields_by_number[validate_pb2.FieldRules.ENUM_FIELD_NUMBER] ), ], ) @@ -627,7 +617,7 @@ def __init__( env: celpy.Environment, funcs: dict[str, celpy.CELFunction], field: descriptor.FieldDescriptor, - field_level: validate_pb2.FieldConstraints, + field_level: validate_pb2.FieldRules, *, for_items: bool = False, ): @@ -635,7 +625,7 @@ def __init__( if field_level.enum.defined_only: self._defined_only = True - def validate(self, ctx: ConstraintContext, message: message.Message): + def validate(self, ctx: RuleContext, message: message.Message): super().validate(ctx, message) if ctx.done: return @@ -649,27 +639,25 @@ def validate(self, ctx: ConstraintContext, message: message.Message): _field_to_element(self._field), ], ), - rule=EnumConstraintRules._defined_only_rule_path, + rule=EnumRuleRules._defined_only_rule_path, rule_value=self._defined_only, - constraint_id="enum.defined_only", + rule_id="enum.defined_only", message="value must be one of the defined enum values", ), ) -class RepeatedConstraintRules(FieldConstraintRules): +class RepeatedRuleRules(FieldRuleRules): """Rules for a repeated field.""" - _item_rules: typing.Optional[FieldConstraintRules] = None + _item_rules: typing.Optional[FieldRuleRules] = None _items_rules_suffix: typing.ClassVar[list[validate_pb2.FieldPathElement]] = [ _field_to_element( validate_pb2.RepeatedRules.DESCRIPTOR.fields_by_number[validate_pb2.RepeatedRules.ITEMS_FIELD_NUMBER] ), _field_to_element( - validate_pb2.FieldConstraints.DESCRIPTOR.fields_by_number[ - validate_pb2.FieldConstraints.REPEATED_FIELD_NUMBER - ] + validate_pb2.FieldRules.DESCRIPTOR.fields_by_number[validate_pb2.FieldRules.REPEATED_FIELD_NUMBER] ), ] @@ -678,14 +666,14 @@ def __init__( env: celpy.Environment, funcs: dict[str, celpy.CELFunction], field: descriptor.FieldDescriptor, - field_level: validate_pb2.FieldConstraints, - item_rules: typing.Optional[FieldConstraintRules], + field_level: validate_pb2.FieldRules, + item_rules: typing.Optional[FieldRuleRules], ): super().__init__(env, funcs, field, field_level) if item_rules is not None: self._item_rules = item_rules - def validate(self, ctx: ConstraintContext, message: message.Message): + def validate(self, ctx: RuleContext, message: message.Message): super().validate(ctx, message) if ctx.done: return @@ -700,29 +688,29 @@ def validate(self, ctx: ConstraintContext, message: message.Message): element = _field_to_element(self._field) element.index = i sub_ctx.add_field_path_element(element) - sub_ctx.add_rule_path_elements(RepeatedConstraintRules._items_rules_suffix) + sub_ctx.add_rule_path_elements(RepeatedRuleRules._items_rules_suffix) ctx.add_errors(sub_ctx) if ctx.done: return -class MapConstraintRules(FieldConstraintRules): +class MapRuleRules(FieldRuleRules): """Rules for a map field.""" - _key_rules: typing.Optional[FieldConstraintRules] = None - _value_rules: typing.Optional[FieldConstraintRules] = None + _key_rules: typing.Optional[FieldRuleRules] = None + _value_rules: typing.Optional[FieldRuleRules] = None _key_rules_suffix: typing.ClassVar[list[validate_pb2.FieldPathElement]] = [ _field_to_element(validate_pb2.MapRules.DESCRIPTOR.fields_by_number[validate_pb2.MapRules.KEYS_FIELD_NUMBER]), _field_to_element( - validate_pb2.FieldConstraints.DESCRIPTOR.fields_by_number[validate_pb2.FieldConstraints.MAP_FIELD_NUMBER] + validate_pb2.FieldRules.DESCRIPTOR.fields_by_number[validate_pb2.FieldRules.MAP_FIELD_NUMBER] ), ] _value_rules_suffix: typing.ClassVar[list[validate_pb2.FieldPathElement]] = [ _field_to_element(validate_pb2.MapRules.DESCRIPTOR.fields_by_number[validate_pb2.MapRules.VALUES_FIELD_NUMBER]), _field_to_element( - validate_pb2.FieldConstraints.DESCRIPTOR.fields_by_number[validate_pb2.FieldConstraints.MAP_FIELD_NUMBER] + validate_pb2.FieldRules.DESCRIPTOR.fields_by_number[validate_pb2.FieldRules.MAP_FIELD_NUMBER] ), ] @@ -731,9 +719,9 @@ def __init__( env: celpy.Environment, funcs: dict[str, celpy.CELFunction], field: descriptor.FieldDescriptor, - field_level: validate_pb2.FieldConstraints, - key_rules: typing.Optional[FieldConstraintRules], - value_rules: typing.Optional[FieldConstraintRules], + field_level: validate_pb2.FieldRules, + key_rules: typing.Optional[FieldRuleRules], + value_rules: typing.Optional[FieldRuleRules], ): super().__init__(env, funcs, field, field_level) if key_rules is not None: @@ -741,7 +729,7 @@ def __init__( if value_rules is not None: self._value_rules = value_rules - def validate(self, ctx: ConstraintContext, message: message.Message): + def validate(self, ctx: RuleContext, message: message.Message): super().validate(ctx, message) if ctx.done: return @@ -752,13 +740,13 @@ def validate(self, ctx: ConstraintContext, message: message.Message): if not self._key_rules._ignore_empty or k: self._key_rules.validate_item(key_ctx, k, for_key=True) if key_ctx.has_errors(): - key_ctx.add_rule_path_elements(MapConstraintRules._key_rules_suffix) + key_ctx.add_rule_path_elements(MapRuleRules._key_rules_suffix) map_ctx = ctx.sub_context() if self._value_rules is not None: if not self._value_rules._ignore_empty or v: self._value_rules.validate_item(map_ctx, v) if map_ctx.has_errors(): - map_ctx.add_rule_path_elements(MapConstraintRules._value_rules_suffix) + map_ctx.add_rule_path_elements(MapRuleRules._value_rules_suffix) map_ctx.add_errors(key_ctx) if map_ctx.has_errors(): element = _field_to_element(self._field) @@ -769,17 +757,17 @@ def validate(self, ctx: ConstraintContext, message: message.Message): ctx.add_errors(map_ctx) -class OneofConstraintRules(ConstraintRules): +class OneofRuleRules(RuleRules): """Rules for a oneof definition.""" required = True - def __init__(self, oneof: descriptor.OneofDescriptor, rules: validate_pb2.OneofConstraints): + def __init__(self, oneof: descriptor.OneofDescriptor, rules: validate_pb2.OneofRules): self._oneof = oneof if not rules.required: self.required = False - def validate(self, ctx: ConstraintContext, message: message.Message): + def validate(self, ctx: RuleContext, message: message.Message): if not message.WhichOneof(self._oneof.name): if self.required: ctx.add( @@ -787,29 +775,29 @@ def validate(self, ctx: ConstraintContext, message: message.Message): field=validate_pb2.FieldPath( elements=[_oneof_to_element(self._oneof)], ), - constraint_id="required", + rule_id="required", message="exactly one field is required in oneof", ) ) return -class ConstraintFactory: - """Factory for creating and caching constraints.""" +class RuleFactory: + """Factory for creating and caching rules.""" _env: celpy.Environment _funcs: dict[str, celpy.CELFunction] - _cache: dict[descriptor.Descriptor, typing.Union[list[ConstraintRules], Exception]] + _cache: dict[descriptor.Descriptor, typing.Union[list[RuleRules], Exception]] def __init__(self, funcs: dict[str, celpy.CELFunction]): self._env = celpy.Environment(runner_class=InterpretedRunner) self._funcs = funcs self._cache = {} - def get(self, descriptor: descriptor.Descriptor) -> list[ConstraintRules]: + def get(self, descriptor: descriptor.Descriptor) -> list[RuleRules]: if descriptor not in self._cache: try: - self._cache[descriptor] = self._new_constraints(descriptor) + self._cache[descriptor] = self._new_rules(descriptor) except Exception as e: self._cache[descriptor] = e result = self._cache[descriptor] @@ -817,16 +805,16 @@ def get(self, descriptor: descriptor.Descriptor) -> list[ConstraintRules]: raise result return result - def _new_message_constraint(self, rules: validate_pb2.MessageConstraints) -> MessageConstraintRules: - result = MessageConstraintRules(rules) + def _new_message_rule(self, rules: validate_pb2.MessageRules) -> MessageRuleRules: + result = MessageRuleRules(rules) for cel in rules.cel: result.add_rule(self._env, self._funcs, cel) return result - def _new_scalar_field_constraint( + def _new_scalar_field_rule( self, field: descriptor.FieldDescriptor, - field_level: validate_pb2.FieldConstraints, + field_level: validate_pb2.FieldRules, *, for_items: bool = False, ): @@ -834,23 +822,23 @@ def _new_scalar_field_constraint( return None type_case = field_level.WhichOneof("type") if type_case is None: - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "duration": check_field_type(field, 0, "google.protobuf.Duration") - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "timestamp": check_field_type(field, 0, "google.protobuf.Timestamp") - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "enum": check_field_type(field, descriptor.FieldDescriptor.TYPE_ENUM) - result = EnumConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = EnumRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "bool": check_field_type(field, descriptor.FieldDescriptor.TYPE_BOOL, "google.protobuf.BoolValue") - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "bytes": check_field_type( @@ -858,15 +846,15 @@ def _new_scalar_field_constraint( descriptor.FieldDescriptor.TYPE_BYTES, "google.protobuf.BytesValue", ) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "fixed32": check_field_type(field, descriptor.FieldDescriptor.TYPE_FIXED32) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "fixed64": check_field_type(field, descriptor.FieldDescriptor.TYPE_FIXED64) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "float": check_field_type( @@ -874,7 +862,7 @@ def _new_scalar_field_constraint( descriptor.FieldDescriptor.TYPE_FLOAT, "google.protobuf.FloatValue", ) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "double": check_field_type( @@ -882,7 +870,7 @@ def _new_scalar_field_constraint( descriptor.FieldDescriptor.TYPE_DOUBLE, "google.protobuf.DoubleValue", ) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "int32": check_field_type( @@ -890,7 +878,7 @@ def _new_scalar_field_constraint( descriptor.FieldDescriptor.TYPE_INT32, "google.protobuf.Int32Value", ) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "int64": check_field_type( @@ -898,23 +886,23 @@ def _new_scalar_field_constraint( descriptor.FieldDescriptor.TYPE_INT64, "google.protobuf.Int64Value", ) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "sfixed32": check_field_type(field, descriptor.FieldDescriptor.TYPE_SFIXED32) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "sfixed64": check_field_type(field, descriptor.FieldDescriptor.TYPE_SFIXED64) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "sint32": check_field_type(field, descriptor.FieldDescriptor.TYPE_SINT32) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "sint64": check_field_type(field, descriptor.FieldDescriptor.TYPE_SINT64) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "uint32": check_field_type( @@ -922,7 +910,7 @@ def _new_scalar_field_constraint( descriptor.FieldDescriptor.TYPE_UINT32, "google.protobuf.UInt32Value", ) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "uint64": check_field_type( @@ -930,7 +918,7 @@ def _new_scalar_field_constraint( descriptor.FieldDescriptor.TYPE_UINT64, "google.protobuf.UInt64Value", ) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "string": check_field_type( @@ -938,56 +926,56 @@ def _new_scalar_field_constraint( descriptor.FieldDescriptor.TYPE_STRING, "google.protobuf.StringValue", ) - result = FieldConstraintRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "any": check_field_type(field, descriptor.FieldDescriptor.TYPE_MESSAGE, "google.protobuf.Any") - result = AnyConstraintRules(self._env, self._funcs, field, field_level) + result = AnyRuleRules(self._env, self._funcs, field, field_level) return result - def _new_field_constraint( + def _new_field_rule( self, field: descriptor.FieldDescriptor, - rules: validate_pb2.FieldConstraints, - ) -> FieldConstraintRules: + rules: validate_pb2.FieldRules, + ) -> FieldRuleRules: if field.label != descriptor.FieldDescriptor.LABEL_REPEATED: - return self._new_scalar_field_constraint(field, rules) + return self._new_scalar_field_rule(field, rules) if field.message_type is not None and field.message_type.GetOptions().map_entry: key_rules = None if rules.map.HasField("keys"): key_field = field.message_type.fields_by_name["key"] - key_rules = self._new_scalar_field_constraint(key_field, rules.map.keys, for_items=True) + key_rules = self._new_scalar_field_rule(key_field, rules.map.keys, for_items=True) value_rules = None if rules.map.HasField("values"): value_field = field.message_type.fields_by_name["value"] - value_rules = self._new_scalar_field_constraint(value_field, rules.map.values, for_items=True) - return MapConstraintRules(self._env, self._funcs, field, rules, key_rules, value_rules) + value_rules = self._new_scalar_field_rule(value_field, rules.map.values, for_items=True) + return MapRuleRules(self._env, self._funcs, field, rules, key_rules, value_rules) item_rule = None if rules.repeated.HasField("items"): - item_rule = self._new_scalar_field_constraint(field, rules.repeated.items) - return RepeatedConstraintRules(self._env, self._funcs, field, rules, item_rule) + item_rule = self._new_scalar_field_rule(field, rules.repeated.items) + return RepeatedRuleRules(self._env, self._funcs, field, rules, item_rule) - def _new_constraints(self, desc: descriptor.Descriptor) -> list[ConstraintRules]: - result: list[ConstraintRules] = [] - constraint: typing.Optional[ConstraintRules] = None + def _new_rules(self, desc: descriptor.Descriptor) -> list[RuleRules]: + result: list[RuleRules] = [] + rule: typing.Optional[RuleRules] = None if validate_pb2.message in desc.GetOptions().Extensions: message_level = desc.GetOptions().Extensions[validate_pb2.message] if message_level.disabled: return [] - if constraint := self._new_message_constraint(message_level): - result.append(constraint) + if rule := self._new_message_rule(message_level): + result.append(rule) for oneof in desc.oneofs: if validate_pb2.oneof in oneof.GetOptions().Extensions: - if constraint := OneofConstraintRules(oneof, oneof.GetOptions().Extensions[validate_pb2.oneof]): - result.append(constraint) + if rule := OneofRuleRules(oneof, oneof.GetOptions().Extensions[validate_pb2.oneof]): + result.append(rule) for field in desc.fields: if validate_pb2.field in field.GetOptions().Extensions: field_level = field.GetOptions().Extensions[validate_pb2.field] if field_level.ignore == validate_pb2.IGNORE_ALWAYS: continue - result.append(self._new_field_constraint(field, field_level)) + result.append(self._new_field_rule(field, field_level)) if field_level.repeated.items.ignore == validate_pb2.IGNORE_ALWAYS: continue if field.message_type is None: @@ -997,43 +985,43 @@ def _new_constraints(self, desc: descriptor.Descriptor) -> list[ConstraintRules] value_field = field.message_type.fields_by_name["value"] if value_field.type != descriptor.FieldDescriptor.TYPE_MESSAGE: continue - result.append(MapValMsgConstraint(self, field, key_field, value_field)) + result.append(MapValMsgRule(self, field, key_field, value_field)) elif field.label == descriptor.FieldDescriptor.LABEL_REPEATED: - result.append(RepeatedMsgConstraint(self, field)) + result.append(RepeatedMsgRule(self, field)) else: - result.append(SubMsgConstraint(self, field)) + result.append(SubMsgRule(self, field)) return result -class SubMsgConstraint(ConstraintRules): +class SubMsgRule(RuleRules): def __init__( self, - factory: ConstraintFactory, + factory: RuleFactory, field: descriptor.FieldDescriptor, ): self._factory = factory self._field = field - def validate(self, ctx: ConstraintContext, message: message.Message): + def validate(self, ctx: RuleContext, message: message.Message): if not message.HasField(self._field.name): return - constraints = self._factory.get(self._field.message_type) - if constraints is None: + rules = self._factory.get(self._field.message_type) + if rules is None: return val = getattr(message, self._field.name) sub_ctx = ctx.sub_context() - for constraint in constraints: - constraint.validate(sub_ctx, val) + for rule in rules: + rule.validate(sub_ctx, val) if sub_ctx.has_errors(): element = _field_to_element(self._field) sub_ctx.add_field_path_element(element) ctx.add_errors(sub_ctx) -class MapValMsgConstraint(ConstraintRules): +class MapValMsgRule(RuleRules): def __init__( self, - factory: ConstraintFactory, + factory: RuleFactory, field: descriptor.FieldDescriptor, key_field: descriptor.FieldDescriptor, value_field: descriptor.FieldDescriptor, @@ -1043,17 +1031,17 @@ def __init__( self._key_field = key_field self._value_field = value_field - def validate(self, ctx: ConstraintContext, message: message.Message): + def validate(self, ctx: RuleContext, message: message.Message): val = getattr(message, self._field.name) if not val: return - constraints = self._factory.get(self._value_field.message_type) - if constraints is None: + rules = self._factory.get(self._value_field.message_type) + if rules is None: return for k, v in val.items(): sub_ctx = ctx.sub_context() - for constraint in constraints: - constraint.validate(sub_ctx, v) + for rule in rules: + rule.validate(sub_ctx, v) if sub_ctx.has_errors(): element = _field_to_element(self._field) _set_path_element_map_key(element, k, self._key_field, self._value_field) @@ -1061,26 +1049,26 @@ def validate(self, ctx: ConstraintContext, message: message.Message): ctx.add_errors(sub_ctx) -class RepeatedMsgConstraint(ConstraintRules): +class RepeatedMsgRule(RuleRules): def __init__( self, - factory: ConstraintFactory, + factory: RuleFactory, field: descriptor.FieldDescriptor, ): self._factory = factory self._field = field - def validate(self, ctx: ConstraintContext, message: message.Message): + def validate(self, ctx: RuleContext, message: message.Message): val = getattr(message, self._field.name) if not val: return - constraints = self._factory.get(self._field.message_type) - if constraints is None: + rules = self._factory.get(self._field.message_type) + if rules is None: return for idx, item in enumerate(val): sub_ctx = ctx.sub_context() - for constraint in constraints: - constraint.validate(sub_ctx, item) + for rule in rules: + rule.validate(sub_ctx, item) if sub_ctx.has_errors(): element = _field_to_element(self._field) element.index = idx diff --git a/protovalidate/validator.py b/protovalidate/validator.py index 45fffa0..301559d 100644 --- a/protovalidate/validator.py +++ b/protovalidate/validator.py @@ -17,27 +17,27 @@ from google.protobuf import message from buf.validate import validate_pb2 # type: ignore -from protovalidate.internal import constraints as _constraints +from protovalidate.internal import rules as _rules from protovalidate.internal import extra_func -CompilationError = _constraints.CompilationError +CompilationError = _rules.CompilationError Violations = validate_pb2.Violations -Violation = _constraints.Violation +Violation = _rules.Violation class Validator: """ - Validates protobuf messages against static constraints. + Validates protobuf messages against static rules. Each validator instance caches internal state generated from the static - constraints, so reusing the same instance for multiple validations + rules, so reusing the same instance for multiple validations significantly improves performance. """ - _factory: _constraints.ConstraintFactory + _factory: _rules.RuleFactory def __init__(self): - self._factory = _constraints.ConstraintFactory(extra_func.EXTRA_FUNCS) + self._factory = _rules.RuleFactory(extra_func.EXTRA_FUNCS) def validate( self, @@ -46,14 +46,14 @@ def validate( fail_fast: bool = False, ): """ - Validates the given message against the static constraints defined in + Validates the given message against the static rules defined in the message's descriptor. Parameters: message: The message to validate. fail_fast: If true, validation will stop after the first violation. Raises: - CompilationError: If the static constraints could not be compiled. + CompilationError: If the static rules could not be compiled. ValidationError: If the message is invalid. """ violations = self.collect_violations(message, fail_fast=fail_fast) @@ -69,7 +69,7 @@ def collect_violations( into: typing.Optional[list[Violation]] = None, ) -> list[Violation]: """ - Validates the given message against the static constraints defined in + Validates the given message against the static rules defined in the message's descriptor. Compared to validate, collect_violations is faster but puts the burden of raising an appropriate exception on the caller. @@ -80,11 +80,11 @@ def collect_violations( into: If provided, any violations will be appended to the Violations object and the same object will be returned. Raises: - CompilationError: If the static constraints could not be compiled. + CompilationError: If the static rules could not be compiled. """ - ctx = _constraints.ConstraintContext(fail_fast=fail_fast, violations=into) - for constraint in self._factory.get(message.DESCRIPTOR): - constraint.validate(ctx, message) + ctx = _rules.RuleContext(fail_fast=fail_fast, violations=into) + for rule in self._factory.get(message.DESCRIPTOR): + rule.validate(ctx, message) if ctx.done: break for violation in ctx.violations: @@ -100,9 +100,9 @@ class ValidationError(ValueError): An error raised when a message fails to validate. """ - _violations: list[_constraints.Violation] + _violations: list[_rules.Violation] - def __init__(self, msg: str, violations: list[_constraints.Violation]): + def __init__(self, msg: str, violations: list[_rules.Violation]): super().__init__(msg) self._violations = violations diff --git a/tests/conformance/nonconforming.yaml b/tests/conformance/nonconforming.yaml index 25744e5..b46684d 100644 --- a/tests/conformance/nonconforming.yaml +++ b/tests/conformance/nonconforming.yaml @@ -1,9 +1,9 @@ # celpy doesn't support nano seconds # ref: https://github.com/cloud-custodian/cel-python/issues/43 -standard_constraints/well_known_types/duration: +standard_rules/well_known_types/duration: - gte_lte/invalid/above - lte/invalid - not in/valid -standard_constraints/well_known_types/timestamp: +standard_rules/well_known_types/timestamp: - gte_lte/invalid/above - lte/invalid diff --git a/tests/conformance/runner.py b/tests/conformance/runner.py index 392e97f..4ef9027 100644 --- a/tests/conformance/runner.py +++ b/tests/conformance/runner.py @@ -54,7 +54,7 @@ wkt_timestamp_pb2, # noqa: F401 wkt_wrappers_pb2, # noqa: F401 ) -from buf.validate.conformance.cases.custom_constraints import custom_constraints_pb2 # noqa: F401 +from buf.validate.conformance.cases.custom_rules import custom_rules_pb2 # noqa: F401 from buf.validate.conformance.harness import harness_pb2 diff --git a/tests/validate_test.py b/tests/validate_test.py index 8289908..263ffd9 100644 --- a/tests/validate_test.py +++ b/tests/validate_test.py @@ -24,7 +24,7 @@ def test_ninf(self): msg.val = float("-inf") violations = protovalidate.collect_violations(msg) self.assertEqual(len(violations), 1) - self.assertEqual(violations[0].proto.constraint_id, "double.finite") + self.assertEqual(violations[0].proto.rule_id, "double.finite") self.assertEqual(violations[0].field_value, msg.val) self.assertEqual(violations[0].rule_value, True) From 282cc4de56317c1ae1902be06d3303f9a975f428 Mon Sep 17 00:00:00 2001 From: Steve Ayers Date: Wed, 23 Apr 2025 12:43:35 -0400 Subject: [PATCH 2/4] ref TCN-2820 Update to v0.11.0 --- protovalidate/internal/extra_func.py | 2 +- tests/conformance/nonconforming.yaml | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/protovalidate/internal/extra_func.py b/protovalidate/internal/extra_func.py index aa9c5fe..c6cb19d 100644 --- a/protovalidate/internal/extra_func.py +++ b/protovalidate/internal/extra_func.py @@ -21,7 +21,7 @@ from celpy import celtypes from protovalidate.internal import string_format -from protovalidate.internal.constraints import MessageType, field_to_cel +from protovalidate.internal.rules import MessageType, field_to_cel # See https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address _email_regex = re.compile( diff --git a/tests/conformance/nonconforming.yaml b/tests/conformance/nonconforming.yaml index b46684d..9a014fb 100644 --- a/tests/conformance/nonconforming.yaml +++ b/tests/conformance/nonconforming.yaml @@ -3,7 +3,22 @@ standard_rules/well_known_types/duration: - gte_lte/invalid/above - lte/invalid + - in/invalid - not in/valid + - not in/invalid standard_rules/well_known_types/timestamp: - gte_lte/invalid/above - lte/invalid +kitchen_sink: + - field/embedded/invalid + - field/transitive/invalid + - many/all-non-message-fields/invalid + - field/invalid +standard_rules/repeated: + - items/in/invalid + - items/not_in/invalid +library/is_ip: + - version/6/invalid/ipv6/7h16_double_colon_1h16 + - version/6/invalid/ipv6/7h16_double_colon + - version/6/invalid/ipv6/double_colon_8h16 + - version/6/invalid/ipv6/1h16_double_colon_7h16 From 170bd99840e48231150b3d794f42a163e22d375e Mon Sep 17 00:00:00 2001 From: Steve Ayers Date: Wed, 23 Apr 2025 14:54:08 -0400 Subject: [PATCH 3/4] Lint --- protovalidate/internal/rules.py | 112 ++++++++++++++++---------------- protovalidate/validator.py | 2 +- 2 files changed, 57 insertions(+), 57 deletions(-) diff --git a/protovalidate/internal/rules.py b/protovalidate/internal/rules.py index d9f3e8e..e9943ff 100644 --- a/protovalidate/internal/rules.py +++ b/protovalidate/internal/rules.py @@ -286,7 +286,7 @@ def sub_context(self): return RuleContext(fail_fast=self._fail_fast) -class RuleRules: +class Rules: """The rules associated with a single 'rules' message.""" def validate(self, ctx: RuleContext, _: message.Message): @@ -303,7 +303,7 @@ class CelRunner: rule_path: typing.Optional[validate_pb2.FieldPath] = None -class CelRuleRules(RuleRules): +class CelRules(Rules): """A rule that has rules written in CEL.""" _cel: list[CelRunner] @@ -386,7 +386,7 @@ def add_rule( ) -class MessageRuleRules(CelRuleRules): +class MessageRules(CelRules): """Message-level rules.""" def validate(self, ctx: RuleContext, message: message.Message): @@ -420,7 +420,7 @@ def _zero_value(field: descriptor.FieldDescriptor): return _field_value_to_cel(field.default_value, field) -class FieldRuleRules(CelRuleRules): +class FieldRules(CelRules): """Field-level rules.""" _ignore_empty = False @@ -505,7 +505,7 @@ def validate(self, ctx: RuleContext, message: message.Message): _field_to_element(self._field), ], ), - rule=FieldRuleRules._required_rule_path, + rule=FieldRules._required_rule_path, rule_value=self._required, rule_id="required", message="value is required", @@ -534,7 +534,7 @@ def _validate_value(self, ctx: RuleContext, val: typing.Any, *, for_key: bool = pass -class AnyRuleRules(FieldRuleRules): +class AnyRules(FieldRules): """Rules for an Any field.""" _in_rule_path: typing.ClassVar[validate_pb2.FieldPath] = validate_pb2.FieldPath( @@ -577,7 +577,7 @@ def _validate_value(self, ctx: RuleContext, value: any_pb2.Any, *, for_key: bool if value.type_url not in self._in: ctx.add( Violation( - rule=AnyRuleRules._in_rule_path, + rule=AnyRules._in_rule_path, rule_value=self._in, rule_id="any.in", message="type URL must be in the allow list", @@ -587,7 +587,7 @@ def _validate_value(self, ctx: RuleContext, value: any_pb2.Any, *, for_key: bool if value.type_url in self._not_in: ctx.add( Violation( - rule=AnyRuleRules._not_in_rule_path, + rule=AnyRules._not_in_rule_path, rule_value=self._not_in, rule_id="any.not_in", message="type URL must not be in the block list", @@ -596,7 +596,7 @@ def _validate_value(self, ctx: RuleContext, value: any_pb2.Any, *, for_key: bool ) -class EnumRuleRules(FieldRuleRules): +class EnumRules(FieldRules): """Rules for an enum field.""" _defined_only = False @@ -639,7 +639,7 @@ def validate(self, ctx: RuleContext, message: message.Message): _field_to_element(self._field), ], ), - rule=EnumRuleRules._defined_only_rule_path, + rule=EnumRules._defined_only_rule_path, rule_value=self._defined_only, rule_id="enum.defined_only", message="value must be one of the defined enum values", @@ -647,10 +647,10 @@ def validate(self, ctx: RuleContext, message: message.Message): ) -class RepeatedRuleRules(FieldRuleRules): +class RepeatedRules(FieldRules): """Rules for a repeated field.""" - _item_rules: typing.Optional[FieldRuleRules] = None + _item_rules: typing.Optional[FieldRules] = None _items_rules_suffix: typing.ClassVar[list[validate_pb2.FieldPathElement]] = [ _field_to_element( @@ -667,7 +667,7 @@ def __init__( funcs: dict[str, celpy.CELFunction], field: descriptor.FieldDescriptor, field_level: validate_pb2.FieldRules, - item_rules: typing.Optional[FieldRuleRules], + item_rules: typing.Optional[FieldRules], ): super().__init__(env, funcs, field, field_level) if item_rules is not None: @@ -688,17 +688,17 @@ def validate(self, ctx: RuleContext, message: message.Message): element = _field_to_element(self._field) element.index = i sub_ctx.add_field_path_element(element) - sub_ctx.add_rule_path_elements(RepeatedRuleRules._items_rules_suffix) + sub_ctx.add_rule_path_elements(RepeatedRules._items_rules_suffix) ctx.add_errors(sub_ctx) if ctx.done: return -class MapRuleRules(FieldRuleRules): +class MapRules(FieldRules): """Rules for a map field.""" - _key_rules: typing.Optional[FieldRuleRules] = None - _value_rules: typing.Optional[FieldRuleRules] = None + _key_rules: typing.Optional[FieldRules] = None + _value_rules: typing.Optional[FieldRules] = None _key_rules_suffix: typing.ClassVar[list[validate_pb2.FieldPathElement]] = [ _field_to_element(validate_pb2.MapRules.DESCRIPTOR.fields_by_number[validate_pb2.MapRules.KEYS_FIELD_NUMBER]), @@ -720,8 +720,8 @@ def __init__( funcs: dict[str, celpy.CELFunction], field: descriptor.FieldDescriptor, field_level: validate_pb2.FieldRules, - key_rules: typing.Optional[FieldRuleRules], - value_rules: typing.Optional[FieldRuleRules], + key_rules: typing.Optional[FieldRules], + value_rules: typing.Optional[FieldRules], ): super().__init__(env, funcs, field, field_level) if key_rules is not None: @@ -740,13 +740,13 @@ def validate(self, ctx: RuleContext, message: message.Message): if not self._key_rules._ignore_empty or k: self._key_rules.validate_item(key_ctx, k, for_key=True) if key_ctx.has_errors(): - key_ctx.add_rule_path_elements(MapRuleRules._key_rules_suffix) + key_ctx.add_rule_path_elements(MapRules._key_rules_suffix) map_ctx = ctx.sub_context() if self._value_rules is not None: if not self._value_rules._ignore_empty or v: self._value_rules.validate_item(map_ctx, v) if map_ctx.has_errors(): - map_ctx.add_rule_path_elements(MapRuleRules._value_rules_suffix) + map_ctx.add_rule_path_elements(MapRules._value_rules_suffix) map_ctx.add_errors(key_ctx) if map_ctx.has_errors(): element = _field_to_element(self._field) @@ -757,7 +757,7 @@ def validate(self, ctx: RuleContext, message: message.Message): ctx.add_errors(map_ctx) -class OneofRuleRules(RuleRules): +class OneofRules(Rules): """Rules for a oneof definition.""" required = True @@ -787,14 +787,14 @@ class RuleFactory: _env: celpy.Environment _funcs: dict[str, celpy.CELFunction] - _cache: dict[descriptor.Descriptor, typing.Union[list[RuleRules], Exception]] + _cache: dict[descriptor.Descriptor, typing.Union[list[Rules], Exception]] def __init__(self, funcs: dict[str, celpy.CELFunction]): self._env = celpy.Environment(runner_class=InterpretedRunner) self._funcs = funcs self._cache = {} - def get(self, descriptor: descriptor.Descriptor) -> list[RuleRules]: + def get(self, descriptor: descriptor.Descriptor) -> list[Rules]: if descriptor not in self._cache: try: self._cache[descriptor] = self._new_rules(descriptor) @@ -805,8 +805,8 @@ def get(self, descriptor: descriptor.Descriptor) -> list[RuleRules]: raise result return result - def _new_message_rule(self, rules: validate_pb2.MessageRules) -> MessageRuleRules: - result = MessageRuleRules(rules) + def _new_message_rule(self, rules: validate_pb2.MessageRules) -> MessageRules: + result = MessageRules(rules) for cel in rules.cel: result.add_rule(self._env, self._funcs, cel) return result @@ -822,23 +822,23 @@ def _new_scalar_field_rule( return None type_case = field_level.WhichOneof("type") if type_case is None: - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "duration": check_field_type(field, 0, "google.protobuf.Duration") - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "timestamp": check_field_type(field, 0, "google.protobuf.Timestamp") - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "enum": check_field_type(field, descriptor.FieldDescriptor.TYPE_ENUM) - result = EnumRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = EnumRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "bool": check_field_type(field, descriptor.FieldDescriptor.TYPE_BOOL, "google.protobuf.BoolValue") - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "bytes": check_field_type( @@ -846,15 +846,15 @@ def _new_scalar_field_rule( descriptor.FieldDescriptor.TYPE_BYTES, "google.protobuf.BytesValue", ) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "fixed32": check_field_type(field, descriptor.FieldDescriptor.TYPE_FIXED32) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "fixed64": check_field_type(field, descriptor.FieldDescriptor.TYPE_FIXED64) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "float": check_field_type( @@ -862,7 +862,7 @@ def _new_scalar_field_rule( descriptor.FieldDescriptor.TYPE_FLOAT, "google.protobuf.FloatValue", ) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "double": check_field_type( @@ -870,7 +870,7 @@ def _new_scalar_field_rule( descriptor.FieldDescriptor.TYPE_DOUBLE, "google.protobuf.DoubleValue", ) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "int32": check_field_type( @@ -878,7 +878,7 @@ def _new_scalar_field_rule( descriptor.FieldDescriptor.TYPE_INT32, "google.protobuf.Int32Value", ) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "int64": check_field_type( @@ -886,23 +886,23 @@ def _new_scalar_field_rule( descriptor.FieldDescriptor.TYPE_INT64, "google.protobuf.Int64Value", ) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "sfixed32": check_field_type(field, descriptor.FieldDescriptor.TYPE_SFIXED32) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "sfixed64": check_field_type(field, descriptor.FieldDescriptor.TYPE_SFIXED64) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "sint32": check_field_type(field, descriptor.FieldDescriptor.TYPE_SINT32) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "sint64": check_field_type(field, descriptor.FieldDescriptor.TYPE_SINT64) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "uint32": check_field_type( @@ -910,7 +910,7 @@ def _new_scalar_field_rule( descriptor.FieldDescriptor.TYPE_UINT32, "google.protobuf.UInt32Value", ) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "uint64": check_field_type( @@ -918,7 +918,7 @@ def _new_scalar_field_rule( descriptor.FieldDescriptor.TYPE_UINT64, "google.protobuf.UInt64Value", ) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "string": check_field_type( @@ -926,18 +926,18 @@ def _new_scalar_field_rule( descriptor.FieldDescriptor.TYPE_STRING, "google.protobuf.StringValue", ) - result = FieldRuleRules(self._env, self._funcs, field, field_level, for_items=for_items) + result = FieldRules(self._env, self._funcs, field, field_level, for_items=for_items) return result elif type_case == "any": check_field_type(field, descriptor.FieldDescriptor.TYPE_MESSAGE, "google.protobuf.Any") - result = AnyRuleRules(self._env, self._funcs, field, field_level) + result = AnyRules(self._env, self._funcs, field, field_level) return result def _new_field_rule( self, field: descriptor.FieldDescriptor, rules: validate_pb2.FieldRules, - ) -> FieldRuleRules: + ) -> FieldRules: if field.label != descriptor.FieldDescriptor.LABEL_REPEATED: return self._new_scalar_field_rule(field, rules) if field.message_type is not None and field.message_type.GetOptions().map_entry: @@ -949,15 +949,15 @@ def _new_field_rule( if rules.map.HasField("values"): value_field = field.message_type.fields_by_name["value"] value_rules = self._new_scalar_field_rule(value_field, rules.map.values, for_items=True) - return MapRuleRules(self._env, self._funcs, field, rules, key_rules, value_rules) + return MapRules(self._env, self._funcs, field, rules, key_rules, value_rules) item_rule = None if rules.repeated.HasField("items"): item_rule = self._new_scalar_field_rule(field, rules.repeated.items) - return RepeatedRuleRules(self._env, self._funcs, field, rules, item_rule) + return RepeatedRules(self._env, self._funcs, field, rules, item_rule) - def _new_rules(self, desc: descriptor.Descriptor) -> list[RuleRules]: - result: list[RuleRules] = [] - rule: typing.Optional[RuleRules] = None + def _new_rules(self, desc: descriptor.Descriptor) -> list[Rules]: + result: list[Rules] = [] + rule: typing.Optional[Rules] = None if validate_pb2.message in desc.GetOptions().Extensions: message_level = desc.GetOptions().Extensions[validate_pb2.message] if message_level.disabled: @@ -967,7 +967,7 @@ def _new_rules(self, desc: descriptor.Descriptor) -> list[RuleRules]: for oneof in desc.oneofs: if validate_pb2.oneof in oneof.GetOptions().Extensions: - if rule := OneofRuleRules(oneof, oneof.GetOptions().Extensions[validate_pb2.oneof]): + if rule := OneofRules(oneof, oneof.GetOptions().Extensions[validate_pb2.oneof]): result.append(rule) for field in desc.fields: @@ -993,7 +993,7 @@ def _new_rules(self, desc: descriptor.Descriptor) -> list[RuleRules]: return result -class SubMsgRule(RuleRules): +class SubMsgRule(Rules): def __init__( self, factory: RuleFactory, @@ -1018,7 +1018,7 @@ def validate(self, ctx: RuleContext, message: message.Message): ctx.add_errors(sub_ctx) -class MapValMsgRule(RuleRules): +class MapValMsgRule(Rules): def __init__( self, factory: RuleFactory, @@ -1049,7 +1049,7 @@ def validate(self, ctx: RuleContext, message: message.Message): ctx.add_errors(sub_ctx) -class RepeatedMsgRule(RuleRules): +class RepeatedMsgRule(Rules): def __init__( self, factory: RuleFactory, diff --git a/protovalidate/validator.py b/protovalidate/validator.py index 301559d..b53b3e4 100644 --- a/protovalidate/validator.py +++ b/protovalidate/validator.py @@ -17,8 +17,8 @@ from google.protobuf import message from buf.validate import validate_pb2 # type: ignore -from protovalidate.internal import rules as _rules from protovalidate.internal import extra_func +from protovalidate.internal import rules as _rules CompilationError = _rules.CompilationError Violations = validate_pb2.Violations From 348e3aec69dfbf7a2bed09826d11cf5e387638d5 Mon Sep 17 00:00:00 2001 From: Steve Ayers Date: Wed, 23 Apr 2025 14:54:49 -0400 Subject: [PATCH 4/4] Docs --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index d0cd92a..a96320b 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,7 @@ ADD_LICENSE_HEADER := $(BIN)/license-header \ --license-type apache \ --copyright-holder "Buf Technologies, Inc." \ --year-range "2023-2025" +# This version should be kept in sync with the version in buf.yaml PROTOVALIDATE_VERSION ?= v0.11.0 .PHONY: help