diff --git a/Makefile b/Makefile index b10bc8d..e3f51bf 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 ?= 895eefca6d1346f742fc18b9983d40478820906d +PROTOVALIDATE_VERSION ?= v1.2.0 # Version of the cel-spec that this implementation is conformant with # This should be kept in sync with the version in test/test_format.py CEL_SPEC_VERSION ?= v0.25.1 diff --git a/gen/buf/validate/conformance/cases/predefined_rules_proto2_pb2.py b/gen/buf/validate/conformance/cases/predefined_rules_proto2_pb2.py index ee15a98..bb43d72 100644 --- a/gen/buf/validate/conformance/cases/predefined_rules_proto2_pb2.py +++ b/gen/buf/validate/conformance/cases/predefined_rules_proto2_pb2.py @@ -32,7 +32,7 @@ from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n 24 ? \'\' : \'a must be greater than 24\'R\x01\x61\x12\xb4\x01\n\x01\x62\x18\x02 \x01(\x0b\x32\x44.buf.validate.conformance.cases.PredefinedAndCustomRuleProto2.NestedB`\xbaH]\xba\x01Z\n*predefined_and_custom_rule_embedded_proto2\x12\x1b\x62.c must be a multiple of 3\x1a\x0fthis.c % 3 == 0R\x01\x62\x1as\n\x06Nested\x12i\n\x01\x63\x18\x01 \x01(\x11\x42[\xbaHX:\x03\xc8H\x01\xba\x01P\n(predefined_and_custom_rule_nested_proto2\x1a$this > 0 ? \'\' : \'c must be positive\'R\x01\x63\"\xa5\x01\n%StandardPredefinedAndCustomRuleProto2\x12|\n\x01\x61\x18\x01 \x01(\x11\x42n\xbaHk:\x05\x10\x38\xc8H\x01\xba\x01\x61\n1standard_predefined_and_custom_rule_scalar_proto2\x1a,this > 24 ? \'\' : \'a must be greater than 24\'R\x01\x61:\xa9\x01\n\x16\x66loat_abs_range_proto2\x12\x18.buf.validate.FloatRules\x18\x89\t \x01(\x02\x42Y\xc2HV\nT\n\x16\x66loat.abs_range.proto2\x12\x1b\x66loat value is out of range\x1a\x1dthis >= -rule && this <= ruleR\x13\x66loatAbsRangeProto2:\xae\x01\n\x17\x64ouble_abs_range_proto2\x12\x19.buf.validate.DoubleRules\x18\x89\t \x01(\x01\x42[\xc2HX\nV\n\x17\x64ouble.abs_range.proto2\x12\x1c\x64ouble value is out of range\x1a\x1dthis >= -rule && this <= ruleR\x14\x64oubleAbsRangeProto2:\xb6\x01\n\x13int32_abs_in_proto2\x12\x18.buf.validate.Int32Rules\x18\x89\t \x03(\x05\x42l\xc2Hi\ng\n\x13int32.abs_in.proto2\x12\'value must be in absolute value of list\x1a\'this in rule || this in rule.map(n, -n)R\x10int32AbsInProto2:\xd3\x01\n\x13int64_abs_in_proto2\x12\x18.buf.validate.Int64Rules\x18\x89\t \x03(\x0b\x32\x1b.google.protobuf.Int64ValueBl\xc2Hi\ng\n\x13int64.abs_in.proto2\x12\'value must be in absolute value of list\x1a\'this in rule || this in rule.map(n, -n)R\x10int64AbsInProto2:\x8e\x01\n\x12uint32_even_proto2\x12\x19.buf.validate.UInt32Rules\x18\x89\t \x01(\x08\x42\x44\xc2HA\n?\n\x12uint32.even.proto2\x12\x18uint32 value is not even\x1a\x0fthis % 2u == 0uR\x10uint32EvenProto2:\x8e\x01\n\x12uint64_even_proto2\x12\x19.buf.validate.UInt64Rules\x18\x89\t \x01(\x08\x42\x44\xc2HA\n?\n\x12uint64.even.proto2\x12\x18uint64 value is not even\x1a\x0fthis % 2u == 0uR\x10uint64EvenProto2:\x8c\x01\n\x12sint32_even_proto2\x12\x19.buf.validate.SInt32Rules\x18\x89\t \x01(\x08\x42\x42\xc2H?\n=\n\x12sint32.even.proto2\x12\x18sint32 value is not even\x1a\rthis % 2 == 0R\x10sint32EvenProto2:\x8c\x01\n\x12sint64_even_proto2\x12\x19.buf.validate.SInt64Rules\x18\x89\t \x01(\x08\x42\x42\xc2H?\n=\n\x12sint64.even.proto2\x12\x18sint64 value is not even\x1a\rthis % 2 == 0R\x10sint64EvenProto2:\x93\x01\n\x13\x66ixed32_even_proto2\x12\x1a.buf.validate.Fixed32Rules\x18\x89\t \x01(\x08\x42\x46\xc2HC\nA\n\x13\x66ixed32.even.proto2\x12\x19\x66ixed32 value is not even\x1a\x0fthis % 2u == 0uR\x11\x66ixed32EvenProto2:\x93\x01\n\x13\x66ixed64_even_proto2\x12\x1a.buf.validate.Fixed64Rules\x18\x89\t \x01(\x08\x42\x46\xc2HC\nA\n\x13\x66ixed64.even.proto2\x12\x19\x66ixed64 value is not even\x1a\x0fthis % 2u == 0uR\x11\x66ixed64EvenProto2:\x96\x01\n\x14sfixed32_even_proto2\x12\x1b.buf.validate.SFixed32Rules\x18\x89\t \x01(\x08\x42\x46\xc2HC\nA\n\x14sfixed32.even.proto2\x12\x1asfixed32 value is not even\x1a\rthis % 2 == 0R\x12sfixed32EvenProto2:\x96\x01\n\x14sfixed64_even_proto2\x12\x1b.buf.validate.SFixed64Rules\x18\x89\t \x01(\x08\x42\x46\xc2HC\nA\n\x14sfixed64.even.proto2\x12\x1asfixed64 value is not even\x1a\rthis % 2 == 0R\x12sfixed64EvenProto2:\x86\x01\n\x11\x62ool_false_proto2\x12\x17.buf.validate.BoolRules\x18\x89\t \x01(\x08\x42@\xc2H=\n;\n\x11\x62ool.false.proto2\x12\x17\x62ool value is not false\x1a\rthis == falseR\x0f\x62oolFalseProto2:\xfe\x01\n\x18string_valid_path_proto2\x12\x19.buf.validate.StringRules\x18\x89\t \x01(\x08\x42\xa8\x01\xc2H\xa4\x01\n\xa1\x01\n\x18string.valid_path.proto2\x1a\x84\x01!this.matches(\'^([^/.][^/]?|[^/][^/.]|[^/]{3,})(/([^/.][^/]?|[^/][^/.]|[^/]{3,}))*$\') ? \'not a valid path: `%s`\'.format([this]) : \'\'R\x15stringValidPathProto2:\x82\x02\n\x17\x62ytes_valid_path_proto2\x12\x18.buf.validate.BytesRules\x18\x89\t \x01(\x08\x42\xaf\x01\xc2H\xab\x01\n\xa8\x01\n\x17\x62ytes.valid_path.proto2\x1a\x8c\x01!string(this).matches(\'^([^/.][^/]?|[^/][^/.]|[^/]{3,})(/([^/.][^/]?|[^/][^/.]|[^/]{3,}))*$\') ? \'not a valid path: `%s`\'.format([this]) : \'\'R\x14\x62ytesValidPathProto2:\x92\x01\n\x14\x65num_non_zero_proto2\x12\x17.buf.validate.EnumRules\x18\x89\t \x01(\x08\x42G\xc2HD\nB\n\x14\x65num.non_zero.proto2\x12\x1a\x65num value is not non-zero\x1a\x0eint(this) != 0R\x11\x65numNonZeroProto2:\xcc\x01\n\x1drepeated_at_least_five_proto2\x12\x1b.buf.validate.RepeatedRules\x18\x89\t \x01(\x08\x42l\xc2Hi\ng\n\x1drepeated.at_least_five.proto2\x12-repeated field must have at least five values\x1a\x17uint(this.size()) >= 5uR\x19repeatedAtLeastFiveProto2:\xb9\x01\n\x18\x64uration_too_long_proto2\x12\x1b.buf.validate.DurationRules\x18\x89\t \x01(\x08\x42\x62\xc2H_\n]\n\x18\x64uration.too_long.proto2\x12(duration can\'t be longer than 10 seconds\x1a\x17this <= duration(\'10s\')R\x15\x64urationTooLongProto2:\xc8\x01\n\x19timestamp_in_range_proto2\x12\x1c.buf.validate.TimestampRules\x18\x89\t \x01(\x08\x42n\xc2Hk\ni\n\x1btimestamp.time_range.proto2\x12\x16timestamp out of range\x1a\x32int(this) >= 1049587200 && int(this) <= 1080432000R\x16timestampInRangeProto2B\xdc\x01\n\"com.buf.validate.conformance.casesB\x1aPredefinedRulesProto2ProtoP\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::Cases') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n 24 ? \'\' : \'a must be greater than 24\'R\x01\x61\x12\xb4\x01\n\x01\x62\x18\x02 \x01(\x0b\x32\x44.buf.validate.conformance.cases.PredefinedAndCustomRuleProto2.NestedB`\xbaH]\xba\x01Z\n*predefined_and_custom_rule_embedded_proto2\x12\x1b\x62.c must be a multiple of 3\x1a\x0fthis.c % 3 == 0R\x01\x62\x1as\n\x06Nested\x12i\n\x01\x63\x18\x01 \x01(\x11\x42[\xbaHX:\x03\xc8H\x01\xba\x01P\n(predefined_and_custom_rule_nested_proto2\x1a$this > 0 ? \'\' : \'c must be positive\'R\x01\x63\"\xa5\x01\n%StandardPredefinedAndCustomRuleProto2\x12|\n\x01\x61\x18\x01 \x01(\x11\x42n\xbaHk:\x05\x10\x38\xc8H\x01\xba\x01\x61\n1standard_predefined_and_custom_rule_scalar_proto2\x1a,this > 24 ? \'\' : \'a must be greater than 24\'R\x01\x61:\xa9\x01\n\x16\x66loat_abs_range_proto2\x12\x18.buf.validate.FloatRules\x18\x89\t \x01(\x02\x42Y\xc2HV\nT\n\x16\x66loat.abs_range.proto2\x12\x1b\x66loat value is out of range\x1a\x1dthis >= -rule && this <= ruleR\x13\x66loatAbsRangeProto2:\xae\x01\n\x17\x64ouble_abs_range_proto2\x12\x19.buf.validate.DoubleRules\x18\x89\t \x01(\x01\x42[\xc2HX\nV\n\x17\x64ouble.abs_range.proto2\x12\x1c\x64ouble value is out of range\x1a\x1dthis >= -rule && this <= ruleR\x14\x64oubleAbsRangeProto2:\xb0\x01\n\x13int32_abs_in_proto2\x12\x18.buf.validate.Int32Rules\x18\x89\t \x03(\x05\x42\x66\xc2Hc\na\n\x13int32.abs_in.proto2\x12!must be in absolute value of list\x1a\'this in rule || this in rule.map(n, -n)R\x10int32AbsInProto2:\xcd\x01\n\x13int64_abs_in_proto2\x12\x18.buf.validate.Int64Rules\x18\x89\t \x03(\x0b\x32\x1b.google.protobuf.Int64ValueBf\xc2Hc\na\n\x13int64.abs_in.proto2\x12!must be in absolute value of list\x1a\'this in rule || this in rule.map(n, -n)R\x10int64AbsInProto2:\x8e\x01\n\x12uint32_even_proto2\x12\x19.buf.validate.UInt32Rules\x18\x89\t \x01(\x08\x42\x44\xc2HA\n?\n\x12uint32.even.proto2\x12\x18uint32 value is not even\x1a\x0fthis % 2u == 0uR\x10uint32EvenProto2:\x8e\x01\n\x12uint64_even_proto2\x12\x19.buf.validate.UInt64Rules\x18\x89\t \x01(\x08\x42\x44\xc2HA\n?\n\x12uint64.even.proto2\x12\x18uint64 value is not even\x1a\x0fthis % 2u == 0uR\x10uint64EvenProto2:\x8c\x01\n\x12sint32_even_proto2\x12\x19.buf.validate.SInt32Rules\x18\x89\t \x01(\x08\x42\x42\xc2H?\n=\n\x12sint32.even.proto2\x12\x18sint32 value is not even\x1a\rthis % 2 == 0R\x10sint32EvenProto2:\x8c\x01\n\x12sint64_even_proto2\x12\x19.buf.validate.SInt64Rules\x18\x89\t \x01(\x08\x42\x42\xc2H?\n=\n\x12sint64.even.proto2\x12\x18sint64 value is not even\x1a\rthis % 2 == 0R\x10sint64EvenProto2:\x93\x01\n\x13\x66ixed32_even_proto2\x12\x1a.buf.validate.Fixed32Rules\x18\x89\t \x01(\x08\x42\x46\xc2HC\nA\n\x13\x66ixed32.even.proto2\x12\x19\x66ixed32 value is not even\x1a\x0fthis % 2u == 0uR\x11\x66ixed32EvenProto2:\x93\x01\n\x13\x66ixed64_even_proto2\x12\x1a.buf.validate.Fixed64Rules\x18\x89\t \x01(\x08\x42\x46\xc2HC\nA\n\x13\x66ixed64.even.proto2\x12\x19\x66ixed64 value is not even\x1a\x0fthis % 2u == 0uR\x11\x66ixed64EvenProto2:\x96\x01\n\x14sfixed32_even_proto2\x12\x1b.buf.validate.SFixed32Rules\x18\x89\t \x01(\x08\x42\x46\xc2HC\nA\n\x14sfixed32.even.proto2\x12\x1asfixed32 value is not even\x1a\rthis % 2 == 0R\x12sfixed32EvenProto2:\x96\x01\n\x14sfixed64_even_proto2\x12\x1b.buf.validate.SFixed64Rules\x18\x89\t \x01(\x08\x42\x46\xc2HC\nA\n\x14sfixed64.even.proto2\x12\x1asfixed64 value is not even\x1a\rthis % 2 == 0R\x12sfixed64EvenProto2:\x86\x01\n\x11\x62ool_false_proto2\x12\x17.buf.validate.BoolRules\x18\x89\t \x01(\x08\x42@\xc2H=\n;\n\x11\x62ool.false.proto2\x12\x17\x62ool value is not false\x1a\rthis == falseR\x0f\x62oolFalseProto2:\xfe\x01\n\x18string_valid_path_proto2\x12\x19.buf.validate.StringRules\x18\x89\t \x01(\x08\x42\xa8\x01\xc2H\xa4\x01\n\xa1\x01\n\x18string.valid_path.proto2\x1a\x84\x01!this.matches(\'^([^/.][^/]?|[^/][^/.]|[^/]{3,})(/([^/.][^/]?|[^/][^/.]|[^/]{3,}))*$\') ? \'not a valid path: `%s`\'.format([this]) : \'\'R\x15stringValidPathProto2:\x82\x02\n\x17\x62ytes_valid_path_proto2\x12\x18.buf.validate.BytesRules\x18\x89\t \x01(\x08\x42\xaf\x01\xc2H\xab\x01\n\xa8\x01\n\x17\x62ytes.valid_path.proto2\x1a\x8c\x01!string(this).matches(\'^([^/.][^/]?|[^/][^/.]|[^/]{3,})(/([^/.][^/]?|[^/][^/.]|[^/]{3,}))*$\') ? \'not a valid path: `%s`\'.format([this]) : \'\'R\x14\x62ytesValidPathProto2:\x92\x01\n\x14\x65num_non_zero_proto2\x12\x17.buf.validate.EnumRules\x18\x89\t \x01(\x08\x42G\xc2HD\nB\n\x14\x65num.non_zero.proto2\x12\x1a\x65num value is not non-zero\x1a\x0eint(this) != 0R\x11\x65numNonZeroProto2:\xcc\x01\n\x1drepeated_at_least_five_proto2\x12\x1b.buf.validate.RepeatedRules\x18\x89\t \x01(\x08\x42l\xc2Hi\ng\n\x1drepeated.at_least_five.proto2\x12-repeated field must have at least five values\x1a\x17uint(this.size()) >= 5uR\x19repeatedAtLeastFiveProto2:\xb9\x01\n\x18\x64uration_too_long_proto2\x12\x1b.buf.validate.DurationRules\x18\x89\t \x01(\x08\x42\x62\xc2H_\n]\n\x18\x64uration.too_long.proto2\x12(duration can\'t be longer than 10 seconds\x1a\x17this <= duration(\'10s\')R\x15\x64urationTooLongProto2:\xc8\x01\n\x19timestamp_in_range_proto2\x12\x1c.buf.validate.TimestampRules\x18\x89\t \x01(\x08\x42n\xc2Hk\ni\n\x1btimestamp.time_range.proto2\x12\x16timestamp out of range\x1a\x32int(this) >= 1049587200 && int(this) <= 1080432000R\x16timestampInRangeProto2B\xdc\x01\n\"com.buf.validate.conformance.casesB\x1aPredefinedRulesProto2ProtoP\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::Cases') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -45,9 +45,9 @@ _globals['double_abs_range_proto2']._loaded_options = None _globals['double_abs_range_proto2']._serialized_options = b'\302HX\nV\n\027double.abs_range.proto2\022\034double value is out of range\032\035this >= -rule && this <= rule' _globals['int32_abs_in_proto2']._loaded_options = None - _globals['int32_abs_in_proto2']._serialized_options = b'\302Hi\ng\n\023int32.abs_in.proto2\022\'value must be in absolute value of list\032\'this in rule || this in rule.map(n, -n)' + _globals['int32_abs_in_proto2']._serialized_options = b'\302Hc\na\n\023int32.abs_in.proto2\022!must be in absolute value of list\032\'this in rule || this in rule.map(n, -n)' _globals['int64_abs_in_proto2']._loaded_options = None - _globals['int64_abs_in_proto2']._serialized_options = b'\302Hi\ng\n\023int64.abs_in.proto2\022\'value must be in absolute value of list\032\'this in rule || this in rule.map(n, -n)' + _globals['int64_abs_in_proto2']._serialized_options = b'\302Hc\na\n\023int64.abs_in.proto2\022!must be in absolute value of list\032\'this in rule || this in rule.map(n, -n)' _globals['uint32_even_proto2']._loaded_options = None _globals['uint32_even_proto2']._serialized_options = b'\302HA\n?\n\022uint32.even.proto2\022\030uint32 value is not even\032\017this % 2u == 0u' _globals['uint64_even_proto2']._loaded_options = None diff --git a/gen/buf/validate/conformance/cases/predefined_rules_proto_editions_pb2.py b/gen/buf/validate/conformance/cases/predefined_rules_proto_editions_pb2.py index 0614c0d..8aead57 100644 --- a/gen/buf/validate/conformance/cases/predefined_rules_proto_editions_pb2.py +++ b/gen/buf/validate/conformance/cases/predefined_rules_proto_editions_pb2.py @@ -32,7 +32,7 @@ from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nDbuf/validate/conformance/cases/predefined_rules_proto_editions.proto\x12\x1e\x62uf.validate.conformance.cases\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"?\n\x1ePredefinedFloatRuleEdition2023\x12\x1d\n\x03val\x18\x01 \x01(\x02\x42\x0b\xbaH\x08\n\x06\xd5H\x00\x00\x80?R\x03val\"D\n\x1fPredefinedDoubleRuleEdition2023\x12!\n\x03val\x18\x01 \x01(\x01\x42\x0f\xbaH\x0c\x12\n\xd1H\x00\x00\x00\x00\x00\x00\xf0?R\x03val\"F\n\x1ePredefinedInt32RuleEdition2023\x12$\n\x03val\x18\x01 \x01(\x05\x42\x12\xbaH\x0f\x1a\r\xd2H\n\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01R\x03val\"G\n\x1ePredefinedInt64RuleEdition2023\x12%\n\x03val\x18\x01 \x01(\x03\x42\x13\xbaH\x10\"\x0e\xd2H\x0b\x08\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01R\x03val\"=\n\x1fPredefinedUInt32RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\rB\x08\xbaH\x05*\x03\xd0H\x01R\x03val\"=\n\x1fPredefinedUInt64RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x04\x42\x08\xbaH\x05\x32\x03\xd0H\x01R\x03val\"=\n\x1fPredefinedSInt32RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x11\x42\x08\xbaH\x05:\x03\xd0H\x01R\x03val\"=\n\x1fPredefinedSInt64RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x12\x42\x08\xbaH\x05\x42\x03\xd0H\x01R\x03val\">\n PredefinedFixed32RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x07\x42\x08\xbaH\x05J\x03\xd0H\x01R\x03val\">\n PredefinedFixed64RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x06\x42\x08\xbaH\x05R\x03\xd0H\x01R\x03val\"?\n!PredefinedSFixed32RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x0f\x42\x08\xbaH\x05Z\x03\xd0H\x01R\x03val\"?\n!PredefinedSFixed64RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x10\x42\x08\xbaH\x05\x62\x03\xd0H\x01R\x03val\";\n\x1dPredefinedBoolRuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x08\x42\x08\xbaH\x05j\x03\xd0H\x01R\x03val\"=\n\x1fPredefinedStringRuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xd0H\x01R\x03val\"<\n\x1ePredefinedBytesRuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x0c\x42\x08\xbaH\x05z\x03\xd0H\x01R\x03val\"\xdf\x01\n\x1dPredefinedEnumRuleEdition2023\x12j\n\x03val\x18\x01 \x01(\x0e\x32M.buf.validate.conformance.cases.PredefinedEnumRuleEdition2023.EnumEdition2023B\t\xbaH\x06\x82\x01\x03\xd0H\x01R\x03val\"R\n\x0f\x45numEdition2023\x12%\n!ENUM_EDITION2023_ZERO_UNSPECIFIED\x10\x00\x12\x18\n\x14\x45NUM_EDITION2023_ONE\x10\x01\"@\n!PredefinedRepeatedRuleEdition2023\x12\x1b\n\x03val\x18\x01 \x03(\x04\x42\t\xbaH\x06\x92\x01\x03\xd0H\x01R\x03val\"\xba\x01\n\x1cPredefinedMapRuleEdition2023\x12\x62\n\x03val\x18\x01 \x03(\x0b\x32\x45.buf.validate.conformance.cases.PredefinedMapRuleEdition2023.ValEntryB\t\xbaH\x06\x9a\x01\x03\xd0H\x01R\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\"[\n!PredefinedDurationRuleEdition2023\x12\x36\n\x03val\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\t\xbaH\x06\xaa\x01\x03\xd0H\x01R\x03val\"]\n\"PredefinedTimestampRuleEdition2023\x12\x37\n\x03val\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\t\xbaH\x06\xb2\x01\x03\xd0H\x01R\x03val\"c\n%PredefinedWrappedFloatRuleEdition2023\x12:\n\x03val\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.FloatValueB\x0b\xbaH\x08\n\x06\xd5H\x00\x00\x80?R\x03val\"i\n&PredefinedWrappedDoubleRuleEdition2023\x12?\n\x03val\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.DoubleValueB\x0f\xbaH\x0c\x12\n\xd1H\x00\x00\x00\x00\x00\x00\xf0?R\x03val\"j\n%PredefinedWrappedInt32RuleEdition2023\x12\x41\n\x03val\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x12\xbaH\x0f\x1a\r\xd2H\n\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01R\x03val\"k\n%PredefinedWrappedInt64RuleEdition2023\x12\x42\n\x03val\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.Int64ValueB\x13\xbaH\x10\"\x0e\xd2H\x0b\x08\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01R\x03val\"b\n&PredefinedWrappedUInt32RuleEdition2023\x12\x38\n\x03val\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x08\xbaH\x05*\x03\xd0H\x01R\x03val\"b\n&PredefinedWrappedUInt64RuleEdition2023\x12\x38\n\x03val\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt64ValueB\x08\xbaH\x05\x32\x03\xd0H\x01R\x03val\"^\n$PredefinedWrappedBoolRuleEdition2023\x12\x36\n\x03val\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x08\xbaH\x05j\x03\xd0H\x01R\x03val\"b\n&PredefinedWrappedStringRuleEdition2023\x12\x38\n\x03val\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x08\xbaH\x05r\x03\xd0H\x01R\x03val\"`\n%PredefinedWrappedBytesRuleEdition2023\x12\x37\n\x03val\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.BytesValueB\x08\xbaH\x05z\x03\xd0H\x01R\x03val\"p\n-PredefinedRepeatedWrappedFloatRuleEdition2023\x12?\n\x03val\x18\x01 \x03(\x0b\x32\x1b.google.protobuf.FloatValueB\x10\xbaH\r\x92\x01\n\"\x08\n\x06\xd5H\x00\x00\x80?R\x03val\"v\n.PredefinedRepeatedWrappedDoubleRuleEdition2023\x12\x44\n\x03val\x18\x01 \x03(\x0b\x32\x1c.google.protobuf.DoubleValueB\x14\xbaH\x11\x92\x01\x0e\"\x0c\x12\n\xd1H\x00\x00\x00\x00\x00\x00\xf0?R\x03val\"w\n-PredefinedRepeatedWrappedInt32RuleEdition2023\x12\x46\n\x03val\x18\x01 \x03(\x0b\x32\x1b.google.protobuf.Int32ValueB\x17\xbaH\x14\x92\x01\x11\"\x0f\x1a\r\xd2H\n\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01R\x03val\"x\n-PredefinedRepeatedWrappedInt64RuleEdition2023\x12G\n\x03val\x18\x01 \x03(\x0b\x32\x1b.google.protobuf.Int64ValueB\x18\xbaH\x15\x92\x01\x12\"\x10\"\x0e\xd2H\x0b\x08\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01R\x03val\"o\n.PredefinedRepeatedWrappedUInt32RuleEdition2023\x12=\n\x03val\x18\x01 \x03(\x0b\x32\x1c.google.protobuf.UInt32ValueB\r\xbaH\n\x92\x01\x07\"\x05*\x03\xd0H\x01R\x03val\"o\n.PredefinedRepeatedWrappedUInt64RuleEdition2023\x12=\n\x03val\x18\x01 \x03(\x0b\x32\x1c.google.protobuf.UInt64ValueB\r\xbaH\n\x92\x01\x07\"\x05\x32\x03\xd0H\x01R\x03val\"k\n,PredefinedRepeatedWrappedBoolRuleEdition2023\x12;\n\x03val\x18\x01 \x03(\x0b\x32\x1a.google.protobuf.BoolValueB\r\xbaH\n\x92\x01\x07\"\x05j\x03\xd0H\x01R\x03val\"o\n.PredefinedRepeatedWrappedStringRuleEdition2023\x12=\n\x03val\x18\x01 \x03(\x0b\x32\x1c.google.protobuf.StringValueB\r\xbaH\n\x92\x01\x07\"\x05r\x03\xd0H\x01R\x03val\"m\n-PredefinedRepeatedWrappedBytesRuleEdition2023\x12<\n\x03val\x18\x01 \x03(\x0b\x32\x1b.google.protobuf.BytesValueB\r\xbaH\n\x92\x01\x07\"\x05z\x03\xd0H\x01R\x03val\"\xda\x03\n\"PredefinedAndCustomRuleEdition2023\x12w\n\x01\x61\x18\x01 \x01(\x11\x42i\xbaHf:\x03\xd0H\x01\xba\x01^\n.predefined_and_custom_rule_scalar_edition_2023\x1a,this > 24 ? \'\' : \'a must be greater than 24\'R\x01\x61\x12\xbf\x01\n\x01\x62\x18\x02 \x01(\x0b\x32I.buf.validate.conformance.cases.PredefinedAndCustomRuleEdition2023.NestedBf\xbaHc\xba\x01`\n0predefined_and_custom_rule_embedded_edition_2023\x12\x1b\x62.c must be a multiple of 3\x1a\x0fthis.c % 3 == 0R\x01\x62\x1ay\n\x06Nested\x12o\n\x01\x63\x18\x01 \x01(\x11\x42\x61\xbaH^:\x03\xd0H\x01\xba\x01V\n.predefined_and_custom_rule_nested_edition_2023\x1a$this > 0 ? \'\' : \'c must be positive\'R\x01\x63\"\xb1\x01\n*StandardPredefinedAndCustomRuleEdition2023\x12\x82\x01\n\x01\x61\x18\x01 \x01(\x11\x42t\xbaHq:\x05\x10\x38\xd0H\x01\xba\x01g\n7standard_predefined_and_custom_rule_scalar_edition_2023\x1a,this > 24 ? \'\' : \'a must be greater than 24\'R\x01\x61:\xba\x01\n\x1c\x66loat_abs_range_edition_2023\x12\x18.buf.validate.FloatRules\x18\x8a\t \x01(\x02\x42_\xc2H\\\nZ\n\x1c\x66loat.abs_range.edition_2023\x12\x1b\x66loat value is out of range\x1a\x1dthis >= -rule && this <= ruleR\x18\x66loatAbsRangeEdition2023:\xbf\x01\n\x1d\x64ouble_abs_range_edition_2023\x12\x19.buf.validate.DoubleRules\x18\x8a\t \x01(\x01\x42\x61\xc2H^\n\\\n\x1d\x64ouble.abs_range.edition_2023\x12\x1c\x64ouble value is out of range\x1a\x1dthis >= -rule && this <= ruleR\x19\x64oubleAbsRangeEdition2023:\xc7\x01\n\x19int32_abs_in_edition_2023\x12\x18.buf.validate.Int32Rules\x18\x8a\t \x03(\x05\x42r\xc2Ho\nm\n\x19int32.abs_in.edition_2023\x12\'value must be in absolute value of list\x1a\'this in rule || this in rule.map(n, -n)R\x15int32AbsInEdition2023:\xe4\x01\n\x19int64_abs_in_edition_2023\x12\x18.buf.validate.Int64Rules\x18\x8a\t \x03(\x0b\x32\x1b.google.protobuf.Int64ValueBr\xc2Ho\nm\n\x19int64.abs_in.edition_2023\x12\'value must be in absolute value of list\x1a\'this in rule || this in rule.map(n, -n)R\x15int64AbsInEdition2023:\x9f\x01\n\x18uint32_even_edition_2023\x12\x19.buf.validate.UInt32Rules\x18\x8a\t \x01(\x08\x42J\xc2HG\nE\n\x18uint32.even.edition_2023\x12\x18uint32 value is not even\x1a\x0fthis % 2u == 0uR\x15uint32EvenEdition2023:\x9f\x01\n\x18uint64_even_edition_2023\x12\x19.buf.validate.UInt64Rules\x18\x8a\t \x01(\x08\x42J\xc2HG\nE\n\x18uint64.even.edition_2023\x12\x18uint64 value is not even\x1a\x0fthis % 2u == 0uR\x15uint64EvenEdition2023:\x9d\x01\n\x18sint32_even_edition_2023\x12\x19.buf.validate.SInt32Rules\x18\x8a\t \x01(\x08\x42H\xc2HE\nC\n\x18sint32.even.edition_2023\x12\x18sint32 value is not even\x1a\rthis % 2 == 0R\x15sint32EvenEdition2023:\x9d\x01\n\x18sint64_even_edition_2023\x12\x19.buf.validate.SInt64Rules\x18\x8a\t \x01(\x08\x42H\xc2HE\nC\n\x18sint64.even.edition_2023\x12\x18sint64 value is not even\x1a\rthis % 2 == 0R\x15sint64EvenEdition2023:\xa4\x01\n\x19\x66ixed32_even_edition_2023\x12\x1a.buf.validate.Fixed32Rules\x18\x8a\t \x01(\x08\x42L\xc2HI\nG\n\x19\x66ixed32.even.edition_2023\x12\x19\x66ixed32 value is not even\x1a\x0fthis % 2u == 0uR\x16\x66ixed32EvenEdition2023:\xa4\x01\n\x19\x66ixed64_even_edition_2023\x12\x1a.buf.validate.Fixed64Rules\x18\x8a\t \x01(\x08\x42L\xc2HI\nG\n\x19\x66ixed64.even.edition_2023\x12\x19\x66ixed64 value is not even\x1a\x0fthis % 2u == 0uR\x16\x66ixed64EvenEdition2023:\xa7\x01\n\x1asfixed32_even_edition_2023\x12\x1b.buf.validate.SFixed32Rules\x18\x8a\t \x01(\x08\x42L\xc2HI\nG\n\x1asfixed32.even.edition_2023\x12\x1asfixed32 value is not even\x1a\rthis % 2 == 0R\x17sfixed32EvenEdition2023:\xa7\x01\n\x1asfixed64_even_edition_2023\x12\x1b.buf.validate.SFixed64Rules\x18\x8a\t \x01(\x08\x42L\xc2HI\nG\n\x1asfixed64.even.edition_2023\x12\x1asfixed64 value is not even\x1a\rthis % 2 == 0R\x17sfixed64EvenEdition2023:\x97\x01\n\x17\x62ool_false_edition_2023\x12\x17.buf.validate.BoolRules\x18\x8a\t \x01(\x08\x42\x46\xc2HC\nA\n\x17\x62ool.false.edition_2023\x12\x17\x62ool value is not false\x1a\rthis == falseR\x14\x62oolFalseEdition2023:\x8f\x02\n\x1estring_valid_path_edition_2023\x12\x19.buf.validate.StringRules\x18\x8a\t \x01(\x08\x42\xae\x01\xc2H\xaa\x01\n\xa7\x01\n\x1estring.valid_path.edition_2023\x1a\x84\x01!this.matches(\'^([^/.][^/]?|[^/][^/.]|[^/]{3,})(/([^/.][^/]?|[^/][^/.]|[^/]{3,}))*$\') ? \'not a valid path: `%s`\'.format([this]) : \'\'R\x1astringValidPathEdition2023:\x93\x02\n\x1d\x62ytes_valid_path_edition_2023\x12\x18.buf.validate.BytesRules\x18\x8a\t \x01(\x08\x42\xb5\x01\xc2H\xb1\x01\n\xae\x01\n\x1d\x62ytes.valid_path.edition_2023\x1a\x8c\x01!string(this).matches(\'^([^/.][^/]?|[^/][^/.]|[^/]{3,})(/([^/.][^/]?|[^/][^/.]|[^/]{3,}))*$\') ? \'not a valid path: `%s`\'.format([this]) : \'\'R\x19\x62ytesValidPathEdition2023:\xa3\x01\n\x1a\x65num_non_zero_edition_2023\x12\x17.buf.validate.EnumRules\x18\x8a\t \x01(\x08\x42M\xc2HJ\nH\n\x1a\x65num.non_zero.edition_2023\x12\x1a\x65num value is not non-zero\x1a\x0eint(this) != 0R\x16\x65numNonZeroEdition2023:\xdd\x01\n#repeated_at_least_five_edition_2023\x12\x1b.buf.validate.RepeatedRules\x18\x8a\t \x01(\x08\x42r\xc2Ho\nm\n#repeated.at_least_five.edition_2023\x12-repeated field must have at least five values\x1a\x17uint(this.size()) >= 5uR\x1erepeatedAtLeastFiveEdition2023:\xbd\x01\n\x1emap_at_least_five_edition_2023\x12\x16.buf.validate.MapRules\x18\x8a\t \x01(\x08\x42\x61\xc2H^\n\\\n\x1emap.at_least_five.edition_2023\x12!map must have at least five pairs\x1a\x17uint(this.size()) >= 5uR\x19mapAtLeastFiveEdition2023:\xca\x01\n\x1e\x64uration_too_long_edition_2023\x12\x1b.buf.validate.DurationRules\x18\x8a\t \x01(\x08\x42h\xc2He\nc\n\x1e\x64uration.too_long.edition_2023\x12(duration can\'t be longer than 10 seconds\x1a\x17this <= duration(\'10s\')R\x1a\x64urationTooLongEdition2023:\xd9\x01\n\x1ftimestamp_in_range_edition_2023\x12\x1c.buf.validate.TimestampRules\x18\x8a\t \x01(\x08\x42t\xc2Hq\no\n!timestamp.time_range.edition_2023\x12\x16timestamp out of range\x1a\x32int(this) >= 1049587200 && int(this) <= 1080432000R\x1btimestampInRangeEdition2023B\xe3\x01\n\"com.buf.validate.conformance.casesB!PredefinedRulesProtoEditionsProtoP\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\x08\x65\x64itionsp\xe8\x07') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nDbuf/validate/conformance/cases/predefined_rules_proto_editions.proto\x12\x1e\x62uf.validate.conformance.cases\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"?\n\x1ePredefinedFloatRuleEdition2023\x12\x1d\n\x03val\x18\x01 \x01(\x02\x42\x0b\xbaH\x08\n\x06\xd5H\x00\x00\x80?R\x03val\"D\n\x1fPredefinedDoubleRuleEdition2023\x12!\n\x03val\x18\x01 \x01(\x01\x42\x0f\xbaH\x0c\x12\n\xd1H\x00\x00\x00\x00\x00\x00\xf0?R\x03val\"F\n\x1ePredefinedInt32RuleEdition2023\x12$\n\x03val\x18\x01 \x01(\x05\x42\x12\xbaH\x0f\x1a\r\xd2H\n\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01R\x03val\"G\n\x1ePredefinedInt64RuleEdition2023\x12%\n\x03val\x18\x01 \x01(\x03\x42\x13\xbaH\x10\"\x0e\xd2H\x0b\x08\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01R\x03val\"=\n\x1fPredefinedUInt32RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\rB\x08\xbaH\x05*\x03\xd0H\x01R\x03val\"=\n\x1fPredefinedUInt64RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x04\x42\x08\xbaH\x05\x32\x03\xd0H\x01R\x03val\"=\n\x1fPredefinedSInt32RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x11\x42\x08\xbaH\x05:\x03\xd0H\x01R\x03val\"=\n\x1fPredefinedSInt64RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x12\x42\x08\xbaH\x05\x42\x03\xd0H\x01R\x03val\">\n PredefinedFixed32RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x07\x42\x08\xbaH\x05J\x03\xd0H\x01R\x03val\">\n PredefinedFixed64RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x06\x42\x08\xbaH\x05R\x03\xd0H\x01R\x03val\"?\n!PredefinedSFixed32RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x0f\x42\x08\xbaH\x05Z\x03\xd0H\x01R\x03val\"?\n!PredefinedSFixed64RuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x10\x42\x08\xbaH\x05\x62\x03\xd0H\x01R\x03val\";\n\x1dPredefinedBoolRuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x08\x42\x08\xbaH\x05j\x03\xd0H\x01R\x03val\"=\n\x1fPredefinedStringRuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xd0H\x01R\x03val\"<\n\x1ePredefinedBytesRuleEdition2023\x12\x1a\n\x03val\x18\x01 \x01(\x0c\x42\x08\xbaH\x05z\x03\xd0H\x01R\x03val\"\xdf\x01\n\x1dPredefinedEnumRuleEdition2023\x12j\n\x03val\x18\x01 \x01(\x0e\x32M.buf.validate.conformance.cases.PredefinedEnumRuleEdition2023.EnumEdition2023B\t\xbaH\x06\x82\x01\x03\xd0H\x01R\x03val\"R\n\x0f\x45numEdition2023\x12%\n!ENUM_EDITION2023_ZERO_UNSPECIFIED\x10\x00\x12\x18\n\x14\x45NUM_EDITION2023_ONE\x10\x01\"@\n!PredefinedRepeatedRuleEdition2023\x12\x1b\n\x03val\x18\x01 \x03(\x04\x42\t\xbaH\x06\x92\x01\x03\xd0H\x01R\x03val\"\xba\x01\n\x1cPredefinedMapRuleEdition2023\x12\x62\n\x03val\x18\x01 \x03(\x0b\x32\x45.buf.validate.conformance.cases.PredefinedMapRuleEdition2023.ValEntryB\t\xbaH\x06\x9a\x01\x03\xd0H\x01R\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\"[\n!PredefinedDurationRuleEdition2023\x12\x36\n\x03val\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\t\xbaH\x06\xaa\x01\x03\xd0H\x01R\x03val\"]\n\"PredefinedTimestampRuleEdition2023\x12\x37\n\x03val\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\t\xbaH\x06\xb2\x01\x03\xd0H\x01R\x03val\"c\n%PredefinedWrappedFloatRuleEdition2023\x12:\n\x03val\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.FloatValueB\x0b\xbaH\x08\n\x06\xd5H\x00\x00\x80?R\x03val\"i\n&PredefinedWrappedDoubleRuleEdition2023\x12?\n\x03val\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.DoubleValueB\x0f\xbaH\x0c\x12\n\xd1H\x00\x00\x00\x00\x00\x00\xf0?R\x03val\"j\n%PredefinedWrappedInt32RuleEdition2023\x12\x41\n\x03val\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x12\xbaH\x0f\x1a\r\xd2H\n\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01R\x03val\"k\n%PredefinedWrappedInt64RuleEdition2023\x12\x42\n\x03val\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.Int64ValueB\x13\xbaH\x10\"\x0e\xd2H\x0b\x08\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01R\x03val\"b\n&PredefinedWrappedUInt32RuleEdition2023\x12\x38\n\x03val\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x08\xbaH\x05*\x03\xd0H\x01R\x03val\"b\n&PredefinedWrappedUInt64RuleEdition2023\x12\x38\n\x03val\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt64ValueB\x08\xbaH\x05\x32\x03\xd0H\x01R\x03val\"^\n$PredefinedWrappedBoolRuleEdition2023\x12\x36\n\x03val\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x08\xbaH\x05j\x03\xd0H\x01R\x03val\"b\n&PredefinedWrappedStringRuleEdition2023\x12\x38\n\x03val\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x08\xbaH\x05r\x03\xd0H\x01R\x03val\"`\n%PredefinedWrappedBytesRuleEdition2023\x12\x37\n\x03val\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.BytesValueB\x08\xbaH\x05z\x03\xd0H\x01R\x03val\"p\n-PredefinedRepeatedWrappedFloatRuleEdition2023\x12?\n\x03val\x18\x01 \x03(\x0b\x32\x1b.google.protobuf.FloatValueB\x10\xbaH\r\x92\x01\n\"\x08\n\x06\xd5H\x00\x00\x80?R\x03val\"v\n.PredefinedRepeatedWrappedDoubleRuleEdition2023\x12\x44\n\x03val\x18\x01 \x03(\x0b\x32\x1c.google.protobuf.DoubleValueB\x14\xbaH\x11\x92\x01\x0e\"\x0c\x12\n\xd1H\x00\x00\x00\x00\x00\x00\xf0?R\x03val\"w\n-PredefinedRepeatedWrappedInt32RuleEdition2023\x12\x46\n\x03val\x18\x01 \x03(\x0b\x32\x1b.google.protobuf.Int32ValueB\x17\xbaH\x14\x92\x01\x11\"\x0f\x1a\r\xd2H\n\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01R\x03val\"x\n-PredefinedRepeatedWrappedInt64RuleEdition2023\x12G\n\x03val\x18\x01 \x03(\x0b\x32\x1b.google.protobuf.Int64ValueB\x18\xbaH\x15\x92\x01\x12\"\x10\"\x0e\xd2H\x0b\x08\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01R\x03val\"o\n.PredefinedRepeatedWrappedUInt32RuleEdition2023\x12=\n\x03val\x18\x01 \x03(\x0b\x32\x1c.google.protobuf.UInt32ValueB\r\xbaH\n\x92\x01\x07\"\x05*\x03\xd0H\x01R\x03val\"o\n.PredefinedRepeatedWrappedUInt64RuleEdition2023\x12=\n\x03val\x18\x01 \x03(\x0b\x32\x1c.google.protobuf.UInt64ValueB\r\xbaH\n\x92\x01\x07\"\x05\x32\x03\xd0H\x01R\x03val\"k\n,PredefinedRepeatedWrappedBoolRuleEdition2023\x12;\n\x03val\x18\x01 \x03(\x0b\x32\x1a.google.protobuf.BoolValueB\r\xbaH\n\x92\x01\x07\"\x05j\x03\xd0H\x01R\x03val\"o\n.PredefinedRepeatedWrappedStringRuleEdition2023\x12=\n\x03val\x18\x01 \x03(\x0b\x32\x1c.google.protobuf.StringValueB\r\xbaH\n\x92\x01\x07\"\x05r\x03\xd0H\x01R\x03val\"m\n-PredefinedRepeatedWrappedBytesRuleEdition2023\x12<\n\x03val\x18\x01 \x03(\x0b\x32\x1b.google.protobuf.BytesValueB\r\xbaH\n\x92\x01\x07\"\x05z\x03\xd0H\x01R\x03val\"\xda\x03\n\"PredefinedAndCustomRuleEdition2023\x12w\n\x01\x61\x18\x01 \x01(\x11\x42i\xbaHf:\x03\xd0H\x01\xba\x01^\n.predefined_and_custom_rule_scalar_edition_2023\x1a,this > 24 ? \'\' : \'a must be greater than 24\'R\x01\x61\x12\xbf\x01\n\x01\x62\x18\x02 \x01(\x0b\x32I.buf.validate.conformance.cases.PredefinedAndCustomRuleEdition2023.NestedBf\xbaHc\xba\x01`\n0predefined_and_custom_rule_embedded_edition_2023\x12\x1b\x62.c must be a multiple of 3\x1a\x0fthis.c % 3 == 0R\x01\x62\x1ay\n\x06Nested\x12o\n\x01\x63\x18\x01 \x01(\x11\x42\x61\xbaH^:\x03\xd0H\x01\xba\x01V\n.predefined_and_custom_rule_nested_edition_2023\x1a$this > 0 ? \'\' : \'c must be positive\'R\x01\x63\"\xb1\x01\n*StandardPredefinedAndCustomRuleEdition2023\x12\x82\x01\n\x01\x61\x18\x01 \x01(\x11\x42t\xbaHq:\x05\x10\x38\xd0H\x01\xba\x01g\n7standard_predefined_and_custom_rule_scalar_edition_2023\x1a,this > 24 ? \'\' : \'a must be greater than 24\'R\x01\x61:\xba\x01\n\x1c\x66loat_abs_range_edition_2023\x12\x18.buf.validate.FloatRules\x18\x8a\t \x01(\x02\x42_\xc2H\\\nZ\n\x1c\x66loat.abs_range.edition_2023\x12\x1b\x66loat value is out of range\x1a\x1dthis >= -rule && this <= ruleR\x18\x66loatAbsRangeEdition2023:\xbf\x01\n\x1d\x64ouble_abs_range_edition_2023\x12\x19.buf.validate.DoubleRules\x18\x8a\t \x01(\x01\x42\x61\xc2H^\n\\\n\x1d\x64ouble.abs_range.edition_2023\x12\x1c\x64ouble value is out of range\x1a\x1dthis >= -rule && this <= ruleR\x19\x64oubleAbsRangeEdition2023:\xc1\x01\n\x19int32_abs_in_edition_2023\x12\x18.buf.validate.Int32Rules\x18\x8a\t \x03(\x05\x42l\xc2Hi\ng\n\x19int32.abs_in.edition_2023\x12!must be in absolute value of list\x1a\'this in rule || this in rule.map(n, -n)R\x15int32AbsInEdition2023:\xde\x01\n\x19int64_abs_in_edition_2023\x12\x18.buf.validate.Int64Rules\x18\x8a\t \x03(\x0b\x32\x1b.google.protobuf.Int64ValueBl\xc2Hi\ng\n\x19int64.abs_in.edition_2023\x12!must be in absolute value of list\x1a\'this in rule || this in rule.map(n, -n)R\x15int64AbsInEdition2023:\x9f\x01\n\x18uint32_even_edition_2023\x12\x19.buf.validate.UInt32Rules\x18\x8a\t \x01(\x08\x42J\xc2HG\nE\n\x18uint32.even.edition_2023\x12\x18uint32 value is not even\x1a\x0fthis % 2u == 0uR\x15uint32EvenEdition2023:\x9f\x01\n\x18uint64_even_edition_2023\x12\x19.buf.validate.UInt64Rules\x18\x8a\t \x01(\x08\x42J\xc2HG\nE\n\x18uint64.even.edition_2023\x12\x18uint64 value is not even\x1a\x0fthis % 2u == 0uR\x15uint64EvenEdition2023:\x9d\x01\n\x18sint32_even_edition_2023\x12\x19.buf.validate.SInt32Rules\x18\x8a\t \x01(\x08\x42H\xc2HE\nC\n\x18sint32.even.edition_2023\x12\x18sint32 value is not even\x1a\rthis % 2 == 0R\x15sint32EvenEdition2023:\x9d\x01\n\x18sint64_even_edition_2023\x12\x19.buf.validate.SInt64Rules\x18\x8a\t \x01(\x08\x42H\xc2HE\nC\n\x18sint64.even.edition_2023\x12\x18sint64 value is not even\x1a\rthis % 2 == 0R\x15sint64EvenEdition2023:\xa4\x01\n\x19\x66ixed32_even_edition_2023\x12\x1a.buf.validate.Fixed32Rules\x18\x8a\t \x01(\x08\x42L\xc2HI\nG\n\x19\x66ixed32.even.edition_2023\x12\x19\x66ixed32 value is not even\x1a\x0fthis % 2u == 0uR\x16\x66ixed32EvenEdition2023:\xa4\x01\n\x19\x66ixed64_even_edition_2023\x12\x1a.buf.validate.Fixed64Rules\x18\x8a\t \x01(\x08\x42L\xc2HI\nG\n\x19\x66ixed64.even.edition_2023\x12\x19\x66ixed64 value is not even\x1a\x0fthis % 2u == 0uR\x16\x66ixed64EvenEdition2023:\xa7\x01\n\x1asfixed32_even_edition_2023\x12\x1b.buf.validate.SFixed32Rules\x18\x8a\t \x01(\x08\x42L\xc2HI\nG\n\x1asfixed32.even.edition_2023\x12\x1asfixed32 value is not even\x1a\rthis % 2 == 0R\x17sfixed32EvenEdition2023:\xa7\x01\n\x1asfixed64_even_edition_2023\x12\x1b.buf.validate.SFixed64Rules\x18\x8a\t \x01(\x08\x42L\xc2HI\nG\n\x1asfixed64.even.edition_2023\x12\x1asfixed64 value is not even\x1a\rthis % 2 == 0R\x17sfixed64EvenEdition2023:\x97\x01\n\x17\x62ool_false_edition_2023\x12\x17.buf.validate.BoolRules\x18\x8a\t \x01(\x08\x42\x46\xc2HC\nA\n\x17\x62ool.false.edition_2023\x12\x17\x62ool value is not false\x1a\rthis == falseR\x14\x62oolFalseEdition2023:\x8f\x02\n\x1estring_valid_path_edition_2023\x12\x19.buf.validate.StringRules\x18\x8a\t \x01(\x08\x42\xae\x01\xc2H\xaa\x01\n\xa7\x01\n\x1estring.valid_path.edition_2023\x1a\x84\x01!this.matches(\'^([^/.][^/]?|[^/][^/.]|[^/]{3,})(/([^/.][^/]?|[^/][^/.]|[^/]{3,}))*$\') ? \'not a valid path: `%s`\'.format([this]) : \'\'R\x1astringValidPathEdition2023:\x93\x02\n\x1d\x62ytes_valid_path_edition_2023\x12\x18.buf.validate.BytesRules\x18\x8a\t \x01(\x08\x42\xb5\x01\xc2H\xb1\x01\n\xae\x01\n\x1d\x62ytes.valid_path.edition_2023\x1a\x8c\x01!string(this).matches(\'^([^/.][^/]?|[^/][^/.]|[^/]{3,})(/([^/.][^/]?|[^/][^/.]|[^/]{3,}))*$\') ? \'not a valid path: `%s`\'.format([this]) : \'\'R\x19\x62ytesValidPathEdition2023:\xa3\x01\n\x1a\x65num_non_zero_edition_2023\x12\x17.buf.validate.EnumRules\x18\x8a\t \x01(\x08\x42M\xc2HJ\nH\n\x1a\x65num.non_zero.edition_2023\x12\x1a\x65num value is not non-zero\x1a\x0eint(this) != 0R\x16\x65numNonZeroEdition2023:\xdd\x01\n#repeated_at_least_five_edition_2023\x12\x1b.buf.validate.RepeatedRules\x18\x8a\t \x01(\x08\x42r\xc2Ho\nm\n#repeated.at_least_five.edition_2023\x12-repeated field must have at least five values\x1a\x17uint(this.size()) >= 5uR\x1erepeatedAtLeastFiveEdition2023:\xbd\x01\n\x1emap_at_least_five_edition_2023\x12\x16.buf.validate.MapRules\x18\x8a\t \x01(\x08\x42\x61\xc2H^\n\\\n\x1emap.at_least_five.edition_2023\x12!map must have at least five pairs\x1a\x17uint(this.size()) >= 5uR\x19mapAtLeastFiveEdition2023:\xca\x01\n\x1e\x64uration_too_long_edition_2023\x12\x1b.buf.validate.DurationRules\x18\x8a\t \x01(\x08\x42h\xc2He\nc\n\x1e\x64uration.too_long.edition_2023\x12(duration can\'t be longer than 10 seconds\x1a\x17this <= duration(\'10s\')R\x1a\x64urationTooLongEdition2023:\xd9\x01\n\x1ftimestamp_in_range_edition_2023\x12\x1c.buf.validate.TimestampRules\x18\x8a\t \x01(\x08\x42t\xc2Hq\no\n!timestamp.time_range.edition_2023\x12\x16timestamp out of range\x1a\x32int(this) >= 1049587200 && int(this) <= 1080432000R\x1btimestampInRangeEdition2023B\xe3\x01\n\"com.buf.validate.conformance.casesB!PredefinedRulesProtoEditionsProtoP\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\x08\x65\x64itionsp\xe8\x07') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -45,9 +45,9 @@ _globals['double_abs_range_edition_2023']._loaded_options = None _globals['double_abs_range_edition_2023']._serialized_options = b'\302H^\n\\\n\035double.abs_range.edition_2023\022\034double value is out of range\032\035this >= -rule && this <= rule' _globals['int32_abs_in_edition_2023']._loaded_options = None - _globals['int32_abs_in_edition_2023']._serialized_options = b'\302Ho\nm\n\031int32.abs_in.edition_2023\022\'value must be in absolute value of list\032\'this in rule || this in rule.map(n, -n)' + _globals['int32_abs_in_edition_2023']._serialized_options = b'\302Hi\ng\n\031int32.abs_in.edition_2023\022!must be in absolute value of list\032\'this in rule || this in rule.map(n, -n)' _globals['int64_abs_in_edition_2023']._loaded_options = None - _globals['int64_abs_in_edition_2023']._serialized_options = b'\302Ho\nm\n\031int64.abs_in.edition_2023\022\'value must be in absolute value of list\032\'this in rule || this in rule.map(n, -n)' + _globals['int64_abs_in_edition_2023']._serialized_options = b'\302Hi\ng\n\031int64.abs_in.edition_2023\022!must be in absolute value of list\032\'this in rule || this in rule.map(n, -n)' _globals['uint32_even_edition_2023']._loaded_options = None _globals['uint32_even_edition_2023']._serialized_options = b'\302HG\nE\n\030uint32.even.edition_2023\022\030uint32 value is not even\032\017this % 2u == 0u' _globals['uint64_even_edition_2023']._loaded_options = None diff --git a/gen/buf/validate/conformance/cases/strings_pb2.py b/gen/buf/validate/conformance/cases/strings_pb2.py index b71d530..f852804 100644 --- a/gen/buf/validate/conformance/cases/strings_pb2.py +++ b/gen/buf/validate/conformance/cases/strings_pb2.py @@ -29,7 +29,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/strings.proto\x12\x1e\x62uf.validate.conformance.cases\x1a\x1b\x62uf/validate/validate.proto\"\x1e\n\nStringNone\x12\x10\n\x03val\x18\x01 \x01(\tR\x03val\"+\n\x0bStringConst\x12\x1c\n\x03val\x18\x01 \x01(\tB\n\xbaH\x07r\x05\n\x03\x66ooR\x03val\"-\n\x08StringIn\x12!\n\x03val\x18\x01 \x01(\tB\x0f\xbaH\x0cr\nR\x03\x62\x61rR\x03\x62\x61zR\x03val\"2\n\x0bStringNotIn\x12#\n\x03val\x18\x01 \x01(\tB\x11\xbaH\x0er\x0cZ\x04\x66izzZ\x04\x62uzzR\x03val\"\'\n\tStringLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x98\x01\x03R\x03val\")\n\x0cStringMinLen\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x03val\")\n\x0cStringMaxLen\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x18\x05R\x03val\".\n\x0fStringMinMaxLen\x12\x1b\n\x03val\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x03\x18\x05R\x03val\"3\n\x14StringEqualMinMaxLen\x12\x1b\n\x03val\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x05\x18\x05R\x03val\",\n\x0eStringLenBytes\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xa0\x01\x04R\x03val\"+\n\x0eStringMinBytes\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02 \x04R\x03val\"+\n\x0eStringMaxBytes\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02(\x08R\x03val\"0\n\x11StringMinMaxBytes\x12\x1b\n\x03val\x18\x01 \x01(\tB\t\xbaH\x06r\x04 \x04(\x08R\x03val\"5\n\x16StringEqualMinMaxBytes\x12\x1b\n\x03val\x18\x01 \x01(\tB\t\xbaH\x06r\x04 \x04(\x04R\x03val\"9\n\rStringPattern\x12(\n\x03val\x18\x01 \x01(\tB\x16\xbaH\x13r\x11\x32\x0f(?i)^[a-z0-9]+$R\x03val\"9\n\x14StringPatternEscapes\x12!\n\x03val\x18\x01 \x01(\tB\x0f\xbaH\x0cr\n2\x08\\* \\\\ \\wR\x03val\",\n\x0cStringPrefix\x12\x1c\n\x03val\x18\x01 \x01(\tB\n\xbaH\x07r\x05:\x03\x66ooR\x03val\".\n\x0eStringContains\x12\x1c\n\x03val\x18\x01 \x01(\tB\n\xbaH\x07r\x05J\x03\x62\x61rR\x03val\"2\n\x11StringNotContains\x12\x1d\n\x03val\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xba\x01\x03\x62\x61rR\x03val\",\n\x0cStringSuffix\x12\x1c\n\x03val\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x42\x03\x62\x61zR\x03val\"(\n\x0bStringEmail\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02`\x01R\x03val\"+\n\x0eStringNotEmail\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02`\x00R\x03val\"+\n\rStringAddress\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xa8\x01\x01R\x03val\".\n\x10StringNotAddress\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xa8\x01\x00R\x03val\"+\n\x0eStringHostname\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02h\x01R\x03val\".\n\x11StringNotHostname\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02h\x00R\x03val\"%\n\x08StringIP\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01R\x03val\"(\n\x0bStringNotIP\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x00R\x03val\"\'\n\nStringIPv4\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02x\x01R\x03val\"*\n\rStringNotIPv4\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02x\x00R\x03val\"(\n\nStringIPv6\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x80\x01\x01R\x03val\"+\n\rStringNotIPv6\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x80\x01\x00R\x03val\"3\n\x15StringIPWithPrefixLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xd0\x01\x01R\x03val\"6\n\x18StringNotIPWithPrefixLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xd0\x01\x00R\x03val\"5\n\x17StringIPv4WithPrefixLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xd8\x01\x01R\x03val\"8\n\x1aStringNotIPv4WithPrefixLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xd8\x01\x00R\x03val\"5\n\x17StringIPv6WithPrefixLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xe0\x01\x01R\x03val\"8\n\x1aStringNotIPv6WithPrefixLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xe0\x01\x00R\x03val\",\n\x0eStringIPPrefix\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xe8\x01\x01R\x03val\"/\n\x11StringNotIPPrefix\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xe8\x01\x00R\x03val\".\n\x10StringIPv4Prefix\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xf0\x01\x01R\x03val\"1\n\x13StringNotIPv4Prefix\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xf0\x01\x00R\x03val\".\n\x10StringIPv6Prefix\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xf8\x01\x01R\x03val\"1\n\x13StringNotIPv6Prefix\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xf8\x01\x00R\x03val\"\'\n\tStringURI\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x88\x01\x01R\x03val\"*\n\x0cStringNotURI\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x88\x01\x00R\x03val\"*\n\x0cStringURIRef\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x90\x01\x01R\x03val\"-\n\x0fStringNotURIRef\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x90\x01\x00R\x03val\"(\n\nStringUUID\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x03val\"+\n\rStringNotUUID\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x00R\x03val\")\n\x0bStringTUUID\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x88\x02\x01R\x03val\",\n\x0eStringNotTUUID\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x88\x02\x00R\x03val\"(\n\nStringULID\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x98\x02\x01R\x03val\"+\n\rStringNotULID\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x98\x02\x00R\x03val\"1\n\x10StringULIDIgnore\x12\x1d\n\x03val\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\x98\x02\x01\xd8\x01\x01R\x03val\"2\n\x14StringHttpHeaderName\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xc0\x01\x01R\x03val\"3\n\x15StringHttpHeaderValue\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xc0\x01\x02R\x03val\":\n\x19StringHttpHeaderNameLoose\x12\x1d\n\x03val\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\x01\x01\xc8\x01\x00R\x03val\";\n\x1aStringHttpHeaderValueLoose\x12\x1d\n\x03val\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\x01\x02\xc8\x01\x00R\x03val\"1\n\x10StringUUIDIgnore\x12\x1d\n\x03val\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x03val\"7\n\rStringInOneof\x12\x1f\n\x03\x62\x61r\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06R\x01\x61R\x01\x62H\x00R\x03\x62\x61rB\x05\n\x03\x66oo\"/\n\x11StringHostAndPort\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x80\x02\x01R\x03val\"\xa4\x01\n\x19StringHostAndOptionalPort\x12\x86\x01\n\x03val\x18\x01 \x01(\tBt\xbaHq\xba\x01n\n\"string.host_and_port.optional_port\x12-value must be a host and (optional) port pair\x1a\x19this.isHostAndPort(false)R\x03val\".\n\rStringExample\x12\x1d\n\x03val\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x92\x02\x03\x66ooR\x03valB\xce\x01\n\"com.buf.validate.conformance.casesB\x0cStringsProtoP\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/strings.proto\x12\x1e\x62uf.validate.conformance.cases\x1a\x1b\x62uf/validate/validate.proto\"\x1e\n\nStringNone\x12\x10\n\x03val\x18\x01 \x01(\tR\x03val\"+\n\x0bStringConst\x12\x1c\n\x03val\x18\x01 \x01(\tB\n\xbaH\x07r\x05\n\x03\x66ooR\x03val\"-\n\x08StringIn\x12!\n\x03val\x18\x01 \x01(\tB\x0f\xbaH\x0cr\nR\x03\x62\x61rR\x03\x62\x61zR\x03val\"2\n\x0bStringNotIn\x12#\n\x03val\x18\x01 \x01(\tB\x11\xbaH\x0er\x0cZ\x04\x66izzZ\x04\x62uzzR\x03val\"\'\n\tStringLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x98\x01\x03R\x03val\")\n\x0cStringMinLen\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x03R\x03val\")\n\x0cStringMaxLen\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x18\x05R\x03val\".\n\x0fStringMinMaxLen\x12\x1b\n\x03val\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x03\x18\x05R\x03val\"3\n\x14StringEqualMinMaxLen\x12\x1b\n\x03val\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x05\x18\x05R\x03val\",\n\x0eStringLenBytes\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xa0\x01\x04R\x03val\"+\n\x0eStringMinBytes\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02 \x04R\x03val\"+\n\x0eStringMaxBytes\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02(\x08R\x03val\"0\n\x11StringMinMaxBytes\x12\x1b\n\x03val\x18\x01 \x01(\tB\t\xbaH\x06r\x04 \x04(\x08R\x03val\"5\n\x16StringEqualMinMaxBytes\x12\x1b\n\x03val\x18\x01 \x01(\tB\t\xbaH\x06r\x04 \x04(\x04R\x03val\"9\n\rStringPattern\x12(\n\x03val\x18\x01 \x01(\tB\x16\xbaH\x13r\x11\x32\x0f(?i)^[a-z0-9]+$R\x03val\"9\n\x14StringPatternEscapes\x12!\n\x03val\x18\x01 \x01(\tB\x0f\xbaH\x0cr\n2\x08\\* \\\\ \\wR\x03val\",\n\x0cStringPrefix\x12\x1c\n\x03val\x18\x01 \x01(\tB\n\xbaH\x07r\x05:\x03\x66ooR\x03val\".\n\x0eStringContains\x12\x1c\n\x03val\x18\x01 \x01(\tB\n\xbaH\x07r\x05J\x03\x62\x61rR\x03val\"2\n\x11StringNotContains\x12\x1d\n\x03val\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xba\x01\x03\x62\x61rR\x03val\",\n\x0cStringSuffix\x12\x1c\n\x03val\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x42\x03\x62\x61zR\x03val\"(\n\x0bStringEmail\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02`\x01R\x03val\"+\n\x0eStringNotEmail\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02`\x00R\x03val\"+\n\rStringAddress\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xa8\x01\x01R\x03val\".\n\x10StringNotAddress\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xa8\x01\x00R\x03val\"+\n\x0eStringHostname\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02h\x01R\x03val\".\n\x11StringNotHostname\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02h\x00R\x03val\"%\n\x08StringIP\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01R\x03val\"(\n\x0bStringNotIP\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x00R\x03val\"\'\n\nStringIPv4\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02x\x01R\x03val\"*\n\rStringNotIPv4\x12\x19\n\x03val\x18\x01 \x01(\tB\x07\xbaH\x04r\x02x\x00R\x03val\"(\n\nStringIPv6\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x80\x01\x01R\x03val\"+\n\rStringNotIPv6\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x80\x01\x00R\x03val\"3\n\x15StringIPWithPrefixLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xd0\x01\x01R\x03val\"6\n\x18StringNotIPWithPrefixLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xd0\x01\x00R\x03val\"5\n\x17StringIPv4WithPrefixLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xd8\x01\x01R\x03val\"8\n\x1aStringNotIPv4WithPrefixLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xd8\x01\x00R\x03val\"5\n\x17StringIPv6WithPrefixLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xe0\x01\x01R\x03val\"8\n\x1aStringNotIPv6WithPrefixLen\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xe0\x01\x00R\x03val\",\n\x0eStringIPPrefix\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xe8\x01\x01R\x03val\"/\n\x11StringNotIPPrefix\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xe8\x01\x00R\x03val\".\n\x10StringIPv4Prefix\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xf0\x01\x01R\x03val\"1\n\x13StringNotIPv4Prefix\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xf0\x01\x00R\x03val\".\n\x10StringIPv6Prefix\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xf8\x01\x01R\x03val\"1\n\x13StringNotIPv6Prefix\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xf8\x01\x00R\x03val\"\'\n\tStringURI\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x88\x01\x01R\x03val\"*\n\x0cStringNotURI\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x88\x01\x00R\x03val\"*\n\x0cStringURIRef\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x90\x01\x01R\x03val\"-\n\x0fStringNotURIRef\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x90\x01\x00R\x03val\"(\n\nStringUUID\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x03val\"+\n\rStringNotUUID\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x00R\x03val\")\n\x0bStringTUUID\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x88\x02\x01R\x03val\",\n\x0eStringNotTUUID\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x88\x02\x00R\x03val\"(\n\nStringULID\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x98\x02\x01R\x03val\"+\n\rStringNotULID\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x98\x02\x00R\x03val\"1\n\x10StringULIDIgnore\x12\x1d\n\x03val\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\x98\x02\x01\xd8\x01\x01R\x03val\"2\n\x14StringHttpHeaderName\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xc0\x01\x01R\x03val\"3\n\x15StringHttpHeaderValue\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xc0\x01\x02R\x03val\":\n\x19StringHttpHeaderNameLoose\x12\x1d\n\x03val\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\x01\x01\xc8\x01\x00R\x03val\";\n\x1aStringHttpHeaderValueLoose\x12\x1d\n\x03val\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\x01\x02\xc8\x01\x00R\x03val\"1\n\x10StringUUIDIgnore\x12\x1d\n\x03val\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x03val\"7\n\rStringInOneof\x12\x1f\n\x03\x62\x61r\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06R\x01\x61R\x01\x62H\x00R\x03\x62\x61rB\x05\n\x03\x66oo\"/\n\x11StringHostAndPort\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x80\x02\x01R\x03val\"\xa4\x01\n\x19StringHostAndOptionalPort\x12\x86\x01\n\x03val\x18\x01 \x01(\tBt\xbaHq\xba\x01n\n\"string.host_and_port.optional_port\x12-value must be a host and (optional) port pair\x1a\x19this.isHostAndPort(false)R\x03val\"/\n\x11StringProtobufFQN\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xa8\x02\x01R\x03val\"2\n\x14StringProtobufDotFQN\x12\x1a\n\x03val\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x02\x01R\x03val\".\n\rStringExample\x12\x1d\n\x03val\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x92\x02\x03\x66ooR\x03valB\xce\x01\n\"com.buf.validate.conformance.casesB\x0cStringsProtoP\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) @@ -161,6 +161,10 @@ _globals['_STRINGHOSTANDPORT'].fields_by_name['val']._serialized_options = b'\272H\005r\003\200\002\001' _globals['_STRINGHOSTANDOPTIONALPORT'].fields_by_name['val']._loaded_options = None _globals['_STRINGHOSTANDOPTIONALPORT'].fields_by_name['val']._serialized_options = b'\272Hq\272\001n\n\"string.host_and_port.optional_port\022-value must be a host and (optional) port pair\032\031this.isHostAndPort(false)' + _globals['_STRINGPROTOBUFFQN'].fields_by_name['val']._loaded_options = None + _globals['_STRINGPROTOBUFFQN'].fields_by_name['val']._serialized_options = b'\272H\005r\003\250\002\001' + _globals['_STRINGPROTOBUFDOTFQN'].fields_by_name['val']._loaded_options = None + _globals['_STRINGPROTOBUFDOTFQN'].fields_by_name['val']._serialized_options = b'\272H\005r\003\260\002\001' _globals['_STRINGEXAMPLE'].fields_by_name['val']._loaded_options = None _globals['_STRINGEXAMPLE'].fields_by_name['val']._serialized_options = b'\272H\010r\006\222\002\003foo' _globals['_STRINGNONE']._serialized_start=109 @@ -289,6 +293,10 @@ _globals['_STRINGHOSTANDPORT']._serialized_end=3089 _globals['_STRINGHOSTANDOPTIONALPORT']._serialized_start=3092 _globals['_STRINGHOSTANDOPTIONALPORT']._serialized_end=3256 - _globals['_STRINGEXAMPLE']._serialized_start=3258 - _globals['_STRINGEXAMPLE']._serialized_end=3304 + _globals['_STRINGPROTOBUFFQN']._serialized_start=3258 + _globals['_STRINGPROTOBUFFQN']._serialized_end=3305 + _globals['_STRINGPROTOBUFDOTFQN']._serialized_start=3307 + _globals['_STRINGPROTOBUFDOTFQN']._serialized_end=3357 + _globals['_STRINGEXAMPLE']._serialized_start=3359 + _globals['_STRINGEXAMPLE']._serialized_end=3405 # @@protoc_insertion_point(module_scope) diff --git a/gen/buf/validate/conformance/cases/strings_pb2.pyi b/gen/buf/validate/conformance/cases/strings_pb2.pyi index 884c45b..2649542 100644 --- a/gen/buf/validate/conformance/cases/strings_pb2.pyi +++ b/gen/buf/validate/conformance/cases/strings_pb2.pyi @@ -397,6 +397,18 @@ class StringHostAndOptionalPort(_message.Message): val: str def __init__(self, val: _Optional[str] = ...) -> None: ... +class StringProtobufFQN(_message.Message): + __slots__ = ("val",) + VAL_FIELD_NUMBER: _ClassVar[int] + val: str + def __init__(self, val: _Optional[str] = ...) -> None: ... + +class StringProtobufDotFQN(_message.Message): + __slots__ = ("val",) + VAL_FIELD_NUMBER: _ClassVar[int] + val: str + def __init__(self, val: _Optional[str] = ...) -> None: ... + class StringExample(_message.Message): __slots__ = ("val",) VAL_FIELD_NUMBER: _ClassVar[int] diff --git a/gen/buf/validate/validate_pb2.py b/gen/buf/validate/validate_pb2.py index 17c36ae..6af0b4a 100644 --- a/gen/buf/validate/validate_pb2.py +++ b/gen/buf/validate/validate_pb2.py @@ -32,7 +32,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 google/protobuf/field_mask.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\"\xa1\x01\n\x0cMessageRules\x12%\n\x0e\x63\x65l_expression\x18\x05 \x03(\tR\rcelExpression\x12$\n\x03\x63\x65l\x18\x03 \x03(\x0b\x32\x12.buf.validate.RuleR\x03\x63\x65l\x12\x34\n\x05oneof\x18\x04 \x03(\x0b\x32\x1e.buf.validate.MessageOneofRuleR\x05oneofJ\x04\x08\x01\x10\x02R\x08\x64isabled\"F\n\x10MessageOneofRule\x12\x16\n\x06\x66ields\x18\x01 \x03(\tR\x06\x66ields\x12\x1a\n\x08required\x18\x02 \x01(\x08R\x08required\"(\n\nOneofRules\x12\x1a\n\x08required\x18\x01 \x01(\x08R\x08required\"\xe3\n\n\nFieldRules\x12%\n\x0e\x63\x65l_expression\x18\x1d \x03(\tR\rcelExpression\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\nfield_mask\x18\x1c \x01(\x0b\x32\x1c.buf.validate.FieldMaskRulesH\x00R\tfieldMask\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\"Z\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\x07skippedR\x0cignore_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\"\xcf;\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\xfb\x01\n\x04ulid\x18# \x01(\x08\x42\xe4\x01\xc2H\xe0\x01\n\x82\x01\n\x0bstring.ulid\x12\x1avalue must be a valid ULID\x1aW!rules.ulid || this == \'\' || this.matches(\'^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$\')\nY\n\x11string.ulid_empty\x12)value is empty, which is not a valid ULID\x1a\x19!rules.ulid || this != \'\'H\x00R\x04ulid\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\"\xac\x13\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\xdb\x01\n\x04uuid\x18\x0f \x01(\x08\x42\xc4\x01\xc2H\xc0\x01\n^\n\nbytes.uuid\x12\x1avalue must be a valid UUID\x1a\x34!rules.uuid || this.size() == 0 || this.size() == 16\n^\n\x10\x62ytes.uuid_empty\x12)value is empty, which is not a valid UUID\x1a\x1f!rules.uuid || this.size() != 0H\x00R\x04uuid\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\"\x98\x06\n\x0e\x46ieldMaskRules\x12\xc6\x01\n\x05\x63onst\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x93\x01\xc2H\x8f\x01\n\x8c\x01\n\x10\x66ield_mask.const\x1axthis.paths != getField(rules, \'const\').paths ? \'value must equal paths %s\'.format([getField(rules, \'const\').paths]) : \'\'R\x05\x63onst\x12\xdd\x01\n\x02in\x18\x02 \x03(\tB\xcc\x01\xc2H\xc8\x01\n\xc5\x01\n\rfield_mask.in\x1a\xb3\x01!this.paths.all(p, p in getField(rules, \'in\') || getField(rules, \'in\').exists(f, p.startsWith(f+\'.\'))) ? \'value must only contain paths in %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12\xfa\x01\n\x06not_in\x18\x03 \x03(\tB\xe2\x01\xc2H\xde\x01\n\xdb\x01\n\x11\x66ield_mask.not_in\x1a\xc5\x01!this.paths.all(p, !(p in getField(rules, \'not_in\') || getField(rules, \'not_in\').exists(f, p.startsWith(f+\'.\')))) ? \'value must not contain any paths in %s\'.format([getField(rules, \'not_in\')]) : \'\'R\x05notIn\x12U\n\x07\x65xample\x18\x04 \x03(\x0b\x32\x1a.google.protobuf.FieldMaskB\x1f\xc2H\x1c\n\x1a\n\x12\x66ield_mask.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"\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*\xa1\x01\n\x06Ignore\x12\x16\n\x12IGNORE_UNSPECIFIED\x10\x00\x12\x18\n\x14IGNORE_IF_ZERO_VALUE\x10\x01\x12\x11\n\rIGNORE_ALWAYS\x10\x03\"\x04\x08\x02\x10\x02*\x0cIGNORE_EMPTY*\x0eIGNORE_DEFAULT*\x17IGNORE_IF_DEFAULT_VALUE*\x15IGNORE_IF_UNPOPULATED*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') +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 google/protobuf/field_mask.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\"\xa1\x01\n\x0cMessageRules\x12%\n\x0e\x63\x65l_expression\x18\x05 \x03(\tR\rcelExpression\x12$\n\x03\x63\x65l\x18\x03 \x03(\x0b\x32\x12.buf.validate.RuleR\x03\x63\x65l\x12\x34\n\x05oneof\x18\x04 \x03(\x0b\x32\x1e.buf.validate.MessageOneofRuleR\x05oneofJ\x04\x08\x01\x10\x02R\x08\x64isabled\"F\n\x10MessageOneofRule\x12\x16\n\x06\x66ields\x18\x01 \x03(\tR\x06\x66ields\x12\x1a\n\x08required\x18\x02 \x01(\x08R\x08required\"(\n\nOneofRules\x12\x1a\n\x08required\x18\x01 \x01(\x08R\x08required\"\xe3\n\n\nFieldRules\x12%\n\x0e\x63\x65l_expression\x18\x1d \x03(\tR\rcelExpression\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\nfield_mask\x18\x1c \x01(\x0b\x32\x1c.buf.validate.FieldMaskRulesH\x00R\tfieldMask\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\"Z\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\x07skippedR\x0cignore_empty\"\xae\x17\n\nFloatRules\x12\x84\x01\n\x05\x63onst\x18\x01 \x01(\x02\x42n\xc2Hk\ni\n\x0b\x66loat.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x9d\x01\n\x02lt\x18\x02 \x01(\x02\x42\x8a\x01\xc2H\x86\x01\n\x83\x01\n\x08\x66loat.lt\x1aw!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xae\x01\n\x03lte\x18\x03 \x01(\x02\x42\x99\x01\xc2H\x95\x01\n\x92\x01\n\tfloat.lte\x1a\x84\x01!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xd4\x07\n\x02gt\x18\x04 \x01(\x02\x42\xc1\x07\xc2H\xbd\x07\n\x86\x01\n\x08\x66loat.gt\x1az!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xbd\x01\n\x0b\x66loat.gt_lt\x1a\xad\x01has(rules.lt) && rules.lt >= rules.gt && (this.isNan() || this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc7\x01\n\x15\x66loat.gt_lt_exclusive\x1a\xad\x01has(rules.lt) && rules.lt < rules.gt && (this.isNan() || (rules.lt <= this && this <= rules.gt))? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xcd\x01\n\x0c\x66loat.gt_lte\x1a\xbc\x01has(rules.lte) && rules.lte >= rules.gt && (this.isNan() || this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xd7\x01\n\x16\x66loat.gt_lte_exclusive\x1a\xbc\x01has(rules.lte) && rules.lte < rules.gt && (this.isNan() || (rules.lte < this && this <= rules.gt))? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xa1\x08\n\x03gte\x18\x05 \x01(\x02\x42\x8c\x08\xc2H\x88\x08\n\x95\x01\n\tfloat.gte\x1a\x87\x01!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xcc\x01\n\x0c\x66loat.gte_lt\x1a\xbb\x01has(rules.lt) && rules.lt >= rules.gte && (this.isNan() || this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd6\x01\n\x16\x66loat.gte_lt_exclusive\x1a\xbb\x01has(rules.lt) && rules.lt < rules.gte && (this.isNan() || (rules.lt <= this && this < rules.gte))? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xdc\x01\n\rfloat.gte_lte\x1a\xca\x01has(rules.lte) && rules.lte >= rules.gte && (this.isNan() || this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xe6\x01\n\x17\x66loat.gte_lte_exclusive\x1a\xca\x01has(rules.lte) && rules.lte < rules.gte && (this.isNan() || (rules.lte < this && this < rules.gte))? \'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(\x02\x42m\xc2Hj\nh\n\x08\x66loat.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12w\n\x06not_in\x18\x07 \x03(\x02\x42`\xc2H]\n[\n\x0c\x66loat.not_in\x1aKthis in rules.not_in ? \'must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12w\n\x06\x66inite\x18\x08 \x01(\x08\x42_\xc2H\\\nZ\n\x0c\x66loat.finite\x1aJrules.finite ? (this.isNan() || this.isInf() ? \'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\"\xc0\x17\n\x0b\x44oubleRules\x12\x85\x01\n\x05\x63onst\x18\x01 \x01(\x01\x42o\xc2Hl\nj\n\x0c\x64ouble.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x9e\x01\n\x02lt\x18\x02 \x01(\x01\x42\x8b\x01\xc2H\x87\x01\n\x84\x01\n\tdouble.lt\x1aw!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xaf\x01\n\x03lte\x18\x03 \x01(\x01\x42\x9a\x01\xc2H\x96\x01\n\x93\x01\n\ndouble.lte\x1a\x84\x01!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xd9\x07\n\x02gt\x18\x04 \x01(\x01\x42\xc6\x07\xc2H\xc2\x07\n\x87\x01\n\tdouble.gt\x1az!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xbe\x01\n\x0c\x64ouble.gt_lt\x1a\xad\x01has(rules.lt) && rules.lt >= rules.gt && (this.isNan() || this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc8\x01\n\x16\x64ouble.gt_lt_exclusive\x1a\xad\x01has(rules.lt) && rules.lt < rules.gt && (this.isNan() || (rules.lt <= this && this <= rules.gt))? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xce\x01\n\rdouble.gt_lte\x1a\xbc\x01has(rules.lte) && rules.lte >= rules.gt && (this.isNan() || this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xd8\x01\n\x17\x64ouble.gt_lte_exclusive\x1a\xbc\x01has(rules.lte) && rules.lte < rules.gt && (this.isNan() || (rules.lte < this && this <= rules.gt))? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xa6\x08\n\x03gte\x18\x05 \x01(\x01\x42\x91\x08\xc2H\x8d\x08\n\x96\x01\n\ndouble.gte\x1a\x87\x01!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xcd\x01\n\rdouble.gte_lt\x1a\xbb\x01has(rules.lt) && rules.lt >= rules.gte && (this.isNan() || this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd7\x01\n\x17\x64ouble.gte_lt_exclusive\x1a\xbb\x01has(rules.lt) && rules.lt < rules.gte && (this.isNan() || (rules.lt <= this && this < rules.gte))? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xdd\x01\n\x0e\x64ouble.gte_lte\x1a\xca\x01has(rules.lte) && rules.lte >= rules.gte && (this.isNan() || this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xe7\x01\n\x18\x64ouble.gte_lte_exclusive\x1a\xca\x01has(rules.lte) && rules.lte < rules.gte && (this.isNan() || (rules.lte < this && this < rules.gte))? \'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(\x01\x42n\xc2Hk\ni\n\tdouble.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12x\n\x06not_in\x18\x07 \x03(\x01\x42\x61\xc2H^\n\\\n\rdouble.not_in\x1aKthis in rules.not_in ? \'must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12x\n\x06\x66inite\x18\x08 \x01(\x08\x42`\xc2H]\n[\n\rdouble.finite\x1aJrules.finite ? (this.isNan() || this.isInf() ? \'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\"\xde\x14\n\nInt32Rules\x12\x84\x01\n\x05\x63onst\x18\x01 \x01(\x05\x42n\xc2Hk\ni\n\x0bint32.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x88\x01\n\x02lt\x18\x02 \x01(\x05\x42v\xc2Hs\nq\n\x08int32.lt\x1a\x65!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\x9a\x01\n\x03lte\x18\x03 \x01(\x05\x42\x85\x01\xc2H\x81\x01\n\x7f\n\tint32.lte\x1ar!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xfd\x06\n\x02gt\x18\x04 \x01(\x05\x42\xea\x06\xc2H\xe6\x06\nt\n\x08int32.gt\x1ah!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xad\x01\n\x0bint32.gt_lt\x1a\x9d\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xb5\x01\n\x15int32.gt_lt_exclusive\x1a\x9b\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbd\x01\n\x0cint32.gt_lte\x1a\xac\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xc5\x01\n\x16int32.gt_lte_exclusive\x1a\xaa\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xca\x07\n\x03gte\x18\x05 \x01(\x05\x42\xb5\x07\xc2H\xb1\x07\n\x82\x01\n\tint32.gte\x1au!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xbc\x01\n\x0cint32.gte_lt\x1a\xab\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xc4\x01\n\x16int32.gte_lt_exclusive\x1a\xa9\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcc\x01\n\rint32.gte_lte\x1a\xba\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xd4\x01\n\x17int32.gte_lte_exclusive\x1a\xb8\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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(\x05\x42m\xc2Hj\nh\n\x08int32.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12w\n\x06not_in\x18\x07 \x03(\x05\x42`\xc2H]\n[\n\x0cint32.not_in\x1aKthis in rules.not_in ? \'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\"\xde\x14\n\nInt64Rules\x12\x84\x01\n\x05\x63onst\x18\x01 \x01(\x03\x42n\xc2Hk\ni\n\x0bint64.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x88\x01\n\x02lt\x18\x02 \x01(\x03\x42v\xc2Hs\nq\n\x08int64.lt\x1a\x65!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\x9a\x01\n\x03lte\x18\x03 \x01(\x03\x42\x85\x01\xc2H\x81\x01\n\x7f\n\tint64.lte\x1ar!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xfd\x06\n\x02gt\x18\x04 \x01(\x03\x42\xea\x06\xc2H\xe6\x06\nt\n\x08int64.gt\x1ah!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xad\x01\n\x0bint64.gt_lt\x1a\x9d\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xb5\x01\n\x15int64.gt_lt_exclusive\x1a\x9b\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbd\x01\n\x0cint64.gt_lte\x1a\xac\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xc5\x01\n\x16int64.gt_lte_exclusive\x1a\xaa\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xca\x07\n\x03gte\x18\x05 \x01(\x03\x42\xb5\x07\xc2H\xb1\x07\n\x82\x01\n\tint64.gte\x1au!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xbc\x01\n\x0cint64.gte_lt\x1a\xab\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xc4\x01\n\x16int64.gte_lt_exclusive\x1a\xa9\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcc\x01\n\rint64.gte_lte\x1a\xba\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xd4\x01\n\x17int64.gte_lte_exclusive\x1a\xb8\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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(\x03\x42m\xc2Hj\nh\n\x08int64.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12w\n\x06not_in\x18\x07 \x03(\x03\x42`\xc2H]\n[\n\x0cint64.not_in\x1aKthis in rules.not_in ? \'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\"\xf0\x14\n\x0bUInt32Rules\x12\x85\x01\n\x05\x63onst\x18\x01 \x01(\rBo\xc2Hl\nj\n\x0cuint32.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x89\x01\n\x02lt\x18\x02 \x01(\rBw\xc2Ht\nr\n\tuint32.lt\x1a\x65!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\x9c\x01\n\x03lte\x18\x03 \x01(\rB\x87\x01\xc2H\x83\x01\n\x80\x01\n\nuint32.lte\x1ar!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\x82\x07\n\x02gt\x18\x04 \x01(\rB\xef\x06\xc2H\xeb\x06\nu\n\tuint32.gt\x1ah!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xae\x01\n\x0cuint32.gt_lt\x1a\x9d\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xb6\x01\n\x16uint32.gt_lt_exclusive\x1a\x9b\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbe\x01\n\ruint32.gt_lte\x1a\xac\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xc6\x01\n\x17uint32.gt_lte_exclusive\x1a\xaa\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xcf\x07\n\x03gte\x18\x05 \x01(\rB\xba\x07\xc2H\xb6\x07\n\x83\x01\n\nuint32.gte\x1au!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xbd\x01\n\ruint32.gte_lt\x1a\xab\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xc5\x01\n\x17uint32.gte_lt_exclusive\x1a\xa9\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcd\x01\n\x0euint32.gte_lte\x1a\xba\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xd5\x01\n\x18uint32.gte_lte_exclusive\x1a\xb8\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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(\rBn\xc2Hk\ni\n\tuint32.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12x\n\x06not_in\x18\x07 \x03(\rBa\xc2H^\n\\\n\ruint32.not_in\x1aKthis in rules.not_in ? \'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\"\xf0\x14\n\x0bUInt64Rules\x12\x85\x01\n\x05\x63onst\x18\x01 \x01(\x04\x42o\xc2Hl\nj\n\x0cuint64.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x89\x01\n\x02lt\x18\x02 \x01(\x04\x42w\xc2Ht\nr\n\tuint64.lt\x1a\x65!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\x9c\x01\n\x03lte\x18\x03 \x01(\x04\x42\x87\x01\xc2H\x83\x01\n\x80\x01\n\nuint64.lte\x1ar!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\x82\x07\n\x02gt\x18\x04 \x01(\x04\x42\xef\x06\xc2H\xeb\x06\nu\n\tuint64.gt\x1ah!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xae\x01\n\x0cuint64.gt_lt\x1a\x9d\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xb6\x01\n\x16uint64.gt_lt_exclusive\x1a\x9b\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbe\x01\n\ruint64.gt_lte\x1a\xac\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xc6\x01\n\x17uint64.gt_lte_exclusive\x1a\xaa\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xcf\x07\n\x03gte\x18\x05 \x01(\x04\x42\xba\x07\xc2H\xb6\x07\n\x83\x01\n\nuint64.gte\x1au!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xbd\x01\n\ruint64.gte_lt\x1a\xab\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xc5\x01\n\x17uint64.gte_lt_exclusive\x1a\xa9\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcd\x01\n\x0euint64.gte_lte\x1a\xba\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xd5\x01\n\x18uint64.gte_lte_exclusive\x1a\xb8\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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(\x04\x42n\xc2Hk\ni\n\tuint64.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12x\n\x06not_in\x18\x07 \x03(\x04\x42\x61\xc2H^\n\\\n\ruint64.not_in\x1aKthis in rules.not_in ? \'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\"\xf0\x14\n\x0bSInt32Rules\x12\x85\x01\n\x05\x63onst\x18\x01 \x01(\x11\x42o\xc2Hl\nj\n\x0csint32.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x89\x01\n\x02lt\x18\x02 \x01(\x11\x42w\xc2Ht\nr\n\tsint32.lt\x1a\x65!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\x9c\x01\n\x03lte\x18\x03 \x01(\x11\x42\x87\x01\xc2H\x83\x01\n\x80\x01\n\nsint32.lte\x1ar!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\x82\x07\n\x02gt\x18\x04 \x01(\x11\x42\xef\x06\xc2H\xeb\x06\nu\n\tsint32.gt\x1ah!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xae\x01\n\x0csint32.gt_lt\x1a\x9d\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xb6\x01\n\x16sint32.gt_lt_exclusive\x1a\x9b\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbe\x01\n\rsint32.gt_lte\x1a\xac\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xc6\x01\n\x17sint32.gt_lte_exclusive\x1a\xaa\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xcf\x07\n\x03gte\x18\x05 \x01(\x11\x42\xba\x07\xc2H\xb6\x07\n\x83\x01\n\nsint32.gte\x1au!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xbd\x01\n\rsint32.gte_lt\x1a\xab\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xc5\x01\n\x17sint32.gte_lt_exclusive\x1a\xa9\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcd\x01\n\x0esint32.gte_lte\x1a\xba\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xd5\x01\n\x18sint32.gte_lte_exclusive\x1a\xb8\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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(\x11\x42n\xc2Hk\ni\n\tsint32.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12x\n\x06not_in\x18\x07 \x03(\x11\x42\x61\xc2H^\n\\\n\rsint32.not_in\x1aKthis in rules.not_in ? \'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\"\xf0\x14\n\x0bSInt64Rules\x12\x85\x01\n\x05\x63onst\x18\x01 \x01(\x12\x42o\xc2Hl\nj\n\x0csint64.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x89\x01\n\x02lt\x18\x02 \x01(\x12\x42w\xc2Ht\nr\n\tsint64.lt\x1a\x65!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\x9c\x01\n\x03lte\x18\x03 \x01(\x12\x42\x87\x01\xc2H\x83\x01\n\x80\x01\n\nsint64.lte\x1ar!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\x82\x07\n\x02gt\x18\x04 \x01(\x12\x42\xef\x06\xc2H\xeb\x06\nu\n\tsint64.gt\x1ah!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xae\x01\n\x0csint64.gt_lt\x1a\x9d\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xb6\x01\n\x16sint64.gt_lt_exclusive\x1a\x9b\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbe\x01\n\rsint64.gt_lte\x1a\xac\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xc6\x01\n\x17sint64.gt_lte_exclusive\x1a\xaa\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xcf\x07\n\x03gte\x18\x05 \x01(\x12\x42\xba\x07\xc2H\xb6\x07\n\x83\x01\n\nsint64.gte\x1au!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xbd\x01\n\rsint64.gte_lt\x1a\xab\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xc5\x01\n\x17sint64.gte_lt_exclusive\x1a\xa9\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcd\x01\n\x0esint64.gte_lte\x1a\xba\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xd5\x01\n\x18sint64.gte_lte_exclusive\x1a\xb8\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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(\x12\x42n\xc2Hk\ni\n\tsint64.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12x\n\x06not_in\x18\x07 \x03(\x12\x42\x61\xc2H^\n\\\n\rsint64.not_in\x1aKthis in rules.not_in ? \'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\"\x81\x15\n\x0c\x46ixed32Rules\x12\x86\x01\n\x05\x63onst\x18\x01 \x01(\x07\x42p\xc2Hm\nk\n\rfixed32.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x8a\x01\n\x02lt\x18\x02 \x01(\x07\x42x\xc2Hu\ns\n\nfixed32.lt\x1a\x65!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\x9d\x01\n\x03lte\x18\x03 \x01(\x07\x42\x88\x01\xc2H\x84\x01\n\x81\x01\n\x0b\x66ixed32.lte\x1ar!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\x87\x07\n\x02gt\x18\x04 \x01(\x07\x42\xf4\x06\xc2H\xf0\x06\nv\n\nfixed32.gt\x1ah!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xaf\x01\n\rfixed32.gt_lt\x1a\x9d\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xb7\x01\n\x17\x66ixed32.gt_lt_exclusive\x1a\x9b\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbf\x01\n\x0e\x66ixed32.gt_lte\x1a\xac\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xc7\x01\n\x18\x66ixed32.gt_lte_exclusive\x1a\xaa\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xd4\x07\n\x03gte\x18\x05 \x01(\x07\x42\xbf\x07\xc2H\xbb\x07\n\x84\x01\n\x0b\x66ixed32.gte\x1au!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xbe\x01\n\x0e\x66ixed32.gte_lt\x1a\xab\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xc6\x01\n\x18\x66ixed32.gte_lt_exclusive\x1a\xa9\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xce\x01\n\x0f\x66ixed32.gte_lte\x1a\xba\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xd6\x01\n\x19\x66ixed32.gte_lte_exclusive\x1a\xb8\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x7f\n\x02in\x18\x06 \x03(\x07\x42o\xc2Hl\nj\n\nfixed32.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12y\n\x06not_in\x18\x07 \x03(\x07\x42\x62\xc2H_\n]\n\x0e\x66ixed32.not_in\x1aKthis in rules.not_in ? \'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\"\x81\x15\n\x0c\x46ixed64Rules\x12\x86\x01\n\x05\x63onst\x18\x01 \x01(\x06\x42p\xc2Hm\nk\n\rfixed64.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x8a\x01\n\x02lt\x18\x02 \x01(\x06\x42x\xc2Hu\ns\n\nfixed64.lt\x1a\x65!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\x9d\x01\n\x03lte\x18\x03 \x01(\x06\x42\x88\x01\xc2H\x84\x01\n\x81\x01\n\x0b\x66ixed64.lte\x1ar!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\x87\x07\n\x02gt\x18\x04 \x01(\x06\x42\xf4\x06\xc2H\xf0\x06\nv\n\nfixed64.gt\x1ah!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xaf\x01\n\rfixed64.gt_lt\x1a\x9d\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xb7\x01\n\x17\x66ixed64.gt_lt_exclusive\x1a\x9b\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xbf\x01\n\x0e\x66ixed64.gt_lte\x1a\xac\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xc7\x01\n\x18\x66ixed64.gt_lte_exclusive\x1a\xaa\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xd4\x07\n\x03gte\x18\x05 \x01(\x06\x42\xbf\x07\xc2H\xbb\x07\n\x84\x01\n\x0b\x66ixed64.gte\x1au!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xbe\x01\n\x0e\x66ixed64.gte_lt\x1a\xab\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xc6\x01\n\x18\x66ixed64.gte_lt_exclusive\x1a\xa9\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xce\x01\n\x0f\x66ixed64.gte_lte\x1a\xba\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xd6\x01\n\x19\x66ixed64.gte_lte_exclusive\x1a\xb8\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x7f\n\x02in\x18\x06 \x03(\x06\x42o\xc2Hl\nj\n\nfixed64.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12y\n\x06not_in\x18\x07 \x03(\x06\x42\x62\xc2H_\n]\n\x0e\x66ixed64.not_in\x1aKthis in rules.not_in ? \'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\"\x93\x15\n\rSFixed32Rules\x12\x87\x01\n\x05\x63onst\x18\x01 \x01(\x0f\x42q\xc2Hn\nl\n\x0esfixed32.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x8b\x01\n\x02lt\x18\x02 \x01(\x0f\x42y\xc2Hv\nt\n\x0bsfixed32.lt\x1a\x65!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\x9e\x01\n\x03lte\x18\x03 \x01(\x0f\x42\x89\x01\xc2H\x85\x01\n\x82\x01\n\x0csfixed32.lte\x1ar!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\x8c\x07\n\x02gt\x18\x04 \x01(\x0f\x42\xf9\x06\xc2H\xf5\x06\nw\n\x0bsfixed32.gt\x1ah!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xb0\x01\n\x0esfixed32.gt_lt\x1a\x9d\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xb8\x01\n\x18sfixed32.gt_lt_exclusive\x1a\x9b\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc0\x01\n\x0fsfixed32.gt_lte\x1a\xac\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xc8\x01\n\x19sfixed32.gt_lte_exclusive\x1a\xaa\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xd9\x07\n\x03gte\x18\x05 \x01(\x0f\x42\xc4\x07\xc2H\xc0\x07\n\x85\x01\n\x0csfixed32.gte\x1au!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xbf\x01\n\x0fsfixed32.gte_lt\x1a\xab\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xc7\x01\n\x19sfixed32.gte_lt_exclusive\x1a\xa9\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcf\x01\n\x10sfixed32.gte_lte\x1a\xba\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xd7\x01\n\x1asfixed32.gte_lte_exclusive\x1a\xb8\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x80\x01\n\x02in\x18\x06 \x03(\x0f\x42p\xc2Hm\nk\n\x0bsfixed32.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12z\n\x06not_in\x18\x07 \x03(\x0f\x42\x63\xc2H`\n^\n\x0fsfixed32.not_in\x1aKthis in rules.not_in ? \'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\"\x93\x15\n\rSFixed64Rules\x12\x87\x01\n\x05\x63onst\x18\x01 \x01(\x10\x42q\xc2Hn\nl\n\x0esfixed64.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\x8b\x01\n\x02lt\x18\x02 \x01(\x10\x42y\xc2Hv\nt\n\x0bsfixed64.lt\x1a\x65!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\x9e\x01\n\x03lte\x18\x03 \x01(\x10\x42\x89\x01\xc2H\x85\x01\n\x82\x01\n\x0csfixed64.lte\x1ar!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\x8c\x07\n\x02gt\x18\x04 \x01(\x10\x42\xf9\x06\xc2H\xf5\x06\nw\n\x0bsfixed64.gt\x1ah!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xb0\x01\n\x0esfixed64.gt_lt\x1a\x9d\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xb8\x01\n\x18sfixed64.gt_lt_exclusive\x1a\x9b\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc0\x01\n\x0fsfixed64.gt_lte\x1a\xac\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xc8\x01\n\x19sfixed64.gt_lte_exclusive\x1a\xaa\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xd9\x07\n\x03gte\x18\x05 \x01(\x10\x42\xc4\x07\xc2H\xc0\x07\n\x85\x01\n\x0csfixed64.gte\x1au!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xbf\x01\n\x0fsfixed64.gte_lt\x1a\xab\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xc7\x01\n\x19sfixed64.gte_lt_exclusive\x1a\xa9\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcf\x01\n\x10sfixed64.gte_lte\x1a\xba\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xd7\x01\n\x1asfixed64.gte_lte_exclusive\x1a\xb8\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x80\x01\n\x02in\x18\x06 \x03(\x10\x42p\xc2Hm\nk\n\x0bsfixed64.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12z\n\x06not_in\x18\x07 \x03(\x10\x42\x63\xc2H`\n^\n\x0fsfixed64.not_in\x1aKthis in rules.not_in ? \'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\"\xd1\x01\n\tBoolRules\x12\x83\x01\n\x05\x63onst\x18\x01 \x01(\x08\x42m\xc2Hj\nh\n\nbool.const\x1aZthis != getField(rules, \'const\') ? \'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\"\xcf?\n\x0bStringRules\x12\x87\x01\n\x05\x63onst\x18\x01 \x01(\tBq\xc2Hn\nl\n\x0cstring.const\x1a\\this != getField(rules, \'const\') ? \'must equal `%s`\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12v\n\x03len\x18\x13 \x01(\x04\x42\x64\xc2Ha\n_\n\nstring.len\x1aQuint(this.size()) != rules.len ? \'must be %s characters\'.format([rules.len]) : \'\'R\x03len\x12\x91\x01\n\x07min_len\x18\x02 \x01(\x04\x42x\xc2Hu\ns\n\x0estring.min_len\x1a\x61uint(this.size()) < rules.min_len ? \'must be at least %s characters\'.format([rules.min_len]) : \'\'R\x06minLen\x12\x90\x01\n\x07max_len\x18\x03 \x01(\x04\x42w\xc2Ht\nr\n\x0estring.max_len\x1a`uint(this.size()) > rules.max_len ? \'must be at most %s characters\'.format([rules.max_len]) : \'\'R\x06maxLen\x12\x95\x01\n\tlen_bytes\x18\x14 \x01(\x04\x42x\xc2Hu\ns\n\x10string.len_bytes\x1a_uint(bytes(this).size()) != rules.len_bytes ? \'must be %s bytes\'.format([rules.len_bytes]) : \'\'R\x08lenBytes\x12\x9e\x01\n\tmin_bytes\x18\x04 \x01(\x04\x42\x80\x01\xc2H}\n{\n\x10string.min_bytes\x1aguint(bytes(this).size()) < rules.min_bytes ? \'must be at least %s bytes\'.format([rules.min_bytes]) : \'\'R\x08minBytes\x12\x9c\x01\n\tmax_bytes\x18\x05 \x01(\x04\x42\x7f\xc2H|\nz\n\x10string.max_bytes\x1a\x66uint(bytes(this).size()) > rules.max_bytes ? \'must be at most %s bytes\'.format([rules.max_bytes]) : \'\'R\x08maxBytes\x12\x90\x01\n\x07pattern\x18\x06 \x01(\tBv\xc2Hs\nq\n\x0estring.pattern\x1a_!this.matches(rules.pattern) ? \'does not match regex pattern `%s`\'.format([rules.pattern]) : \'\'R\x07pattern\x12\x86\x01\n\x06prefix\x18\x07 \x01(\tBn\xc2Hk\ni\n\rstring.prefix\x1aX!this.startsWith(rules.prefix) ? \'does not have prefix `%s`\'.format([rules.prefix]) : \'\'R\x06prefix\x12\x84\x01\n\x06suffix\x18\x08 \x01(\tBl\xc2Hi\ng\n\rstring.suffix\x1aV!this.endsWith(rules.suffix) ? \'does not have suffix `%s`\'.format([rules.suffix]) : \'\'R\x06suffix\x12\x94\x01\n\x08\x63ontains\x18\t \x01(\tBx\xc2Hu\ns\n\x0fstring.contains\x1a`!this.contains(rules.contains) ? \'does not contain substring `%s`\'.format([rules.contains]) : \'\'R\x08\x63ontains\x12\x9e\x01\n\x0cnot_contains\x18\x17 \x01(\tB{\xc2Hx\nv\n\x13string.not_contains\x1a_this.contains(rules.not_contains) ? \'contains substring `%s`\'.format([rules.not_contains]) : \'\'R\x0bnotContains\x12~\n\x02in\x18\n \x03(\tBn\xc2Hk\ni\n\tstring.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12x\n\x06not_in\x18\x0b \x03(\tBa\xc2H^\n\\\n\rstring.not_in\x1aKthis in rules.not_in ? \'must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\xe0\x01\n\x05\x65mail\x18\x0c \x01(\x08\x42\xc7\x01\xc2H\xc3\x01\n[\n\x0cstring.email\x12\x1dmust 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\xeb\x01\n\x08hostname\x18\r \x01(\x08\x42\xcc\x01\xc2H\xc8\x01\n_\n\x0fstring.hostname\x12\x18must 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\xc5\x01\n\x02ip\x18\x0e \x01(\x08\x42\xb2\x01\xc2H\xae\x01\nO\n\tstring.ip\x12\x1amust 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\xd6\x01\n\x04ipv4\x18\x0f \x01(\x08\x42\xbf\x01\xc2H\xbb\x01\nV\n\x0bstring.ipv4\x12\x1cmust 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\xd6\x01\n\x04ipv6\x18\x10 \x01(\x08\x42\xbf\x01\xc2H\xbb\x01\nV\n\x0bstring.ipv6\x12\x1cmust 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\xbe\x01\n\x03uri\x18\x11 \x01(\x08\x42\xa9\x01\xc2H\xa5\x01\nK\n\nstring.uri\x12\x13must 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\x12r\n\x07uri_ref\x18\x12 \x01(\x08\x42W\xc2HT\nR\n\x0estring.uri_ref\x12\x1dmust be a valid URI Reference\x1a!!rules.uri_ref || this.isUriRef()H\x00R\x06uriRef\x12\x92\x02\n\x07\x61\x64\x64ress\x18\x15 \x01(\x08\x42\xf5\x01\xc2H\xf1\x01\n{\n\x0estring.address\x12\'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\xdc\x02\n\x13ipv6_with_prefixlen\x18\x1c \x01(\x08\x42\xa9\x02\xc2H\xa5\x02\n\x8d\x01\n\x1astring.ipv6_with_prefixlen\x12/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\xf6\x01\n\tip_prefix\x18\x1d \x01(\x08\x42\xd6\x01\xc2H\xd2\x01\nf\n\x10string.ip_prefix\x12\x19must 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\x89\x02\n\x0bipv4_prefix\x18\x1e \x01(\x08\x42\xe5\x01\xc2H\xe1\x01\no\n\x12string.ipv4_prefix\x12\x1bmust 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\xf4\x01\n\x04ulid\x18# \x01(\x08\x42\xdd\x01\xc2H\xd9\x01\n|\n\x0bstring.ulid\x12\x14must be a valid ULID\x1aW!rules.ulid || this == \'\' || this.matches(\'^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$\')\nY\n\x11string.ulid_empty\x12)value is empty, which is not a valid ULID\x1a\x19!rules.ulid || this != \'\'H\x00R\x04ulid\x12\xe1\x02\n\x0cprotobuf_fqn\x18% \x01(\x08\x42\xbb\x02\xc2H\xb7\x02\n\xaf\x01\n\x13string.protobuf_fqn\x12-must be a valid fully-qualified Protobuf name\x1ai!rules.protobuf_fqn || this == \'\' || this.matches(\'^[A-Za-z_][A-Za-z_0-9]*(\\\\.[A-Za-z_][A-Za-z_0-9]*)*$\')\n\x82\x01\n\x19string.protobuf_fqn_empty\x12\x42value is empty, which is not a valid fully-qualified Protobuf name\x1a!!rules.protobuf_fqn || this != \'\'H\x00R\x0bprotobufFqn\x12\xa1\x03\n\x10protobuf_dot_fqn\x18& \x01(\x08\x42\xf4\x02\xc2H\xf0\x02\n\xcd\x01\n\x17string.protobuf_dot_fqn\x12@must be a valid fully-qualified Protobuf name with a leading dot\x1ap!rules.protobuf_dot_fqn || this == \'\' || this.matches(\'^\\\\.[A-Za-z_][A-Za-z_0-9]*(\\\\.[A-Za-z_][A-Za-z_0-9]*)*$\')\n\x9d\x01\n\x1dstring.protobuf_dot_fqn_empty\x12Uvalue is empty, which is not a valid fully-qualified Protobuf name with a leading dot\x1a%!rules.protobuf_dot_fqn || this != \'\'H\x00R\x0eprotobufDotFqn\x12\xac\x05\n\x10well_known_regex\x18\x18 \x01(\x0e\x32\x18.buf.validate.KnownRegexB\xe5\x04\xc2H\xe1\x04\n\xea\x01\n#string.well_known_regex.header_name\x12 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\xe1\x01\n$string.well_known_regex.header_value\x12!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\"\xca\x12\n\nBytesRules\x12\x81\x01\n\x05\x63onst\x18\x01 \x01(\x0c\x42k\xc2Hh\nf\n\x0b\x62ytes.const\x1aWthis != getField(rules, \'const\') ? \'must be %x\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12p\n\x03len\x18\r \x01(\x04\x42^\xc2H[\nY\n\tbytes.len\x1aLuint(this.size()) != rules.len ? \'must be %s bytes\'.format([rules.len]) : \'\'R\x03len\x12\x8b\x01\n\x07min_len\x18\x02 \x01(\x04\x42r\xc2Ho\nm\n\rbytes.min_len\x1a\\uint(this.size()) < rules.min_len ? \'must be at least %s bytes\'.format([rules.min_len]) : \'\'R\x06minLen\x12\x8a\x01\n\x07max_len\x18\x03 \x01(\x04\x42q\xc2Hn\nl\n\rbytes.max_len\x1a[uint(this.size()) > rules.max_len ? \'must be at most %s bytes\'.format([rules.max_len]) : \'\'R\x06maxLen\x12\x93\x01\n\x07pattern\x18\x04 \x01(\tBy\xc2Hv\nt\n\rbytes.pattern\x1a\x63!string(this).matches(rules.pattern) ? \'must match regex pattern `%s`\'.format([rules.pattern]) : \'\'R\x07pattern\x12\x83\x01\n\x06prefix\x18\x05 \x01(\x0c\x42k\xc2Hh\nf\n\x0c\x62ytes.prefix\x1aV!this.startsWith(rules.prefix) ? \'does not have prefix %x\'.format([rules.prefix]) : \'\'R\x06prefix\x12\x81\x01\n\x06suffix\x18\x06 \x01(\x0c\x42i\xc2Hf\nd\n\x0c\x62ytes.suffix\x1aT!this.endsWith(rules.suffix) ? \'does not have suffix %x\'.format([rules.suffix]) : \'\'R\x06suffix\x12\x87\x01\n\x08\x63ontains\x18\x07 \x01(\x0c\x42k\xc2Hh\nf\n\x0e\x62ytes.contains\x1aT!this.contains(rules.contains) ? \'does not contain %x\'.format([rules.contains]) : \'\'R\x08\x63ontains\x12\xa5\x01\n\x02in\x18\x08 \x03(\x0c\x42\x94\x01\xc2H\x90\x01\n\x8d\x01\n\x08\x62ytes.in\x1a\x80\x01getField(rules, \'in\').size() > 0 && !(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12w\n\x06not_in\x18\t \x03(\x0c\x42`\xc2H]\n[\n\x0c\x62ytes.not_in\x1aKthis in rules.not_in ? \'must not be in list %s\'.format([rules.not_in]) : \'\'R\x05notIn\x12\xe9\x01\n\x02ip\x18\n \x01(\x08\x42\xd6\x01\xc2H\xd2\x01\nn\n\x08\x62ytes.ip\x12\x1amust 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\xe4\x01\n\x04ipv4\x18\x0b \x01(\x08\x42\xcd\x01\xc2H\xc9\x01\n_\n\nbytes.ipv4\x12\x1cmust 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\xe5\x01\n\x04ipv6\x18\x0c \x01(\x08\x42\xce\x01\xc2H\xca\x01\n`\n\nbytes.ipv6\x12\x1cmust 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\xd5\x01\n\x04uuid\x18\x0f \x01(\x08\x42\xbe\x01\xc2H\xba\x01\nX\n\nbytes.uuid\x12\x14must be a valid UUID\x1a\x34!rules.uuid || this.size() == 0 || this.size() == 16\n^\n\x10\x62ytes.uuid_empty\x12)value is empty, which is not a valid UUID\x1a\x1f!rules.uuid || this.size() != 0H\x00R\x04uuid\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\"\xea\x03\n\tEnumRules\x12\x83\x01\n\x05\x63onst\x18\x01 \x01(\x05\x42m\xc2Hj\nh\n\nenum.const\x1aZthis != getField(rules, \'const\') ? \'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|\n\x02in\x18\x03 \x03(\x05\x42l\xc2Hi\ng\n\x07\x65num.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12v\n\x06not_in\x18\x04 \x03(\x05\x42_\xc2H\\\nZ\n\x0b\x65num.not_in\x1aKthis in rules.not_in ? \'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\"\x90\x04\n\rRepeatedRules\x12\xa0\x01\n\tmin_items\x18\x01 \x01(\x04\x42\x82\x01\xc2H\x7f\n}\n\x12repeated.min_items\x1aguint(this.size()) < rules.min_items ? \'must contain at least %d item(s)\'.format([rules.min_items]) : \'\'R\x08minItems\x12\xa6\x01\n\tmax_items\x18\x02 \x01(\x04\x42\x88\x01\xc2H\x84\x01\n\x81\x01\n\x12repeated.max_items\x1akuint(this.size()) > rules.max_items ? \'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\"\xec\x16\n\rDurationRules\x12\xa2\x01\n\x05\x63onst\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationBq\xc2Hn\nl\n\x0e\x64uration.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\xa6\x01\n\x02lt\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationBy\xc2Hv\nt\n\x0b\x64uration.lt\x1a\x65!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xb9\x01\n\x03lte\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationB\x89\x01\xc2H\x85\x01\n\x82\x01\n\x0c\x64uration.lte\x1ar!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12\xa7\x07\n\x02gt\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationB\xf9\x06\xc2H\xf5\x06\nw\n\x0b\x64uration.gt\x1ah!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xb0\x01\n\x0e\x64uration.gt_lt\x1a\x9d\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xb8\x01\n\x18\x64uration.gt_lt_exclusive\x1a\x9b\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc0\x01\n\x0f\x64uration.gt_lte\x1a\xac\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xc8\x01\n\x19\x64uration.gt_lte_exclusive\x1a\xaa\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xf4\x07\n\x03gte\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationB\xc4\x07\xc2H\xc0\x07\n\x85\x01\n\x0c\x64uration.gte\x1au!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xbf\x01\n\x0f\x64uration.gte_lt\x1a\xab\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xc7\x01\n\x19\x64uration.gte_lt_exclusive\x1a\xa9\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xcf\x01\n\x10\x64uration.gte_lte\x1a\xba\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xd7\x01\n\x1a\x64uration.gte_lte_exclusive\x1a\xb8\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12\x9b\x01\n\x02in\x18\x07 \x03(\x0b\x32\x19.google.protobuf.DurationBp\xc2Hm\nk\n\x0b\x64uration.in\x1a\\!(this in getField(rules, \'in\')) ? \'must be in list %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12\x95\x01\n\x06not_in\x18\x08 \x03(\x0b\x32\x19.google.protobuf.DurationBc\xc2H`\n^\n\x0f\x64uration.not_in\x1aKthis in rules.not_in ? \'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\"\x86\x06\n\x0e\x46ieldMaskRules\x12\xc0\x01\n\x05\x63onst\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x8d\x01\xc2H\x89\x01\n\x86\x01\n\x10\x66ield_mask.const\x1arthis.paths != getField(rules, \'const\').paths ? \'must equal paths %s\'.format([getField(rules, \'const\').paths]) : \'\'R\x05\x63onst\x12\xd7\x01\n\x02in\x18\x02 \x03(\tB\xc6\x01\xc2H\xc2\x01\n\xbf\x01\n\rfield_mask.in\x1a\xad\x01!this.paths.all(p, p in getField(rules, \'in\') || getField(rules, \'in\').exists(f, p.startsWith(f+\'.\'))) ? \'must only contain paths in %s\'.format([getField(rules, \'in\')]) : \'\'R\x02in\x12\xf4\x01\n\x06not_in\x18\x03 \x03(\tB\xdc\x01\xc2H\xd8\x01\n\xd5\x01\n\x11\x66ield_mask.not_in\x1a\xbf\x01!this.paths.all(p, !(p in getField(rules, \'not_in\') || getField(rules, \'not_in\').exists(f, p.startsWith(f+\'.\')))) ? \'must not contain any paths in %s\'.format([getField(rules, \'not_in\')]) : \'\'R\x05notIn\x12U\n\x07\x65xample\x18\x04 \x03(\x0b\x32\x1a.google.protobuf.FieldMaskB\x1f\xc2H\x1c\n\x1a\n\x12\x66ield_mask.example\x1a\x04trueR\x07\x65xample*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"\xe8\x17\n\x0eTimestampRules\x12\xa4\x01\n\x05\x63onst\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampBr\xc2Ho\nm\n\x0ftimestamp.const\x1aZthis != getField(rules, \'const\') ? \'must equal %s\'.format([getField(rules, \'const\')]) : \'\'R\x05\x63onst\x12\xa8\x01\n\x02lt\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampBz\xc2Hw\nu\n\x0ctimestamp.lt\x1a\x65!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'H\x00R\x02lt\x12\xbb\x01\n\x03lte\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x8a\x01\xc2H\x86\x01\n\x83\x01\n\rtimestamp.lte\x1ar!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'H\x00R\x03lte\x12m\n\x06lt_now\x18\x07 \x01(\x08\x42T\xc2HQ\nO\n\x10timestamp.lt_now\x1a;(rules.lt_now && this > now) ? \'must be less than now\' : \'\'H\x00R\x05ltNow\x12\xad\x07\n\x02gt\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xfe\x06\xc2H\xfa\x06\nx\n\x0ctimestamp.gt\x1ah!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\xb1\x01\n\x0ftimestamp.gt_lt\x1a\x9d\x01has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xb9\x01\n\x19timestamp.gt_lt_exclusive\x1a\x9b\x01has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\xc1\x01\n\x10timestamp.gt_lte\x1a\xac\x01has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\xc9\x01\n\x1atimestamp.gt_lte_exclusive\x1a\xaa\x01has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'H\x01R\x02gt\x12\xfa\x07\n\x03gte\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xc9\x07\xc2H\xc5\x07\n\x86\x01\n\rtimestamp.gte\x1au!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\xc0\x01\n\x10timestamp.gte_lt\x1a\xab\x01has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xc8\x01\n\x1atimestamp.gte_lt_exclusive\x1a\xa9\x01has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\xd0\x01\n\x11timestamp.gte_lte\x1a\xba\x01has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\xd8\x01\n\x1btimestamp.gte_lte_exclusive\x1a\xb8\x01has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'H\x01R\x03gte\x12p\n\x06gt_now\x18\x08 \x01(\x08\x42W\xc2HT\nR\n\x10timestamp.gt_now\x1a>(rules.gt_now && this < now) ? \'must be greater than now\' : \'\'H\x01R\x05gtNow\x12\xb9\x01\n\x06within\x18\t \x01(\x0b\x32\x19.google.protobuf.DurationB\x85\x01\xc2H\x81\x01\n\x7f\n\x10timestamp.within\x1akthis < now-rules.within || this > now+rules.within ? \'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*\xa1\x01\n\x06Ignore\x12\x16\n\x12IGNORE_UNSPECIFIED\x10\x00\x12\x18\n\x14IGNORE_IF_ZERO_VALUE\x10\x01\x12\x11\n\rIGNORE_ALWAYS\x10\x03\"\x04\x08\x02\x10\x02*\x0cIGNORE_EMPTY*\x0eIGNORE_DEFAULT*\x17IGNORE_IF_DEFAULT_VALUE*\x15IGNORE_IF_UNPOPULATED*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) @@ -41,315 +41,319 @@ _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'\302Hq\no\n\013float.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_FLOATRULES'].fields_by_name['const']._serialized_options = b'\302Hk\ni\n\013float.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302H\206\001\n\203\001\n\010float.lt\032w!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_FLOATRULES'].fields_by_name['lte']._loaded_options = None - _globals['_FLOATRULES'].fields_by_name['lte']._serialized_options = b'\302H\233\001\n\230\001\n\tfloat.lte\032\212\001!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_FLOATRULES'].fields_by_name['lte']._serialized_options = b'\302H\225\001\n\222\001\n\tfloat.lte\032\204\001!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_FLOATRULES'].fields_by_name['gt']._loaded_options = None - _globals['_FLOATRULES'].fields_by_name['gt']._serialized_options = b'\302H\334\007\n\215\001\n\010float.gt\032\200\001!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\303\001\n\013float.gt_lt\032\263\001has(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\315\001\n\025float.gt_lt_exclusive\032\263\001has(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\323\001\n\014float.gt_lte\032\302\001has(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\335\001\n\026float.gt_lte_exclusive\032\302\001has(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]) : \'\'' + _globals['_FLOATRULES'].fields_by_name['gt']._serialized_options = b'\302H\275\007\n\206\001\n\010float.gt\032z!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\275\001\n\013float.gt_lt\032\255\001has(rules.lt) && rules.lt >= rules.gt && (this.isNan() || this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\307\001\n\025float.gt_lt_exclusive\032\255\001has(rules.lt) && rules.lt < rules.gt && (this.isNan() || (rules.lt <= this && this <= rules.gt))? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\315\001\n\014float.gt_lte\032\274\001has(rules.lte) && rules.lte >= rules.gt && (this.isNan() || this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\327\001\n\026float.gt_lte_exclusive\032\274\001has(rules.lte) && rules.lte < rules.gt && (this.isNan() || (rules.lte < this && this <= rules.gt))? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _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['gte']._serialized_options = b'\302H\210\010\n\225\001\n\tfloat.gte\032\207\001!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\314\001\n\014float.gte_lt\032\273\001has(rules.lt) && rules.lt >= rules.gte && (this.isNan() || this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\326\001\n\026float.gte_lt_exclusive\032\273\001has(rules.lt) && rules.lt < rules.gte && (this.isNan() || (rules.lt <= this && this < rules.gte))? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\334\001\n\rfloat.gte_lte\032\312\001has(rules.lte) && rules.lte >= rules.gte && (this.isNan() || this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\346\001\n\027float.gte_lte_exclusive\032\312\001has(rules.lte) && rules.lte < rules.gte && (this.isNan() || (rules.lte < this && this < rules.gte))? \'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'\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['in']._serialized_options = b'\302Hj\nh\n\010float.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H]\n[\n\014float.not_in\032Kthis in rules.not_in ? \'must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_FLOATRULES'].fields_by_name['finite']._loaded_options = None - _globals['_FLOATRULES'].fields_by_name['finite']._serialized_options = b'\302Hb\n`\n\014float.finite\032Prules.finite ? (this.isNan() || this.isInf() ? \'value must be finite\' : \'\') : \'\'' + _globals['_FLOATRULES'].fields_by_name['finite']._serialized_options = b'\302H\\\nZ\n\014float.finite\032Jrules.finite ? (this.isNan() || this.isInf() ? \'must be finite\' : \'\') : \'\'' _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'\302Hr\np\n\014double.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_DOUBLERULES'].fields_by_name['const']._serialized_options = b'\302Hl\nj\n\014double.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302H\207\001\n\204\001\n\tdouble.lt\032w!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_DOUBLERULES'].fields_by_name['lte']._loaded_options = None - _globals['_DOUBLERULES'].fields_by_name['lte']._serialized_options = b'\302H\234\001\n\231\001\n\ndouble.lte\032\212\001!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_DOUBLERULES'].fields_by_name['lte']._serialized_options = b'\302H\226\001\n\223\001\n\ndouble.lte\032\204\001!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_DOUBLERULES'].fields_by_name['gt']._loaded_options = None - _globals['_DOUBLERULES'].fields_by_name['gt']._serialized_options = b'\302H\341\007\n\216\001\n\tdouble.gt\032\200\001!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\304\001\n\014double.gt_lt\032\263\001has(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\316\001\n\026double.gt_lt_exclusive\032\263\001has(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\324\001\n\rdouble.gt_lte\032\302\001has(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\336\001\n\027double.gt_lte_exclusive\032\302\001has(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]) : \'\'' + _globals['_DOUBLERULES'].fields_by_name['gt']._serialized_options = b'\302H\302\007\n\207\001\n\tdouble.gt\032z!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\276\001\n\014double.gt_lt\032\255\001has(rules.lt) && rules.lt >= rules.gt && (this.isNan() || this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\310\001\n\026double.gt_lt_exclusive\032\255\001has(rules.lt) && rules.lt < rules.gt && (this.isNan() || (rules.lt <= this && this <= rules.gt))? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\316\001\n\rdouble.gt_lte\032\274\001has(rules.lte) && rules.lte >= rules.gt && (this.isNan() || this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\330\001\n\027double.gt_lte_exclusive\032\274\001has(rules.lte) && rules.lte < rules.gt && (this.isNan() || (rules.lte < this && this <= rules.gt))? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _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['gte']._serialized_options = b'\302H\215\010\n\226\001\n\ndouble.gte\032\207\001!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\315\001\n\rdouble.gte_lt\032\273\001has(rules.lt) && rules.lt >= rules.gte && (this.isNan() || this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\327\001\n\027double.gte_lt_exclusive\032\273\001has(rules.lt) && rules.lt < rules.gte && (this.isNan() || (rules.lt <= this && this < rules.gte))? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\335\001\n\016double.gte_lte\032\312\001has(rules.lte) && rules.lte >= rules.gte && (this.isNan() || this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\347\001\n\030double.gte_lte_exclusive\032\312\001has(rules.lte) && rules.lte < rules.gte && (this.isNan() || (rules.lte < this && this < rules.gte))? \'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'\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['in']._serialized_options = b'\302Hk\ni\n\tdouble.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H^\n\\\n\rdouble.not_in\032Kthis in rules.not_in ? \'must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_DOUBLERULES'].fields_by_name['finite']._loaded_options = None - _globals['_DOUBLERULES'].fields_by_name['finite']._serialized_options = b'\302Hc\na\n\rdouble.finite\032Prules.finite ? (this.isNan() || this.isInf() ? \'value must be finite\' : \'\') : \'\'' + _globals['_DOUBLERULES'].fields_by_name['finite']._serialized_options = b'\302H]\n[\n\rdouble.finite\032Jrules.finite ? (this.isNan() || this.isInf() ? \'must be finite\' : \'\') : \'\'' _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'\302Hq\no\n\013int32.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_INT32RULES'].fields_by_name['const']._serialized_options = b'\302Hk\ni\n\013int32.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302Hs\nq\n\010int32.lt\032e!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_INT32RULES'].fields_by_name['lte']._loaded_options = None - _globals['_INT32RULES'].fields_by_name['lte']._serialized_options = b'\302H\210\001\n\205\001\n\tint32.lte\032x!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_INT32RULES'].fields_by_name['lte']._serialized_options = b'\302H\201\001\n\177\n\tint32.lte\032r!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_INT32RULES'].fields_by_name['gt']._loaded_options = None - _globals['_INT32RULES'].fields_by_name['gt']._serialized_options = b'\302H\204\007\nz\n\010int32.gt\032n!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\263\001\n\013int32.gt_lt\032\243\001has(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\273\001\n\025int32.gt_lt_exclusive\032\241\001has(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\303\001\n\014int32.gt_lte\032\262\001has(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\313\001\n\026int32.gt_lte_exclusive\032\260\001has(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]) : \'\'' + _globals['_INT32RULES'].fields_by_name['gt']._serialized_options = b'\302H\346\006\nt\n\010int32.gt\032h!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\255\001\n\013int32.gt_lt\032\235\001has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\265\001\n\025int32.gt_lt_exclusive\032\233\001has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\275\001\n\014int32.gt_lte\032\254\001has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\305\001\n\026int32.gt_lte_exclusive\032\252\001has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _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['gte']._serialized_options = b'\302H\261\007\n\202\001\n\tint32.gte\032u!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\274\001\n\014int32.gte_lt\032\253\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\304\001\n\026int32.gte_lt_exclusive\032\251\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\314\001\n\rint32.gte_lte\032\272\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\324\001\n\027int32.gte_lte_exclusive\032\270\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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'\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['in']._serialized_options = b'\302Hj\nh\n\010int32.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H]\n[\n\014int32.not_in\032Kthis in rules.not_in ? \'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'\302Hq\no\n\013int64.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_INT64RULES'].fields_by_name['const']._serialized_options = b'\302Hk\ni\n\013int64.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302Hs\nq\n\010int64.lt\032e!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_INT64RULES'].fields_by_name['lte']._loaded_options = None - _globals['_INT64RULES'].fields_by_name['lte']._serialized_options = b'\302H\210\001\n\205\001\n\tint64.lte\032x!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_INT64RULES'].fields_by_name['lte']._serialized_options = b'\302H\201\001\n\177\n\tint64.lte\032r!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_INT64RULES'].fields_by_name['gt']._loaded_options = None - _globals['_INT64RULES'].fields_by_name['gt']._serialized_options = b'\302H\204\007\nz\n\010int64.gt\032n!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\263\001\n\013int64.gt_lt\032\243\001has(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\273\001\n\025int64.gt_lt_exclusive\032\241\001has(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\303\001\n\014int64.gt_lte\032\262\001has(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\313\001\n\026int64.gt_lte_exclusive\032\260\001has(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]) : \'\'' + _globals['_INT64RULES'].fields_by_name['gt']._serialized_options = b'\302H\346\006\nt\n\010int64.gt\032h!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\255\001\n\013int64.gt_lt\032\235\001has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\265\001\n\025int64.gt_lt_exclusive\032\233\001has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\275\001\n\014int64.gt_lte\032\254\001has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\305\001\n\026int64.gt_lte_exclusive\032\252\001has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _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['gte']._serialized_options = b'\302H\261\007\n\202\001\n\tint64.gte\032u!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\274\001\n\014int64.gte_lt\032\253\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\304\001\n\026int64.gte_lt_exclusive\032\251\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\314\001\n\rint64.gte_lte\032\272\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\324\001\n\027int64.gte_lte_exclusive\032\270\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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'\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['in']._serialized_options = b'\302Hj\nh\n\010int64.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H]\n[\n\014int64.not_in\032Kthis in rules.not_in ? \'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'\302Hr\np\n\014uint32.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_UINT32RULES'].fields_by_name['const']._serialized_options = b'\302Hl\nj\n\014uint32.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302Ht\nr\n\tuint32.lt\032e!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_UINT32RULES'].fields_by_name['lte']._loaded_options = None - _globals['_UINT32RULES'].fields_by_name['lte']._serialized_options = b'\302H\211\001\n\206\001\n\nuint32.lte\032x!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_UINT32RULES'].fields_by_name['lte']._serialized_options = b'\302H\203\001\n\200\001\n\nuint32.lte\032r!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_UINT32RULES'].fields_by_name['gt']._loaded_options = None - _globals['_UINT32RULES'].fields_by_name['gt']._serialized_options = b'\302H\211\007\n{\n\tuint32.gt\032n!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\264\001\n\014uint32.gt_lt\032\243\001has(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\274\001\n\026uint32.gt_lt_exclusive\032\241\001has(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\304\001\n\ruint32.gt_lte\032\262\001has(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\314\001\n\027uint32.gt_lte_exclusive\032\260\001has(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]) : \'\'' + _globals['_UINT32RULES'].fields_by_name['gt']._serialized_options = b'\302H\353\006\nu\n\tuint32.gt\032h!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\256\001\n\014uint32.gt_lt\032\235\001has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\266\001\n\026uint32.gt_lt_exclusive\032\233\001has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\276\001\n\ruint32.gt_lte\032\254\001has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\306\001\n\027uint32.gt_lte_exclusive\032\252\001has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _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['gte']._serialized_options = b'\302H\266\007\n\203\001\n\nuint32.gte\032u!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\275\001\n\ruint32.gte_lt\032\253\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\305\001\n\027uint32.gte_lt_exclusive\032\251\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\315\001\n\016uint32.gte_lte\032\272\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\325\001\n\030uint32.gte_lte_exclusive\032\270\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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'\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['in']._serialized_options = b'\302Hk\ni\n\tuint32.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H^\n\\\n\ruint32.not_in\032Kthis in rules.not_in ? \'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'\302Hr\np\n\014uint64.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_UINT64RULES'].fields_by_name['const']._serialized_options = b'\302Hl\nj\n\014uint64.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302Ht\nr\n\tuint64.lt\032e!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_UINT64RULES'].fields_by_name['lte']._loaded_options = None - _globals['_UINT64RULES'].fields_by_name['lte']._serialized_options = b'\302H\211\001\n\206\001\n\nuint64.lte\032x!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_UINT64RULES'].fields_by_name['lte']._serialized_options = b'\302H\203\001\n\200\001\n\nuint64.lte\032r!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_UINT64RULES'].fields_by_name['gt']._loaded_options = None - _globals['_UINT64RULES'].fields_by_name['gt']._serialized_options = b'\302H\211\007\n{\n\tuint64.gt\032n!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\264\001\n\014uint64.gt_lt\032\243\001has(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\274\001\n\026uint64.gt_lt_exclusive\032\241\001has(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\304\001\n\ruint64.gt_lte\032\262\001has(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\314\001\n\027uint64.gt_lte_exclusive\032\260\001has(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]) : \'\'' + _globals['_UINT64RULES'].fields_by_name['gt']._serialized_options = b'\302H\353\006\nu\n\tuint64.gt\032h!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\256\001\n\014uint64.gt_lt\032\235\001has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\266\001\n\026uint64.gt_lt_exclusive\032\233\001has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\276\001\n\ruint64.gt_lte\032\254\001has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\306\001\n\027uint64.gt_lte_exclusive\032\252\001has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _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['gte']._serialized_options = b'\302H\266\007\n\203\001\n\nuint64.gte\032u!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\275\001\n\ruint64.gte_lt\032\253\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\305\001\n\027uint64.gte_lt_exclusive\032\251\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\315\001\n\016uint64.gte_lte\032\272\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\325\001\n\030uint64.gte_lte_exclusive\032\270\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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'\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['in']._serialized_options = b'\302Hk\ni\n\tuint64.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H^\n\\\n\ruint64.not_in\032Kthis in rules.not_in ? \'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'\302Hr\np\n\014sint32.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_SINT32RULES'].fields_by_name['const']._serialized_options = b'\302Hl\nj\n\014sint32.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302Ht\nr\n\tsint32.lt\032e!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_SINT32RULES'].fields_by_name['lte']._loaded_options = None - _globals['_SINT32RULES'].fields_by_name['lte']._serialized_options = b'\302H\211\001\n\206\001\n\nsint32.lte\032x!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_SINT32RULES'].fields_by_name['lte']._serialized_options = b'\302H\203\001\n\200\001\n\nsint32.lte\032r!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_SINT32RULES'].fields_by_name['gt']._loaded_options = None - _globals['_SINT32RULES'].fields_by_name['gt']._serialized_options = b'\302H\211\007\n{\n\tsint32.gt\032n!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\264\001\n\014sint32.gt_lt\032\243\001has(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\274\001\n\026sint32.gt_lt_exclusive\032\241\001has(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\304\001\n\rsint32.gt_lte\032\262\001has(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\314\001\n\027sint32.gt_lte_exclusive\032\260\001has(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]) : \'\'' + _globals['_SINT32RULES'].fields_by_name['gt']._serialized_options = b'\302H\353\006\nu\n\tsint32.gt\032h!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\256\001\n\014sint32.gt_lt\032\235\001has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\266\001\n\026sint32.gt_lt_exclusive\032\233\001has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\276\001\n\rsint32.gt_lte\032\254\001has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\306\001\n\027sint32.gt_lte_exclusive\032\252\001has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _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['gte']._serialized_options = b'\302H\266\007\n\203\001\n\nsint32.gte\032u!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\275\001\n\rsint32.gte_lt\032\253\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\305\001\n\027sint32.gte_lt_exclusive\032\251\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\315\001\n\016sint32.gte_lte\032\272\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\325\001\n\030sint32.gte_lte_exclusive\032\270\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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'\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['in']._serialized_options = b'\302Hk\ni\n\tsint32.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H^\n\\\n\rsint32.not_in\032Kthis in rules.not_in ? \'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'\302Hr\np\n\014sint64.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_SINT64RULES'].fields_by_name['const']._serialized_options = b'\302Hl\nj\n\014sint64.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302Ht\nr\n\tsint64.lt\032e!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_SINT64RULES'].fields_by_name['lte']._loaded_options = None - _globals['_SINT64RULES'].fields_by_name['lte']._serialized_options = b'\302H\211\001\n\206\001\n\nsint64.lte\032x!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_SINT64RULES'].fields_by_name['lte']._serialized_options = b'\302H\203\001\n\200\001\n\nsint64.lte\032r!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_SINT64RULES'].fields_by_name['gt']._loaded_options = None - _globals['_SINT64RULES'].fields_by_name['gt']._serialized_options = b'\302H\211\007\n{\n\tsint64.gt\032n!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\264\001\n\014sint64.gt_lt\032\243\001has(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\274\001\n\026sint64.gt_lt_exclusive\032\241\001has(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\304\001\n\rsint64.gt_lte\032\262\001has(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\314\001\n\027sint64.gt_lte_exclusive\032\260\001has(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]) : \'\'' + _globals['_SINT64RULES'].fields_by_name['gt']._serialized_options = b'\302H\353\006\nu\n\tsint64.gt\032h!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\256\001\n\014sint64.gt_lt\032\235\001has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\266\001\n\026sint64.gt_lt_exclusive\032\233\001has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\276\001\n\rsint64.gt_lte\032\254\001has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\306\001\n\027sint64.gt_lte_exclusive\032\252\001has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _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['gte']._serialized_options = b'\302H\266\007\n\203\001\n\nsint64.gte\032u!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\275\001\n\rsint64.gte_lt\032\253\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\305\001\n\027sint64.gte_lt_exclusive\032\251\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\315\001\n\016sint64.gte_lte\032\272\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\325\001\n\030sint64.gte_lte_exclusive\032\270\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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'\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['in']._serialized_options = b'\302Hk\ni\n\tsint64.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H^\n\\\n\rsint64.not_in\032Kthis in rules.not_in ? \'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'\302Hs\nq\n\rfixed32.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_FIXED32RULES'].fields_by_name['const']._serialized_options = b'\302Hm\nk\n\rfixed32.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302Hu\ns\n\nfixed32.lt\032e!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_FIXED32RULES'].fields_by_name['lte']._loaded_options = None - _globals['_FIXED32RULES'].fields_by_name['lte']._serialized_options = b'\302H\212\001\n\207\001\n\013fixed32.lte\032x!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_FIXED32RULES'].fields_by_name['lte']._serialized_options = b'\302H\204\001\n\201\001\n\013fixed32.lte\032r!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_FIXED32RULES'].fields_by_name['gt']._loaded_options = None - _globals['_FIXED32RULES'].fields_by_name['gt']._serialized_options = b'\302H\216\007\n|\n\nfixed32.gt\032n!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\265\001\n\rfixed32.gt_lt\032\243\001has(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\275\001\n\027fixed32.gt_lt_exclusive\032\241\001has(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\305\001\n\016fixed32.gt_lte\032\262\001has(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\315\001\n\030fixed32.gt_lte_exclusive\032\260\001has(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]) : \'\'' + _globals['_FIXED32RULES'].fields_by_name['gt']._serialized_options = b'\302H\360\006\nv\n\nfixed32.gt\032h!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\257\001\n\rfixed32.gt_lt\032\235\001has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\267\001\n\027fixed32.gt_lt_exclusive\032\233\001has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\277\001\n\016fixed32.gt_lte\032\254\001has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\307\001\n\030fixed32.gt_lte_exclusive\032\252\001has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _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['gte']._serialized_options = b'\302H\273\007\n\204\001\n\013fixed32.gte\032u!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\276\001\n\016fixed32.gte_lt\032\253\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\306\001\n\030fixed32.gte_lt_exclusive\032\251\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\316\001\n\017fixed32.gte_lte\032\272\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\326\001\n\031fixed32.gte_lte_exclusive\032\270\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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'\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['in']._serialized_options = b'\302Hl\nj\n\nfixed32.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H_\n]\n\016fixed32.not_in\032Kthis in rules.not_in ? \'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'\302Hs\nq\n\rfixed64.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_FIXED64RULES'].fields_by_name['const']._serialized_options = b'\302Hm\nk\n\rfixed64.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302Hu\ns\n\nfixed64.lt\032e!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_FIXED64RULES'].fields_by_name['lte']._loaded_options = None - _globals['_FIXED64RULES'].fields_by_name['lte']._serialized_options = b'\302H\212\001\n\207\001\n\013fixed64.lte\032x!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_FIXED64RULES'].fields_by_name['lte']._serialized_options = b'\302H\204\001\n\201\001\n\013fixed64.lte\032r!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_FIXED64RULES'].fields_by_name['gt']._loaded_options = None - _globals['_FIXED64RULES'].fields_by_name['gt']._serialized_options = b'\302H\216\007\n|\n\nfixed64.gt\032n!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\265\001\n\rfixed64.gt_lt\032\243\001has(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\275\001\n\027fixed64.gt_lt_exclusive\032\241\001has(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\305\001\n\016fixed64.gt_lte\032\262\001has(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\315\001\n\030fixed64.gt_lte_exclusive\032\260\001has(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]) : \'\'' + _globals['_FIXED64RULES'].fields_by_name['gt']._serialized_options = b'\302H\360\006\nv\n\nfixed64.gt\032h!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\257\001\n\rfixed64.gt_lt\032\235\001has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\267\001\n\027fixed64.gt_lt_exclusive\032\233\001has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\277\001\n\016fixed64.gt_lte\032\254\001has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\307\001\n\030fixed64.gt_lte_exclusive\032\252\001has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _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['gte']._serialized_options = b'\302H\273\007\n\204\001\n\013fixed64.gte\032u!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\276\001\n\016fixed64.gte_lt\032\253\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\306\001\n\030fixed64.gte_lt_exclusive\032\251\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\316\001\n\017fixed64.gte_lte\032\272\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\326\001\n\031fixed64.gte_lte_exclusive\032\270\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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'\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['in']._serialized_options = b'\302Hl\nj\n\nfixed64.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H_\n]\n\016fixed64.not_in\032Kthis in rules.not_in ? \'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'\302Ht\nr\n\016sfixed32.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_SFIXED32RULES'].fields_by_name['const']._serialized_options = b'\302Hn\nl\n\016sfixed32.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302Hv\nt\n\013sfixed32.lt\032e!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_SFIXED32RULES'].fields_by_name['lte']._loaded_options = None - _globals['_SFIXED32RULES'].fields_by_name['lte']._serialized_options = b'\302H\213\001\n\210\001\n\014sfixed32.lte\032x!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_SFIXED32RULES'].fields_by_name['lte']._serialized_options = b'\302H\205\001\n\202\001\n\014sfixed32.lte\032r!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_SFIXED32RULES'].fields_by_name['gt']._loaded_options = None - _globals['_SFIXED32RULES'].fields_by_name['gt']._serialized_options = b'\302H\223\007\n}\n\013sfixed32.gt\032n!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\266\001\n\016sfixed32.gt_lt\032\243\001has(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\276\001\n\030sfixed32.gt_lt_exclusive\032\241\001has(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\306\001\n\017sfixed32.gt_lte\032\262\001has(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\316\001\n\031sfixed32.gt_lte_exclusive\032\260\001has(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]) : \'\'' + _globals['_SFIXED32RULES'].fields_by_name['gt']._serialized_options = b'\302H\365\006\nw\n\013sfixed32.gt\032h!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\260\001\n\016sfixed32.gt_lt\032\235\001has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\270\001\n\030sfixed32.gt_lt_exclusive\032\233\001has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\300\001\n\017sfixed32.gt_lte\032\254\001has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\310\001\n\031sfixed32.gt_lte_exclusive\032\252\001has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _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['gte']._serialized_options = b'\302H\300\007\n\205\001\n\014sfixed32.gte\032u!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\277\001\n\017sfixed32.gte_lt\032\253\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\307\001\n\031sfixed32.gte_lt_exclusive\032\251\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\317\001\n\020sfixed32.gte_lte\032\272\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\327\001\n\032sfixed32.gte_lte_exclusive\032\270\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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'\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['in']._serialized_options = b'\302Hm\nk\n\013sfixed32.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H`\n^\n\017sfixed32.not_in\032Kthis in rules.not_in ? \'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'\302Ht\nr\n\016sfixed64.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_SFIXED64RULES'].fields_by_name['const']._serialized_options = b'\302Hn\nl\n\016sfixed64.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302Hv\nt\n\013sfixed64.lt\032e!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_SFIXED64RULES'].fields_by_name['lte']._loaded_options = None - _globals['_SFIXED64RULES'].fields_by_name['lte']._serialized_options = b'\302H\213\001\n\210\001\n\014sfixed64.lte\032x!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_SFIXED64RULES'].fields_by_name['lte']._serialized_options = b'\302H\205\001\n\202\001\n\014sfixed64.lte\032r!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_SFIXED64RULES'].fields_by_name['gt']._loaded_options = None - _globals['_SFIXED64RULES'].fields_by_name['gt']._serialized_options = b'\302H\223\007\n}\n\013sfixed64.gt\032n!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\266\001\n\016sfixed64.gt_lt\032\243\001has(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\276\001\n\030sfixed64.gt_lt_exclusive\032\241\001has(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\306\001\n\017sfixed64.gt_lte\032\262\001has(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\316\001\n\031sfixed64.gt_lte_exclusive\032\260\001has(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]) : \'\'' + _globals['_SFIXED64RULES'].fields_by_name['gt']._serialized_options = b'\302H\365\006\nw\n\013sfixed64.gt\032h!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\260\001\n\016sfixed64.gt_lt\032\235\001has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\270\001\n\030sfixed64.gt_lt_exclusive\032\233\001has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\300\001\n\017sfixed64.gt_lte\032\254\001has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\310\001\n\031sfixed64.gt_lte_exclusive\032\252\001has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _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['gte']._serialized_options = b'\302H\300\007\n\205\001\n\014sfixed64.gte\032u!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\277\001\n\017sfixed64.gte_lt\032\253\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\307\001\n\031sfixed64.gte_lt_exclusive\032\251\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\317\001\n\020sfixed64.gte_lte\032\272\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\327\001\n\032sfixed64.gte_lte_exclusive\032\270\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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'\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['in']._serialized_options = b'\302Hm\nk\n\013sfixed64.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H`\n^\n\017sfixed64.not_in\032Kthis in rules.not_in ? \'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'\302Hp\nn\n\nbool.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_BOOLRULES'].fields_by_name['const']._serialized_options = b'\302Hj\nh\n\nbool.const\032Zthis != getField(rules, \'const\') ? \'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'\302Ht\nr\n\014string.const\032bthis != getField(rules, \'const\') ? \'value must equal `%s`\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_STRINGRULES'].fields_by_name['const']._serialized_options = b'\302Hn\nl\n\014string.const\032\\this != getField(rules, \'const\') ? \'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['len']._serialized_options = b'\302Ha\n_\n\nstring.len\032Quint(this.size()) != rules.len ? \'must be %s characters\'.format([rules.len]) : \'\'' _globals['_STRINGRULES'].fields_by_name['min_len']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['min_len']._serialized_options = b'\302H\203\001\n\200\001\n\016string.min_len\032nuint(this.size()) < rules.min_len ? \'value length must be at least %s characters\'.format([rules.min_len]) : \'\'' + _globals['_STRINGRULES'].fields_by_name['min_len']._serialized_options = b'\302Hu\ns\n\016string.min_len\032auint(this.size()) < rules.min_len ? \'must be at least %s characters\'.format([rules.min_len]) : \'\'' _globals['_STRINGRULES'].fields_by_name['max_len']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['max_len']._serialized_options = b'\302H\201\001\n\177\n\016string.max_len\032muint(this.size()) > rules.max_len ? \'value length must be at most %s characters\'.format([rules.max_len]) : \'\'' + _globals['_STRINGRULES'].fields_by_name['max_len']._serialized_options = b'\302Ht\nr\n\016string.max_len\032`uint(this.size()) > rules.max_len ? \'must be at most %s characters\'.format([rules.max_len]) : \'\'' _globals['_STRINGRULES'].fields_by_name['len_bytes']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['len_bytes']._serialized_options = b'\302H\203\001\n\200\001\n\020string.len_bytes\032luint(bytes(this).size()) != rules.len_bytes ? \'value length must be %s bytes\'.format([rules.len_bytes]) : \'\'' + _globals['_STRINGRULES'].fields_by_name['len_bytes']._serialized_options = b'\302Hu\ns\n\020string.len_bytes\032_uint(bytes(this).size()) != rules.len_bytes ? \'must be %s bytes\'.format([rules.len_bytes]) : \'\'' _globals['_STRINGRULES'].fields_by_name['min_bytes']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['min_bytes']._serialized_options = b'\302H\213\001\n\210\001\n\020string.min_bytes\032tuint(bytes(this).size()) < rules.min_bytes ? \'value length must be at least %s bytes\'.format([rules.min_bytes]) : \'\'' + _globals['_STRINGRULES'].fields_by_name['min_bytes']._serialized_options = b'\302H}\n{\n\020string.min_bytes\032guint(bytes(this).size()) < rules.min_bytes ? \'must be at least %s bytes\'.format([rules.min_bytes]) : \'\'' _globals['_STRINGRULES'].fields_by_name['max_bytes']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['max_bytes']._serialized_options = b'\302H\212\001\n\207\001\n\020string.max_bytes\032suint(bytes(this).size()) > rules.max_bytes ? \'value length must be at most %s bytes\'.format([rules.max_bytes]) : \'\'' + _globals['_STRINGRULES'].fields_by_name['max_bytes']._serialized_options = b'\302H|\nz\n\020string.max_bytes\032fuint(bytes(this).size()) > rules.max_bytes ? \'must be at most %s bytes\'.format([rules.max_bytes]) : \'\'' _globals['_STRINGRULES'].fields_by_name['pattern']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['pattern']._serialized_options = b'\302Hy\nw\n\016string.pattern\032e!this.matches(rules.pattern) ? \'value does not match regex pattern `%s`\'.format([rules.pattern]) : \'\'' + _globals['_STRINGRULES'].fields_by_name['pattern']._serialized_options = b'\302Hs\nq\n\016string.pattern\032_!this.matches(rules.pattern) ? \'does not match regex pattern `%s`\'.format([rules.pattern]) : \'\'' _globals['_STRINGRULES'].fields_by_name['prefix']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['prefix']._serialized_options = b'\302Hq\no\n\rstring.prefix\032^!this.startsWith(rules.prefix) ? \'value does not have prefix `%s`\'.format([rules.prefix]) : \'\'' + _globals['_STRINGRULES'].fields_by_name['prefix']._serialized_options = b'\302Hk\ni\n\rstring.prefix\032X!this.startsWith(rules.prefix) ? \'does not have prefix `%s`\'.format([rules.prefix]) : \'\'' _globals['_STRINGRULES'].fields_by_name['suffix']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['suffix']._serialized_options = b'\302Ho\nm\n\rstring.suffix\032\\!this.endsWith(rules.suffix) ? \'value does not have suffix `%s`\'.format([rules.suffix]) : \'\'' + _globals['_STRINGRULES'].fields_by_name['suffix']._serialized_options = b'\302Hi\ng\n\rstring.suffix\032V!this.endsWith(rules.suffix) ? \'does not have suffix `%s`\'.format([rules.suffix]) : \'\'' _globals['_STRINGRULES'].fields_by_name['contains']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['contains']._serialized_options = b'\302H{\ny\n\017string.contains\032f!this.contains(rules.contains) ? \'value does not contain substring `%s`\'.format([rules.contains]) : \'\'' + _globals['_STRINGRULES'].fields_by_name['contains']._serialized_options = b'\302Hu\ns\n\017string.contains\032`!this.contains(rules.contains) ? \'does not contain substring `%s`\'.format([rules.contains]) : \'\'' _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['not_contains']._serialized_options = b'\302Hx\nv\n\023string.not_contains\032_this.contains(rules.not_contains) ? \'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'\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['in']._serialized_options = b'\302Hk\ni\n\tstring.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H^\n\\\n\rstring.not_in\032Kthis in rules.not_in ? \'must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_STRINGRULES'].fields_by_name['email']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['email']._serialized_options = b'\302H\311\001\na\n\014string.email\022#value must be a valid email address\032,!rules.email || this == \'\' || this.isEmail()\nd\n\022string.email_empty\0222value is empty, which is not a valid email address\032\032!rules.email || this != \'\'' + _globals['_STRINGRULES'].fields_by_name['email']._serialized_options = b'\302H\303\001\n[\n\014string.email\022\035must be a valid email address\032,!rules.email || this == \'\' || this.isEmail()\nd\n\022string.email_empty\0222value is empty, which is not a valid email address\032\032!rules.email || this != \'\'' _globals['_STRINGRULES'].fields_by_name['hostname']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['hostname']._serialized_options = b'\302H\316\001\ne\n\017string.hostname\022\036value must be a valid hostname\0322!rules.hostname || this == \'\' || this.isHostname()\ne\n\025string.hostname_empty\022-value is empty, which is not a valid hostname\032\035!rules.hostname || this != \'\'' + _globals['_STRINGRULES'].fields_by_name['hostname']._serialized_options = b'\302H\310\001\n_\n\017string.hostname\022\030must be a valid hostname\0322!rules.hostname || this == \'\' || this.isHostname()\ne\n\025string.hostname_empty\022-value is empty, which is not a valid hostname\032\035!rules.hostname || this != \'\'' _globals['_STRINGRULES'].fields_by_name['ip']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['ip']._serialized_options = b'\302H\264\001\nU\n\tstring.ip\022 value must be a valid IP address\032&!rules.ip || this == \'\' || this.isIp()\n[\n\017string.ip_empty\022/value is empty, which is not a valid IP address\032\027!rules.ip || this != \'\'' + _globals['_STRINGRULES'].fields_by_name['ip']._serialized_options = b'\302H\256\001\nO\n\tstring.ip\022\032must be a valid IP address\032&!rules.ip || this == \'\' || this.isIp()\n[\n\017string.ip_empty\022/value is empty, which is not a valid IP address\032\027!rules.ip || this != \'\'' _globals['_STRINGRULES'].fields_by_name['ipv4']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['ipv4']._serialized_options = b'\302H\301\001\n\\\n\013string.ipv4\022\"value must be a valid IPv4 address\032)!rules.ipv4 || this == \'\' || this.isIp(4)\na\n\021string.ipv4_empty\0221value is empty, which is not a valid IPv4 address\032\031!rules.ipv4 || this != \'\'' + _globals['_STRINGRULES'].fields_by_name['ipv4']._serialized_options = b'\302H\273\001\nV\n\013string.ipv4\022\034must be a valid IPv4 address\032)!rules.ipv4 || this == \'\' || this.isIp(4)\na\n\021string.ipv4_empty\0221value is empty, which is not a valid IPv4 address\032\031!rules.ipv4 || this != \'\'' _globals['_STRINGRULES'].fields_by_name['ipv6']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['ipv6']._serialized_options = b'\302H\301\001\n\\\n\013string.ipv6\022\"value must be a valid IPv6 address\032)!rules.ipv6 || this == \'\' || this.isIp(6)\na\n\021string.ipv6_empty\0221value is empty, which is not a valid IPv6 address\032\031!rules.ipv6 || this != \'\'' + _globals['_STRINGRULES'].fields_by_name['ipv6']._serialized_options = b'\302H\273\001\nV\n\013string.ipv6\022\034must be a valid IPv6 address\032)!rules.ipv6 || this == \'\' || this.isIp(6)\na\n\021string.ipv6_empty\0221value is empty, which is not a valid IPv6 address\032\031!rules.ipv6 || this != \'\'' _globals['_STRINGRULES'].fields_by_name['uri']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['uri']._serialized_options = b'\302H\253\001\nQ\n\nstring.uri\022\031value must be a valid URI\032(!rules.uri || this == \'\' || this.isUri()\nV\n\020string.uri_empty\022(value is empty, which is not a valid URI\032\030!rules.uri || this != \'\'' + _globals['_STRINGRULES'].fields_by_name['uri']._serialized_options = b'\302H\245\001\nK\n\nstring.uri\022\023must be a valid URI\032(!rules.uri || this == \'\' || this.isUri()\nV\n\020string.uri_empty\022(value is empty, which is not a valid URI\032\030!rules.uri || this != \'\'' _globals['_STRINGRULES'].fields_by_name['uri_ref']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['uri_ref']._serialized_options = b'\302HZ\nX\n\016string.uri_ref\022#value must be a valid URI Reference\032!!rules.uri_ref || this.isUriRef()' + _globals['_STRINGRULES'].fields_by_name['uri_ref']._serialized_options = b'\302HT\nR\n\016string.uri_ref\022\035must be a valid URI Reference\032!!rules.uri_ref || this.isUriRef()' _globals['_STRINGRULES'].fields_by_name['address']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['address']._serialized_options = b'\302H\370\001\n\201\001\n\016string.address\022-value must be a valid hostname, or ip address\032@!rules.address || this == \'\' || this.isHostname() || this.isIp()\nr\n\024string.address_empty\022!rules.ipv4_with_prefixlen || this == \'\' || this.isIpPrefix(4)\n\222\001\n string.ipv4_with_prefixlen_empty\022Dvalue is empty, which is not a valid IPv4 address with prefix length\032(!rules.ipv4_with_prefixlen || this != \'\'' + _globals['_STRINGRULES'].fields_by_name['ipv4_with_prefixlen']._serialized_options = b'\302H\245\002\n\215\001\n\032string.ipv4_with_prefixlen\022/must be a valid IPv4 address with prefix length\032>!rules.ipv4_with_prefixlen || this == \'\' || this.isIpPrefix(4)\n\222\001\n string.ipv4_with_prefixlen_empty\022Dvalue is empty, which is not a valid IPv4 address with prefix length\032(!rules.ipv4_with_prefixlen || this != \'\'' _globals['_STRINGRULES'].fields_by_name['ipv6_with_prefixlen']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['ipv6_with_prefixlen']._serialized_options = b'\302H\253\002\n\223\001\n\032string.ipv6_with_prefixlen\0225value must be a valid IPv6 address with prefix length\032>!rules.ipv6_with_prefixlen || this == \'\' || this.isIpPrefix(6)\n\222\001\n string.ipv6_with_prefixlen_empty\022Dvalue is empty, which is not a valid IPv6 address with prefix length\032(!rules.ipv6_with_prefixlen || this != \'\'' + _globals['_STRINGRULES'].fields_by_name['ipv6_with_prefixlen']._serialized_options = b'\302H\245\002\n\215\001\n\032string.ipv6_with_prefixlen\022/must be a valid IPv6 address with prefix length\032>!rules.ipv6_with_prefixlen || this == \'\' || this.isIpPrefix(6)\n\222\001\n string.ipv6_with_prefixlen_empty\022Dvalue is empty, which is not a valid IPv6 address with prefix length\032(!rules.ipv6_with_prefixlen || this != \'\'' _globals['_STRINGRULES'].fields_by_name['ip_prefix']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['ip_prefix']._serialized_options = b'\302H\330\001\nl\n\020string.ip_prefix\022\037value must be a valid IP prefix\0327!rules.ip_prefix || this == \'\' || this.isIpPrefix(true)\nh\n\026string.ip_prefix_empty\022.value is empty, which is not a valid IP prefix\032\036!rules.ip_prefix || this != \'\'' + _globals['_STRINGRULES'].fields_by_name['ip_prefix']._serialized_options = b'\302H\322\001\nf\n\020string.ip_prefix\022\031must be a valid IP prefix\0327!rules.ip_prefix || this == \'\' || this.isIpPrefix(true)\nh\n\026string.ip_prefix_empty\022.value is empty, which is not a valid IP prefix\032\036!rules.ip_prefix || this != \'\'' _globals['_STRINGRULES'].fields_by_name['ipv4_prefix']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['ipv4_prefix']._serialized_options = b'\302H\347\001\nu\n\022string.ipv4_prefix\022!value must be a valid IPv4 prefix\032!rules.host_and_port || this == \'\' || this.isHostAndPort(true)\ny\n\032string.host_and_port_empty\0227value is empty, which is not a valid host and port pair\032\"!rules.host_and_port || this != \'\'' + _globals['_STRINGRULES'].fields_by_name['host_and_port']._serialized_options = b'\302H\221\002\n\223\001\n\024string.host_and_port\022;must be a valid host (hostname or IP address) and port pair\032>!rules.host_and_port || this == \'\' || this.isHostAndPort(true)\ny\n\032string.host_and_port_empty\0227value is empty, which is not a valid host and port pair\032\"!rules.host_and_port || this != \'\'' _globals['_STRINGRULES'].fields_by_name['ulid']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['ulid']._serialized_options = b'\302H\340\001\n\202\001\n\013string.ulid\022\032value must be a valid ULID\032W!rules.ulid || this == \'\' || this.matches(\'^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$\')\nY\n\021string.ulid_empty\022)value is empty, which is not a valid ULID\032\031!rules.ulid || this != \'\'' + _globals['_STRINGRULES'].fields_by_name['ulid']._serialized_options = b'\302H\331\001\n|\n\013string.ulid\022\024must be a valid ULID\032W!rules.ulid || this == \'\' || this.matches(\'^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$\')\nY\n\021string.ulid_empty\022)value is empty, which is not a valid ULID\032\031!rules.ulid || this != \'\'' + _globals['_STRINGRULES'].fields_by_name['protobuf_fqn']._loaded_options = None + _globals['_STRINGRULES'].fields_by_name['protobuf_fqn']._serialized_options = b'\302H\267\002\n\257\001\n\023string.protobuf_fqn\022-must be a valid fully-qualified Protobuf name\032i!rules.protobuf_fqn || this == \'\' || this.matches(\'^[A-Za-z_][A-Za-z_0-9]*(\\\\.[A-Za-z_][A-Za-z_0-9]*)*$\')\n\202\001\n\031string.protobuf_fqn_empty\022Bvalue is empty, which is not a valid fully-qualified Protobuf name\032!!rules.protobuf_fqn || this != \'\'' + _globals['_STRINGRULES'].fields_by_name['protobuf_dot_fqn']._loaded_options = None + _globals['_STRINGRULES'].fields_by_name['protobuf_dot_fqn']._serialized_options = b'\302H\360\002\n\315\001\n\027string.protobuf_dot_fqn\022@must be a valid fully-qualified Protobuf name with a leading dot\032p!rules.protobuf_dot_fqn || this == \'\' || this.matches(\'^\\\\.[A-Za-z_][A-Za-z_0-9]*(\\\\.[A-Za-z_][A-Za-z_0-9]*)*$\')\n\235\001\n\035string.protobuf_dot_fqn_empty\022Uvalue is empty, which is not a valid fully-qualified Protobuf name with a leading dot\032%!rules.protobuf_dot_fqn || this != \'\'' _globals['_STRINGRULES'].fields_by_name['well_known_regex']._loaded_options = None - _globals['_STRINGRULES'].fields_by_name['well_known_regex']._serialized_options = b'\302H\355\004\n\360\001\n#string.well_known_regex.header_name\022&value must be a valid HTTP header name\032\240\001rules.well_known_regex != 1 || this == \'\' || this.matches(!has(rules.strict) || rules.strict ?\'^:?[0-9a-zA-Z!#$%&\\\'*+-.^_|~\\x60]+$\' :\'^[^\\u0000\\u000A\\u000D]+$\')\n\215\001\n)string.well_known_regex.header_name_empty\0225value is empty, which is not a valid HTTP header name\032)rules.well_known_regex != 1 || this != \'\'\n\347\001\n$string.well_known_regex.header_value\022\'value must be a valid HTTP header value\032\225\001rules.well_known_regex != 2 || this.matches(!has(rules.strict) || rules.strict ?\'^[^\\u0000-\\u0008\\u000A-\\u001F\\u007F]*$\' :\'^[^\\u0000\\u000A\\u000D]*$\')' + _globals['_STRINGRULES'].fields_by_name['well_known_regex']._serialized_options = b'\302H\341\004\n\352\001\n#string.well_known_regex.header_name\022 must be a valid HTTP header name\032\240\001rules.well_known_regex != 1 || this == \'\' || this.matches(!has(rules.strict) || rules.strict ?\'^:?[0-9a-zA-Z!#$%&\\\'*+-.^_|~\\x60]+$\' :\'^[^\\u0000\\u000A\\u000D]+$\')\n\215\001\n)string.well_known_regex.header_name_empty\0225value is empty, which is not a valid HTTP header name\032)rules.well_known_regex != 1 || this != \'\'\n\341\001\n$string.well_known_regex.header_value\022!must be a valid HTTP header value\032\225\001rules.well_known_regex != 2 || this.matches(!has(rules.strict) || rules.strict ?\'^[^\\u0000-\\u0008\\u000A-\\u001F\\u007F]*$\' :\'^[^\\u0000\\u000A\\u000D]*$\')' _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'\302Hn\nl\n\013bytes.const\032]this != getField(rules, \'const\') ? \'value must be %x\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_BYTESRULES'].fields_by_name['const']._serialized_options = b'\302Hh\nf\n\013bytes.const\032Wthis != getField(rules, \'const\') ? \'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['len']._serialized_options = b'\302H[\nY\n\tbytes.len\032Luint(this.size()) != rules.len ? \'must be %s bytes\'.format([rules.len]) : \'\'' _globals['_BYTESRULES'].fields_by_name['min_len']._loaded_options = None - _globals['_BYTESRULES'].fields_by_name['min_len']._serialized_options = b'\302H|\nz\n\rbytes.min_len\032iuint(this.size()) < rules.min_len ? \'value length must be at least %s bytes\'.format([rules.min_len]) : \'\'' + _globals['_BYTESRULES'].fields_by_name['min_len']._serialized_options = b'\302Ho\nm\n\rbytes.min_len\032\\uint(this.size()) < rules.min_len ? \'must be at least %s bytes\'.format([rules.min_len]) : \'\'' _globals['_BYTESRULES'].fields_by_name['max_len']._loaded_options = None - _globals['_BYTESRULES'].fields_by_name['max_len']._serialized_options = b'\302Ht\nr\n\rbytes.max_len\032auint(this.size()) > rules.max_len ? \'value must be at most %s bytes\'.format([rules.max_len]) : \'\'' + _globals['_BYTESRULES'].fields_by_name['max_len']._serialized_options = b'\302Hn\nl\n\rbytes.max_len\032[uint(this.size()) > rules.max_len ? \'must be at most %s bytes\'.format([rules.max_len]) : \'\'' _globals['_BYTESRULES'].fields_by_name['pattern']._loaded_options = None - _globals['_BYTESRULES'].fields_by_name['pattern']._serialized_options = b'\302H|\nz\n\rbytes.pattern\032i!string(this).matches(rules.pattern) ? \'value must match regex pattern `%s`\'.format([rules.pattern]) : \'\'' + _globals['_BYTESRULES'].fields_by_name['pattern']._serialized_options = b'\302Hv\nt\n\rbytes.pattern\032c!string(this).matches(rules.pattern) ? \'must match regex pattern `%s`\'.format([rules.pattern]) : \'\'' _globals['_BYTESRULES'].fields_by_name['prefix']._loaded_options = None - _globals['_BYTESRULES'].fields_by_name['prefix']._serialized_options = b'\302Hn\nl\n\014bytes.prefix\032\\!this.startsWith(rules.prefix) ? \'value does not have prefix %x\'.format([rules.prefix]) : \'\'' + _globals['_BYTESRULES'].fields_by_name['prefix']._serialized_options = b'\302Hh\nf\n\014bytes.prefix\032V!this.startsWith(rules.prefix) ? \'does not have prefix %x\'.format([rules.prefix]) : \'\'' _globals['_BYTESRULES'].fields_by_name['suffix']._loaded_options = None - _globals['_BYTESRULES'].fields_by_name['suffix']._serialized_options = b'\302Hl\nj\n\014bytes.suffix\032Z!this.endsWith(rules.suffix) ? \'value does not have suffix %x\'.format([rules.suffix]) : \'\'' + _globals['_BYTESRULES'].fields_by_name['suffix']._serialized_options = b'\302Hf\nd\n\014bytes.suffix\032T!this.endsWith(rules.suffix) ? \'does not have suffix %x\'.format([rules.suffix]) : \'\'' _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['contains']._serialized_options = b'\302Hh\nf\n\016bytes.contains\032T!this.contains(rules.contains) ? \'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\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['in']._serialized_options = b'\302H\220\001\n\215\001\n\010bytes.in\032\200\001getField(rules, \'in\').size() > 0 && !(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H]\n[\n\014bytes.not_in\032Kthis in rules.not_in ? \'must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_BYTESRULES'].fields_by_name['ip']._loaded_options = None - _globals['_BYTESRULES'].fields_by_name['ip']._serialized_options = b'\302H\330\001\nt\n\010bytes.ip\022 value must be a valid IP address\032F!rules.ip || this.size() == 0 || this.size() == 4 || this.size() == 16\n`\n\016bytes.ip_empty\022/value is empty, which is not a valid IP address\032\035!rules.ip || this.size() != 0' + _globals['_BYTESRULES'].fields_by_name['ip']._serialized_options = b'\302H\322\001\nn\n\010bytes.ip\022\032must be a valid IP address\032F!rules.ip || this.size() == 0 || this.size() == 4 || this.size() == 16\n`\n\016bytes.ip_empty\022/value is empty, which is not a valid IP address\032\035!rules.ip || this.size() != 0' _globals['_BYTESRULES'].fields_by_name['ipv4']._loaded_options = None - _globals['_BYTESRULES'].fields_by_name['ipv4']._serialized_options = b'\302H\317\001\ne\n\nbytes.ipv4\022\"value must be a valid IPv4 address\0323!rules.ipv4 || this.size() == 0 || this.size() == 4\nf\n\020bytes.ipv4_empty\0221value is empty, which is not a valid IPv4 address\032\037!rules.ipv4 || this.size() != 0' + _globals['_BYTESRULES'].fields_by_name['ipv4']._serialized_options = b'\302H\311\001\n_\n\nbytes.ipv4\022\034must be a valid IPv4 address\0323!rules.ipv4 || this.size() == 0 || this.size() == 4\nf\n\020bytes.ipv4_empty\0221value is empty, which is not a valid IPv4 address\032\037!rules.ipv4 || this.size() != 0' _globals['_BYTESRULES'].fields_by_name['ipv6']._loaded_options = None - _globals['_BYTESRULES'].fields_by_name['ipv6']._serialized_options = b'\302H\320\001\nf\n\nbytes.ipv6\022\"value must be a valid IPv6 address\0324!rules.ipv6 || this.size() == 0 || this.size() == 16\nf\n\020bytes.ipv6_empty\0221value is empty, which is not a valid IPv6 address\032\037!rules.ipv6 || this.size() != 0' + _globals['_BYTESRULES'].fields_by_name['ipv6']._serialized_options = b'\302H\312\001\n`\n\nbytes.ipv6\022\034must be a valid IPv6 address\0324!rules.ipv6 || this.size() == 0 || this.size() == 16\nf\n\020bytes.ipv6_empty\0221value is empty, which is not a valid IPv6 address\032\037!rules.ipv6 || this.size() != 0' _globals['_BYTESRULES'].fields_by_name['uuid']._loaded_options = None - _globals['_BYTESRULES'].fields_by_name['uuid']._serialized_options = b'\302H\300\001\n^\n\nbytes.uuid\022\032value must be a valid UUID\0324!rules.uuid || this.size() == 0 || this.size() == 16\n^\n\020bytes.uuid_empty\022)value is empty, which is not a valid UUID\032\037!rules.uuid || this.size() != 0' + _globals['_BYTESRULES'].fields_by_name['uuid']._serialized_options = b'\302H\272\001\nX\n\nbytes.uuid\022\024must be a valid UUID\0324!rules.uuid || this.size() == 0 || this.size() == 16\n^\n\020bytes.uuid_empty\022)value is empty, which is not a valid UUID\032\037!rules.uuid || this.size() != 0' _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'\302Hp\nn\n\nenum.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_ENUMRULES'].fields_by_name['const']._serialized_options = b'\302Hj\nh\n\nenum.const\032Zthis != getField(rules, \'const\') ? \'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'\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['in']._serialized_options = b'\302Hi\ng\n\007enum.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H\\\nZ\n\013enum.not_in\032Kthis in rules.not_in ? \'must not be in list %s\'.format([rules.not_in]) : \'\'' _globals['_ENUMRULES'].fields_by_name['example']._loaded_options = None _globals['_ENUMRULES'].fields_by_name['example']._serialized_options = b'\302H\026\n\024\n\014enum.example\032\004true' _globals['_REPEATEDRULES'].fields_by_name['min_items']._loaded_options = None - _globals['_REPEATEDRULES'].fields_by_name['min_items']._serialized_options = b'\302H\206\001\n\203\001\n\022repeated.min_items\032muint(this.size()) < rules.min_items ? \'value must contain at least %d item(s)\'.format([rules.min_items]) : \'\'' + _globals['_REPEATEDRULES'].fields_by_name['min_items']._serialized_options = b'\302H\177\n}\n\022repeated.min_items\032guint(this.size()) < rules.min_items ? \'must contain at least %d item(s)\'.format([rules.min_items]) : \'\'' _globals['_REPEATEDRULES'].fields_by_name['max_items']._loaded_options = None - _globals['_REPEATEDRULES'].fields_by_name['max_items']._serialized_options = b'\302H\212\001\n\207\001\n\022repeated.max_items\032quint(this.size()) > rules.max_items ? \'value must contain no more than %s item(s)\'.format([rules.max_items]) : \'\'' + _globals['_REPEATEDRULES'].fields_by_name['max_items']._serialized_options = b'\302H\204\001\n\201\001\n\022repeated.max_items\032kuint(this.size()) > rules.max_items ? \'must contain no more than %s item(s)\'.format([rules.max_items]) : \'\'' _globals['_REPEATEDRULES'].fields_by_name['unique']._loaded_options = None _globals['_REPEATEDRULES'].fields_by_name['unique']._serialized_options = b'\302H]\n[\n\017repeated.unique\022(repeated value must contain unique items\032\036!rules.unique || this.unique()' _globals['_MAPRULES'].fields_by_name['min_pairs']._loaded_options = None @@ -357,51 +361,51 @@ _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'\302Ht\nr\n\016duration.const\032`this != getField(rules, \'const\') ? \'value must equal %s\'.format([getField(rules, \'const\')]) : \'\'' + _globals['_DURATIONRULES'].fields_by_name['const']._serialized_options = b'\302Hn\nl\n\016duration.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302Hv\nt\n\013duration.lt\032e!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_DURATIONRULES'].fields_by_name['lte']._loaded_options = None - _globals['_DURATIONRULES'].fields_by_name['lte']._serialized_options = b'\302H\213\001\n\210\001\n\014duration.lte\032x!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_DURATIONRULES'].fields_by_name['lte']._serialized_options = b'\302H\205\001\n\202\001\n\014duration.lte\032r!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_DURATIONRULES'].fields_by_name['gt']._loaded_options = None - _globals['_DURATIONRULES'].fields_by_name['gt']._serialized_options = b'\302H\223\007\n}\n\013duration.gt\032n!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\266\001\n\016duration.gt_lt\032\243\001has(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\276\001\n\030duration.gt_lt_exclusive\032\241\001has(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\306\001\n\017duration.gt_lte\032\262\001has(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\316\001\n\031duration.gt_lte_exclusive\032\260\001has(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]) : \'\'' + _globals['_DURATIONRULES'].fields_by_name['gt']._serialized_options = b'\302H\365\006\nw\n\013duration.gt\032h!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\260\001\n\016duration.gt_lt\032\235\001has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\270\001\n\030duration.gt_lt_exclusive\032\233\001has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\300\001\n\017duration.gt_lte\032\254\001has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\310\001\n\031duration.gt_lte_exclusive\032\252\001has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _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['gte']._serialized_options = b'\302H\300\007\n\205\001\n\014duration.gte\032u!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\277\001\n\017duration.gte_lt\032\253\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\307\001\n\031duration.gte_lt_exclusive\032\251\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\317\001\n\020duration.gte_lte\032\272\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\327\001\n\032duration.gte_lte_exclusive\032\270\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'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'\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['in']._serialized_options = b'\302Hm\nk\n\013duration.in\032\\!(this in getField(rules, \'in\')) ? \'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['not_in']._serialized_options = b'\302H`\n^\n\017duration.not_in\032Kthis in rules.not_in ? \'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['_FIELDMASKRULES'].fields_by_name['const']._loaded_options = None - _globals['_FIELDMASKRULES'].fields_by_name['const']._serialized_options = b'\302H\217\001\n\214\001\n\020field_mask.const\032xthis.paths != getField(rules, \'const\').paths ? \'value must equal paths %s\'.format([getField(rules, \'const\').paths]) : \'\'' + _globals['_FIELDMASKRULES'].fields_by_name['const']._serialized_options = b'\302H\211\001\n\206\001\n\020field_mask.const\032rthis.paths != getField(rules, \'const\').paths ? \'must equal paths %s\'.format([getField(rules, \'const\').paths]) : \'\'' _globals['_FIELDMASKRULES'].fields_by_name['in']._loaded_options = None - _globals['_FIELDMASKRULES'].fields_by_name['in']._serialized_options = b'\302H\310\001\n\305\001\n\rfield_mask.in\032\263\001!this.paths.all(p, p in getField(rules, \'in\') || getField(rules, \'in\').exists(f, p.startsWith(f+\'.\'))) ? \'value must only contain paths in %s\'.format([getField(rules, \'in\')]) : \'\'' + _globals['_FIELDMASKRULES'].fields_by_name['in']._serialized_options = b'\302H\302\001\n\277\001\n\rfield_mask.in\032\255\001!this.paths.all(p, p in getField(rules, \'in\') || getField(rules, \'in\').exists(f, p.startsWith(f+\'.\'))) ? \'must only contain paths in %s\'.format([getField(rules, \'in\')]) : \'\'' _globals['_FIELDMASKRULES'].fields_by_name['not_in']._loaded_options = None - _globals['_FIELDMASKRULES'].fields_by_name['not_in']._serialized_options = b'\302H\336\001\n\333\001\n\021field_mask.not_in\032\305\001!this.paths.all(p, !(p in getField(rules, \'not_in\') || getField(rules, \'not_in\').exists(f, p.startsWith(f+\'.\')))) ? \'value must not contain any paths in %s\'.format([getField(rules, \'not_in\')]) : \'\'' + _globals['_FIELDMASKRULES'].fields_by_name['not_in']._serialized_options = b'\302H\330\001\n\325\001\n\021field_mask.not_in\032\277\001!this.paths.all(p, !(p in getField(rules, \'not_in\') || getField(rules, \'not_in\').exists(f, p.startsWith(f+\'.\')))) ? \'must not contain any paths in %s\'.format([getField(rules, \'not_in\')]) : \'\'' _globals['_FIELDMASKRULES'].fields_by_name['example']._loaded_options = None _globals['_FIELDMASKRULES'].fields_by_name['example']._serialized_options = b'\302H\034\n\032\n\022field_mask.example\032\004true' _globals['_TIMESTAMPRULES'].fields_by_name['const']._loaded_options = None - _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['const']._serialized_options = b'\302Ho\nm\n\017timestamp.const\032Zthis != getField(rules, \'const\') ? \'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['lt']._serialized_options = b'\302Hw\nu\n\014timestamp.lt\032e!has(rules.gte) && !has(rules.gt) && this >= rules.lt? \'must be less than %s\'.format([rules.lt]) : \'\'' _globals['_TIMESTAMPRULES'].fields_by_name['lte']._loaded_options = None - _globals['_TIMESTAMPRULES'].fields_by_name['lte']._serialized_options = b'\302H\214\001\n\211\001\n\rtimestamp.lte\032x!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'value must be less than or equal to %s\'.format([rules.lte]) : \'\'' + _globals['_TIMESTAMPRULES'].fields_by_name['lte']._serialized_options = b'\302H\206\001\n\203\001\n\rtimestamp.lte\032r!has(rules.gte) && !has(rules.gt) && this > rules.lte? \'must be less than or equal to %s\'.format([rules.lte]) : \'\'' _globals['_TIMESTAMPRULES'].fields_by_name['lt_now']._loaded_options = None - _globals['_TIMESTAMPRULES'].fields_by_name['lt_now']._serialized_options = b'\302HW\nU\n\020timestamp.lt_now\032A(rules.lt_now && this > now) ? \'value must be less than now\' : \'\'' + _globals['_TIMESTAMPRULES'].fields_by_name['lt_now']._serialized_options = b'\302HQ\nO\n\020timestamp.lt_now\032;(rules.lt_now && this > now) ? \'must be less than now\' : \'\'' _globals['_TIMESTAMPRULES'].fields_by_name['gt']._loaded_options = None - _globals['_TIMESTAMPRULES'].fields_by_name['gt']._serialized_options = b'\302H\230\007\n~\n\014timestamp.gt\032n!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'value must be greater than %s\'.format([rules.gt]) : \'\'\n\267\001\n\017timestamp.gt_lt\032\243\001has(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\277\001\n\031timestamp.gt_lt_exclusive\032\241\001has(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\307\001\n\020timestamp.gt_lte\032\262\001has(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\317\001\n\032timestamp.gt_lte_exclusive\032\260\001has(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]) : \'\'' + _globals['_TIMESTAMPRULES'].fields_by_name['gt']._serialized_options = b'\302H\372\006\nx\n\014timestamp.gt\032h!has(rules.lt) && !has(rules.lte) && this <= rules.gt? \'must be greater than %s\'.format([rules.gt]) : \'\'\n\261\001\n\017timestamp.gt_lt\032\235\001has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)? \'must be greater than %s and less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\271\001\n\031timestamp.gt_lt_exclusive\032\233\001has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)? \'must be greater than %s or less than %s\'.format([rules.gt, rules.lt]) : \'\'\n\301\001\n\020timestamp.gt_lte\032\254\001has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)? \'must be greater than %s and less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'\n\311\001\n\032timestamp.gt_lte_exclusive\032\252\001has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)? \'must be greater than %s or less than or equal to %s\'.format([rules.gt, rules.lte]) : \'\'' _globals['_TIMESTAMPRULES'].fields_by_name['gte']._loaded_options = None - _globals['_TIMESTAMPRULES'].fields_by_name['gte']._serialized_options = b'\302H\343\007\n\214\001\n\rtimestamp.gte\032{!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'value must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\306\001\n\020timestamp.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\316\001\n\032timestamp.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\326\001\n\021timestamp.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\336\001\n\033timestamp.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['_TIMESTAMPRULES'].fields_by_name['gte']._serialized_options = b'\302H\305\007\n\206\001\n\rtimestamp.gte\032u!has(rules.lt) && !has(rules.lte) && this < rules.gte? \'must be greater than or equal to %s\'.format([rules.gte]) : \'\'\n\300\001\n\020timestamp.gte_lt\032\253\001has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)? \'must be greater than or equal to %s and less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\310\001\n\032timestamp.gte_lt_exclusive\032\251\001has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)? \'must be greater than or equal to %s or less than %s\'.format([rules.gte, rules.lt]) : \'\'\n\320\001\n\021timestamp.gte_lte\032\272\001has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)? \'must be greater than or equal to %s and less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'\n\330\001\n\033timestamp.gte_lte_exclusive\032\270\001has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)? \'must be greater than or equal to %s or less than or equal to %s\'.format([rules.gte, rules.lte]) : \'\'' _globals['_TIMESTAMPRULES'].fields_by_name['gt_now']._loaded_options = None - _globals['_TIMESTAMPRULES'].fields_by_name['gt_now']._serialized_options = b'\302HZ\nX\n\020timestamp.gt_now\032D(rules.gt_now && this < now) ? \'value must be greater than now\' : \'\'' + _globals['_TIMESTAMPRULES'].fields_by_name['gt_now']._serialized_options = b'\302HT\nR\n\020timestamp.gt_now\032>(rules.gt_now && this < now) ? \'must be greater than now\' : \'\'' _globals['_TIMESTAMPRULES'].fields_by_name['within']._loaded_options = None - _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['within']._serialized_options = b'\302H\201\001\n\177\n\020timestamp.within\032kthis < now-rules.within || this > now+rules.within ? \'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=55581 - _globals['_IGNORE']._serialized_end=55742 - _globals['_KNOWNREGEX']._serialized_start=55744 - _globals['_KNOWNREGEX']._serialized_end=55854 + _globals['_IGNORE']._serialized_start=54642 + _globals['_IGNORE']._serialized_end=54803 + _globals['_KNOWNREGEX']._serialized_start=54805 + _globals['_KNOWNREGEX']._serialized_end=54915 _globals['_RULE']._serialized_start=178 _globals['_RULE']._serialized_end=258 _globals['_MESSAGERULES']._serialized_start=261 @@ -415,55 +419,55 @@ _globals['_PREDEFINEDRULES']._serialized_start=1920 _globals['_PREDEFINEDRULES']._serialized_end=2010 _globals['_FLOATRULES']._serialized_start=2013 - _globals['_FLOATRULES']._serialized_end=5101 - _globals['_DOUBLERULES']._serialized_start=5104 - _globals['_DOUBLERULES']._serialized_end=8210 - _globals['_INT32RULES']._serialized_start=8213 - _globals['_INT32RULES']._serialized_end=10959 - _globals['_INT64RULES']._serialized_start=10962 - _globals['_INT64RULES']._serialized_end=13708 - _globals['_UINT32RULES']._serialized_start=13711 - _globals['_UINT32RULES']._serialized_end=16474 - _globals['_UINT64RULES']._serialized_start=16477 - _globals['_UINT64RULES']._serialized_end=19240 - _globals['_SINT32RULES']._serialized_start=19243 - _globals['_SINT32RULES']._serialized_end=22006 - _globals['_SINT64RULES']._serialized_start=22009 - _globals['_SINT64RULES']._serialized_end=24772 - _globals['_FIXED32RULES']._serialized_start=24775 - _globals['_FIXED32RULES']._serialized_end=27555 - _globals['_FIXED64RULES']._serialized_start=27558 - _globals['_FIXED64RULES']._serialized_end=30338 - _globals['_SFIXED32RULES']._serialized_start=30341 - _globals['_SFIXED32RULES']._serialized_end=33139 - _globals['_SFIXED64RULES']._serialized_start=33142 - _globals['_SFIXED64RULES']._serialized_end=35940 - _globals['_BOOLRULES']._serialized_start=35943 - _globals['_BOOLRULES']._serialized_end=36158 - _globals['_STRINGRULES']._serialized_start=36161 - _globals['_STRINGRULES']._serialized_end=43792 - _globals['_BYTESRULES']._serialized_start=43795 - _globals['_BYTESRULES']._serialized_end=46271 - _globals['_ENUMRULES']._serialized_start=46274 - _globals['_ENUMRULES']._serialized_end=46783 - _globals['_REPEATEDRULES']._serialized_start=46786 - _globals['_REPEATEDRULES']._serialized_end=47328 - _globals['_MAPRULES']._serialized_start=47331 - _globals['_MAPRULES']._serialized_end=47759 - _globals['_ANYRULES']._serialized_start=47761 - _globals['_ANYRULES']._serialized_end=47810 - _globals['_DURATIONRULES']._serialized_start=47813 - _globals['_DURATIONRULES']._serialized_end=50827 - _globals['_FIELDMASKRULES']._serialized_start=50830 - _globals['_FIELDMASKRULES']._serialized_end=51622 - _globals['_TIMESTAMPRULES']._serialized_start=51625 - _globals['_TIMESTAMPRULES']._serialized_end=54771 - _globals['_VIOLATIONS']._serialized_start=54773 - _globals['_VIOLATIONS']._serialized_end=54842 - _globals['_VIOLATION']._serialized_start=54845 - _globals['_VIOLATION']._serialized_end=55042 - _globals['_FIELDPATH']._serialized_start=55044 - _globals['_FIELDPATH']._serialized_end=55115 - _globals['_FIELDPATHELEMENT']._serialized_start=55118 - _globals['_FIELDPATHELEMENT']._serialized_end=55578 + _globals['_FLOATRULES']._serialized_end=5003 + _globals['_DOUBLERULES']._serialized_start=5006 + _globals['_DOUBLERULES']._serialized_end=8014 + _globals['_INT32RULES']._serialized_start=8017 + _globals['_INT32RULES']._serialized_end=10671 + _globals['_INT64RULES']._serialized_start=10674 + _globals['_INT64RULES']._serialized_end=13328 + _globals['_UINT32RULES']._serialized_start=13331 + _globals['_UINT32RULES']._serialized_end=16003 + _globals['_UINT64RULES']._serialized_start=16006 + _globals['_UINT64RULES']._serialized_end=18678 + _globals['_SINT32RULES']._serialized_start=18681 + _globals['_SINT32RULES']._serialized_end=21353 + _globals['_SINT64RULES']._serialized_start=21356 + _globals['_SINT64RULES']._serialized_end=24028 + _globals['_FIXED32RULES']._serialized_start=24031 + _globals['_FIXED32RULES']._serialized_end=26720 + _globals['_FIXED64RULES']._serialized_start=26723 + _globals['_FIXED64RULES']._serialized_end=29412 + _globals['_SFIXED32RULES']._serialized_start=29415 + _globals['_SFIXED32RULES']._serialized_end=32122 + _globals['_SFIXED64RULES']._serialized_start=32125 + _globals['_SFIXED64RULES']._serialized_end=34832 + _globals['_BOOLRULES']._serialized_start=34835 + _globals['_BOOLRULES']._serialized_end=35044 + _globals['_STRINGRULES']._serialized_start=35047 + _globals['_STRINGRULES']._serialized_end=43190 + _globals['_BYTESRULES']._serialized_start=43193 + _globals['_BYTESRULES']._serialized_end=45571 + _globals['_ENUMRULES']._serialized_start=45574 + _globals['_ENUMRULES']._serialized_end=46064 + _globals['_REPEATEDRULES']._serialized_start=46067 + _globals['_REPEATEDRULES']._serialized_end=46595 + _globals['_MAPRULES']._serialized_start=46598 + _globals['_MAPRULES']._serialized_end=47026 + _globals['_ANYRULES']._serialized_start=47028 + _globals['_ANYRULES']._serialized_end=47077 + _globals['_DURATIONRULES']._serialized_start=47080 + _globals['_DURATIONRULES']._serialized_end=50004 + _globals['_FIELDMASKRULES']._serialized_start=50007 + _globals['_FIELDMASKRULES']._serialized_end=50781 + _globals['_TIMESTAMPRULES']._serialized_start=50784 + _globals['_TIMESTAMPRULES']._serialized_end=53832 + _globals['_VIOLATIONS']._serialized_start=53834 + _globals['_VIOLATIONS']._serialized_end=53903 + _globals['_VIOLATION']._serialized_start=53906 + _globals['_VIOLATION']._serialized_end=54103 + _globals['_FIELDPATH']._serialized_start=54105 + _globals['_FIELDPATH']._serialized_end=54176 + _globals['_FIELDPATHELEMENT']._serialized_start=54179 + _globals['_FIELDPATHELEMENT']._serialized_end=54639 # @@protoc_insertion_point(module_scope) diff --git a/gen/buf/validate/validate_pb2.pyi b/gen/buf/validate/validate_pb2.pyi index 9df1862..8908de4 100644 --- a/gen/buf/validate/validate_pb2.pyi +++ b/gen/buf/validate/validate_pb2.pyi @@ -401,7 +401,7 @@ class BoolRules(_message.Message): def __init__(self, const: bool = ..., example: _Optional[_Iterable[bool]] = ...) -> None: ... class StringRules(_message.Message): - __slots__ = ("const", "len", "min_len", "max_len", "len_bytes", "min_bytes", "max_bytes", "pattern", "prefix", "suffix", "contains", "not_contains", "not_in", "email", "hostname", "ip", "ipv4", "ipv6", "uri", "uri_ref", "address", "uuid", "tuuid", "ip_with_prefixlen", "ipv4_with_prefixlen", "ipv6_with_prefixlen", "ip_prefix", "ipv4_prefix", "ipv6_prefix", "host_and_port", "ulid", "well_known_regex", "strict", "example") + __slots__ = ("const", "len", "min_len", "max_len", "len_bytes", "min_bytes", "max_bytes", "pattern", "prefix", "suffix", "contains", "not_contains", "not_in", "email", "hostname", "ip", "ipv4", "ipv6", "uri", "uri_ref", "address", "uuid", "tuuid", "ip_with_prefixlen", "ipv4_with_prefixlen", "ipv6_with_prefixlen", "ip_prefix", "ipv4_prefix", "ipv6_prefix", "host_and_port", "ulid", "protobuf_fqn", "protobuf_dot_fqn", "well_known_regex", "strict", "example") Extensions: _python_message._ExtensionDict CONST_FIELD_NUMBER: _ClassVar[int] LEN_FIELD_NUMBER: _ClassVar[int] @@ -435,6 +435,8 @@ class StringRules(_message.Message): IPV6_PREFIX_FIELD_NUMBER: _ClassVar[int] HOST_AND_PORT_FIELD_NUMBER: _ClassVar[int] ULID_FIELD_NUMBER: _ClassVar[int] + PROTOBUF_FQN_FIELD_NUMBER: _ClassVar[int] + PROTOBUF_DOT_FQN_FIELD_NUMBER: _ClassVar[int] WELL_KNOWN_REGEX_FIELD_NUMBER: _ClassVar[int] STRICT_FIELD_NUMBER: _ClassVar[int] EXAMPLE_FIELD_NUMBER: _ClassVar[int] @@ -469,10 +471,12 @@ class StringRules(_message.Message): ipv6_prefix: bool host_and_port: bool ulid: bool + protobuf_fqn: bool + protobuf_dot_fqn: bool well_known_regex: KnownRegex strict: bool example: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, const: _Optional[str] = ..., len: _Optional[int] = ..., min_len: _Optional[int] = ..., max_len: _Optional[int] = ..., len_bytes: _Optional[int] = ..., min_bytes: _Optional[int] = ..., max_bytes: _Optional[int] = ..., pattern: _Optional[str] = ..., prefix: _Optional[str] = ..., suffix: _Optional[str] = ..., contains: _Optional[str] = ..., not_contains: _Optional[str] = ..., not_in: _Optional[_Iterable[str]] = ..., email: bool = ..., hostname: bool = ..., ip: bool = ..., ipv4: bool = ..., ipv6: bool = ..., uri: bool = ..., uri_ref: bool = ..., address: bool = ..., uuid: bool = ..., tuuid: bool = ..., ip_with_prefixlen: bool = ..., ipv4_with_prefixlen: bool = ..., ipv6_with_prefixlen: bool = ..., ip_prefix: bool = ..., ipv4_prefix: bool = ..., ipv6_prefix: bool = ..., host_and_port: bool = ..., ulid: bool = ..., well_known_regex: _Optional[_Union[KnownRegex, str]] = ..., strict: bool = ..., example: _Optional[_Iterable[str]] = ..., **kwargs) -> None: ... + def __init__(self, const: _Optional[str] = ..., len: _Optional[int] = ..., min_len: _Optional[int] = ..., max_len: _Optional[int] = ..., len_bytes: _Optional[int] = ..., min_bytes: _Optional[int] = ..., max_bytes: _Optional[int] = ..., pattern: _Optional[str] = ..., prefix: _Optional[str] = ..., suffix: _Optional[str] = ..., contains: _Optional[str] = ..., not_contains: _Optional[str] = ..., not_in: _Optional[_Iterable[str]] = ..., email: bool = ..., hostname: bool = ..., ip: bool = ..., ipv4: bool = ..., ipv6: bool = ..., uri: bool = ..., uri_ref: bool = ..., address: bool = ..., uuid: bool = ..., tuuid: bool = ..., ip_with_prefixlen: bool = ..., ipv4_with_prefixlen: bool = ..., ipv6_with_prefixlen: bool = ..., ip_prefix: bool = ..., ipv4_prefix: bool = ..., ipv6_prefix: bool = ..., host_and_port: bool = ..., ulid: bool = ..., protobuf_fqn: bool = ..., protobuf_dot_fqn: bool = ..., well_known_regex: _Optional[_Union[KnownRegex, str]] = ..., strict: bool = ..., example: _Optional[_Iterable[str]] = ..., **kwargs) -> None: ... class BytesRules(_message.Message): __slots__ = ("const", "len", "min_len", "max_len", "pattern", "prefix", "suffix", "contains", "not_in", "ip", "ipv4", "ipv6", "uuid", "example") diff --git a/test/test_validate.py b/test/test_validate.py index b669d2d..e400653 100644 --- a/test/test_validate.py +++ b/test/test_validate.py @@ -31,7 +31,7 @@ def test_ninf(validator): msg.val = float("-inf") expected_violation = rules.Violation() - expected_violation.proto.message = "value must be finite" + expected_violation.proto.message = "must be finite" expected_violation.proto.rule_id = "double.finite" expected_violation.field_value = msg.val expected_violation.rule_value = True @@ -45,7 +45,7 @@ def test_map_key(validator): msg.val[1] = "a" expected_violation = rules.Violation() - expected_violation.proto.message = "value must be less than 0" + expected_violation.proto.message = "must be less than 0" expected_violation.proto.rule_id = "sint64.lt" expected_violation.proto.for_key = True expected_violation.field_value = 1 @@ -147,13 +147,13 @@ def test_multiple_validations(validator): msg.name = "blah" expected_violation1 = rules.Violation() - expected_violation1.proto.message = "value does not have prefix `foo`" + expected_violation1.proto.message = "does not have prefix `foo`" expected_violation1.proto.rule_id = "string.prefix" expected_violation1.field_value = msg.title expected_violation1.rule_value = "foo" expected_violation2 = rules.Violation() - expected_violation2.proto.message = "value length must be at least 5 characters" + expected_violation2.proto.message = "must be at least 5 characters" expected_violation2.proto.rule_id = "string.min_len" expected_violation2.field_value = msg.name expected_violation2.rule_value = 5 @@ -179,7 +179,7 @@ def test_fail_fast(validator): msg.name = "blah" expected_violation = rules.Violation() - expected_violation.proto.message = "value does not have prefix `foo`" + expected_violation.proto.message = "does not have prefix `foo`" expected_violation.proto.rule_id = "string.prefix" expected_violation.field_value = msg.title expected_violation.rule_value = "foo" diff --git a/upstream/proto/buf/validate/validate.proto b/upstream/proto/buf/validate/validate.proto index 58e0840..b9b5911 100644 --- a/upstream/proto/buf/validate/validate.proto +++ b/upstream/proto/buf/validate/validate.proto @@ -37,7 +37,7 @@ syntax = "proto2"; // // These rules are enforced at runtime by language-specific libraries. // See the [developer quickstart](https://protovalidate.com/quickstart/) to get started, or go directly to the runtime library for your language: -// [Go](https://github.com/bufbuild/protovalidate-go) +// [Go](https://github.com/bufbuild/protovalidate-go), // [JavaScript/TypeScript](https://github.com/bufbuild/protovalidate-es), // [Java](https://github.com/bufbuild/protovalidate-java), // [Python](https://github.com/bufbuild/protovalidate-python), @@ -90,7 +90,7 @@ extend google.protobuf.FieldOptions { // extend buf.validate.Int32Rules { // bool is_zero [(buf.validate.predefined).cel = { // id: "int32.is_zero", - // message: "value must be zero", + // message: "must be zero", // expression: "!rule || this == 0", // }]; // } @@ -167,7 +167,7 @@ message MessageRules { // // The field `foo` must be greater than 42. // option (buf.validate.message).cel = { // id: "my_message.value", - // message: "value must be greater than 42", + // message: "must be greater than 42", // expression: "this.foo > 42", // }; // optional int32 foo = 1; @@ -274,7 +274,7 @@ message FieldRules { // // The field `value` must be greater than 42. // optional int32 value = 1 [(buf.validate.field).cel = { // id: "my_message.value", - // message: "value must be greater than 42", + // message: "must be greater than 42", // expression: "this > 42", // }]; // } @@ -397,7 +397,7 @@ message PredefinedRules { // // The field `value` must be greater than 42. // optional int32 value = 1 [(buf.validate.predefined).cel = { // id: "my_message.value", - // message: "value must be greater than 42", + // message: "must be greater than 42", // expression: "this > 42", // }]; // } @@ -514,7 +514,7 @@ message FloatRules { // ``` optional float const = 1 [(predefined).cel = { id: "float.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { @@ -524,7 +524,7 @@ message FloatRules { // // ```proto // message MyFloat { - // // value must be less than 10.0 + // // must be less than 10.0 // float value = 1 [(buf.validate.field).float.lt = 10.0]; // } // ``` @@ -532,7 +532,7 @@ message FloatRules { id: "float.lt" expression: "!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; // `lte` requires the field value to be less than or equal to the specified @@ -541,7 +541,7 @@ message FloatRules { // // ```proto // message MyFloat { - // // value must be less than or equal to 10.0 + // // must be less than or equal to 10.0 // float value = 1 [(buf.validate.field).float.lte = 10.0]; // } // ``` @@ -549,7 +549,7 @@ message FloatRules { id: "float.lte" expression: "!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; } @@ -562,13 +562,13 @@ message FloatRules { // // ```proto // message MyFloat { - // // value must be greater than 5.0 [float.gt] + // // must be greater than 5.0 [float.gt] // float value = 1 [(buf.validate.field).float.gt = 5.0]; // - // // value must be greater than 5 and less than 10.0 [float.gt_lt] + // // must be greater than 5 and less than 10.0 [float.gt_lt] // float other_value = 2 [(buf.validate.field).float = { gt: 5.0, lt: 10.0 }]; // - // // value must be greater than 10 or less than 5.0 [float.gt_lt_exclusive] + // // must be greater than 10 or less than 5.0 [float.gt_lt_exclusive] // float another_value = 3 [(buf.validate.field).float = { gt: 10.0, lt: 5.0 }]; // } // ``` @@ -577,31 +577,31 @@ message FloatRules { id: "float.gt" expression: "!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "float.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "float.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "float.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "float.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -613,13 +613,13 @@ message FloatRules { // // ```proto // message MyFloat { - // // value must be greater than or equal to 5.0 [float.gte] + // // must be greater than or equal to 5.0 [float.gte] // float value = 1 [(buf.validate.field).float.gte = 5.0]; // - // // value must be greater than or equal to 5.0 and less than 10.0 [float.gte_lt] + // // must be greater than or equal to 5.0 and less than 10.0 [float.gte_lt] // float other_value = 2 [(buf.validate.field).float = { gte: 5.0, lt: 10.0 }]; // - // // value must be greater than or equal to 10.0 or less than 5.0 [float.gte_lt_exclusive] + // // must be greater than or equal to 10.0 or less than 5.0 [float.gte_lt_exclusive] // float another_value = 3 [(buf.validate.field).float = { gte: 10.0, lt: 5.0 }]; // } // ``` @@ -628,31 +628,31 @@ message FloatRules { id: "float.gte" expression: "!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "float.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "float.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "float.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "float.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; } @@ -663,16 +663,16 @@ message FloatRules { // // ```proto // message MyFloat { - // // value must be in list [1.0, 2.0, 3.0] + // // must be in list [1.0, 2.0, 3.0] // float value = 1 [(buf.validate.field).float = { in: [1.0, 2.0, 3.0] }]; // } // ``` repeated float in = 6 [(predefined).cel = { id: "float.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; - // `in` requires the field value to not be equal to any of the specified + // `not_in` requires the field value to not be equal to any of the specified // values. If the field value is one of the specified values, an error // message is generated. // @@ -684,14 +684,14 @@ message FloatRules { // ``` repeated float not_in = 7 [(predefined).cel = { id: "float.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `finite` requires the field value to be finite. If the field value is // infinite or NaN, an error message is generated. optional bool finite = 8 [(predefined).cel = { id: "float.finite" - expression: "rules.finite ? (this.isNan() || this.isInf() ? 'value must be finite' : '') : ''" + expression: "rules.finite ? (this.isNan() || this.isInf() ? 'must be finite' : '') : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -711,16 +711,9 @@ message FloatRules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -738,7 +731,7 @@ message DoubleRules { // ``` optional double const = 1 [(predefined).cel = { id: "double.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { // `lt` requires the field value to be less than the specified value (field < @@ -747,7 +740,7 @@ message DoubleRules { // // ```proto // message MyDouble { - // // value must be less than 10.0 + // // must be less than 10.0 // double value = 1 [(buf.validate.field).double.lt = 10.0]; // } // ``` @@ -755,7 +748,7 @@ message DoubleRules { id: "double.lt" expression: "!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; // `lte` requires the field value to be less than or equal to the specified value @@ -764,7 +757,7 @@ message DoubleRules { // // ```proto // message MyDouble { - // // value must be less than or equal to 10.0 + // // must be less than or equal to 10.0 // double value = 1 [(buf.validate.field).double.lte = 10.0]; // } // ``` @@ -772,7 +765,7 @@ message DoubleRules { id: "double.lte" expression: "!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; } oneof greater_than { @@ -784,13 +777,13 @@ message DoubleRules { // // ```proto // message MyDouble { - // // value must be greater than 5.0 [double.gt] + // // must be greater than 5.0 [double.gt] // double value = 1 [(buf.validate.field).double.gt = 5.0]; // - // // value must be greater than 5 and less than 10.0 [double.gt_lt] + // // must be greater than 5 and less than 10.0 [double.gt_lt] // double other_value = 2 [(buf.validate.field).double = { gt: 5.0, lt: 10.0 }]; // - // // value must be greater than 10 or less than 5.0 [double.gt_lt_exclusive] + // // must be greater than 10 or less than 5.0 [double.gt_lt_exclusive] // double another_value = 3 [(buf.validate.field).double = { gt: 10.0, lt: 5.0 }]; // } // ``` @@ -799,31 +792,31 @@ message DoubleRules { id: "double.gt" expression: "!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "double.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "double.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "double.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "double.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -835,13 +828,13 @@ message DoubleRules { // // ```proto // message MyDouble { - // // value must be greater than or equal to 5.0 [double.gte] + // // must be greater than or equal to 5.0 [double.gte] // double value = 1 [(buf.validate.field).double.gte = 5.0]; // - // // value must be greater than or equal to 5.0 and less than 10.0 [double.gte_lt] + // // must be greater than or equal to 5.0 and less than 10.0 [double.gte_lt] // double other_value = 2 [(buf.validate.field).double = { gte: 5.0, lt: 10.0 }]; // - // // value must be greater than or equal to 10.0 or less than 5.0 [double.gte_lt_exclusive] + // // must be greater than or equal to 10.0 or less than 5.0 [double.gte_lt_exclusive] // double another_value = 3 [(buf.validate.field).double = { gte: 10.0, lt: 5.0 }]; // } // ``` @@ -850,31 +843,31 @@ message DoubleRules { id: "double.gte" expression: "!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "double.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "double.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "double.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "double.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; } @@ -884,13 +877,13 @@ message DoubleRules { // // ```proto // message MyDouble { - // // value must be in list [1.0, 2.0, 3.0] + // // must be in list [1.0, 2.0, 3.0] // double value = 1 [(buf.validate.field).double = { in: [1.0, 2.0, 3.0] }]; // } // ``` repeated double in = 6 [(predefined).cel = { id: "double.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to not be equal to any of the specified @@ -905,14 +898,14 @@ message DoubleRules { // ``` repeated double not_in = 7 [(predefined).cel = { id: "double.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `finite` requires the field value to be finite. If the field value is // infinite or NaN, an error message is generated. optional bool finite = 8 [(predefined).cel = { id: "double.finite" - expression: "rules.finite ? (this.isNan() || this.isInf() ? 'value must be finite' : '') : ''" + expression: "rules.finite ? (this.isNan() || this.isInf() ? 'must be finite' : '') : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -932,16 +925,9 @@ message DoubleRules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -959,7 +945,7 @@ message Int32Rules { // ``` optional int32 const = 1 [(predefined).cel = { id: "int32.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { // `lt` requires the field value to be less than the specified value (field @@ -968,7 +954,7 @@ message Int32Rules { // // ```proto // message MyInt32 { - // // value must be less than 10 + // // must be less than 10 // int32 value = 1 [(buf.validate.field).int32.lt = 10]; // } // ``` @@ -976,7 +962,7 @@ message Int32Rules { id: "int32.lt" expression: "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; // `lte` requires the field value to be less than or equal to the specified @@ -985,7 +971,7 @@ message Int32Rules { // // ```proto // message MyInt32 { - // // value must be less than or equal to 10 + // // must be less than or equal to 10 // int32 value = 1 [(buf.validate.field).int32.lte = 10]; // } // ``` @@ -993,7 +979,7 @@ message Int32Rules { id: "int32.lte" expression: "!has(rules.gte) && !has(rules.gt) && this > rules.lte" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; } oneof greater_than { @@ -1005,13 +991,13 @@ message Int32Rules { // // ```proto // message MyInt32 { - // // value must be greater than 5 [int32.gt] + // // must be greater than 5 [int32.gt] // int32 value = 1 [(buf.validate.field).int32.gt = 5]; // - // // value must be greater than 5 and less than 10 [int32.gt_lt] + // // must be greater than 5 and less than 10 [int32.gt_lt] // int32 other_value = 2 [(buf.validate.field).int32 = { gt: 5, lt: 10 }]; // - // // value must be greater than 10 or less than 5 [int32.gt_lt_exclusive] + // // must be greater than 10 or less than 5 [int32.gt_lt_exclusive] // int32 another_value = 3 [(buf.validate.field).int32 = { gt: 10, lt: 5 }]; // } // ``` @@ -1020,31 +1006,31 @@ message Int32Rules { id: "int32.gt" expression: "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "int32.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "int32.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "int32.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "int32.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -1056,13 +1042,13 @@ message Int32Rules { // // ```proto // message MyInt32 { - // // value must be greater than or equal to 5 [int32.gte] + // // must be greater than or equal to 5 [int32.gte] // int32 value = 1 [(buf.validate.field).int32.gte = 5]; // - // // value must be greater than or equal to 5 and less than 10 [int32.gte_lt] + // // must be greater than or equal to 5 and less than 10 [int32.gte_lt] // int32 other_value = 2 [(buf.validate.field).int32 = { gte: 5, lt: 10 }]; // - // // value must be greater than or equal to 10 or less than 5 [int32.gte_lt_exclusive] + // // must be greater than or equal to 10 or less than 5 [int32.gte_lt_exclusive] // int32 another_value = 3 [(buf.validate.field).int32 = { gte: 10, lt: 5 }]; // } // ``` @@ -1071,31 +1057,31 @@ message Int32Rules { id: "int32.gte" expression: "!has(rules.lt) && !has(rules.lte) && this < rules.gte" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "int32.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "int32.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "int32.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "int32.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; } @@ -1106,13 +1092,13 @@ message Int32Rules { // // ```proto // message MyInt32 { - // // value must be in list [1, 2, 3] + // // must be in list [1, 2, 3] // int32 value = 1 [(buf.validate.field).int32 = { in: [1, 2, 3] }]; // } // ``` repeated int32 in = 6 [(predefined).cel = { id: "int32.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to not be equal to any of the specified @@ -1127,7 +1113,7 @@ message Int32Rules { // ``` repeated int32 not_in = 7 [(predefined).cel = { id: "int32.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -1147,16 +1133,9 @@ message Int32Rules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -1174,7 +1153,7 @@ message Int64Rules { // ``` optional int64 const = 1 [(predefined).cel = { id: "int64.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { // `lt` requires the field value to be less than the specified value (field < @@ -1183,7 +1162,7 @@ message Int64Rules { // // ```proto // message MyInt64 { - // // value must be less than 10 + // // must be less than 10 // int64 value = 1 [(buf.validate.field).int64.lt = 10]; // } // ``` @@ -1191,7 +1170,7 @@ message Int64Rules { id: "int64.lt" expression: "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; // `lte` requires the field value to be less than or equal to the specified @@ -1200,7 +1179,7 @@ message Int64Rules { // // ```proto // message MyInt64 { - // // value must be less than or equal to 10 + // // must be less than or equal to 10 // int64 value = 1 [(buf.validate.field).int64.lte = 10]; // } // ``` @@ -1208,7 +1187,7 @@ message Int64Rules { id: "int64.lte" expression: "!has(rules.gte) && !has(rules.gt) && this > rules.lte" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; } oneof greater_than { @@ -1220,13 +1199,13 @@ message Int64Rules { // // ```proto // message MyInt64 { - // // value must be greater than 5 [int64.gt] + // // must be greater than 5 [int64.gt] // int64 value = 1 [(buf.validate.field).int64.gt = 5]; // - // // value must be greater than 5 and less than 10 [int64.gt_lt] + // // must be greater than 5 and less than 10 [int64.gt_lt] // int64 other_value = 2 [(buf.validate.field).int64 = { gt: 5, lt: 10 }]; // - // // value must be greater than 10 or less than 5 [int64.gt_lt_exclusive] + // // must be greater than 10 or less than 5 [int64.gt_lt_exclusive] // int64 another_value = 3 [(buf.validate.field).int64 = { gt: 10, lt: 5 }]; // } // ``` @@ -1235,31 +1214,31 @@ message Int64Rules { id: "int64.gt" expression: "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "int64.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "int64.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "int64.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "int64.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -1271,13 +1250,13 @@ message Int64Rules { // // ```proto // message MyInt64 { - // // value must be greater than or equal to 5 [int64.gte] + // // must be greater than or equal to 5 [int64.gte] // int64 value = 1 [(buf.validate.field).int64.gte = 5]; // - // // value must be greater than or equal to 5 and less than 10 [int64.gte_lt] + // // must be greater than or equal to 5 and less than 10 [int64.gte_lt] // int64 other_value = 2 [(buf.validate.field).int64 = { gte: 5, lt: 10 }]; // - // // value must be greater than or equal to 10 or less than 5 [int64.gte_lt_exclusive] + // // must be greater than or equal to 10 or less than 5 [int64.gte_lt_exclusive] // int64 another_value = 3 [(buf.validate.field).int64 = { gte: 10, lt: 5 }]; // } // ``` @@ -1286,31 +1265,31 @@ message Int64Rules { id: "int64.gte" expression: "!has(rules.lt) && !has(rules.lte) && this < rules.gte" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "int64.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "int64.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "int64.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "int64.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; } @@ -1321,13 +1300,13 @@ message Int64Rules { // // ```proto // message MyInt64 { - // // value must be in list [1, 2, 3] + // // must be in list [1, 2, 3] // int64 value = 1 [(buf.validate.field).int64 = { in: [1, 2, 3] }]; // } // ``` repeated int64 in = 6 [(predefined).cel = { id: "int64.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to not be equal to any of the specified @@ -1342,7 +1321,7 @@ message Int64Rules { // ``` repeated int64 not_in = 7 [(predefined).cel = { id: "int64.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -1362,16 +1341,9 @@ message Int64Rules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -1389,7 +1361,7 @@ message UInt32Rules { // ``` optional uint32 const = 1 [(predefined).cel = { id: "uint32.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { // `lt` requires the field value to be less than the specified value (field < @@ -1398,7 +1370,7 @@ message UInt32Rules { // // ```proto // message MyUInt32 { - // // value must be less than 10 + // // must be less than 10 // uint32 value = 1 [(buf.validate.field).uint32.lt = 10]; // } // ``` @@ -1406,7 +1378,7 @@ message UInt32Rules { id: "uint32.lt" expression: "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; // `lte` requires the field value to be less than or equal to the specified @@ -1415,7 +1387,7 @@ message UInt32Rules { // // ```proto // message MyUInt32 { - // // value must be less than or equal to 10 + // // must be less than or equal to 10 // uint32 value = 1 [(buf.validate.field).uint32.lte = 10]; // } // ``` @@ -1423,7 +1395,7 @@ message UInt32Rules { id: "uint32.lte" expression: "!has(rules.gte) && !has(rules.gt) && this > rules.lte" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; } oneof greater_than { @@ -1435,13 +1407,13 @@ message UInt32Rules { // // ```proto // message MyUInt32 { - // // value must be greater than 5 [uint32.gt] + // // must be greater than 5 [uint32.gt] // uint32 value = 1 [(buf.validate.field).uint32.gt = 5]; // - // // value must be greater than 5 and less than 10 [uint32.gt_lt] + // // must be greater than 5 and less than 10 [uint32.gt_lt] // uint32 other_value = 2 [(buf.validate.field).uint32 = { gt: 5, lt: 10 }]; // - // // value must be greater than 10 or less than 5 [uint32.gt_lt_exclusive] + // // must be greater than 10 or less than 5 [uint32.gt_lt_exclusive] // uint32 another_value = 3 [(buf.validate.field).uint32 = { gt: 10, lt: 5 }]; // } // ``` @@ -1450,31 +1422,31 @@ message UInt32Rules { id: "uint32.gt" expression: "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "uint32.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "uint32.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "uint32.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "uint32.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -1486,13 +1458,13 @@ message UInt32Rules { // // ```proto // message MyUInt32 { - // // value must be greater than or equal to 5 [uint32.gte] + // // must be greater than or equal to 5 [uint32.gte] // uint32 value = 1 [(buf.validate.field).uint32.gte = 5]; // - // // value must be greater than or equal to 5 and less than 10 [uint32.gte_lt] + // // must be greater than or equal to 5 and less than 10 [uint32.gte_lt] // uint32 other_value = 2 [(buf.validate.field).uint32 = { gte: 5, lt: 10 }]; // - // // value must be greater than or equal to 10 or less than 5 [uint32.gte_lt_exclusive] + // // must be greater than or equal to 10 or less than 5 [uint32.gte_lt_exclusive] // uint32 another_value = 3 [(buf.validate.field).uint32 = { gte: 10, lt: 5 }]; // } // ``` @@ -1501,31 +1473,31 @@ message UInt32Rules { id: "uint32.gte" expression: "!has(rules.lt) && !has(rules.lte) && this < rules.gte" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "uint32.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "uint32.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "uint32.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "uint32.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; } @@ -1536,13 +1508,13 @@ message UInt32Rules { // // ```proto // message MyUInt32 { - // // value must be in list [1, 2, 3] + // // must be in list [1, 2, 3] // uint32 value = 1 [(buf.validate.field).uint32 = { in: [1, 2, 3] }]; // } // ``` repeated uint32 in = 6 [(predefined).cel = { id: "uint32.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to not be equal to any of the specified @@ -1557,7 +1529,7 @@ message UInt32Rules { // ``` repeated uint32 not_in = 7 [(predefined).cel = { id: "uint32.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -1577,16 +1549,9 @@ message UInt32Rules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -1604,7 +1569,7 @@ message UInt64Rules { // ``` optional uint64 const = 1 [(predefined).cel = { id: "uint64.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { // `lt` requires the field value to be less than the specified value (field < @@ -1613,7 +1578,7 @@ message UInt64Rules { // // ```proto // message MyUInt64 { - // // value must be less than 10 + // // must be less than 10 // uint64 value = 1 [(buf.validate.field).uint64.lt = 10]; // } // ``` @@ -1621,7 +1586,7 @@ message UInt64Rules { id: "uint64.lt" expression: "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; // `lte` requires the field value to be less than or equal to the specified @@ -1630,7 +1595,7 @@ message UInt64Rules { // // ```proto // message MyUInt64 { - // // value must be less than or equal to 10 + // // must be less than or equal to 10 // uint64 value = 1 [(buf.validate.field).uint64.lte = 10]; // } // ``` @@ -1638,7 +1603,7 @@ message UInt64Rules { id: "uint64.lte" expression: "!has(rules.gte) && !has(rules.gt) && this > rules.lte" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; } oneof greater_than { @@ -1650,13 +1615,13 @@ message UInt64Rules { // // ```proto // message MyUInt64 { - // // value must be greater than 5 [uint64.gt] + // // must be greater than 5 [uint64.gt] // uint64 value = 1 [(buf.validate.field).uint64.gt = 5]; // - // // value must be greater than 5 and less than 10 [uint64.gt_lt] + // // must be greater than 5 and less than 10 [uint64.gt_lt] // uint64 other_value = 2 [(buf.validate.field).uint64 = { gt: 5, lt: 10 }]; // - // // value must be greater than 10 or less than 5 [uint64.gt_lt_exclusive] + // // must be greater than 10 or less than 5 [uint64.gt_lt_exclusive] // uint64 another_value = 3 [(buf.validate.field).uint64 = { gt: 10, lt: 5 }]; // } // ``` @@ -1665,31 +1630,31 @@ message UInt64Rules { id: "uint64.gt" expression: "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "uint64.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "uint64.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "uint64.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "uint64.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -1701,13 +1666,13 @@ message UInt64Rules { // // ```proto // message MyUInt64 { - // // value must be greater than or equal to 5 [uint64.gte] + // // must be greater than or equal to 5 [uint64.gte] // uint64 value = 1 [(buf.validate.field).uint64.gte = 5]; // - // // value must be greater than or equal to 5 and less than 10 [uint64.gte_lt] + // // must be greater than or equal to 5 and less than 10 [uint64.gte_lt] // uint64 other_value = 2 [(buf.validate.field).uint64 = { gte: 5, lt: 10 }]; // - // // value must be greater than or equal to 10 or less than 5 [uint64.gte_lt_exclusive] + // // must be greater than or equal to 10 or less than 5 [uint64.gte_lt_exclusive] // uint64 another_value = 3 [(buf.validate.field).uint64 = { gte: 10, lt: 5 }]; // } // ``` @@ -1716,31 +1681,31 @@ message UInt64Rules { id: "uint64.gte" expression: "!has(rules.lt) && !has(rules.lte) && this < rules.gte" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "uint64.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "uint64.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "uint64.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "uint64.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; } @@ -1750,13 +1715,13 @@ message UInt64Rules { // // ```proto // message MyUInt64 { - // // value must be in list [1, 2, 3] + // // must be in list [1, 2, 3] // uint64 value = 1 [(buf.validate.field).uint64 = { in: [1, 2, 3] }]; // } // ``` repeated uint64 in = 6 [(predefined).cel = { id: "uint64.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to not be equal to any of the specified @@ -1771,7 +1736,7 @@ message UInt64Rules { // ``` repeated uint64 not_in = 7 [(predefined).cel = { id: "uint64.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -1791,16 +1756,9 @@ message UInt64Rules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -1817,7 +1775,7 @@ message SInt32Rules { // ``` optional sint32 const = 1 [(predefined).cel = { id: "sint32.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { // `lt` requires the field value to be less than the specified value (field @@ -1826,7 +1784,7 @@ message SInt32Rules { // // ```proto // message MySInt32 { - // // value must be less than 10 + // // must be less than 10 // sint32 value = 1 [(buf.validate.field).sint32.lt = 10]; // } // ``` @@ -1834,7 +1792,7 @@ message SInt32Rules { id: "sint32.lt" expression: "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; // `lte` requires the field value to be less than or equal to the specified @@ -1843,7 +1801,7 @@ message SInt32Rules { // // ```proto // message MySInt32 { - // // value must be less than or equal to 10 + // // must be less than or equal to 10 // sint32 value = 1 [(buf.validate.field).sint32.lte = 10]; // } // ``` @@ -1851,7 +1809,7 @@ message SInt32Rules { id: "sint32.lte" expression: "!has(rules.gte) && !has(rules.gt) && this > rules.lte" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; } oneof greater_than { @@ -1863,13 +1821,13 @@ message SInt32Rules { // // ```proto // message MySInt32 { - // // value must be greater than 5 [sint32.gt] + // // must be greater than 5 [sint32.gt] // sint32 value = 1 [(buf.validate.field).sint32.gt = 5]; // - // // value must be greater than 5 and less than 10 [sint32.gt_lt] + // // must be greater than 5 and less than 10 [sint32.gt_lt] // sint32 other_value = 2 [(buf.validate.field).sint32 = { gt: 5, lt: 10 }]; // - // // value must be greater than 10 or less than 5 [sint32.gt_lt_exclusive] + // // must be greater than 10 or less than 5 [sint32.gt_lt_exclusive] // sint32 another_value = 3 [(buf.validate.field).sint32 = { gt: 10, lt: 5 }]; // } // ``` @@ -1878,31 +1836,31 @@ message SInt32Rules { id: "sint32.gt" expression: "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "sint32.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "sint32.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "sint32.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "sint32.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -1914,13 +1872,13 @@ message SInt32Rules { // // ```proto // message MySInt32 { - // // value must be greater than or equal to 5 [sint32.gte] + // // must be greater than or equal to 5 [sint32.gte] // sint32 value = 1 [(buf.validate.field).sint32.gte = 5]; // - // // value must be greater than or equal to 5 and less than 10 [sint32.gte_lt] + // // must be greater than or equal to 5 and less than 10 [sint32.gte_lt] // sint32 other_value = 2 [(buf.validate.field).sint32 = { gte: 5, lt: 10 }]; // - // // value must be greater than or equal to 10 or less than 5 [sint32.gte_lt_exclusive] + // // must be greater than or equal to 10 or less than 5 [sint32.gte_lt_exclusive] // sint32 another_value = 3 [(buf.validate.field).sint32 = { gte: 10, lt: 5 }]; // } // ``` @@ -1929,31 +1887,31 @@ message SInt32Rules { id: "sint32.gte" expression: "!has(rules.lt) && !has(rules.lte) && this < rules.gte" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "sint32.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "sint32.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "sint32.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "sint32.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; } @@ -1964,13 +1922,13 @@ message SInt32Rules { // // ```proto // message MySInt32 { - // // value must be in list [1, 2, 3] + // // must be in list [1, 2, 3] // sint32 value = 1 [(buf.validate.field).sint32 = { in: [1, 2, 3] }]; // } // ``` repeated sint32 in = 6 [(predefined).cel = { id: "sint32.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to not be equal to any of the specified @@ -1985,7 +1943,7 @@ message SInt32Rules { // ``` repeated sint32 not_in = 7 [(predefined).cel = { id: "sint32.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -2005,16 +1963,9 @@ message SInt32Rules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -2031,7 +1982,7 @@ message SInt64Rules { // ``` optional sint64 const = 1 [(predefined).cel = { id: "sint64.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { // `lt` requires the field value to be less than the specified value (field @@ -2040,7 +1991,7 @@ message SInt64Rules { // // ```proto // message MySInt64 { - // // value must be less than 10 + // // must be less than 10 // sint64 value = 1 [(buf.validate.field).sint64.lt = 10]; // } // ``` @@ -2048,7 +1999,7 @@ message SInt64Rules { id: "sint64.lt" expression: "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; // `lte` requires the field value to be less than or equal to the specified @@ -2057,7 +2008,7 @@ message SInt64Rules { // // ```proto // message MySInt64 { - // // value must be less than or equal to 10 + // // must be less than or equal to 10 // sint64 value = 1 [(buf.validate.field).sint64.lte = 10]; // } // ``` @@ -2065,7 +2016,7 @@ message SInt64Rules { id: "sint64.lte" expression: "!has(rules.gte) && !has(rules.gt) && this > rules.lte" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; } oneof greater_than { @@ -2077,13 +2028,13 @@ message SInt64Rules { // // ```proto // message MySInt64 { - // // value must be greater than 5 [sint64.gt] + // // must be greater than 5 [sint64.gt] // sint64 value = 1 [(buf.validate.field).sint64.gt = 5]; // - // // value must be greater than 5 and less than 10 [sint64.gt_lt] + // // must be greater than 5 and less than 10 [sint64.gt_lt] // sint64 other_value = 2 [(buf.validate.field).sint64 = { gt: 5, lt: 10 }]; // - // // value must be greater than 10 or less than 5 [sint64.gt_lt_exclusive] + // // must be greater than 10 or less than 5 [sint64.gt_lt_exclusive] // sint64 another_value = 3 [(buf.validate.field).sint64 = { gt: 10, lt: 5 }]; // } // ``` @@ -2092,31 +2043,31 @@ message SInt64Rules { id: "sint64.gt" expression: "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "sint64.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "sint64.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "sint64.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "sint64.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -2128,13 +2079,13 @@ message SInt64Rules { // // ```proto // message MySInt64 { - // // value must be greater than or equal to 5 [sint64.gte] + // // must be greater than or equal to 5 [sint64.gte] // sint64 value = 1 [(buf.validate.field).sint64.gte = 5]; // - // // value must be greater than or equal to 5 and less than 10 [sint64.gte_lt] + // // must be greater than or equal to 5 and less than 10 [sint64.gte_lt] // sint64 other_value = 2 [(buf.validate.field).sint64 = { gte: 5, lt: 10 }]; // - // // value must be greater than or equal to 10 or less than 5 [sint64.gte_lt_exclusive] + // // must be greater than or equal to 10 or less than 5 [sint64.gte_lt_exclusive] // sint64 another_value = 3 [(buf.validate.field).sint64 = { gte: 10, lt: 5 }]; // } // ``` @@ -2143,31 +2094,31 @@ message SInt64Rules { id: "sint64.gte" expression: "!has(rules.lt) && !has(rules.lte) && this < rules.gte" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "sint64.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "sint64.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "sint64.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "sint64.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; } @@ -2178,13 +2129,13 @@ message SInt64Rules { // // ```proto // message MySInt64 { - // // value must be in list [1, 2, 3] + // // must be in list [1, 2, 3] // sint64 value = 1 [(buf.validate.field).sint64 = { in: [1, 2, 3] }]; // } // ``` repeated sint64 in = 6 [(predefined).cel = { id: "sint64.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to not be equal to any of the specified @@ -2199,7 +2150,7 @@ message SInt64Rules { // ``` repeated sint64 not_in = 7 [(predefined).cel = { id: "sint64.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -2219,16 +2170,9 @@ message SInt64Rules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -2245,7 +2189,7 @@ message Fixed32Rules { // ``` optional fixed32 const = 1 [(predefined).cel = { id: "fixed32.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { // `lt` requires the field value to be less than the specified value (field < @@ -2254,7 +2198,7 @@ message Fixed32Rules { // // ```proto // message MyFixed32 { - // // value must be less than 10 + // // must be less than 10 // fixed32 value = 1 [(buf.validate.field).fixed32.lt = 10]; // } // ``` @@ -2262,7 +2206,7 @@ message Fixed32Rules { id: "fixed32.lt" expression: "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; // `lte` requires the field value to be less than or equal to the specified @@ -2271,7 +2215,7 @@ message Fixed32Rules { // // ```proto // message MyFixed32 { - // // value must be less than or equal to 10 + // // must be less than or equal to 10 // fixed32 value = 1 [(buf.validate.field).fixed32.lte = 10]; // } // ``` @@ -2279,7 +2223,7 @@ message Fixed32Rules { id: "fixed32.lte" expression: "!has(rules.gte) && !has(rules.gt) && this > rules.lte" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; } oneof greater_than { @@ -2291,13 +2235,13 @@ message Fixed32Rules { // // ```proto // message MyFixed32 { - // // value must be greater than 5 [fixed32.gt] + // // must be greater than 5 [fixed32.gt] // fixed32 value = 1 [(buf.validate.field).fixed32.gt = 5]; // - // // value must be greater than 5 and less than 10 [fixed32.gt_lt] + // // must be greater than 5 and less than 10 [fixed32.gt_lt] // fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gt: 5, lt: 10 }]; // - // // value must be greater than 10 or less than 5 [fixed32.gt_lt_exclusive] + // // must be greater than 10 or less than 5 [fixed32.gt_lt_exclusive] // fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gt: 10, lt: 5 }]; // } // ``` @@ -2306,31 +2250,31 @@ message Fixed32Rules { id: "fixed32.gt" expression: "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "fixed32.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "fixed32.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "fixed32.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "fixed32.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -2342,13 +2286,13 @@ message Fixed32Rules { // // ```proto // message MyFixed32 { - // // value must be greater than or equal to 5 [fixed32.gte] + // // must be greater than or equal to 5 [fixed32.gte] // fixed32 value = 1 [(buf.validate.field).fixed32.gte = 5]; // - // // value must be greater than or equal to 5 and less than 10 [fixed32.gte_lt] + // // must be greater than or equal to 5 and less than 10 [fixed32.gte_lt] // fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gte: 5, lt: 10 }]; // - // // value must be greater than or equal to 10 or less than 5 [fixed32.gte_lt_exclusive] + // // must be greater than or equal to 10 or less than 5 [fixed32.gte_lt_exclusive] // fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gte: 10, lt: 5 }]; // } // ``` @@ -2357,31 +2301,31 @@ message Fixed32Rules { id: "fixed32.gte" expression: "!has(rules.lt) && !has(rules.lte) && this < rules.gte" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "fixed32.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "fixed32.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "fixed32.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "fixed32.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; } @@ -2392,13 +2336,13 @@ message Fixed32Rules { // // ```proto // message MyFixed32 { - // // value must be in list [1, 2, 3] + // // must be in list [1, 2, 3] // fixed32 value = 1 [(buf.validate.field).fixed32 = { in: [1, 2, 3] }]; // } // ``` repeated fixed32 in = 6 [(predefined).cel = { id: "fixed32.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to not be equal to any of the specified @@ -2413,7 +2357,7 @@ message Fixed32Rules { // ``` repeated fixed32 not_in = 7 [(predefined).cel = { id: "fixed32.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -2433,16 +2377,9 @@ message Fixed32Rules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -2459,7 +2396,7 @@ message Fixed64Rules { // ``` optional fixed64 const = 1 [(predefined).cel = { id: "fixed64.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { // `lt` requires the field value to be less than the specified value (field < @@ -2468,7 +2405,7 @@ message Fixed64Rules { // // ```proto // message MyFixed64 { - // // value must be less than 10 + // // must be less than 10 // fixed64 value = 1 [(buf.validate.field).fixed64.lt = 10]; // } // ``` @@ -2476,7 +2413,7 @@ message Fixed64Rules { id: "fixed64.lt" expression: "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; // `lte` requires the field value to be less than or equal to the specified @@ -2485,7 +2422,7 @@ message Fixed64Rules { // // ```proto // message MyFixed64 { - // // value must be less than or equal to 10 + // // must be less than or equal to 10 // fixed64 value = 1 [(buf.validate.field).fixed64.lte = 10]; // } // ``` @@ -2493,7 +2430,7 @@ message Fixed64Rules { id: "fixed64.lte" expression: "!has(rules.gte) && !has(rules.gt) && this > rules.lte" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; } oneof greater_than { @@ -2505,13 +2442,13 @@ message Fixed64Rules { // // ```proto // message MyFixed64 { - // // value must be greater than 5 [fixed64.gt] + // // must be greater than 5 [fixed64.gt] // fixed64 value = 1 [(buf.validate.field).fixed64.gt = 5]; // - // // value must be greater than 5 and less than 10 [fixed64.gt_lt] + // // must be greater than 5 and less than 10 [fixed64.gt_lt] // fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gt: 5, lt: 10 }]; // - // // value must be greater than 10 or less than 5 [fixed64.gt_lt_exclusive] + // // must be greater than 10 or less than 5 [fixed64.gt_lt_exclusive] // fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gt: 10, lt: 5 }]; // } // ``` @@ -2520,31 +2457,31 @@ message Fixed64Rules { id: "fixed64.gt" expression: "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "fixed64.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "fixed64.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "fixed64.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "fixed64.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -2556,13 +2493,13 @@ message Fixed64Rules { // // ```proto // message MyFixed64 { - // // value must be greater than or equal to 5 [fixed64.gte] + // // must be greater than or equal to 5 [fixed64.gte] // fixed64 value = 1 [(buf.validate.field).fixed64.gte = 5]; // - // // value must be greater than or equal to 5 and less than 10 [fixed64.gte_lt] + // // must be greater than or equal to 5 and less than 10 [fixed64.gte_lt] // fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gte: 5, lt: 10 }]; // - // // value must be greater than or equal to 10 or less than 5 [fixed64.gte_lt_exclusive] + // // must be greater than or equal to 10 or less than 5 [fixed64.gte_lt_exclusive] // fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gte: 10, lt: 5 }]; // } // ``` @@ -2571,31 +2508,31 @@ message Fixed64Rules { id: "fixed64.gte" expression: "!has(rules.lt) && !has(rules.lte) && this < rules.gte" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "fixed64.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "fixed64.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "fixed64.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "fixed64.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; } @@ -2606,13 +2543,13 @@ message Fixed64Rules { // // ```proto // message MyFixed64 { - // // value must be in list [1, 2, 3] + // // must be in list [1, 2, 3] // fixed64 value = 1 [(buf.validate.field).fixed64 = { in: [1, 2, 3] }]; // } // ``` repeated fixed64 in = 6 [(predefined).cel = { id: "fixed64.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to not be equal to any of the specified @@ -2627,7 +2564,7 @@ message Fixed64Rules { // ``` repeated fixed64 not_in = 7 [(predefined).cel = { id: "fixed64.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -2647,16 +2584,9 @@ message Fixed64Rules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -2673,7 +2603,7 @@ message SFixed32Rules { // ``` optional sfixed32 const = 1 [(predefined).cel = { id: "sfixed32.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { // `lt` requires the field value to be less than the specified value (field < @@ -2682,7 +2612,7 @@ message SFixed32Rules { // // ```proto // message MySFixed32 { - // // value must be less than 10 + // // must be less than 10 // sfixed32 value = 1 [(buf.validate.field).sfixed32.lt = 10]; // } // ``` @@ -2690,7 +2620,7 @@ message SFixed32Rules { id: "sfixed32.lt" expression: "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; // `lte` requires the field value to be less than or equal to the specified @@ -2699,7 +2629,7 @@ message SFixed32Rules { // // ```proto // message MySFixed32 { - // // value must be less than or equal to 10 + // // must be less than or equal to 10 // sfixed32 value = 1 [(buf.validate.field).sfixed32.lte = 10]; // } // ``` @@ -2707,7 +2637,7 @@ message SFixed32Rules { id: "sfixed32.lte" expression: "!has(rules.gte) && !has(rules.gt) && this > rules.lte" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; } oneof greater_than { @@ -2719,13 +2649,13 @@ message SFixed32Rules { // // ```proto // message MySFixed32 { - // // value must be greater than 5 [sfixed32.gt] + // // must be greater than 5 [sfixed32.gt] // sfixed32 value = 1 [(buf.validate.field).sfixed32.gt = 5]; // - // // value must be greater than 5 and less than 10 [sfixed32.gt_lt] + // // must be greater than 5 and less than 10 [sfixed32.gt_lt] // sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gt: 5, lt: 10 }]; // - // // value must be greater than 10 or less than 5 [sfixed32.gt_lt_exclusive] + // // must be greater than 10 or less than 5 [sfixed32.gt_lt_exclusive] // sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gt: 10, lt: 5 }]; // } // ``` @@ -2734,31 +2664,31 @@ message SFixed32Rules { id: "sfixed32.gt" expression: "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "sfixed32.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "sfixed32.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "sfixed32.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "sfixed32.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -2770,13 +2700,13 @@ message SFixed32Rules { // // ```proto // message MySFixed32 { - // // value must be greater than or equal to 5 [sfixed32.gte] + // // must be greater than or equal to 5 [sfixed32.gte] // sfixed32 value = 1 [(buf.validate.field).sfixed32.gte = 5]; // - // // value must be greater than or equal to 5 and less than 10 [sfixed32.gte_lt] + // // must be greater than or equal to 5 and less than 10 [sfixed32.gte_lt] // sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gte: 5, lt: 10 }]; // - // // value must be greater than or equal to 10 or less than 5 [sfixed32.gte_lt_exclusive] + // // must be greater than or equal to 10 or less than 5 [sfixed32.gte_lt_exclusive] // sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gte: 10, lt: 5 }]; // } // ``` @@ -2785,31 +2715,31 @@ message SFixed32Rules { id: "sfixed32.gte" expression: "!has(rules.lt) && !has(rules.lte) && this < rules.gte" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "sfixed32.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "sfixed32.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "sfixed32.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "sfixed32.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; } @@ -2820,13 +2750,13 @@ message SFixed32Rules { // // ```proto // message MySFixed32 { - // // value must be in list [1, 2, 3] + // // must be in list [1, 2, 3] // sfixed32 value = 1 [(buf.validate.field).sfixed32 = { in: [1, 2, 3] }]; // } // ``` repeated sfixed32 in = 6 [(predefined).cel = { id: "sfixed32.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to not be equal to any of the specified @@ -2841,7 +2771,7 @@ message SFixed32Rules { // ``` repeated sfixed32 not_in = 7 [(predefined).cel = { id: "sfixed32.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -2861,16 +2791,9 @@ message SFixed32Rules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -2887,7 +2810,7 @@ message SFixed64Rules { // ``` optional sfixed64 const = 1 [(predefined).cel = { id: "sfixed64.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { // `lt` requires the field value to be less than the specified value (field < @@ -2896,7 +2819,7 @@ message SFixed64Rules { // // ```proto // message MySFixed64 { - // // value must be less than 10 + // // must be less than 10 // sfixed64 value = 1 [(buf.validate.field).sfixed64.lt = 10]; // } // ``` @@ -2904,7 +2827,7 @@ message SFixed64Rules { id: "sfixed64.lt" expression: "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; // `lte` requires the field value to be less than or equal to the specified @@ -2913,7 +2836,7 @@ message SFixed64Rules { // // ```proto // message MySFixed64 { - // // value must be less than or equal to 10 + // // must be less than or equal to 10 // sfixed64 value = 1 [(buf.validate.field).sfixed64.lte = 10]; // } // ``` @@ -2921,7 +2844,7 @@ message SFixed64Rules { id: "sfixed64.lte" expression: "!has(rules.gte) && !has(rules.gt) && this > rules.lte" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; } oneof greater_than { @@ -2933,13 +2856,13 @@ message SFixed64Rules { // // ```proto // message MySFixed64 { - // // value must be greater than 5 [sfixed64.gt] + // // must be greater than 5 [sfixed64.gt] // sfixed64 value = 1 [(buf.validate.field).sfixed64.gt = 5]; // - // // value must be greater than 5 and less than 10 [sfixed64.gt_lt] + // // must be greater than 5 and less than 10 [sfixed64.gt_lt] // sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gt: 5, lt: 10 }]; // - // // value must be greater than 10 or less than 5 [sfixed64.gt_lt_exclusive] + // // must be greater than 10 or less than 5 [sfixed64.gt_lt_exclusive] // sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gt: 10, lt: 5 }]; // } // ``` @@ -2948,31 +2871,31 @@ message SFixed64Rules { id: "sfixed64.gt" expression: "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "sfixed64.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "sfixed64.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "sfixed64.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "sfixed64.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -2984,13 +2907,13 @@ message SFixed64Rules { // // ```proto // message MySFixed64 { - // // value must be greater than or equal to 5 [sfixed64.gte] + // // must be greater than or equal to 5 [sfixed64.gte] // sfixed64 value = 1 [(buf.validate.field).sfixed64.gte = 5]; // - // // value must be greater than or equal to 5 and less than 10 [sfixed64.gte_lt] + // // must be greater than or equal to 5 and less than 10 [sfixed64.gte_lt] // sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gte: 5, lt: 10 }]; // - // // value must be greater than or equal to 10 or less than 5 [sfixed64.gte_lt_exclusive] + // // must be greater than or equal to 10 or less than 5 [sfixed64.gte_lt_exclusive] // sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gte: 10, lt: 5 }]; // } // ``` @@ -2999,31 +2922,31 @@ message SFixed64Rules { id: "sfixed64.gte" expression: "!has(rules.lt) && !has(rules.lte) && this < rules.gte" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "sfixed64.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "sfixed64.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "sfixed64.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "sfixed64.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; } @@ -3034,13 +2957,13 @@ message SFixed64Rules { // // ```proto // message MySFixed64 { - // // value must be in list [1, 2, 3] + // // must be in list [1, 2, 3] // sfixed64 value = 1 [(buf.validate.field).sfixed64 = { in: [1, 2, 3] }]; // } // ``` repeated sfixed64 in = 6 [(predefined).cel = { id: "sfixed64.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to not be equal to any of the specified @@ -3055,7 +2978,7 @@ message SFixed64Rules { // ``` repeated sfixed64 not_in = 7 [(predefined).cel = { id: "sfixed64.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -3075,16 +2998,9 @@ message SFixed64Rules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -3102,7 +3018,7 @@ message BoolRules { // ``` optional bool const = 1 [(predefined).cel = { id: "bool.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -3122,16 +3038,9 @@ message BoolRules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -3149,7 +3058,7 @@ message StringRules { // ``` optional string const = 1 [(predefined).cel = { id: "string.const" - expression: "this != getField(rules, 'const') ? 'value must equal `%s`'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal `%s`'.format([getField(rules, 'const')]) : ''" }]; // `len` dictates that the field value must have the specified @@ -3165,7 +3074,7 @@ message StringRules { // ``` optional uint64 len = 19 [(predefined).cel = { id: "string.len" - expression: "uint(this.size()) != rules.len ? 'value length must be %s characters'.format([rules.len]) : ''" + expression: "uint(this.size()) != rules.len ? 'must be %s characters'.format([rules.len]) : ''" }]; // `min_len` specifies that the field value must have at least the specified @@ -3181,7 +3090,7 @@ message StringRules { // ``` optional uint64 min_len = 2 [(predefined).cel = { id: "string.min_len" - expression: "uint(this.size()) < rules.min_len ? 'value length must be at least %s characters'.format([rules.min_len]) : ''" + expression: "uint(this.size()) < rules.min_len ? 'must be at least %s characters'.format([rules.min_len]) : ''" }]; // `max_len` specifies that the field value must have no more than the specified @@ -3197,7 +3106,7 @@ message StringRules { // ``` optional uint64 max_len = 3 [(predefined).cel = { id: "string.max_len" - expression: "uint(this.size()) > rules.max_len ? 'value length must be at most %s characters'.format([rules.max_len]) : ''" + expression: "uint(this.size()) > rules.max_len ? 'must be at most %s characters'.format([rules.max_len]) : ''" }]; // `len_bytes` dictates that the field value must have the specified number of @@ -3212,7 +3121,7 @@ message StringRules { // ``` optional uint64 len_bytes = 20 [(predefined).cel = { id: "string.len_bytes" - expression: "uint(bytes(this).size()) != rules.len_bytes ? 'value length must be %s bytes'.format([rules.len_bytes]) : ''" + expression: "uint(bytes(this).size()) != rules.len_bytes ? 'must be %s bytes'.format([rules.len_bytes]) : ''" }]; // `min_bytes` specifies that the field value must have at least the specified @@ -3228,11 +3137,11 @@ message StringRules { // ``` optional uint64 min_bytes = 4 [(predefined).cel = { id: "string.min_bytes" - expression: "uint(bytes(this).size()) < rules.min_bytes ? 'value length must be at least %s bytes'.format([rules.min_bytes]) : ''" + expression: "uint(bytes(this).size()) < rules.min_bytes ? 'must be at least %s bytes'.format([rules.min_bytes]) : ''" }]; // `max_bytes` specifies that the field value must have no more than the - //specified number of bytes. If the field value contains more bytes, an + // specified number of bytes. If the field value contains more bytes, an // error message will be generated. // // ```proto @@ -3243,7 +3152,7 @@ message StringRules { // ``` optional uint64 max_bytes = 5 [(predefined).cel = { id: "string.max_bytes" - expression: "uint(bytes(this).size()) > rules.max_bytes ? 'value length must be at most %s bytes'.format([rules.max_bytes]) : ''" + expression: "uint(bytes(this).size()) > rules.max_bytes ? 'must be at most %s bytes'.format([rules.max_bytes]) : ''" }]; // `pattern` specifies that the field value must match the specified @@ -3259,11 +3168,11 @@ message StringRules { // ``` optional string pattern = 6 [(predefined).cel = { id: "string.pattern" - expression: "!this.matches(rules.pattern) ? 'value does not match regex pattern `%s`'.format([rules.pattern]) : ''" + expression: "!this.matches(rules.pattern) ? 'does not match regex pattern `%s`'.format([rules.pattern]) : ''" }]; // `prefix` specifies that the field value must have the - //specified substring at the beginning of the string. If the field value + // specified substring at the beginning of the string. If the field value // doesn't start with the specified prefix, an error message will be // generated. // @@ -3275,11 +3184,11 @@ message StringRules { // ``` optional string prefix = 7 [(predefined).cel = { id: "string.prefix" - expression: "!this.startsWith(rules.prefix) ? 'value does not have prefix `%s`'.format([rules.prefix]) : ''" + expression: "!this.startsWith(rules.prefix) ? 'does not have prefix `%s`'.format([rules.prefix]) : ''" }]; // `suffix` specifies that the field value must have the - //specified substring at the end of the string. If the field value doesn't + // specified substring at the end of the string. If the field value doesn't // end with the specified suffix, an error message will be generated. // // ```proto @@ -3290,11 +3199,11 @@ message StringRules { // ``` optional string suffix = 8 [(predefined).cel = { id: "string.suffix" - expression: "!this.endsWith(rules.suffix) ? 'value does not have suffix `%s`'.format([rules.suffix]) : ''" + expression: "!this.endsWith(rules.suffix) ? 'does not have suffix `%s`'.format([rules.suffix]) : ''" }]; // `contains` specifies that the field value must have the - //specified substring anywhere in the string. If the field value doesn't + // specified substring anywhere in the string. If the field value doesn't // contain the specified substring, an error message will be generated. // // ```proto @@ -3305,11 +3214,11 @@ message StringRules { // ``` optional string contains = 9 [(predefined).cel = { id: "string.contains" - expression: "!this.contains(rules.contains) ? 'value does not contain substring `%s`'.format([rules.contains]) : ''" + expression: "!this.contains(rules.contains) ? 'does not contain substring `%s`'.format([rules.contains]) : ''" }]; // `not_contains` specifies that the field value must not have the - //specified substring anywhere in the string. If the field value contains + // specified substring anywhere in the string. If the field value contains // the specified substring, an error message will be generated. // // ```proto @@ -3320,7 +3229,7 @@ message StringRules { // ``` optional string not_contains = 23 [(predefined).cel = { id: "string.not_contains" - expression: "this.contains(rules.not_contains) ? 'value contains substring `%s`'.format([rules.not_contains]) : ''" + expression: "this.contains(rules.not_contains) ? 'contains substring `%s`'.format([rules.not_contains]) : ''" }]; // `in` specifies that the field value must be equal to one of the specified @@ -3329,13 +3238,13 @@ message StringRules { // // ```proto // message MyString { - // // value must be in list ["apple", "banana"] + // // must be in list ["apple", "banana"] // string value = 1 [(buf.validate.field).string.in = "apple", (buf.validate.field).string.in = "banana"]; // } // ``` repeated string in = 10 [(predefined).cel = { id: "string.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` specifies that the field value cannot be equal to any @@ -3349,7 +3258,7 @@ message StringRules { // ``` repeated string not_in = 11 [(predefined).cel = { id: "string.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `WellKnown` rules provide advanced rules against common string @@ -3367,14 +3276,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid email address + // // must be a valid email address // string value = 1 [(buf.validate.field).string.email = true]; // } // ``` bool email = 12 [ (predefined).cel = { id: "string.email" - message: "value must be a valid email address" + message: "must be a valid email address" expression: "!rules.email || this == '' || this.isEmail()" }, (predefined).cel = { @@ -3399,14 +3308,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid hostname + // // must be a valid hostname // string value = 1 [(buf.validate.field).string.hostname = true]; // } // ``` bool hostname = 13 [ (predefined).cel = { id: "string.hostname" - message: "value must be a valid hostname" + message: "must be a valid hostname" expression: "!rules.hostname || this == '' || this.isHostname()" }, (predefined).cel = { @@ -3430,14 +3339,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid IP address + // // must be a valid IP address // string value = 1 [(buf.validate.field).string.ip = true]; // } // ``` bool ip = 14 [ (predefined).cel = { id: "string.ip" - message: "value must be a valid IP address" + message: "must be a valid IP address" expression: "!rules.ip || this == '' || this.isIp()" }, (predefined).cel = { @@ -3453,14 +3362,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid IPv4 address + // // must be a valid IPv4 address // string value = 1 [(buf.validate.field).string.ipv4 = true]; // } // ``` bool ipv4 = 15 [ (predefined).cel = { id: "string.ipv4" - message: "value must be a valid IPv4 address" + message: "must be a valid IPv4 address" expression: "!rules.ipv4 || this == '' || this.isIp(4)" }, (predefined).cel = { @@ -3476,14 +3385,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid IPv6 address + // // must be a valid IPv6 address // string value = 1 [(buf.validate.field).string.ipv6 = true]; // } // ``` bool ipv6 = 16 [ (predefined).cel = { id: "string.ipv6" - message: "value must be a valid IPv6 address" + message: "must be a valid IPv6 address" expression: "!rules.ipv6 || this == '' || this.isIp(6)" }, (predefined).cel = { @@ -3503,14 +3412,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid URI + // // must be a valid URI // string value = 1 [(buf.validate.field).string.uri = true]; // } // ``` bool uri = 17 [ (predefined).cel = { id: "string.uri" - message: "value must be a valid URI" + message: "must be a valid URI" expression: "!rules.uri || this == '' || this.isUri()" }, (predefined).cel = { @@ -3533,13 +3442,13 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid URI Reference + // // must be a valid URI Reference // string value = 1 [(buf.validate.field).string.uri_ref = true]; // } // ``` bool uri_ref = 18 [(predefined).cel = { id: "string.uri_ref" - message: "value must be a valid URI Reference" + message: "must be a valid URI Reference" expression: "!rules.uri_ref || this.isUriRef()" }]; @@ -3550,14 +3459,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid hostname, or ip address + // // must be a valid hostname, or ip address // string value = 1 [(buf.validate.field).string.address = true]; // } // ``` bool address = 21 [ (predefined).cel = { id: "string.address" - message: "value must be a valid hostname, or ip address" + message: "must be a valid hostname, or ip address" expression: "!rules.address || this == '' || this.isHostname() || this.isIp()" }, (predefined).cel = { @@ -3573,14 +3482,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid UUID + // // must be a valid UUID // string value = 1 [(buf.validate.field).string.uuid = true]; // } // ``` bool uuid = 22 [ (predefined).cel = { id: "string.uuid" - message: "value must be a valid UUID" + message: "must be a valid UUID" expression: "!rules.uuid || this == '' || this.matches('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$')" }, (predefined).cel = { @@ -3597,14 +3506,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid trimmed UUID + // // must be a valid trimmed UUID // string value = 1 [(buf.validate.field).string.tuuid = true]; // } // ``` bool tuuid = 33 [ (predefined).cel = { id: "string.tuuid" - message: "value must be a valid trimmed UUID" + message: "must be a valid trimmed UUID" expression: "!rules.tuuid || this == '' || this.matches('^[0-9a-fA-F]{32}$')" }, (predefined).cel = { @@ -3621,14 +3530,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid IP with prefix length + // // must be a valid IP with prefix length // string value = 1 [(buf.validate.field).string.ip_with_prefixlen = true]; // } // ``` bool ip_with_prefixlen = 26 [ (predefined).cel = { id: "string.ip_with_prefixlen" - message: "value must be a valid IP prefix" + message: "must be a valid IP prefix" expression: "!rules.ip_with_prefixlen || this == '' || this.isIpPrefix()" }, (predefined).cel = { @@ -3645,14 +3554,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid IPv4 address with prefix length + // // must be a valid IPv4 address with prefix length // string value = 1 [(buf.validate.field).string.ipv4_with_prefixlen = true]; // } // ``` bool ipv4_with_prefixlen = 27 [ (predefined).cel = { id: "string.ipv4_with_prefixlen" - message: "value must be a valid IPv4 address with prefix length" + message: "must be a valid IPv4 address with prefix length" expression: "!rules.ipv4_with_prefixlen || this == '' || this.isIpPrefix(4)" }, (predefined).cel = { @@ -3669,14 +3578,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid IPv6 address prefix length + // // must be a valid IPv6 address prefix length // string value = 1 [(buf.validate.field).string.ipv6_with_prefixlen = true]; // } // ``` bool ipv6_with_prefixlen = 28 [ (predefined).cel = { id: "string.ipv6_with_prefixlen" - message: "value must be a valid IPv6 address with prefix length" + message: "must be a valid IPv6 address with prefix length" expression: "!rules.ipv6_with_prefixlen || this == '' || this.isIpPrefix(6)" }, (predefined).cel = { @@ -3698,14 +3607,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid IP prefix + // // must be a valid IP prefix // string value = 1 [(buf.validate.field).string.ip_prefix = true]; // } // ``` bool ip_prefix = 29 [ (predefined).cel = { id: "string.ip_prefix" - message: "value must be a valid IP prefix" + message: "must be a valid IP prefix" expression: "!rules.ip_prefix || this == '' || this.isIpPrefix(true)" }, (predefined).cel = { @@ -3727,14 +3636,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid IPv4 prefix + // // must be a valid IPv4 prefix // string value = 1 [(buf.validate.field).string.ipv4_prefix = true]; // } // ``` bool ipv4_prefix = 30 [ (predefined).cel = { id: "string.ipv4_prefix" - message: "value must be a valid IPv4 prefix" + message: "must be a valid IPv4 prefix" expression: "!rules.ipv4_prefix || this == '' || this.isIpPrefix(4, true)" }, (predefined).cel = { @@ -3756,14 +3665,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid IPv6 prefix + // // must be a valid IPv6 prefix // string value = 1 [(buf.validate.field).string.ipv6_prefix = true]; // } // ``` bool ipv6_prefix = 31 [ (predefined).cel = { id: "string.ipv6_prefix" - message: "value must be a valid IPv6 prefix" + message: "must be a valid IPv6 prefix" expression: "!rules.ipv6_prefix || this == '' || this.isIpPrefix(6, true)" }, (predefined).cel = { @@ -3773,20 +3682,20 @@ message StringRules { } ]; - // `host_and_port` specifies that the field value must be valid host/port + // `host_and_port` specifies that the field value must be a valid host/port // pair—for example, "example.com:8080". // // The host can be one of: - //- An IPv4 address in dotted decimal format—for example, "192.168.5.21". - //- An IPv6 address enclosed in square brackets—for example, "[2001:0DB8:ABCD:0012::F1]". - //- A hostname—for example, "example.com". + // - An IPv4 address in dotted decimal format—for example, "192.168.5.21". + // - An IPv6 address enclosed in square brackets—for example, "[2001:0DB8:ABCD:0012::F1]". + // - A hostname—for example, "example.com". // // The port is separated by a colon. It must be non-empty, with a decimal number // in the range of 0-65535, inclusive. bool host_and_port = 32 [ (predefined).cel = { id: "string.host_and_port" - message: "value must be a valid host (hostname or IP address) and port pair" + message: "must be a valid host (hostname or IP address) and port pair" expression: "!rules.host_and_port || this == '' || this.isHostAndPort(true)" }, (predefined).cel = { @@ -3802,14 +3711,14 @@ message StringRules { // // ```proto // message MyString { - // // value must be a valid ULID + // // must be a valid ULID // string value = 1 [(buf.validate.field).string.ulid = true]; // } // ``` bool ulid = 35 [ (predefined).cel = { id: "string.ulid" - message: "value must be a valid ULID" + message: "must be a valid ULID" expression: "!rules.ulid || this == '' || this.matches('^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$')" }, (predefined).cel = { @@ -3819,13 +3728,87 @@ message StringRules { } ]; + // `protobuf_fqn` specifies that the field value must be a valid fully-qualified + // Protobuf name as defined by the [Protobuf Language Specification](https://protobuf.com/docs/language-spec). + // + // A fully-qualified Protobuf name is a dot-separated list of Protobuf identifiers, + // where each identifier starts with a letter or underscore and is followed by zero or + // more letters, underscores, or digits. + // + // Examples: "buf.validate", "google.protobuf.Timestamp", "my_package.MyMessage". + // + // Note: historically, fully-qualified Protobuf names were represented with a leading + // dot (for example, ".buf.validate.StringRules"). Modern Protobuf does not use the + // leading dot, and most fully-qualified names are represented without it. Use + // `protobuf_dot_fqn` if a leading dot is required. + // + // If the field value isn't a valid fully-qualified Protobuf name, an error message + // will be generated. + // + // ```proto + // message MyString { + // // value must be a valid fully-qualified Protobuf name + // string value = 1 [(buf.validate.field).string.protobuf_fqn = true]; + // } + // ``` + bool protobuf_fqn = 37 [ + (predefined).cel = { + id: "string.protobuf_fqn" + message: "must be a valid fully-qualified Protobuf name" + expression: "!rules.protobuf_fqn || this == '' || this.matches('^[A-Za-z_][A-Za-z_0-9]*(\\\\.[A-Za-z_][A-Za-z_0-9]*)*$')" + }, + (predefined).cel = { + id: "string.protobuf_fqn_empty" + message: "value is empty, which is not a valid fully-qualified Protobuf name" + expression: "!rules.protobuf_fqn || this != ''" + } + ]; + + // `protobuf_dot_fqn` specifies that the field value must be a valid fully-qualified + // Protobuf name with a leading dot, as defined by the + // [Protobuf Language Specification](https://protobuf.com/docs/language-spec). + // + // A fully-qualified Protobuf name with a leading dot is a dot followed by a + // dot-separated list of Protobuf identifiers, where each identifier starts with a + // letter or underscore and is followed by zero or more letters, underscores, or + // digits. + // + // Examples: ".buf.validate", ".google.protobuf.Timestamp", ".my_package.MyMessage". + // + // Note: this is the historical representation of fully-qualified Protobuf names, + // where a leading dot denotes an absolute reference. Modern Protobuf does not use + // the leading dot, and most fully-qualified names are represented without it. Most + // users will want to use `protobuf_fqn` instead. + // + // If the field value isn't a valid fully-qualified Protobuf name with a leading dot, + // an error message will be generated. + // + // ```proto + // message MyString { + // // value must be a valid fully-qualified Protobuf name with a leading dot + // string value = 1 [(buf.validate.field).string.protobuf_dot_fqn = true]; + // } + // ``` + bool protobuf_dot_fqn = 38 [ + (predefined).cel = { + id: "string.protobuf_dot_fqn" + message: "must be a valid fully-qualified Protobuf name with a leading dot" + expression: "!rules.protobuf_dot_fqn || this == '' || this.matches('^\\\\.[A-Za-z_][A-Za-z_0-9]*(\\\\.[A-Za-z_][A-Za-z_0-9]*)*$')" + }, + (predefined).cel = { + id: "string.protobuf_dot_fqn_empty" + message: "value is empty, which is not a valid fully-qualified Protobuf name with a leading dot" + expression: "!rules.protobuf_dot_fqn || this != ''" + } + ]; + // `well_known_regex` specifies a common well-known pattern // defined as a regex. If the field value doesn't match the well-known // regex, an error message will be generated. // // ```proto // message MyString { - // // value must be a valid HTTP header value + // // must be a valid HTTP header value // string value = 1 [(buf.validate.field).string.well_known_regex = KNOWN_REGEX_HTTP_HEADER_VALUE]; // } // ``` @@ -3842,7 +3825,7 @@ message StringRules { KnownRegex well_known_regex = 24 [ (predefined).cel = { id: "string.well_known_regex.header_name" - message: "value must be a valid HTTP header name" + message: "must be a valid HTTP header name" expression: "rules.well_known_regex != 1 || this == '' || this.matches(!has(rules.strict) || rules.strict ?" "'^:?[0-9a-zA-Z!#$%&\\'*+-.^_|~\\x60]+$' :" @@ -3855,7 +3838,7 @@ message StringRules { }, (predefined).cel = { id: "string.well_known_regex.header_value" - message: "value must be a valid HTTP header value" + message: "must be a valid HTTP header value" expression: "rules.well_known_regex != 2 || this.matches(!has(rules.strict) || rules.strict ?" "'^[^\\u0000-\\u0008\\u000A-\\u001F\\u007F]*$' :" @@ -3895,16 +3878,9 @@ message StringRules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -3927,13 +3903,13 @@ message BytesRules { // // ```proto // message MyBytes { - // // value must be "\x01\x02\x03\x04" + // // must be "\x01\x02\x03\x04" // bytes value = 1 [(buf.validate.field).bytes.const = "\x01\x02\x03\x04"]; // } // ``` optional bytes const = 1 [(predefined).cel = { id: "bytes.const" - expression: "this != getField(rules, 'const') ? 'value must be %x'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must be %x'.format([getField(rules, 'const')]) : ''" }]; // `len` requires the field value to have the specified length in bytes. @@ -3947,7 +3923,7 @@ message BytesRules { // ``` optional uint64 len = 13 [(predefined).cel = { id: "bytes.len" - expression: "uint(this.size()) != rules.len ? 'value length must be %s bytes'.format([rules.len]) : ''" + expression: "uint(this.size()) != rules.len ? 'must be %s bytes'.format([rules.len]) : ''" }]; // `min_len` requires the field value to have at least the specified minimum @@ -3962,7 +3938,7 @@ message BytesRules { // ``` optional uint64 min_len = 2 [(predefined).cel = { id: "bytes.min_len" - expression: "uint(this.size()) < rules.min_len ? 'value length must be at least %s bytes'.format([rules.min_len]) : ''" + expression: "uint(this.size()) < rules.min_len ? 'must be at least %s bytes'.format([rules.min_len]) : ''" }]; // `max_len` requires the field value to have at most the specified maximum @@ -3971,13 +3947,13 @@ message BytesRules { // // ```proto // message MyBytes { - // // value must be at most 6 bytes. + // // must be at most 6 bytes. // optional bytes value = 1 [(buf.validate.field).bytes.max_len = 6]; // } // ``` optional uint64 max_len = 3 [(predefined).cel = { id: "bytes.max_len" - expression: "uint(this.size()) > rules.max_len ? 'value must be at most %s bytes'.format([rules.max_len]) : ''" + expression: "uint(this.size()) > rules.max_len ? 'must be at most %s bytes'.format([rules.max_len]) : ''" }]; // `pattern` requires the field value to match the specified regular @@ -3994,7 +3970,7 @@ message BytesRules { // ``` optional string pattern = 4 [(predefined).cel = { id: "bytes.pattern" - expression: "!string(this).matches(rules.pattern) ? 'value must match regex pattern `%s`'.format([rules.pattern]) : ''" + expression: "!string(this).matches(rules.pattern) ? 'must match regex pattern `%s`'.format([rules.pattern]) : ''" }]; // `prefix` requires the field value to have the specified bytes at the @@ -4009,7 +3985,7 @@ message BytesRules { // ``` optional bytes prefix = 5 [(predefined).cel = { id: "bytes.prefix" - expression: "!this.startsWith(rules.prefix) ? 'value does not have prefix %x'.format([rules.prefix]) : ''" + expression: "!this.startsWith(rules.prefix) ? 'does not have prefix %x'.format([rules.prefix]) : ''" }]; // `suffix` requires the field value to have the specified bytes at the end @@ -4024,7 +4000,7 @@ message BytesRules { // ``` optional bytes suffix = 6 [(predefined).cel = { id: "bytes.suffix" - expression: "!this.endsWith(rules.suffix) ? 'value does not have suffix %x'.format([rules.suffix]) : ''" + expression: "!this.endsWith(rules.suffix) ? 'does not have suffix %x'.format([rules.suffix]) : ''" }]; // `contains` requires the field value to have the specified bytes anywhere in @@ -4039,7 +4015,7 @@ message BytesRules { // ``` optional bytes contains = 7 [(predefined).cel = { id: "bytes.contains" - expression: "!this.contains(rules.contains) ? 'value does not contain %x'.format([rules.contains]) : ''" + expression: "!this.contains(rules.contains) ? 'does not contain %x'.format([rules.contains]) : ''" }]; // `in` requires the field value to be equal to one of the specified @@ -4054,7 +4030,7 @@ message BytesRules { // ``` repeated bytes in = 8 [(predefined).cel = { id: "bytes.in" - expression: "getField(rules, 'in').size() > 0 && !(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "getField(rules, 'in').size() > 0 && !(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to be not equal to any of the specified @@ -4070,7 +4046,7 @@ message BytesRules { // ``` repeated bytes not_in = 9 [(predefined).cel = { id: "bytes.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // WellKnown rules provide advanced rules against common byte @@ -4081,14 +4057,14 @@ message BytesRules { // // ```proto // message MyBytes { - // // value must be a valid IP address + // // must be a valid IP address // optional bytes value = 1 [(buf.validate.field).bytes.ip = true]; // } // ``` bool ip = 10 [ (predefined).cel = { id: "bytes.ip" - message: "value must be a valid IP address" + message: "must be a valid IP address" expression: "!rules.ip || this.size() == 0 || this.size() == 4 || this.size() == 16" }, (predefined).cel = { @@ -4103,14 +4079,14 @@ message BytesRules { // // ```proto // message MyBytes { - // // value must be a valid IPv4 address + // // must be a valid IPv4 address // optional bytes value = 1 [(buf.validate.field).bytes.ipv4 = true]; // } // ``` bool ipv4 = 11 [ (predefined).cel = { id: "bytes.ipv4" - message: "value must be a valid IPv4 address" + message: "must be a valid IPv4 address" expression: "!rules.ipv4 || this.size() == 0 || this.size() == 4" }, (predefined).cel = { @@ -4124,14 +4100,14 @@ message BytesRules { // If the field value doesn't meet this rule, an error message is generated. // ```proto // message MyBytes { - // // value must be a valid IPv6 address + // // must be a valid IPv6 address // optional bytes value = 1 [(buf.validate.field).bytes.ipv6 = true]; // } // ``` bool ipv6 = 12 [ (predefined).cel = { id: "bytes.ipv6" - message: "value must be a valid IPv6 address" + message: "must be a valid IPv6 address" expression: "!rules.ipv6 || this.size() == 0 || this.size() == 16" }, (predefined).cel = { @@ -4141,22 +4117,21 @@ message BytesRules { } ]; - // `uuid` ensures that the field `value` encodes the 128-bit UUID data as - // defined by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2). - // The field must contain exactly 16 bytes - // representing the UUID. If the field value isn't a valid UUID, an error - // message will be generated. + // `uuid` ensures that the field value encodes 128-bit UUID data as defined + // by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2). + // The field must contain exactly 16 bytes representing the UUID. If the + // field value isn't a valid UUID, an error message will be generated. // // ```proto // message MyBytes { - // // value must be a valid UUID + // // must be a valid UUID // optional bytes value = 1 [(buf.validate.field).bytes.uuid = true]; // } // ``` bool uuid = 15 [ (predefined).cel = { id: "bytes.uuid" - message: "value must be a valid UUID" + message: "must be a valid UUID" expression: "!rules.uuid || this.size() == 0 || this.size() == 16" }, (predefined).cel = { @@ -4184,16 +4159,9 @@ message BytesRules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -4216,7 +4184,7 @@ message EnumRules { // ``` optional int32 const = 1 [(predefined).cel = { id: "enum.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; // `defined_only` requires the field value to be one of the defined values for @@ -4237,8 +4205,8 @@ message EnumRules { optional bool defined_only = 2; // `in` requires the field value to be equal to one of the - //specified enum values. If the field value doesn't match any of the - //specified values, an error message is generated. + // specified enum values. If the field value doesn't match any of the + // specified values, an error message is generated. // // ```proto // enum MyEnum { @@ -4254,11 +4222,11 @@ message EnumRules { // ``` repeated int32 in = 3 [(predefined).cel = { id: "enum.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to be not equal to any of the - //specified enum values. If the field value matches one of the specified + // specified enum values. If the field value matches one of the specified // values, an error message is generated. // // ```proto @@ -4275,7 +4243,7 @@ message EnumRules { // ``` repeated int32 not_in = 4 [(predefined).cel = { id: "enum.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -4299,16 +4267,9 @@ message EnumRules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -4327,7 +4288,7 @@ message RepeatedRules { // ``` optional uint64 min_items = 1 [(predefined).cel = { id: "repeated.min_items" - expression: "uint(this.size()) < rules.min_items ? 'value must contain at least %d item(s)'.format([rules.min_items]) : ''" + expression: "uint(this.size()) < rules.min_items ? 'must contain at least %d item(s)'.format([rules.min_items]) : ''" }]; // `max_items` denotes that this field must not exceed a @@ -4343,7 +4304,7 @@ message RepeatedRules { // ``` optional uint64 max_items = 2 [(predefined).cel = { id: "repeated.max_items" - expression: "uint(this.size()) > rules.max_items ? 'value must contain no more than %s item(s)'.format([rules.max_items]) : ''" + expression: "uint(this.size()) > rules.max_items ? 'must contain no more than %s item(s)'.format([rules.max_items]) : ''" }]; // `unique` indicates that all elements in this field must @@ -4382,16 +4343,9 @@ message RepeatedRules { // cannot be unset. optional FieldRules items = 4; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -4460,23 +4414,16 @@ message MapRules { // Note that the `required` rule does not apply. Map values cannot be unset. optional FieldRules values = 5; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } // AnyRules describe rules applied exclusively to the `google.protobuf.Any` well-known type. message AnyRules { // `in` requires the field's `type_url` to be equal to one of the - //specified values. If it doesn't match any of the specified values, an error + // specified values. If it doesn't match any of the specified values, an error // message is generated. // // ```proto @@ -4489,7 +4436,7 @@ message AnyRules { // ``` repeated string in = 2; - // requires the field's type_url to be not equal to any of the specified values. If it matches any of the specified values, an error message is generated. + // `not_in` requires the field's type_url to be not equal to any of the specified values. If it matches any of the specified values, an error message is generated. // // ```proto // message MyAny { @@ -4516,7 +4463,7 @@ message DurationRules { // ``` optional google.protobuf.Duration const = 2 [(predefined).cel = { id: "duration.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { // `lt` stipulates that the field must be less than the specified value of the `google.protobuf.Duration` type, @@ -4525,7 +4472,7 @@ message DurationRules { // // ```proto // message MyDuration { - // // value must be less than 5s + // // must be less than 5s // google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = "5s"]; // } // ``` @@ -4533,7 +4480,7 @@ message DurationRules { id: "duration.lt" expression: "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; // `lte` indicates that the field must be less than or equal to the specified @@ -4542,7 +4489,7 @@ message DurationRules { // // ```proto // message MyDuration { - // // value must be less than or equal to 10s + // // must be less than or equal to 10s // google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = "10s"]; // } // ``` @@ -4550,7 +4497,7 @@ message DurationRules { id: "duration.lte" expression: "!has(rules.gte) && !has(rules.gt) && this > rules.lte" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; } oneof greater_than { @@ -4577,31 +4524,31 @@ message DurationRules { id: "duration.gt" expression: "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "duration.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "duration.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "duration.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "duration.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -4628,31 +4575,31 @@ message DurationRules { id: "duration.gte" expression: "!has(rules.lt) && !has(rules.lte) && this < rules.gte" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "duration.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "duration.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "duration.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "duration.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; } @@ -4663,13 +4610,13 @@ message DurationRules { // // ```proto // message MyDuration { - // // value must be in list [1s, 2s, 3s] + // // must be in list [1s, 2s, 3s] // google.protobuf.Duration value = 1 [(buf.validate.field).duration.in = ["1s", "2s", "3s"]]; // } // ``` repeated google.protobuf.Duration in = 7 [(predefined).cel = { id: "duration.in" - expression: "!(this in getField(rules, 'in')) ? 'value must be in list %s'.format([getField(rules, 'in')]) : ''" + expression: "!(this in getField(rules, 'in')) ? 'must be in list %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` denotes that the field must not be equal to @@ -4685,7 +4632,7 @@ message DurationRules { // ``` repeated google.protobuf.Duration not_in = 8 [(predefined).cel = { id: "duration.not_in" - expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + expression: "this in rules.not_in ? 'must not be in list %s'.format([rules.not_in]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -4705,16 +4652,9 @@ message DurationRules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -4734,7 +4674,7 @@ message FieldMaskRules { // ``` optional google.protobuf.FieldMask const = 1 [(predefined).cel = { id: "field_mask.const" - expression: "this.paths != getField(rules, 'const').paths ? 'value must equal paths %s'.format([getField(rules, 'const').paths]) : ''" + expression: "this.paths != getField(rules, 'const').paths ? 'must equal paths %s'.format([getField(rules, 'const').paths]) : ''" }]; // `in` requires the field value to only contain paths matching specified @@ -4753,7 +4693,7 @@ message FieldMaskRules { // ``` repeated string in = 2 [(predefined).cel = { id: "field_mask.in" - expression: "!this.paths.all(p, p in getField(rules, 'in') || getField(rules, 'in').exists(f, p.startsWith(f+'.'))) ? 'value must only contain paths in %s'.format([getField(rules, 'in')]) : ''" + expression: "!this.paths.all(p, p in getField(rules, 'in') || getField(rules, 'in').exists(f, p.startsWith(f+'.'))) ? 'must only contain paths in %s'.format([getField(rules, 'in')]) : ''" }]; // `not_in` requires the field value to not contain paths matching specified @@ -4772,7 +4712,7 @@ message FieldMaskRules { // ``` repeated string not_in = 3 [(predefined).cel = { id: "field_mask.not_in" - expression: "!this.paths.all(p, !(p in getField(rules, 'not_in') || getField(rules, 'not_in').exists(f, p.startsWith(f+'.')))) ? 'value must not contain any paths in %s'.format([getField(rules, 'not_in')]) : ''" + expression: "!this.paths.all(p, !(p in getField(rules, 'not_in') || getField(rules, 'not_in').exists(f, p.startsWith(f+'.')))) ? 'must not contain any paths in %s'.format([getField(rules, 'not_in')]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -4792,16 +4732,9 @@ message FieldMaskRules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; } @@ -4817,25 +4750,25 @@ message TimestampRules { // ``` optional google.protobuf.Timestamp const = 2 [(predefined).cel = { id: "timestamp.const" - expression: "this != getField(rules, 'const') ? 'value must equal %s'.format([getField(rules, 'const')]) : ''" + expression: "this != getField(rules, 'const') ? 'must equal %s'.format([getField(rules, 'const')]) : ''" }]; oneof less_than { - // requires the duration field value to be less than the specified value (field < value). If the field value doesn't meet the required conditions, an error message is generated. + // `lt` requires the timestamp field value to be less than the specified value (field < value). If the field value doesn't meet the required conditions, an error message is generated. // // ```proto - // message MyDuration { - // // duration must be less than 'P3D' [duration.lt] - // google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = { seconds: 259200 }]; + // message MyTimestamp { + // // timestamp must be less than '2023-01-01T00:00:00Z' [timestamp.lt] + // google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lt = { seconds: 1672444800 }]; // } // ``` google.protobuf.Timestamp lt = 3 [(predefined).cel = { id: "timestamp.lt" expression: "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" - "? 'value must be less than %s'.format([rules.lt]) : ''" + "? 'must be less than %s'.format([rules.lt]) : ''" }]; - // requires the timestamp field value to be less than or equal to the specified value (field <= value). If the field value doesn't meet the required conditions, an error message is generated. + // `lte` requires the timestamp field value to be less than or equal to the specified value (field <= value). If the field value doesn't meet the required conditions, an error message is generated. // // ```proto // message MyTimestamp { @@ -4847,20 +4780,20 @@ message TimestampRules { id: "timestamp.lte" expression: "!has(rules.gte) && !has(rules.gt) && this > rules.lte" - "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + "? 'must be less than or equal to %s'.format([rules.lte]) : ''" }]; // `lt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be less than the current time. `lt_now` can only be used with the `within` rule. // // ```proto // message MyTimestamp { - // // value must be less than now + // // must be less than now // google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.lt_now = true]; // } // ``` bool lt_now = 7 [(predefined).cel = { id: "timestamp.lt_now" - expression: "(rules.lt_now && this > now) ? 'value must be less than now' : ''" + expression: "(rules.lt_now && this > now) ? 'must be less than now' : ''" }]; } oneof greater_than { @@ -4887,31 +4820,31 @@ message TimestampRules { id: "timestamp.gt" expression: "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" - "? 'value must be greater than %s'.format([rules.gt]) : ''" + "? 'must be greater than %s'.format([rules.gt]) : ''" }, (predefined).cel = { id: "timestamp.gt_lt" expression: "has(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]) : ''" + "? 'must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "timestamp.gt_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" }, (predefined).cel = { id: "timestamp.gt_lte" expression: "has(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]) : ''" + "? 'must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" }, (predefined).cel = { id: "timestamp.gt_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" } ]; @@ -4938,31 +4871,31 @@ message TimestampRules { id: "timestamp.gte" expression: "!has(rules.lt) && !has(rules.lte) && this < rules.gte" - "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + "? 'must be greater than or equal to %s'.format([rules.gte]) : ''" }, (predefined).cel = { id: "timestamp.gte_lt" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "timestamp.gte_lt_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" }, (predefined).cel = { id: "timestamp.gte_lte" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" }, (predefined).cel = { id: "timestamp.gte_lte_exclusive" expression: "has(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]) : ''" + "? 'must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" } ]; @@ -4970,13 +4903,13 @@ message TimestampRules { // // ```proto // message MyTimestamp { - // // value must be greater than now + // // must be greater than now // google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.gt_now = true]; // } // ``` bool gt_now = 8 [(predefined).cel = { id: "timestamp.gt_now" - expression: "(rules.gt_now && this < now) ? 'value must be greater than now' : ''" + expression: "(rules.gt_now && this < now) ? 'must be greater than now' : ''" }]; } @@ -4984,13 +4917,13 @@ message TimestampRules { // // ```proto // message MyTimestamp { - // // value must be within 1 hour of now + // // must be within 1 hour of now // google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.within = {seconds: 3600}]; // } // ``` optional google.protobuf.Duration within = 9 [(predefined).cel = { id: "timestamp.within" - expression: "this < now-rules.within || this > now+rules.within ? 'value must be within %s of now'.format([rules.within]) : ''" + expression: "this < now-rules.within || this > now+rules.within ? 'must be within %s of now'.format([rules.within]) : ''" }]; // `example` specifies values that the field may have. These values SHOULD @@ -5010,16 +4943,9 @@ message TimestampRules { expression: "true" }]; - // Extension fields in this range that have the (buf.validate.predefined) - // option set will be treated as predefined field rules that can then be - // set on the field options of other fields to apply field rules. - // Extension numbers 1000 to 99999 are reserved for extension numbers that are - // defined in the [Protobuf Global Extension Registry][1]. Extension numbers - // above this range are reserved for extension numbers that are not explicitly - // assigned. For rules defined in publicly-consumed schemas, use of extensions - // above 99999 is discouraged due to the risk of conflicts. - // - // [1]: https://github.com/protocolbuffers/protobuf/blob/main/docs/options.md + // Extension fields that have the (buf.validate.predefined) option set + // will be treated as predefined field rules. + // See https://protovalidate.com/schemas/predefined-rules/ extensions 1000 to max; }