From b486169fb746cb69ce198f1a742562f006ff735f Mon Sep 17 00:00:00 2001 From: Dan Hudlow Date: Tue, 23 Sep 2025 16:56:51 -0500 Subject: [PATCH 01/13] Refactor conformance test ingestion --- Makefile | 40 +- features/Makefile | 35 +- features/basic.feature | 333 +- features/basic.textproto | 18 + features/bindings_ext.feature | 37 + features/bindings_ext.textproto | 43 + features/block_ext.feature | 258 ++ features/block_ext.textproto | 1070 +++++ features/comparisons.feature | 2546 +++++++---- features/comparisons.textproto | 1379 +++++- features/conversions.feature | 694 +-- features/conversions.textproto | 224 +- features/dynamic.feature | 2206 ++++------ features/dynamic.textproto | 584 ++- features/encoders_ext.feature | 39 + features/encoders_ext.textproto | 44 + features/enums.feature | 419 +- features/enums.textproto | 933 ++++- features/fields.feature | 430 +- features/fields.textproto | 342 +- features/fp_math.feature | 239 +- features/fp_math.textproto | 3 + features/integer_math.feature | 454 +- features/integer_math.textproto | 67 +- features/lists.feature | 231 +- features/lists.textproto | 109 +- features/logic.feature | 213 +- features/logic.textproto | 3 + features/macros.feature | 307 +- features/macros.textproto | 33 +- features/macros2.feature | 294 ++ features/macros2.textproto | 354 ++ features/math_ext.feature | 1264 ++++++ features/math_ext.textproto | 1266 ++++++ features/namespace.feature | 74 +- features/namespace.textproto | 3 + features/optionals.feature | 434 ++ features/optionals.textproto | 451 ++ features/parse.feature | 237 +- features/parse.textproto | 115 +- features/plumbing.feature | 47 +- features/plumbing.textproto | 3 + features/proto2.feature | 882 ++-- features/proto2.textproto | 804 +++- features/proto2_ext.feature | 155 + features/proto2_ext.textproto | 372 ++ features/proto3.feature | 727 ++-- features/proto3.textproto | 346 +- features/steps/integration_binding.py | 115 +- features/string.feature | 304 +- features/string.textproto | 34 +- features/string_ext.feature | 1268 ++++++ features/string_ext.textproto | 1417 +++++++ features/timestamps.feature | 464 +- features/timestamps.textproto | 97 +- features/type_deduction.feature | 39 + features/type_deduction.textproto | 953 +++++ features/unknowns.feature | 2 +- features/unknowns.textproto | 3 + features/wrappers.feature | 311 ++ features/wrappers.textproto | 374 ++ pyproject.toml | 63 + src/celpy/__main__.py | 4 +- src/celpy/celtypes.py | 10 +- tools/Dockerfile | 14 - tools/README.rst | 192 +- tools/gherkin.feature.jinja | 17 + tools/gherkinize.py | 911 ++++ tools/go.mod | 8 - tools/go.sum | 86 - tools/mkgherkin.go | 147 - tools/pb2g.py | 1120 ----- tools/test_gherkinize.py | 5581 +++++++++++++++++++++++++ tools/test_pb2g.py | 2310 ---------- tools/wip.txt | 958 +++++ tox.ini | 92 - type_check/lineprecision.txt | 16 +- uv.lock | 106 + 78 files changed, 28409 insertions(+), 9768 deletions(-) create mode 100644 features/bindings_ext.feature create mode 100644 features/bindings_ext.textproto create mode 100644 features/block_ext.feature create mode 100644 features/block_ext.textproto create mode 100644 features/encoders_ext.feature create mode 100644 features/encoders_ext.textproto create mode 100644 features/macros2.feature create mode 100644 features/macros2.textproto create mode 100644 features/math_ext.feature create mode 100644 features/math_ext.textproto create mode 100644 features/optionals.feature create mode 100644 features/optionals.textproto create mode 100644 features/proto2_ext.feature create mode 100644 features/proto2_ext.textproto create mode 100644 features/string_ext.feature create mode 100644 features/string_ext.textproto create mode 100644 features/type_deduction.feature create mode 100644 features/type_deduction.textproto create mode 100644 features/wrappers.feature create mode 100644 features/wrappers.textproto delete mode 100644 tools/Dockerfile create mode 100644 tools/gherkin.feature.jinja create mode 100644 tools/gherkinize.py delete mode 100644 tools/go.mod delete mode 100644 tools/go.sum delete mode 100644 tools/mkgherkin.go delete mode 100644 tools/pb2g.py create mode 100644 tools/test_gherkinize.py delete mode 100644 tools/test_pb2g.py create mode 100644 tools/wip.txt delete mode 100644 tox.ini diff --git a/Makefile b/Makefile index acad1b9..16a711f 100644 --- a/Makefile +++ b/Makefile @@ -20,37 +20,55 @@ build: uv build -install-tools: - cd tools && docker pull golang && docker build -t mkgherkin . - test: cd features && $(MAKE) all - tox run -e py312 + uv run tox run -e py312 test-all: cd features && $(MAKE) all - tox run + uv run tox run test-wip: cd features && $(MAKE) all - tox run -e wip + uv run tox run -e wip test-tools: - tox run -e tools - cd features && $(MAKE) scan + uv run tox run -e tools + +test-clean: + cd features && $(MAKE) clean + +conformance: + cd features && $(MAKE) all + uv run tox run -e conformance + +conformance-compiled: + cd features && $(MAKE) all + uv run tox run -e conformance-compiled + +conformance-wip: + cd features && $(MAKE) all + uv run tox run -e conformance-wip + +conformance-wip-compiled: + cd features && $(MAKE) all + uv run tox run -e conformance-wip docs: $(wildcard docs/source/*.rst) PYTHONPATH=src python -m doctest docs/source/*.rst export PYTHONPATH=$(PWD)/src:$(PWD)/tools && cd docs && $(MAKE) html lint: - tox run -e lint + uv run tox run -e lint + +format: + uv run ruff format src tools coverage: - coverage report -m + uv run coverage report -m clean: - rm -rf .tox .Python bin include lib pip-selfcheck.json + rm -rf .mypy_cache .pytest_cache .ruff_cache .tox .Python bin include lib pip-selfcheck.json benchmarks: PYTHONPATH=src python benches/large_resource_set.py TagAssetBenchmark diff --git a/features/Makefile b/features/Makefile index 379e941..03d94ab 100644 --- a/features/Makefile +++ b/features/Makefile @@ -19,16 +19,19 @@ HERE := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) TOOLS = $(HERE)../tools -CEL_SPEC_PATH ?= $(HERE)../../cel-spec +CEL_SPEC_PATH ?= $(HERE)../../../google/cel-spec CEL_SIMPLE_TESTDATA ?= $(CEL_SPEC_PATH)/tests/simple/testdata # This is most -- but not all -- the feature files. # Some are built manually. These are built from textproto files. FEATURES = \ basic.feature \ + bindings_ext.feature \ + block_ext.feature \ comparisons.feature \ conversions.feature \ dynamic.feature \ + encoders_ext.feature \ enums.feature \ fields.feature \ fp_math.feature \ @@ -36,14 +39,21 @@ FEATURES = \ lists.feature \ logic.feature \ macros.feature \ + macros2.feature \ + math_ext.feature \ namespace.feature \ + optionals.feature \ parse.feature \ plumbing.feature \ proto2.feature \ + proto2_ext.feature \ proto3.feature \ string.feature \ + string_ext.feature \ timestamps.feature \ - unknowns.feature + type_deduction.feature \ + unknowns.feature \ + wrappers.feature SOURCES := $(patsubst %.feature,%.textproto,$(FEATURES)) @@ -60,26 +70,7 @@ all : $(FEATURES) # Create Gherkin from the textproto serialization. %.feature : %.textproto - python $(TOOLS)/pb2g.py $^ -o $@ - -# Run the lark scanner to be sure the grammar works for *all* of the textproto files. -# This is necessary because we don't have a full textproto implementation. -scan : $(SOURCES) - @python $(TOOLS)/pb2g.py - @for name in $(SOURCES); do \ - python $(TOOLS)/pb2g.py $$name >/dev/null; \ - done - @echo "\nAll files scanned successfully" - -# When the grammar was incomplete, we sometimes had empty .feature files. -# It helps to remove them before rerunning. -clean-broken: - @for name in $(FEATURES); do \ - if [ -f $$name -a ! -s $$name ]; then \ - echo empty $$name; \ - rm $$name; \ - fi; \ - done + uv run $(TOOLS)/gherkinize.py -v $^ -o $@ clean-features: rm $(FEATURES) diff --git a/features/basic.feature b/features/basic.feature index d3f40ac..7a7af67 100644 --- a/features/basic.feature +++ b/features/basic.feature @@ -1,324 +1,253 @@ - +@conformance Feature: basic Basic conformance tests that all implementations should pass. # self_eval_zeroish -- Simple self-evaluating forms to zero-ish values. -Scenario: self_eval_int_zero - - When CEL expression "0" is evaluated - # int64_value:0 - Then value is IntType(source=0) +Scenario: self_eval_zeroish/self_eval_int_zero -Scenario: self_eval_uint_zero + When CEL expression '0' is evaluated + Then value is celpy.celtypes.IntType(source=0) - When CEL expression "0u" is evaluated - # uint64_value:0 - Then value is UintType(source=0) +Scenario: self_eval_zeroish/self_eval_uint_zero + When CEL expression '0u' is evaluated + Then value is celpy.celtypes.UintType(source=0) -Scenario: self_eval_float_zero +Scenario: self_eval_zeroish/self_eval_uint_alias_zero - When CEL expression "0.0" is evaluated - # double_value:0 - Then value is DoubleType(source=0) + When CEL expression '0U' is evaluated + Then value is celpy.celtypes.UintType(source=0) +Scenario: self_eval_zeroish/self_eval_float_zero -Scenario: self_eval_float_zerowithexp + When CEL expression '0.0' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) - When CEL expression "0e+0" is evaluated - # double_value:0 - Then value is DoubleType(source=0) +Scenario: self_eval_zeroish/self_eval_float_zerowithexp + When CEL expression '0e+0' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) -Scenario: self_eval_string_empty +Scenario: self_eval_zeroish/self_eval_string_empty When CEL expression "''" is evaluated - # string_value:"" - Then value is StringType(source='') - + Then value is celpy.celtypes.StringType(source='') -Scenario: self_eval_string_empty_quotes +Scenario: self_eval_zeroish/self_eval_string_empty_quotes When CEL expression '""' is evaluated - # string_value:"" - Then value is StringType(source='') + Then value is celpy.celtypes.StringType(source='') - -Scenario: self_eval_string_raw_prefix +Scenario: self_eval_zeroish/self_eval_string_raw_prefix When CEL expression 'r""' is evaluated - # string_value:"" - Then value is StringType(source='') - + Then value is celpy.celtypes.StringType(source='') -Scenario: self_eval_bytes_empty +Scenario: self_eval_zeroish/self_eval_bytes_empty When CEL expression 'b""' is evaluated - # bytes_value:"" - Then value is BytesType(source=b'') + Then value is celpy.celtypes.BytesType(source=b'') +Scenario: self_eval_zeroish/self_eval_bool_false -Scenario: self_eval_bool_false + When CEL expression 'false' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "false" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: self_eval_zeroish/self_eval_null - -Scenario: self_eval_null - - When CEL expression "null" is evaluated - # null_value:NULL_VALUE + When CEL expression 'null' is evaluated Then value is None +Scenario: self_eval_zeroish/self_eval_empty_list -Scenario: self_eval_empty_list - - When CEL expression "[]" is evaluated - # list_value:{} + When CEL expression '[]' is evaluated Then value is [] +Scenario: self_eval_zeroish/self_eval_empty_map -Scenario: self_eval_empty_map - - When CEL expression "{}" is evaluated - # map_value:{} - Then value is MapType({}) + When CEL expression '{}' is evaluated + Then value is celpy.celtypes.MapType({}) - -Scenario: self_eval_string_raw_prefix_triple_double +Scenario: self_eval_zeroish/self_eval_string_raw_prefix_triple_double When CEL expression 'r""""""' is evaluated - # string_value:"" - Then value is StringType(source='') - + Then value is celpy.celtypes.StringType(source='') -Scenario: self_eval_string_raw_prefix_triple_single +Scenario: self_eval_zeroish/self_eval_string_raw_prefix_triple_single When CEL expression "r''''''" is evaluated - # string_value:"" - Then value is StringType(source='') - + Then value is celpy.celtypes.StringType(source='') # self_eval_nonzeroish -- Simple self-evaluating forms to non-zero-ish values. -Scenario: self_eval_int_nonzero - When CEL expression "42" is evaluated - # int64_value:42 - Then value is IntType(source=42) +Scenario: self_eval_nonzeroish/self_eval_int_nonzero + When CEL expression '42' is evaluated + Then value is celpy.celtypes.IntType(source=42) -Scenario: self_eval_uint_nonzero +Scenario: self_eval_nonzeroish/self_eval_uint_nonzero - When CEL expression "123456789u" is evaluated - # uint64_value:123456789 - Then value is UintType(source=123456789) + When CEL expression '123456789u' is evaluated + Then value is celpy.celtypes.UintType(source=123456789) +Scenario: self_eval_nonzeroish/self_eval_uint_alias_nonzero -Scenario: self_eval_int_negative_min + When CEL expression '123456789U' is evaluated + Then value is celpy.celtypes.UintType(source=123456789) - When CEL expression "-9223372036854775808" is evaluated - # int64_value:-9223372036854775808 - Then value is IntType(source=-9223372036854775808) +Scenario: self_eval_nonzeroish/self_eval_int_negative_min + When CEL expression '-9223372036854775808' is evaluated + Then value is celpy.celtypes.IntType(source=-9223372036854775808) -Scenario: self_eval_float_negative_exp +Scenario: self_eval_nonzeroish/self_eval_float_negative_exp - When CEL expression "-2.3e+1" is evaluated - # double_value:-23 - Then value is DoubleType(source=-23) + When CEL expression '-2.3e+1' is evaluated + Then value is celpy.celtypes.DoubleType(source=-23.0) - -Scenario: self_eval_string_excl +Scenario: self_eval_nonzeroish/self_eval_string_excl When CEL expression '"!"' is evaluated - # string_value:"!" - Then value is StringType(source='!') - + Then value is celpy.celtypes.StringType(source='!') -Scenario: self_eval_string_escape +Scenario: self_eval_nonzeroish/self_eval_string_escape - When CEL expression "'\''" is evaluated - # string_value:"'" - Then value is StringType(source="'") + When CEL expression "'\\''" is evaluated + Then value is celpy.celtypes.StringType(source="'") - -Scenario: self_eval_bytes_escape +Scenario: self_eval_nonzeroish/self_eval_bytes_escape When CEL expression "b'ΓΏ'" is evaluated - # bytes_value:"ΓΏ" - Then value is BytesType(source=b'\xc3\xbf') - - -Scenario: self_eval_bytes_invalid_utf8 - - When CEL expression "b'\000\xff'" is evaluated - # bytes_value:"\x00\xff" - Then value is BytesType(source=b'\x00\xff') + Then value is celpy.celtypes.BytesType(source=b'\xc3\xbf') +Scenario: self_eval_nonzeroish/self_eval_bytes_invalid_utf8 -Scenario: self_eval_list_singleitem + When CEL expression "b'\\000\\xff'" is evaluated + Then value is celpy.celtypes.BytesType(source=b'\x00\xff') - When CEL expression "[-1]" is evaluated - # list_value:{values:{int64_value:-1}} - Then value is [IntType(source=-1)] +Scenario: self_eval_nonzeroish/self_eval_list_singleitem + When CEL expression '[-1]' is evaluated + Then value is [celpy.celtypes.IntType(source=-1)] -Scenario: self_eval_map_singleitem +Scenario: self_eval_nonzeroish/self_eval_map_singleitem When CEL expression '{"k":"v"}' is evaluated - # map_value:{entries:{key:{string_value:"k"} value:{string_value:"v"}}} - Then value is MapType({StringType(source='k'): StringType(source='v')}) + Then value is celpy.celtypes.MapType({'k': celpy.celtypes.StringType(source='v')}) +Scenario: self_eval_nonzeroish/self_eval_bool_true -Scenario: self_eval_bool_true + When CEL expression 'true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "true" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: self_eval_nonzeroish/self_eval_int_hex + When CEL expression '0x55555555' is evaluated + Then value is celpy.celtypes.IntType(source=1431655765) -Scenario: self_eval_int_hex +Scenario: self_eval_nonzeroish/self_eval_int_hex_negative - When CEL expression "0x55555555" is evaluated - # int64_value:1431655765 - Then value is IntType(source=1431655765) + When CEL expression '-0x55555555' is evaluated + Then value is celpy.celtypes.IntType(source=-1431655765) +Scenario: self_eval_nonzeroish/self_eval_uint_hex -Scenario: self_eval_int_hex_negative + When CEL expression '0x55555555u' is evaluated + Then value is celpy.celtypes.UintType(source=1431655765) - When CEL expression "-0x55555555" is evaluated - # int64_value:-1431655765 - Then value is IntType(source=-1431655765) +Scenario: self_eval_nonzeroish/self_eval_uint_alias_hex + When CEL expression '0x55555555U' is evaluated + Then value is celpy.celtypes.UintType(source=1431655765) -Scenario: self_eval_uint_hex +Scenario: self_eval_nonzeroish/self_eval_unicode_escape_four - When CEL expression "0x55555555u" is evaluated - # uint64_value:1431655765 - Then value is UintType(source=1431655765) + When CEL expression '"\\u270c"' is evaluated + Then value is celpy.celtypes.StringType(source='✌') +Scenario: self_eval_nonzeroish/self_eval_unicode_escape_eight -Scenario: self_eval_unicode_escape_four + When CEL expression '"\\U0001f431"' is evaluated + Then value is celpy.celtypes.StringType(source='🐱') - When CEL expression '"\u270c"' is evaluated - # string_value:"✌" - Then value is StringType(source='✌') - - -Scenario: self_eval_unicode_escape_eight - - When CEL expression '"\U0001f431"' is evaluated - # string_value:"🐱" - Then value is StringType(source='🐱') - - -Scenario: self_eval_ascii_escape_seq - - When CEL expression '"\a\b\f\n\r\t\v\"\'\\"' is evaluated - # string_value:"\x07\x08\x0c\n\r\t\x0b\"'\\" - Then value is StringType(source='\x07\x08\x0c\n\r\t\x0b"\'\\') +Scenario: self_eval_nonzeroish/self_eval_ascii_escape_seq + When CEL expression '"\\a\\b\\f\\n\\r\\t\\v\\"\\\'\\\\"' is evaluated + Then value is celpy.celtypes.StringType(source='\x07\x08\x0c\n\r\t\x0b"\'\\') # variables -- Variable lookups. -Scenario: self_eval_bound_lookup - - # type:{primitive:INT64} - # Given type_env parameter "x" is TypeType(value='INT64') - Given type_env parameter "x" is INT64 - # int64_value:123 - Given bindings parameter "x" is IntType(source=123) +Scenario: variables/self_eval_bound_lookup - When CEL expression "x" is evaluated - # int64_value:123 - Then value is IntType(source=123) + Given type_env parameter "x" is celpy.celtypes.IntType + and bindings parameter "x" is celpy.celtypes.IntType(source=123) + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.IntType(source=123) +Scenario: variables/self_eval_unbound_lookup + An unbound variable should be marked as an error during execution. See + google/cel-go#154 -Scenario: self_eval_unbound_lookup - An unbound variable should be marked as an error during execution. See google/cel-go#154 - When CEL expression "x" is evaluated - # errors:{message:"undeclared reference to 'x' (in container '')"} + Given disable_check parameter is True + When CEL expression 'x' is evaluated Then eval_error is "undeclared reference to 'x' (in container '')" - -Scenario: unbound_is_runtime_error +Scenario: variables/unbound_is_runtime_error Make sure we can short-circuit around an unbound variable. - When CEL expression "x || true" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given disable_check parameter is True + When CEL expression 'x || true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) # functions -- Basic mechanisms for function calls. -Scenario: binop - When CEL expression "1 + 1" is evaluated - # int64_value:2 - Then value is IntType(source=2) +Scenario: functions/binop + When CEL expression '1 + 1' is evaluated + Then value is celpy.celtypes.IntType(source=2) -Scenario: unbound +Scenario: functions/unbound - When CEL expression "f_unknown(17)" is evaluated - # errors:{message:"unbound function"} + Given disable_check parameter is True + When CEL expression 'f_unknown(17)' is evaluated Then eval_error is 'unbound function' +Scenario: functions/unbound_is_runtime_error -Scenario: unbound_is_runtime_error - - When CEL expression "f_unknown(17) || true" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Given disable_check parameter is True + When CEL expression 'f_unknown(17) || true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) # reserved_const -- Named constants should never be shadowed by identifiers. -Scenario: false - - # type:{primitive:BOOL} - # Given type_env parameter "false" is TypeType(value='BOOL') - Given type_env parameter "false" is BOOL - - # bool_value:true - Given bindings parameter "false" is BoolType(source=True) - - When CEL expression "false" is evaluated - # bool_value:false - Then value is BoolType(source=False) - -Scenario: true +Scenario: reserved_const/false - # type:{primitive:BOOL} - # Given type_env parameter "true" is TypeType(value='BOOL') - Given type_env parameter "true" is BOOL + Given type_env parameter "false" is celpy.celtypes.BoolType + and bindings parameter "false" is celpy.celtypes.BoolType(source=True) + When CEL expression 'false' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - # bool_value:false - Given bindings parameter "true" is BoolType(source=False) +Scenario: reserved_const/true - When CEL expression "true" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given type_env parameter "true" is celpy.celtypes.BoolType + and bindings parameter "true" is celpy.celtypes.BoolType(source=False) + When CEL expression 'true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: reserved_const/null -Scenario: null - - # type:{primitive:BOOL} - # Given type_env parameter "null" is TypeType(value='BOOL') - Given type_env parameter "null" is BOOL - - # bool_value:true - Given bindings parameter "null" is BoolType(source=True) - - When CEL expression "null" is evaluated - # null_value:NULL_VALUE + Given type_env parameter "null" is celpy.celtypes.BoolType + and bindings parameter "null" is celpy.celtypes.BoolType(source=True) + When CEL expression 'null' is evaluated Then value is None + diff --git a/features/basic.textproto b/features/basic.textproto index 81fd98d..e52604c 100644 --- a/features/basic.textproto +++ b/features/basic.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + name: "basic" description: "Basic conformance tests that all implementations should pass." section { @@ -13,6 +16,11 @@ section { expr: "0u" value: { uint64_value: 0 } } + test { + name: "self_eval_uint_alias_zero" + expr: "0U" + value: { uint64_value: 0 } + } test { name: "self_eval_float_zero" expr: "0.0" @@ -87,6 +95,11 @@ section { expr: "123456789u" value: { uint64_value: 123456789 } } + test { + name: "self_eval_uint_alias_nonzero" + expr: "123456789U" + value: { uint64_value: 123456789 } + } test { name: "self_eval_int_negative_min" expr: "-9223372036854775808" @@ -158,6 +171,11 @@ section { expr: "0x55555555u" value: { uint64_value: 1431655765 } } + test { + name: "self_eval_uint_alias_hex" + expr: "0x55555555U" + value: { uint64_value: 1431655765 } + } test { name: "self_eval_unicode_escape_four" expr: '"\\u270c"' diff --git a/features/bindings_ext.feature b/features/bindings_ext.feature new file mode 100644 index 0000000..3bf3ff6 --- /dev/null +++ b/features/bindings_ext.feature @@ -0,0 +1,37 @@ +@conformance +Feature: bindings_ext + Tests for the bindings extension library. + +# bind -- + + +@wip +Scenario: bind/boolean_literal + + When CEL expression 'cel.bind(t, true, t)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: bind/string_concat + + When CEL expression 'cel.bind(msg, "hello", msg + msg + msg)' is evaluated + Then value is celpy.celtypes.StringType(source='hellohellohello') + +@wip +Scenario: bind/bind_nested + + When CEL expression 'cel.bind(t1, true, cel.bind(t2, true, t1 && t2))' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: bind/macro_exists + + When CEL expression 'cel.bind(valid_elems, [1, 2, 3], [3, 4, 5].exists(e, e in valid_elems))' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: bind/macro_not_exists + + When CEL expression 'cel.bind(valid_elems, [1, 2, 3], ![4, 5].exists(e, e in valid_elems))' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + diff --git a/features/bindings_ext.textproto b/features/bindings_ext.textproto new file mode 100644 index 0000000..3a3d93f --- /dev/null +++ b/features/bindings_ext.textproto @@ -0,0 +1,43 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + +name: "bindings_ext" +description: "Tests for the bindings extension library." +section: { + name: "bind" + test: { + name: "boolean_literal" + expr: "cel.bind(t, true, t)" + value: { + bool_value: true + } + } + test: { + name: "string_concat" + expr: "cel.bind(msg, \"hello\", msg + msg + msg)" + value: { + string_value: "hellohellohello" + } + } + test: { + name: "bind_nested" + expr: "cel.bind(t1, true, cel.bind(t2, true, t1 && t2))" + value: { + bool_value: true + } + } + test: { + name: "macro_exists" + expr: "cel.bind(valid_elems, [1, 2, 3], [3, 4, 5].exists(e, e in valid_elems))" + value: { + bool_value: true + } + } + test: { + name: "macro_not_exists" + expr: "cel.bind(valid_elems, [1, 2, 3], ![4, 5].exists(e, e in valid_elems))" + value: { + bool_value: true + } + } +} diff --git a/features/block_ext.feature b/features/block_ext.feature new file mode 100644 index 0000000..f670626 --- /dev/null +++ b/features/block_ext.feature @@ -0,0 +1,258 @@ +@conformance +Feature: block_ext + Tests for cel.block. + +# basic -- + + +@wip +Scenario: basic/int_add + + When CEL expression 'cel.block([1, cel.index(0) + 1, cel.index(1) + 1, cel.index(2) + 1], cel.index(3))' is evaluated + Then value is celpy.celtypes.IntType(source=4) + +@wip +Scenario: basic/size_1 + + When CEL expression 'cel.block([[1, 2], size(cel.index(0)), cel.index(1) + cel.index(1), cel.index(2) + 1], cel.index(3))' is evaluated + Then value is celpy.celtypes.IntType(source=5) + +@wip +Scenario: basic/size_2 + + When CEL expression 'cel.block([[1, 2], size(cel.index(0)), 2 + cel.index(1), cel.index(2) + cel.index(1), cel.index(3) + 1], cel.index(4))' is evaluated + Then value is celpy.celtypes.IntType(source=7) + +@wip +Scenario: basic/size_3 + + When CEL expression 'cel.block([[0], size(cel.index(0)), [1, 2], size(cel.index(2)), cel.index(1) + cel.index(1), cel.index(4) + cel.index(3), cel.index(5) + cel.index(3)], cel.index(6))' is evaluated + Then value is celpy.celtypes.IntType(source=6) + +@wip +Scenario: basic/size_4 + + When CEL expression 'cel.block([[0], size(cel.index(0)), [1, 2], size(cel.index(2)), [1, 2, 3], size(cel.index(4)), 5 + cel.index(1), cel.index(6) + cel.index(1), cel.index(7) + cel.index(3), cel.index(8) + cel.index(3), cel.index(9) + cel.index(5), cel.index(10) + cel.index(5)], cel.index(11))' is evaluated + Then value is celpy.celtypes.IntType(source=17) + +@wip +Scenario: basic/timestamp + + When CEL expression 'cel.block([timestamp(1000000000), int(cel.index(0)), timestamp(cel.index(1)), cel.index(2).getFullYear(), timestamp(50), int(cel.index(4)), timestamp(cel.index(5)), timestamp(200), int(cel.index(7)), timestamp(cel.index(8)), cel.index(9).getFullYear(), timestamp(75), int(cel.index(11)), timestamp(cel.index(12)), cel.index(13).getFullYear(), cel.index(3) + cel.index(14), cel.index(6).getFullYear(), cel.index(15) + cel.index(16), cel.index(17) + cel.index(3), cel.index(6).getSeconds(), cel.index(18) + cel.index(19), cel.index(20) + cel.index(10), cel.index(21) + cel.index(10), cel.index(13).getMinutes(), cel.index(22) + cel.index(23), cel.index(24) + cel.index(3)], cel.index(25))' is evaluated + Then value is celpy.celtypes.IntType(source=13934) + +@wip +Scenario: basic/map_index + + When CEL expression 'cel.block([{"a": 2}, cel.index(0)["a"], cel.index(1) * cel.index(1), cel.index(1) + cel.index(2)], cel.index(3))' is evaluated + Then value is celpy.celtypes.IntType(source=6) + +@wip +Scenario: basic/nested_map_construction + + When CEL expression 'cel.block([{"b": 1}, {"e": cel.index(0)}], {"a": cel.index(0), "c": cel.index(0), "d": cel.index(1), "e": cel.index(1)})' is evaluated + Then value is celpy.celtypes.MapType({'a': celpy.celtypes.MapType({'b': celpy.celtypes.IntType(source=1)}), 'c': celpy.celtypes.MapType({'b': celpy.celtypes.IntType(source=1)}), 'd': celpy.celtypes.MapType({'e': celpy.celtypes.MapType({'b': celpy.celtypes.IntType(source=1)})}), 'e': celpy.celtypes.MapType({'e': celpy.celtypes.MapType({'b': celpy.celtypes.IntType(source=1)})})}) + +@wip +Scenario: basic/nested_list_construction + + When CEL expression 'cel.block([[1, 2, 3, 4], [1, 2], [cel.index(1), cel.index(0)]], [1, cel.index(0), 2, cel.index(0), 5, cel.index(0), 7, cel.index(2), cel.index(1)])' is evaluated + Then value is [celpy.celtypes.IntType(source=1), [celpy.celtypes.IntType(source=1), celpy.celtypes.IntType(source=2), celpy.celtypes.IntType(source=3), celpy.celtypes.IntType(source=4)], celpy.celtypes.IntType(source=2), [celpy.celtypes.IntType(source=1), celpy.celtypes.IntType(source=2), celpy.celtypes.IntType(source=3), celpy.celtypes.IntType(source=4)], celpy.celtypes.IntType(source=5), [celpy.celtypes.IntType(source=1), celpy.celtypes.IntType(source=2), celpy.celtypes.IntType(source=3), celpy.celtypes.IntType(source=4)], celpy.celtypes.IntType(source=7), [[celpy.celtypes.IntType(source=1), celpy.celtypes.IntType(source=2)], [celpy.celtypes.IntType(source=1), celpy.celtypes.IntType(source=2), celpy.celtypes.IntType(source=3), celpy.celtypes.IntType(source=4)]], [celpy.celtypes.IntType(source=1), celpy.celtypes.IntType(source=2)]] + +@wip +Scenario: basic/select + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(single_int32=5, single_int64=3, oneof_type=NestedTestAllTypes(payload=TestAllTypes(single_int32=8, single_int64=10, map_string_string=['key'], map_int32_int64=[0, 1, 2]))) + When CEL expression 'cel.block([msg.single_int64, cel.index(0) + cel.index(0)], cel.index(1))' is evaluated + Then value is celpy.celtypes.IntType(source=6) + +@wip +Scenario: basic/select_nested_1 + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(single_int32=5, single_int64=3, oneof_type=NestedTestAllTypes(payload=TestAllTypes(single_int32=8, single_int64=10, map_string_string=['key'], map_int32_int64=[0, 1, 2]))) + When CEL expression 'cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).single_int64, cel.index(1).single_int32, cel.index(2) + cel.index(3), cel.index(4) + cel.index(2), msg.single_int64, cel.index(5) + cel.index(6), cel.index(1).oneof_type, cel.index(8).payload, cel.index(9).single_int64, cel.index(7) + cel.index(10)], cel.index(11))' is evaluated + Then value is celpy.celtypes.IntType(source=31) + +@wip +Scenario: basic/select_nested_2 + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(single_int32=5, single_int64=3, oneof_type=NestedTestAllTypes(payload=TestAllTypes(single_int32=8, single_int64=10, map_string_string=['key'], map_int32_int64=[0, 1, 2]))) + When CEL expression 'cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).oneof_type, cel.index(2).payload, cel.index(3).oneof_type, cel.index(4).payload, cel.index(5).oneof_type, cel.index(6).payload, cel.index(7).single_bool, true || cel.index(8), cel.index(4).child, cel.index(10).child, cel.index(11).payload, cel.index(12).single_bool], cel.index(9) || cel.index(13))' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: basic/select_nested_message_map_index_1 + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(single_int32=5, single_int64=3, oneof_type=NestedTestAllTypes(payload=TestAllTypes(single_int32=8, single_int64=10, map_string_string=['key'], map_int32_int64=[0, 1, 2]))) + When CEL expression 'cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).map_int32_int64, cel.index(2)[1], cel.index(3) + cel.index(3), cel.index(4) + cel.index(3)], cel.index(5))' is evaluated + Then value is celpy.celtypes.IntType(source=15) + +@wip +Scenario: basic/select_nested_message_map_index_2 + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(single_int32=5, single_int64=3, oneof_type=NestedTestAllTypes(payload=TestAllTypes(single_int32=8, single_int64=10, map_string_string=['key'], map_int32_int64=[0, 1, 2]))) + When CEL expression 'cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).map_int32_int64, cel.index(2)[0], cel.index(2)[1], cel.index(3) + cel.index(4), cel.index(2)[2], cel.index(5) + cel.index(6)], cel.index(7))' is evaluated + Then value is celpy.celtypes.IntType(source=8) + +@wip +Scenario: basic/ternary + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(single_int32=5, single_int64=3, oneof_type=NestedTestAllTypes(payload=TestAllTypes(single_int32=8, single_int64=10, map_string_string=['key'], map_int32_int64=[0, 1, 2]))) + When CEL expression 'cel.block([msg.single_int64, cel.index(0) > 0, cel.index(1) ? cel.index(0) : 0], cel.index(2))' is evaluated + Then value is celpy.celtypes.IntType(source=3) + +@wip +Scenario: basic/nested_ternary + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(single_int32=5, single_int64=3, oneof_type=NestedTestAllTypes(payload=TestAllTypes(single_int32=8, single_int64=10, map_string_string=['key'], map_int32_int64=[0, 1, 2]))) + When CEL expression 'cel.block([msg.single_int64, msg.single_int32, cel.index(0) > 0, cel.index(1) > 0, cel.index(0) + cel.index(1), cel.index(3) ? cel.index(4) : 0, cel.index(2) ? cel.index(5) : 0], cel.index(6))' is evaluated + Then value is celpy.celtypes.IntType(source=8) + +@wip +Scenario: basic/multiple_macros_1 + + When CEL expression 'cel.block([[1].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) > 0), size([cel.index(0)]), [2].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) > 1), size([cel.index(2)])], cel.index(1) + cel.index(1) + cel.index(3) + cel.index(3))' is evaluated + Then value is celpy.celtypes.IntType(source=4) + +@wip +Scenario: basic/multiple_macros_2 + + When CEL expression "cel.block([[1].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) > 0), [cel.index(0)], ['a'].exists(cel.iterVar(0, 1), cel.iterVar(0, 1) == 'a'), [cel.index(2)]], cel.index(1) + cel.index(1) + cel.index(3) + cel.index(3))" is evaluated + Then value is [celpy.celtypes.BoolType(source=True), celpy.celtypes.BoolType(source=True), celpy.celtypes.BoolType(source=True), celpy.celtypes.BoolType(source=True)] + +@wip +Scenario: basic/multiple_macros_3 + + When CEL expression 'cel.block([[1].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) > 0)], cel.index(0) && cel.index(0) && [1].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) > 1) && [2].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) > 1))' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: basic/nested_macros_1 + + When CEL expression 'cel.block([[1, 2, 3]], cel.index(0).map(cel.iterVar(0, 0), cel.index(0).map(cel.iterVar(1, 0), cel.iterVar(1, 0) + 1)))' is evaluated + Then value is [[celpy.celtypes.IntType(source=2), celpy.celtypes.IntType(source=3), celpy.celtypes.IntType(source=4)], [celpy.celtypes.IntType(source=2), celpy.celtypes.IntType(source=3), celpy.celtypes.IntType(source=4)], [celpy.celtypes.IntType(source=2), celpy.celtypes.IntType(source=3), celpy.celtypes.IntType(source=4)]] + +@wip +Scenario: basic/nested_macros_2 + + When CEL expression '[1, 2].map(cel.iterVar(0, 0), [1, 2, 3].filter(cel.iterVar(1, 0), cel.iterVar(1, 0) == cel.iterVar(0, 0)))' is evaluated + Then value is [[celpy.celtypes.IntType(source=1)], [celpy.celtypes.IntType(source=2)]] + +@wip +Scenario: basic/adjacent_macros + + When CEL expression 'cel.block([[1, 2, 3], cel.index(0).map(cel.iterVar(0, 0), cel.index(0).map(cel.iterVar(1, 0), cel.iterVar(1, 0) + 1))], cel.index(1) == cel.index(1))' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: basic/macro_shadowed_variable_1 + + Given type_env parameter "x" is celpy.celtypes.IntType + and bindings parameter "x" is celpy.celtypes.IntType(source=5) + When CEL expression 'cel.block([x - 1, cel.index(0) > 3], [cel.index(1) ? cel.index(0) : 5].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) - 1 > 3) || cel.index(1))' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: basic/macro_shadowed_variable_2 + + Given type_env parameter "x" is celpy.celtypes.IntType + and bindings parameter "x" is celpy.celtypes.IntType(source=5) + When CEL expression "['foo', 'bar'].map(cel.iterVar(1, 0), [cel.iterVar(1, 0) + cel.iterVar(1, 0), cel.iterVar(1, 0) + cel.iterVar(1, 0)]).map(cel.iterVar(0, 0), [cel.iterVar(0, 0) + cel.iterVar(0, 0), cel.iterVar(0, 0) + cel.iterVar(0, 0)])" is evaluated + Then value is [[[celpy.celtypes.StringType(source='foofoo'), celpy.celtypes.StringType(source='foofoo'), celpy.celtypes.StringType(source='foofoo'), celpy.celtypes.StringType(source='foofoo')], [celpy.celtypes.StringType(source='foofoo'), celpy.celtypes.StringType(source='foofoo'), celpy.celtypes.StringType(source='foofoo'), celpy.celtypes.StringType(source='foofoo')]], [[celpy.celtypes.StringType(source='barbar'), celpy.celtypes.StringType(source='barbar'), celpy.celtypes.StringType(source='barbar'), celpy.celtypes.StringType(source='barbar')], [celpy.celtypes.StringType(source='barbar'), celpy.celtypes.StringType(source='barbar'), celpy.celtypes.StringType(source='barbar'), celpy.celtypes.StringType(source='barbar')]]] + +@wip +Scenario: basic/inclusion_list + + When CEL expression 'cel.block([[1, 2, 3], 1 in cel.index(0), 2 in cel.index(0), cel.index(1) && cel.index(2), [3, cel.index(0)], 3 in cel.index(4), cel.index(5) && cel.index(1)], cel.index(3) && cel.index(6))' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: basic/inclusion_map + + When CEL expression 'cel.block([{true: false}, {"a": 1, 2: cel.index(0), 3: cel.index(0)}], 2 in cel.index(1))' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: basic/presence_test + + When CEL expression 'cel.block([{"a": true}, has(cel.index(0).a), cel.index(0)["a"]], cel.index(1) && cel.index(2))' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: basic/presence_test_2 + + When CEL expression 'cel.block([{"a": true}, has(cel.index(0).a)], cel.index(1) && cel.index(1))' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: basic/presence_test_with_ternary + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(single_int32=5, single_int64=3, oneof_type=NestedTestAllTypes(payload=TestAllTypes(single_int32=8, single_int64=10, map_string_string=['key'], map_int32_int64=[0, 1, 2]))) + When CEL expression 'cel.block([msg.oneof_type, has(cel.index(0).payload), cel.index(0).payload, cel.index(2).single_int64, cel.index(1) ? cel.index(3) : 0], cel.index(4))' is evaluated + Then value is celpy.celtypes.IntType(source=10) + +@wip +Scenario: basic/presence_test_with_ternary_2 + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(single_int32=5, single_int64=3, oneof_type=NestedTestAllTypes(payload=TestAllTypes(single_int32=8, single_int64=10, map_string_string=['key'], map_int32_int64=[0, 1, 2]))) + When CEL expression 'cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).single_int64, has(cel.index(0).payload), cel.index(2) * 0, cel.index(3) ? cel.index(2) : cel.index(4)], cel.index(5))' is evaluated + Then value is celpy.celtypes.IntType(source=10) + +@wip +Scenario: basic/presence_test_with_ternary_3 + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(single_int32=5, single_int64=3, oneof_type=NestedTestAllTypes(payload=TestAllTypes(single_int32=8, single_int64=10, map_string_string=['key'], map_int32_int64=[0, 1, 2]))) + When CEL expression 'cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).single_int64, has(cel.index(1).single_int64), cel.index(2) * 0, cel.index(3) ? cel.index(2) : cel.index(4)], cel.index(5))' is evaluated + Then value is celpy.celtypes.IntType(source=10) + +@wip +Scenario: basic/presence_test_with_ternary_nested + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(single_int32=5, single_int64=3, oneof_type=NestedTestAllTypes(payload=TestAllTypes(single_int32=8, single_int64=10, map_string_string=['key'], map_int32_int64=[0, 1, 2]))) + When CEL expression 'cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).map_string_string, has(msg.oneof_type), has(cel.index(0).payload), cel.index(3) && cel.index(4), has(cel.index(1).single_int64), cel.index(5) && cel.index(6), has(cel.index(1).map_string_string), has(cel.index(2).key), cel.index(8) && cel.index(9), cel.index(2).key, cel.index(11) == "A", cel.index(10) ? cel.index(12) : false], cel.index(7) ? cel.index(13) : false)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: basic/optional_list + + Given type_env parameter "opt_x" is celpy.celtypes.IntType + and bindings parameter "opt_x" is celpy.celtypes.IntType(source=5) + When CEL expression 'cel.block([optional.none(), [?cel.index(0), ?optional.of(opt_x)], [5], [10, ?cel.index(0), cel.index(1), cel.index(1)], [10, cel.index(2), cel.index(2)]], cel.index(3) == cel.index(4))' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: basic/optional_map + + When CEL expression 'cel.block([optional.of("hello"), {?"hello": cel.index(0)}, cel.index(1)["hello"], cel.index(2) + cel.index(2)], cel.index(3) == "hellohello")' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: basic/optional_map_chained + + When CEL expression 'cel.block([{"key": "test"}, optional.of("test"), {?"key": cel.index(1)}, cel.index(2)[?"bogus"], cel.index(0)[?"bogus"], cel.index(3).or(cel.index(4)), cel.index(0)["key"], cel.index(5).orValue(cel.index(6))], cel.index(7))' is evaluated + Then value is celpy.celtypes.StringType(source='test') + +@wip +Scenario: basic/optional_message + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'cel.block([optional.ofNonZeroValue(1), optional.of(4), TestAllTypes{?single_int64: cel.index(0), ?single_int32: cel.index(1)}, cel.index(2).single_int32, cel.index(2).single_int64, cel.index(3) + cel.index(4)], cel.index(5))' is evaluated + Then value is celpy.celtypes.IntType(source=5) + +@wip +Scenario: basic/call + + When CEL expression 'cel.block(["h" + "e", cel.index(0) + "l", cel.index(1) + "l", cel.index(2) + "o", cel.index(3) + " world"], cel.index(4).matches(cel.index(3)))' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + diff --git a/features/block_ext.textproto b/features/block_ext.textproto new file mode 100644 index 0000000..ebdf76f --- /dev/null +++ b/features/block_ext.textproto @@ -0,0 +1,1070 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + +# This conformance test relies on the test-only macros cel.block, cel.index, +# cel.iterVar, and cel.accuVar. These test-only macros allow exercising +# cel.block without the optimizers being present. +# `cel.block(l, e)` must rewrite itself to be `cel.block(l, e)` +# `cel.index(N)` must rewrite itself to `@indexN` +# `cel.iterVar(N, M)` must rewrite itself to `@it:N:M` +# `cel.accuVar(N, M)` must rewrite itself to `@ac:N:M` + +name: "block_ext" +description: "Tests for cel.block." +section: { + name: "basic" + test: { + name: "int_add" + expr: "cel.block([1, cel.index(0) + 1, cel.index(1) + 1, cel.index(2) + 1], cel.index(3))" + value: { + int64_value: 4 + } + } + test: { + name: "size_1" + expr: "cel.block([[1, 2], size(cel.index(0)), cel.index(1) + cel.index(1), cel.index(2) + 1], cel.index(3))" + value: { + int64_value: 5 + } + } + test: { + name: "size_2" + expr: "cel.block([[1, 2], size(cel.index(0)), 2 + cel.index(1), cel.index(2) + cel.index(1), cel.index(3) + 1], cel.index(4))" + value: { + int64_value: 7 + } + } + test: { + name: "size_3" + expr: "cel.block([[0], size(cel.index(0)), [1, 2], size(cel.index(2)), cel.index(1) + cel.index(1), cel.index(4) + cel.index(3), cel.index(5) + cel.index(3)], cel.index(6))" + value: { + int64_value: 6 + } + } + test: { + name: "size_4" + expr: "cel.block([[0], size(cel.index(0)), [1, 2], size(cel.index(2)), [1, 2, 3], size(cel.index(4)), 5 + cel.index(1), cel.index(6) + cel.index(1), cel.index(7) + cel.index(3), cel.index(8) + cel.index(3), cel.index(9) + cel.index(5), cel.index(10) + cel.index(5)], cel.index(11))" + value: { + int64_value: 17 + } + } + test: { + name: "timestamp" + expr: "cel.block([timestamp(1000000000), int(cel.index(0)), timestamp(cel.index(1)), cel.index(2).getFullYear(), timestamp(50), int(cel.index(4)), timestamp(cel.index(5)), timestamp(200), int(cel.index(7)), timestamp(cel.index(8)), cel.index(9).getFullYear(), timestamp(75), int(cel.index(11)), timestamp(cel.index(12)), cel.index(13).getFullYear(), cel.index(3) + cel.index(14), cel.index(6).getFullYear(), cel.index(15) + cel.index(16), cel.index(17) + cel.index(3), cel.index(6).getSeconds(), cel.index(18) + cel.index(19), cel.index(20) + cel.index(10), cel.index(21) + cel.index(10), cel.index(13).getMinutes(), cel.index(22) + cel.index(23), cel.index(24) + cel.index(3)], cel.index(25))" + value: { + int64_value: 13934 + } + } + test: { + name: "map_index" + expr: "cel.block([{\"a\": 2}, cel.index(0)[\"a\"], cel.index(1) * cel.index(1), cel.index(1) + cel.index(2)], cel.index(3))" + value: { + int64_value: 6 + } + } + test: { + name: "nested_map_construction" + expr: "cel.block([{\"b\": 1}, {\"e\": cel.index(0)}], {\"a\": cel.index(0), \"c\": cel.index(0), \"d\": cel.index(1), \"e\": cel.index(1)})" + value: { + map_value: { + entries { + key: { + string_value: 'a' + } + value: { + map_value: { + entries { + key: { + string_value: 'b' + } + value: { + int64_value: 1 + } + } + } + } + } + entries { + key: { + string_value: 'c' + } + value: { + map_value: { + entries { + key: { + string_value: 'b' + } + value: { + int64_value: 1 + } + } + } + } + } + entries { + key: { + string_value: 'd' + } + value: { + map_value: { + entries { + key: { + string_value: 'e' + } + value: { + map_value: { + entries { + key: { + string_value: 'b' + } + value: { + int64_value: 1 + } + } + } + } + } + } + } + } + entries { + key: { + string_value: 'e' + } + value: { + map_value: { + entries { + key: { + string_value: 'e' + } + value: { + map_value: { + entries { + key: { + string_value: 'b' + } + value: { + int64_value: 1 + } + } + } + } + } + } + } + } + } + } + } + test: { + name: "nested_list_construction" + expr: "cel.block([[1, 2, 3, 4], [1, 2], [cel.index(1), cel.index(0)]], [1, cel.index(0), 2, cel.index(0), 5, cel.index(0), 7, cel.index(2), cel.index(1)])" + value: { + list_value: { + values { + int64_value: 1 + } + values { + list_value: { + values { + int64_value: 1 + } + values { + int64_value: 2 + } + values { + int64_value: 3 + } + values { + int64_value: 4 + } + } + } + values { + int64_value: 2 + } + values { + list_value: { + values { + int64_value: 1 + } + values { + int64_value: 2 + } + values { + int64_value: 3 + } + values { + int64_value: 4 + } + } + } + values { + int64_value: 5 + } + values { + list_value: { + values { + int64_value: 1 + } + values { + int64_value: 2 + } + values { + int64_value: 3 + } + values { + int64_value: 4 + } + } + } + values { + int64_value: 7 + } + values { + list_value: { + values { + list_value: { + values { + int64_value: 1 + } + values { + int64_value: 2 + } + } + } + values { + list_value: { + values { + int64_value: 1 + } + values { + int64_value: 2 + } + values { + int64_value: 3 + } + values { + int64_value: 4 + } + } + } + } + } + values { + list_value: { + values { + int64_value: 1 + } + values { + int64_value: 2 + } + } + } + } + } + } + test: { + name: "select" + expr: "cel.block([msg.single_int64, cel.index(0) + cel.index(0)], cel.index(1))" + value: { + int64_value: 6 + } + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto3.TestAllTypes" }} + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_int64: 3 + single_int32: 5 + oneof_type: { + payload: { + single_int32: 8 + single_int64: 10 + map_int32_int64 { + key: 0 + value: 1 + } + map_int32_int64 { + key: 1 + value: 5 + } + map_int32_int64 { + key: 2 + value: 2 + } + map_string_string { + key: "key" + value: "A" + } + } + } + } + } + } + } + } + } + test: { + name: "select_nested_1" + expr: "cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).single_int64, cel.index(1).single_int32, cel.index(2) + cel.index(3), cel.index(4) + cel.index(2), msg.single_int64, cel.index(5) + cel.index(6), cel.index(1).oneof_type, cel.index(8).payload, cel.index(9).single_int64, cel.index(7) + cel.index(10)], cel.index(11))" + value: { + int64_value: 31 + } + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto3.TestAllTypes" }} + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_int64: 3 + single_int32: 5 + oneof_type: { + payload: { + single_int32: 8 + single_int64: 10 + map_int32_int64 { + key: 0 + value: 1 + } + map_int32_int64 { + key: 1 + value: 5 + } + map_int32_int64 { + key: 2 + value: 2 + } + map_string_string { + key: "key" + value: "A" + } + } + } + } + } + } + } + } + } + test: { + name: "select_nested_2" + expr: "cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).oneof_type, cel.index(2).payload, cel.index(3).oneof_type, cel.index(4).payload, cel.index(5).oneof_type, cel.index(6).payload, cel.index(7).single_bool, true || cel.index(8), cel.index(4).child, cel.index(10).child, cel.index(11).payload, cel.index(12).single_bool], cel.index(9) || cel.index(13))" + value: { + bool_value: true + } + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto3.TestAllTypes" }} + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_int64: 3 + single_int32: 5 + oneof_type: { + payload: { + single_int32: 8 + single_int64: 10 + map_int32_int64 { + key: 0 + value: 1 + } + map_int32_int64 { + key: 1 + value: 5 + } + map_int32_int64 { + key: 2 + value: 2 + } + map_string_string { + key: "key" + value: "A" + } + } + } + } + } + } + } + } + } + test: { + name: "select_nested_message_map_index_1" + expr: "cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).map_int32_int64, cel.index(2)[1], cel.index(3) + cel.index(3), cel.index(4) + cel.index(3)], cel.index(5))" + value: { + int64_value: 15 + } + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto3.TestAllTypes" }} + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_int64: 3 + single_int32: 5 + oneof_type: { + payload: { + single_int32: 8 + single_int64: 10 + map_int32_int64 { + key: 0 + value: 1 + } + map_int32_int64 { + key: 1 + value: 5 + } + map_int32_int64 { + key: 2 + value: 2 + } + map_string_string { + key: "key" + value: "A" + } + } + } + } + } + } + } + } + } + test: { + name: "select_nested_message_map_index_2" + expr: "cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).map_int32_int64, cel.index(2)[0], cel.index(2)[1], cel.index(3) + cel.index(4), cel.index(2)[2], cel.index(5) + cel.index(6)], cel.index(7))" + value: { + int64_value: 8 + } + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto3.TestAllTypes" }} + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_int64: 3 + single_int32: 5 + oneof_type: { + payload: { + single_int32: 8 + single_int64: 10 + map_int32_int64 { + key: 0 + value: 1 + } + map_int32_int64 { + key: 1 + value: 5 + } + map_int32_int64 { + key: 2 + value: 2 + } + map_string_string { + key: "key" + value: "A" + } + } + } + } + } + } + } + } + } + test: { + name: "ternary" + expr: "cel.block([msg.single_int64, cel.index(0) > 0, cel.index(1) ? cel.index(0) : 0], cel.index(2))" + value: { + int64_value: 3 + } + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto3.TestAllTypes" }} + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_int64: 3 + single_int32: 5 + oneof_type: { + payload: { + single_int32: 8 + single_int64: 10 + map_int32_int64 { + key: 0 + value: 1 + } + map_int32_int64 { + key: 1 + value: 5 + } + map_int32_int64 { + key: 2 + value: 2 + } + map_string_string { + key: "key" + value: "A" + } + } + } + } + } + } + } + } + } + test: { + name: "nested_ternary" + expr: "cel.block([msg.single_int64, msg.single_int32, cel.index(0) > 0, cel.index(1) > 0, cel.index(0) + cel.index(1), cel.index(3) ? cel.index(4) : 0, cel.index(2) ? cel.index(5) : 0], cel.index(6))" + value: { + int64_value: 8 + } + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto3.TestAllTypes" }} + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_int64: 3 + single_int32: 5 + oneof_type: { + payload: { + single_int32: 8 + single_int64: 10 + map_int32_int64 { + key: 0 + value: 1 + } + map_int32_int64 { + key: 1 + value: 5 + } + map_int32_int64 { + key: 2 + value: 2 + } + map_string_string { + key: "key" + value: "A" + } + } + } + } + } + } + } + } + } + test: { + name: "multiple_macros_1" + expr: "cel.block([[1].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) > 0), size([cel.index(0)]), [2].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) > 1), size([cel.index(2)])], cel.index(1) + cel.index(1) + cel.index(3) + cel.index(3))" + value: { + int64_value: 4 + } + } + test: { + name: "multiple_macros_2" + expr: "cel.block([[1].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) > 0), [cel.index(0)], ['a'].exists(cel.iterVar(0, 1), cel.iterVar(0, 1) == 'a'), [cel.index(2)]], cel.index(1) + cel.index(1) + cel.index(3) + cel.index(3))" + value: { + list_value: { + values { + bool_value: true + } + values { + bool_value: true + } + values { + bool_value: true + } + values { + bool_value: true + } + } + } + } + test: { + name: "multiple_macros_3" + expr: "cel.block([[1].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) > 0)], cel.index(0) && cel.index(0) && [1].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) > 1) && [2].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) > 1))" + value: { + bool_value: false + } + } + test: { + name: "nested_macros_1" + expr: "cel.block([[1, 2, 3]], cel.index(0).map(cel.iterVar(0, 0), cel.index(0).map(cel.iterVar(1, 0), cel.iterVar(1, 0) + 1)))" + value: { + list_value: { + values { + list_value: { + values { + int64_value: 2 + } + values { + int64_value: 3 + } + values { + int64_value: 4 + } + } + } + values { + list_value: { + values { + int64_value: 2 + } + values { + int64_value: 3 + } + values { + int64_value: 4 + } + } + } + values { + list_value: { + values { + int64_value: 2 + } + values { + int64_value: 3 + } + values { + int64_value: 4 + } + } + } + } + } + } + test: { + name: "nested_macros_2" + expr: "[1, 2].map(cel.iterVar(0, 0), [1, 2, 3].filter(cel.iterVar(1, 0), cel.iterVar(1, 0) == cel.iterVar(0, 0)))" + value: { + list_value: { + values { + list_value: { + values { + int64_value: 1 + } + } + } + values { + list_value: { + values { + int64_value: 2 + } + } + } + } + } + } + test: { + name: "adjacent_macros" + expr: "cel.block([[1, 2, 3], cel.index(0).map(cel.iterVar(0, 0), cel.index(0).map(cel.iterVar(1, 0), cel.iterVar(1, 0) + 1))], cel.index(1) == cel.index(1))" + value: { + bool_value: true + } + } + test: { + name: "macro_shadowed_variable_1" + expr: "cel.block([x - 1, cel.index(0) > 3], [cel.index(1) ? cel.index(0) : 5].exists(cel.iterVar(0, 0), cel.iterVar(0, 0) - 1 > 3) || cel.index(1))" + value: { + bool_value: true + } + type_env: { + name: "x" + ident: { type: { primitive: INT64 }} + } + bindings: { + key: "x" + value: { + value: { + int64_value: 5 + } + } + } + } + test: { + name: "macro_shadowed_variable_2" + expr: "['foo', 'bar'].map(cel.iterVar(1, 0), [cel.iterVar(1, 0) + cel.iterVar(1, 0), cel.iterVar(1, 0) + cel.iterVar(1, 0)]).map(cel.iterVar(0, 0), [cel.iterVar(0, 0) + cel.iterVar(0, 0), cel.iterVar(0, 0) + cel.iterVar(0, 0)])" + value: { + list_value: { + values { + list_value: { + values { + list_value: { + values { + string_value: "foofoo" + } + values { + string_value: "foofoo" + } + values { + string_value: "foofoo" + } + values { + string_value: "foofoo" + } + } + } + values { + list_value: { + values { + string_value: "foofoo" + } + values { + string_value: "foofoo" + } + values { + string_value: "foofoo" + } + values { + string_value: "foofoo" + } + } + } + } + } + values { + list_value: { + values { + list_value: { + values { + string_value: "barbar" + } + values { + string_value: "barbar" + } + values { + string_value: "barbar" + } + values { + string_value: "barbar" + } + } + } + values { + list_value: { + values { + string_value: "barbar" + } + values { + string_value: "barbar" + } + values { + string_value: "barbar" + } + values { + string_value: "barbar" + } + } + } + } + } + } + } + type_env: { + name: "x" + ident: { type: { primitive: INT64 }} + } + bindings: { + key: "x" + value: { + value: { + int64_value: 5 + } + } + } + } + test: { + name: "inclusion_list" + expr: "cel.block([[1, 2, 3], 1 in cel.index(0), 2 in cel.index(0), cel.index(1) && cel.index(2), [3, cel.index(0)], 3 in cel.index(4), cel.index(5) && cel.index(1)], cel.index(3) && cel.index(6))" + value: { + bool_value: true + } + } + test: { + name: "inclusion_map" + expr: "cel.block([{true: false}, {\"a\": 1, 2: cel.index(0), 3: cel.index(0)}], 2 in cel.index(1))" + value: { + bool_value: true + } + } + test: { + name: "presence_test" + expr: "cel.block([{\"a\": true}, has(cel.index(0).a), cel.index(0)[\"a\"]], cel.index(1) && cel.index(2))" + value: { + bool_value: true + } + } + test: { + name: "presence_test_2" + expr: "cel.block([{\"a\": true}, has(cel.index(0).a)], cel.index(1) && cel.index(1))" + value: { + bool_value: true + } + } + test: { + name: "presence_test_with_ternary" + expr: "cel.block([msg.oneof_type, has(cel.index(0).payload), cel.index(0).payload, cel.index(2).single_int64, cel.index(1) ? cel.index(3) : 0], cel.index(4))" + value: { + int64_value: 10 + } + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto3.TestAllTypes" }} + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_int64: 3 + single_int32: 5 + oneof_type: { + payload: { + single_int32: 8 + single_int64: 10 + map_int32_int64 { + key: 0 + value: 1 + } + map_int32_int64 { + key: 1 + value: 5 + } + map_int32_int64 { + key: 2 + value: 2 + } + map_string_string { + key: "key" + value: "A" + } + } + } + } + } + } + } + } + } + test: { + name: "presence_test_with_ternary_2" + expr: "cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).single_int64, has(cel.index(0).payload), cel.index(2) * 0, cel.index(3) ? cel.index(2) : cel.index(4)], cel.index(5))" + value: { + int64_value: 10 + } + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto3.TestAllTypes" }} + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_int64: 3 + single_int32: 5 + oneof_type: { + payload: { + single_int32: 8 + single_int64: 10 + map_int32_int64 { + key: 0 + value: 1 + } + map_int32_int64 { + key: 1 + value: 5 + } + map_int32_int64 { + key: 2 + value: 2 + } + map_string_string { + key: "key" + value: "A" + } + } + } + } + } + } + } + } + } + test: { + name: "presence_test_with_ternary_3" + expr: "cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).single_int64, has(cel.index(1).single_int64), cel.index(2) * 0, cel.index(3) ? cel.index(2) : cel.index(4)], cel.index(5))" + value: { + int64_value: 10 + } + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto3.TestAllTypes" }} + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_int64: 3 + single_int32: 5 + oneof_type: { + payload: { + single_int32: 8 + single_int64: 10 + map_int32_int64 { + key: 0 + value: 1 + } + map_int32_int64 { + key: 1 + value: 5 + } + map_int32_int64 { + key: 2 + value: 2 + } + map_string_string { + key: "key" + value: "A" + } + } + } + } + } + } + } + } + } + test: { + name: "presence_test_with_ternary_nested" + expr: "cel.block([msg.oneof_type, cel.index(0).payload, cel.index(1).map_string_string, has(msg.oneof_type), has(cel.index(0).payload), cel.index(3) && cel.index(4), has(cel.index(1).single_int64), cel.index(5) && cel.index(6), has(cel.index(1).map_string_string), has(cel.index(2).key), cel.index(8) && cel.index(9), cel.index(2).key, cel.index(11) == \"A\", cel.index(10) ? cel.index(12) : false], cel.index(7) ? cel.index(13) : false)" + value: { + bool_value: true + } + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto3.TestAllTypes" }} + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_int64: 3 + single_int32: 5 + oneof_type: { + payload: { + single_int32: 8 + single_int64: 10 + map_int32_int64 { + key: 0 + value: 1 + } + map_int32_int64 { + key: 1 + value: 5 + } + map_int32_int64 { + key: 2 + value: 2 + } + map_string_string { + key: "key" + value: "A" + } + } + } + } + } + } + } + } + } + test: { + name: "optional_list" + expr: "cel.block([optional.none(), [?cel.index(0), ?optional.of(opt_x)], [5], [10, ?cel.index(0), cel.index(1), cel.index(1)], [10, cel.index(2), cel.index(2)]], cel.index(3) == cel.index(4))" + value: { + bool_value: true + } + type_env: { + name: "opt_x" + ident: { type: { primitive: INT64 }} + } + bindings: { + key: "opt_x", + value: { + value: { + int64_value: 5 + } + } + } + } + test: { + name: "optional_map" + expr: "cel.block([optional.of(\"hello\"), {?\"hello\": cel.index(0)}, cel.index(1)[\"hello\"], cel.index(2) + cel.index(2)], cel.index(3) == \"hellohello\")" + value: { + bool_value: true + } + } + test: { + name: "optional_map_chained" + expr: "cel.block([{\"key\": \"test\"}, optional.of(\"test\"), {?\"key\": cel.index(1)}, cel.index(2)[?\"bogus\"], cel.index(0)[?\"bogus\"], cel.index(3).or(cel.index(4)), cel.index(0)[\"key\"], cel.index(5).orValue(cel.index(6))], cel.index(7))" + value: { + string_value: 'test' + } + } + test: { + name: "optional_message" + container: "cel.expr.conformance.proto3" + expr: "cel.block([optional.ofNonZeroValue(1), optional.of(4), TestAllTypes{?single_int64: cel.index(0), ?single_int32: cel.index(1)}, cel.index(2).single_int32, cel.index(2).single_int64, cel.index(3) + cel.index(4)], cel.index(5))" + value: { + int64_value: 5 + } + } + test: { + name: "call" + expr: "cel.block([\"h\" + \"e\", cel.index(0) + \"l\", cel.index(1) + \"l\", cel.index(2) + \"o\", cel.index(3) + \" world\"], cel.index(4).matches(cel.index(3)))" + value: { + bool_value: true + } + } +} diff --git a/features/comparisons.feature b/features/comparisons.feature index cda2c4a..3ac5b6a 100644 --- a/features/comparisons.feature +++ b/features/comparisons.feature @@ -1,1351 +1,2363 @@ - +@conformance Feature: comparisons Tests for boolean-valued functions and operators. # eq_literal -- Literals comparison on _==_ -Scenario: eq_int - When CEL expression "1 == 1" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: eq_literal/eq_int + When CEL expression '1 == 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_eq_int +Scenario: eq_literal/not_eq_int - When CEL expression "-1 == 1" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '-1 == 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: eq_literal/eq_int_uint -Scenario: eq_uint + When CEL expression 'dyn(1) == 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "2u == 2u" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: eq_literal/not_eq_int_uint + When CEL expression 'dyn(2) == 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_eq_uint +@wip +Scenario: eq_literal/eq_int_double - When CEL expression "1u == 2u" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(1) == 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: eq_literal/not_eq_int_double -Scenario: eq_double + When CEL expression 'dyn(2) == 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "1.0 == 1.0e+0" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: eq_literal/eq_uint + When CEL expression '2u == 2u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_eq_double +Scenario: eq_literal/not_eq_uint - When CEL expression "-1.0 == 1.0" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '1u == 2u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: eq_literal/eq_uint_int -Scenario: eq_double_NaN - CEL defines all NaN values to be equal. - When CEL expression "1.0 / 0.0 == 1.0 / 0.0" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(1u) == 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: eq_literal/not_eq_uint_int -Scenario: eq_string + When CEL expression 'dyn(2u) == 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression ''' == ""' is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: eq_literal/eq_uint_double + When CEL expression 'dyn(1u) == 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_eq_string +@wip +Scenario: eq_literal/not_eq_uint_double - When CEL expression "'a' == 'b'" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(2u) == 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: eq_literal/eq_double -Scenario: eq_raw_string + When CEL expression '1.0 == 1.0e+0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "'abc' == r'abc'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: eq_literal/not_eq_double + When CEL expression '-1.0 == 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_eq_string_case +@wip +Scenario: eq_literal/not_eq_double_nan - When CEL expression "'abc' == 'ABC'" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '0.0/0.0 == 0.0/0.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: eq_literal/not_eq_int_double_nan -Scenario: eq_string_unicode + When CEL expression 'dyn(1) == 0.0/0.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "'ίσος' == 'ίσος'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: eq_literal/not_eq_uint_double_nan + When CEL expression 'dyn(1u) == 0.0/0.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_eq_string_unicode_ascii +@wip +Scenario: eq_literal/eq_double_int - When CEL expression "'a' == 'Γ '" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(1.0) == 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: eq_literal/not_eq_double_int -Scenario: no_string_normalization - Should not normalize Unicode. - When CEL expression "'Am\u00E9lie' == 'Ame\u0301lie'" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(2.0) == 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: eq_literal/eq_double_uint -Scenario: no_string_normalization_surrogate - Should not replace surrogate pairs. - When CEL expression "'\U0001F436' == '\xef\xbf\xbd\xef\xbf\bd'" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(1.0) == 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: eq_literal/not_eq_double_uint -Scenario: eq_null + When CEL expression 'dyn(2.0) == 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "null == null" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: eq_literal/eq_string + When CEL expression '\'\' == ""' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: eq_bool +Scenario: eq_literal/not_eq_string - When CEL expression "true == true" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression "'a' == 'b'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: eq_literal/eq_raw_string -Scenario: not_eq_bool + When CEL expression "'abc' == r'abc'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: eq_literal/not_eq_string_case - When CEL expression "false == true" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression "'abc' == 'ABC'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: eq_literal/eq_string_unicode -Scenario: eq_bytes + When CEL expression "'ίσος' == 'ίσος'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: eq_literal/not_eq_string_unicode_ascii + + When CEL expression "'a' == 'Γ '" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: eq_literal/no_string_normalization + Should not normalize Unicode. + + When CEL expression "'Am\\u00E9lie' == 'Ame\\u0301lie'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: eq_literal/eq_null + + When CEL expression 'null == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: eq_literal/eq_bool + + When CEL expression 'true == true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: eq_literal/not_eq_bool + + When CEL expression 'false == true' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: eq_literal/eq_bytes Test bytes literal equality with encoding - When CEL expression "b'ΓΏ' == b'\303\277'" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression "b'ΓΏ' == b'\\303\\277'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_eq_bytes +Scenario: eq_literal/not_eq_bytes When CEL expression "b'abc' == b'abcd'" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Then value is celpy.celtypes.BoolType(source=False) +Scenario: eq_literal/eq_list_empty -Scenario: eq_list_empty + When CEL expression '[] == []' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "[] == []" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: eq_literal/eq_list_null + When CEL expression '[null] == [null]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: eq_list_numbers +Scenario: eq_literal/not_eq_list_null - When CEL expression "[1, 2, 3] == [1, 2, 3]" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression "['1', '2', null] == ['1', '2', '3']" is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: eq_literal/eq_list_numbers -Scenario: not_eq_list_order + When CEL expression '[1, 2, 3] == [1, 2, 3]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "[1, 2, 3] == [1, 3, 2]" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: eq_literal/eq_list_mixed_type_numbers + When CEL expression '[1.0, 2.0, 3] == [1u, 2, 3u]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_eq_list_string_case +@wip +Scenario: eq_literal/not_eq_list_mixed_type_numbers - When CEL expression "['case'] == ['cAse']" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '[1.0, 2.1] == [1u, 2]' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: eq_literal/not_eq_list_order -Scenario: not_eq_list_length + When CEL expression '[1, 2, 3] == [1, 3, 2]' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "['one'] == [2, 3]" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: eq_literal/not_eq_list_string_case + When CEL expression "['case'] == ['cAse']" is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_eq_list_false_vs_types +Scenario: eq_literal/not_eq_list_length + + Given disable_check parameter is True + When CEL expression "['one'] == [2, 3]" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: eq_literal/not_eq_list_false_vs_types When CEL expression "[1, 'dos', 3] == [1, 2, 4]" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Then value is celpy.celtypes.BoolType(source=False) +Scenario: eq_literal/eq_map_empty -Scenario: eq_map_empty + When CEL expression '{} == {}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "{} == {}" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: eq_literal/eq_map_null + When CEL expression "{'k': null} == {'k': null}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: eq_map_onekey +@wip +Scenario: eq_literal/not_eq_map_null - When CEL expression '{'k':'v'} == {"k":"v"}' is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression "{'k': 1, 'j': 2} == {'k': 1, 'j': null}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: eq_literal/eq_map_onekey -Scenario: eq_map_doublevalue + When CEL expression '{\'k\':\'v\'} == {"k":"v"}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: eq_literal/eq_map_double_value When CEL expression "{'k':1.0} == {'k':1e+0}" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: eq_literal/eq_map_mixed_type_numbers -Scenario: not_eq_map_value + When CEL expression '{1: 1.0, 2u: 3u} == {1u: 1, 2: 3.0}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "{'k':'v'} == {'k':'v1'}" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: eq_literal/not_eq_map_value + When CEL expression "{'k':'v'} == {'k':'v1'}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_eq_map_extrakey +Scenario: eq_literal/not_eq_map_extra_key When CEL expression "{'k':'v','k1':'v1'} == {'k':'v'}" is evaluated - # bool_value:false - Then value is BoolType(source=False) - + Then value is celpy.celtypes.BoolType(source=False) -Scenario: eq_map_keyorder +Scenario: eq_literal/eq_map_key_order When CEL expression "{'k1':'v1','k2':'v2'} == {'k2':'v2','k1':'v1'}" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_eq_map_key_casing +Scenario: eq_literal/not_eq_map_key_casing When CEL expression "{'key':'value'} == {'Key':'value'}" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Then value is celpy.celtypes.BoolType(source=False) - -Scenario: not_eq_map_false_vs_types +Scenario: eq_literal/not_eq_map_false_vs_types When CEL expression "{'k1': 1, 'k2': 'dos', 'k3': 3} == {'k1': 1, 'k2': 2, 'k3': 4}" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: eq_literal/eq_mixed_types -Scenario: eq_mixed_types_error - A mix of types fails during type checks but can't be captured in the conformance tests yet (See google/cel-go#155). Also, if you disable checks it yields {bool_value: false} where it should also yield an error - When CEL expression "1.0 == 1" is evaluated - # errors:{message:"no such overload"} - Then eval_error is 'no such overload' + Given disable_check parameter is True + When CEL expression '1.0 == 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: eq_literal/eq_list_elem_mixed_types -Scenario: eq_list_elem_mixed_types_error - A mix of types in a list fails during type checks. See #self_test_equals_mixed_types - When CEL expression "[1] == [1.0]" is evaluated - # errors:{message:"no such overload"} - Then eval_error is 'no such overload' + Given disable_check parameter is True + When CEL expression '[1] == [1.0]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: eq_literal/eq_map_value_mixed_types -Scenario: eq_map_value_mixed_types_error - Mixed map value types yields error as key '1' values differed by type. When CEL expression "{'k':'v', 1:1} == {'k':'v', 1:'v1'}" is evaluated - # errors:{message:"no such overload"} - Then eval_error is 'no such overload' + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_literal/eq_dyn_json_null + + When CEL expression 'dyn(google.protobuf.Value{}) == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: eq_literal/not_eq_dyn_bool_null + + When CEL expression 'dyn(false) == null' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: eq_literal/not_eq_dyn_bytes_null + + When CEL expression "dyn(b'') == null" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_literal/not_eq_dyn_double_null + + When CEL expression 'dyn(2.1) == null' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: eq_literal/not_eq_dyn_duration_null + + When CEL expression "dyn(duration('0s')) == null" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_literal/not_eq_dyn_int_null + + When CEL expression 'dyn(1) == null' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_literal/not_eq_dyn_list_null + + When CEL expression 'dyn([]) == null' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_literal/not_eq_dyn_map_null + + When CEL expression 'dyn({}) == null' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: eq_literal/not_eq_dyn_proto2_msg_null + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'dyn(TestAllTypes{}) == null' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: eq_literal/not_eq_dyn_proto3_msg_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'dyn(TestAllTypes{}) == null' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: eq_literal/not_eq_dyn_string_null + + When CEL expression "dyn('') == null" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_literal/not_eq_dyn_timestamp_null + + When CEL expression 'dyn(timestamp(0)) == null' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_literal/not_eq_list_elem_null + + When CEL expression '[1, 2, null] == [1, null, 3]' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: eq_literal/not_eq_map_value_null + + When CEL expression "{1:'hello', 2:'world'} == {1:'goodbye', 2:null}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_literal/eq_dyn_int_uint + + When CEL expression 'dyn(1) == 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_literal/eq_dyn_int_double + + When CEL expression 'dyn(1) == 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_literal/eq_dyn_uint_int + + When CEL expression 'dyn(1u) == 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_literal/eq_dyn_uint_double + + When CEL expression 'dyn(1u) == 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_literal/eq_dyn_double_int + + When CEL expression 'dyn(1.0) == 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_literal/eq_dyn_double_uint + + When CEL expression 'dyn(1.0) == 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_literal/not_eq_dyn_int_uint + + When CEL expression 'dyn(1) == 2u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_literal/not_eq_dyn_int_double + + When CEL expression 'dyn(1) == 2.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_literal/not_eq_dyn_uint_int + + When CEL expression 'dyn(1u) == 2' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_literal/not_eq_dyn_uint_double + + When CEL expression 'dyn(1u) == 120' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_literal/not_eq_dyn_double_int + + When CEL expression 'dyn(1.0) == 2' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_literal/not_eq_dyn_double_uint + + When CEL expression 'dyn(1.0) == 2u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + + +# eq_wrapper -- Wrapper type comparison on _==_. Wrapper types treated as boxed primitives when they appear on message fields. An unset wrapper field should be treated as null. The tests show the distinction between unset, empty, and set equality behavior. + + +@wip +Scenario: eq_wrapper/eq_bool + + When CEL expression 'google.protobuf.BoolValue{value: true} == true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_bool_empty + + When CEL expression 'google.protobuf.BoolValue{} == false' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_bool_not_null + + When CEL expression 'google.protobuf.BoolValue{} != null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_bool_proto2_null + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_bool_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_bool_proto3_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_bool_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_bytes + + When CEL expression "google.protobuf.BytesValue{value: b'set'} == b'set'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: eq_wrapper/eq_bytes_empty + + When CEL expression "google.protobuf.BytesValue{} == b''" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: eq_wrapper/eq_bytes_not_null + + When CEL expression 'google.protobuf.BytesValue{} != null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_bytes_proto2_null + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_bytes_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: eq_wrapper/eq_bytes_proto3_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_bytes_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_double + + When CEL expression 'google.protobuf.DoubleValue{value: -1.175494e-40} == -1.175494e-40' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_double_empty + + When CEL expression 'google.protobuf.DoubleValue{} == 0.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_double_not_null + + When CEL expression 'google.protobuf.DoubleValue{} != null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_double_proto2_null + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_double_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_double_proto3_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_double_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_float + + When CEL expression 'google.protobuf.FloatValue{value: -1.5} == -1.5' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_float_empty + + When CEL expression 'google.protobuf.FloatValue{} == 0.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_float_not_null + + When CEL expression 'google.protobuf.FloatValue{} != null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_float_proto2_null + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_float_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_float_proto3_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_float_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_int32 + + When CEL expression 'google.protobuf.Int32Value{value: 123} == 123' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_int32_empty + + When CEL expression 'google.protobuf.Int32Value{} == 0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_int32_not_null + + When CEL expression 'google.protobuf.Int32Value{} != null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_int32_proto2_null + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_int32_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_int32_proto3_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_int32_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_int64 + + When CEL expression 'google.protobuf.Int64Value{value: 2147483650} == 2147483650' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_int64_empty + + When CEL expression 'google.protobuf.Int64Value{} == 0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_int64_not_null + + When CEL expression 'google.protobuf.Int64Value{} != null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_int64_proto2_null + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_int64_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_int64_proto3_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_int64_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_string + + When CEL expression "google.protobuf.StringValue{value: 'set'} == 'set'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_string_empty + + When CEL expression "google.protobuf.StringValue{} == ''" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: eq_wrapper/eq_string_not_null + + When CEL expression 'google.protobuf.StringValue{} != null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_string_proto2_null + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_string_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_string_proto3_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_string_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_uint32 + + When CEL expression 'google.protobuf.UInt32Value{value: 42u} == 42u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_uint32_empty + + When CEL expression 'google.protobuf.UInt32Value{} == 0u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_uint32_not_null + + When CEL expression 'google.protobuf.UInt32Value{} != null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_uint32_proto2_null + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_uint32_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_uint32_proto3_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_uint32_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_uint64 + + When CEL expression 'google.protobuf.UInt64Value{value: 4294967296u} == 4294967296u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_uint64_empty + + When CEL expression 'google.protobuf.UInt64Value{} == 0u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_uint64_not_null + + When CEL expression 'google.protobuf.UInt64Value{} != null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_uint64_proto2_null + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_uint64_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_uint64_proto3_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_uint64_wrapper == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: eq_wrapper/eq_proto2 + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_int64: 1234, single_string: '1234'} == TestAllTypes{single_int64: 1234, single_string: '1234'}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: eq_wrapper/eq_proto3 + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_int64: 1234, single_string: '1234'} == TestAllTypes{single_int64: 1234, single_string: '1234'}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_proto2_missing_fields_neq + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_int64: 1234} == TestAllTypes{single_string: '1234'}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_wrapper/eq_proto3_missing_fields_neq + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_int64: 1234} == TestAllTypes{single_string: '1234'}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: eq_wrapper/eq_proto_nan_equal + For proto equality, fields with NaN value are treated as not equal. + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_double: double('NaN')} == TestAllTypes{single_double: double('NaN')}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: eq_wrapper/eq_proto_different_types + At runtime, differently typed messages are treated as not equal. + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'dyn(TestAllTypes{}) == dyn(NestedTestAllTypes{})' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_wrapper/eq_proto2_any_unpack_equal + Any values should be unpacked and compared. + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} == TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_proto2_any_unpack_not_equal + Any values should be unpacked and compared. + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'a\\000\\000\\000\\000\\000H\\223\\300r\\0041234'}} == TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_wrapper/eq_proto2_any_unpack_bytewise_fallback_not_equal + If an any field is missing its type_url, the comparison should + fallback to a bytewise comparison of the serialized proto. + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} == TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_wrapper/eq_proto2_any_unpack_bytewise_fallback_equal + If an any field is missing its type_url, the comparison should + fallback to a bytewise comparison of the serialized proto. + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} == TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_proto3_any_unpack_equal + Any values should be unpacked and compared. + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} == TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: eq_wrapper/eq_proto3_any_unpack_not_equal + Any values should be unpacked and compared. + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'a\\000\\000\\000\\000\\000H\\223\\300r\\0041234'}} == TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_wrapper/eq_proto3_any_unpack_bytewise_fallback_not_equal + If an any field is missing its type_url, the comparison should + fallback to a bytewise comparison of the serialized proto. + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} == TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: eq_wrapper/eq_proto3_any_unpack_bytewise_fallback_equal + If an any field is missing its type_url, the comparison should + fallback to a bytewise comparison of the serialized proto. + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} == TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) # ne_literal -- Literals comparison on _!=_ -Scenario: ne_int - When CEL expression "24 != 42" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: ne_literal/ne_int + When CEL expression '24 != 42' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_ne_int +Scenario: ne_literal/not_ne_int - When CEL expression "1 != 1" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '1 != 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: ne_literal/ne_int_double -Scenario: ne_uint + When CEL expression 'dyn(24) != 24.1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "1u != 2u" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: ne_literal/not_ne_int_double + When CEL expression 'dyn(1) != 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_ne_uint +@wip +Scenario: ne_literal/ne_int_uint - When CEL expression "99u != 99u" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(24) != 42u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: ne_literal/not_ne_int_uint -Scenario: ne_double + When CEL expression 'dyn(1) != 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "9.0e+3 != 9001.0" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: ne_literal/ne_uint + When CEL expression '1u != 2u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_ne_double +Scenario: ne_literal/not_ne_uint - When CEL expression "1.0 != 1e+0" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '99u != 99u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: ne_literal/ne_uint_double -Scenario: ne_string + When CEL expression 'dyn(1u) != 2.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "'abc' != ''" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: ne_literal/not_ne_uint_double + When CEL expression 'dyn(99u) != 99.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_ne_string +Scenario: ne_literal/ne_double - When CEL expression "'abc' != 'abc'" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '9.0e+3 != 9001.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: ne_literal/not_ne_double_nan -Scenario: ne_string_unicode + When CEL expression '0.0/0.0 != 0.0/0.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "'rΓ©sumΓ©' != 'resume'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: ne_literal/not_ne_int_double_nan + When CEL expression 'dyn(1) != 0.0/0.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_ne_string_unicode +@wip +Scenario: ne_literal/not_ne_uint_double_nan - When CEL expression "'ίδιο' != 'ίδιο'" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(1u) != 0.0/0.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: ne_literal/not_ne_double -Scenario: ne_bytes + When CEL expression '1.0 != 1e+0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "b'\x00\xFF' != b'ΓΏ'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: ne_literal/ne_double_int + When CEL expression 'dyn(9000) != 9001.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_ne_bytes +@wip +Scenario: ne_literal/not_ne_double_int - When CEL expression "b'\303\277' != b'ΓΏ'" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(1) != 1e+0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: ne_literal/ne_double_uint -Scenario: ne_bool + When CEL expression 'dyn(9000u) != 9001.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "false != true" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: ne_literal/not_ne_double_uint + When CEL expression 'dyn(1u) != 1e+0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_ne_bool +@wip +Scenario: ne_literal/ne_double_nan - When CEL expression "true != true" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '0.0/0.0 != 0.0/0.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: ne_literal/ne_string -Scenario: not_ne_null - null can only be equal to null, or else it won't match - When CEL expression "null != null" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression "'abc' != ''" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: ne_literal/not_ne_string + When CEL expression "'abc' != 'abc'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: ne_list_empty +Scenario: ne_literal/ne_string_unicode - When CEL expression "[] != [1]" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression "'rΓ©sumΓ©' != 'resume'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: ne_literal/not_ne_string_unicode -Scenario: not_ne_list_empty + When CEL expression "'ίδιο' != 'ίδιο'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "[] != []" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: ne_literal/ne_bytes + When CEL expression "b'\\x00\\xFF' != b'ΓΏ'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: ne_list_bool +Scenario: ne_literal/not_ne_bytes - When CEL expression "[true, false, true] != [true, true, false]" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression "b'\\303\\277' != b'ΓΏ'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: ne_literal/ne_bool -Scenario: not_ne_list_bool + When CEL expression 'false != true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "[false, true] != [false, true]" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: ne_literal/not_ne_bool + When CEL expression 'true != true' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_ne_list_of_list +Scenario: ne_literal/not_ne_null + null can only be equal to null, or else it won't match - When CEL expression "[[]] != [[]]" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'null != null' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: ne_literal/ne_list_empty -Scenario: ne_map_by_value + When CEL expression '[] != [1]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "{'k':'v'} != {'k':'v1'}" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: ne_literal/not_ne_list_empty + When CEL expression '[] != []' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: ne_map_by_key +Scenario: ne_literal/ne_list_bool - When CEL expression "{'k':true} != {'k1':true}" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '[true, false, true] != [true, true, false]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: ne_literal/not_ne_list_bool -Scenario: not_ne_map_int_to_float + When CEL expression '[false, true] != [false, true]' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "{1:1.0} != {1:1.0}" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: ne_literal/not_ne_list_of_list + When CEL expression '[[]] != [[]]' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_ne_map_key_order +Scenario: ne_literal/ne_map_by_value + + When CEL expression "{'k':'v'} != {'k':'v1'}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: ne_literal/ne_map_by_key + + When CEL expression "{'k':true} != {'k1':true}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: ne_literal/not_ne_map_int_to_float + + When CEL expression '{1:1.0} != {1:1.0}' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: ne_literal/not_ne_map_key_order When CEL expression "{'a':'b','c':'d'} != {'c':'d','a':'b'}" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: ne_literal/ne_mixed_types -Scenario: ne_mixed_types_error + Given disable_check parameter is True + When CEL expression '2u != 2' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "2u != 2" is evaluated - # errors:{message:"no such overload"} - Then eval_error is 'no such overload' +Scenario: ne_literal/ne_proto2 + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_int64: 1234, single_string: '1234'} != TestAllTypes{single_int64: 1234, single_string: '1234'}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: ne_literal/ne_proto3 -# lt_literal -- Literals comparison on _<_. (a < b) == (b > a) == !(a >= b) == !(b <= a) + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_int64: 1234, single_string: '1234'} != TestAllTypes{single_int64: 1234, single_string: '1234'}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: lt_int +Scenario: ne_literal/ne_proto2_missing_fields_neq - When CEL expression "-1 < 0" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_int64: 1234} != TestAllTypes{single_string: '1234'}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: ne_literal/ne_proto3_missing_fields_neq -Scenario: not_lt_int + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_int64: 1234} != TestAllTypes{single_string: '1234'}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "0 < 0" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: ne_literal/ne_proto_nan_not_equal + For proto equality, NaN field values are not considered equal. + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_double: double('NaN')} != TestAllTypes{single_double: double('NaN')}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: lt_uint +@wip +Scenario: ne_literal/ne_proto_different_types + At runtime, comparing differently typed messages is false. - When CEL expression "0u < 1u" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'dyn(TestAllTypes{}) != dyn(NestedTestAllTypes{})' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: ne_literal/ne_proto2_any_unpack + Any values should be unpacked and compared. -Scenario: not_lt_uint + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} != TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "2u < 2u" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: ne_literal/ne_proto2_any_unpack_bytewise_fallback + If an any field is missing its type_url, the comparison should + fallback to a bytewise comparison of the serialized proto. + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} != TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: lt_double +@wip +Scenario: ne_literal/ne_proto3_any_unpack + Any values should be unpacked and compared. - When CEL expression "1.0 < 1.0000001" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} != TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: ne_literal/ne_proto3_any_unpack_bytewise_fallback + If an any field is missing its type_url, the comparison should + fallback to a bytewise comparison of the serialized proto. -Scenario: not_lt_double - Following IEEE 754, negative zero compares equal to zero - When CEL expression "-0.0 < 0.0" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} != TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: lt_string +# lt_literal -- Literals comparison on _<_. (a < b) == (b > a) == !(a >= b) == !(b <= a) - When CEL expression "'a' < 'b'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lt_literal/lt_int -Scenario: lt_string_empty_to_nonempty + When CEL expression '-1 < 0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "'' < 'a'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lt_literal/not_lt_int + When CEL expression '0 < 0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: lt_string_case +Scenario: lt_literal/lt_uint - When CEL expression "'Abc' < 'aBC'" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '0u < 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: lt_literal/not_lt_uint -Scenario: lt_string_length + When CEL expression '2u < 2u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "'abc' < 'abcd'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lt_literal/lt_double + When CEL expression '1.0 < 1.0000001' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: lt_string_diacritical_mark_sensitive - Verifies that the we're not using a string comparison function that strips diacritical marks (Γ‘) - When CEL expression "'a' < '\u00E1'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lt_literal/not_lt_double + Following IEEE 754, negative zero compares equal to zero + When CEL expression '-0.0 < 0.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_lt_string_empty +Scenario: lt_literal/lt_string - When CEL expression "'' < ''" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression "'a' < 'b'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: lt_literal/lt_string_empty_to_nonempty -Scenario: not_lt_string_same + When CEL expression "'' < 'a'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "'abc' < 'abc'" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: lt_literal/lt_string_case + When CEL expression "'Abc' < 'aBC'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_lt_string_case_length +Scenario: lt_literal/lt_string_length - When CEL expression "'a' < 'AB'" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression "'abc' < 'abcd'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: lt_literal/lt_string_diacritical_mark_sensitive + Verifies that the we're not using a string comparison function that + strips diacritical marks (Γ‘) -Scenario: unicode_order_lexical - Compare the actual code points of the string, instead of decomposing αΊΏ into 'e' plus accent modifiers. - When CEL expression "'f' < '\u1EBF'" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression "'a' < '\\u00E1'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: lt_literal/not_lt_string_empty -Scenario: lt_bytes + When CEL expression "'' < ''" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "b'a' < b'b'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lt_literal/not_lt_string_same + When CEL expression "'abc' < 'abc'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_lt_bytes_same +Scenario: lt_literal/not_lt_string_case_length - When CEL expression "b'abc' < b'abc'" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression "'a' < 'AB'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: lt_literal/unicode_order_lexical + Compare the actual code points of the string, instead of decomposing αΊΏ + into 'e' plus accent modifiers. -Scenario: not_lt_bytes_width + When CEL expression "'f' < '\\u1EBF'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "b'Γ‘' < b'b'" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: lt_literal/lt_bytes + When CEL expression "b'a' < b'b'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: lt_bool_false_first +Scenario: lt_literal/not_lt_bytes_same - When CEL expression "false < true" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression "b'abc' < b'abc'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: lt_literal/not_lt_bytes_width -Scenario: not_lt_bool_same + When CEL expression "b'Γ‘' < b'b'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "true < true" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: lt_literal/lt_bool_false_first + When CEL expression 'false < true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_lt_bool_true_first +Scenario: lt_literal/not_lt_bool_same - When CEL expression "true < false" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'true < true' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: lt_literal/not_lt_bool_true_first -Scenario: lt_list_unsupported + When CEL expression 'true < false' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "[0] < [1]" is evaluated - # errors:{message:"no such overload"} - Then eval_error is 'no such overload' +Scenario: lt_literal/lt_list_unsupported + Given disable_check parameter is True + When CEL expression '[0] < [1]' is evaluated + Then eval_error is 'no such overload' -Scenario: lt_map_unsupported +Scenario: lt_literal/lt_map_unsupported + Given disable_check parameter is True When CEL expression "{0:'a'} < {1:'b'}" is evaluated - # errors:{message:"no such overload"} Then eval_error is 'no such overload' - -Scenario: lt_null_unsupported +Scenario: lt_literal/lt_null_unsupported Ensure _<_ doesn't have a binding for null - When CEL expression "null < null" is evaluated - # errors:{message:"no such overload"} - Then eval_error is 'no such overload' + Given disable_check parameter is True + When CEL expression 'null < null' is evaluated + Then eval_error is 'no such overload' -Scenario: lt_mixed_types_error +Scenario: lt_literal/lt_mixed_types_error + Given disable_check parameter is True When CEL expression "'foo' < 1024" is evaluated - # errors:{message:"no such overload"} Then eval_error is 'no such overload' +@wip +Scenario: lt_literal/lt_dyn_int_uint + When CEL expression 'dyn(1) < 2u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -# gt_literal -- Literals comparison on _>_ +@wip +Scenario: lt_literal/lt_dyn_int_double -Scenario: gt_int + When CEL expression 'dyn(1) < 2.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "42 > -42" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lt_literal/lt_dyn_uint_int + When CEL expression 'dyn(1u) < 2' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_gt_int +Scenario: lt_literal/lt_dyn_uint_double - When CEL expression "0 > 0" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(1u) < 2.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: lt_literal/lt_dyn_double_int -Scenario: gt_uint + When CEL expression 'dyn(1.0) < 2' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "48u > 46u" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lt_literal/lt_dyn_double_uint + When CEL expression 'dyn(1.0) < 2u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_gt_uint +@wip +Scenario: lt_literal/not_lt_dyn_int_uint - When CEL expression "0u > 999u" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(1) < 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: lt_literal/not_lt_dyn_int_double -Scenario: gt_double + When CEL expression 'dyn(1) < 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "1e+1 > 1e+0" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lt_literal/not_lt_dyn_uint_int + When CEL expression 'dyn(1u) < 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_gt_double +Scenario: lt_literal/not_lt_dyn_uint_double - When CEL expression ".99 > 9.9e-1" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(1u) < 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: lt_literal/not_lt_dyn_double_int -Scenario: gt_string_case + When CEL expression 'dyn(1.0) < 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "'abc' > 'aBc'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lt_literal/not_lt_dyn_double_uint + When CEL expression 'dyn(1.0) < 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: gt_string_to_empty +@wip +Scenario: lt_literal/lt_dyn_int_big_uint - When CEL expression "'A' > ''" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(1) < 9223372036854775808u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: lt_literal/lt_dyn_small_int_uint -Scenario: not_gt_string_empty_to_empty + When CEL expression 'dyn(-1) < 0u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "'' > ''" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: lt_literal/not_lt_dyn_int_big_lossy_double + When CEL expression 'dyn(9223372036854775807) < 9223372036854775808.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: gt_string_unicode +@wip +Scenario: lt_literal/lt_dyn_int_big_lossy_double - When CEL expression "'Ξ±' > 'omega'" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(9223372036854775807) < 9223372036854777857.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: lt_literal/not_lt_dyn_int_small_double + When CEL expression 'dyn(9223372036854775807) < -9223372036854777857.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: gt_bytes_one +@wip +Scenario: lt_literal/not_lt_dyn_int_small_lossy_double - When CEL expression "b'' > b''" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(-9223372036854775808) < -9223372036854775809.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: lt_literal/not_lt_dyn_uint_small_int -Scenario: gt_bytes_one_to_empty + When CEL expression 'dyn(1u) < -9223372036854775808' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "b'' > b''" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lt_literal/not_lt_dyn_big_uint_int + When CEL expression 'dyn(9223372036854775808u) < 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_gt_bytes_sorting +Scenario: lt_literal/not_lt_dyn_uint_small_double - When CEL expression "b'' > b''" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(18446744073709551615u) < -1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: lt_literal/lt_dyn_uint_big_double -Scenario: gt_bool_true_false + When CEL expression 'dyn(18446744073709551615u) < 18446744073709590000.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "true > false" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lt_literal/not_lt_dyn_big_double_uint + When CEL expression 'dyn(18446744073709553665.0) < 18446744073709551615u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_gt_bool_false_true +Scenario: lt_literal/not_lt_dyn_big_double_int - When CEL expression "false > true" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(9223372036854775808.0) < 9223372036854775807' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: lt_literal/not_lt_dyn_small_double_int -Scenario: not_gt_bool_same + When CEL expression 'dyn(-9223372036854775809.0) < -9223372036854775808' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "true > true" is evaluated - # bool_value:false - Then value is BoolType(source=False) +# gt_literal -- Literals comparison on _>_ -Scenario: gt_null_unsupported - When CEL expression "null > null" is evaluated - # errors:{message:"no such overload"} - Then eval_error is 'no such overload' +Scenario: gt_literal/gt_int + + When CEL expression '42 > -42' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gt_literal/not_gt_int + + When CEL expression '0 > 0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: gt_literal/gt_uint + + When CEL expression '48u > 46u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: gt_literal/not_gt_uint -Scenario: gt_list_unsupported + When CEL expression '0u > 999u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: gt_literal/gt_double + + When CEL expression '1e+1 > 1e+0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gt_literal/not_gt_double + + When CEL expression '.99 > 9.9e-1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: gt_literal/gt_string_case + + When CEL expression "'abc' > 'aBc'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "[1] > [0]" is evaluated - # errors:{message:"no such overload"} +Scenario: gt_literal/gt_string_to_empty + + When CEL expression "'A' > ''" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gt_literal/not_gt_string_empty_to_empty + + When CEL expression "'' > ''" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: gt_literal/gt_string_unicode + + When CEL expression "'Ξ±' > 'omega'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gt_literal/gt_bytes_one + + When CEL expression "b'\x01' > b'\x00'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gt_literal/gt_bytes_one_to_empty + + When CEL expression "b'\x00' > b''" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gt_literal/not_gt_bytes_sorting + + When CEL expression "b'\x00\x01' > b'\x01'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: gt_literal/gt_bool_true_false + + When CEL expression 'true > false' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gt_literal/not_gt_bool_false_true + + When CEL expression 'false > true' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: gt_literal/not_gt_bool_same + + When CEL expression 'true > true' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: gt_literal/gt_null_unsupported + + Given disable_check parameter is True + When CEL expression 'null > null' is evaluated Then eval_error is 'no such overload' +Scenario: gt_literal/gt_list_unsupported + + Given disable_check parameter is True + When CEL expression '[1] > [0]' is evaluated + Then eval_error is 'no such overload' -Scenario: gt_map_unsupported +Scenario: gt_literal/gt_map_unsupported + Given disable_check parameter is True When CEL expression "{1:'b'} > {0:'a'}" is evaluated - # errors:{message:"no such overload"} Then eval_error is 'no such overload' +Scenario: gt_literal/gt_mixed_types_error -Scenario: gt_mixed_types_error - + Given disable_check parameter is True When CEL expression "'foo' > 1024" is evaluated - # errors:{message:"no such overload"} Then eval_error is 'no such overload' +@wip +Scenario: gt_literal/gt_dyn_int_uint + When CEL expression 'dyn(2) > 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -# lte_literal -- Literals comparison on _<=_ +@wip +Scenario: gt_literal/gt_dyn_int_double -Scenario: lte_int_lt + When CEL expression 'dyn(2) > 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "0 <= 1" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: gt_literal/gt_dyn_uint_int + When CEL expression 'dyn(2u) > 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: lte_int_eq +Scenario: gt_literal/gt_dyn_uint_double - When CEL expression "1 <= 1" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(2u) > 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: gt_literal/gt_dyn_double_int -Scenario: not_lte_int_gt + When CEL expression 'dyn(2.0) > 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "1 <= -1" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: gt_literal/gt_dyn_double_uint + When CEL expression 'dyn(2.0) > 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: lte_uint_lt +@wip +Scenario: gt_literal/not_gt_dyn_int_uint - When CEL expression "0u <= 1u" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(1) > 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: gt_literal/not_gt_dyn_int_double -Scenario: lte_uint_eq + When CEL expression 'dyn(1) > 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "1u <= 1u" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: gt_literal/not_gt_dyn_uint_int + When CEL expression 'dyn(1u) > 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_lte_uint_gt +Scenario: gt_literal/not_gt_dyn_uint_double - When CEL expression "1u <= 0u" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(1u) > 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: gt_literal/not_gt_dyn_double_int -Scenario: lte_double_lt + When CEL expression 'dyn(1.0) > 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "0.0 <= 0.1e-31" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: gt_literal/not_gt_dyn_double_uint + When CEL expression 'dyn(1.0) > 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: lte_double_eq +@wip +Scenario: gt_literal/not_gt_dyn_int_big_uint - When CEL expression "0.0 <= 0e-1" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(1) > 9223372036854775808u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: gt_literal/not_gt_dyn_small_int_uint -Scenario: not_lte_double_gt + When CEL expression 'dyn(-1) > 0u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "1.0 <= 0.99" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: gt_literal/not_gt_dyn_int_big_double + When CEL expression 'dyn(9223372036854775807) > 9223372036854775808.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: lte_string_empty +@wip +Scenario: gt_literal/not_gt_dyn_int_small_lossy_double + The conversion of the int to double is lossy and the numbers end up + being equal - When CEL expression "'' <= ''" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(-9223372036854775808) > -9223372036854775809.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: gt_literal/gt_dyn_int_small_lossy_double_greater -Scenario: lte_string_from_empty + When CEL expression 'dyn(-9223372036854775808) > -9223372036854777857.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "'' <= 'a'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: gt_literal/gt_dyn_uint_small_int + When CEL expression 'dyn(1u) > -1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_lte_string_to_empty +Scenario: gt_literal/gt_dyn_big_uint_int - When CEL expression "'a' <= ''" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(9223372036854775808u) > 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: gt_literal/gt_dyn_uint_small_double -Scenario: lte_string_lexicographical + When CEL expression 'dyn(9223372036854775807u) > -1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "'aBc' <= 'abc'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: gt_literal/not_gt_dyn_uint_big_double + When CEL expression 'dyn(18446744073709551615u) > 18446744073709590000.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: lte_string_unicode_eq +Scenario: gt_literal/gt_dyn_big_double_uint - When CEL expression "'Ξ±' <= 'Ξ±'" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(18446744073709553665.0) > 18446744073709551615u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: gt_literal/not_gt_dyn_big_double_int -Scenario: lte_string_unicode_lt + When CEL expression 'dyn(9223372036854775808.0) > 9223372036854775807' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "'a' <= 'Ξ±'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: gt_literal/not_gt_dyn_small_double_int + When CEL expression 'dyn(-9223372036854775809.0) > -9223372036854775808' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_lte_string_unicode - When CEL expression "'Ξ±' <= 'a'" is evaluated - # bool_value:false - Then value is BoolType(source=False) +# lte_literal -- Literals comparison on _<=_ -Scenario: lte_bytes_empty +Scenario: lte_literal/lte_int_lt - When CEL expression "b'' <= b''" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '0 <= 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: lte_literal/lte_int_eq -Scenario: not_lte_bytes_length + When CEL expression '1 <= 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "b'' <= b''" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: lte_literal/not_lte_int_gt + When CEL expression '1 <= -1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: lte_bool_false_true +Scenario: lte_literal/lte_uint_lt - When CEL expression "false <= true" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '0u <= 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: lte_literal/lte_uint_eq -Scenario: lte_bool_false_false + When CEL expression '1u <= 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "false <= false" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lte_literal/not_lte_uint_gt + When CEL expression '1u <= 0u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: lte_bool_true_false +Scenario: lte_literal/lte_double_lt - When CEL expression "true <= false" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '0.0 <= 0.1e-31' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: lte_literal/lte_double_eq -Scenario: lte_null_unsupported + When CEL expression '0.0 <= 0e-1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "null <= null" is evaluated - # errors:{message:"no such overload"} - Then eval_error is 'no such overload' +Scenario: lte_literal/not_lte_double_gt + + When CEL expression '1.0 <= 0.99' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: lte_literal/lte_string_empty + + When CEL expression "'' <= ''" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: lte_literal/lte_string_from_empty + + When CEL expression "'' <= 'a'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: lte_literal/not_lte_string_to_empty + + When CEL expression "'a' <= ''" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: lte_literal/lte_string_lexicographical + + When CEL expression "'aBc' <= 'abc'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: lte_literal/lte_string_unicode_eq + + When CEL expression "'Ξ±' <= 'Ξ±'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: lte_literal/lte_string_unicode_lt + + When CEL expression "'a' <= 'Ξ±'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: lte_literal/not_lte_string_unicode + + When CEL expression "'Ξ±' <= 'a'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: lte_list_unsupported +Scenario: lte_literal/lte_bytes_empty - When CEL expression "[0] <= [0]" is evaluated - # errors:{message:"no such overload"} + When CEL expression "b'' <= b'\x00'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: lte_literal/not_lte_bytes_length + + When CEL expression "b'\x01\x00' <= b'\x01'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: lte_literal/lte_bool_false_true + + When CEL expression 'false <= true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: lte_literal/lte_bool_false_false + + When CEL expression 'false <= false' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: lte_literal/lte_bool_true_false + + When CEL expression 'true <= false' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: lte_literal/lte_null_unsupported + + Given disable_check parameter is True + When CEL expression 'null <= null' is evaluated Then eval_error is 'no such overload' +Scenario: lte_literal/lte_list_unsupported -Scenario: lte_map_unsupported + Given disable_check parameter is True + When CEL expression '[0] <= [0]' is evaluated + Then eval_error is 'no such overload' +Scenario: lte_literal/lte_map_unsupported + + Given disable_check parameter is True When CEL expression "{0:'a'} <= {1:'b'}" is evaluated - # errors:{message:"no such overload"} Then eval_error is 'no such overload' +Scenario: lte_literal/lte_mixed_types_error -Scenario: lte_mixed_types_error - + Given disable_check parameter is True When CEL expression "'foo' <= 1024" is evaluated - # errors:{message:"no such overload"} Then eval_error is 'no such overload' +@wip +Scenario: lte_literal/lte_dyn_int_uint + When CEL expression 'dyn(1) <= 2u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -# gte_literal -- Literals comparison on _>=_ +@wip +Scenario: lte_literal/lte_dyn_int_double -Scenario: gte_int_gt + When CEL expression 'dyn(1) <= 2.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "0 >= -1" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lte_literal/lte_dyn_uint_int + When CEL expression 'dyn(1u) <= 2' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: gte_int_eq +Scenario: lte_literal/lte_dyn_uint_double - When CEL expression "999 >= 999" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(1u) <= 2.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: lte_literal/lte_dyn_double_int -Scenario: not_gte_int_lt + When CEL expression 'dyn(1.0) <= 2' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "999 >= 1000" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: lte_literal/lte_dyn_double_uint + When CEL expression 'dyn(1.0) <= 2u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: gte_uint_gt +@wip +Scenario: lte_literal/not_lte_dyn_int_uint - When CEL expression "1u >= 0u" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(2) <= 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: lte_literal/not_lte_dyn_int_double -Scenario: gte_uint_eq + When CEL expression 'dyn(2) <= 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "0u >= 0u" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lte_literal/not_lte_dyn_uint_int + When CEL expression 'dyn(2u) <= 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_gte_uint_lt +Scenario: lte_literal/not_lte_dyn_uint_double - When CEL expression "1u >= 10u" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(2u) <= 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: lte_literal/not_lte_dyn_double_int -Scenario: gte_double_gt + When CEL expression 'dyn(2.0) <= 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "1e+1 >= 1e+0" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lte_literal/not_lte_dyn_double_uint + When CEL expression 'dyn(2.0) <= 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: gte_double_eq +@wip +Scenario: lte_literal/lte_dyn_int_big_uint - When CEL expression "9.80665 >= 9.80665e+0" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(1) <= 9223372036854775808u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: lte_literal/lte_dyn_small_int_uint -Scenario: not_gte_double_lt + When CEL expression 'dyn(-1) <= 0u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "0.9999 >= 1.0" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: lte_literal/lte_dyn_int_big_double + When CEL expression 'dyn(9223372036854775807) <= 9223372036854775808.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: gte_string_empty +@wip +Scenario: lte_literal/lte_dyn_int_small_lossy_double + The conversion of the int to double is lossy and the numbers end up + being equal - When CEL expression "'' >= ''" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(-9223372036854775808) <= -9223372036854775809.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: lte_literal/not_lte_dyn_int_small_lossy_double_less -Scenario: gte_string_to_empty + When CEL expression 'dyn(-9223372036854775808) <= -9223372036854777857.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "'a' >= ''" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lte_literal/not_lte_dyn_uint_small_int + When CEL expression 'dyn(1u) <= -9223372036854775808' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: gte_string_empty_to_nonempty +Scenario: lte_literal/not_lte_dyn_big_uint_int - When CEL expression "'' >= 'a'" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(9223372036854775808u) <= 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: lte_literal/not_lte_dyn_uint_small_double -Scenario: gte_string_length + When CEL expression 'dyn(18446744073709551615u) <= -1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "'abcd' >= 'abc'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: lte_literal/lte_dyn_uint_big_double + When CEL expression 'dyn(18446744073709551615u) <= 18446744073709590000.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: not_gte_string_lexicographical +Scenario: lte_literal/not_lte_dyn_big_double_uint - When CEL expression "'abc' >= 'abd'" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(18446744073709553665.0) <= 18446744073709551615u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: lte_literal/lte_dyn_big_double_int -Scenario: gte_string_unicode_eq + When CEL expression 'dyn(9223372036854775808.0) <= 9223372036854775807' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "'Ο„' >= 'Ο„'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: lte_literal/lte_dyn_small_double_int + When CEL expression 'dyn(-9223372036854775809.0) <= -9223372036854775808' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: gte_string_unicode_gt - When CEL expression "'Ο„' >= 't'" is evaluated - # bool_value:true - Then value is BoolType(source=True) +# gte_literal -- Literals comparison on _>=_ -Scenario: not_get_string_unicode +Scenario: gte_literal/gte_int_gt - When CEL expression "'t' >= 'Ο„'" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '0 >= -1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: gte_literal/gte_int_eq -Scenario: gte_bytes_to_empty + When CEL expression '999 >= 999' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "b'' >= b''" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: gte_literal/not_gte_int_lt + When CEL expression '999 >= 1000' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_gte_bytes_empty_to_nonempty +Scenario: gte_literal/gte_uint_gt - When CEL expression "b'' >= b''" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '1u >= 0u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: gte_literal/gte_uint_eq -Scenario: gte_bytes_samelength + When CEL expression '0u >= 0u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "b'' >= b''" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: gte_literal/not_gte_uint_lt + When CEL expression '1u >= 10u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: gte_bool_gt +Scenario: gte_literal/gte_double_gt - When CEL expression "true >= false" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '1e+1 >= 1e+0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: gte_literal/gte_double_eq -Scenario: gte_bool_eq + When CEL expression '9.80665 >= 9.80665e+0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "true >= true" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: gte_literal/not_gte_double_lt + When CEL expression '0.9999 >= 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: not_gte_bool_lt +Scenario: gte_literal/gte_string_empty - When CEL expression "false >= true" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression "'' >= ''" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: gte_literal/gte_string_to_empty -Scenario: gte_null_unsupported + When CEL expression "'a' >= ''" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "null >= null" is evaluated - # errors:{message:"no such overload"} - Then eval_error is 'no such overload' +Scenario: gte_literal/gte_string_empty_to_nonempty + When CEL expression "'' >= 'a'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: gte_list_unsupported +Scenario: gte_literal/gte_string_length - When CEL expression "['y'] >= ['x']" is evaluated - # errors:{message:"no such overload"} + When CEL expression "'abcd' >= 'abc'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gte_literal/not_gte_string_lexicographical + + When CEL expression "'abc' >= 'abd'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: gte_literal/gte_string_unicode_eq + + When CEL expression "'Ο„' >= 'Ο„'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gte_literal/gte_string_unicode_gt + + When CEL expression "'Ο„' >= 't'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gte_literal/not_get_string_unicode + + When CEL expression "'t' >= 'Ο„'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: gte_literal/gte_bytes_to_empty + + When CEL expression "b'\x00' >= b''" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gte_literal/not_gte_bytes_empty_to_nonempty + + When CEL expression "b'' >= b'\x00'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: gte_literal/gte_bytes_samelength + + When CEL expression "b'\x00\x01' >= b'\x01\x00'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: gte_literal/gte_bool_gt + + When CEL expression 'true >= false' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gte_literal/gte_bool_eq + + When CEL expression 'true >= true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gte_literal/not_gte_bool_lt + + When CEL expression 'false >= true' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: gte_literal/gte_null_unsupported + + Given disable_check parameter is True + When CEL expression 'null >= null' is evaluated Then eval_error is 'no such overload' +Scenario: gte_literal/gte_list_unsupported + + Given disable_check parameter is True + When CEL expression "['y'] >= ['x']" is evaluated + Then eval_error is 'no such overload' -Scenario: gte_map_unsupported +Scenario: gte_literal/gte_map_unsupported + Given disable_check parameter is True When CEL expression "{1:'b'} >= {0:'a'}" is evaluated - # errors:{message:"no such overload"} Then eval_error is 'no such overload' +Scenario: gte_literal/gte_mixed_types_error -Scenario: gte_mixed_types_error - + Given disable_check parameter is True When CEL expression "'foo' >= 1.0" is evaluated - # errors:{message:"no such overload"} Then eval_error is 'no such overload' +@wip +Scenario: gte_literal/gte_dyn_int_uint + When CEL expression 'dyn(2) >= 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -# in_list_literal -- Set membership tests using list literals and the 'in' operator +@wip +Scenario: gte_literal/gte_dyn_int_double -Scenario: elem_not_in_empty_list + When CEL expression 'dyn(2) >= 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "'empty' in []" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: gte_literal/gte_dyn_uint_int + When CEL expression 'dyn(2u) >= 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: elem_in_list +Scenario: gte_literal/gte_dyn_uint_double - When CEL expression "'elem' in ['elem', 'elemA', 'elemB']" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(2u) >= 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: gte_literal/gte_dyn_double_int -Scenario: elem_not_in_list + When CEL expression 'dyn(2.0) >= 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "'not' in ['elem1', 'elem2', 'elem3']" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: gte_literal/gte_dyn_double_uint + When CEL expression 'dyn(2.0) >= 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: elem_in_mixed_type_list - Set membership tests should succeed if the 'elem' exists in a mixed element type list. - When CEL expression "'elem' in [1, 'elem', 2]" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: gte_literal/not_gte_dyn_int_uint + When CEL expression 'dyn(0) >= 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: elem_in_mixed_type_list_error - Set membership tests should error if the 'elem' does not exist in a mixed element type list as containment is equivalent to the macro exists() behavior. - When CEL expression "'elem' in [1u, 'str', 2, b'bytes']" is evaluated - # errors:{message:"no such overload"} - Then eval_error is 'no such overload' +@wip +Scenario: gte_literal/not_gte_dyn_int_double + When CEL expression 'dyn(0) >= 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: gte_literal/not_gte_dyn_uint_int -# in_map_literal -- Set membership tests using map literals and the 'in' operator + When CEL expression 'dyn(0u) >= 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: key_not_in_empty_map +Scenario: gte_literal/not_gte_dyn_uint_double - When CEL expression "'empty' in {}" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(0u) >= 1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: gte_literal/not_gte_dyn_double_int -Scenario: key_in_map + When CEL expression 'dyn(0.0) >= 1' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "'key' in {'key':'1', 'other':'2'}" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: gte_literal/not_gte_dyn_double_uint + When CEL expression 'dyn(0.0) >= 1u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: key_not_in_map +@wip +Scenario: gte_literal/not_gte_dyn_int_big_uint - When CEL expression "'key' in {'lock':1, 'gate':2}" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'dyn(1) >= 9223372036854775808u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: gte_literal/not_gte_dyn_small_int_uint -Scenario: key_in_mixed_key_type_map - Map keys are of mixed type, but since the key is present the result is true. - When CEL expression "'key' in {3:3.0, 'key':2u}" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(-1) >= 0u' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: gte_literal/gte_dyn_int_big_lossy_double -Scenario: key_in_mixed_key_type_map_error + When CEL expression 'dyn(9223372036854775807) >= 9223372036854775808.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "'key' in {1u:'str', 2:b'bytes'}" is evaluated - # errors:{message:"no such overload"} - Then eval_error is 'no such overload' +@wip +Scenario: gte_literal/not_gte_dyn_int_big_double + When CEL expression 'dyn(9223372036854775807) >= 9223372036854777857.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: gte_literal/gte_dyn_int_small_lossy_double_equal + The conversion of the int to double is lossy and the numbers end up + being equal -# bound -- Comparing bound variables with literals or other variables + When CEL expression 'dyn(-9223372036854775808) >= -9223372036854775809.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: gte_literal/gte_dyn_int_small_lossy_double_greater + + When CEL expression 'dyn(-9223372036854775808) >= -9223372036854777857.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: gte_literal/gte_dyn_uint_small_int -Scenario: bytes_gt_left_false + When CEL expression 'dyn(1u) >= -1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - # type:{primitive:BYTES} - # Given type_env parameter "x" is TypeType(value='BYTES') - Given type_env parameter "x" is BYTES +Scenario: gte_literal/gte_dyn_big_uint_int - # bytes_value:"\x00" - Given bindings parameter "x" is BytesType(source=b'\x00') + When CEL expression 'dyn(9223372036854775808u) >= 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "x > b''" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: gte_literal/gte_dyn_uint_small_double + When CEL expression 'dyn(9223372036854775807u) >= -1.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: int_lte_right_true +Scenario: gte_literal/not_gte_dyn_uint_big_double - # type:{primitive:INT64} - # Given type_env parameter "x" is TypeType(value='INT64') - Given type_env parameter "x" is INT64 + When CEL expression 'dyn(18446744073709551615u) >= 18446744073709553665.0' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - # int64_value:124 - Given bindings parameter "x" is IntType(source=124) +Scenario: gte_literal/gte_dyn_big_double_uint - When CEL expression "123 <= x" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(18446744073709553665.0) >= 18446744073709551615u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: gte_literal/gte_dyn_big_double_int -Scenario: bool_lt_right_true + When CEL expression 'dyn(9223372036854775808.0) >= 9223372036854775807' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - # type:{primitive:BOOL} - # Given type_env parameter "x" is TypeType(value='BOOL') - Given type_env parameter "x" is BOOL +@wip +Scenario: gte_literal/gte_dyn_small_double_int - # bool_value:true - Given bindings parameter "x" is BoolType(source=True) + When CEL expression 'dyn(-9223372036854775809.0) >= -9223372036854775808' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "false < x" is evaluated - # bool_value:true - Then value is BoolType(source=True) +# in_list_literal -- Set membership tests using list literals and the 'in' operator -Scenario: double_ne_left_false - # type:{primitive:DOUBLE} - # Given type_env parameter "x" is TypeType(value='DOUBLE') - Given type_env parameter "x" is DOUBLE +Scenario: in_list_literal/elem_not_in_empty_list - # double_value:9.8 - Given bindings parameter "x" is DoubleType(source=9.8) + When CEL expression "'empty' in []" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "x != 9.8" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: in_list_literal/elem_in_list + When CEL expression "'elem' in ['elem', 'elemA', 'elemB']" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: map_ne_right_false +Scenario: in_list_literal/elem_not_in_list - # type:{map_type:{key_type:{primitive:STRING} value_type:{primitive:STRING}}} - # Given type_env parameter "x" is TypeType(value='map_type') - Given type_env parameter "x" is map_type + When CEL expression "'not' in ['elem1', 'elem2', 'elem3']" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - # map_value:{entries:{key:{string_value:"c"} value:{string_value:"d"}} entries:{key:{string_value:"a"} value:{string_value:"b"}}} - Given bindings parameter "x" is MapType({StringType(source='c'): StringType(source='d'), StringType(source='a'): StringType(source='b')}) +Scenario: in_list_literal/elem_in_mixed_type_list + Set membership tests should succeed if the 'elem' exists in a mixed + element type list. - When CEL expression "{'a':'b','c':'d'} != x" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression "'elem' in [1, 'elem', 2]" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: in_list_literal/elem_in_mixed_type_list_cross_type + Set membership tests should return false due to the introduction of + heterogeneous-equality. Set membership via 'in' is equivalent to the + macro exists() behavior. + When CEL expression "'elem' in [1u, 'str', 2, b'bytes']" is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: null_eq_left_true - A comparison _==_ against null only binds if the type is determined to be null or we skip the type checking - # type:{null:NULL_VALUE} - # Given type_env parameter "x" is TypeType(value=None) - Given type_env parameter "x" is null_type - # null_value:NULL_VALUE - Given bindings parameter "x" is None +# in_map_literal -- Set membership tests using map literals and the 'in' operator - When CEL expression "x == null" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: in_map_literal/key_not_in_empty_map -Scenario: list_eq_right_false + When CEL expression "'empty' in {}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - # type:{list_type:{elem_type:{primitive:INT64}}} - # Given type_env parameter "x" is TypeType(value='list_type') - Given type_env parameter "x" is list_type +Scenario: in_map_literal/key_in_map - # list_value:{values:{int64_value:2} values:{int64_value:1}} - Given bindings parameter "x" is [IntType(source=2), IntType(source=1)] + When CEL expression "'key' in {'key':'1', 'other':'2'}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "[1, 2] == x" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: in_map_literal/key_not_in_map + When CEL expression "'key' in {'lock':1, 'gate':2}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: string_gte_right_true +Scenario: in_map_literal/key_in_mixed_key_type_map + Map keys are of mixed type, but since the key is present the result is + true. - # type:{primitive:STRING} - # Given type_env parameter "x" is TypeType(value='STRING') - Given type_env parameter "x" is STRING + When CEL expression "'key' in {3:3.0, 'key':2u}" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - # string_value:"abc" - Given bindings parameter "x" is StringType(source='abc') +@wip +Scenario: in_map_literal/key_in_mixed_key_type_map_cross_type + + When CEL expression "'key' in {1u:'str', 2:b'bytes'}" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "'abcd' >= x" is evaluated - # bool_value:true - Then value is BoolType(source=True) +# bound -- Comparing bound variables with literals or other variables -Scenario: uint_eq_right_false - # type:{primitive:UINT64} - # Given type_env parameter "x" is TypeType(value='UINT64') - Given type_env parameter "x" is UINT64 +Scenario: bound/bytes_gt_left_false - # uint64_value:1000 - Given bindings parameter "x" is UintType(source=1000) + Given type_env parameter "x" is celpy.celtypes.BytesType + and bindings parameter "x" is celpy.celtypes.BytesType(source=b'\x00') + When CEL expression "x > b'\x00'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "999u == x" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: bound/int_lte_right_true + Given type_env parameter "x" is celpy.celtypes.IntType + and bindings parameter "x" is celpy.celtypes.IntType(source=124) + When CEL expression '123 <= x' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: null_lt_right_no_such_overload - There is no _<_ operation for null, even if both operands are null - # type:{null:NULL_VALUE} - # Given type_env parameter "x" is TypeType(value=None) - Given type_env parameter "x" is null_type +Scenario: bound/bool_lt_right_true + + Given type_env parameter "x" is celpy.celtypes.BoolType + and bindings parameter "x" is celpy.celtypes.BoolType(source=True) + When CEL expression 'false < x' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: bound/double_ne_left_false + + Given type_env parameter "x" is celpy.celtypes.DoubleType + and bindings parameter "x" is celpy.celtypes.DoubleType(source=9.8) + When CEL expression 'x != 9.8' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - # null_value:NULL_VALUE - Given bindings parameter "x" is None +Scenario: bound/map_ne_right_false - When CEL expression "null < x" is evaluated - # errors:{message:"no such overload"} + Given type_env parameter "x" is celpy.celtypes.MapType + and bindings parameter "x" is celpy.celtypes.MapType({'c': celpy.celtypes.StringType(source='d'), 'a': celpy.celtypes.StringType(source='b')}) + When CEL expression "{'a':'b','c':'d'} != x" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: bound/null_eq_left_true + A comparison _==_ against null only binds if the type is determined to + be null or we skip the type checking + + Given type_env parameter "x" is NoneType + and bindings parameter "x" is None + When CEL expression 'x == null' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: bound/list_eq_right_false + + Given type_env parameter "x" is celpy.celtypes.ListType + and bindings parameter "x" is [celpy.celtypes.IntType(source=2), celpy.celtypes.IntType(source=1)] + When CEL expression '[1, 2] == x' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: bound/string_gte_right_true + + Given type_env parameter "x" is celpy.celtypes.StringType + and bindings parameter "x" is celpy.celtypes.StringType(source='abc') + When CEL expression "'abcd' >= x" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: bound/uint_eq_right_false + + Given type_env parameter "x" is celpy.celtypes.UintType + and bindings parameter "x" is celpy.celtypes.UintType(source=1000) + When CEL expression '999u == x' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: bound/null_lt_right_no_such_overload + There is no _<_ operation for null, even if both operands are null + + Given disable_check parameter is True + and bindings parameter "x" is None + When CEL expression 'null < x' is evaluated Then eval_error is 'no such overload' + diff --git a/features/comparisons.textproto b/features/comparisons.textproto index a01b6f7..e712196 100644 --- a/features/comparisons.textproto +++ b/features/comparisons.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + name: "comparisons" description: "Tests for boolean-valued functions and operators." section { @@ -13,6 +16,26 @@ section { expr: "-1 == 1" value: { bool_value: false } } + test { + name: "eq_int_uint" + expr: "dyn(1) == 1u" + value: { bool_value: true } + } + test { + name: "not_eq_int_uint" + expr: "dyn(2) == 1u" + value: { bool_value: false } + } + test { + name: "eq_int_double" + expr: "dyn(1) == 1.0" + value: { bool_value: true } + } + test { + name: "not_eq_int_double" + expr: "dyn(2) == 1.0" + value: { bool_value: false } + } test { name: "eq_uint" expr: "2u == 2u" @@ -23,6 +46,26 @@ section { expr: "1u == 2u" value: { bool_value: false } } + test { + name: "eq_uint_int" + expr: "dyn(1u) == 1" + value: { bool_value: true } + } + test { + name: "not_eq_uint_int" + expr: "dyn(2u) == 1" + value: { bool_value: false } + } + test { + name: "eq_uint_double" + expr: "dyn(1u) == 1.0" + value: { bool_value: true } + } + test { + name: "not_eq_uint_double" + expr: "dyn(2u) == 1.0" + value: { bool_value: false } + } test { name: "eq_double" expr: "1.0 == 1.0e+0" @@ -34,11 +77,40 @@ section { value: { bool_value: false } } test { - name: "eq_double_NaN" - description: "CEL defines all NaN values to be equal." - expr: "1.0 / 0.0 == 1.0 / 0.0" + name: "not_eq_double_nan" + expr: "0.0/0.0 == 0.0/0.0" + value: { bool_value: false } + } + test { + name: "not_eq_int_double_nan" + expr: "dyn(1) == 0.0/0.0" + value: { bool_value: false } + } + test { + name: "not_eq_uint_double_nan" + expr: "dyn(1u) == 0.0/0.0" + value: { bool_value: false } + } + test { + name: "eq_double_int" + expr: "dyn(1.0) == 1" + value: { bool_value: true } + } + test { + name: "not_eq_double_int" + expr: "dyn(2.0) == 1" + value: { bool_value: false } + } + test { + name: "eq_double_uint" + expr: "dyn(1.0) == 1u" value: { bool_value: true } } + test { + name: "not_eq_double_uint" + expr: "dyn(2.0) == 1u" + value: { bool_value: false } + } test { name: "eq_string" expr: "'' == \"\"" @@ -75,12 +147,6 @@ section { expr: "'Am\\u00E9lie' == 'Ame\\u0301lie'" value: { bool_value: false } } - test { - name: "no_string_normalization_surrogate" - description: "Should not replace surrogate pairs." - expr: "'\\U0001F436' == '\\xef\\xbf\\xbd\\xef\\xbf\\bd'" - value: { bool_value: false } - } test { name: "eq_null" expr: "null == null" @@ -112,11 +178,31 @@ section { expr: "[] == []" value: { bool_value: true } } + test { + name: "eq_list_null" + expr: "[null] == [null]" + value: { bool_value: true } + } + test { + name: "not_eq_list_null" + expr: "['1', '2', null] == ['1', '2', '3']" + value: { bool_value: false } + } test { name: "eq_list_numbers" expr: "[1, 2, 3] == [1, 2, 3]" value: { bool_value: true } } + test { + name: "eq_list_mixed_type_numbers" + expr: "[1.0, 2.0, 3] == [1u, 2, 3u]" + value: { bool_value: true } + } + test { + name: "not_eq_list_mixed_type_numbers" + expr: "[1.0, 2.1] == [1u, 2]" + value: { bool_value: false } + } test { name: "not_eq_list_order" expr: "[1, 2, 3] == [1, 3, 2]" @@ -143,28 +229,43 @@ section { expr: "{} == {}" value: { bool_value: true } } + test { + name: "eq_map_null" + expr: "{'k': null} == {'k': null}" + value: { bool_value: true } + } + test { + name: "not_eq_map_null" + expr: "{'k': 1, 'j': 2} == {'k': 1, 'j': null}" + value: { bool_value: false } + } test { name: "eq_map_onekey" expr: "{'k':'v'} == {\"k\":\"v\"}" value: { bool_value: true } } test { - name: "eq_map_doublevalue" + name: "eq_map_double_value" expr: "{'k':1.0} == {'k':1e+0}" value: { bool_value: true } } + test { + name: "eq_map_mixed_type_numbers" + expr: "{1: 1.0, 2u: 3u} == {1u: 1, 2: 3.0}" + value: { bool_value: true } + } test { name: "not_eq_map_value" expr: "{'k':'v'} == {'k':'v1'}" value: { bool_value: false } } test { - name: "not_eq_map_extrakey" + name: "not_eq_map_extra_key" expr: "{'k':'v','k1':'v1'} == {'k':'v'}" value: { bool_value: false } } test { - name: "eq_map_keyorder" + name: "eq_map_key_order" expr: "{'k1':'v1','k2':'v2'} == {'k2':'v2','k1':'v1'}" value: { bool_value: true } } @@ -179,30 +280,531 @@ section { value: { bool_value: false } } test { - name: "eq_mixed_types_error" - description: "A mix of types fails during type checks but can't be captured in the conformance tests yet (See google/cel-go#155). Also, if you disable checks it yields {bool_value: false} where it should also yield an error" + name: "eq_mixed_types" expr: "1.0 == 1" - disable_check: true # need to make it fail in the evaluation phase - eval_error { - errors: { message: "no such overload" } - } + disable_check: true # need to make it fail in the evaluation phase + value: { bool_value: true } } test { - name: "eq_list_elem_mixed_types_error" - description: "A mix of types in a list fails during type checks. See #self_test_equals_mixed_types" + name: "eq_list_elem_mixed_types" expr: "[1] == [1.0]" - disable_check: true # need to make it fail in the evaluation phase - eval_error: { - errors: { message: "no such overload" } - } + disable_check: true # need to make it fail in the evaluation phase + value: { bool_value: true } } test { - name: "eq_map_value_mixed_types_error" - description: "Mixed map value types yields error as key '1' values differed by type." + name: "eq_map_value_mixed_types" expr: "{'k':'v', 1:1} == {'k':'v', 1:'v1'}" - eval_error: { - errors: { message: "no such overload" } - } + value: { bool_value: false } + } + test { + name: "eq_dyn_json_null" + expr: "dyn(google.protobuf.Value{}) == null" + value: { bool_value: true } + } + test { + name: "not_eq_dyn_bool_null" + expr: "dyn(false) == null" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_bytes_null" + expr: "dyn(b'') == null" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_double_null" + expr: "dyn(2.1) == null" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_duration_null" + expr: "dyn(duration('0s')) == null" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_int_null" + expr: "dyn(1) == null" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_list_null" + expr: "dyn([]) == null" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_map_null" + expr: "dyn({}) == null" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_proto2_msg_null" + container: "cel.expr.conformance.proto2" + expr: "dyn(TestAllTypes{}) == null" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_proto3_msg_null" + container: "cel.expr.conformance.proto3" + expr: "dyn(TestAllTypes{}) == null" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_string_null" + expr: "dyn('') == null" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_timestamp_null" + expr: "dyn(timestamp(0)) == null" + value: { bool_value: false } + } + test { + name: "not_eq_list_elem_null" + expr: "[1, 2, null] == [1, null, 3]" + value: { bool_value: false } + } + test { + name: "not_eq_map_value_null" + expr: "{1:'hello', 2:'world'} == {1:'goodbye', 2:null}" + value: { bool_value: false } + } + test { + name: "eq_dyn_int_uint" + expr: "dyn(1) == 1u" + value: { bool_value: true } + } + test { + name: "eq_dyn_int_double" + expr: "dyn(1) == 1.0" + value: { bool_value: true } + } + test { + name: "eq_dyn_uint_int" + expr: "dyn(1u) == 1" + value: { bool_value: true } + } + test { + name: "eq_dyn_uint_double" + expr: "dyn(1u) == 1.0" + value: { bool_value: true } + } + test { + name: "eq_dyn_double_int" + expr: "dyn(1.0) == 1" + value: { bool_value: true } + } + test { + name: "eq_dyn_double_uint" + expr: "dyn(1.0) == 1u" + value: { bool_value: true } + } + test { + name: "not_eq_dyn_int_uint" + expr: "dyn(1) == 2u" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_int_double" + expr: "dyn(1) == 2.0" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_uint_int" + expr: "dyn(1u) == 2" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_uint_double" + expr: "dyn(1u) == 120" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_double_int" + expr: "dyn(1.0) == 2" + value: { bool_value: false } + } + test { + name: "not_eq_dyn_double_uint" + expr: "dyn(1.0) == 2u" + value: { bool_value: false } + } +} +section { + name: "eq_wrapper" + description: "Wrapper type comparison on _==_. Wrapper types treated as boxed primitives when they appear on message fields. An unset wrapper field should be treated as null. The tests show the distinction between unset, empty, and set equality behavior." + test { + name: "eq_bool" + expr: "google.protobuf.BoolValue{value: true} == true" + value: { bool_value: true } + } + test { + name: "eq_bool_empty" + expr: "google.protobuf.BoolValue{} == false" + value: { bool_value: true } + } + test { + name: "eq_bool_not_null" + expr: "google.protobuf.BoolValue{} != null" + value: { bool_value: true } + } + test { + name: "eq_bool_proto2_null" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.single_bool_wrapper == null" + value: { bool_value: true } + } + test { + name: "eq_bool_proto3_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.single_bool_wrapper == null" + value: { bool_value: true } + } + + test { + name: "eq_bytes" + expr: "google.protobuf.BytesValue{value: b'set'} == b'set'" + value: { bool_value: true } + } + test { + name: "eq_bytes_empty" + expr: "google.protobuf.BytesValue{} == b''" + value: { bool_value: true } + } + test { + name: "eq_bytes_not_null" + expr: "google.protobuf.BytesValue{} != null" + value: { bool_value: true } + } + test { + name: "eq_bytes_proto2_null" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.single_bytes_wrapper == null" + value: { bool_value: true } + } + test { + name: "eq_bytes_proto3_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.single_bytes_wrapper == null" + value: { bool_value: true } + } + + test { + name: "eq_double" + expr: "google.protobuf.DoubleValue{value: -1.175494e-40} == -1.175494e-40" + value: { bool_value: true } + } + test { + name: "eq_double_empty" + expr: "google.protobuf.DoubleValue{} == 0.0" + value: { bool_value: true } + } + test { + name: "eq_double_not_null" + expr: "google.protobuf.DoubleValue{} != null" + value: { bool_value: true } + } + test { + name: "eq_double_proto2_null" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.single_double_wrapper == null" + value: { bool_value: true } + } + test { + name: "eq_double_proto3_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.single_double_wrapper == null" + value: { bool_value: true } + } + + test { + name: "eq_float" + expr: "google.protobuf.FloatValue{value: -1.5} == -1.5" + value: { bool_value: true } + } + test { + name: "eq_float_empty" + expr: "google.protobuf.FloatValue{} == 0.0" + value: { bool_value: true } + } + test { + name: "eq_float_not_null" + expr: "google.protobuf.FloatValue{} != null" + value: { bool_value: true } + } + test { + name: "eq_float_proto2_null" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.single_float_wrapper == null" + value: { bool_value: true } + } + test { + name: "eq_float_proto3_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.single_float_wrapper == null" + value: { bool_value: true } + } + + test { + name: "eq_int32" + expr: "google.protobuf.Int32Value{value: 123} == 123" + value: { bool_value: true } + } + test { + name: "eq_int32_empty" + expr: "google.protobuf.Int32Value{} == 0" + value: { bool_value: true } + } + test { + name: "eq_int32_not_null" + expr: "google.protobuf.Int32Value{} != null" + value: { bool_value: true } + } + test { + name: "eq_int32_proto2_null" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.single_int32_wrapper == null" + value: { bool_value: true } + } + test { + name: "eq_int32_proto3_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.single_int32_wrapper == null" + value: { bool_value: true } + } + + test { + name: "eq_int64" + expr: "google.protobuf.Int64Value{value: 2147483650} == 2147483650" + value: { bool_value: true } + } + test { + name: "eq_int64_empty" + expr: "google.protobuf.Int64Value{} == 0" + value: { bool_value: true } + } + test { + name: "eq_int64_not_null" + expr: "google.protobuf.Int64Value{} != null" + value: { bool_value: true } + } + test { + name: "eq_int64_proto2_null" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.single_int64_wrapper == null" + value: { bool_value: true } + } + test { + name: "eq_int64_proto3_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.single_int64_wrapper == null" + value: { bool_value: true } + } + + test { + name: "eq_string" + expr: "google.protobuf.StringValue{value: 'set'} == 'set'" + value: { bool_value: true } + } + test { + name: "eq_string_empty" + expr: "google.protobuf.StringValue{} == ''" + value: { bool_value: true } + } + test { + name: "eq_string_not_null" + expr: "google.protobuf.StringValue{} != null" + value: { bool_value: true } + } + test { + name: "eq_string_proto2_null" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.single_string_wrapper == null" + value: { bool_value: true } + } + test { + name: "eq_string_proto3_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.single_string_wrapper == null" + value: { bool_value: true } + } + + test { + name: "eq_uint32" + expr: "google.protobuf.UInt32Value{value: 42u} == 42u" + value: { bool_value: true } + } + test { + name: "eq_uint32_empty" + expr: "google.protobuf.UInt32Value{} == 0u" + value: { bool_value: true } + } + test { + name: "eq_uint32_not_null" + expr: "google.protobuf.UInt32Value{} != null" + value: { bool_value: true } + } + test { + name: "eq_uint32_proto2_null" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.single_uint32_wrapper == null" + value: { bool_value: true } + } + test { + name: "eq_uint32_proto3_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.single_uint32_wrapper == null" + value: { bool_value: true } + } + + test { + name: "eq_uint64" + expr: "google.protobuf.UInt64Value{value: 4294967296u} == 4294967296u" + value: { bool_value: true } + } + test { + name: "eq_uint64_empty" + expr: "google.protobuf.UInt64Value{} == 0u" + value: { bool_value: true } + } + test { + name: "eq_uint64_not_null" + expr: "google.protobuf.UInt64Value{} != null" + value: { bool_value: true } + } + test { + name: "eq_uint64_proto2_null" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.single_uint64_wrapper == null" + value: { bool_value: true } + } + test { + name: "eq_uint64_proto3_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.single_uint64_wrapper == null" + value: { bool_value: true } + } + test { + name: "eq_proto2" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_int64: 1234, single_string: '1234'} == TestAllTypes{single_int64: 1234, single_string: '1234'}" + value { bool_value: true } + } + test { + name: "eq_proto3" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_int64: 1234, single_string: '1234'} == TestAllTypes{single_int64: 1234, single_string: '1234'}" + value { bool_value: true } + } + test { + name: "eq_proto2_missing_fields_neq" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_int64: 1234} == TestAllTypes{single_string: '1234'}" + value { bool_value: false } + } + test { + name: "eq_proto3_missing_fields_neq" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_int64: 1234} == TestAllTypes{single_string: '1234'}" + value { bool_value: false } + } + test { + name: "eq_proto_nan_equal" + container: "cel.expr.conformance.proto2" + description: "For proto equality, fields with NaN value are treated as not equal." + expr: "TestAllTypes{single_double: double('NaN')} == TestAllTypes{single_double: double('NaN')}" + value { bool_value: false } + } + test { + name: "eq_proto_different_types" + container: "cel.expr.conformance.proto2" + description: "At runtime, differently typed messages are treated as not equal." + expr: "dyn(TestAllTypes{}) == dyn(NestedTestAllTypes{})" + value { bool_value: false } + } + test { + name: "eq_proto2_any_unpack_equal" + description: "Any values should be unpacked and compared." + container: "cel.expr.conformance.proto2" + # Two equal messages with any fields serialized differently (but both are valid). + # TestAllTypes{single_any: [TestAllTypes]{single_int64: 1234, single_string: '1234'}} + expr: + "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} ==" + " TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" + value { bool_value: true } + } + test { + name: "eq_proto2_any_unpack_not_equal" + description: "Any values should be unpacked and compared." + container: "cel.expr.conformance.proto2" + # Two messages with any fields that are not equal + # TestAllTypes{single_any: [TestAllTypes]{single_int64: 1234, single_string: '1234'}} + # TestAllTypes{single_any: [TestAllTypes]{single_double: -1234.0, single_string: '1234'}} + expr: + "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'a\\000\\000\\000\\000\\000H\\223\\300r\\0041234'}} ==" + " TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" + value { bool_value: false } + } + test { + name: "eq_proto2_any_unpack_bytewise_fallback_not_equal" + description: "If an any field is missing its type_url, the comparison should fallback to a bytewise comparison of the serialized proto." + container: "cel.expr.conformance.proto2" + # The missing type info any is doubly nested to skip create message validations. + expr: + "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} ==" + " TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" + value { bool_value: false } + } + test { + name: "eq_proto2_any_unpack_bytewise_fallback_equal" + description: "If an any field is missing its type_url, the comparison should fallback to a bytewise comparison of the serialized proto." + container: "cel.expr.conformance.proto2" + # The missing type info any is doubly nested to skip create message validations. + expr: + "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} ==" + " TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}}" + value { bool_value: true } + } + test { + name: "eq_proto3_any_unpack_equal" + description: "Any values should be unpacked and compared." + container: "cel.expr.conformance.proto3" + # Two equal messages with any fields serialized differently (but both are valid). + expr: + "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} ==" + " TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" + value { bool_value: true } + } + test { + name: "eq_proto3_any_unpack_not_equal" + description: "Any values should be unpacked and compared." + container: "cel.expr.conformance.proto3" + # Two messages with any fields that are not equal + # TestAllTypes{single_any: [TestAllTypes]{single_int64: 1234, single_string: '1234'}} + # TestAllTypes{single_any: [TestAllTypes]{single_double: -1234.0, single_string: '1234'}} + expr: + "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'a\\000\\000\\000\\000\\000H\\223\\300r\\0041234'}} ==" + " TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" + value { bool_value: false } + } + test { + name: "eq_proto3_any_unpack_bytewise_fallback_not_equal" + description: "If an any field is missing its type_url, the comparison should fallback to a bytewise comparison of the serialized proto." + container: "cel.expr.conformance.proto3" + # The missing type info any is doubly nested to skip create message validations. + expr: + "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} ==" + " TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" + value { bool_value: false } + } + test { + name: "eq_proto3_any_unpack_bytewise_fallback_equal" + description: "If an any field is missing its type_url, the comparison should fallback to a bytewise comparison of the serialized proto." + container: "cel.expr.conformance.proto3" + # The missing type info any is doubly nested to skip create message validations. + expr: + "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} ==" + " TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}}" + value { bool_value: true } } } section { @@ -218,6 +820,26 @@ section { expr: "1 != 1" value: { bool_value: false } } + test { + name: "ne_int_double" + expr: "dyn(24) != 24.1" + value: { bool_value: true } + } + test { + name: "not_ne_int_double" + expr: "dyn(1) != 1.0" + value: { bool_value: false } + } + test { + name: "ne_int_uint" + expr: "dyn(24) != 42u" + value: { bool_value: true } + } + test { + name: "not_ne_int_uint" + expr: "dyn(1) != 1u" + value: { bool_value: false } + } test { name: "ne_uint" expr: "1u != 2u" @@ -228,16 +850,66 @@ section { expr: "99u != 99u" value: { bool_value: false } } + test { + name: "ne_uint_double" + expr: "dyn(1u) != 2.0" + value: { bool_value: true } + } + test { + name: "not_ne_uint_double" + expr: "dyn(99u) != 99.0" + value: { bool_value: false } + } test { name: "ne_double" expr: "9.0e+3 != 9001.0" value: { bool_value: true } } + test { + name: "not_ne_double_nan" + expr: "0.0/0.0 != 0.0/0.0" + value: { bool_value: true } + } + test { + name: "not_ne_int_double_nan" + expr: "dyn(1) != 0.0/0.0" + value: { bool_value: true } + } + test { + name: "not_ne_uint_double_nan" + expr: "dyn(1u) != 0.0/0.0" + value: { bool_value: true } + } test { name: "not_ne_double" expr: "1.0 != 1e+0" value: { bool_value: false } } + test { + name: "ne_double_int" + expr: "dyn(9000) != 9001.0" + value: { bool_value: true } + } + test { + name: "not_ne_double_int" + expr: "dyn(1) != 1e+0" + value: { bool_value: false } + } + test { + name: "ne_double_uint" + expr: "dyn(9000u) != 9001.0" + value: { bool_value: true } + } + test { + name: "not_ne_double_uint" + expr: "dyn(1u) != 1e+0" + value: { bool_value: false } + } + test { + name: "ne_double_nan" + expr: "0.0/0.0 != 0.0/0.0" + value: { bool_value: true } + } test { name: "ne_string" expr: "'abc' != ''" @@ -330,12 +1002,90 @@ section { value: { bool_value: false } } test { - name: "ne_mixed_types_error" + name: "ne_mixed_types" expr: "2u != 2" disable_check: true - eval_error : { - errors: { message: "no such overload" } - } + value: { bool_value: false } + } + test { + name: "ne_proto2" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_int64: 1234, single_string: '1234'} != TestAllTypes{single_int64: 1234, single_string: '1234'}" + value { bool_value: false } + } + test { + name: "ne_proto3" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_int64: 1234, single_string: '1234'} != TestAllTypes{single_int64: 1234, single_string: '1234'}" + value { bool_value: false } + } + test { + name: "ne_proto2_missing_fields_neq" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_int64: 1234} != TestAllTypes{single_string: '1234'}" + value { bool_value: true } + } + test { + name: "ne_proto3_missing_fields_neq" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_int64: 1234} != TestAllTypes{single_string: '1234'}" + value { bool_value: true } + } + test { + name: "ne_proto_nan_not_equal" + container: "cel.expr.conformance.proto2" + description: "For proto equality, NaN field values are not considered equal." + expr: "TestAllTypes{single_double: double('NaN')} != TestAllTypes{single_double: double('NaN')}" + value { bool_value: true } + } + test { + name: "ne_proto_different_types" + container: "cel.expr.conformance.proto2" + description: "At runtime, comparing differently typed messages is false." + expr: "dyn(TestAllTypes{}) != dyn(NestedTestAllTypes{})" + value: { bool_value: true } + } + test { + name: "ne_proto2_any_unpack" + description: "Any values should be unpacked and compared." + container: "cel.expr.conformance.proto2" + # Two equal messages with any fields serialized differently (but both are valid). + # TestAllTypes{single_any: [TestAllTypes]{single_int64: 1234, single_string: '1234'}} + expr: + "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} !=" + " TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" + value { bool_value: false } + } + test { + name: "ne_proto2_any_unpack_bytewise_fallback" + description: "If an any field is missing its type_url, the comparison should fallback to a bytewise comparison of the serialized proto." + container: "cel.expr.conformance.proto3" + # The missing type info any is doubly nested to skip create + # message validations. + expr: + "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} !=" + " TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" + value { bool_value: true } + } + test { + name: "ne_proto3_any_unpack" + description: "Any values should be unpacked and compared." + container: "cel.expr.conformance.proto2" + # Two equal messages with any fields serialized differently (but both are valid). + expr: + "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} !=" + " TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" + value { bool_value: false } + } + test { + name: "ne_proto3_any_unpack_bytewise_fallback" + description: "If an any field is missing its type_url, the comparison should fallback to a bytewise comparison of the serialized proto." + container: "cel.expr.conformance.proto3" + # The missing type info any is doubly nested to skip create message validations. + expr: + "TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001r\\0041234'}} !=" + " TestAllTypes{single_any: google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\242\\006\\023\\022\\021r\\0041234\\020\\256\\366\\377\\377\\377\\377\\377\\377\\377\\001'}}" + value { bool_value: true } } } section { @@ -475,13 +1225,139 @@ section { } } test { - name: "lt_mixed_types_error" - expr: "'foo' < 1024" - disable_check: true - eval_error : { - errors: { message: "no such overload" } - } + name: "lt_mixed_types_error" + expr: "'foo' < 1024" + disable_check: true + eval_error: { + errors: { message: "no such overload" } + } + } + test { + name: "lt_dyn_int_uint" + expr: "dyn(1) < 2u" + value: { bool_value: true } + } + test { + name: "lt_dyn_int_double" + expr: "dyn(1) < 2.0" + value: { bool_value: true } + } + test { + name: "lt_dyn_uint_int" + expr: "dyn(1u) < 2" + value: { bool_value: true } + } + test { + name: "lt_dyn_uint_double" + expr: "dyn(1u) < 2.0" + value: { bool_value: true } + } + test { + name: "lt_dyn_double_int" + expr: "dyn(1.0) < 2" + value: { bool_value: true } + } + test { + name: "lt_dyn_double_uint" + expr: "dyn(1.0) < 2u" + value: { bool_value: true } + } + test { + name: "not_lt_dyn_int_uint" + expr: "dyn(1) < 1u" + value: { bool_value: false } + } + test { + name: "not_lt_dyn_int_double" + expr: "dyn(1) < 1.0" + value: { bool_value: false } + } + test { + name: "not_lt_dyn_uint_int" + expr: "dyn(1u) < 1" + value: { bool_value: false } + } + test { + name: "not_lt_dyn_uint_double" + expr: "dyn(1u) < 1.0" + value: { bool_value: false } + } + test { + name: "not_lt_dyn_double_int" + expr: "dyn(1.0) < 1" + value: { bool_value: false } + } + test { + name: "not_lt_dyn_double_uint" + expr: "dyn(1.0) < 1u" + value: { bool_value: false } + } + test { + name: "lt_dyn_int_big_uint" + expr: "dyn(1) < 9223372036854775808u" + value: { bool_value: true } + } + test { + name: "lt_dyn_small_int_uint" + expr: "dyn(-1) < 0u" + value: { bool_value: true } + } + test { + name: "not_lt_dyn_int_big_lossy_double" + expr: "dyn(9223372036854775807) < 9223372036854775808.0" + value: { bool_value: false } + } + test { + name: "lt_dyn_int_big_lossy_double" + expr: "dyn(9223372036854775807) < 9223372036854777857.0" + value: { bool_value: true } + } + test { + name: "not_lt_dyn_int_small_double" + expr: "dyn(9223372036854775807) < -9223372036854777857.0" + value: { bool_value: false } + } + test { + name: "not_lt_dyn_int_small_lossy_double" + expr: "dyn(-9223372036854775808) < -9223372036854775809.0" + value: { bool_value: false } + } + test { + name: "not_lt_dyn_uint_small_int" + expr: "dyn(1u) < -9223372036854775808" + value: { bool_value: false } + } + test { + name: "not_lt_dyn_big_uint_int" + expr: "dyn(9223372036854775808u) < 1" + value: { bool_value: false } + } + test { + name: "not_lt_dyn_uint_small_double" + expr: "dyn(18446744073709551615u) < -1.0" + value: { bool_value: false } + } + test { + name: "lt_dyn_uint_big_double" + expr: "dyn(18446744073709551615u) < 18446744073709590000.0" + value: { bool_value: true } + } + test { + name: "not_lt_dyn_big_double_uint" + expr: "dyn(18446744073709553665.0) < 18446744073709551615u" + value: { bool_value: false } + } + test { + name: "not_lt_dyn_big_double_int" + expr: "dyn(9223372036854775808.0) < 9223372036854775807" + value: { bool_value: false } + } + test { + name: "not_lt_dyn_small_double_int" + expr: "dyn(-9223372036854775809.0) < -9223372036854775808" + value: { bool_value: false } } + } section { name: "gt_literal" @@ -594,10 +1470,131 @@ section { name: "gt_mixed_types_error" expr: "'foo' > 1024" disable_check: true - eval_error : { + eval_error: { errors: { message: "no such overload" } } } + test { + name: "gt_dyn_int_uint" + expr: "dyn(2) > 1u" + value: { bool_value: true } + } + test { + name: "gt_dyn_int_double" + expr: "dyn(2) > 1.0" + value: { bool_value: true } + } + test { + name: "gt_dyn_uint_int" + expr: "dyn(2u) > 1" + value: { bool_value: true } + } + test { + name: "gt_dyn_uint_double" + expr: "dyn(2u) > 1.0" + value: { bool_value: true } + } + test { + name: "gt_dyn_double_int" + expr: "dyn(2.0) > 1" + value: { bool_value: true } + } + test { + name: "gt_dyn_double_uint" + expr: "dyn(2.0) > 1u" + value: { bool_value: true } + } + test { + name: "not_gt_dyn_int_uint" + expr: "dyn(1) > 1u" + value: { bool_value: false } + } + test { + name: "not_gt_dyn_int_double" + expr: "dyn(1) > 1.0" + value: { bool_value: false } + } + test { + name: "not_gt_dyn_uint_int" + expr: "dyn(1u) > 1" + value: { bool_value: false } + } + test { + name: "not_gt_dyn_uint_double" + expr: "dyn(1u) > 1.0" + value: { bool_value: false } + } + test { + name: "not_gt_dyn_double_int" + expr: "dyn(1.0) > 1" + value: { bool_value: false } + } + test { + name: "not_gt_dyn_double_uint" + expr: "dyn(1.0) > 1u" + value: { bool_value: false } + } + test { + name: "not_gt_dyn_int_big_uint" + expr: "dyn(1) > 9223372036854775808u" + value: { bool_value: false } + } + test { + name: "not_gt_dyn_small_int_uint" + expr: "dyn(-1) > 0u" + value: { bool_value: false } + } + test { + name: "not_gt_dyn_int_big_double" + expr: "dyn(9223372036854775807) > 9223372036854775808.0" + value: { bool_value: false } + } + test { + name: "not_gt_dyn_int_small_lossy_double" + description: "The conversion of the int to double is lossy and the numbers end up being equal" + expr: "dyn(-9223372036854775808) > -9223372036854775809.0" + value: { bool_value: false } + } + test { + name: "gt_dyn_int_small_lossy_double_greater" + expr: "dyn(-9223372036854775808) > -9223372036854777857.0" + value: { bool_value: true } + } + test { + name: "gt_dyn_uint_small_int" + expr: "dyn(1u) > -1" + value: { bool_value: true } + } + test { + name: "gt_dyn_big_uint_int" + expr: "dyn(9223372036854775808u) > 1" + value: { bool_value: true } + } + test { + name: "gt_dyn_uint_small_double" + expr: "dyn(9223372036854775807u) > -1.0" + value: { bool_value: true } + } + test { + name: "not_gt_dyn_uint_big_double" + expr: "dyn(18446744073709551615u) > 18446744073709590000.0" + value: { bool_value: false } + } + test { + name: "gt_dyn_big_double_uint" + expr: "dyn(18446744073709553665.0) > 18446744073709551615u" + value: { bool_value: true } + } + test { + name: "not_gt_dyn_big_double_int" + expr: "dyn(9223372036854775808.0) > 9223372036854775807" + value: { bool_value: false } + } + test { + name: "not_gt_dyn_small_double_int" + expr: "dyn(-9223372036854775809.0) > -9223372036854775808" + value: { bool_value: false } + } } section { name: "lte_literal" @@ -735,10 +1732,131 @@ section { name: "lte_mixed_types_error" expr: "'foo' <= 1024" disable_check: true - eval_error : { + eval_error: { errors: { message: "no such overload" } } } + test { + name: "lte_dyn_int_uint" + expr: "dyn(1) <= 2u" + value: { bool_value: true } + } + test { + name: "lte_dyn_int_double" + expr: "dyn(1) <= 2.0" + value: { bool_value: true } + } + test { + name: "lte_dyn_uint_int" + expr: "dyn(1u) <= 2" + value: { bool_value: true } + } + test { + name: "lte_dyn_uint_double" + expr: "dyn(1u) <= 2.0" + value: { bool_value: true } + } + test { + name: "lte_dyn_double_int" + expr: "dyn(1.0) <= 2" + value: { bool_value: true } + } + test { + name: "lte_dyn_double_uint" + expr: "dyn(1.0) <= 2u" + value: { bool_value: true } + } + test { + name: "not_lte_dyn_int_uint" + expr: "dyn(2) <= 1u" + value: { bool_value: false } + } + test { + name: "not_lte_dyn_int_double" + expr: "dyn(2) <= 1.0" + value: { bool_value: false } + } + test { + name: "not_lte_dyn_uint_int" + expr: "dyn(2u) <= 1" + value: { bool_value: false } + } + test { + name: "not_lte_dyn_uint_double" + expr: "dyn(2u) <= 1.0" + value: { bool_value: false } + } + test { + name: "not_lte_dyn_double_int" + expr: "dyn(2.0) <= 1" + value: { bool_value: false } + } + test { + name: "not_lte_dyn_double_uint" + expr: "dyn(2.0) <= 1u" + value: { bool_value: false } + } + test { + name: "lte_dyn_int_big_uint" + expr: "dyn(1) <= 9223372036854775808u" + value: { bool_value: true } + } + test { + name: "lte_dyn_small_int_uint" + expr: "dyn(-1) <= 0u" + value: { bool_value: true } + } + test { + name: "lte_dyn_int_big_double" + expr: "dyn(9223372036854775807) <= 9223372036854775808.0" + value: { bool_value: true } + } + test { + name: "lte_dyn_int_small_lossy_double" + description: "The conversion of the int to double is lossy and the numbers end up being equal" + expr: "dyn(-9223372036854775808) <= -9223372036854775809.0" + value: { bool_value: true } + } + test { + name: "not_lte_dyn_int_small_lossy_double_less" + expr: "dyn(-9223372036854775808) <= -9223372036854777857.0" + value: { bool_value: false } + } + test { + name: "not_lte_dyn_uint_small_int" + expr: "dyn(1u) <= -9223372036854775808" + value: { bool_value: false } + } + test { + name: "not_lte_dyn_big_uint_int" + expr: "dyn(9223372036854775808u) <= 1" + value: { bool_value: false } + } + test { + name: "not_lte_dyn_uint_small_double" + expr: "dyn(18446744073709551615u) <= -1.0" + value: { bool_value: false } + } + test { + name: "lte_dyn_uint_big_double" + expr: "dyn(18446744073709551615u) <= 18446744073709590000.0" + value: { bool_value: true } + } + test { + name: "not_lte_dyn_big_double_uint" + expr: "dyn(18446744073709553665.0) <= 18446744073709551615u" + value: { bool_value: false } + } + test { + name: "lte_dyn_big_double_int" + expr: "dyn(9223372036854775808.0) <= 9223372036854775807" + value: { bool_value: true } + } + test { + name: "lte_dyn_small_double_int" + expr: "dyn(-9223372036854775809.0) <= -9223372036854775808" + value: { bool_value: true } + } } section { name: "gte_literal" @@ -886,10 +2004,136 @@ section { name: "gte_mixed_types_error" expr: "'foo' >= 1.0" disable_check: true - eval_error : { + eval_error: { errors: { message: "no such overload" } } } + test { + name: "gte_dyn_int_uint" + expr: "dyn(2) >= 1u" + value: { bool_value: true } + } + test { + name: "gte_dyn_int_double" + expr: "dyn(2) >= 1.0" + value: { bool_value: true } + } + test { + name: "gte_dyn_uint_int" + expr: "dyn(2u) >= 1" + value: { bool_value: true } + } + test { + name: "gte_dyn_uint_double" + expr: "dyn(2u) >= 1.0" + value: { bool_value: true } + } + test { + name: "gte_dyn_double_int" + expr: "dyn(2.0) >= 1" + value: { bool_value: true } + } + test { + name: "gte_dyn_double_uint" + expr: "dyn(2.0) >= 1u" + value: { bool_value: true } + } + test { + name: "not_gte_dyn_int_uint" + expr: "dyn(0) >= 1u" + value: { bool_value: false } + } + test { + name: "not_gte_dyn_int_double" + expr: "dyn(0) >= 1.0" + value: { bool_value: false } + } + test { + name: "not_gte_dyn_uint_int" + expr: "dyn(0u) >= 1" + value: { bool_value: false } + } + test { + name: "not_gte_dyn_uint_double" + expr: "dyn(0u) >= 1.0" + value: { bool_value: false } + } + test { + name: "not_gte_dyn_double_int" + expr: "dyn(0.0) >= 1" + value: { bool_value: false } + } + test { + name: "not_gte_dyn_double_uint" + expr: "dyn(0.0) >= 1u" + value: { bool_value: false } + } + test { + name: "not_gte_dyn_int_big_uint" + expr: "dyn(1) >= 9223372036854775808u" + value: { bool_value: false } + } + test { + name: "not_gte_dyn_small_int_uint" + expr: "dyn(-1) >= 0u" + value: { bool_value: false } + } + test { + name: "gte_dyn_int_big_lossy_double" + expr: "dyn(9223372036854775807) >= 9223372036854775808.0" + value: { bool_value: true } + } + test { + name: "not_gte_dyn_int_big_double" + expr: "dyn(9223372036854775807) >= 9223372036854777857.0" + value: { bool_value: false } + } + test { + name: "gte_dyn_int_small_lossy_double_equal" + description: "The conversion of the int to double is lossy and the numbers end up being equal" + expr: "dyn(-9223372036854775808) >= -9223372036854775809.0" + value: { bool_value: true } + } + test { + name: "gte_dyn_int_small_lossy_double_greater" + expr: "dyn(-9223372036854775808) >= -9223372036854777857.0" + value: { bool_value: true } + } + test { + name: "gte_dyn_uint_small_int" + expr: "dyn(1u) >= -1" + value: { bool_value: true } + } + test { + name: "gte_dyn_big_uint_int" + expr: "dyn(9223372036854775808u) >= 1" + value: { bool_value: true } + } + test { + name: "gte_dyn_uint_small_double" + expr: "dyn(9223372036854775807u) >= -1.0" + value: { bool_value: true } + } + test { + name: "not_gte_dyn_uint_big_double" + expr: "dyn(18446744073709551615u) >= 18446744073709553665.0" + value: { bool_value: false } + } + test { + name: "gte_dyn_big_double_uint" + expr: "dyn(18446744073709553665.0) >= 18446744073709551615u" + value: { bool_value: true } + } + test { + name: "gte_dyn_big_double_int" + expr: "dyn(9223372036854775808.0) >= 9223372036854775807" + value: { bool_value: true } + } + test { + name: "gte_dyn_small_double_int" + expr: "dyn(-9223372036854775809.0) >= -9223372036854775808" + value: { bool_value: true } + } } section { name: "in_list_literal" @@ -916,12 +2160,10 @@ section { value { bool_value: true } } test { - name: "elem_in_mixed_type_list_error" - description: "Set membership tests should error if the 'elem' does not exist in a mixed element type list as containment is equivalent to the macro exists() behavior." + name: "elem_in_mixed_type_list_cross_type" + description: "Set membership tests should return false due to the introduction of heterogeneous-equality. Set membership via 'in' is equivalent to the macro exists() behavior." expr: "'elem' in [1u, 'str', 2, b'bytes']" - eval_error: { - errors: { message: "no such overload" } - } + value: { bool_value: false } } } section { @@ -949,17 +2191,9 @@ section { value { bool_value: true } } test { - name: "key_in_mixed_key_type_map_error" + name: "key_in_mixed_key_type_map_cross_type" expr: "'key' in {1u:'str', 2:b'bytes'}" - # Current behavior - # value: { bool_value: false } - # This behavior is expected for homogeneous equality, but should break - # with heterogeneous equality supported in CEL 0.1.0. This case should - # be revisited when support for heterogeneous equality is added to CEL. - # - eval_error: { - errors: { message: "no such overload" } - } + value: { bool_value: false } } } section { @@ -970,11 +2204,11 @@ section { expr: "x > b'\x00'" value: { bool_value: false } type_env: { - name: "x", + name: "x" ident: { type: { primitive: BYTES } } } bindings: { - key: "x", + key: "x" value: { value: { bytes_value: "\x00" } } } } @@ -983,11 +2217,11 @@ section { expr: "123 <= x" value: { bool_value: true } type_env: { - name: "x", + name: "x" ident: { type: { primitive: INT64 } } } bindings: { - key: "x", + key: "x" value: { value: { int64_value: 124 } } } } @@ -996,11 +2230,11 @@ section { expr: "false < x" value: { bool_value: true } type_env: { - name: "x", + name: "x" ident: { type: { primitive: BOOL } } } bindings: { - key: "x", + key: "x" value: { value: { bool_value: true } } } } @@ -1009,11 +2243,11 @@ section { expr: "x != 9.8" value: { bool_value: false } type_env: { - name: "x", + name: "x" ident: { type: { primitive: DOUBLE } } } bindings: { - key: "x", + key: "x" value: { value: { double_value: 9.8 } } } } @@ -1022,7 +2256,7 @@ section { expr: "{'a':'b','c':'d'} != x" value: { bool_value: false } type_env: { - name: "x", + name: "x" ident: { type: { map_type: { @@ -1033,7 +2267,7 @@ section { } } bindings: { - key: "x", + key: "x" value: { value: { map_value { @@ -1056,11 +2290,11 @@ section { expr: "x == null" value: { bool_value: true } type_env: { - name: "x", + name: "x" ident: { type: { null: NULL_VALUE } } } bindings: { - key: "x", + key: "x" value: { value: { null_value: NULL_VALUE } } } } @@ -1127,12 +2361,9 @@ section { eval_error: { errors: { message: "no such overload" } } - type_env: { - name: "x", - ident: { type: { null: NULL_VALUE } } - } + disable_check: true bindings: { - key: "x", + key: "x" value: { value: { null_value: NULL_VALUE } } } } diff --git a/features/conversions.feature b/features/conversions.feature index 55b0738..ac9e0f1 100644 --- a/features/conversions.feature +++ b/features/conversions.feature @@ -1,590 +1,616 @@ - +@conformance Feature: conversions Tests for type conversions. # bytes -- Conversions to bytes. -Scenario: string_empty - When CEL expression "bytes('')" is evaluated - # bytes_value:"" - Then value is BytesType(source=b'') +Scenario: bytes/string_empty + When CEL expression "bytes('')" is evaluated + Then value is celpy.celtypes.BytesType(source=b'') -Scenario: string +Scenario: bytes/string When CEL expression "bytes('abc')" is evaluated - # bytes_value:"abc" - Then value is BytesType(source=b'abc') + Then value is celpy.celtypes.BytesType(source=b'abc') - -Scenario: string_unicode +Scenario: bytes/string_unicode When CEL expression "bytes('ΓΏ')" is evaluated - # bytes_value:"ΓΏ" - Then value is BytesType(source=b'\xc3\xbf') + Then value is celpy.celtypes.BytesType(source=b'\xc3\xbf') +Scenario: bytes/string_unicode_vs_literal -Scenario: string_unicode_vs_literal + When CEL expression "bytes('\\377') == b'\\377'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "bytes('\377') == b'\377'" is evaluated - # bool_value:false - Then value is BoolType(source=False) +# double -- Conversions to double. -# double -- Conversions to double. +Scenario: double/int_zero -Scenario: int_zero + When CEL expression 'double(0)' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) - When CEL expression "double(0)" is evaluated - # double_value:0 - Then value is DoubleType(source=0) +Scenario: double/int_pos + When CEL expression 'double(1000000000000)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1000000000000.0) -Scenario: int_pos +Scenario: double/int_neg - When CEL expression "double(1000000000000)" is evaluated - # double_value:1e+12 - Then value is DoubleType(source=1000000000000.0) + When CEL expression 'double(-1000000000000000)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-1000000000000000.0) +Scenario: double/int_min_exact + Smallest contiguous representable int (-2^53). -Scenario: int_neg + When CEL expression 'double(-9007199254740992)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-9007199254740992.0) - When CEL expression "double(-1000000000000000)" is evaluated - # double_value:-1e+15 - Then value is DoubleType(source=-1000000000000000.0) +Scenario: double/int_max_exact + Largest contiguous representable int (2^53). + When CEL expression 'double(9007199254740992)' is evaluated + Then value is celpy.celtypes.DoubleType(source=9007199254740992.0) -Scenario: int_range +Scenario: double/int_range Largest signed 64-bit. Rounds to nearest double. - When CEL expression "double(9223372036854775807)" is evaluated - # double_value:9.223372036854776e+18 - Then value is DoubleType(source=9.223372036854776e+18) + When CEL expression 'double(9223372036854775807)' is evaluated + Then value is celpy.celtypes.DoubleType(source=9.223372036854776e+18) -Scenario: uint_zero +Scenario: double/uint_zero - When CEL expression "double(0u)" is evaluated - # double_value:0 - Then value is DoubleType(source=0) + When CEL expression 'double(0u)' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) +Scenario: double/uint_pos -Scenario: uint_pos + When CEL expression 'double(123u)' is evaluated + Then value is celpy.celtypes.DoubleType(source=123.0) - When CEL expression "double(123u)" is evaluated - # double_value:123 - Then value is DoubleType(source=123) +Scenario: double/uint_max_exact + Largest contiguous representable int (2^53). + When CEL expression 'double(9007199254740992u)' is evaluated + Then value is celpy.celtypes.DoubleType(source=9007199254740992.0) -Scenario: uint_range +Scenario: double/uint_range Largest unsigned 64-bit. - When CEL expression "double(18446744073709551615u)" is evaluated - # double_value:1.8446744073709552e+19 - Then value is DoubleType(source=1.8446744073709552e+19) + When CEL expression 'double(18446744073709551615u)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.8446744073709552e+19) -Scenario: string_zero +Scenario: double/string_zero When CEL expression "double('0')" is evaluated - # double_value:0 - Then value is DoubleType(source=0) - + Then value is celpy.celtypes.DoubleType(source=0.0) -Scenario: string_zero_dec +Scenario: double/string_zero_dec When CEL expression "double('0.0')" is evaluated - # double_value:0 - Then value is DoubleType(source=0) + Then value is celpy.celtypes.DoubleType(source=0.0) - -Scenario: string_neg_zero +Scenario: double/string_neg_zero When CEL expression "double('-0.0')" is evaluated - # double_value:-0 - Then value is DoubleType(source=0) - + Then value is celpy.celtypes.DoubleType(source=-0.0) -Scenario: string_no_dec +Scenario: double/string_no_dec When CEL expression "double('123')" is evaluated - # double_value:123 - Then value is DoubleType(source=123) + Then value is celpy.celtypes.DoubleType(source=123.0) - -Scenario: string_pos +Scenario: double/string_pos When CEL expression "double('123.456')" is evaluated - # double_value:123.456 - Then value is DoubleType(source=123.456) - + Then value is celpy.celtypes.DoubleType(source=123.456) -Scenario: string_neg +Scenario: double/string_neg When CEL expression "double('-987.654')" is evaluated - # double_value:-987.654 - Then value is DoubleType(source=-987.654) + Then value is celpy.celtypes.DoubleType(source=-987.654) - -Scenario: string_exp_pos_pos +Scenario: double/string_exp_pos_pos When CEL expression "double('6.02214e23')" is evaluated - # double_value:6.02214e+23 - Then value is DoubleType(source=6.02214e+23) - + Then value is celpy.celtypes.DoubleType(source=6.02214e+23) -Scenario: string_exp_pos_neg +Scenario: double/string_exp_pos_neg When CEL expression "double('1.38e-23')" is evaluated - # double_value:1.38e-23 - Then value is DoubleType(source=1.38e-23) + Then value is celpy.celtypes.DoubleType(source=1.38e-23) - -Scenario: string_exp_neg_pos +Scenario: double/string_exp_neg_pos When CEL expression "double('-84.32e7')" is evaluated - # double_value:-8.432e+08 - Then value is DoubleType(source=-843200000.0) - + Then value is celpy.celtypes.DoubleType(source=-843200000.0) -Scenario: string_exp_neg_neg +Scenario: double/string_exp_neg_neg When CEL expression "double('-5.43e-21')" is evaluated - # double_value:-5.43e-21 - Then value is DoubleType(source=-5.43e-21) - + Then value is celpy.celtypes.DoubleType(source=-5.43e-21) # dyn -- Tests for dyn annotation. -Scenario: dyn_heterogeneous_list + +Scenario: dyn/dyn_heterogeneous_list No need to disable type checking. + When CEL expression "type(dyn([1, 'one']))" is evaluated - # type_value:"list" - # Then value is TypeType(value='list') Then value is celpy.celtypes.ListType - # int -- Conversions to int. -Scenario: uint - When CEL expression "int(42u)" is evaluated - # int64_value:42 - Then value is IntType(source=42) +Scenario: int/uint + When CEL expression 'int(42u)' is evaluated + Then value is celpy.celtypes.IntType(source=42) -Scenario: uint_zero +Scenario: int/uint_zero - When CEL expression "int(0u)" is evaluated - # int64_value:0 - Then value is IntType(source=0) + When CEL expression 'int(0u)' is evaluated + Then value is celpy.celtypes.IntType(source=0) +Scenario: int/uint_max_exact -Scenario: uint_range + When CEL expression 'int(9223372036854775807u)' is evaluated + Then value is celpy.celtypes.IntType(source=9223372036854775807) - When CEL expression "int(18446744073709551615u)" is evaluated - # errors:{message:"range error"} +Scenario: int/uint_range + + When CEL expression 'int(18446744073709551615u)' is evaluated Then eval_error is 'range error' +Scenario: int/double_round_neg -Scenario: double_round_neg + When CEL expression 'int(-123.456)' is evaluated + Then value is celpy.celtypes.IntType(source=-123) - When CEL expression "int(-123.456)" is evaluated - # int64_value:-123 - Then value is IntType(source=-123) +@wip +Scenario: int/double_truncate + When CEL expression 'int(1.9)' is evaluated + Then value is celpy.celtypes.IntType(source=1) -Scenario: double_nearest +@wip +Scenario: int/double_truncate_neg - When CEL expression "int(1.9)" is evaluated - # int64_value:2 - Then value is IntType(source=2) + When CEL expression 'int(-7.9)' is evaluated + Then value is celpy.celtypes.IntType(source=-7) +@wip +Scenario: int/double_half_pos -Scenario: double_nearest_neg + When CEL expression 'int(11.5)' is evaluated + Then value is celpy.celtypes.IntType(source=11) - When CEL expression "int(-7.9)" is evaluated - # int64_value:-8 - Then value is IntType(source=-8) +@wip +Scenario: int/double_half_neg + When CEL expression 'int(-3.5)' is evaluated + Then value is celpy.celtypes.IntType(source=-3) -Scenario: double_half_away_pos +Scenario: int/double_big_exact + Beyond exact range (2^53), but no loss of precision (2^55). - When CEL expression "int(11.5)" is evaluated - # int64_value:12 - Then value is IntType(source=12) + When CEL expression 'int(double(36028797018963968))' is evaluated + Then value is celpy.celtypes.IntType(source=36028797018963968) +Scenario: int/double_big_precision + Beyond exact range (2^53), but loses precision (2^55 + 1). -Scenario: double_half_away_neg + When CEL expression 'int(double(36028797018963969))' is evaluated + Then value is celpy.celtypes.IntType(source=36028797018963968) - When CEL expression "int(-3.5)" is evaluated - # int64_value:-4 - Then value is IntType(source=-4) +Scenario: int/double_int_max_range + The double(2^63-1) cast produces a floating point value outside the + int range + When CEL expression 'int(9223372036854775807.0)' is evaluated + Then eval_error is 'range' -Scenario: double_range +@wip +Scenario: int/double_int_min_range + The double(-2^63) cast produces a floating point value outside the int + range - When CEL expression "int(1e99)" is evaluated - # errors:{message:"range"} + When CEL expression 'int(-9223372036854775808.0)' is evaluated Then eval_error is 'range' +Scenario: int/double_range -Scenario: string + When CEL expression 'int(1e99)' is evaluated + Then eval_error is 'range' - When CEL expression "int('987')" is evaluated - # int64_value:987 - Then value is IntType(source=987) +Scenario: int/string + When CEL expression "int('987')" is evaluated + Then value is celpy.celtypes.IntType(source=987) -Scenario: timestamp +Scenario: int/timestamp When CEL expression "int(timestamp('2004-09-16T23:59:59Z'))" is evaluated - # int64_value:1095379199 - Then value is IntType(source=1095379199) - + Then value is celpy.celtypes.IntType(source=1095379199) # string -- Conversions to string. -Scenario: int - When CEL expression "string(123)" is evaluated - # string_value:"123" - Then value is StringType(source='123') +Scenario: string/int + When CEL expression 'string(123)' is evaluated + Then value is celpy.celtypes.StringType(source='123') -Scenario: int_neg +Scenario: string/int_neg - When CEL expression "string(-456)" is evaluated - # string_value:"-456" - Then value is StringType(source='-456') + When CEL expression 'string(-456)' is evaluated + Then value is celpy.celtypes.StringType(source='-456') +Scenario: string/uint -Scenario: uint + When CEL expression 'string(9876u)' is evaluated + Then value is celpy.celtypes.StringType(source='9876') - When CEL expression "string(9876u)" is evaluated - # string_value:"9876" - Then value is StringType(source='9876') +Scenario: string/double + When CEL expression 'string(123.456)' is evaluated + Then value is celpy.celtypes.StringType(source='123.456') -Scenario: double +Scenario: string/double_hard - When CEL expression "string(123.456)" is evaluated - # string_value:"123.456" - Then value is StringType(source='123.456') + When CEL expression 'string(-4.5e-3)' is evaluated + Then value is celpy.celtypes.StringType(source='-0.0045') +Scenario: string/bytes -Scenario: double_hard + When CEL expression "string(b'abc')" is evaluated + Then value is celpy.celtypes.StringType(source='abc') - When CEL expression "string(-4.5e-3)" is evaluated - # string_value:"-0.0045" - Then value is StringType(source='-0.0045') +Scenario: string/bytes_unicode + When CEL expression "string(b'\\303\\277')" is evaluated + Then value is celpy.celtypes.StringType(source='ΓΏ') -Scenario: bytes +Scenario: string/bytes_invalid - When CEL expression "string(b'abc')" is evaluated - # string_value:"abc" - Then value is StringType(source='abc') + When CEL expression "string(b'\\000\\xff')" is evaluated + Then eval_error is 'invalid UTF-8' -Scenario: bytes_unicode +# type -- Type reflection tests. - When CEL expression "string(b'\303\277')" is evaluated - # string_value:"ΓΏ" - Then value is StringType(source='ΓΏ') +Scenario: type/bool -Scenario: bytes_invalid + When CEL expression 'type(true)' is evaluated + Then value is celpy.celtypes.BoolType - When CEL expression "string(b'\000\xff')" is evaluated - # errors:{message:"invalid UTF-8"} - Then eval_error is 'invalid UTF-8' +Scenario: type/bool_denotation + When CEL expression 'bool' is evaluated + Then value is celpy.celtypes.BoolType +Scenario: type/dyn_no_denotation -# type -- Type reflection tests. + Given disable_check parameter is True + When CEL expression 'dyn' is evaluated + Then eval_error is 'unknown variable' -Scenario: bool +Scenario: type/int - When CEL expression "type(true)" is evaluated - # type_value:"bool" - # Then value is TypeType(value='bool') - Then value is BoolType + When CEL expression 'type(0)' is evaluated + Then value is celpy.celtypes.IntType +Scenario: type/int_denotation -Scenario: bool_denotation + When CEL expression 'int' is evaluated + Then value is celpy.celtypes.IntType - When CEL expression "bool" is evaluated - # type_value:"bool" - # Then value is TypeType(value='bool') - Then value is BoolType +Scenario: type/eq_same + When CEL expression 'type(true) == type(false)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: dyn_no_denotation +Scenario: type/uint - When CEL expression "dyn" is evaluated - # errors:{message:"unknown varaible"} - Then eval_error is 'unknown variable' + When CEL expression 'type(64u)' is evaluated + Then value is celpy.celtypes.UintType +Scenario: type/uint_denotation -Scenario: int + When CEL expression 'uint' is evaluated + Then value is celpy.celtypes.UintType - When CEL expression "type(0)" is evaluated - # type_value:"int" - # Then value is TypeType(value='int') - Then value is IntType +Scenario: type/double + When CEL expression 'type(3.14)' is evaluated + Then value is celpy.celtypes.DoubleType -Scenario: int_denotation +Scenario: type/double_denotation - When CEL expression "int" is evaluated - # type_value:"int" - # Then value is TypeType(value='int') - Then value is IntType + When CEL expression 'double' is evaluated + Then value is celpy.celtypes.DoubleType +Scenario: type/null_type -Scenario: eq_same + When CEL expression 'type(null)' is evaluated + Then value is NoneType - When CEL expression "type(true) == type(false)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: type/null_type_denotation + When CEL expression 'null_type' is evaluated + Then value is NoneType -Scenario: uint +Scenario: type/string - When CEL expression "type(64u)" is evaluated - # type_value:"uint" - # Then value is TypeType(value='uint') - Then value is UintType + When CEL expression "type('foo')" is evaluated + Then value is celpy.celtypes.StringType +Scenario: type/string_denotation -Scenario: uint_denotation + When CEL expression 'string' is evaluated + Then value is celpy.celtypes.StringType - When CEL expression "uint" is evaluated - # type_value:"uint" - # Then value is TypeType(value='uint') - Then value is UintType +Scenario: type/bytes + When CEL expression "type(b'\\xff')" is evaluated + Then value is celpy.celtypes.BytesType -Scenario: double +Scenario: type/bytes_denotation - When CEL expression "type(3.14)" is evaluated - # type_value:"double" - # Then value is TypeType(value='double') - Then value is DoubleType + When CEL expression 'bytes' is evaluated + Then value is celpy.celtypes.BytesType +Scenario: type/list -Scenario: double_denotation + When CEL expression 'type([1, 2, 3])' is evaluated + Then value is celpy.celtypes.ListType - When CEL expression "double" is evaluated - # type_value:"double" - # Then value is TypeType(value='double') - Then value is DoubleType +Scenario: type/list_denotation + When CEL expression 'list' is evaluated + Then value is celpy.celtypes.ListType -Scenario: null_type +Scenario: type/lists_monomorphic - When CEL expression "type(null)" is evaluated - # type_value:"null_type" - # Then value is TypeType(value='null_type') - Then value is NoneType + When CEL expression "type([1, 2, 3]) == type(['one', 'two', 'three'])" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: type/map -Scenario: null_type_denotation + When CEL expression 'type({4: 16})' is evaluated + Then value is celpy.celtypes.MapType - When CEL expression "null_type" is evaluated - # type_value:"null_type" - # Then value is TypeType(value='null_type') - Then value is NoneType +Scenario: type/map_denotation + When CEL expression 'map' is evaluated + Then value is celpy.celtypes.MapType -Scenario: string +Scenario: type/map_monomorphic - When CEL expression "type('foo')" is evaluated - # type_value:"string" - # Then value is TypeType(value='string') - Then value is StringType + When CEL expression "type({'one': 1}) == type({1: 'one'})" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: type/eq_diff -Scenario: string_denotation + When CEL expression 'type(7) == type(7u)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "string" is evaluated - # type_value:"string" - # Then value is TypeType(value='string') - Then value is StringType +Scenario: type/neq_same + When CEL expression 'type(0.0) != type(-0.0)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: bytes +Scenario: type/neq_diff - When CEL expression "type(b'\xff')" is evaluated - # type_value:"bytes" - # Then value is TypeType(value='bytes') - Then value is BytesType + When CEL expression 'type(0.0) != type(0)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: type/meta -Scenario: bytes_denotation + When CEL expression 'type(type(7)) == type(type(7u))' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "bytes" is evaluated - # type_value:"bytes" - # Then value is TypeType(value='bytes') - Then value is BytesType +Scenario: type/type + When CEL expression 'type(int)' is evaluated + Then value is celpy.celtypes.TypeType -Scenario: list +Scenario: type/type_denotation - When CEL expression "type([1, 2, 3])" is evaluated - # type_value:"list" - # Then value is TypeType(value='list') - Then value is ListType + When CEL expression 'type' is evaluated + Then value is celpy.celtypes.TypeType +Scenario: type/type_type -Scenario: list_denotation + When CEL expression 'type(type)' is evaluated + Then value is celpy.celtypes.TypeType - When CEL expression "list" is evaluated - # type_value:"list" - # Then value is TypeType(value='list') - Then value is ListType +# uint -- Conversions to uint. -Scenario: lists_monomorphic - When CEL expression "type([1, 2, 3]) == type(['one', 'two', 'three'])" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: uint/int + When CEL expression 'uint(1729)' is evaluated + Then value is celpy.celtypes.UintType(source=1729) -Scenario: map +Scenario: uint/int_max - When CEL expression "type({4: 16})" is evaluated - # type_value:"map" - # Then value is TypeType(value='map') - Then value is MapType + When CEL expression 'uint(9223372036854775807)' is evaluated + Then value is celpy.celtypes.UintType(source=9223372036854775807) +Scenario: uint/int_neg -Scenario: map_denotation + When CEL expression 'uint(-1)' is evaluated + Then eval_error is 'range' - When CEL expression "map" is evaluated - # type_value:"map" - # Then value is TypeType(value='map') - Then value is MapType +Scenario: uint/double + When CEL expression 'uint(3.14159265)' is evaluated + Then value is celpy.celtypes.UintType(source=3) -Scenario: map_monomorphic +@wip +Scenario: uint/double_truncate - When CEL expression "type({'one': 1}) == type({1: 'one'})" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'uint(1.9)' is evaluated + Then value is celpy.celtypes.UintType(source=1) +@wip +Scenario: uint/double_half -Scenario: eq_diff + When CEL expression 'uint(25.5)' is evaluated + Then value is celpy.celtypes.UintType(source=25) - When CEL expression "type(7) == type(7u)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: uint/double_big_exact + Beyond exact range (2^53), but no loss of precision (2^55). + When CEL expression 'uint(double(36028797018963968u))' is evaluated + Then value is celpy.celtypes.UintType(source=36028797018963968) -Scenario: neq_same +Scenario: uint/double_big_precision + Beyond exact range (2^53), but loses precision (2^55 + 1). - When CEL expression "type(0.0) != type(-0.0)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'uint(double(36028797018963969u))' is evaluated + Then value is celpy.celtypes.UintType(source=36028797018963968) +Scenario: uint/double_uint_max_range + The exact conversion of uint max as a double does not round trip. -Scenario: neq_diff + When CEL expression 'int(18446744073709551615.0)' is evaluated + Then eval_error is 'range' - When CEL expression "type(0.0) != type(0)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: uint/double_range_beyond_uint + When CEL expression 'uint(6.022e23)' is evaluated + Then eval_error is 'range' -Scenario: meta +Scenario: uint/string - When CEL expression "type(type(7)) == type(type(7u))" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression "uint('300')" is evaluated + Then value is celpy.celtypes.UintType(source=300) -Scenario: type +# bool -- Conversions to bool - When CEL expression "type(int)" is evaluated - # type_value:"type" - # Then value is TypeType(value='type') - Then value is TypeType +Scenario: bool/string_1 -Scenario: type_denotation + When CEL expression "bool('1')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "type" is evaluated - # type_value:"type" - # Then value is TypeType(value='type') - Then value is TypeType +@wip +Scenario: bool/string_t + When CEL expression "bool('t')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: type_type +@wip +Scenario: bool/string_true_lowercase - When CEL expression "type(type)" is evaluated - # type_value:"type" - # Then value is TypeType(value='type') - Then value is TypeType + When CEL expression "bool('true')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: bool/string_true_uppercase + When CEL expression "bool('TRUE')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -# uint -- Conversions to uint. +@wip +Scenario: bool/string_true_pascalcase -Scenario: int + When CEL expression "bool('True')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "uint(1729)" is evaluated - # uint64_value:1729 - Then value is UintType(source=1729) +Scenario: bool/string_0 + When CEL expression "bool('0')" is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: int_neg +@wip +Scenario: bool/string_f - When CEL expression "uint(-1)" is evaluated - # errors:{message:"range"} - Then eval_error is 'range' + When CEL expression "bool('f')" is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: bool/string_false_lowercase -Scenario: double + When CEL expression "bool('false')" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "uint(3.14159265)" is evaluated - # uint64_value:3 - Then value is UintType(source=3) +@wip +Scenario: bool/string_false_uppercase + When CEL expression "bool('FALSE')" is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: double_nearest_int +@wip +Scenario: bool/string_false_pascalcase - When CEL expression "int(1.9)" is evaluated - # int64_value:2 - Then value is IntType(source=2) + When CEL expression "bool('False')" is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: bool/string_true_badcase -Scenario: double_nearest + When CEL expression "bool('TrUe')" is evaluated + Then eval_error is 'Type conversion error' - When CEL expression "uint(1.9)" is evaluated - # uint64_value:2 - Then value is UintType(source=2) +Scenario: bool/string_false_badcase + When CEL expression "bool('FaLsE')" is evaluated + Then eval_error is 'Type conversion error' -Scenario: double_half_away - When CEL expression "uint(25.5)" is evaluated - # uint64_value:26 - Then value is UintType(source=26) +# identity -- Identity functions -Scenario: double_range +Scenario: identity/bool - When CEL expression "uint(6.022e23)" is evaluated - # errors:{message:"range"} - Then eval_error is 'range' + When CEL expression 'bool(true)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: identity/int -Scenario: string + When CEL expression 'int(1)' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +Scenario: identity/uint + + When CEL expression 'uint(1u)' is evaluated + Then value is celpy.celtypes.UintType(source=1) + +Scenario: identity/double + + When CEL expression 'double(5.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=5.5) + +Scenario: identity/string + + When CEL expression "string('hello')" is evaluated + Then value is celpy.celtypes.StringType(source='hello') + +Scenario: identity/bytes + + When CEL expression "bytes(b'abc')" is evaluated + Then value is celpy.celtypes.BytesType(source=b'abc') + +Scenario: identity/duration + + When CEL expression "duration(duration('100s')) == duration('100s')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: identity/timestamp + + When CEL expression 'timestamp(timestamp(1000000000)) == timestamp(1000000000)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "uint('300')" is evaluated - # uint64_value:300 - Then value is UintType(source=300) diff --git a/features/conversions.textproto b/features/conversions.textproto index 6f46464..0e4d4b2 100644 --- a/features/conversions.textproto +++ b/features/conversions.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + name: "conversions" description: "Tests for type conversions." section { @@ -42,6 +45,18 @@ section { expr: "double(-1000000000000000)" value: { double_value: -1e15 } } + test { + name: "int_min_exact" + description: "Smallest contiguous representable int (-2^53)." + expr: "double(-9007199254740992)" + value { double_value: -9.007199254740992e15 } + } + test { + name: "int_max_exact" + description: "Largest contiguous representable int (2^53)." + expr: "double(9007199254740992)" + value { double_value: 9.007199254740992e15 } + } test { name: "int_range" description: "Largest signed 64-bit. Rounds to nearest double." @@ -58,6 +73,12 @@ section { expr: "double(123u)" value: { double_value: 123.0 } } + test { + name: "uint_max_exact" + description: "Largest contiguous representable int (2^53)." + expr: "double(9007199254740992u)" + value { double_value: 9.007199254740992e15 } + } test { name: "uint_range" description: "Largest unsigned 64-bit." @@ -138,6 +159,11 @@ section { expr: "int(0u)" value: { int64_value: 0 } } + test { + name: "uint_max_exact" + expr: "int(9223372036854775807u)" + value { int64_value: 9223372036854775807 } + } test { name: "uint_range" expr: "int(18446744073709551615u)" @@ -151,24 +177,52 @@ section { value: { int64_value: -123 } } test { - name: "double_nearest" + name: "double_truncate" expr: "int(1.9)" - value: { int64_value: 2 } + value: { int64_value: 1 } } test { - name: "double_nearest_neg" + name: "double_truncate_neg" expr: "int(-7.9)" - value: { int64_value: -8 } + value: { int64_value: -7 } } test { - name: "double_half_away_pos" + name: "double_half_pos" expr: "int(11.5)" - value: { int64_value: 12 } + value: { int64_value: 11 } } test { - name: "double_half_away_neg" + name: "double_half_neg" expr: "int(-3.5)" - value: { int64_value: -4 } + value: { int64_value: -3 } + } + test { + name: "double_big_exact" + description: "Beyond exact range (2^53), but no loss of precision (2^55)." + expr: "int(double(36028797018963968))" + value { int64_value: 36028797018963968 } + } + test { + name: "double_big_precision" + description: "Beyond exact range (2^53), but loses precision (2^55 + 1)." + expr: "int(double(36028797018963969))" + value { int64_value: 36028797018963968 } + } + test { + name: "double_int_max_range" + description: "The double(2^63-1) cast produces a floating point value outside the int range" + expr: "int(9223372036854775807.0)" + eval_error { + errors: { message: "range" } + } + } + test { + name: "double_int_min_range" + description: "The double(-2^63) cast produces a floating point value outside the int range" + expr: "int(-9223372036854775808.0)" + eval_error { + errors: { message: "range" } + } } test { name: "double_range" @@ -252,7 +306,7 @@ section { expr: "dyn" disable_check: true eval_error { - errors { message: "unknown varaible" } + errors { message: "unknown variable" } } } test { @@ -394,6 +448,11 @@ section { expr: "uint(1729)" value: { uint64_value: 1729 } } + test { + name: "int_max" + expr: "uint(9223372036854775807)" + value { uint64_value: 9223372036854775807 } + } test { name: "int_neg" expr: "uint(-1)" @@ -407,22 +466,37 @@ section { value: { uint64_value: 3 } } test { - name: "double_nearest_int" - expr: "int(1.9)" - value: { int64_value: 2 } - } - test { - name: "double_nearest" + name: "double_truncate" expr: "uint(1.9)" - value: { uint64_value: 2 } + value: { uint64_value: 1 } } test { - name: "double_half_away" + name: "double_half" expr: "uint(25.5)" - value: { uint64_value: 26 } + value: { uint64_value: 25 } } test { - name: "double_range" + name: "double_big_exact" + description: "Beyond exact range (2^53), but no loss of precision (2^55)." + expr: "uint(double(36028797018963968u))" + value { uint64_value: 36028797018963968 } + } + test { + name: "double_big_precision" + description: "Beyond exact range (2^53), but loses precision (2^55 + 1)." + expr: "uint(double(36028797018963969u))" + value { uint64_value: 36028797018963968 } + } + test { + name: "double_uint_max_range" + description: "The exact conversion of uint max as a double does not round trip." + expr: "int(18446744073709551615.0)" + eval_error { + errors: { message: "range" } + } + } + test { + name: "double_range_beyond_uint" expr: "uint(6.022e23)" eval_error { errors { message: "range" } @@ -434,3 +508,115 @@ section { value: { uint64_value: 300 } } } +section { + name: "bool" + description: "Conversions to bool" + test { + name: "string_1" + expr: "bool('1')" + value: { bool_value: true } + } + test { + name: "string_t" + expr: "bool('t')" + value: { bool_value: true } + } + test { + name: "string_true_lowercase" + expr: "bool('true')" + value: { bool_value: true } + } + test { + name: "string_true_uppercase" + expr: "bool('TRUE')" + value: { bool_value: true } + } + test { + name: "string_true_pascalcase" + expr: "bool('True')" + value: { bool_value: true } + } + test { + name: "string_0" + expr: "bool('0')" + value: { bool_value: false } + } + test { + name: "string_f" + expr: "bool('f')" + value: { bool_value: false } + } + test { + name: "string_false_lowercase" + expr: "bool('false')" + value: { bool_value: false } + } + test { + name: "string_false_uppercase" + expr: "bool('FALSE')" + value: { bool_value: false } + } + test { + name: "string_false_pascalcase" + expr: "bool('False')" + value: { bool_value: false } + } + test { + name: "string_true_badcase" + expr: "bool('TrUe')" + eval_error { + errors { message: "Type conversion error" } + } + } + test { + name: "string_false_badcase" + expr: "bool('FaLsE')" + eval_error { + errors { message: "Type conversion error" } + } + } +} +section { + name: "identity" + description: "Identity functions" + test { + name: "bool" + expr: "bool(true)" + value: { bool_value: true } + } + test { + name: "int" + expr: "int(1)" + value: { int64_value: 1 } + } + test { + name: "uint" + expr: "uint(1u)" + value: { uint64_value: 1 } + } + test { + name: "double" + expr: "double(5.5)" + value: { double_value: 5.5 } + } + test { + name: "string" + expr: "string('hello')" + value: { string_value: "hello" } + } + test { + name: "bytes" + expr: "bytes(b'abc')" + value: { bytes_value: "abc" } + } + test { + name: "duration" + expr: "duration(duration('100s')) == duration('100s')" + value: { bool_value: true } + } + test { + name: "timestamp" + expr: "timestamp(timestamp(1000000000)) == timestamp(1000000000)" + value: { bool_value: true } + } +} diff --git a/features/dynamic.feature b/features/dynamic.feature index 92fec2c..2cd81eb 100644 --- a/features/dynamic.feature +++ b/features/dynamic.feature @@ -1,1964 +1,1490 @@ -@wip +@conformance Feature: dynamic - Tests for 'dynamic' proto behavior, including JSON, wrapper, and Any messages. + Tests for 'dynamic' proto behavior, including JSON, wrapper, and Any + messages. # int32 -- Tests for int32 conversion. -Scenario: literal - When CEL expression "google.protobuf.Int32Value{value: -123}" is evaluated - # int64_value:-123 - Then value is IntType(source=-123) +@wip +Scenario: int32/literal + When CEL expression 'google.protobuf.Int32Value{value: -123}' is evaluated + Then value is celpy.celtypes.IntType(source=-123) -Scenario: literal_no_field_access +Scenario: int32/literal_no_field_access - When CEL expression "google.protobuf.Int32Value{value: -123}.value" is evaluated - # errors:{message:"no_matching_overload"} + Given disable_check parameter is True + When CEL expression 'google.protobuf.Int32Value{value: -123}.value' is evaluated Then eval_error is 'no_matching_overload' +@wip +Scenario: int32/literal_zero -Scenario: literal_zero - - When CEL expression "google.protobuf.Int32Value{}" is evaluated - # int64_value:0 - Then value is IntType(source=0) - - -Scenario: var - - # type:{message_type:"google.protobuf.Int32Value"} - Given type_env parameter "x" is TypeType(value='google.protobuf.Int32Value') - - # object_value:{[type.googleapis.com/google.protobuf.Int32Value]:{value:2000000}} - Given bindings parameter "x" is IntType(source=2000000) - - When CEL expression "x" is evaluated - # int64_value:2000000 - Then value is IntType(source=2000000) + When CEL expression 'google.protobuf.Int32Value{}' is evaluated + Then value is celpy.celtypes.IntType(source=0) +Scenario: int32/var -Scenario: field_assign_proto2 + Given type_env parameter "x" is celpy.celtypes.IntType + and bindings parameter "x" is celpy.celtypes.IntType(source=2000000) + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.IntType(source=2000000) - Given container is "google.api.expr.test.v1.proto2" +Scenario: int32/field_assign_proto2 - When CEL expression "TestAllTypes{single_int32_wrapper: 432}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32_wrapper:{value:432}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=432, single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int32_wrapper: 432}' is evaluated + Then value is TestAllTypes(single_int32_wrapper=celpy.celtypes.IntType(source=432)) +Scenario: int32/field_assign_proto2_zero -Scenario: field_assign_proto2_zero + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int32_wrapper: 0}' is evaluated + Then value is TestAllTypes(single_int32_wrapper=celpy.celtypes.IntType(source=0)) - Given container is "google.api.expr.test.v1.proto2" +Scenario: int32/field_assign_proto2_max - When CEL expression "TestAllTypes{single_int32_wrapper: 0}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=None, single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int32_wrapper: 2147483647}' is evaluated + Then value is TestAllTypes(single_int32_wrapper=celpy.celtypes.IntType(source=2147483647)) +Scenario: int32/field_assign_proto2_min -Scenario: field_assign_proto2_range + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int32_wrapper: -2147483648}' is evaluated + Then value is TestAllTypes(single_int32_wrapper=celpy.celtypes.IntType(source=-2147483648)) - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: int32/field_assign_proto2_range - When CEL expression "TestAllTypes{single_int32_wrapper: 12345678900}" is evaluated - # errors:{message:"range error"} + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int32_wrapper: 12345678900}' is evaluated Then eval_error is 'range error' +Scenario: int32/field_read_proto2 -Scenario: field_read_proto2 - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_int32_wrapper: 642}.single_int32_wrapper" is evaluated - # int64_value:642 - Then value is IntType(source=642) - - -Scenario: field_read_proto2_zero + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int32_wrapper: 642}.single_int32_wrapper' is evaluated + Then value is celpy.celtypes.IntType(source=642) - Given container is "google.api.expr.test.v1.proto2" +Scenario: int32/field_read_proto2_zero - When CEL expression "TestAllTypes{single_int32_wrapper: 0}.single_int32_wrapper" is evaluated - # int64_value:0 - Then value is IntType(source=0) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int32_wrapper: 0}.single_int32_wrapper' is evaluated + Then value is celpy.celtypes.IntType(source=0) +@wip +Scenario: int32/field_read_proto2_unset -Scenario: field_read_proto2_unset - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{}.single_int32_wrapper" is evaluated - # null_value:NULL_VALUE + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_int32_wrapper' is evaluated Then value is None +Scenario: int32/field_assign_proto3 -Scenario: field_assign_proto3 - - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int32_wrapper: -975}' is evaluated + Then value is TestAllTypes(single_int32_wrapper=celpy.celtypes.IntType(source=-975)) - When CEL expression "TestAllTypes{single_int32_wrapper: -975}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32_wrapper:{value:-975}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=-975, single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: int32/field_assign_proto3_zero + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int32_wrapper: 0}' is evaluated + Then value is TestAllTypes(single_int32_wrapper=celpy.celtypes.IntType(source=0)) -Scenario: field_assign_proto3_zero +Scenario: int32/field_assign_proto3_max - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int32_wrapper: 2147483647}' is evaluated + Then value is TestAllTypes(single_int32_wrapper=celpy.celtypes.IntType(source=2147483647)) - When CEL expression "TestAllTypes{single_int32_wrapper: 0}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=None, single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: int32/field_assign_proto3_min + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int32_wrapper: -2147483648}' is evaluated + Then value is TestAllTypes(single_int32_wrapper=celpy.celtypes.IntType(source=-2147483648)) -Scenario: field_assign_proto3_range - - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: int32/field_assign_proto3_range - When CEL expression "TestAllTypes{single_int32_wrapper: -998877665544332211}" is evaluated - # errors:{message:"range error"} + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int32_wrapper: -998877665544332211}' is evaluated Then eval_error is 'range error' +Scenario: int32/field_read_proto3 -Scenario: field_read_proto3 - - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int32_wrapper: 642}.single_int32_wrapper' is evaluated + Then value is celpy.celtypes.IntType(source=642) - When CEL expression "TestAllTypes{single_int32_wrapper: 642}.single_int32_wrapper" is evaluated - # int64_value:642 - Then value is IntType(source=642) +Scenario: int32/field_read_proto3_zero + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int32_wrapper: 0}.single_int32_wrapper' is evaluated + Then value is celpy.celtypes.IntType(source=0) -Scenario: field_read_proto3_zero - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_int32_wrapper: 0}.single_int32_wrapper" is evaluated - # int64_value:0 - Then value is IntType(source=0) - - -Scenario: field_read_proto3_unset - - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: int32/field_read_proto3_unset - When CEL expression "TestAllTypes{}.single_int32_wrapper" is evaluated - # null_value:NULL_VALUE + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_int32_wrapper' is evaluated Then value is None - # int64 -- Tests for int64 conversion. -Scenario: literal - When CEL expression "google.protobuf.Int64Value{value: -123}" is evaluated - # int64_value:-123 - Then value is IntType(source=-123) +@wip +Scenario: int64/literal + When CEL expression 'google.protobuf.Int64Value{value: -123}' is evaluated + Then value is celpy.celtypes.IntType(source=-123) -Scenario: literal_no_field_access +Scenario: int64/literal_no_field_access - When CEL expression "google.protobuf.Int64Value{value: -123}.value" is evaluated - # errors:{message:"no_matching_overload"} + Given disable_check parameter is True + When CEL expression 'google.protobuf.Int64Value{value: -123}.value' is evaluated Then eval_error is 'no_matching_overload' +@wip +Scenario: int64/literal_zero -Scenario: literal_zero - - When CEL expression "google.protobuf.Int64Value{}" is evaluated - # int64_value:0 - Then value is IntType(source=0) - - -Scenario: var - - # type:{message_type:"google.protobuf.Int64Value"} - Given type_env parameter "x" is TypeType(value='google.protobuf.Int64Value') - - # object_value:{[type.googleapis.com/google.protobuf.Int64Value]:{value:2000000}} - Given bindings parameter "x" is IntType(source=2000000) - - When CEL expression "x" is evaluated - # int64_value:2000000 - Then value is IntType(source=2000000) - - -Scenario: field_assign_proto2 - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_int64_wrapper: 432}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int64_wrapper:{value:432}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=432, single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto2_zero - - Given container is "google.api.expr.test.v1.proto2" + When CEL expression 'google.protobuf.Int64Value{}' is evaluated + Then value is celpy.celtypes.IntType(source=0) - When CEL expression "TestAllTypes{single_int64_wrapper: 0}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int64_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=None, single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: int64/var + Given type_env parameter "x" is celpy.celtypes.IntType + and bindings parameter "x" is celpy.celtypes.IntType(source=2000000) + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.IntType(source=2000000) -Scenario: field_assign_proto3 +Scenario: int64/field_assign_proto2 - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int64_wrapper: 432}' is evaluated + Then value is TestAllTypes(single_int64_wrapper=celpy.celtypes.IntType(source=432)) - When CEL expression "TestAllTypes{single_int64_wrapper: -975}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int64_wrapper:{value:-975}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=-975, single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: int64/field_assign_proto2_zero + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int64_wrapper: 0}' is evaluated + Then value is TestAllTypes(single_int64_wrapper=celpy.celtypes.IntType(source=0)) -Scenario: field_assign_proto3_zero +Scenario: int64/field_assign_proto3 - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int64_wrapper: -975}' is evaluated + Then value is TestAllTypes(single_int64_wrapper=celpy.celtypes.IntType(source=-975)) - When CEL expression "TestAllTypes{single_int64_wrapper: 0}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int64_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=None, single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: int64/field_assign_proto3_zero + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int64_wrapper: 0}' is evaluated + Then value is TestAllTypes(single_int64_wrapper=celpy.celtypes.IntType(source=0)) # uint32 -- Tests for uint32 conversion. -Scenario: literal - When CEL expression "google.protobuf.UInt32Value{value: 123u}" is evaluated - # uint64_value:123 - Then value is UintType(source=123) +@wip +Scenario: uint32/literal + When CEL expression 'google.protobuf.UInt32Value{value: 123u}' is evaluated + Then value is celpy.celtypes.UintType(source=123) -Scenario: literal_no_field_access +Scenario: uint32/literal_no_field_access - When CEL expression "google.protobuf.UInt32Value{value: 123u}.value" is evaluated - # errors:{message:"no_matching_overload"} + Given disable_check parameter is True + When CEL expression 'google.protobuf.UInt32Value{value: 123u}.value' is evaluated Then eval_error is 'no_matching_overload' +@wip +Scenario: uint32/literal_zero -Scenario: literal_zero - - When CEL expression "google.protobuf.UInt32Value{}" is evaluated - # uint64_value:0 - Then value is UintType(source=0) - - -Scenario: var - - # type:{message_type:"google.protobuf.UInt32Value"} - Given type_env parameter "x" is TypeType(value='google.protobuf.UInt32Value') - - # object_value:{[type.googleapis.com/google.protobuf.UInt32Value]:{value:2000000}} - Given bindings parameter "x" is UintType(source=2000000) - - When CEL expression "x" is evaluated - # uint64_value:2000000 - Then value is UintType(source=2000000) - - -Scenario: field_assign_proto2 + When CEL expression 'google.protobuf.UInt32Value{}' is evaluated + Then value is celpy.celtypes.UintType(source=0) - Given container is "google.api.expr.test.v1.proto2" +Scenario: uint32/var - When CEL expression "TestAllTypes{single_uint32_wrapper: 432u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint32_wrapper:{value:432}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=432, single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given type_env parameter "x" is celpy.celtypes.UintType + and bindings parameter "x" is celpy.celtypes.UintType(source=2000000) + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.UintType(source=2000000) +Scenario: uint32/field_assign_proto2 -Scenario: field_assign_proto2_zero + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint32_wrapper: 432u}' is evaluated + Then value is TestAllTypes(single_uint32_wrapper=celpy.celtypes.UintType(source=432)) - Given container is "google.api.expr.test.v1.proto2" +Scenario: uint32/field_assign_proto2_zero - When CEL expression "TestAllTypes{single_uint32_wrapper: 0u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint32_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=None, single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint32_wrapper: 0u}' is evaluated + Then value is TestAllTypes(single_uint32_wrapper=celpy.celtypes.UintType(source=0)) +Scenario: uint32/field_assign_proto2_max -Scenario: field_assign_proto2_range + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint32_wrapper: 4294967295u}' is evaluated + Then value is TestAllTypes(single_uint32_wrapper=celpy.celtypes.UintType(source=4294967295)) - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: uint32/field_assign_proto2_range - When CEL expression "TestAllTypes{single_uint32_wrapper: 6111222333u}" is evaluated - # errors:{message:"range error"} + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint32_wrapper: 6111222333u}' is evaluated Then eval_error is 'range error' +Scenario: uint32/field_assign_proto3 -Scenario: field_assign_proto3 + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_uint32_wrapper: 975u}' is evaluated + Then value is TestAllTypes(single_uint32_wrapper=celpy.celtypes.UintType(source=975)) - Given container is "google.api.expr.test.v1.proto3" +Scenario: uint32/field_assign_proto3_zero - When CEL expression "TestAllTypes{single_uint32_wrapper: 975u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint32_wrapper:{value:975}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=975, single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_uint32_wrapper: 0u}' is evaluated + Then value is TestAllTypes(single_uint32_wrapper=celpy.celtypes.UintType(source=0)) +Scenario: uint32/field_assign_proto3_max -Scenario: field_assign_proto3_zero + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_uint32_wrapper: 4294967295u}' is evaluated + Then value is TestAllTypes(single_uint32_wrapper=celpy.celtypes.UintType(source=4294967295)) - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_uint32_wrapper: 0u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint32_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=None, single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto3_range - - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: uint32/field_assign_proto3_range - When CEL expression "TestAllTypes{single_uint32_wrapper: 6111222333u}" is evaluated - # errors:{message:"range error"} + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_uint32_wrapper: 6111222333u}' is evaluated Then eval_error is 'range error' +Scenario: uint32/field_read_proto2 -Scenario: field_read_proto2 - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_uint32_wrapper: 258u}.single_uint32_wrapper" is evaluated - # uint64_value:258 - Then value is UintType(source=258) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint32_wrapper: 258u}.single_uint32_wrapper' is evaluated + Then value is celpy.celtypes.UintType(source=258) +Scenario: uint32/field_read_proto2_zero -Scenario: field_read_proto2_zero + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint32_wrapper: 0u}.single_uint32_wrapper' is evaluated + Then value is celpy.celtypes.UintType(source=0) - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_uint32_wrapper: 0u}.single_uint32_wrapper" is evaluated - # uint64_value:0 - Then value is UintType(source=0) - - -Scenario: field_read_proto2_unset - - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: uint32/field_read_proto2_unset - When CEL expression "TestAllTypes{}.single_uint32_wrapper" is evaluated - # null_value:NULL_VALUE + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_uint32_wrapper' is evaluated Then value is None - # uint64 -- Tests for uint64 conversion. -Scenario: literal - When CEL expression "google.protobuf.UInt64Value{value: 123u}" is evaluated - # uint64_value:123 - Then value is UintType(source=123) +@wip +Scenario: uint64/literal + When CEL expression 'google.protobuf.UInt64Value{value: 123u}' is evaluated + Then value is celpy.celtypes.UintType(source=123) -Scenario: literal_no_field_access +Scenario: uint64/literal_no_field_access - When CEL expression "google.protobuf.UInt64Value{value: 123u}.value" is evaluated - # errors:{message:"no_matching_overload"} + Given disable_check parameter is True + When CEL expression 'google.protobuf.UInt64Value{value: 123u}.value' is evaluated Then eval_error is 'no_matching_overload' +@wip +Scenario: uint64/literal_zero -Scenario: literal_zero - - When CEL expression "google.protobuf.UInt64Value{}" is evaluated - # uint64_value:0 - Then value is UintType(source=0) - - -Scenario: var - - # type:{message_type:"google.protobuf.UInt64Value"} - Given type_env parameter "x" is TypeType(value='google.protobuf.UInt64Value') - - # object_value:{[type.googleapis.com/google.protobuf.UInt64Value]:{value:2000000}} - Given bindings parameter "x" is UintType(source=2000000) - - When CEL expression "x" is evaluated - # uint64_value:2000000 - Then value is UintType(source=2000000) - - -Scenario: field_assign_proto2 - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_uint64_wrapper: 432u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint64_wrapper:{value:432}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=432, single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto2_zero - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_uint64_wrapper: 0u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint64_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=None, single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto3 - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_uint64_wrapper: 975u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint64_wrapper:{value:975}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=975, single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + When CEL expression 'google.protobuf.UInt64Value{}' is evaluated + Then value is celpy.celtypes.UintType(source=0) +Scenario: uint64/var -Scenario: field_assign_proto3_zero + Given type_env parameter "x" is celpy.celtypes.UintType + and bindings parameter "x" is celpy.celtypes.UintType(source=2000000) + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.UintType(source=2000000) - Given container is "google.api.expr.test.v1.proto3" +Scenario: uint64/field_assign_proto2 - When CEL expression "TestAllTypes{single_uint64_wrapper: 0u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint64_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=None, single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint64_wrapper: 432u}' is evaluated + Then value is TestAllTypes(single_uint64_wrapper=celpy.celtypes.UintType(source=432)) +Scenario: uint64/field_assign_proto2_zero -Scenario: field_read_proto2 + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint64_wrapper: 0u}' is evaluated + Then value is TestAllTypes(single_uint64_wrapper=celpy.celtypes.UintType(source=0)) - Given container is "google.api.expr.test.v1.proto2" +Scenario: uint64/field_assign_proto3 - When CEL expression "TestAllTypes{single_uint64_wrapper: 5123123123u}.single_uint64_wrapper" is evaluated - # uint64_value:5123123123 - Then value is UintType(source=5123123123) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_uint64_wrapper: 975u}' is evaluated + Then value is TestAllTypes(single_uint64_wrapper=celpy.celtypes.UintType(source=975)) +Scenario: uint64/field_assign_proto3_zero -Scenario: field_read_proto2_zero + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_uint64_wrapper: 0u}' is evaluated + Then value is TestAllTypes(single_uint64_wrapper=celpy.celtypes.UintType(source=0)) - Given container is "google.api.expr.test.v1.proto2" +Scenario: uint64/field_read_proto2 - When CEL expression "TestAllTypes{single_uint64_wrapper: 0u}.single_uint64_wrapper" is evaluated - # uint64_value:0 - Then value is UintType(source=0) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint64_wrapper: 5123123123u}.single_uint64_wrapper' is evaluated + Then value is celpy.celtypes.UintType(source=5123123123) +Scenario: uint64/field_read_proto2_zero -Scenario: field_read_proto2_unset + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint64_wrapper: 0u}.single_uint64_wrapper' is evaluated + Then value is celpy.celtypes.UintType(source=0) - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: uint64/field_read_proto2_unset - When CEL expression "TestAllTypes{}.single_uint64_wrapper" is evaluated - # null_value:NULL_VALUE + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_uint64_wrapper' is evaluated Then value is None - # float -- Tests for float conversion. -Scenario: literal - When CEL expression "google.protobuf.FloatValue{value: -1.5e3}" is evaluated - # double_value:-1500 - Then value is DoubleType(source=-1500) +@wip +Scenario: float/literal + When CEL expression 'google.protobuf.FloatValue{value: -1.5e3}' is evaluated + Then value is celpy.celtypes.DoubleType(source=-1500.0) -Scenario: literal_not_double - Use a number with no exact representation to make sure we actually narrow to a float. - When CEL expression "google.protobuf.FloatValue{value: 1.333} == 1.333" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: float/literal_not_double + Use a number with no exact representation to make sure we actually + narrow to a float. + When CEL expression 'google.protobuf.FloatValue{value: 1.333} == 1.333' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: literal_no_field_access +Scenario: float/literal_no_field_access - When CEL expression "google.protobuf.FloatValue{value: 3.1416}.value" is evaluated - # errors:{message:"no_matching_overload"} + Given disable_check parameter is True + When CEL expression 'google.protobuf.FloatValue{value: 3.1416}.value' is evaluated Then eval_error is 'no_matching_overload' +@wip +Scenario: float/literal_zero -Scenario: literal_zero - - When CEL expression "google.protobuf.FloatValue{}" is evaluated - # double_value:0 - Then value is DoubleType(source=0) - - -Scenario: var - - # type:{message_type:"google.protobuf.FloatValue"} - Given type_env parameter "x" is TypeType(value='google.protobuf.FloatValue') - - # object_value:{[type.googleapis.com/google.protobuf.FloatValue]:{value:-1.25e+06}} - Given bindings parameter "x" is DoubleType(source=-1250000.0) - - When CEL expression "x" is evaluated - # double_value:-1.25e+06 - Then value is DoubleType(source=-1250000.0) - - -Scenario: field_assign_proto2 - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_float_wrapper: 86.75}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_float_wrapper:{value:86.75}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=86.75, single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto2_zero + When CEL expression 'google.protobuf.FloatValue{}' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) - Given container is "google.api.expr.test.v1.proto2" +Scenario: float/var - When CEL expression "TestAllTypes{single_float_wrapper: 0.0}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_float_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=None, single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given type_env parameter "x" is celpy.celtypes.DoubleType + and bindings parameter "x" is celpy.celtypes.DoubleType(source=-1250000.0) + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.DoubleType(source=-1250000.0) +Scenario: float/field_assign_proto2 -Scenario: field_assign_proto2_range + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_float_wrapper: 86.75}' is evaluated + Then value is TestAllTypes(single_float_wrapper=celpy.celtypes.DoubleType(source=86.75)) - Given container is "google.api.expr.test.v1.proto2" +Scenario: float/field_assign_proto2_zero - When CEL expression "TestAllTypes{single_float_wrapper: 1.4e55}" is evaluated - # errors:{message:"range error"} - Then eval_error is 'range error' + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_float_wrapper: 0.0}' is evaluated + Then value is TestAllTypes(single_float_wrapper=celpy.celtypes.DoubleType(source=0.0)) +@wip +Scenario: float/field_assign_proto2_subnorm + Subnormal single floats range from ~1e-38 to ~1e-45. -Scenario: field_read_proto2 + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_float_wrapper: 1e-40}' is evaluated + Then value is TestAllTypes(single_float_wrapper=celpy.celtypes.DoubleType(source=9.99994610111476e-41)) - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: float/field_assign_proto2_round_to_zero + Subnormal single floats range from ~1e-38 to ~1e-45. - When CEL expression "TestAllTypes{single_float_wrapper: -12.375}.single_float_wrapper" is evaluated - # double_value:-12.375 - Then value is DoubleType(source=-12.375) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_float_wrapper: 1e-50}' is evaluated + Then value is TestAllTypes(single_float_wrapper=celpy.celtypes.DoubleType(source=0.0)) +@wip +Scenario: float/field_assign_proto2_range + Single float max is about 3.4e38 -Scenario: field_read_proto2_zero + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_float_wrapper: 1.4e55}' is evaluated + Then value is TestAllTypes(single_float_wrapper=celpy.celtypes.DoubleType(source=float('inf'))) - Given container is "google.api.expr.test.v1.proto2" +Scenario: float/field_read_proto2 - When CEL expression "TestAllTypes{single_int32_wrapper: 0}.single_int32_wrapper" is evaluated - # int64_value:0 - Then value is IntType(source=0) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_float_wrapper: -12.375}.single_float_wrapper' is evaluated + Then value is celpy.celtypes.DoubleType(source=-12.375) +Scenario: float/field_read_proto2_zero -Scenario: field_read_proto2_unset + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_float_wrapper: 0.0}.single_float_wrapper' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: float/field_read_proto2_unset - When CEL expression "TestAllTypes{}.single_float_wrapper" is evaluated - # null_value:NULL_VALUE + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_float_wrapper' is evaluated Then value is None +Scenario: float/field_assign_proto3 -Scenario: field_assign_proto3 - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_float_wrapper: -9.75}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_float_wrapper:{value:-9.75}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=-9.75, single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto3_zero - - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_float_wrapper: -9.75}' is evaluated + Then value is TestAllTypes(single_float_wrapper=celpy.celtypes.DoubleType(source=-9.75)) - When CEL expression "TestAllTypes{single_float_wrapper: 0.0}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_float_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=None, single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: float/field_assign_proto3_zero + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_float_wrapper: 0.0}' is evaluated + Then value is TestAllTypes(single_float_wrapper=celpy.celtypes.DoubleType(source=0.0)) -Scenario: field_assign_proto3_range - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_float_wrapper: -9.9e-100}" is evaluated - # errors:{message:"range error"} - Then eval_error is 'range error' - +@wip +Scenario: float/field_assign_proto2_subnorm + Subnormal single floats range from ~1e-38 to ~1e-45. -Scenario: field_read_proto3 + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_float_wrapper: 1e-40}' is evaluated + Then value is TestAllTypes(single_float_wrapper=celpy.celtypes.DoubleType(source=9.99994610111476e-41)) - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: float/field_assign_proto3_round_to_zero - When CEL expression "TestAllTypes{single_float_wrapper: 64.25}.single_float_wrapper" is evaluated - # double_value:64.25 - Then value is DoubleType(source=64.25) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_float_wrapper: -9.9e-100}' is evaluated + Then value is TestAllTypes(single_float_wrapper=celpy.celtypes.DoubleType(source=-0.0)) +@wip +Scenario: float/field_assign_proto3_range + Single float min is about -3.4e38 -Scenario: field_read_proto3_zero + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_float_wrapper: -9.9e100}' is evaluated + Then value is TestAllTypes(single_float_wrapper=celpy.celtypes.DoubleType(source=float('-inf'))) - Given container is "google.api.expr.test.v1.proto3" +Scenario: float/field_read_proto3 - When CEL expression "TestAllTypes{single_float_wrapper: 0.0}.single_float_wrapper" is evaluated - # double_value:0 - Then value is DoubleType(source=0) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_float_wrapper: 64.25}.single_float_wrapper' is evaluated + Then value is celpy.celtypes.DoubleType(source=64.25) +Scenario: float/field_read_proto3_zero -Scenario: field_read_proto3_unset + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_float_wrapper: 0.0}.single_float_wrapper' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: float/field_read_proto3_unset - When CEL expression "TestAllTypes{}.single_float_wrapper" is evaluated - # null_value:NULL_VALUE + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_float_wrapper' is evaluated Then value is None - # double -- Tests for double conversion. -Scenario: literal - When CEL expression "google.protobuf.DoubleValue{value: -1.5e3}" is evaluated - # double_value:-1500 - Then value is DoubleType(source=-1500) +@wip +Scenario: double/literal + When CEL expression 'google.protobuf.DoubleValue{value: -1.5e3}' is evaluated + Then value is celpy.celtypes.DoubleType(source=-1500.0) -Scenario: literal_no_field_access +Scenario: double/literal_no_field_access - When CEL expression "google.protobuf.DoubleValue{value: 3.1416}.value" is evaluated - # errors:{message:"no_matching_overload"} + Given disable_check parameter is True + When CEL expression 'google.protobuf.DoubleValue{value: 3.1416}.value' is evaluated Then eval_error is 'no_matching_overload' +@wip +Scenario: double/literal_zero -Scenario: literal_zero - - When CEL expression "google.protobuf.DoubleValue{}" is evaluated - # double_value:0 - Then value is DoubleType(source=0) - - -Scenario: var - - # type:{message_type:"google.protobuf.DoubleValue"} - Given type_env parameter "x" is TypeType(value='google.protobuf.DoubleValue') - - # object_value:{[type.googleapis.com/google.protobuf.DoubleValue]:{value:-1.25e+06}} - Given bindings parameter "x" is DoubleType(source=-1250000.0) - - When CEL expression "x" is evaluated - # double_value:-1.25e+06 - Then value is DoubleType(source=-1250000.0) - - -Scenario: field_assign_proto2 - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_double_wrapper: 86.75}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_double_wrapper:{value:86.75}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=86.75, single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto2_zero - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_double_wrapper: 0.0}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_double_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=None, single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto2_range + When CEL expression 'google.protobuf.DoubleValue{}' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) - Given container is "google.api.expr.test.v1.proto2" +Scenario: double/var - When CEL expression "TestAllTypes{single_double_wrapper: 1.4e55}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_double_wrapper:{value:1.4e+55}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=1.4e+55, single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given type_env parameter "x" is celpy.celtypes.DoubleType + and bindings parameter "x" is celpy.celtypes.DoubleType(source=-1250000.0) + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.DoubleType(source=-1250000.0) +Scenario: double/field_assign_proto2 -Scenario: field_read_proto2 + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_double_wrapper: 86.75}' is evaluated + Then value is TestAllTypes(single_double_wrapper=celpy.celtypes.DoubleType(source=86.75)) - Given container is "google.api.expr.test.v1.proto2" +Scenario: double/field_assign_proto2_zero - When CEL expression "TestAllTypes{single_double_wrapper: -12.375}.single_double_wrapper" is evaluated - # double_value:-12.375 - Then value is DoubleType(source=-12.375) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_double_wrapper: 0.0}' is evaluated + Then value is TestAllTypes(single_double_wrapper=celpy.celtypes.DoubleType(source=0.0)) +Scenario: double/field_assign_proto2_range -Scenario: field_read_proto2_zero + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_double_wrapper: 1.4e55}' is evaluated + Then value is TestAllTypes(single_double_wrapper=celpy.celtypes.DoubleType(source=1.4e+55)) - Given container is "google.api.expr.test.v1.proto2" +Scenario: double/field_read_proto2 - When CEL expression "TestAllTypes{single_int32_wrapper: 0}.single_int32_wrapper" is evaluated - # int64_value:0 - Then value is IntType(source=0) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_double_wrapper: -12.375}.single_double_wrapper' is evaluated + Then value is celpy.celtypes.DoubleType(source=-12.375) +Scenario: double/field_read_proto2_zero -Scenario: field_read_proto2_unset + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int32_wrapper: 0}.single_int32_wrapper' is evaluated + Then value is celpy.celtypes.IntType(source=0) - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: double/field_read_proto2_unset - When CEL expression "TestAllTypes{}.single_double_wrapper" is evaluated - # null_value:NULL_VALUE + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_double_wrapper' is evaluated Then value is None +Scenario: double/field_assign_proto3 -Scenario: field_assign_proto3 - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_double_wrapper: -9.75}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_double_wrapper:{value:-9.75}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=-9.75, single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto3_zero - - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_double_wrapper: -9.75}' is evaluated + Then value is TestAllTypes(single_double_wrapper=celpy.celtypes.DoubleType(source=-9.75)) - When CEL expression "TestAllTypes{single_double_wrapper: 0.0}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_double_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=None, single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: double/field_assign_proto3_zero + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_double_wrapper: 0.0}' is evaluated + Then value is TestAllTypes(single_double_wrapper=celpy.celtypes.DoubleType(source=0.0)) -Scenario: field_assign_proto3_range +Scenario: double/field_assign_proto3_range - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_double_wrapper: -9.9e100}' is evaluated + Then value is TestAllTypes(single_double_wrapper=celpy.celtypes.DoubleType(source=-9.9e+100)) - When CEL expression "TestAllTypes{single_double_wrapper: -9.9e-100}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_double_wrapper:{value:-9.9e-100}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=-9.9e-100, single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: double/field_read_proto3 + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_double_wrapper: 64.25}.single_double_wrapper' is evaluated + Then value is celpy.celtypes.DoubleType(source=64.25) -Scenario: field_read_proto3 +Scenario: double/field_read_proto3_zero - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_double_wrapper: 0.0}.single_double_wrapper' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) - When CEL expression "TestAllTypes{single_double_wrapper: 64.25}.single_double_wrapper" is evaluated - # double_value:64.25 - Then value is DoubleType(source=64.25) - - -Scenario: field_read_proto3_zero - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_double_wrapper: 0.0}.single_double_wrapper" is evaluated - # double_value:0 - Then value is DoubleType(source=0) - - -Scenario: field_read_proto3_unset - - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: double/field_read_proto3_unset - When CEL expression "TestAllTypes{}.single_double_wrapper" is evaluated - # null_value:NULL_VALUE + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_double_wrapper' is evaluated Then value is None - # bool -- Tests for bool conversion. -Scenario: literal - When CEL expression "google.protobuf.BoolValue{value: true}" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: bool/literal + When CEL expression 'google.protobuf.BoolValue{value: true}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: literal_no_field_access +Scenario: bool/literal_no_field_access - When CEL expression "google.protobuf.BoolValue{value: true}.value" is evaluated - # errors:{message:"no_matching_overload"} + Given disable_check parameter is True + When CEL expression 'google.protobuf.BoolValue{value: true}.value' is evaluated Then eval_error is 'no_matching_overload' +@wip +Scenario: bool/literal_empty -Scenario: literal_empty - - When CEL expression "google.protobuf.BoolValue{}" is evaluated - # bool_value:false - Then value is BoolType(source=False) - - -Scenario: var - - # type:{message_type:"google.protobuf.BoolValue"} - Given type_env parameter "x" is TypeType(value='google.protobuf.BoolValue') - - # object_value:{[type.googleapis.com/google.protobuf.BoolValue]:{value:true}} - Given bindings parameter "x" is BoolType(source=True) - - When CEL expression "x" is evaluated - # bool_value:true - Then value is BoolType(source=True) - - -Scenario: field_assign_proto2 - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_bool_wrapper: true}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bool_wrapper:{value:true}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=True, single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto2_false - - Given container is "google.api.expr.test.v1.proto2" + When CEL expression 'google.protobuf.BoolValue{}' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "TestAllTypes{single_bool_wrapper: false}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bool_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=None, single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: bool/var + Given type_env parameter "x" is celpy.celtypes.BoolType + and bindings parameter "x" is celpy.celtypes.BoolType(source=True) + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: field_assign_proto3 +Scenario: bool/field_assign_proto2 - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_bool_wrapper: true}' is evaluated + Then value is TestAllTypes(single_bool_wrapper=celpy.celtypes.BoolType(source=True)) - When CEL expression "TestAllTypes{single_bool_wrapper: true}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bool_wrapper:{value:true}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=True, single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: bool/field_assign_proto2_false + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_bool_wrapper: false}' is evaluated + Then value is TestAllTypes(single_bool_wrapper=celpy.celtypes.BoolType(source=False)) -Scenario: field_assign_proto3_false +Scenario: bool/field_assign_proto3 - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_bool_wrapper: true}' is evaluated + Then value is TestAllTypes(single_bool_wrapper=celpy.celtypes.BoolType(source=True)) - When CEL expression "TestAllTypes{single_bool_wrapper: false}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bool_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=None, single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: bool/field_assign_proto3_false + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_bool_wrapper: false}' is evaluated + Then value is TestAllTypes(single_bool_wrapper=celpy.celtypes.BoolType(source=False)) # string -- Tests for string conversion. -Scenario: literal - When CEL expression "google.protobuf.StringValue{value: 'foo'}" is evaluated - # string_value:"foo" - Then value is StringType(source='foo') +@wip +Scenario: string/literal + When CEL expression "google.protobuf.StringValue{value: 'foo'}" is evaluated + Then value is celpy.celtypes.StringType(source='foo') -Scenario: literal_no_field_access +Scenario: string/literal_no_field_access + Given disable_check parameter is True When CEL expression "google.protobuf.StringValue{value: 'foo'}.value" is evaluated - # errors:{message:"no_matching_overload"} Then eval_error is 'no_matching_overload' +@wip +Scenario: string/literal_empty -Scenario: literal_empty - - When CEL expression "google.protobuf.StringValue{}" is evaluated - # string_value:"" - Then value is StringType(source='') - + When CEL expression 'google.protobuf.StringValue{}' is evaluated + Then value is celpy.celtypes.StringType(source='') -Scenario: literal_unicode +@wip +Scenario: string/literal_unicode When CEL expression "google.protobuf.StringValue{value: 'flambΓ©'}" is evaluated - # string_value:"flambΓ©" - Then value is StringType(source='flambΓ©') - - -Scenario: var - - # type:{message_type:"google.protobuf.StringValue"} - Given type_env parameter "x" is TypeType(value='google.protobuf.StringValue') + Then value is celpy.celtypes.StringType(source='flambΓ©') - # object_value:{[type.googleapis.com/google.protobuf.StringValue]:{value:"bar"}} - Given bindings parameter "x" is StringType(source='bar') +Scenario: string/var - When CEL expression "x" is evaluated - # string_value:"bar" - Then value is StringType(source='bar') + Given type_env parameter "x" is celpy.celtypes.StringType + and bindings parameter "x" is celpy.celtypes.StringType(source='bar') + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.StringType(source='bar') +Scenario: string/field_assign_proto2 -Scenario: field_assign_proto2 - - Given container is "google.api.expr.test.v1.proto2" - + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_string_wrapper: 'baz'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_string_wrapper:{value:"baz"}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper='baz', single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - + Then value is TestAllTypes(single_string_wrapper=celpy.celtypes.StringType(source='baz')) -Scenario: field_assign_proto2_empty - - Given container is "google.api.expr.test.v1.proto2" +Scenario: string/field_assign_proto2_empty + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_string_wrapper: ''}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_string_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=None, single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto3 + Then value is TestAllTypes(single_string_wrapper=celpy.celtypes.StringType(source='')) - Given container is "google.api.expr.test.v1.proto3" +Scenario: string/field_assign_proto3 + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_string_wrapper: 'bletch'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_string_wrapper:{value:"bletch"}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper='bletch', single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Then value is TestAllTypes(single_string_wrapper=celpy.celtypes.StringType(source='bletch')) +Scenario: string/field_assign_proto3_empty -Scenario: field_assign_proto3_empty - - Given container is "google.api.expr.test.v1.proto3" - + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_string_wrapper: ''}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_string_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=None, single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - + Then value is TestAllTypes(single_string_wrapper=celpy.celtypes.StringType(source='')) # bytes -- Tests for bytes conversion. -Scenario: literal - When CEL expression "google.protobuf.BytesValue{value: b'foo\123'}" is evaluated - # bytes_value:"fooS" - Then value is BytesType(source=b'fooS') +@wip +Scenario: bytes/literal + When CEL expression "google.protobuf.BytesValue{value: b'foo\\123'}" is evaluated + Then value is celpy.celtypes.BytesType(source=b'fooS') -Scenario: literal_no_field_access +Scenario: bytes/literal_no_field_access + Given disable_check parameter is True When CEL expression "google.protobuf.BytesValue{value: b'foo'}.value" is evaluated - # errors:{message:"no_matching_overload"} Then eval_error is 'no_matching_overload' +Scenario: bytes/literal_empty -Scenario: literal_empty + When CEL expression 'google.protobuf.BytesValue{}' is evaluated + Then value is celpy.celtypes.BytesType(source=b'') - When CEL expression "google.protobuf.BytesValue{}" is evaluated - # bytes_value:"" - Then value is BytesType(source=b'') - - -Scenario: literal_unicode +@wip +Scenario: bytes/literal_unicode When CEL expression "google.protobuf.BytesValue{value: b'flambΓ©'}" is evaluated - # bytes_value:"flambΓ©" - Then value is BytesType(source=b'flamb\xc3\xa9') + Then value is celpy.celtypes.BytesType(source=b'flamb\xc3\xa9') +Scenario: bytes/var -Scenario: var + Given type_env parameter "x" is celpy.celtypes.BytesType + and bindings parameter "x" is celpy.celtypes.BytesType(source=b'bar') + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.BytesType(source=b'bar') - # type:{message_type:"google.protobuf.BytesValue"} - Given type_env parameter "x" is TypeType(value='google.protobuf.BytesValue') - - # object_value:{[type.googleapis.com/google.protobuf.BytesValue]:{value:"bar"}} - Given bindings parameter "x" is BytesType(source='bar') - - When CEL expression "x" is evaluated - # bytes_value:"bar" - Then value is BytesType(source=b'bar') - - -Scenario: field_assign_proto2 - - Given container is "google.api.expr.test.v1.proto2" +Scenario: bytes/field_assign_proto2 + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_bytes_wrapper: b'baz'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bytes_wrapper:{value:"baz"}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper='baz', list_value=[]) - + Then value is TestAllTypes(single_bytes_wrapper=celpy.celtypes.BytesType(source=b'baz')) -Scenario: field_assign_proto2_empty - - Given container is "google.api.expr.test.v1.proto2" +Scenario: bytes/field_assign_proto2_empty + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_bytes_wrapper: b''}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bytes_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=None, list_value=[]) - + Then value is TestAllTypes(single_bytes_wrapper=celpy.celtypes.BytesType(source=b'')) -Scenario: field_assign_proto3 - - Given container is "google.api.expr.test.v1.proto3" +Scenario: bytes/field_assign_proto3 + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_bytes_wrapper: b'bletch'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bytes_wrapper:{value:"bletch"}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper='bletch', list_value=[]) - + Then value is TestAllTypes(single_bytes_wrapper=celpy.celtypes.BytesType(source=b'bletch')) -Scenario: field_assign_proto3_empty - - Given container is "google.api.expr.test.v1.proto3" +Scenario: bytes/field_assign_proto3_empty + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_bytes_wrapper: b''}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bytes_wrapper:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=None, list_value=[]) - + Then value is TestAllTypes(single_bytes_wrapper=celpy.celtypes.BytesType(source=b'')) # list -- Tests for list conversion. -Scenario: literal - When CEL expression "google.protobuf.ListValue{values: [3.0, 'foo', null]}" is evaluated - # list_value:{values:{double_value:3} values:{string_value:"foo"} values:{null_value:NULL_VALUE}} - Then value is [DoubleType(source=3), StringType(source='foo'), None] +@wip +Scenario: list/literal + When CEL expression "google.protobuf.ListValue{values: [3.0, 'foo', null]}" is evaluated + Then value is [celpy.celtypes.DoubleType(source=3.0), celpy.celtypes.StringType(source='foo'), None] -Scenario: literal_no_field_access +Scenario: list/literal_no_field_access + Given disable_check parameter is True When CEL expression "google.protobuf.ListValue{values: [3.0, 'foo', null]}.values" is evaluated - # errors:{message:"no_matching_overload"} Then eval_error is 'no_matching_overload' +@wip +Scenario: list/literal_empty -Scenario: literal_empty - - When CEL expression "google.protobuf.ListValue{values: []}" is evaluated - # list_value:{} + When CEL expression 'google.protobuf.ListValue{values: []}' is evaluated Then value is [] +Scenario: list/var -Scenario: var - - # type:{message_type:"google.protobuf.ListValue"} - Given type_env parameter "x" is TypeType(value='google.protobuf.ListValue') - - # object_value:{[type.googleapis.com/google.protobuf.ListValue]:{values:{string_value:"bar"} values:{list_value:{values:{string_value:"a"} values:{string_value:"b"}}}}} - Given bindings parameter "x" is [StringType(source='bar'), [StringType(source='a'), StringType(source='b')]] + Given type_env parameter "x" is celpy.celtypes.ListType + and bindings parameter "x" is [celpy.celtypes.StringType(source='bar'), [celpy.celtypes.StringType(source='a'), celpy.celtypes.StringType(source='b')]] + When CEL expression 'x' is evaluated + Then value is [celpy.celtypes.StringType(source='bar'), [celpy.celtypes.StringType(source='a'), celpy.celtypes.StringType(source='b')]] - When CEL expression "x" is evaluated - # list_value:{values:{string_value:"bar"} values:{list_value:{values:{string_value:"a"} values:{string_value:"b"}}}} - Then value is [StringType(source='bar'), [StringType(source='a'), StringType(source='b')]] - - -Scenario: field_assign_proto2 - - Given container is "google.api.expr.test.v1.proto2" +Scenario: list/field_assign_proto2 + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{list_value: [1.0, 'one']}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{list_value:{values:{number_value:1} values:{string_value:"one"}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[DoubleType(source=1), StringType(source='one')]) - - -Scenario: field_assign_proto2_empty - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{list_value: []}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{list_value:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=None) + Then value is TestAllTypes(list_value=[celpy.celtypes.DoubleType(source=1.0), celpy.celtypes.StringType(source='one')]) +Scenario: list/field_assign_proto2_empty -Scenario: field_read_proto2 + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{list_value: []}' is evaluated + Then value is TestAllTypes(list_value=[]) - Given container is "google.api.expr.test.v1.proto2" +Scenario: list/field_read_proto2 + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{list_value: [1.0, 'one']}.list_value" is evaluated - # list_value:{values:{double_value:1} values:{string_value:"one"}} - Then value is [DoubleType(source=1), StringType(source='one')] + Then value is [celpy.celtypes.DoubleType(source=1.0), celpy.celtypes.StringType(source='one')] +Scenario: list/field_read_proto2_empty -Scenario: field_read_proto2_empty - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{list_value: []}.list_value" is evaluated - # list_value:{} + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{list_value: []}.list_value' is evaluated Then value is [] - -Scenario: field_read_proto2_unset +Scenario: list/field_read_proto2_unset Not a wrapper type, so doesn't convert to null. - Given container is "google.api.expr.test.v1.proto2" - When CEL expression "TestAllTypes{}.list_value" is evaluated - # list_value:{} + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.list_value' is evaluated Then value is [] +Scenario: list/field_assign_proto3 -Scenario: field_assign_proto3 - - Given container is "google.api.expr.test.v1.proto3" - + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{list_value: [1.0, 'one']}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{list_value:{values:{number_value:1} values:{string_value:"one"}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[DoubleType(source=1), StringType(source='one')]) - - -Scenario: field_assign_proto3_empty + Then value is TestAllTypes(list_value=[celpy.celtypes.DoubleType(source=1.0), celpy.celtypes.StringType(source='one')]) - Given container is "google.api.expr.test.v1.proto3" +Scenario: list/field_assign_proto3_empty - When CEL expression "TestAllTypes{list_value: []}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{list_value:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=None) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{list_value: []}' is evaluated + Then value is TestAllTypes(list_value=[]) +Scenario: list/field_read_proto3 -Scenario: field_read_proto3 - - Given container is "google.api.expr.test.v1.proto3" - + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{list_value: [1.0, 'one']}.list_value" is evaluated - # list_value:{values:{double_value:1} values:{string_value:"one"}} - Then value is [DoubleType(source=1), StringType(source='one')] - - -Scenario: field_read_proto3_empty + Then value is [celpy.celtypes.DoubleType(source=1.0), celpy.celtypes.StringType(source='one')] - Given container is "google.api.expr.test.v1.proto3" +Scenario: list/field_read_proto3_empty - When CEL expression "TestAllTypes{list_value: []}.list_value" is evaluated - # list_value:{} + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{list_value: []}.list_value' is evaluated Then value is [] - -Scenario: field_read_proto3_unset +Scenario: list/field_read_proto3_unset Not a wrapper type, so doesn't convert to null. - Given container is "google.api.expr.test.v1.proto3" - When CEL expression "TestAllTypes{}.list_value" is evaluated - # list_value:{} + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.list_value' is evaluated Then value is [] - # struct -- Tests for struct conversion. -Scenario: literal - When CEL expression "google.protobuf.Struct{fields: {'uno': 1.0, 'dos': 2.0}}" is evaluated - # map_value:{entries:{key:{string_value:"uno"} value:{double_value:1}} entries:{key:{string_value:"dos"} value:{double_value:2}}} - Then value is MapType({StringType(source='uno'): DoubleType(source=1), StringType(source='dos'): DoubleType(source=2)}) +@wip +Scenario: struct/literal + When CEL expression "google.protobuf.Struct{fields: {'uno': 1.0, 'dos': 2.0}}" is evaluated + Then value is celpy.celtypes.MapType({'uno': celpy.celtypes.DoubleType(source=1.0), 'dos': celpy.celtypes.DoubleType(source=2.0)}) -Scenario: literal_no_field_access +@wip +Scenario: struct/literal_no_field_access + Given disable_check parameter is True When CEL expression "google.protobuf.Struct{fields: {'uno': 1.0, 'dos': 2.0}}.fields" is evaluated - # errors:{message:"no_matching_overload"} Then eval_error is 'no_matching_overload' +@wip +Scenario: struct/literal_empty -Scenario: literal_empty - - When CEL expression "google.protobuf.Struct{fields: {}}" is evaluated - # map_value:{} - Then value is MapType({}) - - -Scenario: var - - # type:{message_type:"google.protobuf.Struct"} - Given type_env parameter "x" is TypeType(value='google.protobuf.Struct') - - # object_value:{[type.googleapis.com/google.protobuf.Struct]:{fields:{key:"first" value:{string_value:"Abraham"}} fields:{key:"last" value:{string_value:"Lincoln"}}}} - Given bindings parameter "x" is {'first': StringType(source='Abraham'), 'last': StringType(source='Lincoln')} - - When CEL expression "x" is evaluated - # map_value:{entries:{key:{string_value:"first"} value:{string_value:"Abraham"}} entries:{key:{string_value:"last"} value:{string_value:"Lincoln"}}} - Then value is MapType({StringType(source='first'): StringType(source='Abraham'), StringType(source='last'): StringType(source='Lincoln')}) + When CEL expression 'google.protobuf.Struct{fields: {}}' is evaluated + Then value is celpy.celtypes.MapType({}) +Scenario: struct/var -Scenario: field_assign_proto2 + Given type_env parameter "x" is celpy.celtypes.MapType + and bindings parameter "x" is celpy.celtypes.MapType({'first': celpy.celtypes.StringType(source='Abraham'), 'last': celpy.celtypes.StringType(source='Lincoln')}) + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.MapType({'first': celpy.celtypes.StringType(source='Abraham'), 'last': celpy.celtypes.StringType(source='Lincoln')}) - Given container is "google.api.expr.test.v1.proto2" +Scenario: struct/field_assign_proto2 + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_struct: {'un': 1.0, 'deux': 2.0}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_struct:{fields:{key:"deux" value:{number_value:2}} fields:{key:"un" value:{number_value:1}}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({'deux': DoubleType(source=2), 'un': DoubleType(source=1)}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto2_empty - - Given container is "google.api.expr.test.v1.proto2" + Then value is TestAllTypes(single_struct=celpy.celtypes.MapType({'un': celpy.celtypes.DoubleType(source=1.0), 'deux': celpy.celtypes.DoubleType(source=2.0)})) - When CEL expression "TestAllTypes{single_struct: {}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_struct:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=None, single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: struct/field_assign_proto2_empty + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_struct: {}}' is evaluated + Then value is TestAllTypes(single_struct=celpy.celtypes.MapType({})) -Scenario: field_assign_proto2_bad - - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: struct/field_assign_proto2_bad + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_struct: {1: 'uno'}}" is evaluated - # errors:{message:"bad key type"} Then eval_error is 'bad key type' +Scenario: struct/field_read_proto2 -Scenario: field_read_proto2 - - Given container is "google.api.expr.test.v1.proto2" - + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_struct: {'one': 1.0}}.single_struct" is evaluated - # map_value:{entries:{key:{string_value:"one"} value:{double_value:1}}} - Then value is MapType({StringType(source='one'): DoubleType(source=1)}) - - -Scenario: field_read_proto2_empty - - Given container is "google.api.expr.test.v1.proto2" + Then value is celpy.celtypes.MapType({'one': celpy.celtypes.DoubleType(source=1.0)}) - When CEL expression "TestAllTypes{single_struct: {}}.single_struct" is evaluated - # map_value:{} - Then value is MapType({}) +Scenario: struct/field_read_proto2_empty + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_struct: {}}.single_struct' is evaluated + Then value is celpy.celtypes.MapType({}) -Scenario: field_read_proto2_unset +Scenario: struct/field_read_proto2_unset Not a wrapper type, so doesn't convert to null. - Given container is "google.api.expr.test.v1.proto2" - When CEL expression "TestAllTypes{}.single_struct" is evaluated - # map_value:{} - Then value is MapType({}) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_struct' is evaluated + Then value is celpy.celtypes.MapType({}) +Scenario: struct/field_assign_proto3 -Scenario: field_assign_proto3 - - Given container is "google.api.expr.test.v1.proto3" - + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_struct: {'un': 1.0, 'deux': 2.0}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_struct:{fields:{key:"deux" value:{number_value:2}} fields:{key:"un" value:{number_value:1}}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({'deux': DoubleType(source=2), 'un': DoubleType(source=1)}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto3_empty + Then value is TestAllTypes(single_struct=celpy.celtypes.MapType({'un': celpy.celtypes.DoubleType(source=1.0), 'deux': celpy.celtypes.DoubleType(source=2.0)})) - Given container is "google.api.expr.test.v1.proto3" +Scenario: struct/field_assign_proto3_empty - When CEL expression "TestAllTypes{single_struct: {}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_struct:{}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=None, single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_struct: {}}' is evaluated + Then value is TestAllTypes(single_struct=celpy.celtypes.MapType({})) +@wip +Scenario: struct/field_assign_proto3_bad -Scenario: field_assign_proto3_bad - - Given container is "google.api.expr.test.v1.proto3" - + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_struct: {1: 'uno'}}" is evaluated - # errors:{message:"bad key type"} Then eval_error is 'bad key type' +Scenario: struct/field_read_proto3 -Scenario: field_read_proto3 - - Given container is "google.api.expr.test.v1.proto3" - + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_struct: {'one': 1.0}}.single_struct" is evaluated - # map_value:{entries:{key:{string_value:"one"} value:{double_value:1}}} - Then value is MapType({StringType(source='one'): DoubleType(source=1)}) - + Then value is celpy.celtypes.MapType({'one': celpy.celtypes.DoubleType(source=1.0)}) -Scenario: field_read_proto3_empty +Scenario: struct/field_read_proto3_empty - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_struct: {}}.single_struct' is evaluated + Then value is celpy.celtypes.MapType({}) - When CEL expression "TestAllTypes{single_struct: {}}.single_struct" is evaluated - # map_value:{} - Then value is MapType({}) - - -Scenario: field_read_proto3_unset +Scenario: struct/field_read_proto3_unset Not a wrapper type, so doesn't convert to null. - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{}.single_struct" is evaluated - # map_value:{} - Then value is MapType({}) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_struct' is evaluated + Then value is celpy.celtypes.MapType({}) # value_null -- Tests for null conversions. -Scenario: literal - Given container is "google.protobuf" +@wip +Scenario: value_null/literal - When CEL expression "Value{null_value: NullValue.NULL_VALUE}" is evaluated - # null_value:NULL_VALUE + Given container is 'google.protobuf' + When CEL expression 'Value{null_value: NullValue.NULL_VALUE}' is evaluated Then value is None +Scenario: value_null/literal_no_field_access -Scenario: literal_no_field_access - - Given container is "google.protobuf" - - When CEL expression "Value{null_value: NullValue.NULL_VALUE}.null_value" is evaluated - # errors:{message:"no_matching_overload"} + Given disable_check parameter is True + and container is 'google.protobuf' + When CEL expression 'Value{null_value: NullValue.NULL_VALUE}.null_value' is evaluated Then eval_error is 'no_matching_overload' +@wip +Scenario: value_null/literal_unset -Scenario: literal_unset - - When CEL expression "google.protobuf.Value{}" is evaluated - # null_value:NULL_VALUE + When CEL expression 'google.protobuf.Value{}' is evaluated Then value is None +Scenario: value_null/var -Scenario: var - - # type:{message_type:"google.protobuf.Value"} - Given type_env parameter "x" is TypeType(value='google.protobuf.Value') - - # object_value:{[type.googleapis.com/google.protobuf.Value]:{null_value:NULL_VALUE}} - Given bindings parameter "x" is None - - When CEL expression "x" is evaluated - # null_value:NULL_VALUE + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is None + When CEL expression 'x' is evaluated Then value is None +Scenario: value_null/field_assign_proto2 -Scenario: field_assign_proto2 - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_value: null}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{null_value:NULL_VALUE}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: null}' is evaluated + Then value is TestAllTypes(single_value=None) -Scenario: field_read_proto2 +Scenario: value_null/field_read_proto2 - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_value: null}.single_value" is evaluated - # null_value:NULL_VALUE + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: null}.single_value' is evaluated Then value is None +@wip +Scenario: value_null/field_read_proto2_unset -Scenario: field_read_proto2_unset - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{}.single_value" is evaluated - # null_value:NULL_VALUE + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_value' is evaluated Then value is None +Scenario: value_null/field_assign_proto3 -Scenario: field_assign_proto3 - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_value: null}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{null_value:NULL_VALUE}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: null}' is evaluated + Then value is TestAllTypes(single_value=None) -Scenario: field_read_proto3 +Scenario: value_null/field_read_proto3 - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_value: null}.single_value" is evaluated - # null_value:NULL_VALUE + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: null}.single_value' is evaluated Then value is None +@wip +Scenario: value_null/field_read_proto3_unset -Scenario: field_read_proto3_unset - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{}.single_value" is evaluated - # null_value:NULL_VALUE + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_value' is evaluated Then value is None - # value_number -- Tests for number conversions in Value. -Scenario: literal - When CEL expression "google.protobuf.Value{number_value: 12.5}" is evaluated - # double_value:12.5 - Then value is DoubleType(source=12.5) +@wip +Scenario: value_number/literal + When CEL expression 'google.protobuf.Value{number_value: 12.5}' is evaluated + Then value is celpy.celtypes.DoubleType(source=12.5) -Scenario: literal_no_field_access +Scenario: value_number/literal_no_field_access - When CEL expression "google.protobuf.Value{number_value: 12.5}.number_value" is evaluated - # errors:{message:"no_matching_overload"} + Given disable_check parameter is True + When CEL expression 'google.protobuf.Value{number_value: 12.5}.number_value' is evaluated Then eval_error is 'no_matching_overload' +@wip +Scenario: value_number/literal_zero -Scenario: literal_zero - - When CEL expression "google.protobuf.Value{number_value: 0.0}" is evaluated - # double_value:0 - Then value is DoubleType(source=0) - - -Scenario: var - - # type:{message_type:"google.protobuf.Value"} - Given type_env parameter "x" is TypeType(value='google.protobuf.Value') - - # object_value:{[type.googleapis.com/google.protobuf.Value]:{number_value:-26.375}} - Given bindings parameter "x" is DoubleType(source=-26.375) - - When CEL expression "x" is evaluated - # double_value:-26.375 - Then value is DoubleType(source=-26.375) - - -Scenario: field_assign_proto2 - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_value: 7e23}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{number_value:7e+23}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=DoubleType(source=7e+23), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto2_zero - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_value: 0.0}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{number_value:0}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=DoubleType(source=0), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_read_proto2 - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_value: 7e23}.single_value" is evaluated - # double_value:7e+23 - Then value is DoubleType(source=7e+23) - - -Scenario: field_read_proto2_zero - - Given container is "google.api.expr.test.v1.proto2" + When CEL expression 'google.protobuf.Value{number_value: 0.0}' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) - When CEL expression "TestAllTypes{single_value: 0.0}.single_value" is evaluated - # double_value:0 - Then value is DoubleType(source=0) +Scenario: value_number/var + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is celpy.celtypes.DoubleType(source=-26.375) + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.DoubleType(source=-26.375) -Scenario: field_assign_proto3 +Scenario: value_number/field_assign_proto2 - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: 7e23}' is evaluated + Then value is TestAllTypes(single_value=celpy.celtypes.DoubleType(source=7e+23)) - When CEL expression "TestAllTypes{single_value: 7e23}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{number_value:7e+23}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=DoubleType(source=7e+23), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: value_number/field_assign_proto2_zero + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: 0.0}' is evaluated + Then value is TestAllTypes(single_value=celpy.celtypes.DoubleType(source=0.0)) -Scenario: field_assign_proto3_zero +Scenario: value_number/field_read_proto2 - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: 7e23}.single_value' is evaluated + Then value is celpy.celtypes.DoubleType(source=7e+23) - When CEL expression "TestAllTypes{single_value: 0.0}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{number_value:0}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=DoubleType(source=0), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: value_number/field_read_proto2_zero + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: 0.0}.single_value' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) -Scenario: field_read_proto3 +Scenario: value_number/field_assign_proto3 - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: 7e23}' is evaluated + Then value is TestAllTypes(single_value=celpy.celtypes.DoubleType(source=7e+23)) - When CEL expression "TestAllTypes{single_value: 7e23}.single_value" is evaluated - # double_value:7e+23 - Then value is DoubleType(source=7e+23) +Scenario: value_number/field_assign_proto3_zero + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: 0.0}' is evaluated + Then value is TestAllTypes(single_value=celpy.celtypes.DoubleType(source=0.0)) -Scenario: field_read_proto3_zero +Scenario: value_number/field_read_proto3 - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: 7e23}.single_value' is evaluated + Then value is celpy.celtypes.DoubleType(source=7e+23) - When CEL expression "TestAllTypes{single_value: 0.0}.single_value" is evaluated - # double_value:0 - Then value is DoubleType(source=0) +Scenario: value_number/field_read_proto3_zero + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: 0.0}.single_value' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) # value_string -- Tests for string conversions in Value. -Scenario: literal - When CEL expression "google.protobuf.Value{string_value: 'foo'}" is evaluated - # string_value:"foo" - Then value is StringType(source='foo') +@wip +Scenario: value_string/literal + When CEL expression "google.protobuf.Value{string_value: 'foo'}" is evaluated + Then value is celpy.celtypes.StringType(source='foo') -Scenario: literal_no_field_access +Scenario: value_string/literal_no_field_access + Given disable_check parameter is True When CEL expression "google.protobuf.Value{string_value: 'foo'}.string_value" is evaluated - # errors:{message:"no_matching_overload"} Then eval_error is 'no_matching_overload' - -Scenario: literal_empty +@wip +Scenario: value_string/literal_empty When CEL expression "google.protobuf.Value{string_value: ''}" is evaluated - # string_value:"" - Then value is StringType(source='') - - -Scenario: var + Then value is celpy.celtypes.StringType(source='') - # type:{message_type:"google.protobuf.Value"} - Given type_env parameter "x" is TypeType(value='google.protobuf.Value') +Scenario: value_string/var - # object_value:{[type.googleapis.com/google.protobuf.Value]:{string_value:"bar"}} - Given bindings parameter "x" is StringType(source='bar') + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is celpy.celtypes.StringType(source='bar') + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.StringType(source='bar') - When CEL expression "x" is evaluated - # string_value:"bar" - Then value is StringType(source='bar') - - -Scenario: field_assign_proto2 - - Given container is "google.api.expr.test.v1.proto2" +Scenario: value_string/field_assign_proto2 + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_value: 'baz'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{string_value:"baz"}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=StringType(source='baz'), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - + Then value is TestAllTypes(single_value=celpy.celtypes.StringType(source='baz')) -Scenario: field_assign_proto2_empty - - Given container is "google.api.expr.test.v1.proto2" +Scenario: value_string/field_assign_proto2_empty + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_value: ''}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{string_value:""}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=StringType(source=''), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_read_proto2 + Then value is TestAllTypes(single_value=celpy.celtypes.StringType(source='')) - Given container is "google.api.expr.test.v1.proto2" +Scenario: value_string/field_read_proto2 + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_value: 'bletch'}.single_value" is evaluated - # string_value:"bletch" - Then value is StringType(source='bletch') + Then value is celpy.celtypes.StringType(source='bletch') +Scenario: value_string/field_read_proto2_zero -Scenario: field_read_proto2_zero - - Given container is "google.api.expr.test.v1.proto2" - + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_value: ''}.single_value" is evaluated - # string_value:"" - Then value is StringType(source='') - - -Scenario: field_assign_proto3 + Then value is celpy.celtypes.StringType(source='') - Given container is "google.api.expr.test.v1.proto3" +Scenario: value_string/field_assign_proto3 + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_value: 'baz'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{string_value:"baz"}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=StringType(source='baz'), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Then value is TestAllTypes(single_value=celpy.celtypes.StringType(source='baz')) +Scenario: value_string/field_assign_proto3_empty -Scenario: field_assign_proto3_empty - - Given container is "google.api.expr.test.v1.proto3" - + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_value: ''}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{string_value:""}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=StringType(source=''), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - + Then value is TestAllTypes(single_value=celpy.celtypes.StringType(source='')) -Scenario: field_read_proto3 - - Given container is "google.api.expr.test.v1.proto3" +Scenario: value_string/field_read_proto3 + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_value: 'bletch'}.single_value" is evaluated - # string_value:"bletch" - Then value is StringType(source='bletch') - + Then value is celpy.celtypes.StringType(source='bletch') -Scenario: field_read_proto3_zero - - Given container is "google.api.expr.test.v1.proto3" +Scenario: value_string/field_read_proto3_zero + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_value: ''}.single_value" is evaluated - # string_value:"" - Then value is StringType(source='') - + Then value is celpy.celtypes.StringType(source='') # value_bool -- Tests for boolean conversions in Value. -Scenario: literal - When CEL expression "google.protobuf.Value{bool_value: true}" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: value_bool/literal + When CEL expression 'google.protobuf.Value{bool_value: true}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: literal_no_field_access +Scenario: value_bool/literal_no_field_access - When CEL expression "google.protobuf.Value{bool_value: true}.bool_value" is evaluated - # errors:{message:"no_matching_overload"} + Given disable_check parameter is True + When CEL expression 'google.protobuf.Value{bool_value: true}.bool_value' is evaluated Then eval_error is 'no_matching_overload' +@wip +Scenario: value_bool/literal_false -Scenario: literal_false - - When CEL expression "google.protobuf.Value{bool_value: false}" is evaluated - # bool_value:false - Then value is BoolType(source=False) - - -Scenario: var - - # type:{message_type:"google.protobuf.Value"} - Given type_env parameter "x" is TypeType(value='google.protobuf.Value') - - # object_value:{[type.googleapis.com/google.protobuf.Value]:{bool_value:true}} - Given bindings parameter "x" is BoolType(source=True) - - When CEL expression "x" is evaluated - # bool_value:true - Then value is BoolType(source=True) - - -Scenario: field_assign_proto2 - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_value: true}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{bool_value:true}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=BoolType(source=True), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto2_false - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_value: false}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{bool_value:false}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=BoolType(source=False), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_read_proto2 - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_value: true}.single_value" is evaluated - # bool_value:true - Then value is BoolType(source=True) - - -Scenario: field_read_proto2_false - - Given container is "google.api.expr.test.v1.proto2" + When CEL expression 'google.protobuf.Value{bool_value: false}' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "TestAllTypes{single_value: false}.single_value" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: value_bool/var + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is celpy.celtypes.BoolType(source=True) + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: field_assign_proto3 +Scenario: value_bool/field_assign_proto2 - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: true}' is evaluated + Then value is TestAllTypes(single_value=celpy.celtypes.BoolType(source=True)) - When CEL expression "TestAllTypes{single_value: true}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{bool_value:true}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=BoolType(source=True), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: value_bool/field_assign_proto2_false + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: false}' is evaluated + Then value is TestAllTypes(single_value=celpy.celtypes.BoolType(source=False)) -Scenario: field_assign_proto3_false +Scenario: value_bool/field_read_proto2 - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: true}.single_value' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "TestAllTypes{single_value: false}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{bool_value:false}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=BoolType(source=False), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: value_bool/field_read_proto2_false + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: false}.single_value' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: field_read_proto3 +Scenario: value_bool/field_assign_proto3 - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: true}' is evaluated + Then value is TestAllTypes(single_value=celpy.celtypes.BoolType(source=True)) - When CEL expression "TestAllTypes{single_value: true}.single_value" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: value_bool/field_assign_proto3_false + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: false}' is evaluated + Then value is TestAllTypes(single_value=celpy.celtypes.BoolType(source=False)) -Scenario: field_read_proto3_false +Scenario: value_bool/field_read_proto3 - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: true}.single_value' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "TestAllTypes{single_value: false}.single_value" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: value_bool/field_read_proto3_false + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: false}.single_value' is evaluated + Then value is celpy.celtypes.BoolType(source=False) # value_struct -- Tests for struct conversions in Value. -Scenario: literal - When CEL expression "google.protobuf.Value{struct_value: {'a': 1.0, 'b': 'two'}}" is evaluated - # map_value:{entries:{key:{string_value:"a"} value:{double_value:1}} entries:{key:{string_value:"b"} value:{string_value:"two"}}} - Then value is MapType({StringType(source='a'): DoubleType(source=1), StringType(source='b'): StringType(source='two')}) +@wip +Scenario: value_struct/literal + When CEL expression "google.protobuf.Value{struct_value: {'a': 1.0, 'b': 'two'}}" is evaluated + Then value is celpy.celtypes.MapType({'a': celpy.celtypes.DoubleType(source=1.0), 'b': celpy.celtypes.StringType(source='two')}) -Scenario: literal_no_field_access +Scenario: value_struct/literal_no_field_access + Given disable_check parameter is True When CEL expression "google.protobuf.Value{struct_value: {'a': 1.0, 'b': 'two'}}.struct_value" is evaluated - # errors:{message:"no_matching_overload"} Then eval_error is 'no_matching_overload' +@wip +Scenario: value_struct/literal_empty -Scenario: literal_empty - - When CEL expression "google.protobuf.Value{struct_value: {}}" is evaluated - # map_value:{} - Then value is MapType({}) - - -Scenario: var - - # type:{message_type:"google.protobuf.Value"} - Given type_env parameter "x" is TypeType(value='google.protobuf.Value') - - # object_value:{[type.googleapis.com/google.protobuf.Value]:{struct_value:{fields:{key:"x" value:{null_value:NULL_VALUE}} fields:{key:"y" value:{bool_value:false}}}}} - Given bindings parameter "x" is {'x': None, 'y': BoolType(source=False)} - - When CEL expression "x" is evaluated - # map_value:{entries:{key:{string_value:"x"} value:{null_value:NULL_VALUE}} entries:{key:{string_value:"y"} value:{bool_value:false}}} - Then value is MapType({StringType(source='x'): None, StringType(source='y'): BoolType(source=False)}) + When CEL expression 'google.protobuf.Value{struct_value: {}}' is evaluated + Then value is celpy.celtypes.MapType({}) +Scenario: value_struct/var -Scenario: field_assign_proto2 + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is celpy.celtypes.MapType({'y': celpy.celtypes.BoolType(source=False), 'x': None}) + When CEL expression 'x' is evaluated + Then value is celpy.celtypes.MapType({'x': None, 'y': celpy.celtypes.BoolType(source=False)}) - Given container is "google.api.expr.test.v1.proto2" +Scenario: value_struct/field_assign_proto2 + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_value: {'un': 1.0, 'deux': 2.0}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{struct_value:{fields:{key:"deux" value:{number_value:2}} fields:{key:"un" value:{number_value:1}}}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value={'deux': DoubleType(source=2), 'un': DoubleType(source=1)}, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto2_empty + Then value is TestAllTypes(single_value=celpy.celtypes.MapType({'un': celpy.celtypes.DoubleType(source=1.0), 'deux': celpy.celtypes.DoubleType(source=2.0)})) - Given container is "google.api.expr.test.v1.proto2" +Scenario: value_struct/field_assign_proto2_empty - When CEL expression "TestAllTypes{single_value: {}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{struct_value:{}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value={}, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: {}}' is evaluated + Then value is TestAllTypes(single_value=celpy.celtypes.MapType({})) +Scenario: value_struct/field_read_proto2 -Scenario: field_read_proto2 - - Given container is "google.api.expr.test.v1.proto2" - + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_value: {'i': true}}.single_value" is evaluated - # map_value:{entries:{key:{string_value:"i"} value:{bool_value:true}}} - Then value is MapType({StringType(source='i'): BoolType(source=True)}) - - -Scenario: field_read_proto2_empty + Then value is celpy.celtypes.MapType({'i': celpy.celtypes.BoolType(source=True)}) - Given container is "google.api.expr.test.v1.proto2" +Scenario: value_struct/field_read_proto2_empty - When CEL expression "TestAllTypes{single_value: {}}.single_value" is evaluated - # map_value:{} - Then value is MapType({}) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: {}}.single_value' is evaluated + Then value is celpy.celtypes.MapType({}) +Scenario: value_struct/field_assign_proto3 -Scenario: field_assign_proto3 - - Given container is "google.api.expr.test.v1.proto3" - + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_value: {'un': 1.0, 'deux': 2.0}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{struct_value:{fields:{key:"deux" value:{number_value:2}} fields:{key:"un" value:{number_value:1}}}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value={'deux': DoubleType(source=2), 'un': DoubleType(source=1)}, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - + Then value is TestAllTypes(single_value=celpy.celtypes.MapType({'un': celpy.celtypes.DoubleType(source=1.0), 'deux': celpy.celtypes.DoubleType(source=2.0)})) -Scenario: field_assign_proto3_empty +Scenario: value_struct/field_assign_proto3_empty - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: {}}' is evaluated + Then value is TestAllTypes(single_value=celpy.celtypes.MapType({})) - When CEL expression "TestAllTypes{single_value: {}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{struct_value:{}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value={}, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_read_proto3 - - Given container is "google.api.expr.test.v1.proto3" +Scenario: value_struct/field_read_proto3 + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_value: {'i': true}}.single_value" is evaluated - # map_value:{entries:{key:{string_value:"i"} value:{bool_value:true}}} - Then value is MapType({StringType(source='i'): BoolType(source=True)}) - + Then value is celpy.celtypes.MapType({'i': celpy.celtypes.BoolType(source=True)}) -Scenario: field_read_proto3_empty - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_value: {}}.single_value" is evaluated - # map_value:{} - Then value is MapType({}) +Scenario: value_struct/field_read_proto3_empty + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: {}}.single_value' is evaluated + Then value is celpy.celtypes.MapType({}) # value_list -- Tests for list conversions in Value. -Scenario: literal - When CEL expression "google.protobuf.Value{list_value: ['a', 3.0]}" is evaluated - # list_value:{values:{string_value:"a"} values:{double_value:3}} - Then value is [StringType(source='a'), DoubleType(source=3)] +@wip +Scenario: value_list/literal + When CEL expression "google.protobuf.Value{list_value: ['a', 3.0]}" is evaluated + Then value is [celpy.celtypes.StringType(source='a'), celpy.celtypes.DoubleType(source=3.0)] -Scenario: literal_no_field_access +Scenario: value_list/literal_no_field_access - When CEL expression "google.protobuf.Value{list_value: []}.list_value" is evaluated - # errors:{message:"no_matching_overload"} + Given disable_check parameter is True + When CEL expression 'google.protobuf.Value{list_value: []}.list_value' is evaluated Then eval_error is 'no_matching_overload' +@wip +Scenario: value_list/literal_empty -Scenario: literal_empty - - When CEL expression "google.protobuf.Value{list_value: []}" is evaluated - # list_value:{} + When CEL expression 'google.protobuf.Value{list_value: []}' is evaluated Then value is [] +Scenario: value_list/var -Scenario: var - - # type:{message_type:"google.protobuf.Value"} - Given type_env parameter "x" is TypeType(value='google.protobuf.Value') - - # object_value:{[type.googleapis.com/google.protobuf.Value]:{list_value:{values:{number_value:1} values:{bool_value:true} values:{string_value:"hi"}}}} - Given bindings parameter "x" is [DoubleType(source=1), BoolType(source=True), StringType(source='hi')] - - When CEL expression "x" is evaluated - # list_value:{values:{double_value:1} values:{bool_value:true} values:{string_value:"hi"}} - Then value is [DoubleType(source=1), BoolType(source=True), StringType(source='hi')] + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is [celpy.celtypes.DoubleType(source=1.0), celpy.celtypes.BoolType(source=True), celpy.celtypes.StringType(source='hi')] + When CEL expression 'x' is evaluated + Then value is [celpy.celtypes.DoubleType(source=1.0), celpy.celtypes.BoolType(source=True), celpy.celtypes.StringType(source='hi')] +Scenario: value_list/field_assign_proto2 -Scenario: field_assign_proto2 - - Given container is "google.api.expr.test.v1.proto2" - + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_value: ['un', 1.0]}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{list_value:{values:{string_value:"un"} values:{number_value:1}}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=[StringType(source='un'), DoubleType(source=1)], single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto2_empty - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_value: []}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{list_value:{}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=[], single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Then value is TestAllTypes(single_value=[celpy.celtypes.StringType(source='un'), celpy.celtypes.DoubleType(source=1.0)]) +Scenario: value_list/field_assign_proto2_empty -Scenario: field_read_proto2 + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: []}' is evaluated + Then value is TestAllTypes(single_value=[]) - Given container is "google.api.expr.test.v1.proto2" +Scenario: value_list/field_read_proto2 + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_value: ['i', true]}.single_value" is evaluated - # list_value:{values:{string_value:"i"} values:{bool_value:true}} - Then value is [StringType(source='i'), BoolType(source=True)] + Then value is [celpy.celtypes.StringType(source='i'), celpy.celtypes.BoolType(source=True)] +Scenario: value_list/field_read_proto2_empty -Scenario: field_read_proto2_empty - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_value: []}.single_value" is evaluated - # list_value:{} + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: []}.single_value' is evaluated Then value is [] +Scenario: value_list/field_assign_proto3 -Scenario: field_assign_proto3 - - Given container is "google.api.expr.test.v1.proto3" - + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_value: ['un', 1.0]}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{list_value:{values:{string_value:"un"} values:{number_value:1}}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=[StringType(source='un'), DoubleType(source=1)], single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto3_empty - - Given container is "google.api.expr.test.v1.proto3" + Then value is TestAllTypes(single_value=[celpy.celtypes.StringType(source='un'), celpy.celtypes.DoubleType(source=1.0)]) - When CEL expression "TestAllTypes{single_value: []}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{list_value:{}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=[], single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: value_list/field_assign_proto3_empty + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: []}' is evaluated + Then value is TestAllTypes(single_value=[]) -Scenario: field_read_proto3 - - Given container is "google.api.expr.test.v1.proto3" +Scenario: value_list/field_read_proto3 + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_value: ['i', true]}.single_value" is evaluated - # list_value:{values:{string_value:"i"} values:{bool_value:true}} - Then value is [StringType(source='i'), BoolType(source=True)] - - -Scenario: field_read_proto3_empty + Then value is [celpy.celtypes.StringType(source='i'), celpy.celtypes.BoolType(source=True)] - Given container is "google.api.expr.test.v1.proto3" +Scenario: value_list/field_read_proto3_empty - When CEL expression "TestAllTypes{single_value: []}.single_value" is evaluated - # list_value:{} + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: []}.single_value' is evaluated Then value is [] - # any -- Tests for Any conversion. -Scenario: literal - When CEL expression "google.protobuf.Any{type_url: 'type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes', value: b'\x08\x96\x01'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:150}} - Then value is TestAllTypes(single_int32=150, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +@wip +Scenario: any/literal + When CEL expression "google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\x08\\x96\\x01'}" is evaluated + Then value is TestAllTypes(single_int32=150) -Scenario: literal_no_field_access +Scenario: any/literal_no_field_access - When CEL expression "google.protobuf.Any{type_url: 'type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes', value: b'\x08\x96\x01'}.type_url" is evaluated - # errors:{message:"no_matching_overload"} + Given disable_check parameter is True + When CEL expression "google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\x08\\x96\\x01'}.type_url" is evaluated Then eval_error is 'no_matching_overload' +Scenario: any/literal_empty -Scenario: literal_empty - - When CEL expression "google.protobuf.Any{}" is evaluated - # errors:{message:"conversion"} + When CEL expression 'google.protobuf.Any{}' is evaluated Then eval_error is 'conversion' +Scenario: any/var -Scenario: var + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is TestAllTypes(single_int32=150) + When CEL expression 'x' is evaluated + Then value is TestAllTypes(single_int32=150) - # type:{message_type:"google.protubuf.Any"} - Given type_env parameter "x" is TypeType(value='google.protubuf.Any') +Scenario: any/field_assign_proto2 - # object_value:{[type.googleapis.com/google.protobuf.Any]:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:150}}} - Given bindings parameter "x" is TestAllTypes(single_int32=150, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_any: TestAllTypes{single_int32: 150}}' is evaluated + Then value is TestAllTypes(single_any=TestAllTypes(single_int32=150)) - When CEL expression "x" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:150}} - Then value is TestAllTypes(single_int32=150, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: any/field_read_proto2 + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_any: TestAllTypes{single_int32: 150}}.single_any' is evaluated + Then value is TestAllTypes(single_int32=150) -Scenario: field_assign_proto2 +Scenario: any/field_assign_proto3 - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: TestAllTypes{single_int32: 150}}' is evaluated + Then value is TestAllTypes(single_any=TestAllTypes(single_int32=150)) - When CEL expression "TestAllTypes{single_any: TestAllTypes{single_int32: 150}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_any:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:150}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=TestAllTypes(single_int32=150, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]), single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_read_proto2 - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_any: TestAllTypes{single_int32: 150}}.single_any" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:150}} - Then value is TestAllTypes(single_int32=150, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_assign_proto3 - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_any: TestAllTypes{single_int32: 150}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_any:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32:150}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=TestAllTypes(single_int32=150, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]), single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: field_read_proto3 - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_any: TestAllTypes{single_int32: 150}}.single_any" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32:150}} - Then value is TestAllTypes(single_int32=150, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: any/field_read_proto3 + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: TestAllTypes{single_int32: 150}}.single_any' is evaluated + Then value is TestAllTypes(single_int32=150) # complex -- Tests combining various dynamic conversions. -Scenario: any_list_map - Given container is "google.api.expr.test.v1.proto3" +Scenario: complex/any_list_map + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_any: [{'almost': 'done'}]}.single_any" is evaluated - # list_value:{values:{map_value:{entries:{key:{string_value:"almost"} value:{string_value:"done"}}}}} - Then value is [MapType({StringType(source='almost'): StringType(source='done')})] + Then value is [celpy.celtypes.MapType({'almost': celpy.celtypes.StringType(source='done')})] + diff --git a/features/dynamic.textproto b/features/dynamic.textproto index 83bdd27..d0e63a9 100644 --- a/features/dynamic.textproto +++ b/features/dynamic.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + name: "dynamic" description: "Tests for 'dynamic' proto behavior, including JSON, wrapper, and Any messages." section { @@ -39,29 +42,51 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_int32_wrapper: 432}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32_wrapper { value: 432 } } } } } test { name: "field_assign_proto2_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_int32_wrapper: 0}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32_wrapper { } } } } } + test { + name: "field_assign_proto2_max" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_int32_wrapper: 2147483647}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] + { single_int32_wrapper { value: 2147483647 } } + } + } + } + test { + name: "field_assign_proto2_min" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_int32_wrapper: -2147483648}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] + { single_int32_wrapper { value: -2147483648 } } + } + } + } test { name: "field_assign_proto2_range" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_int32_wrapper: 12345678900}" eval_error { errors { message: "range error" } @@ -69,47 +94,69 @@ section { } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_int32_wrapper: 642}.single_int32_wrapper" value { int64_value: 642 } } test { name: "field_read_proto2_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_int32_wrapper: 0}.single_int32_wrapper" value { int64_value: 0 } } test { name: "field_read_proto2_unset" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.single_int32_wrapper" value { null_value: NULL_VALUE } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_int32_wrapper: -975}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int32_wrapper { value: -975 } } } } } test { name: "field_assign_proto3_zero" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_int32_wrapper: 0}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int32_wrapper { } } } } } + test { + name: "field_assign_proto3_max" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_int32_wrapper: 2147483647}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] + { single_int32_wrapper { value: 2147483647 } } + } + } + } + test { + name: "field_assign_proto3_min" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_int32_wrapper: -2147483648}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] + { single_int32_wrapper { value: -2147483648 } } + } + } + } test { name: "field_assign_proto3_range" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_int32_wrapper: -998877665544332211}" eval_error { errors { message: "range error" } @@ -117,19 +164,19 @@ section { } test { name: "field_read_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_int32_wrapper: 642}.single_int32_wrapper" value { int64_value: 642 } } test { name: "field_read_proto3_zero" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_int32_wrapper: 0}.single_int32_wrapper" value { int64_value: 0 } } test { name: "field_read_proto3_unset" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.single_int32_wrapper" value { null_value: NULL_VALUE } } @@ -173,44 +220,44 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_int64_wrapper: 432}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int64_wrapper { value: 432 } } } } } test { name: "field_assign_proto2_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_int64_wrapper: 0}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int64_wrapper { } } } } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_int64_wrapper: -975}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int64_wrapper { value: -975 } } } } } test { name: "field_assign_proto3_zero" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_int64_wrapper: 0}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int64_wrapper { } } } } @@ -255,29 +302,40 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_uint32_wrapper: 432u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_uint32_wrapper { value: 432 } } } } } test { name: "field_assign_proto2_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_uint32_wrapper: 0u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_uint32_wrapper { } } } } } + test { + name: "field_assign_proto2_max" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_uint32_wrapper: 4294967295u}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] + { single_uint32_wrapper { value: 4294967295} } + } + } + } test { name: "field_assign_proto2_range" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_uint32_wrapper: 6111222333u}" eval_error { errors { message: "range error" } @@ -285,29 +343,40 @@ section { } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_uint32_wrapper: 975u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_uint32_wrapper { value: 975 } } } } } test { name: "field_assign_proto3_zero" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_uint32_wrapper: 0u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_uint32_wrapper { } } } } } + test { + name: "field_assign_proto3_max" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_uint32_wrapper: 4294967295u}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] + { single_uint32_wrapper { value: 4294967295 } } + } + } + } test { name: "field_assign_proto3_range" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_uint32_wrapper: 6111222333u}" eval_error { errors { message: "range error" } @@ -315,19 +384,19 @@ section { } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_uint32_wrapper: 258u}.single_uint32_wrapper" value { uint64_value: 258 } } test { name: "field_read_proto2_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_uint32_wrapper: 0u}.single_uint32_wrapper" value { uint64_value: 0 } } test { name: "field_read_proto2_unset" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.single_uint32_wrapper" value { null_value: NULL_VALUE } } @@ -371,63 +440,63 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_uint64_wrapper: 432u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_uint64_wrapper { value: 432 } } } } } test { name: "field_assign_proto2_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_uint64_wrapper: 0u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_uint64_wrapper { } } } } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_uint64_wrapper: 975u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_uint64_wrapper { value: 975 } } } } } test { name: "field_assign_proto3_zero" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_uint64_wrapper: 0u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_uint64_wrapper { } } } } } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_uint64_wrapper: 5123123123u}.single_uint64_wrapper" value { uint64_value: 5123123123 } } test { name: "field_read_proto2_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_uint64_wrapper: 0u}.single_uint64_wrapper" value { uint64_value: 0 } } test { name: "field_read_proto2_unset" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.single_uint64_wrapper" value { null_value: NULL_VALUE } } @@ -477,97 +546,152 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_float_wrapper: 86.75}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_float_wrapper { value: 86.75 } } } } } test { name: "field_assign_proto2_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_float_wrapper: 0.0}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] + { single_float_wrapper { } } + } + } + } + test { + name: "field_assign_proto2_subnorm" + description: "Subnormal single floats range from ~1e-38 to ~1e-45." + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_float_wrapper: 1e-40}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] + { single_float_wrapper { value: 1e-40 } } + } + } + } + test { + name: "field_assign_proto2_round_to_zero" + description: "Subnormal single floats range from ~1e-38 to ~1e-45." + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_float_wrapper: 1e-50}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_float_wrapper { } } } } } test { name: "field_assign_proto2_range" - container: "google.api.expr.test.v1.proto2" + description: "Single float max is about 3.4e38" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_float_wrapper: 1.4e55}" - eval_error { - errors { message: "range error" } + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] + { single_float_wrapper { value: inf } } + } } } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_float_wrapper: -12.375}.single_float_wrapper" value { double_value: -12.375 } } test { name: "field_read_proto2_zero" - container: "google.api.expr.test.v1.proto2" - expr: "TestAllTypes{single_int32_wrapper: 0}.single_int32_wrapper" - value { int64_value: 0 } + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_float_wrapper: 0.0}.single_float_wrapper" + value { double_value: 0.0 } } test { name: "field_read_proto2_unset" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.single_float_wrapper" value { null_value: NULL_VALUE } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_float_wrapper: -9.75}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_float_wrapper { value: -9.75 } } } } } test { name: "field_assign_proto3_zero" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_float_wrapper: 0.0}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_float_wrapper { } } } } } test { - name: "field_assign_proto3_range" - container: "google.api.expr.test.v1.proto3" + name: "field_assign_proto2_subnorm" + description: "Subnormal single floats range from ~1e-38 to ~1e-45." + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_float_wrapper: 1e-40}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] + { single_float_wrapper { value: 1e-40 } } + } + } + } + test { + name: "field_assign_proto3_round_to_zero" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_float_wrapper: -9.9e-100}" - eval_error { - errors { message: "range error" } + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] + { single_float_wrapper { value: -0 } } + } + } + } + test { + name: "field_assign_proto3_range" + description: "Single float min is about -3.4e38" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_float_wrapper: -9.9e100}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] + { single_float_wrapper { value: -inf } } + } } } test { name: "field_read_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_float_wrapper: 64.25}.single_float_wrapper" value { double_value: 64.25 } } test { name: "field_read_proto3_zero" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_float_wrapper: 0.0}.single_float_wrapper" value { double_value: 0.0 } } test { name: "field_read_proto3_unset" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.single_float_wrapper" value { null_value: NULL_VALUE } } @@ -611,103 +735,103 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_double_wrapper: 86.75}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_double_wrapper { value: 86.75 } } } } } test { name: "field_assign_proto2_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_double_wrapper: 0.0}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_double_wrapper { } } } } } test { name: "field_assign_proto2_range" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_double_wrapper: 1.4e55}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_double_wrapper { value: 1.4e55 } } } } } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_double_wrapper: -12.375}.single_double_wrapper" value { double_value: -12.375 } } test { name: "field_read_proto2_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_int32_wrapper: 0}.single_int32_wrapper" value { int64_value: 0 } } test { name: "field_read_proto2_unset" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.single_double_wrapper" value { null_value: NULL_VALUE } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_double_wrapper: -9.75}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_double_wrapper { value: -9.75 } } } } } test { name: "field_assign_proto3_zero" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_double_wrapper: 0.0}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_double_wrapper { } } } } } test { name: "field_assign_proto3_range" - container: "google.api.expr.test.v1.proto3" - expr: "TestAllTypes{single_double_wrapper: -9.9e-100}" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_double_wrapper: -9.9e100}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_double_wrapper { value: -9.9e-100 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] + { single_double_wrapper { value: -9.9e100 } } } } } test { name: "field_read_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_double_wrapper: 64.25}.single_double_wrapper" value { double_value: 64.25 } } test { name: "field_read_proto3_zero" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_double_wrapper: 0.0}.single_double_wrapper" value { double_value: 0.0 } } test { name: "field_read_proto3_unset" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.single_double_wrapper" value { null_value: NULL_VALUE } } @@ -751,44 +875,44 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_bool_wrapper: true}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_bool_wrapper { value: true } } } } } test { name: "field_assign_proto2_false" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_bool_wrapper: false}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_bool_wrapper { } } } } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_bool_wrapper: true}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_bool_wrapper { value: true } } } } } test { name: "field_assign_proto3_false" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_bool_wrapper: false}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_bool_wrapper { } } } } @@ -838,44 +962,44 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_string_wrapper: 'baz'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_string_wrapper { value: "baz" } } } } } test { name: "field_assign_proto2_empty" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_string_wrapper: ''}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_string_wrapper { } } } } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_string_wrapper: 'bletch'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_string_wrapper { value: "bletch" } } } } } test { name: "field_assign_proto3_empty" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_string_wrapper: ''}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_string_wrapper { } } } } @@ -925,44 +1049,44 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_bytes_wrapper: b'baz'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_bytes_wrapper { value: "baz" } } } } } test { name: "field_assign_proto2_empty" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_bytes_wrapper: b''}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_bytes_wrapper { } } } } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_bytes_wrapper: b'bletch'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_bytes_wrapper { value: "bletch" } } } } } test { name: "field_assign_proto3_empty" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_bytes_wrapper: b''}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_bytes_wrapper { } } } } @@ -1029,11 +1153,11 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{list_value: [1.0, 'one']}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { list_value { values: { number_value: 1.0 } values: { string_value: "one" } @@ -1043,18 +1167,18 @@ section { } test { name: "field_assign_proto2_empty" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{list_value: []}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { list_value { } } } } } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{list_value: [1.0, 'one']}.list_value" value { list_value { @@ -1065,24 +1189,24 @@ section { } test { name: "field_read_proto2_empty" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{list_value: []}.list_value" value { list_value { } } } test { name: "field_read_proto2_unset" description: "Not a wrapper type, so doesn't convert to null." - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.list_value" value { list_value { } } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{list_value: [1.0, 'one']}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { list_value { values: { number_value: 1.0 } values: { string_value: "one" } @@ -1092,18 +1216,18 @@ section { } test { name: "field_assign_proto3_empty" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{list_value: []}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { list_value { } } } } } test { name: "field_read_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{list_value: [1.0, 'one']}.list_value" value { list_value { @@ -1114,14 +1238,14 @@ section { } test { name: "field_read_proto3_empty" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{list_value: []}.list_value" value { list_value { } } } test { name: "field_read_proto3_unset" description: "Not a wrapper type, so doesn't convert to null." - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.list_value" value { list_value { } } } @@ -1196,11 +1320,11 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_struct: {'un': 1.0, 'deux': 2.0}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_struct { fields { key: "un" @@ -1216,18 +1340,18 @@ section { } test { name: "field_assign_proto2_empty" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_struct: {}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_struct { } } } } } test { name: "field_assign_proto2_bad" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_struct: {1: 'uno'}}" disable_check: true eval_error { @@ -1236,7 +1360,7 @@ section { } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_struct: {'one': 1.0}}.single_struct" value { map_value { @@ -1249,24 +1373,24 @@ section { } test { name: "field_read_proto2_empty" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_struct: {}}.single_struct" value { map_value { } } } test { name: "field_read_proto2_unset" description: "Not a wrapper type, so doesn't convert to null." - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.single_struct" value { map_value { } } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_struct: {'un': 1.0, 'deux': 2.0}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_struct { fields { key: "un" @@ -1282,18 +1406,18 @@ section { } test { name: "field_assign_proto3_empty" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_struct: {}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_struct { } } } } } test { name: "field_assign_proto3_bad" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_struct: {1: 'uno'}}" disable_check: true eval_error { @@ -1302,7 +1426,7 @@ section { } test { name: "field_read_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_struct: {'one': 1.0}}.single_struct" value { map_value { @@ -1315,14 +1439,14 @@ section { } test { name: "field_read_proto3_empty" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_struct: {}}.single_struct" value { map_value { } } } test { name: "field_read_proto3_unset" description: "Not a wrapper type, so doesn't convert to null." - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.single_struct" value { map_value { } } } @@ -1368,47 +1492,47 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: null}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { null_value: NULL_VALUE } } } } } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: null}.single_value" value { null_value: NULL_VALUE } } test { name: "field_read_proto2_unset" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.single_value" value { null_value: NULL_VALUE } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: null}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { null_value: NULL_VALUE } } } } } test { name: "field_read_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: null}.single_value" value { null_value: NULL_VALUE } } test { name: "field_read_proto3_unset" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.single_value" value { null_value: NULL_VALUE } } @@ -1452,69 +1576,69 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: 7e23}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { number_value: 7e23 } } } } } test { name: "field_assign_proto2_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: 0.0}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { number_value: 0.0 } } } } } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: 7e23}.single_value" value { double_value: 7e23 } } test { name: "field_read_proto2_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: 0.0}.single_value" value { double_value: 0.0 } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: 7e23}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { number_value: 7e23 } } } } } test { name: "field_assign_proto3_zero" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: 0.0}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { number_value: 0.0 } } } } } test { name: "field_read_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: 7e23}.single_value" value { double_value: 7e23 } } test { name: "field_read_proto3_zero" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: 0.0}.single_value" value { double_value: 0.0 } } @@ -1558,69 +1682,69 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: 'baz'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { string_value: "baz" } } } } } test { name: "field_assign_proto2_empty" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: ''}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { string_value: "" } } } } } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: 'bletch'}.single_value" value { string_value: "bletch" } } test { name: "field_read_proto2_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: ''}.single_value" value { string_value: "" } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: 'baz'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { string_value: "baz" } } } } } test { name: "field_assign_proto3_empty" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: ''}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { string_value: "" } } } } } test { name: "field_read_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: 'bletch'}.single_value" value { string_value: "bletch" } } test { name: "field_read_proto3_zero" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: ''}.single_value" value { string_value: "" } } @@ -1664,69 +1788,69 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: true}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { bool_value: true } } } } } test { name: "field_assign_proto2_false" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: false}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { bool_value: false } } } } } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: true}.single_value" value { bool_value: true } } test { name: "field_read_proto2_false" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: false}.single_value" value { bool_value: false } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: true}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { bool_value: true } } } } } test { name: "field_assign_proto3_false" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: false}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { bool_value: false } } } } } test { name: "field_read_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: true}.single_value" value { bool_value: true } } test { name: "field_read_proto3_false" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: false}.single_value" value { bool_value: false } } @@ -1801,11 +1925,11 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: {'un': 1.0, 'deux': 2.0}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { struct_value { fields { key: "un" @@ -1821,18 +1945,18 @@ section { } test { name: "field_assign_proto2_empty" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: {}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { struct_value: { } } } } } } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: {'i': true}}.single_value" value { map_value { @@ -1845,17 +1969,17 @@ section { } test { name: "field_read_proto2_empty" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: {}}.single_value" value { map_value: { } } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: {'un': 1.0, 'deux': 2.0}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { struct_value { fields { key: "un" @@ -1871,18 +1995,18 @@ section { } test { name: "field_assign_proto3_empty" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: {}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { struct_value: { } } } } } } test { name: "field_read_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: {'i': true}}.single_value" value { map_value { @@ -1895,7 +2019,7 @@ section { } test { name: "field_read_proto3_empty" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: {}}.single_value" value { map_value: { } } } @@ -1954,11 +2078,11 @@ section { } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: ['un', 1.0]}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { list_value { values { string_value: "un" } values { number_value: 1.0 } @@ -1968,18 +2092,18 @@ section { } test { name: "field_assign_proto2_empty" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: []}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { list_value: { } } } } } } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: ['i', true]}.single_value" value { list_value { @@ -1990,17 +2114,17 @@ section { } test { name: "field_read_proto2_empty" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: []}.single_value" value { list_value: { } } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: ['un', 1.0]}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { list_value { values { string_value: "un" } values { number_value: 1.0 } @@ -2010,18 +2134,18 @@ section { } test { name: "field_assign_proto3_empty" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: []}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { list_value: { } } } } } } test { name: "field_read_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: ['i', true]}.single_value" value { list_value { @@ -2032,7 +2156,7 @@ section { } test { name: "field_read_proto3_empty" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: []}.single_value" value { list_value: { } } } @@ -2042,17 +2166,17 @@ section { description: "Tests for Any conversion." test { name: "literal" - expr: "google.protobuf.Any{type_url: 'type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes', value: b'\\x08\\x96\\x01'}" + expr: "google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\x08\\x96\\x01'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32: 150 } } } } test { name: "literal_no_field_access" - expr: "google.protobuf.Any{type_url: 'type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes', value: b'\\x08\\x96\\x01'}.type_url" + expr: "google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\x08\\x96\\x01'}.type_url" disable_check: true eval_error { errors { message: "no_matching_overload" } @@ -2070,35 +2194,35 @@ section { expr: "x" type_env { name: "x" - ident { type { message_type: "google.protubuf.Any" } } + ident { type { message_type: "google.protobuf.Any" } } } bindings { key: "x" value { value { object_value { [type.googleapis.com/google.protobuf.Any] { - type_url: "type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes" + type_url: "type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes" value: "\x08\x96\x01" } } } } } value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32: 150 } } } } test { name: "field_assign_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_any: TestAllTypes{single_int32: 150}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_any { - type_url: "type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes" + type_url: "type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes" value: "\x08\x96\x01" } } @@ -2107,25 +2231,25 @@ section { } test { name: "field_read_proto2" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_any: TestAllTypes{single_int32: 150}}.single_any" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32: 150 } } } } test { name: "field_assign_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_any: TestAllTypes{single_int32: 150}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_any { - type_url: "type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes" + type_url: "type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes" value: "\x08\x96\x01" } } @@ -2134,11 +2258,11 @@ section { } test { name: "field_read_proto3" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_any: TestAllTypes{single_int32: 150}}.single_any" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int32: 150 } } } @@ -2149,7 +2273,7 @@ section { description: "Tests combining various dynamic conversions." test { name: "any_list_map" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_any: [{'almost': 'done'}]}.single_any" value { list_value { diff --git a/features/encoders_ext.feature b/features/encoders_ext.feature new file mode 100644 index 0000000..f4f133d --- /dev/null +++ b/features/encoders_ext.feature @@ -0,0 +1,39 @@ +@conformance +Feature: encoders_ext + Tests for the encoders extension library. + +# encode -- + + +@wip +Scenario: encode/hello + + When CEL expression "base64.encode(b'hello')" is evaluated + Then value is celpy.celtypes.StringType(source='aGVsbG8=') + + +# decode -- + + +@wip +Scenario: decode/hello + + When CEL expression "base64.decode('aGVsbG8=')" is evaluated + Then value is celpy.celtypes.BytesType(source=b'hello') + +@wip +Scenario: decode/hello_without_padding + + When CEL expression "base64.decode('aGVsbG8')" is evaluated + Then value is celpy.celtypes.BytesType(source=b'hello') + + +# round_trip -- + + +@wip +Scenario: round_trip/hello + + When CEL expression "base64.decode(base64.encode(b'Hello World!'))" is evaluated + Then value is celpy.celtypes.BytesType(source=b'Hello World!') + diff --git a/features/encoders_ext.textproto b/features/encoders_ext.textproto new file mode 100644 index 0000000..07cf11d --- /dev/null +++ b/features/encoders_ext.textproto @@ -0,0 +1,44 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + +name: "encoders_ext" +description: "Tests for the encoders extension library." +section: { + name: "encode" + test: { + name: "hello" + expr: "base64.encode(b'hello')" + value: { + string_value: "aGVsbG8=" + } + } +} + +section: { + name: "decode" + test: { + name: "hello" + expr: "base64.decode('aGVsbG8=')" + value: { + bytes_value: "hello" + } + } + test: { + name: "hello_without_padding" + expr: "base64.decode('aGVsbG8')" + value: { + bytes_value: "hello" + } + } +} + +section: { + name: "round_trip" + test: { + name: "hello" + expr: "base64.decode(base64.encode(b'Hello World!'))" + value: { + bytes_value: "Hello World!" + } + } +} diff --git a/features/enums.feature b/features/enums.feature index 1df5da6..1c91b92 100644 --- a/features/enums.feature +++ b/features/enums.feature @@ -1,3 +1,418 @@ - +@conformance Feature: enums - Tests for strong enum types. + Tests for enum types. + +# legacy_proto2 -- Legacy semantics where all enums are ints, proto2. + + +@wip +Scenario: legacy_proto2/literal_global + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'GlobalEnum.GAZ' is evaluated + Then value is celpy.celtypes.IntType(source=2) + +@wip +Scenario: legacy_proto2/literal_nested + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes.NestedEnum.BAR' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: legacy_proto2/literal_zero + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'GlobalEnum.GOO' is evaluated + Then value is celpy.celtypes.IntType(source=0) + +@wip +Scenario: legacy_proto2/comparison + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'GlobalEnum.GAR == 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: legacy_proto2/arithmetic + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes.NestedEnum.BAR + 3' is evaluated + Then value is celpy.celtypes.IntType(source=4) + +@wip +Scenario: legacy_proto2/type_global + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'type(GlobalEnum.GOO)' is evaluated + Then value is celpy.celtypes.IntType + +@wip +Scenario: legacy_proto2/type_nested + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'type(TestAllTypes.NestedEnum.BAZ)' is evaluated + Then value is celpy.celtypes.IntType + +@wip +Scenario: legacy_proto2/select_default + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.standalone_enum' is evaluated + Then value is celpy.celtypes.IntType(source=0) + +@wip +Scenario: legacy_proto2/field_type + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'type(TestAllTypes{}.standalone_enum)' is evaluated + Then value is celpy.celtypes.IntType + +@wip +Scenario: legacy_proto2/assign_standalone_name + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAZ}' is evaluated + Then value is TestAllTypes(standalone_enum=2) + +Scenario: legacy_proto2/assign_standalone_int + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{standalone_enum: 1}' is evaluated + Then value is TestAllTypes(standalone_enum=1) + +@wip +Scenario: legacy_proto2/assign_standalone_int_too_big + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{standalone_enum: 5000000000}' is evaluated + Then eval_error is 'range' + +@wip +Scenario: legacy_proto2/assign_standalone_int_too_neg + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{standalone_enum: -7000000000}' is evaluated + Then eval_error is 'range' + +@wip +Scenario: legacy_proto2/access_repeated_enum + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.repeated_nested_enum' is evaluated + Then value is [] + +@wip +Scenario: legacy_proto2/assign_repeated_enum + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{ repeated_nested_enum: [ TestAllTypes.NestedEnum.FOO, TestAllTypes.NestedEnum.BAR]}' is evaluated + Then value is TestAllTypes(repeated_nested_enum=[0, 1]) + +@wip +Scenario: legacy_proto2/list_enum_as_list_int + + Given container is 'cel.expr.conformance.proto2' + When CEL expression '0 in TestAllTypes{ repeated_nested_enum: [ TestAllTypes.NestedEnum.FOO, TestAllTypes.NestedEnum.BAR]}.repeated_nested_enum' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: legacy_proto2/enum_as_int + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.FOO}.standalone_enum in [0]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + + +# legacy_proto3 -- Legacy semantics where all enums are ints, proto3 + + +@wip +Scenario: legacy_proto3/literal_global + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'GlobalEnum.GAZ' is evaluated + Then value is celpy.celtypes.IntType(source=2) + +@wip +Scenario: legacy_proto3/literal_nested + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes.NestedEnum.BAR' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: legacy_proto3/literal_zero + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'GlobalEnum.GOO' is evaluated + Then value is celpy.celtypes.IntType(source=0) + +@wip +Scenario: legacy_proto3/comparison + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'GlobalEnum.GAR == 1' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: legacy_proto3/arithmetic + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes.NestedEnum.BAR + 3' is evaluated + Then value is celpy.celtypes.IntType(source=4) + +@wip +Scenario: legacy_proto3/type_global + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'type(GlobalEnum.GOO)' is evaluated + Then value is celpy.celtypes.IntType + +@wip +Scenario: legacy_proto3/type_nested + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'type(TestAllTypes.NestedEnum.BAZ)' is evaluated + Then value is celpy.celtypes.IntType + +@wip +Scenario: legacy_proto3/select_default + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.standalone_enum' is evaluated + Then value is celpy.celtypes.IntType(source=0) + +Scenario: legacy_proto3/select + + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is TestAllTypes(standalone_enum=2) + and container is 'cel.expr.conformance.proto3' + When CEL expression 'x.standalone_enum' is evaluated + Then value is celpy.celtypes.IntType(source=2) + +Scenario: legacy_proto3/select_big + + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is TestAllTypes(standalone_enum=108) + and container is 'cel.expr.conformance.proto3' + When CEL expression 'x.standalone_enum' is evaluated + Then value is celpy.celtypes.IntType(source=108) + +Scenario: legacy_proto3/select_neg + + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is TestAllTypes(standalone_enum=-3) + and container is 'cel.expr.conformance.proto3' + When CEL expression 'x.standalone_enum' is evaluated + Then value is celpy.celtypes.IntType(source=-3) + +@wip +Scenario: legacy_proto3/field_type + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'type(TestAllTypes{}.standalone_enum)' is evaluated + Then value is celpy.celtypes.IntType + +@wip +Scenario: legacy_proto3/assign_standalone_name + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAZ}' is evaluated + Then value is TestAllTypes(standalone_enum=2) + +Scenario: legacy_proto3/assign_standalone_int + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{standalone_enum: 1}' is evaluated + Then value is TestAllTypes(standalone_enum=1) + +Scenario: legacy_proto3/assign_standalone_int_big + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{standalone_enum: 99}' is evaluated + Then value is TestAllTypes(standalone_enum=99) + +Scenario: legacy_proto3/assign_standalone_int_neg + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{standalone_enum: -1}' is evaluated + Then value is TestAllTypes(standalone_enum=-1) + +@wip +Scenario: legacy_proto3/assign_standalone_int_too_big + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{standalone_enum: 5000000000}' is evaluated + Then eval_error is 'range' + +@wip +Scenario: legacy_proto3/assign_standalone_int_too_neg + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{standalone_enum: -7000000000}' is evaluated + Then eval_error is 'range' + +@wip +Scenario: legacy_proto3/access_repeated_enum + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.repeated_nested_enum' is evaluated + Then value is [] + +@wip +Scenario: legacy_proto3/assign_repeated_enum + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{ repeated_nested_enum: [ TestAllTypes.NestedEnum.FOO, TestAllTypes.NestedEnum.BAR]}' is evaluated + Then value is TestAllTypes(repeated_nested_enum=[0, 1]) + +@wip +Scenario: legacy_proto3/list_enum_as_list_int + + Given container is 'cel.expr.conformance.proto2' + When CEL expression '0 in TestAllTypes{ repeated_nested_enum: [ TestAllTypes.NestedEnum.FOO, TestAllTypes.NestedEnum.BAR]}.repeated_nested_enum' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: legacy_proto3/enum_as_int + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.FOO}.standalone_enum in [0]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + + +# strong_proto2 -- String semantics where enums are distinct types, proto2. + + +@wip +Scenario: strong_proto2/comparison_true + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'GlobalEnum.GAR == GlobalEnum.GAR' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: strong_proto2/comparison_false + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'GlobalEnum.GAR == GlobalEnum.GAZ' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: strong_proto2/assign_standalone_name + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAZ}' is evaluated + Then value is TestAllTypes(standalone_enum=2) + +@wip +Scenario: strong_proto2/assign_standalone_int + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{standalone_enum: TestAllTypes.NestedEnum(1)}' is evaluated + Then value is TestAllTypes(standalone_enum=1) + +@wip +Scenario: strong_proto2/convert_symbol_to_int + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'int(GlobalEnum.GAZ)' is evaluated + Then value is celpy.celtypes.IntType(source=2) + +Scenario: strong_proto2/convert_int_too_big + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes.NestedEnum(5000000000)' is evaluated + Then eval_error is 'range' + +Scenario: strong_proto2/convert_int_too_neg + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes.NestedEnum(-7000000000)' is evaluated + Then eval_error is 'range' + +Scenario: strong_proto2/convert_string_bad + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes.NestedEnum('BLETCH')" is evaluated + Then eval_error is 'invalid' + + +# strong_proto3 -- String semantics where enums are distinct types, proto3. + + +@wip +Scenario: strong_proto3/comparison_true + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'GlobalEnum.GAR == GlobalEnum.GAR' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: strong_proto3/comparison_false + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'GlobalEnum.GAR == GlobalEnum.GAZ' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: strong_proto3/assign_standalone_name + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAZ}' is evaluated + Then value is TestAllTypes(standalone_enum=2) + +@wip +Scenario: strong_proto3/assign_standalone_int + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{standalone_enum: TestAllTypes.NestedEnum(1)}' is evaluated + Then value is TestAllTypes(standalone_enum=1) + +@wip +Scenario: strong_proto3/assign_standalone_int_big + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{standalone_enum: TestAllTypes.NestedEnum(99)}' is evaluated + Then value is TestAllTypes(standalone_enum=99) + +@wip +Scenario: strong_proto3/assign_standalone_int_neg + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{standalone_enum: TestAllTypes.NestedEnum(-1)}' is evaluated + Then value is TestAllTypes(standalone_enum=-1) + +@wip +Scenario: strong_proto3/convert_symbol_to_int + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'int(GlobalEnum.GAZ)' is evaluated + Then value is celpy.celtypes.IntType(source=2) + +Scenario: strong_proto3/convert_unnamed_to_int_select + + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is TestAllTypes(standalone_enum=-987) + When CEL expression 'int(x.standalone_enum)' is evaluated + Then value is celpy.celtypes.IntType(source=-987) + +Scenario: strong_proto3/convert_int_too_big + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes.NestedEnum(5000000000)' is evaluated + Then eval_error is 'range' + +Scenario: strong_proto3/convert_int_too_neg + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes.NestedEnum(-7000000000)' is evaluated + Then eval_error is 'range' + +Scenario: strong_proto3/convert_string_bad + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes.NestedEnum('BLETCH')" is evaluated + Then eval_error is 'invalid' + diff --git a/features/enums.textproto b/features/enums.textproto index a3d84b5..558e929 100644 --- a/features/enums.textproto +++ b/features/enums.textproto @@ -1,2 +1,933 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + name: "enums" -description: "Tests for strong enum types." +description: "Tests for enum types." +section { + name: "legacy_proto2" + description: "Legacy semantics where all enums are ints, proto2." + test { + name: "literal_global" + container: "cel.expr.conformance.proto2" + expr: "GlobalEnum.GAZ" + value { int64_value: 2 } + } + test { + name: "literal_nested" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes.NestedEnum.BAR" + value { int64_value: 1 } + } + test { + name: "literal_zero" + container: "cel.expr.conformance.proto2" + expr: "GlobalEnum.GOO" + value { int64_value: 0 } + } + test { + name: "comparison" + container: "cel.expr.conformance.proto2" + expr: "GlobalEnum.GAR == 1" + value { bool_value: true } + } + test { + name: "arithmetic" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes.NestedEnum.BAR + 3" + value { int64_value: 4 } + } + test { + name: "type_global" + container: "cel.expr.conformance.proto2" + expr: "type(GlobalEnum.GOO)" + value { type_value: "int" } + } + test { + name: "type_nested" + container: "cel.expr.conformance.proto2" + expr: "type(TestAllTypes.NestedEnum.BAZ)" + value { type_value: "int" } + } + test { + name: "select_default" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.standalone_enum" + value { int64_value: 0 } + } + test { + name: "field_type" + container: "cel.expr.conformance.proto2" + expr: "type(TestAllTypes{}.standalone_enum)" + value { type_value: "int" } + } + test { + name: "assign_standalone_name" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAZ}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { + standalone_enum: BAZ + } + } + } + } + test { + name: "assign_standalone_int" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{standalone_enum: 1}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { + standalone_enum: BAR + } + } + } + } + test { + name: "assign_standalone_int_too_big" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{standalone_enum: 5000000000}" + eval_error { + errors { + message: "range" + } + } + } + test { + name: "assign_standalone_int_too_neg" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{standalone_enum: -7000000000}" + eval_error { + errors { + message: "range" + } + } + } + test { + name: "access_repeated_enum" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.repeated_nested_enum" + value { + list_value {} + } + } + test { + name: "assign_repeated_enum" + container: "cel.expr.conformance.proto2" + expr: + "TestAllTypes{" + " repeated_nested_enum: [" + " TestAllTypes.NestedEnum.FOO," + " TestAllTypes.NestedEnum.BAR]}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { + repeated_nested_enum: FOO + repeated_nested_enum: BAR + } + } + } + } + test { + name: "list_enum_as_list_int" + container: "cel.expr.conformance.proto2" + expr: + "0 in " + "TestAllTypes{" + " repeated_nested_enum: [" + " TestAllTypes.NestedEnum.FOO," + " TestAllTypes.NestedEnum.BAR]}" + ".repeated_nested_enum" + value: { bool_value: true } + } + test { + name: "enum_as_int" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.FOO}.standalone_enum in [0]" + value: { bool_value: true } + } +} +section { + name: "legacy_proto3" + description: "Legacy semantics where all enums are ints, proto3" + test { + name: "literal_global" + container: "cel.expr.conformance.proto3" + expr: "GlobalEnum.GAZ" + value { int64_value: 2 } + } + test { + name: "literal_nested" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes.NestedEnum.BAR" + value { int64_value: 1 } + } + test { + name: "literal_zero" + container: "cel.expr.conformance.proto3" + expr: "GlobalEnum.GOO" + value { int64_value: 0 } + } + test { + name: "comparison" + container: "cel.expr.conformance.proto3" + expr: "GlobalEnum.GAR == 1" + value { bool_value: true } + } + test { + name: "arithmetic" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes.NestedEnum.BAR + 3" + value { int64_value: 4 } + } + test { + name: "type_global" + container: "cel.expr.conformance.proto3" + expr: "type(GlobalEnum.GOO)" + value { type_value: "int" } + } + test { + name: "type_nested" + container: "cel.expr.conformance.proto3" + expr: "type(TestAllTypes.NestedEnum.BAZ)" + value { type_value: "int" } + } + test { + name: "select_default" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.standalone_enum" + value { int64_value: 0 } + } + test { + name: "select" + container: "cel.expr.conformance.proto3" + expr: "x.standalone_enum" + type_env { + name: "x" + ident { + type { message_type: "cel.expr.conformance.proto3.TestAllTypes" } + } + } + bindings { + key: "x" + value { + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: 2 + } + } + } + } + } + value { int64_value: 2 } + } + test { + name: "select_big" + container: "cel.expr.conformance.proto3" + expr: "x.standalone_enum" + type_env { + name: "x" + ident { + type { message_type: "cel.expr.conformance.proto3.TestAllTypes" } + } + } + bindings { + key: "x" + value { + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: 108 + } + } + } + } + } + value { int64_value: 108 } + } + test { + name: "select_neg" + container: "cel.expr.conformance.proto3" + expr: "x.standalone_enum" + type_env { + name: "x" + ident { + type { message_type: "cel.expr.conformance.proto3.TestAllTypes" } + } + } + bindings { + key: "x" + value { + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: -3 + } + } + } + } + } + value { int64_value: -3 } + } + test { + name: "field_type" + container: "cel.expr.conformance.proto3" + expr: "type(TestAllTypes{}.standalone_enum)" + value { type_value: "int" } + } + test { + name: "assign_standalone_name" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAZ}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: BAZ + } + } + } + } + test { + name: "assign_standalone_int" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{standalone_enum: 1}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: BAR + } + } + } + } + test { + name: "assign_standalone_int_big" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{standalone_enum: 99}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: 99 + } + } + } + } + test { + name: "assign_standalone_int_neg" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{standalone_enum: -1}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: -1 + } + } + } + } + test { + name: "assign_standalone_int_too_big" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{standalone_enum: 5000000000}" + eval_error { + errors { + message: "range" + } + } + } + test { + name: "assign_standalone_int_too_neg" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{standalone_enum: -7000000000}" + eval_error { + errors { + message: "range" + } + } + } + test { + name: "access_repeated_enum" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.repeated_nested_enum" + value { + list_value {} + } + } + test { + name: "assign_repeated_enum" + container: "cel.expr.conformance.proto2" + expr: + "TestAllTypes{" + " repeated_nested_enum: [" + " TestAllTypes.NestedEnum.FOO," + " TestAllTypes.NestedEnum.BAR]}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { + repeated_nested_enum: FOO + repeated_nested_enum: BAR + } + } + } + } + test { + name: "list_enum_as_list_int" + container: "cel.expr.conformance.proto2" + expr: + "0 in " + "TestAllTypes{" + " repeated_nested_enum: [" + " TestAllTypes.NestedEnum.FOO," + " TestAllTypes.NestedEnum.BAR]}" + ".repeated_nested_enum" + value: { bool_value: true } + } + test { + name: "enum_as_int" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.FOO}.standalone_enum in [0]" + value: { bool_value: true } + } +} +section { + name: "strong_proto2" + description: "String semantics where enums are distinct types, proto2." + test { + name: "literal_global" + container: "cel.expr.conformance.proto2" + expr: "GlobalEnum.GAZ" + value { + enum_value { + type: "cel.expr.conformance.proto2.GlobalEnum" + value: 2 + } + } + } + test { + name: "literal_nested" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes.NestedEnum.BAR" + value { + enum_value { + type: "cel.expr.conformance.proto2.TestAllTypes.NestedEnum" + value: 1 + } + } + } + test { + name: "literal_zero" + container: "cel.expr.conformance.proto2" + expr: "GlobalEnum.GOO" + value { + enum_value { + type: "cel.expr.conformance.proto2.GlobalEnum" + value: 0 + } + } + } + test { + name: "comparison_true" + container: "cel.expr.conformance.proto2" + expr: "GlobalEnum.GAR == GlobalEnum.GAR" + value { bool_value: true } + } + test { + name: "comparison_false" + container: "cel.expr.conformance.proto2" + expr: "GlobalEnum.GAR == GlobalEnum.GAZ" + value { bool_value: false } + } + test { + name: "type_global" + container: "cel.expr.conformance.proto2" + expr: "type(GlobalEnum.GOO)" + value { type_value: "cel.expr.conformance.proto2.GlobalEnum" } + } + test { + name: "type_nested" + container: "cel.expr.conformance.proto2" + expr: "type(TestAllTypes.NestedEnum.BAZ)" + value { + type_value: "cel.expr.conformance.proto2.TestAllTypes.NestedEnum" + } + } + test { + name: "select_default" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.standalone_enum" + value { + enum_value { + type: "cel.expr.conformance.proto2.TestAllTypes.NestedEnum" + value: 0 + } + } + } + test { + name: "field_type" + container: "cel.expr.conformance.proto2" + expr: "type(TestAllTypes{}.standalone_enum)" + value { + type_value: "cel.expr.conformance.proto2.TestAllTypes.NestedEnum" + } + } + test { + name: "assign_standalone_name" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAZ}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { + standalone_enum: BAZ + } + } + } + } + test { + name: "assign_standalone_int" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{standalone_enum: TestAllTypes.NestedEnum(1)}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { + standalone_enum: BAR + } + } + } + } + test { + name: "convert_symbol_to_int" + container: "cel.expr.conformance.proto2" + expr: "int(GlobalEnum.GAZ)" + value { int64_value: 2 } + } + test { + name: "convert_unnamed_to_int" + description: "Disable check - missing way to declare enums." + expr: "int(x)" + disable_check: true + bindings { + key: "x" + value { + value { + enum_value { + type: "cel.expr.conformance.proto2.GlobalEnum" + value: 444 + } + } + } + } + value { int64_value: 444 } + } + test { + name: "convert_int_inrange" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes.NestedEnum(2)" + value { + enum_value { + type: "cel.expr.conformance.proto2.TestAllTypes.NestedEnum" + value: 2 + } + } + } + test { + name: "convert_int_big" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes.NestedEnum(20000)" + value { + enum_value { + type: "cel.expr.conformance.proto2.TestAllTypes.NestedEnum" + value: 20000 + } + } + } + test { + name: "convert_int_neg" + container: "cel.expr.conformance.proto2" + expr: "GlobalEnum(-33)" + value { + enum_value { + type: "cel.expr.conformance.proto2.GlobalEnum" + value: -33 + } + } + } + test { + name: "convert_int_too_big" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes.NestedEnum(5000000000)" + eval_error { + errors { + message: "range" + } + } + } + test { + name: "convert_int_too_neg" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes.NestedEnum(-7000000000)" + eval_error { + errors { + message: "range" + } + } + } + test { + name: "convert_string" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes.NestedEnum('BAZ')" + value { + enum_value { + type: "cel.expr.conformance.proto2.TestAllTypes.NestedEnum" + value: 2 + } + } + } + test { + name: "convert_string_bad" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes.NestedEnum('BLETCH')" + eval_error { + errors { + message: "invalid" + } + } + } +} +section { + name: "strong_proto3" + description: "String semantics where enums are distinct types, proto3." + test { + name: "literal_global" + container: "cel.expr.conformance.proto3" + expr: "GlobalEnum.GAZ" + value { + enum_value { + type: "cel.expr.conformance.proto3.GlobalEnum" + value: 2 + } + } + } + test { + name: "literal_nested" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes.NestedEnum.BAR" + value { + enum_value { + type: "cel.expr.conformance.proto3.TestAllTypes.NestedEnum" + value: 1 + } + } + } + test { + name: "literal_zero" + container: "cel.expr.conformance.proto3" + expr: "GlobalEnum.GOO" + value { + enum_value { + type: "cel.expr.conformance.proto3.GlobalEnum" + value: 0 + } + } + } + test { + name: "comparison_true" + container: "cel.expr.conformance.proto3" + expr: "GlobalEnum.GAR == GlobalEnum.GAR" + value { bool_value: true } + } + test { + name: "comparison_false" + container: "cel.expr.conformance.proto3" + expr: "GlobalEnum.GAR == GlobalEnum.GAZ" + value { bool_value: false } + } + test { + name: "type_global" + container: "cel.expr.conformance.proto3" + expr: "type(GlobalEnum.GOO)" + value { type_value: "cel.expr.conformance.proto3.GlobalEnum" } + } + test { + name: "type_nested" + container: "cel.expr.conformance.proto3" + expr: "type(TestAllTypes.NestedEnum.BAZ)" + value { + type_value: "cel.expr.conformance.proto3.TestAllTypes.NestedEnum" + } + } + test { + name: "select_default" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.standalone_enum" + value { + enum_value { + type: "cel.expr.conformance.proto3.TestAllTypes.NestedEnum" + value: 0 + } + } + } + test { + name: "select" + container: "cel.expr.conformance.proto3" + expr: "x.standalone_enum" + type_env { + name: "x" + ident { + type { message_type: "cel.expr.conformance.proto3.TestAllTypes" } + } + } + bindings { + key: "x" + value { + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: 2 + } + } + } + } + } + value { + enum_value { + type: "cel.expr.conformance.proto3.TestAllTypes.NestedEnum" + value: 2 + } + } + } + test { + name: "select_big" + container: "cel.expr.conformance.proto3" + expr: "x.standalone_enum" + type_env { + name: "x" + ident { + type { message_type: "cel.expr.conformance.proto3.TestAllTypes" } + } + } + bindings { + key: "x" + value { + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: 108 + } + } + } + } + } + value { + enum_value { + type: "cel.expr.conformance.proto3.TestAllTypes.NestedEnum" + value: 108 + } + } + } + test { + name: "select_neg" + container: "cel.expr.conformance.proto3" + expr: "x.standalone_enum" + type_env { + name: "x" + ident { + type { message_type: "cel.expr.conformance.proto3.TestAllTypes" } + } + } + bindings { + key: "x" + value { + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: -3 + } + } + } + } + } + value { + enum_value { + type: "cel.expr.conformance.proto3.TestAllTypes.NestedEnum" + value: -3 + } + } + } + test { + name: "field_type" + container: "cel.expr.conformance.proto3" + expr: "type(TestAllTypes{}.standalone_enum)" + value { + type_value: "cel.expr.conformance.proto3.TestAllTypes.NestedEnum" + } + } + test { + name: "assign_standalone_name" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAZ}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: BAZ + } + } + } + } + test { + name: "assign_standalone_int" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{standalone_enum: TestAllTypes.NestedEnum(1)}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: BAR + } + } + } + } + test { + name: "assign_standalone_int_big" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{standalone_enum: TestAllTypes.NestedEnum(99)}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: 99 + } + } + } + } + test { + name: "assign_standalone_int_neg" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{standalone_enum: TestAllTypes.NestedEnum(-1)}" + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: -1 + } + } + } + } + test { + name: "convert_symbol_to_int" + container: "cel.expr.conformance.proto3" + expr: "int(GlobalEnum.GAZ)" + value { int64_value: 2 } + } + test { + name: "convert_unnamed_to_int" + description: "Disable check - missing way to declare enums." + expr: "int(x)" + disable_check: true + bindings { + key: "x" + value { + value { + enum_value { + type: "cel.expr.conformance.proto3.GlobalEnum" + value: 444 + } + } + } + } + value { int64_value: 444 } + } + test { + name: "convert_unnamed_to_int_select" + expr: "int(x.standalone_enum)" + type_env { + name: "x" + ident { + type { message_type: "cel.expr.conformance.proto3.TestAllTypes" } + } + } + bindings { + key: "x" + value { + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + standalone_enum: -987 + } + } + } + } + } + value { int64_value: -987 } + } + test { + name: "convert_int_inrange" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes.NestedEnum(2)" + value { + enum_value { + type: "cel.expr.conformance.proto3.TestAllTypes.NestedEnum" + value: 2 + } + } + } + test { + name: "convert_int_big" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes.NestedEnum(20000)" + value { + enum_value { + type: "cel.expr.conformance.proto3.TestAllTypes.NestedEnum" + value: 20000 + } + } + } + test { + name: "convert_int_neg" + container: "cel.expr.conformance.proto3" + expr: "GlobalEnum(-33)" + value { + enum_value { + type: "cel.expr.conformance.proto3.GlobalEnum" + value: -33 + } + } + } + test { + name: "convert_int_too_big" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes.NestedEnum(5000000000)" + eval_error { + errors { + message: "range" + } + } + } + test { + name: "convert_int_too_neg" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes.NestedEnum(-7000000000)" + eval_error { + errors { + message: "range" + } + } + } + test { + name: "convert_string" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes.NestedEnum('BAZ')" + value { + enum_value { + type: "cel.expr.conformance.proto3.TestAllTypes.NestedEnum" + value: 2 + } + } + } + test { + name: "convert_string_bad" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes.NestedEnum('BLETCH')" + eval_error { + errors { + message: "invalid" + } + } + } +} diff --git a/features/fields.feature b/features/fields.feature index 2d47f9b..a8e94ca 100644 --- a/features/fields.feature +++ b/features/fields.feature @@ -1,321 +1,375 @@ - +@conformance Feature: fields Tests for field access in maps. # map_fields -- select an element in a map -Scenario: map_key_int64 - When CEL expression "{0:1,2:2,5:true}[5]" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: map_fields/map_key_int64 + When CEL expression '{0:1,2:2,5:true}[5]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: map_key_uint64 +Scenario: map_fields/map_key_uint64 When CEL expression "{0u:1u,2u:'happy',5u:3u}[2u]" is evaluated - # string_value:"happy" - Then value is StringType(source='happy') - + Then value is celpy.celtypes.StringType(source='happy') -Scenario: map_key_string +Scenario: map_fields/map_key_string When CEL expression "{'name':100u}['name']" is evaluated - # uint64_value:100 - Then value is UintType(source=100) + Then value is celpy.celtypes.UintType(source=100) +Scenario: map_fields/map_key_bool -Scenario: map_key_bool + When CEL expression '{true:5}[true]' is evaluated + Then value is celpy.celtypes.IntType(source=5) - When CEL expression "{true:5}[true]" is evaluated - # int64_value:5 - Then value is IntType(source=5) +Scenario: map_fields/map_key_mixed_type + When CEL expression '{true:1,2:2,5u:3}[true]' is evaluated + Then value is celpy.celtypes.IntType(source=1) -Scenario: map_key_mix_type +@wip +Scenario: map_fields/map_key_mixed_numbers_double_key - When CEL expression "{true:1,2:2,5u:3}[true]" is evaluated - # int64_value:1 - Then value is IntType(source=1) + When CEL expression '{1u: 1.0, 2: 2.0, 3u: 3.0}[3.0]' is evaluated + Then value is celpy.celtypes.DoubleType(source=3.0) +Scenario: map_fields/map_key_mixed_numbers_lossy_double_key + + When CEL expression '{1u: 1.0, 2: 2.0, 3u: 3.0}[3.1]' is evaluated + Then eval_error is 'no such key' -Scenario: map_field_access +@wip +Scenario: map_fields/map_key_mixed_numbers_uint_key - # type:{map_type:{key_type:{primitive:STRING} value_type:{primitive:INT64}}} - # Given type_env parameter "x" is TypeType(value='map_type') - Given type_env parameter "x" is map_type + When CEL expression '{1u: 1.0, 2: 2.0, 3u: 3.0}[2u]' is evaluated + Then value is celpy.celtypes.DoubleType(source=2.0) - # map_value:{entries:{key:{string_value:"name"} value:{int64_value:1024}}} - Given bindings parameter "x" is MapType({StringType(source='name'): IntType(source=1024)}) +@wip +Scenario: map_fields/map_key_mixed_numbers_int_key - When CEL expression "x.name" is evaluated - # int64_value:1024 - Then value is IntType(source=1024) + When CEL expression '{1u: 1.0, 2: 2.0, 3u: 3.0}[1]' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) +Scenario: map_fields/map_field_access -Scenario: map_no_such_key + Given type_env parameter "x" is celpy.celtypes.MapType + and bindings parameter "x" is celpy.celtypes.MapType({'name': celpy.celtypes.IntType(source=1024)}) + When CEL expression 'x.name' is evaluated + Then value is celpy.celtypes.IntType(source=1024) - When CEL expression "{0:1,2:2,5:3}[1]" is evaluated - # errors:{message:"no such key"} +Scenario: map_fields/map_no_such_key + + When CEL expression '{0:1,2:2,5:3}[1]' is evaluated Then eval_error is 'no such key' +Scenario: map_fields/map_no_such_key_or_false -Scenario: map_field_select_no_such_key + When CEL expression 'dyn({0:1,2:2,5:3}[1]) || false' is evaluated + Then eval_error is 'no such key' - # type:{map_type:{key_type:{primitive:STRING} value_type:{primitive:STRING}}} - # Given type_env parameter "x" is TypeType(value='map_type') - Given type_env parameter "x" is map_type +Scenario: map_fields/map_no_such_key_or_true - # map_value:{entries:{key:{string_value:"holiday"} value:{string_value:"field"}}} - Given bindings parameter "x" is MapType({StringType(source='holiday'): StringType(source='field')}) + When CEL expression 'dyn({0:1,2:2,5:3}[1]) || true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "x.name" is evaluated - # errors:{message:"no such key: 'name'"} - Then eval_error is "no such key: 'name'" +Scenario: map_fields/map_no_such_key_and_false + When CEL expression 'dyn({0:1,2:2,5:3}[1]) && false' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: map_value_null +Scenario: map_fields/map_no_such_key_and_true - When CEL expression "{true:null}[true]" is evaluated - # null_value:NULL_VALUE - Then value is None + When CEL expression 'dyn({0:1,2:2,5:3}[1]) && true' is evaluated + Then eval_error is 'no such key' +Scenario: map_fields/map_bad_key_type -Scenario: map_value_bool + When CEL expression "{0:1,2:2,5:3}[dyn(b'')]" is evaluated + Then eval_error is 'no such key' - When CEL expression "{27:false}[27]" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: map_fields/map_bad_key_type_or_false + When CEL expression "dyn({0:1,2:2,5:3}[dyn(b'')]) || false" is evaluated + Then eval_error is 'no such key' -Scenario: map_value_string +Scenario: map_fields/map_bad_key_type_or_true - When CEL expression "{'n':'x'}['n']" is evaluated - # string_value:"x" - Then value is StringType(source='x') + When CEL expression "dyn({0:1,2:2,5:3}[dyn(b'')]) || true" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: map_fields/map_bad_key_type_and_false -Scenario: map_value_float + When CEL expression "dyn({0:1,2:2,5:3}[dyn(b'')]) && false" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "{3:15.15}[3]" is evaluated - # double_value:15.15 - Then value is DoubleType(source=15.15) +Scenario: map_fields/map_bad_key_type_and_true + When CEL expression "dyn({0:1,2:2,5:3}[dyn(b'')]) && true" is evaluated + Then eval_error is 'no such key' -Scenario: map_value_uint64 +Scenario: map_fields/map_field_select_no_such_key - When CEL expression "{0u:1u,2u:2u,5u:3u}[0u]" is evaluated - # uint64_value:1 - Then value is UintType(source=1) + Given type_env parameter "x" is celpy.celtypes.MapType + and bindings parameter "x" is celpy.celtypes.MapType({'holiday': celpy.celtypes.StringType(source='field')}) + When CEL expression 'x.name' is evaluated + Then eval_error is "no such key: 'name'" +Scenario: map_fields/map_field_select_no_such_key_or_false -Scenario: map_value_int64 + Given type_env parameter "x" is celpy.celtypes.MapType + and bindings parameter "x" is celpy.celtypes.MapType({'holiday': celpy.celtypes.StringType(source='field')}) + When CEL expression 'dyn(x.name) || false' is evaluated + Then eval_error is "no such key: 'name'" - When CEL expression "{true:1,false:2}[true]" is evaluated - # int64_value:1 - Then value is IntType(source=1) +Scenario: map_fields/map_field_select_no_such_key_or_true + Given type_env parameter "x" is celpy.celtypes.MapType + and bindings parameter "x" is celpy.celtypes.MapType({'holiday': celpy.celtypes.StringType(source='field')}) + When CEL expression 'dyn(x.name) || true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: map_value_bytes +Scenario: map_fields/map_field_select_no_such_key_and_false - When CEL expression '{0:b""}[0]' is evaluated - # bytes_value:"" - Then value is BytesType(source=b'') + Given type_env parameter "x" is celpy.celtypes.MapType + and bindings parameter "x" is celpy.celtypes.MapType({'holiday': celpy.celtypes.StringType(source='field')}) + When CEL expression 'dyn(x.name) && false' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: map_fields/map_field_select_no_such_key_and_true -Scenario: map_value_list + Given type_env parameter "x" is celpy.celtypes.MapType + and bindings parameter "x" is celpy.celtypes.MapType({'holiday': celpy.celtypes.StringType(source='field')}) + When CEL expression 'dyn(x.name) && true' is evaluated + Then eval_error is "no such key: 'name'" - When CEL expression "{0u:[1]}[0u]" is evaluated - # list_value:{values:{int64_value:1}} - Then value is [IntType(source=1)] +Scenario: map_fields/map_value_null + When CEL expression '{true:null}[true]' is evaluated + Then value is None -Scenario: map_value_map +Scenario: map_fields/map_value_bool - When CEL expression '{"map": {"k": "v"}}["map"]' is evaluated - # map_value:{entries:{key:{string_value:"k"} value:{string_value:"v"}}} - Then value is MapType({StringType(source='k'): StringType(source='v')}) + When CEL expression '{27:false}[27]' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: map_fields/map_value_string -Scenario: map_value_mix_type + When CEL expression "{'n':'x'}['n']" is evaluated + Then value is celpy.celtypes.StringType(source='x') - When CEL expression '{"map": {"k": "v"}, "list": [1]}["map"]' is evaluated - # map_value:{entries:{key:{string_value:"k"} value:{string_value:"v"}}} - Then value is MapType({StringType(source='k'): StringType(source='v')}) +Scenario: map_fields/map_value_float + When CEL expression '{3:15.15}[3]' is evaluated + Then value is celpy.celtypes.DoubleType(source=15.15) +Scenario: map_fields/map_value_uint64 -# map_has -- Has macro for map entries. + When CEL expression '{0u:1u,2u:2u,5u:3u}[0u]' is evaluated + Then value is celpy.celtypes.UintType(source=1) -Scenario: has +Scenario: map_fields/map_value_int64 - When CEL expression "has({'a': 1, 'b': 2}.a)" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '{true:1,false:2}[true]' is evaluated + Then value is celpy.celtypes.IntType(source=1) +Scenario: map_fields/map_value_bytes -Scenario: has_not + When CEL expression "{0:b''}[0]" is evaluated + Then value is celpy.celtypes.BytesType(source=b'') - When CEL expression "has({'a': 1, 'b': 2}.c)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: map_fields/map_value_list + When CEL expression '{0u:[1]}[0u]' is evaluated + Then value is [celpy.celtypes.IntType(source=1)] -Scenario: has_empty +Scenario: map_fields/map_value_map - When CEL expression "has({}.a)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression "{'map': {'k': 'v'}}['map']" is evaluated + Then value is celpy.celtypes.MapType({'k': celpy.celtypes.StringType(source='v')}) +Scenario: map_fields/map_value_mix_type + When CEL expression "{'map': {'k': 'v'}, 'list': [1]}['map']" is evaluated + Then value is celpy.celtypes.MapType({'k': celpy.celtypes.StringType(source='v')}) -# qualified_identifier_resolution -- Tests for qualified identifier resolution. -Scenario: qualified_ident +# map_has -- Has macro for map entries. - # type:{primitive:STRING} - # Given type_env parameter "a.b.c" is TypeType(value='STRING') - Given type_env parameter "a.b.c" is STRING - # string_value:"yeah" - Given bindings parameter "a.b.c" is StringType(source='yeah') +Scenario: map_has/has - When CEL expression "a.b.c" is evaluated - # string_value:"yeah" - Then value is StringType(source='yeah') + When CEL expression "has({'a': 1, 'b': 2}.a)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: map_has/has_not -Scenario: map_field_select + When CEL expression "has({'a': 1, 'b': 2}.c)" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - # type:{map_type:{key_type:{primitive:STRING} value_type:{primitive:STRING}}} - # Given type_env parameter "a.b" is TypeType(value='map_type') - Given type_env parameter "a.b" is map_type +Scenario: map_has/has_empty - # map_value:{entries:{key:{string_value:"c"} value:{string_value:"yeah"}}} - Given bindings parameter "a.b" is MapType({StringType(source='c'): StringType(source='yeah')}) + When CEL expression 'has({}.a)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "a.b.c" is evaluated - # string_value:"yeah" - Then value is StringType(source='yeah') +# quoted_map_fields -- Field accesses using the quote syntax -Scenario: qualified_identifier_resolution_unchecked - namespace resolution should try to find the longest prefix for the evaluator. - # type:{primitive:STRING} - # Given type_env parameter "a.b.c" is TypeType(value='STRING') - Given type_env parameter "a.b.c" is STRING - # type:{map_type:{key_type:{primitive:STRING} value_type:{primitive:STRING}}} - # Given type_env parameter "a.b" is TypeType(value='map_type') - Given type_env parameter "a.b" is map_type +@wip +Scenario: quoted_map_fields/field_access_slash - # map_value:{entries:{key:{string_value:"c"} value:{string_value:"oops"}}} - Given bindings parameter "a.b" is MapType({StringType(source='c'): StringType(source='oops')}) + When CEL expression "{'/api/v1': true, '/api/v2': false}.`/api/v1`" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - # string_value:"yeah" - Given bindings parameter "a.b.c" is StringType(source='yeah') +@wip +Scenario: quoted_map_fields/field_access_dash - When CEL expression "a.b.c" is evaluated - # string_value:"yeah" - Then value is StringType(source='yeah') + When CEL expression "{'content-type': 'application/json', 'content-length': 145}.`content-type` == 'application/json'" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: quoted_map_fields/field_access_dot -Scenario: list_field_select_unsupported + When CEL expression "{'foo.txt': 32, 'bar.csv': 1024}.`foo.txt`" is evaluated + Then value is celpy.celtypes.IntType(source=32) - # type:{list_type:{elem_type:{primitive:STRING}}} - # Given type_env parameter "a.b" is TypeType(value='list_type') - Given type_env parameter "a.b" is list_type +@wip +Scenario: quoted_map_fields/has_field_slash - # list_value:{values:{string_value:"pancakes"}} - Given bindings parameter "a.b" is [StringType(source='pancakes')] + When CEL expression "has({'/api/v1': true, '/api/v2': false}.`/api/v3`)" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "a.b.pancakes" is evaluated - # errors:{message:"type 'list_type: > ' does not support field selection"} - Then eval_error is "type 'list_type: > ' does not support field selection" +@wip +Scenario: quoted_map_fields/has_field_dash + When CEL expression "has({'content-type': 'application/json', 'content-length': 145}.`content-type`)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: int64_field_select_unsupported +@wip +Scenario: quoted_map_fields/has_field_dot - # type:{primitive:INT64} - # Given type_env parameter "a" is TypeType(value='INT64') - Given type_env parameter "a" is INT64 + When CEL expression "has({'foo.txt': 32, 'bar.csv': 1024}.`foo.txt`)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - # int64_value:15 - Given bindings parameter "a" is IntType(source=15) - When CEL expression "a.pancakes" is evaluated - # errors:{message:"type 'int64_type' does not support field selection"} - Then eval_error is "type 'int64_type' does not support field selection" +# qualified_identifier_resolution -- Tests for qualified identifier resolution. -Scenario: ident_with_longest_prefix_check - namespace resolution should try to find the longest prefix for the checker. - # type:{primitive:STRING} - # Given type_env parameter "a.b.c" is TypeType(value='STRING') - Given type_env parameter "a.b.c" is STRING +Scenario: qualified_identifier_resolution/qualified_ident - # type:{map_type:{key_type:{primitive:STRING} value_type:{primitive:STRING}}} - # Given type_env parameter "a.b" is TypeType(value='map_type') - Given type_env parameter "a.b" is map_type + Given type_env parameter "a.b.c" is celpy.celtypes.StringType + and bindings parameter "a.b.c" is celpy.celtypes.StringType(source='yeah') + When CEL expression 'a.b.c' is evaluated + Then value is celpy.celtypes.StringType(source='yeah') - # map_value:{entries:{key:{string_value:"c"} value:{string_value:"oops"}}} - Given bindings parameter "a.b" is MapType({StringType(source='c'): StringType(source='oops')}) +Scenario: qualified_identifier_resolution/map_field_select - # string_value:"yeah" - Given bindings parameter "a.b.c" is StringType(source='yeah') + Given type_env parameter "a.b" is celpy.celtypes.MapType + and bindings parameter "a.b" is celpy.celtypes.MapType({'c': celpy.celtypes.StringType(source='yeah')}) + When CEL expression 'a.b.c' is evaluated + Then value is celpy.celtypes.StringType(source='yeah') - When CEL expression "a.b.c" is evaluated - # string_value:"yeah" - Then value is StringType(source='yeah') +Scenario: qualified_identifier_resolution/qualified_identifier_resolution_unchecked + namespace resolution should try to find the longest prefix for the + evaluator. + Given disable_check parameter is True + and type_env parameter "a.b.c" is celpy.celtypes.StringType + and type_env parameter "a.b" is celpy.celtypes.MapType + and bindings parameter "a.b" is celpy.celtypes.MapType({'c': celpy.celtypes.StringType(source='oops')}) + and bindings parameter "a.b.c" is celpy.celtypes.StringType(source='yeah') + When CEL expression 'a.b.c' is evaluated + Then value is celpy.celtypes.StringType(source='yeah') -Scenario: map_key_float +Scenario: qualified_identifier_resolution/list_field_select_unsupported + + Given disable_check parameter is True + and type_env parameter "a.b" is celpy.celtypes.ListType + and bindings parameter "a.b" is [celpy.celtypes.StringType(source='pancakes')] + When CEL expression 'a.b.pancakes' is evaluated + Then eval_error is "type 'list_type: > ' does not support field selection" + +Scenario: qualified_identifier_resolution/int64_field_select_unsupported + + Given disable_check parameter is True + and type_env parameter "a" is celpy.celtypes.IntType + and bindings parameter "a" is celpy.celtypes.IntType(source=15) + When CEL expression 'a.pancakes' is evaluated + Then eval_error is "type 'int64_type' does not support field selection" + +Scenario: qualified_identifier_resolution/ident_with_longest_prefix_check + namespace resolution should try to find the longest prefix for the + checker. + + Given type_env parameter "a.b.c" is celpy.celtypes.StringType + and type_env parameter "a.b" is celpy.celtypes.MapType + and bindings parameter "a.b" is celpy.celtypes.MapType({'c': celpy.celtypes.StringType(source='oops')}) + and bindings parameter "a.b.c" is celpy.celtypes.StringType(source='yeah') + When CEL expression 'a.b.c' is evaluated + Then value is celpy.celtypes.StringType(source='yeah') + +Scenario: qualified_identifier_resolution/map_key_float map should not support float as the key. - When CEL expression "{3.3:15.15, 1.0: 5}[1.0]" is evaluated - # errors:{message:"unsupported key type"} - Then eval_error is 'unsupported key type' + Given disable_check parameter is True + When CEL expression '{3.3:15.15, 1.0: 5}[1.0]' is evaluated + Then eval_error is 'unsupported key type' -Scenario: map_key_null +Scenario: qualified_identifier_resolution/map_key_null map should not support null as the key. - When CEL expression "{null:false}[null]" is evaluated - # errors:{message:"unsupported key type"} - Then eval_error is 'unsupported key type' + Given disable_check parameter is True + When CEL expression '{null:false}[null]' is evaluated + Then eval_error is 'unsupported key type' -Scenario: map_value_repeat_key +Scenario: qualified_identifier_resolution/map_value_repeat_key map should not support repeated key. - When CEL expression "{true:1,false:2,true:3}[true]" is evaluated - # errors:{message:"Failed with repeated key"} + + When CEL expression '{true:1,false:2,true:3}[true]' is evaluated Then eval_error is 'Failed with repeated key' +Scenario: qualified_identifier_resolution/map_value_repeat_key_heterogeneous + map should not support repeated key. + + When CEL expression '{0: 1, 0u: 2}[0.0]' is evaluated + Then eval_error is 'Failed with repeated key' # in -- Tests for 'in' operator for maps. -Scenario: empty - - When CEL expression "7 in {}" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: in/empty -Scenario: singleton + When CEL expression '7 in {}' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "true in {true: 1}" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: in/singleton + When CEL expression 'true in {true: 1}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: present +Scenario: in/present When CEL expression "'George' in {'John': 'smart', 'Paul': 'cute', 'George': 'quiet', 'Ringo': 'funny'}" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) - -Scenario: absent +Scenario: in/absent When CEL expression "'spider' in {'ant': 6, 'fly': 6, 'centipede': 100}" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: in/mixed_numbers_and_keys_present + + When CEL expression '3.0 in {1: 1, 2: 2, 3u: 3} && 2u in {1u: 1, 2: 2} && 1 in {1u: 1, 2: 2}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: in/mixed_numbers_and_keys_absent + + When CEL expression '3.1 in {1: 1, 2: 2, 3u: 3}' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + diff --git a/features/fields.textproto b/features/fields.textproto index 9652694..66eb5d4 100644 --- a/features/fields.textproto +++ b/features/fields.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + name: "fields" description: "Tests for field access in maps." section { @@ -20,30 +23,52 @@ section { } test { name: "map_key_bool" - expr: '{true:5}[true]' + expr: "{true:5}[true]" value: { int64_value: 5 } } test { - name: "map_key_mix_type" + name: "map_key_mixed_type" expr: "{true:1,2:2,5u:3}[true]" value: { int64_value: 1 } } + test { + name: "map_key_mixed_numbers_double_key" + expr: "{1u: 1.0, 2: 2.0, 3u: 3.0}[3.0]" + value: { double_value: 3.0 } + } + test { + name: "map_key_mixed_numbers_lossy_double_key" + expr: "{1u: 1.0, 2: 2.0, 3u: 3.0}[3.1]" + eval_error: { + errors: { message: "no such key" } + } + } + test { + name: "map_key_mixed_numbers_uint_key" + expr: "{1u: 1.0, 2: 2.0, 3u: 3.0}[2u]" + value: { double_value: 2.0 } + } + test { + name: "map_key_mixed_numbers_int_key" + expr: "{1u: 1.0, 2: 2.0, 3u: 3.0}[1]" + value: { double_value: 1.0 } + } test { name: "map_field_access" expr: "x.name" type_env: { - name: "x", + name: "x" ident: { type: { map_type: { - key_type: {primitive: STRING} - value_type: {primitive: INT64} + key_type: { primitive: STRING } + value_type: { primitive: INT64 } } } } } bindings: { - key: "x", + key: "x" value: { value: { map_value: { @@ -64,22 +89,108 @@ section { errors: { message: "no such key" } } } + test { + name: "map_no_such_key_or_false" + expr: "dyn({0:1,2:2,5:3}[1]) || false" + eval_error: { + errors: { message: "no such key" } + } + } + test { + name: "map_no_such_key_or_true" + expr: "dyn({0:1,2:2,5:3}[1]) || true" + value: { bool_value: true } + } + test { + name: "map_no_such_key_and_false" + expr: "dyn({0:1,2:2,5:3}[1]) && false" + value: { bool_value: false } + } + test { + name: "map_no_such_key_and_true" + expr: "dyn({0:1,2:2,5:3}[1]) && true" + eval_error: { + errors: { message: "no such key" } + } + } + test { + name: "map_bad_key_type" + expr: "{0:1,2:2,5:3}[dyn(b'')]" + eval_error: { + errors: { message: "no such key" } + } + } + test { + name: "map_bad_key_type_or_false" + expr: "dyn({0:1,2:2,5:3}[dyn(b'')]) || false" + eval_error: { + errors: { message: "no such key" } + } + } + test { + name: "map_bad_key_type_or_true" + expr: "dyn({0:1,2:2,5:3}[dyn(b'')]) || true" + value: { bool_value: true } + } + test { + name: "map_bad_key_type_and_false" + expr: "dyn({0:1,2:2,5:3}[dyn(b'')]) && false" + value: { bool_value: false } + } + test { + name: "map_bad_key_type_and_true" + expr: "dyn({0:1,2:2,5:3}[dyn(b'')]) && true" + eval_error: { + errors: { message: "no such key" } + } + } test { name: "map_field_select_no_such_key" expr: "x.name" type_env: { - name: "x", + name: "x" + ident: { + type: { + map_type: { + key_type: { primitive: STRING } + value_type: { primitive: STRING } + } + } + } + } + bindings: { + key: "x" + value: { + value: { + map_value: { + entries { + key: { string_value: "holiday" } + value: { string_value: "field" } + } + } + } + } + } + eval_error: { + errors: { message: "no such key: 'name'" } + } + } + test { + name: "map_field_select_no_such_key_or_false" + expr: "dyn(x.name) || false" + type_env: { + name: "x" ident: { type: { map_type: { - key_type: {primitive: STRING} - value_type: {primitive: STRING} + key_type: { primitive: STRING } + value_type: { primitive: STRING } } } } } bindings: { - key: "x", + key: "x" value: { value: { map_value: { @@ -92,23 +203,112 @@ section { } } eval_error: { - errors: { message:"no such key: 'name'" } + errors: { message: "no such key: 'name'" } + } + } + test { + name: "map_field_select_no_such_key_or_true" + expr: "dyn(x.name) || true" + type_env: { + name: "x" + ident: { + type: { + map_type: { + key_type: { primitive: STRING } + value_type: { primitive: STRING } + } + } + } + } + bindings: { + key: "x" + value: { + value: { + map_value: { + entries { + key: { string_value: "holiday" } + value: { string_value: "field" } + } + } + } + } + } + value: { bool_value: true } + } + test { + name: "map_field_select_no_such_key_and_false" + expr: "dyn(x.name) && false" + type_env: { + name: "x" + ident: { + type: { + map_type: { + key_type: { primitive: STRING } + value_type: { primitive: STRING } + } + } + } + } + bindings: { + key: "x" + value: { + value: { + map_value: { + entries { + key: { string_value: "holiday" } + value: { string_value: "field" } + } + } + } + } + } + value: { bool_value: false } + } + test { + name: "map_field_select_no_such_key_and_true" + expr: "dyn(x.name) && true" + type_env: { + name: "x" + ident: { + type: { + map_type: { + key_type: { primitive: STRING } + value_type: { primitive: STRING } + } + } + } + } + bindings: { + key: "x" + value: { + value: { + map_value: { + entries { + key: { string_value: "holiday" } + value: { string_value: "field" } + } + } + } + } + } + eval_error: { + errors: { message: "no such key: 'name'" } } } test { name: "map_value_null" - expr: '{true:null}[true]' + expr: "{true:null}[true]" value: { null_value: NULL_VALUE } } test { name: "map_value_bool" - expr: '{27:false}[27]' + expr: "{27:false}[27]" value: { bool_value: false } } test { name: "map_value_string" expr: "{'n':'x'}['n']" - value: { string_value: 'x' } + value: { string_value: "x" } } test { name: "map_value_float" @@ -127,12 +327,12 @@ section { } test { name: "map_value_bytes" - expr: '{0:b""}[0]' + expr: "{0:b''}[0]" value: { bytes_value: "" } } test { name: "map_value_list" - expr: '{0u:[1]}[0u]' + expr: "{0u:[1]}[0u]" value: { list_value: { values: { int64_value: 1 } @@ -141,7 +341,7 @@ section { } test { name: "map_value_map" - expr: '{"map": {"k": "v"}}["map"]' + expr: "{'map': {'k': 'v'}}['map']" value: { map_value { entries { @@ -153,7 +353,7 @@ section { } test { name: "map_value_mix_type" - expr: '{"map": {"k": "v"}, "list": [1]}["map"]' + expr: "{'map': {'k': 'v'}, 'list': [1]}['map']" value: { map_value { entries { @@ -183,6 +383,40 @@ section { value: { bool_value: false } } } +section { + name: "quoted_map_fields" + description: "Field accesses using the quote syntax" + test { + name: "field_access_slash" + expr: "{'/api/v1': true, '/api/v2': false}.`/api/v1`" + value: { bool_value: true } + } + test { + name: "field_access_dash" + expr: "{'content-type': 'application/json', 'content-length': 145}.`content-type` == 'application/json'" + value: { bool_value: true } + } + test { + name: "field_access_dot" + expr: "{'foo.txt': 32, 'bar.csv': 1024}.`foo.txt`" + value: { int64_value: 32 } + } + test { + name: "has_field_slash" + expr: "has({'/api/v1': true, '/api/v2': false}.`/api/v3`)" + value: { bool_value: false } + } + test { + name: "has_field_dash" + expr: "has({'content-type': 'application/json', 'content-length': 145}.`content-type`)" + value: { bool_value: true } + } + test { + name: "has_field_dot" + expr: "has({'foo.txt': 32, 'bar.csv': 1024}.`foo.txt`)" + value: { bool_value: true } + } +} section { name: "qualified_identifier_resolution" description: "Tests for qualified identifier resolution." @@ -190,11 +424,11 @@ section { name: "qualified_ident" expr: "a.b.c" type_env: { - name: "a.b.c", + name: "a.b.c" ident: { type: { primitive: STRING } } } bindings: { - key: "a.b.c", + key: "a.b.c" value: { value: { string_value: "yeah" } } } value: { string_value: "yeah" } @@ -203,18 +437,18 @@ section { name: "map_field_select" expr: "a.b.c" type_env: { - name: "a.b", + name: "a.b" ident: { type: { map_type: { - key_type: {primitive: STRING} - value_type: {primitive: STRING} + key_type: { primitive: STRING } + value_type: { primitive: STRING } } } } } bindings: { - key: "a.b", + key: "a.b" value: { value: { map_value: { @@ -233,20 +467,20 @@ section { description: "namespace resolution should try to find the longest prefix for the evaluator." expr: "a.b.c" type_env: { - name: "a.b.c", + name: "a.b.c" ident: { type: { primitive: STRING } } } bindings: { - key: "a.b.c", + key: "a.b.c" value: { value: { string_value: "yeah" } } } type_env: { - name: "a.b", + name: "a.b" ident: { type: { map_type: { - key_type: {primitive: STRING} - value_type: {primitive: STRING} + key_type: { primitive: STRING } + value_type: { primitive: STRING } } } } @@ -264,7 +498,7 @@ section { } } } - disable_check: true ## when check is disabled, the evaluator should evaluate it in the correct order + disable_check: true ## when check is disabled, the evaluator should evaluate it in the correct order value: { string_value: "yeah" } } test { @@ -272,17 +506,17 @@ section { expr: "a.b.pancakes" disable_check: true type_env: { - name: "a.b", + name: "a.b" ident: { type: { list_type: { - elem_type: {primitive: STRING} + elem_type: { primitive: STRING } } } } } bindings: { - key: "a.b", + key: "a.b" value: { value: { list_value: { @@ -293,7 +527,7 @@ section { } eval_error: { errors: { - message:"type 'list_type: > ' does not support field selection" + message: "type 'list_type: > ' does not support field selection" } } } @@ -302,7 +536,7 @@ section { expr: "a.pancakes" disable_check: true type_env: { - name: "a", + name: "a" ident: { type: { primitive: INT64 @@ -310,7 +544,7 @@ section { } } bindings: { - key: "a", + key: "a" value: { value: { int64_value: 15 @@ -319,7 +553,7 @@ section { } eval_error: { errors: { - message:"type 'int64_type' does not support field selection" + message: "type 'int64_type' does not support field selection" } } } @@ -328,20 +562,20 @@ section { description: "namespace resolution should try to find the longest prefix for the checker." expr: "a.b.c" type_env: { - name: "a.b.c", + name: "a.b.c" ident: { type: { primitive: STRING } } } bindings: { - key: "a.b.c", + key: "a.b.c" value: { value: { string_value: "yeah" } } } type_env: { - name: "a.b", + name: "a.b" ident: { type: { map_type: { - key_type: {primitive: STRING} - value_type: {primitive: STRING} + key_type: { primitive: STRING } + value_type: { primitive: STRING } } } } @@ -365,7 +599,7 @@ section { name: "map_key_float" description: "map should not support float as the key." expr: "{3.3:15.15, 1.0: 5}[1.0]" - disable_check: true # need to make it fail in the evaluation phase + disable_check: true # need to make it fail in the evaluation phase eval_error: { errors: { message: "unsupported key type" } } @@ -376,7 +610,7 @@ section { name: "map_key_null" description: "map should not support null as the key." expr: "{null:false}[null]" - disable_check: true # need to make it fail in the evaluation phase + disable_check: true # need to make it fail in the evaluation phase eval_error: { errors: { message: "unsupported key type" } } @@ -393,6 +627,16 @@ section { ## Current behavior: ## value: { int64_value: 1 } } + test { + name: "map_value_repeat_key_heterogeneous" + description: "map should not support repeated key." + expr: "{0: 1, 0u: 2}[0.0]" + eval_error: { + errors: { message: "Failed with repeated key" } + } + ## Current behavior: + ## value: { int64_value: 1 } + } } section { name: "in" @@ -417,4 +661,14 @@ section { expr: "'spider' in {'ant': 6, 'fly': 6, 'centipede': 100}" value: { bool_value: false } } + test { + name: "mixed_numbers_and_keys_present" + expr: "3.0 in {1: 1, 2: 2, 3u: 3} && 2u in {1u: 1, 2: 2} && 1 in {1u: 1, 2: 2}" + value: { bool_value: true } + } + test { + name: "mixed_numbers_and_keys_absent" + expr: "3.1 in {1: 1, 2: 2, 3u: 3}" + value: { bool_value: false } + } } diff --git a/features/fp_math.feature b/features/fp_math.feature index 5a8961d..761a757 100644 --- a/features/fp_math.feature +++ b/features/fp_math.feature @@ -1,214 +1,161 @@ - +@conformance Feature: fp_math Tests for floating-point math. # fp_math -- Simple tests for floating point. -Scenario: add_positive_positive - - When CEL expression "4.25 + 15.25" is evaluated - # double_value:19.5 - Then value is DoubleType(source=19.5) - - -Scenario: add_positive_negative - - When CEL expression "17.75 + (-7.75)" is evaluated - # double_value:10 - Then value is DoubleType(source=10) - - -Scenario: add_negative_negative - - When CEL expression "-4.125 + (-2.125)" is evaluated - # double_value:-6.25 - Then value is DoubleType(source=-6.25) +Scenario: fp_math/add_positive_positive -Scenario: sub_positive_positive + When CEL expression '4.25 + 15.25' is evaluated + Then value is celpy.celtypes.DoubleType(source=19.5) - When CEL expression "42.0 - 12.0" is evaluated - # double_value:30 - Then value is DoubleType(source=30) +Scenario: fp_math/add_positive_negative + When CEL expression '17.75 + (-7.75)' is evaluated + Then value is celpy.celtypes.DoubleType(source=10.0) -Scenario: sub_positive_negative +Scenario: fp_math/add_negative_negative - When CEL expression "42.875 - (-22.0)" is evaluated - # double_value:64.875 - Then value is DoubleType(source=64.875) + When CEL expression '-4.125 + (-2.125)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-6.25) +Scenario: fp_math/sub_positive_positive -Scenario: sub_negative_negative + When CEL expression '42.0 - 12.0' is evaluated + Then value is celpy.celtypes.DoubleType(source=30.0) - When CEL expression "-4.875 - (-0.125)" is evaluated - # double_value:-4.75 - Then value is DoubleType(source=-4.75) +Scenario: fp_math/sub_positive_negative + When CEL expression '42.875 - (-22.0)' is evaluated + Then value is celpy.celtypes.DoubleType(source=64.875) -Scenario: multiply_positive_positive +Scenario: fp_math/sub_negative_negative - When CEL expression "42.5 * 0.2" is evaluated - # double_value:8.5 - Then value is DoubleType(source=8.5) + When CEL expression '-4.875 - (-0.125)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-4.75) +Scenario: fp_math/multiply_positive_positive -Scenario: multiply_positive_negative + When CEL expression '42.5 * 0.2' is evaluated + Then value is celpy.celtypes.DoubleType(source=8.5) - When CEL expression "40.75 * (-2.25)" is evaluated - # double_value:-91.6875 - Then value is DoubleType(source=-91.6875) +Scenario: fp_math/multiply_positive_negative + When CEL expression '40.75 * (-2.25)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-91.6875) -Scenario: multiply_negative_negative +Scenario: fp_math/multiply_negative_negative - When CEL expression "-3.0 * (-2.5)" is evaluated - # double_value:7.5 - Then value is DoubleType(source=7.5) + When CEL expression '-3.0 * (-2.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=7.5) +Scenario: fp_math/divide_positive_positive -Scenario: divide_positive_positive + When CEL expression '0.0625 / 0.002' is evaluated + Then value is celpy.celtypes.DoubleType(source=31.25) - When CEL expression "0.0625 / 0.002" is evaluated - # double_value:31.25 - Then value is DoubleType(source=31.25) +Scenario: fp_math/divide_positive_negative + When CEL expression '-2.0 / 2.0' is evaluated + Then value is celpy.celtypes.DoubleType(source=-1.0) -Scenario: divide_positive_negative +Scenario: fp_math/divide_negative_negative - When CEL expression "-2.0 / 2.0" is evaluated - # double_value:-1 - Then value is DoubleType(source=-1) + When CEL expression '-8.875 / (-0.0625)' is evaluated + Then value is celpy.celtypes.DoubleType(source=142.0) +Scenario: fp_math/mod_not_support -Scenario: divide_negative_negative - - When CEL expression "-8.875 / (-0.0625)" is evaluated - # double_value:142 - Then value is DoubleType(source=142) - - -Scenario: mod_not_support - - When CEL expression "47.5 % 5.5" is evaluated - # errors:{message:"found no matching overload for '_%_' applied to '(double, double)'"} + Given disable_check parameter is True + When CEL expression '47.5 % 5.5' is evaluated Then eval_error is "found no matching overload for '_%_' applied to '(double, double)'" +Scenario: fp_math/negative -Scenario: negative - - When CEL expression "-(4.5)" is evaluated - # double_value:-4.5 - Then value is DoubleType(source=-4.5) - - -Scenario: double_negative + When CEL expression '-(4.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-4.5) - When CEL expression "-(-1.25)" is evaluated - # double_value:1.25 - Then value is DoubleType(source=1.25) +Scenario: fp_math/double_negative + When CEL expression '-(-1.25)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.25) -Scenario: negative_zero +Scenario: fp_math/negative_zero - When CEL expression "-(0.0)" is evaluated - # double_value:-0 - Then value is DoubleType(source=0) + When CEL expression '-(0.0)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-0.0) +Scenario: fp_math/divide_zero -Scenario: divide_zero + When CEL expression '15.75 / 0.0' is evaluated + Then value is celpy.celtypes.DoubleType(source=float('inf')) - When CEL expression "15.75 / 0.0" is evaluated - # double_value:inf - Then value is DoubleType(source='inf') +Scenario: fp_math/multiply_zero + When CEL expression '15.36 * 0.0' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) -Scenario: multiply_zero +Scenario: fp_math/add_left_identity - When CEL expression "15.36 * 0.0" is evaluated - # double_value:0 - Then value is DoubleType(source=0) + When CEL expression '0.0 + 1.75' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.75) +Scenario: fp_math/add_right_identity -Scenario: add_left_identity + When CEL expression ' 2.5 + 0.0' is evaluated + Then value is celpy.celtypes.DoubleType(source=2.5) - When CEL expression "0.0 + 1.75" is evaluated - # double_value:1.75 - Then value is DoubleType(source=1.75) +Scenario: fp_math/add_commutative + When CEL expression '7.5 + 1.5 == 1.5 + 7.5' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: add_right_identity +Scenario: fp_math/add_associative - When CEL expression " 2.5 + 0.0" is evaluated - # double_value:2.5 - Then value is DoubleType(source=2.5) + When CEL expression '5.625 + (15.75 + 2.0) == (5.625 + 15.75) + 2.0' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: fp_math/mul_left_identity -Scenario: add_commutative + When CEL expression '1.0 * 45.25' is evaluated + Then value is celpy.celtypes.DoubleType(source=45.25) - When CEL expression "7.5 + 1.5 == 1.5 + 7.5" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: fp_math/mul_right_identity + When CEL expression '-25.25 * 1.0' is evaluated + Then value is celpy.celtypes.DoubleType(source=-25.25) -Scenario: add_associative +Scenario: fp_math/mul_commutative - When CEL expression "5.625 + (15.75 + 2.0) == (5.625 + 15.75) + 2.0" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '1.5 * 25.875 == 25.875 * 1.5' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: fp_math/mul_associative -Scenario: mul_left_identity + When CEL expression '1.5 * (23.625 * 0.75) == (1.5 * 23.625) * 0.75' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "1.0 * 45.25" is evaluated - # double_value:45.25 - Then value is DoubleType(source=45.25) +Scenario: fp_math/add_mul_distribute + When CEL expression '5.75 * (1.5 + 2.5) == 5.75 * 1.5 + 5.75 * 2.5' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: mul_right_identity - - When CEL expression "-25.25 * 1.0" is evaluated - # double_value:-25.25 - Then value is DoubleType(source=-25.25) - - -Scenario: mul_commutative - - When CEL expression "1.5 * 25.875 == 25.875 * 1.5" is evaluated - # bool_value:true - Then value is BoolType(source=True) - - -Scenario: mul_associative - - When CEL expression "1.5 * (23.625 * 0.75) == (1.5 * 23.625) * 0.75" is evaluated - # bool_value:true - Then value is BoolType(source=True) - - -Scenario: add_mul_distribute - - When CEL expression "5.75 * (1.5 + 2.5) == 5.75 * 1.5 + 5.75 * 2.5" is evaluated - # bool_value:true - Then value is BoolType(source=True) - - -Scenario: fp_overflow_positive +Scenario: fp_math/fp_overflow_positive DBL_MAX(2^1023) times two - When CEL expression "2.0 * 8.988466e+307 " is evaluated - # double_value:inf - Then value is DoubleType(source='inf') + When CEL expression '2.0 * 8.988466e+307 ' is evaluated + Then value is celpy.celtypes.DoubleType(source=float('inf')) -Scenario: fp_overflow_negative +Scenario: fp_math/fp_overflow_negative -DBL_MAX(-2^1023) times two - When CEL expression "2.0 * -8.988466e+307 " is evaluated - # double_value:-inf - Then value is DoubleType(source='-inf') + When CEL expression '2.0 * -8.988466e+307 ' is evaluated + Then value is celpy.celtypes.DoubleType(source=float('-inf')) -Scenario: fp_underflow +Scenario: fp_math/fp_underflow DBL_MIN(2^-1074) divided by two - When CEL expression "1e-324 / 2.0" is evaluated - # double_value:0 - Then value is DoubleType(source=0) + + When CEL expression '1e-324 / 2.0' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) + diff --git a/features/fp_math.textproto b/features/fp_math.textproto index 38a3eae..72474bc 100644 --- a/features/fp_math.textproto +++ b/features/fp_math.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + name: "fp_math" description: "Tests for floating-point math." section { diff --git a/features/integer_math.feature b/features/integer_math.feature index c35fc54..1d52ec6 100644 --- a/features/integer_math.feature +++ b/features/integer_math.feature @@ -1,406 +1,346 @@ - +@conformance Feature: integer_math Tests for int and uint math. # int64_math -- Simple tests for int64. -Scenario: add_positive_positive - - When CEL expression "40 + 2" is evaluated - # int64_value:42 - Then value is IntType(source=42) - - -Scenario: add_positive_negative - - When CEL expression "42 + (-7)" is evaluated - # int64_value:35 - Then value is IntType(source=35) - - -Scenario: add_negative_negative - - When CEL expression "-4 + (-2)" is evaluated - # int64_value:-6 - Then value is IntType(source=-6) - - -Scenario: sub_positive_positive - - When CEL expression "42 - 12" is evaluated - # int64_value:30 - Then value is IntType(source=30) - - -Scenario: sub_positive_negative - - When CEL expression "42 - (-22)" is evaluated - # int64_value:64 - Then value is IntType(source=64) +Scenario: int64_math/add_positive_positive -Scenario: sub_negative_negative + When CEL expression '40 + 2' is evaluated + Then value is celpy.celtypes.IntType(source=42) - When CEL expression "-42 - (-12)" is evaluated - # int64_value:-30 - Then value is IntType(source=-30) +Scenario: int64_math/add_positive_negative + When CEL expression '42 + (-7)' is evaluated + Then value is celpy.celtypes.IntType(source=35) -Scenario: multiply_positive_positive +Scenario: int64_math/add_negative_negative - When CEL expression "42 * 2" is evaluated - # int64_value:84 - Then value is IntType(source=84) + When CEL expression '-4 + (-2)' is evaluated + Then value is celpy.celtypes.IntType(source=-6) +Scenario: int64_math/sub_positive_positive -Scenario: multiply_positive_negative + When CEL expression '42 - 12' is evaluated + Then value is celpy.celtypes.IntType(source=30) - When CEL expression "40 * (-2)" is evaluated - # int64_value:-80 - Then value is IntType(source=-80) +Scenario: int64_math/sub_positive_negative + When CEL expression '42 - (-22)' is evaluated + Then value is celpy.celtypes.IntType(source=64) -Scenario: multiply_negative_negative +Scenario: int64_math/sub_negative_negative - When CEL expression "-30 * (-2)" is evaluated - # int64_value:60 - Then value is IntType(source=60) + When CEL expression '-42 - (-12)' is evaluated + Then value is celpy.celtypes.IntType(source=-30) +Scenario: int64_math/multiply_positive_positive -Scenario: divide_positive_positive + When CEL expression '42 * 2' is evaluated + Then value is celpy.celtypes.IntType(source=84) - When CEL expression "42 / 2" is evaluated - # int64_value:21 - Then value is IntType(source=21) +Scenario: int64_math/multiply_positive_negative + When CEL expression '40 * (-2)' is evaluated + Then value is celpy.celtypes.IntType(source=-80) -Scenario: divide_positive_negative +Scenario: int64_math/multiply_negative_negative - When CEL expression "-20 / 2" is evaluated - # int64_value:-10 - Then value is IntType(source=-10) + When CEL expression '-30 * (-2)' is evaluated + Then value is celpy.celtypes.IntType(source=60) +Scenario: int64_math/divide_positive_positive -Scenario: divide_negative_negative + When CEL expression '42 / 2' is evaluated + Then value is celpy.celtypes.IntType(source=21) - When CEL expression "-80 / (-2)" is evaluated - # int64_value:40 - Then value is IntType(source=40) +Scenario: int64_math/divide_positive_negative + When CEL expression '-20 / 2' is evaluated + Then value is celpy.celtypes.IntType(source=-10) -Scenario: mod_positive_positive +Scenario: int64_math/divide_negative_negative - When CEL expression "47 % 5" is evaluated - # int64_value:2 - Then value is IntType(source=2) + When CEL expression '-80 / (-2)' is evaluated + Then value is celpy.celtypes.IntType(source=40) +Scenario: int64_math/mod_positive_positive -Scenario: mod_positive_negative + When CEL expression '47 % 5' is evaluated + Then value is celpy.celtypes.IntType(source=2) - When CEL expression "43 % (-5)" is evaluated - # int64_value:3 - Then value is IntType(source=3) +Scenario: int64_math/mod_positive_negative + When CEL expression '43 % (-5)' is evaluated + Then value is celpy.celtypes.IntType(source=3) -Scenario: mod_negative_negative +Scenario: int64_math/mod_negative_negative - When CEL expression "-42 % (-5)" is evaluated - # int64_value:-2 - Then value is IntType(source=-2) + When CEL expression '-42 % (-5)' is evaluated + Then value is celpy.celtypes.IntType(source=-2) +Scenario: int64_math/mod_negative_positive -Scenario: mod_negative_positive + When CEL expression '-3 % 5' is evaluated + Then value is celpy.celtypes.IntType(source=-3) - When CEL expression "-3 % 5" is evaluated - # int64_value:-3 - Then value is IntType(source=-3) +Scenario: int64_math/unary_minus_pos + When CEL expression '-(42)' is evaluated + Then value is celpy.celtypes.IntType(source=-42) -Scenario: unary_minus_pos +Scenario: int64_math/unary_minus_neg - When CEL expression "-(42)" is evaluated - # int64_value:-42 - Then value is IntType(source=-42) + When CEL expression '-(-42)' is evaluated + Then value is celpy.celtypes.IntType(source=42) +Scenario: int64_math/unary_minus_no_overload -Scenario: unary_minus_neg - - When CEL expression "-(-42)" is evaluated - # int64_value:42 - Then value is IntType(source=42) - - -Scenario: unary_minus_no_overload - - When CEL expression "-(42u)" is evaluated - # errors:{message:"no_such_overload"} + Given disable_check parameter is True + When CEL expression '-(42u)' is evaluated Then eval_error is 'no_such_overload' +Scenario: int64_math/unary_minus_not_bool -Scenario: unary_minus_not_bool - - When CEL expression "-false" is evaluated - # errors:{message:"no_such_overload"} + Given disable_check parameter is True + When CEL expression '-false' is evaluated Then eval_error is 'no_such_overload' +Scenario: int64_math/mod_zero -Scenario: mod_zero - - When CEL expression "34 % 0" is evaluated - # errors:{message:"modulus by zero"} + When CEL expression '34 % 0' is evaluated Then eval_error is 'modulus by zero' +Scenario: int64_math/negative_zero -Scenario: negtive_zero - - When CEL expression "-(0)" is evaluated - # int64_value:0 - Then value is IntType(source=0) + When CEL expression '-(0)' is evaluated + Then value is celpy.celtypes.IntType(source=0) +Scenario: int64_math/double_negative -Scenario: double_negative + When CEL expression '-(-42)' is evaluated + Then value is celpy.celtypes.IntType(source=42) - When CEL expression "-(-42)" is evaluated - # int64_value:42 - Then value is IntType(source=42) +Scenario: int64_math/divide_zero - -Scenario: divide_zero - - When CEL expression "15 / 0" is evaluated - # errors:{message:"divide by zero"} + When CEL expression '15 / 0' is evaluated Then eval_error is 'divide by zero' +Scenario: int64_math/multiply_zero -Scenario: multiply_zero + When CEL expression '15 * 0' is evaluated + Then value is celpy.celtypes.IntType(source=0) - When CEL expression "15 * 0" is evaluated - # int64_value:0 - Then value is IntType(source=0) +Scenario: int64_math/add_left_identity + When CEL expression '0 + 17' is evaluated + Then value is celpy.celtypes.IntType(source=17) -Scenario: add_left_identity +Scenario: int64_math/add_right_identity - When CEL expression "0 + 17" is evaluated - # int64_value:17 - Then value is IntType(source=17) + When CEL expression ' 29 + 0' is evaluated + Then value is celpy.celtypes.IntType(source=29) +Scenario: int64_math/add_commutative -Scenario: add_right_identity + When CEL expression '75 + 15 == 15 + 75' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression " 29 + 0" is evaluated - # int64_value:29 - Then value is IntType(source=29) +Scenario: int64_math/add_associative + When CEL expression '5 + (15 + 20) == (5 + 15) + 20' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: add_commutative +Scenario: int64_math/mul_left_identity - When CEL expression "75 + 15 == 15 + 75" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '1 * 45' is evaluated + Then value is celpy.celtypes.IntType(source=45) +Scenario: int64_math/mul_right_identity -Scenario: add_associative + When CEL expression '-25 * 1' is evaluated + Then value is celpy.celtypes.IntType(source=-25) - When CEL expression "5 + (15 + 20) == (5 + 15) + 20" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: int64_math/mul_commutative + When CEL expression '15 * 25 == 25 * 15' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: mul_left_identity +Scenario: int64_math/mul_associative - When CEL expression "1 * 45" is evaluated - # int64_value:45 - Then value is IntType(source=45) + When CEL expression '15 * (23 * 88) == (15 * 23) * 88' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: int64_math/add_mul_distribute -Scenario: mul_right_identity + When CEL expression '5 * (15 + 25) == 5 * 15 + 5 * 25' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "-25 * 1" is evaluated - # int64_value:-25 - Then value is IntType(source=-25) +Scenario: int64_math/int64_overflow_positive + LLONG_MAX plus one. + When CEL expression '9223372036854775807 + 1' is evaluated + Then eval_error is 'return error for overflow' -Scenario: mul_commutative +Scenario: int64_math/int64_overflow_negative + LLONG_MIN minus one. - When CEL expression "15 * 25 == 25 * 15" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '-9223372036854775808 - 1' is evaluated + Then eval_error is 'return error for overflow' +Scenario: int64_math/int64_overflow_add_negative + negative overflow via addition -Scenario: mul_associative + When CEL expression '-9223372036854775808 + (-1)' is evaluated + Then eval_error is 'return error for overflow' - When CEL expression "15 * (23 * 88) == (15 * 23) * 88" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: int64_math/int64_overflow_sub_positive + positive overflow via subtraction + When CEL expression '1 - (-9223372036854775807)' is evaluated + Then eval_error is 'return error for overflow' -Scenario: add_mul_distribute +Scenario: int64_math/int64_min_negate + Negated LLONG_MIN is not representable. - When CEL expression "5 * (15 + 25) == 5 * 15 + 5 * 25" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '-(-9223372036854775808)' is evaluated + Then eval_error is 'return error for overflow' +Scenario: int64_math/int64_min_negate_mul + Negate LLONG_MIN via multiplication -Scenario: int64_overflow_positive - LLONG_MAX plus one. - When CEL expression "9223372036854775807 + 1" is evaluated - # errors:{message:"return error for overflow"} + When CEL expression '(-9223372036854775808) * -1' is evaluated Then eval_error is 'return error for overflow' +Scenario: int64_math/int64_min_negate_div + Negate LLONG_MIN via division. -Scenario: int64_overflow_negative - LLONG_MIN minus one. - When CEL expression "-9223372036854775808 - 1" is evaluated - # errors:{message:"return error for overflow"} + When CEL expression '(-9223372036854775808)/-1' is evaluated Then eval_error is 'return error for overflow' +Scenario: int64_math/int64_overflow_mul_positive + Overflow via multiplication. -Scenario: int64_min_negate - Negated LLONG_MIN is not representable. - When CEL expression "-(-9223372036854775808)" is evaluated - # errors:{message:"return error for overflow"} + When CEL expression '5000000000 * 5000000000' is evaluated Then eval_error is 'return error for overflow' +Scenario: int64_math/int64_overflow_mul_negative + Overflow via multiplication. -Scenario: uint64_overflow_positive - ULLONG_MAX plus one. - When CEL expression "18446744073709551615u + 1u" is evaluated - # errors:{message:"return error for overflow"} + When CEL expression '(-5000000000) * 5000000000' is evaluated Then eval_error is 'return error for overflow' +Scenario: int64_math/uint64_overflow_positive + ULLONG_MAX plus one. -Scenario: uint64_overflow_negative - zero minus one. - When CEL expression "0u - 1u" is evaluated - # errors:{message:"return error for overflow"} + When CEL expression '18446744073709551615u + 1u' is evaluated Then eval_error is 'return error for overflow' +Scenario: int64_math/uint64_overflow_negative + zero minus one. + When CEL expression '0u - 1u' is evaluated + Then eval_error is 'return error for overflow' -# uint64_math -- Simple tests for uint64. - -Scenario: add +Scenario: int64_math/uint64_overflow_mul_positive + Overflow via multiplication. - When CEL expression "42u + 2u" is evaluated - # uint64_value:44 - Then value is UintType(source=44) + When CEL expression '5000000000u * 5000000000u' is evaluated + Then eval_error is 'return error for overflow' -Scenario: sub +# uint64_math -- Simple tests for uint64. - When CEL expression "42u - 12u" is evaluated - # uint64_value:30 - Then value is UintType(source=30) +Scenario: uint64_math/add -Scenario: multiply + When CEL expression '42u + 2u' is evaluated + Then value is celpy.celtypes.UintType(source=44) - When CEL expression "40u * 2u" is evaluated - # uint64_value:80 - Then value is UintType(source=80) +Scenario: uint64_math/sub + When CEL expression '42u - 12u' is evaluated + Then value is celpy.celtypes.UintType(source=30) -Scenario: divide +Scenario: uint64_math/multiply - When CEL expression "60u / 2u" is evaluated - # uint64_value:30 - Then value is UintType(source=30) + When CEL expression '40u * 2u' is evaluated + Then value is celpy.celtypes.UintType(source=80) +Scenario: uint64_math/divide -Scenario: mod + When CEL expression '60u / 2u' is evaluated + Then value is celpy.celtypes.UintType(source=30) - When CEL expression "42u % 5u" is evaluated - # uint64_value:2 - Then value is UintType(source=2) +Scenario: uint64_math/mod + When CEL expression '42u % 5u' is evaluated + Then value is celpy.celtypes.UintType(source=2) -Scenario: negtive_no_overload +Scenario: uint64_math/negative_no_overload - When CEL expression "-(5u)" is evaluated - # errors:{message:"no such overload"} + Given disable_check parameter is True + When CEL expression '-(5u)' is evaluated Then eval_error is 'no such overload' +Scenario: uint64_math/mod_zero -Scenario: mod_zero - - When CEL expression "34u % 0u" is evaluated - # errors:{message:"modulus by zero"} + When CEL expression '34u % 0u' is evaluated Then eval_error is 'modulus by zero' +Scenario: uint64_math/divide_zero -Scenario: divide_zero - - When CEL expression "15u / 0u" is evaluated - # errors:{message:"divide by zero"} + When CEL expression '15u / 0u' is evaluated Then eval_error is 'divide by zero' +Scenario: uint64_math/multiply_zero -Scenario: multiply_zero - - When CEL expression "15u * 0u" is evaluated - # uint64_value:0 - Then value is UintType(source=0) - - -Scenario: add_left_identity - - When CEL expression "0u + 17u" is evaluated - # uint64_value:17 - Then value is UintType(source=17) - - -Scenario: add_right_identity - - When CEL expression " 29u + 0u" is evaluated - # uint64_value:29 - Then value is UintType(source=29) - - -Scenario: add_commutative + When CEL expression '15u * 0u' is evaluated + Then value is celpy.celtypes.UintType(source=0) - When CEL expression "75u + 15u == 15u + 75u" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: uint64_math/add_left_identity + When CEL expression '0u + 17u' is evaluated + Then value is celpy.celtypes.UintType(source=17) -Scenario: add_associative +Scenario: uint64_math/add_right_identity - When CEL expression "5u + (15u + 20u) == (5u + 15u) + 20u" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression ' 29u + 0u' is evaluated + Then value is celpy.celtypes.UintType(source=29) +Scenario: uint64_math/add_commutative -Scenario: mul_left_identity + When CEL expression '75u + 15u == 15u + 75u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "1u * 45u" is evaluated - # uint64_value:45 - Then value is UintType(source=45) +Scenario: uint64_math/add_associative + When CEL expression '5u + (15u + 20u) == (5u + 15u) + 20u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: mul_right_identity +Scenario: uint64_math/mul_left_identity - When CEL expression "25u * 1u" is evaluated - # uint64_value:25 - Then value is UintType(source=25) + When CEL expression '1u * 45u' is evaluated + Then value is celpy.celtypes.UintType(source=45) +Scenario: uint64_math/mul_right_identity -Scenario: mul_commutative + When CEL expression '25u * 1u' is evaluated + Then value is celpy.celtypes.UintType(source=25) - When CEL expression "15u * 25u == 25u * 15u" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: uint64_math/mul_commutative + When CEL expression '15u * 25u == 25u * 15u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: mul_associative +Scenario: uint64_math/mul_associative - When CEL expression "15u * (23u * 88u) == (15u * 23u) * 88u" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '15u * (23u * 88u) == (15u * 23u) * 88u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: uint64_math/add_mul_distribute -Scenario: add_mul_distribute + When CEL expression '5u * (15u + 25u) == 5u * 15u + 5u * 25u' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "5u * (15u + 25u) == 5u * 15u + 5u * 25u" is evaluated - # bool_value:true - Then value is BoolType(source=True) diff --git a/features/integer_math.textproto b/features/integer_math.textproto index 4662ac0..c0d4f51 100644 --- a/features/integer_math.textproto +++ b/features/integer_math.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + name: "integer_math" description: "Tests for int and uint math." section { @@ -117,7 +120,7 @@ section { } } test { - name: "negtive_zero" + name: "negative_zero" expr: "-(0)" value: { int64_value: 0 } } @@ -199,6 +202,22 @@ section { errors: { message: "return error for overflow" } } } + test { + name: "int64_overflow_add_negative" + description: "negative overflow via addition" + expr: "-9223372036854775808 + (-1)" + eval_error: { + errors: { message: "return error for overflow" } + } + } + test { + name: "int64_overflow_sub_positive" + description: "positive overflow via subtraction" + expr: "1 - (-9223372036854775807)" + eval_error: { + errors: { message: "return error for overflow" } + } + } test { name: "int64_min_negate" description: "Negated LLONG_MIN is not representable." @@ -207,6 +226,38 @@ section { errors: { message: "return error for overflow" } } } + test { + name: "int64_min_negate_mul" + description: "Negate LLONG_MIN via multiplication" + expr: "(-9223372036854775808) * -1" + eval_error: { + errors: { message: "return error for overflow" } + } + } + test { + name: "int64_min_negate_div" + description: "Negate LLONG_MIN via division." + expr: "(-9223372036854775808)/-1" + eval_error: { + errors: { message: "return error for overflow" } + } + } + test { + name: "int64_overflow_mul_positive" + description: "Overflow via multiplication." + expr: "5000000000 * 5000000000" + eval_error: { + errors: { message: "return error for overflow" } + } + } + test { + name: "int64_overflow_mul_negative" + description: "Overflow via multiplication." + expr: "(-5000000000) * 5000000000" + eval_error: { + errors: { message: "return error for overflow" } + } + } test { name: "uint64_overflow_positive" description: "ULLONG_MAX plus one." @@ -214,8 +265,6 @@ section { eval_error: { errors: { message: "return error for overflow" } } - ## Current behavior: - ## value: { uint64_value: 0 } } test { name: "uint64_overflow_negative" @@ -224,8 +273,14 @@ section { eval_error: { errors: { message: "return error for overflow" } } - ## Current behavior: - ## value: { uint64_value: 18446744073709551615 } + } + test { + name: "uint64_overflow_mul_positive" + description: "Overflow via multiplication." + expr: "5000000000u * 5000000000u" + eval_error: { + errors: { message: "return error for overflow" } + } } } section { @@ -257,7 +312,7 @@ section { value: { uint64_value: 2 } } test { - name: "negtive_no_overload" + name: "negative_no_overload" expr: "-(5u)" disable_check: true eval_error: { diff --git a/features/lists.feature b/features/lists.feature index 0cff81c..db78f0d 100644 --- a/features/lists.feature +++ b/features/lists.feature @@ -1,160 +1,221 @@ - +@conformance Feature: lists Tests for list operations. -# concatentation -- Tests for list concatenation. +# concatenation -- Tests for list concatenation. -Scenario: list_append - When CEL expression "[0, 1, 2] + [3, 4, 5] == [0, 1, 2, 3, 4, 5]" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: concatenation/list_append + When CEL expression '[0, 1, 2] + [3, 4, 5] == [0, 1, 2, 3, 4, 5]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: list_not_commutative +Scenario: concatenation/list_not_commutative - When CEL expression "[0, 1, 2] + [3, 4, 5] == [3, 4, 5, 0, 1, 2]" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '[0, 1, 2] + [3, 4, 5] == [3, 4, 5, 0, 1, 2]' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: concatenation/list_repeat -Scenario: list_repeat + When CEL expression '[2] + [2]' is evaluated + Then value is [celpy.celtypes.IntType(source=2), celpy.celtypes.IntType(source=2)] - When CEL expression "[2] + [2]" is evaluated - # list_value:{values:{int64_value:2} values:{int64_value:2}} - Then value is [IntType(source=2), IntType(source=2)] +Scenario: concatenation/empty_empty + When CEL expression '[] + []' is evaluated + Then value is [] -Scenario: empty_empty +Scenario: concatenation/left_unit - When CEL expression "[] + []" is evaluated - # list_value:{} - Then value is [] + When CEL expression '[] + [3, 4]' is evaluated + Then value is [celpy.celtypes.IntType(source=3), celpy.celtypes.IntType(source=4)] +Scenario: concatenation/right_unit -Scenario: left_unit + When CEL expression '[1, 2] + []' is evaluated + Then value is [celpy.celtypes.IntType(source=1), celpy.celtypes.IntType(source=2)] - When CEL expression "[] + [3, 4]" is evaluated - # list_value:{values:{int64_value:3} values:{int64_value:4}} - Then value is [IntType(source=3), IntType(source=4)] +# index -- List indexing tests. -Scenario: right_unit - When CEL expression "[1, 2] + []" is evaluated - # list_value:{values:{int64_value:1} values:{int64_value:2}} - Then value is [IntType(source=1), IntType(source=2)] +Scenario: index/zero_based + When CEL expression '[7, 8, 9][0]' is evaluated + Then value is celpy.celtypes.IntType(source=7) +@wip +Scenario: index/zero_based_double -# index -- List indexing tests. + When CEL expression '[7, 8, 9][dyn(0.0)]' is evaluated + Then value is celpy.celtypes.IntType(source=7) -Scenario: zero_based +Scenario: index/zero_based_double_error - When CEL expression "[7, 8, 9][0]" is evaluated - # int64_value:7 - Then value is IntType(source=7) + When CEL expression '[7, 8, 9][dyn(0.1)]' is evaluated + Then eval_error is 'invalid_argument' + +Scenario: index/zero_based_uint + When CEL expression '[7, 8, 9][dyn(0u)]' is evaluated + Then value is celpy.celtypes.IntType(source=7) -Scenario: singleton +Scenario: index/singleton When CEL expression "['foo'][0]" is evaluated - # string_value:"foo" - Then value is StringType(source='foo') + Then value is celpy.celtypes.StringType(source='foo') +Scenario: index/middle -Scenario: middle + When CEL expression '[0, 1, 1, 2, 3, 5, 8, 13][4]' is evaluated + Then value is celpy.celtypes.IntType(source=3) - When CEL expression "[0, 1, 1, 2, 3, 5, 8, 13][4]" is evaluated - # int64_value:3 - Then value is IntType(source=3) +Scenario: index/last + When CEL expression "['George', 'John', 'Paul', 'Ringo'][3]" is evaluated + Then value is celpy.celtypes.StringType(source='Ringo') -Scenario: last +Scenario: index/index_out_of_bounds - When CEL expression "['George', 'John', 'Paul', 'Ringo'][3]" is evaluated - # string_value:"Ringo" - Then value is StringType(source='Ringo') + When CEL expression '[1, 2, 3][3]' is evaluated + Then eval_error is 'invalid_argument' +Scenario: index/index_out_of_bounds_or_false -Scenario: range + When CEL expression 'dyn([1, 2, 3][3]) || false' is evaluated + Then eval_error is 'invalid_argument' + +Scenario: index/index_out_of_bounds_or_true + + When CEL expression 'dyn([1, 2, 3][3]) || true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: index/index_out_of_bounds_and_false + + When CEL expression 'dyn([1, 2, 3][3]) && false' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "[1, 2, 3][3]" is evaluated - # errors:{message:"invalid_argument"} +Scenario: index/index_out_of_bounds_and_true + + When CEL expression 'dyn([1, 2, 3][3]) && true' is evaluated Then eval_error is 'invalid_argument' +Scenario: index/bad_index_type + When CEL expression "[1, 2, 3][dyn('')]" is evaluated + Then eval_error is 'invalid_argument' -# in -- List membership tests. +Scenario: index/bad_index_type_or_false + + When CEL expression "dyn([1, 2, 3][dyn('')]) || false" is evaluated + Then eval_error is 'invalid_argument' -Scenario: empty +Scenario: index/bad_index_type_or_true - When CEL expression "7 in []" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression "dyn([1, 2, 3][dyn('')]) || true" is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: index/bad_index_type_and_false -Scenario: singleton + When CEL expression "dyn([1, 2, 3][dyn('')]) && false" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "4u in [4u]" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: index/bad_index_type_and_true + + When CEL expression "dyn([1, 2, 3][dyn('')]) && true" is evaluated + Then eval_error is 'invalid_argument' + + +# in -- List membership tests. -Scenario: first +Scenario: in/empty + + When CEL expression '7 in []' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: in/singleton + + When CEL expression '4u in [4u]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: in/first When CEL expression "'alpha' in ['alpha', 'beta', 'gamma']" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) +Scenario: in/middle -Scenario: middle + When CEL expression '3 in [5, 4, 3, 2, 1]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "3 in [5, 4, 3, 2, 1]" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: in/last + When CEL expression '20u in [4u, 6u, 8u, 12u, 20u]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: last +@wip +Scenario: in/double_in_ints - When CEL expression "20u in [4u, 6u, 8u, 12u, 20u]" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'dyn(3.0) in [5, 4, 3, 2, 1]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: in/uint_in_ints -Scenario: missing + When CEL expression 'dyn(3u) in [5, 4, 3, 2, 1]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "'hawaiian' in ['meat', 'veggie', 'margarita', 'cheese']" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: in/int_in_doubles + When CEL expression 'dyn(3) in [5.0, 4.0, 3.0, 2.0, 1.0]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: in/uint_in_doubles -# size -- List and map size tests. + When CEL expression 'dyn(3u) in [5.0, 4.0, 3.0, 2.0, 1.0]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: in/int_in_uints + + When CEL expression 'dyn(3) in [5u, 4u, 3u, 2u, 1u]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: in/double_in_uints + + When CEL expression 'dyn(3.0) in [5u, 4u, 3u, 2u, 1u]' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: list_empty +Scenario: in/missing + + When CEL expression "'hawaiian' in ['meat', 'veggie', 'margarita', 'cheese']" is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "size([])" is evaluated - # int64_value:0 - Then value is IntType(source=0) +# size -- List and map size tests. -Scenario: list - When CEL expression "size([1, 2, 3])" is evaluated - # int64_value:3 - Then value is IntType(source=3) +Scenario: size/list_empty + When CEL expression 'size([])' is evaluated + Then value is celpy.celtypes.IntType(source=0) -Scenario: map_empty +Scenario: size/list - When CEL expression "size({})" is evaluated - # int64_value:0 - Then value is IntType(source=0) + When CEL expression 'size([1, 2, 3])' is evaluated + Then value is celpy.celtypes.IntType(source=3) +Scenario: size/map_empty -Scenario: map + When CEL expression 'size({})' is evaluated + Then value is celpy.celtypes.IntType(source=0) + +Scenario: size/map When CEL expression "size({1: 'one', 2: 'two', 3: 'three'})" is evaluated - # int64_value:3 - Then value is IntType(source=3) + Then value is celpy.celtypes.IntType(source=3) + diff --git a/features/lists.textproto b/features/lists.textproto index fdf1ac5..2148118 100644 --- a/features/lists.textproto +++ b/features/lists.textproto @@ -1,7 +1,10 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + name: "lists" description: "Tests for list operations." section { - name: "concatentation" + name: "concatenation" description: "Tests for list concatenation." test { name: "list_append" @@ -57,6 +60,23 @@ section { expr: "[7, 8, 9][0]" value: { int64_value: 7 } } + test { + name: "zero_based_double" + expr: "[7, 8, 9][dyn(0.0)]" + value: { int64_value: 7 } + } + test { + name: "zero_based_double_error" + expr: "[7, 8, 9][dyn(0.1)]" + eval_error { + errors { message: "invalid_argument" } + } + } + test { + name: "zero_based_uint" + expr: "[7, 8, 9][dyn(0u)]" + value: { int64_value: 7 } + } test { name: "singleton" expr: "['foo'][0]" @@ -73,12 +93,67 @@ section { value: { string_value: "Ringo" } } test { - name: "range" + name: "index_out_of_bounds" expr: "[1, 2, 3][3]" eval_error { errors { message: "invalid_argument" } } } + test { + name: "index_out_of_bounds_or_false" + expr: "dyn([1, 2, 3][3]) || false" + eval_error { + errors { message: "invalid_argument" } + } + } + test { + name: "index_out_of_bounds_or_true" + expr: "dyn([1, 2, 3][3]) || true" + value: { bool_value: true } + } + test { + name: "index_out_of_bounds_and_false" + expr: "dyn([1, 2, 3][3]) && false" + value: { bool_value: false } + } + test { + name: "index_out_of_bounds_and_true" + expr: "dyn([1, 2, 3][3]) && true" + eval_error { + errors { message: "invalid_argument" } + } + } + test { + name: "bad_index_type" + expr: "[1, 2, 3][dyn('')]" + eval_error { + errors { message: "invalid_argument" } + } + } + test { + name: "bad_index_type_or_false" + expr: "dyn([1, 2, 3][dyn('')]) || false" + eval_error { + errors { message: "invalid_argument" } + } + } + test { + name: "bad_index_type_or_true" + expr: "dyn([1, 2, 3][dyn('')]) || true" + value: { bool_value: true } + } + test { + name: "bad_index_type_and_false" + expr: "dyn([1, 2, 3][dyn('')]) && false" + value: { bool_value: false } + } + test { + name: "bad_index_type_and_true" + expr: "dyn([1, 2, 3][dyn('')]) && true" + eval_error { + errors { message: "invalid_argument" } + } + } } section { name: "in" @@ -108,6 +183,36 @@ section { expr: "20u in [4u, 6u, 8u, 12u, 20u]" value: { bool_value: true } } + test { + name: "double_in_ints" + expr: "dyn(3.0) in [5, 4, 3, 2, 1]" + value: { bool_value: true } + } + test { + name: "uint_in_ints" + expr: "dyn(3u) in [5, 4, 3, 2, 1]" + value: { bool_value: true } + } + test { + name: "int_in_doubles" + expr: "dyn(3) in [5.0, 4.0, 3.0, 2.0, 1.0]" + value: { bool_value: true } + } + test { + name: "uint_in_doubles" + expr: "dyn(3u) in [5.0, 4.0, 3.0, 2.0, 1.0]" + value: { bool_value: true } + } + test { + name: "int_in_uints" + expr: "dyn(3) in [5u, 4u, 3u, 2u, 1u]" + value: { bool_value: true } + } + test { + name: "double_in_uints" + expr: "dyn(3.0) in [5u, 4u, 3u, 2u, 1u]" + value: { bool_value: true } + } test { name: "missing" expr: "'hawaiian' in ['meat', 'veggie', 'margarita', 'cheese']" diff --git a/features/logic.feature b/features/logic.feature index cd12265..bdd8f52 100644 --- a/features/logic.feature +++ b/features/logic.feature @@ -1,223 +1,178 @@ - +@conformance Feature: logic Tests for logical special operators. # conditional -- Tests for the conditional operator. -Scenario: true_case - When CEL expression "true ? 1 : 2" is evaluated - # int64_value:1 - Then value is IntType(source=1) +Scenario: conditional/true_case + When CEL expression 'true ? 1 : 2' is evaluated + Then value is celpy.celtypes.IntType(source=1) -Scenario: false_case +Scenario: conditional/false_case When CEL expression "false ? 'foo' : 'bar'" is evaluated - # string_value:"bar" - Then value is StringType(source='bar') - + Then value is celpy.celtypes.StringType(source='bar') -Scenario: error_case +Scenario: conditional/error_case When CEL expression "2 / 0 > 4 ? 'baz' : 'quux'" is evaluated - # errors:{message:"division by zero"} Then eval_error is 'division by zero' +Scenario: conditional/mixed_type -Scenario: mixed_type - + Given disable_check parameter is True When CEL expression "true ? 'cows' : 17" is evaluated - # string_value:"cows" - Then value is StringType(source='cows') - + Then value is celpy.celtypes.StringType(source='cows') -Scenario: bad_type +Scenario: conditional/bad_type + Given disable_check parameter is True When CEL expression "'cows' ? false : 17" is evaluated - # errors:{message:"no matching overload"} Then eval_error is 'no matching overload' - # AND -- Tests for logical AND. -Scenario: all_true - - When CEL expression "true && true" is evaluated - # bool_value:true - Then value is BoolType(source=True) - -Scenario: all_false +Scenario: AND/all_true - When CEL expression "false && false" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'true && true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: AND/all_false -Scenario: false_left + When CEL expression 'false && false' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "false && true" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: AND/false_left + When CEL expression 'false && true' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: false_right +Scenario: AND/false_right - When CEL expression "true && false" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression 'true && false' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: AND/short_circuit_type_left -Scenario: short_circuit_type_left + Given disable_check parameter is True + When CEL expression 'false && 32' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "false && 32" is evaluated - # bool_value:false - Then value is BoolType(source=False) - - -Scenario: short_circuit_type_right +Scenario: AND/short_circuit_type_right + Given disable_check parameter is True When CEL expression "'horses' && false" is evaluated - # bool_value:false - Then value is BoolType(source=False) - - -Scenario: short_circuit_error_left + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "false && (2 / 0 > 3 ? false : true)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: AND/short_circuit_error_left + When CEL expression 'false && (2 / 0 > 3 ? false : true)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: short_circuit_error_right +Scenario: AND/short_circuit_error_right - When CEL expression "(2 / 0 > 3 ? false : true) && false" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '(2 / 0 > 3 ? false : true) && false' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: AND/error_right -Scenario: error_right - - When CEL expression "true && 1/0 != 0" is evaluated - # errors:{message:"no matching overload"} + When CEL expression 'true && 1/0 != 0' is evaluated Then eval_error is 'no matching overload' +Scenario: AND/error_left -Scenario: error_left - - When CEL expression "1/0 != 0 && true" is evaluated - # errors:{message:"no matching overload"} + When CEL expression '1/0 != 0 && true' is evaluated Then eval_error is 'no matching overload' +Scenario: AND/no_overload -Scenario: no_overload - + Given disable_check parameter is True When CEL expression "'less filling' && 'tastes great'" is evaluated - # errors:{message:"no matching overload"} Then eval_error is 'no matching overload' - # OR -- Tests for logical OR -Scenario: all_true - - When CEL expression "true || true" is evaluated - # bool_value:true - Then value is BoolType(source=True) - - -Scenario: all_false - When CEL expression "false || false" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: OR/all_true + When CEL expression 'true || true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: false_left +Scenario: OR/all_false - When CEL expression "false || true" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression 'false || false' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: OR/false_left -Scenario: false_right + When CEL expression 'false || true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "true || false" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: OR/false_right + When CEL expression 'true || false' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: short_circuit_type_left +Scenario: OR/short_circuit_type_left - When CEL expression "true || 32" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given disable_check parameter is True + When CEL expression 'true || 32' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: OR/short_circuit_type_right -Scenario: short_circuit_type_right - + Given disable_check parameter is True When CEL expression "'horses' || true" is evaluated - # bool_value:true - Then value is BoolType(source=True) - - -Scenario: short_circuit_error_left + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "true || (2 / 0 > 3 ? false : true)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: OR/short_circuit_error_left + When CEL expression 'true || (2 / 0 > 3 ? false : true)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: short_circuit_error_right +Scenario: OR/short_circuit_error_right - When CEL expression "(2 / 0 > 3 ? false : true) || true" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '(2 / 0 > 3 ? false : true) || true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: OR/error_right -Scenario: error_right - - When CEL expression "false || 1/0 != 0" is evaluated - # errors:{message:"no matching overload"} + When CEL expression 'false || 1/0 != 0' is evaluated Then eval_error is 'no matching overload' +Scenario: OR/error_left -Scenario: error_left - - When CEL expression "1/0 != 0 || false" is evaluated - # errors:{message:"no matching overload"} + When CEL expression '1/0 != 0 || false' is evaluated Then eval_error is 'no matching overload' +Scenario: OR/no_overload -Scenario: no_overload - + Given disable_check parameter is True When CEL expression "'less filling' || 'tastes great'" is evaluated - # errors:{message:"no matching overload"} Then eval_error is 'no matching overload' - # NOT -- Tests for logical NOT. -Scenario: not_true - - When CEL expression "!true" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: NOT/not_true -Scenario: not_false + When CEL expression '!true' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "!false" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: NOT/not_false + When CEL expression '!false' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: no_overload +Scenario: NOT/no_overload - When CEL expression "!0" is evaluated - # errors:{message:"no matching overload"} + Given disable_check parameter is True + When CEL expression '!0' is evaluated Then eval_error is 'no matching overload' + diff --git a/features/logic.textproto b/features/logic.textproto index 42d9f7c..384e5ce 100644 --- a/features/logic.textproto +++ b/features/logic.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: google.api.expr.test.v1.SimpleTestFile + name: "logic" description: "Tests for logical special operators." section { diff --git a/features/macros.feature b/features/macros.feature index 2a1a759..6b3349d 100644 --- a/features/macros.feature +++ b/features/macros.feature @@ -1,313 +1,256 @@ - +@conformance Feature: macros Tests for CEL macros. # exists -- Tests for the .exists() macro, which is equivalent to joining the evaluated elements with logical-OR. -Scenario: list_elem_all_true - - When CEL expression "[1, 2, 3].exists(e, e > 0)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: exists/list_elem_all_true -Scenario: list_elem_some_true + When CEL expression '[1, 2, 3].exists(e, e > 0)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "[1, 2, 3].exists(e, e == 2)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: exists/list_elem_some_true + When CEL expression '[1, 2, 3].exists(e, e == 2)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: list_elem_none_true +Scenario: exists/list_elem_none_true - When CEL expression "[1, 2, 3].exists(e, e > 3)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '[1, 2, 3].exists(e, e > 3)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: exists/list_elem_type_shortcircuit + Exists filter is true for the last element. -Scenario: list_elem_type_shortcircuit - Exists filter is true for the last element, thus short-circuits after 'err || true' When CEL expression "[1, 'foo', 3].exists(e, e != '1')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: exists/list_elem_type_exhaustive + Exists filter is never true, but heterogenous equality ensure the + result is false. -Scenario: list_elem_type_exhaustive - Exists filter is never true, thus reduces to 'err || false || err' which is an error When CEL expression "[1, 'foo', 3].exists(e, e == '10')" is evaluated - # errors:{message:"no such overload"} - Then eval_error is 'no such overload' - + Then value is celpy.celtypes.BoolType(source=False) -Scenario: list_elem_all_error +Scenario: exists/list_elem_exists_error - When CEL expression "[1, 2, 3].exists(e, e / 0 == 17)" is evaluated - # errors:{message:"divide by zero"} + When CEL expression '[1, 2, 3].exists(e, e / 0 == 17)' is evaluated Then eval_error is 'divide by zero' +Scenario: exists/list_empty -Scenario: list_empty - - When CEL expression "[].exists(e, e == 2)" is evaluated - # bool_value:false - Then value is BoolType(source=False) - + When CEL expression '[].exists(e, e == 2)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: map_key +Scenario: exists/map_key When CEL expression "{'key1':1, 'key2':2}.exists(k, k == 'key2')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) - -Scenario: not_map_key +Scenario: exists/not_map_key When CEL expression "!{'key1':1, 'key2':2}.exists(k, k == 'key3')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) +Scenario: exists/map_key_type_shortcircuit + Exists filter is true for the second key -Scenario: map_key_type_shortcircuit - Exists filter is true for the second key, thus reduces to 'err || true' which is true When CEL expression "{'key':1, 1:21}.exists(k, k != 2)" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: exists/map_key_type_exhaustive + Exists filter is never true, but heterogeneous equality ensures the + result is false. -Scenario: map_key_type_exhaustive - Exists filter is never true, thus reduces to 'err || false' which is an error When CEL expression "!{'key':1, 1:42}.exists(k, k == 2)" is evaluated - # errors:{message:"no such overload"} - Then eval_error is 'no such overload' - + Then value is celpy.celtypes.BoolType(source=True) # all -- Tests for the .all() macro, which is equivalent to joining the evaluated elements with logical-AND. -Scenario: list_elem_all_true - - When CEL expression "[1, 2, 3].all(e, e > 0)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: all/list_elem_all_true -Scenario: list_elem_some_true + When CEL expression '[1, 2, 3].all(e, e > 0)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "[1, 2, 3].all(e, e == 2)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: all/list_elem_some_true + When CEL expression '[1, 2, 3].all(e, e == 2)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: list_elem_none_true +Scenario: all/list_elem_none_true - When CEL expression "[1, 2, 3].all(e, e == 17)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '[1, 2, 3].all(e, e == 17)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - -Scenario: list_elem_type_shortcircuit +Scenario: all/list_elem_type_shortcircuit When CEL expression "[1, 'foo', 3].all(e, e == 1)" is evaluated - # bool_value:false - Then value is BoolType(source=False) - + Then value is celpy.celtypes.BoolType(source=False) -Scenario: list_elem_type_exhaustive +Scenario: all/list_elem_type_exhaustive When CEL expression "[1, 'foo', 3].all(e, e % 2 == 1)" is evaluated - # errors:{message:"no_such_overload"} Then eval_error is 'no_such_overload' +Scenario: all/list_elem_error_shortcircuit -Scenario: list_elem_error_shortcircuit + When CEL expression '[1, 2, 3].all(e, 6 / (2 - e) == 6)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "[1, 2, 3].all(e, 6 / (2 - e) == 6)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: all/list_elem_error_exhaustive - -Scenario: list_elem_error_exhaustive - - When CEL expression "[1, 2, 3].all(e, e / 0 != 17)" is evaluated - # errors:{message:"divide by zero"} + When CEL expression '[1, 2, 3].all(e, e / 0 != 17)' is evaluated Then eval_error is 'divide by zero' +Scenario: all/list_empty -Scenario: list_empty - - When CEL expression "[].all(e, e > 0)" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '[].all(e, e > 0)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - -Scenario: map_key +Scenario: all/map_key When CEL expression "{'key1':1, 'key2':2}.all(k, k == 'key2')" is evaluated - # bool_value:false - Then value is BoolType(source=False) - + Then value is celpy.celtypes.BoolType(source=False) # exists_one -- Tests for exists_one() macro. An expression 'L.exists_one(I, E)' is equivalent to 'size(L.filter(I, E)) == 1'. -Scenario: list_empty - - When CEL expression "[].exists_one(a, a == 7)" is evaluated - # bool_value:false - Then value is BoolType(source=False) - - -Scenario: list_one_true - - When CEL expression "[7].exists_one(a, a == 7)" is evaluated - # bool_value:true - Then value is BoolType(source=True) - -Scenario: list_one_false +Scenario: exists_one/list_empty - When CEL expression "[8].exists_one(a, a == 7)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + When CEL expression '[].exists_one(a, a == 7)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: exists_one/list_one_true -Scenario: list_none + When CEL expression '[7].exists_one(a, a == 7)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "[1, 2, 3].exists_one(x, x > 20)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: exists_one/list_one_false + When CEL expression '[8].exists_one(a, a == 7)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: list_one +Scenario: exists_one/list_none - When CEL expression "[6, 7, 8].exists_one(foo, foo % 5 == 2)" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '[1, 2, 3].exists_one(x, x > 20)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +Scenario: exists_one/list_one -Scenario: list_many + When CEL expression '[6, 7, 8].exists_one(foo, foo % 5 == 2)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "[0, 1, 2, 3, 4].exists_one(n, n % 2 == 1)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: exists_one/list_many + When CEL expression '[0, 1, 2, 3, 4].exists_one(n, n % 2 == 1)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: list_all +Scenario: exists_one/list_all When CEL expression "['foal', 'foo', 'four'].exists_one(n, n.startsWith('fo'))" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Then value is celpy.celtypes.BoolType(source=False) - -Scenario: list_no_shortcircuit +Scenario: exists_one/list_no_shortcircuit Errors invalidate everything, even if already false. - When CEL expression "[3, 2, 1, 0].exists_one(n, 12 / n > 1)" is evaluated - # errors:{message:"divide by zero"} - Then eval_error is 'divide by zero' + When CEL expression '[3, 2, 1, 0].exists_one(n, 12 / n > 1)' is evaluated + Then eval_error is 'divide by zero' -Scenario: map_one +Scenario: exists_one/map_one When CEL expression "{6: 'six', 7: 'seven', 8: 'eight'}.exists_one(foo, foo % 5 == 2)" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) # map -- Tests for map() macro. -Scenario: list_empty - - When CEL expression "[].map(n, n / 2)" is evaluated - # list_value:{} - Then value is [] - -Scenario: list_one +Scenario: map/list_empty - When CEL expression "[3].map(n, n * n)" is evaluated - # list_value:{values:{int64_value:9}} - Then value is [IntType(source=9)] + When CEL expression '[].map(n, n / 2)' is evaluated + Then value is [] +Scenario: map/list_one -Scenario: list_many + When CEL expression '[3].map(n, n * n)' is evaluated + Then value is [celpy.celtypes.IntType(source=9)] - When CEL expression "[2, 4, 6].map(n, n / 2)" is evaluated - # list_value:{values:{int64_value:1} values:{int64_value:2} values:{int64_value:3}} - Then value is [IntType(source=1), IntType(source=2), IntType(source=3)] +Scenario: map/list_many + When CEL expression '[2, 4, 6].map(n, n / 2)' is evaluated + Then value is [celpy.celtypes.IntType(source=1), celpy.celtypes.IntType(source=2), celpy.celtypes.IntType(source=3)] -Scenario: list_error +Scenario: map/list_error - When CEL expression "[2, 1, 0].map(n, 4 / n)" is evaluated - # errors:{message:"divide by zero"} + When CEL expression '[2, 1, 0].map(n, 4 / n)' is evaluated Then eval_error is 'divide by zero' +Scenario: map/map_extract_keys + When CEL expression "{'John': 'smart'}.map(key, key) == ['John']" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -# filter -- Tests for filter() macro. -Scenario: list_empty +# filter -- Tests for filter() macro. - When CEL expression "[].filter(n, n % 2 == 0)" is evaluated - # list_value:{} - Then value is [] +Scenario: filter/list_empty -Scenario: list_one_true + When CEL expression '[].filter(n, n % 2 == 0)' is evaluated + Then value is [] - When CEL expression "[2].filter(n, n == 2)" is evaluated - # list_value:{values:{int64_value:2}} - Then value is [IntType(source=2)] +Scenario: filter/list_one_true + When CEL expression '[2].filter(n, n == 2)' is evaluated + Then value is [celpy.celtypes.IntType(source=2)] -Scenario: list_one_false +Scenario: filter/list_one_false - When CEL expression "[1].filter(n, n > 3)" is evaluated - # list_value:{} + When CEL expression '[1].filter(n, n > 3)' is evaluated Then value is [] +Scenario: filter/list_none -Scenario: list_none - - When CEL expression "[1, 2, 3].filter(e, e > 3)" is evaluated - # list_value:{} + When CEL expression '[1, 2, 3].filter(e, e > 3)' is evaluated Then value is [] +Scenario: filter/list_some -Scenario: list_some - - When CEL expression "[0, 1, 2, 3, 4].filter(x, x % 2 == 1)" is evaluated - # list_value:{values:{int64_value:1} values:{int64_value:3}} - Then value is [IntType(source=1), IntType(source=3)] - + When CEL expression '[0, 1, 2, 3, 4].filter(x, x % 2 == 1)' is evaluated + Then value is [celpy.celtypes.IntType(source=1), celpy.celtypes.IntType(source=3)] -Scenario: list_all +Scenario: filter/list_all - When CEL expression "[1, 2, 3].filter(n, n > 0)" is evaluated - # list_value:{values:{int64_value:1} values:{int64_value:2} values:{int64_value:3}} - Then value is [IntType(source=1), IntType(source=2), IntType(source=3)] + When CEL expression '[1, 2, 3].filter(n, n > 0)' is evaluated + Then value is [celpy.celtypes.IntType(source=1), celpy.celtypes.IntType(source=2), celpy.celtypes.IntType(source=3)] +Scenario: filter/list_no_shortcircuit -Scenario: list_no_shortcircuit - - When CEL expression "[3, 2, 1, 0].filter(n, 12 / n > 4)" is evaluated - # errors:{message:"divide by zero"} + When CEL expression '[3, 2, 1, 0].filter(n, 12 / n > 4)' is evaluated Then eval_error is 'divide by zero' +Scenario: filter/map_filter_keys + + When CEL expression "{'John': 'smart', 'Paul': 'cute', 'George': 'quiet', 'Ringo': 'funny'}.filter(key, key == 'Ringo') == ['Ringo']" is evaluated + Then value is celpy.celtypes.BoolType(source=True) # nested -- Tests with nested macros. -Scenario: filter_all - When CEL expression "['signer'].filter(signer, ['artifact'].all(artifact, true))" is evaluated - # list_value:{values:{string_value:"signer"}} - Then value is [StringType(source='signer')] +Scenario: nested/filter_all + When CEL expression "['signer'].filter(signer, ['artifact'].all(artifact, true))" is evaluated + Then value is [celpy.celtypes.StringType(source='signer')] -Scenario: all_all +Scenario: nested/all_all When CEL expression "['signer'].all(signer, ['artifact'].all(artifact, true))" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) + diff --git a/features/macros.textproto b/features/macros.textproto index 389b7bb..26a201f 100644 --- a/features/macros.textproto +++ b/features/macros.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: google.api.expr.test.v1.SimpleTestFile + name: "macros" description: "Tests for CEL macros." section { @@ -20,20 +23,18 @@ section { } test { name: "list_elem_type_shortcircuit" - description: "Exists filter is true for the last element, thus short-circuits after 'err || true'" + description: "Exists filter is true for the last element." expr: "[1, 'foo', 3].exists(e, e != '1')" value: { bool_value: true } } test { name: "list_elem_type_exhaustive" - description: "Exists filter is never true, thus reduces to 'err || false || err' which is an error" + description: "Exists filter is never true, but heterogenous equality ensure the result is false." expr: "[1, 'foo', 3].exists(e, e == '10')" - eval_error: { - errors: { message: "no such overload" } - } + value: { bool_value: false } } test { - name: "list_elem_all_error" + name: "list_elem_exists_error" expr: "[1, 2, 3].exists(e, e / 0 == 17)" eval_error: { errors: { message: "divide by zero" } @@ -56,17 +57,15 @@ section { } test { name: "map_key_type_shortcircuit" - description: "Exists filter is true for the second key, thus reduces to 'err || true' which is true" + description: "Exists filter is true for the second key" expr: "{'key':1, 1:21}.exists(k, k != 2)" value: { bool_value: true } } test { name: "map_key_type_exhaustive" - description: "Exists filter is never true, thus reduces to 'err || false' which is an error" + description: "Exists filter is never true, but heterogeneous equality ensures the result is false." expr: "!{'key':1, 1:42}.exists(k, k == 2)" - eval_error: { - errors: { message: "no such overload" } - } + value: { bool_value: true } } } section { @@ -207,7 +206,11 @@ section { errors: { message: "divide by zero" } } } - # The map() macro is currently not supported for maps. + test { + name: "map_extract_keys" + expr: "{'John': 'smart'}.map(key, key) == ['John']" + value: { bool_value: true } + } } section { name: "filter" @@ -261,7 +264,11 @@ section { errors: { message: "divide by zero" } } } - # The filter() macro is currently not supported for maps. + test { + name: "map_filter_keys" + expr: "{'John': 'smart', 'Paul': 'cute', 'George': 'quiet', 'Ringo': 'funny'}.filter(key, key == 'Ringo') == ['Ringo']" + value: { bool_value: true } + } } section { name: "nested" diff --git a/features/macros2.feature b/features/macros2.feature new file mode 100644 index 0000000..a6530a7 --- /dev/null +++ b/features/macros2.feature @@ -0,0 +1,294 @@ +@conformance +Feature: macros2 + Tests for CEL comprehensions v2 + +# exists -- Tests for the .exists() macro, which is equivalent to joining the evaluated elements with logical-OR. + + +@wip +Scenario: exists/list_elem_all_true + + When CEL expression '[1, 2, 3].exists(i, v, i > -1 && v > 0)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: exists/list_elem_some_true + + When CEL expression '[1, 2, 3].exists(i, v, i == 1 && v == 2)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: exists/list_elem_none_true + + When CEL expression '[1, 2, 3].exists(i, v, i > 2 && v > 3)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: exists/list_elem_type_shortcircuit + + When CEL expression "[1, 'foo', 3].exists(i, v, i == 1 && v != '1')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: exists/list_elem_type_exhaustive + + When CEL expression "[1, 'foo', 3].exists(i, v, i == 3 || v == '10')" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: exists/list_elem_exists_error + + When CEL expression '[1, 2, 3].exists(i, v, v / i == 17)' is evaluated + Then eval_error is 'divide by zero' + +@wip +Scenario: exists/list_empty + + When CEL expression '[].exists(i, v, i == 0 || v == 2)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: exists/map_key + + When CEL expression "{'key1':1, 'key2':2}.exists(k, v, k == 'key2' && v == 2)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: exists/not_map_key + + When CEL expression "!{'key1':1, 'key2':2}.exists(k, v, k == 'key3' || v == 3)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: exists/map_key_type_shortcircuit + + When CEL expression "{'key':1, 1:21}.exists(k, v, k != 2 && v != 22)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: exists/map_key_type_exhaustive + + When CEL expression "!{'key':1, 1:42}.exists(k, v, k == 2 && v == 43)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + + +# all -- Tests for the .all() macro, which is equivalent to joining the evaluated elements with logical-AND. + + +@wip +Scenario: all/list_elem_all_true + + When CEL expression '[1, 2, 3].all(i, v, i > -1 && v > 0)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: all/list_elem_some_true + + When CEL expression '[1, 2, 3].all(i, v, i == 1 && v == 2)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: all/list_elem_none_true + + When CEL expression '[1, 2, 3].all(i, v, i == 3 || v == 4)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: all/list_elem_type_shortcircuit + + When CEL expression "[1, 'foo', 3].all(i, v, i == 0 || v == 1)" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: all/list_elem_type_exhaustive + + When CEL expression "[0, 'foo', 3].all(i, v, v % 2 == i)" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: all/list_elem_type_error_exhaustive + + When CEL expression "[0, 'foo', 5].all(i, v, v % 3 == i)" is evaluated + Then eval_error is 'no_such_overload' + +@wip +Scenario: all/list_elem_error_shortcircuit + + When CEL expression '[1, 2, 3].all(i, v, 6 / (2 - v) == i)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: all/list_elem_error_exhaustive + + When CEL expression '[1, 2, 3].all(i, v, v / i != 17)' is evaluated + Then eval_error is 'divide by zero' + +@wip +Scenario: all/list_empty + + When CEL expression '[].all(i, v, i > -1 || v > 0)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: all/map_key + + When CEL expression "{'key1':1, 'key2':2}.all(k, v, k == 'key2' && v == 2)" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + + +# existsOne -- Tests for existsOne() macro. An expression 'L.existsOne(I, E)' is equivalent to 'size(L.filter(I, E)) == 1'. + + +@wip +Scenario: existsOne/list_empty + + When CEL expression '[].existsOne(i, v, i == 3 || v == 7)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: existsOne/list_one_true + + When CEL expression '[7].existsOne(i, v, i == 0 && v == 7)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: existsOne/list_one_false + + When CEL expression '[8].existsOne(i, v, i == 0 && v == 7)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: existsOne/list_none + + When CEL expression '[1, 2, 3].existsOne(i, v, i > 2 || v > 3)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: existsOne/list_one + + When CEL expression '[5, 7, 8].existsOne(i, v, v % 5 == i)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: existsOne/list_many + + When CEL expression '[0, 1, 2, 3, 4].existsOne(i, v, v % 2 == i)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: existsOne/list_all + + When CEL expression "['foal', 'foo', 'four'].existsOne(i, v, i > -1 && v.startsWith('fo'))" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: existsOne/list_no_shortcircuit + + When CEL expression '[3, 2, 1, 0].existsOne(i, v, v / i > 1)' is evaluated + Then eval_error is 'divide by zero' + +@wip +Scenario: existsOne/map_one + + When CEL expression "{6: 'six', 7: 'seven', 8: 'eight'}.existsOne(k, v, k % 5 == 2 && v == 'seven')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + + +# transformList -- Tests for transformList() macro. + + +@wip +Scenario: transformList/empty + + When CEL expression '[].transformList(i, v, i / v)' is evaluated + Then value is [] + +@wip +Scenario: transformList/empty_filter + + When CEL expression '[].transformList(i, v, i > v, i / v)' is evaluated + Then value is [] + +@wip +Scenario: transformList/one + + When CEL expression '[3].transformList(i, v, v * v + i)' is evaluated + Then value is [celpy.celtypes.IntType(source=9)] + +@wip +Scenario: transformList/one_filter + + When CEL expression '[3].transformList(i, v, i == 0 && v == 3, v * v + i)' is evaluated + Then value is [celpy.celtypes.IntType(source=9)] + +@wip +Scenario: transformList/many + + When CEL expression '[2, 4, 6].transformList(i, v, v / 2 + i)' is evaluated + Then value is [celpy.celtypes.IntType(source=1), celpy.celtypes.IntType(source=3), celpy.celtypes.IntType(source=5)] + +@wip +Scenario: transformList/many_filter + + When CEL expression '[2, 4, 6].transformList(i, v, i != 1 && v != 4, v / 2 + i)' is evaluated + Then value is [celpy.celtypes.IntType(source=1), celpy.celtypes.IntType(source=5)] + +Scenario: transformList/error + + When CEL expression '[2, 1, 0].transformList(i, v, v / i)' is evaluated + Then eval_error is 'divide by zero' + +Scenario: transformList/error_filter + + When CEL expression '[2, 1, 0].transformList(i, v, v / i > 0, v)' is evaluated + Then eval_error is 'divide by zero' + + +# transformMap -- Tests for transformMap() macro. + + +@wip +Scenario: transformMap/empty + + When CEL expression '{}.transformMap(k, v, k + v)' is evaluated + Then value is celpy.celtypes.MapType({}) + +@wip +Scenario: transformMap/empty_filter + + When CEL expression "{}.transformMap(k, v, k == 'foo' && v == 'bar', k + v)" is evaluated + Then value is celpy.celtypes.MapType({}) + +@wip +Scenario: transformMap/one + + When CEL expression "{'foo': 'bar'}.transformMap(k, v, k + v)" is evaluated + Then value is celpy.celtypes.MapType({'foo': celpy.celtypes.StringType(source='foobar')}) + +@wip +Scenario: transformMap/one_filter + + When CEL expression "{'foo': 'bar'}.transformMap(k, v, k == 'foo' && v == 'bar', k + v)" is evaluated + Then value is celpy.celtypes.MapType({'foo': celpy.celtypes.StringType(source='foobar')}) + +@wip +Scenario: transformMap/many + + When CEL expression "{'foo': 'bar', 'baz': 'bux', 'hello': 'world'}.transformMap(k, v, k + v)" is evaluated + Then value is celpy.celtypes.MapType({'foo': celpy.celtypes.StringType(source='foobar'), 'baz': celpy.celtypes.StringType(source='bazbux'), 'hello': celpy.celtypes.StringType(source='helloworld')}) + +@wip +Scenario: transformMap/many_filter + + When CEL expression "{'foo': 'bar', 'baz': 'bux', 'hello': 'world'}.transformMap(k, v, k != 'baz' && v != 'bux', k + v)" is evaluated + Then value is celpy.celtypes.MapType({'foo': celpy.celtypes.StringType(source='foobar'), 'hello': celpy.celtypes.StringType(source='helloworld')}) + +Scenario: transformMap/error + + When CEL expression "{'foo': 2, 'bar': 1, 'baz': 0}.transformMap(k, v, 4 / v)" is evaluated + Then eval_error is 'divide by zero' + +Scenario: transformMap/error_filter + + When CEL expression "{'foo': 2, 'bar': 1, 'baz': 0}.transformMap(k, v, k == 'baz' && 4 / v == 0, v)" is evaluated + Then eval_error is 'divide by zero' + diff --git a/features/macros2.textproto b/features/macros2.textproto new file mode 100644 index 0000000..a3f9301 --- /dev/null +++ b/features/macros2.textproto @@ -0,0 +1,354 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: google.api.expr.test.v1.SimpleTestFile + +name: "macros2" +description: "Tests for CEL comprehensions v2" +section { + name: "exists" + description: "Tests for the .exists() macro, which is equivalent to joining the evaluated elements with logical-OR." + test { + name: "list_elem_all_true" + expr: "[1, 2, 3].exists(i, v, i > -1 && v > 0)" + value: { bool_value: true } + } + test { + name: "list_elem_some_true" + expr: "[1, 2, 3].exists(i, v, i == 1 && v == 2)" + value: { bool_value: true } + } + test { + name: "list_elem_none_true" + expr: "[1, 2, 3].exists(i, v, i > 2 && v > 3)" + value: { bool_value: false } + } + test { + name: "list_elem_type_shortcircuit" + expr: "[1, 'foo', 3].exists(i, v, i == 1 && v != '1')" + value: { bool_value: true } + } + test { + name: "list_elem_type_exhaustive" + expr: "[1, 'foo', 3].exists(i, v, i == 3 || v == '10')" + value: { bool_value: false } + } + test { + name: "list_elem_exists_error" + expr: "[1, 2, 3].exists(i, v, v / i == 17)" + eval_error: { + errors: { message: "divide by zero" } + } + } + test { + name: "list_empty" + expr: "[].exists(i, v, i == 0 || v == 2)" + value: { bool_value: false } + } + test { + name: "map_key" + expr: "{'key1':1, 'key2':2}.exists(k, v, k == 'key2' && v == 2)" + value: { bool_value: true } + } + test { + name: "not_map_key" + expr: "!{'key1':1, 'key2':2}.exists(k, v, k == 'key3' || v == 3)" + value: { bool_value: true } + } + test { + name: "map_key_type_shortcircuit" + expr: "{'key':1, 1:21}.exists(k, v, k != 2 && v != 22)" + value: { bool_value: true } + } + test { + name: "map_key_type_exhaustive" + expr: "!{'key':1, 1:42}.exists(k, v, k == 2 && v == 43)" + value: { bool_value: true } + } +} +section { + name: "all" + description: "Tests for the .all() macro, which is equivalent to joining the evaluated elements with logical-AND." + test { + name: "list_elem_all_true" + expr: "[1, 2, 3].all(i, v, i > -1 && v > 0)" + value: { bool_value: true } + } + test { + name: "list_elem_some_true" + expr: "[1, 2, 3].all(i, v, i == 1 && v == 2)" + value: { bool_value: false } + } + test { + name: "list_elem_none_true" + expr: "[1, 2, 3].all(i, v, i == 3 || v == 4)" + value: { bool_value: false } + } + test { + name: "list_elem_type_shortcircuit" + expr: "[1, 'foo', 3].all(i, v, i == 0 || v == 1)" + value: { bool_value: false } + } + test { + name: "list_elem_type_exhaustive" + expr: "[0, 'foo', 3].all(i, v, v % 2 == i)" + value: { bool_value: false } + } + test { + name: "list_elem_type_error_exhaustive" + expr: "[0, 'foo', 5].all(i, v, v % 3 == i)" + eval_error: { + errors: { message: "no_such_overload" } + } + } + test { + name: "list_elem_error_shortcircuit" + expr: "[1, 2, 3].all(i, v, 6 / (2 - v) == i)" + value: { bool_value: false } + } + test { + name: "list_elem_error_exhaustive" + expr: "[1, 2, 3].all(i, v, v / i != 17)" + eval_error: { + errors: { message: "divide by zero" } + } + } + test { + name: "list_empty" + expr: "[].all(i, v, i > -1 || v > 0)" + value: { bool_value: true } + } + test { + name: "map_key" + expr: "{'key1':1, 'key2':2}.all(k, v, k == 'key2' && v == 2)" + value: { bool_value: false } + } +} +section { + name: "existsOne" + description: "Tests for existsOne() macro. An expression 'L.existsOne(I, E)' is equivalent to 'size(L.filter(I, E)) == 1'." + test { + name: "list_empty" + expr: "[].existsOne(i, v, i == 3 || v == 7)" + value: { bool_value: false } + } + test { + name: "list_one_true" + expr: "[7].existsOne(i, v, i == 0 && v == 7)" + value: { bool_value: true } + } + test { + name: "list_one_false" + expr: "[8].existsOne(i, v, i == 0 && v == 7)" + value: { bool_value: false } + } + test { + name: "list_none" + expr: "[1, 2, 3].existsOne(i, v, i > 2 || v > 3)" + value: { bool_value: false } + } + test { + name: "list_one" + expr: "[5, 7, 8].existsOne(i, v, v % 5 == i)" + value: { bool_value: true } + } + test { + name: "list_many" + expr: "[0, 1, 2, 3, 4].existsOne(i, v, v % 2 == i)" + value: { bool_value: false } + } + test { + name: "list_all" + expr: "['foal', 'foo', 'four'].existsOne(i, v, i > -1 && v.startsWith('fo'))" + value: { bool_value: false } + } + test { + name: "list_no_shortcircuit" + expr: "[3, 2, 1, 0].existsOne(i, v, v / i > 1)" + eval_error { + errors: { message: "divide by zero" } + } + } + test { + name: "map_one" + expr: "{6: 'six', 7: 'seven', 8: 'eight'}.existsOne(k, v, k % 5 == 2 && v == 'seven')" + value: { bool_value: true } + } +} +section { + name: "transformList" + description: "Tests for transformList() macro." + test { + name: "empty" + expr: "[].transformList(i, v, i / v)" + value: { list_value: {} } + } + test { + name: "empty_filter" + expr: "[].transformList(i, v, i > v, i / v)" + value: { list_value: {} } + } + test { + name: "one" + expr: "[3].transformList(i, v, v * v + i)" + value: { list_value { + values: { int64_value: 9 } + } + } + } + test { + name: "one_filter" + expr: "[3].transformList(i, v, i == 0 && v == 3, v * v + i)" + value: { list_value { + values: { int64_value: 9 } + } + } + } + test { + name: "many" + expr: "[2, 4, 6].transformList(i, v, v / 2 + i)" + value: { list_value { + values: { int64_value: 1 } + values: { int64_value: 3 } + values: { int64_value: 5 } + } + } + } + test { + name: "many_filter" + expr: "[2, 4, 6].transformList(i, v, i != 1 && v != 4, v / 2 + i)" + value: { list_value { + values: { int64_value: 1 } + values: { int64_value: 5 } + } + } + } + test { + name: "error" + expr: "[2, 1, 0].transformList(i, v, v / i)" + eval_error { + errors: { message: "divide by zero" } + } + } + test { + name: "error_filter" + expr: "[2, 1, 0].transformList(i, v, v / i > 0, v)" + eval_error { + errors: { message: "divide by zero" } + } + } +} +section { + name: "transformMap" + description: "Tests for transformMap() macro." + test { + name: "empty" + expr: "{}.transformMap(k, v, k + v)" + value: { map_value: {} } + } + test { + name: "empty_filter" + expr: "{}.transformMap(k, v, k == 'foo' && v == 'bar', k + v)" + value: { map_value: {} } + } + test { + name: "one" + expr: "{'foo': 'bar'}.transformMap(k, v, k + v)" + value: { + map_value: { + entries: { + key: { + string_value: "foo" + } + value: { + string_value: "foobar" + } + } + } + } + } + test { + name: "one_filter" + expr: "{'foo': 'bar'}.transformMap(k, v, k == 'foo' && v == 'bar', k + v)" + value: { + map_value: { + entries: { + key: { + string_value: "foo" + } + value: { + string_value: "foobar" + } + } + } + } + } + test { + name: "many" + expr: "{'foo': 'bar', 'baz': 'bux', 'hello': 'world'}.transformMap(k, v, k + v)" + value: { + map_value: { + entries: { + key: { + string_value: "foo" + } + value: { + string_value: "foobar" + } + } + entries: { + key: { + string_value: "baz" + } + value: { + string_value: "bazbux" + } + } + entries: { + key: { + string_value: "hello" + } + value: { + string_value: "helloworld" + } + } + } + } + } + test { + name: "many_filter" + expr: "{'foo': 'bar', 'baz': 'bux', 'hello': 'world'}.transformMap(k, v, k != 'baz' && v != 'bux', k + v)" + value: { + map_value: { + entries: { + key: { + string_value: "foo" + } + value: { + string_value: "foobar" + } + } + entries: { + key: { + string_value: "hello" + } + value: { + string_value: "helloworld" + } + } + } + } + } + test { + name: "error" + expr: "{'foo': 2, 'bar': 1, 'baz': 0}.transformMap(k, v, 4 / v)" + eval_error { + errors: { message: "divide by zero" } + } + } + test { + name: "error_filter" + expr: "{'foo': 2, 'bar': 1, 'baz': 0}.transformMap(k, v, k == 'baz' && 4 / v == 0, v)" + eval_error { + errors: { message: "divide by zero" } + } + } +} \ No newline at end of file diff --git a/features/math_ext.feature b/features/math_ext.feature new file mode 100644 index 0000000..c3de5e7 --- /dev/null +++ b/features/math_ext.feature @@ -0,0 +1,1264 @@ +@conformance +Feature: math_ext + Tests for the math extension library. + +# greatest_int_result -- + + +@wip +Scenario: greatest_int_result/unary_negative + + When CEL expression 'math.greatest(-5)' is evaluated + Then value is celpy.celtypes.IntType(source=-5) + +@wip +Scenario: greatest_int_result/unary_positive + + When CEL expression 'math.greatest(5)' is evaluated + Then value is celpy.celtypes.IntType(source=5) + +@wip +Scenario: greatest_int_result/binary_same_args + + When CEL expression 'math.greatest(1, 1)' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: greatest_int_result/binary_with_decimal + + When CEL expression 'math.greatest(1, 1.0) == 1' is evaluated + Then none is None + +@wip +Scenario: greatest_int_result/binary_with_uint + + When CEL expression 'math.greatest(1, 1u) == 1' is evaluated + Then none is None + +@wip +Scenario: greatest_int_result/binary_first_arg_greater + + When CEL expression 'math.greatest(3, -3)' is evaluated + Then value is celpy.celtypes.IntType(source=3) + +@wip +Scenario: greatest_int_result/binary_second_arg_greater + + When CEL expression 'math.greatest(-7, 5)' is evaluated + Then value is celpy.celtypes.IntType(source=5) + +@wip +Scenario: greatest_int_result/binary_first_arg_int_max + + When CEL expression 'math.greatest(9223372036854775807, 1)' is evaluated + Then value is celpy.celtypes.IntType(source=9223372036854775807) + +@wip +Scenario: greatest_int_result/binary_second_arg_int_max + + When CEL expression 'math.greatest(1, 9223372036854775807)' is evaluated + Then value is celpy.celtypes.IntType(source=9223372036854775807) + +@wip +Scenario: greatest_int_result/binary_first_arg_int_min + + When CEL expression 'math.greatest(-9223372036854775808, 1)' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: greatest_int_result/binary_second_arg_int_min + + When CEL expression 'math.greatest(1, -9223372036854775808)' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: greatest_int_result/ternary_same_args + + When CEL expression 'math.greatest(1, 1, 1) == 1' is evaluated + Then none is None + +@wip +Scenario: greatest_int_result/ternary_with_decimal + + When CEL expression 'math.greatest(1, 1.0, 1.0) == 1' is evaluated + Then none is None + +@wip +Scenario: greatest_int_result/ternary_with_uint + + When CEL expression 'math.greatest(1, 1u, 1u) == 1' is evaluated + Then none is None + +@wip +Scenario: greatest_int_result/ternary_first_arg_greatest + + When CEL expression 'math.greatest(10, 1, 3) == 10' is evaluated + Then none is None + +@wip +Scenario: greatest_int_result/ternary_third_arg_greatest + + When CEL expression 'math.greatest(1, 3, 10) == 10' is evaluated + Then none is None + +@wip +Scenario: greatest_int_result/ternary_with_negatives + + When CEL expression 'math.greatest(-1, -2, -3) == -1' is evaluated + Then none is None + +@wip +Scenario: greatest_int_result/ternary_int_max + + When CEL expression 'math.greatest(9223372036854775807, 1, 5) == 9223372036854775807' is evaluated + Then none is None + +@wip +Scenario: greatest_int_result/ternary_int_min + + When CEL expression 'math.greatest(-9223372036854775807, -1, -5) == -1' is evaluated + Then none is None + +@wip +Scenario: greatest_int_result/quaternary_mixed + + When CEL expression 'math.greatest(5.4, 10, 3u, -5.0, 9223372036854775807) == 9223372036854775807' is evaluated + Then none is None + +@wip +Scenario: greatest_int_result/quaternary_mixed_array + + When CEL expression 'math.greatest([5.4, 10, 3u, -5.0, 3.5]) == 10' is evaluated + Then none is None + +@wip +Scenario: greatest_int_result/quaternary_mixed_dyn_array + + When CEL expression 'math.greatest([dyn(5.4), dyn(10), dyn(3u), dyn(-5.0), dyn(3.5)]) == 10' is evaluated + Then none is None + + +# greatest_double_result -- + + +@wip +Scenario: greatest_double_result/unary_negative + + When CEL expression 'math.greatest(-5.0)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-5.0) + +@wip +Scenario: greatest_double_result/unary_positive + + When CEL expression 'math.greatest(5.0)' is evaluated + Then value is celpy.celtypes.DoubleType(source=5.0) + +@wip +Scenario: greatest_double_result/binary_same_args + + When CEL expression 'math.greatest(1.0, 1.0)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +@wip +Scenario: greatest_double_result/binary_with_int + + When CEL expression 'math.greatest(1.0, 1) == 1.0' is evaluated + Then none is None + +@wip +Scenario: greatest_double_result/binary_with_uint + + When CEL expression 'math.greatest(1.0, 1u) == 1.0' is evaluated + Then none is None + +@wip +Scenario: greatest_double_result/binary_first_arg_greater + + When CEL expression 'math.greatest(5.0, -7.0)' is evaluated + Then value is celpy.celtypes.DoubleType(source=5.0) + +@wip +Scenario: greatest_double_result/binary_second_arg_greater + + When CEL expression 'math.greatest(-3.0, 3.0)' is evaluated + Then value is celpy.celtypes.DoubleType(source=3.0) + +@wip +Scenario: greatest_double_result/binary_first_arg_double_max + + When CEL expression 'math.greatest(1.797693e308, 1)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.797693e+308) + +@wip +Scenario: greatest_double_result/binary_second_arg_double_max + + When CEL expression 'math.greatest(1, 1.797693e308)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.797693e+308) + +@wip +Scenario: greatest_double_result/binary_first_arg_double_min + + When CEL expression 'math.greatest(-1.797693e308, 1.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.5) + +@wip +Scenario: greatest_double_result/binary_second_arg_double_min + + When CEL expression 'math.greatest(1.5, -1.797693e308)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.5) + +@wip +Scenario: greatest_double_result/ternary_same_args + + When CEL expression 'math.greatest(1.0, 1.0, 1.0) == 1.0' is evaluated + Then none is None + +@wip +Scenario: greatest_double_result/ternary_with_int + + When CEL expression 'math.greatest(1.0, 1, 1) == 1.0' is evaluated + Then none is None + +@wip +Scenario: greatest_double_result/ternary_with_uint + + When CEL expression 'math.greatest(1.0, 1u, 1u) == 1.0' is evaluated + Then none is None + +@wip +Scenario: greatest_double_result/ternary_first_arg_greatest + + When CEL expression 'math.greatest(10.5, 1.5, 3.5) == 10.5' is evaluated + Then none is None + +@wip +Scenario: greatest_double_result/ternary_third_arg_greatest + + When CEL expression 'math.greatest(1.5, 3.5, 10.5) == 10.5' is evaluated + Then none is None + +@wip +Scenario: greatest_double_result/ternary_with_negatives + + When CEL expression 'math.greatest(-1.5, -2.5, -3.5) == -1.5' is evaluated + Then none is None + +@wip +Scenario: greatest_double_result/ternary_double_max + + When CEL expression 'math.greatest(1.797693e308, 1, 5) == 1.797693e308' is evaluated + Then none is None + +@wip +Scenario: greatest_double_result/ternary_double_min + + When CEL expression 'math.greatest(-1.797693e308, -1, -5) == -1' is evaluated + Then none is None + +@wip +Scenario: greatest_double_result/quaternary_mixed + + When CEL expression 'math.greatest(5.4, 10, 3u, -5.0, 1.797693e308) == 1.797693e308' is evaluated + Then none is None + +@wip +Scenario: greatest_double_result/quaternary_mixed_array + + When CEL expression 'math.greatest([5.4, 10.5, 3u, -5.0, 3.5]) == 10.5' is evaluated + Then none is None + +@wip +Scenario: greatest_double_result/quaternary_mixed_dyn_array + + When CEL expression 'math.greatest([dyn(5.4), dyn(10.5), dyn(3u), dyn(-5.0), dyn(3.5)]) == 10.5' is evaluated + Then none is None + + +# greatest_uint_result -- + + +@wip +Scenario: greatest_uint_result/unary + + When CEL expression 'math.greatest(5u)' is evaluated + Then value is celpy.celtypes.UintType(source=5) + +@wip +Scenario: greatest_uint_result/binary_same_args + + When CEL expression 'math.greatest(1u, 1u)' is evaluated + Then value is celpy.celtypes.UintType(source=1) + +@wip +Scenario: greatest_uint_result/binary_with_decimal + + When CEL expression 'math.greatest(1u, 1.0) == 1' is evaluated + Then none is None + +@wip +Scenario: greatest_uint_result/binary_with_int + + When CEL expression 'math.greatest(1u, 1) == 1u' is evaluated + Then none is None + +@wip +Scenario: greatest_uint_result/binary_first_arg_greater + + When CEL expression 'math.greatest(5u, -7)' is evaluated + Then value is celpy.celtypes.UintType(source=5) + +@wip +Scenario: greatest_uint_result/binary_second_arg_greater + + When CEL expression 'math.greatest(-3, 3u)' is evaluated + Then value is celpy.celtypes.UintType(source=3) + +@wip +Scenario: greatest_uint_result/binary_first_arg_uint_max + + When CEL expression 'math.greatest(18446744073709551615u, 1u)' is evaluated + Then value is celpy.celtypes.UintType(source=18446744073709551615) + +@wip +Scenario: greatest_uint_result/binary_second_arg_uint_max + + When CEL expression 'math.greatest(1u, 18446744073709551615u)' is evaluated + Then value is celpy.celtypes.UintType(source=18446744073709551615) + +@wip +Scenario: greatest_uint_result/ternary_same_args + + When CEL expression 'math.greatest(1u, 1u, 1u) == 1u' is evaluated + Then none is None + +@wip +Scenario: greatest_uint_result/ternary_with_decimal + + When CEL expression 'math.greatest(1u, 1.0, 1.0) == 1u' is evaluated + Then none is None + +@wip +Scenario: greatest_uint_result/ternary_with_int + + When CEL expression 'math.greatest(1u, 1, 1) == 1u' is evaluated + Then none is None + +@wip +Scenario: greatest_uint_result/ternary_first_arg_greatest + + When CEL expression 'math.greatest(10u, 1u, 3u) == 10u' is evaluated + Then none is None + +@wip +Scenario: greatest_uint_result/ternary_third_arg_greatest + + When CEL expression 'math.greatest(1u, 3u, 10u) == 10u' is evaluated + Then none is None + +@wip +Scenario: greatest_uint_result/ternary_int_max + + When CEL expression 'math.greatest(18446744073709551615u, 1u, 5u) == 18446744073709551615u' is evaluated + Then none is None + +@wip +Scenario: greatest_uint_result/quaternary_mixed + + When CEL expression 'math.greatest(5.4, 10, 3u, -5.0, 18446744073709551615u) == 18446744073709551615u' is evaluated + Then none is None + +@wip +Scenario: greatest_uint_result/quaternary_mixed_array + + When CEL expression 'math.greatest([5.4, 10u, 3u, -5.0, 3.5]) == 10u' is evaluated + Then none is None + +@wip +Scenario: greatest_uint_result/quaternary_mixed_dyn_array + + When CEL expression 'math.greatest([dyn(5.4), dyn(10u), dyn(3u), dyn(-5.0), dyn(3.5)]) == 10u' is evaluated + Then none is None + + +# least_int_result -- + + +@wip +Scenario: least_int_result/unary_negative + + When CEL expression 'math.least(-5)' is evaluated + Then value is celpy.celtypes.IntType(source=-5) + +@wip +Scenario: least_int_result/unary_positive + + When CEL expression 'math.least(5)' is evaluated + Then value is celpy.celtypes.IntType(source=5) + +@wip +Scenario: least_int_result/binary_same_args + + When CEL expression 'math.least(1, 1)' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: least_int_result/binary_with_decimal + + When CEL expression 'math.least(1, 1.0) == 1' is evaluated + Then none is None + +@wip +Scenario: least_int_result/binary_with_uint + + When CEL expression 'math.least(1, 1u) == 1' is evaluated + Then none is None + +@wip +Scenario: least_int_result/binary_first_arg_least + + When CEL expression 'math.least(-3, 3)' is evaluated + Then value is celpy.celtypes.IntType(source=-3) + +@wip +Scenario: least_int_result/binary_second_arg_least + + When CEL expression 'math.least(5, -7)' is evaluated + Then value is celpy.celtypes.IntType(source=-7) + +@wip +Scenario: least_int_result/binary_first_arg_int_max + + When CEL expression 'math.least(9223372036854775807, 1)' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: least_int_result/binary_second_arg_int_max + + When CEL expression 'math.least(1, 9223372036854775807)' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: least_int_result/binary_first_arg_int_min + + When CEL expression 'math.least(-9223372036854775808, 1)' is evaluated + Then value is celpy.celtypes.IntType(source=-9223372036854775808) + +@wip +Scenario: least_int_result/binary_second_arg_int_min + + When CEL expression 'math.least(1, -9223372036854775808)' is evaluated + Then value is celpy.celtypes.IntType(source=-9223372036854775808) + +@wip +Scenario: least_int_result/ternary_same_args + + When CEL expression 'math.least(1, 1, 1) == 1' is evaluated + Then none is None + +@wip +Scenario: least_int_result/ternary_with_decimal + + When CEL expression 'math.least(1, 1.0, 1.0) == 1' is evaluated + Then none is None + +@wip +Scenario: least_int_result/ternary_with_uint + + When CEL expression 'math.least(1, 1u, 1u) == 1' is evaluated + Then none is None + +@wip +Scenario: least_int_result/ternary_first_arg_least + + When CEL expression 'math.least(0, 1, 3) == 0' is evaluated + Then none is None + +@wip +Scenario: least_int_result/ternary_third_arg_least + + When CEL expression 'math.least(1, 3, 0) == 0' is evaluated + Then none is None + +@wip +Scenario: least_int_result/ternary_with_negatives + + When CEL expression 'math.least(-1, -2, -3) == -3' is evaluated + Then none is None + +@wip +Scenario: least_int_result/ternary_int_max + + When CEL expression 'math.least(9223372036854775807, 1, 5) == 1' is evaluated + Then none is None + +@wip +Scenario: least_int_result/ternary_int_min + + When CEL expression 'math.least(-9223372036854775808, -1, -5) == -9223372036854775808' is evaluated + Then none is None + +@wip +Scenario: least_int_result/quaternary_mixed + + When CEL expression 'math.least(5.4, 10, 3u, -5.0, 9223372036854775807) == -5.0' is evaluated + Then none is None + +@wip +Scenario: least_int_result/quaternary_mixed_array + + When CEL expression 'math.least([5.4, 10, 3u, -5.0, 3.5]) == -5.0' is evaluated + Then none is None + +@wip +Scenario: least_int_result/quaternary_mixed_dyn_array + + When CEL expression 'math.least([dyn(5.4), dyn(10), dyn(3u), dyn(-5.0), dyn(3.5)]) == -5.0' is evaluated + Then none is None + + +# least_double_result -- + + +@wip +Scenario: least_double_result/unary_negative + + When CEL expression 'math.least(-5.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-5.5) + +@wip +Scenario: least_double_result/unary_positive + + When CEL expression 'math.least(5.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=5.5) + +@wip +Scenario: least_double_result/binary_same_args + + When CEL expression 'math.least(1.5, 1.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.5) + +@wip +Scenario: least_double_result/binary_with_int + + When CEL expression 'math.least(1.0, 1) == 1' is evaluated + Then none is None + +@wip +Scenario: least_double_result/binary_with_uint + + When CEL expression 'math.least(1, 1u) == 1' is evaluated + Then none is None + +@wip +Scenario: least_double_result/binary_first_arg_least + + When CEL expression 'math.least(-3.5, 3.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-3.5) + +@wip +Scenario: least_double_result/binary_second_arg_least + + When CEL expression 'math.least(5.5, -7.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-7.5) + +@wip +Scenario: least_double_result/binary_first_arg_double_max + + When CEL expression 'math.least(1.797693e308, 1.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.5) + +@wip +Scenario: least_double_result/binary_second_arg_double_max + + When CEL expression 'math.least(1.5, 1.797693e308)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.5) + +@wip +Scenario: least_double_result/binary_first_arg_double_min + + When CEL expression 'math.least(-1.797693e308, 1.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-1.797693e+308) + +@wip +Scenario: least_double_result/binary_second_arg_double_min + + When CEL expression 'math.least(1.5, -1.797693e308)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-1.797693e+308) + +@wip +Scenario: least_double_result/ternary_same_args + + When CEL expression 'math.least(1.5, 1.5, 1.5) == 1.5' is evaluated + Then none is None + +@wip +Scenario: least_double_result/ternary_with_int + + When CEL expression 'math.least(1.0, 1, 1) == 1.0' is evaluated + Then none is None + +@wip +Scenario: least_double_result/ternary_with_uint + + When CEL expression 'math.least(1.0, 1u, 1u) == 1' is evaluated + Then none is None + +@wip +Scenario: least_double_result/ternary_first_arg_least + + When CEL expression 'math.least(0.5, 1.5, 3.5) == 0.5' is evaluated + Then none is None + +@wip +Scenario: least_double_result/ternary_third_arg_least + + When CEL expression 'math.least(1.5, 3.5, 0.5) == 0.5' is evaluated + Then none is None + +@wip +Scenario: least_double_result/ternary_with_negatives + + When CEL expression 'math.least(-1.5, -2.5, -3.5) == -3.5' is evaluated + Then none is None + +@wip +Scenario: least_double_result/ternary_double_max + + When CEL expression 'math.least(1.797693e308, 1, 5) == 1' is evaluated + Then none is None + +@wip +Scenario: least_double_result/ternary_double_min + + When CEL expression 'math.least(-1.797693e308, -1, -5) == -1.797693e308' is evaluated + Then none is None + +@wip +Scenario: least_double_result/quaternary_mixed + + When CEL expression 'math.least(5.4, 10, 3u, -5.0, 1.797693e308) == -5.0' is evaluated + Then none is None + +@wip +Scenario: least_double_result/quaternary_mixed_array + + When CEL expression 'math.least([5.4, 10.5, 3u, -5.0, 3.5]) == -5.0' is evaluated + Then none is None + +@wip +Scenario: least_double_result/quaternary_mixed_dyn_array + + When CEL expression 'math.least([dyn(5.4), dyn(10.5), dyn(3u), dyn(-5.0), dyn(3.5)]) == -5.0' is evaluated + Then none is None + + +# least_uint_result -- + + +@wip +Scenario: least_uint_result/unary + + When CEL expression 'math.least(5u)' is evaluated + Then value is celpy.celtypes.UintType(source=5) + +@wip +Scenario: least_uint_result/binary_same_args + + When CEL expression 'math.least(1u, 1u)' is evaluated + Then value is celpy.celtypes.UintType(source=1) + +@wip +Scenario: least_uint_result/binary_with_decimal + + When CEL expression 'math.least(1u, 1.0) == 1u' is evaluated + Then none is None + +@wip +Scenario: least_uint_result/binary_with_int + + When CEL expression 'math.least(1u, 1) == 1u' is evaluated + Then none is None + +@wip +Scenario: least_uint_result/binary_first_arg_least + + When CEL expression 'math.least(1u, 3u)' is evaluated + Then value is celpy.celtypes.UintType(source=1) + +@wip +Scenario: least_uint_result/binary_second_arg_least + + When CEL expression 'math.least(5u, 2u)' is evaluated + Then value is celpy.celtypes.UintType(source=2) + +@wip +Scenario: least_uint_result/binary_first_arg_uint_max + + When CEL expression 'math.least(18446744073709551615u, 1u)' is evaluated + Then value is celpy.celtypes.UintType(source=1) + +@wip +Scenario: least_uint_result/binary_second_arg_uint_max + + When CEL expression 'math.least(1u, 18446744073709551615u)' is evaluated + Then value is celpy.celtypes.UintType(source=1) + +@wip +Scenario: least_uint_result/ternary_same_args + + When CEL expression 'math.least(1u, 1u, 1u) == 1u' is evaluated + Then none is None + +@wip +Scenario: least_uint_result/ternary_with_decimal + + When CEL expression 'math.least(1u, 1.0, 1.0) == 1u' is evaluated + Then none is None + +@wip +Scenario: least_uint_result/ternary_with_int + + When CEL expression 'math.least(1u, 1, 1) == 1u' is evaluated + Then none is None + +@wip +Scenario: least_uint_result/ternary_first_arg_least + + When CEL expression 'math.least(1u, 10u, 3u) == 1u' is evaluated + Then none is None + +@wip +Scenario: least_uint_result/ternary_third_arg_least + + When CEL expression 'math.least(10u, 3u, 1u) == 1u' is evaluated + Then none is None + +@wip +Scenario: least_uint_result/ternary_uint_max + + When CEL expression 'math.least(18446744073709551615u, 1u, 5u) == 1u' is evaluated + Then none is None + +@wip +Scenario: least_uint_result/quaternary_mixed + + When CEL expression 'math.least(5.4, 10, 3u, 1u, 18446744073709551615u) == 1u' is evaluated + Then none is None + +@wip +Scenario: least_uint_result/quaternary_mixed_array + + When CEL expression 'math.least([5.4, 10u, 3u, 1u, 3.5]) == 1u' is evaluated + Then none is None + +@wip +Scenario: least_uint_result/quaternary_mixed_dyn_array + + When CEL expression 'math.least([dyn(5.4), dyn(10u), dyn(3u), dyn(1u), dyn(3.5)]) == 1u' is evaluated + Then none is None + + +# ceil -- + + +@wip +Scenario: ceil/negative + + When CEL expression 'math.ceil(-1.2)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-1.0) + +@wip +Scenario: ceil/positive + + When CEL expression 'math.ceil(1.2)' is evaluated + Then value is celpy.celtypes.DoubleType(source=2.0) + +Scenario: ceil/dyn_error + + When CEL expression 'math.ceil(dyn(1))' is evaluated + Then eval_error is 'no such overload' + + +# floor -- + + +@wip +Scenario: floor/negative + + When CEL expression 'math.floor(-1.2)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-2.0) + +@wip +Scenario: floor/positive + + When CEL expression 'math.floor(1.2)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +Scenario: floor/dyn_error + + When CEL expression 'math.floor(dyn(1))' is evaluated + Then eval_error is 'no such overload' + + +# round -- + + +@wip +Scenario: round/negative_down + + When CEL expression 'math.round(-1.6)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-2.0) + +@wip +Scenario: round/negative_up + + When CEL expression 'math.round(-1.4)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-1.0) + +@wip +Scenario: round/negative_mid + + When CEL expression 'math.round(-1.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-2.0) + +@wip +Scenario: round/positive_down + + When CEL expression 'math.round(1.2)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +@wip +Scenario: round/positive_up + + When CEL expression 'math.round(1.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=2.0) + +@wip +Scenario: round/nan + + When CEL expression 'math.isNaN(math.round(0.0/0.0))' is evaluated + Then none is None + +Scenario: round/dyn_error + + When CEL expression 'math.round(dyn(1))' is evaluated + Then eval_error is 'no such overload' + + +# trunc -- + + +@wip +Scenario: trunc/negative + + When CEL expression 'math.trunc(-1.2)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-1.0) + +@wip +Scenario: trunc/positive + + When CEL expression 'math.trunc(1.2)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +@wip +Scenario: trunc/nan + + When CEL expression 'math.isNaN(math.trunc(0.0/0.0))' is evaluated + Then none is None + +Scenario: trunc/dyn_error + + When CEL expression 'math.trunc(dyn(1))' is evaluated + Then eval_error is 'no such overload' + + +# abs -- + + +@wip +Scenario: abs/uint + + When CEL expression 'math.abs(1u)' is evaluated + Then value is celpy.celtypes.UintType(source=1) + +@wip +Scenario: abs/positive_int + + When CEL expression 'math.abs(1)' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: abs/negative_int + + When CEL expression 'math.abs(-11)' is evaluated + Then value is celpy.celtypes.IntType(source=11) + +@wip +Scenario: abs/positive_double + + When CEL expression 'math.abs(1.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.5) + +@wip +Scenario: abs/negative_double + + When CEL expression 'math.abs(-11.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=11.5) + +Scenario: abs/int_overflow + + When CEL expression 'math.abs(-9223372036854775808)' is evaluated + Then eval_error is 'overflow' + + +# sign -- + + +@wip +Scenario: sign/positive_uint + + When CEL expression 'math.sign(100u)' is evaluated + Then value is celpy.celtypes.UintType(source=1) + +@wip +Scenario: sign/zero_uint + + When CEL expression 'math.sign(0u)' is evaluated + Then value is celpy.celtypes.UintType(source=0) + +@wip +Scenario: sign/positive_int + + When CEL expression 'math.sign(100)' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: sign/negative_int + + When CEL expression 'math.sign(-11)' is evaluated + Then value is celpy.celtypes.IntType(source=-1) + +@wip +Scenario: sign/zero_int + + When CEL expression 'math.sign(0)' is evaluated + Then value is celpy.celtypes.IntType(source=0) + +@wip +Scenario: sign/positive_double + + When CEL expression 'math.sign(100.5)' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +@wip +Scenario: sign/negative_double + + When CEL expression 'math.sign(-32.0)' is evaluated + Then value is celpy.celtypes.DoubleType(source=-1.0) + +@wip +Scenario: sign/zero_double + + When CEL expression 'math.sign(0.0)' is evaluated + Then value is celpy.celtypes.DoubleType(source=0.0) + +Scenario: sign/dyn_error + + When CEL expression 'math.sign(dyn(true))' is evaluated + Then eval_error is 'no such overload' + + +# isNaN -- + + +@wip +Scenario: isNaN/true + + When CEL expression 'math.isNaN(0.0/0.0)' is evaluated + Then none is None + +@wip +Scenario: isNaN/false + + When CEL expression '!math.isNaN(1.0/0.0)' is evaluated + Then none is None + +Scenario: isNaN/dyn_error + + When CEL expression 'math.isNaN(dyn(true))' is evaluated + Then eval_error is 'no such overload' + + +# isInf -- + + +@wip +Scenario: isInf/true + + When CEL expression 'math.isInf(1.0/0.0)' is evaluated + Then none is None + +@wip +Scenario: isInf/false + + When CEL expression '!math.isInf(0.0/0.0)' is evaluated + Then none is None + +Scenario: isInf/dyn_error + + When CEL expression 'math.isInf(dyn(true))' is evaluated + Then eval_error is 'no such overload' + + +# isFinite -- + + +@wip +Scenario: isFinite/true + + When CEL expression 'math.isFinite(1.0/1.5)' is evaluated + Then none is None + +@wip +Scenario: isFinite/false_nan + + When CEL expression '!math.isFinite(0.0/0.0)' is evaluated + Then none is None + +@wip +Scenario: isFinite/false_inf + + When CEL expression '!math.isFinite(-1.0/0.0)' is evaluated + Then none is None + +Scenario: isFinite/dyn_error + + When CEL expression 'math.isFinite(dyn(true))' is evaluated + Then eval_error is 'no such overload' + + +# bit_and -- + + +@wip +Scenario: bit_and/int_int_non_intersect + + When CEL expression 'math.bitAnd(1, 2)' is evaluated + Then value is celpy.celtypes.IntType(source=0) + +@wip +Scenario: bit_and/int_int_intersect + + When CEL expression 'math.bitAnd(1, 3)' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: bit_and/int_int_intersect_neg + + When CEL expression 'math.bitAnd(1, -1)' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: bit_and/uint_uint_non_intersect + + When CEL expression 'math.bitAnd(1u, 2u)' is evaluated + Then value is celpy.celtypes.UintType(source=0) + +@wip +Scenario: bit_and/uint_uint_intersect + + When CEL expression 'math.bitAnd(1u, 3u)' is evaluated + Then value is celpy.celtypes.UintType(source=1) + +Scenario: bit_and/int_dyn_error + + When CEL expression "math.bitAnd(2u, dyn(''))" is evaluated + Then eval_error is 'no such overload' + + +# bit_or -- + + +@wip +Scenario: bit_or/int_int_positive + + When CEL expression 'math.bitOr(1, 2)' is evaluated + Then value is celpy.celtypes.IntType(source=3) + +@wip +Scenario: bit_or/int_int_positive_negative + + When CEL expression 'math.bitOr(4, -2)' is evaluated + Then value is celpy.celtypes.IntType(source=-2) + +@wip +Scenario: bit_or/uint_uint + + When CEL expression 'math.bitOr(1u, 4u)' is evaluated + Then value is celpy.celtypes.UintType(source=5) + +Scenario: bit_or/dyn_int_error + + When CEL expression 'math.bitOr(dyn(1.2), 1)' is evaluated + Then eval_error is 'no such overload' + + +# bit_xor -- + + +@wip +Scenario: bit_xor/int_int_positive + + When CEL expression 'math.bitXor(1, 3)' is evaluated + Then value is celpy.celtypes.IntType(source=2) + +@wip +Scenario: bit_xor/int_int_positive_negative + + When CEL expression 'math.bitXor(4, -2)' is evaluated + Then value is celpy.celtypes.IntType(source=-6) + +@wip +Scenario: bit_xor/uint_uint + + When CEL expression 'math.bitXor(1u, 3u)' is evaluated + Then value is celpy.celtypes.UintType(source=2) + +Scenario: bit_xor/dyn_dyn_error + + When CEL expression 'math.bitXor(dyn([]), dyn([1]))' is evaluated + Then eval_error is 'no such overload' + + +# bit_not -- + + +@wip +Scenario: bit_not/int_positive + + When CEL expression 'math.bitNot(1)' is evaluated + Then value is celpy.celtypes.IntType(source=-2) + +@wip +Scenario: bit_not/int_negative + + When CEL expression 'math.bitNot(-1)' is evaluated + Then value is celpy.celtypes.IntType(source=0) + +@wip +Scenario: bit_not/int_zero + + When CEL expression 'math.bitNot(0)' is evaluated + Then value is celpy.celtypes.IntType(source=-1) + +@wip +Scenario: bit_not/uint_positive + + When CEL expression 'math.bitNot(1u)' is evaluated + Then value is celpy.celtypes.UintType(source=18446744073709551614) + +@wip +Scenario: bit_not/uint_zero + + When CEL expression 'math.bitNot(0u)' is evaluated + Then value is celpy.celtypes.UintType(source=18446744073709551615) + +Scenario: bit_not/dyn_error + + When CEL expression "math.bitNot(dyn(''))" is evaluated + Then eval_error is 'no such overload' + + +# bit_shift_left -- + + +@wip +Scenario: bit_shift_left/int + + When CEL expression 'math.bitShiftLeft(1, 2)' is evaluated + Then value is celpy.celtypes.IntType(source=4) + +@wip +Scenario: bit_shift_left/int_large_shift + + When CEL expression 'math.bitShiftLeft(1, 200)' is evaluated + Then value is celpy.celtypes.IntType(source=0) + +@wip +Scenario: bit_shift_left/int_negative_large_shift + + When CEL expression 'math.bitShiftLeft(-1, 200)' is evaluated + Then value is celpy.celtypes.IntType(source=0) + +@wip +Scenario: bit_shift_left/uint + + When CEL expression 'math.bitShiftLeft(1u, 2)' is evaluated + Then value is celpy.celtypes.UintType(source=4) + +@wip +Scenario: bit_shift_left/uint_large_shift + + When CEL expression 'math.bitShiftLeft(1u, 200)' is evaluated + Then value is celpy.celtypes.UintType(source=0) + +Scenario: bit_shift_left/bad_shift + + When CEL expression 'math.bitShiftLeft(1u, -1)' is evaluated + Then eval_error is 'negative offset' + +Scenario: bit_shift_left/dyn_int_error + + When CEL expression 'math.bitShiftLeft(dyn(4.3), 1)' is evaluated + Then eval_error is 'no such overload' + + +# bit_shift_right -- + + +@wip +Scenario: bit_shift_right/int + + When CEL expression 'math.bitShiftRight(1024, 2)' is evaluated + Then value is celpy.celtypes.IntType(source=256) + +@wip +Scenario: bit_shift_right/int_large_shift + + When CEL expression 'math.bitShiftRight(1024, 64)' is evaluated + Then value is celpy.celtypes.IntType(source=0) + +@wip +Scenario: bit_shift_right/int_negative + + When CEL expression 'math.bitShiftRight(-1024, 3)' is evaluated + Then value is celpy.celtypes.IntType(source=2305843009213693824) + +@wip +Scenario: bit_shift_right/int_negative_large_shift + + When CEL expression 'math.bitShiftRight(-1024, 64)' is evaluated + Then value is celpy.celtypes.IntType(source=0) + +@wip +Scenario: bit_shift_right/uint + + When CEL expression 'math.bitShiftRight(1024u, 2)' is evaluated + Then value is celpy.celtypes.UintType(source=256) + +@wip +Scenario: bit_shift_right/uint_large_shift + + When CEL expression 'math.bitShiftRight(1024u, 200)' is evaluated + Then value is celpy.celtypes.UintType(source=0) + +Scenario: bit_shift_right/bad_shift + + When CEL expression 'math.bitShiftRight(1u, -1)' is evaluated + Then eval_error is 'negative offset' + +Scenario: bit_shift_right/dyn_int_error + + When CEL expression "math.bitShiftRight(dyn(b'123'), 1)" is evaluated + Then eval_error is 'no such overload' + diff --git a/features/math_ext.textproto b/features/math_ext.textproto new file mode 100644 index 0000000..333d9bd --- /dev/null +++ b/features/math_ext.textproto @@ -0,0 +1,1266 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: google.api.expr.test.v1.SimpleTestFile + +name: "math_ext" +description: "Tests for the math extension library." +section: { + name: "greatest_int_result" + test: { + name: "unary_negative" + expr: "math.greatest(-5)" + value: { + int64_value: -5 + } + } + test: { + name: "unary_positive" + expr: "math.greatest(5)" + value: { + int64_value: 5 + } + } + test: { + name: "binary_same_args" + expr: "math.greatest(1, 1)" + value: { + int64_value: 1 + } + } + test: { + name: "binary_with_decimal" + expr: "math.greatest(1, 1.0) == 1" + } + test: { + name: "binary_with_uint" + expr: "math.greatest(1, 1u) == 1" + } + test: { + name: "binary_first_arg_greater" + expr: "math.greatest(3, -3)" + value: { + int64_value: 3 + } + } + test: { + name: "binary_second_arg_greater" + expr: "math.greatest(-7, 5)" + value: { + int64_value: 5 + } + } + test: { + name: "binary_first_arg_int_max" + expr: "math.greatest(9223372036854775807, 1)" + value: { + int64_value: 9223372036854775807 + } + } + test: { + name: "binary_second_arg_int_max" + expr: "math.greatest(1, 9223372036854775807)" + value: { + int64_value: 9223372036854775807 + } + } + test: { + name: "binary_first_arg_int_min" + expr: "math.greatest(-9223372036854775808, 1)" + value: { + int64_value: 1 + } + } + test: { + name: "binary_second_arg_int_min" + expr: "math.greatest(1, -9223372036854775808)" + value: { + int64_value: 1 + } + } + test: { + name: "ternary_same_args" + expr: "math.greatest(1, 1, 1) == 1" + } + test: { + name: "ternary_with_decimal" + expr: "math.greatest(1, 1.0, 1.0) == 1" + } + test: { + name: "ternary_with_uint" + expr: "math.greatest(1, 1u, 1u) == 1" + } + test: { + name: "ternary_first_arg_greatest" + expr: "math.greatest(10, 1, 3) == 10" + } + test: { + name: "ternary_third_arg_greatest" + expr: "math.greatest(1, 3, 10) == 10" + } + test: { + name: "ternary_with_negatives" + expr: "math.greatest(-1, -2, -3) == -1" + } + test: { + name: "ternary_int_max" + expr: "math.greatest(9223372036854775807, 1, 5) == 9223372036854775807" + } + test: { + name: "ternary_int_min" + expr: "math.greatest(-9223372036854775807, -1, -5) == -1" + } + test: { + name: "quaternary_mixed" + expr: "math.greatest(5.4, 10, 3u, -5.0, 9223372036854775807) == 9223372036854775807" + } + test: { + name: "quaternary_mixed_array" + expr: "math.greatest([5.4, 10, 3u, -5.0, 3.5]) == 10" + } + test: { + name: "quaternary_mixed_dyn_array" + expr: "math.greatest([dyn(5.4), dyn(10), dyn(3u), dyn(-5.0), dyn(3.5)]) == 10" + } +} + +section: { + name: "greatest_double_result" + test: { + name: "unary_negative" + expr: "math.greatest(-5.0)" + value: { + double_value: -5.0 + } + } + test: { + name: "unary_positive" + expr: "math.greatest(5.0)" + value: { + double_value: 5.0 + } + } + test: { + name: "binary_same_args" + expr: "math.greatest(1.0, 1.0)" + value: { + double_value: 1.0 + } + } + test: { + name: "binary_with_int" + expr: "math.greatest(1.0, 1) == 1.0" + } + test: { + name: "binary_with_uint" + expr: "math.greatest(1.0, 1u) == 1.0" + } + test: { + name: "binary_first_arg_greater" + expr: "math.greatest(5.0, -7.0)" + value: { + double_value: 5.0 + } + } + test: { + name: "binary_second_arg_greater" + expr: "math.greatest(-3.0, 3.0)" + value: { + double_value: 3.0 + } + } + test: { + name: "binary_first_arg_double_max" + expr: "math.greatest(1.797693e308, 1)" + value: { + double_value: 1.797693e308 + } + } + test: { + name: "binary_second_arg_double_max" + expr: "math.greatest(1, 1.797693e308)" + value: { + double_value: 1.797693e308 + } + } + test: { + name: "binary_first_arg_double_min" + expr: "math.greatest(-1.797693e308, 1.5)" + value: { + double_value: 1.5 + } + } + test: { + name: "binary_second_arg_double_min" + expr: "math.greatest(1.5, -1.797693e308)" + value: { + double_value: 1.5 + } + } + test: { + name: "ternary_same_args" + expr: "math.greatest(1.0, 1.0, 1.0) == 1.0" + } + test: { + name: "ternary_with_int" + expr: "math.greatest(1.0, 1, 1) == 1.0" + } + test: { + name: "ternary_with_uint" + expr: "math.greatest(1.0, 1u, 1u) == 1.0" + } + test: { + name: "ternary_first_arg_greatest" + expr: "math.greatest(10.5, 1.5, 3.5) == 10.5" + } + test: { + name: "ternary_third_arg_greatest" + expr: "math.greatest(1.5, 3.5, 10.5) == 10.5" + } + test: { + name: "ternary_with_negatives" + expr: "math.greatest(-1.5, -2.5, -3.5) == -1.5" + } + test: { + name: "ternary_double_max" + expr: "math.greatest(1.797693e308, 1, 5) == 1.797693e308" + } + test: { + name: "ternary_double_min" + expr: "math.greatest(-1.797693e308, -1, -5) == -1" + } + test: { + name: "quaternary_mixed" + expr: "math.greatest(5.4, 10, 3u, -5.0, 1.797693e308) == 1.797693e308" + } + test: { + name: "quaternary_mixed_array" + expr: "math.greatest([5.4, 10.5, 3u, -5.0, 3.5]) == 10.5" + } + test: { + name: "quaternary_mixed_dyn_array" + expr: "math.greatest([dyn(5.4), dyn(10.5), dyn(3u), dyn(-5.0), dyn(3.5)]) == 10.5" + } +} + +section: { + name: "greatest_uint_result" + test: { + name: "unary" + expr: "math.greatest(5u)" + value: { + uint64_value: 5 + } + } + test: { + name: "binary_same_args" + expr: "math.greatest(1u, 1u)" + value: { + uint64_value: 1 + } + } + test: { + name: "binary_with_decimal" + expr: "math.greatest(1u, 1.0) == 1" + } + test: { + name: "binary_with_int" + expr: "math.greatest(1u, 1) == 1u" + } + test: { + name: "binary_first_arg_greater" + expr: "math.greatest(5u, -7)" + value: { + uint64_value: 5 + } + } + test: { + name: "binary_second_arg_greater" + expr: "math.greatest(-3, 3u)" + value: { + uint64_value: 3 + } + } + test: { + name: "binary_first_arg_uint_max" + expr: "math.greatest(18446744073709551615u, 1u)" + value: { + uint64_value: 18446744073709551615 + } + } + test: { + name: "binary_second_arg_uint_max" + expr: "math.greatest(1u, 18446744073709551615u)" + value: { + uint64_value: 18446744073709551615 + } + } + test: { + name: "ternary_same_args" + expr: "math.greatest(1u, 1u, 1u) == 1u" + } + test: { + name: "ternary_with_decimal" + expr: "math.greatest(1u, 1.0, 1.0) == 1u" + } + test: { + name: "ternary_with_int" + expr: "math.greatest(1u, 1, 1) == 1u" + } + test: { + name: "ternary_first_arg_greatest" + expr: "math.greatest(10u, 1u, 3u) == 10u" + } + test: { + name: "ternary_third_arg_greatest" + expr: "math.greatest(1u, 3u, 10u) == 10u" + } + test: { + name: "ternary_int_max" + expr: "math.greatest(18446744073709551615u, 1u, 5u) == 18446744073709551615u" + } + test: { + name: "quaternary_mixed" + expr: "math.greatest(5.4, 10, 3u, -5.0, 18446744073709551615u) == 18446744073709551615u" + } + test: { + name: "quaternary_mixed_array" + expr: "math.greatest([5.4, 10u, 3u, -5.0, 3.5]) == 10u" + } + test: { + name: "quaternary_mixed_dyn_array" + expr: "math.greatest([dyn(5.4), dyn(10u), dyn(3u), dyn(-5.0), dyn(3.5)]) == 10u" + } +} + +section: { + name: "least_int_result" + test: { + name: "unary_negative" + expr: "math.least(-5)" + value: { + int64_value: -5 + } + } + test: { + name: "unary_positive" + expr: "math.least(5)" + value: { + int64_value: 5 + } + } + test: { + name: "binary_same_args" + expr: "math.least(1, 1)" + value: { + int64_value: 1 + } + } + test: { + name: "binary_with_decimal" + expr: "math.least(1, 1.0) == 1" + } + test: { + name: "binary_with_uint" + expr: "math.least(1, 1u) == 1" + } + test: { + name: "binary_first_arg_least" + expr: "math.least(-3, 3)" + value: { + int64_value: -3 + } + } + test: { + name: "binary_second_arg_least" + expr: "math.least(5, -7)" + value: { + int64_value: -7 + } + } + test: { + name: "binary_first_arg_int_max" + expr: "math.least(9223372036854775807, 1)" + value: { + int64_value: 1 + } + } + test: { + name: "binary_second_arg_int_max" + expr: "math.least(1, 9223372036854775807)" + value: { + int64_value: 1 + } + } + test: { + name: "binary_first_arg_int_min" + expr: "math.least(-9223372036854775808, 1)" + value: { + int64_value: -9223372036854775808 + } + } + test: { + name: "binary_second_arg_int_min" + expr: "math.least(1, -9223372036854775808)" + value: { + int64_value: -9223372036854775808 + } + } + test: { + name: "ternary_same_args" + expr: "math.least(1, 1, 1) == 1" + } + test: { + name: "ternary_with_decimal" + expr: "math.least(1, 1.0, 1.0) == 1" + } + test: { + name: "ternary_with_uint" + expr: "math.least(1, 1u, 1u) == 1" + } + test: { + name: "ternary_first_arg_least" + expr: "math.least(0, 1, 3) == 0" + } + test: { + name: "ternary_third_arg_least" + expr: "math.least(1, 3, 0) == 0" + } + test: { + name: "ternary_with_negatives" + expr: "math.least(-1, -2, -3) == -3" + } + test: { + name: "ternary_int_max" + expr: "math.least(9223372036854775807, 1, 5) == 1" + } + test: { + name: "ternary_int_min" + expr: "math.least(-9223372036854775808, -1, -5) == -9223372036854775808" + } + test: { + name: "quaternary_mixed" + expr: "math.least(5.4, 10, 3u, -5.0, 9223372036854775807) == -5.0" + } + test: { + name: "quaternary_mixed_array" + expr: "math.least([5.4, 10, 3u, -5.0, 3.5]) == -5.0" + } + test: { + name: "quaternary_mixed_dyn_array" + expr: "math.least([dyn(5.4), dyn(10), dyn(3u), dyn(-5.0), dyn(3.5)]) == -5.0" + } +} + +section: { + name: "least_double_result" + test: { + name: "unary_negative" + expr: "math.least(-5.5)" + value: { + double_value: -5.5 + } + } + test: { + name: "unary_positive" + expr: "math.least(5.5)" + value: { + double_value: 5.5 + } + } + test: { + name: "binary_same_args" + expr: "math.least(1.5, 1.5)" + value: { + double_value: 1.5 + } + } + test: { + name: "binary_with_int" + expr: "math.least(1.0, 1) == 1" + } + test: { + name: "binary_with_uint" + expr: "math.least(1, 1u) == 1" + } + test: { + name: "binary_first_arg_least" + expr: "math.least(-3.5, 3.5)" + value: { + double_value: -3.5 + } + } + test: { + name: "binary_second_arg_least" + expr: "math.least(5.5, -7.5)" + value: { + double_value: -7.5 + } + } + test: { + name: "binary_first_arg_double_max" + expr: "math.least(1.797693e308, 1.5)" + value: { + double_value: 1.5 + } + } + test: { + name: "binary_second_arg_double_max" + expr: "math.least(1.5, 1.797693e308)" + value: { + double_value: 1.5 + } + } + test: { + name: "binary_first_arg_double_min" + expr: "math.least(-1.797693e308, 1.5)" + value: { + double_value: -1.797693e308 + } + } + test: { + name: "binary_second_arg_double_min" + expr: "math.least(1.5, -1.797693e308)" + value: { + double_value: -1.797693e308 + } + } + test: { + name: "ternary_same_args" + expr: "math.least(1.5, 1.5, 1.5) == 1.5" + } + test: { + name: "ternary_with_int" + expr: "math.least(1.0, 1, 1) == 1.0" + } + test: { + name: "ternary_with_uint" + expr: "math.least(1.0, 1u, 1u) == 1" + } + test: { + name: "ternary_first_arg_least" + expr: "math.least(0.5, 1.5, 3.5) == 0.5" + } + test: { + name: "ternary_third_arg_least" + expr: "math.least(1.5, 3.5, 0.5) == 0.5" + } + test: { + name: "ternary_with_negatives" + expr: "math.least(-1.5, -2.5, -3.5) == -3.5" + } + test: { + name: "ternary_double_max" + expr: "math.least(1.797693e308, 1, 5) == 1" + } + test: { + name: "ternary_double_min" + expr: "math.least(-1.797693e308, -1, -5) == -1.797693e308" + } + test: { + name: "quaternary_mixed" + expr: "math.least(5.4, 10, 3u, -5.0, 1.797693e308) == -5.0" + } + test: { + name: "quaternary_mixed_array" + expr: "math.least([5.4, 10.5, 3u, -5.0, 3.5]) == -5.0" + } + test: { + name: "quaternary_mixed_dyn_array" + expr: "math.least([dyn(5.4), dyn(10.5), dyn(3u), dyn(-5.0), dyn(3.5)]) == -5.0" + } +} + +section: { + name: "least_uint_result" + test: { + name: "unary" + expr: "math.least(5u)" + value: { + uint64_value: 5 + } + } + test: { + name: "binary_same_args" + expr: "math.least(1u, 1u)" + value: { + uint64_value: 1 + } + } + test: { + name: "binary_with_decimal" + expr: "math.least(1u, 1.0) == 1u" + } + test: { + name: "binary_with_int" + expr: "math.least(1u, 1) == 1u" + } + test: { + name: "binary_first_arg_least" + expr: "math.least(1u, 3u)" + value: { + uint64_value: 1 + } + } + test: { + name: "binary_second_arg_least" + expr: "math.least(5u, 2u)" + value: { + uint64_value: 2 + } + } + test: { + name: "binary_first_arg_uint_max" + expr: "math.least(18446744073709551615u, 1u)" + value: { + uint64_value: 1 + } + } + test: { + name: "binary_second_arg_uint_max" + expr: "math.least(1u, 18446744073709551615u)" + value: { + uint64_value: 1 + } + } + test: { + name: "ternary_same_args" + expr: "math.least(1u, 1u, 1u) == 1u" + } + test: { + name: "ternary_with_decimal" + expr: "math.least(1u, 1.0, 1.0) == 1u" + } + test: { + name: "ternary_with_int" + expr: "math.least(1u, 1, 1) == 1u" + } + test: { + name: "ternary_first_arg_least" + expr: "math.least(1u, 10u, 3u) == 1u" + } + test: { + name: "ternary_third_arg_least" + expr: "math.least(10u, 3u, 1u) == 1u" + } + test: { + name: "ternary_uint_max" + expr: "math.least(18446744073709551615u, 1u, 5u) == 1u" + } + test: { + name: "quaternary_mixed" + expr: "math.least(5.4, 10, 3u, 1u, 18446744073709551615u) == 1u" + } + test: { + name: "quaternary_mixed_array" + expr: "math.least([5.4, 10u, 3u, 1u, 3.5]) == 1u" + } + test: { + name: "quaternary_mixed_dyn_array" + expr: "math.least([dyn(5.4), dyn(10u), dyn(3u), dyn(1u), dyn(3.5)]) == 1u" + } +} + +section: { + name: "ceil" + test: { + name: "negative" + expr: "math.ceil(-1.2)" + value: { + double_value: -1.0 + } + } + test: { + name: "positive" + expr: "math.ceil(1.2)" + value: { + double_value: 2.0 + } + } + test: { + name: "dyn_error" + expr: "math.ceil(dyn(1))" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} + +section: { + name: "floor" + test: { + name: "negative" + expr: "math.floor(-1.2)" + value: { + double_value: -2.0 + } + } + test: { + name: "positive" + expr: "math.floor(1.2)" + value: { + double_value: 1.0 + } + } + test: { + name: "dyn_error" + expr: "math.floor(dyn(1))" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} + +section: { + name: "round" + test: { + name: "negative_down" + expr: "math.round(-1.6)" + value: { + double_value: -2.0 + } + } + test: { + name: "negative_up" + expr: "math.round(-1.4)" + value: { + double_value: -1.0 + } + } + test: { + name: "negative_mid" + expr: "math.round(-1.5)" + value: { + double_value: -2.0 + } + } + test: { + name: "positive_down" + expr: "math.round(1.2)" + value: { + double_value: 1.0 + } + } + test: { + name: "positive_up" + expr: "math.round(1.5)" + value: { + double_value: 2.0 + } + } + test: { + name: "nan" + expr: "math.isNaN(math.round(0.0/0.0))" + } + test: { + name: "dyn_error" + expr: "math.round(dyn(1))" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} + +section: { + name: "trunc" + test: { + name: "negative" + expr: "math.trunc(-1.2)" + value: { + double_value: -1.0 + } + } + test: { + name: "positive" + expr: "math.trunc(1.2)" + value: { + double_value: 1.0 + } + } + test: { + name: "nan" + expr: "math.isNaN(math.trunc(0.0/0.0))" + } + test: { + name: "dyn_error" + expr: "math.trunc(dyn(1))" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} + +section: { + name: "abs" + test: { + name: "uint" + expr: "math.abs(1u)" + value: { + uint64_value: 1 + } + } + test: { + name: "positive_int" + expr: "math.abs(1)" + value: { + int64_value: 1 + } + } + test: { + name: "negative_int" + expr: "math.abs(-11)" + value: { + int64_value: 11 + } + } + test: { + name: "positive_double" + expr: "math.abs(1.5)" + value: { + double_value: 1.5 + } + } + test: { + name: "negative_double" + expr: "math.abs(-11.5)" + value: { + double_value: 11.5 + } + } + test: { + name: "int_overflow" + expr: "math.abs(-9223372036854775808)" + eval_error: { + errors: { + message: "overflow" + } + } + } +} + +section: { + name: "sign" + test: { + name: "positive_uint" + expr: "math.sign(100u)" + value: { + uint64_value: 1 + } + } + test: { + name: "zero_uint" + expr: "math.sign(0u)" + value: { + uint64_value: 0 + } + } + test: { + name: "positive_int" + expr: "math.sign(100)" + value: { + int64_value: 1 + } + } + test: { + name: "negative_int" + expr: "math.sign(-11)" + value: { + int64_value: -1 + } + } + test: { + name: "zero_int" + expr: "math.sign(0)" + value: { + int64_value: 0 + } + } + test: { + name: "positive_double" + expr: "math.sign(100.5)" + value: { + double_value: 1.0 + } + } + test: { + name: "negative_double" + expr: "math.sign(-32.0)" + value: { + double_value: -1.0 + } + } + test: { + name: "zero_double" + expr: "math.sign(0.0)" + value: { + double_value: 0.0 + } + } + test: { + name: "dyn_error" + expr: "math.sign(dyn(true))" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} + +section: { + name: "isNaN" + test: { + name: "true" + expr: "math.isNaN(0.0/0.0)" + } + test: { + name: "false" + expr: "!math.isNaN(1.0/0.0)" + } + test: { + name: "dyn_error" + expr: "math.isNaN(dyn(true))" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} + +section: { + name: "isInf" + test: { + name: "true" + expr: "math.isInf(1.0/0.0)" + } + test: { + name: "false" + expr: "!math.isInf(0.0/0.0)" + } + test: { + name: "dyn_error" + expr: "math.isInf(dyn(true))" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} + +section: { + name: "isFinite" + test: { + name: "true" + expr: "math.isFinite(1.0/1.5)" + } + test: { + name: "false_nan" + expr: "!math.isFinite(0.0/0.0)" + } + test: { + name: "false_inf" + expr: "!math.isFinite(-1.0/0.0)" + } + test: { + name: "dyn_error" + expr: "math.isFinite(dyn(true))" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} + +section: { + name: "bit_and" + test: { + name: "int_int_non_intersect" + expr: "math.bitAnd(1, 2)" + value: { + int64_value: 0 + } + } + test: { + name: "int_int_intersect" + expr: "math.bitAnd(1, 3)" + value: { + int64_value: 1 + } + } + test: { + name: "int_int_intersect_neg" + expr: "math.bitAnd(1, -1)" + value: { + int64_value: 1 + } + } + test: { + name: "uint_uint_non_intersect" + expr: "math.bitAnd(1u, 2u)" + value: { + uint64_value: 0 + } + } + test: { + name: "uint_uint_intersect" + expr: "math.bitAnd(1u, 3u)" + value: { + uint64_value: 1 + } + } + test: { + name: "int_dyn_error" + expr: "math.bitAnd(2u, dyn(''))" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} + +section: { + name: "bit_or" + test: { + name: "int_int_positive" + expr: "math.bitOr(1, 2)" + value: { + int64_value: 3 + } + } + test: { + name: "int_int_positive_negative" + expr: "math.bitOr(4, -2)" + value: { + int64_value: -2 + } + } + test: { + name: "uint_uint" + expr: "math.bitOr(1u, 4u)" + value: { + uint64_value: 5 + } + } + test: { + name: "dyn_int_error" + expr: "math.bitOr(dyn(1.2), 1)" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} + +section: { + name: "bit_xor" + test: { + name: "int_int_positive" + expr: "math.bitXor(1, 3)" + value: { + int64_value: 2 + } + } + test: { + name: "int_int_positive_negative" + expr: "math.bitXor(4, -2)" + value: { + int64_value: -6 + } + } + test: { + name: "uint_uint" + expr: "math.bitXor(1u, 3u)" + value: { + uint64_value: 2 + } + } + test: { + name: "dyn_dyn_error" + expr: "math.bitXor(dyn([]), dyn([1]))" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} + +section: { + name: "bit_not" + test: { + name: "int_positive" + expr: "math.bitNot(1)" + value: { + int64_value: -2 + } + } + test: { + name: "int_negative" + expr: "math.bitNot(-1)" + value: { + int64_value: 0 + } + } + test: { + name: "int_zero" + expr: "math.bitNot(0)" + value: { + int64_value: -1 + } + } + test: { + name: "uint_positive" + expr: "math.bitNot(1u)" + value: { + uint64_value: 18446744073709551614 + } + } + test: { + name: "uint_zero" + expr: "math.bitNot(0u)" + value: { + uint64_value: 18446744073709551615 + } + } + test: { + name: "dyn_error" + expr: "math.bitNot(dyn(''))" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} + +section: { + name: "bit_shift_left" + test: { + name: "int", + expr: "math.bitShiftLeft(1, 2)" + value: { + int64_value: 4 + } + } + test: { + name: "int_large_shift", + expr: "math.bitShiftLeft(1, 200)" + value: { + int64_value: 0 + } + } + test: { + name: "int_negative_large_shift", + expr: "math.bitShiftLeft(-1, 200)" + value: { + int64_value: 0 + } + } + test: { + name: "uint", + expr: "math.bitShiftLeft(1u, 2)" + value: { + uint64_value: 4 + } + } + test: { + name: "uint_large_shift", + expr: "math.bitShiftLeft(1u, 200)" + value: { + uint64_value: 0 + } + } + test: { + name: "bad_shift", + expr: "math.bitShiftLeft(1u, -1)" + eval_error: { + errors: { + message: "negative offset" + } + } + } + test: { + name: "dyn_int_error" + expr: "math.bitShiftLeft(dyn(4.3), 1)" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} + +section: { + name: "bit_shift_right" + test: { + name: "int", + expr: "math.bitShiftRight(1024, 2)" + value: { + int64_value: 256 + } + } + test: { + name: "int_large_shift", + expr: "math.bitShiftRight(1024, 64)" + value: { + int64_value: 0 + } + } + test: { + name: "int_negative", + expr: "math.bitShiftRight(-1024, 3)" + value: { + int64_value: 2305843009213693824 + } + } + test: { + name: "int_negative_large_shift", + expr: "math.bitShiftRight(-1024, 64)" + value: { + int64_value: 0 + } + } + test: { + name: "uint", + expr: "math.bitShiftRight(1024u, 2)" + value: { + uint64_value: 256 + } + } + test: { + name: "uint_large_shift", + expr: "math.bitShiftRight(1024u, 200)" + value: { + uint64_value: 0 + } + } + test: { + name: "bad_shift", + expr: "math.bitShiftRight(1u, -1)" + eval_error: { + errors: { + message: "negative offset" + } + } + } + test: { + name: "dyn_int_error" + expr: "math.bitShiftRight(dyn(b'123'), 1)" + eval_error: { + errors: { + message: "no such overload" + } + } + } +} diff --git a/features/namespace.feature b/features/namespace.feature index 83bd11d..30011af 100644 --- a/features/namespace.feature +++ b/features/namespace.feature @@ -1,67 +1,39 @@ - +@conformance Feature: namespace Uses of qualified identifiers and namespaces. # qualified -- Qualified variable lookups. -Scenario: self_eval_qualified_lookup - - # type:{primitive:BOOL} - # Given type_env parameter "x.y" is TypeType(value='BOOL') - Given type_env parameter "x.y" is BOOL - - # bool_value:true - Given bindings parameter "x.y" is BoolType(source=True) - When CEL expression "x.y" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: qualified/self_eval_qualified_lookup + Given type_env parameter "x.y" is celpy.celtypes.BoolType + and bindings parameter "x.y" is celpy.celtypes.BoolType(source=True) + When CEL expression 'x.y' is evaluated + Then value is celpy.celtypes.BoolType(source=True) # namespace -- Namespaced identifiers. -Scenario: self_eval_container_lookup - - # type:{primitive:BOOL} - # Given type_env parameter "x.y" is TypeType(value='BOOL') - Given type_env parameter "x.y" is BOOL - - # type:{primitive:STRING} - # Given type_env parameter "y" is TypeType(value='STRING') - Given type_env parameter "y" is STRING - - # bool_value:true - Given bindings parameter "x.y" is BoolType(source=True) - - # string_value:"false" - Given bindings parameter "y" is StringType(source='false') - - Given container is "x" - - When CEL expression "y" is evaluated - # bool_value:true - Then value is BoolType(source=True) - - -Scenario: self_eval_container_lookup_unchecked - - # type:{primitive:BOOL} - # Given type_env parameter "x.y" is TypeType(value='BOOL') - Given type_env parameter "x.y" is BOOL - # type:{primitive:BOOL} - # Given type_env parameter "y" is TypeType(value='BOOL') - Given type_env parameter "y" is BOOL +Scenario: namespace/self_eval_container_lookup - # bool_value:true - Given bindings parameter "x.y" is BoolType(source=True) + Given type_env parameter "x.y" is celpy.celtypes.BoolType + and type_env parameter "y" is celpy.celtypes.StringType + and bindings parameter "x.y" is celpy.celtypes.BoolType(source=True) + and bindings parameter "y" is celpy.celtypes.StringType(source='false') + and container is 'x' + When CEL expression 'y' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - # bool_value:false - Given bindings parameter "y" is BoolType(source=False) +Scenario: namespace/self_eval_container_lookup_unchecked - Given container is "x" + Given disable_check parameter is True + and type_env parameter "x.y" is celpy.celtypes.BoolType + and type_env parameter "y" is celpy.celtypes.BoolType + and bindings parameter "x.y" is celpy.celtypes.BoolType(source=True) + and bindings parameter "y" is celpy.celtypes.BoolType(source=False) + and container is 'x' + When CEL expression 'y' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "y" is evaluated - # bool_value:true - Then value is BoolType(source=True) diff --git a/features/namespace.textproto b/features/namespace.textproto index df439c6..15cc3ac 100644 --- a/features/namespace.textproto +++ b/features/namespace.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: google.api.expr.test.v1.SimpleTestFile + name: "namespace" description: "Uses of qualified identifiers and namespaces." section { diff --git a/features/optionals.feature b/features/optionals.feature new file mode 100644 index 0000000..766d806 --- /dev/null +++ b/features/optionals.feature @@ -0,0 +1,434 @@ +@conformance +Feature: optionals + Tests for optionals. + +# optionals -- + + +@wip +Scenario: optionals/null + + When CEL expression 'optional.of(null).hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: optionals/null_non_zero_value + + When CEL expression 'optional.ofNonZeroValue(null).hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/none_or_none_or_value + + When CEL expression 'optional.none().or(optional.none()).orValue(42)' is evaluated + Then value is celpy.celtypes.IntType(source=42) + +@wip +Scenario: optionals/none_optMap_hasValue + + When CEL expression 'optional.none().optMap(y, y + 1).hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/empty_map_optFlatMap_hasValue + + When CEL expression '{}.?key.optFlatMap(k, k.?subkey).hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/map_empty_submap_optFlatMap_hasValue + + When CEL expression "{'key': {}}.?key.optFlatMap(k, k.?subkey).hasValue()" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/map_null_entry_hasValue + + When CEL expression "{'null_key': dyn(null)}.?null_key.hasValue()" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: optionals/map_null_entry_no_such_key + + When CEL expression "{'null_key': dyn(null)}.?null_key.invalid.hasValue()" is evaluated + Then eval_error is 'no such key' + +@wip +Scenario: optionals/map_absent_key_absent_field_none + + When CEL expression '{true: dyn(0)}[?false].absent.hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +Scenario: optionals/map_present_key_invalid_field + + When CEL expression '{true: dyn(0)}[?true].absent.hasValue()' is evaluated + Then eval_error is 'no such key' + +@wip +Scenario: optionals/map_undefined_entry_hasValue + + When CEL expression '{}.?null_key.invalid.hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/map_submap_subkey_optFlatMap_value + + When CEL expression "{'key': {'subkey': 'subvalue'}}.?key.optFlatMap(k, k.?subkey).value()" is evaluated + Then value is celpy.celtypes.StringType(source='subvalue') + +@wip +Scenario: optionals/map_submap_optFlatMap_value + + When CEL expression "{'key': {'subkey': ''}}.?key.optFlatMap(k, k.?subkey).value()" is evaluated + Then value is celpy.celtypes.StringType(source='') + +@wip +Scenario: optionals/map_optindex_optFlatMap_optional_ofNonZeroValue_hasValue + + When CEL expression "{'key': {'subkey': ''}}.?key.optFlatMap(k, optional.ofNonZeroValue(k.subkey)).hasValue()" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/optional_of_optMap_value + + When CEL expression 'optional.of(42).optMap(y, y + 1).value()' is evaluated + Then value is celpy.celtypes.IntType(source=43) + +@wip +Scenario: optionals/optional_ofNonZeroValue_or_optional_value + + When CEL expression 'optional.ofNonZeroValue(42).or(optional.of(20)).value() == 42' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: optionals/ternary_optional_hasValue + + When CEL expression '(has({}.x) ? optional.of({}.x) : optional.none()).hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/map_optindex_hasValue + + When CEL expression '{}.?x.hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/has_map_optindex + + When CEL expression 'has({}.?x.y)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/has_map_optindex_field + + When CEL expression "has({'x': {'y': 'z'}}.?x.y)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: optionals/type + + When CEL expression 'type(optional.none()) == optional_type' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: optionals/optional_chaining_1 + + When CEL expression "optional.ofNonZeroValue('').or(optional.of({'c': {'dashed-index': 'goodbye'}}.c['dashed-index'])).orValue('default value')" is evaluated + Then value is celpy.celtypes.StringType(source='goodbye') + +@wip +Scenario: optionals/optional_chaining_2 + + When CEL expression "{'c': {'dashed-index': 'goodbye'}}.c[?'dashed-index'].orValue('default value')" is evaluated + Then value is celpy.celtypes.StringType(source='goodbye') + +@wip +Scenario: optionals/optional_chaining_3 + + When CEL expression "{'c': {}}.c[?'missing-index'].orValue('default value')" is evaluated + Then value is celpy.celtypes.StringType(source='default value') + +@wip +Scenario: optionals/optional_chaining_4 + + When CEL expression "optional.of({'c': {'index': 'goodbye'}}).c.index.orValue('default value')" is evaluated + Then value is celpy.celtypes.StringType(source='goodbye') + +@wip +Scenario: optionals/optional_chaining_5 + + When CEL expression "optional.of({'c': {}}).c.missing.or(optional.none()[0]).orValue('default value')" is evaluated + Then value is celpy.celtypes.StringType(source='default value') + +@wip +Scenario: optionals/optional_chaining_6 + + When CEL expression "optional.of({'c': {}}).c.missing.or(optional.of(['list-value'])[0]).orValue('default value')" is evaluated + Then value is celpy.celtypes.StringType(source='list-value') + +@wip +Scenario: optionals/optional_chaining_7 + + When CEL expression "optional.of({'c': {'index': 'goodbye'}}).c['index'].orValue('default value')" is evaluated + Then value is celpy.celtypes.StringType(source='goodbye') + +@wip +Scenario: optionals/optional_chaining_8 + + When CEL expression "optional.of({'c': {}}).c['missing'].orValue('default value')" is evaluated + Then value is celpy.celtypes.StringType(source='default value') + +@wip +Scenario: optionals/optional_chaining_9 + + When CEL expression "has(optional.of({'c': {'entry': 'hello world'}}).c) && !has(optional.of({'c': {'entry': 'hello world'}}).c.missing)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: optionals/optional_chaining_10 + + When CEL expression "optional.ofNonZeroValue({'c': {'dashed-index': 'goodbye'}}.a.z).orValue({'c': {'dashed-index': 'goodbye'}}.c['dashed-index'])" is evaluated + Then eval_error is 'no such key' + +@wip +Scenario: optionals/optional_chaining_11 + + When CEL expression "{'c': {'dashed-index': 'goodbye'}}.?c.missing.or({'c': {'dashed-index': 'goodbye'}}.?c['dashed-index']).orValue('').size()" is evaluated + Then value is celpy.celtypes.IntType(source=7) + +@wip +Scenario: optionals/optional_chaining_12 + + When CEL expression "{?'nested_map': optional.ofNonZeroValue({?'map': {'c': {'dashed-index': 'goodbye'}}.?c})}" is evaluated + Then value is celpy.celtypes.MapType({'nested_map': celpy.celtypes.MapType({'map': celpy.celtypes.MapType({'dashed-index': celpy.celtypes.StringType(source='goodbye')})})}) + +@wip +Scenario: optionals/optional_chaining_13 + + When CEL expression "{?'nested_map': optional.ofNonZeroValue({?'map': {}.?c}), 'singleton': true}" is evaluated + Then value is celpy.celtypes.MapType({'singleton': celpy.celtypes.BoolType(source=True)}) + +@wip +Scenario: optionals/optional_chaining_14 + + When CEL expression '[?{}.?c, ?optional.of(42), ?optional.none()]' is evaluated + Then value is [celpy.celtypes.IntType(source=42)] + +@wip +Scenario: optionals/optional_chaining_15 + + When CEL expression "[?optional.ofNonZeroValue({'c': []}.?c.orValue(dyn({})))]" is evaluated + Then value is [] + +@wip +Scenario: optionals/optional_chaining_16 + + When CEL expression "optional.ofNonZeroValue({?'nested_map': optional.ofNonZeroValue({?'map': optional.of({}).?c})}).hasValue()" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/has_optional_ofNonZeroValue_struct_optional_ofNonZeroValue_map_optindex_field + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{?single_double_wrapper: optional.ofNonZeroValue(0.0)}.single_double_wrapper)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/optional_ofNonZeroValue_struct_optional_ofNonZeroValue_map_optindex_field + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'optional.ofNonZeroValue(TestAllTypes{?single_double_wrapper: optional.ofNonZeroValue(0.0)}).hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/struct_map_optindex_field + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{?map_string_string: {'nested': {}}[?'nested']}.map_string_string" is evaluated + Then value is celpy.celtypes.MapType({}) + +@wip +Scenario: optionals/struct_optional_ofNonZeroValue_map_optindex_field + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{?map_string_string: optional.ofNonZeroValue({'nested': {}}[?'nested'].orValue({}))}.map_string_string" is evaluated + Then value is celpy.celtypes.MapType({}) + +@wip +Scenario: optionals/struct_map_optindex_field_nested + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{?map_string_string: {'nested': {'hello': 'world'}}[?'nested']}.map_string_string" is evaluated + Then value is celpy.celtypes.MapType({'hello': celpy.celtypes.StringType(source='world')}) + +@wip +Scenario: optionals/struct_list_optindex_field + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{repeated_string: ['greetings', ?{'nested': {'hello': 'world'}}.nested.?hello]}.repeated_string" is evaluated + Then value is [celpy.celtypes.StringType(source='greetings'), celpy.celtypes.StringType(source='world')] + +@wip +Scenario: optionals/optional_empty_map_optindex_hasValue + + When CEL expression 'optional.of({}).?c.hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/empty_struct_optindex_hasValue + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.?repeated_string.hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/optional_empty_struct_optindex_hasValue + + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'optional.of(TestAllTypes{}).?repeated_string.hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/optional_none_optselect_hasValue + + When CEL expression 'optional.none().?repeated_string.hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/struct_optindex_value + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{repeated_string: ['foo']}.?repeated_string.value()" is evaluated + Then value is [celpy.celtypes.StringType(source='foo')] + +@wip +Scenario: optionals/optional_struct_optindex_value + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "optional.of(TestAllTypes{repeated_string: ['foo']}).?repeated_string.value()" is evaluated + Then value is [celpy.celtypes.StringType(source='foo')] + +@wip +Scenario: optionals/optional_struct_optindex_index_value + + Given container is 'cel.expr.conformance.proto2' + When CEL expression "optional.of(TestAllTypes{repeated_string: ['foo']}).?repeated_string[0].value()" is evaluated + Then value is celpy.celtypes.StringType(source='foo') + +@wip +Scenario: optionals/empty_list_optindex_hasValue + + When CEL expression '[][?0].hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/optional_empty_list_optindex_hasValue + + When CEL expression 'optional.of([])[?0].hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/optional_none_optindex_hasValue + + When CEL expression 'optional.none()[?0].hasValue()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/list_optindex_value + + When CEL expression "['foo'][?0].value()" is evaluated + Then value is celpy.celtypes.StringType(source='foo') + +@wip +Scenario: optionals/optional_list_optindex_value + + When CEL expression "optional.of(['foo'])[?0].value()" is evaluated + Then value is celpy.celtypes.StringType(source='foo') + +@wip +Scenario: optionals/map_key_mixed_type_optindex_value + + When CEL expression '{true: 1, 2: 2, 5u: 3}[?true].value()' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: optionals/map_key_mixed_numbers_double_key_optindex_value + + When CEL expression '{1u: 1.0, 2: 2.0, 3u: 3.0}[?3.0].value()' is evaluated + Then value is celpy.celtypes.DoubleType(source=3.0) + +@wip +Scenario: optionals/map_key_mixed_numbers_uint_key_optindex_value + + When CEL expression '{1u: 1.0, 2: 2.0, 3u: 3.0}[?2u].value()' is evaluated + Then value is celpy.celtypes.DoubleType(source=2.0) + +@wip +Scenario: optionals/map_key_mixed_numbers_int_key_optindex_value + + When CEL expression '{1u: 1.0, 2: 2.0, 3u: 3.0}[?1].value()' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +@wip +Scenario: optionals/optional_eq_none_none + + When CEL expression 'optional.none() == optional.none()' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: optionals/optional_eq_none_int + + When CEL expression 'optional.none() == optional.of(1)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/optional_eq_int_none + + When CEL expression 'optional.of(1) == optional.none()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/optional_eq_int_int + + When CEL expression 'optional.of(1) == optional.of(1)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: optionals/optional_ne_none_none + + When CEL expression 'optional.none() != optional.none()' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/optional_ne_none_int + + When CEL expression 'optional.none() != optional.of(1)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: optionals/optional_ne_int_none + + When CEL expression 'optional.of(1) != optional.none()' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: optionals/optional_ne_int_int + + When CEL expression 'optional.of(1) != optional.of(1)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/map_optional_has + + When CEL expression "has({'foo': optional.none()}.foo)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: optionals/map_optional_select_has + + When CEL expression "has({'foo': optional.none()}.foo.bar)" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + +@wip +Scenario: optionals/map_optional_entry_has + + When CEL expression "has({?'foo': optional.none()}.foo)" is evaluated + Then value is celpy.celtypes.BoolType(source=False) + diff --git a/features/optionals.textproto b/features/optionals.textproto new file mode 100644 index 0000000..6ad1cf9 --- /dev/null +++ b/features/optionals.textproto @@ -0,0 +1,451 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + +name: "optionals" +description: "Tests for optionals." +section: { + name: "optionals" + test { + name: "null" + expr: "optional.of(null).hasValue()" + value: { bool_value: true } + } + test { + name: "null_non_zero_value" + expr: "optional.ofNonZeroValue(null).hasValue()" + value: { bool_value: false } + } + test { + name: "none_or_none_or_value" + expr: "optional.none().or(optional.none()).orValue(42)" + value: { int64_value: 42 } + } + test { + name: "none_optMap_hasValue" + expr: "optional.none().optMap(y, y + 1).hasValue()" + value: { bool_value: false } + } + test { + name: "empty_map_optFlatMap_hasValue" + expr: "{}.?key.optFlatMap(k, k.?subkey).hasValue()" + value: { bool_value: false } + } + test { + name: "map_empty_submap_optFlatMap_hasValue" + expr: "{'key': {}}.?key.optFlatMap(k, k.?subkey).hasValue()" + value: { bool_value: false } + } + test { + name: "map_null_entry_hasValue" + expr: "{'null_key': dyn(null)}.?null_key.hasValue()" + value: { bool_value: true } + } + test { + name: "map_null_entry_no_such_key" + expr: "{'null_key': dyn(null)}.?null_key.invalid.hasValue()" + eval_error: { + errors: { message: "no such key" } + } + } + test { + name: "map_absent_key_absent_field_none" + expr: "{true: dyn(0)}[?false].absent.hasValue()" + value: { bool_value: false } + } + test { + name: "map_present_key_invalid_field" + expr: "{true: dyn(0)}[?true].absent.hasValue()" + eval_error: { + errors: { message: "no such key" } + } + } + test { + name: "map_undefined_entry_hasValue" + expr: "{}.?null_key.invalid.hasValue()" + value: { bool_value: false } + } + test { + name: "map_submap_subkey_optFlatMap_value" + expr: "{'key': {'subkey': 'subvalue'}}.?key.optFlatMap(k, k.?subkey).value()" + value: { string_value: "subvalue" } + } + test { + name: "map_submap_optFlatMap_value" + expr: "{'key': {'subkey': ''}}.?key.optFlatMap(k, k.?subkey).value()" + value: { string_value: "" } + } + test { + name: "map_optindex_optFlatMap_optional_ofNonZeroValue_hasValue" + expr: "{'key': {'subkey': ''}}.?key.optFlatMap(k, optional.ofNonZeroValue(k.subkey)).hasValue()" + value: { bool_value: false } + } + test { + name: "optional_of_optMap_value" + expr: "optional.of(42).optMap(y, y + 1).value()" + value: { int64_value: 43 } + } + test { + name: "optional_ofNonZeroValue_or_optional_value" + expr: "optional.ofNonZeroValue(42).or(optional.of(20)).value() == 42" + value: { bool_value: true } + } + test { + name: "ternary_optional_hasValue" + expr: "(has({}.x) ? optional.of({}.x) : optional.none()).hasValue()" + value: { bool_value: false } + } + test { + name: "map_optindex_hasValue" + expr: "{}.?x.hasValue()" + value: { bool_value: false } + } + test { + name: "has_map_optindex" + expr: "has({}.?x.y)" + value: { bool_value: false } + } + test { + name: "has_map_optindex_field" + expr: "has({'x': {'y': 'z'}}.?x.y)" + value: { bool_value: true } + } + test { + name: "type" + expr: "type(optional.none()) == optional_type" + value: { bool_value: true } + } + test { + name: "optional_chaining_1" + expr: "optional.ofNonZeroValue('').or(optional.of({'c': {'dashed-index': 'goodbye'}}.c['dashed-index'])).orValue('default value')" + value: { string_value: "goodbye" } + } + test { + name: "optional_chaining_2" + expr: "{'c': {'dashed-index': 'goodbye'}}.c[?'dashed-index'].orValue('default value')" + value: { string_value: "goodbye" } + } + test { + name: "optional_chaining_3" + expr: "{'c': {}}.c[?'missing-index'].orValue('default value')" + value: { string_value: "default value" } + } + test { + name: "optional_chaining_4" + expr: "optional.of({'c': {'index': 'goodbye'}}).c.index.orValue('default value')" + value: { string_value: "goodbye" } + } + test { + name: "optional_chaining_5" + expr: "optional.of({'c': {}}).c.missing.or(optional.none()[0]).orValue('default value')" + value: { string_value: "default value" } + } + test { + name: "optional_chaining_6" + expr: "optional.of({'c': {}}).c.missing.or(optional.of(['list-value'])[0]).orValue('default value')" + value: { string_value: "list-value" } + } + test { + name: "optional_chaining_7" + expr: "optional.of({'c': {'index': 'goodbye'}}).c['index'].orValue('default value')" + value: { string_value: "goodbye" } + } + test { + name: "optional_chaining_8" + expr: "optional.of({'c': {}}).c['missing'].orValue('default value')" + value: { string_value: "default value" } + } + test { + name: "optional_chaining_9" + expr: "has(optional.of({'c': {'entry': 'hello world'}}).c) && !has(optional.of({'c': {'entry': 'hello world'}}).c.missing)" + value: { bool_value: true } + } + test { + name: "optional_chaining_10" + expr: "optional.ofNonZeroValue({'c': {'dashed-index': 'goodbye'}}.a.z).orValue({'c': {'dashed-index': 'goodbye'}}.c['dashed-index'])" + eval_error: { + errors: { message: "no such key" } + } + } + test { + name: "optional_chaining_11" + expr: "{'c': {'dashed-index': 'goodbye'}}.?c.missing.or({'c': {'dashed-index': 'goodbye'}}.?c['dashed-index']).orValue('').size()" + value: { int64_value: 7 } + } + test { + name: "optional_chaining_12" + expr: "{?'nested_map': optional.ofNonZeroValue({?'map': {'c': {'dashed-index': 'goodbye'}}.?c})}" + value: { + map_value: { + entries { + key: { string_value: "nested_map" } + value: { + map_value: { + entries { + key: { string_value: "map" } + value: { + map_value: { + entries { + key: { string_value: "dashed-index" } + value: { string_value: "goodbye" } + } + } + } + } + } + } + } + } + } + } + test { + name: "optional_chaining_13" + expr: "{?'nested_map': optional.ofNonZeroValue({?'map': {}.?c}), 'singleton': true}" + value: { + map_value: { + entries { + key: { string_value: "singleton" } + value: { bool_value: true } + } + } + } + } + test { + name: "optional_chaining_14" + expr: "[?{}.?c, ?optional.of(42), ?optional.none()]" + value: { list_value: { values: { int64_value: 42 } } } + } + test { + name: "optional_chaining_15" + expr: "[?optional.ofNonZeroValue({'c': []}.?c.orValue(dyn({})))]" + value: { list_value: {} } + } + test { + name: "optional_chaining_16" + expr: "optional.ofNonZeroValue({?'nested_map': optional.ofNonZeroValue({?'map': optional.of({}).?c})}).hasValue()" + value: { bool_value: false } + } + test { + name: "has_optional_ofNonZeroValue_struct_optional_ofNonZeroValue_map_optindex_field" + container: "cel.expr.conformance.proto2" + expr: "has(TestAllTypes{?single_double_wrapper: optional.ofNonZeroValue(0.0)}.single_double_wrapper)" + value: { bool_value: false } + } + test { + name: "optional_ofNonZeroValue_struct_optional_ofNonZeroValue_map_optindex_field" + container: "cel.expr.conformance.proto2" + expr: "optional.ofNonZeroValue(TestAllTypes{?single_double_wrapper: optional.ofNonZeroValue(0.0)}).hasValue()" + value: { bool_value: false } + } + test { + name: "struct_map_optindex_field" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{?map_string_string: {'nested': {}}[?'nested']}.map_string_string" + value: { map_value: {} } + } + test { + name: "struct_optional_ofNonZeroValue_map_optindex_field" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{?map_string_string: optional.ofNonZeroValue({'nested': {}}[?'nested'].orValue({}))}.map_string_string" + value: { map_value: {} } + } + test { + name: "struct_map_optindex_field_nested" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{?map_string_string: {'nested': {'hello': 'world'}}[?'nested']}.map_string_string" + value: { + map_value: { + entries { + key: { string_value: "hello" } + value: { string_value: "world" } + } + } + } + } + test { + name: "struct_list_optindex_field" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{repeated_string: ['greetings', ?{'nested': {'hello': 'world'}}.nested.?hello]}.repeated_string" + value: { + list_value: { + values { + string_value: "greetings" + } + values { + string_value: "world" + } + } + } + } + test { + name: "optional_empty_map_optindex_hasValue" + expr: "optional.of({}).?c.hasValue()" + value: { + bool_value: false + } + } + test { + name: "empty_struct_optindex_hasValue" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{}.?repeated_string.hasValue()" + value: { + bool_value: false + } + } + test { + name: "optional_empty_struct_optindex_hasValue" + container: "cel.expr.conformance.proto2" + expr: "optional.of(TestAllTypes{}).?repeated_string.hasValue()" + value: { + bool_value: false + } + } + test { + name: "optional_none_optselect_hasValue" + expr: "optional.none().?repeated_string.hasValue()" + value: { + bool_value: false + } + } + test { + name: "struct_optindex_value" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{repeated_string: ['foo']}.?repeated_string.value()" + value: { + list_value: { + values { + string_value: "foo" + } + } + } + } + test { + name: "optional_struct_optindex_value" + container: "cel.expr.conformance.proto2" + expr: "optional.of(TestAllTypes{repeated_string: ['foo']}).?repeated_string.value()" + value: { + list_value: { + values { + string_value: "foo" + } + } + } + } + test { + name: "optional_struct_optindex_index_value" + container: "cel.expr.conformance.proto2" + expr: "optional.of(TestAllTypes{repeated_string: ['foo']}).?repeated_string[0].value()" + value: { + string_value: "foo" + } + } + test { + name: "empty_list_optindex_hasValue" + expr: "[][?0].hasValue()" + value: { + bool_value: false + } + } + test { + name: "optional_empty_list_optindex_hasValue" + expr: "optional.of([])[?0].hasValue()" + value: { + bool_value: false + } + } + test { + name: "optional_none_optindex_hasValue" + expr: "optional.none()[?0].hasValue()" + value: { + bool_value: false + } + } + test { + name: "list_optindex_value" + expr: "['foo'][?0].value()" + value: { + string_value: "foo" + } + } + test { + name: "optional_list_optindex_value" + expr: "optional.of(['foo'])[?0].value()" + value: { + string_value: "foo" + } + } + test { + name: "map_key_mixed_type_optindex_value" + expr: "{true: 1, 2: 2, 5u: 3}[?true].value()" + value: { int64_value: 1 } + } + test { + name: "map_key_mixed_numbers_double_key_optindex_value" + expr: "{1u: 1.0, 2: 2.0, 3u: 3.0}[?3.0].value()" + value: { double_value: 3.0 } + } + test { + name: "map_key_mixed_numbers_uint_key_optindex_value" + expr: "{1u: 1.0, 2: 2.0, 3u: 3.0}[?2u].value()" + value: { double_value: 2.0 } + } + test { + name: "map_key_mixed_numbers_int_key_optindex_value" + expr: "{1u: 1.0, 2: 2.0, 3u: 3.0}[?1].value()" + value: { double_value: 1.0 } + } + test { + name: "optional_eq_none_none" + expr: "optional.none() == optional.none()" + value: { bool_value: true } + } + test { + name: "optional_eq_none_int" + expr: "optional.none() == optional.of(1)" + value: { bool_value: false } + } + test { + name: "optional_eq_int_none" + expr: "optional.of(1) == optional.none()" + value: { bool_value: false } + } + test { + name: "optional_eq_int_int" + expr: "optional.of(1) == optional.of(1)" + value: { bool_value: true } + } + test { + name: "optional_ne_none_none" + expr: "optional.none() != optional.none()" + value: { bool_value: false } + } + test { + name: "optional_ne_none_int" + expr: "optional.none() != optional.of(1)" + value: { bool_value: true } + } + test { + name: "optional_ne_int_none" + expr: "optional.of(1) != optional.none()" + value: { bool_value: true } + } + test { + name: "optional_ne_int_int" + expr: "optional.of(1) != optional.of(1)" + value: { bool_value: false } + } + test { + name: "map_optional_has" + expr: "has({'foo': optional.none()}.foo)" + value: { bool_value: true } + } + test { + name: "map_optional_select_has" + expr: "has({'foo': optional.none()}.foo.bar)" + value: { bool_value: false } + } + test { + name: "map_optional_entry_has" + expr: "has({?'foo': optional.none()}.foo)" + value: { bool_value: false } + } +} diff --git a/features/parse.feature b/features/parse.feature index d7694d2..a5ee890 100644 --- a/features/parse.feature +++ b/features/parse.feature @@ -1,146 +1,187 @@ - +@conformance Feature: parse End-to-end parsing tests. # nest -- Deep parse trees which all implementations must support. -Scenario: list_index - Member = Member '[' Expr ']' - # type:{list_type:{elem_type:{primitive:INT64}}} - # Given type_env parameter "a" is TypeType(value='list_type') - Given type_env parameter "a" is list_type - - # list_value:{values:{int64_value:0}} - Given bindings parameter "a" is [IntType(source=0)] - When CEL expression "a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]" is evaluated - # int64_value:0 - Then value is IntType(source=0) +Scenario: nest/list_index + Member = Member '[' Expr ']'. Nested indices are supported up to 12 + times. + Given type_env parameter "a" is celpy.celtypes.ListType + and bindings parameter "a" is [celpy.celtypes.IntType(source=0)] + When CEL expression 'a[a[a[a[a[a[a[a[a[a[a[a[0]]]]]]]]]]]]' is evaluated + Then value is celpy.celtypes.IntType(source=0) -Scenario: message_literal - Member = Member '{' [FieldInits] '}' - Given container is "google.api.expr.test.v1.proto3" +Scenario: nest/message_literal + Member = Member '{' [FieldInits] '}'. Nested messages supported up to + 12 levels deep. - When CEL expression "NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{payload: TestAllTypes{single_int64: 137}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}.payload.single_int64" is evaluated - # int64_value:0 - Then value is IntType(source=0) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{payload: TestAllTypes{single_int64: 137}}}}}}}}}}}}.payload.single_int64' is evaluated + Then value is celpy.celtypes.IntType(source=0) +Scenario: nest/funcall + Primary = ['.'] IDENT ['(' [ExprList] ')']. Nested function calls + supported up to 12 levels deep. -Scenario: funcall - Primary = ['.'] IDENT ['(' [ExprList] ')'] - When CEL expression "int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(7))))))))))))))))))))))))))))))))" is evaluated - # int64_value:7 - Then value is IntType(source=7) + When CEL expression 'int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(7))))))))))))' is evaluated + Then value is celpy.celtypes.IntType(source=7) +Scenario: nest/list_literal + Primary = '[' [ExprList] ']'. Nested list literals up to 12 levels + deep. -Scenario: parens - Primary = '(' Expr ')' - When CEL expression "((((((((((((((((((((((((((((((((7))))))))))))))))))))))))))))))))" is evaluated - # int64_value:7 - Then value is IntType(source=7) - + When CEL expression 'size([[[[[[[[[[[[0]]]]]]]]]]]])' is evaluated + Then value is celpy.celtypes.IntType(source=1) -Scenario: list_literal - Primary = '[' [ExprList] ']' - When CEL expression "size([[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]])" is evaluated - # int64_value:1 - Then value is IntType(source=1) +Scenario: nest/map_literal + Primary = '{' [MapInits] '}'. Nested map literals up to 12 levels + deep. + When CEL expression "size({0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: 'foo'}}}}}}}}}}}})" is evaluated + Then value is celpy.celtypes.IntType(source=1) -Scenario: map_literal - Primary = '{' [MapInits] '}' - When CEL expression "size({0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: 'foo'}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}})" is evaluated - # int64_value:1 - Then value is IntType(source=1) +Scenario: nest/parens + Primary = '(' Expr ')' + When CEL expression '((((((((((((((((((((((((((((((((7))))))))))))))))))))))))))))))))' is evaluated + Then value is celpy.celtypes.IntType(source=7) # repeat -- Repetitive parse trees which all implementations must support. -Scenario: conditional - Expr = ConditionalOr ['?' ConditionalOr ':' Expr] - When CEL expression "true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : false" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: repeat/conditional + Expr = ConditionalOr ['?' ConditionalOr ':' Expr]. Chained ternary + operators up to 24 levels. + + When CEL expression 'true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : false' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: or - ConditionalOr = [ConditionalOr '||'] ConditionalAnd - When CEL expression "false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || true" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: repeat/or + ConditionalOr = [ConditionalOr '||'] ConditionalAnd. Logical OR + statements with 32 conditions. + When CEL expression 'false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: and - ConditionalAnd = [ConditionalAnd '&&'] Relation - When CEL expression "true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && false" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: repeat/and + ConditionalAnd = [ConditionalAnd '&&'] Relation. Logical AND + statements with 32 conditions. + When CEL expression 'true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && false' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: add_sub - Addition = [Addition ('+' | '-')] Multiplication - When CEL expression "3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3" is evaluated - # int64_value:3 - Then value is IntType(source=3) +Scenario: repeat/add_sub + Addition = [Addition ('+' | '-')] Multiplication. Addition operators + are supported up to 24 times consecutively. + When CEL expression '3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3' is evaluated + Then value is celpy.celtypes.IntType(source=3) -Scenario: mul_div - Multiplication = [Multiplication ('*' | '/' | '%')] Unary - When CEL expression "4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4" is evaluated - # int64_value:4 - Then value is IntType(source=4) +Scenario: repeat/mul_div + Multiplication = [Multiplication ('*' | '/' | '%')] Unary. + Multiplication operators are supported up to 24 times consecutively. + When CEL expression '4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4' is evaluated + Then value is celpy.celtypes.IntType(source=4) -Scenario: not +Scenario: repeat/not Unary = '!' {'!'} Member - When CEL expression "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!true" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!true' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: unary_neg +Scenario: repeat/unary_neg Unary = '-' {'-'} Member - When CEL expression "--------------------------------19" is evaluated - # int64_value:19 - Then value is IntType(source=19) + When CEL expression '--------------------------------19' is evaluated + Then value is celpy.celtypes.IntType(source=19) -Scenario: select - Member = Member '.' IDENT ['(' [ExprList] ')'] - Given container is "google.api.expr.test.v1.proto3" +Scenario: repeat/select + Member = Member '.' IDENT ['(' [ExprList] ')']. Selection is supported + up to 12 times consecutively. - When CEL expression "NestedTestAllTypes{}.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.payload.single_int32" is evaluated - # int64_value:0 - Then value is IntType(source=0) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'NestedTestAllTypes{}.child.child.child.child.child.child.child.child.child.child.payload.single_int32' is evaluated + Then value is celpy.celtypes.IntType(source=0) +Scenario: repeat/index + Member = Member '[' Expr ']'. Indexing is supported up to 12 times + consecutively. -Scenario: index - Member = Member '[' Expr ']' - When CEL expression "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[['foo']]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]" is evaluated - # string_value:"foo" - Then value is StringType(source='foo') + When CEL expression "[[[[[[[[[[[['foo']]]]]]]]]]]][0][0][0][0][0][0][0][0][0][0][0][0]" is evaluated + Then value is celpy.celtypes.StringType(source='foo') +Scenario: repeat/list_literal + Primary = '[' [ExprList] ']'. List literals with up to 32 elements. -Scenario: list_literal - Primary = '[' [ExprList] ']' - When CEL expression "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31][17]" is evaluated - # int64_value:17 - Then value is IntType(source=17) + When CEL expression '[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31][17]' is evaluated + Then value is celpy.celtypes.IntType(source=17) +Scenario: repeat/map_literal + Primary = '{' [MapInits] '}'. Map literals with up to 32 entries. -Scenario: map_literal - Primary = '{' [MapInits] '}' When CEL expression "{0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five', 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine', 10: 'ten', 11: 'eleven', 12: 'twelve', 13: 'thirteen', 14: 'fourteen', 15: 'fifteen', 16: 'sixteen', 17: 'seventeen', 18: 'eighteen', 19: 'nineteen', 20: 'twenty', 21: 'twenty-one', 22: 'twenty-two', 23: 'twenty-three', 24: 'twenty-four', 25: 'twenty-five', 26: 'twenty-six', 27: 'twenty-seven', 28: 'twenty-eight', 29: 'twenty-nine', 30: 'thirty', 31: 'thirty-one'}[17]" is evaluated - # string_value:"seventeen" - Then value is StringType(source='seventeen') - + Then value is celpy.celtypes.StringType(source='seventeen') -Scenario: message_literal - Member = Member '{' [FieldInits] '}' - Given container is "google.api.expr.test.v1.proto3" +Scenario: repeat/message_literal + Member = Member '{' [FieldInits] '}'. Message literals with up to 32 + fields. + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_int32: 5, single_int64: 10, single_uint32: 15u, single_uint64: 20u, single_sint32: 25, single_sint64: 30, single_fixed32: 35u, single_fixed64: 40u, single_float: 45.0, single_double: 50.0, single_bool: true, single_string: 'sixty', single_bytes: b'sixty-five', single_value: 70.0, single_int64_wrapper: 75, single_int32_wrapper: 80, single_double_wrapper: 85.0, single_float_wrapper: 90.0, single_uint64_wrapper: 95u, single_uint32_wrapper: 100u, single_string_wrapper: 'one hundred five', single_bool_wrapper: true, repeated_int32: [115], repeated_int64: [120], repeated_uint32: [125u], repeated_uint64: [130u], repeated_sint32: [135], repeated_sint64: [140], repeated_fixed32: [145u], repeated_fixed64: [150u], repeated_sfixed32: [155], repeated_float: [160.0]}.single_sint64" is evaluated - # int64_value:30 - Then value is IntType(source=30) + Then value is celpy.celtypes.IntType(source=30) + + +# whitespace -- Check that whitespace is ignored by the grammar. + + +@wip +Scenario: whitespace/spaces + Check that spaces are ignored. + + When CEL expression '[ . cel. expr .conformance. proto3. TestAllTypes { single_int64 : int ( 17 ) } . single_int64 ] [ 0 ] == ( 18 - 1 ) && ! false ? 1 : 2' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: whitespace/tabs + Check that tabs (`\t`) are ignored. + + When CEL expression '[\t.\tcel.\texpr\t.conformance.\tproto3.\tTestAllTypes\t{\tsingle_int64\t:\tint\t(\t17\t)\t}\t.\tsingle_int64\t]\t[\t0\t]\t==\t(\t18\t-\t1\t)\t&&\t!\tfalse\t?\t1\t:\t2' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: whitespace/new_lines + Check that new lines (`\n`) are ignored. + + When CEL expression '[\n.\ncel.\nexpr\n.conformance.\nproto3.\nTestAllTypes\n{\nsingle_int64\n:\nint\n(\n17\n)\n}\n.\nsingle_int64\n]\n[\n0\n]\n==\n(\n18\n-\n1\n)\n&&\n!\nfalse\n?\n1\n:\n2' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: whitespace/new_pages + Check that new pages (`\f`) are ignored. + + When CEL expression '[\x0c.\x0ccel.\x0cexpr\x0c.conformance.\x0cproto3.\x0cTestAllTypes\x0c{\x0csingle_int64\x0c:\x0cint\x0c(\x0c17\x0c)\x0c}\x0c.\x0csingle_int64\x0c]\x0c[\x0c0\x0c]\x0c==\x0c(\x0c18\x0c-\x0c1\x0c)\x0c&&\x0c!\x0cfalse\x0c?\x0c1\x0c:\x0c2' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: whitespace/carriage_returns + Check that carriage returns (`\r`) are ignored. + + When CEL expression '[\r.\rcel.\rexpr\r.conformance.\rproto3.\rTestAllTypes\r{\rsingle_int64\r:\rint\r(\r17\r)\r}\r.\rsingle_int64\r]\r[\r0\r]\r==\r(\r18\r-\r1\r)\r&&\r!\rfalse\r?\r1\r:\r2' is evaluated + Then value is celpy.celtypes.IntType(source=1) + + +# comments -- Check that comments are ignored by the grammar. Note that carriage returns alone cannot terminate comments. + + +@wip +Scenario: comments/new_line_terminated + Check that new-line-terminated comments are ignored. + + When CEL expression '[// @\n.// @\ncel.// @\nexpr// @\n.conformance.// @\nproto3.// @\nTestAllTypes// @\n{// @\nsingle_int64// @\n:// @\nint// @\n(// @\n17// @\n)// @\n}// @\n.// @\nsingle_int64// @\n]// @\n[// @\n0// @\n]// @\n==// @\n(// @\n18// @\n-// @\n1// @\n)// @\n&&// @\n!// @\nfalse// @\n?// @\n1// @\n:// @\n2' is evaluated + Then value is celpy.celtypes.IntType(source=1) + diff --git a/features/parse.textproto b/features/parse.textproto index c73e6ae..76c0ad8 100644 --- a/features/parse.textproto +++ b/features/parse.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + name: "parse" description: "End-to-end parsing tests." section { @@ -5,8 +8,8 @@ section { description: "Deep parse trees which all implementations must support." test { name: "list_index" - description: "Member = Member '[' Expr ']'" - expr: "a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]" + description: "Member = Member '[' Expr ']'. Nested indices are supported up to 12 times." + expr: "a[a[a[a[a[a[a[a[a[a[a[a[0]]]]]]]]]]]]" type_env { name: "a" ident { type { list_type { elem_type { primitive: INT64 } } } } @@ -19,67 +22,67 @@ section { } test { name: "message_literal" - description: "Member = Member '{' [FieldInits] '}'" - container: "google.api.expr.test.v1.proto3" - expr: "NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{payload: TestAllTypes{single_int64: 137}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}.payload.single_int64" + description: "Member = Member '{' [FieldInits] '}'. Nested messages supported up to 12 levels deep." + container: "cel.expr.conformance.proto3" + expr: "NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{child: NestedTestAllTypes{payload: TestAllTypes{single_int64: 137}}}}}}}}}}}}.payload.single_int64" value { int64_value: 0 } } test { name: "funcall" - description: "Primary = ['.'] IDENT ['(' [ExprList] ')']" - expr: "int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(7))))))))))))))))))))))))))))))))" - value { int64_value: 7 } - } - test { - name: "parens" - description: "Primary = '(' Expr ')'" - expr: "((((((((((((((((((((((((((((((((7))))))))))))))))))))))))))))))))" + description: "Primary = ['.'] IDENT ['(' [ExprList] ')']. Nested function calls supported up to 12 levels deep." + expr: "int(uint(int(uint(int(uint(int(uint(int(uint(int(uint(7))))))))))))" value { int64_value: 7 } } test { name: "list_literal" - description: "Primary = '[' [ExprList] ']'" - expr: "size([[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]])" + description: "Primary = '[' [ExprList] ']'. Nested list literals up to 12 levels deep." + expr: "size([[[[[[[[[[[[0]]]]]]]]]]]])" value { int64_value: 1 } } test { name: "map_literal" - description: "Primary = '{' [MapInits] '}'" - expr: "size({0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: 'foo'}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}})" + description: "Primary = '{' [MapInits] '}'. Nested map literals up to 12 levels deep." + expr: "size({0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: {0: 'foo'}}}}}}}}}}}})" value { int64_value: 1 } } + test { + name: "parens" + description: "Primary = '(' Expr ')'" + expr: "((((((((((((((((((((((((((((((((7))))))))))))))))))))))))))))))))" + value { int64_value: 7 } + } } section { name: "repeat" description: "Repetitive parse trees which all implementations must support." test { name: "conditional" - description: "Expr = ConditionalOr ['?' ConditionalOr ':' Expr]" - expr: "true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : false" + description: "Expr = ConditionalOr ['?' ConditionalOr ':' Expr]. Chained ternary operators up to 24 levels." + expr: "true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : true ? true : false" value { bool_value: true } } test { name: "or" - description: "ConditionalOr = [ConditionalOr '||'] ConditionalAnd" + description: "ConditionalOr = [ConditionalOr '||'] ConditionalAnd. Logical OR statements with 32 conditions." expr: "false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || false || true" value { bool_value: true } } test { name: "and" - description: "ConditionalAnd = [ConditionalAnd '&&'] Relation" + description: "ConditionalAnd = [ConditionalAnd '&&'] Relation. Logical AND statements with 32 conditions." expr: "true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && true && false" value { bool_value: false } } test { name: "add_sub" - description: "Addition = [Addition ('+' | '-')] Multiplication" - expr: "3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3" + description: "Addition = [Addition ('+' | '-')] Multiplication. Addition operators are supported up to 24 times consecutively." + expr: "3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3 - 3 + 3" value { int64_value: 3 } } test { name: "mul_div" - description: "Multiplication = [Multiplication ('*' | '/' | '%')] Unary" - expr: "4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4" + description: "Multiplication = [Multiplication ('*' | '/' | '%')] Unary. Multiplication operators are supported up to 24 times consecutively." + expr: "4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4 * 4 / 4" value { int64_value: 4 } } test { @@ -96,34 +99,78 @@ section { } test { name: "select" - description: "Member = Member '.' IDENT ['(' [ExprList] ')']" - container: "google.api.expr.test.v1.proto3" - expr: "NestedTestAllTypes{}.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.child.payload.single_int32" + description: "Member = Member '.' IDENT ['(' [ExprList] ')']. Selection is supported up to 12 times consecutively." + container: "cel.expr.conformance.proto3" + expr: "NestedTestAllTypes{}.child.child.child.child.child.child.child.child.child.child.payload.single_int32" value { int64_value: 0 } } test { name: "index" - description: "Member = Member '[' Expr ']'" - expr: "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[['foo']]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]" + description: "Member = Member '[' Expr ']'. Indexing is supported up to 12 times consecutively." + expr: "[[[[[[[[[[[['foo']]]]]]]]]]]][0][0][0][0][0][0][0][0][0][0][0][0]" value { string_value: "foo" } } test { name: "list_literal" - description: "Primary = '[' [ExprList] ']'" + description: "Primary = '[' [ExprList] ']'. List literals with up to 32 elements." expr: "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31][17]" value { int64_value: 17 } } test { name: "map_literal" - description: "Primary = '{' [MapInits] '}'" + description: "Primary = '{' [MapInits] '}'. Map literals with up to 32 entries." expr: "{0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five', 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine', 10: 'ten', 11: 'eleven', 12: 'twelve', 13: 'thirteen', 14: 'fourteen', 15: 'fifteen', 16: 'sixteen', 17: 'seventeen', 18: 'eighteen', 19: 'nineteen', 20: 'twenty', 21: 'twenty-one', 22: 'twenty-two', 23: 'twenty-three', 24: 'twenty-four', 25: 'twenty-five', 26: 'twenty-six', 27: 'twenty-seven', 28: 'twenty-eight', 29: 'twenty-nine', 30: 'thirty', 31: 'thirty-one'}[17]" value { string_value: 'seventeen' } } test { name: "message_literal" - description: "Member = Member '{' [FieldInits] '}'" - container: "google.api.expr.test.v1.proto3" + description: "Member = Member '{' [FieldInits] '}'. Message literals with up to 32 fields." + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_int32: 5, single_int64: 10, single_uint32: 15u, single_uint64: 20u, single_sint32: 25, single_sint64: 30, single_fixed32: 35u, single_fixed64: 40u, single_float: 45.0, single_double: 50.0, single_bool: true, single_string: 'sixty', single_bytes: b'sixty-five', single_value: 70.0, single_int64_wrapper: 75, single_int32_wrapper: 80, single_double_wrapper: 85.0, single_float_wrapper: 90.0, single_uint64_wrapper: 95u, single_uint32_wrapper: 100u, single_string_wrapper: 'one hundred five', single_bool_wrapper: true, repeated_int32: [115], repeated_int64: [120], repeated_uint32: [125u], repeated_uint64: [130u], repeated_sint32: [135], repeated_sint64: [140], repeated_fixed32: [145u], repeated_fixed64: [150u], repeated_sfixed32: [155], repeated_float: [160.0]}.single_sint64" value { int64_value: 30 } } } +section { + name: "whitespace" + description: "Check that whitespace is ignored by the grammar." + test { + name: "spaces" + description: "Check that spaces are ignored." + expr: "[ . cel. expr .conformance. proto3. TestAllTypes { single_int64 : int ( 17 ) } . single_int64 ] [ 0 ] == ( 18 - 1 ) && ! false ? 1 : 2" + value { int64_value: 1 } + } + test { + name: "tabs" + description: "Check that tabs (`\\t`) are ignored." + expr: "[\t.\tcel.\texpr\t.conformance.\tproto3.\tTestAllTypes\t{\tsingle_int64\t:\tint\t(\t17\t)\t}\t.\tsingle_int64\t]\t[\t0\t]\t==\t(\t18\t-\t1\t)\t&&\t!\tfalse\t?\t1\t:\t2" + value { int64_value: 1 } + } + test { + name: "new_lines" + description: "Check that new lines (`\\n`) are ignored." + expr: "[\n.\ncel.\nexpr\n.conformance.\nproto3.\nTestAllTypes\n{\nsingle_int64\n:\nint\n(\n17\n)\n}\n.\nsingle_int64\n]\n[\n0\n]\n==\n(\n18\n-\n1\n)\n&&\n!\nfalse\n?\n1\n:\n2" + value { int64_value: 1 } + } + test { + name: "new_pages" + description: "Check that new pages (`\\f`) are ignored." + expr: "[\f.\fcel.\fexpr\f.conformance.\fproto3.\fTestAllTypes\f{\fsingle_int64\f:\fint\f(\f17\f)\f}\f.\fsingle_int64\f]\f[\f0\f]\f==\f(\f18\f-\f1\f)\f&&\f!\ffalse\f?\f1\f:\f2" + value { int64_value: 1 } + } + test { + name: "carriage_returns" + description: "Check that carriage returns (`\\r`) are ignored." + expr: "[\r.\rcel.\rexpr\r.conformance.\rproto3.\rTestAllTypes\r{\rsingle_int64\r:\rint\r(\r17\r)\r}\r.\rsingle_int64\r]\r[\r0\r]\r==\r(\r18\r-\r1\r)\r&&\r!\rfalse\r?\r1\r:\r2" + value { int64_value: 1 } + } +} +section { + name: "comments" + description: "Check that comments are ignored by the grammar. Note that carriage returns alone cannot terminate comments." + test { + name: "new_line_terminated" + description: "Check that new-line-terminated comments are ignored." + expr: "[// @\n.// @\ncel.// @\nexpr// @\n.conformance.// @\nproto3.// @\nTestAllTypes// @\n{// @\nsingle_int64// @\n:// @\nint// @\n(// @\n17// @\n)// @\n}// @\n.// @\nsingle_int64// @\n]// @\n[// @\n0// @\n]// @\n==// @\n(// @\n18// @\n-// @\n1// @\n)// @\n&&// @\n!// @\nfalse// @\n?// @\n1// @\n:// @\n2" + value { int64_value: 1 } + } +} diff --git a/features/plumbing.feature b/features/plumbing.feature index 1f0e305..0c15c55 100644 --- a/features/plumbing.feature +++ b/features/plumbing.feature @@ -1,51 +1,52 @@ - +@conformance Feature: plumbing - Check that the ConformanceService server can accept all arguments and return all responses. + Check that the ConformanceService server can accept all arguments and + return all responses. # min -- Minimal programs. -Scenario: min_program + +Scenario: min/min_program Smallest functionality: expr in, result out. - When CEL expression "17" is evaluated - # int64_value:17 - Then value is IntType(source=17) + When CEL expression '17' is evaluated + Then value is celpy.celtypes.IntType(source=17) # eval_results -- All evaluation result kinds. -Scenario: error_result + +Scenario: eval_results/error_result Check that error results go through. - When CEL expression "1 / 0" is evaluated - # errors:{message:"foo"} - Then eval_error is 'foo' + When CEL expression '1 / 0' is evaluated + Then eval_error is 'foo' -Scenario: eval_map_results +Scenario: eval_results/eval_map_results Check that map literals results are order independent. - When CEL expression '{"k1":"v1","k":"v"}' is evaluated - # map_value:{entries:{key:{string_value:"k"} value:{string_value:"v"}} entries:{key:{string_value:"k1"} value:{string_value:"v1"}}} - Then value is MapType({StringType(source='k'): StringType(source='v'), StringType(source='k1'): StringType(source='v1')}) + When CEL expression '{"k1":"v1","k":"v"}' is evaluated + Then value is celpy.celtypes.MapType({'k': celpy.celtypes.StringType(source='v'), 'k1': celpy.celtypes.StringType(source='v1')}) # check_inputs -- All inputs to Check phase. -Scenario: skip_check + +Scenario: check_inputs/skip_check Make sure we can skip type checking. - When CEL expression "[17, 'pancakes']" is evaluated - # list_value:{values:{int64_value:17} values:{string_value:"pancakes"}} - Then value is [IntType(source=17), StringType(source='pancakes')] + Given disable_check parameter is True + When CEL expression "[17, 'pancakes']" is evaluated + Then value is [celpy.celtypes.IntType(source=17), celpy.celtypes.StringType(source='pancakes')] # eval_inputs -- All inputs to Eval phase. -Scenario: one_ignored_value_arg + +Scenario: eval_inputs/one_ignored_value_arg Check that value bindings can be given, even if ignored. - # int64_value:17 - Given bindings parameter "x" is IntType(source=17) + Given bindings parameter "x" is celpy.celtypes.IntType(source=17) When CEL expression "'foo'" is evaluated - # string_value:"foo" - Then value is StringType(source='foo') + Then value is celpy.celtypes.StringType(source='foo') + diff --git a/features/plumbing.textproto b/features/plumbing.textproto index 2f58b3c..7b347aa 100644 --- a/features/plumbing.textproto +++ b/features/plumbing.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: google.api.expr.test.v1.SimpleTestFile + name: "plumbing" description: "Check that the ConformanceService server can accept all arguments and return all responses." section { diff --git a/features/proto2.feature b/features/proto2.feature index 44c3d25..7827ce6 100644 --- a/features/proto2.feature +++ b/features/proto2.feature @@ -1,607 +1,777 @@ -@wip +@conformance Feature: proto2 - Protocol buffer version 2 tests. See notes for the available set of protos for tests. + Protocol buffer version 2 tests. See notes for the available set of + protos for tests. # literal_singular -- Literals with singular fields set. -Scenario: int64_nocontainer - - When CEL expression "google.api.expr.test.v1.proto2.TestAllTypes{single_int64: 17}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int64:17}} - Then value is TestAllTypes(single_int32=0, single_int64=17, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: int32 - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: literal_singular/int64_nocontainer - When CEL expression "TestAllTypes{single_int32: -34}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:-34}} - Then value is TestAllTypes(single_int32=-34, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + When CEL expression 'cel.expr.conformance.proto2.TestAllTypes{single_int64: 17}' is evaluated + Then value is TestAllTypes(single_int64=17) +Scenario: literal_singular/int32 -Scenario: int64 + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int32: -34}' is evaluated + Then value is TestAllTypes(single_int32=-34) - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: literal_singular/int32_eq_uint - When CEL expression "TestAllTypes{single_int64: 17}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int64:17}} - Then value is TestAllTypes(single_int32=0, single_int64=17, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'google.protobuf' + When CEL expression 'Int32Value{value: 34} == dyn(UInt64Value{value: 34u})' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: literal_singular/not_int32_eq_uint -Scenario: uint32 + Given container is 'google.protobuf' + When CEL expression 'Int32Value{value: 34} == dyn(UInt64Value{value: 18446744073709551615u})' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: literal_singular/int32_eq_double - When CEL expression "TestAllTypes{single_uint32: 1u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint32:1}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=1, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'google.protobuf' + When CEL expression 'Int32Value{value: 34} == dyn(DoubleValue{value: 34.0})' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: literal_singular/not_int32_eq_double -Scenario: uint64 + Given container is 'google.protobuf' + When CEL expression 'Int32Value{value: 34} == dyn(DoubleValue{value: -9223372036854775809.0})' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - Given container is "google.api.expr.test.v1.proto2" +Scenario: literal_singular/int64 - When CEL expression "TestAllTypes{single_uint64: 9999u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint64:9999}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=9999, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int64: 17}' is evaluated + Then value is TestAllTypes(single_int64=17) +Scenario: literal_singular/uint32 -Scenario: sint32 + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint32: 1u}' is evaluated + Then value is TestAllTypes(single_uint32=1) - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: literal_singular/uint32_eq_int - When CEL expression "TestAllTypes{single_sint32: -3}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_sint32:-3}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=-3, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'google.protobuf' + When CEL expression 'UInt32Value{value: 34u} == dyn(Int64Value{value: 34})' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: literal_singular/not_uint32_eq_int -Scenario: sint64 + Given container is 'google.protobuf' + When CEL expression 'UInt32Value{value: 34u} == dyn(Int64Value{value: -1})' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: literal_singular/uint32_eq_double - When CEL expression "TestAllTypes{single_sint64: 255}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_sint64:255}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=255, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'google.protobuf' + When CEL expression 'UInt32Value{value: 34u} == dyn(DoubleValue{value: 34.0})' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: literal_singular/not_uint32_eq_double -Scenario: fixed32 + Given container is 'google.protobuf' + When CEL expression 'UInt32Value{value: 34u} == dyn(DoubleValue{value: 18446744073709551616.0})' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - Given container is "google.api.expr.test.v1.proto2" +Scenario: literal_singular/uint64 - When CEL expression "TestAllTypes{single_fixed32: 43u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_fixed32:43}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=43, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint64: 9999u}' is evaluated + Then value is TestAllTypes(single_uint64=9999) +Scenario: literal_singular/sint32 -Scenario: fixed64 + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_sint32: -3}' is evaluated + Then value is TestAllTypes(single_sint32=-3) - Given container is "google.api.expr.test.v1.proto2" +Scenario: literal_singular/sint64 - When CEL expression "TestAllTypes{single_fixed64: 1880u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_fixed64:1880}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=1880, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_sint64: 255}' is evaluated + Then value is TestAllTypes(single_sint64=255) +Scenario: literal_singular/fixed32 -Scenario: sfixed32 + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_fixed32: 43u}' is evaluated + Then value is TestAllTypes(single_fixed32=43) - Given container is "google.api.expr.test.v1.proto2" +Scenario: literal_singular/fixed64 - When CEL expression "TestAllTypes{single_sfixed32: -404}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_sfixed32:-404}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=-404, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_fixed64: 1880u}' is evaluated + Then value is TestAllTypes(single_fixed64=1880) +Scenario: literal_singular/sfixed32 -Scenario: sfixed64 + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_sfixed32: -404}' is evaluated + Then value is TestAllTypes(single_sfixed32=-404) - Given container is "google.api.expr.test.v1.proto2" +Scenario: literal_singular/sfixed64 - When CEL expression "TestAllTypes{single_sfixed64: -1}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_sfixed64:-1}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=-1, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_sfixed64: -1}' is evaluated + Then value is TestAllTypes(single_sfixed64=-1) +@wip +Scenario: literal_singular/float -Scenario: float + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_float: 3.1416}' is evaluated + Then value is TestAllTypes(single_float=3.1415998935699463) - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: literal_singular/float_eq_int - When CEL expression "TestAllTypes{single_float: 3.1416}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_float:3.1416}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=3.1416, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'google.protobuf' + When CEL expression 'FloatValue{value: 3.0} == dyn(Int64Value{value: 3})' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: literal_singular/not_float_eq_int -Scenario: double + Given container is 'google.protobuf' + When CEL expression 'FloatValue{value: -1.14} == dyn(Int64Value{value: -1})' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: literal_singular/float_eq_uint - When CEL expression "TestAllTypes{single_double: 6.022e23}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_double:6.022e+23}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=6.022e+23, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'google.protobuf' + When CEL expression 'FloatValue{value: 34.0} == dyn(UInt64Value{value: 34u})' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: literal_singular/not_float_eq_uint -Scenario: bool + Given container is 'google.protobuf' + When CEL expression 'FloatValue{value: -1.0} == dyn(UInt64Value{value: 18446744073709551615u})' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - Given container is "google.api.expr.test.v1.proto2" +Scenario: literal_singular/double - When CEL expression "TestAllTypes{single_bool: true}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bool:true}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=True, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_double: 6.022e23}' is evaluated + Then value is TestAllTypes(single_double=6.022e+23) +Scenario: literal_singular/bool -Scenario: string + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_bool: true}' is evaluated + Then value is TestAllTypes(single_bool=True) - Given container is "google.api.expr.test.v1.proto2" +Scenario: literal_singular/string + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_string: 'foo'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_string:"foo"}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='foo', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - + Then value is TestAllTypes(single_string='foo') -Scenario: bytes - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_bytes: b'\377'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bytes:"\xff"}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes='ΓΏ', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: literal_singular/bytes + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_bytes: b'\\377'}" is evaluated + Then value is TestAllTypes(single_bytes=b'\xff') # literal_wellknown -- Literals with well-known fields set. -Scenario: any - - Given container is "google.api.expr.test.v1.proto2" - When CEL expression "TestAllTypes{single_any: TestAllTypes{single_int32: 1}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_any:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:1}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=TestAllTypes(single_int32=1, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]), single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: literal_wellknown/any + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_any: TestAllTypes{single_int32: 1}}' is evaluated + Then value is TestAllTypes(single_any=TestAllTypes(single_int32=1)) -Scenario: duration - - Given container is "google.api.expr.test.v1.proto2" +Scenario: literal_wellknown/duration + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_duration: duration('123s')}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_duration:{seconds:123}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=123, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - + Then value is TestAllTypes(single_duration=celpy.celtypes.DurationType(seconds=123, nanos=0)) -Scenario: timestamp - - Given container is "google.api.expr.test.v1.proto2" +Scenario: literal_wellknown/timestamp + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_timestamp: timestamp('2009-02-13T23:31:30Z')}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_timestamp:{seconds:1234567890}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=1234567890, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - + Then value is TestAllTypes(single_timestamp=celpy.celtypes.TimestampType(datetime.datetime(2009, 2, 13, 23, 31, 30, tzinfo=datetime.timezone.utc))) -Scenario: struct - - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: literal_wellknown/struct + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_struct: {'one': 1, 'two': 2}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_struct:{fields:{key:"one" value:{number_value:1}} fields:{key:"two" value:{number_value:2}}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({'one': DoubleType(source=1), 'two': DoubleType(source=2)}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - + Then value is TestAllTypes(single_struct=celpy.celtypes.MapType({'one': celpy.celtypes.DoubleType(source=1.0), 'two': celpy.celtypes.DoubleType(source=2.0)})) -Scenario: value - - Given container is "google.api.expr.test.v1.proto2" +Scenario: literal_wellknown/value + Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_value: 'foo'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{string_value:"foo"}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=StringType(source='foo'), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: int64_wrapper - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_int64_wrapper: -321}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int64_wrapper:{value:-321}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=-321, single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: int32_wrapper - - Given container is "google.api.expr.test.v1.proto2" + Then value is TestAllTypes(single_value=celpy.celtypes.StringType(source='foo')) - When CEL expression "TestAllTypes{single_int32_wrapper: -456}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32_wrapper:{value:-456}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=-456, single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: literal_wellknown/int64_wrapper + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int64_wrapper: -321}' is evaluated + Then value is TestAllTypes(single_int64_wrapper=celpy.celtypes.IntType(source=-321)) -Scenario: double_wrapper +Scenario: literal_wellknown/int32_wrapper - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_int32_wrapper: -456}' is evaluated + Then value is TestAllTypes(single_int32_wrapper=celpy.celtypes.IntType(source=-456)) - When CEL expression "TestAllTypes{single_double_wrapper: 2.71828}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_double_wrapper:{value:2.71828}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=2.71828, single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: literal_wellknown/double_wrapper + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_double_wrapper: 2.71828}' is evaluated + Then value is TestAllTypes(single_double_wrapper=celpy.celtypes.DoubleType(source=2.71828)) -Scenario: float_wrapper +Scenario: literal_wellknown/float_wrapper - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_float_wrapper: 2.99792e8}' is evaluated + Then value is TestAllTypes(single_float_wrapper=celpy.celtypes.DoubleType(source=299792000.0)) - When CEL expression "TestAllTypes{single_float_wrapper: 2.99792e8}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_float_wrapper:{value:2.99792e+08}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=299792000.0, single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: literal_wellknown/uint64_wrapper + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint64_wrapper: 8675309u}' is evaluated + Then value is TestAllTypes(single_uint64_wrapper=celpy.celtypes.UintType(source=8675309)) -Scenario: uint64_wrapper +Scenario: literal_wellknown/uint32_wrapper - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_uint32_wrapper: 987u}' is evaluated + Then value is TestAllTypes(single_uint32_wrapper=celpy.celtypes.UintType(source=987)) - When CEL expression "TestAllTypes{single_uint64_wrapper: 8675309u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint64_wrapper:{value:8675309}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=8675309, single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: literal_wellknown/string_wrapper + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_string_wrapper: 'hubba'}" is evaluated + Then value is TestAllTypes(single_string_wrapper=celpy.celtypes.StringType(source='hubba')) -Scenario: uint32_wrapper - - Given container is "google.api.expr.test.v1.proto2" - - When CEL expression "TestAllTypes{single_uint32_wrapper: 987u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint32_wrapper:{value:987}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=987, single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: string_wrapper - - Given container is "google.api.expr.test.v1.proto2" +Scenario: literal_wellknown/bool_wrapper - When CEL expression "TestAllTypes{single_string_wrapper: 'hubba'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_string_wrapper:{value:"hubba"}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper='hubba', single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_bool_wrapper: true}' is evaluated + Then value is TestAllTypes(single_bool_wrapper=celpy.celtypes.BoolType(source=True)) +Scenario: literal_wellknown/bytes_wrapper -Scenario: bool_wrapper + Given container is 'cel.expr.conformance.proto2' + When CEL expression "TestAllTypes{single_bytes_wrapper: b'\\301\\103'}" is evaluated + Then value is TestAllTypes(single_bytes_wrapper=celpy.celtypes.BytesType(source=b'\xc1C')) - Given container is "google.api.expr.test.v1.proto2" - When CEL expression "TestAllTypes{single_bool_wrapper: true}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bool_wrapper:{value:true}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=True, single_bytes_wrapper=BytesType(source=b''), list_value=[]) +# singular_bind -- Binding the singular fields. -Scenario: bytes_wrapper +Scenario: singular_bind/int32 - Given container is "google.api.expr.test.v1.proto2" + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is TestAllTypes(single_int32=17) + When CEL expression 'x.single_int32' is evaluated + Then value is celpy.celtypes.IntType(source=17) - When CEL expression "TestAllTypes{single_bytes_wrapper: b'\301\103'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bytes_wrapper:{value:"\xc1C"}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper='ÁC', list_value=[]) +Scenario: singular_bind/int64 + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is TestAllTypes(single_int64=-99) + When CEL expression 'x.single_int64' is evaluated + Then value is celpy.celtypes.IntType(source=-99) -# singular_bind -- Binding the singlular fields. +# empty_field -- Tests on empty fields. -Scenario: int32 - # type:{message_type:"google.api.expr.test.v1.proto2.TestAllTypes"} - Given type_env parameter "x" is TypeType(value='google.api.expr.test.v1.proto2.TestAllTypes') +@wip +Scenario: empty_field/scalar_with_default - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:17}} - Given bindings parameter "x" is TestAllTypes(single_int32=17, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_int32' is evaluated + Then value is celpy.celtypes.IntType(source=-32) - When CEL expression "x.single_int32" is evaluated - # int64_value:17 - Then value is IntType(source=17) +@wip +Scenario: empty_field/scalar_no_default + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_fixed32' is evaluated + Then value is celpy.celtypes.UintType(source=0) -Scenario: int64 +Scenario: empty_field/nested_message - # type:{message_type:"google.api.expr.test.v1.proto2.TestAllTypes"} - Given type_env parameter "x" is TypeType(value='google.api.expr.test.v1.proto2.TestAllTypes') + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_nested_message' is evaluated + Then value is NestedMessage() - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int64:-99}} - Given bindings parameter "x" is TestAllTypes(single_int32=0, single_int64=-99, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +@wip +Scenario: empty_field/nested_message_subfield - When CEL expression "x.single_int64" is evaluated - # int64_value:-99 - Then value is IntType(source=-99) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_nested_message.bb' is evaluated + Then value is celpy.celtypes.IntType(source=0) +@wip +Scenario: empty_field/wkt + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.single_int64_wrapper' is evaluated + Then value is None -# empty_field -- Tests on empty fields. +@wip +Scenario: empty_field/repeated_scalar -Scenario: scalar_with_default + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.repeated_int64' is evaluated + Then value is [] - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: empty_field/repeated_enum - When CEL expression "TestAllTypes{}.single_int32" is evaluated - # int64_value:-32 - Then value is IntType(source=-32) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.repeated_nested_enum' is evaluated + Then value is [] +@wip +Scenario: empty_field/repeated_nested -Scenario: scalar_no_default + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.repeated_nested_message' is evaluated + Then value is [] - Given container is "google.api.expr.test.v1.proto2" +Scenario: empty_field/map - When CEL expression "TestAllTypes{}.single_fixed32" is evaluated - # uint64_value:0 - Then value is UintType(source=0) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{}.map_string_string' is evaluated + Then value is celpy.celtypes.MapType({}) -Scenario: nested_message +# has -- Tests for the has() macro on proto2 messages. - Given container is "google.api.expr.test.v1.proto2" - When CEL expression "TestAllTypes{}.single_nested_message" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes.NestedMessage]:{}} - Then value is NestedMessage() +@wip +Scenario: has/undefined + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{}.no_such_field)' is evaluated + Then eval_error is 'no_such_field' -Scenario: nested_message_subfield +@wip +Scenario: has/repeated_none_implicit - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{}.repeated_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "TestAllTypes{}.single_nested_message.bb" is evaluated - # int64_value:0 - Then value is IntType(source=0) +@wip +Scenario: has/repeated_none_explicit + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{repeated_int32: []}.repeated_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: wkt +Scenario: has/repeated_one - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{repeated_int32: [1]}.repeated_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "TestAllTypes{}.single_int64_wrapper" is evaluated - # null_value:NULL_VALUE - Then value is None +Scenario: has/repeated_many + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{repeated_int32: [1, 2, 3]}.repeated_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: repeated_scalar +@wip +Scenario: has/map_none_implicit - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{}.map_string_string)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "TestAllTypes{}.repeated_int64" is evaluated - # list_value:{} - Then value is [] +@wip +Scenario: has/map_none_explicit + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{map_string_string: {}}.map_string_string)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: repeated_nested +Scenario: has/map_one_default - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression "has(TestAllTypes{map_string_string: {'MT': ''}}.map_string_string)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "TestAllTypes{}.repeated_nested_message" is evaluated - # list_value:{} - Then value is [] +Scenario: has/map_one + Given container is 'cel.expr.conformance.proto2' + When CEL expression "has(TestAllTypes{map_string_string: {'one': 'uno'}}.map_string_string)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: map +Scenario: has/map_many - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression "has(TestAllTypes{map_string_string: {'one': 'uno', 'two': 'dos'}}.map_string_string)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "TestAllTypes{}.map_string_string" is evaluated - # map_value:{} - Then value is MapType({}) +@wip +Scenario: has/required + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestRequired{required_int32: 4}.required_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: has/optional_unset_no_default -# has -- Tests for the has() macro on proto2 messages. + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{}.single_sint32)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: undefined +Scenario: has/optional_set_no_default - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{single_sint32: -4}.single_sint32)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "has(TestAllTypes{}.no_such_field)" is evaluated - # errors:{message:"no_such_field"} - Then eval_error is 'no_such_field' +@wip +Scenario: has/optional_unset_with_default + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{}.single_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: repeated_none_implicit +Scenario: has/optional_set_with_default - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{single_int32: 16}.single_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "has(TestAllTypes{}.repeated_int32)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: has/optional_set_to_default + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{single_int32: -32}.single_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: repeated_none_explicit +@wip +Scenario: has/optional_message_unset - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{}.standalone_message)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "has(TestAllTypes{repeated_int32: []}.repeated_int32)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: has/optional_message_set + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{standalone_message: TestAllTypes.NestedMessage{}}.standalone_message)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: repeated_one +@wip +Scenario: has/optional_enum_unset - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{}.standalone_enum)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "has(TestAllTypes{repeated_int32: [1]}.repeated_int32)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: has/optional_enum_set + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAR}.standalone_enum)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: repeated_many +@wip +Scenario: has/optional_enum_set_zero - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.FOO}.standalone_enum)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "has(TestAllTypes{repeated_int32: [1, 2, 3]}.repeated_int32)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: has/oneof_unset + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{}.single_nested_message)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: map_none_implicit +@wip +Scenario: has/oneof_other_set - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{single_nested_enum: TestAllTypes.NestedEnum.BAZ}.single_nested_message)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "has(TestAllTypes{}.map_string_string)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: has/oneof_set + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{single_nested_message: TestAllTypes.NestedMessage{}}.single_nested_message)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: map_none_explicit +@wip +Scenario: has/oneof_set_default - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'has(TestAllTypes{single_nested_enum: TestAllTypes.NestedEnum.FOO}.single_nested_enum)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "has(TestAllTypes{map_string_string: {}}.map_string_string)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +# set_null -- -Scenario: map_one_default - Given container is "google.api.expr.test.v1.proto2" +Scenario: set_null/single_message - When CEL expression "has(TestAllTypes{map_string_string: {'MT': ''}}.map_string_string)" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_nested_message: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: set_null/single_any -Scenario: map_one + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_any: null}.single_any' is evaluated + Then value is None - Given container is "google.api.expr.test.v1.proto2" +Scenario: set_null/single_value - When CEL expression "has(TestAllTypes{map_string_string: {'one': 'uno'}}.map_string_string)" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_value: null}.single_value' is evaluated + Then value is None +Scenario: set_null/single_duration -Scenario: map_many + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_duration: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - Given container is "google.api.expr.test.v1.proto2" +Scenario: set_null/single_timestamp - When CEL expression "has(TestAllTypes{map_string_string: {'one': 'uno', 'two': 'dos'}}.map_string_string)" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_timestamp: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +@wip +Scenario: set_null/single_scalar -Scenario: required + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_bool: null} == TestAllTypes{}' is evaluated + Then eval_error is 'unsupported field type' - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: set_null/repeated - When CEL expression "has(TestRequired{required_int32: 4}.required_int32)" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{repeated_int32: null} == TestAllTypes{}' is evaluated + Then eval_error is 'unsupported field type' +@wip +Scenario: set_null/map -Scenario: optional_unset_no_default + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{map_string_string: null} == TestAllTypes{}' is evaluated + Then eval_error is 'unsupported field type' - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: set_null/list_value - When CEL expression "has(TestAllTypes{}.single_sint32)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{list_value: null} == TestAllTypes{}' is evaluated + Then eval_error is 'unsupported field type' +@wip +Scenario: set_null/single_struct -Scenario: optional_set_no_default + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{single_struct: null} == TestAllTypes{}' is evaluated + Then eval_error is 'unsupported field type' - Given container is "google.api.expr.test.v1.proto2" - When CEL expression "has(TestAllTypes{single_sint32: -4}.single_sint32)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +# quoted_fields -- -Scenario: optional_unset_with_default +@wip +Scenario: quoted_fields/set_field_with_quoted_name - Given container is "google.api.expr.test.v1.proto2" + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{`in`: true} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "has(TestAllTypes{}.single_int32)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: quoted_fields/get_field_with_quoted_name + Given container is 'cel.expr.conformance.proto2' + When CEL expression 'TestAllTypes{`in`: true}.`in`' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: optional_set_with_default - Given container is "google.api.expr.test.v1.proto2" +# extensions_has -- Tests for presence checks on proto2 extension fields. - When CEL expression "has(TestAllTypes{single_int32: 16}.single_int32)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: extensions_has/package_scoped_int32 -Scenario: optional_set_to_default + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(int32_ext=42) + When CEL expression 'has(msg.`cel.expr.conformance.proto2.int32_ext`)' is evaluated + Then none is None - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: extensions_has/package_scoped_nested_ext - When CEL expression "has(TestAllTypes{single_int32: -32}.single_int32)" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(nested_ext=TestAllTypes()) + When CEL expression 'has(msg.`cel.expr.conformance.proto2.nested_ext`)' is evaluated + Then none is None +@wip +Scenario: extensions_has/package_scoped_test_all_types_ext -Scenario: optional_message_unset + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(test_all_types_ext=TestAllTypes()) + When CEL expression 'has(msg.`cel.expr.conformance.proto2.test_all_types_ext`)' is evaluated + Then none is None - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: extensions_has/package_scoped_test_all_types_nested_enum_ext - When CEL expression "has(TestAllTypes{}.standalone_message)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(nested_enum_ext=1) + When CEL expression 'has(msg.`cel.expr.conformance.proto2.nested_enum_ext`)' is evaluated + Then none is None +@wip +Scenario: extensions_has/package_scoped_repeated_test_all_types -Scenario: optional_message_set + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(repeated_test_all_types=[TestAllTypes(single_int64=1), TestAllTypes(single_bool=True)]) + When CEL expression 'has(msg.`cel.expr.conformance.proto2.repeated_test_all_types`)' is evaluated + Then none is None - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: extensions_has/message_scoped_int64 - When CEL expression "has(TestAllTypes{standalone_message: TestAllTypes.NestedMessage{}}.standalone_message)" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(int64_ext=42) + When CEL expression 'has(msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.int64_ext`)' is evaluated + Then none is None +@wip +Scenario: extensions_has/message_scoped_nested_ext -Scenario: optional_enum_unset + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(message_scoped_nested_ext=TestAllTypes()) + When CEL expression 'has(msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_nested_ext`)' is evaluated + Then none is None - Given container is "google.api.expr.test.v1.proto2" +@wip +Scenario: extensions_has/message_scoped_nested_enum_ext - When CEL expression "has(TestAllTypes{}.standalone_enum)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(nested_enum_ext=1) + When CEL expression 'has(msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.nested_enum_ext`)' is evaluated + Then none is None +@wip +Scenario: extensions_has/message_scoped_repeated_test_all_types -Scenario: optional_enum_set + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(message_scoped_repeated_test_all_types=[TestAllTypes(single_int64=1), TestAllTypes(single_bool=True)]) + When CEL expression 'has(msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_repeated_test_all_types`)' is evaluated + Then none is None - Given container is "google.api.expr.test.v1.proto2" - When CEL expression "has(TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAR}.standalone_enum)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +# extensions_get -- Tests for accessing proto2 extension fields. -Scenario: optional_enum_set_zero +@wip +Scenario: extensions_get/package_scoped_int32 - Given container is "google.api.expr.test.v1.proto2" + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(int32_ext=42) + When CEL expression 'msg.`cel.expr.conformance.proto2.int32_ext` == 42' is evaluated + Then none is None - When CEL expression "has(TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.FOO}.standalone_enum)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: extensions_get/package_scoped_nested_ext + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(nested_ext=TestAllTypes()) + When CEL expression 'msg.`cel.expr.conformance.proto2.nested_ext` == cel.expr.conformance.proto2.TestAllTypes{}' is evaluated + Then none is None -Scenario: oneof_unset +@wip +Scenario: extensions_get/package_scoped_test_all_types_ext - Given container is "google.api.expr.test.v1.proto2" + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(test_all_types_ext=TestAllTypes()) + When CEL expression 'msg.`cel.expr.conformance.proto2.test_all_types_ext` == cel.expr.conformance.proto2.TestAllTypes{}' is evaluated + Then none is None - When CEL expression "has(TestAllTypes{}.single_nested_message)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: extensions_get/package_scoped_test_all_types_nested_enum_ext + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(nested_enum_ext=1) + When CEL expression 'msg.`cel.expr.conformance.proto2.nested_enum_ext` == cel.expr.conformance.proto2.TestAllTypes.NestedEnum.BAR' is evaluated + Then none is None -Scenario: oneof_other_set +@wip +Scenario: extensions_get/package_scoped_repeated_test_all_types - Given container is "google.api.expr.test.v1.proto2" + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(repeated_test_all_types=[TestAllTypes(single_int64=1), TestAllTypes(single_bool=True)]) + When CEL expression 'msg.`cel.expr.conformance.proto2.repeated_test_all_types` == [cel.expr.conformance.proto2.TestAllTypes{single_int64: 1}, cel.expr.conformance.proto2.TestAllTypes{single_bool: true}]' is evaluated + Then none is None - When CEL expression "has(TestAllTypes{single_nested_enum: TestAllTypes.NestedEnum.BAZ}.single_nested_message)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: extensions_get/message_scoped_int64 + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(int64_ext=42) + When CEL expression 'msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.int64_ext` == 42' is evaluated + Then none is None -Scenario: oneof_set +@wip +Scenario: extensions_get/message_scoped_nested_ext - Given container is "google.api.expr.test.v1.proto2" + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(message_scoped_nested_ext=TestAllTypes()) + When CEL expression 'msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_nested_ext` == cel.expr.conformance.proto2.TestAllTypes{}' is evaluated + Then none is None - When CEL expression "has(TestAllTypes{single_nested_message: TestAllTypes.NestedMessage{}}.single_nested_message)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: extensions_get/message_scoped_nested_enum_ext + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(nested_enum_ext=1) + When CEL expression 'msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.nested_enum_ext` == cel.expr.conformance.proto2.TestAllTypes.NestedEnum.BAR' is evaluated + Then none is None -Scenario: oneof_set_default +@wip +Scenario: extensions_get/message_scoped_repeated_test_all_types - Given container is "google.api.expr.test.v1.proto2" + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(message_scoped_repeated_test_all_types=[TestAllTypes(single_int64=1), TestAllTypes(single_bool=True)]) + When CEL expression 'msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_repeated_test_all_types` == [cel.expr.conformance.proto2.TestAllTypes{single_int64: 1}, cel.expr.conformance.proto2.TestAllTypes{single_bool: true}]' is evaluated + Then none is None - When CEL expression "has(TestAllTypes{single_nested_enum: TestAllTypes.NestedEnum.FOO}.single_nested_enum)" is evaluated - # bool_value:true - Then value is BoolType(source=True) diff --git a/features/proto2.textproto b/features/proto2.textproto index bfc0325..0662b06 100644 --- a/features/proto2.textproto +++ b/features/proto2.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + name: "proto2" description: "Protocol buffer version 2 tests. See notes for the available set of protos for tests." @@ -7,191 +10,259 @@ section { test { name: "int64_nocontainer" - expr: "google.api.expr.test.v1.proto2.TestAllTypes{single_int64: 17}" + expr: "cel.expr.conformance.proto2.TestAllTypes{single_int64: 17}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_int64: 17 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int64: 17 } } } } test { name: "int32" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_int32: -34}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_int32: -34 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32: -34 } } } } + test { + name: "int32_eq_uint" + container: "google.protobuf" + expr: "Int32Value{value: 34} == dyn(UInt64Value{value: 34u})" + value { bool_value: true } + } + + test { + name: "not_int32_eq_uint" + container: "google.protobuf" + expr: "Int32Value{value: 34} == dyn(UInt64Value{value: 18446744073709551615u})" + value { bool_value: false } + } + + test { + name: "int32_eq_double" + container: "google.protobuf" + expr: "Int32Value{value: 34} == dyn(DoubleValue{value: 34.0})" + value { bool_value: true } + } + + test { + name: "not_int32_eq_double" + container: "google.protobuf" + expr: "Int32Value{value: 34} == dyn(DoubleValue{value: -9223372036854775809.0})" + value { bool_value: false } + } + test { name: "int64" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_int64: 17}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_int64: 17 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int64: 17 } } } } test { name: "uint32" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_uint32: 1u}" value { object_value: { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_uint32: 1 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_uint32: 1 } } } } + test { + name: "uint32_eq_int" + container: "google.protobuf" + expr: "UInt32Value{value: 34u} == dyn(Int64Value{value: 34})" + value { bool_value: true } + } + + test { + name: "not_uint32_eq_int" + container: "google.protobuf" + expr: "UInt32Value{value: 34u} == dyn(Int64Value{value: -1})" + value { bool_value: false } + } + + test { + name: "uint32_eq_double" + container: "google.protobuf" + expr: "UInt32Value{value: 34u} == dyn(DoubleValue{value: 34.0})" + value { bool_value: true } + } + + test { + name: "not_uint32_eq_double" + container: "google.protobuf" + expr: "UInt32Value{value: 34u} == dyn(DoubleValue{value: 18446744073709551616.0})" + value { bool_value: false } + } + test { name: "uint64" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_uint64: 9999u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_uint64: 9999 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_uint64: 9999 } } } } test { name: "sint32" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_sint32: -3}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_sint32: -3 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_sint32: -3 } } } } test { name: "sint64" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_sint64: 255}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_sint64: 255 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_sint64: 255 } } } } test { name: "fixed32" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_fixed32: 43u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_fixed32: 43 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_fixed32: 43 } } } } test { name: "fixed64" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_fixed64: 1880u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_fixed64: 1880 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_fixed64: 1880 } } } } test { name: "sfixed32" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_sfixed32: -404}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_sfixed32: -404 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_sfixed32: -404 } } } } test { name: "sfixed64" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_sfixed64: -1}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_sfixed64: -1 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_sfixed64: -1 } } } } test { name: "float" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_float: 3.1416}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_float: 3.1416 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_float: 3.1416 } } } } + test { + name: "float_eq_int" + container: "google.protobuf" + expr: "FloatValue{value: 3.0} == dyn(Int64Value{value: 3})" + value { bool_value: true } + } + + test { + name: "not_float_eq_int" + container: "google.protobuf" + expr: "FloatValue{value: -1.14} == dyn(Int64Value{value: -1})" + value { bool_value: false } + } + + test { + name: "float_eq_uint" + container: "google.protobuf" + expr: "FloatValue{value: 34.0} == dyn(UInt64Value{value: 34u})" + value { bool_value: true } + } + + test { + name: "not_float_eq_uint" + container: "google.protobuf" + expr: "FloatValue{value: -1.0} == dyn(UInt64Value{value: 18446744073709551615u})" + value { bool_value: false } + } + test { name: "double" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_double: 6.022e23}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_double: 6.022e23 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_double: 6.022e23 } } } } test { name: "bool" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_bool: true}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_bool: true } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_bool: true } } } } test { name: "string" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_string: 'foo'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_string: 'foo' } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_string: "foo" } } } } test { name: "bytes" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_bytes: b'\\377'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_bytes: '\377' } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_bytes: "\377" } } } } @@ -203,14 +274,14 @@ section { test { name: "any" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_any: TestAllTypes{single_int32: 1}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { - single_any { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { - single_int32: 1 + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { + single_any { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { + single_int32: 1 } } } @@ -220,11 +291,11 @@ section { test { name: "duration" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_duration: duration('123s')}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_duration { seconds: 123 } @@ -235,11 +306,11 @@ section { test { name: "timestamp" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_timestamp: timestamp('2009-02-13T23:31:30Z')}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_timestamp { seconds: 1234567890 } @@ -250,11 +321,11 @@ section { test { name: "struct" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_struct: {'one': 1, 'two': 2}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_struct { fields { key: "one" @@ -272,11 +343,11 @@ section { test { name: "value" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: 'foo'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { string_value: "foo" } @@ -287,11 +358,11 @@ section { test { name: "int64_wrapper" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_int64_wrapper: -321}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int64_wrapper { value: -321 } @@ -302,11 +373,11 @@ section { test { name: "int32_wrapper" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_int32_wrapper: -456}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32_wrapper { value: -456 } @@ -317,11 +388,11 @@ section { test { name: "double_wrapper" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_double_wrapper: 2.71828}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_double_wrapper { value: 2.71828 } @@ -332,11 +403,11 @@ section { test { name: "float_wrapper" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_float_wrapper: 2.99792e8}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_float_wrapper { value: 2.99792e8 } @@ -345,14 +416,13 @@ section { } } - test { name: "uint64_wrapper" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_uint64_wrapper: 8675309u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_uint64_wrapper { value: 8675309 } @@ -361,14 +431,13 @@ section { } } - test { name: "uint32_wrapper" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_uint32_wrapper: 987u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_uint32_wrapper { value: 987 } @@ -377,14 +446,13 @@ section { } } - test { name: "string_wrapper" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_string_wrapper: 'hubba'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_string_wrapper { value: "hubba" } @@ -393,14 +461,13 @@ section { } } - test { name: "bool_wrapper" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_bool_wrapper: true}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_bool_wrapper { value: true } @@ -409,14 +476,13 @@ section { } } - test { name: "bytes_wrapper" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_bytes_wrapper: b'\\301\\103'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_bytes_wrapper { value: "\301\103" } @@ -429,21 +495,24 @@ section { section { name: "singular_bind" - description: "Binding the singlular fields." + description: "Binding the singular fields." test { name: "int32" expr: "x.single_int32" type_env: { name: "x" - ident: { type: { message_type: "google.api.expr.test.v1.proto2.TestAllTypes" } } + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } } bindings: { key: "x" - value: { value: { object_value: { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_int32: 17 } - }}} + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32: 17 } + } + } + } } value: { int64_value: 17 } } @@ -453,14 +522,17 @@ section { expr: "x.single_int64" type_env: { name: "x" - ident { type { message_type: "google.api.expr.test.v1.proto2.TestAllTypes" } } + ident { type { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } } bindings: { key: "x" - value: { value: { object_value: { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes] - { single_int64: -99 } - }}} + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int64: -99 } + } + } + } } value: { int64_value: -99 } } @@ -472,58 +544,67 @@ section { test { name: "scalar_with_default" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.single_int32" value: { int64_value: -32 } } test { name: "scalar_no_default" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.single_fixed32" value: { uint64_value: 0 } } test { name: "nested_message" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.single_nested_message" - value: { object_value: { - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes.NestedMessage] - { }}} + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes.NestedMessage] {} + } + } } test { name: "nested_message_subfield" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.single_nested_message.bb" value: { int64_value: 0 } } test { name: "wkt" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.single_int64_wrapper" value: { null_value: NULL_VALUE } } test { name: "repeated_scalar" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.repeated_int64" value: { list_value: {} } } + test { + name: "repeated_enum" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.repeated_nested_enum" + value: { list_value: {} } + } + test { name: "repeated_nested" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.repeated_nested_message" value: { list_value: {} } } test { name: "map" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.map_string_string" value: { map_value: {} } } @@ -533,7 +614,7 @@ section { description: "Tests for the has() macro on proto2 messages." test { name: "undefined" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{}.no_such_field)" disable_check: true eval_error: { @@ -542,146 +623,607 @@ section { } test { name: "repeated_none_implicit" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{}.repeated_int32)" value { bool_value: false } } test { name: "repeated_none_explicit" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{repeated_int32: []}.repeated_int32)" value { bool_value: false } } test { name: "repeated_one" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{repeated_int32: [1]}.repeated_int32)" value { bool_value: true } } test { name: "repeated_many" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{repeated_int32: [1, 2, 3]}.repeated_int32)" value { bool_value: true } } test { name: "map_none_implicit" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{}.map_string_string)" value { bool_value: false } } test { name: "map_none_explicit" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{map_string_string: {}}.map_string_string)" value { bool_value: false } } test { name: "map_one_default" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{map_string_string: {'MT': ''}}.map_string_string)" value { bool_value: true } } test { name: "map_one" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{map_string_string: {'one': 'uno'}}.map_string_string)" value { bool_value: true } } test { name: "map_many" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{map_string_string: {'one': 'uno', 'two': 'dos'}}.map_string_string)" value { bool_value: true } } test { name: "required" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestRequired{required_int32: 4}.required_int32)" value { bool_value: true } } test { name: "optional_unset_no_default" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{}.single_sint32)" value { bool_value: false } } test { name: "optional_set_no_default" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{single_sint32: -4}.single_sint32)" value { bool_value: true } } test { name: "optional_unset_with_default" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{}.single_int32)" value { bool_value: false } } test { name: "optional_set_with_default" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{single_int32: 16}.single_int32)" value { bool_value: true } } test { name: "optional_set_to_default" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{single_int32: -32}.single_int32)" value { bool_value: true } } test { name: "optional_message_unset" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{}.standalone_message)" value { bool_value: false } } test { name: "optional_message_set" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{standalone_message: TestAllTypes.NestedMessage{}}.standalone_message)" value { bool_value: true } } test { name: "optional_enum_unset" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{}.standalone_enum)" value { bool_value: false } } test { name: "optional_enum_set" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAR}.standalone_enum)" value { bool_value: true } } test { name: "optional_enum_set_zero" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.FOO}.standalone_enum)" value { bool_value: true } } test { name: "oneof_unset" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{}.single_nested_message)" value { bool_value: false } } test { name: "oneof_other_set" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{single_nested_enum: TestAllTypes.NestedEnum.BAZ}.single_nested_message)" value { bool_value: false } } test { name: "oneof_set" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{single_nested_message: TestAllTypes.NestedMessage{}}.single_nested_message)" value { bool_value: true } } test { name: "oneof_set_default" - container: "google.api.expr.test.v1.proto2" + container: "cel.expr.conformance.proto2" expr: "has(TestAllTypes{single_nested_enum: TestAllTypes.NestedEnum.FOO}.single_nested_enum)" value { bool_value: true } } } +section { + name: "set_null" + test { + name: "single_message" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_nested_message: null} == TestAllTypes{}" + value: { bool_value: true } + } + test { + name: "single_any" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_any: null}.single_any" + value { null_value: NULL_VALUE } + } + test { + name: "single_value" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_value: null}.single_value" + value { null_value: NULL_VALUE } + } + test { + name: "single_duration" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_duration: null} == TestAllTypes{}" + value: { bool_value: true } + } + test { + name: "single_timestamp" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_timestamp: null} == TestAllTypes{}" + value: { bool_value: true } + } + test { + name: "single_scalar" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_bool: null} == TestAllTypes{}" + disable_check: true + eval_error: { + errors: { message: "unsupported field type" } + } + } + test { + name: "repeated" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{repeated_int32: null} == TestAllTypes{}" + disable_check: true + eval_error: { + errors: { message: "unsupported field type" } + } + } + test { + name: "map" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{map_string_string: null} == TestAllTypes{}" + disable_check: true + eval_error: { + errors: { message: "unsupported field type" } + } + } + test { + name: "list_value" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{list_value: null} == TestAllTypes{}" + disable_check: true + eval_error: { + errors: { message: "unsupported field type" } + } + } + test { + name: "single_struct" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{single_struct: null} == TestAllTypes{}" + disable_check: true + eval_error: { + errors: { message: "unsupported field type" } + } + } +} +section { + name: "quoted_fields" + test { + name: "set_field_with_quoted_name" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{`in`: true} == TestAllTypes{}" + value: { bool_value: false } + } + test { + name: "get_field_with_quoted_name" + container: "cel.expr.conformance.proto2" + expr: "TestAllTypes{`in`: true}.`in`" + value: { bool_value: true } + } +} +section: { + name: "extensions_has" + description: "Tests for presence checks on proto2 extension fields." + test: { + name: "package_scoped_int32" + expr: "has(msg.`cel.expr.conformance.proto2.int32_ext`)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.int32_ext]: 42 + } + } + } + } + } + } + test: { + name: "package_scoped_nested_ext" + expr: "has(msg.`cel.expr.conformance.proto2.nested_ext`)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.nested_ext]: {} + } + } + } + } + } + } + test: { + name: "package_scoped_test_all_types_ext" + expr: "has(msg.`cel.expr.conformance.proto2.test_all_types_ext`)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.test_all_types_ext]: {} + } + } + } + } + } + } + test: { + name: "package_scoped_test_all_types_nested_enum_ext" + expr: "has(msg.`cel.expr.conformance.proto2.nested_enum_ext`)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.nested_enum_ext]: BAR + } + } + } + } + } + } + test: { + name: "package_scoped_repeated_test_all_types" + expr: "has(msg.`cel.expr.conformance.proto2.repeated_test_all_types`)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.repeated_test_all_types]: [ { single_int64: 1 }, { single_bool: true } ] + } + } + } + } + } + } + test: { + name: "message_scoped_int64" + expr: "has(msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.int64_ext`)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.int64_ext]: 42 + } + } + } + } + } + } + test: { + name: "message_scoped_nested_ext" + expr: "has(msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_nested_ext`)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_nested_ext]: {} + } + } + } + } + } + } + test: { + name: "message_scoped_nested_enum_ext" + expr: "has(msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.nested_enum_ext`)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.nested_enum_ext]: BAR + } + } + } + } + } + } + test: { + name: "message_scoped_repeated_test_all_types" + expr: "has(msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_repeated_test_all_types`)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_repeated_test_all_types]: [ { single_int64: 1 }, { single_bool: true } ] + } + } + } + } + } + } +} +section { + name: "extensions_get" + description: "Tests for accessing proto2 extension fields." + test: { + name: "package_scoped_int32" + expr: "msg.`cel.expr.conformance.proto2.int32_ext` == 42" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.int32_ext]: 42 + } + } + } + } + } + } + test: { + name: "package_scoped_nested_ext" + expr: "msg.`cel.expr.conformance.proto2.nested_ext` == cel.expr.conformance.proto2.TestAllTypes{}" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.nested_ext]: {} + } + } + } + } + } + } + test: { + name: "package_scoped_test_all_types_ext" + expr: "msg.`cel.expr.conformance.proto2.test_all_types_ext` == cel.expr.conformance.proto2.TestAllTypes{}" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.test_all_types_ext]: {} + } + } + } + } + } + } + test: { + name: "package_scoped_test_all_types_nested_enum_ext" + expr: "msg.`cel.expr.conformance.proto2.nested_enum_ext` == cel.expr.conformance.proto2.TestAllTypes.NestedEnum.BAR" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.nested_enum_ext]: BAR + } + } + } + } + } + } + test: { + name: "package_scoped_repeated_test_all_types" + expr: "msg.`cel.expr.conformance.proto2.repeated_test_all_types` == [cel.expr.conformance.proto2.TestAllTypes{single_int64: 1}, cel.expr.conformance.proto2.TestAllTypes{single_bool: true}]" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.repeated_test_all_types]: [ { single_int64: 1 }, { single_bool: true } ] + } + } + } + } + } + } + test: { + name: "message_scoped_int64" + expr: "msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.int64_ext` == 42" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.int64_ext]: 42 + } + } + } + } + } + } + test: { + name: "message_scoped_nested_ext" + expr: "msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_nested_ext` == cel.expr.conformance.proto2.TestAllTypes{}" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_nested_ext]: {} + } + } + } + } + } + } + test: { + name: "message_scoped_nested_enum_ext" + expr: "msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.nested_enum_ext` == cel.expr.conformance.proto2.TestAllTypes.NestedEnum.BAR" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.nested_enum_ext]: BAR + } + } + } + } + } + } + test: { + name: "message_scoped_repeated_test_all_types" + expr: "msg.`cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_repeated_test_all_types` == [cel.expr.conformance.proto2.TestAllTypes{single_int64: 1}, cel.expr.conformance.proto2.TestAllTypes{single_bool: true}]" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_repeated_test_all_types]: [ { single_int64: 1 }, { single_bool: true } ] + } + } + } + } + } + } +} diff --git a/features/proto2_ext.feature b/features/proto2_ext.feature new file mode 100644 index 0000000..8a669f0 --- /dev/null +++ b/features/proto2_ext.feature @@ -0,0 +1,155 @@ +@conformance +Feature: proto2_ext + Tests for the proto extension library. + +# has_ext -- + + +@wip +Scenario: has_ext/package_scoped_int32 + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(int32_ext=42) + When CEL expression 'proto.hasExt(msg, cel.expr.conformance.proto2.int32_ext)' is evaluated + Then none is None + +@wip +Scenario: has_ext/package_scoped_nested_ext + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(nested_ext=TestAllTypes()) + When CEL expression 'proto.hasExt(msg, cel.expr.conformance.proto2.nested_ext)' is evaluated + Then none is None + +@wip +Scenario: has_ext/package_scoped_test_all_types_ext + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(test_all_types_ext=TestAllTypes()) + When CEL expression 'proto.hasExt(msg, cel.expr.conformance.proto2.test_all_types_ext)' is evaluated + Then none is None + +@wip +Scenario: has_ext/package_scoped_test_all_types_nested_enum_ext + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(nested_enum_ext=1) + When CEL expression 'proto.hasExt(msg, cel.expr.conformance.proto2.nested_enum_ext)' is evaluated + Then none is None + +@wip +Scenario: has_ext/package_scoped_repeated_test_all_types + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(repeated_test_all_types=[TestAllTypes(single_int64=1), TestAllTypes(single_bool=True)]) + When CEL expression 'proto.hasExt(msg, cel.expr.conformance.proto2.repeated_test_all_types)' is evaluated + Then none is None + +@wip +Scenario: has_ext/message_scoped_int64 + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(int64_ext=42) + When CEL expression 'proto.hasExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.int64_ext)' is evaluated + Then none is None + +@wip +Scenario: has_ext/message_scoped_nested_ext + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(message_scoped_nested_ext=TestAllTypes()) + When CEL expression 'proto.hasExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_nested_ext)' is evaluated + Then none is None + +@wip +Scenario: has_ext/message_scoped_nested_enum_ext + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(nested_enum_ext=1) + When CEL expression 'proto.hasExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.nested_enum_ext)' is evaluated + Then none is None + +@wip +Scenario: has_ext/message_scoped_repeated_test_all_types + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(message_scoped_repeated_test_all_types=[TestAllTypes(single_int64=1), TestAllTypes(single_bool=True)]) + When CEL expression 'proto.hasExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_repeated_test_all_types)' is evaluated + Then none is None + + +# get_ext -- + + +@wip +Scenario: get_ext/package_scoped_int32 + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(int32_ext=42) + When CEL expression 'proto.getExt(msg, cel.expr.conformance.proto2.int32_ext) == 42' is evaluated + Then none is None + +@wip +Scenario: get_ext/package_scoped_nested_ext + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(nested_ext=TestAllTypes()) + When CEL expression 'proto.getExt(msg, cel.expr.conformance.proto2.nested_ext) == cel.expr.conformance.proto2.TestAllTypes{}' is evaluated + Then none is None + +@wip +Scenario: get_ext/package_scoped_test_all_types_ext + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(test_all_types_ext=TestAllTypes()) + When CEL expression 'proto.getExt(msg, cel.expr.conformance.proto2.test_all_types_ext) == cel.expr.conformance.proto2.TestAllTypes{}' is evaluated + Then none is None + +@wip +Scenario: get_ext/package_scoped_test_all_types_nested_enum_ext + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(nested_enum_ext=1) + When CEL expression 'proto.getExt(msg, cel.expr.conformance.proto2.nested_enum_ext) == cel.expr.conformance.proto2.TestAllTypes.NestedEnum.BAR' is evaluated + Then none is None + +@wip +Scenario: get_ext/package_scoped_repeated_test_all_types + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(repeated_test_all_types=[TestAllTypes(single_int64=1), TestAllTypes(single_bool=True)]) + When CEL expression 'proto.getExt(msg, cel.expr.conformance.proto2.repeated_test_all_types) == [cel.expr.conformance.proto2.TestAllTypes{single_int64: 1}, cel.expr.conformance.proto2.TestAllTypes{single_bool: true}]' is evaluated + Then none is None + +@wip +Scenario: get_ext/message_scoped_int64 + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(int64_ext=42) + When CEL expression 'proto.getExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.int64_ext) == 42' is evaluated + Then none is None + +@wip +Scenario: get_ext/message_scoped_nested_ext + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(message_scoped_nested_ext=TestAllTypes()) + When CEL expression 'proto.getExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_nested_ext) == cel.expr.conformance.proto2.TestAllTypes{}' is evaluated + Then none is None + +@wip +Scenario: get_ext/message_scoped_nested_enum_ext + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(nested_enum_ext=1) + When CEL expression 'proto.getExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.nested_enum_ext) == cel.expr.conformance.proto2.TestAllTypes.NestedEnum.BAR' is evaluated + Then none is None + +@wip +Scenario: get_ext/message_scoped_repeated_test_all_types + + Given type_env parameter "msg" is celpy.celtypes.MessageType + and bindings parameter "msg" is TestAllTypes(message_scoped_repeated_test_all_types=[TestAllTypes(single_int64=1), TestAllTypes(single_bool=True)]) + When CEL expression 'proto.getExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_repeated_test_all_types) == [cel.expr.conformance.proto2.TestAllTypes{single_int64: 1}, cel.expr.conformance.proto2.TestAllTypes{single_bool: true}]' is evaluated + Then none is None + diff --git a/features/proto2_ext.textproto b/features/proto2_ext.textproto new file mode 100644 index 0000000..efd3fa4 --- /dev/null +++ b/features/proto2_ext.textproto @@ -0,0 +1,372 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + +name: "proto2_ext" +description: "Tests for the proto extension library." +section: { + name: "has_ext" + test: { + name: "package_scoped_int32" + expr: "proto.hasExt(msg, cel.expr.conformance.proto2.int32_ext)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.int32_ext]: 42 + } + } + } + } + } + } + test: { + name: "package_scoped_nested_ext" + expr: "proto.hasExt(msg, cel.expr.conformance.proto2.nested_ext)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.nested_ext]: {} + } + } + } + } + } + } + test: { + name: "package_scoped_test_all_types_ext" + expr: "proto.hasExt(msg, cel.expr.conformance.proto2.test_all_types_ext)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.test_all_types_ext]: {} + } + } + } + } + } + } + test: { + name: "package_scoped_test_all_types_nested_enum_ext" + expr: "proto.hasExt(msg, cel.expr.conformance.proto2.nested_enum_ext)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.nested_enum_ext]: BAR + } + } + } + } + } + } + test: { + name: "package_scoped_repeated_test_all_types" + expr: "proto.hasExt(msg, cel.expr.conformance.proto2.repeated_test_all_types)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.repeated_test_all_types]: [ { single_int64: 1 }, { single_bool: true } ] + } + } + } + } + } + } + test: { + name: "message_scoped_int64" + expr: "proto.hasExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.int64_ext)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.int64_ext]: 42 + } + } + } + } + } + } + test: { + name: "message_scoped_nested_ext" + expr: "proto.hasExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_nested_ext)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_nested_ext]: {} + } + } + } + } + } + } + test: { + name: "message_scoped_nested_enum_ext" + expr: "proto.hasExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.nested_enum_ext)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.nested_enum_ext]: BAR + } + } + } + } + } + } + test: { + name: "message_scoped_repeated_test_all_types" + expr: "proto.hasExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_repeated_test_all_types)" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_repeated_test_all_types]: [ { single_int64: 1 }, { single_bool: true } ] + } + } + } + } + } + } +} + +section: { + name: "get_ext" + test: { + name: "package_scoped_int32" + expr: "proto.getExt(msg, cel.expr.conformance.proto2.int32_ext) == 42" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.int32_ext]: 42 + } + } + } + } + } + } + test: { + name: "package_scoped_nested_ext" + expr: "proto.getExt(msg, cel.expr.conformance.proto2.nested_ext) == cel.expr.conformance.proto2.TestAllTypes{}" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.nested_ext]: {} + } + } + } + } + } + } + test: { + name: "package_scoped_test_all_types_ext" + expr: "proto.getExt(msg, cel.expr.conformance.proto2.test_all_types_ext) == cel.expr.conformance.proto2.TestAllTypes{}" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.test_all_types_ext]: {} + } + } + } + } + } + } + test: { + name: "package_scoped_test_all_types_nested_enum_ext" + expr: "proto.getExt(msg, cel.expr.conformance.proto2.nested_enum_ext) == cel.expr.conformance.proto2.TestAllTypes.NestedEnum.BAR" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.nested_enum_ext]: BAR + } + } + } + } + } + } + test: { + name: "package_scoped_repeated_test_all_types" + expr: "proto.getExt(msg, cel.expr.conformance.proto2.repeated_test_all_types) == [cel.expr.conformance.proto2.TestAllTypes{single_int64: 1}, cel.expr.conformance.proto2.TestAllTypes{single_bool: true}]" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.repeated_test_all_types]: [ { single_int64: 1 }, { single_bool: true } ] + } + } + } + } + } + } + test: { + name: "message_scoped_int64" + expr: "proto.getExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.int64_ext) == 42" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.int64_ext]: 42 + } + } + } + } + } + } + test: { + name: "message_scoped_nested_ext" + expr: "proto.getExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_nested_ext) == cel.expr.conformance.proto2.TestAllTypes{}" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_nested_ext]: {} + } + } + } + } + } + } + test: { + name: "message_scoped_nested_enum_ext" + expr: "proto.getExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.nested_enum_ext) == cel.expr.conformance.proto2.TestAllTypes.NestedEnum.BAR" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.nested_enum_ext]: BAR + } + } + } + } + } + } + test: { + name: "message_scoped_repeated_test_all_types" + expr: "proto.getExt(msg, cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_repeated_test_all_types) == [cel.expr.conformance.proto2.TestAllTypes{single_int64: 1}, cel.expr.conformance.proto2.TestAllTypes{single_bool: true}]" + type_env: { + name: "msg" + ident: { type: { message_type: "cel.expr.conformance.proto2.TestAllTypes" } } + } + bindings: { + key: "msg" + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]: { + [cel.expr.conformance.proto2.Proto2ExtensionScopedMessage.message_scoped_repeated_test_all_types]: [ { single_int64: 1 }, { single_bool: true } ] + } + } + } + } + } + } +} diff --git a/features/proto3.feature b/features/proto3.feature index 7650aeb..2b79c3d 100644 --- a/features/proto3.feature +++ b/features/proto3.feature @@ -1,580 +1,521 @@ -@wip +@conformance Feature: proto3 - Protocol buffer version 3 tests. See notes for the available set of protos for tests. + Protocol buffer version 3 tests. See notes for the available set of + protos for tests. # literal_singular -- Literals with singular fields set. -Scenario: int64_nocontainer - - When CEL expression "google.api.expr.test.v1.proto3.TestAllTypes{single_int64: 17}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int64:17}} - Then value is TestAllTypes(single_int32=0, single_int64=17, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: int32 - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_int32: -34}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32:-34}} - Then value is TestAllTypes(single_int32=-34, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: int64 - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_int64: 17}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int64:17}} - Then value is TestAllTypes(single_int32=0, single_int64=17, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: uint32 - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_uint32: 1u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint32:1}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=1, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: uint64 - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_uint64: 9999u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint64:9999}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=9999, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: sint32 - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_sint32: -3}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_sint32:-3}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=-3, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: sint64 - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_sint64: 255}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_sint64:255}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=255, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: fixed32 - - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: literal_singular/int64_nocontainer - When CEL expression "TestAllTypes{single_fixed32: 43u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_fixed32:43}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=43, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + When CEL expression 'cel.expr.conformance.proto3.TestAllTypes{single_int64: 17}' is evaluated + Then value is TestAllTypes(single_int64=17) +Scenario: literal_singular/int32 -Scenario: fixed64 + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int32: -34}' is evaluated + Then value is TestAllTypes(single_int32=-34) - Given container is "google.api.expr.test.v1.proto3" +Scenario: literal_singular/int64 - When CEL expression "TestAllTypes{single_fixed64: 1880u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_fixed64:1880}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=1880, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int64: 17}' is evaluated + Then value is TestAllTypes(single_int64=17) +Scenario: literal_singular/uint32 -Scenario: sfixed32 + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_uint32: 1u}' is evaluated + Then value is TestAllTypes(single_uint32=1) - Given container is "google.api.expr.test.v1.proto3" +Scenario: literal_singular/uint64 - When CEL expression "TestAllTypes{single_sfixed32: -404}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_sfixed32:-404}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=-404, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_uint64: 9999u}' is evaluated + Then value is TestAllTypes(single_uint64=9999) +Scenario: literal_singular/sint32 -Scenario: sfixed64 + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_sint32: -3}' is evaluated + Then value is TestAllTypes(single_sint32=-3) - Given container is "google.api.expr.test.v1.proto3" +Scenario: literal_singular/sint64 - When CEL expression "TestAllTypes{single_sfixed64: -1}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_sfixed64:-1}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=-1, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_sint64: 255}' is evaluated + Then value is TestAllTypes(single_sint64=255) +Scenario: literal_singular/fixed32 -Scenario: float + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_fixed32: 43u}' is evaluated + Then value is TestAllTypes(single_fixed32=43) - Given container is "google.api.expr.test.v1.proto3" +Scenario: literal_singular/fixed64 - When CEL expression "TestAllTypes{single_float: 3.1416}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_float:3.1416}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=3.1416, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_fixed64: 1880u}' is evaluated + Then value is TestAllTypes(single_fixed64=1880) +Scenario: literal_singular/sfixed32 -Scenario: double + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_sfixed32: -404}' is evaluated + Then value is TestAllTypes(single_sfixed32=-404) - Given container is "google.api.expr.test.v1.proto3" +Scenario: literal_singular/sfixed64 - When CEL expression "TestAllTypes{single_double: 6.022e23}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_double:6.022e+23}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=6.022e+23, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_sfixed64: -1}' is evaluated + Then value is TestAllTypes(single_sfixed64=-1) +@wip +Scenario: literal_singular/float -Scenario: bool + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_float: 3.1416}' is evaluated + Then value is TestAllTypes(single_float=3.1415998935699463) - Given container is "google.api.expr.test.v1.proto3" +Scenario: literal_singular/double - When CEL expression "TestAllTypes{single_bool: true}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bool:true}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=True, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_double: 6.022e23}' is evaluated + Then value is TestAllTypes(single_double=6.022e+23) +Scenario: literal_singular/bool -Scenario: string + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_bool: true}' is evaluated + Then value is TestAllTypes(single_bool=True) - Given container is "google.api.expr.test.v1.proto3" +Scenario: literal_singular/string + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_string: 'foo'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_string:"foo"}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='foo', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: bytes + Then value is TestAllTypes(single_string='foo') - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_bytes: b'\377'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bytes:"\xff"}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes='ΓΏ', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: literal_singular/bytes + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_bytes: b'\\377'}" is evaluated + Then value is TestAllTypes(single_bytes=b'\xff') # literal_wellknown -- Literals with well-known fields set. -Scenario: any - - Given container is "google.api.expr.test.v1.proto3" - When CEL expression "TestAllTypes{single_any: TestAllTypes{single_int32: 1}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_any:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32:1}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=TestAllTypes(single_int32=1, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]), single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +Scenario: literal_wellknown/any + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: TestAllTypes{single_int32: 1}}' is evaluated + Then value is TestAllTypes(single_any=TestAllTypes(single_int32=1)) -Scenario: duration - - Given container is "google.api.expr.test.v1.proto3" +Scenario: literal_wellknown/duration + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_duration: duration('123s')}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_duration:{seconds:123}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=123, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - + Then value is TestAllTypes(single_duration=celpy.celtypes.DurationType(seconds=123, nanos=0)) -Scenario: timestamp - - Given container is "google.api.expr.test.v1.proto3" +Scenario: literal_wellknown/timestamp + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_timestamp: timestamp('2009-02-13T23:31:30Z')}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_timestamp:{seconds:1234567890}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=1234567890, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - + Then value is TestAllTypes(single_timestamp=celpy.celtypes.TimestampType(datetime.datetime(2009, 2, 13, 23, 31, 30, tzinfo=datetime.timezone.utc))) -Scenario: struct - - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: literal_wellknown/struct + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_struct: {'one': 1, 'two': 2}}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_struct:{fields:{key:"one" value:{number_value:1}} fields:{key:"two" value:{number_value:2}}}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({'one': DoubleType(source=1), 'two': DoubleType(source=2)}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Then value is TestAllTypes(single_struct=celpy.celtypes.MapType({'two': celpy.celtypes.DoubleType(source=2.0), 'one': celpy.celtypes.DoubleType(source=1.0)})) +Scenario: literal_wellknown/value -Scenario: value - - Given container is "google.api.expr.test.v1.proto3" - + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_value: 'foo'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{string_value:"foo"}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=StringType(source='foo'), single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: int64_wrapper - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_int64_wrapper: -321}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int64_wrapper:{value:-321}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=-321, single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: int32_wrapper + Then value is TestAllTypes(single_value=celpy.celtypes.StringType(source='foo')) - Given container is "google.api.expr.test.v1.proto3" +Scenario: literal_wellknown/int64_wrapper - When CEL expression "TestAllTypes{single_int32_wrapper: -456}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32_wrapper:{value:-456}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=-456, single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int64_wrapper: -321}' is evaluated + Then value is TestAllTypes(single_int64_wrapper=celpy.celtypes.IntType(source=-321)) +Scenario: literal_wellknown/int32_wrapper -Scenario: double_wrapper + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int32_wrapper: -456}' is evaluated + Then value is TestAllTypes(single_int32_wrapper=celpy.celtypes.IntType(source=-456)) - Given container is "google.api.expr.test.v1.proto3" +Scenario: literal_wellknown/double_wrapper - When CEL expression "TestAllTypes{single_double_wrapper: 2.71828}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_double_wrapper:{value:2.71828}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=2.71828, single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_double_wrapper: 2.71828}' is evaluated + Then value is TestAllTypes(single_double_wrapper=celpy.celtypes.DoubleType(source=2.71828)) +Scenario: literal_wellknown/float_wrapper -Scenario: float_wrapper + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_float_wrapper: 2.99792e8}' is evaluated + Then value is TestAllTypes(single_float_wrapper=celpy.celtypes.DoubleType(source=299792000.0)) - Given container is "google.api.expr.test.v1.proto3" +Scenario: literal_wellknown/uint64_wrapper - When CEL expression "TestAllTypes{single_float_wrapper: 2.99792e8}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_float_wrapper:{value:2.99792e+08}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=299792000.0, single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_uint64_wrapper: 8675309u}' is evaluated + Then value is TestAllTypes(single_uint64_wrapper=celpy.celtypes.UintType(source=8675309)) +Scenario: literal_wellknown/uint32_wrapper -Scenario: uint64_wrapper + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_uint32_wrapper: 987u}' is evaluated + Then value is TestAllTypes(single_uint32_wrapper=celpy.celtypes.UintType(source=987)) - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_uint64_wrapper: 8675309u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint64_wrapper:{value:8675309}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=8675309, single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: uint32_wrapper - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_uint32_wrapper: 987u}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint32_wrapper:{value:987}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=987, single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: string_wrapper - - Given container is "google.api.expr.test.v1.proto3" +Scenario: literal_wellknown/string_wrapper + Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_string_wrapper: 'hubba'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_string_wrapper:{value:"hubba"}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper='hubba', single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: bool_wrapper - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_bool_wrapper: true}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bool_wrapper:{value:true}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=True, single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - -Scenario: bytes_wrapper - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{single_bytes_wrapper: b'\301\103'}" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bytes_wrapper:{value:"\xc1C"}}} - Then value is TestAllTypes(single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper='ÁC', list_value=[]) + Then value is TestAllTypes(single_string_wrapper=celpy.celtypes.StringType(source='hubba')) +Scenario: literal_wellknown/bool_wrapper + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_bool_wrapper: true}' is evaluated + Then value is TestAllTypes(single_bool_wrapper=celpy.celtypes.BoolType(source=True)) -# singular_bind -- Binding the singlular fields. +Scenario: literal_wellknown/bytes_wrapper -Scenario: int32 + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_bytes_wrapper: b'\\301\\103'}" is evaluated + Then value is TestAllTypes(single_bytes_wrapper=celpy.celtypes.BytesType(source=b'\xc1C')) - # type:{message_type:"google.api.expr.test.v1.proto3.TestAllTypes"} - Given type_env parameter "x" is TypeType(value='google.api.expr.test.v1.proto3.TestAllTypes') - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32:17}} - Given bindings parameter "x" is TestAllTypes(single_int32=17, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) +# singular_bind -- Binding the singular fields. - When CEL expression "x.single_int32" is evaluated - # int64_value:17 - Then value is IntType(source=17) +Scenario: singular_bind/int32 -Scenario: int64 + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is TestAllTypes(single_int32=17) + When CEL expression 'x.single_int32' is evaluated + Then value is celpy.celtypes.IntType(source=17) - # type:{message_type:"google.api.expr.test.v1.proto3.TestAllTypes"} - Given type_env parameter "x" is TypeType(value='google.api.expr.test.v1.proto3.TestAllTypes') - - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int64:-99}} - Given bindings parameter "x" is TestAllTypes(single_int32=0, single_int64=-99, single_uint32=0, single_uint64=0, single_sint32=0, single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, single_struct=MapType({}), single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), list_value=[]) - - When CEL expression "x.single_int64" is evaluated - # int64_value:-99 - Then value is IntType(source=-99) +Scenario: singular_bind/int64 + Given type_env parameter "x" is celpy.celtypes.MessageType + and bindings parameter "x" is TestAllTypes(single_int64=-99) + When CEL expression 'x.single_int64' is evaluated + Then value is celpy.celtypes.IntType(source=-99) # empty_field -- Tests on empty fields. -Scenario: scalar - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{}.single_fixed32" is evaluated - # uint64_value:0 - Then value is UintType(source=0) +@wip +Scenario: empty_field/scalar -Scenario: nested_message + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_fixed32' is evaluated + Then value is celpy.celtypes.UintType(source=0) - Given container is "google.api.expr.test.v1.proto3" +Scenario: empty_field/nested_message - When CEL expression "TestAllTypes{}.single_nested_message" is evaluated - # object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes.NestedMessage]:{}} + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_nested_message' is evaluated Then value is NestedMessage() +@wip +Scenario: empty_field/nested_message_subfield -Scenario: nested_message_subfield - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{}.single_nested_message.bb" is evaluated - # int64_value:0 - Then value is IntType(source=0) - - -Scenario: wkt + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_nested_message.bb' is evaluated + Then value is celpy.celtypes.IntType(source=0) - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: empty_field/wkt - When CEL expression "TestAllTypes{}.single_int64_wrapper" is evaluated - # null_value:NULL_VALUE + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.single_int64_wrapper' is evaluated Then value is None +@wip +Scenario: empty_field/repeated_scalar -Scenario: repeated_scalar - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{}.repeated_int64" is evaluated - # list_value:{} + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.repeated_int64' is evaluated Then value is [] +@wip +Scenario: empty_field/repeated_enum -Scenario: repeated_nested - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "TestAllTypes{}.repeated_nested_message" is evaluated - # list_value:{} + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.repeated_nested_enum' is evaluated Then value is [] +@wip +Scenario: empty_field/repeated_nested -Scenario: map - - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.repeated_nested_message' is evaluated + Then value is [] - When CEL expression "TestAllTypes{}.map_string_string" is evaluated - # map_value:{} - Then value is MapType({}) +Scenario: empty_field/map + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{}.map_string_string' is evaluated + Then value is celpy.celtypes.MapType({}) # has -- Tests for the has() macro on proto3 messages. -Scenario: undefined - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: has/undefined - When CEL expression "has(TestAllTypes{}.no_such_field)" is evaluated - # errors:{message:"no_such_field"} + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{}.no_such_field)' is evaluated Then eval_error is 'no_such_field' +@wip +Scenario: has/repeated_none_implicit -Scenario: repeated_none_implicit - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "has(TestAllTypes{}.repeated_int32)" is evaluated - # bool_value:false - Then value is BoolType(source=False) - - -Scenario: repeated_none_explicit - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "has(TestAllTypes{repeated_int32: []}.repeated_int32)" is evaluated - # bool_value:false - Then value is BoolType(source=False) - - -Scenario: repeated_one - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "has(TestAllTypes{repeated_int32: [1]}.repeated_int32)" is evaluated - # bool_value:true - Then value is BoolType(source=True) - - -Scenario: repeated_many - - Given container is "google.api.expr.test.v1.proto3" - - When CEL expression "has(TestAllTypes{repeated_int32: [1, 2, 3]}.repeated_int32)" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{}.repeated_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: has/repeated_none_explicit -Scenario: map_none_implicit + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{repeated_int32: []}.repeated_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - Given container is "google.api.expr.test.v1.proto3" +Scenario: has/repeated_one - When CEL expression "has(TestAllTypes{}.map_string_string)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{repeated_int32: [1]}.repeated_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: has/repeated_many -Scenario: map_none_explicit + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{repeated_int32: [1, 2, 3]}.repeated_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: has/map_none_implicit - When CEL expression "has(TestAllTypes{map_string_string: {}}.map_string_string)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{}.map_string_string)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) +@wip +Scenario: has/map_none_explicit -Scenario: map_one_default + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{map_string_string: {}}.map_string_string)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - Given container is "google.api.expr.test.v1.proto3" +Scenario: has/map_one_default + Given container is 'cel.expr.conformance.proto3' When CEL expression "has(TestAllTypes{map_string_string: {'MT': ''}}.map_string_string)" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: has/map_one + Given container is 'cel.expr.conformance.proto3' + When CEL expression "has(TestAllTypes{map_string_string: {'one': 'uno'}}.map_string_string)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: map_one +Scenario: has/map_many - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression "has(TestAllTypes{map_string_string: {'one': 'uno', 'two': 'dos'}}.map_string_string)" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "has(TestAllTypes{map_string_string: {'one': 'uno'}}.map_string_string)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: has/single_unset + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{}.single_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: map_many +Scenario: has/single_set - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{single_int32: 16}.single_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "has(TestAllTypes{map_string_string: {'one': 'uno', 'two': 'dos'}}.map_string_string)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: has/single_set_to_default + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{single_int32: 0}.single_int32)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: single_unset +@wip +Scenario: has/single_message_unset - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{}.standalone_message)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "has(TestAllTypes{}.single_int32)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: has/single_message_set + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{standalone_message: TestAllTypes.NestedMessage{bb: 123}}.standalone_message)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: single_set +@wip +Scenario: has/single_message_set_to_default - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{standalone_message: TestAllTypes.NestedMessage{}}.standalone_message)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "has(TestAllTypes{single_int32: 16}.single_int32)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: has/single_enum_unset + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{}.standalone_enum)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: single_set_to_default +@wip +Scenario: has/single_enum_set - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAR}.standalone_enum)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "has(TestAllTypes{single_int32: 0}.single_int32)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: has/single_enum_set_zero + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.FOO}.standalone_enum)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: single_message_unset +@wip +Scenario: has/oneof_unset - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{}.single_nested_message)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) - When CEL expression "has(TestAllTypes{}.standalone_message)" is evaluated - # bool_value:false - Then value is BoolType(source=False) +@wip +Scenario: has/oneof_other_set + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{single_nested_enum: TestAllTypes.NestedEnum.BAZ}.single_nested_message)' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: single_message_set +@wip +Scenario: has/oneof_set - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{single_nested_message: TestAllTypes.NestedMessage{}}.single_nested_message)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "has(TestAllTypes{standalone_message: TestAllTypes.NestedMessage{bb: 123}}.standalone_message)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: has/oneof_set_default + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'has(TestAllTypes{single_nested_enum: TestAllTypes.NestedEnum.FOO}.single_nested_enum)' is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: single_message_set_to_default - Given container is "google.api.expr.test.v1.proto3" +# set_null -- - When CEL expression "has(TestAllTypes{standalone_message: TestAllTypes.NestedMessage{}}.standalone_message)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: set_null/single_message -Scenario: single_enum_unset + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_nested_message: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - Given container is "google.api.expr.test.v1.proto3" +Scenario: set_null/single_any - When CEL expression "has(TestAllTypes{}.standalone_enum)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: null}.single_any' is evaluated + Then value is None +Scenario: set_null/single_value -Scenario: single_enum_set + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: null}.single_value' is evaluated + Then value is None - Given container is "google.api.expr.test.v1.proto3" +Scenario: set_null/single_duration - When CEL expression "has(TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAR}.standalone_enum)" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_duration: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) +Scenario: set_null/single_timestamp -Scenario: single_enum_set_zero + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_timestamp: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: set_null/single_scalar - When CEL expression "has(TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.FOO}.standalone_enum)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_bool: null} == TestAllTypes{}' is evaluated + Then eval_error is 'unsupported field type' +@wip +Scenario: set_null/repeated -Scenario: oneof_unset + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{repeated_int32: null} == TestAllTypes{}' is evaluated + Then eval_error is 'unsupported field type' - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: set_null/map - When CEL expression "has(TestAllTypes{}.single_nested_message)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{map_string_string: null} == TestAllTypes{}' is evaluated + Then eval_error is 'unsupported field type' +@wip +Scenario: set_null/list_value -Scenario: oneof_other_set + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{list_value: null} == TestAllTypes{}' is evaluated + Then eval_error is 'unsupported field type' - Given container is "google.api.expr.test.v1.proto3" +@wip +Scenario: set_null/single_struct - When CEL expression "has(TestAllTypes{single_nested_enum: TestAllTypes.NestedEnum.BAZ}.single_nested_message)" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Given disable_check parameter is True + and container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_struct: null} == TestAllTypes{}' is evaluated + Then eval_error is 'unsupported field type' -Scenario: oneof_set +# quoted_fields -- - Given container is "google.api.expr.test.v1.proto3" - When CEL expression "has(TestAllTypes{single_nested_message: TestAllTypes.NestedMessage{}}.single_nested_message)" is evaluated - # bool_value:true - Then value is BoolType(source=True) +@wip +Scenario: quoted_fields/set_field + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{`in`: true} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: oneof_set_default +@wip +Scenario: quoted_fields/get_field - Given container is "google.api.expr.test.v1.proto3" + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{`in`: true}.`in`' is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "has(TestAllTypes{single_nested_enum: TestAllTypes.NestedEnum.FOO}.single_nested_enum)" is evaluated - # bool_value:true - Then value is BoolType(source=True) diff --git a/features/proto3.textproto b/features/proto3.textproto index 363b3ec..2a0378d 100644 --- a/features/proto3.textproto +++ b/features/proto3.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + name: "proto3" description: "Protocol buffer version 3 tests. See notes for the available set of protos for tests." @@ -7,191 +10,175 @@ section { test { name: "int64_nocontainer" - expr: "google.api.expr.test.v1.proto3.TestAllTypes{single_int64: 17}" + expr: "cel.expr.conformance.proto3.TestAllTypes{single_int64: 17}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_int64: 17 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int64: 17 } } } } test { name: "int32" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_int32: -34}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_int32: -34 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int32: -34 } } } } test { name: "int64" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_int64: 17}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_int64: 17 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int64: 17 } } } } test { name: "uint32" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_uint32: 1u}" value { object_value: { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_uint32: 1 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_uint32: 1 } } } } test { name: "uint64" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_uint64: 9999u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_uint64: 9999 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_uint64: 9999 } } } } test { name: "sint32" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_sint32: -3}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_sint32: -3 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_sint32: -3 } } } } test { name: "sint64" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_sint64: 255}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_sint64: 255 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_sint64: 255 } } } } test { name: "fixed32" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_fixed32: 43u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_fixed32: 43 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_fixed32: 43 } } } } test { name: "fixed64" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_fixed64: 1880u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_fixed64: 1880 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_fixed64: 1880 } } } } test { name: "sfixed32" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_sfixed32: -404}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_sfixed32: -404 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_sfixed32: -404 } } } } test { name: "sfixed64" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_sfixed64: -1}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_sfixed64: -1 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_sfixed64: -1 } } } } test { name: "float" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_float: 3.1416}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_float: 3.1416 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_float: 3.1416 } } } } test { name: "double" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_double: 6.022e23}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_double: 6.022e23 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_double: 6.022e23 } } } } test { name: "bool" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_bool: true}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_bool: true } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_bool: true } } } } test { name: "string" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_string: 'foo'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_string: 'foo' } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_string: "foo" } } } } test { name: "bytes" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_bytes: b'\\377'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_bytes: '\377' } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_bytes: "\377" } } } } @@ -203,14 +190,14 @@ section { test { name: "any" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_any: TestAllTypes{single_int32: 1}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { - single_any { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { - single_int32: 1 + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_any { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_int32: 1 } } } @@ -220,11 +207,11 @@ section { test { name: "duration" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_duration: duration('123s')}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_duration { seconds: 123 } @@ -235,11 +222,11 @@ section { test { name: "timestamp" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_timestamp: timestamp('2009-02-13T23:31:30Z')}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_timestamp { seconds: 1234567890 } @@ -250,11 +237,11 @@ section { test { name: "struct" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_struct: {'one': 1, 'two': 2}}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_struct { fields { key: "one" @@ -272,11 +259,11 @@ section { test { name: "value" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: 'foo'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { string_value: "foo" } @@ -287,11 +274,11 @@ section { test { name: "int64_wrapper" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_int64_wrapper: -321}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int64_wrapper { value: -321 } @@ -302,11 +289,11 @@ section { test { name: "int32_wrapper" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_int32_wrapper: -456}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int32_wrapper { value: -456 } @@ -317,11 +304,11 @@ section { test { name: "double_wrapper" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_double_wrapper: 2.71828}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_double_wrapper { value: 2.71828 } @@ -332,11 +319,11 @@ section { test { name: "float_wrapper" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_float_wrapper: 2.99792e8}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_float_wrapper { value: 2.99792e8 } @@ -345,14 +332,13 @@ section { } } - test { name: "uint64_wrapper" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_uint64_wrapper: 8675309u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_uint64_wrapper { value: 8675309 } @@ -361,14 +347,13 @@ section { } } - test { name: "uint32_wrapper" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_uint32_wrapper: 987u}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_uint32_wrapper { value: 987 } @@ -377,14 +362,13 @@ section { } } - test { name: "string_wrapper" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_string_wrapper: 'hubba'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_string_wrapper { value: "hubba" } @@ -393,14 +377,13 @@ section { } } - test { name: "bool_wrapper" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_bool_wrapper: true}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_bool_wrapper { value: true } @@ -409,14 +392,13 @@ section { } } - test { name: "bytes_wrapper" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_bytes_wrapper: b'\\301\\103'}" value { object_value { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_bytes_wrapper { value: "\301\103" } @@ -429,21 +411,24 @@ section { section { name: "singular_bind" - description: "Binding the singlular fields." + description: "Binding the singular fields." test { name: "int32" expr: "x.single_int32" type_env: { name: "x" - ident: { type: { message_type: "google.api.expr.test.v1.proto3.TestAllTypes" } } + ident: { type: { message_type: "cel.expr.conformance.proto3.TestAllTypes" } } } bindings: { key: "x" - value: { value: { object_value: { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_int32: 17 } - }}} + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int32: 17 } + } + } + } } value: { int64_value: 17 } } @@ -453,14 +438,17 @@ section { expr: "x.single_int64" type_env: { name: "x" - ident { type { message_type: "google.api.expr.test.v1.proto3.TestAllTypes" } } + ident { type { message_type: "cel.expr.conformance.proto3.TestAllTypes" } } } bindings: { key: "x" - value: { value: { object_value: { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes] - { single_int64: -99 } - }}} + value: { + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int64: -99 } + } + } + } } value: { int64_value: -99 } } @@ -472,51 +460,60 @@ section { test { name: "scalar" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.single_fixed32" value: { uint64_value: 0 } } test { name: "nested_message" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.single_nested_message" - value: { object_value: { - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes.NestedMessage] - { }}} + value: { + object_value: { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes.NestedMessage] {} + } + } } test { name: "nested_message_subfield" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.single_nested_message.bb" value: { int64_value: 0 } } test { name: "wkt" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.single_int64_wrapper" value: { null_value: NULL_VALUE } } test { name: "repeated_scalar" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.repeated_int64" value: { list_value: {} } } + test { + name: "repeated_enum" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.repeated_nested_enum" + value: { list_value: {} } + } + test { name: "repeated_nested" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.repeated_nested_message" value: { list_value: {} } } test { name: "map" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.map_string_string" value: { map_value: {} } } @@ -526,7 +523,7 @@ section { description: "Tests for the has() macro on proto3 messages." test { name: "undefined" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{}.no_such_field)" disable_check: true eval_error: { @@ -535,134 +532,227 @@ section { } test { name: "repeated_none_implicit" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{}.repeated_int32)" value { bool_value: false } } test { name: "repeated_none_explicit" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{repeated_int32: []}.repeated_int32)" value { bool_value: false } } test { name: "repeated_one" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{repeated_int32: [1]}.repeated_int32)" value { bool_value: true } } test { name: "repeated_many" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{repeated_int32: [1, 2, 3]}.repeated_int32)" value { bool_value: true } } test { name: "map_none_implicit" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{}.map_string_string)" value { bool_value: false } } test { name: "map_none_explicit" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{map_string_string: {}}.map_string_string)" value { bool_value: false } } test { name: "map_one_default" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{map_string_string: {'MT': ''}}.map_string_string)" value { bool_value: true } } test { name: "map_one" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{map_string_string: {'one': 'uno'}}.map_string_string)" value { bool_value: true } } test { name: "map_many" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{map_string_string: {'one': 'uno', 'two': 'dos'}}.map_string_string)" value { bool_value: true } } test { name: "single_unset" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{}.single_int32)" value { bool_value: false } } test { name: "single_set" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{single_int32: 16}.single_int32)" value { bool_value: true } } test { name: "single_set_to_default" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{single_int32: 0}.single_int32)" value { bool_value: false } } test { name: "single_message_unset" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{}.standalone_message)" value { bool_value: false } } test { name: "single_message_set" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{standalone_message: TestAllTypes.NestedMessage{bb: 123}}.standalone_message)" value { bool_value: true } } test { name: "single_message_set_to_default" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{standalone_message: TestAllTypes.NestedMessage{}}.standalone_message)" value { bool_value: true } } test { name: "single_enum_unset" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{}.standalone_enum)" value { bool_value: false } } test { name: "single_enum_set" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.BAR}.standalone_enum)" value { bool_value: true } } test { name: "single_enum_set_zero" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{standalone_enum: TestAllTypes.NestedEnum.FOO}.standalone_enum)" value { bool_value: false } } test { name: "oneof_unset" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{}.single_nested_message)" value { bool_value: false } } test { name: "oneof_other_set" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{single_nested_enum: TestAllTypes.NestedEnum.BAZ}.single_nested_message)" value { bool_value: false } } test { name: "oneof_set" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{single_nested_message: TestAllTypes.NestedMessage{}}.single_nested_message)" value { bool_value: true } } test { name: "oneof_set_default" - container: "google.api.expr.test.v1.proto3" + container: "cel.expr.conformance.proto3" expr: "has(TestAllTypes{single_nested_enum: TestAllTypes.NestedEnum.FOO}.single_nested_enum)" value { bool_value: true } } } +section { + name: "set_null" + test { + name: "single_message" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_nested_message: null} == TestAllTypes{}" + value: { bool_value: true } + } + test { + name: "single_any" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_any: null}.single_any" + value { null_value: NULL_VALUE } + } + test { + name: "single_value" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: null}.single_value" + value { null_value: NULL_VALUE } + } + test { + name: "single_duration" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_duration: null} == TestAllTypes{}" + value: { bool_value: true } + } + test { + name: "single_timestamp" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_timestamp: null} == TestAllTypes{}" + value: { bool_value: true } + } + test { + name: "single_scalar" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_bool: null} == TestAllTypes{}" + disable_check: true + eval_error: { + errors: { message: "unsupported field type" } + } + } + test { + name: "repeated" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{repeated_int32: null} == TestAllTypes{}" + disable_check: true + eval_error: { + errors: { message: "unsupported field type" } + } + } + test { + name: "map" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{map_string_string: null} == TestAllTypes{}" + disable_check: true + eval_error: { + errors: { message: "unsupported field type" } + } + } + test { + name: "list_value" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{list_value: null} == TestAllTypes{}" + disable_check: true + eval_error: { + errors: { message: "unsupported field type" } + } + } + test { + name: "single_struct" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_struct: null} == TestAllTypes{}" + disable_check: true + eval_error: { + errors: { message: "unsupported field type" } + } + } +} +section { + name: "quoted_fields" + test { + name: "set_field" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{`in`: true} == TestAllTypes{}" + value: { bool_value: false } + } + test { + name: "get_field" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{`in`: true}.`in`" + value: { bool_value: true } + } +} diff --git a/features/steps/integration_binding.py b/features/steps/integration_binding.py index 6990170..d07f86b 100644 --- a/features/steps/integration_binding.py +++ b/features/steps/integration_binding.py @@ -72,21 +72,12 @@ import celpy.celtypes import celpy.evaluation from celpy import CELEvalError, Environment +from celpy.celparser import CELParseError from celpy.celtypes import * logger = logging.getLogger(__name__) -class TypeKind(str, Enum): - PRIMITIVE = "primitive" - MAP_TYPE = "map_type" - STRING = "STRING" - INT64 = "INT64" - MAP_TYPE_SPEC = "map_type_spec" - ELEM_TYPE = "elem_type" - TYPE_SPEC = "type_spec" - - class Bindings(NamedTuple): bindings: List[Dict[str, Any]] @@ -341,78 +332,25 @@ class NestedMessage(celpy.celtypes.MessageType): """ pass -# From Protobuf definitions, these are the CEL types implement them. -TYPE_NAMES = { - "google.protobuf.Any": MessageType, - "google.protubuf.Any": MessageType, # Note spelling anomaly. - "google.protobuf.BoolValue": BoolType, - "google.protobuf.BytesValue": BytesType, - "google.protobuf.DoubleValue": DoubleType, - "google.protobuf.Duration": DurationType, - "google.protobuf.FloatValue": DoubleType, - "google.protobuf.Int32Value": IntType, - "google.protobuf.Int64Value": IntType, - "google.protobuf.ListValue": ListType, - "google.protobuf.StringValue": StringType, - "google.protobuf.Struct": MessageType, - "google.protobuf.Timestamp": TimestampType, - "google.protobuf.UInt32Value": UintType, - "google.protobuf.UInt64Value": UintType, - "google.protobuf.Value": MessageType, - "type": TypeType, - "list_type": ListType, - "map_type": MapType, - "map": MapType, - "list": ListType, - "string": StringType, - "bytes": BytesType, - "bool": BoolType, - "int": IntType, - "uint": UintType, - "double": DoubleType, - "null_type": NoneType, - "STRING": StringType, - "BOOL": BoolType, - "INT64": IntType, - "UINT64": UintType, - "INT32": IntType, - "UINT32": UintType, - "BYTES": BytesType, - "DOUBLE": DoubleType, -} @given(u'disable_check parameter is {disable_check}') def step_impl(context, disable_check): - context.data['disable_check'] = disable_check == "true" + context.data['disable_check'] = eval(disable_check) -@given(u'type_env parameter "{name}" is {type_env}') +@given(u'type_env parameter {name} is {type_env}') def step_impl(context, name, type_env): - """ - type_env has name and type information used to create the environment. - Generally, it should be one of the type names, e.g. ``INT64``. - These need to be mapped to celpy.celtypes types. - - Sometimes it already is a ``celpy.celtypes`` name. - """ - if type_env.startswith("celpy"): - context.data['type_env'][name] = eval(type_env) - if type_env.startswith('"'): - context.data['type_env'][name] = TYPE_NAMES[type_env[1:-1]] - else: - context.data['type_env'][name] = TYPE_NAMES[type_env] + context.data['type_env'][eval(name)] = eval(type_env) -@given(u'bindings parameter "{name}" is {binding}') +@given(u'bindings parameter {name} is {binding}') def step_impl(context, name, binding): - # Bindings is a Bindings literal value, interpret it to create a Value object. - new_binding = eval(binding) - context.data['bindings'][name] = new_binding + context.data['bindings'][eval(name)] = eval(binding) -@given(u'container is "{container}"') +@given(u'container is {container}') def step_impl(context, container): - context.data['container'] = container + context.data['container'] = eval(container) def cel(context): @@ -438,8 +376,13 @@ def cel(context): package=context.data['container'], annotations=context.data['type_env'], runner_class=context.data['runner']) - ast = env.compile(context.data['expr']) - prgm = env.program(ast) + try: + ast = env.compile(context.data['expr']) + prgm = env.program(ast) + except CELParseError as ex: + context.data['exc_info'] = sys.exc_info() + context.data['error'] = ex.args[0] + return None activation = context.data['bindings'] print(f"GIVEN activation={activation!r}") @@ -454,15 +397,9 @@ def cel(context): context.data['error'] = ex.args[0] -@when(u'CEL expression "{expr}" is evaluated') -def step_impl(context, expr): - context.data['expr'] = expr - cel(context) - - -@when(u'CEL expression \'{expr}\' is evaluated') +@when(u'CEL expression {expr} is evaluated') def step_impl(context, expr): - context.data['expr'] = expr + context.data['expr'] = eval(expr) cel(context) @@ -552,22 +489,14 @@ def error_category(text: str) -> ErrorCategory: print(f"***No error category for {text!r}***") return ErrorCategory.other -@then(u"eval_error is {quoted_text}") -def step_impl(context, quoted_text): - """Tests appear to have inconsistent identifcation for exceptions. - - Option 1 -- (default) any error will do. - - Option 2 -- exact match required. This can be difficult in a few cases. - Use -D match=exact to enable this - - """ - if quoted_text == "None": +@then(u"eval_error is {error_text}") +def step_impl(context, error_text): + error = eval(error_text) + if error is None: assert context.data['error'] is None, f"error not None in {context.data}" else: print(f"*** Analyzing context.data = {context.data!r}***") - text = quoted_text[1:-1] if quoted_text[0] in ["'", '"'] else quoted_text - expected_ec = error_category(text) + expected_ec = error_category(error) actual_ec = error_category(context.data['error'] or "") if context.config.userdata.get("match", "any") == "exact": assert expected_ec == actual_ec, f"{expected_ec} != {actual_ec} in {context.data}" diff --git a/features/string.feature b/features/string.feature index e284c8f..ca8afb0 100644 --- a/features/string.feature +++ b/features/string.feature @@ -1,344 +1,286 @@ - +@conformance Feature: string Tests for string and bytes operations. # size -- Tests for the size() function. -Scenario: empty - When CEL expression "size('')" is evaluated - # int64_value:0 - Then value is IntType(source=0) +Scenario: size/empty + When CEL expression "size('')" is evaluated + Then value is celpy.celtypes.IntType(source=0) -Scenario: one_ascii +Scenario: size/one_ascii When CEL expression "size('A')" is evaluated - # int64_value:1 - Then value is IntType(source=1) - + Then value is celpy.celtypes.IntType(source=1) -Scenario: one_unicode +Scenario: size/one_unicode When CEL expression "size('ΓΏ')" is evaluated - # int64_value:1 - Then value is IntType(source=1) + Then value is celpy.celtypes.IntType(source=1) - -Scenario: ascii +Scenario: size/ascii When CEL expression "size('four')" is evaluated - # int64_value:4 - Then value is IntType(source=4) - + Then value is celpy.celtypes.IntType(source=4) -Scenario: unicode +Scenario: size/unicode When CEL expression "size('πέντΡ')" is evaluated - # int64_value:5 - Then value is IntType(source=5) - + Then value is celpy.celtypes.IntType(source=5) -Scenario: bytes_empty +Scenario: size/bytes_empty When CEL expression "size(b'')" is evaluated - # int64_value:0 - Then value is IntType(source=0) + Then value is celpy.celtypes.IntType(source=0) - -Scenario: bytes +Scenario: size/bytes When CEL expression "size(b'abc')" is evaluated - # int64_value:3 - Then value is IntType(source=3) - + Then value is celpy.celtypes.IntType(source=3) # starts_with -- Tests for the startsWith() function. -Scenario: basic_true - When CEL expression "'foobar'.startsWith('foo')" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: starts_with/basic_true + When CEL expression "'foobar'.startsWith('foo')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: basic_false +Scenario: starts_with/basic_false When CEL expression "'foobar'.startsWith('bar')" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Then value is celpy.celtypes.BoolType(source=False) - -Scenario: empty_target +Scenario: starts_with/empty_target When CEL expression "''.startsWith('foo')" is evaluated - # bool_value:false - Then value is BoolType(source=False) - + Then value is celpy.celtypes.BoolType(source=False) -Scenario: empty_arg +Scenario: starts_with/empty_arg When CEL expression "'foobar'.startsWith('')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) -Scenario: empty_empty +Scenario: starts_with/empty_empty When CEL expression "''.startsWith('')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) - -Scenario: unicode +Scenario: starts_with/unicode When CEL expression "'Π·Π°Π²Ρ‚Ρ€Π°'.startsWith('Π·Π°')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: starts_with/unicode_smp + When CEL expression "'πŸ±πŸ˜€πŸ˜›'.startsWith('🐱')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) # ends_with -- Tests for the endsWith() function. -Scenario: basic_true - When CEL expression "'foobar'.endsWith('bar')" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: ends_with/basic_true + When CEL expression "'foobar'.endsWith('bar')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: basic_false +Scenario: ends_with/basic_false When CEL expression "'foobar'.endsWith('foo')" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Then value is celpy.celtypes.BoolType(source=False) - -Scenario: empty_target +Scenario: ends_with/empty_target When CEL expression "''.endsWith('foo')" is evaluated - # bool_value:false - Then value is BoolType(source=False) - + Then value is celpy.celtypes.BoolType(source=False) -Scenario: empty_arg +Scenario: ends_with/empty_arg When CEL expression "'foobar'.endsWith('')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) -Scenario: empty_empty +Scenario: ends_with/empty_empty When CEL expression "''.endsWith('')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) - -Scenario: unicode +Scenario: ends_with/unicode When CEL expression "'fortΓ©'.endsWith('tΓ©')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: ends_with/unicode_smp + When CEL expression "'πŸ±πŸ˜€πŸ˜›'.endsWith('πŸ˜›')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) # matches -- Tests for regexp matching. For now, we will only test the subset of regular languages. -Scenario: basic - When CEL expression "'hubba'.matches('ubb')" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: matches/basic + When CEL expression "'hubba'.matches('ubb')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: empty_target +Scenario: matches/empty_target When CEL expression "''.matches('foo|bar')" is evaluated - # bool_value:false - Then value is BoolType(source=False) - + Then value is celpy.celtypes.BoolType(source=False) -Scenario: empty_arg +Scenario: matches/empty_arg When CEL expression "'cows'.matches('')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) -Scenario: empty_empty +Scenario: matches/empty_empty When CEL expression "''.matches('')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) - -Scenario: re_concat +Scenario: matches/re_concat When CEL expression "'abcd'.matches('bc')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) -Scenario: re_alt +Scenario: matches/re_alt When CEL expression "'grey'.matches('gr(a|e)y')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) - -Scenario: re_rep +Scenario: matches/re_rep When CEL expression "'banana'.matches('ba(na)*')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) -Scenario: unicode +Scenario: matches/unicode When CEL expression "'maΓ±ana'.matches('a+Γ±+a+')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) +Scenario: matches/unicode_smp + When CEL expression "'πŸ±πŸ˜€πŸ˜€'.matches('(a|πŸ˜€){2}')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -# concatentation -- Tests for string concatenation. -Scenario: concat_true +# concatenation -- Tests for string concatenation. - When CEL expression "'he' + 'llo'" is evaluated - # string_value:"hello" - Then value is StringType(source='hello') +Scenario: concatenation/concat_true -Scenario: concat_with_spaces + When CEL expression "'he' + 'llo'" is evaluated + Then value is celpy.celtypes.StringType(source='hello') - When CEL expression "'hello' + ' ' == 'hello'" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: concatenation/concat_with_spaces + When CEL expression "'hello' + ' ' == 'hello'" is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: concat_empty_string_beginning +Scenario: concatenation/concat_empty_string_beginning When CEL expression "'' + 'abc'" is evaluated - # string_value:"abc" - Then value is StringType(source='abc') - + Then value is celpy.celtypes.StringType(source='abc') -Scenario: concat_empty_string_end +Scenario: concatenation/concat_empty_string_end When CEL expression "'abc' + ''" is evaluated - # string_value:"abc" - Then value is StringType(source='abc') + Then value is celpy.celtypes.StringType(source='abc') - -Scenario: concat_empty_with_empty +Scenario: concatenation/concat_empty_with_empty When CEL expression "'' + ''" is evaluated - # string_value:"" - Then value is StringType(source='') - + Then value is celpy.celtypes.StringType(source='') -Scenario: unicode_unicode +Scenario: concatenation/unicode_unicode When CEL expression "'Β’' + 'ΓΏ' + 'Θ€'" is evaluated - # string_value:"Β’ΓΏΘ€" - Then value is StringType(source='Β’ΓΏΘ€') + Then value is celpy.celtypes.StringType(source='Β’ΓΏΘ€') - -Scenario: ascii_unicode +Scenario: concatenation/ascii_unicode When CEL expression "'r' + 'Γ΄' + 'le'" is evaluated - # string_value:"rΓ΄le" - Then value is StringType(source='rΓ΄le') + Then value is celpy.celtypes.StringType(source='rΓ΄le') +Scenario: concatenation/ascii_unicode_unicode_smp -Scenario: empty_unicode + When CEL expression "'a' + 'ΓΏ' + '🐱'" is evaluated + Then value is celpy.celtypes.StringType(source='aÿ🐱') - When CEL expression "'' + 'Ξ©' + ''" is evaluated - # string_value:"Ξ©" - Then value is StringType(source='Ξ©') +Scenario: concatenation/empty_unicode + When CEL expression "'' + 'Ξ©' + ''" is evaluated + Then value is celpy.celtypes.StringType(source='Ξ©') # contains -- Tests for contains. -Scenario: contains_true - When CEL expression "'hello'.contains('he')" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: contains/contains_true + When CEL expression "'hello'.contains('he')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: contains_empty +Scenario: contains/contains_empty When CEL expression "'hello'.contains('')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) - -Scenario: contains_false +Scenario: contains/contains_false When CEL expression "'hello'.contains('ol')" is evaluated - # bool_value:false - Then value is BoolType(source=False) - + Then value is celpy.celtypes.BoolType(source=False) -Scenario: contains_multiple +Scenario: contains/contains_multiple When CEL expression "'abababc'.contains('ababc')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) - -Scenario: contains_unicode +Scenario: contains/contains_unicode When CEL expression "'Straße'.contains('aß')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) +Scenario: contains/contains_unicode_smp -Scenario: empty_contains + When CEL expression "'πŸ±πŸ˜€πŸ˜'.contains('πŸ˜€')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "''.contains('something')" is evaluated - # bool_value:false - Then value is BoolType(source=False) +Scenario: contains/empty_contains + When CEL expression "''.contains('something')" is evaluated + Then value is celpy.celtypes.BoolType(source=False) -Scenario: empty_empty +Scenario: contains/empty_empty When CEL expression "''.contains('')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) # bytes_concat -- Tests for bytes concatenation. -Scenario: concat - - When CEL expression "b'abc' + b'def'" is evaluated - # bytes_value:"abcdef" - Then value is BytesType(source=b'abcdef') +Scenario: bytes_concat/concat -Scenario: left_unit + When CEL expression "b'abc' + b'def'" is evaluated + Then value is celpy.celtypes.BytesType(source=b'abcdef') - When CEL expression "b'' + b'\xffoo'" is evaluated - # bytes_value:"\xffoo" - Then value is BytesType(source=b'\xffoo') +Scenario: bytes_concat/left_unit + When CEL expression "b'' + b'\\xffoo'" is evaluated + Then value is celpy.celtypes.BytesType(source=b'\xffoo') -Scenario: right_unit +Scenario: bytes_concat/right_unit When CEL expression "b'zxy' + b''" is evaluated - # bytes_value:"zxy" - Then value is BytesType(source=b'zxy') - + Then value is celpy.celtypes.BytesType(source=b'zxy') -Scenario: empty_empty +Scenario: bytes_concat/empty_empty When CEL expression "b'' + b''" is evaluated - # bytes_value:"" - Then value is BytesType(source=b'') + Then value is celpy.celtypes.BytesType(source=b'') + diff --git a/features/string.textproto b/features/string.textproto index 10d4142..3571b11 100644 --- a/features/string.textproto +++ b/features/string.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: google.api.expr.test.v1.SimpleTestFile + name: "string" description: "Tests for string and bytes operations." section { @@ -72,6 +75,11 @@ section { expr: "'Π·Π°Π²Ρ‚Ρ€Π°'.startsWith('Π·Π°')" value: { bool_value: true } } + test { + name: "unicode_smp" + expr: "'\U0001F431\U0001F600\U0001F61B'.startsWith('\U0001F431')" + value: { bool_value: true } + } } section { name: "ends_with" @@ -106,6 +114,11 @@ section { expr: "'fortΓ©'.endsWith('tΓ©')" value: { bool_value: true } } + test { + name: "unicode_smp" + expr: "'\U0001F431\U0001F600\U0001F61B'.endsWith('\U0001F61B')" + value: { bool_value: true } + } } section { name: "matches" @@ -150,19 +163,24 @@ section { expr: "'maΓ±ana'.matches('a+Γ±+a+')" value: { bool_value: true } } + test { + name: "unicode_smp" + expr: "'\U0001F431\U0001F600\U0001F600'.matches('(a|\U0001F600){2}')" + value: { bool_value: true } + } } section { - name: "concatentation" + name: "concatenation" description: "Tests for string concatenation." test { name: "concat_true" expr: "'he' + 'llo'" - value: { string_value: "hello"} + value: { string_value: "hello" } } test { name: "concat_with_spaces" expr: "'hello' + ' ' == 'hello'" - value: { bool_value: false} + value: { bool_value: false } } test { name: "concat_empty_string_beginning" @@ -189,6 +207,11 @@ section { expr: "'r' + 'Γ΄' + 'le'" value: { string_value: "rΓ΄le" } } + test { + name: "ascii_unicode_unicode_smp" + expr: "'a' + 'ΓΏ' + '\U0001F431'" + value: { string_value: "aΓΏ\xf0\x9f\x90\xb1" } + } test { name: "empty_unicode" expr: "'' + 'Ξ©' + ''" @@ -223,6 +246,11 @@ section { expr: "'Straße'.contains('aß')" value: { bool_value: true } } + test { + name: "contains_unicode_smp" + expr: "'\U0001F431\U0001F600\U0001F601'.contains('\U0001F600')" + value: { bool_value: true } + } test { name: "empty_contains" expr: "''.contains('something')" diff --git a/features/string_ext.feature b/features/string_ext.feature new file mode 100644 index 0000000..320bf86 --- /dev/null +++ b/features/string_ext.feature @@ -0,0 +1,1268 @@ +@conformance +Feature: string_ext + Tests for the strings extension library. + +# char_at -- + + +@wip +Scenario: char_at/middle_index + + When CEL expression "'tacocat'.charAt(3)" is evaluated + Then value is celpy.celtypes.StringType(source='o') + +@wip +Scenario: char_at/end_index + + When CEL expression "'tacocat'.charAt(7)" is evaluated + Then value is celpy.celtypes.StringType(source='') + +@wip +Scenario: char_at/multiple + + When CEL expression "'©αT'.charAt(0) == 'Β©' && '©αT'.charAt(1) == 'Ξ±' && '©αT'.charAt(2) == 'T'" is evaluated + Then none is None + + +# index_of -- + + +@wip +Scenario: index_of/empty_index + + When CEL expression "'tacocat'.indexOf('')" is evaluated + Then value is celpy.celtypes.IntType(source=0) + +@wip +Scenario: index_of/string_index + + When CEL expression "'tacocat'.indexOf('ac')" is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: index_of/nomatch + + When CEL expression "'tacocat'.indexOf('none') == -1" is evaluated + Then none is None + +@wip +Scenario: index_of/empty_index + + When CEL expression "'tacocat'.indexOf('', 3) == 3" is evaluated + Then none is None + +@wip +Scenario: index_of/char_index + + When CEL expression "'tacocat'.indexOf('a', 3) == 5" is evaluated + Then none is None + +@wip +Scenario: index_of/string_index + + When CEL expression "'tacocat'.indexOf('at', 3) == 5" is evaluated + Then none is None + +@wip +Scenario: index_of/unicode_char + + When CEL expression "'taΒ©o©αT'.indexOf('Β©') == 2" is evaluated + Then none is None + +@wip +Scenario: index_of/unicode_char_index + + When CEL expression "'taΒ©o©αT'.indexOf('Β©', 3) == 4" is evaluated + Then none is None + +@wip +Scenario: index_of/unicode_string_index + + When CEL expression "'taΒ©o©αT'.indexOf('©αT', 3) == 4" is evaluated + Then none is None + +@wip +Scenario: index_of/unicode_string_nomatch_index + + When CEL expression "'taΒ©o©αT'.indexOf('©α', 5) == -1" is evaluated + Then none is None + +@wip +Scenario: index_of/char_index + + When CEL expression "'ijk'.indexOf('k') == 2" is evaluated + Then none is None + +@wip +Scenario: index_of/string_with_space_fullmatch + + When CEL expression "'hello wello'.indexOf('hello wello') == 0" is evaluated + Then none is None + +@wip +Scenario: index_of/string_with_space_index + + When CEL expression "'hello wello'.indexOf('ello', 6) == 7" is evaluated + Then none is None + +@wip +Scenario: index_of/string_nomatch_index + + When CEL expression "'hello wello'.indexOf('elbo room!!') == -1" is evaluated + Then none is None + + +# last_index_of -- + + +@wip +Scenario: last_index_of/empty + + When CEL expression "'tacocat'.lastIndexOf('') == 7" is evaluated + Then none is None + +@wip +Scenario: last_index_of/string + + When CEL expression "'tacocat'.lastIndexOf('at') == 5" is evaluated + Then none is None + +@wip +Scenario: last_index_of/string_nomatch + + When CEL expression "'tacocat'.lastIndexOf('none') == -1" is evaluated + Then none is None + +@wip +Scenario: last_index_of/empty_index + + When CEL expression "'tacocat'.lastIndexOf('', 3) == 3" is evaluated + Then none is None + +@wip +Scenario: last_index_of/char_index + + When CEL expression "'tacocat'.lastIndexOf('a', 3) == 1" is evaluated + Then none is None + +@wip +Scenario: last_index_of/unicode_char + + When CEL expression "'taΒ©o©αT'.lastIndexOf('Β©') == 4" is evaluated + Then none is None + +@wip +Scenario: last_index_of/unicode_char_index + + When CEL expression "'taΒ©o©αT'.lastIndexOf('Β©', 3) == 2" is evaluated + Then none is None + +@wip +Scenario: last_index_of/unicode_string_index + + When CEL expression "'taΒ©o©αT'.lastIndexOf('©α', 4) == 4" is evaluated + Then none is None + +@wip +Scenario: last_index_of/string_with_space_string_index + + When CEL expression "'hello wello'.lastIndexOf('ello', 6) == 1" is evaluated + Then none is None + +@wip +Scenario: last_index_of/string_with_space_string_nomatch + + When CEL expression "'hello wello'.lastIndexOf('low') == -1" is evaluated + Then none is None + +@wip +Scenario: last_index_of/string_with_space_string_with_space_nomatch + + When CEL expression "'hello wello'.lastIndexOf('elbo room!!') == -1" is evaluated + Then none is None + +@wip +Scenario: last_index_of/string_with_space_fullmatch + + When CEL expression "'hello wello'.lastIndexOf('hello wello') == 0" is evaluated + Then none is None + +@wip +Scenario: last_index_of/repeated_string + + When CEL expression "'bananananana'.lastIndexOf('nana', 7) == 6" is evaluated + Then none is None + + +# ascii_casing -- + + +@wip +Scenario: ascii_casing/lowerascii + + When CEL expression "'TacoCat'.lowerAscii() == 'tacocat'" is evaluated + Then none is None + +@wip +Scenario: ascii_casing/lowerascii_unicode + + When CEL expression "'TacoCΓ†t'.lowerAscii() == 'tacocΓ†t'" is evaluated + Then none is None + +@wip +Scenario: ascii_casing/lowerascii_unicode_with_space + + When CEL expression "'TacoCΓ†t Xii'.lowerAscii() == 'tacocΓ†t xii'" is evaluated + Then none is None + +@wip +Scenario: ascii_casing/upperascii + + When CEL expression "'tacoCat'.upperAscii() == 'TACOCAT'" is evaluated + Then none is None + +@wip +Scenario: ascii_casing/upperascii_unicode + + When CEL expression "'tacoCΞ±t'.upperAscii() == 'TACOCΞ±T'" is evaluated + Then none is None + +@wip +Scenario: ascii_casing/upperascii_unicode_with_space + + When CEL expression "'TacoCΓ†t Xii'.upperAscii() == 'TACOCΓ†T XII'" is evaluated + Then none is None + + +# replace -- + + +@wip +Scenario: replace/no_placeholder + + When CEL expression "'12 days 12 hours'.replace('{0}', '2') == '12 days 12 hours'" is evaluated + Then none is None + +@wip +Scenario: replace/basic + + When CEL expression "'{0} days {0} hours'.replace('{0}', '2') == '2 days 2 hours'" is evaluated + Then none is None + +@wip +Scenario: replace/chained + + When CEL expression "'{0} days {0} hours'.replace('{0}', '2', 1).replace('{0}', '23') == '2 days 23 hours'" is evaluated + Then none is None + +@wip +Scenario: replace/unicode + + When CEL expression "'1 ©αT taco'.replace('Ξ±T', 'o©α') == '1 Β©o©α taco'" is evaluated + Then none is None + + +# split -- + + +@wip +Scenario: split/empty + + When CEL expression "'hello world'.split(' ') == ['hello', 'world']" is evaluated + Then none is None + +@wip +Scenario: split/zero_limit + + When CEL expression "'hello world events!'.split(' ', 0) == []" is evaluated + Then none is None + +@wip +Scenario: split/one_limit + + When CEL expression "'hello world events!'.split(' ', 1) == ['hello world events!']" is evaluated + Then none is None + +@wip +Scenario: split/unicode_negative_limit + + When CEL expression "'oΒ©oΒ©oΒ©o'.split('Β©', -1) == ['o', 'o', 'o', 'o']" is evaluated + Then none is None + + +# substring -- + + +@wip +Scenario: substring/start + + When CEL expression "'tacocat'.substring(4) == 'cat'" is evaluated + Then none is None + +@wip +Scenario: substring/start_with_max_length + + When CEL expression "'tacocat'.substring(7) == ''" is evaluated + Then none is None + +@wip +Scenario: substring/start_and_end + + When CEL expression "'tacocat'.substring(0, 4) == 'taco'" is evaluated + Then none is None + +@wip +Scenario: substring/start_and_end_equal_value + + When CEL expression "'tacocat'.substring(4, 4) == ''" is evaluated + Then none is None + +@wip +Scenario: substring/unicode_start_and_end + + When CEL expression "'taΒ©o©αT'.substring(2, 6) == 'Β©o©α'" is evaluated + Then none is None + +@wip +Scenario: substring/unicode_start_and_end_equal_value + + When CEL expression "'taΒ©o©αT'.substring(7, 7) == ''" is evaluated + Then none is None + + +# trim -- + + +@wip +Scenario: trim/blank_spaces_escaped_chars + + When CEL expression "' \\f\\n\\r\\t\\vtext '.trim() == 'text'" is evaluated + Then none is None + +@wip +Scenario: trim/unicode_space_chars_1 + + When CEL expression "'\\u0085\\u00a0\\u1680text'.trim() == 'text'" is evaluated + Then none is None + +@wip +Scenario: trim/unicode_space_chars_2 + + When CEL expression "'text\\u2000\\u2001\\u2002\\u2003\\u2004\\u2004\\u2006\\u2007\\u2008\\u2009'.trim() == 'text'" is evaluated + Then none is None + +@wip +Scenario: trim/unicode_space_chars_3 + + When CEL expression "'\\u200atext\\u2028\\u2029\\u202F\\u205F\\u3000'.trim() == 'text'" is evaluated + Then none is None + +@wip +Scenario: trim/unicode_no_trim + + When CEL expression "'\\u180etext\\u200b\\u200c\\u200d\\u2060\\ufeff'.trim() == '\\u180etext\\u200b\\u200c\\u200d\\u2060\\ufeff'" is evaluated + Then none is None + + +# join -- + + +@wip +Scenario: join/empty_separator + + When CEL expression "['x', 'y'].join() == 'xy'" is evaluated + Then none is None + +@wip +Scenario: join/dash_separator + + When CEL expression "['x', 'y'].join('-') == 'x-y'" is evaluated + Then none is None + +@wip +Scenario: join/empty_string_empty_separator + + When CEL expression "[].join() == ''" is evaluated + Then none is None + +@wip +Scenario: join/empty_string_dash_separator + + When CEL expression "[].join('-') == ''" is evaluated + Then none is None + + +# quote -- + + +@wip +Scenario: quote/multiline + + When CEL expression 'strings.quote("first\\nsecond") == "\\"first\\\\nsecond\\""' is evaluated + Then none is None + +@wip +Scenario: quote/escaped + + When CEL expression 'strings.quote("bell\\a") == "\\"bell\\\\a\\""' is evaluated + Then none is None + +@wip +Scenario: quote/backspace + + When CEL expression 'strings.quote("\\bbackspace") == "\\"\\\\bbackspace\\""' is evaluated + Then none is None + +@wip +Scenario: quote/form_feed + + When CEL expression 'strings.quote("\\fform feed") == "\\"\\\\fform feed\\""' is evaluated + Then none is None + +@wip +Scenario: quote/carriage_return + + When CEL expression 'strings.quote("carriage \\r return") == "\\"carriage \\\\r return\\""' is evaluated + Then none is None + +@wip +Scenario: quote/horizontal_tab + + When CEL expression 'strings.quote("horizontal tab\\t") == "\\"horizontal tab\\\\t\\""' is evaluated + Then none is None + +@wip +Scenario: quote/vertical_tab + + When CEL expression 'strings.quote("vertical \\v tab") == "\\"vertical \\\\v tab\\""' is evaluated + Then none is None + +@wip +Scenario: quote/double_slash + + When CEL expression 'strings.quote("double \\\\\\\\ slash") == "\\"double \\\\\\\\\\\\\\\\ slash\\""' is evaluated + Then none is None + +@wip +Scenario: quote/two_escape_sequences + + When CEL expression 'strings.quote("two escape sequences \\\\a\\\\n") == "\\"two escape sequences \\\\\\\\a\\\\\\\\n\\""' is evaluated + Then none is None + +@wip +Scenario: quote/verbatim + + When CEL expression 'strings.quote("verbatim") == "\\"verbatim\\""' is evaluated + Then none is None + +@wip +Scenario: quote/ends_with + + When CEL expression 'strings.quote("ends with \\\\") == "\\"ends with \\\\\\\\\\""' is evaluated + Then none is None + +@wip +Scenario: quote/starts_with + + When CEL expression 'strings.quote("\\\\ starts with") == "\\"\\\\\\\\ starts with\\""' is evaluated + Then none is None + +@wip +Scenario: quote/printable_unicode + + When CEL expression 'strings.quote("printable unicodeπŸ˜€") == "\\"printable unicodeπŸ˜€\\""' is evaluated + Then none is None + +@wip +Scenario: quote/mid_string_quote + + When CEL expression 'strings.quote("mid string \\" quote") == "\\"mid string \\\\\\" quote\\""' is evaluated + Then none is None + +@wip +Scenario: quote/single_quote_with_double_quote + + When CEL expression 'strings.quote(\'single-quote with "double quote"\') == "\\"single-quote with \\\\\\"double quote\\\\\\"\\""' is evaluated + Then none is None + +@wip +Scenario: quote/size_unicode_char + + When CEL expression 'strings.quote("size(\'ΓΏ\')") == "\\"size(\'ΓΏ\')\\""' is evaluated + Then none is None + +@wip +Scenario: quote/size_unicode_string + + When CEL expression 'strings.quote("size(\'πέντΡ\')") == "\\"size(\'πέντΡ\')\\""' is evaluated + Then none is None + +@wip +Scenario: quote/unicode + + When CEL expression 'strings.quote("Π·Π°Π²Ρ‚Ρ€Π°") == "\\"Π·Π°Π²Ρ‚Ρ€Π°\\""' is evaluated + Then none is None + +@wip +Scenario: quote/unicode_code_points + + When CEL expression 'strings.quote("\\U0001F431\\U0001F600\\U0001F61B")' is evaluated + Then value is celpy.celtypes.StringType(source='"πŸ±πŸ˜€πŸ˜›"') + +@wip +Scenario: quote/unicode_2 + + When CEL expression 'strings.quote("taΒ©o©αT") == "\\"taΒ©o©αT\\""' is evaluated + Then none is None + +@wip +Scenario: quote/empty_quote + + When CEL expression 'strings.quote("")' is evaluated + Then value is celpy.celtypes.StringType(source='""') + + +# format -- + + +@wip +Scenario: format/no-op + + When CEL expression '"no substitution".format([])' is evaluated + Then value is celpy.celtypes.StringType(source='no substitution') + +@wip +Scenario: format/mid-string substitution + + When CEL expression '"str is %s and some more".format(["filler"])' is evaluated + Then value is celpy.celtypes.StringType(source='str is filler and some more') + +@wip +Scenario: format/percent escaping + + When CEL expression '"%% and also %%".format([])' is evaluated + Then value is celpy.celtypes.StringType(source='% and also %') + +@wip +Scenario: format/substitution inside escaped percent signs + + When CEL expression '"%%%s%%".format(["text"])' is evaluated + Then value is celpy.celtypes.StringType(source='%text%') + +@wip +Scenario: format/substitution with one escaped percent sign on the right + + When CEL expression '"%s%%".format(["percent on the right"])' is evaluated + Then value is celpy.celtypes.StringType(source='percent on the right%') + +@wip +Scenario: format/substitution with one escaped percent sign on the left + + When CEL expression '"%%%s".format(["percent on the left"])' is evaluated + Then value is celpy.celtypes.StringType(source='%percent on the left') + +@wip +Scenario: format/multiple substitutions + + When CEL expression '"%d %d %d, %s %s %s, %d %d %d, %s %s %s".format([1, 2, 3, "A", "B", "C", 4, 5, 6, "D", "E", "F"])' is evaluated + Then value is celpy.celtypes.StringType(source='1 2 3, A B C, 4 5 6, D E F') + +@wip +Scenario: format/percent sign escape sequence support + + When CEL expression '"%%escaped %s%%".format(["percent"])' is evaluated + Then value is celpy.celtypes.StringType(source='%escaped percent%') + +@wip +Scenario: format/fixed point formatting clause + + When CEL expression '"%.3f".format([1.2345])' is evaluated + Then value is celpy.celtypes.StringType(source='1.234') + +@wip +Scenario: format/binary formatting clause + + When CEL expression '"this is 5 in binary: %b".format([5])' is evaluated + Then value is celpy.celtypes.StringType(source='this is 5 in binary: 101') + +@wip +Scenario: format/uint support for binary formatting + + When CEL expression '"unsigned 64 in binary: %b".format([uint(64)])' is evaluated + Then value is celpy.celtypes.StringType(source='unsigned 64 in binary: 1000000') + +@wip +Scenario: format/bool support for binary formatting + + When CEL expression '"bit set from bool: %b".format([true])' is evaluated + Then value is celpy.celtypes.StringType(source='bit set from bool: 1') + +@wip +Scenario: format/octal formatting clause + + When CEL expression '"%o".format([11])' is evaluated + Then value is celpy.celtypes.StringType(source='13') + +@wip +Scenario: format/uint support for octal formatting clause + + When CEL expression '"this is an unsigned octal: %o".format([uint(65535)])' is evaluated + Then value is celpy.celtypes.StringType(source='this is an unsigned octal: 177777') + +@wip +Scenario: format/lowercase hexadecimal formatting clause + + When CEL expression '"%x is 20 in hexadecimal".format([30])' is evaluated + Then value is celpy.celtypes.StringType(source='1e is 20 in hexadecimal') + +@wip +Scenario: format/uppercase hexadecimal formatting clause + + When CEL expression '"%X is 20 in hexadecimal".format([30])' is evaluated + Then value is celpy.celtypes.StringType(source='1E is 20 in hexadecimal') + +@wip +Scenario: format/unsigned support for hexadecimal formatting clause + + When CEL expression '"%X is 6000 in hexadecimal".format([uint(6000)])' is evaluated + Then value is celpy.celtypes.StringType(source='1770 is 6000 in hexadecimal') + +@wip +Scenario: format/string support with hexadecimal formatting clause + + When CEL expression '"%x".format(["Hello world!"])' is evaluated + Then value is celpy.celtypes.StringType(source='48656c6c6f20776f726c6421') + +@wip +Scenario: format/string support with uppercase hexadecimal formatting clause + + When CEL expression '"%X".format(["Hello world!"])' is evaluated + Then value is celpy.celtypes.StringType(source='48656C6C6F20776F726C6421') + +@wip +Scenario: format/byte support with hexadecimal formatting clause + + When CEL expression '"%x".format([b"byte string"])' is evaluated + Then value is celpy.celtypes.StringType(source='6279746520737472696e67') + +@wip +Scenario: format/byte support with uppercase hexadecimal formatting clause + + When CEL expression '"%X".format([b"byte string"])' is evaluated + Then value is celpy.celtypes.StringType(source='6279746520737472696E67') + +@wip +Scenario: format/scientific notation formatting clause + + When CEL expression '"%.6e".format([1052.032911275])' is evaluated + Then value is celpy.celtypes.StringType(source='1.052033e+03') + +@wip +Scenario: format/default precision for fixed-point clause + + When CEL expression '"%f".format([2.71828])' is evaluated + Then value is celpy.celtypes.StringType(source='2.718280') + +@wip +Scenario: format/default precision for scientific notation + + When CEL expression '"%e".format([2.71828])' is evaluated + Then value is celpy.celtypes.StringType(source='2.718280e+00') + +@wip +Scenario: format/NaN support for scientific notation + + When CEL expression '"%e".format([double("NaN")])' is evaluated + Then value is celpy.celtypes.StringType(source='NaN') + +@wip +Scenario: format/positive infinity support for scientific notation + + When CEL expression '"%e".format([double("Infinity")])' is evaluated + Then value is celpy.celtypes.StringType(source='Infinity') + +@wip +Scenario: format/negative infinity support for scientific notation + + When CEL expression '"%e".format([double("-Infinity")])' is evaluated + Then value is celpy.celtypes.StringType(source='-Infinity') + +@wip +Scenario: format/NaN support for decimal + + When CEL expression '"%d".format([double("NaN")])' is evaluated + Then value is celpy.celtypes.StringType(source='NaN') + +@wip +Scenario: format/positive infinity support for decimal + + When CEL expression '"%d".format([double("Infinity")])' is evaluated + Then value is celpy.celtypes.StringType(source='Infinity') + +@wip +Scenario: format/negative infinity support for decimal + + When CEL expression '"%d".format([double("-Infinity")])' is evaluated + Then value is celpy.celtypes.StringType(source='-Infinity') + +@wip +Scenario: format/NaN support for fixed-point + + When CEL expression '"%f".format([double("NaN")])' is evaluated + Then value is celpy.celtypes.StringType(source='NaN') + +@wip +Scenario: format/positive infinity support for fixed-point + + When CEL expression '"%f".format([double("Infinity")])' is evaluated + Then value is celpy.celtypes.StringType(source='Infinity') + +@wip +Scenario: format/negative infinity support for fixed-point + + When CEL expression '"%f".format([double("-Infinity")])' is evaluated + Then value is celpy.celtypes.StringType(source='-Infinity') + +@wip +Scenario: format/uint support for decimal clause + + When CEL expression '"%d".format([uint(64)])' is evaluated + Then value is celpy.celtypes.StringType(source='64') + +@wip +Scenario: format/null support for string + + When CEL expression '"%s".format([null])' is evaluated + Then value is celpy.celtypes.StringType(source='null') + +@wip +Scenario: format/int support for string + + When CEL expression '"%s".format([999999999999])' is evaluated + Then value is celpy.celtypes.StringType(source='999999999999') + +@wip +Scenario: format/bytes support for string + + When CEL expression '"%s".format([b"xyz"])' is evaluated + Then value is celpy.celtypes.StringType(source='xyz') + +@wip +Scenario: format/type() support for string + + When CEL expression '"%s".format([type("test string")])' is evaluated + Then value is celpy.celtypes.StringType(source='string') + +@wip +Scenario: format/timestamp support for string + + When CEL expression '"%s".format([timestamp("2023-02-03T23:31:20+00:00")])' is evaluated + Then value is celpy.celtypes.StringType(source='2023-02-03T23:31:20Z') + +@wip +Scenario: format/duration support for string + + When CEL expression '"%s".format([duration("1h45m47s")])' is evaluated + Then value is celpy.celtypes.StringType(source='6347s') + +@wip +Scenario: format/list support for string + + When CEL expression '"%s".format([["abc", 3.14, null, [9, 8, 7, 6], timestamp("2023-02-03T23:31:20Z")]])' is evaluated + Then value is celpy.celtypes.StringType(source='[abc, 3.14, null, [9, 8, 7, 6], 2023-02-03T23:31:20Z]') + +@wip +Scenario: format/map support for string + + When CEL expression '"%s".format([{"key1": b"xyz", "key5": null, "key2": duration("2h"), "key4": true, "key3": 2.71828}])' is evaluated + Then value is celpy.celtypes.StringType(source='{key1: xyz, key2: 7200s, key3: 2.71828, key4: true, key5: null}') + +@wip +Scenario: format/map support (all key types) + + When CEL expression '"%s".format([{1: "value1", uint(2): "value2", true: double("NaN")}])' is evaluated + Then value is celpy.celtypes.StringType(source='{1: value1, 2: value2, true: NaN}') + +@wip +Scenario: format/boolean support for %s + + When CEL expression '"%s, %s".format([true, false])' is evaluated + Then value is celpy.celtypes.StringType(source='true, false') + +@wip +Scenario: format/dyntype support for string formatting clause + + When CEL expression '"%s".format([dyn("a string")])' is evaluated + Then value is celpy.celtypes.StringType(source='a string') + +@wip +Scenario: format/dyntype support for numbers with string formatting clause + + When CEL expression '"%s, %s".format([dyn(32), dyn(56.8)])' is evaluated + Then value is celpy.celtypes.StringType(source='32, 56.8') + +@wip +Scenario: format/dyntype support for integer formatting clause + + When CEL expression '"%d".format([dyn(128)])' is evaluated + Then value is celpy.celtypes.StringType(source='128') + +@wip +Scenario: format/dyntype support for integer formatting clause (unsigned) + + When CEL expression '"%d".format([dyn(256u)])' is evaluated + Then value is celpy.celtypes.StringType(source='256') + +@wip +Scenario: format/dyntype support for hex formatting clause + + When CEL expression '"%x".format([dyn(22)])' is evaluated + Then value is celpy.celtypes.StringType(source='16') + +@wip +Scenario: format/dyntype support for hex formatting clause (uppercase) + + When CEL expression '"%X".format([dyn(26)])' is evaluated + Then value is celpy.celtypes.StringType(source='1A') + +@wip +Scenario: format/dyntype support for unsigned hex formatting clause + + When CEL expression '"%x".format([dyn(500u)])' is evaluated + Then value is celpy.celtypes.StringType(source='1f4') + +@wip +Scenario: format/dyntype support for fixed-point formatting clause + + When CEL expression '"%.3f".format([dyn(4.5)])' is evaluated + Then value is celpy.celtypes.StringType(source='4.500') + +@wip +Scenario: format/dyntype support for scientific notation + + When CEL expression '"%e".format([dyn(2.71828)])' is evaluated + Then value is celpy.celtypes.StringType(source='2.718280e+00') + +@wip +Scenario: format/dyntype NaN/infinity support + + When CEL expression '"%s".format([[double("NaN"), double("Infinity"), double("-Infinity")]])' is evaluated + Then value is celpy.celtypes.StringType(source='[NaN, Infinity, -Infinity]') + +@wip +Scenario: format/dyntype support for timestamp + + When CEL expression '"%s".format([dyn(timestamp("2009-11-10T23:00:00Z"))])' is evaluated + Then value is celpy.celtypes.StringType(source='2009-11-10T23:00:00Z') + +@wip +Scenario: format/dyntype support for duration + + When CEL expression '"%s".format([dyn(duration("8747s"))])' is evaluated + Then value is celpy.celtypes.StringType(source='8747s') + +@wip +Scenario: format/dyntype support for lists + + When CEL expression '"%s".format([dyn([6, 4.2, "a string"])])' is evaluated + Then value is celpy.celtypes.StringType(source='[6, 4.2, a string]') + +@wip +Scenario: format/dyntype support for maps + + When CEL expression '"%s".format([{"strKey":"x", 6:duration("422s"), true:42}])' is evaluated + Then value is celpy.celtypes.StringType(source='{6: 422s, strKey: x, true: 42}') + +@wip +Scenario: format/string substitution in a string variable + + Given type_env parameter "str_var" is celpy.celtypes.StringType + and bindings parameter "str_var" is celpy.celtypes.StringType(source='%s') + When CEL expression 'str_var.format(["filler"])' is evaluated + Then value is celpy.celtypes.StringType(source='filler') + +@wip +Scenario: format/multiple substitutions in a string variable + + Given type_env parameter "str_var" is celpy.celtypes.StringType + and bindings parameter "str_var" is celpy.celtypes.StringType(source='%d %d %d, %s %s %s, %d %d %d, %s %s %s') + When CEL expression 'str_var.format([1, 2, 3, "A", "B", "C", 4, 5, 6, "D", "E", "F"])' is evaluated + Then value is celpy.celtypes.StringType(source='1 2 3, A B C, 4 5 6, D E F') + +@wip +Scenario: format/substitution inside escaped percent signs in a string variable + + Given type_env parameter "str_var" is celpy.celtypes.StringType + and bindings parameter "str_var" is celpy.celtypes.StringType(source='%%%s%%') + When CEL expression 'str_var.format(["text"])' is evaluated + Then value is celpy.celtypes.StringType(source='%text%') + +@wip +Scenario: format/fixed point formatting clause in a string variable + + Given type_env parameter "str_var" is celpy.celtypes.StringType + and bindings parameter "str_var" is celpy.celtypes.StringType(source='%.3f') + When CEL expression 'str_var.format([1.2345])' is evaluated + Then value is celpy.celtypes.StringType(source='1.234') + +@wip +Scenario: format/binary formatting clause in a string variable + + Given type_env parameter "str_var" is celpy.celtypes.StringType + and bindings parameter "str_var" is celpy.celtypes.StringType(source='%b') + When CEL expression 'str_var.format([5])' is evaluated + Then value is celpy.celtypes.StringType(source='101') + +@wip +Scenario: format/scientific notation formatting clause in a string variable + + Given type_env parameter "str_var" is celpy.celtypes.StringType + and bindings parameter "str_var" is celpy.celtypes.StringType(source='%.6e') + When CEL expression 'str_var.format([1052.032911275])' is evaluated + Then value is celpy.celtypes.StringType(source='1.052033e+03') + +@wip +Scenario: format/default precision for fixed-point clause in a string variable + + Given type_env parameter "str_var" is celpy.celtypes.StringType + and bindings parameter "str_var" is celpy.celtypes.StringType(source='%f') + When CEL expression 'str_var.format([2.71828])' is evaluated + Then value is celpy.celtypes.StringType(source='2.718280') + + +# format_errors -- + + +Scenario: format_errors/unrecognized formatting clause + + Given disable_check parameter is True + When CEL expression '"%a".format([1])' is evaluated + Then eval_error is 'could not parse formatting clause: unrecognized formatting clause "a"' + +Scenario: format_errors/out of bounds arg index + + Given disable_check parameter is True + When CEL expression '"%d %d %d".format([0, 1])' is evaluated + Then eval_error is 'index 2 out of range' + +Scenario: format_errors/string substitution is not allowed with binary clause + + Given disable_check parameter is True + When CEL expression '"string is %b".format(["abc"])' is evaluated + Then eval_error is 'error during formatting: only integers and bools can be formatted as binary, was given string' + +Scenario: format_errors/duration substitution not allowed with decimal clause + + Given disable_check parameter is True + When CEL expression '"%d".format([duration("30m2s")])' is evaluated + Then eval_error is 'error during formatting: decimal clause can only be used on integers, was given google.protobuf.Duration' + +Scenario: format_errors/string substitution not allowed with octal clause + + Given disable_check parameter is True + When CEL expression '"octal: %o".format(["a string"])' is evaluated + Then eval_error is 'error during formatting: octal clause can only be used on integers, was given string' + +Scenario: format_errors/double substitution not allowed with hex clause + + Given disable_check parameter is True + When CEL expression '"double is %x".format([0.5])' is evaluated + Then eval_error is 'error during formatting: only integers, byte buffers, and strings can be formatted as hex, was given double' + +Scenario: format_errors/uppercase not allowed for scientific clause + + Given disable_check parameter is True + When CEL expression '"double is %E".format([0.5])' is evaluated + Then eval_error is 'could not parse formatting clause: unrecognized formatting clause "E"' + +Scenario: format_errors/object not allowed + + Given disable_check parameter is True + When CEL expression '"object is %s".format([cel.expr.conformance.proto3.TestAllTypes{}])' is evaluated + Then eval_error is 'error during formatting: string clause can only be used on strings, bools, bytes, ints, doubles, maps, lists, types, durations, and timestamps, was given cel.expr.conformance.proto3.TestAllTypes' + +Scenario: format_errors/object inside list + + Given disable_check parameter is True + When CEL expression '"%s".format([[1, 2, cel.expr.conformance.proto3.TestAllTypes{}]])' is evaluated + Then eval_error is 'error during formatting: string clause can only be used on strings, bools, bytes, ints, doubles, maps, lists, types, durations, and timestamps, was given cel.expr.conformance.proto3.TestAllTypes' + +Scenario: format_errors/object inside map + + Given disable_check parameter is True + When CEL expression '"%s".format([{1: "a", 2: cel.expr.conformance.proto3.TestAllTypes{}}])' is evaluated + Then eval_error is 'error during formatting: string clause can only be used on strings, bools, bytes, ints, doubles, maps, lists, types, durations, and timestamps, was given cel.expr.conformance.proto3.TestAllTypes' + +Scenario: format_errors/null not allowed for %d + + Given disable_check parameter is True + When CEL expression '"null: %d".format([null])' is evaluated + Then eval_error is 'error during formatting: decimal clause can only be used on integers, was given null_type' + +Scenario: format_errors/null not allowed for %e + + Given disable_check parameter is True + When CEL expression '"null: %e".format([null])' is evaluated + Then eval_error is 'error during formatting: scientific clause can only be used on doubles, was given null_type' + +Scenario: format_errors/null not allowed for %f + + Given disable_check parameter is True + When CEL expression '"null: %f".format([null])' is evaluated + Then eval_error is 'error during formatting: fixed-point clause can only be used on doubles, was given null_type' + +Scenario: format_errors/null not allowed for %x + + Given disable_check parameter is True + When CEL expression '"null: %x".format([null])' is evaluated + Then eval_error is 'error during formatting: only integers, byte buffers, and strings can be formatted as hex, was given null_type' + +Scenario: format_errors/null not allowed for %X + + Given disable_check parameter is True + When CEL expression '"null: %X".format([null])' is evaluated + Then eval_error is 'error during formatting: only integers, byte buffers, and strings can be formatted as hex, was given null_type' + +Scenario: format_errors/null not allowed for %b + + Given disable_check parameter is True + When CEL expression '"null: %b".format([null])' is evaluated + Then eval_error is 'error during formatting: only integers and bools can be formatted as binary, was given null_type' + +Scenario: format_errors/null not allowed for %o + + Given disable_check parameter is True + When CEL expression '"null: %o".format([null])' is evaluated + Then eval_error is 'error during formatting: octal clause can only be used on integers, was given null_type' + + +# value_errors -- + + +@wip +Scenario: value_errors/charat_out_of_range + + When CEL expression "'tacocat'.charAt(30) == ''" is evaluated + Then eval_error is 'index out of range: 30' + +Scenario: value_errors/indexof_out_of_range + + When CEL expression "'tacocat'.indexOf('a', 30) == -1" is evaluated + Then eval_error is 'index out of range: 30' + +Scenario: value_errors/lastindexof_negative_index + + When CEL expression "'tacocat'.lastIndexOf('a', -1) == -1" is evaluated + Then eval_error is 'index out of range: -1' + +Scenario: value_errors/lastindexof_out_of_range + + When CEL expression "'tacocat'.lastIndexOf('a', 30) == -1" is evaluated + Then eval_error is 'index out of range: 30' + +@wip +Scenario: value_errors/substring_out_of_range + + When CEL expression "'tacocat'.substring(40) == 'cat'" is evaluated + Then eval_error is 'index out of range: 40' + +@wip +Scenario: value_errors/substring_negative_index + + When CEL expression "'tacocat'.substring(-1) == 'cat'" is evaluated + Then eval_error is 'index out of range: -1' + +@wip +Scenario: value_errors/substring_end_index_out_of_range + + When CEL expression "'tacocat'.substring(1, 50) == 'cat'" is evaluated + Then eval_error is 'index out of range: 50' + +@wip +Scenario: value_errors/substring_begin_index_out_of_range + + When CEL expression "'tacocat'.substring(49, 50) == 'cat'" is evaluated + Then eval_error is 'index out of range: 49' + +@wip +Scenario: value_errors/substring_end_index_greater_than_begin_index + + When CEL expression "'tacocat'.substring(4, 3) == ''" is evaluated + Then eval_error is 'invalid substring range. start: 4, end: 3' + + +# type_errors -- + + +Scenario: type_errors/charat_invalid_type + + Given disable_check parameter is True + When CEL expression "42.charAt(2) == ''" is evaluated + Then eval_error is 'no such overload' + +@wip +Scenario: type_errors/charat_invalid_argument + + Given disable_check parameter is True + When CEL expression "'hello'.charAt(true) == ''" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/indexof_unary_invalid_type + + Given disable_check parameter is True + When CEL expression "24.indexOf('2') == 0" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/indexof_unary_invalid_argument + + Given disable_check parameter is True + When CEL expression "'hello'.indexOf(true) == 1" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/indexof_binary_invalid_argument + + Given disable_check parameter is True + When CEL expression "42.indexOf('4', 0) == 0" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/indexof_binary_invalid_argument_2 + + Given disable_check parameter is True + When CEL expression "'42'.indexOf(4, 0) == 0" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/indexof_binary_both_invalid_arguments + + Given disable_check parameter is True + When CEL expression "'42'.indexOf('4', '0') == 0" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/indexof_ternary_invalid_arguments + + Given disable_check parameter is True + When CEL expression "'42'.indexOf('4', 0, 1) == 0" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/split_invalid_type + + Given disable_check parameter is True + When CEL expression "42.split('2') == ['4']" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/replace_invalid_type + + Given disable_check parameter is True + When CEL expression "42.replace(2, 1) == '41'" is evaluated + Then eval_error is 'no such overload' + +@wip +Scenario: type_errors/replace_binary_invalid_argument + + Given disable_check parameter is True + When CEL expression "'42'.replace(2, 1) == '41'" is evaluated + Then eval_error is 'no such overload' + +@wip +Scenario: type_errors/replace_binary_invalid_argument_2 + + Given disable_check parameter is True + When CEL expression "'42'.replace('2', 1) == '41'" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/replace_ternary_invalid_argument + + Given disable_check parameter is True + When CEL expression "42.replace('2', '1', 1) == '41'" is evaluated + Then eval_error is 'no such overload' + +@wip +Scenario: type_errors/replace_ternary_invalid_argument_2 + + Given disable_check parameter is True + When CEL expression "'42'.replace(2, '1', 1) == '41'" is evaluated + Then eval_error is 'no such overload' + +@wip +Scenario: type_errors/replace_ternary_invalid_argument_3 + + Given disable_check parameter is True + When CEL expression "'42'.replace('2', 1, 1) == '41'" is evaluated + Then eval_error is 'no such overload' + +@wip +Scenario: type_errors/replace_ternary_invalid_argument_4 + + Given disable_check parameter is True + When CEL expression "'42'.replace('2', '1', '1') == '41'" is evaluated + Then eval_error is 'no such overload' + +@wip +Scenario: type_errors/replace_quaternary_invalid_argument + + Given disable_check parameter is True + When CEL expression "'42'.replace('2', '1', 1, false) == '41'" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/split_invalid_type_empty_arg + + Given disable_check parameter is True + When CEL expression "42.split('') == ['4', '2']" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/split_invalid_argument + + Given disable_check parameter is True + When CEL expression "'42'.split(2) == ['4']" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/split_binary_invalid_type + + Given disable_check parameter is True + When CEL expression "42.split('2', '1') == ['4']" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/split_binary_invalid_argument + + Given disable_check parameter is True + When CEL expression "'42'.split(2, 1) == ['4']" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/split_binary_invalid_argument_2 + + Given disable_check parameter is True + When CEL expression "'42'.split('2', '1') == ['4']" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/split_ternary_invalid_argument + + Given disable_check parameter is True + When CEL expression "'42'.split('2', 1, 1) == ['4']" is evaluated + Then eval_error is 'no such overload' + +@wip +Scenario: type_errors/substring_ternary_invalid_argument + + Given disable_check parameter is True + When CEL expression "'hello'.substring(1, 2, 3) == ''" is evaluated + Then eval_error is 'no such overload' + +Scenario: type_errors/substring_binary_invalid_type + + Given disable_check parameter is True + When CEL expression "30.substring(true, 3) == ''" is evaluated + Then eval_error is 'no such overload' + +@wip +Scenario: type_errors/substring_binary_invalid_argument + + Given disable_check parameter is True + When CEL expression "'tacocat'.substring(true, 3) == ''" is evaluated + Then eval_error is 'no such overload' + +@wip +Scenario: type_errors/substring_binary_invalid_argument_2 + + Given disable_check parameter is True + When CEL expression "'tacocat'.substring(0, false) == ''" is evaluated + Then eval_error is 'no such overload' + diff --git a/features/string_ext.textproto b/features/string_ext.textproto new file mode 100644 index 0000000..d245558 --- /dev/null +++ b/features/string_ext.textproto @@ -0,0 +1,1417 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + +name: "string_ext" +description: "Tests for the strings extension library." +section: { + name: "char_at" + test: { + name: "middle_index" + expr: "'tacocat'.charAt(3)" + value: { + string_value: "o" + } + } + test: { + name: "end_index" + expr: "'tacocat'.charAt(7)" + value: { + string_value: "" + } + } + test: { + name: "multiple" + expr: "'©αT'.charAt(0) == 'Β©' && '©αT'.charAt(1) == 'Ξ±' && '©αT'.charAt(2) == 'T'" + } +} +section: { + name: "index_of" + test: { + name: "empty_index" + expr: "'tacocat'.indexOf('')" + value: { + int64_value: 0 + } + } + test: { + name: "string_index" + expr: "'tacocat'.indexOf('ac')" + value: { + int64_value: 1 + } + } + test: { + name: "nomatch" + expr: "'tacocat'.indexOf('none') == -1" + } + test: { + name: "empty_index" + expr: "'tacocat'.indexOf('', 3) == 3" + } + test: { + name: "char_index" + expr: "'tacocat'.indexOf('a', 3) == 5" + } + test: { + name: "string_index" + expr: "'tacocat'.indexOf('at', 3) == 5" + } + test: { + name: "unicode_char" + expr: "'taΒ©o©αT'.indexOf('Β©') == 2" + } + test: { + name: "unicode_char_index" + expr: "'taΒ©o©αT'.indexOf('Β©', 3) == 4" + } + test: { + name: "unicode_string_index" + expr: "'taΒ©o©αT'.indexOf('©αT', 3) == 4" + } + test: { + name: "unicode_string_nomatch_index" + expr: "'taΒ©o©αT'.indexOf('©α', 5) == -1" + } + test: { + name: "char_index" + expr: "'ijk'.indexOf('k') == 2" + } + test: { + name: "string_with_space_fullmatch" + expr: "'hello wello'.indexOf('hello wello') == 0" + } + test: { + name: "string_with_space_index" + expr: "'hello wello'.indexOf('ello', 6) == 7" + } + test: { + name: "string_nomatch_index" + expr: "'hello wello'.indexOf('elbo room!!') == -1" + } +} +section: { + name: "last_index_of" + test: { + name: "empty" + expr: "'tacocat'.lastIndexOf('') == 7" + } + test: { + name: "string" + expr: "'tacocat'.lastIndexOf('at') == 5" + } + test: { + name: "string_nomatch" + expr: "'tacocat'.lastIndexOf('none') == -1" + } + test: { + name: "empty_index" + expr: "'tacocat'.lastIndexOf('', 3) == 3" + } + test: { + name: "char_index" + expr: "'tacocat'.lastIndexOf('a', 3) == 1" + } + test: { + name: "unicode_char" + expr: "'taΒ©o©αT'.lastIndexOf('Β©') == 4" + } + test: { + name: "unicode_char_index" + expr: "'taΒ©o©αT'.lastIndexOf('Β©', 3) == 2" + } + test: { + name: "unicode_string_index" + expr: "'taΒ©o©αT'.lastIndexOf('©α', 4) == 4" + } + test: { + name: "string_with_space_string_index" + expr: "'hello wello'.lastIndexOf('ello', 6) == 1" + } + test: { + name: "string_with_space_string_nomatch" + expr: "'hello wello'.lastIndexOf('low') == -1" + } + test: { + name: "string_with_space_string_with_space_nomatch" + expr: "'hello wello'.lastIndexOf('elbo room!!') == -1" + } + test: { + name: "string_with_space_fullmatch" + expr: "'hello wello'.lastIndexOf('hello wello') == 0" + } + test: { + name: "repeated_string" + expr: "'bananananana'.lastIndexOf('nana', 7) == 6" + } +} +section: { + name: "ascii_casing" + test: { + name: "lowerascii" + expr: "'TacoCat'.lowerAscii() == 'tacocat'" + } + test: { + name: "lowerascii_unicode" + expr: "'TacoCΓ†t'.lowerAscii() == 'tacocΓ†t'" + } + test: { + name: "lowerascii_unicode_with_space" + expr: "'TacoCΓ†t Xii'.lowerAscii() == 'tacocΓ†t xii'" + } + test: { + name: "upperascii" + expr: "'tacoCat'.upperAscii() == 'TACOCAT'" + } + test: { + name: "upperascii_unicode" + expr: "'tacoCΞ±t'.upperAscii() == 'TACOCΞ±T'" + } + test: { + name: "upperascii_unicode_with_space" + expr: "'TacoCΓ†t Xii'.upperAscii() == 'TACOCΓ†T XII'" + } +} +section: { + name: "replace" + test: { + name: "no_placeholder" + expr: "'12 days 12 hours'.replace('{0}', '2') == '12 days 12 hours'" + } + test: { + name: "basic" + expr: "'{0} days {0} hours'.replace('{0}', '2') == '2 days 2 hours'" + } + test: { + name: "chained" + expr: "'{0} days {0} hours'.replace('{0}', '2', 1).replace('{0}', '23') == '2 days 23 hours'" + } + test: { + name: "unicode" + expr: "'1 ©αT taco'.replace('Ξ±T', 'o©α') == '1 Β©o©α taco'" + } +} +section: { + name: "split" + test: { + name: "empty" + expr: "'hello world'.split(' ') == ['hello', 'world']" + } + test: { + name: "zero_limit" + expr: "'hello world events!'.split(' ', 0) == []" + } + test: { + name: "one_limit" + expr: "'hello world events!'.split(' ', 1) == ['hello world events!']" + } + test: { + name: "unicode_negative_limit" + expr: "'oΒ©oΒ©oΒ©o'.split('Β©', -1) == ['o', 'o', 'o', 'o']" + } +} +section: { + name: "substring" + test: { + name: "start" + expr: "'tacocat'.substring(4) == 'cat'" + } + test: { + name: "start_with_max_length" + expr: "'tacocat'.substring(7) == ''" + } + test: { + name: "start_and_end" + expr: "'tacocat'.substring(0, 4) == 'taco'" + } + test: { + name: "start_and_end_equal_value" + expr: "'tacocat'.substring(4, 4) == ''" + } + test: { + name: "unicode_start_and_end" + expr: "'taΒ©o©αT'.substring(2, 6) == 'Β©o©α'" + } + test: { + name: "unicode_start_and_end_equal_value" + expr: "'taΒ©o©αT'.substring(7, 7) == ''" + } +} +section: { + name: "trim" + test: { + name: "blank_spaces_escaped_chars" + expr: "' \\f\\n\\r\\t\\vtext '.trim() == 'text'" + } + test: { + name: "unicode_space_chars_1" + expr: "'\\u0085\\u00a0\\u1680text'.trim() == 'text'" + } + test: { + name: "unicode_space_chars_2" + expr: "'text\\u2000\\u2001\\u2002\\u2003\\u2004\\u2004\\u2006\\u2007\\u2008\\u2009'.trim() == 'text'" + } + test: { + name: "unicode_space_chars_3" + expr: "'\\u200atext\\u2028\\u2029\\u202F\\u205F\\u3000'.trim() == 'text'" + } + test: { + name: "unicode_no_trim" + expr: "'\\u180etext\\u200b\\u200c\\u200d\\u2060\\ufeff'.trim() == '\\u180etext\\u200b\\u200c\\u200d\\u2060\\ufeff'" + } +} +section: { + name: "join" + test: { + name: "empty_separator" + expr: "['x', 'y'].join() == 'xy'" + } + test: { + name: "dash_separator" + expr: "['x', 'y'].join('-') == 'x-y'" + } + test: { + name: "empty_string_empty_separator" + expr: "[].join() == ''" + } + test: { + name: "empty_string_dash_separator" + expr: "[].join('-') == ''" + } +} +section: { + name: "quote" + test: { + name: "multiline" + expr: "strings.quote(\"first\\nsecond\") == \"\\\"first\\\\nsecond\\\"\"" + } + test: { + name: "escaped" + expr: "strings.quote(\"bell\\a\") == \"\\\"bell\\\\a\\\"\"" + } + test: { + name: "backspace" + expr: "strings.quote(\"\\bbackspace\") == \"\\\"\\\\bbackspace\\\"\"" + } + test: { + name: "form_feed" + expr: "strings.quote(\"\\fform feed\") == \"\\\"\\\\fform feed\\\"\"" + } + test: { + name: "carriage_return" + expr: "strings.quote(\"carriage \\r return\") == \"\\\"carriage \\\\r return\\\"\"" + } + test: { + name: "horizontal_tab" + expr: "strings.quote(\"horizontal tab\\t\") == \"\\\"horizontal tab\\\\t\\\"\"" + } + test: { + name: "vertical_tab" + expr: "strings.quote(\"vertical \\v tab\") == \"\\\"vertical \\\\v tab\\\"\"" + } + test: { + name: "double_slash" + expr: "strings.quote(\"double \\\\\\\\ slash\") == \"\\\"double \\\\\\\\\\\\\\\\ slash\\\"\"" + } + test: { + name: "two_escape_sequences" + expr: "strings.quote(\"two escape sequences \\\\a\\\\n\") == \"\\\"two escape sequences \\\\\\\\a\\\\\\\\n\\\"\"" + } + test: { + name: "verbatim" + expr: "strings.quote(\"verbatim\") == \"\\\"verbatim\\\"\"" + } + test: { + name: "ends_with" + expr: "strings.quote(\"ends with \\\\\") == \"\\\"ends with \\\\\\\\\\\"\"" + } + test: { + name: "starts_with" + expr: "strings.quote(\"\\\\ starts with\") == \"\\\"\\\\\\\\ starts with\\\"\"" + } + test: { + name: "printable_unicode" + expr: "strings.quote(\"printable unicodeπŸ˜€\") == \"\\\"printable unicodeπŸ˜€\\\"\"" + } + test: { + name: "mid_string_quote" + expr: "strings.quote(\"mid string \\\" quote\") == \"\\\"mid string \\\\\\\" quote\\\"\"" + } + test: { + name: "single_quote_with_double_quote" + expr: "strings.quote('single-quote with \"double quote\"') == \"\\\"single-quote with \\\\\\\"double quote\\\\\\\"\\\"\"" + } + test: { + name: "size_unicode_char" + expr: "strings.quote(\"size('ΓΏ')\") == \"\\\"size('ΓΏ')\\\"\"" + } + test: { + name: "size_unicode_string" + expr: "strings.quote(\"size('πέντΡ')\") == \"\\\"size('πέντΡ')\\\"\"" + } + test: { + name: "unicode" + expr: "strings.quote(\"Π·Π°Π²Ρ‚Ρ€Π°\") == \"\\\"Π·Π°Π²Ρ‚Ρ€Π°\\\"\"" + } + test: { + name: "unicode_code_points" + expr: "strings.quote(\"\\U0001F431\\U0001F600\\U0001F61B\")" + value: { + string_value: "\"πŸ±πŸ˜€πŸ˜›\"" + } + } + test: { + name: "unicode_2" + expr: "strings.quote(\"taΒ©o©αT\") == \"\\\"taΒ©o©αT\\\"\"" + } + test: { + name: "empty_quote" + expr: "strings.quote(\"\")" + value: { + string_value: "\"\"" + } + } +} +section: { + name: "format" + test: { + name: "no-op" + expr: '"no substitution".format([])' + value: { + string_value: 'no substitution', + } + } + test: { + name: "mid-string substitution" + expr: '"str is %s and some more".format(["filler"])' + value: { + string_value: 'str is filler and some more', + } + } + test: { + name: "percent escaping" + expr: '"%% and also %%".format([])' + value: { + string_value: '% and also %', + } + } + test: { + name: "substitution inside escaped percent signs" + expr: '"%%%s%%".format(["text"])' + value: { + string_value: '%text%', + } + } + test: { + name: "substitution with one escaped percent sign on the right" + expr: '"%s%%".format(["percent on the right"])' + value: { + string_value: 'percent on the right%', + } + } + test: { + name: "substitution with one escaped percent sign on the left" + expr: '"%%%s".format(["percent on the left"])' + value: { + string_value: '%percent on the left', + } + } + test: { + name: "multiple substitutions" + expr: '"%d %d %d, %s %s %s, %d %d %d, %s %s %s".format([1, 2, 3, "A", "B", "C", 4, 5, 6, "D", "E", "F"])' + value: { + string_value: '1 2 3, A B C, 4 5 6, D E F', + } + } + test: { + name: "percent sign escape sequence support" + expr: '"%%escaped %s%%".format(["percent"])' + value: { + string_value: '%escaped percent%', + } + } + test: { + name: "fixed point formatting clause" + expr: '"%.3f".format([1.2345])' + value: { + string_value: '1.234', + } + } + test: { + name: "binary formatting clause" + expr: '"this is 5 in binary: %b".format([5])' + value: { + string_value: 'this is 5 in binary: 101', + } + } + test: { + name: "uint support for binary formatting" + expr: '"unsigned 64 in binary: %b".format([uint(64)])' + value: { + string_value: 'unsigned 64 in binary: 1000000', + } + } + test: { + name: "bool support for binary formatting" + expr: '"bit set from bool: %b".format([true])' + value: { + string_value: 'bit set from bool: 1', + } + } + test: { + name: "octal formatting clause" + expr: '"%o".format([11])' + value: { + string_value: '13', + } + } + test: { + name: "uint support for octal formatting clause" + expr: '"this is an unsigned octal: %o".format([uint(65535)])' + value: { + string_value: 'this is an unsigned octal: 177777', + } + } + test: { + name: "lowercase hexadecimal formatting clause" + expr: '"%x is 20 in hexadecimal".format([30])' + value: { + string_value: '1e is 20 in hexadecimal', + } + } + test: { + name: "uppercase hexadecimal formatting clause" + expr: '"%X is 20 in hexadecimal".format([30])' + value: { + string_value: '1E is 20 in hexadecimal', + } + } + test: { + name: "unsigned support for hexadecimal formatting clause" + expr: '"%X is 6000 in hexadecimal".format([uint(6000)])' + value: { + string_value: '1770 is 6000 in hexadecimal', + } + } + test: { + name: "string support with hexadecimal formatting clause" + expr: '"%x".format(["Hello world!"])' + value: { + string_value: '48656c6c6f20776f726c6421', + } + } + test: { + name: "string support with uppercase hexadecimal formatting clause" + expr: '"%X".format(["Hello world!"])' + value: { + string_value: '48656C6C6F20776F726C6421', + } + } + test: { + name: "byte support with hexadecimal formatting clause" + expr: '"%x".format([b"byte string"])' + value: { + string_value: '6279746520737472696e67', + } + } + test: { + name: "byte support with uppercase hexadecimal formatting clause" + expr: '"%X".format([b"byte string"])' + value: { + string_value: '6279746520737472696E67', + } + } + test: { + name: "scientific notation formatting clause" + expr: '"%.6e".format([1052.032911275])' + value: { + string_value: '1.052033e+03', + } + } + test: { + name: "default precision for fixed-point clause" + expr: '"%f".format([2.71828])' + value: { + string_value: '2.718280', + } + } + test: { + name: "default precision for scientific notation" + expr: '"%e".format([2.71828])' + value: { + string_value: '2.718280e+00', + } + } + test: { + name: "NaN support for scientific notation" + expr: '"%e".format([double("NaN")])' + value: { + string_value: 'NaN', + } + } + test: { + name: "positive infinity support for scientific notation" + expr: '"%e".format([double("Infinity")])' + value: { + string_value: 'Infinity', + } + } + test: { + name: "negative infinity support for scientific notation" + expr: '"%e".format([double("-Infinity")])' + value: { + string_value: '-Infinity', + } + } + test: { + name: "NaN support for decimal" + expr: '"%d".format([double("NaN")])' + value: { + string_value: 'NaN', + } + } + test: { + name: "positive infinity support for decimal" + expr: '"%d".format([double("Infinity")])' + value: { + string_value: 'Infinity', + } + } + test: { + name: "negative infinity support for decimal" + expr: '"%d".format([double("-Infinity")])' + value: { + string_value: '-Infinity', + } + } + test: { + name: "NaN support for fixed-point" + expr: '"%f".format([double("NaN")])' + value: { + string_value: 'NaN', + } + } + test: { + name: "positive infinity support for fixed-point" + expr: '"%f".format([double("Infinity")])' + value: { + string_value: 'Infinity', + } + } + test: { + name: "negative infinity support for fixed-point" + expr: '"%f".format([double("-Infinity")])' + value: { + string_value: '-Infinity', + } + } + test: { + name: "uint support for decimal clause" + expr: '"%d".format([uint(64)])' + value: { + string_value: '64', + } + } + test: { + name: "null support for string" + expr: '"%s".format([null])' + value: { + string_value: 'null', + } + } + test: { + name: "int support for string" + expr: '"%s".format([999999999999])' + value: { + string_value: '999999999999', + } + } + test: { + name: "bytes support for string" + expr: '"%s".format([b"xyz"])' + value: { + string_value: 'xyz', + } + } + test: { + name: "type() support for string" + expr: '"%s".format([type("test string")])' + value: { + string_value: 'string', + } + } + test: { + name: "timestamp support for string" + expr: '"%s".format([timestamp("2023-02-03T23:31:20+00:00")])' + value: { + string_value: '2023-02-03T23:31:20Z', + } + } + test: { + name: "duration support for string" + expr: '"%s".format([duration("1h45m47s")])' + value: { + string_value: '6347s', + } + } + test: { + name: "list support for string" + expr: '"%s".format([["abc", 3.14, null, [9, 8, 7, 6], timestamp("2023-02-03T23:31:20Z")]])' + value: { + string_value: '[abc, 3.14, null, [9, 8, 7, 6], 2023-02-03T23:31:20Z]', + } + } + test: { + name: "map support for string" + expr: '"%s".format([{"key1": b"xyz", "key5": null, "key2": duration("2h"), "key4": true, "key3": 2.71828}])' + value: { + string_value: '{key1: xyz, key2: 7200s, key3: 2.71828, key4: true, key5: null}', + } + } + test: { + name: "map support (all key types)" + expr: '"%s".format([{1: "value1", uint(2): "value2", true: double("NaN")}])' + value: { + string_value: '{1: value1, 2: value2, true: NaN}', + } + } + test: { + name: "boolean support for %s" + expr: '"%s, %s".format([true, false])' + value: { + string_value: 'true, false', + } + } + test: { + name: "dyntype support for string formatting clause" + expr: '"%s".format([dyn("a string")])' + value: { + string_value: 'a string', + } + } + test: { + name: "dyntype support for numbers with string formatting clause" + expr: '"%s, %s".format([dyn(32), dyn(56.8)])' + value: { + string_value: '32, 56.8', + } + } + test: { + name: "dyntype support for integer formatting clause" + expr: '"%d".format([dyn(128)])' + value: { + string_value: '128', + } + } + test: { + name: "dyntype support for integer formatting clause (unsigned)" + expr: '"%d".format([dyn(256u)])' + value: { + string_value: '256', + } + } + test: { + name: "dyntype support for hex formatting clause" + expr: '"%x".format([dyn(22)])' + value: { + string_value: '16', + } + } + test: { + name: "dyntype support for hex formatting clause (uppercase)" + expr: '"%X".format([dyn(26)])' + value: { + string_value: '1A', + } + } + test: { + name: "dyntype support for unsigned hex formatting clause" + expr: '"%x".format([dyn(500u)])' + value: { + string_value: '1f4', + } + } + test: { + name: "dyntype support for fixed-point formatting clause" + expr: '"%.3f".format([dyn(4.5)])' + value: { + string_value: '4.500', + } + } + test: { + name: "dyntype support for scientific notation" + expr: '"%e".format([dyn(2.71828)])' + value: { + string_value: '2.718280e+00', + } + } + test: { + name: "dyntype NaN/infinity support" + expr: '"%s".format([[double("NaN"), double("Infinity"), double("-Infinity")]])' + value: { + string_value: '[NaN, Infinity, -Infinity]', + } + } + test: { + name: "dyntype support for timestamp" + expr: '"%s".format([dyn(timestamp("2009-11-10T23:00:00Z"))])' + value: { + string_value: '2009-11-10T23:00:00Z', + } + } + test: { + name: "dyntype support for duration" + expr: '"%s".format([dyn(duration("8747s"))])' + value: { + string_value: '8747s', + } + } + test: { + name: "dyntype support for lists" + expr: '"%s".format([dyn([6, 4.2, "a string"])])' + value: { + string_value: '[6, 4.2, a string]', + } + } + test: { + name: "dyntype support for maps" + expr: '"%s".format([{"strKey":"x", 6:duration("422s"), true:42}])' + value: { + string_value: '{6: 422s, strKey: x, true: 42}', + } + } + test: { + name: "string substitution in a string variable" + expr: 'str_var.format(["filler"])' + type_env: { + name: "str_var", + ident: { type: { primitive: STRING } } + } + bindings: { + key: "str_var" + value: { value: { string_value: "%s" } } + } + value: { + string_value: 'filler', + } + } + test: { + name: "multiple substitutions in a string variable" + expr: 'str_var.format([1, 2, 3, "A", "B", "C", 4, 5, 6, "D", "E", "F"])' + type_env: { + name: "str_var", + ident: { type: { primitive: STRING } } + } + bindings: { + key: "str_var" + value: { value: { string_value: "%d %d %d, %s %s %s, %d %d %d, %s %s %s" } } + } + value: { + string_value: '1 2 3, A B C, 4 5 6, D E F', + } + } + test: { + name: "substitution inside escaped percent signs in a string variable" + expr: 'str_var.format(["text"])' + type_env: { + name: "str_var", + ident: { type: { primitive: STRING } } + } + bindings: { + key: "str_var" + value: { value: { string_value: "%%%s%%" } } + } + value: { + string_value: '%text%', + } + } + test: { + name: "fixed point formatting clause in a string variable" + expr: 'str_var.format([1.2345])' + type_env: { + name: "str_var", + ident: { type: { primitive: STRING } } + } + bindings: { + key: "str_var" + value: { value: { string_value: "%.3f" } } + } + value: { + string_value: '1.234', + } + } + test: { + name: "binary formatting clause in a string variable" + expr: 'str_var.format([5])' + type_env: { + name: "str_var", + ident: { type: { primitive: STRING } } + } + bindings: { + key: "str_var" + value: { value: { string_value: "%b" } } + } + value: { + string_value: '101', + } + } + test: { + name: "scientific notation formatting clause in a string variable" + expr: 'str_var.format([1052.032911275])' + type_env: { + name: "str_var", + ident: { type: { primitive: STRING } } + } + bindings: { + key: "str_var" + value: { value: { string_value: "%.6e" } } + } + value: { + string_value: '1.052033e+03', + } + } + test: { + name: "default precision for fixed-point clause in a string variable" + expr: 'str_var.format([2.71828])' + type_env: { + name: "str_var", + ident: { type: { primitive: STRING } } + } + bindings: { + key: "str_var" + value: { value: { string_value: "%f" } } + } + value: { + string_value: '2.718280', + } + } +} +section: { + name: "format_errors" + test: { + name: "unrecognized formatting clause" + expr: '"%a".format([1])' + disable_check: true + eval_error: { + errors: { + message: 'could not parse formatting clause: unrecognized formatting clause "a"' + } + } + } + test: { + name: "out of bounds arg index" + expr: '"%d %d %d".format([0, 1])' + disable_check: true + eval_error: { + errors: { + message: 'index 2 out of range' + } + } + } + test: { + name: "string substitution is not allowed with binary clause" + expr: '"string is %b".format(["abc"])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: only integers and bools can be formatted as binary, was given string' + } + } + } + test: { + name: "duration substitution not allowed with decimal clause" + expr: '"%d".format([duration("30m2s")])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: decimal clause can only be used on integers, was given google.protobuf.Duration' + } + } + } + test: { + name: "string substitution not allowed with octal clause" + expr: '"octal: %o".format(["a string"])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: octal clause can only be used on integers, was given string' + } + } + } + test: { + name: "double substitution not allowed with hex clause" + expr: '"double is %x".format([0.5])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: only integers, byte buffers, and strings can be formatted as hex, was given double' + } + } + } + test: { + name: "uppercase not allowed for scientific clause" + expr: '"double is %E".format([0.5])' + disable_check: true + eval_error: { + errors: { + message: 'could not parse formatting clause: unrecognized formatting clause "E"' + } + } + } + test: { + name: "object not allowed" + expr: '"object is %s".format([cel.expr.conformance.proto3.TestAllTypes{}])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: string clause can only be used on strings, bools, bytes, ints, doubles, maps, lists, types, durations, and timestamps, was given cel.expr.conformance.proto3.TestAllTypes' + } + } + } + test: { + name: "object inside list" + expr: '"%s".format([[1, 2, cel.expr.conformance.proto3.TestAllTypes{}]])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: string clause can only be used on strings, bools, bytes, ints, doubles, maps, lists, types, durations, and timestamps, was given cel.expr.conformance.proto3.TestAllTypes' + } + } + } + test: { + name: "object inside map" + expr: '"%s".format([{1: "a", 2: cel.expr.conformance.proto3.TestAllTypes{}}])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: string clause can only be used on strings, bools, bytes, ints, doubles, maps, lists, types, durations, and timestamps, was given cel.expr.conformance.proto3.TestAllTypes' + } + } + } + test: { + name: "null not allowed for %d" + expr: '"null: %d".format([null])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: decimal clause can only be used on integers, was given null_type' + } + } + } + test: { + name: "null not allowed for %e" + expr: '"null: %e".format([null])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: scientific clause can only be used on doubles, was given null_type' + } + } + } + test: { + name: "null not allowed for %f" + expr: '"null: %f".format([null])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: fixed-point clause can only be used on doubles, was given null_type' + } + } + } + test: { + name: "null not allowed for %x" + expr: '"null: %x".format([null])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: only integers, byte buffers, and strings can be formatted as hex, was given null_type' + } + } + } + test: { + name: "null not allowed for %X" + expr: '"null: %X".format([null])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: only integers, byte buffers, and strings can be formatted as hex, was given null_type' + } + } + } + test: { + name: "null not allowed for %b" + expr: '"null: %b".format([null])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: only integers and bools can be formatted as binary, was given null_type' + } + } + } + test: { + name: "null not allowed for %o" + expr: '"null: %o".format([null])' + disable_check: true + eval_error: { + errors: { + message: 'error during formatting: octal clause can only be used on integers, was given null_type' + } + } + } +} +section: { + name: "value_errors" + test: { + name: "charat_out_of_range" + expr: "'tacocat'.charAt(30) == ''" + eval_error: { + errors: { + message: "index out of range: 30" + } + } + } + test: { + name: "indexof_out_of_range" + expr: "'tacocat'.indexOf('a', 30) == -1" + eval_error: { + errors: { + message: "index out of range: 30" + } + } + } + test: { + name: "lastindexof_negative_index" + expr: "'tacocat'.lastIndexOf('a', -1) == -1" + eval_error: { + errors: { + message: "index out of range: -1" + } + } + } + test: { + name: "lastindexof_out_of_range" + expr: "'tacocat'.lastIndexOf('a', 30) == -1" + eval_error: { + errors: { + message: "index out of range: 30" + } + } + } + test: { + name: "substring_out_of_range" + expr: "'tacocat'.substring(40) == 'cat'" + eval_error: { + errors: { + message: "index out of range: 40" + } + } + } + test: { + name: "substring_negative_index" + expr: "'tacocat'.substring(-1) == 'cat'" + eval_error: { + errors: { + message: "index out of range: -1" + } + } + } + test: { + name: "substring_end_index_out_of_range" + expr: "'tacocat'.substring(1, 50) == 'cat'" + eval_error: { + errors: { + message: "index out of range: 50" + } + } + } + test: { + name: "substring_begin_index_out_of_range" + expr: "'tacocat'.substring(49, 50) == 'cat'" + eval_error: { + errors: { + message: "index out of range: 49" + } + } + } + test: { + name: "substring_end_index_greater_than_begin_index" + expr: "'tacocat'.substring(4, 3) == ''" + eval_error: { + errors: { + message: "invalid substring range. start: 4, end: 3" + } + } + } +} +section: { + name: "type_errors" + test: { + name: "charat_invalid_type" + expr: "42.charAt(2) == ''" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "charat_invalid_argument" + expr: "'hello'.charAt(true) == ''" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "indexof_unary_invalid_type" + expr: "24.indexOf('2') == 0" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "indexof_unary_invalid_argument" + expr: "'hello'.indexOf(true) == 1" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "indexof_binary_invalid_argument" + expr: "42.indexOf('4', 0) == 0" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "indexof_binary_invalid_argument_2" + expr: "'42'.indexOf(4, 0) == 0" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "indexof_binary_both_invalid_arguments" + expr: "'42'.indexOf('4', '0') == 0" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "indexof_ternary_invalid_arguments" + expr: "'42'.indexOf('4', 0, 1) == 0" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "split_invalid_type" + expr: "42.split('2') == ['4']" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "replace_invalid_type" + expr: "42.replace(2, 1) == '41'" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "replace_binary_invalid_argument" + expr: "'42'.replace(2, 1) == '41'" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "replace_binary_invalid_argument_2" + expr: "'42'.replace('2', 1) == '41'" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "replace_ternary_invalid_argument" + expr: "42.replace('2', '1', 1) == '41'" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "replace_ternary_invalid_argument_2" + expr: "'42'.replace(2, '1', 1) == '41'" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "replace_ternary_invalid_argument_3" + expr: "'42'.replace('2', 1, 1) == '41'" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "replace_ternary_invalid_argument_4" + expr: "'42'.replace('2', '1', '1') == '41'" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "replace_quaternary_invalid_argument" + expr: "'42'.replace('2', '1', 1, false) == '41'" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "split_invalid_type_empty_arg" + expr: "42.split('') == ['4', '2']" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "split_invalid_argument" + expr: "'42'.split(2) == ['4']" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "split_binary_invalid_type" + expr: "42.split('2', '1') == ['4']" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "split_binary_invalid_argument" + expr: "'42'.split(2, 1) == ['4']" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "split_binary_invalid_argument_2" + expr: "'42'.split('2', '1') == ['4']" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "split_ternary_invalid_argument" + expr: "'42'.split('2', 1, 1) == ['4']" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "substring_ternary_invalid_argument" + expr: "'hello'.substring(1, 2, 3) == ''" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "substring_binary_invalid_type" + expr: "30.substring(true, 3) == ''" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "substring_binary_invalid_argument" + expr: "'tacocat'.substring(true, 3) == ''" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } + test: { + name: "substring_binary_invalid_argument_2" + expr: "'tacocat'.substring(0, false) == ''" + disable_check: true + eval_error: { + errors: { + message: "no such overload" + } + } + } +} diff --git a/features/timestamps.feature b/features/timestamps.feature index 20ab516..07486bc 100644 --- a/features/timestamps.feature +++ b/features/timestamps.feature @@ -1,498 +1,442 @@ - +@conformance Feature: timestamps Timestamp and duration tests. # timestamp_conversions -- Conversions of timestamps to other types. -Scenario: toInt_timestamp - When CEL expression "int(timestamp('2009-02-13T23:31:30Z'))" is evaluated - # int64_value:1234567890 - Then value is IntType(source=1234567890) +Scenario: timestamp_conversions/toInt_timestamp + When CEL expression "int(timestamp('2009-02-13T23:31:30Z'))" is evaluated + Then value is celpy.celtypes.IntType(source=1234567890) -Scenario: toString_timestamp +Scenario: timestamp_conversions/toString_timestamp When CEL expression "string(timestamp('2009-02-13T23:31:30Z'))" is evaluated - # string_value:"2009-02-13T23:31:30Z" - Then value is StringType(source='2009-02-13T23:31:30Z') + Then value is celpy.celtypes.StringType(source='2009-02-13T23:31:30Z') +@wip +Scenario: timestamp_conversions/toString_timestamp_nanos -Scenario: toType_timestamp + When CEL expression "string(timestamp('9999-12-31T23:59:59.999999999Z'))" is evaluated + Then value is celpy.celtypes.StringType(source='9999-12-31T23:59:59.999999999Z') + +Scenario: timestamp_conversions/toType_timestamp When CEL expression "type(timestamp('2009-02-13T23:31:30Z'))" is evaluated - # type_value:"google.protobuf.Timestamp" - # Then value is TypeType(value='google.protobuf.Timestamp') - Then value is TimestampType + Then value is celpy.celtypes.TimestampType + +@wip +Scenario: timestamp_conversions/type_comparison + When CEL expression "google.protobuf.Timestamp == type(timestamp('2009-02-13T23:31:30Z'))" is evaluated + Then value is celpy.celtypes.BoolType(source=True) # duration_conversions -- Conversions of durations to other types. -Scenario: toString_duration - When CEL expression "string(duration('1000000s'))" is evaluated - # string_value:"1000000s" - Then value is StringType(source='1000000s') +Scenario: duration_conversions/toString_duration + When CEL expression "string(duration('1000000s'))" is evaluated + Then value is celpy.celtypes.StringType(source='1000000s') -Scenario: toType_duration +Scenario: duration_conversions/toType_duration When CEL expression "type(duration('1000000s'))" is evaluated - # type_value:"google.protobuf.Duration" - # Then value is TypeType(value='google.protobuf.Duration') - Then value is DurationType + Then value is celpy.celtypes.DurationType + +@wip +Scenario: duration_conversions/type_comparison + When CEL expression "google.protobuf.Duration == type(duration('1000000s'))" is evaluated + Then value is celpy.celtypes.BoolType(source=True) # timestamp_selectors -- Timestamp selection operators without timezones -Scenario: getDate - When CEL expression "timestamp('2009-02-13T23:31:30Z').getDate()" is evaluated - # int64_value:13 - Then value is IntType(source=13) +Scenario: timestamp_selectors/getDate + When CEL expression "timestamp('2009-02-13T23:31:30Z').getDate()" is evaluated + Then value is celpy.celtypes.IntType(source=13) -Scenario: getDayOfMonth +Scenario: timestamp_selectors/getDayOfMonth When CEL expression "timestamp('2009-02-13T23:31:30Z').getDayOfMonth()" is evaluated - # int64_value:12 - Then value is IntType(source=12) - + Then value is celpy.celtypes.IntType(source=12) -Scenario: getDayOfWeek +Scenario: timestamp_selectors/getDayOfWeek When CEL expression "timestamp('2009-02-13T23:31:30Z').getDayOfWeek()" is evaluated - # int64_value:5 - Then value is IntType(source=5) - + Then value is celpy.celtypes.IntType(source=5) -Scenario: getDayOfYear +Scenario: timestamp_selectors/getDayOfYear When CEL expression "timestamp('2009-02-13T23:31:30Z').getDayOfYear()" is evaluated - # int64_value:43 - Then value is IntType(source=43) + Then value is celpy.celtypes.IntType(source=43) - -Scenario: getFullYear +Scenario: timestamp_selectors/getFullYear When CEL expression "timestamp('2009-02-13T23:31:30Z').getFullYear()" is evaluated - # int64_value:2009 - Then value is IntType(source=2009) - + Then value is celpy.celtypes.IntType(source=2009) -Scenario: getHours +Scenario: timestamp_selectors/getHours When CEL expression "timestamp('2009-02-13T23:31:30Z').getHours()" is evaluated - # int64_value:23 - Then value is IntType(source=23) - + Then value is celpy.celtypes.IntType(source=23) -Scenario: getMilliseconds +Scenario: timestamp_selectors/getMilliseconds When CEL expression "timestamp('2009-02-13T23:31:20.123456789Z').getMilliseconds()" is evaluated - # int64_value:123 - Then value is IntType(source=123) + Then value is celpy.celtypes.IntType(source=123) - -Scenario: getMinutes +Scenario: timestamp_selectors/getMinutes When CEL expression "timestamp('2009-02-13T23:31:30Z').getMinutes()" is evaluated - # int64_value:31 - Then value is IntType(source=31) - + Then value is celpy.celtypes.IntType(source=31) -Scenario: getMonth +Scenario: timestamp_selectors/getMonth When CEL expression "timestamp('2009-02-13T23:31:30Z').getMonth()" is evaluated - # int64_value:1 - Then value is IntType(source=1) - + Then value is celpy.celtypes.IntType(source=1) -Scenario: getSeconds +Scenario: timestamp_selectors/getSeconds When CEL expression "timestamp('2009-02-13T23:31:30Z').getSeconds()" is evaluated - # int64_value:30 - Then value is IntType(source=30) - + Then value is celpy.celtypes.IntType(source=30) # timestamp_selectors_tz -- Timestamp selection operators with timezones -Scenario: getDate - When CEL expression "timestamp('2009-02-13T23:31:30Z').getDate('Australia/Sydney')" is evaluated - # int64_value:14 - Then value is IntType(source=14) +Scenario: timestamp_selectors_tz/getDate + When CEL expression "timestamp('2009-02-13T23:31:30Z').getDate('Australia/Sydney')" is evaluated + Then value is celpy.celtypes.IntType(source=14) -Scenario: getDayOfMonth_name_pos +Scenario: timestamp_selectors_tz/getDayOfMonth_name_pos When CEL expression "timestamp('2009-02-13T23:31:30Z').getDayOfMonth('US/Central')" is evaluated - # int64_value:12 - Then value is IntType(source=12) + Then value is celpy.celtypes.IntType(source=12) - -Scenario: getDayOfMonth_numerical_pos +Scenario: timestamp_selectors_tz/getDayOfMonth_numerical_pos When CEL expression "timestamp('2009-02-13T23:31:30Z').getDayOfMonth('+11:00')" is evaluated - # int64_value:13 - Then value is IntType(source=13) - + Then value is celpy.celtypes.IntType(source=13) -Scenario: getDayOfMonth_numerical_neg +Scenario: timestamp_selectors_tz/getDayOfMonth_numerical_neg - When CEL expression "timestamp('2009-02-13T02:00:00Z').getDayOfMonth('-2:30')" is evaluated - # int64_value:11 - Then value is IntType(source=11) + When CEL expression "timestamp('2009-02-13T02:00:00Z').getDayOfMonth('-02:30')" is evaluated + Then value is celpy.celtypes.IntType(source=11) - -Scenario: getDayOfMonth_name_neg +Scenario: timestamp_selectors_tz/getDayOfMonth_name_neg When CEL expression "timestamp('2009-02-13T02:00:00Z').getDayOfMonth('America/St_Johns')" is evaluated - # int64_value:11 - Then value is IntType(source=11) - + Then value is celpy.celtypes.IntType(source=11) -Scenario: getDayOfWeek +Scenario: timestamp_selectors_tz/getDayOfWeek When CEL expression "timestamp('2009-02-13T23:31:30Z').getDayOfWeek('UTC')" is evaluated - # int64_value:5 - Then value is IntType(source=5) - + Then value is celpy.celtypes.IntType(source=5) -Scenario: getDayOfYear +Scenario: timestamp_selectors_tz/getDayOfYear When CEL expression "timestamp('2009-02-13T23:31:30Z').getDayOfYear('US/Central')" is evaluated - # int64_value:43 - Then value is IntType(source=43) - - -Scenario: getFullYear - - When CEL expression "timestamp('2009-02-13T23:31:30Z').getFullYear('-9:30')" is evaluated - # int64_value:2009 - Then value is IntType(source=2009) + Then value is celpy.celtypes.IntType(source=43) +Scenario: timestamp_selectors_tz/getFullYear -Scenario: getHours + When CEL expression "timestamp('2009-02-13T23:31:30Z').getFullYear('-09:30')" is evaluated + Then value is celpy.celtypes.IntType(source=2009) - When CEL expression "timestamp('2009-02-13T23:31:30Z').getHours('2:00')" is evaluated - # int64_value:1 - Then value is IntType(source=1) +Scenario: timestamp_selectors_tz/getHours + When CEL expression "timestamp('2009-02-13T23:31:30Z').getHours('02:00')" is evaluated + Then value is celpy.celtypes.IntType(source=1) -Scenario: getMinutes +Scenario: timestamp_selectors_tz/getMinutes When CEL expression "timestamp('2009-02-13T23:31:30Z').getMinutes('Asia/Kathmandu')" is evaluated - # int64_value:16 - Then value is IntType(source=16) + Then value is celpy.celtypes.IntType(source=16) - -Scenario: getMonth +Scenario: timestamp_selectors_tz/getMonth When CEL expression "timestamp('2009-02-13T23:31:30Z').getMonth('UTC')" is evaluated - # int64_value:1 - Then value is IntType(source=1) - + Then value is celpy.celtypes.IntType(source=1) -Scenario: getSeconds +Scenario: timestamp_selectors_tz/getSeconds When CEL expression "timestamp('2009-02-13T23:31:30Z').getSeconds('-00:00')" is evaluated - # int64_value:30 - Then value is IntType(source=30) - + Then value is celpy.celtypes.IntType(source=30) # timestamp_equality -- Equality operations on timestamps. -Scenario: eq_same - When CEL expression "timestamp('2009-02-13T23:31:30Z') == timestamp('2009-02-13T23:31:30Z')" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: timestamp_equality/eq_same + When CEL expression "timestamp('2009-02-13T23:31:30Z') == timestamp('2009-02-13T23:31:30Z')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: eq_diff +Scenario: timestamp_equality/eq_diff When CEL expression "timestamp('2009-02-13T23:31:29Z') == timestamp('2009-02-13T23:31:30Z')" is evaluated - # bool_value:false - Then value is BoolType(source=False) - + Then value is celpy.celtypes.BoolType(source=False) -Scenario: neq_same +Scenario: timestamp_equality/neq_same When CEL expression "timestamp('1945-05-07T02:41:00Z') != timestamp('1945-05-07T02:41:00Z')" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Then value is celpy.celtypes.BoolType(source=False) - -Scenario: neq_diff +Scenario: timestamp_equality/neq_diff When CEL expression "timestamp('2000-01-01T00:00:00Z') != timestamp('2001-01-01T00:00:00Z')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) # duration_equality -- Equality tests for durations. -Scenario: eq_same - When CEL expression "duration('123s') == duration('123s')" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: duration_equality/eq_same + When CEL expression "duration('123s') == duration('123s')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: eq_diff +Scenario: duration_equality/eq_diff When CEL expression "duration('60s') == duration('3600s')" is evaluated - # bool_value:false - Then value is BoolType(source=False) - + Then value is celpy.celtypes.BoolType(source=False) -Scenario: neq_same +Scenario: duration_equality/neq_same When CEL expression "duration('604800s') != duration('604800s')" is evaluated - # bool_value:false - Then value is BoolType(source=False) - + Then value is celpy.celtypes.BoolType(source=False) -Scenario: neq_diff +Scenario: duration_equality/neq_diff When CEL expression "duration('86400s') != duration('86164s')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) # timestamp_arithmetic -- Arithmetic operations on timestamps and/or durations. -Scenario: add_duration_to_time - When CEL expression "timestamp('2009-02-13T23:00:00Z') + duration('240s') == timestamp('2009-02-13T23:04:00Z')" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: timestamp_arithmetic/add_duration_to_time + When CEL expression "timestamp('2009-02-13T23:00:00Z') + duration('240s') == timestamp('2009-02-13T23:04:00Z')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: add_time_to_duration +Scenario: timestamp_arithmetic/add_time_to_duration When CEL expression "duration('120s') + timestamp('2009-02-13T23:01:00Z') == timestamp('2009-02-13T23:03:00Z')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) - -Scenario: add_duration_to_duration +Scenario: timestamp_arithmetic/add_duration_to_duration When CEL expression "duration('600s') + duration('50s') == duration('650s')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) +Scenario: timestamp_arithmetic/add_time_to_duration_nanos_negative -Scenario: subtract_duration_from_time + When CEL expression "timestamp('0001-01-01T00:00:01.000000001Z') + duration('-999999999ns') == timestamp('0001-01-01T00:00:00.000000002Z')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) - When CEL expression "timestamp('2009-02-13T23:10:00Z') - duration('600s') == timestamp('2009-02-13T23:00:00Z')" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: timestamp_arithmetic/add_time_to_duration_nanos_positive + When CEL expression "timestamp('0001-01-01T00:00:01.999999999Z') + duration('999999999ns') == timestamp('0001-01-01T00:00:02.999999998Z')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: subtract_time_from_time +Scenario: timestamp_arithmetic/subtract_duration_from_time - When CEL expression "timestamp('2009-02-13T23:31:00Z') - timestamp('2009-02-13T23:29:00Z') == duration('120s')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + When CEL expression "timestamp('2009-02-13T23:10:00Z') - duration('600s') == timestamp('2009-02-13T23:00:00Z')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: timestamp_arithmetic/subtract_time_from_time + When CEL expression "timestamp('2009-02-13T23:31:00Z') - timestamp('2009-02-13T23:29:00Z') == duration('120s')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: subtract_duration_from_duration +Scenario: timestamp_arithmetic/subtract_duration_from_duration When CEL expression "duration('900s') - duration('42s') == duration('858s')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) # comparisons -- Comparisons on timestamps and/or durations. -Scenario: leq_timestamp_true - When CEL expression "timestamp('2009-02-13T23:00:00Z') <= timestamp('2009-02-13T23:00:00Z')" is evaluated - # bool_value:true - Then value is BoolType(source=True) +Scenario: comparisons/leq_timestamp_true + When CEL expression "timestamp('2009-02-13T23:00:00Z') <= timestamp('2009-02-13T23:00:00Z')" is evaluated + Then value is celpy.celtypes.BoolType(source=True) -Scenario: leq_timestamp_false +Scenario: comparisons/leq_timestamp_false When CEL expression "timestamp('2009-02-13T23:00:00Z') <= timestamp('2009-02-13T22:59:59Z')" is evaluated - # bool_value:false - Then value is BoolType(source=False) - + Then value is celpy.celtypes.BoolType(source=False) -Scenario: leq_duration_true +Scenario: comparisons/leq_duration_true When CEL expression "duration('200s') <= duration('200s')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) -Scenario: leq_duration_false +Scenario: comparisons/leq_duration_false When CEL expression "duration('300s') <= duration('200s')" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Then value is celpy.celtypes.BoolType(source=False) - -Scenario: less_timestamp_true +Scenario: comparisons/less_timestamp_true When CEL expression "timestamp('2009-02-13T23:00:00Z') < timestamp('2009-03-13T23:00:00Z')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) -Scenario: less_duration_true +Scenario: comparisons/less_duration_true When CEL expression "duration('200s') < duration('300s')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) -Scenario: geq_timestamp_true +Scenario: comparisons/geq_timestamp_true When CEL expression "timestamp('2009-02-13T23:00:00Z') >= timestamp('2009-02-13T23:00:00Z')" is evaluated - # bool_value:true - Then value is BoolType(source=True) + Then value is celpy.celtypes.BoolType(source=True) - -Scenario: geq_timestamp_false +Scenario: comparisons/geq_timestamp_false When CEL expression "timestamp('2009-02-13T22:58:00Z') >= timestamp('2009-02-13T23:00:00Z')" is evaluated - # bool_value:false - Then value is BoolType(source=False) - + Then value is celpy.celtypes.BoolType(source=False) -Scenario: geq_duration_true +Scenario: comparisons/geq_duration_true When CEL expression "duration('200s') >= duration('200s')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) -Scenario: geq_duration_false +Scenario: comparisons/geq_duration_false When CEL expression "duration('120s') >= duration('200s')" is evaluated - # bool_value:false - Then value is BoolType(source=False) + Then value is celpy.celtypes.BoolType(source=False) - -Scenario: greater_timestamp_true +Scenario: comparisons/greater_timestamp_true When CEL expression "timestamp('2009-02-13T23:59:00Z') > timestamp('2009-02-13T23:00:00Z')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) -Scenario: greater_duration_true +Scenario: comparisons/greater_duration_true When CEL expression "duration('300s') > duration('200s')" is evaluated - # bool_value:true - Then value is BoolType(source=True) - + Then value is celpy.celtypes.BoolType(source=True) # duration_converters -- Conversion functions on durations. Unlike timestamps, we don't, e.g. select the 'minutes' field - we convert the duration to integer minutes. -Scenario: get_hours - When CEL expression "duration('10000s').getHours()" is evaluated - # int64_value:2 - Then value is IntType(source=2) - - -Scenario: get_milliseconds - Need to import a variable to get milliseconds. - # type:{message_type:"google.protobuf.Duration"} - # Given type_env parameter "x" is TypeType(value='google.protobuf.Duration') - Given type_env parameter "x" is google.protobuf.Duration +Scenario: duration_converters/get_hours - # object_value:{[type.googleapis.com/google.protobuf.Duration]:{seconds:123 nanos:123456789}} - Given bindings parameter "x" is DurationType(seconds=123, nanos=123456789) + When CEL expression "duration('10000s').getHours()" is evaluated + Then value is celpy.celtypes.IntType(source=2) - When CEL expression "x.getMilliseconds()" is evaluated - # int64_value:123123 - Then value is IntType(source=123123) +@wip +Scenario: duration_converters/get_milliseconds + Obtain the milliseconds component of the duration. Note, this is not + the same as converting the duration to milliseconds. This behavior + will be deprecated. + Given type_env parameter "x" is celpy.celtypes.DurationType + and bindings parameter "x" is celpy.celtypes.DurationType(seconds=123, nanos=321456789) + When CEL expression 'x.getMilliseconds()' is evaluated + Then value is celpy.celtypes.IntType(source=321) -Scenario: get_minutes +Scenario: duration_converters/get_minutes When CEL expression "duration('3730s').getMinutes()" is evaluated - # int64_value:62 - Then value is IntType(source=62) - + Then value is celpy.celtypes.IntType(source=62) -Scenario: get_seconds +Scenario: duration_converters/get_seconds When CEL expression "duration('3730s').getSeconds()" is evaluated - # int64_value:3730 - Then value is IntType(source=3730) - + Then value is celpy.celtypes.IntType(source=3730) # timestamp_range -- Tests for out-of-range operations on timestamps. -Scenario: from_string_under + +Scenario: timestamp_range/from_string_under When CEL expression "timestamp('0000-01-01T00:00:00Z')" is evaluated - # errors:{message:"range"} Then eval_error is 'range' - -Scenario: from_string_over +Scenario: timestamp_range/from_string_over When CEL expression "timestamp('10000-01-01T00:00:00Z')" is evaluated - # errors:{message:"range"} Then eval_error is 'range' +Scenario: timestamp_range/add_duration_under + + When CEL expression "timestamp('0001-01-01T00:00:00Z') + duration('-1s')" is evaluated + Then eval_error is 'range' + +Scenario: timestamp_range/add_duration_over -Scenario: add_duration_under + When CEL expression "timestamp('9999-12-31T23:59:59Z') + duration('1s')" is evaluated + Then eval_error is 'range' + +@wip +Scenario: timestamp_range/add_duration_nanos_over - When CEL expression "timestamp('0001-01-01T00:00:00Z') - duration('10s')" is evaluated - # errors:{message:"range"} + When CEL expression "timestamp('9999-12-31T23:59:59.999999999Z') + duration('1ns')" is evaluated Then eval_error is 'range' +@wip +Scenario: timestamp_range/add_duration_nanos_under + + When CEL expression "timestamp('0001-01-01T00:00:00Z') + duration('-1ns')" is evaluated + Then eval_error is 'range' -Scenario: add_duration_over +@wip +Scenario: timestamp_range/sub_time_duration_over - When CEL expression "timestamp('9999-12-31T23:59:59Z') + duration('10s')" is evaluated - # errors:{message:"range"} + When CEL expression "timestamp('9999-12-31T23:59:59Z') - timestamp('0001-01-01T00:00:00Z')" is evaluated Then eval_error is 'range' +@wip +Scenario: timestamp_range/sub_time_duration_under + + When CEL expression "timestamp('0001-01-01T00:00:00Z') - timestamp('9999-12-31T23:59:59Z')" is evaluated + Then eval_error is 'range' # duration_range -- Tests for out-of-range operations on durations. -Scenario: from_string_under + +Scenario: duration_range/from_string_under When CEL expression "duration('-320000000000s')" is evaluated - # errors:{message:"range"} Then eval_error is 'range' - -Scenario: from_string_over +Scenario: duration_range/from_string_over When CEL expression "duration('320000000000s')" is evaluated - # errors:{message:"range"} Then eval_error is 'range' - -Scenario: add_under +Scenario: duration_range/add_under When CEL expression "duration('-200000000000s') + duration('-200000000000s')" is evaluated - # errors:{message:"range"} Then eval_error is 'range' - -Scenario: add_over +Scenario: duration_range/add_over When CEL expression "duration('200000000000s') + duration('200000000000s')" is evaluated - # errors:{message:"range"} Then eval_error is 'range' + +@wip +Scenario: duration_range/sub_under + + When CEL expression "duration('-200000000000s') - duration('200000000000s')" is evaluated + Then eval_error is 'range' + +@wip +Scenario: duration_range/sub_over + + When CEL expression "duration('200000000000s') - duration('-200000000000s')" is evaluated + Then eval_error is 'range' + diff --git a/features/timestamps.textproto b/features/timestamps.textproto index d810ad7..d3d0584 100644 --- a/features/timestamps.textproto +++ b/features/timestamps.textproto @@ -1,3 +1,6 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + name: "timestamps" description: "Timestamp and duration tests." section { @@ -13,11 +16,21 @@ section { expr: "string(timestamp('2009-02-13T23:31:30Z'))" value: { string_value: "2009-02-13T23:31:30Z" } } + test { + name: "toString_timestamp_nanos" + expr: "string(timestamp('9999-12-31T23:59:59.999999999Z'))" + value: { string_value: "9999-12-31T23:59:59.999999999Z" } + } test { name: "toType_timestamp" expr: "type(timestamp('2009-02-13T23:31:30Z'))" value: { type_value: "google.protobuf.Timestamp" } } + test { + name: "type_comparison" + expr: "google.protobuf.Timestamp == type(timestamp('2009-02-13T23:31:30Z'))" + value: { bool_value: true } + } } section { name: "duration_conversions" @@ -32,6 +45,11 @@ section { expr: "type(duration('1000000s'))" value: { type_value: "google.protobuf.Duration" } } + test { + name: "type_comparison" + expr: "google.protobuf.Duration == type(duration('1000000s'))" + value: { bool_value: true } + } } section { @@ -110,7 +128,7 @@ section { } test { name: "getDayOfMonth_numerical_neg" - expr: "timestamp('2009-02-13T02:00:00Z').getDayOfMonth('-2:30')" + expr: "timestamp('2009-02-13T02:00:00Z').getDayOfMonth('-02:30')" value: { int64_value: 11 } } test { @@ -130,12 +148,12 @@ section { } test { name: "getFullYear" - expr: "timestamp('2009-02-13T23:31:30Z').getFullYear('-9:30')" + expr: "timestamp('2009-02-13T23:31:30Z').getFullYear('-09:30')" value: { int64_value: 2009 } } test { name: "getHours" - expr: "timestamp('2009-02-13T23:31:30Z').getHours('2:00')" + expr: "timestamp('2009-02-13T23:31:30Z').getHours('02:00')" value: { int64_value: 1 } } test { @@ -208,27 +226,37 @@ section { test { name: "add_duration_to_time" expr: "timestamp('2009-02-13T23:00:00Z') + duration('240s') == timestamp('2009-02-13T23:04:00Z')" - value: { bool_value: true} + value: { bool_value: true } } test { name: "add_time_to_duration" expr: "duration('120s') + timestamp('2009-02-13T23:01:00Z') == timestamp('2009-02-13T23:03:00Z')" - value: { bool_value: true} + value: { bool_value: true } } test { name: "add_duration_to_duration" expr: "duration('600s') + duration('50s') == duration('650s')" value: { bool_value: true } } + test { + name: "add_time_to_duration_nanos_negative" + expr: "timestamp('0001-01-01T00:00:01.000000001Z') + duration('-999999999ns') == timestamp('0001-01-01T00:00:00.000000002Z')" + value: { bool_value: true } + } + test { + name: "add_time_to_duration_nanos_positive" + expr: "timestamp('0001-01-01T00:00:01.999999999Z') + duration('999999999ns') == timestamp('0001-01-01T00:00:02.999999998Z')" + value: { bool_value: true } + } test { name: "subtract_duration_from_time" expr: "timestamp('2009-02-13T23:10:00Z') - duration('600s') == timestamp('2009-02-13T23:00:00Z')" - value: { bool_value: true} + value: { bool_value: true } } test { name: "subtract_time_from_time" expr: "timestamp('2009-02-13T23:31:00Z') - timestamp('2009-02-13T23:29:00Z') == duration('120s')" - value: { bool_value: true} + value: { bool_value: true } } test { name: "subtract_duration_from_duration" @@ -310,7 +338,7 @@ section { } test { name: "get_milliseconds" - description: "Need to import a variable to get milliseconds." + description: "Obtain the milliseconds component of the duration. Note, this is not the same as converting the duration to milliseconds. This behavior will be deprecated." expr: "x.getMilliseconds()" type_env { name: "x" @@ -321,16 +349,15 @@ section { value { value { object_value { - [type.googleapis.com/google.protobuf.Duration] - { + [type.googleapis.com/google.protobuf.Duration] { seconds: 123 - nanos: 123456789 + nanos: 321456789 } } } } } - value: { int64_value: 123123 } + value: { int64_value: 321 } } test { name: "get_minutes" @@ -362,14 +389,42 @@ section { } test { name: "add_duration_under" - expr: "timestamp('0001-01-01T00:00:00Z') - duration('10s')" + expr: "timestamp('0001-01-01T00:00:00Z') + duration('-1s')" eval_error { errors { message: "range" } } } test { name: "add_duration_over" - expr: "timestamp('9999-12-31T23:59:59Z') + duration('10s')" + expr: "timestamp('9999-12-31T23:59:59Z') + duration('1s')" + eval_error { + errors { message: "range" } + } + } + test { + name: "add_duration_nanos_over" + expr: "timestamp('9999-12-31T23:59:59.999999999Z') + duration('1ns')" + eval_error { + errors { message: "range" } + } + } + test { + name: "add_duration_nanos_under" + expr: "timestamp('0001-01-01T00:00:00Z') + duration('-1ns')" + eval_error { + errors { message: "range" } + } + } + test { + name: "sub_time_duration_over" + expr: "timestamp('9999-12-31T23:59:59Z') - timestamp('0001-01-01T00:00:00Z')" + eval_error { + errors { message: "range" } + } + } + test { + name: "sub_time_duration_under" + expr: "timestamp('0001-01-01T00:00:00Z') - timestamp('9999-12-31T23:59:59Z')" eval_error { errors { message: "range" } } @@ -406,4 +461,18 @@ section { errors { message: "range" } } } + test { + name: "sub_under" + expr: "duration('-200000000000s') - duration('200000000000s')" + eval_error { + errors { message: "range" } + } + } + test { + name: "sub_over" + expr: "duration('200000000000s') - duration('-200000000000s')" + eval_error { + errors { message: "range" } + } + } } diff --git a/features/type_deduction.feature b/features/type_deduction.feature new file mode 100644 index 0000000..5572994 --- /dev/null +++ b/features/type_deduction.feature @@ -0,0 +1,39 @@ +@conformance +Feature: type_deductions + Tests for type checker deduced types + +# constant_literals -- + + + +# complex_initializers -- + + + +# field_access -- + + + +# indexing -- + + + +# functions -- + + + +# flexible_type_parameter_assignment -- + + + +# wrappers -- + + + +# type_parameters -- + + + +# legacy_nullable_types -- + + diff --git a/features/type_deduction.textproto b/features/type_deduction.textproto new file mode 100644 index 0000000..1a0e261 --- /dev/null +++ b/features/type_deduction.textproto @@ -0,0 +1,953 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + +name: "type_deductions" +description: "Tests for type checker deduced types" + +section { + name: "constant_literals" + test { + name: "bool" + expr: "true" + typed_result { + result { + bool_value: true + } + deduced_type { + primitive: BOOL + } + } + } + test { + name: "int" + expr: "42" + typed_result { + result { + int64_value: 42 + } + deduced_type { + primitive: INT64 + } + } + } + test { + name: "uint" + expr: "42u" + typed_result { + result { + uint64_value: 42 + } + deduced_type { + primitive: UINT64 + } + } + } + test { + name: "double" + expr: "0.1" + typed_result { + result { + double_value: 0.1 + } + deduced_type { + primitive: DOUBLE + } + } + } + test { + name: "string" + expr: "\"test\"" + typed_result { + result { + string_value: "test" + } + deduced_type { + primitive: STRING + } + } + } + test { + name: "bytes" + expr: "b\"test\"" + typed_result { + result { + bytes_value: "test" + } + deduced_type { + primitive: BYTES + } + } + } + test { + name: "null" + expr: "null" + typed_result { + result { + null_value: NULL_VALUE + } + deduced_type { + null: NULL_VALUE + } + } + } +} + +section { + name: "complex_initializers" + test { + name: "list" + expr: "[1]" + typed_result { + result { + list_value { + values { + int64_value: 1 + } + } + } + deduced_type { + list_type { elem_type { primitive: INT64 } } + } + } + } + test { + name: "map" + expr: "{'abc': 123}" + typed_result { + result { + map_value { + entries { + key { string_value: "abc" } + value { int64_value: 123 } + } + } + } + deduced_type { + map_type { + key_type { primitive: STRING } + value_type { primitive: INT64 } + } + } + } + } + test { + name: "struct" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_int64: 1}" + typed_result { + result { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_int64: 1 + } + } + } + deduced_type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } +} + +section { + name: "field_access" + test { + name: "int_field" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_int64: 1}.single_int64" + typed_result { + result { + int64_value: 1 + } + deduced_type { + primitive: INT64 + } + } + } + test { + name: "repeated_int_field" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.repeated_int64" + typed_result { + result { + list_value {} + } + deduced_type { + list_type { elem_type { primitive: INT64 } } + } + } + } + test { + name: "map_bool_int" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.map_bool_int64" + typed_result { + result { + map_value {} + } + deduced_type { + map_type { + key_type { primitive: BOOL } + value_type { primitive: INT64 } + } + } + } + } + test { + name: "enum_field" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.standalone_enum" + typed_result { + result { + int64_value: 0 + } + deduced_type { primitive: INT64 } + } + } + test { + name: "repeated_enum_field" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.repeated_nested_enum" + typed_result { + result { + list_value {} + } + deduced_type { + list_type { elem_type { primitive: INT64 } } + } + } + } + test { + name: "enum_map_field" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{}.map_int32_enum" + typed_result { + result { + map_value {} + } + deduced_type { + map_type { + key_type { primitive: INT64 } + value_type { primitive: INT64 } + } + } + } + } +} + +section { + name: "indexing" + test { + name: "list" + expr: "['foo'][0]" + typed_result { + result { + string_value: "foo" + } + deduced_type { + primitive: STRING + } + } + } + test { + name: "map" + expr: "{'abc': 123}['abc']" + typed_result { + result { + int64_value: 123 + } + deduced_type { + primitive: INT64 + } + } + } +} + +section { + name: "functions" + test { + name: "nested_calls" + expr: "('foo' + 'bar').startsWith('foo')" + typed_result { + result { + bool_value: true + } + deduced_type { + primitive: BOOL + } + } + } + test { + name: "function_result_type" + expr: "fn('abc', 123)" + check_only: true + type_env { + name: "fn" + function { + overloads { + overload_id: "fn_string_int" + result_type { primitive: STRING } + params { primitive: STRING } + params { primitive: INT64 } + } + } + } + typed_result { + deduced_type { + primitive: STRING + } + } + } +} + +# These are somewhat complex expressions for edge cases in type inference. The +# result values are not interesting, but the inferred types are. +section { + name: "flexible_type_parameter_assignment" + test { + name: "list_parameter" + expr: "[[], [[]], [[[]]], [[[[]]]]]" + check_only: true + typed_result { + deduced_type { + list_type { + elem_type { + list_type { + elem_type { + list_type { + elem_type { + list_type { + elem_type { + list_type { + elem_type { dyn {} } + } + } + } + } + } + } + } + } + } + } + } + } + test { + name: "list_parameter_order_independent" + expr: "[[[[[]]]], [], [[[]]]]" + check_only: true + typed_result { + deduced_type { + list_type { + elem_type { + list_type { + elem_type { + list_type { + elem_type { + list_type { + elem_type { + list_type { + elem_type { dyn {} } + } + } + } + } + } + } + } + } + } + } + } + } + test { + name: "comprehension_type_var_aliasing" + expr: "msg.repeated_nested_message.map(x, x).map(y, y.bb)" + check_only: true + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + typed_result { + deduced_type { + list_type { + elem_type { + primitive: INT64 + } + } + } + } + } + test { + name: "overload_type_var_aliasing" + expr: "([] + msg.repeated_nested_message + [])[0].bb" + check_only: true + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + typed_result { + deduced_type { + primitive: INT64 + } + } + } + test { + name: "unconstrained_type_var_as_dyn" + expr: "([].map(x,x))[0].foo" + check_only: true + typed_result { + deduced_type { + dyn {} + } + } + } + test { + name: "list_parameters_do_not_unify" + expr: "[msg.single_int64_wrapper, msg.single_string_wrapper]" + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + check_only: true + typed_result { + deduced_type { + list_type { + elem_type { + dyn {} + } + } + } + } + } + test { + name: "optional_none" + expr: "[optional.none(), optional.of(1)]" + check_only: true + typed_result { + deduced_type { + list_type { + elem_type { + abstract_type { + name: "optional_type" + parameter_types { primitive: INT64 } + } + } + } + } + } + } + test { + name: "optional_none_2" + expr: "[optional.of(1), optional.none()]" + check_only: true + typed_result { + deduced_type { + list_type { + elem_type { + abstract_type { + name: "optional_type" + parameter_types { primitive: INT64 } + } + } + } + } + } + } + test { + name: "optional_dyn_promotion" + expr: "[optional.of(1), optional.of(dyn(1))]" + check_only: true + typed_result { + deduced_type { + list_type { + elem_type { + abstract_type { + name: "optional_type" + parameter_types { dyn {} } + } + } + } + } + } + } + test { + name: "optional_dyn_promotion_2" + expr: "[optional.of(dyn(1)), optional.of(1)]" + check_only: true + typed_result { + deduced_type { + list_type { + elem_type { + abstract_type { + name: "optional_type" + parameter_types { dyn {} } + } + } + } + } + } + } + test { + name: "optional_in_ternary" + expr: "true ? optional.of(dyn(1)) : optional.of(1)" + check_only: true + typed_result { + deduced_type { + abstract_type { + name: "optional_type" + parameter_types { dyn {} } + } + } + } + } +} + +# Wrapper types have some special handling. They generally behave like a union +# type e.g. `null | int64` with auto-unboxing, but there are some quirks. +section { + name: "wrappers" + test { + name: "wrapper_promotion" + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + expr: "[msg.single_int64_wrapper, msg.single_int64]" + check_only: true + typed_result { + deduced_type { + list_type { + elem_type { + wrapper: INT64 + } + } + } + } + } + test { + name: "wrapper_promotion_2" + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + expr: "[msg.single_int64, msg.single_int64_wrapper]" + check_only: true + typed_result { + deduced_type { + list_type { + elem_type { + wrapper: INT64 + } + } + } + } + } + test { + name: "wrapper_dyn_promotion" + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + expr: "[msg.single_int64_wrapper, msg.single_int64, dyn(1)]" + check_only: true + typed_result { + deduced_type { + list_type { + elem_type { + dyn {} + } + } + } + } + } + test { + name: "wrapper_dyn_promotion_2" + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + expr: "[dyn(1), msg.single_int64_wrapper, msg.single_int64]" + check_only: true + typed_result { + deduced_type { + list_type { + elem_type { + dyn {} + } + } + } + } + } + test { + name: "wrapper_primitive_assignable" + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + expr: "msg.single_int64_wrapper + 1" + check_only: true + typed_result { + deduced_type { + primitive: INT64 + } + } + } + test { + name: "wrapper_null_assignable" + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + expr: "msg.single_int64_wrapper == null" + check_only: true + typed_result { + deduced_type { + primitive: BOOL + } + } + } + test { + name: "wrapper_ternary_parameter_assignment" + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + expr: "false ? msg.single_int64_wrapper : null" + check_only: true + typed_result { + deduced_type { + wrapper: INT64 + } + } + } + test { + name: "wrapper_ternary_parameter_assignment_2" + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + expr: "true ? msg.single_int64_wrapper : 42" + check_only: true + typed_result { + deduced_type { + wrapper: INT64 + } + } + } +} + +section { + name: "type_parameters" + test { + name: "multiple_parameters_generality" + check_only: true + expr: "[tuple(1, 2u, 3.0), tuple(dyn(1), dyn(2u), dyn(3.0))][0]" + type_env { + name: "tuple" + function { + overloads { + overload_id: "tuple_T_U_V" + params { type_param: "T" } + params { type_param: "U" } + params { type_param: "V" } + result_type { + abstract_type { + name: "tuple" + parameter_types { type_param: "T" } + parameter_types { type_param: "U" } + parameter_types { type_param: "V" } + } + } + } + } + } + typed_result { + deduced_type { + abstract_type { + name: "tuple" + parameter_types { dyn {} } + parameter_types { dyn {} } + parameter_types { dyn {} } + } + } + } + } + test { + name: "multiple_parameters_generality_2" + check_only: true + expr: "sort(tuple(dyn(1), 2u, 3.0))" + type_env { + name: "tuple" + function { + overloads { + overload_id: "tuple_T_U_V" + params { type_param: "T" } + params { type_param: "U" } + params { type_param: "V" } + result_type { + abstract_type { + name: "tuple" + parameter_types { type_param: "T" } + parameter_types { type_param: "U" } + parameter_types { type_param: "V" } + } + } + } + } + } + type_env { + name: "sort" + function { + overloads { + overload_id: "sort_tuple_T_T_T" + params { + abstract_type { + name: "tuple" + parameter_types { type_param: "T" } + parameter_types { type_param: "T" } + parameter_types { type_param: "T" } + } + } + result_type { + abstract_type { + name: "tuple" + parameter_types { type_param: "T" } + parameter_types { type_param: "T" } + parameter_types { type_param: "T" } + } + } + } + } + } + typed_result { + deduced_type { + abstract_type { + name: "tuple" + parameter_types { dyn {} } + parameter_types { dyn {} } + parameter_types { dyn {} } + } + } + } + } + test { + name: "multiple_parameters_parameterized_ovl" + check_only: true + expr: "tuple(1, 2u, 3.0) == tuple(1, dyn(2u), dyn(3.0))" + type_env { + name: "tuple" + function { + overloads { + overload_id: "tuple_T_U_V" + params { type_param: "T" } + params { type_param: "U" } + params { type_param: "V" } + result_type { + abstract_type { + name: "tuple" + parameter_types { type_param: "T" } + parameter_types { type_param: "U" } + parameter_types { type_param: "V" } + } + } + } + } + } + typed_result { + deduced_type { + primitive: BOOL + } + } + } + test { + name: "multiple_parameters_parameterized_ovl_2" + check_only: true + expr: "tuple(dyn(1), dyn(2u), 3.0) == tuple(1, 2u, 3.0)" + type_env { + name: "tuple" + function { + overloads { + overload_id: "tuple_T_U_V" + params { type_param: "T" } + params { type_param: "U" } + params { type_param: "V" } + result_type { + abstract_type { + name: "tuple" + parameter_types { type_param: "T" } + parameter_types { type_param: "U" } + parameter_types { type_param: "V" } + } + } + } + } + } + typed_result { + deduced_type { + primitive: BOOL + } + } + } +} + +# Messages, some well-known types, and abstract can be assigned from null in the +# CEL type checkers for historical reasons. For backward compatibility, we +# maintain this behavior but it's a bit inconsistent with the intended meaning +# of null (a singleton representing a JSON null literal) in CEL. +section { + name: "legacy_nullable_types" + test { + name: "null_assignable_to_message_parameter_candidate" + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + bindings { + key: "msg" + value { + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] {} + } + } + } + } + expr: "[msg, null][0]" + typed_result { + deduced_type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + result { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] {} + } + } + } + } + test { + name: "null_assignable_to_duration_parameter_candidate" + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + bindings { + key: "msg" + value { + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] {} + } + } + } + } + expr: "[msg.single_duration, null][0]" + typed_result { + deduced_type { + well_known: DURATION + } + result { + object_value { + [type.googleapis.com/google.protobuf.Duration] {} + } + } + } + } + test { + name: "null_assignable_to_timestamp_parameter_candidate" + type_env { + name: "msg" + ident { + type { + message_type: "cel.expr.conformance.proto3.TestAllTypes" + } + } + } + bindings { + key: "msg" + value { + value { + object_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] {} + } + } + } + } + expr: "[msg.single_timestamp, null][0]" + typed_result { + deduced_type { + well_known: TIMESTAMP + } + result { + object_value { + [type.googleapis.com/google.protobuf.Timestamp] {} + } + } + } + } + test { + name: "null_assignable_to_abstract_parameter_candidate" + expr: "[optional.of(1), null][0]" + check_only: true + typed_result { + deduced_type { + abstract_type { + name: "optional_type" + parameter_types { primitive: INT64 } + } + } + } + } +} diff --git a/features/unknowns.feature b/features/unknowns.feature index a810872..2a2a62d 100644 --- a/features/unknowns.feature +++ b/features/unknowns.feature @@ -1,3 +1,3 @@ - +@conformance Feature: unknowns Tests for evaluation with unknown inputs. diff --git a/features/unknowns.textproto b/features/unknowns.textproto index 4b17570..1464f83 100644 --- a/features/unknowns.textproto +++ b/features/unknowns.textproto @@ -1,2 +1,5 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: google.api.expr.test.v1.SimpleTestFile + name: "unknowns" description: "Tests for evaluation with unknown inputs." diff --git a/features/wrappers.feature b/features/wrappers.feature new file mode 100644 index 0000000..3296b56 --- /dev/null +++ b/features/wrappers.feature @@ -0,0 +1,311 @@ +@conformance +Feature: wrappers + Conformance tests related to wrapper types. + +# bool -- + + +@wip +Scenario: bool/to_any + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: google.protobuf.BoolValue{value: true}}.single_any' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +@wip +Scenario: bool/to_json + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: google.protobuf.BoolValue{value: true}}.single_value' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + +Scenario: bool/to_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_bool_wrapper: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + + +# int32 -- + + +@wip +Scenario: int32/to_any + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: google.protobuf.Int32Value{value: 1}}.single_any' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: int32/to_json + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: google.protobuf.Int32Value{value: 1}}.single_value' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +@wip +Scenario: int32/to_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int32_wrapper: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + + +# int64 -- + + +@wip +Scenario: int64/to_any + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: google.protobuf.Int64Value{value: 1}}.single_any' is evaluated + Then value is celpy.celtypes.IntType(source=1) + +@wip +Scenario: int64/to_json_number + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: google.protobuf.Int64Value{value: 1}}.single_value' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +@wip +Scenario: int64/to_json_string + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: google.protobuf.Int64Value{value: 9223372036854775807}}.single_value' is evaluated + Then value is celpy.celtypes.StringType(source='9223372036854775807') + +Scenario: int64/to_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_int64_wrapper: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + + +# uint32 -- + + +@wip +Scenario: uint32/to_any + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: google.protobuf.UInt32Value{value: 1u}}.single_any' is evaluated + Then value is celpy.celtypes.UintType(source=1) + +@wip +Scenario: uint32/to_json + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: google.protobuf.UInt32Value{value: 1u}}.single_value' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +@wip +Scenario: uint32/to_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_uint32_wrapper: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + + +# uint64 -- + + +@wip +Scenario: uint64/to_any + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: google.protobuf.UInt64Value{value: 1u}}.single_any' is evaluated + Then value is celpy.celtypes.UintType(source=1) + +@wip +Scenario: uint64/to_json_number + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: google.protobuf.UInt64Value{value: 1u}}.single_value' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +@wip +Scenario: uint64/to_json_string + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: google.protobuf.UInt64Value{value: 18446744073709551615u}}.single_value' is evaluated + Then value is celpy.celtypes.StringType(source='18446744073709551615') + +Scenario: uint64/to_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_uint64_wrapper: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + + +# float -- + + +@wip +Scenario: float/to_any + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: google.protobuf.FloatValue{value: 1.0}}.single_any' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +@wip +Scenario: float/to_json + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: google.protobuf.FloatValue{value: 1.0}}.single_value' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +@wip +Scenario: float/to_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_float_wrapper: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + + +# double -- + + +@wip +Scenario: double/to_any + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: google.protobuf.DoubleValue{value: 1.0}}.single_any' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +@wip +Scenario: double/to_json + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: google.protobuf.DoubleValue{value: 1.0}}.single_value' is evaluated + Then value is celpy.celtypes.DoubleType(source=1.0) + +Scenario: double/to_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_double_wrapper: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + + +# bytes -- + + +@wip +Scenario: bytes/to_any + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_any: google.protobuf.BytesValue{value: b'foo'}}.single_any" is evaluated + Then value is celpy.celtypes.BytesType(source=b'foo') + +@wip +Scenario: bytes/to_json + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_value: google.protobuf.BytesValue{value: b'foo'}}.single_value" is evaluated + Then value is celpy.celtypes.StringType(source='Zm9v') + +Scenario: bytes/to_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_bytes_wrapper: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + + +# string -- + + +@wip +Scenario: string/to_any + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_any: google.protobuf.StringValue{value: 'foo'}}.single_any" is evaluated + Then value is celpy.celtypes.StringType(source='foo') + +@wip +Scenario: string/to_json + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_value: google.protobuf.StringValue{value: 'foo'}}.single_value" is evaluated + Then value is celpy.celtypes.StringType(source='foo') + +Scenario: string/to_null + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_string_wrapper: null} == TestAllTypes{}' is evaluated + Then value is celpy.celtypes.BoolType(source=True) + + +# value -- + + +@wip +Scenario: value/default_to_json + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: TestAllTypes{}.single_value}.single_any' is evaluated + Then value is None + + +# list_value -- + + +Scenario: list_value/literal_to_any + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: []}.single_any' is evaluated + Then value is [] + + +# struct -- + + +Scenario: struct/literal_to_any + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_any: {}}.single_any' is evaluated + Then value is celpy.celtypes.MapType({}) + + +# field_mask -- + + +@wip +Scenario: field_mask/to_json + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_value: google.protobuf.FieldMask{paths: ['foo', 'bar']}}.single_value" is evaluated + Then value is celpy.celtypes.StringType(source='foo,bar') + + +# duration -- + + +@wip +Scenario: duration/to_json + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_value: duration('1000000s')}.single_value" is evaluated + Then value is celpy.celtypes.StringType(source='1000000s') + + +# timestamp -- + + +@wip +Scenario: timestamp/to_json + + Given container is 'cel.expr.conformance.proto3' + When CEL expression "TestAllTypes{single_value: timestamp('9999-12-31T23:59:59.999999999Z')}.single_value" is evaluated + Then value is celpy.celtypes.StringType(source='9999-12-31T23:59:59.999999999Z') + + +# empty -- + + +@wip +Scenario: empty/to_json + + Given container is 'cel.expr.conformance.proto3' + When CEL expression 'TestAllTypes{single_value: google.protobuf.Empty{}}.single_value' is evaluated + Then value is celpy.celtypes.MapType({}) + diff --git a/features/wrappers.textproto b/features/wrappers.textproto new file mode 100644 index 0000000..4ec9e82 --- /dev/null +++ b/features/wrappers.textproto @@ -0,0 +1,374 @@ +# proto-file: ../../../proto/cel/expr/conformance/test/simple.proto +# proto-message: cel.expr.conformance.test.SimpleTestFile + +name: "wrappers" +description: "Conformance tests related to wrapper types." + +# google.protobuf.BoolValue +section { + name: "bool" + test { + name: "to_any" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_any: google.protobuf.BoolValue{value: true}}.single_any" + value { + bool_value: true + } + } + test { + name: "to_json" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: google.protobuf.BoolValue{value: true}}.single_value" + value { + bool_value: true + } + } + test { + name: "to_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_bool_wrapper: null} == TestAllTypes{}" + value { + bool_value: true + } + } +} + +# google.protobuf.Int32Value +section { + name: "int32" + test { + name: "to_any" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_any: google.protobuf.Int32Value{value: 1}}.single_any" + value { + int64_value: 1 + } + } + test { + name: "to_json" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: google.protobuf.Int32Value{value: 1}}.single_value" + value { + double_value: 1 + } + } + test { + name: "to_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_int32_wrapper: null} == TestAllTypes{}" + value { + bool_value: true + } + } +} + +# google.protobuf.Int64Value +section { + name: "int64" + test { + name: "to_any" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_any: google.protobuf.Int64Value{value: 1}}.single_any" + value { + int64_value: 1 + } + } + test { + name: "to_json_number" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: google.protobuf.Int64Value{value: 1}}.single_value" + value { + double_value: 1 + } + } + test { + name: "to_json_string" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: google.protobuf.Int64Value{value: 9223372036854775807}}.single_value" + value { + string_value: "9223372036854775807" + } + } + test { + name: "to_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_int64_wrapper: null} == TestAllTypes{}" + value { + bool_value: true + } + } +} + +# google.protobuf.UInt32Value +section { + name: "uint32" + test { + name: "to_any" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_any: google.protobuf.UInt32Value{value: 1u}}.single_any" + value { + uint64_value: 1 + } + } + test { + name: "to_json" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: google.protobuf.UInt32Value{value: 1u}}.single_value" + value { + double_value: 1 + } + } + test { + name: "to_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_uint32_wrapper: null} == TestAllTypes{}" + value { + bool_value: true + } + } +} + +# google.protobuf.UInt64Value +section { + name: "uint64" + test { + name: "to_any" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_any: google.protobuf.UInt64Value{value: 1u}}.single_any" + value { + uint64_value: 1 + } + } + test { + name: "to_json_number" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: google.protobuf.UInt64Value{value: 1u}}.single_value" + value { + double_value: 1 + } + } + test { + name: "to_json_string" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: google.protobuf.UInt64Value{value: 18446744073709551615u}}.single_value" + value { + string_value: "18446744073709551615" + } + } + test { + name: "to_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_uint64_wrapper: null} == TestAllTypes{}" + value { + bool_value: true + } + } +} + +# google.protobuf.FloatValue +section { + name: "float" + test { + name: "to_any" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_any: google.protobuf.FloatValue{value: 1.0}}.single_any" + value { + double_value: 1 + } + } + test { + name: "to_json" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: google.protobuf.FloatValue{value: 1.0}}.single_value" + value { + double_value: 1 + } + } + test { + name: "to_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_float_wrapper: null} == TestAllTypes{}" + value { + bool_value: true + } + } +} + +# google.protobuf.DoubleValue +section { + name: "double" + test { + name: "to_any" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_any: google.protobuf.DoubleValue{value: 1.0}}.single_any" + value { + double_value: 1 + } + } + test { + name: "to_json" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: google.protobuf.DoubleValue{value: 1.0}}.single_value" + value { + double_value: 1 + } + } + test { + name: "to_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_double_wrapper: null} == TestAllTypes{}" + value { + bool_value: true + } + } +} + +# google.protobuf.BytesValue +section { + name: "bytes" + test { + name: "to_any" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_any: google.protobuf.BytesValue{value: b'foo'}}.single_any" + value { + bytes_value: "foo" + } + } + test { + name: "to_json" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: google.protobuf.BytesValue{value: b'foo'}}.single_value" + value { + string_value: "Zm9v" + } + } + test { + name: "to_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_bytes_wrapper: null} == TestAllTypes{}" + value { + bool_value: true + } + } +} + +# google.protobuf.StringValue +section { + name: "string" + test { + name: "to_any" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_any: google.protobuf.StringValue{value: 'foo'}}.single_any" + value { + string_value: "foo" + } + } + test { + name: "to_json" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: google.protobuf.StringValue{value: 'foo'}}.single_value" + value { + string_value: "foo" + } + } + test { + name: "to_null" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_string_wrapper: null} == TestAllTypes{}" + value { + bool_value: true + } + } +} + +# google.protobuf.Value +section { + name: "value" + test { + name: "default_to_json" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_any: TestAllTypes{}.single_value}.single_any" + value { + null_value: NULL_VALUE + } + } +} + +# google.protobuf.ListValue +section { + name: "list_value" + description: "" + test { + name: "literal_to_any" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_any: []}.single_any" + value { + list_value {} + } + } +} + +# google.protobuf.Struct +section { + name: "struct" + test { + name: "literal_to_any" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_any: {}}.single_any" + value { + map_value {} + } + } +} + +# google.protobuf.FieldMask +section { + name: "field_mask" + test { + name: "to_json" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: google.protobuf.FieldMask{paths: ['foo', 'bar']}}.single_value" + value { + string_value: "foo,bar" + } + } +} + +# google.protobuf.Duration +section { + name: "duration" + test { + name: "to_json" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: duration('1000000s')}.single_value" + value { + string_value: "1000000s" + } + } +} + +# google.protobuf.Timestamp +section { + name: "timestamp" + test { + name: "to_json" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: timestamp('9999-12-31T23:59:59.999999999Z')}.single_value" + value { + string_value: "9999-12-31T23:59:59.999999999Z" + } + } +} + +# google.protobuf.Empty +section { + name: "empty" + test { + name: "to_json" + container: "cel.expr.conformance.proto3" + expr: "TestAllTypes{single_value: google.protobuf.Empty{}}.single_value" + value { + map_value {} + } + } +} diff --git a/pyproject.toml b/pyproject.toml index 0f7916d..16c539a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,6 +50,9 @@ build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/celpy"] +[[tool.uv.index]] +url = "https://buf.build/gen/python" + [dependency-groups] dev = [ "behave>=1.2.6", @@ -63,4 +66,64 @@ dev = [ "types-pyyaml>=6.0.12.20250516", "google-re2-stubs", "sphinxcontrib-plantuml>=0.30", + "google-cel-spec-protocolbuffers-python==32.0.0.1.20250512201741+dffb8c8cf781", + "google-cel-spec-protocolbuffers-pyi==32.1.0.1.20250512201741+dffb8c8cf781", + "jinja2>=3.1.6", + "pytest-cov>=6.3.0", + "protobuf>=6.32.1", + "types-protobuf>=6.30.2.20250914", +] + +[tool.tox] +envlist = ["py39", "py310", "py311", "py312", "py313", "lint", "tools"] +minversion = "4.24.0" + +[tool.tox.env_run_base] +description = "Full test suite" +dependency_groups = ["dev"] +setenv = { PYTHONPATH = "./src" } +commands = [ + ["pytest", "-vv"], + ["pytest", "-v", "--doctest-modules", "src"], + ["pytest", "-v", "--doctest-modules", "README.rst"], + ["behave", "--tags=~@wip", "--tags=~@future", "-D", "env='{envname}'", "-f", "rerun", "--stop"], + ["behave", "--tags=~@wip", "--tags=~@future", "-D", "env='{envname}'", "-D", "runner='compiled'", "-f", "rerun", "--stop"], + ["python", "-m", "doctest", "{toxinidir}/docs/source/api.rst", "{toxinidir}/docs/source/cli.rst", "docs/source/index.rst", "docs/source/integration.rst"], + ["pytest", "-v", "-o", "python_classes='PYTest*'", "tools"] +] + +[tool.tox.env.tools] +description = "CEL conformance suite translation tools" +commands = [["pytest", "-v", "tools"]] + +[tool.tox.env.wip] +description = "CEL conformance suite" +commands = [["behave", "--tags=@wip"]] + +[tool.tox.env.conformance] +description = "CEL conformance suite" +commands = [["behave", "--tags=@conformance", "--tags=~@wip"]] + +[tool.tox.env.conformance-compiled] +description = "CEL conformance suite" +commands = [["behave", "--tags=@conformance", "--tags=~@wip", "-D", "runner='compiled'"]] + +[tool.tox.env.conformance-wip] +description = "CEL conformance suite work in progress" +commands = [["behave", "--tags=@conformance", "--tags=@wip"]] + +[tool.tox.env.conformance-wip-compiled] +description = "CEL conformance suite" +commands = [["behave", "--tags=@conformance", "--tags=@wip", "-D", "runner='compiled'"]] + +[tool.tox.env.lint] +description = "Lint" +commands = [ + ["coverage", "erase"], + ["pytest", "-vv", "-x", "--cov=src", "--cov-report=term-missing"], + ["coverage", "html"], + ["coverage", "xml"], + ["mypy", "--lineprecision-report", "type_check", "--strict", "--disable-error-code", "type-arg", "--show-error-codes", "src", "tools"], + ["ruff", "check", "src", "tools"], + ["ruff", "format", "--diff", "src", "tools"] ] diff --git a/src/celpy/__main__.py b/src/celpy/__main__.py index 0b89173..33435f9 100644 --- a/src/celpy/__main__.py +++ b/src/celpy/__main__.py @@ -35,9 +35,9 @@ from typing import Any, Callable, Dict, List, Optional, Tuple, Union, cast try: - import tomllib + import tomllib # type: ignore [import-not-found, unused-ignore] except ImportError: # pragma: no cover - import tomli as tomllib # type: ignore [no-redef] + import tomli as tomllib # type: ignore [no-redef, import-not-found, unused-import, unused-ignore] from celpy import Environment, Runner, celtypes from celpy.adapter import CELJSONDecoder, CELJSONEncoder diff --git a/src/celpy/celtypes.py b/src/celpy/celtypes.py index 71115e3..3e47271 100644 --- a/src/celpy/celtypes.py +++ b/src/celpy/celtypes.py @@ -443,7 +443,7 @@ def __repr__(self) -> str: return f"{self.__class__.__name__}({super().__repr__()})" def contains(self, item: Value) -> BoolType: - return BoolType(cast(BytesType, item) in self) + return BoolType(cast(BytesType, item) in self) # type: ignore [comparison-overlap] class DoubleType(float): @@ -853,7 +853,7 @@ def equal(s: Any, o: Any) -> Value: result_value = len(self) == len(other) and reduce( logical_and, # type: ignore [arg-type] (equal(item_s, item_o) for item_s, item_o in zip(self, other)), - BoolType(True), # type: ignore [arg-type] + BoolType(True), ) if isinstance(result_value, TypeError): raise result_value @@ -872,7 +872,7 @@ def not_equal(s: Any, o: Any) -> Value: result_value = len(self) != len(other) or reduce( logical_or, # type: ignore [arg-type] (not_equal(item_s, item_o) for item_s, item_o in zip(self, other)), - BoolType(False), # type: ignore [arg-type] + BoolType(False), ) if isinstance(result_value, TypeError): raise result_value @@ -942,7 +942,7 @@ def equal(s: Any, o: Any) -> BoolType: result_value = keys_s == keys_o and reduce( logical_and, # type: ignore [arg-type] (equal(self[k], other[k]) for k in keys_s), - BoolType(True), # type: ignore [arg-type] + BoolType(True), ) if isinstance(result_value, TypeError): raise result_value @@ -970,7 +970,7 @@ def not_equal(s: Any, o: Any) -> BoolType: result_value = keys_s != keys_o or reduce( logical_or, # type: ignore [arg-type] (not_equal(self[k], other[k]) for k in keys_s), - BoolType(False), # type: ignore [arg-type] + BoolType(False), ) if isinstance(result_value, TypeError): raise result_value diff --git a/tools/Dockerfile b/tools/Dockerfile deleted file mode 100644 index 9498331..0000000 --- a/tools/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM golang:1.24 - -ENV HOME=/usr/cel-python -WORKDIR $HOME/tools - -# pre-copy/cache go.mod for pre-downloading dependencies and only redownloading them in subsequent builds if they change -COPY go.mod go.sum ./ -RUN go mod download - -COPY ./*.go . -RUN go build -v -o /usr/local/bin/mkgherkin ./... - -WORKDIR $HOME/textproto -ENTRYPOINT ["mkgherkin"] diff --git a/tools/README.rst b/tools/README.rst index a2c5505..e8b2eae 100644 --- a/tools/README.rst +++ b/tools/README.rst @@ -2,17 +2,8 @@ Tools to Create the Conformance Test Suite ########################################## -The conformance test files originte from the https://github.com/google/cel-spec.git repository. -They are all protobuf objects, serialized into ``textproto``. - -The ``pb2g.py`` and the ``mkgerkin.go`` apps translate these into Gherkin. - -Purpose -======= - -Overall, the conformance test tools work like this: - -1. Start with the ``.textproto`` source: +The conformance test files originate from the https://github.com/google/cel-spec repository. +They are all Protobuf messages, serialized into ``textproto``, like this: .. code-block:: protobuf @@ -22,170 +13,57 @@ Overall, the conformance test tools work like this: value: { int64_value: 0 } } -2. An Interim Gherkin is created using Go-language syntax for objects. - -3. The final Gherkin is created using Python-language syntax. - Here's the Gherkin: - - .. code-block:: gherkin - - Scenario: self_eval_int_zero - When CEL expression "0" is evaluated - # int64_value:0 - Then value is IntType(source=0) - -The Gherkin can make a bunch of test features explicit in each Scenario. -Specifically, some parameters can be set in ``Given`` clause: - -- ``Given disable_check parameter is True`` - -- ``Given type_env ... is ...`` Sets a type for a given parameter name. - -- ``Given bindings ... is ...`` Sets a value for a given parameter name. - -Operation -=========== +The ``gherkinize.py`` script translates these into Gherkin scenarios. -The Gherkin creation is controlled by a Makefile that does several things. +Usage +===== -- ``make all`` checks the cel-spec repository for ``.textproto`` files, - moves them to the local ``features`` directory and converts them to ``.features`` files. +Gherkin generation is controlled by a Makefile in the ``features`` directory which provides +two commands: -- ``make scan`` runs the ``textproto_to_gherkin.py`` app to check syntax on the protobuf - files. This is used as a smoke test when adjusting the text protobuf grammar. - -- ``make clean-broken`` cleans up the empty ``.feature`` files. These are a consequence of - ``.textproto`` files that cannot be parsed. +- ``make all`` checks the cel-spec repository for ``.textproto`` files, copies them to the local + ``features`` directory, and converts them to ``.features`` files. - ``make clean`` removes the ``.feature`` and ``.textproto`` files. -The underlying command is this. +The underlying command runs the gherkinize.py script for each ``.textproto`` file: .. code-block:: bash - % python ../tools/pb2g.py basic.textproto -o basic.feature - -This converts a source ``.textproto`` file to an interim file, and from there to a final ``.feature`` file. - -A good way to use this is to do a checkout from https://github.com/google/cel-spec.git into -an adjacent directory. By deafult, the Makefile looks for ``../../cel-spec``. If this doesn't work -for you, set the ``CEL_SPEC_PATH`` environment variable. - -On Gherkinization -================= - -The question arises on how best to serialize descriptions of the objects created by a CEL evaluation. -We have three distinct notations to deal with: - -- Source Protobuf text in the ``.textproto`` files. - -- Final Python object used by Behave. - -- An intermediate text representation in the Gherkin that's created by a Go application. - -The idea is to write Gherkin tests that match the protobuf source closely, but can be processed by Behave without too much overhead. -(There are over 900 conformance tests; we don't want to take all day.) - -The use of a **Go** application is far simpler than trying to parse the ``.textproto`` files in Python. -The **Go** operations for expanding each ``.Section`` and ``.Test`` object into a Gherkin Scenario is very small, and narrowly focused on creating an easier-to-parse representation. - -There are three broad choices for Gherkin representation of expected results. - -- Protobuf, unmodified. ``{ int64_value: -1 }``. - This pushes the final parsing into the conformance test step definitions. + % python ../tools/gherkinize.py basic.textproto -o basic.feature -- Text representation of the Python target object. ``celpy.celtypes.IntType(-1)``. - This is highly Python-specific and not of general use to other implementers. +This parses a source ``.textproto`` file and generates an equivalent ``.feature`` file. -- An intermediate representation. ``Value(value_type='int64_value', source='x')``. - This is trivially produced by **Go**. - It preserves the protobuf semantics in a easy-to-parse form. +A good way to use this is to do a checkout from https://github.com/google/cel-spec into an adjacent +directory. By default, the Makefile looks for ``/../../google/cel-spec`` but the location can +be overridden with the ``CEL_SPEC_PATH`` environment variable. -The Python representation leverages the following class definition +gherkinize.py +============= -.. code-block:: python +Each ``.textproto`` file follows the ``SimpleTestFile`` `schema`_. - class Primitive(NamedTuple): - """A name: value pair.""" - type_name: Token - value_text: Token +.. _schema: https://buf.build/google/cel-spec/docs/main:cel.expr.conformance.test#cel.expr.conformance.test.SimpleTestFile - @property - def value(self) -> Any: - ... +These are deserialized into Python objects using an `SDK generated from the schemas`_. +.. _SDK generated from the schemas: https://buf.build/google/cel-spec/sdks/dffb8c8cf7814e96a7c06b6a5ac72fdc:protocolbuffers/python -This describes a simple object with a type name and a value. -The ``Token`` class describes the syntax used by ``Go`` when serializing objects. -This includes the following kinds of symbols: +These Python objects that represent the Protobuf data and then loaded into classes that represented +Gherkin concepts (``features`` with comment-delineated sections, and ``scenarios`` with ``given``, +``when`` and ``then`` clauses) and CEL types native to this library. -.. csv-table:: - - NAMESPACE,``\\[name\\]`` - BOOL,``true|false`` - NULL,``NULL_VALUE`` - STRING,``"`` or ``'``-delimited strings - FLOAT,``[+-]?\\d*\\.\\d*[Ee]?[+-]?\\d*|inf|-inf|[+-]?\\d+[Ee][+-]?\\d+`` - INT,``[+-]?\\d+`` - NAME,``[a-zA-Z]\\w+`` - WHITESPACE,The usual RE whitespace, ``\\s+`` - PUNCTUATION,Any other punctuation character, this generally includes ``{``, ``}``, ``:``, and ``,`` as delimeters in a complex structure. - -A protobuf object like ``{ int64_value: 0 }`` has punctation, name, punctuation, int, and punctuation. -The parser can transform this into a ``Primitive`` object with the ``type_name`` and ``value`` attributes. - -This can be be modeled as a simple ``0`` in the Gherkin. -For a specific subset of available types the types map directly to Python objects. -For some objects, however, there isn't a trivial correspondence. - -Here is an example of some protobuf objects and the parsed representation. - -.. csv-table:: - - "{ int64_value: 0 }","Primitive(type_name=Token(type='NAME', value='int64_value'), value_text=Token(type='INT', value='0'))",IntType(source=0) - "{ uint64_value: 0 }","Primitive(type_name=Token(type='NAME', value='uint64_value'), value_text=Token(type='INT', value='0'))",UintType(source=0) - "{ double_value: 0 }","Primitive(type_name=Token(type='NAME', value='double_value'), value_text=Token(type='INT', value='0'))",DoubleType(source=0) - "{ null_value: NULL_VALUE }","Primitive(type_name=Token(type='NAME', value='null_value'), value_text=Token(type='NULL', value='NULL_VALUE'))",None - "{ bool_value: false }","Primitive(type_name=Token(type='NAME', value='bool_value'), value_text=Token(type='BOOL', value='false'))",BoolType(source=False) - "{ string_value: """" }","Primitive(type_name=Token(type='NAME', value='string_value'), value_text=Token(type='STRING', value='""""'))",StringType(source='') - "{ bytes_value: """" }","Primitive(type_name=Token(type='NAME', value='bytes_value'), value_text=Token(type='STRING', value='""""'))",BytesType(source=b'') - -The resulting celtypes are all subclass of ``celpy.celtypes.TypeType``. - -The protobuf mappings are more complex. - - -More Complex Protobuf Definitions ---------------------------------- - -A universal ``TestAllTypes`` protobuf ``MessageType`` is used by the Dynamic tests that create protobuf objects. -It has numerous fields, but provides a handy way to define complex objects in a simple structure. - -Building the tool chain -======================= - -Run the following commands in the ``tools`` directory to create the needed Docker image. - -.. code-block:: bash - - % docker pull golang - % docker build -t mkgherkin . - -The ``Dockerfile`` will create a Docker image to run the Go application. - -The ``pb2g.py`` application will run the Docker image to do the initial conversion. - -A local ``textproto`` directory is the working directory for the interim conversion from ``.textproto`` to an interim Gherkin form. -These interim Gherkin files are then processed by the ``pb2g.py`` app to create the final ``.feature`` files for the conformance test suite. - -For reference, here's a docker command to run the container, -converting files to their interim form. - -While not necessary, you can manually commands like the following in the ``textproto`` working directory. - -.. code-block:: bash +The classes representing CEL types overload ``__repr__()`` with the Python code needed to +instantiate the actual CEL types in ``src/celpy/celtypes.py`` β€” this code is used when rendering +the Gherkin clauses. - % docker run --rm --name mkgherkin -v .:/usr/cel-python/textproto mkgherkin *.textproto +Finally, the classes representing features, sections, and scenarios are rendered to Gherkin tests +using the ``gherkin.feature.jinja`` template. -The output from a command like this is captured by ``pg2g.py`` and then post-processed to create the final **CEL** types. +Tests with unimplemented features (notably, enums) generate a warning but do not result in +scenarios. Tests which do not currently pass are listed in ``wip.txt`` in the format +``:
:``. Presence in this file results in a ``@wip`` tag being added to +the scenario. In general, it's expected that scenarios will be removed from this list over time +and once passing, scenarios should never be added back to this file. +Finally, the complete, generated ``.feature`` files are all tagged with ``@conformance``. diff --git a/tools/gherkin.feature.jinja b/tools/gherkin.feature.jinja new file mode 100644 index 0000000..0401e17 --- /dev/null +++ b/tools/gherkin.feature.jinja @@ -0,0 +1,17 @@ +@conformance +Feature: {{ feature.name }} + {{ (feature.description | wordwrap(width=71,wrapstring="\n ")) }} +{% for section in feature.sections %} + +# {{ section.name }} -- {{ section.description }} + + +{% for scenario in section.scenarios %} +{{ scenario.tag }}Scenario: {{ section.name }}/{{ scenario.name }} +{{ " " + (scenario.description | wordwrap(width=70,wrapstring="\n ")) + "\n" if scenario.description else "" }} +{% for step in scenario.steps %} + {{ step }} +{% endfor %} + +{% endfor %} +{% endfor %} diff --git a/tools/gherkinize.py b/tools/gherkinize.py new file mode 100644 index 0000000..f65e9d7 --- /dev/null +++ b/tools/gherkinize.py @@ -0,0 +1,911 @@ +import argparse +from datetime import datetime, timedelta, timezone +from io import open +import logging +from os import path +from pathlib import Path +import re +import sys +from typing import Any, Dict, List, Literal, Optional, Union, overload +from typing_extensions import Self +from jinja2 import Environment, FileSystemLoader +from cel.expr import checked_pb2, eval_pb2, value_pb2 +from cel.expr.conformance.test import simple_pb2 +from cel.expr.conformance.proto2 import ( + test_all_types_pb2 as proto2_test_all_types, # noqa + test_all_types_extensions_pb2 as proto2_test_all_types_extensions, # noqa +) +from cel.expr.conformance.proto3 import test_all_types_pb2 as proto3_test_all_types # noqa +from google.protobuf import ( + any_pb2, + descriptor_pool, + descriptor, # noqa + duration_pb2, + message_factory, + message, + struct_pb2, + symbol_database, # noqa + text_format, + timestamp_pb2, + wrappers_pb2, +) + +env = Environment( + loader=FileSystemLoader(path.dirname(__file__)), + trim_blocks=True, +) +template = env.get_template("gherkin.feature.jinja") +logger = logging.getLogger("gherkinize") + +pool = descriptor_pool.Default() # type: ignore [no-untyped-call] + + +class SkipList: + def __init__(self, path: str) -> None: + self.list = [] + logger.debug(f"Reading from {path}...") + blank = re.compile("^[ \t]*(#|$)") + with open(path, encoding="utf_8") as file_handle: + for line in file_handle: + if blank.match(line) is not None: + continue + stripped = line.split("#")[0].strip() + tuple = stripped.split(":") + if len(tuple) != 3: + logger.warning(f"Skipping invalid line: {line}") + continue + self.list.append(stripped) + + def should_skip(self, feature: str, section: str, scenario: str) -> bool: + return f"{feature}:{section}:{scenario}" in self.list + + +skip_list = SkipList(f"{path.dirname(__file__)}/wip.txt") + + +class Result: + def __init__( + self, + kind: Union[Literal["value"], Literal["eval_error"], Literal["none"]] = "none", + value: "Optional[Union[CELValue, CELErrorSet]]" = None, + ) -> None: + self.kind = kind + self.value = value + + def __eq__(self, other: Any) -> bool: + return isinstance(other, Result) and (self.kind, self.value) == ( + other.kind, + other.value, + ) + + def __repr__(self) -> str: + if isinstance(self.value, CELErrorSet): + # TODO: Investigate if we should switch to a + # data structure in the step implementation + return repr(str(self.value)) + else: + return repr(self.value) + + @staticmethod + def from_proto(source: simple_pb2.SimpleTest) -> "Result": + kind = source.WhichOneof("result_matcher") + + if kind == "value": + return Result(kind, CELValue.from_proto(source.value)) + elif kind == "eval_error": + return Result(kind, CELErrorSet(source.eval_error)) + elif kind is None: + return Result("none", None) + else: + raise NotImplementedError(f"Unable to interpret result kind {kind!r}") + + @staticmethod + def from_text_proto_str(text_proto: str) -> "Result": + test = simple_pb2.SimpleTest() + text_format.Parse(text_proto, test) + return Result.from_proto(test) + + +class CELValue: + type_name = "celpy.celtypes.CELType" + + def __init__(self, source: Optional[message.Message]) -> None: + self.source = source + + @staticmethod + def is_aliased(_: str) -> bool: + return False + + @overload + @staticmethod + def get_class_by_alias( + alias: str, + base: Optional[type["CELValue"]] = None, + error_on_none: Literal[True] = True, + ) -> type["CELValue"]: ... + + @overload + @staticmethod + def get_class_by_alias( + alias: str, + base: Optional[type["CELValue"]] = None, + error_on_none: Literal[False] = False, + ) -> Optional[type["CELValue"]]: ... + + @staticmethod + def get_class_by_alias( + alias: str, base: Optional[type["CELValue"]] = None, error_on_none: bool = True + ) -> Optional[type["CELValue"]]: + base_class = base if base else CELValue + + if base_class.is_aliased(alias): + return base_class + + children = base_class.__subclasses__() + for child in children: + match = CELValue.get_class_by_alias(alias, child, False) + if match is not None: + return match + + if error_on_none: + raise Exception(f"Unable to locate CEL value class for alias {alias!r}") + else: + return None + + @staticmethod + def from_proto(source: message.Message) -> "CELValue": + if source.DESCRIPTOR in [ + struct_pb2.Value.DESCRIPTOR, + value_pb2.Value.DESCRIPTOR, + ]: + value_kind = source.WhichOneof("kind") + if value_kind == "object_value": + return CELValue.from_any(getattr(source, value_kind)) + else: + return CELValue.get_class_by_alias(value_kind)( + getattr(source, value_kind) + ) + + if isinstance(source, any_pb2.Any): + return CELValue.from_any(source) + + aliased = CELValue.get_class_by_alias(source.DESCRIPTOR.full_name, None, False) + if aliased is not None: + return aliased(source) + + logger.error(source) + return CELMessage(source) + + @staticmethod + def from_any(source: any_pb2.Any) -> "CELValue": + type_name = source.type_url.split("/")[-1] + desc = pool.FindMessageTypeByName(type_name) + message_value = message_factory.GetMessageClass(desc)() + source.Unpack(message_value) + return CELValue.from_proto(message_value) + + @staticmethod + def from_text_proto_str(text_proto: str) -> "CELValue": + value = value_pb2.Value() + text_format.Parse(text_proto, value) + return CELValue.from_proto(value) + + +class CELType(CELValue): + type_name = "celpy.celtypes.TypeType" + + def __init__( + self, + value: Union[ + value_pb2.Value, checked_pb2.Decl, checked_pb2.Decl.IdentDecl, str + ], + ) -> None: + if isinstance(value, value_pb2.Value): + self.__from_cel_value(value) + super().__init__(value) + elif isinstance(value, checked_pb2.Decl): + self.__from_decl(value) + super().__init__(value) + elif isinstance(value, checked_pb2.Decl.IdentDecl): + self.__from_ident(value) + super().__init__(value) + elif isinstance(value, str): + self.__from_str(value) + super().__init__(None) + else: + if isinstance(value, message.Message): + raise Exception( + f"Unable to interpret type from {value.DESCRIPTOR.full_name} message" + ) + else: + raise Exception(f"Unable to interpret type from {repr(value)}") + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in ["type", "type_value"] + + def __from_cel_value(self, source: value_pb2.Value) -> None: + self.__from_str(source.type_value) + + def __from_decl(self, source: checked_pb2.Decl) -> None: + decl_kind = source.WhichOneof("decl_kind") + + if decl_kind == "ident": + self.__from_ident(source.ident) + else: + raise NotImplementedError( + f'Unable to interpret declaration kind "{decl_kind}"' + ) + + def __from_ident(self, ident: checked_pb2.Decl.IdentDecl) -> None: + type_kind = ident.type.WhichOneof("type_kind") + if type_kind == "primitive": + primitive_kind = checked_pb2.Type.PrimitiveType.Name(ident.type.primitive) + + self.name = CELValue.get_class_by_alias( + primitive_kind, None, True + ).type_name + elif type_kind == "message_type": + cel_class = CELValue.get_class_by_alias( + ident.type.message_type, None, False + ) + if cel_class: + self.name = cel_class.type_name + else: + self.__from_str(ident.type.message_type) + else: + self.name = CELValue.get_class_by_alias(type_kind, None, True).type_name + + def __from_str(self, type_value: str) -> None: + candidate = CELValue.get_class_by_alias(type_value, None, False) + + if candidate: + self.name = candidate.type_name + elif type_value in [ + "cel.expr.conformance.proto2.GlobalEnum", + "cel.expr.conformance.proto2.TestAllTypes.NestedEnum", + "cel.expr.conformance.proto3.GlobalEnum", + "cel.expr.conformance.proto3.TestAllTypes.NestedEnum", + ]: + raise NotImplementedError(f'Type not supported: "{type_value}"') + else: + self.name = "celpy.celtypes.MessageType" + + @staticmethod + def from_text_proto_str(text_proto: str) -> "CELType": + ident = checked_pb2.Decl.IdentDecl() + text_format.Parse(text_proto, ident) + return CELType(ident) + + def __repr__(self) -> str: + return self.name + + def __eq__(self, other: Any) -> bool: + return isinstance(other, CELType) and self.name == other.name + + +class CELExprValue: + def __init__(self, source: eval_pb2.ExprValue) -> None: + self.source = source + expr_value_kind = self.source.WhichOneof("kind") + + if expr_value_kind == "value": + self.value = CELValue.from_proto(self.source.value) + elif expr_value_kind == "error": + self.value = CELErrorSet(self.source.error) + else: + raise Exception( + f'Unable to interpret CEL expression value kind "{expr_value_kind}"' + ) + + def __repr__(self) -> str: + return repr(self.value) + + +class CELPrimitive(CELValue): + def __init__(self, source: Optional[message.Message], value: Any) -> None: + self.value = value + super().__init__(source) + + def __eq__(self, other: Any) -> bool: + return isinstance(other, CELPrimitive) and (self.value == other.value) + + def __hash__(self) -> int: + return hash(self.value) + + def __repr__(self) -> str: + return f"{self.type_name}(source={repr(self.value)})" + + +class CELInt(CELPrimitive): + type_name = "celpy.celtypes.IntType" + + def __init__( + self, source: Union[wrappers_pb2.Int32Value, wrappers_pb2.Int64Value, int] + ) -> None: + if isinstance(source, wrappers_pb2.Int32Value) or isinstance( + source, wrappers_pb2.Int64Value + ): + value = source.value + super().__init__(source, value) + else: + value = source + super().__init__(None, value) + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in [ + "INT64", + "int", + "int64_value", + "google.protobuf.Int32Value", + "google.protobuf.Int64Value", + ] + + +class CELUint(CELPrimitive): + type_name = "celpy.celtypes.UintType" + + def __init__( + self, source: Union[wrappers_pb2.UInt32Value, wrappers_pb2.UInt64Value, int] + ) -> None: + if isinstance(source, wrappers_pb2.UInt32Value) or isinstance( + source, wrappers_pb2.UInt64Value + ): + value = source.value + super().__init__(source, value) + else: + value = source + super().__init__(None, value) + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in [ + "UINT64", + "uint", + "uint64_value", + "google.protobuf.UInt32Value", + "google.protobuf.UInt64Value", + ] + + +class CELDouble(CELPrimitive): + type_name = "celpy.celtypes.DoubleType" + + def __init__( + self, source: Union[wrappers_pb2.FloatValue, wrappers_pb2.DoubleValue, float] + ) -> None: + if isinstance(source, wrappers_pb2.FloatValue) or isinstance( + source, wrappers_pb2.DoubleValue + ): + value = source.value + super().__init__(source, value) + else: + value = source + super().__init__(None, value) + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in [ + "DOUBLE", + "double", + "double_value", + "number_value", + "google.protobuf.FloatValue", + "google.protobuf.DoubleValue", + ] + + def __repr__(self) -> str: + source = repr(self.value) + if source in ["-inf", "inf", "nan"]: + source = f"float({repr(source)})" + return f"{self.type_name}(source={source})" + + +class CELBool(CELPrimitive): + type_name = "celpy.celtypes.BoolType" + + def __init__(self, source: Union[wrappers_pb2.BoolValue, bool]) -> None: + if isinstance(source, wrappers_pb2.BoolValue): + value = source.value + super().__init__(source, value) + else: + value = source + super().__init__(None, value) + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in ["BOOL", "bool", "bool_value", "google.protobuf.BoolValue"] + + +class CELString(CELPrimitive): + type_name = "celpy.celtypes.StringType" + + def __init__(self, source: Union[wrappers_pb2.StringValue, str]) -> None: + if isinstance(source, wrappers_pb2.StringValue): + value = source.value + super().__init__(source, value) + else: + value = source + super().__init__(None, value) + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in [ + "STRING", + "string", + "string_value", + "google.protobuf.StringValue", + ] + + def __str__(self) -> str: + return str(self.value) + + +class CELBytes(CELPrimitive): + type_name = "celpy.celtypes.BytesType" + + def __init__(self, source: Union[wrappers_pb2.BytesValue, bytes]) -> None: + if isinstance(source, wrappers_pb2.BytesValue): + value = source.value + super().__init__(source, value) + else: + value = source + super().__init__(None, value) + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in ["BYTES", "bytes", "bytes_value", "google.protobuf.BytesValue"] + + +class CELEnum(CELPrimitive): + type_name = "celpy.celtypes.Enum" + + def __init__(self, _: Any) -> None: + raise NotImplementedError("Enums not yet supported") + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in ["enum_value"] + + +class CELNull(CELValue): + type_name = "NoneType" + + def __init__(self, source: None = None) -> None: + super().__init__(source) + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in ["null", "null_type", "null_value"] + + def __eq__(self, other: Any) -> bool: + return other is None or isinstance(other, CELNull) + + def __repr__(self) -> str: + return "None" + + +class CELList(CELValue): + type_name = "celpy.celtypes.ListType" + + def __init__( + self, source: Union[struct_pb2.ListValue, value_pb2.ListValue, List[CELValue]] + ) -> None: + if isinstance(source, (struct_pb2.ListValue, value_pb2.ListValue)): + self.values = [CELValue.from_proto(v) for v in source.values] + super().__init__(source) + else: + self.values = source + super().__init__(None) + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in ["list", "list_type", "list_value", "google.protobuf.ListValue"] + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, CELList): + return False + + if len(self.values) != len(other.values): + return False + + for i in range(0, len(self.values)): + if self.values[i] != other.values[i]: + return False + + return True + + def __repr__(self) -> str: + return f"[{', '.join(repr(v) for v in self.values)}]" + + +class CELMap(CELValue): + type_name = "celpy.celtypes.MapType" + + def __init__( + self, source: Union[struct_pb2.Struct, value_pb2.MapValue, Dict[str, CELValue]] + ) -> None: + self.value = {} + if isinstance(source, struct_pb2.Struct): + for k in source.fields: + self.value[k] = CELValue.from_proto(source.fields[k]) + super().__init__(source) + elif isinstance(source, value_pb2.MapValue): + for e in source.entries: + self.value[str(CELValue.from_proto(e.key))] = CELValue.from_proto( + e.value + ) + super().__init__(source) + elif isinstance(source, dict): + self.value = source + super().__init__(None) + else: + raise Exception(f"Cannot use {repr(source)} as map input") + + def __eq__(self, other: Any) -> bool: + return isinstance(other, CELMap) and self.value == other.value + + def __repr__(self) -> str: + return f"{self.type_name}({repr(self.value)})" + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in [ + "map", + "map_type", + "map_value", + "struct_value", + "google.protobuf.Struct", + ] + + +class AnyWrapper(CELValue): + def __init__(self, source: any_pb2.Any) -> None: + self.value = ProtoAny(source) + super().__init__(source) + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in ["object_value"] + + def __repr__(self) -> str: + return repr(self.value) + + +class CELDuration(CELValue): + type_name = "celpy.celtypes.DurationType" + + def __init__( + self, seconds: Union[duration_pb2.Duration, int], nanos: int = 0 + ) -> None: + if isinstance(seconds, message.Message): + self.seconds = seconds.seconds + self.nanos = seconds.nanos + super().__init__(seconds) + else: + self.seconds = seconds + self.nanos = nanos + super().__init__(None) + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in ["google.protobuf.Duration"] + + def __eq__(self, other: Any) -> bool: + return isinstance(other, CELDuration) and (self.seconds, self.nanos) == ( + other.seconds, + other.nanos, + ) + + def __repr__(self) -> str: + return f"{self.type_name}(seconds={self.seconds:.0f}, nanos={self.nanos:.0f})" + + +class CELTimestamp(CELValue): + type_name = "celpy.celtypes.TimestampType" + + def __init__( + self, seconds: Union[timestamp_pb2.Timestamp, int], nanos: int = 0 + ) -> None: + if isinstance(seconds, timestamp_pb2.Timestamp): + self.seconds = seconds.seconds + self.nanos = seconds.nanos + super().__init__(seconds) + else: + self.seconds = seconds + self.nanos = nanos + super().__init__(None) + self.value = datetime.fromtimestamp(self.seconds, tz=timezone.utc) + timedelta( + microseconds=(self.nanos / 1000) + ) + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in ["google.protobuf.Timestamp"] + + def __repr__(self) -> str: + return f"{self.type_name}({repr(self.value)})" + + +class CELStatus(CELValue): + def __init__(self, message: Union[eval_pb2.Status, str], code: int = 0) -> None: + if isinstance(message, eval_pb2.Status): + self.message = message.message + self.code = message.code + super().__init__(message) + else: + self.message = message + self.code = code + super().__init__(None) + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in ["cel.expr.Status"] + + def __eq__(self, other: Any) -> bool: + return isinstance(other, CELStatus) and (self.message, self.code) == ( + other.message, + other.code, + ) + + def __repr__(self) -> str: + return repr(self.message) + + +class CELErrorSet(CELValue): + type_name = "CELEvalError" + + def __init__(self, message: Union[eval_pb2.ErrorSet, List[CELStatus], str]) -> None: + self.errors = [] + if isinstance(message, eval_pb2.ErrorSet): + for status in message.errors: + self.errors.append(CELStatus(status)) + super().__init__(message) + elif isinstance(message, eval_pb2.Status): + self.errors.append(CELStatus(message)) + super().__init__(message) + elif isinstance(message, str): + self.errors.append(CELStatus(message)) + super().__init__(None) + elif isinstance(message, list): + for m in message: + if not isinstance(m, CELStatus): + raise Exception(f"Cannot use {repr(m)} in place of status") + self.errors.append(m) + super().__init__(None) + elif isinstance(message, str): + self.errors.append(CELStatus(message)) + super().__init__(None) + else: + raise Exception(f"Cannot use {repr(message)} as error set input") + + @staticmethod + def is_aliased(alias: str) -> bool: + return alias in ["cel.expr.ErrorSet"] + + @staticmethod + def from_text_proto_str(text_proto: str) -> "CELErrorSet": + errorSet = eval_pb2.ErrorSet() + text_format.Parse(text_proto, errorSet) + return CELErrorSet(errorSet) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, CELErrorSet): + return False + + if len(self.errors) != len(other.errors): + return False + + for i in range(0, len(self.errors)): + if self.errors[i] != other.errors[i]: + return False + + return True + + def __repr__(self) -> str: + return f"{self.type_name}({', '.join(repr(e) for e in self.errors)})" + + def __str__(self) -> str: + return ", ".join(e.message for e in self.errors) + + +class ProtoAny: + def __init__(self, source: any_pb2.Any) -> None: + self.source = source + type_name = self.source.type_url.split("/")[-1] + desc = pool.FindMessageTypeByName(type_name) + message_value = message_factory.GetMessageClass(desc)() + self.source.Unpack(message_value) + self.value = CELValue.from_proto(message_value) + + def __repr__(self) -> str: + return repr(self.value) + + +class CELMessage(CELValue): + type_name = "celpy.celtypes.MessageType" + + def __init__( + self, source: message.Message, name_override: Optional[str] = None + ) -> None: + self.source = source + name = ( + name_override if name_override is not None else self.source.DESCRIPTOR.name + ) + fieldLiterals = [] + fields = self.source.ListFields() + for desc, value in fields: + if desc.is_repeated: + repeatedValues = [] + for v in value: + if isinstance(v, message.Message): + repeatedValues.append(repr(CELValue.from_proto(v))) + else: + repeatedValues.append(repr(v)) + fieldLiterals.append(f"{desc.name}=[{', '.join(repeatedValues)}]") + elif isinstance(value, message.Message): + fieldLiterals.append(f"{desc.name}={repr(CELValue.from_proto(value))}") + else: + fieldLiterals.append(f"{desc.name}={repr(value)}") + self.literal = f"{name}({', '.join(fieldLiterals)})" + + def __eq__(self, other: Any) -> bool: + return isinstance(other, CELMessage) and self.source == other.source + + def __repr__(self) -> str: + return self.literal + + +class Scenario: + def __init__( + self, feature: "Feature", section: "Section", source: simple_pb2.SimpleTest + ) -> None: + logger.debug(f"Scenario {source.name}") + self.name = source.name + self.description = source.description + self.tag = ( + "@wip\n" + if skip_list.should_skip(feature.name, section.name, source.name) + else "" + ) + self.preconditions: List[str] = [] + self.events: List[str] = [] + self.outcomes: List[str] = [] + + if source.disable_macros: + self.given("disable_macros parameter is True") + if source.disable_check: + self.given("disable_check parameter is True") + for type_env in source.type_env: + self.given(f'type_env parameter "{type_env.name}" is {CELType(type_env)}') + for key in source.bindings.keys(): + self.given( + f'bindings parameter "{key}" is {CELExprValue(source.bindings[key])}' + ) + if source.container: + self.given(f"container is {source.container!r}") + + self.when(f"CEL expression {source.expr!r} is evaluated") + + result = Result.from_proto(source) + self.then(f"{result.kind} is {result}") + + def given(self, precondition: str) -> Self: + self.preconditions.append(precondition) + return self + + def when(self, event: str) -> Self: + self.events.append(event) + return self + + def then(self, event: str) -> Self: + self.outcomes.append(event) + return self + + @property + def steps(self) -> List[str]: + steps = [] + if len(self.preconditions) > 0: + steps.append(f"Given {self.preconditions[0]}") + steps.extend([f"and {p}" for p in self.preconditions[1:]]) + if len(self.events) > 0: + steps.append(f"When {self.events[0]}") + steps.extend([f"and {e}" for e in self.events[1:]]) + if len(self.outcomes) > 0: + steps.append(f"Then {self.outcomes[0]}") + steps.extend([f"and {o}" for o in self.outcomes[1:]]) + + return steps + + +class Section: + def __init__( + self, feature: "Feature", source: simple_pb2.SimpleTestSection + ) -> None: + logger.debug(f"Section {source.name}") + self.name = source.name + self.description = source.description + self.scenarios = [] + for test in source.test: + try: + self.scenarios.append(Scenario(feature, self, test)) + except NotImplementedError as e: + logger.warning(f"Skipping scenario {test.name} because: {e}") + + +class Feature: + def __init__(self, source: simple_pb2.SimpleTestFile): + self.name = source.name + self.description = source.description + self.sections = [Section(self, s) for s in source.section] + + @staticmethod + def from_text_proto(path: Path) -> "Feature": + logger.debug(f"Reading from {path}...") + with open(path, encoding="utf_8") as file_handle: + text = ( + file_handle.read() + .replace("google.api.expr.test.v1.", "cel.expr.conformance.") + .replace("protubuf", "protobuf") + ) + file = simple_pb2.SimpleTestFile() + logger.debug(f"Parsing {path}...") + text_format.Parse(text, file) + return Feature(file) + + def write_to_file(self, path: Optional[Path]) -> None: + logger.debug("Rendering to gherkin...") + gherkin = template.render(feature=self) + + if path: + logger.debug(f"Writing to {path}...") + with open(path, "w", encoding="utf_8") as file_handle: + file_handle.write(gherkin) + else: + print(gherkin) + + +def get_options(argv: List[str] = sys.argv[1:]) -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument( + "-v", + "--verbose", + dest="log_level", + action="store_const", + const=logging.DEBUG, + default=logging.INFO, + ) + parser.add_argument( + "-s", "--silent", dest="log_level", action="store_const", const=logging.ERROR + ) + parser.add_argument( + "-o", + "--output", + action="store", + type=Path, + default=None, + help="output file (default is stdout)", + ) + parser.add_argument( + "source", + action="store", + nargs="?", + type=Path, + help=".textproto file to convert", + ) + options = parser.parse_args(argv) + return options + + +if __name__ == "__main__": + options = get_options() + logging.basicConfig(level=logging.INFO) + logging.getLogger().setLevel(options.log_level) + + feature = Feature.from_text_proto(options.source) + feature.write_to_file(options.output) + + +class NotImplementedError(Exception): + pass diff --git a/tools/go.mod b/tools/go.mod deleted file mode 100644 index 430a369..0000000 --- a/tools/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module mkgherkin - -go 1.16 - -require ( - github.com/google/cel-spec v0.5.0 - google.golang.org/protobuf v1.33.0 -) diff --git a/tools/go.sum b/tools/go.sum deleted file mode 100644 index 40f6cd2..0000000 --- a/tools/go.sum +++ /dev/null @@ -1,86 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/google/cel-spec v0.5.0 h1:hWEzw+1L1UNxfHAbKXYbirsPGlG8ArXNcTnBKvBqRJ0= -github.com/google/cel-spec v0.5.0/go.mod h1:Nwjgxy5CbjlPrtCWjeDjUyKMl8w41YBYGjsyDdqk0xA= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20201102152239-715cce707fb0 h1:d0rYPqjQfVuFe+tZgv4PHt2hNxK79MRXX7PaD/A5ynA= -google.golang.org/genproto v0.0.0-20201102152239-715cce707fb0/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/tools/mkgherkin.go b/tools/mkgherkin.go deleted file mode 100644 index 4765021..0000000 --- a/tools/mkgherkin.go +++ /dev/null @@ -1,147 +0,0 @@ -// SPDX-Copyright: Copyright (c) Capital One Services, LLC -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2020 Capital One Services, LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and limitations under the License. - -package main - -/* - Converts Textproto (or protobuf) SimpleTest documents into Gherkin. - - See go doc github.com/google/cel-spec/proto/test/v1/testpb SimpleTest - - The template emits a Gherkin-formatted Feature with a number of Scenarios. -*/ - -import ( - "flag" - "fmt" - "io/ioutil" - "os" - "text/template" - "encoding/json" - - "google.golang.org/protobuf/encoding/protojson" - "google.golang.org/protobuf/encoding/prototext" - - spb "github.com/google/cel-spec/proto/test/v1/testpb" - - // The following are needed to link in these proto libraries - // which are needed dynamically, despite not being explicitly - // used in the Go source. - _ "github.com/google/cel-spec/proto/test/v1/proto2/test_all_types" - _ "github.com/google/cel-spec/proto/test/v1/proto3/test_all_types" -) - -func parseSimpleFile(filename string) (*spb.SimpleTestFile, error) { - bytes, err := ioutil.ReadFile(filename) - if err != nil { - return nil, err - } - var pb spb.SimpleTestFile - err = prototext.Unmarshal(bytes, &pb) - if err != nil { - return nil, err - } - return &pb, nil -} - -var json_formatter = protojson.MarshalOptions{ - Multiline: true, - UseProtoNames: false, - EmitUnpopulated: false, -} - -func json_testfile(testFile *spb.SimpleTestFile) { - fmt.Println(json_formatter.Format(testFile)) -} - -func gherkin_testfile(testFile *spb.SimpleTestFile) { - // There are several kinds of "results" for a test. - // *SimpleTest_Value -- these become a `Then value is ...` step. - // *SimpleTest_EvalError -- these become a `Then eval_error is ...` step. - // *SimpleTest_AnyEvalErrors -- these become a `Then eval_error is ...` step. - // *SimpleTest_Unknown -- These don't seem to be used - // *SimpleTest_AnyUnknowns -- These don't seem to be used - - const test_template = ` -Feature: {{.Name}} - {{.Description}} -{{range .Section}} -# {{.Name}} -- {{.Description}} -{{range .Test}} -Scenario: {{.Name}} - {{.Description}} - -{{- if .DisableMacros}} - Given disable_macros parameter is {{.DisableMacros}} -{{end}} -{{- if .DisableMacros}} - Given disable_check parameter is {{.DisableCheck}} -{{end}} -{{- if .TypeEnv}} -{{- range $index, $env := .TypeEnv}} - Given type_env parameter {{printf "%q" $env.Name}} is {{printf "%v" $env.GetDeclKind}} -{{end -}} -{{end}} -{{- if .Bindings}} -{{- range $key, $value := .Bindings}} - Given bindings parameter {{printf "%q" $key}} is {{printf "%v" $value.GetValue}} -{{end -}} -{{end}} -{{- if .Container}} - Given container is {{printf "%q" .Container}} -{{end}} - When CEL expression {{printf "%q" .Expr}} is evaluated -{{if .GetValue}} Then value is {{printf "%v" .GetValue}}{{end -}} -{{if .GetEvalError}} Then eval_error is {{printf "%v" .GetEvalError}}{{end -}} - - {{- /* Then JSON value is {{json .ResultMatcher | printf "%s" */}} - -{{end}} -{{end}} -` - func_map := template.FuncMap{ - "json": json.Marshal, - } - gherkin_template := template.Must(template.New("gherkin").Funcs(func_map).Parse(test_template)) - err := gherkin_template.Execute(os.Stdout, testFile) - if err != nil { - panic(err) - } -} - -var json_format bool -var gherkin_format bool - -func init() { - flag.BoolVar(&json_format, "json", false, "JSON-format output") - flag.BoolVar(&gherkin_format, "gherkin", true, "Gherkin-format output") -} - -func main() { - flag.Parse() - for _, input_file := range flag.Args() { - fmt.Fprintf(os.Stderr, "Reading %v\n", input_file) - pb, err := parseSimpleFile(input_file) - if err != nil { - panic(err) - } - if gherkin_format { - gherkin_testfile(pb) - } - if json_format { - json_testfile(pb) - } - } -} diff --git a/tools/pb2g.py b/tools/pb2g.py deleted file mode 100644 index 4c72660..0000000 --- a/tools/pb2g.py +++ /dev/null @@ -1,1120 +0,0 @@ -# SPDX-Copyright: Copyright (c) Capital One Services, LLC -# SPDX-License-Identifier: Apache-2.0 -# Copyright 2020 Capital One Services, LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and limitations under the License. - -""" -Protobuf to Gherkin conversion - -The objective here is to interpret the Go representation for an object written by Go -and create a CEL version of that object. - -The domain -========== - -These object values are in two places in the Gherkin code: - -- Given steps with a binding - -- Then steps with an expected value - - -Parsing the Go code -=================== - -The syntax appears to be trivial. -We can create a parser that can parse the code using a simple grammar. - -There are a few tokens, and one syntax rule. - -From an earlier parser using ``lark``, these seem to be the low-level tokens. - -:: - - value : INT | FLOAT | STRING | NULL | BOOL | TYPE - - NAME : /\\w+/ - - INT : /[+-]?\\d+/ - - FLOAT : /[+-]?\\d+\\.\\d*([eE][+-]?\\d+)?/ | /[+-]?\\d+[eE][+-]?\\d+/ | "Infinity" | "inf" | "-inf" - - STRING : /"[^"\\n\\\\]*((\\\\.)+[^"\\n\\\\]*)*("|\\\\?$)/ | /'[^'\\n\\\\]*((\\\\.)+[^'\\n\\\\]*)*('|\\\\?$)/ - - NULL : "NULL_VALUE" - - BOOL : "true" | "false" - - TYPE : "INT64" | "BOOL" | "BYTES" | "DOUBLE" | "STRING" | "NULL_VALUE" | "UINT64" - -Syntax -====== - -The two data structures of interest are - -- the primitive ``name : literal`` production, and - -- the non-primitive ``name : { structure* }`` production. - -The LALR(1) parser for this grammar uses the ``{}``'s to identify complex vs. primitive constructs. - -Building the CEL objects -======================== - -We have mocks for the various CEL types. (This is not necessary, but it seems simpler to -provide trivial stubs.) - -There's a set of functions that reconstruct objects from the Go source. - -The ``primitive_types`` are Go types that are visible as external names. -The "value" is a wrapper around a value that has to be converted separately; -usually these are fields of a Message and the Message handles the conversion. - -Top-level Application -===================== - -The application works in two stages: - -1. Run Go to do the initial conversion, creating an intermediate text representation. - -2. Rewrite THEN and GIVEN Type Binding clauses into proper CEL-Friendly types. - -Looking for the following kinds of lines created by the initial Go conversion. - -- ``r'\\s*Given bindings parameter "(.*?)" is\\s+(.*)'`` -- ``r'\\s*Given type_env parameter "(.*?)" is\\s+(.*)'`` -- ``r'\\s*When expression "(.*)" is evaluated'`` -- ``r"\\s*Then value is\\s+&\\{(.*)\\}"`` - -Each of these requires revising the literal value into a Python-friendly form. - -""" -import abc -import argparse -import contextlib -from dataclasses import dataclass, field -from functools import partial -import inspect -import logging -import math -import os -from pathlib import Path -import re -import subprocess -import sys -import traceback -from typing import ( - Any, Dict, Iterable, Iterator, List, Match, NamedTuple, - Optional, Set, Tuple, Type, Union) - -logger = logging.getLogger("pb2g") - -class Token(NamedTuple): - """Follows lark design patterns: token type and source string value.""" - type: str - value: str - -class Tokens(Iterator[Token]): - """ - The sequence of tokens for this protobuf object value. - This class defines an Iterator with backup capability so we can look ahead one token. - - >>> t = Tokens('example: {[type_name] b1: true b2: false n1: NULL_VALUE s1: "string" f1: 3.14 f2: 6E23 i1: 42}') - >>> tokens = list(t) - >>> tokens - [Token(type='NAME', value='example'), Token(type='PUNCTUATION', value=':'), Token(type='PUNCTUATION', value='{'), Token(type='NAMESPACE', value='[type_name]'), Token(type='NAME', value='b1'), Token(type='PUNCTUATION', value=':'), Token(type='BOOL', value='true'), Token(type='NAME', value='b2'), Token(type='PUNCTUATION', value=':'), Token(type='BOOL', value='false'), Token(type='NAME', value='n1'), Token(type='PUNCTUATION', value=':'), Token(type='NULL', value='NULL_VALUE'), Token(type='NAME', value='s1'), Token(type='PUNCTUATION', value=':'), Token(type='STRING', value='"string"'), Token(type='NAME', value='f1'), Token(type='PUNCTUATION', value=':'), Token(type='FLOAT', value='3.14'), Token(type='NAME', value='f2'), Token(type='PUNCTUATION', value=':'), Token(type='FLOAT', value='6E23'), Token(type='NAME', value='i1'), Token(type='PUNCTUATION', value=':'), Token(type='INT', value='42'), Token(type='PUNCTUATION', value='}')] - - >>> tokens[0].type - 'NAME' - >>> tokens[0].value - 'example' - """ - token_pat = re.compile( - r'(?P\[[\w/\.]+\])' - r'|(?Ptrue|false)' - r'|(?PNULL_VALUE)' - r'|(?P"[^"]*?(?:(?:\\.)+[^"]*?)*"|\'[^\']*?(?:(?:\\.)+[^\']*?)*\')' - r'|(?P[+-]?\d*\.\d*[Ee]?[+-]?\d*|inf|-inf|[+-]?\d+[Ee][+-]?\d+)' - r'|(?P[+-]?\d+)' - r'|(?P[a-zA-Z]\w+)' - r'|(?P\s+)' - r'|(?P.)' - ) - - @staticmethod - def token_factory(match_iter: Iterable[Match]) -> Iterator[Token]: - for match in match_iter: - for token_type, value in match.groupdict().items(): - if value and token_type != "WHITESPACE": - yield Token(token_type, value) - - def __init__(self, text) -> None: - self.text = text - matches = self.token_pat.finditer(text) - self.tokens = list(Tokens.token_factory(matches)) - self.next = 0 - def __iter__(self) -> Iterator[Token]: - return self - def __next__(self) -> Token: - if self.next == len(self.tokens): - raise StopIteration - t = self.tokens[self.next] - self.next += 1 - return t - def back(self) -> None: - self.next -= 1 - -def back(tokens) -> None: - tokens.back() - - -def detokenize(token: Token) -> Any: - """ - Rewrite source Protobuf value tokens into Python native objects. - - :: - - value : INT | FLOAT | STRING | NULL | BOOL | TYPE - - NULL : "NULL_VALUE" - BOOL : "true" | "false" - STRING : /"[^"\\n\\]*((\\.)+[^"\\n\\]*)*("|\\?$)/ | /'[^'\\n\\]*((\\.)+[^'\\n\\]*)*('|\\?$)/ - INT : /[+-]?\\d+/ - FLOAT : /[+-]?\\d+\\.\\d*([eE][+-]?\\d+)?/ | /[+-]?\\d+[eE][+-]?\\d+/ | "Infinity" | "inf" | "-inf" - - Implementation Cases: - - - ``INT`` and ``FLOAT`` are trivial because the syntax overlaps with Python. - - - ``TYPE`` is a string representation of a keyword, and also trivial. - - - ``NULL`` becomes Python ``None`` - - - ``BOOL`` becomes Python ``True`` or ``False`` - - - ``STRING`` requires some care to adjust the escapes from Protobuf to Python. - The token includes the surrounding quotes, which we have to remove. - Escapes include ``\\a`` ``\\b`` ``\\f`` ``\\n`` ``\\r`` ``\\t`` ``\\v`` - ``\\"`` ``\\\\'`` ``\\\\\\\\``. - As well as ``\\\\x[0-9a-f]{2}`` and ``\\\\\\d{3}`` for hex and octal escapes. - We build a Python string and trust to the serializer to produce a workable output. - - Tests. - - >>> detokenize(Token("INT", "42")) - 42 - >>> detokenize(Token("FLOAT", "2.71828")) - 2.71828 - >>> detokenize(Token("TYPE", "float")) - 'float' - >>> detokenize(Token("NULL", "NULL_VALUE")) - >>> detokenize(Token("BOOL", "true")) - True - >>> detokenize(Token("BOOL", "false")) - False - >>> detokenize(Token("STRING", '"this has \\"quote\\""')) - 'this has "quote"' - >>> detokenize(Token("STRING", "'this has \\'apostrophe\\''")) - "this has 'apostrophe'" - >>> detokenize(Token("STRING", 'escape a and b \\a\\b, \\x48 and \\110.')) - 'escape a and b \\x07\\x08, H and H.' - >>> detokenize(Token("STRING", '"flambΓ©"')) - 'flambΓ©' - - From the Source value "\\x07\\x08\\x0c\\n\\r\\t\\x0b\\"'\\\\" - - >>> detokenize(Token("STRING", '"\\x07\\x08\\x0c\\n\\r\\t\\x0b\\"\\'\\\\"')) - '\\x07\\x08\\x0c\\r\\t\\x0b"\\'\\\\' - """ - if token.type == "STRING": - # Default case; a few cases need bytes_detokenize. - return str_detokenize(token) - elif token.type == "BOOL": - return token.value.lower() == "true" - elif token.type == "NULL": - return None - elif token.type == "INT": - return int(token.value) - elif token.type == "FLOAT": - return float(token.value) - else: - return token.value - - -STR_ESCAPES = re.compile(r'\\"|\\\'|\\[abfnrtv\\]|\\\d{3}|\\x[0-9a-f]{2}|.') - - -def expand_str_escape(match: str) -> str: - """ - Expand one escape sequence or character. - - >>> text = "{\\"k1\\":\\"v1\\",\\"k\\":\\"v\\"}" - >>> match_iter = STR_ESCAPES.finditer(text) - >>> expanded = ''.join(expand_str_escape(m.group()) for m in match_iter) - >>> expanded - '{"k1":"v1","k":"v"}' - - """ - if match in {"\\a", "\\b", "\\f", "\\n", "\\r", "\\t", "\\v", "\\\\", '\\"', "\\'"}: - return { - "a": "\a", "b": "\b", "f": "\f", "n": "\n", - "r": "\r", "t": "\t", "v": "\v", - }.get(match[1], match[1]) - elif match[:2] == "\\x": - return chr(int(match[2:], 16)) - elif match[:1] == "\\" and len(match) > 1: - return chr(int(match[1:], 8)) - # TODO: \uxxxx and \Uxxxxxxxx - else: - # Non-escaped character. - return match - -def str_detokenize(token: Token) -> str: - """ - Rewrite source Protobuf value tokens into Python native str object. - - See https://golang.org/ref/spec#String_literals - - >>> detokenize(Token("STRING", '"this has \\"quote\\""')) - 'this has "quote"' - >>> detokenize(Token("STRING", "'this has \\'apostrophe\\''")) - "this has 'apostrophe'" - >>> detokenize(Token("STRING", 'escape a and b \\a\\b, \\x48 and \\110.')) - 'escape a and b \\x07\\x08, H and H.' - >>> detokenize(Token("STRING", '"flambΓ©"')) - 'flambΓ©' - """ - - if token.type == "STRING": - # Dequote the value, then expand escapes. - if token.value.startswith('"') and token.value.endswith('"'): - text = token.value[1:-1] - elif token.value.startswith("'") and token.value.endswith("'"): - text = token.value[1:-1] - else: - text = token.value - match_iter = STR_ESCAPES.finditer(text) - expanded = ''.join(expand_str_escape(m.group()) for m in match_iter) - return expanded - else: - raise ValueError(f"Unexpected token {token!r}") - -def bytes_detokenize(token: Token) -> bytes: - """ - Rewrite source Protobuf value tokens into Python native bytes object. - - >>> bytes_detokenize(Token("STRING", '"\\110\\x48H"')) - b'HHH' - """ - def expand_bytes_escape(matches: Iterable[Match]) -> Iterator[int]: - for text in (m.group() for m in matches): - if text[:2] == '\\x': - yield int(text[2:], 16) - elif text[:1] == '\\': - yield int(text[1:], 8) - else: - yield from text.encode('utf-8') - - if token.type == "STRING": - escapes = re.compile(r"\\\d\d\d|\\x..|.") - match_iter = escapes.finditer(token.value[1:-1]) - expanded = bytes(expand_bytes_escape(match_iter)) - return expanded - else: - raise ValueError(f"Unexpected token {token!r}") - - -class Primitive(NamedTuple): - """A name: value pair.""" - type_name: Token - value_text: Token - - @property - def type_names(self) -> Set[str]: - """Transitive closure of all contained types.""" - return set([self.type_name.value]) - - @property - def all_items(self) -> Set["Primitive"]: - return set([self]) - - @property - def value(self) -> Any: - """Undo the Go escapes to create a Python string""" - return detokenize(self.value_text) - - @property - def to_str(self) -> str: - """Undo the Go escapes to create a Python string""" - return str_detokenize(self.value_text) - - @property - def to_bytes(self) -> bytes: - """Undo the Go escapes to create a Python bytes""" - return bytes_detokenize(self.value_text) - - @property - def is_bytes(self) -> bool: - return self.type_name in {"bytes_value"} - - @property - def is_string(self) -> bool: - return not self.is_bytes - - -class Structure(NamedTuple): - """A name: {value*} pair.""" - type_name: Token - items: Tuple[Any] # Union["Primitive", "Structure"] - - @property - def type_names(self) -> Set[str]: - """Transitive closure of all contained types.""" - return set([self.type_name.value]).union(*(i.type_names for i in self.items)) - - @property - def all_items(self) -> Set["Structure"]: # Set[Union["Primitive", "Structure"]] - return set(self.items).union(*(i.all_items for i in self.items)) - -ParseTree = Union[Primitive, Structure] - -def parse_serialized_value(tokens: Tokens) -> ParseTree: - """ - Parse the following construct: - - :: - - structure : type ":" [ primitive | "{" structure* "}" ] - - Returns a a union [Primitive | Structure] - - TODO: RENAME THIS - - For example - >>> t = Tokens('example: {[namespace]:{b1: true i1: 42}}') - >>> parse_serialized_value(t) - Structure(type_name=Token(type='NAME', value='example'), items=(Structure(type_name=Token(type='NAMESPACE', value='[namespace]'), items=(Primitive(type_name=Token(type='NAME', value='b1'), value_text=Token(type='BOOL', value='true')), Primitive(type_name=Token(type='NAME', value='i1'), value_text=Token(type='INT', value='42')))),)) - """ - name = next(tokens) - colon = next(tokens) - lookahead = next(tokens) - if lookahead.type == "PUNCTUATION" and lookahead.value == "{": - items = [] - lookahead = next(tokens) - while not (lookahead.type == "PUNCTUATION" and lookahead.value == "}"): - back(tokens) - items.append(parse_serialized_value(tokens)) - lookahead = next(tokens) - return Structure(name, tuple(items)) - else: - value = lookahead - return Primitive(name, value) - -# Mocks that -- when serialized -- look like CEL types. -# We could use `from celpy.celtypes import *`. -# This approach divorces us from cel-python. - -class TypeType(NamedTuple): - """ABC of CEL Type Hierarchy.""" - source: Union[Any, None] = None - seconds: Union[float, None] = None - nanos: Union[float, None] = None - - @classmethod - def cel_name(cls) -> str: - return f"celpy.celtypes.{cls.__name__}" - - def __repr__(self) -> str: - if self.source is None: - return f"{self.cel_name()}()" - else: - return f"{self.cel_name()}(source={self.source!a})" - -class NoneType(TypeType): - @classmethod - def cel_name(cls) -> str: - return f"NoneType" - -class PrimitiveType(TypeType): - def __repr__(self) -> str: - return f"{self.cel_name()}(source={self.source!a})" - -class UintType(PrimitiveType): pass -class StringType(PrimitiveType): pass -class NullType(PrimitiveType): pass -class IntType(PrimitiveType): pass -class BoolType(PrimitiveType): pass - -class BytesType(PrimitiveType): - source: bytes - -class DoubleType(PrimitiveType): - def __repr__(self) -> str: - if math.isinf(self.source): - return f"{self.cel_name()}(source='{self.source}')" - else: - return f"{self.cel_name()}(source={self.source})" - -class DurationType(TypeType): - seconds: float - nanos: float - - def __repr__(self) -> str: - return f"{self.cel_name()}(seconds={self.seconds:.0f}, nanos={self.nanos:.0f})" - -class TimestampType(PrimitiveType): - pass - -class ListType(List[Any]): - """Built from Values objects.""" - @classmethod - def cel_name(cls) -> str: - return f"celpy.celtypes.{cls.__name__}" - -class MapType(Dict[str, Any]): - """Built from Entries objects.""" - @classmethod - def cel_name(cls) -> str: - return f"celpy.celtypes.{cls.__name__}" - - def __repr__(self) -> str: - return f"{self.__class__.__name__}({super().__repr__()})" - -class MessageType(Dict[str, Any]): - """Built from Fields objects.""" - @classmethod - def cel_name(cls) -> str: - return f"celpy.celtypes.{cls.__name__}" - -class CELEvalError(Exception): - def __init__(self, *args: Any) -> None: - super().__init__(*args) - - -# From Protobuf definitions, these are the CEL types implement them. -TYPE_NAMES = { - "google.protobuf.Any": MessageType, - "google.protubuf.Any": MessageType, # Note spelling anomaly. - "google.protobuf.BoolValue": BoolType, - "google.protobuf.BytesValue": BytesType, - "google.protobuf.DoubleValue": DoubleType, - "google.protobuf.Duration": DurationType, - "google.protobuf.FloatValue": DoubleType, - "google.protobuf.Int32Value": IntType, - "google.protobuf.Int64Value": IntType, - "google.protobuf.ListValue": ListType, - "google.protobuf.StringValue": StringType, - "google.protobuf.Struct": MessageType, - "google.protobuf.Timestamp": TimestampType, - "google.protobuf.UInt32Value": UintType, - "google.protobuf.UInt64Value": UintType, - "google.protobuf.Value": MessageType, - "type": TypeType, - "list_type": ListType, - "map_type": MapType, - "map": MapType, - "list": ListType, - "string": StringType, - "bytes": BytesType, - "bool": BoolType, - "int": IntType, - "uint": UintType, - "double": DoubleType, - "null_type": NoneType, - "STRING": StringType, - "BOOL": BoolType, - "INT64": IntType, - "UINT64": UintType, - "INT32": IntType, - "UINT32": UintType, - "BYTES": BytesType, - "DOUBLE": DoubleType, -} - -def type_value(value: str) -> type: - return TYPE_NAMES[value] - -# CEL testing types. This is part of the unit test framework. - -@dataclass -class TestAllTypes: - """ - These fields handle their own conversion from a string. - The presence of default values seems to be the way protobuf works. - """ - single_int32: int = field(default=0) # int32 single_int32 = 1; - single_int64: int = field(default=0) # int64 single_int64 = 2; - single_uint32: int = field(default=0) # uint32 single_uint32 = 3; - single_uint64: int = field(default=0) # uint64 single_uint64 = 4; - single_sint32: int = field(default=0) # sint32 single_sint32 = 5; - single_sint64: int = field(default=0) # sint64 single_sint64 = 6; - single_fixed32: int = field(default=0) # fixed32 single_fixed32 = 7; - single_fixed64: int = field(default=0) # fixed64 single_fixed64 = 8; - single_sfixed32: int = field(default=0) # sfixed32 single_sfixed32 = 9; - single_sfixed64: int = field(default=0) # sfixed64 single_sfixed64 = 10; - single_float: float = field(default=0) # float single_float = 11; - single_double: float = field(default=0) # double single_double = 12; - single_bool: bool = field(default=0) # bool single_bool = 13; - single_string: str = field(default="") # string single_string = 14; - single_bytes: bytes = field(default=b"") # bytes single_bytes = 15; - - single_any: Any = field(default=None) # google.protobuf.Any single_any = 100; - single_duration: DurationType = field(default=None) # google.protobuf.Duration single_duration = 101; - single_timestamp: TimestampType = field(default=None) # google.protobuf.Timestamp single_timestamp = 102; - single_struct: MessageType = field(default_factory=MapType) # google.protobuf.Struct single_struct = 103; - single_value: Any = field(default=None) # google.protobuf.Value single_value = 104; - single_int64_wrapper: IntType = field(default=IntType(0)) # google.protobuf.Int64Value single_int64_wrapper = 105; - single_int32_wrapper: IntType = field(default=IntType(0)) # google.protobuf.Int32Value single_int32_wrapper = 106; - single_double_wrapper: DoubleType = field(default=DoubleType(0)) # google.protobuf.DoubleValue single_double_wrapper = 107; - single_float_wrapper: DoubleType = field(default=DoubleType(0)) # google.protobuf.FloatValue single_float_wrapper = 108; - single_uint64_wrapper: UintType = field(default=UintType(0)) # google.protobuf.UInt64Value single_uint64_wrapper = 109; - single_uint32_wrapper: UintType = field(default=UintType(0)) # google.protobuf.UInt32Value single_uint32_wrapper = 110; - single_string_wrapper: StringType = field(default=StringType("")) # google.protobuf.StringValue single_string_wrapper = 111; - single_bool_wrapper: BoolType = field(default=BoolType(False)) # google.protobuf.BoolValue single_bool_wrapper = 112; - single_bytes_wrapper: BytesType = field(default=BytesType(b"")) # google.protobuf.BytesValue single_bytes_wrapper = 113; - list_value: ListType = field(default_factory=ListType) # google.protobuf.ListValue list_value = 114; - -class NestedMessage: - def __repr__(self): - return f"NestedMessage()" - - -def debug_call_stack() -> None: - """Expose the call stack in the log, this can help debug builders with unexpected state.""" - for context_frame_line in traceback.format_stack(): - if 'site-packages' in context_frame_line: - # Skip standard library and installed packages - continue - elif 'debug_call_stack' in context_frame_line: - # Skip this function. - continue - logger.debug(f" {context_frame_line.rstrip()}") - - -# Each of these transforms a given ``Primitive`` into a CEL object. -primitive_types = { - 'bool_value': lambda p: BoolType(detokenize(p.value_text)), - 'bytes_value': lambda p: BytesType(bytes_detokenize(p.value_text)), - 'double_value': lambda p: DoubleType(detokenize(p.value_text)), - 'int64_value': lambda p: IntType(detokenize(p.value_text)), - 'null_value': lambda p: None, - 'string_value': lambda p: StringType(detokenize(p.value_text)), - 'type_value': lambda p: type_value(detokenize(p.value_text)), # TypeType(detokenize(p.value_text)), - 'uint64_value': lambda p: UintType(detokenize(p.value_text)), - 'number_value': lambda p: DoubleType(detokenize(p.value_text)), - 'value': lambda p: detokenize(p.value_text), -} - -def map_builder(*items: ParseTree) -> TypeType: - """Builds MapType objects from the ``entries`` clauses.""" - logger.debug(f" map_builder({items!r})") - entries = {} - for entry in items: - assert isinstance(entry, Structure) and entry.type_name.value == "entries", f"Unexpected {entry!r}" - k, v = entry.items - key = structure_builder(k.items[0]) - value = structure_builder(v.items[0]) - entries[key] = value - return MapType(entries) - -def list_builder(*items: ParseTree) -> TypeType: - """Builds ListType objects from the ``values`` clauses.""" - logger.debug(f" list_builder({items!r})") - values = [] - for value_source in items: - assert isinstance(value_source, Structure) and value_source.type_name.value == "values", f"Unexpected {value_source!r}" - item = value_source.items[0] - value = structure_builder(item) - values.append(value) - return ListType(values) - -def struct_builder(*items: ParseTree) -> TypeType: - """ - Builds MessageType objects from the ``fields`` clauses. - The ``Any`` special case is taken as a type cast and ignored. - - :: - - object_value:{ - [type.googleapis.com/google.protobuf.Any]:{ - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{ - single_int32:150 - } - } - } - - Which is a ``TestAllTypes(single_int32="150")`` for our purposes. - """ - logger.debug(f" struct_builder({items!r})") - fields = {} - for field_source in items: - assert isinstance(field_source, Structure) and field_source.type_name.value == "fields", f"Unexpected {field_source!r}" - k, v = field_source.items - key = structure_builder(k) # type_name is "key" - value = structure_builder(v) # type_name is "value" - fields[key] = value - return MessageType(fields) - -def duration_builder(*items: ParseTree) -> TypeType: - """Building duration from ``seconds`` and ``nanos`` - :: - - value:{object_value:{[type.googleapis.com/google.protobuf.Duration]:{seconds:123 nanos:123456789}}} - - """ - fields = {} - for field_source in items: - value = structure_builder(field_source) - fields[field_source.type_name.value] = value - return DurationType(**fields) - -def timestamp_builder(*items: ParseTree) -> TypeType: - """Building timestamp from ``seconds`` - :: - - object_value:{ - [type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_timestamp:{seconds:1234567890}} - } - """ - fields = {} - for field_source in items: - value = structure_builder(field_source) - fields[field_source.type_name.value] = value - return TimestampType(**fields) - -def primitive_builder(celtype: Type[TypeType], *items: ParseTree) -> TypeType: - """Building from some primitive, usually a ``value``. - """ - # debug_call_stack() # Useful for debugging. - assert len(items) == 1, f"Unexpected: more than 1 item in {items!r}" - item = items[0] - return celtype(detokenize(item.value_text)) - -def any_builder(*items: ParseTree) -> TypeType: - """ - Clandestine object_value can be hidden inside an Any object. - - :: - - value:{ - object_value:{ - [type.googleapis.com/google.protobuf.Any]:{ - [type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:150} - } - } - } - """ - assert len(items) == 1 - item = items[0] - return structure_builder(item) - -well_known_types = { - # Primitive - '[type.googleapis.com/google.protobuf.Any]': any_builder, - '[type.googleapis.com/google.protobuf.BoolValue]': partial(primitive_builder, BoolType), - '[type.googleapis.com/google.protobuf.BytesValue]': partial(primitive_builder, BytesType), - '[type.googleapis.com/google.protobuf.DoubleValue]': partial(primitive_builder, DoubleType), - '[type.googleapis.com/google.protobuf.FloatValue]': partial(primitive_builder, DoubleType), - '[type.googleapis.com/google.protobuf.Int32Value]': partial(primitive_builder, IntType), - '[type.googleapis.com/google.protobuf.Int64Value]': partial(primitive_builder, IntType), - '[type.googleapis.com/google.protobuf.StringValue]': partial(primitive_builder, StringType), - '[type.googleapis.com/google.protobuf.UInt32Value]': partial(primitive_builder, UintType), - '[type.googleapis.com/google.protobuf.UInt64Value]': partial(primitive_builder, UintType), - # Structured -- These have sub-structures that repeat -- `values` or `fields` - '[type.googleapis.com/google.protobuf.ListValue]': list_builder, # values:{} inside - '[type.googleapis.com/google.protobuf.Struct]': struct_builder, # fields:{} inside - '[type.googleapis.com/google.protobuf.Value]': lambda *s: structure_builder(*s), # fields:{} inside - # Structured -- these have field names, much like extension types. - '[type.googleapis.com/google.protobuf.TimeStamp]': timestamp_builder, - '[type.googleapis.com/google.protobuf.Duration]': duration_builder, -} - - -# These do not have sub-members -- the names of the contained objects are field names. -extension_types = { - '[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes.NestedMessage]': NestedMessage, - '[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]': TestAllTypes, - '[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes.NestedMessage]': NestedMessage, - '[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]': TestAllTypes, -} - - -def object_builder(*items: ParseTree) -> TypeType: - """ - Build an ``object_value {}`` instance. These are more complex because -- generally -- they're - protobuf message instances with many individual fields. - - Edge case of an object that's really a Primitive - :: - - object_value:{ - [type.googleapis.com/google.protobuf.Int32Value]: - {value:2000000} - } - - Separately, a generic Value contains a "struct_value". - :: - - object_value:{ - [type.googleapis.com/google.protobuf.Value]:{ - struct_value:{ - fields:{key:"x" value:{null_value:NULL_VALUE}} - fields:{key:"y" value:{bool_value:false}} - } - } - } - """ - assert len(items) == 1 and isinstance(items[0], Structure), f"Unexpected {items!r}" - item = items[0] - assert item.type_name.type == "NAMESPACE", f"Unexpected {items!r}" - if item.type_name.value in well_known_types: - logger.debug(f" object_builder({item!r}) (well_known_types)") - # Singleton? - if len(item.items) == 1: - nested_item = item.items[0] - if isinstance(nested_item, Primitive): - return well_known_types[item.type_name.value](nested_item) - # ListValue requires items.type_name=values, from which each value is extracted. - # Struct requires items.type_name=fields, from which each key and value are extracted. - # Duration requires two Primitives to provide attribute name and value. - return well_known_types[item.type_name.value](*item.items) - - elif item.type_name.value in extension_types: - logger.debug(f" object_builder({item!r}) (extension_types)...") - fields = {} - for field in item.items: - # name string = field.type_name.value - # Value, however, is tricky. - if isinstance(field, Primitive): - # A single, named field. The value is a Primitive; we can deduce a type. - fields[field.type_name.value] = detokenize(field.value_text) - elif len(field.items) > 1: - # What are the items? - item_kind = {i.type_name.value for i in field.items} - # All values? We have a list. - if item_kind == {"values"}: - value = ListType([structure_builder(i) for i in field.items]) - # All fields? We have a mapping. - elif item_kind == {"fields"}: - pairs = [structure_builder(i) for i in field.items] - subfields = {k: v for k, v in pairs} - value = MapType(subfields) - else: - raise ValueError(f"Mixed item kinds {item_kind!r} in object_builder({items!r})") - fields[field.type_name.value] = value - elif len(field.items) == 1: - # A single, named field. The object is a Structure; it has type information. - fields[field.type_name.value] = structure_builder(field.items[0]) - else: - fields[field.type_name.value] = None - logger.debug(f" field {field!r} => {field.type_name.value!r} = {fields[field.type_name.value]}") - return extension_types[item.type_name.value](**fields) - else: - logger.debug(f" object_builder({item!r}) (Can't handle {item.type_name.value})") - raise ValueError(f"What is this? object_builder({items!r})") - - -def error_builder(*items: ParseTree) -> TypeType: - """ - Build an error result. - """ - error = structure_builder(items[0]) - return CELEvalError(error) - - -def type_builder(*items: ParseTree) -> TypeType: - """ - Build a type name for the environment. - We do not traverse the entire protobuf structure. - """ - item = items[0] - logger.debug(f" type_builder({item!r})") - if isinstance(item, Primitive): - # Wrong... return TypeType(detokenize(item.value_text)) - return type_value(detokenize(item.value_text)) - else: - # TODO: Descend into the type structure - # Wrong... return TypeType(item.type_name.value) - return type_value(item.type_name.value) - - -# Top-level values seen in the output Go serialization of an object. -# Note the circularity: ``'value'`` has a forward reference. - -structure_types = { - 'errors': error_builder, - 'list_value': list_builder, - 'map_value': map_builder, - 'object_value': object_builder, - 'struct_value': struct_builder, - 'value': lambda s: structure_builder(s), - 'type': type_builder, - 'type_value': type_builder, - # Parts of a Struct or List (or Map) - 'fields': lambda k, v: (structure_builder(k), structure_builder(v)), - 'values': lambda s: structure_builder(s), -} - - -def structure_builder(structure: ParseTree) -> TypeType: - """ - Top-level generic builder of CEL objects from the serialized Go object. - """ - logger.debug(f" structure_builder({structure!r})") - if isinstance(structure, Primitive): - if structure.type_name.value in primitive_types: - return primitive_types[structure.type_name.value](structure) - return detokenize(structure.value_text) - elif isinstance(structure, Structure): - if structure.type_name.value in structure_types: - return structure_types[structure.type_name.value](*structure.items) - # Edge Case 1: DurationType and TimestampType doesn't have `values` or `fields`, - # they have labeled items, not typed items. - # Edge Case 2: A clandestine object_value{[type]: {value}} without an `object_value` label. - return object_builder(structure) - else: - raise ValueError(f"What is this? structure_builder({structure!r})") - -class Gherkinizer(abc.ABC): - """Abstract Base Class for Gherkinization.""" - - @abc.abstractmethod - def convert(self, source_path: Optional[Path], target_path: Optional[Path]) -> None: - ... - -class LocalGherkinzer(Gherkinizer): - GHERKINIZER = Path.cwd() / "tools" / "mkgherkin.go" - - def convert(self, source_path: Optional[Path], target_path: Optional[Path]) -> None: - """ - Convert from textproto to interim Gherkin that contains Go value serializations. - - Requires GO on the ``PATH``. - - Build the app: - .. code-block:: bash - - % go mod init mkgherkin - % go mod tidy - - Run the app: - .. code-block:: bash - - % export PATH="/usr/local/go/bin:/usr/local/bin:$PATH" - % export GOPATH="~/go" - % mkgherkin.go name.textproto >name.interim - """ - logger.info(f"With local {self.GHERKINIZER}") - if source_path and target_path: - logger.info(f"gherkinize {source_path.name} -> {target_path.name}") - elif source_path: - logger.info(f"gherkinize {source_path.name} -> STDOUT") - - env = { - "PATH": f"/usr/local/go/bin:/usr/local/bin:{os.environ['PATH']}", - "GOPATH": str(Path.home()/"go"), - "HOME": str(Path.home()), - } - command = ["go", "run", self.GHERKINIZER.stem] - - if source_path: - command.append(str(source_path.absolute())) - - output_context = target_path.open('w') if target_path else contextlib.nullcontext(None) - try: - with output_context as interim: - subprocess.run( - command, - env=env, - stdout=interim, - check=True) - except subprocess.CalledProcessError as ex: - print( - f"{' '.join(command)} failed; " - f"perhaps `go mod init {self.GHERKINIZER.stem}; go get` is required." - ) - raise - -class DockerGherkinzer(Gherkinizer): - def convert(self, source_path: Optional[Path], target_path: Optional[Path]) -> None: - """ - Convert from textproto to interim Gherkin that contains Go value serializations. - - Requires ``docker`` on the ``PATH``. - - See ``tools/Dockerfile``. - - Build the docker image: - .. code-block:: bash - - % docker pull golang - % docker build -t mkgherkin . - - Run the docker image: - .. code-block:: bash - - % docker run --rm --name mkgherkin -v .:/usr/cel-python/textproto mkgherkin name.textproto >name.interim - """ - logger.info("With 'mkgherkin' Docker image") - if source_path and target_path: - logger.info(f"gherkinize {source_path.name} -> {target_path.name}") - elif source_path: - logger.info(f"gherkinize {source_path.name} -> STDOUT") - - command = ["docker", "run", "--rm", "--name", "mkgherkin", "-v", ".:/usr/cel-python/textproto", "mkgherkin"] - if source_path: - command.append(str(source_path.name)) - - try: - output_context = ( - target_path.open('w') if target_path else contextlib.nullcontext(None) - ) - with output_context as interim: - subprocess.run( - command, - stdout=interim, - check=True) - except subprocess.CalledProcessError as ex: - print( - f"{' '.join(command)} failed; " - f"`docker` and mkgherkin docker image are required." - ) - raise - -def expand_cel(feature_text: str) -> None: - """Revises CEL from Go notation to Python notation.""" - given_bindings_pat = re.compile(r'\s*Given bindings parameter "(.*?)" is\s+(.*)') - given_type_env_pat = re.compile(r'\s*Given type_env parameter "(.*?)" is\s+&\{(.*)\}') - when_expr_pat = re.compile(r'\s*When CEL expression "(.*)" is evaluated') - then_value_pat = re.compile(r"\s*Then value is\s+(.*)") - then_error_pat = re.compile(r"\s*Then eval_error is\s+(.*)") - - for line in feature_text.splitlines(): - given_binding_line = given_bindings_pat.match(line) - given_type_env_line = given_type_env_pat.match(line) - when_expr_line = when_expr_pat.match(line) - then_value_line = then_value_pat.match(line) - then_error_line = then_error_pat.match(line) - if given_binding_line: - # Replace the value with a proper CEL object - variable, value = given_binding_line.groups() - replacement = structure_builder(parse_serialized_value(Tokens(value))) - print(f' # {value}') - print(f' Given bindings parameter "{variable}" is {replacement}') - elif given_type_env_line: - # Replace the value with a CEL-friendly variant on the type name - variable, type_spec = given_type_env_line.groups() - replacement = structure_builder(parse_serialized_value(Tokens(type_spec))) - print(f' # {type_spec}') - print(f' Given type_env parameter "{variable}" is {replacement.cel_name()}') - elif then_value_line: - # Replace the value with a proper CEL object - value = then_value_line.group(1) - replacement = structure_builder(parse_serialized_value(Tokens(value))) - print(f' # {value}') - if type(replacement) == type: - print(f' Then value is {replacement.cel_name()}') - else: - print(f' Then value is {replacement!r}') - elif then_error_line: - # Replace the error with a more useful CEL-like. - value = then_error_line.group(1) - replacement_exception = structure_builder(parse_serialized_value(Tokens(value))) - print(f' # {value}') - print(f' Then eval_error is {replacement_exception.args[0]!r}') - elif when_expr_line: - # Clean up escaped quotes within the CEL expr. - value = when_expr_line.group(1) - replacement = ''.join( - expand_str_escape(m.group()) for m in STR_ESCAPES.finditer(value)) - if '"' in replacement: - print(f" When CEL expression '{replacement}' is evaluated") - else: - print(f' When CEL expression "{replacement}" is evaluated') - else: - # it's already perfect - print(line) - -def celify(source_path: Path, target_path: Optional[Path]) -> None: - """ - Rewrite interim Gherkin that contains Go value serializations into final Gherkin with CEL serializations. - - This reads the interim Gherkin, looking for specific clauses with serialized values: - - - Given bindings parameter ... is ... - - Given type_env parameter ... is ... - - When CEL expression "..." is evaluated - - Then value is ... - - These contain Go values which are parsed and rebuilt as CEL objects. - The resulting Gherkin is written to a given Path, or stdout if not Path is given. - """ - if target_path: - logger.info(f"celify {source_path.name} -> {target_path.name}") - else: - logger.info(f"celify {source_path.name}") - - feature_text = source_path.read_text() - if target_path: - with target_path.open('w') as target_file: - with contextlib.redirect_stdout(target_file): - expand_cel(feature_text) - else: - with contextlib.nullcontext(None): - expand_cel(feature_text) - - -def get_options(argv: List[str] = sys.argv[1:]) -> argparse.Namespace: - parser = argparse.ArgumentParser() - parser.add_argument( - '-g', '--gherkinizer', - choices=["docker", "local"], - default="docker") - parser.add_argument( - '-v', '--verbose', - dest="log_level", - action='store_const', const=logging.DEBUG, default=logging.INFO) - parser.add_argument( - "-s", "--silent", - dest="log_level", - action="store_const", const=logging.ERROR) - parser.add_argument( - '-o', '--output', action='store', type=Path, default=None, - help="output file (default is stdout)" - ) - parser.add_argument( - 'source', action='store', nargs='?', type=Path, - help=".textproto file to convert" - ) - options = parser.parse_args(argv) - return options - - -if __name__ == "__main__": - logging.basicConfig(level=logging.INFO) - options = get_options() - logging.getLogger().setLevel(options.log_level) - - if options.gherkinizer.lower() == "docker": - gherkinzer = DockerGherkinzer() - else: - gherkinzer = LocalGherkinzer() - - if not options.source: - gherkinzer.convert(None, None) - sys.exit() - - source = options.source - interim = source.with_suffix(".interim") - gherkinzer.convert(source, interim) - celify(interim, options.output) diff --git a/tools/test_gherkinize.py b/tools/test_gherkinize.py new file mode 100644 index 0000000..de9be6a --- /dev/null +++ b/tools/test_gherkinize.py @@ -0,0 +1,5581 @@ +# SPDX-Copyright: Copyright (c) Capital One Services, LLC +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2020 Capital One Services, LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and limitations under the License. + +""" +Test translation of the pb2g tool to convert textproto to Gherkin.. +""" + +from google.protobuf import any_pb2, struct_pb2 +from cel.expr.conformance.proto2 import test_all_types_pb2 as proto2_test_all_types +from cel.expr.conformance.proto3 import test_all_types_pb2 as proto3_test_all_types +from gherkinize import ( + CELValue, + CELBool, + CELBytes, + CELErrorSet, + CELInt, + CELDouble, + CELDuration, + CELList, + CELMap, + CELNull, + CELString, + CELUint, + CELType, + Result, +) + + +def test_given_bindings() -> None: + assert Result.from_text_proto_str("value:{int64_value:123}") == Result( + "value", CELInt(source=123) + ) + assert Result.from_text_proto_str("value:{bool_value:true}") == Result( + "value", CELBool(source=True) + ) + assert Result.from_text_proto_str("value:{bool_value:false}") == Result( + "value", CELBool(source=False) + ) + assert Result.from_text_proto_str('value:{bytes_value:"\\x00"}') == Result( + "value", CELBytes(source=b"\x00") + ) + assert Result.from_text_proto_str("value:{int64_value:124}") == Result( + "value", CELInt(source=124) + ) + assert Result.from_text_proto_str("value:{double_value:9.8}") == Result( + "value", CELDouble(source=9.8) + ) + assert Result.from_text_proto_str( + 'value:{map_value:{entries:{key:{string_value:"c"} value:{string_value:"d"}} entries:{key:{string_value:"a"} value:{string_value:"b"}}}}' + ) == Result( + "value", CELMap({"c": CELString(source="d"), "a": CELString(source="b")}) + ) + assert Result.from_text_proto_str("value:{null_value:NULL_VALUE}") == Result( + "value", None + ) + assert Result.from_text_proto_str( + "value:{list_value:{values:{int64_value:2} values:{int64_value:1}}}" + ) == Result("value", CELList([CELInt(source=2), CELInt(source=1)])) + assert Result.from_text_proto_str('value:{string_value:"abc"}') == Result( + "value", CELString(source="abc") + ) + assert Result.from_text_proto_str("value:{uint64_value:1000}") == Result( + "value", CELUint(source=1000) + ) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/google.protobuf.Int32Value]:{value:2000000}}}" + ) == Result("value", CELInt(source=2000000)) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/google.protobuf.Int64Value]:{value:2000000}}}" + ) == Result("value", CELInt(source=2000000)) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/google.protobuf.UInt32Value]:{value:2000000}}}" + ) == Result("value", CELUint(source=2000000)) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/google.protobuf.UInt64Value]:{value:2000000}}}" + ) == Result("value", CELUint(source=2000000)) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/google.protobuf.FloatValue]:{value:-1.25e+06}}}" + ) == Result("value", CELDouble(source=-1250000.0)) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/google.protobuf.DoubleValue]:{value:-1.25e+06}}}" + ) == Result("value", CELDouble(source=-1250000.0)) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/google.protobuf.BoolValue]:{value:true}}}" + ) == Result("value", CELBool(source=True)) + assert Result.from_text_proto_str( + 'value:{object_value:{[type.googleapis.com/google.protobuf.StringValue]:{value:"bar"}}}' + ) == Result("value", CELString(source="bar")) + assert Result.from_text_proto_str( + 'value:{object_value:{[type.googleapis.com/google.protobuf.BytesValue]:{value:"bar"}}}' + ) == Result("value", CELBytes(source=b"bar")) + assert Result.from_text_proto_str( + 'value:{object_value:{[type.googleapis.com/google.protobuf.ListValue]:{values:{string_value:"bar"} values:{list_value:{values:{string_value:"a"} values:{string_value:"b"}}}}}}' + ) == Result( + "value", + CELList( + [ + CELString(source="bar"), + CELList([CELString(source="a"), CELString(source="b")]), + ] + ), + ) + assert Result.from_text_proto_str( + 'value:{object_value:{[type.googleapis.com/google.protobuf.Struct]:{fields:{key:"first" value:{string_value:"Abraham"}} fields:{key:"last" value:{string_value:"Lincoln"}}}}}' + ) == Result( + "value", + CELMap( + {"first": CELString(source="Abraham"), "last": CELString(source="Lincoln")} + ), + ) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/google.protobuf.Value]:{null_value:NULL_VALUE}}}" + ) == Result("value", None) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/google.protobuf.Value]:{number_value:-26.375}}}" + ) == Result("value", CELDouble(source=-26.375)) + assert Result.from_text_proto_str( + 'value:{object_value:{[type.googleapis.com/google.protobuf.Value]:{string_value:"bar"}}}' + ) == Result("value", CELString(source="bar")) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/google.protobuf.Value]:{bool_value:true}}}" + ) == Result("value", CELBool(source=True)) + assert Result.from_text_proto_str( + 'value:{object_value:{[type.googleapis.com/google.protobuf.Value]:{struct_value:{fields:{key:"x" value:{null_value:NULL_VALUE}} fields:{key:"y" value:{bool_value:false}}}}}}' + ) == Result("value", CELMap({"x": CELNull(), "y": CELBool(source=False)})) + assert Result.from_text_proto_str( + 'value:{object_value:{[type.googleapis.com/google.protobuf.Value]:{list_value:{values:{number_value:1} values:{bool_value:true} values:{string_value:"hi"}}}}}' + ) == Result( + "value", + CELList([CELDouble(source=1), CELBool(source=True), CELString(source="hi")]), + ) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/google.protobuf.Any]:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int32:150}}}}" + ) == Result( + "value", + CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=150, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ), + ) + assert Result.from_text_proto_str( + 'value:{map_value:{entries:{key:{string_value:"name"} value:{int64_value:1024}}}}' + ) == Result("value", CELMap({"name": CELInt(source=1024)})) + assert Result.from_text_proto_str( + 'value:{map_value:{entries:{key:{string_value:"holiday"} value:{string_value:"field"}}}}' + ) == Result("value", CELMap({"holiday": CELString(source="field")})) + assert Result.from_text_proto_str('value:{string_value:"yeah"}') == Result( + "value", CELString(source="yeah") + ) + assert Result.from_text_proto_str( + 'value:{map_value:{entries:{key:{string_value:"c"} value:{string_value:"yeah"}}}}' + ) == Result("value", CELMap({"c": CELString(source="yeah")})) + assert Result.from_text_proto_str( + 'value:{map_value:{entries:{key:{string_value:"c"} value:{string_value:"oops"}}}}' + ) == Result("value", CELMap({"c": CELString(source="oops")})) + assert Result.from_text_proto_str( + 'value:{list_value:{values:{string_value:"pancakes"}}}' + ) == Result("value", CELList([CELString(source="pancakes")])) + assert Result.from_text_proto_str("value:{int64_value:15}") == Result( + "value", CELInt(source=15) + ) + assert Result.from_text_proto_str('value:{string_value:"false"}') == Result( + "value", CELString(source="false") + ) + assert Result.from_text_proto_str( + "value:{list_value:{values:{int64_value:0}}}" + ) == Result("value", CELList([CELInt(source=0)])) + assert Result.from_text_proto_str("value:{int64_value:17}") == Result( + "value", CELInt(source=17) + ) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int32:17}}}" + ) == Result( + "value", + CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=17, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ), + ) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int64:-99}}}" + ) == Result( + "value", + CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=-99, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ), + ) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_int32:17}}}" + ) == Result( + "value", + CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=17, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ), + ) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_int64:-99}}}" + ) == Result( + "value", + CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=-99, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ), + ) + assert Result.from_text_proto_str( + "value:{object_value:{[type.googleapis.com/google.protobuf.Duration]:{seconds:123 nanos:123456789}}}" + ) == Result("value", CELDuration(seconds=123, nanos=123456789)) + + +def test_then_values() -> None: + assert CELValue.from_text_proto_str("int64_value:0") == CELInt(source=0) + assert CELValue.from_text_proto_str("uint64_value:0") == CELUint(source=0) + assert CELValue.from_text_proto_str("double_value:0") == CELDouble(source=0) + assert CELValue.from_text_proto_str('string_value:""') == CELString(source="") + assert CELValue.from_text_proto_str('bytes_value:""') == CELBytes(source=b"") + assert CELValue.from_text_proto_str("bool_value:false") == CELBool(source=False) + assert CELValue.from_text_proto_str("null_value:NULL_VALUE") == CELNull() + assert CELValue.from_text_proto_str("list_value:{}") == CELList([]) + assert CELValue.from_text_proto_str("map_value:{}") == CELMap({}) + assert CELValue.from_text_proto_str("int64_value:42") == CELInt(source=42) + assert CELValue.from_text_proto_str("uint64_value:123456789") == CELUint( + source=123456789 + ) + assert CELValue.from_text_proto_str("int64_value:-9223372036854775808") == CELInt( + source=-9223372036854775808 + ) + assert CELValue.from_text_proto_str("double_value:-23") == CELDouble(source=-23) + assert CELValue.from_text_proto_str('string_value:"!"') == CELString(source="!") + assert CELValue.from_text_proto_str('string_value:"\'"') == CELString(source="'") + assert CELValue.from_text_proto_str('bytes_value:"ΓΏ"') == CELBytes( + source=b"\xc3\xbf" + ) + assert CELValue.from_text_proto_str('bytes_value:"\\x00\\xff"') == CELBytes( + source=b"\x00\xff" + ) + assert CELValue.from_text_proto_str( + "list_value:{values:{int64_value:-1}}" + ) == CELList([CELInt(source=-1)]) + assert CELValue.from_text_proto_str( + 'map_value:{entries:{key:{string_value:"k"} value:{string_value:"v"}}}' + ) == CELMap({"k": CELString(source="v")}) + assert CELValue.from_text_proto_str("bool_value:true") == CELBool(source=True) + assert CELValue.from_text_proto_str("int64_value:1431655765") == CELInt( + source=1431655765 + ) + assert CELValue.from_text_proto_str("int64_value:-1431655765") == CELInt( + source=-1431655765 + ) + assert CELValue.from_text_proto_str("uint64_value:1431655765") == CELUint( + source=1431655765 + ) + assert CELValue.from_text_proto_str('string_value:"✌"') == CELString(source="✌") + assert CELValue.from_text_proto_str('string_value:"🐱"') == CELString(source="🐱") + assert CELValue.from_text_proto_str( + 'string_value:"\\x07\\x08\\x0c\\n\\r\\t\\x0b\\"\'\\\\"' + ) == CELString(source="\x07\x08\x0c\n\r\t\x0b\"'\\") + assert CELValue.from_text_proto_str("int64_value:123") == CELInt(source=123) + assert CELErrorSet.from_text_proto_str( + "errors:{message:\"undeclared reference to 'x' (in container '')\"}" + ) == CELErrorSet("undeclared reference to 'x' (in container '')") + assert CELValue.from_text_proto_str("int64_value:2") == CELInt(source=2) + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"unbound function"}' + ) == CELErrorSet("unbound function") + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"no such overload"}' + ) == CELErrorSet("no such overload") + assert CELValue.from_text_proto_str('bytes_value:"abc"') == CELBytes(source=b"abc") + assert CELValue.from_text_proto_str("double_value:1e+12") == CELDouble( + source=1000000000000.0 + ) + assert CELValue.from_text_proto_str("double_value:-1e+15") == CELDouble( + source=-1000000000000000.0 + ) + assert CELValue.from_text_proto_str( + "double_value:9.223372036854776e+18" + ) == CELDouble(source=9.223372036854776e18) + assert CELValue.from_text_proto_str("double_value:123") == CELDouble(source=123) + assert CELValue.from_text_proto_str( + "double_value:1.8446744073709552e+19" + ) == CELDouble(source=1.8446744073709552e19) + assert CELValue.from_text_proto_str("double_value:-0") == CELDouble(source=0) + assert CELValue.from_text_proto_str("double_value:123.456") == CELDouble( + source=123.456 + ) + assert CELValue.from_text_proto_str("double_value:-987.654") == CELDouble( + source=-987.654 + ) + assert CELValue.from_text_proto_str("double_value:6.02214e+23") == CELDouble( + source=6.02214e23 + ) + assert CELValue.from_text_proto_str("double_value:1.38e-23") == CELDouble( + source=1.38e-23 + ) + assert CELValue.from_text_proto_str("double_value:-8.432e+08") == CELDouble( + source=-843200000.0 + ) + assert CELValue.from_text_proto_str("double_value:-5.43e-21") == CELDouble( + source=-5.43e-21 + ) + assert CELValue.from_text_proto_str('type_value:"list"') == CELType(value="list") + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"range error"}' + ) == CELErrorSet("range error") + assert CELValue.from_text_proto_str("int64_value:-123") == CELInt(source=-123) + assert CELValue.from_text_proto_str("int64_value:-8") == CELInt(source=-8) + assert CELValue.from_text_proto_str("int64_value:12") == CELInt(source=12) + assert CELValue.from_text_proto_str("int64_value:-4") == CELInt(source=-4) + assert CELErrorSet.from_text_proto_str('errors:{message:"range"}') == CELErrorSet( + "range" + ) + assert CELValue.from_text_proto_str("int64_value:987") == CELInt(source=987) + assert CELValue.from_text_proto_str("int64_value:1095379199") == CELInt( + source=1095379199 + ) + assert CELValue.from_text_proto_str('string_value:"123"') == CELString(source="123") + assert CELValue.from_text_proto_str('string_value:"-456"') == CELString( + source="-456" + ) + assert CELValue.from_text_proto_str('string_value:"9876"') == CELString( + source="9876" + ) + assert CELValue.from_text_proto_str('string_value:"123.456"') == CELString( + source="123.456" + ) + assert CELValue.from_text_proto_str('string_value:"-0.0045"') == CELString( + source="-0.0045" + ) + assert CELValue.from_text_proto_str('string_value:"abc"') == CELString(source="abc") + assert CELValue.from_text_proto_str('string_value:"ΓΏ"') == CELString(source="ΓΏ") + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"invalid UTF-8"}' + ) == CELErrorSet("invalid UTF-8") + assert CELValue.from_text_proto_str('type_value:"bool"') == CELType(value="bool") + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"unknown varaible"}' + ) == CELErrorSet("unknown varaible") + assert CELValue.from_text_proto_str('type_value:"int"') == CELType(value="int") + assert CELValue.from_text_proto_str('type_value:"uint"') == CELType(value="uint") + assert CELValue.from_text_proto_str('type_value:"double"') == CELType( + value="double" + ) + assert CELValue.from_text_proto_str('type_value:"null_type"') == CELType( + value="null_type" + ) + assert CELValue.from_text_proto_str('type_value:"string"') == CELType( + value="string" + ) + assert CELValue.from_text_proto_str('type_value:"bytes"') == CELType(value="bytes") + assert CELValue.from_text_proto_str('type_value:"map"') == CELType(value="map") + assert CELValue.from_text_proto_str('type_value:"type"') == CELType(value="type") + assert CELValue.from_text_proto_str("uint64_value:1729") == CELUint(source=1729) + assert CELValue.from_text_proto_str("uint64_value:3") == CELUint(source=3) + assert CELValue.from_text_proto_str("uint64_value:2") == CELUint(source=2) + assert CELValue.from_text_proto_str("uint64_value:26") == CELUint(source=26) + assert CELValue.from_text_proto_str("uint64_value:300") == CELUint(source=300) + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"no_matching_overload"}' + ) == CELErrorSet("no_matching_overload") + assert CELValue.from_text_proto_str("int64_value:2000000") == CELInt(source=2000000) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int32_wrapper:{value:432}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper={"value": 432}, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int32_wrapper:{}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper={}, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str("int64_value:642") == CELInt(source=642) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_int32_wrapper:{value:-975}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper={"value": -975}, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_int32_wrapper:{}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper={}, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int64_wrapper:{value:432}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper={"value": 432}, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int64_wrapper:{}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper={}, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_int64_wrapper:{value:-975}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper={"value": -975}, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_int64_wrapper:{}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper={}, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str("uint64_value:123") == CELUint(source=123) + assert CELValue.from_text_proto_str("uint64_value:2000000") == CELUint( + source=2000000 + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_uint32_wrapper:{value:432}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper={"value": 432}, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_uint32_wrapper:{}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper={}, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_uint32_wrapper:{value:975}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper={"value": 975}, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_uint32_wrapper:{}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper={}, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str("uint64_value:258") == CELUint(source=258) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_uint64_wrapper:{value:432}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper={"value": 432}, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_uint64_wrapper:{}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper={}, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_uint64_wrapper:{value:975}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper={"value": 975}, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_uint64_wrapper:{}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper={}, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str("uint64_value:5123123123") == CELUint( + source=5123123123 + ) + assert CELValue.from_text_proto_str("double_value:-1500") == CELDouble(source=-1500) + assert CELValue.from_text_proto_str("double_value:-1.25e+06") == CELDouble( + source=-1250000.0 + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_float_wrapper:{value:86.75}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper={"value": 86.75}, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_float_wrapper:{}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper={}, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str("double_value:-12.375") == CELDouble( + source=-12.375 + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_float_wrapper:{value:-9.75}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper={"value": -9.75}, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_float_wrapper:{}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper={}, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str("double_value:64.25") == CELDouble(source=64.25) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_double_wrapper:{value:86.75}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper={"value": 86.75}, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_double_wrapper:{}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper={}, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_double_wrapper:{value:1.4e+55}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper={"value": 1.4e55}, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_double_wrapper:{value:-9.75}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper={"value": -9.75}, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_double_wrapper:{}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper={}, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_double_wrapper:{value:-9.9e-100}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper={"value": -9.9e-100}, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_bool_wrapper:{value:true}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper={"value": True}, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_bool_wrapper:{}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper={}, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_bool_wrapper:{value:true}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper={"value": True}, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_bool_wrapper:{}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper={}, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str('string_value:"foo"') == CELString(source="foo") + assert CELValue.from_text_proto_str('string_value:"flambΓ©"') == CELString( + source="flambΓ©" + ) + assert CELValue.from_text_proto_str('string_value:"bar"') == CELString(source="bar") + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_string_wrapper:{value:"baz"}}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper={"value": "baz"}, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_string_wrapper:{}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper={}, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_string_wrapper:{value:"bletch"}}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper={"value": "bletch"}, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_string_wrapper:{}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper={}, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str('bytes_value:"fooS"') == CELBytes( + source=b"fooS" + ) + assert CELValue.from_text_proto_str('bytes_value:"flambΓ©"') == CELBytes( + source=b"flamb\xc3\xa9" + ) + assert CELValue.from_text_proto_str('bytes_value:"bar"') == CELBytes(source=b"bar") + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_bytes_wrapper:{value:"baz"}}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper={"value": b"baz"}, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_bytes_wrapper:{}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper={}, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_bytes_wrapper:{value:"bletch"}}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper={"value": b"bletch"}, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_bytes_wrapper:{}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper={}, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'list_value:{values:{double_value:3} values:{string_value:"foo"} values:{null_value:NULL_VALUE}}' + ) == CELList([CELDouble(source=3), CELString(source="foo"), CELNull()]) + assert CELValue.from_text_proto_str( + 'list_value:{values:{string_value:"bar"} values:{list_value:{values:{string_value:"a"} values:{string_value:"b"}}}}' + ) == CELList( + [ + CELString(source="bar"), + CELList([CELString(source="a"), CELString(source="b")]), + ] + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{list_value:{values:{number_value:1} values:{string_value:"one"}}}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=struct_pb2.ListValue( + values=[ + struct_pb2.Value(number_value=1), + struct_pb2.Value(string_value="one"), + ] + ), + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{list_value:{}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=struct_pb2.ListValue(), + ) + ) + assert CELValue.from_text_proto_str( + 'list_value:{values:{double_value:1} values:{string_value:"one"}}' + ) == CELList([CELDouble(source=1), CELString(source="one")]) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{list_value:{values:{number_value:1} values:{string_value:"one"}}}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=struct_pb2.ListValue( + values=[ + struct_pb2.Value(number_value=1), + struct_pb2.Value(string_value="one"), + ] + ), + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{list_value:{}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=struct_pb2.ListValue(), + ) + ) + assert CELValue.from_text_proto_str( + 'map_value:{entries:{key:{string_value:"uno"} value:{double_value:1}} entries:{key:{string_value:"dos"} value:{double_value:2}}}' + ) == CELMap({"uno": CELDouble(source=1), "dos": CELDouble(source=2)}) + assert CELValue.from_text_proto_str( + 'map_value:{entries:{key:{string_value:"first"} value:{string_value:"Abraham"}} entries:{key:{string_value:"last"} value:{string_value:"Lincoln"}}}' + ) == CELMap( + {"first": CELString(source="Abraham"), "last": CELString(source="Lincoln")} + ) + + +def test_then_values_2() -> None: + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_struct:{fields:{key:"deux" value:{number_value:2}} fields:{key:"un" value:{number_value:1}}}}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct={"deux": 2, "un": 1}, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_struct:{}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct={}, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"bad key type"}' + ) == CELErrorSet("bad key type") + assert CELValue.from_text_proto_str( + 'map_value:{entries:{key:{string_value:"one"} value:{double_value:1}}}' + ) == CELMap({"one": CELDouble(source=1)}) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_struct:{fields:{key:"deux" value:{number_value:2}} fields:{key:"un" value:{number_value:1}}}}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct={"deux": 2, "un": 1}, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_struct:{}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct={}, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_value:{null_value:NULL_VALUE}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"null_value": 0}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_value:{null_value:NULL_VALUE}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"null_value": 0}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str("double_value:12.5") == CELDouble(source=12.5) + assert CELValue.from_text_proto_str("double_value:-26.375") == CELDouble( + source=-26.375 + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_value:{number_value:7e+23}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"number_value": 7e23}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_value:{number_value:0}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"number_value": 0}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str("double_value:7e+23") == CELDouble(source=7e23) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_value:{number_value:7e+23}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"number_value": 7e23}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_value:{number_value:0}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"number_value": 0}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_value:{string_value:"baz"}}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"string_value": "baz"}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_value:{string_value:""}}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"string_value": ""}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str('string_value:"bletch"') == CELString( + source="bletch" + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_value:{string_value:"baz"}}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"string_value": "baz"}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_value:{string_value:""}}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"string_value": ""}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_value:{bool_value:true}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"bool_value": True}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_value:{bool_value:false}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"bool_value": False}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_value:{bool_value:true}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"bool_value": True}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_value:{bool_value:false}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"bool_value": False}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'map_value:{entries:{key:{string_value:"a"} value:{double_value:1}} entries:{key:{string_value:"b"} value:{string_value:"two"}}}' + ) == CELMap({"a": CELDouble(source=1), "b": CELString(source="two")}) + assert CELValue.from_text_proto_str( + 'map_value:{entries:{key:{string_value:"x"} value:{null_value:NULL_VALUE}} entries:{key:{string_value:"y"} value:{bool_value:false}}}' + ) == CELMap({"x": CELNull(), "y": CELBool(source=False)}) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_value:{struct_value:{fields:{key:"deux" value:{number_value:2}} fields:{key:"un" value:{number_value:1}}}}}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"struct_value": {"deux": 2, "un": 1}}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_value:{struct_value:{}}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"struct_value": {}}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'map_value:{entries:{key:{string_value:"i"} value:{bool_value:true}}}' + ) == CELMap({"i": CELBool(source=True)}) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_value:{struct_value:{fields:{key:"deux" value:{number_value:2}} fields:{key:"un" value:{number_value:1}}}}}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"struct_value": {"deux": 2, "un": 1}}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_value:{struct_value:{}}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"struct_value": {}}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'list_value:{values:{string_value:"a"} values:{double_value:3}}' + ) == CELList([CELString(source="a"), CELDouble(source=3)]) + assert CELValue.from_text_proto_str( + 'list_value:{values:{double_value:1} values:{bool_value:true} values:{string_value:"hi"}}' + ) == CELList([CELDouble(source=1), CELBool(source=True), CELString(source="hi")]) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_value:{list_value:{values:{string_value:"un"} values:{number_value:1}}}}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"list_value": ["un", 1]}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_value:{list_value:{}}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"list_value": []}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'list_value:{values:{string_value:"i"} values:{bool_value:true}}' + ) == CELList([CELString(source="i"), CELBool(source=True)]) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_value:{list_value:{values:{string_value:"un"} values:{number_value:1}}}}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"list_value": ["un", 1]}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_value:{list_value:{}}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"list_value": []}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int32:150}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=150, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"conversion"}' + ) == CELErrorSet("conversion") + single_int32_any_value_proto2 = any_pb2.Any() + single_int32_any_value_proto2.Pack( + proto2_test_all_types.TestAllTypes( + single_int32=150, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_any:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int32:150}}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=single_int32_any_value_proto2, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + single_int32_any_value_proto3 = any_pb2.Any() + single_int32_any_value_proto3.Pack( + proto3_test_all_types.TestAllTypes( + single_int32=150, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_any:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_int32:150}}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=single_int32_any_value_proto3, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_int32:150}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=150, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'list_value:{values:{map_value:{entries:{key:{string_value:"almost"} value:{string_value:"done"}}}}}' + ) == CELList([CELMap({"almost": CELString(source="done")})]) + assert CELValue.from_text_proto_str('string_value:"happy"') == CELString( + source="happy" + ) + assert CELValue.from_text_proto_str("uint64_value:100") == CELUint(source=100) + assert CELValue.from_text_proto_str("int64_value:5") == CELInt(source=5) + assert CELValue.from_text_proto_str("int64_value:1") == CELInt(source=1) + assert CELValue.from_text_proto_str("int64_value:1024") == CELInt(source=1024) + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"no such key"}' + ) == CELErrorSet("no such key") + assert CELErrorSet.from_text_proto_str( + "errors:{message:\"no such key: 'name'\"}" + ) == CELErrorSet("no such key: 'name'") + assert CELValue.from_text_proto_str('string_value:"x"') == CELString(source="x") + assert CELValue.from_text_proto_str("double_value:15.15") == CELDouble(source=15.15) + assert CELValue.from_text_proto_str("uint64_value:1") == CELUint(source=1) + assert CELValue.from_text_proto_str( + "list_value:{values:{int64_value:1}}" + ) == CELList([CELInt(source=1)]) + assert CELValue.from_text_proto_str('string_value:"yeah"') == CELString( + source="yeah" + ) + assert CELErrorSet.from_text_proto_str( + "errors:{message:\"type 'list_type: > ' does not support field selection\"}" + ) == CELErrorSet( + "type 'list_type: > ' does not support field selection" + ) + assert CELErrorSet.from_text_proto_str( + "errors:{message:\"type 'int64_type' does not support field selection\"}" + ) == CELErrorSet("type 'int64_type' does not support field selection") + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"unsupported key type"}' + ) == CELErrorSet("unsupported key type") + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"Failed with repeated key"}' + ) == CELErrorSet("Failed with repeated key") + assert CELValue.from_text_proto_str("double_value:19.5") == CELDouble(source=19.5) + assert CELValue.from_text_proto_str("double_value:10") == CELDouble(source=10) + assert CELValue.from_text_proto_str("double_value:-6.25") == CELDouble(source=-6.25) + assert CELValue.from_text_proto_str("double_value:30") == CELDouble(source=30) + assert CELValue.from_text_proto_str("double_value:64.875") == CELDouble( + source=64.875 + ) + assert CELValue.from_text_proto_str("double_value:-4.75") == CELDouble(source=-4.75) + assert CELValue.from_text_proto_str("double_value:8.5") == CELDouble(source=8.5) + assert CELValue.from_text_proto_str("double_value:-91.6875") == CELDouble( + source=-91.6875 + ) + assert CELValue.from_text_proto_str("double_value:7.5") == CELDouble(source=7.5) + assert CELValue.from_text_proto_str("double_value:31.25") == CELDouble(source=31.25) + assert CELValue.from_text_proto_str("double_value:-1") == CELDouble(source=-1) + assert CELValue.from_text_proto_str("double_value:142") == CELDouble(source=142) + assert CELErrorSet.from_text_proto_str( + "errors:{message:\"found no matching overload for '_%_' applied to '(double, double)'\"}" + ) == CELErrorSet( + "found no matching overload for '_%_' applied to '(double, double)'" + ) + assert CELValue.from_text_proto_str("double_value:-4.5") == CELDouble(source=-4.5) + assert CELValue.from_text_proto_str("double_value:1.25") == CELDouble(source=1.25) + assert CELValue.from_text_proto_str("double_value:inf") == CELDouble( + source=float("inf") + ) + assert CELValue.from_text_proto_str("double_value:1.75") == CELDouble(source=1.75) + assert CELValue.from_text_proto_str("double_value:2.5") == CELDouble(source=2.5) + assert CELValue.from_text_proto_str("double_value:45.25") == CELDouble(source=45.25) + assert CELValue.from_text_proto_str("double_value:-25.25") == CELDouble( + source=-25.25 + ) + assert CELValue.from_text_proto_str("double_value:-inf") == CELDouble( + source=float("-inf") + ) + assert CELValue.from_text_proto_str("int64_value:35") == CELInt(source=35) + assert CELValue.from_text_proto_str("int64_value:-6") == CELInt(source=-6) + assert CELValue.from_text_proto_str("int64_value:30") == CELInt(source=30) + assert CELValue.from_text_proto_str("int64_value:64") == CELInt(source=64) + assert CELValue.from_text_proto_str("int64_value:-30") == CELInt(source=-30) + assert CELValue.from_text_proto_str("int64_value:84") == CELInt(source=84) + assert CELValue.from_text_proto_str("int64_value:-80") == CELInt(source=-80) + assert CELValue.from_text_proto_str("int64_value:60") == CELInt(source=60) + assert CELValue.from_text_proto_str("int64_value:21") == CELInt(source=21) + assert CELValue.from_text_proto_str("int64_value:-10") == CELInt(source=-10) + assert CELValue.from_text_proto_str("int64_value:40") == CELInt(source=40) + assert CELValue.from_text_proto_str("int64_value:3") == CELInt(source=3) + assert CELValue.from_text_proto_str("int64_value:-2") == CELInt(source=-2) + assert CELValue.from_text_proto_str("int64_value:-3") == CELInt(source=-3) + assert CELValue.from_text_proto_str("int64_value:-42") == CELInt(source=-42) + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"no_such_overload"}' + ) == CELErrorSet("no_such_overload") + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"modulus by zero"}' + ) == CELErrorSet("modulus by zero") + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"divide by zero"}' + ) == CELErrorSet("divide by zero") + assert CELValue.from_text_proto_str("int64_value:17") == CELInt(source=17) + assert CELValue.from_text_proto_str("int64_value:29") == CELInt(source=29) + assert CELValue.from_text_proto_str("int64_value:45") == CELInt(source=45) + assert CELValue.from_text_proto_str("int64_value:-25") == CELInt(source=-25) + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"return error for overflow"}' + ) == CELErrorSet("return error for overflow") + assert CELValue.from_text_proto_str("uint64_value:44") == CELUint(source=44) + assert CELValue.from_text_proto_str("uint64_value:30") == CELUint(source=30) + assert CELValue.from_text_proto_str("uint64_value:80") == CELUint(source=80) + assert CELValue.from_text_proto_str("uint64_value:17") == CELUint(source=17) + assert CELValue.from_text_proto_str("uint64_value:29") == CELUint(source=29) + assert CELValue.from_text_proto_str("uint64_value:45") == CELUint(source=45) + assert CELValue.from_text_proto_str("uint64_value:25") == CELUint(source=25) + assert CELValue.from_text_proto_str( + "list_value:{values:{int64_value:2} values:{int64_value:2}}" + ) == CELList([CELInt(source=2), CELInt(source=2)]) + assert CELValue.from_text_proto_str( + "list_value:{values:{int64_value:3} values:{int64_value:4}}" + ) == CELList([CELInt(source=3), CELInt(source=4)]) + assert CELValue.from_text_proto_str( + "list_value:{values:{int64_value:1} values:{int64_value:2}}" + ) == CELList([CELInt(source=1), CELInt(source=2)]) + assert CELValue.from_text_proto_str("int64_value:7") == CELInt(source=7) + assert CELValue.from_text_proto_str('string_value:"Ringo"') == CELString( + source="Ringo" + ) + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"invalid_argument"}' + ) == CELErrorSet("invalid_argument") + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"division by zero"}' + ) == CELErrorSet("division by zero") + assert CELValue.from_text_proto_str('string_value:"cows"') == CELString( + source="cows" + ) + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"no matching overload"}' + ) == CELErrorSet("no matching overload") + assert CELValue.from_text_proto_str( + "list_value:{values:{int64_value:9}}" + ) == CELList([CELInt(source=9)]) + assert CELValue.from_text_proto_str( + "list_value:{values:{int64_value:1} values:{int64_value:2} values:{int64_value:3}}" + ) == CELList([CELInt(source=1), CELInt(source=2), CELInt(source=3)]) + assert CELValue.from_text_proto_str( + "list_value:{values:{int64_value:2}}" + ) == CELList([CELInt(source=2)]) + assert CELValue.from_text_proto_str( + "list_value:{values:{int64_value:1} values:{int64_value:3}}" + ) == CELList([CELInt(source=1), CELInt(source=3)]) + assert CELValue.from_text_proto_str( + 'list_value:{values:{string_value:"signer"}}' + ) == CELList([CELString(source="signer")]) + assert CELValue.from_text_proto_str("int64_value:4") == CELInt(source=4) + assert CELValue.from_text_proto_str("int64_value:19") == CELInt(source=19) + assert CELValue.from_text_proto_str('string_value:"seventeen"') == CELString( + source="seventeen" + ) + assert CELErrorSet.from_text_proto_str('errors:{message:"foo"}') == CELErrorSet( + "foo" + ) + assert CELValue.from_text_proto_str( + 'map_value:{entries:{key:{string_value:"k"} value:{string_value:"v"}} entries:{key:{string_value:"k1"} value:{string_value:"v1"}}}' + ) == CELMap({"k": CELString(source="v"), "k1": CELString(source="v1")}) + assert CELValue.from_text_proto_str( + 'list_value:{values:{int64_value:17} values:{string_value:"pancakes"}}' + ) == CELList([CELInt(source=17), CELString(source="pancakes")]) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int64:17}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=17, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int32:-34}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=-34, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_uint32:1}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=1, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_uint64:9999}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=9999, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_sint32:-3}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=-3, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_sint64:255}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=255, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_fixed32:43}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=43, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_fixed64:1880}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=1880, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_sfixed32:-404}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=-404, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_sfixed64:-1}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=-1, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_float:3.1416}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=3.1416, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_double:6.022e+23}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=6.022e23, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_bool:true}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=True, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_string:"foo"}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string="foo", + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_bytes:"\\xff"}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=b"\xff", + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + single_int32_any_value_proto2.Pack( + proto2_test_all_types.TestAllTypes(single_int32=1) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_any:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int32:1}}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=single_int32_any_value_proto2, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_duration:{seconds:123}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration={"seconds": 123}, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_timestamp:{seconds:1234567890}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp={"seconds": 1234567890}, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_struct:{fields:{key:"one" value:{number_value:1}} fields:{key:"two" value:{number_value:2}}}}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct={"two": 2, "one": 1}, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_value:{string_value:"foo"}}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"string_value": "foo"}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int64_wrapper:{value:-321}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper={"value": -321}, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_int32_wrapper:{value:-456}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper={"value": -456}, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_double_wrapper:{value:2.71828}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper={"value": 2.71828}, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_float_wrapper:{value:2.99792e+08}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper={"value": 299792000.0}, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_uint64_wrapper:{value:8675309}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper={"value": 8675309}, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_uint32_wrapper:{value:987}}}" + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper={"value": 987}, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_string_wrapper:{value:"hubba"}}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper={"value": "hubba"}, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes]:{single_bytes_wrapper:{value:"\\xc1C"}}}' + ) == CELValue.from_proto( + proto2_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper={"value": b"\301C"}, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str("int64_value:-99") == CELInt(source=-99) + assert CELValue.from_text_proto_str("int64_value:-32") == CELInt(source=-32) + # assert structure_builder(structure(Tokens('object_value:{[type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes.NestedMessage]:{}}') == <__main__.NestedMessage object at 0x1a1acdc70> + assert CELErrorSet.from_text_proto_str( + 'errors:{message:"no_such_field"}' + ) == CELErrorSet("no_such_field") + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_int64:17}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=17, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_int32:-34}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=-34, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_uint32:1}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=1, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_uint64:9999}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=9999, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_sint32:-3}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=-3, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_sint64:255}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=255, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_fixed32:43}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=43, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_fixed64:1880}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=1880, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_sfixed32:-404}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=-404, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_sfixed64:-1}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=-1, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_float:3.1416}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=3.1416, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_double:6.022e+23}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=6.022e23, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_bool:true}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=True, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_string:"foo"}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string="foo", + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_bytes:"\\xff"}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=b"\xff", + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + single_int32_any_value_proto3.Pack( + proto3_test_all_types.TestAllTypes(single_int32=1) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_any:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_int32:1}}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=single_int32_any_value_proto3, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_duration:{seconds:123}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration={"seconds": 123}, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_timestamp:{seconds:1234567890}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp={"seconds": 1234567890}, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_struct:{fields:{key:"one" value:{number_value:1}} fields:{key:"two" value:{number_value:2}}}}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct={ + "one": 1, + "two": 2, + }, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_value:{string_value:"foo"}}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value={"string_value": "foo"}, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_int64_wrapper:{value:-321}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper={"value": -321}, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_int32_wrapper:{value:-456}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper={"value": -456}, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_double_wrapper:{value:2.71828}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper={"value": 2.71828}, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_float_wrapper:{value:2.99792e+08}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper={"value": 299792000.0}, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_uint64_wrapper:{value:8675309}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper={"value": 8675309}, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + "object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_uint32_wrapper:{value:987}}}" + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper={"value": 987}, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_string_wrapper:{value:"hubba"}}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper={"value": "hubba"}, + single_bool_wrapper=None, + single_bytes_wrapper=None, + list_value=None, + ) + ) + assert CELValue.from_text_proto_str( + 'object_value:{[type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes]:{single_bytes_wrapper:{value:"\\xc1C"}}}' + ) == CELValue.from_proto( + proto3_test_all_types.TestAllTypes( + single_int32=None, + single_int64=None, + single_uint32=None, + single_uint64=None, + single_sint32=None, + single_sint64=None, + single_fixed32=None, + single_fixed64=None, + single_sfixed32=None, + single_sfixed64=None, + single_float=None, + single_double=None, + single_bool=None, + single_string=None, + single_bytes=None, + single_any=None, + single_duration=None, + single_timestamp=None, + single_struct=None, + single_value=None, + single_int64_wrapper=None, + single_int32_wrapper=None, + single_double_wrapper=None, + single_float_wrapper=None, + single_uint64_wrapper=None, + single_uint32_wrapper=None, + single_string_wrapper=None, + single_bool_wrapper=None, + single_bytes_wrapper={"value": b"\301C"}, + list_value=None, + ) + ) + # assert structure_builder(structure(Tokens('object_value:{[type.googleapis.com/cel.expr.conformance.proto3.CELValue.from_proto(proto3_test_all_types.TestAllTypes.NestedMessage]:{}}') == <__main__.NestedMessage object at 0x1a1acd280> + assert CELValue.from_text_proto_str('string_value:"hello"') == CELString( + source="hello" + ) + assert CELValue.from_text_proto_str('string_value:"Β’ΓΏΘ€"') == CELString(source="Β’ΓΏΘ€") + assert CELValue.from_text_proto_str('string_value:"rΓ΄le"') == CELString( + source="rΓ΄le" + ) + assert CELValue.from_text_proto_str('string_value:"Ξ©"') == CELString(source="Ξ©") + assert CELValue.from_text_proto_str('bytes_value:"abcdef"') == CELBytes( + source=b"abcdef" + ) + assert CELValue.from_text_proto_str('bytes_value:"\\xffoo"') == CELBytes( + source=b"\xffoo" + ) + assert CELValue.from_text_proto_str('bytes_value:"zxy"') == CELBytes(source=b"zxy") + assert CELValue.from_text_proto_str("int64_value:1234567890") == CELInt( + source=1234567890 + ) + assert CELValue.from_text_proto_str( + 'string_value:"2009-02-13T23:31:30Z"' + ) == CELString(source="2009-02-13T23:31:30Z") + assert CELValue.from_text_proto_str( + 'type_value:"google.protobuf.Timestamp"' + ) == CELType(value="google.protobuf.Timestamp") + assert CELValue.from_text_proto_str('string_value:"1000000s"') == CELString( + source="1000000s" + ) + assert CELValue.from_text_proto_str( + 'type_value:"google.protobuf.Duration"' + ) == CELType(value="google.protobuf.Duration") + assert CELValue.from_text_proto_str("int64_value:13") == CELInt(source=13) + assert CELValue.from_text_proto_str("int64_value:43") == CELInt(source=43) + assert CELValue.from_text_proto_str("int64_value:2009") == CELInt(source=2009) + assert CELValue.from_text_proto_str("int64_value:23") == CELInt(source=23) + assert CELValue.from_text_proto_str("int64_value:31") == CELInt(source=31) + assert CELValue.from_text_proto_str("int64_value:14") == CELInt(source=14) + assert CELValue.from_text_proto_str("int64_value:11") == CELInt(source=11) + assert CELValue.from_text_proto_str("int64_value:16") == CELInt(source=16) + assert CELValue.from_text_proto_str("int64_value:123123") == CELInt(source=123123) + assert CELValue.from_text_proto_str("int64_value:62") == CELInt(source=62) + assert CELValue.from_text_proto_str("int64_value:3730") == CELInt(source=3730) + + +def test_type_env_values() -> None: + assert CELType.from_text_proto_str( + 'type:{message_type:"google.protobuf.Int32Value"}' + ) == CELType(value="google.protobuf.Int32Value") + assert CELType.from_text_proto_str( + 'type:{message_type:"google.protobuf.Int64Value"}' + ) == CELType(value="google.protobuf.Int64Value") + assert CELType.from_text_proto_str( + 'type:{message_type:"google.protobuf.UInt32Value"}' + ) == CELType(value="google.protobuf.UInt32Value") + assert CELType.from_text_proto_str( + 'type:{message_type:"google.protobuf.UInt64Value"}' + ) == CELType(value="google.protobuf.UInt64Value") + assert CELType.from_text_proto_str( + 'type:{message_type:"google.protobuf.FloatValue"}' + ) == CELType(value="google.protobuf.FloatValue") + assert CELType.from_text_proto_str( + 'type:{message_type:"google.protobuf.DoubleValue"}' + ) == CELType(value="google.protobuf.DoubleValue") + assert CELType.from_text_proto_str( + 'type:{message_type:"google.protobuf.BoolValue"}' + ) == CELType(value="google.protobuf.BoolValue") + assert CELType.from_text_proto_str( + 'type:{message_type:"google.protobuf.StringValue"}' + ) == CELType(value="google.protobuf.StringValue") + assert CELType.from_text_proto_str( + 'type:{message_type:"google.protobuf.BytesValue"}' + ) == CELType(value="google.protobuf.BytesValue") + assert CELType.from_text_proto_str( + 'type:{message_type:"google.protobuf.ListValue"}' + ) == CELType(value="google.protobuf.ListValue") + assert CELType.from_text_proto_str( + 'type:{message_type:"google.protobuf.Struct"}' + ) == CELType(value="google.protobuf.Struct") + assert CELType.from_text_proto_str( + 'type:{message_type:"google.protobuf.Value"}' + ) == CELType(value="google.protobuf.Value") + assert CELType.from_text_proto_str( + 'type:{message_type:"google.protobuf.Any"}' + ) == CELType(value="google.protobuf.Any") + + +def test_type_repr() -> None: + assert repr(CELType("type")) == "celpy.celtypes.TypeType" + assert repr(CELType("bool")) == "celpy.celtypes.BoolType" + assert repr(CELType("bytes")) == "celpy.celtypes.BytesType" + assert repr(CELType("double")) == "celpy.celtypes.DoubleType" + assert repr(CELType("int")) == "celpy.celtypes.IntType" + assert repr(CELType("list")) == "celpy.celtypes.ListType" + assert repr(CELType("list_type")) == "celpy.celtypes.ListType" + assert repr(CELType("map")) == "celpy.celtypes.MapType" + assert repr(CELType("map_type")) == "celpy.celtypes.MapType" + assert repr(CELType("null_type")) == "NoneType" + assert repr(CELType("string")) == "celpy.celtypes.StringType" + assert repr(CELType("uint")) == "celpy.celtypes.UintType" diff --git a/tools/test_pb2g.py b/tools/test_pb2g.py deleted file mode 100644 index 84943b8..0000000 --- a/tools/test_pb2g.py +++ /dev/null @@ -1,2310 +0,0 @@ -# SPDX-Copyright: Copyright (c) Capital One Services, LLC -# SPDX-License-Identifier: Apache-2.0 -# Copyright 2020 Capital One Services, LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and limitations under the License. - -""" -Test translation of the pb2g tool to convert textproto to Gherkin.. -""" -from textwrap import dedent - -import pytest - -import pb2g -from pb2g import * - - -def test_doctest(): - import doctest - doctest.run_docstring_examples(Tokens, globals()) - doctest.run_docstring_examples(detokenize, globals()) - doctest.run_docstring_examples(bytes_detokenize, globals()) - doctest.run_docstring_examples(parse_serialized_value, globals()) - - -def test_parsing_case(): - """ - A little tricky to write as a doctest. - The \\ rules for Python string literals make this potentially painful. - """ - t2 = Tokens(r'string_value:"\x07\x08\x0c\n\r\t\x0b\"' "'" r'\\"') - # print(f"Parsing Go &{{string_value:{t2.text}}}") - actual = list(t2) - parsed_value = (r'"\x07\x08\x0c\n\r\t\x0b\"' "'" r'\\"') - expected = [Token(type='NAME', value='string_value'), Token(type='PUNCTUATION', value=':'), Token(type='STRING', value=parsed_value)] - assert actual == expected, f"{actual!r} != \n{expected!r}" - - -def test_building_case(): - example_1 = """object_value:{[type.googleapis.com/google.protobuf.Value]:{struct_value:{fields:{key:"x" value:{null_value:NULL_VALUE}} fields:{key:"y" value:{bool_value:false}}}}} """ - s = structure_builder(parse_serialized_value(Tokens(example_1))) - expected = MessageType({'x': None, 'y': BoolType(source=False)}) - assert s == expected, f"{s!r} != {expected!r}" - - -def test_transform_given_type(capsys): - proto = dedent("""\ - section { - name: "variables" - description: "Variable lookups." - test { - name: "self_eval_bound_lookup" - expr: "x" - type_env: { - name: "x", - ident: { type: { primitive: INT64 } } - } - bindings: { - key: "x" - value: { value: { int64_value: 123 } } - } - value: { int64_value: 123 } - } - } - """ - ) - interim = dedent("""\ - Scenario: self_eval_bound_lookup - - Given type_env parameter "x" is &{type:{primitive:INT64}} - - Given bindings parameter "x" is int64_value:123 - - When CEL expression "x" is evaluated - Then value is int64_value:123 - """) - - expected = dedent("""\ - Scenario: self_eval_bound_lookup - - # type:{primitive:INT64} - Given type_env parameter "x" is celpy.celtypes.IntType - - # int64_value:123 - Given bindings parameter "x" is celpy.celtypes.IntType(source=123) - - When CEL expression "x" is evaluated - # int64_value:123 - Then value is celpy.celtypes.IntType(source=123) - """) - - pb2g.expand_cel(interim) - feature, errors = capsys.readouterr() - assert errors == "" - assert feature == expected - - -def test_transform_then_type(capsys): - proto = dedent("""\ - test { - name: "type_type" - expr: "type(type)" - value: { type_value: "type" } - } - """ - ) - interim = dedent("""\ - Scenario: type_type - - When CEL expression "type(type)" is evaluated - Then value is type_value:"type" - """) - - expected = dedent("""\ - Scenario: type_type - - When CEL expression "type(type)" is evaluated - # type_value:"type" - Then value is celpy.celtypes.TypeType - """) - - pb2g.expand_cel(interim) - feature, errors = capsys.readouterr() - assert errors == "" - assert feature == expected - - -def test_given_bindings(): - assert structure_builder(parse_serialized_value(Tokens('value:{int64_value:123}'))) == IntType(source=123) - assert structure_builder(parse_serialized_value(Tokens('value:{bool_value:true}'))) == BoolType(source=True) - assert structure_builder(parse_serialized_value(Tokens('value:{bool_value:false}'))) == BoolType( - source=False) - assert structure_builder(parse_serialized_value(Tokens('value:{bytes_value:"\\x00"}'))) == BytesType( - source=b'\x00') - assert structure_builder(parse_serialized_value(Tokens('value:{int64_value:124}'))) == IntType(source=124) - assert structure_builder(parse_serialized_value(Tokens('value:{double_value:9.8}'))) == DoubleType( - source=9.8) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{map_value:{entries:{key:{string_value:"c"} value:{string_value:"d"}} entries:{key:{string_value:"a"} value:{string_value:"b"}}}}'))) == MapType( - {StringType(source='c'): StringType(source='d'), - StringType(source='a'): StringType(source='b')}) - assert structure_builder(parse_serialized_value(Tokens('value:{null_value:NULL_VALUE}'))) == None - assert structure_builder(parse_serialized_value( - Tokens('value:{list_value:{values:{int64_value:2} values:{int64_value:1}}}'))) == ListType( - [IntType(source=2), IntType(source=1)]) - assert structure_builder(parse_serialized_value(Tokens('value:{string_value:"abc"}'))) == StringType( - source='abc') - assert structure_builder(parse_serialized_value(Tokens('value:{uint64_value:1000}'))) == UintType( - source=1000) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.Int32Value]:{value:2000000}}}'))) == IntType( - source=2000000) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.Int64Value]:{value:2000000}}}'))) == IntType( - source=2000000) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.UInt32Value]:{value:2000000}}}'))) == UintType( - source=2000000) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.UInt64Value]:{value:2000000}}}'))) == UintType( - source=2000000) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.FloatValue]:{value:-1.25e+06}}}'))) == DoubleType( - source=-1250000.0) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.DoubleValue]:{value:-1.25e+06}}}'))) == DoubleType( - source=-1250000.0) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.BoolValue]:{value:true}}}'))) == BoolType( - source=True) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.StringValue]:{value:"bar"}}}'))) == StringType( - source='bar') - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.BytesValue]:{value:"bar"}}}'))) == BytesType( - source='bar') - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.ListValue]:{values:{string_value:"bar"} values:{list_value:{values:{string_value:"a"} values:{string_value:"b"}}}}}}'))) == ListType( - [StringType(source='bar'), - ListType([StringType(source='a'), StringType(source='b')])]) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.Struct]:{fields:{key:"first" value:{string_value:"Abraham"}} fields:{key:"last" value:{string_value:"Lincoln"}}}}}'))) == MessageType( - {'first': StringType(source='Abraham'), 'last': StringType(source='Lincoln')}) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.Value]:{null_value:NULL_VALUE}}}'))) == None - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.Value]:{number_value:-26.375}}}'))) == DoubleType( - source=-26.375) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.Value]:{string_value:"bar"}}}'))) == StringType( - source='bar') - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.Value]:{bool_value:true}}}'))) == BoolType( - source=True) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.Value]:{struct_value:{fields:{key:"x" value:{null_value:NULL_VALUE}} fields:{key:"y" value:{bool_value:false}}}}}}'))) == MessageType( - {'x': None, 'y': BoolType(source=False)}) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.Value]:{list_value:{values:{number_value:1} values:{bool_value:true} values:{string_value:"hi"}}}}}'))) == ListType( - [DoubleType(source=1), BoolType(source=True), StringType(source='hi')]) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.Any]:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:150}}}}'))) == TestAllTypes( - single_int32=150, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{map_value:{entries:{key:{string_value:"name"} value:{int64_value:1024}}}}'))) == MapType( - {StringType(source='name'): IntType(source=1024)}) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{map_value:{entries:{key:{string_value:"holiday"} value:{string_value:"field"}}}}'))) == MapType( - {StringType(source='holiday'): StringType(source='field')}) - assert structure_builder(parse_serialized_value(Tokens('value:{string_value:"yeah"}'))) == StringType( - source='yeah') - assert structure_builder(parse_serialized_value(Tokens( - 'value:{map_value:{entries:{key:{string_value:"c"} value:{string_value:"yeah"}}}}'))) == MapType( - {StringType(source='c'): StringType(source='yeah')}) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{map_value:{entries:{key:{string_value:"c"} value:{string_value:"oops"}}}}'))) == MapType( - {StringType(source='c'): StringType(source='oops')}) - assert structure_builder( - parse_serialized_value(Tokens('value:{list_value:{values:{string_value:"pancakes"}}}'))) == ListType( - [StringType(source='pancakes')]) - assert structure_builder(parse_serialized_value(Tokens('value:{int64_value:15}'))) == IntType(source=15) - assert structure_builder(parse_serialized_value(Tokens('value:{string_value:"false"}'))) == StringType( - source='false') - assert structure_builder( - parse_serialized_value(Tokens('value:{list_value:{values:{int64_value:0}}}'))) == ListType( - [IntType(source=0)]) - assert structure_builder(parse_serialized_value(Tokens('value:{int64_value:17}'))) == IntType(source=17) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:17}}}'))) == TestAllTypes( - single_int32=17, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int64:-99}}}'))) == TestAllTypes( - single_int32=0, single_int64=-99, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32:17}}}'))) == TestAllTypes( - single_int32=17, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int64:-99}}}'))) == TestAllTypes( - single_int32=0, single_int64=-99, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'value:{object_value:{[type.googleapis.com/google.protobuf.Duration]:{seconds:123 nanos:123456789}}}'))) == DurationType( - seconds=123, nanos=123456789) - - -@pytest.fixture -def exception_equal(monkeypatch): - def args_eq(exc1, exc2): - return type(exc1) == type(exc2) and exc1.args == exc2.args - - monkeypatch.setattr(pb2g.CELEvalError, '__eq__', args_eq) - -def test_parsing_primitives(): - assert (parse_serialized_value(Tokens('int64_value:0'))) == Primitive(type_name=Token(type='NAME', value='int64_value'), value_text=Token(type='INT', value='0')) - assert (parse_serialized_value(Tokens('uint64_value:0'))) == Primitive(type_name=Token(type='NAME', value='uint64_value'), value_text=Token(type='INT', value='0')) - assert (parse_serialized_value(Tokens('double_value:0'))) == Primitive(type_name=Token(type='NAME', value='double_value'), value_text=Token(type='INT', value='0')) - assert (parse_serialized_value(Tokens('string_value:""'))) == Primitive(type_name=Token(type='NAME', value='string_value'), value_text=Token(type='STRING', value='""')) - assert (parse_serialized_value(Tokens('bytes_value:""'))) == Primitive(type_name=Token(type='NAME', value='bytes_value'), value_text=Token(type='STRING', value='""')) - assert (parse_serialized_value(Tokens('bool_value:false'))) == Primitive(type_name=Token(type='NAME', value='bool_value'), value_text=Token(type='BOOL', value='false')) - assert (parse_serialized_value(Tokens('null_value:NULL_VALUE'))) == Primitive(type_name=Token(type='NAME', value='null_value'), value_text=Token(type='NULL', value='NULL_VALUE')) - -def test_then_values(exception_equal): - assert structure_builder(parse_serialized_value(Tokens('int64_value:0'))) == IntType(source=0) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:0'))) == UintType(source=0) - assert structure_builder(parse_serialized_value(Tokens('double_value:0'))) == DoubleType(source=0) - assert structure_builder(parse_serialized_value(Tokens('string_value:""'))) == StringType(source='') - assert structure_builder(parse_serialized_value(Tokens('bytes_value:""'))) == BytesType(source=b'') - assert structure_builder(parse_serialized_value(Tokens('bool_value:false'))) == BoolType(source=False) - assert structure_builder(parse_serialized_value(Tokens('null_value:NULL_VALUE'))) == None - assert structure_builder(parse_serialized_value(Tokens('list_value:{}'))) == ListType([]) - assert structure_builder(parse_serialized_value(Tokens('map_value:{}'))) == MapType({}) - assert structure_builder(parse_serialized_value(Tokens('int64_value:42'))) == IntType(source=42) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:123456789'))) == UintType( - source=123456789) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-9223372036854775808'))) == IntType( - source=-9223372036854775808) - assert structure_builder(parse_serialized_value(Tokens('double_value:-23'))) == DoubleType(source=-23) - assert structure_builder(parse_serialized_value(Tokens('string_value:"!"'))) == StringType(source='!') - assert structure_builder(parse_serialized_value(Tokens('string_value:"\'"'))) == StringType(source="'") - assert structure_builder(parse_serialized_value(Tokens('bytes_value:"ΓΏ"'))) == BytesType(source=b'\xc3\xbf') - assert structure_builder(parse_serialized_value(Tokens('bytes_value:"\\x00\\xff"'))) == BytesType( - source=b'\x00\xff') - assert structure_builder(parse_serialized_value(Tokens('list_value:{values:{int64_value:-1}}'))) == ListType( - [IntType(source=-1)]) - assert structure_builder(parse_serialized_value(Tokens( - 'map_value:{entries:{key:{string_value:"k"} value:{string_value:"v"}}}'))) == MapType( - {StringType(source='k'): StringType(source='v')}) - assert structure_builder(parse_serialized_value(Tokens('bool_value:true'))) == BoolType(source=True) - assert structure_builder(parse_serialized_value(Tokens('int64_value:1431655765'))) == IntType( - source=1431655765) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-1431655765'))) == IntType( - source=-1431655765) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:1431655765'))) == UintType( - source=1431655765) - assert structure_builder(parse_serialized_value(Tokens('string_value:"✌"'))) == StringType(source='✌') - assert structure_builder(parse_serialized_value(Tokens('string_value:"🐱"'))) == StringType(source='🐱') - assert structure_builder( - parse_serialized_value(Tokens('string_value:"\\x07\\x08\\x0c\\n\\r\\t\\x0b\\"\'\\\\"'))) == StringType( - source='\x07\x08\x0c\n\r\t\x0b"\'\\') - assert structure_builder(parse_serialized_value(Tokens('int64_value:123'))) == IntType(source=123) - assert structure_builder(parse_serialized_value(Tokens( - 'errors:{message:"undeclared reference to \'x\' (in container \'\')"}'))) == CELEvalError( - "undeclared reference to 'x' (in container '')") - assert structure_builder(parse_serialized_value(Tokens('int64_value:2'))) == IntType(source=2) - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"unbound function"}'))) == CELEvalError( - 'unbound function') - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"no such overload"}'))) == CELEvalError( - 'no such overload') - assert structure_builder(parse_serialized_value(Tokens('bytes_value:"abc"'))) == BytesType(source=b'abc') - assert structure_builder(parse_serialized_value(Tokens('double_value:1e+12'))) == DoubleType( - source=1000000000000.0) - assert structure_builder(parse_serialized_value(Tokens('double_value:-1e+15'))) == DoubleType( - source=-1000000000000000.0) - assert structure_builder(parse_serialized_value(Tokens('double_value:9.223372036854776e+18'))) == DoubleType( - source=9.223372036854776e+18) - assert structure_builder(parse_serialized_value(Tokens('double_value:123'))) == DoubleType(source=123) - assert structure_builder( - parse_serialized_value(Tokens('double_value:1.8446744073709552e+19'))) == DoubleType( - source=1.8446744073709552e+19) - assert structure_builder(parse_serialized_value(Tokens('double_value:-0'))) == DoubleType(source=0) - assert structure_builder(parse_serialized_value(Tokens('double_value:123.456'))) == DoubleType( - source=123.456) - assert structure_builder(parse_serialized_value(Tokens('double_value:-987.654'))) == DoubleType( - source=-987.654) - assert structure_builder(parse_serialized_value(Tokens('double_value:6.02214e+23'))) == DoubleType( - source=6.02214e+23) - assert structure_builder(parse_serialized_value(Tokens('double_value:1.38e-23'))) == DoubleType( - source=1.38e-23) - assert structure_builder(parse_serialized_value(Tokens('double_value:-8.432e+08'))) == DoubleType( - source=-843200000.0) - assert structure_builder(parse_serialized_value(Tokens('double_value:-5.43e-21'))) == DoubleType( - source=-5.43e-21) - assert structure_builder(parse_serialized_value(Tokens('type_value:"list"'))) == type_value(value='list') - assert structure_builder(parse_serialized_value(Tokens('errors:{message:"range error"}'))) == CELEvalError( - 'range error') - assert structure_builder(parse_serialized_value(Tokens('int64_value:-123'))) == IntType(source=-123) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-8'))) == IntType(source=-8) - assert structure_builder(parse_serialized_value(Tokens('int64_value:12'))) == IntType(source=12) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-4'))) == IntType(source=-4) - assert structure_builder(parse_serialized_value(Tokens('errors:{message:"range"}'))) == CELEvalError( - 'range') - assert structure_builder(parse_serialized_value(Tokens('int64_value:987'))) == IntType(source=987) - assert structure_builder(parse_serialized_value(Tokens('int64_value:1095379199'))) == IntType( - source=1095379199) - assert structure_builder(parse_serialized_value(Tokens('string_value:"123"'))) == StringType(source='123') - assert structure_builder(parse_serialized_value(Tokens('string_value:"-456"'))) == StringType(source='-456') - assert structure_builder(parse_serialized_value(Tokens('string_value:"9876"'))) == StringType(source='9876') - assert structure_builder(parse_serialized_value(Tokens('string_value:"123.456"'))) == StringType( - source='123.456') - assert structure_builder(parse_serialized_value(Tokens('string_value:"-0.0045"'))) == StringType( - source='-0.0045') - assert structure_builder(parse_serialized_value(Tokens('string_value:"abc"'))) == StringType(source='abc') - assert structure_builder(parse_serialized_value(Tokens('string_value:"ΓΏ"'))) == StringType(source='ΓΏ') - assert structure_builder(parse_serialized_value(Tokens('errors:{message:"invalid UTF-8"}'))) == CELEvalError( - 'invalid UTF-8') - assert structure_builder(parse_serialized_value(Tokens('type_value:"bool"'))) == type_value(value='bool') - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"unknown varaible"}'))) == CELEvalError( - 'unknown varaible') - assert structure_builder(parse_serialized_value(Tokens('type_value:"int"'))) == type_value(value='int') - assert structure_builder(parse_serialized_value(Tokens('type_value:"uint"'))) == type_value(value='uint') - assert structure_builder(parse_serialized_value(Tokens('type_value:"double"'))) == type_value(value='double') - assert structure_builder(parse_serialized_value(Tokens('type_value:"null_type"'))) == type_value( - value='null_type') - assert structure_builder(parse_serialized_value(Tokens('type_value:"string"'))) == type_value(value='string') - assert structure_builder(parse_serialized_value(Tokens('type_value:"bytes"'))) == type_value(value='bytes') - assert structure_builder(parse_serialized_value(Tokens('type_value:"map"'))) == type_value(value='map') - assert structure_builder(parse_serialized_value(Tokens('type_value:"type"'))) == type_value(value='type') - assert structure_builder(parse_serialized_value(Tokens('uint64_value:1729'))) == UintType(source=1729) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:3'))) == UintType(source=3) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:2'))) == UintType(source=2) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:26'))) == UintType(source=26) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:300'))) == UintType(source=300) - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"no_matching_overload"}'))) == CELEvalError( - 'no_matching_overload') - assert structure_builder(parse_serialized_value(Tokens('int64_value:2000000'))) == IntType(source=2000000) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32_wrapper:{value:432}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=432, - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=None, - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('int64_value:642'))) == IntType(source=642) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32_wrapper:{value:-975}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=-975, - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=None, - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int64_wrapper:{value:432}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=432, single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int64_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=None, single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int64_wrapper:{value:-975}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=-975, single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int64_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=None, single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:123'))) == UintType(source=123) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:2000000'))) == UintType(source=2000000) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint32_wrapper:{value:432}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=432, single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint32_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=None, single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint32_wrapper:{value:975}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=975, single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint32_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=None, single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:258'))) == UintType(source=258) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint64_wrapper:{value:432}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=432, - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint64_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=None, - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint64_wrapper:{value:975}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=975, - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint64_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=None, - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:5123123123'))) == UintType( - source=5123123123) - assert structure_builder(parse_serialized_value(Tokens('double_value:-1500'))) == DoubleType(source=-1500) - assert structure_builder(parse_serialized_value(Tokens('double_value:-1.25e+06'))) == DoubleType( - source=-1250000.0) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_float_wrapper:{value:86.75}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=86.75, single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_float_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=None, single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('double_value:-12.375'))) == DoubleType( - source=-12.375) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_float_wrapper:{value:-9.75}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=-9.75, single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_float_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=None, single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('double_value:64.25'))) == DoubleType(source=64.25) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_double_wrapper:{value:86.75}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=86.75, - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_double_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=None, - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_double_wrapper:{value:1.4e+55}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=1.4e+55, - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_double_wrapper:{value:-9.75}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=-9.75, - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_double_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=None, - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_double_wrapper:{value:-9.9e-100}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=-9.9e-100, - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bool_wrapper:{value:true}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=True, single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bool_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=None, single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bool_wrapper:{value:true}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=True, single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bool_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=None, single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('string_value:"foo"'))) == StringType(source='foo') - assert structure_builder(parse_serialized_value(Tokens('string_value:"flambΓ©"'))) == StringType( - source='flambΓ©') - assert structure_builder(parse_serialized_value(Tokens('string_value:"bar"'))) == StringType(source='bar') - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_string_wrapper:{value:"baz"}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper='baz', - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_string_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=None, - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_string_wrapper:{value:"bletch"}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper='bletch', - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_string_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=None, - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('bytes_value:"fooS"'))) == BytesType(source=b'fooS') - assert structure_builder(parse_serialized_value(Tokens('bytes_value:"flambΓ©"'))) == BytesType( - source=b'flamb\xc3\xa9') - assert structure_builder(parse_serialized_value(Tokens('bytes_value:"bar"'))) == BytesType(source=b'bar') - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bytes_wrapper:{value:"baz"}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper='baz', - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bytes_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=None, - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bytes_wrapper:{value:"bletch"}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper='bletch', - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bytes_wrapper:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=None, - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'list_value:{values:{double_value:3} values:{string_value:"foo"} values:{null_value:NULL_VALUE}}'))) == ListType( - [DoubleType(source=3), StringType(source='foo'), None]) - assert structure_builder(parse_serialized_value(Tokens( - 'list_value:{values:{string_value:"bar"} values:{list_value:{values:{string_value:"a"} values:{string_value:"b"}}}}'))) == ListType( - [ - StringType(source='bar'), - ListType([StringType(source='a'), StringType(source='b')]) - ]) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{list_value:{values:{number_value:1} values:{string_value:"one"}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=[DoubleType(source=1), StringType(source='one')]) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{list_value:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=None) - assert structure_builder(parse_serialized_value( - Tokens('list_value:{values:{double_value:1} values:{string_value:"one"}}'))) == ListType( - [DoubleType(source=1), StringType(source='one')]) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{list_value:{values:{number_value:1} values:{string_value:"one"}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=[DoubleType(source=1), StringType(source='one')]) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{list_value:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=None) - assert structure_builder(parse_serialized_value(Tokens( - 'map_value:{entries:{key:{string_value:"uno"} value:{double_value:1}} entries:{key:{string_value:"dos"} value:{double_value:2}}}'))) == MapType( - {StringType(source='uno'): DoubleType(source=1), - StringType(source='dos'): DoubleType(source=2)}) - assert structure_builder(parse_serialized_value(Tokens( - 'map_value:{entries:{key:{string_value:"first"} value:{string_value:"Abraham"}} entries:{key:{string_value:"last"} value:{string_value:"Lincoln"}}}'))) == MapType( - {StringType(source='first'): StringType(source='Abraham'), - StringType(source='last'): StringType(source='Lincoln')}) - -def test_then_values_2(exception_equal): - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_struct:{fields:{key:"deux" value:{number_value:2}} fields:{key:"un" value:{number_value:1}}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, - single_struct={"deux": DoubleType(2), "un": DoubleType(1)}, - single_value=None, - single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_struct:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct=None, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('errors:{message:"bad key type"}'))) == CELEvalError( - 'bad key type') - assert structure_builder(parse_serialized_value(Tokens( - 'map_value:{entries:{key:{string_value:"one"} value:{double_value:1}}}'))) == MapType( - {StringType(source='one'): DoubleType(source=1)}) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_struct:{fields:{key:"deux" value:{number_value:2}} fields:{key:"un" value:{number_value:1}}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, - single_struct={"deux": DoubleType(2), "un": DoubleType(1)}, - single_value=None, - single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_struct:{}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct=None, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{null_value:NULL_VALUE}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{null_value:NULL_VALUE}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('double_value:12.5'))) == DoubleType(source=12.5) - assert structure_builder(parse_serialized_value(Tokens('double_value:-26.375'))) == DoubleType( - source=-26.375) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{number_value:7e+23}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=DoubleType(source=7e+23), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{number_value:0}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=DoubleType(source=0), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('double_value:7e+23'))) == DoubleType(source=7e+23) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{number_value:7e+23}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=DoubleType(source=7e+23), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{number_value:0}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=DoubleType(source=0), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{string_value:"baz"}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=StringType(source='baz'), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{string_value:""}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=StringType(source=''), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('string_value:"bletch"'))) == StringType( - source='bletch') - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{string_value:"baz"}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=StringType(source='baz'), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{string_value:""}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=StringType(source=''), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{bool_value:true}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=BoolType(source=True), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{bool_value:false}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=BoolType(source=False), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{bool_value:true}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=BoolType(source=True), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{bool_value:false}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=BoolType(source=False), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'map_value:{entries:{key:{string_value:"a"} value:{double_value:1}} entries:{key:{string_value:"b"} value:{string_value:"two"}}}'))) == MapType( - { - StringType(source='a'): DoubleType(source=1), - StringType(source='b'): StringType(source='two')}) - assert structure_builder(parse_serialized_value(Tokens( - 'map_value:{entries:{key:{string_value:"x"} value:{null_value:NULL_VALUE}} entries:{key:{string_value:"y"} value:{bool_value:false}}}'))) == MapType( - {StringType(source='x'): None, StringType(source='y'): BoolType(source=False)}) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{struct_value:{fields:{key:"deux" value:{number_value:2}} fields:{key:"un" value:{number_value:1}}}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value= - MessageType({'deux': DoubleType(source=2), 'un': DoubleType(source=1)}), - single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{struct_value:{}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=MessageType({}), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value( - Tokens('map_value:{entries:{key:{string_value:"i"} value:{bool_value:true}}}'))) == MapType( - {StringType(source='i'): BoolType(source=True)}) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{struct_value:{fields:{key:"deux" value:{number_value:2}} fields:{key:"un" value:{number_value:1}}}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value= - MessageType({'deux': DoubleType(source=2), 'un': DoubleType(source=1)}), - single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{struct_value:{}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=MessageType({}), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value( - Tokens('list_value:{values:{string_value:"a"} values:{double_value:3}}'))) == ListType( - [StringType(source='a'), DoubleType(source=3)]) - assert structure_builder(parse_serialized_value(Tokens( - 'list_value:{values:{double_value:1} values:{bool_value:true} values:{string_value:"hi"}}'))) == ListType( - [DoubleType(source=1), BoolType(source=True), StringType(source='hi')]) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{list_value:{values:{string_value:"un"} values:{number_value:1}}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=ListType([StringType(source='un'), DoubleType(source=1)]), - single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{list_value:{}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=ListType([]), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value( - Tokens('list_value:{values:{string_value:"i"} values:{bool_value:true}}'))) == ListType( - [StringType(source='i'), BoolType(source=True)]) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{list_value:{values:{string_value:"un"} values:{number_value:1}}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=ListType([StringType(source='un'), DoubleType(source=1)]), - single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{list_value:{}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=ListType([]), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:150}}'))) == TestAllTypes( - single_int32=150, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('errors:{message:"conversion"}'))) == CELEvalError( - 'conversion') - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_any:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:150}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=TestAllTypes(single_int32=150, single_int64=0, single_uint32=0, single_uint64=0, - single_sint32=0, single_sint64=0, single_fixed32=0, - single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', - single_bytes=b'', single_any=None, single_duration=None, - single_timestamp=None, single_struct={}, single_value=None, - single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])), single_duration=None, - single_timestamp=None, single_struct={}, single_value=None, - single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_any:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32:150}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=TestAllTypes(single_int32=150, single_int64=0, single_uint32=0, single_uint64=0, - single_sint32=0, single_sint64=0, single_fixed32=0, - single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', - single_bytes=b'', single_any=None, single_duration=None, - single_timestamp=None, single_struct={}, single_value=None, - single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])), single_duration=None, - single_timestamp=None, single_struct={}, single_value=None, - single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32:150}}'))) == TestAllTypes( - single_int32=150, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'list_value:{values:{map_value:{entries:{key:{string_value:"almost"} value:{string_value:"done"}}}}}'))) == ListType( - [MapType({StringType(source='almost'): StringType(source='done')})]) - assert structure_builder(parse_serialized_value(Tokens('string_value:"happy"'))) == StringType( - source='happy') - assert structure_builder(parse_serialized_value(Tokens('uint64_value:100'))) == UintType(source=100) - assert structure_builder(parse_serialized_value(Tokens('int64_value:5'))) == IntType(source=5) - assert structure_builder(parse_serialized_value(Tokens('int64_value:1'))) == IntType(source=1) - assert structure_builder(parse_serialized_value(Tokens('int64_value:1024'))) == IntType(source=1024) - assert structure_builder(parse_serialized_value(Tokens('errors:{message:"no such key"}'))) == CELEvalError( - 'no such key') - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"no such key: \'name\'"}'))) == CELEvalError( - "no such key: 'name'") - assert structure_builder(parse_serialized_value(Tokens('string_value:"x"'))) == StringType(source='x') - assert structure_builder(parse_serialized_value(Tokens('double_value:15.15'))) == DoubleType(source=15.15) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:1'))) == UintType(source=1) - assert structure_builder(parse_serialized_value(Tokens('list_value:{values:{int64_value:1}}'))) == ListType( - [IntType(source=1)]) - assert structure_builder(parse_serialized_value(Tokens('string_value:"yeah"'))) == StringType(source='yeah') - assert structure_builder(parse_serialized_value(Tokens( - 'errors:{message:"type \'list_type: > \' does not support field selection"}'))) == CELEvalError( - "type 'list_type: > ' does not support field selection") - assert structure_builder(parse_serialized_value(Tokens( - 'errors:{message:"type \'int64_type\' does not support field selection"}'))) == CELEvalError( - "type 'int64_type' does not support field selection") - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"unsupported key type"}'))) == CELEvalError( - 'unsupported key type') - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"Failed with repeated key"}'))) == CELEvalError( - 'Failed with repeated key') - assert structure_builder(parse_serialized_value(Tokens('double_value:19.5'))) == DoubleType(source=19.5) - assert structure_builder(parse_serialized_value(Tokens('double_value:10'))) == DoubleType(source=10) - assert structure_builder(parse_serialized_value(Tokens('double_value:-6.25'))) == DoubleType(source=-6.25) - assert structure_builder(parse_serialized_value(Tokens('double_value:30'))) == DoubleType(source=30) - assert structure_builder(parse_serialized_value(Tokens('double_value:64.875'))) == DoubleType(source=64.875) - assert structure_builder(parse_serialized_value(Tokens('double_value:-4.75'))) == DoubleType(source=-4.75) - assert structure_builder(parse_serialized_value(Tokens('double_value:8.5'))) == DoubleType(source=8.5) - assert structure_builder(parse_serialized_value(Tokens('double_value:-91.6875'))) == DoubleType( - source=-91.6875) - assert structure_builder(parse_serialized_value(Tokens('double_value:7.5'))) == DoubleType(source=7.5) - assert structure_builder(parse_serialized_value(Tokens('double_value:31.25'))) == DoubleType(source=31.25) - assert structure_builder(parse_serialized_value(Tokens('double_value:-1'))) == DoubleType(source=-1) - assert structure_builder(parse_serialized_value(Tokens('double_value:142'))) == DoubleType(source=142) - assert structure_builder(parse_serialized_value(Tokens( - 'errors:{message:"found no matching overload for \'_%_\' applied to \'(double, double)\'"}'))) == CELEvalError( - "found no matching overload for '_%_' applied to '(double, double)'") - assert structure_builder(parse_serialized_value(Tokens('double_value:-4.5'))) == DoubleType(source=-4.5) - assert structure_builder(parse_serialized_value(Tokens('double_value:1.25'))) == DoubleType(source=1.25) - assert structure_builder(parse_serialized_value(Tokens('double_value:inf'))) == DoubleType( - source=float("inf")) - assert structure_builder(parse_serialized_value(Tokens('double_value:1.75'))) == DoubleType(source=1.75) - assert structure_builder(parse_serialized_value(Tokens('double_value:2.5'))) == DoubleType(source=2.5) - assert structure_builder(parse_serialized_value(Tokens('double_value:45.25'))) == DoubleType(source=45.25) - assert structure_builder(parse_serialized_value(Tokens('double_value:-25.25'))) == DoubleType(source=-25.25) - assert structure_builder(parse_serialized_value(Tokens('double_value:-inf'))) == DoubleType( - source=float("-inf")) - assert structure_builder(parse_serialized_value(Tokens('int64_value:35'))) == IntType(source=35) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-6'))) == IntType(source=-6) - assert structure_builder(parse_serialized_value(Tokens('int64_value:30'))) == IntType(source=30) - assert structure_builder(parse_serialized_value(Tokens('int64_value:64'))) == IntType(source=64) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-30'))) == IntType(source=-30) - assert structure_builder(parse_serialized_value(Tokens('int64_value:84'))) == IntType(source=84) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-80'))) == IntType(source=-80) - assert structure_builder(parse_serialized_value(Tokens('int64_value:60'))) == IntType(source=60) - assert structure_builder(parse_serialized_value(Tokens('int64_value:21'))) == IntType(source=21) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-10'))) == IntType(source=-10) - assert structure_builder(parse_serialized_value(Tokens('int64_value:40'))) == IntType(source=40) - assert structure_builder(parse_serialized_value(Tokens('int64_value:3'))) == IntType(source=3) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-2'))) == IntType(source=-2) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-3'))) == IntType(source=-3) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-42'))) == IntType(source=-42) - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"no_such_overload"}'))) == CELEvalError( - 'no_such_overload') - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"modulus by zero"}'))) == CELEvalError( - 'modulus by zero') - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"divide by zero"}'))) == CELEvalError( - 'divide by zero') - assert structure_builder(parse_serialized_value(Tokens('int64_value:17'))) == IntType(source=17) - assert structure_builder(parse_serialized_value(Tokens('int64_value:29'))) == IntType(source=29) - assert structure_builder(parse_serialized_value(Tokens('int64_value:45'))) == IntType(source=45) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-25'))) == IntType(source=-25) - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"return error for overflow"}'))) == CELEvalError( - 'return error for overflow') - assert structure_builder(parse_serialized_value(Tokens('uint64_value:44'))) == UintType(source=44) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:30'))) == UintType(source=30) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:80'))) == UintType(source=80) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:17'))) == UintType(source=17) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:29'))) == UintType(source=29) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:45'))) == UintType(source=45) - assert structure_builder(parse_serialized_value(Tokens('uint64_value:25'))) == UintType(source=25) - assert structure_builder(parse_serialized_value( - Tokens('list_value:{values:{int64_value:2} values:{int64_value:2}}'))) == ListType( - [IntType(source=2), IntType(source=2)]) - assert structure_builder(parse_serialized_value( - Tokens('list_value:{values:{int64_value:3} values:{int64_value:4}}'))) == ListType( - [IntType(source=3), IntType(source=4)]) - assert structure_builder(parse_serialized_value( - Tokens('list_value:{values:{int64_value:1} values:{int64_value:2}}'))) == ListType( - [IntType(source=1), IntType(source=2)]) - assert structure_builder(parse_serialized_value(Tokens('int64_value:7'))) == IntType(source=7) - assert structure_builder(parse_serialized_value(Tokens('string_value:"Ringo"'))) == StringType( - source='Ringo') - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"invalid_argument"}'))) == CELEvalError( - 'invalid_argument') - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"division by zero"}'))) == CELEvalError( - 'division by zero') - assert structure_builder(parse_serialized_value(Tokens('string_value:"cows"'))) == StringType(source='cows') - assert structure_builder( - parse_serialized_value(Tokens('errors:{message:"no matching overload"}'))) == CELEvalError( - 'no matching overload') - assert structure_builder(parse_serialized_value(Tokens('list_value:{values:{int64_value:9}}'))) == ListType( - [IntType(source=9)]) - assert structure_builder(parse_serialized_value(Tokens( - 'list_value:{values:{int64_value:1} values:{int64_value:2} values:{int64_value:3}}'))) == ListType( - [IntType(source=1), IntType(source=2), IntType(source=3)]) - assert structure_builder(parse_serialized_value(Tokens('list_value:{values:{int64_value:2}}'))) == ListType( - [IntType(source=2)]) - assert structure_builder(parse_serialized_value( - Tokens('list_value:{values:{int64_value:1} values:{int64_value:3}}'))) == ListType( - [IntType(source=1), IntType(source=3)]) - assert structure_builder( - parse_serialized_value(Tokens('list_value:{values:{string_value:"signer"}}'))) == ListType( - [StringType(source='signer')]) - assert structure_builder(parse_serialized_value(Tokens('int64_value:4'))) == IntType(source=4) - assert structure_builder(parse_serialized_value(Tokens('int64_value:19'))) == IntType(source=19) - assert structure_builder(parse_serialized_value(Tokens('string_value:"seventeen"'))) == StringType( - source='seventeen') - assert structure_builder(parse_serialized_value(Tokens('errors:{message:"foo"}'))) == CELEvalError( - 'foo') - assert structure_builder(parse_serialized_value(Tokens( - 'map_value:{entries:{key:{string_value:"k"} value:{string_value:"v"}} entries:{key:{string_value:"k1"} value:{string_value:"v1"}}}'))) == MapType( - { - StringType(source='k'): StringType(source='v'), - StringType(source='k1'): StringType(source='v1')}) - assert structure_builder(parse_serialized_value(Tokens( - 'list_value:{values:{int64_value:17} values:{string_value:"pancakes"}}'))) == ListType( - [IntType(source=17), StringType(source='pancakes')]) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int64:17}}'))) == TestAllTypes( - single_int32=0, single_int64=17, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:-34}}'))) == TestAllTypes( - single_int32=-34, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint32:1}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=1, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint64:9999}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=9999, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_sint32:-3}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=-3, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_sint64:255}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=255, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_fixed32:43}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=43, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_fixed64:1880}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=1880, single_sfixed32=0, - single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', - single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, - single_struct={}, single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_sfixed32:-404}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=-404, - single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', - single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, - single_struct={}, single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_sfixed64:-1}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=-1, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_float:3.1416}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=3.1416, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_double:6.022e+23}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=6.022e+23, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bool:true}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=True, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_string:"foo"}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='foo', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bytes:"\\xff"}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes='ΓΏ', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_any:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32:1}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=TestAllTypes(single_int32=1, single_int64=0, single_uint32=0, single_uint64=0, - single_sint32=0, single_sint64=0, single_fixed32=0, - single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', - single_bytes=b'', single_any=None, single_duration=None, - single_timestamp=None, single_struct={}, single_value=None, - single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])), single_duration=None, - single_timestamp=None, single_struct={}, single_value=None, - single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_duration:{seconds:123}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=123, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_timestamp:{seconds:1234567890}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=1234567890, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_struct:{fields:{key:"one" value:{number_value:1}} fields:{key:"two" value:{number_value:2}}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, - single_struct={"two": DoubleType(2), "one": DoubleType(1)}, - single_value=None, - single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_value:{string_value:"foo"}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=StringType(source='foo'), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int64_wrapper:{value:-321}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=-321, single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_int32_wrapper:{value:-456}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=-456, - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_double_wrapper:{value:2.71828}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=2.71828, - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_float_wrapper:{value:2.99792e+08}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=299792000.0, single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint64_wrapper:{value:8675309}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=8675309, - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_uint32_wrapper:{value:987}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=987, single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_string_wrapper:{value:"hubba"}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper='hubba', - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes]:{single_bytes_wrapper:{value:"\\xc1C"}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper='ÁC', - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-99'))) == IntType(source=-99) - assert structure_builder(parse_serialized_value(Tokens('int64_value:-32'))) == IntType(source=-32) - # assert structure_builder(structure(Tokens('object_value:{[type.googleapis.com/google.api.expr.test.v1.proto2.TestAllTypes.NestedMessage]:{}}'))) == <__main__.NestedMessage object at 0x1a1acdc70> - assert structure_builder(parse_serialized_value(Tokens('errors:{message:"no_such_field"}'))) == CELEvalError( - 'no_such_field') - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int64:17}}'))) == TestAllTypes( - single_int32=0, single_int64=17, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32:-34}}'))) == TestAllTypes( - single_int32=-34, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint32:1}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=1, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint64:9999}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=9999, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_sint32:-3}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=-3, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_sint64:255}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=255, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_fixed32:43}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=43, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_fixed64:1880}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=1880, single_sfixed32=0, - single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', - single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, - single_struct={}, single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_sfixed32:-404}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=-404, - single_sfixed64=0, single_float=0, single_double=0, single_bool=0, single_string='', - single_bytes=b'', single_any=None, single_duration=None, single_timestamp=None, - single_struct={}, single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_sfixed64:-1}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=-1, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_float:3.1416}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=3.1416, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_double:6.022e+23}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=6.022e+23, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bool:true}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=True, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_string:"foo"}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='foo', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bytes:"\\xff"}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes='ΓΏ', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_any:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32:1}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=TestAllTypes(single_int32=1, single_int64=0, single_uint32=0, single_uint64=0, - single_sint32=0, single_sint64=0, single_fixed32=0, - single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', - single_bytes=b'', single_any=None, single_duration=None, - single_timestamp=None, single_struct={}, single_value=None, - single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])), single_duration=None, - single_timestamp=None, single_struct={}, single_value=None, - single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_duration:{seconds:123}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=123, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_timestamp:{seconds:1234567890}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=1234567890, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_struct:{fields:{key:"one" value:{number_value:1}} fields:{key:"two" value:{number_value:2}}}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, - single_struct={'one': DoubleType(source=1), 'two': DoubleType(source=2),}, - single_value=None, - single_int64_wrapper=IntType(source=0), single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_value:{string_value:"foo"}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=StringType(source='foo'), single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int64_wrapper:{value:-321}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=-321, single_int32_wrapper=IntType(source=0), - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_int32_wrapper:{value:-456}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), single_int32_wrapper=-456, - single_double_wrapper=DoubleType(source=0), single_float_wrapper=DoubleType(source=0), - single_uint64_wrapper=UintType(source=0), single_uint32_wrapper=UintType(source=0), - single_string_wrapper=StringType(source=''), single_bool_wrapper=BoolType(source=False), - single_bytes_wrapper=BytesType(source=b''), list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_double_wrapper:{value:2.71828}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=2.71828, - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_float_wrapper:{value:2.99792e+08}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=299792000.0, single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint64_wrapper:{value:8675309}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=8675309, - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_uint32_wrapper:{value:987}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=987, single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_string_wrapper:{value:"hubba"}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper='hubba', - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper=BytesType(source=b''), - list_value=ListType([])) - assert structure_builder(parse_serialized_value(Tokens( - 'object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes]:{single_bytes_wrapper:{value:"\\xc1C"}}}'))) == TestAllTypes( - single_int32=0, single_int64=0, single_uint32=0, single_uint64=0, single_sint32=0, - single_sint64=0, single_fixed32=0, single_fixed64=0, single_sfixed32=0, single_sfixed64=0, - single_float=0, single_double=0, single_bool=0, single_string='', single_bytes=b'', - single_any=None, single_duration=None, single_timestamp=None, single_struct={}, - single_value=None, single_int64_wrapper=IntType(source=0), - single_int32_wrapper=IntType(source=0), single_double_wrapper=DoubleType(source=0), - single_float_wrapper=DoubleType(source=0), single_uint64_wrapper=UintType(source=0), - single_uint32_wrapper=UintType(source=0), single_string_wrapper=StringType(source=''), - single_bool_wrapper=BoolType(source=False), single_bytes_wrapper='ÁC', - list_value=ListType([])) - # assert structure_builder(structure(Tokens('object_value:{[type.googleapis.com/google.api.expr.test.v1.proto3.TestAllTypes.NestedMessage]:{}}'))) == <__main__.NestedMessage object at 0x1a1acd280> - assert structure_builder(parse_serialized_value(Tokens('string_value:"hello"'))) == StringType( - source='hello') - assert structure_builder(parse_serialized_value(Tokens('string_value:"Β’ΓΏΘ€"'))) == StringType(source='Β’ΓΏΘ€') - assert structure_builder(parse_serialized_value(Tokens('string_value:"rΓ΄le"'))) == StringType(source='rΓ΄le') - assert structure_builder(parse_serialized_value(Tokens('string_value:"Ξ©"'))) == StringType(source='Ξ©') - assert structure_builder(parse_serialized_value(Tokens('bytes_value:"abcdef"'))) == BytesType( - source=b'abcdef') - assert structure_builder(parse_serialized_value(Tokens('bytes_value:"\\xffoo"'))) == BytesType(source=b'\xffoo') - assert structure_builder(parse_serialized_value(Tokens('bytes_value:"zxy"'))) == BytesType(source=b'zxy') - assert structure_builder(parse_serialized_value(Tokens('int64_value:1234567890'))) == IntType( - source=1234567890) - assert structure_builder( - parse_serialized_value(Tokens('string_value:"2009-02-13T23:31:30Z"'))) == StringType( - source='2009-02-13T23:31:30Z') - assert structure_builder( - parse_serialized_value(Tokens('type_value:"google.protobuf.Timestamp"'))) == type_value( - value='google.protobuf.Timestamp') - assert structure_builder(parse_serialized_value(Tokens('string_value:"1000000s"'))) == StringType( - source='1000000s') - assert structure_builder( - parse_serialized_value(Tokens('type_value:"google.protobuf.Duration"'))) == type_value( - value='google.protobuf.Duration') - assert structure_builder(parse_serialized_value(Tokens('int64_value:13'))) == IntType(source=13) - assert structure_builder(parse_serialized_value(Tokens('int64_value:43'))) == IntType(source=43) - assert structure_builder(parse_serialized_value(Tokens('int64_value:2009'))) == IntType(source=2009) - assert structure_builder(parse_serialized_value(Tokens('int64_value:23'))) == IntType(source=23) - assert structure_builder(parse_serialized_value(Tokens('int64_value:31'))) == IntType(source=31) - assert structure_builder(parse_serialized_value(Tokens('int64_value:14'))) == IntType(source=14) - assert structure_builder(parse_serialized_value(Tokens('int64_value:11'))) == IntType(source=11) - assert structure_builder(parse_serialized_value(Tokens('int64_value:16'))) == IntType(source=16) - assert structure_builder(parse_serialized_value(Tokens('int64_value:123123'))) == IntType(source=123123) - assert structure_builder(parse_serialized_value(Tokens('int64_value:62'))) == IntType(source=62) - assert structure_builder(parse_serialized_value(Tokens('int64_value:3730'))) == IntType(source=3730) - -def test_type_env_values(): - assert structure_builder(parse_serialized_value(Tokens('type:{message_type:"google.protobuf.Int32Value"}'))) == type_value(value='google.protobuf.Int32Value') - assert structure_builder(parse_serialized_value(Tokens('type:{message_type:"google.protobuf.Int64Value"}'))) == type_value(value='google.protobuf.Int64Value') - assert structure_builder(parse_serialized_value(Tokens('type:{message_type:"google.protobuf.UInt32Value"}'))) == type_value(value='google.protobuf.UInt32Value') - assert structure_builder(parse_serialized_value(Tokens('type:{message_type:"google.protobuf.UInt64Value"}'))) == type_value(value='google.protobuf.UInt64Value') - assert structure_builder(parse_serialized_value(Tokens('type:{message_type:"google.protobuf.FloatValue"}'))) == type_value(value='google.protobuf.FloatValue') - assert structure_builder(parse_serialized_value(Tokens('type:{message_type:"google.protobuf.DoubleValue"}'))) == type_value(value='google.protobuf.DoubleValue') - assert structure_builder(parse_serialized_value(Tokens('type:{message_type:"google.protobuf.BoolValue"}'))) == type_value(value='google.protobuf.BoolValue') - assert structure_builder(parse_serialized_value(Tokens('type:{message_type:"google.protobuf.StringValue"}'))) == type_value(value='google.protobuf.StringValue') - assert structure_builder(parse_serialized_value(Tokens('type:{message_type:"google.protobuf.BytesValue"}'))) == type_value(value='google.protobuf.BytesValue') - assert structure_builder(parse_serialized_value(Tokens('type:{message_type:"google.protobuf.ListValue"}'))) == type_value(value='google.protobuf.ListValue') - assert structure_builder(parse_serialized_value(Tokens('type:{message_type:"google.protobuf.Struct"}'))) == type_value(value='google.protobuf.Struct') - assert structure_builder(parse_serialized_value(Tokens('type:{message_type:"google.protobuf.Value"}'))) == type_value(value='google.protobuf.Value') - assert structure_builder(parse_serialized_value(Tokens('type:{message_type:"google.protubuf.Any"}'))) == type_value(value='google.protubuf.Any') - -def test_type_repr(): - assert type_value("type").cel_name() == "celpy.celtypes.TypeType" - assert type_value("bool").cel_name() == "celpy.celtypes.BoolType" - assert type_value("bytes").cel_name() == "celpy.celtypes.BytesType" - assert type_value("double").cel_name() == "celpy.celtypes.DoubleType" - assert type_value("int").cel_name() == "celpy.celtypes.IntType" - assert type_value("list").cel_name() == "celpy.celtypes.ListType" - assert type_value("list_type").cel_name() == "celpy.celtypes.ListType" - assert type_value("map").cel_name() == "celpy.celtypes.MapType" - assert type_value("map_type").cel_name() == "celpy.celtypes.MapType" - assert type_value("null_type").cel_name() == "NoneType" - assert type_value("string").cel_name() == "celpy.celtypes.StringType" - assert type_value("uint").cel_name() == "celpy.celtypes.UintType" diff --git a/tools/wip.txt b/tools/wip.txt new file mode 100644 index 0000000..1fa8e3a --- /dev/null +++ b/tools/wip.txt @@ -0,0 +1,958 @@ +bindings_ext:bind:bind_nested +bindings_ext:bind:boolean_literal +bindings_ext:bind:macro_exists +bindings_ext:bind:macro_not_exists +bindings_ext:bind:string_concat +block_ext:basic:adjacent_macros +block_ext:basic:call +block_ext:basic:inclusion_list +block_ext:basic:inclusion_map +block_ext:basic:int_add +block_ext:basic:macro_shadowed_variable_1 +block_ext:basic:macro_shadowed_variable_2 +block_ext:basic:map_index +block_ext:basic:multiple_macros_1 +block_ext:basic:multiple_macros_2 +block_ext:basic:multiple_macros_3 +block_ext:basic:nested_list_construction +block_ext:basic:nested_macros_1 +block_ext:basic:nested_macros_2 +block_ext:basic:nested_map_construction +block_ext:basic:nested_ternary +block_ext:basic:optional_list +block_ext:basic:optional_map +block_ext:basic:optional_map_chained +block_ext:basic:optional_message +block_ext:basic:presence_test +block_ext:basic:presence_test_2 +block_ext:basic:presence_test_with_ternary +block_ext:basic:presence_test_with_ternary_2 +block_ext:basic:presence_test_with_ternary_3 +block_ext:basic:presence_test_with_ternary_nested +block_ext:basic:select +block_ext:basic:select_nested_1 +block_ext:basic:select_nested_2 +block_ext:basic:select_nested_message_map_index_1 +block_ext:basic:select_nested_message_map_index_2 +block_ext:basic:size_1 +block_ext:basic:size_2 +block_ext:basic:size_3 +block_ext:basic:size_4 +block_ext:basic:ternary +block_ext:basic:timestamp +comparisons:eq_literal:eq_double_int +comparisons:eq_literal:eq_double_uint +comparisons:eq_literal:eq_dyn_double_int +comparisons:eq_literal:eq_dyn_double_uint +comparisons:eq_literal:eq_dyn_int_double +comparisons:eq_literal:eq_dyn_int_uint +comparisons:eq_literal:eq_dyn_json_null +comparisons:eq_literal:eq_dyn_uint_double +comparisons:eq_literal:eq_dyn_uint_int +comparisons:eq_literal:eq_int_double +comparisons:eq_literal:eq_int_uint +comparisons:eq_literal:eq_list_elem_mixed_types +comparisons:eq_literal:eq_list_mixed_type_numbers +comparisons:eq_literal:eq_map_mixed_type_numbers +comparisons:eq_literal:eq_map_value_mixed_types +comparisons:eq_literal:eq_mixed_types +comparisons:eq_literal:eq_uint_double +comparisons:eq_literal:eq_uint_int +comparisons:eq_literal:not_eq_double_int +comparisons:eq_literal:not_eq_double_nan +comparisons:eq_literal:not_eq_double_uint +comparisons:eq_literal:not_eq_dyn_double_int +comparisons:eq_literal:not_eq_dyn_double_null +comparisons:eq_literal:not_eq_dyn_double_uint +comparisons:eq_literal:not_eq_dyn_int_double +comparisons:eq_literal:not_eq_dyn_int_null +comparisons:eq_literal:not_eq_dyn_int_uint +comparisons:eq_literal:not_eq_dyn_list_null +comparisons:eq_literal:not_eq_dyn_map_null +comparisons:eq_literal:not_eq_dyn_timestamp_null +comparisons:eq_literal:not_eq_dyn_uint_double +comparisons:eq_literal:not_eq_dyn_uint_int +comparisons:eq_literal:not_eq_int_double +comparisons:eq_literal:not_eq_int_double_nan +comparisons:eq_literal:not_eq_int_uint +comparisons:eq_literal:not_eq_list_elem_null +comparisons:eq_literal:not_eq_list_mixed_type_numbers +comparisons:eq_literal:not_eq_map_null +comparisons:eq_literal:not_eq_uint_double +comparisons:eq_literal:not_eq_uint_double_nan +comparisons:eq_literal:not_eq_uint_int +comparisons:eq_wrapper:eq_bool_proto2_null +comparisons:eq_wrapper:eq_bool_proto3_null +comparisons:eq_wrapper:eq_bytes_proto2_null +comparisons:eq_wrapper:eq_bytes_proto3_null +comparisons:eq_wrapper:eq_double_not_null +comparisons:eq_wrapper:eq_double_proto2_null +comparisons:eq_wrapper:eq_double_proto3_null +comparisons:eq_wrapper:eq_float_not_null +comparisons:eq_wrapper:eq_float_proto2_null +comparisons:eq_wrapper:eq_float_proto3_null +comparisons:eq_wrapper:eq_int32_not_null +comparisons:eq_wrapper:eq_int32_proto2_null +comparisons:eq_wrapper:eq_int32_proto3_null +comparisons:eq_wrapper:eq_int64_not_null +comparisons:eq_wrapper:eq_int64_proto2_null +comparisons:eq_wrapper:eq_int64_proto3_null +comparisons:eq_wrapper:eq_proto2_any_unpack_bytewise_fallback_not_equal +comparisons:eq_wrapper:eq_proto2_any_unpack_not_equal +comparisons:eq_wrapper:eq_proto2_missing_fields_neq +comparisons:eq_wrapper:eq_proto3_any_unpack_bytewise_fallback_not_equal +comparisons:eq_wrapper:eq_proto3_any_unpack_not_equal +comparisons:eq_wrapper:eq_proto3_missing_fields_neq +comparisons:eq_wrapper:eq_string +comparisons:eq_wrapper:eq_string_empty +comparisons:eq_wrapper:eq_string_proto2_null +comparisons:eq_wrapper:eq_string_proto3_null +comparisons:eq_wrapper:eq_uint32_not_null +comparisons:eq_wrapper:eq_uint32_proto2_null +comparisons:eq_wrapper:eq_uint32_proto3_null +comparisons:eq_wrapper:eq_uint64_not_null +comparisons:eq_wrapper:eq_uint64_proto2_null +comparisons:eq_wrapper:eq_uint64_proto3_null +comparisons:gt_literal:gt_dyn_int_double +comparisons:gt_literal:gt_dyn_int_small_lossy_double_greater +comparisons:gt_literal:gt_dyn_int_uint +comparisons:gt_literal:not_gt_dyn_big_double_int +comparisons:gt_literal:not_gt_dyn_int_big_double +comparisons:gt_literal:not_gt_dyn_int_big_uint +comparisons:gt_literal:not_gt_dyn_int_double +comparisons:gt_literal:not_gt_dyn_int_small_lossy_double +comparisons:gt_literal:not_gt_dyn_int_uint +comparisons:gt_literal:not_gt_dyn_small_double_int +comparisons:gt_literal:not_gt_dyn_small_int_uint +comparisons:gte_literal:gte_dyn_int_big_lossy_double +comparisons:gte_literal:gte_dyn_int_double +comparisons:gte_literal:gte_dyn_int_small_lossy_double_equal +comparisons:gte_literal:gte_dyn_int_small_lossy_double_greater +comparisons:gte_literal:gte_dyn_int_uint +comparisons:gte_literal:gte_dyn_small_double_int +comparisons:gte_literal:not_gte_dyn_int_big_double +comparisons:gte_literal:not_gte_dyn_int_big_uint +comparisons:gte_literal:not_gte_dyn_int_double +comparisons:gte_literal:not_gte_dyn_int_uint +comparisons:gte_literal:not_gte_dyn_small_int_uint +comparisons:in_list_literal:elem_in_mixed_type_list_cross_type +comparisons:in_map_literal:key_in_mixed_key_type_map_cross_type +comparisons:lt_literal:lt_dyn_int_big_lossy_double +comparisons:lt_literal:lt_dyn_int_big_uint +comparisons:lt_literal:lt_dyn_int_double +comparisons:lt_literal:lt_dyn_int_uint +comparisons:lt_literal:lt_dyn_small_int_uint +comparisons:lt_literal:not_lt_dyn_int_big_lossy_double +comparisons:lt_literal:not_lt_dyn_int_double +comparisons:lt_literal:not_lt_dyn_int_small_double +comparisons:lt_literal:not_lt_dyn_int_small_lossy_double +comparisons:lt_literal:not_lt_dyn_int_uint +comparisons:lt_literal:not_lt_dyn_small_double_int +comparisons:lte_literal:lte_dyn_big_double_int +comparisons:lte_literal:lte_dyn_int_big_double +comparisons:lte_literal:lte_dyn_int_big_uint +comparisons:lte_literal:lte_dyn_int_double +comparisons:lte_literal:lte_dyn_int_small_lossy_double +comparisons:lte_literal:lte_dyn_int_uint +comparisons:lte_literal:lte_dyn_small_double_int +comparisons:lte_literal:lte_dyn_small_int_uint +comparisons:lte_literal:not_lte_dyn_int_double +comparisons:lte_literal:not_lte_dyn_int_small_lossy_double_less +comparisons:lte_literal:not_lte_dyn_int_uint +comparisons:ne_literal:ne_double_int +comparisons:ne_literal:ne_double_nan +comparisons:ne_literal:ne_double_uint +comparisons:ne_literal:ne_int_double +comparisons:ne_literal:ne_int_uint +comparisons:ne_literal:ne_mixed_types +comparisons:ne_literal:ne_proto_different_types +comparisons:ne_literal:ne_proto2_any_unpack_bytewise_fallback +comparisons:ne_literal:ne_proto3_any_unpack_bytewise_fallback +comparisons:ne_literal:ne_uint_double +comparisons:ne_literal:not_ne_double_int +comparisons:ne_literal:not_ne_double_nan +comparisons:ne_literal:not_ne_double_uint +comparisons:ne_literal:not_ne_int_double +comparisons:ne_literal:not_ne_int_double_nan +comparisons:ne_literal:not_ne_int_uint +comparisons:ne_literal:not_ne_uint_double +comparisons:ne_literal:not_ne_uint_double_nan +conversions:bool:string_f +conversions:bool:string_false_lowercase +conversions:bool:string_false_pascalcase +conversions:bool:string_false_uppercase +conversions:bool:string_t +conversions:bool:string_true_lowercase +conversions:bool:string_true_pascalcase +conversions:bool:string_true_uppercase +conversions:identity:timestamp +conversions:int:double_half_neg +conversions:int:double_half_pos +conversions:int:double_int_min_range +conversions:int:double_truncate +conversions:int:double_truncate_neg +conversions:uint:double_half +conversions:uint:double_truncate +dynamic:any:literal +dynamic:double:field_read_proto2_unset +dynamic:double:field_read_proto3_unset +dynamic:float:field_assign_proto2_range +dynamic:float:field_assign_proto2_round_to_zero +dynamic:float:field_assign_proto2_subnorm +dynamic:float:field_assign_proto2_subnorm +dynamic:float:field_assign_proto3_range +dynamic:float:field_assign_proto3_round_to_zero +dynamic:float:field_read_proto2_unset +dynamic:float:field_read_proto3_unset +dynamic:float:literal_not_double +dynamic:int32:field_read_proto2_unset +dynamic:int32:field_read_proto3_unset +dynamic:list:literal +dynamic:list:literal_empty +dynamic:string:literal +dynamic:string:literal_empty +dynamic:string:literal_unicode +dynamic:struct:field_assign_proto2_bad +dynamic:struct:field_assign_proto3_bad +dynamic:struct:literal +dynamic:struct:literal_empty +dynamic:struct:literal_no_field_access +dynamic:uint32:field_read_proto2_unset +dynamic:uint64:field_read_proto2_unset +dynamic:value_bool:literal +dynamic:value_bool:literal_false +dynamic:value_list:literal +dynamic:value_list:literal_empty +dynamic:value_null:field_read_proto2_unset +dynamic:value_null:field_read_proto3_unset +dynamic:value_null:literal +dynamic:value_null:literal_unset +dynamic:value_number:literal +dynamic:value_number:literal_zero +dynamic:value_string:literal +dynamic:value_string:literal_empty +dynamic:value_struct:literal +dynamic:value_struct:literal_empty +encoders_ext:decode:hello +encoders_ext:decode:hello_without_padding +encoders_ext:encode:hello +encoders_ext:round_trip:hello +enums:legacy_proto2:access_repeated_enum +enums:legacy_proto2:arithmetic +enums:legacy_proto2:assign_repeated_enum +enums:legacy_proto2:assign_standalone_int_too_big +enums:legacy_proto2:assign_standalone_int_too_neg +enums:legacy_proto2:assign_standalone_name +enums:legacy_proto2:comparison +enums:legacy_proto2:enum_as_int +enums:legacy_proto2:field_type +enums:legacy_proto2:list_enum_as_list_int +enums:legacy_proto2:literal_global +enums:legacy_proto2:literal_nested +enums:legacy_proto2:literal_zero +enums:legacy_proto2:select_default +enums:legacy_proto2:type_global +enums:legacy_proto2:type_nested +enums:legacy_proto3:access_repeated_enum +enums:legacy_proto3:arithmetic +enums:legacy_proto3:assign_repeated_enum +enums:legacy_proto3:assign_standalone_int_too_big +enums:legacy_proto3:assign_standalone_int_too_neg +enums:legacy_proto3:assign_standalone_name +enums:legacy_proto3:comparison +enums:legacy_proto3:enum_as_int +enums:legacy_proto3:field_type +enums:legacy_proto3:list_enum_as_list_int +enums:legacy_proto3:literal_global +enums:legacy_proto3:literal_nested +enums:legacy_proto3:literal_zero +enums:legacy_proto3:select_default +enums:legacy_proto3:type_global +enums:legacy_proto3:type_nested +enums:strong_proto2:assign_standalone_int +enums:strong_proto2:assign_standalone_name +enums:strong_proto2:comparison_false +enums:strong_proto2:convert_symbol_to_int +enums:strong_proto3:assign_standalone_int +enums:strong_proto3:assign_standalone_int_big +enums:strong_proto3:assign_standalone_int_neg +enums:strong_proto3:assign_standalone_name +enums:strong_proto3:comparison_false +enums:strong_proto3:convert_symbol_to_int +fields:in:mixed_numbers_and_keys_absent +fields:in:mixed_numbers_and_keys_present +fields:map_fields:map_key_mixed_numbers_double_key +fields:map_fields:map_key_mixed_numbers_int_key +fields:map_fields:map_key_mixed_numbers_uint_key +fields:quoted_map_fields:field_access_dash +fields:quoted_map_fields:field_access_dot +fields:quoted_map_fields:field_access_slash +fields:quoted_map_fields:has_field_dash +fields:quoted_map_fields:has_field_dot +fields:quoted_map_fields:has_field_slash +lists:in:double_in_ints +lists:in:double_in_uints +lists:in:int_in_doubles +lists:in:int_in_uints +lists:in:uint_in_doubles +lists:in:uint_in_ints +lists:index:zero_based_double +macros:exists:list_elem_type_exhaustive +macros:exists:map_key_type_exhaustive +macros2:all:list_elem_all_true +macros2:all:list_elem_error_exhaustive +macros2:all:list_elem_error_shortcircuit +macros2:all:list_elem_none_true +macros2:all:list_elem_some_true +macros2:all:list_elem_type_error_exhaustive +macros2:all:list_elem_type_exhaustive +macros2:all:list_elem_type_shortcircuit +macros2:all:list_empty +macros2:all:map_key +macros2:exists:list_elem_all_true +macros2:exists:list_elem_exists_error +macros2:exists:list_elem_none_true +macros2:exists:list_elem_some_true +macros2:exists:list_elem_type_exhaustive +macros2:exists:list_elem_type_shortcircuit +macros2:exists:list_empty +macros2:exists:map_key +macros2:exists:map_key_type_exhaustive +macros2:exists:map_key_type_shortcircuit +macros2:exists:not_map_key +macros2:existsOne:list_all +macros2:existsOne:list_empty +macros2:existsOne:list_many +macros2:existsOne:list_none +macros2:existsOne:list_one +macros2:existsOne:list_one_false +macros2:existsOne:list_one_true +macros2:existsOne:map_one +macros2:transformList:empty +macros2:transformList:empty_filter +macros2:transformList:many +macros2:transformList:many_filter +macros2:transformList:one +macros2:transformList:one_filter +macros2:transformMap:empty +macros2:transformMap:empty_filter +macros2:transformMap:many +macros2:transformMap:many_filter +macros2:transformMap:one +macros2:transformMap:one_filter +math_ext:abs:negative_double +math_ext:abs:negative_int +math_ext:abs:positive_double +math_ext:abs:positive_int +math_ext:abs:uint +math_ext:bit_and:int_int_intersect +math_ext:bit_and:int_int_intersect_neg +math_ext:bit_and:int_int_non_intersect +math_ext:bit_and:uint_uint_intersect +math_ext:bit_and:uint_uint_non_intersect +math_ext:bit_not:int_negative +math_ext:bit_not:int_positive +math_ext:bit_not:int_zero +math_ext:bit_not:uint_positive +math_ext:bit_not:uint_zero +math_ext:bit_or:int_int_positive +math_ext:bit_or:int_int_positive_negative +math_ext:bit_or:uint_uint +math_ext:bit_shift_left:int +math_ext:bit_shift_left:int_large_shift +math_ext:bit_shift_left:int_negative_large_shift +math_ext:bit_shift_left:uint +math_ext:bit_shift_left:uint_large_shift +math_ext:bit_shift_right:int +math_ext:bit_shift_right:int_large_shift +math_ext:bit_shift_right:int_negative +math_ext:bit_shift_right:int_negative_large_shift +math_ext:bit_shift_right:uint +math_ext:bit_shift_right:uint_large_shift +math_ext:bit_xor:int_int_positive +math_ext:bit_xor:int_int_positive_negative +math_ext:bit_xor:uint_uint +math_ext:ceil:negative +math_ext:ceil:positive +math_ext:floor:negative +math_ext:floor:positive +math_ext:greatest_double_result:binary_first_arg_double_max +math_ext:greatest_double_result:binary_first_arg_double_min +math_ext:greatest_double_result:binary_first_arg_greater +math_ext:greatest_double_result:binary_same_args +math_ext:greatest_double_result:binary_second_arg_double_max +math_ext:greatest_double_result:binary_second_arg_double_min +math_ext:greatest_double_result:binary_second_arg_greater +math_ext:greatest_double_result:binary_with_int +math_ext:greatest_double_result:binary_with_uint +math_ext:greatest_double_result:quaternary_mixed +math_ext:greatest_double_result:quaternary_mixed_array +math_ext:greatest_double_result:quaternary_mixed_dyn_array +math_ext:greatest_double_result:ternary_double_max +math_ext:greatest_double_result:ternary_double_min +math_ext:greatest_double_result:ternary_first_arg_greatest +math_ext:greatest_double_result:ternary_same_args +math_ext:greatest_double_result:ternary_third_arg_greatest +math_ext:greatest_double_result:ternary_with_int +math_ext:greatest_double_result:ternary_with_negatives +math_ext:greatest_double_result:ternary_with_uint +math_ext:greatest_double_result:unary_negative +math_ext:greatest_double_result:unary_positive +math_ext:greatest_int_result:binary_first_arg_greater +math_ext:greatest_int_result:binary_first_arg_int_max +math_ext:greatest_int_result:binary_first_arg_int_min +math_ext:greatest_int_result:binary_same_args +math_ext:greatest_int_result:binary_second_arg_greater +math_ext:greatest_int_result:binary_second_arg_int_max +math_ext:greatest_int_result:binary_second_arg_int_min +math_ext:greatest_int_result:binary_with_decimal +math_ext:greatest_int_result:binary_with_uint +math_ext:greatest_int_result:quaternary_mixed +math_ext:greatest_int_result:quaternary_mixed_array +math_ext:greatest_int_result:quaternary_mixed_dyn_array +math_ext:greatest_int_result:ternary_first_arg_greatest +math_ext:greatest_int_result:ternary_int_max +math_ext:greatest_int_result:ternary_int_min +math_ext:greatest_int_result:ternary_same_args +math_ext:greatest_int_result:ternary_third_arg_greatest +math_ext:greatest_int_result:ternary_with_decimal +math_ext:greatest_int_result:ternary_with_negatives +math_ext:greatest_int_result:ternary_with_uint +math_ext:greatest_int_result:unary_negative +math_ext:greatest_int_result:unary_positive +math_ext:greatest_uint_result:binary_first_arg_greater +math_ext:greatest_uint_result:binary_first_arg_uint_max +math_ext:greatest_uint_result:binary_same_args +math_ext:greatest_uint_result:binary_second_arg_greater +math_ext:greatest_uint_result:binary_second_arg_uint_max +math_ext:greatest_uint_result:binary_with_decimal +math_ext:greatest_uint_result:binary_with_int +math_ext:greatest_uint_result:quaternary_mixed +math_ext:greatest_uint_result:quaternary_mixed_array +math_ext:greatest_uint_result:quaternary_mixed_dyn_array +math_ext:greatest_uint_result:ternary_first_arg_greatest +math_ext:greatest_uint_result:ternary_int_max +math_ext:greatest_uint_result:ternary_same_args +math_ext:greatest_uint_result:ternary_third_arg_greatest +math_ext:greatest_uint_result:ternary_with_decimal +math_ext:greatest_uint_result:ternary_with_int +math_ext:greatest_uint_result:unary +math_ext:isFinite:false_inf +math_ext:isFinite:false_nan +math_ext:isFinite:true +math_ext:isInf:false +math_ext:isInf:true +math_ext:isNaN:false +math_ext:isNaN:true +math_ext:least_double_result:binary_first_arg_double_max +math_ext:least_double_result:binary_first_arg_double_min +math_ext:least_double_result:binary_first_arg_least +math_ext:least_double_result:binary_same_args +math_ext:least_double_result:binary_second_arg_double_max +math_ext:least_double_result:binary_second_arg_double_min +math_ext:least_double_result:binary_second_arg_least +math_ext:least_double_result:binary_with_int +math_ext:least_double_result:binary_with_uint +math_ext:least_double_result:quaternary_mixed +math_ext:least_double_result:quaternary_mixed_array +math_ext:least_double_result:quaternary_mixed_dyn_array +math_ext:least_double_result:ternary_double_max +math_ext:least_double_result:ternary_double_min +math_ext:least_double_result:ternary_first_arg_least +math_ext:least_double_result:ternary_same_args +math_ext:least_double_result:ternary_third_arg_least +math_ext:least_double_result:ternary_with_int +math_ext:least_double_result:ternary_with_negatives +math_ext:least_double_result:ternary_with_uint +math_ext:least_double_result:unary_negative +math_ext:least_double_result:unary_positive +math_ext:least_int_result:binary_first_arg_int_max +math_ext:least_int_result:binary_first_arg_int_min +math_ext:least_int_result:binary_first_arg_least +math_ext:least_int_result:binary_same_args +math_ext:least_int_result:binary_second_arg_int_max +math_ext:least_int_result:binary_second_arg_int_min +math_ext:least_int_result:binary_second_arg_least +math_ext:least_int_result:binary_with_decimal +math_ext:least_int_result:binary_with_uint +math_ext:least_int_result:quaternary_mixed +math_ext:least_int_result:quaternary_mixed_array +math_ext:least_int_result:quaternary_mixed_dyn_array +math_ext:least_int_result:ternary_first_arg_least +math_ext:least_int_result:ternary_int_max +math_ext:least_int_result:ternary_int_min +math_ext:least_int_result:ternary_same_args +math_ext:least_int_result:ternary_third_arg_least +math_ext:least_int_result:ternary_with_decimal +math_ext:least_int_result:ternary_with_negatives +math_ext:least_int_result:ternary_with_uint +math_ext:least_int_result:unary_negative +math_ext:least_int_result:unary_positive +math_ext:least_uint_result:binary_first_arg_least +math_ext:least_uint_result:binary_first_arg_uint_max +math_ext:least_uint_result:binary_same_args +math_ext:least_uint_result:binary_second_arg_least +math_ext:least_uint_result:binary_second_arg_uint_max +math_ext:least_uint_result:binary_with_decimal +math_ext:least_uint_result:binary_with_int +math_ext:least_uint_result:quaternary_mixed +math_ext:least_uint_result:quaternary_mixed_array +math_ext:least_uint_result:quaternary_mixed_dyn_array +math_ext:least_uint_result:ternary_first_arg_least +math_ext:least_uint_result:ternary_same_args +math_ext:least_uint_result:ternary_third_arg_least +math_ext:least_uint_result:ternary_uint_max +math_ext:least_uint_result:ternary_with_decimal +math_ext:least_uint_result:ternary_with_int +math_ext:least_uint_result:unary +math_ext:round:nan +math_ext:round:negative_down +math_ext:round:negative_mid +math_ext:round:negative_up +math_ext:round:positive_down +math_ext:round:positive_up +math_ext:sign:negative_double +math_ext:sign:negative_int +math_ext:sign:positive_double +math_ext:sign:positive_int +math_ext:sign:positive_uint +math_ext:sign:zero_double +math_ext:sign:zero_int +math_ext:sign:zero_uint +math_ext:trunc:nan +math_ext:trunc:negative +math_ext:trunc:positive +optionals:optionals:empty_list_optindex_hasValue +optionals:optionals:empty_map_optFlatMap_hasValue +optionals:optionals:empty_struct_optindex_hasValue +optionals:optionals:has_map_optindex +optionals:optionals:has_map_optindex_field +optionals:optionals:has_optional_ofNonZeroValue_struct_optional_ofNonZeroValue_map_optindex_field +optionals:optionals:list_optindex_value +optionals:optionals:map_absent_key_absent_field_none +optionals:optionals:map_empty_submap_optFlatMap_hasValue +optionals:optionals:map_key_mixed_numbers_double_key_optindex_value +optionals:optionals:map_key_mixed_numbers_int_key_optindex_value +optionals:optionals:map_key_mixed_numbers_uint_key_optindex_value +optionals:optionals:map_key_mixed_type_optindex_value +optionals:optionals:map_null_entry_hasValue +optionals:optionals:map_optindex_hasValue +optionals:optionals:map_optindex_optFlatMap_optional_ofNonZeroValue_hasValue +optionals:optionals:map_optional_entry_has +optionals:optionals:map_optional_has +optionals:optionals:map_submap_optFlatMap_value +optionals:optionals:map_submap_subkey_optFlatMap_value +optionals:optionals:map_undefined_entry_hasValue +optionals:optionals:none_optMap_hasValue +optionals:optionals:none_or_none_or_value +optionals:optionals:null +optionals:optionals:null_non_zero_value +optionals:optionals:optional_chaining_1 +optionals:optionals:optional_chaining_2 +optionals:optionals:optional_chaining_3 +optionals:optionals:optional_chaining_4 +optionals:optionals:optional_chaining_5 +optionals:optionals:optional_chaining_6 +optionals:optionals:optional_chaining_7 +optionals:optionals:optional_chaining_8 +optionals:optionals:optional_chaining_9 +optionals:optionals:optional_chaining_11 +optionals:optionals:optional_chaining_12 +optionals:optionals:optional_chaining_13 +optionals:optionals:optional_chaining_14 +optionals:optionals:optional_chaining_15 +optionals:optionals:optional_chaining_16 +optionals:optionals:optional_empty_list_optindex_hasValue +optionals:optionals:optional_empty_map_optindex_hasValue +optionals:optionals:optional_empty_struct_optindex_hasValue +optionals:optionals:optional_list_optindex_value +optionals:optionals:optional_none_optindex_hasValue +optionals:optionals:optional_none_optselect_hasValue +optionals:optionals:optional_of_optMap_value +optionals:optionals:optional_ofNonZeroValue_or_optional_value +optionals:optionals:optional_ofNonZeroValue_struct_optional_ofNonZeroValue_map_optindex_field +optionals:optionals:optional_struct_optindex_index_value +optionals:optionals:optional_struct_optindex_value +optionals:optionals:struct_list_optindex_field +optionals:optionals:struct_map_optindex_field +optionals:optionals:struct_map_optindex_field_nested +optionals:optionals:struct_optindex_value +optionals:optionals:struct_optional_ofNonZeroValue_map_optindex_field +optionals:optionals:ternary_optional_hasValue +optionals:optionals:type +parse:comments:new_line_terminated +parse:whitespace:carriage_returns +parse:whitespace:new_lines +parse:whitespace:new_pages +parse:whitespace:spaces +parse:whitespace:tabs +proto2_ext:get_ext:message_scoped_int64 +proto2_ext:get_ext:message_scoped_nested_enum_ext +proto2_ext:get_ext:message_scoped_nested_ext +proto2_ext:get_ext:message_scoped_repeated_test_all_types +proto2_ext:get_ext:package_scoped_int32 +proto2_ext:get_ext:package_scoped_nested_ext +proto2_ext:get_ext:package_scoped_repeated_test_all_types +proto2_ext:get_ext:package_scoped_test_all_types_ext +proto2_ext:get_ext:package_scoped_test_all_types_nested_enum_ext +proto2_ext:has_ext:message_scoped_int64 +proto2_ext:has_ext:message_scoped_nested_enum_ext +proto2_ext:has_ext:message_scoped_nested_ext +proto2_ext:has_ext:message_scoped_repeated_test_all_types +proto2_ext:has_ext:package_scoped_int32 +proto2_ext:has_ext:package_scoped_nested_ext +proto2_ext:has_ext:package_scoped_repeated_test_all_types +proto2_ext:has_ext:package_scoped_test_all_types_ext +proto2_ext:has_ext:package_scoped_test_all_types_nested_enum_ext +proto2:empty_field:nested_message_subfield +proto2:empty_field:repeated_enum +proto2:empty_field:repeated_nested +proto2:empty_field:repeated_scalar +proto2:empty_field:scalar_no_default +proto2:empty_field:scalar_with_default +proto2:empty_field:wkt +proto2:extensions_get:message_scoped_int64 +proto2:extensions_get:message_scoped_nested_enum_ext +proto2:extensions_get:message_scoped_nested_ext +proto2:extensions_get:message_scoped_repeated_test_all_types +proto2:extensions_get:package_scoped_int32 +proto2:extensions_get:package_scoped_nested_ext +proto2:extensions_get:package_scoped_repeated_test_all_types +proto2:extensions_get:package_scoped_test_all_types_ext +proto2:extensions_get:package_scoped_test_all_types_nested_enum_ext +proto2:extensions_has:message_scoped_int64 +proto2:extensions_has:message_scoped_nested_enum_ext +proto2:extensions_has:message_scoped_nested_ext +proto2:extensions_has:message_scoped_repeated_test_all_types +proto2:extensions_has:package_scoped_int32 +proto2:extensions_has:package_scoped_nested_ext +proto2:extensions_has:package_scoped_repeated_test_all_types +proto2:extensions_has:package_scoped_test_all_types_ext +proto2:extensions_has:package_scoped_test_all_types_nested_enum_ext +proto2:has:map_none_explicit +proto2:has:map_none_implicit +proto2:has:oneof_set +proto2:has:oneof_set_default +proto2:has:oneof_unset +proto2:has:optional_enum_set +proto2:has:optional_enum_set_zero +proto2:has:optional_message_set +proto2:has:optional_message_unset +proto2:has:optional_unset_no_default +proto2:has:optional_unset_with_default +proto2:has:repeated_none_explicit +proto2:has:repeated_none_implicit +proto2:has:required +proto2:has:undefined +proto2:literal_singular:float +proto2:literal_singular:float_eq_int +proto2:literal_singular:float_eq_uint +proto2:literal_singular:int32_eq_double +proto2:literal_singular:int32_eq_uint +proto2:literal_singular:int64_nocontainer +proto2:literal_singular:not_float_eq_int +proto2:literal_singular:not_float_eq_uint +proto2:literal_singular:not_int32_eq_double +proto2:literal_singular:not_int32_eq_uint +proto2:literal_singular:not_uint32_eq_double +proto2:literal_singular:not_uint32_eq_int +proto2:literal_singular:uint32_eq_double +proto2:literal_singular:uint32_eq_int +proto2:literal_wellknown:struct +proto2:quoted_fields:get_field_with_quoted_name +proto2:quoted_fields:set_field_with_quoted_name +proto2:set_null:list_value +proto2:set_null:map +proto2:set_null:repeated +proto2:set_null:single_scalar +proto2:set_null:single_struct +proto3:empty_field:nested_message_subfield +proto3:empty_field:repeated_enum +proto3:empty_field:repeated_nested +proto3:empty_field:repeated_scalar +proto3:empty_field:scalar +proto3:empty_field:wkt +proto3:has:map_none_explicit +proto3:has:map_none_implicit +proto3:has:oneof_set +proto3:has:oneof_set_default +proto3:has:oneof_unset +proto3:has:repeated_none_explicit +proto3:has:repeated_none_implicit +proto3:has:single_enum_set +proto3:has:single_message_set +proto3:has:single_message_set_to_default +proto3:has:single_message_unset +proto3:has:single_set_to_default +proto3:has:single_unset +proto3:has:undefined +proto3:literal_singular:float +proto3:literal_singular:int64_nocontainer +proto3:literal_wellknown:struct +proto3:quoted_fields:get_field +proto3:quoted_fields:set_field +proto3:set_null:list_value +proto3:set_null:map +proto3:set_null:repeated +proto3:set_null:single_scalar +proto3:set_null:single_struct +string_ext:ascii_casing:lowerascii +string_ext:ascii_casing:lowerascii_unicode +string_ext:ascii_casing:lowerascii_unicode_with_space +string_ext:ascii_casing:upperascii +string_ext:ascii_casing:upperascii_unicode +string_ext:ascii_casing:upperascii_unicode_with_space +string_ext:char_at:end_index +string_ext:char_at:middle_index +string_ext:char_at:multiple +string_ext:format:binary formatting clause +string_ext:format:binary formatting clause in a string variable +string_ext:format:bool support for binary formatting +string_ext:format:boolean support for %s +string_ext:format:byte support with hexadecimal formatting clause +string_ext:format:byte support with uppercase hexadecimal formatting clause +string_ext:format:bytes support for string +string_ext:format:default precision for fixed-point clause +string_ext:format:default precision for fixed-point clause in a string variable +string_ext:format:default precision for scientific notation +string_ext:format:duration support for string +string_ext:format:dyntype NaN/infinity support +string_ext:format:dyntype support for duration +string_ext:format:dyntype support for fixed-point formatting clause +string_ext:format:dyntype support for hex formatting clause +string_ext:format:dyntype support for hex formatting clause (uppercase) +string_ext:format:dyntype support for integer formatting clause +string_ext:format:dyntype support for integer formatting clause (unsigned) +string_ext:format:dyntype support for lists +string_ext:format:dyntype support for maps +string_ext:format:dyntype support for numbers with string formatting clause +string_ext:format:dyntype support for scientific notation +string_ext:format:dyntype support for string formatting clause +string_ext:format:dyntype support for timestamp +string_ext:format:dyntype support for unsigned hex formatting clause +string_ext:format:fixed point formatting clause +string_ext:format:fixed point formatting clause in a string variable +string_ext:format:int support for string +string_ext:format:list support for string +string_ext:format:lowercase hexadecimal formatting clause +string_ext:format:map support (all key types) +string_ext:format:map support for string +string_ext:format:mid-string substitution +string_ext:format:multiple substitutions +string_ext:format:multiple substitutions in a string variable +string_ext:format:NaN support for decimal +string_ext:format:NaN support for fixed-point +string_ext:format:NaN support for scientific notation +string_ext:format:negative infinity support for decimal +string_ext:format:negative infinity support for fixed-point +string_ext:format:negative infinity support for scientific notation +string_ext:format:no-op +string_ext:format:null support for string +string_ext:format:octal formatting clause +string_ext:format:percent escaping +string_ext:format:percent sign escape sequence support +string_ext:format:positive infinity support for decimal +string_ext:format:positive infinity support for fixed-point +string_ext:format:positive infinity support for scientific notation +string_ext:format:scientific notation formatting clause +string_ext:format:scientific notation formatting clause in a string variable +string_ext:format:string substitution in a string variable +string_ext:format:string support with hexadecimal formatting clause +string_ext:format:string support with uppercase hexadecimal formatting clause +string_ext:format:substitution inside escaped percent signs +string_ext:format:substitution inside escaped percent signs in a string variable +string_ext:format:substitution with one escaped percent sign on the left +string_ext:format:substitution with one escaped percent sign on the right +string_ext:format:timestamp support for string +string_ext:format:type() support for string +string_ext:format:uint support for binary formatting +string_ext:format:uint support for decimal clause +string_ext:format:uint support for octal formatting clause +string_ext:format:unsigned support for hexadecimal formatting clause +string_ext:format:uppercase hexadecimal formatting clause +string_ext:index_of:char_index +string_ext:index_of:char_index +string_ext:index_of:empty_index +string_ext:index_of:empty_index +string_ext:index_of:nomatch +string_ext:index_of:string_index +string_ext:index_of:string_index +string_ext:index_of:string_nomatch_index +string_ext:index_of:string_with_space_fullmatch +string_ext:index_of:string_with_space_index +string_ext:index_of:unicode_char +string_ext:index_of:unicode_char_index +string_ext:index_of:unicode_string_index +string_ext:index_of:unicode_string_nomatch_index +string_ext:join:dash_separator +string_ext:join:empty_separator +string_ext:join:empty_string_dash_separator +string_ext:join:empty_string_empty_separator +string_ext:last_index_of:char_index +string_ext:last_index_of:empty +string_ext:last_index_of:empty_index +string_ext:last_index_of:repeated_string +string_ext:last_index_of:string +string_ext:last_index_of:string_nomatch +string_ext:last_index_of:string_with_space_fullmatch +string_ext:last_index_of:string_with_space_string_index +string_ext:last_index_of:string_with_space_string_nomatch +string_ext:last_index_of:string_with_space_string_with_space_nomatch +string_ext:last_index_of:unicode_char +string_ext:last_index_of:unicode_char_index +string_ext:last_index_of:unicode_string_index +string_ext:quote:backspace +string_ext:quote:carriage_return +string_ext:quote:double_slash +string_ext:quote:empty_quote +string_ext:quote:ends_with +string_ext:quote:escaped +string_ext:quote:form_feed +string_ext:quote:horizontal_tab +string_ext:quote:mid_string_quote +string_ext:quote:multiline +string_ext:quote:printable_unicode +string_ext:quote:single_quote_with_double_quote +string_ext:quote:size_unicode_char +string_ext:quote:size_unicode_string +string_ext:quote:starts_with +string_ext:quote:two_escape_sequences +string_ext:quote:unicode +string_ext:quote:unicode_2 +string_ext:quote:unicode_code_points +string_ext:quote:verbatim +string_ext:quote:vertical_tab +string_ext:replace:basic +string_ext:replace:chained +string_ext:replace:no_placeholder +string_ext:replace:unicode +string_ext:split:empty +string_ext:split:one_limit +string_ext:split:unicode_negative_limit +string_ext:split:zero_limit +string_ext:substring:start +string_ext:substring:start_and_end +string_ext:substring:start_and_end_equal_value +string_ext:substring:start_with_max_length +string_ext:substring:unicode_start_and_end +string_ext:substring:unicode_start_and_end_equal_value +string_ext:trim:blank_spaces_escaped_chars +string_ext:trim:unicode_no_trim +string_ext:trim:unicode_space_chars_1 +string_ext:trim:unicode_space_chars_2 +string_ext:trim:unicode_space_chars_3 +string_ext:type_errors:charat_invalid_argument +string_ext:type_errors:replace_binary_invalid_argument +string_ext:type_errors:replace_binary_invalid_argument_2 +string_ext:type_errors:replace_quaternary_invalid_argument +string_ext:type_errors:replace_ternary_invalid_argument_2 +string_ext:type_errors:replace_ternary_invalid_argument_3 +string_ext:type_errors:replace_ternary_invalid_argument_4 +string_ext:type_errors:substring_binary_invalid_argument +string_ext:type_errors:substring_binary_invalid_argument_2 +string_ext:type_errors:substring_ternary_invalid_argument +string_ext:value_errors:charat_out_of_range +string_ext:value_errors:substring_begin_index_out_of_range +string_ext:value_errors:substring_end_index_greater_than_begin_index +string_ext:value_errors:substring_end_index_out_of_range +string_ext:value_errors:substring_negative_index +string_ext:value_errors:substring_out_of_range +timestamps:duration_conversions:type_comparison +timestamps:duration_converters:get_milliseconds +timestamps:duration_range:sub_over +timestamps:duration_range:sub_under +timestamps:timestamp_conversions:toString_timestamp_nanos +timestamps:timestamp_conversions:type_comparison +timestamps:timestamp_range:add_duration_nanos_over +timestamps:timestamp_range:add_duration_nanos_under +timestamps:timestamp_range:sub_time_duration_over +timestamps:timestamp_range:sub_time_duration_under +wrappers:bytes:to_json +wrappers:duration:to_json +wrappers:empty:to_json +wrappers:field_mask:to_json +wrappers:float:to_null +wrappers:int32:to_json +wrappers:int32:to_null +wrappers:int64:to_json_number +wrappers:int64:to_json_string +wrappers:string:to_any +wrappers:string:to_json +wrappers:timestamp:to_json +wrappers:uint32:to_json +wrappers:uint32:to_null +wrappers:uint64:to_json_number +wrappers:uint64:to_json_string +wrappers:value:default_to_json + +# Fails only for compiled runner β€” however, these don't fail to run if run with only WIP scenarios. +# It seems then that there may be some kind of side-effects bug in the Gherkin step implementation. +comparisons:eq_wrapper:eq_bool +comparisons:eq_wrapper:eq_bool_empty +comparisons:eq_wrapper:eq_bool_not_null +comparisons:eq_wrapper:eq_bytes +comparisons:eq_wrapper:eq_double +comparisons:eq_wrapper:eq_double_empty +comparisons:eq_wrapper:eq_float +comparisons:eq_wrapper:eq_float_empty +comparisons:eq_wrapper:eq_int32 +comparisons:eq_wrapper:eq_int32_empty +comparisons:eq_wrapper:eq_int64 +comparisons:eq_wrapper:eq_int64_empty +comparisons:eq_wrapper:eq_proto2_any_unpack_bytewise_fallback_equal +comparisons:eq_wrapper:eq_proto2_any_unpack_equal +comparisons:eq_wrapper:eq_proto3_any_unpack_bytewise_fallback_equal +comparisons:eq_wrapper:eq_proto3_any_unpack_equal +comparisons:eq_wrapper:eq_uint32 +comparisons:eq_wrapper:eq_uint32_empty +comparisons:eq_wrapper:eq_uint64 +comparisons:eq_wrapper:eq_uint64_empty +comparisons:ne_literal:ne_proto2_any_unpack +comparisons:ne_literal:ne_proto3_any_unpack +dynamic:bool:literal +dynamic:bool:literal_empty +dynamic:bytes:literal +dynamic:bytes:literal_unicode +dynamic:double:literal +dynamic:double:literal_zero +dynamic:float:literal +dynamic:float:literal_zero +dynamic:int32:field_assign_proto2_range +dynamic:int32:field_assign_proto3_range +dynamic:int32:literal +dynamic:int32:literal_zero +dynamic:int64:literal +dynamic:int64:literal_zero +dynamic:uint32:field_assign_proto2_range +dynamic:uint32:field_assign_proto3_range +dynamic:uint32:literal +dynamic:uint32:literal_zero +dynamic:uint64:literal +dynamic:uint64:literal_zero +enums:strong_proto2:comparison_true +enums:strong_proto3:comparison_true +optionals:optionals:optional_eq_int_int +optionals:optionals:optional_eq_int_none +optionals:optionals:optional_eq_none_int +optionals:optionals:optional_eq_none_none +optionals:optionals:optional_ne_int_int +optionals:optionals:optional_ne_int_none +optionals:optionals:optional_ne_none_int +optionals:optionals:optional_ne_none_none +wrappers:bool:to_any +wrappers:bool:to_json +wrappers:bytes:to_any +wrappers:double:to_any +wrappers:double:to_json +wrappers:float:to_any +wrappers:float:to_json +wrappers:int32:to_any +wrappers:int64:to_any +wrappers:uint32:to_any +wrappers:uint64:to_any + +# Fails only for interpreted runner +proto2:has:oneof_other_set +proto2:has:optional_enum_unset +proto3:has:oneof_other_set +proto3:has:single_enum_unset diff --git a/tox.ini b/tox.ini deleted file mode 100644 index 83c4394..0000000 --- a/tox.ini +++ /dev/null @@ -1,92 +0,0 @@ -# SPDX-Copyright: Copyright (c) Capital One Services, LLC -# SPDX-License-Identifier: Apache-2.0 -# Copyright 2020 Capital One Services, LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and limitations under the License. - -[tox] -envlist = py39,py310,py311,py312,py313,re2,lint -minversion = 4.24.0 - -[testenv] -usedevelop = true # Some of the acceptance tests import the source -deps = - pytest - behave -setenv = - PYTHONPATH = {toxinidir}/src -commands = - pytest -vv - pytest -v --doctest-modules src - pytest -v --doctest-modules README.rst - behave --tags=~@wip --tags=~@future -D env='{envname}' --stop - behave --tags=~@wip --tags=~@future -D env='{envname}' -D runner='compiled' --stop - python -m doctest {toxinidir}/docs/source/api.rst {toxinidir}/docs/source/cli.rst {toxinidir}/docs/source/index.rst {toxinidir}/docs/source/integration.rst - pytest -v -o python_classes='PYTest*' tools - -[testenv:re2] -description = "The re-only test(s) are skipped and re2 test(s) are run" -basepython = py312 -deps = - google-re2 - pytest -commands = - pytest -vv -k test_function_matches_re - -[testenv:lint] -basepython = py312 -deps = - pytest - pytest-cov - coverage - ruff - mypy - # pyright - google-re2-stubs - types-pyyaml>=6.0.12.20250516 - tomli -commands = - coverage erase - pytest -vv -x --cov=src --cov-report=term-missing - coverage html - coverage xml - mypy --lineprecision-report type_check --strict --disable-error-code type-arg --show-error-codes src - # pyright src - ruff check src - -[testenv:tools] -basepython = py312 -description = "Tests the textproto-to-gherkin tool and the Lark grammar it uses." -depends = py312 -deps = - pytest - pytest-cov -commands = - pytest -v --doctest-modules tools/pb2g.py - pytest -vv --cov=tools --cov-report=term-missing --log-level=DEBUG tools - pytest -v -o python_classes='PYTest*' tools - -[testenv:wip] -basepython = py312 -description = "Deferred Work-in-Progress." -depends = py312 -deps = - behave -usedevelop = true -setenv = - docs = $(ls {toxinidir}/docs/source/*.rst) - PYTHONPATH = {toxinidir}/src -allowlist_externals = poetry -commands = - behave --tags=@wip --no-logcapture --logging-level WARNING --no-color features/dynamic.feature - # behave --tags=@wip --no-logcapture --logging-level WARNING features/proto2.feature - # behave --tags=@wip --no-logcapture --logging-level WARNING features/proto3.feature diff --git a/type_check/lineprecision.txt b/type_check/lineprecision.txt index 65e9875..52dbbec 100644 --- a/type_check/lineprecision.txt +++ b/type_check/lineprecision.txt @@ -1,11 +1,13 @@ Name Lines Precise Imprecise Any Empty Unanalyzed ------------------------------------------------------------------- -celpy 306 79 12 4 211 0 -celpy.__main__ 549 243 14 60 232 0 -celpy.adapter 142 34 3 9 90 6 +celpy 351 79 12 4 256 0 +celpy.__main__ 549 242 12 63 232 0 +celpy.adapter 163 34 3 9 111 6 celpy.c7nlib 1663 344 16 152 1151 0 -celpy.celparser 411 138 67 23 183 0 -celpy.celtypes 1480 385 15 234 809 37 -celpy.evaluation 3875 1134 249 244 2232 16 +celpy.celparser 411 136 68 23 184 0 +celpy.celtypes 1483 386 15 235 810 37 +celpy.evaluation 3875 1131 252 244 2232 16 +gherkinize 911 502 12 86 297 14 +test_gherkinize 5581 5014 135 4 428 0 xlate 0 0 0 0 0 0 -xlate.c7n_to_cel 1755 397 103 144 1105 6 +xlate.c7n_to_cel 1755 387 103 144 1115 6 diff --git a/uv.lock b/uv.lock index 6a9bf48..2cdf68c 100644 --- a/uv.lock +++ b/uv.lock @@ -84,9 +84,14 @@ dependencies = [ dev = [ { name = "behave" }, { name = "coverage" }, + { name = "google-cel-spec-protocolbuffers-pyi" }, + { name = "google-cel-spec-protocolbuffers-python" }, { name = "google-re2-stubs" }, + { name = "jinja2" }, { name = "mypy" }, + { name = "protobuf" }, { name = "pytest" }, + { name = "pytest-cov" }, { name = "ruff" }, { name = "sphinx", version = "7.4.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, @@ -94,6 +99,7 @@ dev = [ { name = "sphinxcontrib-plantuml" }, { name = "tox" }, { name = "tox-uv" }, + { name = "types-protobuf" }, { name = "types-pyyaml" }, ] @@ -112,14 +118,20 @@ requires-dist = [ dev = [ { name = "behave", specifier = ">=1.2.6" }, { name = "coverage", specifier = ">=7.8.1" }, + { name = "google-cel-spec-protocolbuffers-pyi", specifier = "==32.1.0.1.20250512201741+dffb8c8cf781" }, + { name = "google-cel-spec-protocolbuffers-python", specifier = "==32.0.0.1.20250512201741+dffb8c8cf781" }, { name = "google-re2-stubs" }, + { name = "jinja2", specifier = ">=3.1.6" }, { name = "mypy", specifier = ">=1.15.0" }, + { name = "protobuf", specifier = ">=6.32.1" }, { name = "pytest", specifier = ">=8.3.5" }, + { name = "pytest-cov", specifier = ">=6.3.0" }, { name = "ruff", specifier = ">=0.11.10" }, { name = "sphinx", specifier = ">=7.4.7" }, { name = "sphinxcontrib-plantuml", specifier = ">=0.30" }, { name = "tox", specifier = ">=4.24" }, { name = "tox-uv", specifier = ">=1.25.0" }, + { name = "types-protobuf", specifier = ">=6.30.2.20250914" }, { name = "types-pyyaml", specifier = ">=6.0.12.20250516" }, ] @@ -294,6 +306,11 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1b/a1/4d968d4605f3a87a809f0c8f495eed81656c93cf6c00818334498ad6ad45/coverage-7.8.1-py3-none-any.whl", hash = "sha256:e54b80885b0e61d346accc5709daf8762471a452345521cc9281604a907162c2", size = 203623, upload-time = "2025-05-21T12:39:43.473Z" }, ] +[package.optional-dependencies] +toml = [ + { name = "tomli", marker = "python_full_version <= '3.11'" }, +] + [[package]] name = "distlib" version = "0.3.9" @@ -333,6 +350,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, ] +[[package]] +name = "google-cel-spec-protocolbuffers-pyi" +version = "32.1.0.1.20250512201741+dffb8c8cf781" +source = { registry = "https://buf.build/gen/python" } +dependencies = [ + { name = "googleapis-googleapis-protocolbuffers-pyi" }, + { name = "protobuf" }, + { name = "types-protobuf" }, +] +wheels = [ + { url = "https://buf.build/gen/python/google-cel-spec-protocolbuffers-pyi/google_cel_spec_protocolbuffers_pyi-32.1.0.1.20250512201741+dffb8c8cf781-py3-none-any.whl" }, +] + +[[package]] +name = "google-cel-spec-protocolbuffers-python" +version = "32.0.0.1.20250512201741+dffb8c8cf781" +source = { registry = "https://buf.build/gen/python" } +dependencies = [ + { name = "google-cel-spec-protocolbuffers-pyi" }, + { name = "googleapis-googleapis-protocolbuffers-python" }, + { name = "protobuf" }, +] +wheels = [ + { url = "https://buf.build/gen/python/google-cel-spec-protocolbuffers-python/google_cel_spec_protocolbuffers_python-32.0.0.1.20250512201741+dffb8c8cf781-py3-none-any.whl" }, +] + [[package]] name = "google-re2" version = "1.1.20240702" @@ -463,6 +506,30 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7e/86/2134e8ff65a22e30883bfc38ac34c5c76fd88cc9cef02ff3561f05db2b68/google_re2_stubs-0.1.1-py3-none-any.whl", hash = "sha256:a82eb6c3accd20879d711cd38151583d8a154fcca755f43a5595143a484c8118", size = 3676, upload-time = "2024-10-21T15:22:43.08Z" }, ] +[[package]] +name = "googleapis-googleapis-protocolbuffers-pyi" +version = "32.1.0.1.20250411203938+61b203b9a916" +source = { registry = "https://buf.build/gen/python" } +dependencies = [ + { name = "protobuf" }, + { name = "types-protobuf" }, +] +wheels = [ + { url = "https://buf.build/gen/python/googleapis-googleapis-protocolbuffers-pyi/googleapis_googleapis_protocolbuffers_pyi-32.1.0.1.20250411203938+61b203b9a916-py3-none-any.whl" }, +] + +[[package]] +name = "googleapis-googleapis-protocolbuffers-python" +version = "32.0.0.1.20250411203938+61b203b9a916" +source = { registry = "https://buf.build/gen/python" } +dependencies = [ + { name = "googleapis-googleapis-protocolbuffers-pyi" }, + { name = "protobuf" }, +] +wheels = [ + { url = "https://buf.build/gen/python/googleapis-googleapis-protocolbuffers-python/googleapis_googleapis_protocolbuffers_python-32.0.0.1.20250411203938+61b203b9a916-py3-none-any.whl" }, +] + [[package]] name = "idna" version = "3.10" @@ -777,6 +844,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] +[[package]] +name = "protobuf" +version = "6.32.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fa/a4/cc17347aa2897568beece2e674674359f911d6fe21b0b8d6268cd42727ac/protobuf-6.32.1.tar.gz", hash = "sha256:ee2469e4a021474ab9baafea6cd070e5bf27c7d29433504ddea1a4ee5850f68d", size = 440635, upload-time = "2025-09-11T21:38:42.935Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/98/645183ea03ab3995d29086b8bf4f7562ebd3d10c9a4b14ee3f20d47cfe50/protobuf-6.32.1-cp310-abi3-win32.whl", hash = "sha256:a8a32a84bc9f2aad712041b8b366190f71dde248926da517bde9e832e4412085", size = 424411, upload-time = "2025-09-11T21:38:27.427Z" }, + { url = "https://files.pythonhosted.org/packages/8c/f3/6f58f841f6ebafe076cebeae33fc336e900619d34b1c93e4b5c97a81fdfa/protobuf-6.32.1-cp310-abi3-win_amd64.whl", hash = "sha256:b00a7d8c25fa471f16bc8153d0e53d6c9e827f0953f3c09aaa4331c718cae5e1", size = 435738, upload-time = "2025-09-11T21:38:30.959Z" }, + { url = "https://files.pythonhosted.org/packages/10/56/a8a3f4e7190837139e68c7002ec749190a163af3e330f65d90309145a210/protobuf-6.32.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d8c7e6eb619ffdf105ee4ab76af5a68b60a9d0f66da3ea12d1640e6d8dab7281", size = 426454, upload-time = "2025-09-11T21:38:34.076Z" }, + { url = "https://files.pythonhosted.org/packages/3f/be/8dd0a927c559b37d7a6c8ab79034fd167dcc1f851595f2e641ad62be8643/protobuf-6.32.1-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:2f5b80a49e1eb7b86d85fcd23fe92df154b9730a725c3b38c4e43b9d77018bf4", size = 322874, upload-time = "2025-09-11T21:38:35.509Z" }, + { url = "https://files.pythonhosted.org/packages/5c/f6/88d77011b605ef979aace37b7703e4eefad066f7e84d935e5a696515c2dd/protobuf-6.32.1-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:b1864818300c297265c83a4982fd3169f97122c299f56a56e2445c3698d34710", size = 322013, upload-time = "2025-09-11T21:38:37.017Z" }, + { url = "https://files.pythonhosted.org/packages/05/9d/d6f1a8b6657296920c58f6b85f7bca55fa27e3ca7fc5914604d89cd0250b/protobuf-6.32.1-cp39-cp39-win32.whl", hash = "sha256:68ff170bac18c8178f130d1ccb94700cf72852298e016a2443bdb9502279e5f1", size = 424505, upload-time = "2025-09-11T21:38:38.415Z" }, + { url = "https://files.pythonhosted.org/packages/ed/cd/891bd2d23558f52392a5687b2406a741e2e28d629524c88aade457029acd/protobuf-6.32.1-cp39-cp39-win_amd64.whl", hash = "sha256:d0975d0b2f3e6957111aa3935d08a0eb7e006b1505d825f862a1fffc8348e122", size = 435825, upload-time = "2025-09-11T21:38:39.773Z" }, + { url = "https://files.pythonhosted.org/packages/97/b7/15cc7d93443d6c6a84626ae3258a91f4c6ac8c0edd5df35ea7658f71b79c/protobuf-6.32.1-py3-none-any.whl", hash = "sha256:2601b779fc7d32a866c6b4404f9d42a3f67c5b9f3f15b4db3cccabe06b95c346", size = 169289, upload-time = "2025-09-11T21:38:41.234Z" }, +] + [[package]] name = "pygments" version = "2.19.1" @@ -816,6 +899,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, ] +[[package]] +name = "pytest-cov" +version = "6.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage", extra = ["toml"] }, + { name = "pluggy" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/4c/f883ab8f0daad69f47efdf95f55a66b51a8b939c430dadce0611508d9e99/pytest_cov-6.3.0.tar.gz", hash = "sha256:35c580e7800f87ce892e687461166e1ac2bcb8fb9e13aea79032518d6e503ff2", size = 70398, upload-time = "2025-09-06T15:40:14.361Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/b4/bb7263e12aade3842b938bc5c6958cae79c5ee18992f9b9349019579da0f/pytest_cov-6.3.0-py3-none-any.whl", hash = "sha256:440db28156d2468cafc0415b4f8e50856a0d11faefa38f30906048fe490f1749", size = 25115, upload-time = "2025-09-06T15:40:12.44Z" }, +] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -1184,6 +1281,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3c/a7/f5c29e0e6faaccefcab607f672b176927144e9412c8183d21301ea2a6f6c/tox_uv-1.25.0-py3-none-any.whl", hash = "sha256:50cfe7795dcd49b2160d7d65b5ece8717f38cfedc242c852a40ec0a71e159bf7", size = 16431, upload-time = "2025-02-21T16:37:49.657Z" }, ] +[[package]] +name = "types-protobuf" +version = "6.30.2.20250914" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/d1/e12dad323fe6e2455b768828de288f60d5160f41dad5d31af8ef92a6acbb/types_protobuf-6.30.2.20250914.tar.gz", hash = "sha256:c2105326d0a52de3d33b84af0010d834ebbd4c17c50ff261fa82551ab75d9559", size = 62424, upload-time = "2025-09-14T02:56:00.798Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/c4/3fcb1f8e03456a8a33a5dfb9f9788b0a91023e5fad6a37d46fc6831629a7/types_protobuf-6.30.2.20250914-py3-none-any.whl", hash = "sha256:cfc24977c0f38cf2896d918a59faed7650eb983be6070343a6204ac8ac0a297e", size = 76546, upload-time = "2025-09-14T02:55:59.489Z" }, +] + [[package]] name = "types-pyyaml" version = "6.0.12.20250516" From a57ebab1b2c085ee5e43bb7545b1fe737e87b4ed Mon Sep 17 00:00:00 2001 From: Dan Hudlow Date: Tue, 23 Sep 2025 17:31:55 -0500 Subject: [PATCH 02/13] Convert CI from poetry to uv --- .github/workflows/ci.yaml | 43 ++++++++---------------------------- Makefile | 2 +- pyproject.toml | 11 ++++++--- src/celpy/__main__.py | 8 ++++--- type_check/lineprecision.txt | 8 +++---- 5 files changed, 27 insertions(+), 45 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 24c7e5d..eab7a2a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -12,15 +12,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-python@v1 + + - uses: astral-sh/setup-uv@v6 with: python-version: ${{ env.DEFAULT_PY_VERSION }} - - name: Linting - env: - RUFF_OUTPUT_FORMAT: github - run: | - pip install ruff - ruff check src + + - run: uv run tox -e lint Tests: needs: Lint @@ -41,48 +38,26 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Install poetry - shell: bash - run: pipx install poetry==${{ env.POETRY_VERSION }} - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 + - uses: astral-sh/setup-uv@v6 with: python-version: ${{ matrix.python-version }} - - name: Install Test Runner - run: | - python -m pip install --upgrade pip - pip install tox - - - name: Install Deps - run: | - tox -e ${{ matrix.tox-target }} --notest - - - name: Test - run: | - tox -e ${{ matrix.tox-target }} + - run: uv run tox -e ${{ matrix.tox-target }} Coverage: needs: Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - name: Install poetry - shell: bash - run: pipx install poetry==${{ env.POETRY_VERSION }} - - uses: actions/setup-python@v1 + - uses: astral-sh/setup-uv@v6 with: python-version: ${{ env.DEFAULT_PY_VERSION }} - - name: Install Test Runner - run: | - python -m pip install --upgrade pip - pip install tox + - run: uv run tox -e lint - - name: Upload Code Coverage - uses: codecov/codecov-action@v4 + - uses: codecov/codecov-action@v4 with: files: ./coverage.xml name: codecov diff --git a/Makefile b/Makefile index 16a711f..e93bb65 100644 --- a/Makefile +++ b/Makefile @@ -65,7 +65,7 @@ format: uv run ruff format src tools coverage: - uv run coverage report -m + uv run tox run -e coverage clean: rm -rf .mypy_cache .pytest_cache .ruff_cache .tox .Python bin include lib pip-selfcheck.json diff --git a/pyproject.toml b/pyproject.toml index 16c539a..7df84c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -118,12 +118,17 @@ commands = [["behave", "--tags=@conformance", "--tags=@wip", "-D", "runner='comp [tool.tox.env.lint] description = "Lint" +commands = [ + ["mypy", "--lineprecision-report", "type_check", "--strict", "--disable-error-code", "type-arg", "--show-error-codes", "src", "tools"], + ["ruff", "check", "src", "tools"], + ["ruff", "format", "--diff", "src", "tools"] +] + +[tool.tox.env.coverage] +description = "Coverage" commands = [ ["coverage", "erase"], ["pytest", "-vv", "-x", "--cov=src", "--cov-report=term-missing"], ["coverage", "html"], ["coverage", "xml"], - ["mypy", "--lineprecision-report", "type_check", "--strict", "--disable-error-code", "type-arg", "--show-error-codes", "src", "tools"], - ["ruff", "check", "src", "tools"], - ["ruff", "format", "--diff", "src", "tools"] ] diff --git a/src/celpy/__main__.py b/src/celpy/__main__.py index 33435f9..6a344c6 100644 --- a/src/celpy/__main__.py +++ b/src/celpy/__main__.py @@ -287,13 +287,15 @@ def stat(path: Union[Path, str]) -> Optional[celtypes.MapType]: try: extra = { "st_birthtime": celtypes.TimestampType( - datetime.datetime.fromtimestamp(status.st_birthtime) + datetime.datetime.fromtimestamp( + status.st_birthtime # type:ignore [attr-defined, unused-ignore] + ) ), "st_blksize": celtypes.IntType(status.st_blksize), "st_blocks": celtypes.IntType(status.st_blocks), - "st_flags": celtypes.IntType(status.st_flags), + "st_flags": celtypes.IntType(status.st_flags), # type: ignore [attr-defined, unused-ignore] "st_rdev": celtypes.IntType(status.st_rdev), - "st_gen": celtypes.IntType(status.st_gen), + "st_gen": celtypes.IntType(status.st_gen), # type: ignore [attr-defined, unused-ignore] } except AttributeError: # pragma: no cover extra = {} diff --git a/type_check/lineprecision.txt b/type_check/lineprecision.txt index 52dbbec..8deaaa6 100644 --- a/type_check/lineprecision.txt +++ b/type_check/lineprecision.txt @@ -1,13 +1,13 @@ Name Lines Precise Imprecise Any Empty Unanalyzed ------------------------------------------------------------------- celpy 351 79 12 4 256 0 -celpy.__main__ 549 242 12 63 232 0 +celpy.__main__ 551 243 14 61 233 0 celpy.adapter 163 34 3 9 111 6 celpy.c7nlib 1663 344 16 152 1151 0 -celpy.celparser 411 136 68 23 184 0 +celpy.celparser 411 137 68 23 183 0 celpy.celtypes 1483 386 15 235 810 37 -celpy.evaluation 3875 1131 252 244 2232 16 +celpy.evaluation 3875 1132 251 244 2232 16 gherkinize 911 502 12 86 297 14 test_gherkinize 5581 5014 135 4 428 0 xlate 0 0 0 0 0 0 -xlate.c7n_to_cel 1755 387 103 144 1115 6 +xlate.c7n_to_cel 1755 397 103 144 1105 6 From 3839ec5d4881f7c1849e80a233a011081846e4bf Mon Sep 17 00:00:00 2001 From: Dan Hudlow Date: Wed, 24 Sep 2025 10:36:22 -0500 Subject: [PATCH 03/13] Refine dependencies, links, and code style per code review --- pyproject.toml | 2 +- tools/README.rst | 2 +- tools/gherkinize.py | 8 ++++---- uv.lock | 10 +++++----- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 7df84c8..3488e4c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,7 +66,7 @@ dev = [ "types-pyyaml>=6.0.12.20250516", "google-re2-stubs", "sphinxcontrib-plantuml>=0.30", - "google-cel-spec-protocolbuffers-python==32.0.0.1.20250512201741+dffb8c8cf781", + "google-cel-spec-protocolbuffers-python==32.1.0.1.20250512201741+dffb8c8cf781", "google-cel-spec-protocolbuffers-pyi==32.1.0.1.20250512201741+dffb8c8cf781", "jinja2>=3.1.6", "pytest-cov>=6.3.0", diff --git a/tools/README.rst b/tools/README.rst index e8b2eae..a027ef4 100644 --- a/tools/README.rst +++ b/tools/README.rst @@ -47,7 +47,7 @@ Each ``.textproto`` file follows the ``SimpleTestFile`` `schema`_. These are deserialized into Python objects using an `SDK generated from the schemas`_. -.. _SDK generated from the schemas: https://buf.build/google/cel-spec/sdks/dffb8c8cf7814e96a7c06b6a5ac72fdc:protocolbuffers/python +.. _SDK generated from the schemas: https://buf.build/google/cel-spec/sdks/main:protocolbuffers/python These Python objects that represent the Protobuf data and then loaded into classes that represented Gherkin concepts (``features`` with comment-delineated sections, and ``scenarios`` with ``given``, diff --git a/tools/gherkinize.py b/tools/gherkinize.py index f65e9d7..4e2102d 100644 --- a/tools/gherkinize.py +++ b/tools/gherkinize.py @@ -510,8 +510,8 @@ def __eq__(self, other: Any) -> bool: if len(self.values) != len(other.values): return False - for i in range(0, len(self.values)): - if self.values[i] != other.values[i]: + for s, o in zip(self.values, other.values): + if s != o: return False return True @@ -697,8 +697,8 @@ def __eq__(self, other: Any) -> bool: if len(self.errors) != len(other.errors): return False - for i in range(0, len(self.errors)): - if self.errors[i] != other.errors[i]: + for s, o in zip(self.errors, other.errors): + if s != o: return False return True diff --git a/uv.lock b/uv.lock index 2cdf68c..ee7eb20 100644 --- a/uv.lock +++ b/uv.lock @@ -119,7 +119,7 @@ dev = [ { name = "behave", specifier = ">=1.2.6" }, { name = "coverage", specifier = ">=7.8.1" }, { name = "google-cel-spec-protocolbuffers-pyi", specifier = "==32.1.0.1.20250512201741+dffb8c8cf781" }, - { name = "google-cel-spec-protocolbuffers-python", specifier = "==32.0.0.1.20250512201741+dffb8c8cf781" }, + { name = "google-cel-spec-protocolbuffers-python", specifier = "==32.1.0.1.20250512201741+dffb8c8cf781" }, { name = "google-re2-stubs" }, { name = "jinja2", specifier = ">=3.1.6" }, { name = "mypy", specifier = ">=1.15.0" }, @@ -365,7 +365,7 @@ wheels = [ [[package]] name = "google-cel-spec-protocolbuffers-python" -version = "32.0.0.1.20250512201741+dffb8c8cf781" +version = "32.1.0.1.20250512201741+dffb8c8cf781" source = { registry = "https://buf.build/gen/python" } dependencies = [ { name = "google-cel-spec-protocolbuffers-pyi" }, @@ -373,7 +373,7 @@ dependencies = [ { name = "protobuf" }, ] wheels = [ - { url = "https://buf.build/gen/python/google-cel-spec-protocolbuffers-python/google_cel_spec_protocolbuffers_python-32.0.0.1.20250512201741+dffb8c8cf781-py3-none-any.whl" }, + { url = "https://buf.build/gen/python/google-cel-spec-protocolbuffers-python/google_cel_spec_protocolbuffers_python-32.1.0.1.20250512201741+dffb8c8cf781-py3-none-any.whl" }, ] [[package]] @@ -520,14 +520,14 @@ wheels = [ [[package]] name = "googleapis-googleapis-protocolbuffers-python" -version = "32.0.0.1.20250411203938+61b203b9a916" +version = "32.1.0.1.20250411203938+61b203b9a916" source = { registry = "https://buf.build/gen/python" } dependencies = [ { name = "googleapis-googleapis-protocolbuffers-pyi" }, { name = "protobuf" }, ] wheels = [ - { url = "https://buf.build/gen/python/googleapis-googleapis-protocolbuffers-python/googleapis_googleapis_protocolbuffers_python-32.0.0.1.20250411203938+61b203b9a916-py3-none-any.whl" }, + { url = "https://buf.build/gen/python/googleapis-googleapis-protocolbuffers-python/googleapis_googleapis_protocolbuffers_python-32.1.0.1.20250411203938+61b203b9a916-py3-none-any.whl" }, ] [[package]] From 936073c33e81eefd1fb1a63438843dd7724814fb Mon Sep 17 00:00:00 2001 From: Dan Hudlow Date: Wed, 24 Sep 2025 10:42:18 -0500 Subject: [PATCH 04/13] Add specific failure code to noqa comments --- tools/gherkinize.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/gherkinize.py b/tools/gherkinize.py index 4e2102d..e309e5f 100644 --- a/tools/gherkinize.py +++ b/tools/gherkinize.py @@ -12,19 +12,19 @@ from cel.expr import checked_pb2, eval_pb2, value_pb2 from cel.expr.conformance.test import simple_pb2 from cel.expr.conformance.proto2 import ( - test_all_types_pb2 as proto2_test_all_types, # noqa - test_all_types_extensions_pb2 as proto2_test_all_types_extensions, # noqa + test_all_types_pb2 as proto2_test_all_types, # noqa: F401 + test_all_types_extensions_pb2 as proto2_test_all_types_extensions, # noqa: F401 ) -from cel.expr.conformance.proto3 import test_all_types_pb2 as proto3_test_all_types # noqa +from cel.expr.conformance.proto3 import test_all_types_pb2 as proto3_test_all_types # noqa: F401 from google.protobuf import ( any_pb2, descriptor_pool, - descriptor, # noqa + descriptor, # noqa: F401 duration_pb2, message_factory, message, struct_pb2, - symbol_database, # noqa + symbol_database, # noqa: F401 text_format, timestamp_pb2, wrappers_pb2, From 81f5894010f46c49beb259b875cde6414c3fb524 Mon Sep 17 00:00:00 2001 From: Dan Hudlow Date: Fri, 26 Sep 2025 18:03:29 -0500 Subject: [PATCH 05/13] Evolve wip.txt into wip.toml --- pyproject.toml | 2 + tools/gherkinize.py | 153 ++++- tools/wip.toml | 1217 ++++++++++++++++++++++++++++++++++ tools/wip.txt | 958 -------------------------- type_check/lineprecision.txt | 2 +- uv.lock | 22 + 6 files changed, 1363 insertions(+), 991 deletions(-) create mode 100644 tools/wip.toml delete mode 100644 tools/wip.txt diff --git a/pyproject.toml b/pyproject.toml index 3488e4c..a94a57e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -72,6 +72,8 @@ dev = [ "pytest-cov>=6.3.0", "protobuf>=6.32.1", "types-protobuf>=6.30.2.20250914", + "types-toml>=0.10.8.20240310", + "toml>=0.10.2", ] [tool.tox] diff --git a/tools/gherkinize.py b/tools/gherkinize.py index e309e5f..0c88206 100644 --- a/tools/gherkinize.py +++ b/tools/gherkinize.py @@ -4,11 +4,15 @@ import logging from os import path from pathlib import Path -import re import sys -from typing import Any, Dict, List, Literal, Optional, Union, overload +from typing import Any, Literal, Optional, Union, overload from typing_extensions import Self from jinja2 import Environment, FileSystemLoader +import toml + +# Note that the `noqa: F401` annotations are because these imports are needed so +# that the descriptors end up in the default descriptor pool, but aren't used +# explicitly and thus would be otherwise flagged as unused imports. from cel.expr import checked_pb2, eval_pb2, value_pb2 from cel.expr.conformance.test import simple_pb2 from cel.expr.conformance.proto2 import ( @@ -39,28 +43,115 @@ pool = descriptor_pool.Default() # type: ignore [no-untyped-call] +ScenarioConfigInput = Union[str, list[str], dict[Literal["tags"], list[str]]] -class SkipList: - def __init__(self, path: str) -> None: - self.list = [] - logger.debug(f"Reading from {path}...") - blank = re.compile("^[ \t]*(#|$)") - with open(path, encoding="utf_8") as file_handle: - for line in file_handle: - if blank.match(line) is not None: - continue - stripped = line.split("#")[0].strip() - tuple = stripped.split(":") - if len(tuple) != 3: - logger.warning(f"Skipping invalid line: {line}") + +class ScenarioConfig: + def __init__( + self, section: "SectionConfig", name: str, input: ScenarioConfigInput + ) -> None: + self.section = section + self.name = name + self.tags: list[str] = [] + self.__has_logged_error_context = False + self.__load_tags(input) + + def __log_error_context(self) -> None: + if not self.__has_logged_error_context: + logger.error( + f"[{self.section.feature.name}.{self.section.name}.{self.name}]" + ) + + def __load_tags(self, input: ScenarioConfigInput) -> None: + if isinstance(input, str): + if not input.startswith("@"): + self.__log_error_context() + logger.error( + f' Skipping invalid tag (must start with "@"): {repr(input)}' + ) + logger.error(f" Did you mean {repr('@' + input)}?") + self.tags.append(input) + elif isinstance(input, list): + for tag in input: + if not isinstance(tag, str): + self.__log_error_context() + logger.error( + f" Skipping invalid tag (must be a string): {repr(tag)}" + ) continue - self.list.append(stripped) + self.__load_tags(tag) + elif "tags" in input and isinstance(input["tags"], list): + self.__load_tags(input["tags"]) + else: + self.__log_error_context() + logger.error(f" Skipping invalid scenario config: {repr(input)}") + - def should_skip(self, feature: str, section: str, scenario: str) -> bool: - return f"{feature}:{section}:{scenario}" in self.list +SectionConfigInput = dict[str, ScenarioConfigInput] -skip_list = SkipList(f"{path.dirname(__file__)}/wip.txt") +class SectionConfig: + def __init__( + self, feature: "FeatureConfig", name: str, input: SectionConfigInput + ) -> None: + self.feature = feature + self.name = name + self.scenarios = [] + if isinstance(input, dict): + for name, value in input.items(): + self.scenarios.append(ScenarioConfig(self, name, value)) + else: + logger.error(f"[{self.feature.name}.{self.name}]") + logger.error(f" Skipping invalid section config: {repr(input)}") + + def tags_for(self, scenario: str) -> list[str]: + for s in self.scenarios: + if s.name == scenario: + return s.tags + return [] + + +FeatureConfigInput = dict[str, SectionConfigInput] + + +class FeatureConfig: + def __init__(self, name: str, input: FeatureConfigInput) -> None: + self.name = name + self.sections = [] + if isinstance(input, dict): + for name, value in input.items(): + self.sections.append(SectionConfig(self, name, value)) + else: + logger.error(f"[{self.name}]") + logger.error(f" Skipping invalid feature config: {repr(input)}") + + def tags_for(self, section: str, scenario: str) -> list[str]: + for s in self.sections: + if s.name == section: + return s.tags_for(scenario) + return [] + + +class Config: + def __init__(self, path: str) -> None: + self.features: list[FeatureConfig] = [] + logger.debug(f"Reading from {repr(path)}...") + input = toml.load(path) + + if isinstance(input, dict): + for name, value in input.items(): + self.features.append(FeatureConfig(name, value)) + else: + logger.error(f"Could not read from {repr(path)}") + + def tags_for(self, feature: str, section: str, scenario: str) -> list[str]: + for f in self.features: + if f.name == feature: + return f.tags_for(section, scenario) + return [] + + +wip_config = Config(f"{path.dirname(__file__)}/wip.toml") class Result: @@ -490,7 +581,7 @@ class CELList(CELValue): type_name = "celpy.celtypes.ListType" def __init__( - self, source: Union[struct_pb2.ListValue, value_pb2.ListValue, List[CELValue]] + self, source: Union[struct_pb2.ListValue, value_pb2.ListValue, list[CELValue]] ) -> None: if isinstance(source, (struct_pb2.ListValue, value_pb2.ListValue)): self.values = [CELValue.from_proto(v) for v in source.values] @@ -524,7 +615,7 @@ class CELMap(CELValue): type_name = "celpy.celtypes.MapType" def __init__( - self, source: Union[struct_pb2.Struct, value_pb2.MapValue, Dict[str, CELValue]] + self, source: Union[struct_pb2.Struct, value_pb2.MapValue, dict[str, CELValue]] ) -> None: self.value = {} if isinstance(source, struct_pb2.Struct): @@ -656,7 +747,7 @@ def __repr__(self) -> str: class CELErrorSet(CELValue): type_name = "CELEvalError" - def __init__(self, message: Union[eval_pb2.ErrorSet, List[CELStatus], str]) -> None: + def __init__(self, message: Union[eval_pb2.ErrorSet, list[CELStatus], str]) -> None: self.errors = [] if isinstance(message, eval_pb2.ErrorSet): for status in message.errors: @@ -764,14 +855,12 @@ def __init__( logger.debug(f"Scenario {source.name}") self.name = source.name self.description = source.description - self.tag = ( - "@wip\n" - if skip_list.should_skip(feature.name, section.name, source.name) - else "" - ) - self.preconditions: List[str] = [] - self.events: List[str] = [] - self.outcomes: List[str] = [] + self.tag = "" + for tag in wip_config.tags_for(feature.name, section.name, source.name): + self.tag += f"{tag}\n" + self.preconditions: list[str] = [] + self.events: list[str] = [] + self.outcomes: list[str] = [] if source.disable_macros: self.given("disable_macros parameter is True") @@ -804,7 +893,7 @@ def then(self, event: str) -> Self: return self @property - def steps(self) -> List[str]: + def steps(self) -> list[str]: steps = [] if len(self.preconditions) > 0: steps.append(f"Given {self.preconditions[0]}") @@ -866,7 +955,7 @@ def write_to_file(self, path: Optional[Path]) -> None: print(gherkin) -def get_options(argv: List[str] = sys.argv[1:]) -> argparse.Namespace: +def get_options(argv: list[str] = sys.argv[1:]) -> argparse.Namespace: parser = argparse.ArgumentParser() parser.add_argument( "-v", diff --git a/tools/wip.toml b/tools/wip.toml new file mode 100644 index 0000000..dcd4a5e --- /dev/null +++ b/tools/wip.toml @@ -0,0 +1,1217 @@ +################################################################################ +# Each scenario is within a feature and a section; for example: # +# # +# feature section scenario # +# ---------- ------------ ------------------ # +# string_ext . ascii_casing . lowerascii_unicode # +# # +# The value for each scenario can be a string tag (which must begin with `@`), # +# an array of tags (each of which must begin with `@`) or a dictionary with a # +# `tags` key containing an array of tags (each of which... y'know). # +# # +# For example, each of the following are valid: # +# # +# [bindings_ext.bind] # +# bind_nested = "@wip" # +# boolean_literal = [ "@wip" ] # +# # +# [bindings_ext.bind.macro_exists] # +# tags = [ "@wip" ] # +# # +# In the future, dictionaries with additional features may be supported. # +################################################################################ + +[bindings_ext.bind] +bind_nested = "@wip" +boolean_literal = "@wip" +macro_exists = "@wip" +macro_not_exists = "@wip" +string_concat = "@wip" + +[block_ext.basic] +adjacent_macros = "@wip" +call = "@wip" +inclusion_list = "@wip" +inclusion_map = "@wip" +int_add = "@wip" +macro_shadowed_variable_1 = "@wip" +macro_shadowed_variable_2 = "@wip" +map_index = "@wip" +multiple_macros_1 = "@wip" +multiple_macros_2 = "@wip" +multiple_macros_3 = "@wip" +nested_list_construction = "@wip" +nested_macros_1 = "@wip" +nested_macros_2 = "@wip" +nested_map_construction = "@wip" +nested_ternary = "@wip" +optional_list = "@wip" +optional_map = "@wip" +optional_map_chained = "@wip" +optional_message = "@wip" +presence_test = "@wip" +presence_test_2 = "@wip" +presence_test_with_ternary = "@wip" +presence_test_with_ternary_2 = "@wip" +presence_test_with_ternary_3 = "@wip" +presence_test_with_ternary_nested = "@wip" +select = "@wip" +select_nested_1 = "@wip" +select_nested_2 = "@wip" +select_nested_message_map_index_1 = "@wip" +select_nested_message_map_index_2 = "@wip" +size_1 = "@wip" +size_2 = "@wip" +size_3 = "@wip" +size_4 = "@wip" +ternary = "@wip" +timestamp = "@wip" + +[comparisons.eq_literal] +eq_double_int = "@wip" +eq_double_uint = "@wip" +eq_dyn_double_int = "@wip" +eq_dyn_double_uint = "@wip" +eq_dyn_int_double = "@wip" +eq_dyn_int_uint = "@wip" +eq_dyn_json_null = "@wip" +eq_dyn_uint_double = "@wip" +eq_dyn_uint_int = "@wip" +eq_int_double = "@wip" +eq_int_uint = "@wip" +eq_list_elem_mixed_types = "@wip" +eq_list_mixed_type_numbers = "@wip" +eq_map_mixed_type_numbers = "@wip" +eq_map_value_mixed_types = "@wip" +eq_mixed_types = "@wip" +eq_uint_double = "@wip" +eq_uint_int = "@wip" +not_eq_double_int = "@wip" +not_eq_double_nan = "@wip" +not_eq_double_uint = "@wip" +not_eq_dyn_double_int = "@wip" +not_eq_dyn_double_null = "@wip" +not_eq_dyn_double_uint = "@wip" +not_eq_dyn_int_double = "@wip" +not_eq_dyn_int_null = "@wip" +not_eq_dyn_int_uint = "@wip" +not_eq_dyn_list_null = "@wip" +not_eq_dyn_map_null = "@wip" +not_eq_dyn_timestamp_null = "@wip" +not_eq_dyn_uint_double = "@wip" +not_eq_dyn_uint_int = "@wip" +not_eq_int_double = "@wip" +not_eq_int_double_nan = "@wip" +not_eq_int_uint = "@wip" +not_eq_list_elem_null = "@wip" +not_eq_list_mixed_type_numbers = "@wip" +not_eq_map_null = "@wip" +not_eq_uint_double = "@wip" +not_eq_uint_double_nan = "@wip" +not_eq_uint_int = "@wip" + +[comparisons.eq_wrapper] +eq_bool = "@wip" +eq_bool_empty = "@wip" +eq_bool_not_null = "@wip" +eq_bool_proto2_null = "@wip" +eq_bool_proto3_null = "@wip" +eq_bytes = "@wip" +eq_bytes_proto2_null = "@wip" +eq_bytes_proto3_null = "@wip" +eq_double = "@wip" +eq_double_empty = "@wip" +eq_double_not_null = "@wip" +eq_double_proto2_null = "@wip" +eq_double_proto3_null = "@wip" +eq_float = "@wip" +eq_float_empty = "@wip" +eq_float_not_null = "@wip" +eq_float_proto2_null = "@wip" +eq_float_proto3_null = "@wip" +eq_int32 = "@wip" +eq_int32_empty = "@wip" +eq_int32_not_null = "@wip" +eq_int32_proto2_null = "@wip" +eq_int32_proto3_null = "@wip" +eq_int64 = "@wip" +eq_int64_empty = "@wip" +eq_int64_not_null = "@wip" +eq_int64_proto2_null = "@wip" +eq_int64_proto3_null = "@wip" +eq_proto2_any_unpack_bytewise_fallback_equal = "@wip" +eq_proto2_any_unpack_bytewise_fallback_not_equal = "@wip" +eq_proto2_any_unpack_equal = "@wip" +eq_proto2_any_unpack_not_equal = "@wip" +eq_proto2_missing_fields_neq = "@wip" +eq_proto3_any_unpack_bytewise_fallback_equal = "@wip" +eq_proto3_any_unpack_bytewise_fallback_not_equal = "@wip" +eq_proto3_any_unpack_equal = "@wip" +eq_proto3_any_unpack_not_equal = "@wip" +eq_proto3_missing_fields_neq = "@wip" +eq_string = "@wip" +eq_string_empty = "@wip" +eq_string_proto2_null = "@wip" +eq_string_proto3_null = "@wip" +eq_uint32 = "@wip" +eq_uint32_empty = "@wip" +eq_uint32_not_null = "@wip" +eq_uint32_proto2_null = "@wip" +eq_uint32_proto3_null = "@wip" +eq_uint64 = "@wip" +eq_uint64_empty = "@wip" +eq_uint64_not_null = "@wip" +eq_uint64_proto2_null = "@wip" +eq_uint64_proto3_null = "@wip" + +[comparisons.gt_literal] +gt_dyn_int_double = "@wip" +gt_dyn_int_small_lossy_double_greater = "@wip" +gt_dyn_int_uint = "@wip" +not_gt_dyn_big_double_int = "@wip" +not_gt_dyn_int_big_double = "@wip" +not_gt_dyn_int_big_uint = "@wip" +not_gt_dyn_int_double = "@wip" +not_gt_dyn_int_small_lossy_double = "@wip" +not_gt_dyn_int_uint = "@wip" +not_gt_dyn_small_double_int = "@wip" +not_gt_dyn_small_int_uint = "@wip" + +[comparisons.gte_literal] +gte_dyn_int_big_lossy_double = "@wip" +gte_dyn_int_double = "@wip" +gte_dyn_int_small_lossy_double_equal = "@wip" +gte_dyn_int_small_lossy_double_greater = "@wip" +gte_dyn_int_uint = "@wip" +gte_dyn_small_double_int = "@wip" +not_gte_dyn_int_big_double = "@wip" +not_gte_dyn_int_big_uint = "@wip" +not_gte_dyn_int_double = "@wip" +not_gte_dyn_int_uint = "@wip" +not_gte_dyn_small_int_uint = "@wip" + +[comparisons.in_list_literal] +elem_in_mixed_type_list_cross_type = "@wip" + +[comparisons.in_map_literal] +key_in_mixed_key_type_map_cross_type = "@wip" + +[comparisons.lt_literal] +lt_dyn_int_big_lossy_double = "@wip" +lt_dyn_int_big_uint = "@wip" +lt_dyn_int_double = "@wip" +lt_dyn_int_uint = "@wip" +lt_dyn_small_int_uint = "@wip" +not_lt_dyn_int_big_lossy_double = "@wip" +not_lt_dyn_int_double = "@wip" +not_lt_dyn_int_small_double = "@wip" +not_lt_dyn_int_small_lossy_double = "@wip" +not_lt_dyn_int_uint = "@wip" +not_lt_dyn_small_double_int = "@wip" + +[comparisons.lte_literal] +lte_dyn_big_double_int = "@wip" +lte_dyn_int_big_double = "@wip" +lte_dyn_int_big_uint = "@wip" +lte_dyn_int_double = "@wip" +lte_dyn_int_small_lossy_double = "@wip" +lte_dyn_int_uint = "@wip" +lte_dyn_small_double_int = "@wip" +lte_dyn_small_int_uint = "@wip" +not_lte_dyn_int_double = "@wip" +not_lte_dyn_int_small_lossy_double_less = "@wip" +not_lte_dyn_int_uint = "@wip" + +[comparisons.ne_literal] +ne_double_int = "@wip" +ne_double_nan = "@wip" +ne_double_uint = "@wip" +ne_int_double = "@wip" +ne_int_uint = "@wip" +ne_mixed_types = "@wip" +ne_proto2_any_unpack = "@wip" +ne_proto2_any_unpack_bytewise_fallback = "@wip" +ne_proto3_any_unpack = "@wip" +ne_proto3_any_unpack_bytewise_fallback = "@wip" +ne_proto_different_types = "@wip" +ne_uint_double = "@wip" +not_ne_double_int = "@wip" +not_ne_double_nan = "@wip" +not_ne_double_uint = "@wip" +not_ne_int_double = "@wip" +not_ne_int_double_nan = "@wip" +not_ne_int_uint = "@wip" +not_ne_uint_double = "@wip" +not_ne_uint_double_nan = "@wip" + +[conversions.bool] +string_f = "@wip" +string_false_lowercase = "@wip" +string_false_pascalcase = "@wip" +string_false_uppercase = "@wip" +string_t = "@wip" +string_true_lowercase = "@wip" +string_true_pascalcase = "@wip" +string_true_uppercase = "@wip" + +[conversions.identity] +timestamp = "@wip" + +[conversions.int] +double_half_neg = "@wip" +double_half_pos = "@wip" +double_int_min_range = "@wip" +double_truncate = "@wip" +double_truncate_neg = "@wip" + +[conversions.uint] +double_half = "@wip" +double_truncate = "@wip" + +[dynamic.any] +literal = "@wip" + +[dynamic.bool] +literal = "@wip" +literal_empty = "@wip" + +[dynamic.bytes] +literal = "@wip" +literal_unicode = "@wip" + +[dynamic.double] +field_read_proto2_unset = "@wip" +field_read_proto3_unset = "@wip" +literal = "@wip" +literal_zero = "@wip" + +[dynamic.float] +field_assign_proto2_range = "@wip" +field_assign_proto2_round_to_zero = "@wip" +field_assign_proto2_subnorm = "@wip" +field_assign_proto3_range = "@wip" +field_assign_proto3_round_to_zero = "@wip" +field_read_proto2_unset = "@wip" +field_read_proto3_unset = "@wip" +literal = "@wip" +literal_not_double = "@wip" +literal_zero = "@wip" + +[dynamic.int32] +field_assign_proto2_range = "@wip" +field_assign_proto3_range = "@wip" +field_read_proto2_unset = "@wip" +field_read_proto3_unset = "@wip" +literal = "@wip" +literal_zero = "@wip" + +[dynamic.int64] +literal = "@wip" +literal_zero = "@wip" + +[dynamic.list] +literal = "@wip" +literal_empty = "@wip" + +[dynamic.string] +literal = "@wip" +literal_empty = "@wip" +literal_unicode = "@wip" + +[dynamic.struct] +field_assign_proto2_bad = "@wip" +field_assign_proto3_bad = "@wip" +literal = "@wip" +literal_empty = "@wip" +literal_no_field_access = "@wip" + +[dynamic.uint32] +field_assign_proto2_range = "@wip" +field_assign_proto3_range = "@wip" +field_read_proto2_unset = "@wip" +literal = "@wip" +literal_zero = "@wip" + +[dynamic.uint64] +field_read_proto2_unset = "@wip" +literal = "@wip" +literal_zero = "@wip" + +[dynamic.value_bool] +literal = "@wip" +literal_false = "@wip" + +[dynamic.value_list] +literal = "@wip" +literal_empty = "@wip" + +[dynamic.value_null] +field_read_proto2_unset = "@wip" +field_read_proto3_unset = "@wip" +literal = "@wip" +literal_unset = "@wip" + +[dynamic.value_number] +literal = "@wip" +literal_zero = "@wip" + +[dynamic.value_string] +literal = "@wip" +literal_empty = "@wip" + +[dynamic.value_struct] +literal = "@wip" +literal_empty = "@wip" + +[encoders_ext.decode] +hello = "@wip" +hello_without_padding = "@wip" + +[encoders_ext.encode] +hello = "@wip" + +[encoders_ext.round_trip] +hello = "@wip" + +[enums.legacy_proto2] +access_repeated_enum = "@wip" +arithmetic = "@wip" +assign_repeated_enum = "@wip" +assign_standalone_int_too_big = "@wip" +assign_standalone_int_too_neg = "@wip" +assign_standalone_name = "@wip" +comparison = "@wip" +enum_as_int = "@wip" +field_type = "@wip" +list_enum_as_list_int = "@wip" +literal_global = "@wip" +literal_nested = "@wip" +literal_zero = "@wip" +select_default = "@wip" +type_global = "@wip" +type_nested = "@wip" + +[enums.legacy_proto3] +access_repeated_enum = "@wip" +arithmetic = "@wip" +assign_repeated_enum = "@wip" +assign_standalone_int_too_big = "@wip" +assign_standalone_int_too_neg = "@wip" +assign_standalone_name = "@wip" +comparison = "@wip" +enum_as_int = "@wip" +field_type = "@wip" +list_enum_as_list_int = "@wip" +literal_global = "@wip" +literal_nested = "@wip" +literal_zero = "@wip" +select_default = "@wip" +type_global = "@wip" +type_nested = "@wip" + +[enums.strong_proto2] +assign_standalone_int = "@wip" +assign_standalone_name = "@wip" +comparison_false = "@wip" +comparison_true = "@wip" +convert_symbol_to_int = "@wip" + +[enums.strong_proto3] +assign_standalone_int = "@wip" +assign_standalone_int_big = "@wip" +assign_standalone_int_neg = "@wip" +assign_standalone_name = "@wip" +comparison_false = "@wip" +comparison_true = "@wip" +convert_symbol_to_int = "@wip" + +[fields.in] +mixed_numbers_and_keys_absent = "@wip" +mixed_numbers_and_keys_present = "@wip" + +[fields.map_fields] +map_key_mixed_numbers_double_key = "@wip" +map_key_mixed_numbers_int_key = "@wip" +map_key_mixed_numbers_uint_key = "@wip" + +[fields.quoted_map_fields] +field_access_dash = "@wip" +field_access_dot = "@wip" +field_access_slash = "@wip" +has_field_dash = "@wip" +has_field_dot = "@wip" +has_field_slash = "@wip" + +[lists.in] +double_in_ints = "@wip" +double_in_uints = "@wip" +int_in_doubles = "@wip" +int_in_uints = "@wip" +uint_in_doubles = "@wip" +uint_in_ints = "@wip" + +[lists.index] +zero_based_double = "@wip" + +[macros.exists] +list_elem_type_exhaustive = "@wip" +map_key_type_exhaustive = "@wip" + +[macros2.all] +list_elem_all_true = "@wip" +list_elem_error_exhaustive = "@wip" +list_elem_error_shortcircuit = "@wip" +list_elem_none_true = "@wip" +list_elem_some_true = "@wip" +list_elem_type_error_exhaustive = "@wip" +list_elem_type_exhaustive = "@wip" +list_elem_type_shortcircuit = "@wip" +list_empty = "@wip" +map_key = "@wip" + +[macros2.exists] +list_elem_all_true = "@wip" +list_elem_exists_error = "@wip" +list_elem_none_true = "@wip" +list_elem_some_true = "@wip" +list_elem_type_exhaustive = "@wip" +list_elem_type_shortcircuit = "@wip" +list_empty = "@wip" +map_key = "@wip" +map_key_type_exhaustive = "@wip" +map_key_type_shortcircuit = "@wip" +not_map_key = "@wip" + +[macros2.existsOne] +list_all = "@wip" +list_empty = "@wip" +list_many = "@wip" +list_none = "@wip" +list_one = "@wip" +list_one_false = "@wip" +list_one_true = "@wip" +map_one = "@wip" + +[macros2.transformList] +empty = "@wip" +empty_filter = "@wip" +many = "@wip" +many_filter = "@wip" +one = "@wip" +one_filter = "@wip" + +[macros2.transformMap] +empty = "@wip" +empty_filter = "@wip" +many = "@wip" +many_filter = "@wip" +one = "@wip" +one_filter = "@wip" + +[math_ext.abs] +negative_double = "@wip" +negative_int = "@wip" +positive_double = "@wip" +positive_int = "@wip" +uint = "@wip" + +[math_ext.bit_and] +int_int_intersect = "@wip" +int_int_intersect_neg = "@wip" +int_int_non_intersect = "@wip" +uint_uint_intersect = "@wip" +uint_uint_non_intersect = "@wip" + +[math_ext.bit_not] +int_negative = "@wip" +int_positive = "@wip" +int_zero = "@wip" +uint_positive = "@wip" +uint_zero = "@wip" + +[math_ext.bit_or] +int_int_positive = "@wip" +int_int_positive_negative = "@wip" +uint_uint = "@wip" + +[math_ext.bit_shift_left] +int = "@wip" +int_large_shift = "@wip" +int_negative_large_shift = "@wip" +uint = "@wip" +uint_large_shift = "@wip" + +[math_ext.bit_shift_right] +int = "@wip" +int_large_shift = "@wip" +int_negative = "@wip" +int_negative_large_shift = "@wip" +uint = "@wip" +uint_large_shift = "@wip" + +[math_ext.bit_xor] +int_int_positive = "@wip" +int_int_positive_negative = "@wip" +uint_uint = "@wip" + +[math_ext.ceil] +negative = "@wip" +positive = "@wip" + +[math_ext.floor] +negative = "@wip" +positive = "@wip" + +[math_ext.greatest_double_result] +binary_first_arg_double_max = "@wip" +binary_first_arg_double_min = "@wip" +binary_first_arg_greater = "@wip" +binary_same_args = "@wip" +binary_second_arg_double_max = "@wip" +binary_second_arg_double_min = "@wip" +binary_second_arg_greater = "@wip" +binary_with_int = "@wip" +binary_with_uint = "@wip" +quaternary_mixed = "@wip" +quaternary_mixed_array = "@wip" +quaternary_mixed_dyn_array = "@wip" +ternary_double_max = "@wip" +ternary_double_min = "@wip" +ternary_first_arg_greatest = "@wip" +ternary_same_args = "@wip" +ternary_third_arg_greatest = "@wip" +ternary_with_int = "@wip" +ternary_with_negatives = "@wip" +ternary_with_uint = "@wip" +unary_negative = "@wip" +unary_positive = "@wip" + +[math_ext.greatest_int_result] +binary_first_arg_greater = "@wip" +binary_first_arg_int_max = "@wip" +binary_first_arg_int_min = "@wip" +binary_same_args = "@wip" +binary_second_arg_greater = "@wip" +binary_second_arg_int_max = "@wip" +binary_second_arg_int_min = "@wip" +binary_with_decimal = "@wip" +binary_with_uint = "@wip" +quaternary_mixed = "@wip" +quaternary_mixed_array = "@wip" +quaternary_mixed_dyn_array = "@wip" +ternary_first_arg_greatest = "@wip" +ternary_int_max = "@wip" +ternary_int_min = "@wip" +ternary_same_args = "@wip" +ternary_third_arg_greatest = "@wip" +ternary_with_decimal = "@wip" +ternary_with_negatives = "@wip" +ternary_with_uint = "@wip" +unary_negative = "@wip" +unary_positive = "@wip" + +[math_ext.greatest_uint_result] +binary_first_arg_greater = "@wip" +binary_first_arg_uint_max = "@wip" +binary_same_args = "@wip" +binary_second_arg_greater = "@wip" +binary_second_arg_uint_max = "@wip" +binary_with_decimal = "@wip" +binary_with_int = "@wip" +quaternary_mixed = "@wip" +quaternary_mixed_array = "@wip" +quaternary_mixed_dyn_array = "@wip" +ternary_first_arg_greatest = "@wip" +ternary_int_max = "@wip" +ternary_same_args = "@wip" +ternary_third_arg_greatest = "@wip" +ternary_with_decimal = "@wip" +ternary_with_int = "@wip" +unary = "@wip" + +[math_ext.isFinite] +false_inf = "@wip" +false_nan = "@wip" +true = "@wip" + +[math_ext.isInf] +false = "@wip" +true = "@wip" + +[math_ext.isNaN] +false = "@wip" +true = "@wip" + +[math_ext.least_double_result] +binary_first_arg_double_max = "@wip" +binary_first_arg_double_min = "@wip" +binary_first_arg_least = "@wip" +binary_same_args = "@wip" +binary_second_arg_double_max = "@wip" +binary_second_arg_double_min = "@wip" +binary_second_arg_least = "@wip" +binary_with_int = "@wip" +binary_with_uint = "@wip" +quaternary_mixed = "@wip" +quaternary_mixed_array = "@wip" +quaternary_mixed_dyn_array = "@wip" +ternary_double_max = "@wip" +ternary_double_min = "@wip" +ternary_first_arg_least = "@wip" +ternary_same_args = "@wip" +ternary_third_arg_least = "@wip" +ternary_with_int = "@wip" +ternary_with_negatives = "@wip" +ternary_with_uint = "@wip" +unary_negative = "@wip" +unary_positive = "@wip" + +[math_ext.least_int_result] +binary_first_arg_int_max = "@wip" +binary_first_arg_int_min = "@wip" +binary_first_arg_least = "@wip" +binary_same_args = "@wip" +binary_second_arg_int_max = "@wip" +binary_second_arg_int_min = "@wip" +binary_second_arg_least = "@wip" +binary_with_decimal = "@wip" +binary_with_uint = "@wip" +quaternary_mixed = "@wip" +quaternary_mixed_array = "@wip" +quaternary_mixed_dyn_array = "@wip" +ternary_first_arg_least = "@wip" +ternary_int_max = "@wip" +ternary_int_min = "@wip" +ternary_same_args = "@wip" +ternary_third_arg_least = "@wip" +ternary_with_decimal = "@wip" +ternary_with_negatives = "@wip" +ternary_with_uint = "@wip" +unary_negative = "@wip" +unary_positive = "@wip" + +[math_ext.least_uint_result] +binary_first_arg_least = "@wip" +binary_first_arg_uint_max = "@wip" +binary_same_args = "@wip" +binary_second_arg_least = "@wip" +binary_second_arg_uint_max = "@wip" +binary_with_decimal = "@wip" +binary_with_int = "@wip" +quaternary_mixed = "@wip" +quaternary_mixed_array = "@wip" +quaternary_mixed_dyn_array = "@wip" +ternary_first_arg_least = "@wip" +ternary_same_args = "@wip" +ternary_third_arg_least = "@wip" +ternary_uint_max = "@wip" +ternary_with_decimal = "@wip" +ternary_with_int = "@wip" +unary = "@wip" + +[math_ext.round] +nan = "@wip" +negative_down = "@wip" +negative_mid = "@wip" +negative_up = "@wip" +positive_down = "@wip" +positive_up = "@wip" + +[math_ext.sign] +negative_double = "@wip" +negative_int = "@wip" +positive_double = "@wip" +positive_int = "@wip" +positive_uint = "@wip" +zero_double = "@wip" +zero_int = "@wip" +zero_uint = "@wip" + +[math_ext.trunc] +nan = "@wip" +negative = "@wip" +positive = "@wip" + +[optionals.optionals] +empty_list_optindex_hasValue = "@wip" +empty_map_optFlatMap_hasValue = "@wip" +empty_struct_optindex_hasValue = "@wip" +has_map_optindex = "@wip" +has_map_optindex_field = "@wip" +has_optional_ofNonZeroValue_struct_optional_ofNonZeroValue_map_optindex_field = "@wip" +list_optindex_value = "@wip" +map_absent_key_absent_field_none = "@wip" +map_empty_submap_optFlatMap_hasValue = "@wip" +map_key_mixed_numbers_double_key_optindex_value = "@wip" +map_key_mixed_numbers_int_key_optindex_value = "@wip" +map_key_mixed_numbers_uint_key_optindex_value = "@wip" +map_key_mixed_type_optindex_value = "@wip" +map_null_entry_hasValue = "@wip" +map_optindex_hasValue = "@wip" +map_optindex_optFlatMap_optional_ofNonZeroValue_hasValue = "@wip" +map_optional_entry_has = "@wip" +map_optional_has = "@wip" +map_submap_optFlatMap_value = "@wip" +map_submap_subkey_optFlatMap_value = "@wip" +map_undefined_entry_hasValue = "@wip" +none_optMap_hasValue = "@wip" +none_or_none_or_value = "@wip" +null = "@wip" +null_non_zero_value = "@wip" +optional_chaining_1 = "@wip" +optional_chaining_11 = "@wip" +optional_chaining_12 = "@wip" +optional_chaining_13 = "@wip" +optional_chaining_14 = "@wip" +optional_chaining_15 = "@wip" +optional_chaining_16 = "@wip" +optional_chaining_2 = "@wip" +optional_chaining_3 = "@wip" +optional_chaining_4 = "@wip" +optional_chaining_5 = "@wip" +optional_chaining_6 = "@wip" +optional_chaining_7 = "@wip" +optional_chaining_8 = "@wip" +optional_chaining_9 = "@wip" +optional_empty_list_optindex_hasValue = "@wip" +optional_empty_map_optindex_hasValue = "@wip" +optional_empty_struct_optindex_hasValue = "@wip" +optional_eq_int_int = "@wip" +optional_eq_int_none = "@wip" +optional_eq_none_int = "@wip" +optional_eq_none_none = "@wip" +optional_list_optindex_value = "@wip" +optional_ne_int_int = "@wip" +optional_ne_int_none = "@wip" +optional_ne_none_int = "@wip" +optional_ne_none_none = "@wip" +optional_none_optindex_hasValue = "@wip" +optional_none_optselect_hasValue = "@wip" +optional_ofNonZeroValue_or_optional_value = "@wip" +optional_ofNonZeroValue_struct_optional_ofNonZeroValue_map_optindex_field = "@wip" +optional_of_optMap_value = "@wip" +optional_struct_optindex_index_value = "@wip" +optional_struct_optindex_value = "@wip" +struct_list_optindex_field = "@wip" +struct_map_optindex_field = "@wip" +struct_map_optindex_field_nested = "@wip" +struct_optindex_value = "@wip" +struct_optional_ofNonZeroValue_map_optindex_field = "@wip" +ternary_optional_hasValue = "@wip" +type = "@wip" + +[parse.comments] +new_line_terminated = "@wip" + +[parse.whitespace] +carriage_returns = "@wip" +new_lines = "@wip" +new_pages = "@wip" +spaces = "@wip" +tabs = "@wip" + +[proto2.empty_field] +nested_message_subfield = "@wip" +repeated_enum = "@wip" +repeated_nested = "@wip" +repeated_scalar = "@wip" +scalar_no_default = "@wip" +scalar_with_default = "@wip" +wkt = "@wip" + +[proto2.extensions_get] +message_scoped_int64 = "@wip" +message_scoped_nested_enum_ext = "@wip" +message_scoped_nested_ext = "@wip" +message_scoped_repeated_test_all_types = "@wip" +package_scoped_int32 = "@wip" +package_scoped_nested_ext = "@wip" +package_scoped_repeated_test_all_types = "@wip" +package_scoped_test_all_types_ext = "@wip" +package_scoped_test_all_types_nested_enum_ext = "@wip" + +[proto2.extensions_has] +message_scoped_int64 = "@wip" +message_scoped_nested_enum_ext = "@wip" +message_scoped_nested_ext = "@wip" +message_scoped_repeated_test_all_types = "@wip" +package_scoped_int32 = "@wip" +package_scoped_nested_ext = "@wip" +package_scoped_repeated_test_all_types = "@wip" +package_scoped_test_all_types_ext = "@wip" +package_scoped_test_all_types_nested_enum_ext = "@wip" + +[proto2.has] +map_none_explicit = "@wip" +map_none_implicit = "@wip" +oneof_other_set = "@wip" +oneof_set = "@wip" +oneof_set_default = "@wip" +oneof_unset = "@wip" +optional_enum_set = "@wip" +optional_enum_set_zero = "@wip" +optional_enum_unset = "@wip" +optional_message_set = "@wip" +optional_message_unset = "@wip" +optional_unset_no_default = "@wip" +optional_unset_with_default = "@wip" +repeated_none_explicit = "@wip" +repeated_none_implicit = "@wip" +required = "@wip" +undefined = "@wip" + +[proto2.literal_singular] +float = "@wip" +float_eq_int = "@wip" +float_eq_uint = "@wip" +int32_eq_double = "@wip" +int32_eq_uint = "@wip" +int64_nocontainer = "@wip" +not_float_eq_int = "@wip" +not_float_eq_uint = "@wip" +not_int32_eq_double = "@wip" +not_int32_eq_uint = "@wip" +not_uint32_eq_double = "@wip" +not_uint32_eq_int = "@wip" +uint32_eq_double = "@wip" +uint32_eq_int = "@wip" + +[proto2.literal_wellknown] +struct = "@wip" + +[proto2.quoted_fields] +get_field_with_quoted_name = "@wip" +set_field_with_quoted_name = "@wip" + +[proto2.set_null] +list_value = "@wip" +map = "@wip" +repeated = "@wip" +single_scalar = "@wip" +single_struct = "@wip" + +[proto2_ext.get_ext] +message_scoped_int64 = "@wip" +message_scoped_nested_enum_ext = "@wip" +message_scoped_nested_ext = "@wip" +message_scoped_repeated_test_all_types = "@wip" +package_scoped_int32 = "@wip" +package_scoped_nested_ext = "@wip" +package_scoped_repeated_test_all_types = "@wip" +package_scoped_test_all_types_ext = "@wip" +package_scoped_test_all_types_nested_enum_ext = "@wip" + +[proto2_ext.has_ext] +message_scoped_int64 = "@wip" +message_scoped_nested_enum_ext = "@wip" +message_scoped_nested_ext = "@wip" +message_scoped_repeated_test_all_types = "@wip" +package_scoped_int32 = "@wip" +package_scoped_nested_ext = "@wip" +package_scoped_repeated_test_all_types = "@wip" +package_scoped_test_all_types_ext = "@wip" +package_scoped_test_all_types_nested_enum_ext = "@wip" + +[proto3.empty_field] +nested_message_subfield = "@wip" +repeated_enum = "@wip" +repeated_nested = "@wip" +repeated_scalar = "@wip" +scalar = "@wip" +wkt = "@wip" + +[proto3.has] +map_none_explicit = "@wip" +map_none_implicit = "@wip" +oneof_other_set = "@wip" +oneof_set = "@wip" +oneof_set_default = "@wip" +oneof_unset = "@wip" +repeated_none_explicit = "@wip" +repeated_none_implicit = "@wip" +single_enum_set = "@wip" +single_enum_unset = "@wip" +single_message_set = "@wip" +single_message_set_to_default = "@wip" +single_message_unset = "@wip" +single_set_to_default = "@wip" +single_unset = "@wip" +undefined = "@wip" + +[proto3.literal_singular] +float = "@wip" +int64_nocontainer = "@wip" + +[proto3.literal_wellknown] +struct = "@wip" + +[proto3.quoted_fields] +get_field = "@wip" +set_field = "@wip" + +[proto3.set_null] +list_value = "@wip" +map = "@wip" +repeated = "@wip" +single_scalar = "@wip" +single_struct = "@wip" + +[string_ext.ascii_casing] +lowerascii = "@wip" +lowerascii_unicode = "@wip" +lowerascii_unicode_with_space = "@wip" +upperascii = "@wip" +upperascii_unicode = "@wip" +upperascii_unicode_with_space = "@wip" + +[string_ext.char_at] +end_index = "@wip" +middle_index = "@wip" +multiple = "@wip" + +[string_ext.format] +"NaN support for decimal" = "@wip" +"NaN support for fixed-point" = "@wip" +"NaN support for scientific notation" = "@wip" +"binary formatting clause" = "@wip" +"binary formatting clause in a string variable" = "@wip" +"bool support for binary formatting" = "@wip" +"boolean support for %s" = "@wip" +"byte support with hexadecimal formatting clause" = "@wip" +"byte support with uppercase hexadecimal formatting clause" = "@wip" +"bytes support for string" = "@wip" +"default precision for fixed-point clause" = "@wip" +"default precision for fixed-point clause in a string variable" = "@wip" +"default precision for scientific notation" = "@wip" +"duration support for string" = "@wip" +"dyntype NaN/infinity support" = "@wip" +"dyntype support for duration" = "@wip" +"dyntype support for fixed-point formatting clause" = "@wip" +"dyntype support for hex formatting clause" = "@wip" +"dyntype support for hex formatting clause (uppercase)" = "@wip" +"dyntype support for integer formatting clause" = "@wip" +"dyntype support for integer formatting clause (unsigned)" = "@wip" +"dyntype support for lists" = "@wip" +"dyntype support for maps" = "@wip" +"dyntype support for numbers with string formatting clause" = "@wip" +"dyntype support for scientific notation" = "@wip" +"dyntype support for string formatting clause" = "@wip" +"dyntype support for timestamp" = "@wip" +"dyntype support for unsigned hex formatting clause" = "@wip" +"fixed point formatting clause" = "@wip" +"fixed point formatting clause in a string variable" = "@wip" +"int support for string" = "@wip" +"list support for string" = "@wip" +"lowercase hexadecimal formatting clause" = "@wip" +"map support (all key types)" = "@wip" +"map support for string" = "@wip" +"mid-string substitution" = "@wip" +"multiple substitutions" = "@wip" +"multiple substitutions in a string variable" = "@wip" +"negative infinity support for decimal" = "@wip" +"negative infinity support for fixed-point" = "@wip" +"negative infinity support for scientific notation" = "@wip" +no-op = "@wip" +"null support for string" = "@wip" +"octal formatting clause" = "@wip" +"percent escaping" = "@wip" +"percent sign escape sequence support" = "@wip" +"positive infinity support for decimal" = "@wip" +"positive infinity support for fixed-point" = "@wip" +"positive infinity support for scientific notation" = "@wip" +"scientific notation formatting clause" = "@wip" +"scientific notation formatting clause in a string variable" = "@wip" +"string substitution in a string variable" = "@wip" +"string support with hexadecimal formatting clause" = "@wip" +"string support with uppercase hexadecimal formatting clause" = "@wip" +"substitution inside escaped percent signs" = "@wip" +"substitution inside escaped percent signs in a string variable" = "@wip" +"substitution with one escaped percent sign on the left" = "@wip" +"substitution with one escaped percent sign on the right" = "@wip" +"timestamp support for string" = "@wip" +"type() support for string" = "@wip" +"uint support for binary formatting" = "@wip" +"uint support for decimal clause" = "@wip" +"uint support for octal formatting clause" = "@wip" +"unsigned support for hexadecimal formatting clause" = "@wip" +"uppercase hexadecimal formatting clause" = "@wip" + +[string_ext.index_of] +char_index = "@wip" +empty_index = "@wip" +nomatch = "@wip" +string_index = "@wip" +string_nomatch_index = "@wip" +string_with_space_fullmatch = "@wip" +string_with_space_index = "@wip" +unicode_char = "@wip" +unicode_char_index = "@wip" +unicode_string_index = "@wip" +unicode_string_nomatch_index = "@wip" + +[string_ext.join] +dash_separator = "@wip" +empty_separator = "@wip" +empty_string_dash_separator = "@wip" +empty_string_empty_separator = "@wip" + +[string_ext.last_index_of] +char_index = "@wip" +empty = "@wip" +empty_index = "@wip" +repeated_string = "@wip" +string = "@wip" +string_nomatch = "@wip" +string_with_space_fullmatch = "@wip" +string_with_space_string_index = "@wip" +string_with_space_string_nomatch = "@wip" +string_with_space_string_with_space_nomatch = "@wip" +unicode_char = "@wip" +unicode_char_index = "@wip" +unicode_string_index = "@wip" + +[string_ext.quote] +backspace = "@wip" +carriage_return = "@wip" +double_slash = "@wip" +empty_quote = "@wip" +ends_with = "@wip" +escaped = "@wip" +form_feed = "@wip" +horizontal_tab = "@wip" +mid_string_quote = "@wip" +multiline = "@wip" +printable_unicode = "@wip" +single_quote_with_double_quote = "@wip" +size_unicode_char = "@wip" +size_unicode_string = "@wip" +starts_with = "@wip" +two_escape_sequences = "@wip" +unicode = "@wip" +unicode_2 = "@wip" +unicode_code_points = "@wip" +verbatim = "@wip" +vertical_tab = "@wip" + +[string_ext.replace] +basic = "@wip" +chained = "@wip" +no_placeholder = "@wip" +unicode = "@wip" + +[string_ext.split] +empty = "@wip" +one_limit = "@wip" +unicode_negative_limit = "@wip" +zero_limit = "@wip" + +[string_ext.substring] +start = "@wip" +start_and_end = "@wip" +start_and_end_equal_value = "@wip" +start_with_max_length = "@wip" +unicode_start_and_end = "@wip" +unicode_start_and_end_equal_value = "@wip" + +[string_ext.trim] +blank_spaces_escaped_chars = "@wip" +unicode_no_trim = "@wip" +unicode_space_chars_1 = "@wip" +unicode_space_chars_2 = "@wip" +unicode_space_chars_3 = "@wip" + +[string_ext.type_errors] +charat_invalid_argument = "@wip" +replace_binary_invalid_argument = "@wip" +replace_binary_invalid_argument_2 = "@wip" +replace_quaternary_invalid_argument = "@wip" +replace_ternary_invalid_argument_2 = "@wip" +replace_ternary_invalid_argument_3 = "@wip" +replace_ternary_invalid_argument_4 = "@wip" +substring_binary_invalid_argument = "@wip" +substring_binary_invalid_argument_2 = "@wip" +substring_ternary_invalid_argument = "@wip" + +[string_ext.value_errors] +charat_out_of_range = "@wip" +substring_begin_index_out_of_range = "@wip" +substring_end_index_greater_than_begin_index = "@wip" +substring_end_index_out_of_range = "@wip" +substring_negative_index = "@wip" +substring_out_of_range = "@wip" + +[timestamps.duration_conversions] +type_comparison = "@wip" + +[timestamps.duration_converters] +get_milliseconds = "@wip" + +[timestamps.duration_range] +sub_over = "@wip" +sub_under = "@wip" + +[timestamps.timestamp_conversions] +toString_timestamp_nanos = "@wip" +type_comparison = "@wip" + +[timestamps.timestamp_range] +add_duration_nanos_over = "@wip" +add_duration_nanos_under = "@wip" +sub_time_duration_over = "@wip" +sub_time_duration_under = "@wip" + +[wrappers.bool] +to_any = "@wip" +to_json = "@wip" + +[wrappers.bytes] +to_any = "@wip" +to_json = "@wip" + +[wrappers.double] +to_any = "@wip" +to_json = "@wip" + +[wrappers.duration] +to_json = "@wip" + +[wrappers.empty] +to_json = "@wip" + +[wrappers.field_mask] +to_json = "@wip" + +[wrappers.float] +to_any = "@wip" +to_json = "@wip" +to_null = "@wip" + +[wrappers.int32] +to_any = "@wip" +to_json = "@wip" +to_null = "@wip" + +[wrappers.int64] +to_any = "@wip" +to_json_number = "@wip" +to_json_string = "@wip" + +[wrappers.string] +to_any = "@wip" +to_json = "@wip" + +[wrappers.timestamp] +to_json = "@wip" + +[wrappers.uint32] +to_any = "@wip" +to_json = "@wip" +to_null = "@wip" + +[wrappers.uint64] +to_any = "@wip" +to_json_number = "@wip" +to_json_string = "@wip" + +[wrappers.value] +default_to_json = "@wip" diff --git a/tools/wip.txt b/tools/wip.txt deleted file mode 100644 index 1fa8e3a..0000000 --- a/tools/wip.txt +++ /dev/null @@ -1,958 +0,0 @@ -bindings_ext:bind:bind_nested -bindings_ext:bind:boolean_literal -bindings_ext:bind:macro_exists -bindings_ext:bind:macro_not_exists -bindings_ext:bind:string_concat -block_ext:basic:adjacent_macros -block_ext:basic:call -block_ext:basic:inclusion_list -block_ext:basic:inclusion_map -block_ext:basic:int_add -block_ext:basic:macro_shadowed_variable_1 -block_ext:basic:macro_shadowed_variable_2 -block_ext:basic:map_index -block_ext:basic:multiple_macros_1 -block_ext:basic:multiple_macros_2 -block_ext:basic:multiple_macros_3 -block_ext:basic:nested_list_construction -block_ext:basic:nested_macros_1 -block_ext:basic:nested_macros_2 -block_ext:basic:nested_map_construction -block_ext:basic:nested_ternary -block_ext:basic:optional_list -block_ext:basic:optional_map -block_ext:basic:optional_map_chained -block_ext:basic:optional_message -block_ext:basic:presence_test -block_ext:basic:presence_test_2 -block_ext:basic:presence_test_with_ternary -block_ext:basic:presence_test_with_ternary_2 -block_ext:basic:presence_test_with_ternary_3 -block_ext:basic:presence_test_with_ternary_nested -block_ext:basic:select -block_ext:basic:select_nested_1 -block_ext:basic:select_nested_2 -block_ext:basic:select_nested_message_map_index_1 -block_ext:basic:select_nested_message_map_index_2 -block_ext:basic:size_1 -block_ext:basic:size_2 -block_ext:basic:size_3 -block_ext:basic:size_4 -block_ext:basic:ternary -block_ext:basic:timestamp -comparisons:eq_literal:eq_double_int -comparisons:eq_literal:eq_double_uint -comparisons:eq_literal:eq_dyn_double_int -comparisons:eq_literal:eq_dyn_double_uint -comparisons:eq_literal:eq_dyn_int_double -comparisons:eq_literal:eq_dyn_int_uint -comparisons:eq_literal:eq_dyn_json_null -comparisons:eq_literal:eq_dyn_uint_double -comparisons:eq_literal:eq_dyn_uint_int -comparisons:eq_literal:eq_int_double -comparisons:eq_literal:eq_int_uint -comparisons:eq_literal:eq_list_elem_mixed_types -comparisons:eq_literal:eq_list_mixed_type_numbers -comparisons:eq_literal:eq_map_mixed_type_numbers -comparisons:eq_literal:eq_map_value_mixed_types -comparisons:eq_literal:eq_mixed_types -comparisons:eq_literal:eq_uint_double -comparisons:eq_literal:eq_uint_int -comparisons:eq_literal:not_eq_double_int -comparisons:eq_literal:not_eq_double_nan -comparisons:eq_literal:not_eq_double_uint -comparisons:eq_literal:not_eq_dyn_double_int -comparisons:eq_literal:not_eq_dyn_double_null -comparisons:eq_literal:not_eq_dyn_double_uint -comparisons:eq_literal:not_eq_dyn_int_double -comparisons:eq_literal:not_eq_dyn_int_null -comparisons:eq_literal:not_eq_dyn_int_uint -comparisons:eq_literal:not_eq_dyn_list_null -comparisons:eq_literal:not_eq_dyn_map_null -comparisons:eq_literal:not_eq_dyn_timestamp_null -comparisons:eq_literal:not_eq_dyn_uint_double -comparisons:eq_literal:not_eq_dyn_uint_int -comparisons:eq_literal:not_eq_int_double -comparisons:eq_literal:not_eq_int_double_nan -comparisons:eq_literal:not_eq_int_uint -comparisons:eq_literal:not_eq_list_elem_null -comparisons:eq_literal:not_eq_list_mixed_type_numbers -comparisons:eq_literal:not_eq_map_null -comparisons:eq_literal:not_eq_uint_double -comparisons:eq_literal:not_eq_uint_double_nan -comparisons:eq_literal:not_eq_uint_int -comparisons:eq_wrapper:eq_bool_proto2_null -comparisons:eq_wrapper:eq_bool_proto3_null -comparisons:eq_wrapper:eq_bytes_proto2_null -comparisons:eq_wrapper:eq_bytes_proto3_null -comparisons:eq_wrapper:eq_double_not_null -comparisons:eq_wrapper:eq_double_proto2_null -comparisons:eq_wrapper:eq_double_proto3_null -comparisons:eq_wrapper:eq_float_not_null -comparisons:eq_wrapper:eq_float_proto2_null -comparisons:eq_wrapper:eq_float_proto3_null -comparisons:eq_wrapper:eq_int32_not_null -comparisons:eq_wrapper:eq_int32_proto2_null -comparisons:eq_wrapper:eq_int32_proto3_null -comparisons:eq_wrapper:eq_int64_not_null -comparisons:eq_wrapper:eq_int64_proto2_null -comparisons:eq_wrapper:eq_int64_proto3_null -comparisons:eq_wrapper:eq_proto2_any_unpack_bytewise_fallback_not_equal -comparisons:eq_wrapper:eq_proto2_any_unpack_not_equal -comparisons:eq_wrapper:eq_proto2_missing_fields_neq -comparisons:eq_wrapper:eq_proto3_any_unpack_bytewise_fallback_not_equal -comparisons:eq_wrapper:eq_proto3_any_unpack_not_equal -comparisons:eq_wrapper:eq_proto3_missing_fields_neq -comparisons:eq_wrapper:eq_string -comparisons:eq_wrapper:eq_string_empty -comparisons:eq_wrapper:eq_string_proto2_null -comparisons:eq_wrapper:eq_string_proto3_null -comparisons:eq_wrapper:eq_uint32_not_null -comparisons:eq_wrapper:eq_uint32_proto2_null -comparisons:eq_wrapper:eq_uint32_proto3_null -comparisons:eq_wrapper:eq_uint64_not_null -comparisons:eq_wrapper:eq_uint64_proto2_null -comparisons:eq_wrapper:eq_uint64_proto3_null -comparisons:gt_literal:gt_dyn_int_double -comparisons:gt_literal:gt_dyn_int_small_lossy_double_greater -comparisons:gt_literal:gt_dyn_int_uint -comparisons:gt_literal:not_gt_dyn_big_double_int -comparisons:gt_literal:not_gt_dyn_int_big_double -comparisons:gt_literal:not_gt_dyn_int_big_uint -comparisons:gt_literal:not_gt_dyn_int_double -comparisons:gt_literal:not_gt_dyn_int_small_lossy_double -comparisons:gt_literal:not_gt_dyn_int_uint -comparisons:gt_literal:not_gt_dyn_small_double_int -comparisons:gt_literal:not_gt_dyn_small_int_uint -comparisons:gte_literal:gte_dyn_int_big_lossy_double -comparisons:gte_literal:gte_dyn_int_double -comparisons:gte_literal:gte_dyn_int_small_lossy_double_equal -comparisons:gte_literal:gte_dyn_int_small_lossy_double_greater -comparisons:gte_literal:gte_dyn_int_uint -comparisons:gte_literal:gte_dyn_small_double_int -comparisons:gte_literal:not_gte_dyn_int_big_double -comparisons:gte_literal:not_gte_dyn_int_big_uint -comparisons:gte_literal:not_gte_dyn_int_double -comparisons:gte_literal:not_gte_dyn_int_uint -comparisons:gte_literal:not_gte_dyn_small_int_uint -comparisons:in_list_literal:elem_in_mixed_type_list_cross_type -comparisons:in_map_literal:key_in_mixed_key_type_map_cross_type -comparisons:lt_literal:lt_dyn_int_big_lossy_double -comparisons:lt_literal:lt_dyn_int_big_uint -comparisons:lt_literal:lt_dyn_int_double -comparisons:lt_literal:lt_dyn_int_uint -comparisons:lt_literal:lt_dyn_small_int_uint -comparisons:lt_literal:not_lt_dyn_int_big_lossy_double -comparisons:lt_literal:not_lt_dyn_int_double -comparisons:lt_literal:not_lt_dyn_int_small_double -comparisons:lt_literal:not_lt_dyn_int_small_lossy_double -comparisons:lt_literal:not_lt_dyn_int_uint -comparisons:lt_literal:not_lt_dyn_small_double_int -comparisons:lte_literal:lte_dyn_big_double_int -comparisons:lte_literal:lte_dyn_int_big_double -comparisons:lte_literal:lte_dyn_int_big_uint -comparisons:lte_literal:lte_dyn_int_double -comparisons:lte_literal:lte_dyn_int_small_lossy_double -comparisons:lte_literal:lte_dyn_int_uint -comparisons:lte_literal:lte_dyn_small_double_int -comparisons:lte_literal:lte_dyn_small_int_uint -comparisons:lte_literal:not_lte_dyn_int_double -comparisons:lte_literal:not_lte_dyn_int_small_lossy_double_less -comparisons:lte_literal:not_lte_dyn_int_uint -comparisons:ne_literal:ne_double_int -comparisons:ne_literal:ne_double_nan -comparisons:ne_literal:ne_double_uint -comparisons:ne_literal:ne_int_double -comparisons:ne_literal:ne_int_uint -comparisons:ne_literal:ne_mixed_types -comparisons:ne_literal:ne_proto_different_types -comparisons:ne_literal:ne_proto2_any_unpack_bytewise_fallback -comparisons:ne_literal:ne_proto3_any_unpack_bytewise_fallback -comparisons:ne_literal:ne_uint_double -comparisons:ne_literal:not_ne_double_int -comparisons:ne_literal:not_ne_double_nan -comparisons:ne_literal:not_ne_double_uint -comparisons:ne_literal:not_ne_int_double -comparisons:ne_literal:not_ne_int_double_nan -comparisons:ne_literal:not_ne_int_uint -comparisons:ne_literal:not_ne_uint_double -comparisons:ne_literal:not_ne_uint_double_nan -conversions:bool:string_f -conversions:bool:string_false_lowercase -conversions:bool:string_false_pascalcase -conversions:bool:string_false_uppercase -conversions:bool:string_t -conversions:bool:string_true_lowercase -conversions:bool:string_true_pascalcase -conversions:bool:string_true_uppercase -conversions:identity:timestamp -conversions:int:double_half_neg -conversions:int:double_half_pos -conversions:int:double_int_min_range -conversions:int:double_truncate -conversions:int:double_truncate_neg -conversions:uint:double_half -conversions:uint:double_truncate -dynamic:any:literal -dynamic:double:field_read_proto2_unset -dynamic:double:field_read_proto3_unset -dynamic:float:field_assign_proto2_range -dynamic:float:field_assign_proto2_round_to_zero -dynamic:float:field_assign_proto2_subnorm -dynamic:float:field_assign_proto2_subnorm -dynamic:float:field_assign_proto3_range -dynamic:float:field_assign_proto3_round_to_zero -dynamic:float:field_read_proto2_unset -dynamic:float:field_read_proto3_unset -dynamic:float:literal_not_double -dynamic:int32:field_read_proto2_unset -dynamic:int32:field_read_proto3_unset -dynamic:list:literal -dynamic:list:literal_empty -dynamic:string:literal -dynamic:string:literal_empty -dynamic:string:literal_unicode -dynamic:struct:field_assign_proto2_bad -dynamic:struct:field_assign_proto3_bad -dynamic:struct:literal -dynamic:struct:literal_empty -dynamic:struct:literal_no_field_access -dynamic:uint32:field_read_proto2_unset -dynamic:uint64:field_read_proto2_unset -dynamic:value_bool:literal -dynamic:value_bool:literal_false -dynamic:value_list:literal -dynamic:value_list:literal_empty -dynamic:value_null:field_read_proto2_unset -dynamic:value_null:field_read_proto3_unset -dynamic:value_null:literal -dynamic:value_null:literal_unset -dynamic:value_number:literal -dynamic:value_number:literal_zero -dynamic:value_string:literal -dynamic:value_string:literal_empty -dynamic:value_struct:literal -dynamic:value_struct:literal_empty -encoders_ext:decode:hello -encoders_ext:decode:hello_without_padding -encoders_ext:encode:hello -encoders_ext:round_trip:hello -enums:legacy_proto2:access_repeated_enum -enums:legacy_proto2:arithmetic -enums:legacy_proto2:assign_repeated_enum -enums:legacy_proto2:assign_standalone_int_too_big -enums:legacy_proto2:assign_standalone_int_too_neg -enums:legacy_proto2:assign_standalone_name -enums:legacy_proto2:comparison -enums:legacy_proto2:enum_as_int -enums:legacy_proto2:field_type -enums:legacy_proto2:list_enum_as_list_int -enums:legacy_proto2:literal_global -enums:legacy_proto2:literal_nested -enums:legacy_proto2:literal_zero -enums:legacy_proto2:select_default -enums:legacy_proto2:type_global -enums:legacy_proto2:type_nested -enums:legacy_proto3:access_repeated_enum -enums:legacy_proto3:arithmetic -enums:legacy_proto3:assign_repeated_enum -enums:legacy_proto3:assign_standalone_int_too_big -enums:legacy_proto3:assign_standalone_int_too_neg -enums:legacy_proto3:assign_standalone_name -enums:legacy_proto3:comparison -enums:legacy_proto3:enum_as_int -enums:legacy_proto3:field_type -enums:legacy_proto3:list_enum_as_list_int -enums:legacy_proto3:literal_global -enums:legacy_proto3:literal_nested -enums:legacy_proto3:literal_zero -enums:legacy_proto3:select_default -enums:legacy_proto3:type_global -enums:legacy_proto3:type_nested -enums:strong_proto2:assign_standalone_int -enums:strong_proto2:assign_standalone_name -enums:strong_proto2:comparison_false -enums:strong_proto2:convert_symbol_to_int -enums:strong_proto3:assign_standalone_int -enums:strong_proto3:assign_standalone_int_big -enums:strong_proto3:assign_standalone_int_neg -enums:strong_proto3:assign_standalone_name -enums:strong_proto3:comparison_false -enums:strong_proto3:convert_symbol_to_int -fields:in:mixed_numbers_and_keys_absent -fields:in:mixed_numbers_and_keys_present -fields:map_fields:map_key_mixed_numbers_double_key -fields:map_fields:map_key_mixed_numbers_int_key -fields:map_fields:map_key_mixed_numbers_uint_key -fields:quoted_map_fields:field_access_dash -fields:quoted_map_fields:field_access_dot -fields:quoted_map_fields:field_access_slash -fields:quoted_map_fields:has_field_dash -fields:quoted_map_fields:has_field_dot -fields:quoted_map_fields:has_field_slash -lists:in:double_in_ints -lists:in:double_in_uints -lists:in:int_in_doubles -lists:in:int_in_uints -lists:in:uint_in_doubles -lists:in:uint_in_ints -lists:index:zero_based_double -macros:exists:list_elem_type_exhaustive -macros:exists:map_key_type_exhaustive -macros2:all:list_elem_all_true -macros2:all:list_elem_error_exhaustive -macros2:all:list_elem_error_shortcircuit -macros2:all:list_elem_none_true -macros2:all:list_elem_some_true -macros2:all:list_elem_type_error_exhaustive -macros2:all:list_elem_type_exhaustive -macros2:all:list_elem_type_shortcircuit -macros2:all:list_empty -macros2:all:map_key -macros2:exists:list_elem_all_true -macros2:exists:list_elem_exists_error -macros2:exists:list_elem_none_true -macros2:exists:list_elem_some_true -macros2:exists:list_elem_type_exhaustive -macros2:exists:list_elem_type_shortcircuit -macros2:exists:list_empty -macros2:exists:map_key -macros2:exists:map_key_type_exhaustive -macros2:exists:map_key_type_shortcircuit -macros2:exists:not_map_key -macros2:existsOne:list_all -macros2:existsOne:list_empty -macros2:existsOne:list_many -macros2:existsOne:list_none -macros2:existsOne:list_one -macros2:existsOne:list_one_false -macros2:existsOne:list_one_true -macros2:existsOne:map_one -macros2:transformList:empty -macros2:transformList:empty_filter -macros2:transformList:many -macros2:transformList:many_filter -macros2:transformList:one -macros2:transformList:one_filter -macros2:transformMap:empty -macros2:transformMap:empty_filter -macros2:transformMap:many -macros2:transformMap:many_filter -macros2:transformMap:one -macros2:transformMap:one_filter -math_ext:abs:negative_double -math_ext:abs:negative_int -math_ext:abs:positive_double -math_ext:abs:positive_int -math_ext:abs:uint -math_ext:bit_and:int_int_intersect -math_ext:bit_and:int_int_intersect_neg -math_ext:bit_and:int_int_non_intersect -math_ext:bit_and:uint_uint_intersect -math_ext:bit_and:uint_uint_non_intersect -math_ext:bit_not:int_negative -math_ext:bit_not:int_positive -math_ext:bit_not:int_zero -math_ext:bit_not:uint_positive -math_ext:bit_not:uint_zero -math_ext:bit_or:int_int_positive -math_ext:bit_or:int_int_positive_negative -math_ext:bit_or:uint_uint -math_ext:bit_shift_left:int -math_ext:bit_shift_left:int_large_shift -math_ext:bit_shift_left:int_negative_large_shift -math_ext:bit_shift_left:uint -math_ext:bit_shift_left:uint_large_shift -math_ext:bit_shift_right:int -math_ext:bit_shift_right:int_large_shift -math_ext:bit_shift_right:int_negative -math_ext:bit_shift_right:int_negative_large_shift -math_ext:bit_shift_right:uint -math_ext:bit_shift_right:uint_large_shift -math_ext:bit_xor:int_int_positive -math_ext:bit_xor:int_int_positive_negative -math_ext:bit_xor:uint_uint -math_ext:ceil:negative -math_ext:ceil:positive -math_ext:floor:negative -math_ext:floor:positive -math_ext:greatest_double_result:binary_first_arg_double_max -math_ext:greatest_double_result:binary_first_arg_double_min -math_ext:greatest_double_result:binary_first_arg_greater -math_ext:greatest_double_result:binary_same_args -math_ext:greatest_double_result:binary_second_arg_double_max -math_ext:greatest_double_result:binary_second_arg_double_min -math_ext:greatest_double_result:binary_second_arg_greater -math_ext:greatest_double_result:binary_with_int -math_ext:greatest_double_result:binary_with_uint -math_ext:greatest_double_result:quaternary_mixed -math_ext:greatest_double_result:quaternary_mixed_array -math_ext:greatest_double_result:quaternary_mixed_dyn_array -math_ext:greatest_double_result:ternary_double_max -math_ext:greatest_double_result:ternary_double_min -math_ext:greatest_double_result:ternary_first_arg_greatest -math_ext:greatest_double_result:ternary_same_args -math_ext:greatest_double_result:ternary_third_arg_greatest -math_ext:greatest_double_result:ternary_with_int -math_ext:greatest_double_result:ternary_with_negatives -math_ext:greatest_double_result:ternary_with_uint -math_ext:greatest_double_result:unary_negative -math_ext:greatest_double_result:unary_positive -math_ext:greatest_int_result:binary_first_arg_greater -math_ext:greatest_int_result:binary_first_arg_int_max -math_ext:greatest_int_result:binary_first_arg_int_min -math_ext:greatest_int_result:binary_same_args -math_ext:greatest_int_result:binary_second_arg_greater -math_ext:greatest_int_result:binary_second_arg_int_max -math_ext:greatest_int_result:binary_second_arg_int_min -math_ext:greatest_int_result:binary_with_decimal -math_ext:greatest_int_result:binary_with_uint -math_ext:greatest_int_result:quaternary_mixed -math_ext:greatest_int_result:quaternary_mixed_array -math_ext:greatest_int_result:quaternary_mixed_dyn_array -math_ext:greatest_int_result:ternary_first_arg_greatest -math_ext:greatest_int_result:ternary_int_max -math_ext:greatest_int_result:ternary_int_min -math_ext:greatest_int_result:ternary_same_args -math_ext:greatest_int_result:ternary_third_arg_greatest -math_ext:greatest_int_result:ternary_with_decimal -math_ext:greatest_int_result:ternary_with_negatives -math_ext:greatest_int_result:ternary_with_uint -math_ext:greatest_int_result:unary_negative -math_ext:greatest_int_result:unary_positive -math_ext:greatest_uint_result:binary_first_arg_greater -math_ext:greatest_uint_result:binary_first_arg_uint_max -math_ext:greatest_uint_result:binary_same_args -math_ext:greatest_uint_result:binary_second_arg_greater -math_ext:greatest_uint_result:binary_second_arg_uint_max -math_ext:greatest_uint_result:binary_with_decimal -math_ext:greatest_uint_result:binary_with_int -math_ext:greatest_uint_result:quaternary_mixed -math_ext:greatest_uint_result:quaternary_mixed_array -math_ext:greatest_uint_result:quaternary_mixed_dyn_array -math_ext:greatest_uint_result:ternary_first_arg_greatest -math_ext:greatest_uint_result:ternary_int_max -math_ext:greatest_uint_result:ternary_same_args -math_ext:greatest_uint_result:ternary_third_arg_greatest -math_ext:greatest_uint_result:ternary_with_decimal -math_ext:greatest_uint_result:ternary_with_int -math_ext:greatest_uint_result:unary -math_ext:isFinite:false_inf -math_ext:isFinite:false_nan -math_ext:isFinite:true -math_ext:isInf:false -math_ext:isInf:true -math_ext:isNaN:false -math_ext:isNaN:true -math_ext:least_double_result:binary_first_arg_double_max -math_ext:least_double_result:binary_first_arg_double_min -math_ext:least_double_result:binary_first_arg_least -math_ext:least_double_result:binary_same_args -math_ext:least_double_result:binary_second_arg_double_max -math_ext:least_double_result:binary_second_arg_double_min -math_ext:least_double_result:binary_second_arg_least -math_ext:least_double_result:binary_with_int -math_ext:least_double_result:binary_with_uint -math_ext:least_double_result:quaternary_mixed -math_ext:least_double_result:quaternary_mixed_array -math_ext:least_double_result:quaternary_mixed_dyn_array -math_ext:least_double_result:ternary_double_max -math_ext:least_double_result:ternary_double_min -math_ext:least_double_result:ternary_first_arg_least -math_ext:least_double_result:ternary_same_args -math_ext:least_double_result:ternary_third_arg_least -math_ext:least_double_result:ternary_with_int -math_ext:least_double_result:ternary_with_negatives -math_ext:least_double_result:ternary_with_uint -math_ext:least_double_result:unary_negative -math_ext:least_double_result:unary_positive -math_ext:least_int_result:binary_first_arg_int_max -math_ext:least_int_result:binary_first_arg_int_min -math_ext:least_int_result:binary_first_arg_least -math_ext:least_int_result:binary_same_args -math_ext:least_int_result:binary_second_arg_int_max -math_ext:least_int_result:binary_second_arg_int_min -math_ext:least_int_result:binary_second_arg_least -math_ext:least_int_result:binary_with_decimal -math_ext:least_int_result:binary_with_uint -math_ext:least_int_result:quaternary_mixed -math_ext:least_int_result:quaternary_mixed_array -math_ext:least_int_result:quaternary_mixed_dyn_array -math_ext:least_int_result:ternary_first_arg_least -math_ext:least_int_result:ternary_int_max -math_ext:least_int_result:ternary_int_min -math_ext:least_int_result:ternary_same_args -math_ext:least_int_result:ternary_third_arg_least -math_ext:least_int_result:ternary_with_decimal -math_ext:least_int_result:ternary_with_negatives -math_ext:least_int_result:ternary_with_uint -math_ext:least_int_result:unary_negative -math_ext:least_int_result:unary_positive -math_ext:least_uint_result:binary_first_arg_least -math_ext:least_uint_result:binary_first_arg_uint_max -math_ext:least_uint_result:binary_same_args -math_ext:least_uint_result:binary_second_arg_least -math_ext:least_uint_result:binary_second_arg_uint_max -math_ext:least_uint_result:binary_with_decimal -math_ext:least_uint_result:binary_with_int -math_ext:least_uint_result:quaternary_mixed -math_ext:least_uint_result:quaternary_mixed_array -math_ext:least_uint_result:quaternary_mixed_dyn_array -math_ext:least_uint_result:ternary_first_arg_least -math_ext:least_uint_result:ternary_same_args -math_ext:least_uint_result:ternary_third_arg_least -math_ext:least_uint_result:ternary_uint_max -math_ext:least_uint_result:ternary_with_decimal -math_ext:least_uint_result:ternary_with_int -math_ext:least_uint_result:unary -math_ext:round:nan -math_ext:round:negative_down -math_ext:round:negative_mid -math_ext:round:negative_up -math_ext:round:positive_down -math_ext:round:positive_up -math_ext:sign:negative_double -math_ext:sign:negative_int -math_ext:sign:positive_double -math_ext:sign:positive_int -math_ext:sign:positive_uint -math_ext:sign:zero_double -math_ext:sign:zero_int -math_ext:sign:zero_uint -math_ext:trunc:nan -math_ext:trunc:negative -math_ext:trunc:positive -optionals:optionals:empty_list_optindex_hasValue -optionals:optionals:empty_map_optFlatMap_hasValue -optionals:optionals:empty_struct_optindex_hasValue -optionals:optionals:has_map_optindex -optionals:optionals:has_map_optindex_field -optionals:optionals:has_optional_ofNonZeroValue_struct_optional_ofNonZeroValue_map_optindex_field -optionals:optionals:list_optindex_value -optionals:optionals:map_absent_key_absent_field_none -optionals:optionals:map_empty_submap_optFlatMap_hasValue -optionals:optionals:map_key_mixed_numbers_double_key_optindex_value -optionals:optionals:map_key_mixed_numbers_int_key_optindex_value -optionals:optionals:map_key_mixed_numbers_uint_key_optindex_value -optionals:optionals:map_key_mixed_type_optindex_value -optionals:optionals:map_null_entry_hasValue -optionals:optionals:map_optindex_hasValue -optionals:optionals:map_optindex_optFlatMap_optional_ofNonZeroValue_hasValue -optionals:optionals:map_optional_entry_has -optionals:optionals:map_optional_has -optionals:optionals:map_submap_optFlatMap_value -optionals:optionals:map_submap_subkey_optFlatMap_value -optionals:optionals:map_undefined_entry_hasValue -optionals:optionals:none_optMap_hasValue -optionals:optionals:none_or_none_or_value -optionals:optionals:null -optionals:optionals:null_non_zero_value -optionals:optionals:optional_chaining_1 -optionals:optionals:optional_chaining_2 -optionals:optionals:optional_chaining_3 -optionals:optionals:optional_chaining_4 -optionals:optionals:optional_chaining_5 -optionals:optionals:optional_chaining_6 -optionals:optionals:optional_chaining_7 -optionals:optionals:optional_chaining_8 -optionals:optionals:optional_chaining_9 -optionals:optionals:optional_chaining_11 -optionals:optionals:optional_chaining_12 -optionals:optionals:optional_chaining_13 -optionals:optionals:optional_chaining_14 -optionals:optionals:optional_chaining_15 -optionals:optionals:optional_chaining_16 -optionals:optionals:optional_empty_list_optindex_hasValue -optionals:optionals:optional_empty_map_optindex_hasValue -optionals:optionals:optional_empty_struct_optindex_hasValue -optionals:optionals:optional_list_optindex_value -optionals:optionals:optional_none_optindex_hasValue -optionals:optionals:optional_none_optselect_hasValue -optionals:optionals:optional_of_optMap_value -optionals:optionals:optional_ofNonZeroValue_or_optional_value -optionals:optionals:optional_ofNonZeroValue_struct_optional_ofNonZeroValue_map_optindex_field -optionals:optionals:optional_struct_optindex_index_value -optionals:optionals:optional_struct_optindex_value -optionals:optionals:struct_list_optindex_field -optionals:optionals:struct_map_optindex_field -optionals:optionals:struct_map_optindex_field_nested -optionals:optionals:struct_optindex_value -optionals:optionals:struct_optional_ofNonZeroValue_map_optindex_field -optionals:optionals:ternary_optional_hasValue -optionals:optionals:type -parse:comments:new_line_terminated -parse:whitespace:carriage_returns -parse:whitespace:new_lines -parse:whitespace:new_pages -parse:whitespace:spaces -parse:whitespace:tabs -proto2_ext:get_ext:message_scoped_int64 -proto2_ext:get_ext:message_scoped_nested_enum_ext -proto2_ext:get_ext:message_scoped_nested_ext -proto2_ext:get_ext:message_scoped_repeated_test_all_types -proto2_ext:get_ext:package_scoped_int32 -proto2_ext:get_ext:package_scoped_nested_ext -proto2_ext:get_ext:package_scoped_repeated_test_all_types -proto2_ext:get_ext:package_scoped_test_all_types_ext -proto2_ext:get_ext:package_scoped_test_all_types_nested_enum_ext -proto2_ext:has_ext:message_scoped_int64 -proto2_ext:has_ext:message_scoped_nested_enum_ext -proto2_ext:has_ext:message_scoped_nested_ext -proto2_ext:has_ext:message_scoped_repeated_test_all_types -proto2_ext:has_ext:package_scoped_int32 -proto2_ext:has_ext:package_scoped_nested_ext -proto2_ext:has_ext:package_scoped_repeated_test_all_types -proto2_ext:has_ext:package_scoped_test_all_types_ext -proto2_ext:has_ext:package_scoped_test_all_types_nested_enum_ext -proto2:empty_field:nested_message_subfield -proto2:empty_field:repeated_enum -proto2:empty_field:repeated_nested -proto2:empty_field:repeated_scalar -proto2:empty_field:scalar_no_default -proto2:empty_field:scalar_with_default -proto2:empty_field:wkt -proto2:extensions_get:message_scoped_int64 -proto2:extensions_get:message_scoped_nested_enum_ext -proto2:extensions_get:message_scoped_nested_ext -proto2:extensions_get:message_scoped_repeated_test_all_types -proto2:extensions_get:package_scoped_int32 -proto2:extensions_get:package_scoped_nested_ext -proto2:extensions_get:package_scoped_repeated_test_all_types -proto2:extensions_get:package_scoped_test_all_types_ext -proto2:extensions_get:package_scoped_test_all_types_nested_enum_ext -proto2:extensions_has:message_scoped_int64 -proto2:extensions_has:message_scoped_nested_enum_ext -proto2:extensions_has:message_scoped_nested_ext -proto2:extensions_has:message_scoped_repeated_test_all_types -proto2:extensions_has:package_scoped_int32 -proto2:extensions_has:package_scoped_nested_ext -proto2:extensions_has:package_scoped_repeated_test_all_types -proto2:extensions_has:package_scoped_test_all_types_ext -proto2:extensions_has:package_scoped_test_all_types_nested_enum_ext -proto2:has:map_none_explicit -proto2:has:map_none_implicit -proto2:has:oneof_set -proto2:has:oneof_set_default -proto2:has:oneof_unset -proto2:has:optional_enum_set -proto2:has:optional_enum_set_zero -proto2:has:optional_message_set -proto2:has:optional_message_unset -proto2:has:optional_unset_no_default -proto2:has:optional_unset_with_default -proto2:has:repeated_none_explicit -proto2:has:repeated_none_implicit -proto2:has:required -proto2:has:undefined -proto2:literal_singular:float -proto2:literal_singular:float_eq_int -proto2:literal_singular:float_eq_uint -proto2:literal_singular:int32_eq_double -proto2:literal_singular:int32_eq_uint -proto2:literal_singular:int64_nocontainer -proto2:literal_singular:not_float_eq_int -proto2:literal_singular:not_float_eq_uint -proto2:literal_singular:not_int32_eq_double -proto2:literal_singular:not_int32_eq_uint -proto2:literal_singular:not_uint32_eq_double -proto2:literal_singular:not_uint32_eq_int -proto2:literal_singular:uint32_eq_double -proto2:literal_singular:uint32_eq_int -proto2:literal_wellknown:struct -proto2:quoted_fields:get_field_with_quoted_name -proto2:quoted_fields:set_field_with_quoted_name -proto2:set_null:list_value -proto2:set_null:map -proto2:set_null:repeated -proto2:set_null:single_scalar -proto2:set_null:single_struct -proto3:empty_field:nested_message_subfield -proto3:empty_field:repeated_enum -proto3:empty_field:repeated_nested -proto3:empty_field:repeated_scalar -proto3:empty_field:scalar -proto3:empty_field:wkt -proto3:has:map_none_explicit -proto3:has:map_none_implicit -proto3:has:oneof_set -proto3:has:oneof_set_default -proto3:has:oneof_unset -proto3:has:repeated_none_explicit -proto3:has:repeated_none_implicit -proto3:has:single_enum_set -proto3:has:single_message_set -proto3:has:single_message_set_to_default -proto3:has:single_message_unset -proto3:has:single_set_to_default -proto3:has:single_unset -proto3:has:undefined -proto3:literal_singular:float -proto3:literal_singular:int64_nocontainer -proto3:literal_wellknown:struct -proto3:quoted_fields:get_field -proto3:quoted_fields:set_field -proto3:set_null:list_value -proto3:set_null:map -proto3:set_null:repeated -proto3:set_null:single_scalar -proto3:set_null:single_struct -string_ext:ascii_casing:lowerascii -string_ext:ascii_casing:lowerascii_unicode -string_ext:ascii_casing:lowerascii_unicode_with_space -string_ext:ascii_casing:upperascii -string_ext:ascii_casing:upperascii_unicode -string_ext:ascii_casing:upperascii_unicode_with_space -string_ext:char_at:end_index -string_ext:char_at:middle_index -string_ext:char_at:multiple -string_ext:format:binary formatting clause -string_ext:format:binary formatting clause in a string variable -string_ext:format:bool support for binary formatting -string_ext:format:boolean support for %s -string_ext:format:byte support with hexadecimal formatting clause -string_ext:format:byte support with uppercase hexadecimal formatting clause -string_ext:format:bytes support for string -string_ext:format:default precision for fixed-point clause -string_ext:format:default precision for fixed-point clause in a string variable -string_ext:format:default precision for scientific notation -string_ext:format:duration support for string -string_ext:format:dyntype NaN/infinity support -string_ext:format:dyntype support for duration -string_ext:format:dyntype support for fixed-point formatting clause -string_ext:format:dyntype support for hex formatting clause -string_ext:format:dyntype support for hex formatting clause (uppercase) -string_ext:format:dyntype support for integer formatting clause -string_ext:format:dyntype support for integer formatting clause (unsigned) -string_ext:format:dyntype support for lists -string_ext:format:dyntype support for maps -string_ext:format:dyntype support for numbers with string formatting clause -string_ext:format:dyntype support for scientific notation -string_ext:format:dyntype support for string formatting clause -string_ext:format:dyntype support for timestamp -string_ext:format:dyntype support for unsigned hex formatting clause -string_ext:format:fixed point formatting clause -string_ext:format:fixed point formatting clause in a string variable -string_ext:format:int support for string -string_ext:format:list support for string -string_ext:format:lowercase hexadecimal formatting clause -string_ext:format:map support (all key types) -string_ext:format:map support for string -string_ext:format:mid-string substitution -string_ext:format:multiple substitutions -string_ext:format:multiple substitutions in a string variable -string_ext:format:NaN support for decimal -string_ext:format:NaN support for fixed-point -string_ext:format:NaN support for scientific notation -string_ext:format:negative infinity support for decimal -string_ext:format:negative infinity support for fixed-point -string_ext:format:negative infinity support for scientific notation -string_ext:format:no-op -string_ext:format:null support for string -string_ext:format:octal formatting clause -string_ext:format:percent escaping -string_ext:format:percent sign escape sequence support -string_ext:format:positive infinity support for decimal -string_ext:format:positive infinity support for fixed-point -string_ext:format:positive infinity support for scientific notation -string_ext:format:scientific notation formatting clause -string_ext:format:scientific notation formatting clause in a string variable -string_ext:format:string substitution in a string variable -string_ext:format:string support with hexadecimal formatting clause -string_ext:format:string support with uppercase hexadecimal formatting clause -string_ext:format:substitution inside escaped percent signs -string_ext:format:substitution inside escaped percent signs in a string variable -string_ext:format:substitution with one escaped percent sign on the left -string_ext:format:substitution with one escaped percent sign on the right -string_ext:format:timestamp support for string -string_ext:format:type() support for string -string_ext:format:uint support for binary formatting -string_ext:format:uint support for decimal clause -string_ext:format:uint support for octal formatting clause -string_ext:format:unsigned support for hexadecimal formatting clause -string_ext:format:uppercase hexadecimal formatting clause -string_ext:index_of:char_index -string_ext:index_of:char_index -string_ext:index_of:empty_index -string_ext:index_of:empty_index -string_ext:index_of:nomatch -string_ext:index_of:string_index -string_ext:index_of:string_index -string_ext:index_of:string_nomatch_index -string_ext:index_of:string_with_space_fullmatch -string_ext:index_of:string_with_space_index -string_ext:index_of:unicode_char -string_ext:index_of:unicode_char_index -string_ext:index_of:unicode_string_index -string_ext:index_of:unicode_string_nomatch_index -string_ext:join:dash_separator -string_ext:join:empty_separator -string_ext:join:empty_string_dash_separator -string_ext:join:empty_string_empty_separator -string_ext:last_index_of:char_index -string_ext:last_index_of:empty -string_ext:last_index_of:empty_index -string_ext:last_index_of:repeated_string -string_ext:last_index_of:string -string_ext:last_index_of:string_nomatch -string_ext:last_index_of:string_with_space_fullmatch -string_ext:last_index_of:string_with_space_string_index -string_ext:last_index_of:string_with_space_string_nomatch -string_ext:last_index_of:string_with_space_string_with_space_nomatch -string_ext:last_index_of:unicode_char -string_ext:last_index_of:unicode_char_index -string_ext:last_index_of:unicode_string_index -string_ext:quote:backspace -string_ext:quote:carriage_return -string_ext:quote:double_slash -string_ext:quote:empty_quote -string_ext:quote:ends_with -string_ext:quote:escaped -string_ext:quote:form_feed -string_ext:quote:horizontal_tab -string_ext:quote:mid_string_quote -string_ext:quote:multiline -string_ext:quote:printable_unicode -string_ext:quote:single_quote_with_double_quote -string_ext:quote:size_unicode_char -string_ext:quote:size_unicode_string -string_ext:quote:starts_with -string_ext:quote:two_escape_sequences -string_ext:quote:unicode -string_ext:quote:unicode_2 -string_ext:quote:unicode_code_points -string_ext:quote:verbatim -string_ext:quote:vertical_tab -string_ext:replace:basic -string_ext:replace:chained -string_ext:replace:no_placeholder -string_ext:replace:unicode -string_ext:split:empty -string_ext:split:one_limit -string_ext:split:unicode_negative_limit -string_ext:split:zero_limit -string_ext:substring:start -string_ext:substring:start_and_end -string_ext:substring:start_and_end_equal_value -string_ext:substring:start_with_max_length -string_ext:substring:unicode_start_and_end -string_ext:substring:unicode_start_and_end_equal_value -string_ext:trim:blank_spaces_escaped_chars -string_ext:trim:unicode_no_trim -string_ext:trim:unicode_space_chars_1 -string_ext:trim:unicode_space_chars_2 -string_ext:trim:unicode_space_chars_3 -string_ext:type_errors:charat_invalid_argument -string_ext:type_errors:replace_binary_invalid_argument -string_ext:type_errors:replace_binary_invalid_argument_2 -string_ext:type_errors:replace_quaternary_invalid_argument -string_ext:type_errors:replace_ternary_invalid_argument_2 -string_ext:type_errors:replace_ternary_invalid_argument_3 -string_ext:type_errors:replace_ternary_invalid_argument_4 -string_ext:type_errors:substring_binary_invalid_argument -string_ext:type_errors:substring_binary_invalid_argument_2 -string_ext:type_errors:substring_ternary_invalid_argument -string_ext:value_errors:charat_out_of_range -string_ext:value_errors:substring_begin_index_out_of_range -string_ext:value_errors:substring_end_index_greater_than_begin_index -string_ext:value_errors:substring_end_index_out_of_range -string_ext:value_errors:substring_negative_index -string_ext:value_errors:substring_out_of_range -timestamps:duration_conversions:type_comparison -timestamps:duration_converters:get_milliseconds -timestamps:duration_range:sub_over -timestamps:duration_range:sub_under -timestamps:timestamp_conversions:toString_timestamp_nanos -timestamps:timestamp_conversions:type_comparison -timestamps:timestamp_range:add_duration_nanos_over -timestamps:timestamp_range:add_duration_nanos_under -timestamps:timestamp_range:sub_time_duration_over -timestamps:timestamp_range:sub_time_duration_under -wrappers:bytes:to_json -wrappers:duration:to_json -wrappers:empty:to_json -wrappers:field_mask:to_json -wrappers:float:to_null -wrappers:int32:to_json -wrappers:int32:to_null -wrappers:int64:to_json_number -wrappers:int64:to_json_string -wrappers:string:to_any -wrappers:string:to_json -wrappers:timestamp:to_json -wrappers:uint32:to_json -wrappers:uint32:to_null -wrappers:uint64:to_json_number -wrappers:uint64:to_json_string -wrappers:value:default_to_json - -# Fails only for compiled runner β€” however, these don't fail to run if run with only WIP scenarios. -# It seems then that there may be some kind of side-effects bug in the Gherkin step implementation. -comparisons:eq_wrapper:eq_bool -comparisons:eq_wrapper:eq_bool_empty -comparisons:eq_wrapper:eq_bool_not_null -comparisons:eq_wrapper:eq_bytes -comparisons:eq_wrapper:eq_double -comparisons:eq_wrapper:eq_double_empty -comparisons:eq_wrapper:eq_float -comparisons:eq_wrapper:eq_float_empty -comparisons:eq_wrapper:eq_int32 -comparisons:eq_wrapper:eq_int32_empty -comparisons:eq_wrapper:eq_int64 -comparisons:eq_wrapper:eq_int64_empty -comparisons:eq_wrapper:eq_proto2_any_unpack_bytewise_fallback_equal -comparisons:eq_wrapper:eq_proto2_any_unpack_equal -comparisons:eq_wrapper:eq_proto3_any_unpack_bytewise_fallback_equal -comparisons:eq_wrapper:eq_proto3_any_unpack_equal -comparisons:eq_wrapper:eq_uint32 -comparisons:eq_wrapper:eq_uint32_empty -comparisons:eq_wrapper:eq_uint64 -comparisons:eq_wrapper:eq_uint64_empty -comparisons:ne_literal:ne_proto2_any_unpack -comparisons:ne_literal:ne_proto3_any_unpack -dynamic:bool:literal -dynamic:bool:literal_empty -dynamic:bytes:literal -dynamic:bytes:literal_unicode -dynamic:double:literal -dynamic:double:literal_zero -dynamic:float:literal -dynamic:float:literal_zero -dynamic:int32:field_assign_proto2_range -dynamic:int32:field_assign_proto3_range -dynamic:int32:literal -dynamic:int32:literal_zero -dynamic:int64:literal -dynamic:int64:literal_zero -dynamic:uint32:field_assign_proto2_range -dynamic:uint32:field_assign_proto3_range -dynamic:uint32:literal -dynamic:uint32:literal_zero -dynamic:uint64:literal -dynamic:uint64:literal_zero -enums:strong_proto2:comparison_true -enums:strong_proto3:comparison_true -optionals:optionals:optional_eq_int_int -optionals:optionals:optional_eq_int_none -optionals:optionals:optional_eq_none_int -optionals:optionals:optional_eq_none_none -optionals:optionals:optional_ne_int_int -optionals:optionals:optional_ne_int_none -optionals:optionals:optional_ne_none_int -optionals:optionals:optional_ne_none_none -wrappers:bool:to_any -wrappers:bool:to_json -wrappers:bytes:to_any -wrappers:double:to_any -wrappers:double:to_json -wrappers:float:to_any -wrappers:float:to_json -wrappers:int32:to_any -wrappers:int64:to_any -wrappers:uint32:to_any -wrappers:uint64:to_any - -# Fails only for interpreted runner -proto2:has:oneof_other_set -proto2:has:optional_enum_unset -proto3:has:oneof_other_set -proto3:has:single_enum_unset diff --git a/type_check/lineprecision.txt b/type_check/lineprecision.txt index 8deaaa6..e599dfc 100644 --- a/type_check/lineprecision.txt +++ b/type_check/lineprecision.txt @@ -7,7 +7,7 @@ celpy.c7nlib 1663 344 16 152 1151 0 celpy.celparser 411 137 68 23 183 0 celpy.celtypes 1483 386 15 235 810 37 celpy.evaluation 3875 1132 251 244 2232 16 -gherkinize 911 502 12 86 297 14 +gherkinize 1000 548 14 86 330 22 test_gherkinize 5581 5014 135 4 428 0 xlate 0 0 0 0 0 0 xlate.c7n_to_cel 1755 397 103 144 1105 6 diff --git a/uv.lock b/uv.lock index ee7eb20..8c01db4 100644 --- a/uv.lock +++ b/uv.lock @@ -97,10 +97,12 @@ dev = [ { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, { name = "sphinx", version = "8.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "sphinxcontrib-plantuml" }, + { name = "toml" }, { name = "tox" }, { name = "tox-uv" }, { name = "types-protobuf" }, { name = "types-pyyaml" }, + { name = "types-toml" }, ] [package.metadata] @@ -129,10 +131,12 @@ dev = [ { name = "ruff", specifier = ">=0.11.10" }, { name = "sphinx", specifier = ">=7.4.7" }, { name = "sphinxcontrib-plantuml", specifier = ">=0.30" }, + { name = "toml", specifier = ">=0.10.2" }, { name = "tox", specifier = ">=4.24" }, { name = "tox-uv", specifier = ">=1.25.0" }, { name = "types-protobuf", specifier = ">=6.30.2.20250914" }, { name = "types-pyyaml", specifier = ">=6.0.12.20250516" }, + { name = "types-toml", specifier = ">=0.10.8.20240310" }, ] [[package]] @@ -1205,6 +1209,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", size = 92072, upload-time = "2024-07-29T01:10:08.203Z" }, ] +[[package]] +name = "toml" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f", size = 22253, upload-time = "2020-11-01T01:40:22.204Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588, upload-time = "2020-11-01T01:40:20.672Z" }, +] + [[package]] name = "tomli" version = "2.2.1" @@ -1299,6 +1312,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530", size = 20312, upload-time = "2025-05-16T03:08:04.019Z" }, ] +[[package]] +name = "types-toml" +version = "0.10.8.20240310" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/86/47/3e4c75042792bff8e90d7991aa5c51812cc668828cc6cce711e97f63a607/types-toml-0.10.8.20240310.tar.gz", hash = "sha256:3d41501302972436a6b8b239c850b26689657e25281b48ff0ec06345b8830331", size = 4392, upload-time = "2024-03-10T02:18:37.518Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/a2/d32ab58c0b216912638b140ab2170ee4b8644067c293b170e19fba340ccc/types_toml-0.10.8.20240310-py3-none-any.whl", hash = "sha256:627b47775d25fa29977d9c70dc0cbab3f314f32c8d8d0c012f2ef5de7aaec05d", size = 4777, upload-time = "2024-03-10T02:18:36.568Z" }, +] + [[package]] name = "typing-extensions" version = "4.13.2" From c7cb97019fa89d3bab819a87b917cff9404a53cc Mon Sep 17 00:00:00 2001 From: Dan Hudlow Date: Mon, 29 Sep 2025 16:29:01 -0500 Subject: [PATCH 06/13] Simplify config loading code --- tools/gherkinize.py | 187 +++++++++++++++++++++----------------------- 1 file changed, 91 insertions(+), 96 deletions(-) diff --git a/tools/gherkinize.py b/tools/gherkinize.py index 0c88206..d1a5fe1 100644 --- a/tools/gherkinize.py +++ b/tools/gherkinize.py @@ -40,114 +40,109 @@ ) template = env.get_template("gherkin.feature.jinja") logger = logging.getLogger("gherkinize") - pool = descriptor_pool.Default() # type: ignore [no-untyped-call] ScenarioConfigInput = Union[str, list[str], dict[Literal["tags"], list[str]]] +SectionConfigInput = dict[str, ScenarioConfigInput] +FeatureConfigInput = dict[str, SectionConfigInput] +ScenarioConfig = dict[Literal["tags"], list[str]] +SectionConfig = dict[str, ScenarioConfig] +FeatureConfig = dict[str, SectionConfig] -class ScenarioConfig: - def __init__( - self, section: "SectionConfig", name: str, input: ScenarioConfigInput - ) -> None: - self.section = section - self.name = name - self.tags: list[str] = [] - self.__has_logged_error_context = False - self.__load_tags(input) - - def __log_error_context(self) -> None: - if not self.__has_logged_error_context: - logger.error( - f"[{self.section.feature.name}.{self.section.name}.{self.name}]" - ) +class Config: + def __init__(self, path: str) -> None: + self.features: dict[str, FeatureConfig] = {} + logger.debug(f"Reading from {repr(path)}...") + input = toml.load(path) - def __load_tags(self, input: ScenarioConfigInput) -> None: - if isinstance(input, str): - if not input.startswith("@"): - self.__log_error_context() - logger.error( - f' Skipping invalid tag (must start with "@"): {repr(input)}' - ) - logger.error(f" Did you mean {repr('@' + input)}?") - self.tags.append(input) - elif isinstance(input, list): - for tag in input: - if not isinstance(tag, str): - self.__log_error_context() - logger.error( - f" Skipping invalid tag (must be a string): {repr(tag)}" - ) - continue - self.__load_tags(tag) - elif "tags" in input and isinstance(input["tags"], list): - self.__load_tags(input["tags"]) + if isinstance(input, dict): + for name, value in input.items(): + feature = Config._canonicalize_feature(name, value) + if feature is not None: + self.features[name] = feature else: - self.__log_error_context() - logger.error(f" Skipping invalid scenario config: {repr(input)}") - + logger.error(f"Could not read from {repr(path)}") -SectionConfigInput = dict[str, ScenarioConfigInput] + @staticmethod + def _canonicalize_feature(context: str, input: FeatureConfigInput) -> FeatureConfig | None: + feature = {} + if isinstance(input, dict): + for name, value in input.items(): + section = Config._canonicalize_section(f"{context}.{name}", value) + if section is not None: + feature[name] = section + else: + logger.error(f"[{context}]: Skipping invalid feature: {repr(input)}") + return feature -class SectionConfig: - def __init__( - self, feature: "FeatureConfig", name: str, input: SectionConfigInput - ) -> None: - self.feature = feature - self.name = name - self.scenarios = [] + @staticmethod + def _canonicalize_section(context: str, input: SectionConfigInput) -> SectionConfig | None: + section = {} if isinstance(input, dict): for name, value in input.items(): - self.scenarios.append(ScenarioConfig(self, name, value)) + scenario = Config._canonicalize_scenario(f"{context}.{name}", value) + if scenario is not None: + section[name] = scenario else: - logger.error(f"[{self.feature.name}.{self.name}]") - logger.error(f" Skipping invalid section config: {repr(input)}") + logger.error(f"[{context}]: Skipping invalid section: {repr(input)}") - def tags_for(self, scenario: str) -> list[str]: - for s in self.scenarios: - if s.name == scenario: - return s.tags - return [] + return section + @staticmethod + def _canonicalize_scenario(context: str, input: ScenarioConfigInput) -> ScenarioConfig | None: + tags = None + if isinstance(input, str): + tag = Config._canonicalize_tag(context, input); + if tag is not None: + tags = [tag] + elif isinstance(input, list): + tags = Config._canonicalize_tags(context, input) + elif "tags" in input: + tags = Config._canonicalize_tags(f"{context}.tags", input["tags"]) -FeatureConfigInput = dict[str, SectionConfigInput] + if tags is None: + logger.error(f"[{context}]: Skipping invalid scenario: {repr(input)}") + return None + return { "tags": tags } -class FeatureConfig: - def __init__(self, name: str, input: FeatureConfigInput) -> None: - self.name = name - self.sections = [] - if isinstance(input, dict): - for name, value in input.items(): - self.sections.append(SectionConfig(self, name, value)) - else: - logger.error(f"[{self.name}]") - logger.error(f" Skipping invalid feature config: {repr(input)}") - - def tags_for(self, section: str, scenario: str) -> list[str]: - for s in self.sections: - if s.name == section: - return s.tags_for(scenario) - return [] + @staticmethod + def _canonicalize_tags(context: str, input: Any) -> list[str] | None: + if not isinstance(input, list): + logger.error(f"[{context}]: Skipping invalid tags (must be a list): {repr(input)}") + return None + tags: list[str] = [] + for i, tag in enumerate(input): + tag = Config._canonicalize_tag(f"{context}.{i}", input) + if tag is not None: + tags.append(tag) + if (len(tags)): + return tags + return None -class Config: - def __init__(self, path: str) -> None: - self.features: list[FeatureConfig] = [] - logger.debug(f"Reading from {repr(path)}...") - input = toml.load(path) + @staticmethod + def _canonicalize_tag(context: str, input: Any) -> str | None: + if not isinstance(input, str): + logger.error(f"[{context}]: Skipping invalid tag (must be a string): {repr(input)}") + return None + if not input.startswith("@"): + logger.error(f'[{context}]: Skipping invalid tag (must start with "@"): {repr(input)}') + logger.error(f"[{context}]: Did you mean {repr('@' + input)}?") + return None - if isinstance(input, dict): - for name, value in input.items(): - self.features.append(FeatureConfig(name, value)) - else: - logger.error(f"Could not read from {repr(path)}") + return input def tags_for(self, feature: str, section: str, scenario: str) -> list[str]: - for f in self.features: - if f.name == feature: - return f.tags_for(section, scenario) + if ( + feature in self.features and + section in self.features[feature] and + scenario in self.features[feature][section] + ): + return self.features[feature][section][scenario]["tags"] + return [] @@ -292,16 +287,16 @@ def __init__( ], ) -> None: if isinstance(value, value_pb2.Value): - self.__from_cel_value(value) + self._from_cel_value(value) super().__init__(value) elif isinstance(value, checked_pb2.Decl): - self.__from_decl(value) + self._from_decl(value) super().__init__(value) elif isinstance(value, checked_pb2.Decl.IdentDecl): - self.__from_ident(value) + self._from_ident(value) super().__init__(value) elif isinstance(value, str): - self.__from_str(value) + self._from_str(value) super().__init__(None) else: if isinstance(value, message.Message): @@ -315,20 +310,20 @@ def __init__( def is_aliased(alias: str) -> bool: return alias in ["type", "type_value"] - def __from_cel_value(self, source: value_pb2.Value) -> None: - self.__from_str(source.type_value) + def _from_cel_value(self, source: value_pb2.Value) -> None: + self._from_str(source.type_value) - def __from_decl(self, source: checked_pb2.Decl) -> None: + def _from_decl(self, source: checked_pb2.Decl) -> None: decl_kind = source.WhichOneof("decl_kind") if decl_kind == "ident": - self.__from_ident(source.ident) + self._from_ident(source.ident) else: raise NotImplementedError( f'Unable to interpret declaration kind "{decl_kind}"' ) - def __from_ident(self, ident: checked_pb2.Decl.IdentDecl) -> None: + def _from_ident(self, ident: checked_pb2.Decl.IdentDecl) -> None: type_kind = ident.type.WhichOneof("type_kind") if type_kind == "primitive": primitive_kind = checked_pb2.Type.PrimitiveType.Name(ident.type.primitive) @@ -343,11 +338,11 @@ def __from_ident(self, ident: checked_pb2.Decl.IdentDecl) -> None: if cel_class: self.name = cel_class.type_name else: - self.__from_str(ident.type.message_type) + self._from_str(ident.type.message_type) else: self.name = CELValue.get_class_by_alias(type_kind, None, True).type_name - def __from_str(self, type_value: str) -> None: + def _from_str(self, type_value: str) -> None: candidate = CELValue.get_class_by_alias(type_value, None, False) if candidate: From 66d408acd810fb62a42bd8638b3469152b58f067 Mon Sep 17 00:00:00 2001 From: Dan Hudlow Date: Tue, 30 Sep 2025 11:06:42 -0500 Subject: [PATCH 07/13] Update TOML config loading based on feedback --- tools/gherkin.feature.jinja | 2 +- tools/gherkinize.py | 143 +++++++++++++++++++---------------- tools/test_gherkinize.py | 2 +- type_check/lineprecision.txt | 4 +- 4 files changed, 80 insertions(+), 71 deletions(-) diff --git a/tools/gherkin.feature.jinja b/tools/gherkin.feature.jinja index 0401e17..c12dc07 100644 --- a/tools/gherkin.feature.jinja +++ b/tools/gherkin.feature.jinja @@ -1,11 +1,11 @@ @conformance Feature: {{ feature.name }} {{ (feature.description | wordwrap(width=71,wrapstring="\n ")) }} + {% for section in feature.sections %} # {{ section.name }} -- {{ section.description }} - {% for scenario in section.scenarios %} {{ scenario.tag }}Scenario: {{ section.name }}/{{ scenario.name }} {{ " " + (scenario.description | wordwrap(width=70,wrapstring="\n ")) + "\n" if scenario.description else "" }} diff --git a/tools/gherkinize.py b/tools/gherkinize.py index d1a5fe1..3bf19af 100644 --- a/tools/gherkinize.py +++ b/tools/gherkinize.py @@ -42,94 +42,101 @@ logger = logging.getLogger("gherkinize") pool = descriptor_pool.Default() # type: ignore [no-untyped-call] -ScenarioConfigInput = Union[str, list[str], dict[Literal["tags"], list[str]]] -SectionConfigInput = dict[str, ScenarioConfigInput] -FeatureConfigInput = dict[str, SectionConfigInput] - -ScenarioConfig = dict[Literal["tags"], list[str]] -SectionConfig = dict[str, ScenarioConfig] -FeatureConfig = dict[str, SectionConfig] class Config: + # We tolerate some variation in the structure of the configuration for each + # scenario, but we need to canonicalize it as we load it. + ScenarioInput = Union[str, list[str], dict[Literal["tags"], list[str]]] + SectionInput = dict[str, "Config.ScenarioInput"] + FeatureInput = dict[str, "Config.SectionInput"] + + # These are the canonical forms + Scenario = dict[Literal["tags"], list[str]] + Section = dict[str, "Config.Scenario"] + Feature = dict[str, "Config.Section"] + def __init__(self, path: str) -> None: - self.features: dict[str, FeatureConfig] = {} logger.debug(f"Reading from {repr(path)}...") input = toml.load(path) - if isinstance(input, dict): - for name, value in input.items(): - feature = Config._canonicalize_feature(name, value) - if feature is not None: - self.features[name] = feature - else: + if not isinstance(input, dict): logger.error(f"Could not read from {repr(path)}") + return None + + features = [(k, Config._load_feature(k, v)) for k, v in input.items()] + self.features: dict[str, "Config.Feature"] = { + k: v for k, v in features if v is not None + } @staticmethod - def _canonicalize_feature(context: str, input: FeatureConfigInput) -> FeatureConfig | None: - feature = {} - if isinstance(input, dict): - for name, value in input.items(): - section = Config._canonicalize_section(f"{context}.{name}", value) - if section is not None: - feature[name] = section - else: + def _load_feature( + context: str, input: "Config.FeatureInput" + ) -> "Config.Feature | None": + if not isinstance(input, dict): logger.error(f"[{context}]: Skipping invalid feature: {repr(input)}") + return None - return feature + sections = [ + (k, Config._load_section(f"{context}.{k}", v)) for k, v in input.items() + ] + return {k: v for k, v in sections if v is not None} @staticmethod - def _canonicalize_section(context: str, input: SectionConfigInput) -> SectionConfig | None: - section = {} - if isinstance(input, dict): - for name, value in input.items(): - scenario = Config._canonicalize_scenario(f"{context}.{name}", value) - if scenario is not None: - section[name] = scenario - else: + def _load_section( + context: str, input: "Config.SectionInput" + ) -> "Config.Section | None": + if not isinstance(input, dict): logger.error(f"[{context}]: Skipping invalid section: {repr(input)}") + return None - return section + scenarios = [ + (k, Config._load_scenario(f"{context}.{k}", v)) for k, v in input.items() + ] + return {k: v for k, v in scenarios if v is not None} @staticmethod - def _canonicalize_scenario(context: str, input: ScenarioConfigInput) -> ScenarioConfig | None: + def _load_scenario( + context: str, input: "Config.ScenarioInput" + ) -> "Config.Scenario | None": tags = None if isinstance(input, str): - tag = Config._canonicalize_tag(context, input); - if tag is not None: - tags = [tag] + tag = Config._load_tag(context, input) + tags = [tag] if tag is not None else [] elif isinstance(input, list): - tags = Config._canonicalize_tags(context, input) + tags = Config._load_tag_list(context, input) elif "tags" in input: - tags = Config._canonicalize_tags(f"{context}.tags", input["tags"]) + tags = Config._load_tag_list(f"{context}.tags", input["tags"]) if tags is None: logger.error(f"[{context}]: Skipping invalid scenario: {repr(input)}") return None - return { "tags": tags } + return {"tags": tags} @staticmethod - def _canonicalize_tags(context: str, input: Any) -> list[str] | None: + def _load_tag_list(context: str, input: Any) -> list[str] | None: if not isinstance(input, list): - logger.error(f"[{context}]: Skipping invalid tags (must be a list): {repr(input)}") + logger.error( + f"[{context}]: Skipping invalid tags (must be a list): {repr(input)}" + ) return None - tags: list[str] = [] - for i, tag in enumerate(input): - tag = Config._canonicalize_tag(f"{context}.{i}", input) - if tag is not None: - tags.append(tag) - if (len(tags)): - return tags - return None + tags_and_nones = [ + Config._load_tag(f"{context}.{i}", v) for i, v in enumerate(input) + ] + return [t for t in tags_and_nones if t is not None] @staticmethod - def _canonicalize_tag(context: str, input: Any) -> str | None: + def _load_tag(context: str, input: Any) -> str | None: if not isinstance(input, str): - logger.error(f"[{context}]: Skipping invalid tag (must be a string): {repr(input)}") + logger.error( + f"[{context}]: Skipping invalid tag (must be a string): {repr(input)}" + ) return None if not input.startswith("@"): - logger.error(f'[{context}]: Skipping invalid tag (must start with "@"): {repr(input)}') + logger.error( + f'[{context}]: Skipping invalid tag (must start with "@"): {repr(input)}' + ) logger.error(f"[{context}]: Did you mean {repr('@' + input)}?") return None @@ -137,18 +144,15 @@ def _canonicalize_tag(context: str, input: Any) -> str | None: def tags_for(self, feature: str, section: str, scenario: str) -> list[str]: if ( - feature in self.features and - section in self.features[feature] and - scenario in self.features[feature][section] + feature in self.features + and section in self.features[feature] + and scenario in self.features[feature][section] ): return self.features[feature][section][scenario]["tags"] return [] -wip_config = Config(f"{path.dirname(__file__)}/wip.toml") - - class Result: def __init__( self, @@ -845,13 +849,17 @@ def __repr__(self) -> str: class Scenario: def __init__( - self, feature: "Feature", section: "Section", source: simple_pb2.SimpleTest + self, + config: Config, + feature: "Feature", + section: "Section", + source: simple_pb2.SimpleTest, ) -> None: logger.debug(f"Scenario {source.name}") self.name = source.name self.description = source.description self.tag = "" - for tag in wip_config.tags_for(feature.name, section.name, source.name): + for tag in config.tags_for(feature.name, section.name, source.name): self.tag += f"{tag}\n" self.preconditions: list[str] = [] self.events: list[str] = [] @@ -905,7 +913,7 @@ def steps(self) -> list[str]: class Section: def __init__( - self, feature: "Feature", source: simple_pb2.SimpleTestSection + self, config: Config, feature: "Feature", source: simple_pb2.SimpleTestSection ) -> None: logger.debug(f"Section {source.name}") self.name = source.name @@ -913,19 +921,19 @@ def __init__( self.scenarios = [] for test in source.test: try: - self.scenarios.append(Scenario(feature, self, test)) + self.scenarios.append(Scenario(config, feature, self, test)) except NotImplementedError as e: logger.warning(f"Skipping scenario {test.name} because: {e}") class Feature: - def __init__(self, source: simple_pb2.SimpleTestFile): + def __init__(self, config: Config, source: simple_pb2.SimpleTestFile): self.name = source.name self.description = source.description - self.sections = [Section(self, s) for s in source.section] + self.sections = [Section(config, self, s) for s in source.section] @staticmethod - def from_text_proto(path: Path) -> "Feature": + def from_text_proto(config: Config, path: Path) -> "Feature": logger.debug(f"Reading from {path}...") with open(path, encoding="utf_8") as file_handle: text = ( @@ -936,7 +944,7 @@ def from_text_proto(path: Path) -> "Feature": file = simple_pb2.SimpleTestFile() logger.debug(f"Parsing {path}...") text_format.Parse(text, file) - return Feature(file) + return Feature(config, file) def write_to_file(self, path: Optional[Path]) -> None: logger.debug("Rendering to gherkin...") @@ -987,7 +995,8 @@ def get_options(argv: list[str] = sys.argv[1:]) -> argparse.Namespace: logging.basicConfig(level=logging.INFO) logging.getLogger().setLevel(options.log_level) - feature = Feature.from_text_proto(options.source) + config = Config(f"{path.dirname(__file__)}/wip.toml") + feature = Feature.from_text_proto(config, options.source) feature.write_to_file(options.output) diff --git a/tools/test_gherkinize.py b/tools/test_gherkinize.py index de9be6a..fc955f2 100644 --- a/tools/test_gherkinize.py +++ b/tools/test_gherkinize.py @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and limitations under the License. """ -Test translation of the pb2g tool to convert textproto to Gherkin.. +Test the gherkinize.py tool to convert textproto to Gherkin. """ from google.protobuf import any_pb2, struct_pb2 diff --git a/type_check/lineprecision.txt b/type_check/lineprecision.txt index e599dfc..d04cc9f 100644 --- a/type_check/lineprecision.txt +++ b/type_check/lineprecision.txt @@ -6,8 +6,8 @@ celpy.adapter 163 34 3 9 111 6 celpy.c7nlib 1663 344 16 152 1151 0 celpy.celparser 411 137 68 23 183 0 celpy.celtypes 1483 386 15 235 810 37 -celpy.evaluation 3875 1132 251 244 2232 16 -gherkinize 1000 548 14 86 330 22 +celpy.evaluation 3859 1128 251 242 2222 16 +gherkinize 1004 533 14 96 341 20 test_gherkinize 5581 5014 135 4 428 0 xlate 0 0 0 0 0 0 xlate.c7n_to_cel 1755 397 103 144 1105 6 From bda341c733dab73a734269505956bd7f17017cec Mon Sep 17 00:00:00 2001 From: Dan Hudlow Date: Tue, 30 Sep 2025 16:09:29 -0500 Subject: [PATCH 08/13] Update docs and help for dev workflows --- Makefile | 106 ++++++++++----- docs/Makefile | 6 +- docs/source/conf.py | 13 +- docs/source/development.rst | 243 ++--------------------------------- features/Makefile | 19 ++- features/README.rst | 12 +- pyproject.toml | 48 +++---- tools/gherkinize.py | 110 ++++++++++++++++ type_check/lineprecision.txt | 10 +- uv.lock | 16 +++ 10 files changed, 278 insertions(+), 305 deletions(-) diff --git a/Makefile b/Makefile index e93bb65..4259ff3 100644 --- a/Makefile +++ b/Makefile @@ -13,63 +13,107 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and limitations under the License. -# Tools require GO. Typically, the following kinds of setup is required. -# export PATH="/usr/local/go/bin:/usr/local/bin:$PATH" -# export GOPATH="~/go" +HELP_TEXT := "" +HELP_TEXT += "Available commands:\n" +.PHONY: help +help: + @echo $(HELP_TEXT) + +HELP_TEXT += " build runs ``uv build`` to create a distribution kit\n" +.PHONY: build build: uv build -test: - cd features && $(MAKE) all +HELP_TEXT += " build-all alias of build, conformance, and docs\n" +.PHONY: build-all +build-all: + $(MAKE) build + $(MAKE) conformance + $(MAKE) docs + +HELP_TEXT += "\n" + +HELP_TEXT += " test runs the Python 3.12 test environment to execute a quick test\n" +.PHONY: test +test: conformance uv run tox run -e py312 -test-all: - cd features && $(MAKE) all +HELP_TEXT += " test-all runs the full test suite\n" +.PHONY: test-all +test-all: conformance uv run tox run -test-wip: - cd features && $(MAKE) all - uv run tox run -e wip - -test-tools: - uv run tox run -e tools +HELP_TEXT += " test- runs tests for any of the available tox environments:\n" +HELP_TEXT += "\n$$(uv run tox list | awk '{ print " " $$0 }')\n" +.PHONY: test-% +test-%: conformance + uv run tox run -e $* -test-clean: - cd features && $(MAKE) clean +HELP_TEXT += "\n" +HELP_TEXT += " conformance generates conformance tests\n" +.PHONY: conformance conformance: cd features && $(MAKE) all - uv run tox run -e conformance - -conformance-compiled: - cd features && $(MAKE) all - uv run tox run -e conformance-compiled -conformance-wip: - cd features && $(MAKE) all - uv run tox run -e conformance-wip +HELP_TEXT += " conf-clean cleans generated conformance tests\n" +.PHONY: conf-clean +conf-clean: + cd features && $(MAKE) clean -conformance-wip-compiled: - cd features && $(MAKE) all - uv run tox run -e conformance-wip +HELP_TEXT += "\n" +HELP_TEXT += " docs generates HTML documentation\n" +.PHONY: docs docs: $(wildcard docs/source/*.rst) - PYTHONPATH=src python -m doctest docs/source/*.rst - export PYTHONPATH=$(PWD)/src:$(PWD)/tools && cd docs && $(MAKE) html + $(MAKE) docs-lint + cd docs && $(MAKE) html + +HELP_TEXT += " docs-clean lints documentation sources\n" +.PHONY: docs-lint +docs-lint: + uv run python -m doctest docs/source/*.rst +HELP_TEXT += " docs-clean cleans generated HTML documentation\n" +.PHONY: docs-clean +docs-clean: + cd docs && $(MAKE) clean + +HELP_TEXT += "\n" + +HELP_TEXT += " lint runs code coverage, type hint checking, and other lint checks\n" +HELP_TEXT += " (alias of test-lint)\n" +.PHONY: lint lint: uv run tox run -e lint +HELP_TEXT += "\n" + +HELP_TEXT += " format runs code formatting\n" +.PHONY: format format: uv run ruff format src tools +HELP_TEXT += " coverage generates code coverage reports\n" +.PHONY: coverage coverage: uv run tox run -e coverage +HELP_TEXT += " clean cleans all content ignored by git\n" +.PHONY: clean clean: - rm -rf .mypy_cache .pytest_cache .ruff_cache .tox .Python bin include lib pip-selfcheck.json + git clean -Xfd + +HELP_TEXT += " clean-all alias of clean, conformance-clean, and docs-clean\n" +.PHONY: clean-all +clean-all: + $(MAKE) clean + $(MAKE) test-clean + $(MAKE) docs-clean +HELP_TEXT += " benchmarks runs performance benchmarks\n" +.PHONY: benchmarks benchmarks: - PYTHONPATH=src python benches/large_resource_set.py TagAssetBenchmark - PYTHONPATH=src python benches/complex_expression.py + PYTHONPATH=src uv run python benches/large_resource_set.py TagAssetBenchmark + PYTHONPATH=src uv run python benches/complex_expression.py diff --git a/docs/Makefile b/docs/Makefile index f758891..b083640 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -7,10 +7,12 @@ # You can set these variables from the command line, and also # from the environment for the first two. SPHINXOPTS ?= -SPHINXBUILD ?= sphinx-build +SPHINXBUILD ?= uv run sphinx-build SOURCEDIR = source BUILDDIR = build +export GRAPHVIZ_DOT ?= $(shell which dot) + # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) @@ -20,4 +22,6 @@ help: # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile + @which java || (>&2 echo "Building docs requires java" ; exit 1) + @which dot || (>&2 echo "Building docs requires graphviz (specifically, the dot executable)" ; exit 1) @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/source/conf.py b/docs/source/conf.py index 7009f0b..1a4b981 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -11,12 +11,10 @@ # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) +# documentation root, use pathlib.Path.absolute() to make it absolute. +import sys from pathlib import Path +sys.path.insert(0, str(Path('../../tools').absolute())) # -- Project information ----------------------------------------------------- @@ -35,6 +33,7 @@ 'sphinx.ext.viewcode', 'sphinx.ext.todo', 'sphinxcontrib.plantuml', + 'sphinxcontrib.programoutput' ] # Add any paths that contain templates here, relative to this directory. @@ -43,7 +42,7 @@ # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. -exclude_patterns = [] +exclude_patterns: list[str] = [] # -- Options for HTML output ------------------------------------------------- @@ -56,7 +55,7 @@ # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] +html_static_path: list[str] = [] # -- Options for Autodoc ----------------------------------------------------- diff --git a/docs/source/development.rst b/docs/source/development.rst index 02a00f3..4d0d096 100644 --- a/docs/source/development.rst +++ b/docs/source/development.rst @@ -19,141 +19,17 @@ Any changes must be reflected (manually) by revising the lark version of the EBN The test cases present a more challenging problem. -A tool, ``pb2g.py``, converts the test cases from Protobuf messages to Gherkin scenarios. +A tool, ``gherkinize.py``, converts the test cases from Protobuf messages to Gherkin scenarios. -.. uml:: +The ``gherkinize.py`` Tool +========================== - @startuml +.. automodule:: gherkinize + :no-members: - file source as "source protobuf test cases" - file features as "Gherkin feature files" - source --> [pb2g.py] - [pb2g.py] --> [Docker] : "Uses" - [Docker] ..> [mkgherkin.go] : "Runs" - [pb2g.py] --> features - @enduml - - -The pb2g Tool -============== - -The ``pb2g.py`` Python application converts a protobuf test case collection into a Gherkin Feature file. -These can be used to update the ``features`` directory. - -SYNOPSIS ---------- - -.. program:: python tools/pb2g.py [-g docker|local] [-o output] [-sv] source - -.. option:: -g , --gherkinizer , --output - - Where to write the feature file. - Generally, it's helpful to have the ``.textproto`` and ``.feature`` stems match. - The ``Makefile`` assures this. - -.. option:: -s, --silent - - No console output is produced - -.. option:: -v, --verbose - - Verbose debugging output on the console. - -.. option:: source - - A source ``.textproto`` file. - This is often the path to a file in a local download of https://github.com/google/cel-spec/tree/master/tests/simple/testdata. - - A URL for the source is **not** supported. - - -DESCRIPTION ------------ - -Convert one ``.textproto`` file to a Gherkin ``.feature`` file. -There are two steps to the conversion: - -1. Rewrite the ``.textproto`` into JSON. - This relies on common Go libraries, and is little more than a syntactic conversion. - -2. Rewrite the JSON copy of the ``.textproto`` into Gherkin. - This a little more fraught with special cases and exceptions. - The ``.textproto`` semantics can be confusing. - -FILES ------ - -:source: - A ``.textproto`` test case file from the CEL-spec repository. - -:output: - A ``.feature`` file with the same stem as the source file is written to the output directory. - ``basic.textproto`` will create ``basic.feature``. - -:interim: - An interim JSON-format file is created and deleted. - These are only visible in the event of a fatal error creating the Gherkin output. - -EXAMPLES --------- - -The ``basic.textproto`` starts like this: - -.. code-block:: protobuf - - name: "basic" - description: "Basic conformance tests that all implementations should pass." - section { - name: "self_eval_zeroish" - description: "Simple self-evaluating forms to zero-ish values." - test { - name: "self_eval_int_zero" - expr: "0" - value: { int64_value: 0 } - } - test { - name: "self_eval_uint_zero" - expr: "0u" - value: { uint64_value: 0 } - } - -The Feature file created looks like this: - -.. code-block:: gherkin - - Feature: basic - Basic conformance tests that all implementations should pass. - - # self_eval_zeroish -- Simple self-evaluating forms to zero-ish values. - - Scenario: self_eval_int_zero - - When CEL expression "0" is evaluated - # int64_value:0 - Then value is IntType(source=0) - - - Scenario: self_eval_uint_zero - - When CEL expression "0u" is evaluated - # uint64_value:0 - Then value is UintType(source=0) - -The source files have a "section" heading which doesn't have a precise parallel in the Gherkin language. -The sections become comments in the Feature file. +The ``features/steps`` Directory +================================ The ``features/steps`` directory has step definition modules that implement the ``Given``, ``When``, and ``Then`` clauses. @@ -168,62 +44,18 @@ The ``features/steps`` directory has step definition modules that implement the .. py:module:: features.steps.integration_binding - Provides step definitions for the features generated by the ``pb2g.py`` tool. + Provides step definitions for the features generated by the ``gherkinize.py`` tool. The ``features/Makefile`` ========================= This Makefile has the following targets: -:%.textproto: - This copies textproto files from the source directory - to the ``features`` directory. - The source is defined by the :envvar:`CEL_SIMPLE_TESTDATA` environment variable. - This will overwrite out-of-date files in the ``features`` directory. - - It's important to use **git** wisely and start with a clean branch of the project so changes can be rolled back. - -:%.feature: - This creates the ``.feature`` file from the ``.textproto`` file. - -:scan: - This phony target reads **all** of the ``.textproto`` files to be sure they can be converted to Gherkin. - If it concludes with the output ``"All files scanned successfully"``, then there are no surprising or unexpected features in the ``.textproto`` files. - -:clean-broken: - This phony target removes empty ``.feature`` files that may be left over when the conversion process crashes with a fatal error. - -:clean-features: - This phony target removes all of the ``.textproto``\ -based ``.feature`` files. - Manually created ``.feature`` files are left intact. - -:clean: - This phony target removes all ``.textproto`` and ``.feature`` files that are built from the CEL specification. - Manually created ``.feature`` files are left intact. +.. program-output:: make -C ../../features help Currently, the following feature files are built from the CEL specification. -.. code-block:: bash - - basic.feature - comparisons.feature - conversions.feature - dynamic.feature - enums.feature - fields.feature - fp_math.feature - integer_math.feature - lists.feature - logic.feature - macros.feature - namespace.feature - parse.feature - plumbing.feature - proto2.feature - proto3.feature - string.feature - timestamps.feature - unknowns.feature +.. program-output:: make -C ../../features conformance-feature-list The ``docs/Makefile`` ===================== @@ -231,58 +63,11 @@ The ``docs/Makefile`` This is a Sphinx ``Makefile`` to build documentation. For more information, see https://www.sphinx-doc.org/en/master/index.html +.. program-output:: make -C ../ help + The Project ``Makefile`` -========================= +======================== A top-level Makefile has a number of phony targets: -:build: - Runs ``uv build`` to create a distribution kit. - -:install-tools: - Pulls a ``golang`` Docker image and builds the ``mkgherkin`` image. - -:test: - Runs the Python 3.12 test environment to execute a quick test. - -:test-all: - Update the ``features`` files and run the full test suite. - -:test-wip: - Update the ``features`` files and run the WIP test environment -- these are tests flagged with @WIP markers. - -:test-tools: - Run a test of only the tools, then scan the ``features`` files to be sure they're still valid after the tool change. - -:docs: - Build the HTML documentation. - -:lint: - Runs the ``lint`` test environment to get code coverage, type hint checking, and other lint checks. - -:coverage: - Reproduce the most recent coverage report. - -:clean: - Remove a number of directories and their files: - - - ``.tox`` - - - ``.Python`` - - - ``bin`` - - - ``include`` - - - ``lib`` - - - ``pip-selfcheck`` - - - ``.json`` - -:benchmarks: - Run the applications in the ``benches`` directory to gather performance benchmark data. - - - ``large_resource_set.py`` - - - ``complex_expression.py`` +.. program-output:: make -C ../../ help diff --git a/features/Makefile b/features/Makefile index 03d94ab..e30b308 100644 --- a/features/Makefile +++ b/features/Makefile @@ -17,6 +17,13 @@ # Either have https://github.com/google/cel-spec checked out adjacent to cel-python # OR set CEL_SPEC_PATH to be location of the cel-spec project. +HELP_TEXT := "" +HELP_TEXT += "Available commands:\n" + +.PHONY: help +help: + @echo $(HELP_TEXT) + HERE := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) TOOLS = $(HERE)../tools CEL_SPEC_PATH ?= $(HERE)../../../google/cel-spec @@ -64,17 +71,25 @@ SOURCES := $(patsubst %.feature,%.textproto,$(FEATURES)) all : $(FEATURES) -# Copy the textproto from the cel-spec directory to keep our reference copy. +HELP_TEXT += " %.textproto copies the .textproto from the cel-spec directory\n" %.textproto : $(CEL_SIMPLE_TESTDATA)/%.textproto cp $(CEL_SIMPLE_TESTDATA)/$@ $@ -# Create Gherkin from the textproto serialization. +HELP_TEXT += " %.feature generates Gherkin feature from %.textproto source\n" %.feature : %.textproto uv run $(TOOLS)/gherkinize.py -v $^ -o $@ +HELP_TEXT += " clean cleans generated feature files\n" +.PHONY: clean-features clean-features: rm $(FEATURES) +HELP_TEXT += " clean cleans generated feature files and textproto sources\n" +.PHONY: clean clean: rm $(FEATURES) rm $(SOURCES) + +.PHONY: conformance-feature-list +conformance-feature-list: + @$(foreach file, $(FEATURES), echo $(file);) diff --git a/features/README.rst b/features/README.rst index 90ee2e8..57015a8 100644 --- a/features/README.rst +++ b/features/README.rst @@ -5,10 +5,10 @@ Acceptance Test Suite We start with https://github.com/google/cel-spec/tree/master/tests/simple/testdata as the acceptance test suite. -These files are captured as of commit 7e251cc. -This is from Nov 18, 2020, version 0.5.0. +These files are captured as of commit 9f069b3e. +This is from May 5, 2025, version 0.24.0. -We parse the Text serialization of protobuf files to create Gherkin test specifications +We parse the text serialization of protobuf files to create Gherkin test scenarios. See https://github.com/google/cel-go/blob/master/test/proto3pb/test_all_types.proto for the ``TestAllTypes`` protobuf definition that some tests expect to be present. @@ -21,16 +21,16 @@ Run behave. :: - PYTHONPATH=src behave features + PYTHONPATH=src uv run behave features To run a subset, pick a feature file. :: - PYTHONPATH=src behave features/basic.feature + PYTHONPATH=src uv run behave features/basic.feature Building the Conformance Test Features ====================================== -The ``tools`` directory has a ``pb2g.py`` application that builds the test suite. +The ``tools`` directory has a ``gherkinize.py`` application that builds the test suite. See the ``tools/README.rst`` for more information. diff --git a/pyproject.toml b/pyproject.toml index a94a57e..ee6b266 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,14 +29,14 @@ authors = [ requires-python = ">=3.9" dependencies = [ - "lark>=1.2.2", - "pendulum>=3.1.0", - "pyyaml>=6.0.2", - "jmespath>=1.0.1", # 3.13 needs at least this version, which started publishing wheels for Python 3.13. # Ref: https://github.com/google/re2/issues/516 - "google-re2>=1.1.20250722; python_version == '3.13'", "google-re2>=1.1.20240702", + "google-re2>=1.1.20250722; python_version == '3.13'", + "jmespath>=1.0.1", + "lark>=1.2.2", + "pendulum>=3.1.0", + "pyyaml>=6.0.2", "tomli >= 1.1.0 ; python_version < '3.11'", ] @@ -57,23 +57,24 @@ url = "https://buf.build/gen/python" dev = [ "behave>=1.2.6", "coverage>=7.8.1", + "google-cel-spec-protocolbuffers-pyi==32.1.0.1.20250512201741+dffb8c8cf781", + "google-cel-spec-protocolbuffers-python==32.1.0.1.20250512201741+dffb8c8cf781", + "google-re2-stubs", + "jinja2>=3.1.6", "mypy>=1.15.0", + "protobuf>=6.32.1", + "pytest-cov>=6.3.0", "pytest>=8.3.5", "ruff>=0.11.10", "sphinx>=7.4.7", - "tox>=4.24", - "tox-uv>=1.25.0", - "types-pyyaml>=6.0.12.20250516", - "google-re2-stubs", "sphinxcontrib-plantuml>=0.30", - "google-cel-spec-protocolbuffers-python==32.1.0.1.20250512201741+dffb8c8cf781", - "google-cel-spec-protocolbuffers-pyi==32.1.0.1.20250512201741+dffb8c8cf781", - "jinja2>=3.1.6", - "pytest-cov>=6.3.0", - "protobuf>=6.32.1", + "sphinxcontrib-programoutput>=0.18", + "toml>=0.10.2", + "tox-uv>=1.25.0", + "tox>=4.24", "types-protobuf>=6.30.2.20250914", + "types-pyyaml>=6.0.12.20250516", "types-toml>=0.10.8.20240310", - "toml>=0.10.2", ] [tool.tox] @@ -81,7 +82,7 @@ envlist = ["py39", "py310", "py311", "py312", "py313", "lint", "tools"] minversion = "4.24.0" [tool.tox.env_run_base] -description = "Full test suite" +description = "test suite" dependency_groups = ["dev"] setenv = { PYTHONPATH = "./src" } commands = [ @@ -95,31 +96,30 @@ commands = [ ] [tool.tox.env.tools] -description = "CEL conformance suite translation tools" +description = "conformance suite conversion tools" commands = [["pytest", "-v", "tools"]] [tool.tox.env.wip] -description = "CEL conformance suite" +description = "work-in-progress test suite" commands = [["behave", "--tags=@wip"]] [tool.tox.env.conformance] -description = "CEL conformance suite" commands = [["behave", "--tags=@conformance", "--tags=~@wip"]] [tool.tox.env.conformance-compiled] -description = "CEL conformance suite" +description = "compiled runner" commands = [["behave", "--tags=@conformance", "--tags=~@wip", "-D", "runner='compiled'"]] [tool.tox.env.conformance-wip] -description = "CEL conformance suite work in progress" +description = "work in progress" commands = [["behave", "--tags=@conformance", "--tags=@wip"]] [tool.tox.env.conformance-wip-compiled] -description = "CEL conformance suite" +description = "work in progress + compiled runner" commands = [["behave", "--tags=@conformance", "--tags=@wip", "-D", "runner='compiled'"]] [tool.tox.env.lint] -description = "Lint" +description = "check types, formatting, and best practices" commands = [ ["mypy", "--lineprecision-report", "type_check", "--strict", "--disable-error-code", "type-arg", "--show-error-codes", "src", "tools"], ["ruff", "check", "src", "tools"], @@ -127,7 +127,7 @@ commands = [ ] [tool.tox.env.coverage] -description = "Coverage" +description = "generate coverage reports" commands = [ ["coverage", "erase"], ["pytest", "-vv", "-x", "--cov=src", "--cov-report=term-missing"], diff --git a/tools/gherkinize.py b/tools/gherkinize.py index 3bf19af..3c36963 100644 --- a/tools/gherkinize.py +++ b/tools/gherkinize.py @@ -1,3 +1,113 @@ +# SPDX-Copyright: Copyright (c) Capital One Services, LLC +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2025 The Cloud Custodian Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and limitations under the License. + +""" +The ``gherkinize.py`` tool converts a ``.textproto`` test case collection into a Gherkin ``.feature`` file. +This can be used to update the conformance tests in the ``features`` directory. + +Synopsis +-------- + +.. program:: python tools/gherkinize.py [-o output] [-sv] source + +.. option:: -o , --output + + Where to write the feature file. + Generally, it's helpful to have the ``.textproto`` and ``.feature`` stems match. + The ``Makefile`` assures this. + +.. option:: -s, --silent + + No console output is produced + +.. option:: -v, --verbose + + Verbose debugging output on the console. + +.. option:: source + + A source ``.textproto`` file. + This is often the path to a file in a local download of https://github.com/google/cel-spec/tree/master/tests/simple/testdata. + + A URL for the source is **not** supported. + + +Description +----------- + +Convert one ``.textproto`` file to a Gherkin ``.feature`` file. + +Files +----- + +:source: + A ``.textproto`` test case file from the ``cel-spec`` repository. + +:output: + A ``.feature`` file with the same stem as the source file is written to the output directory. + ``basic.textproto`` will create ``basic.feature``. + +Examples +-------- + +The ``basic.textproto`` starts like this: + +.. code-block:: protobuf + + name: "basic" + description: "Basic conformance tests that all implementations should pass." + section { + name: "self_eval_zeroish" + description: "Simple self-evaluating forms to zero-ish values." + test { + name: "self_eval_int_zero" + expr: "0" + value: { int64_value: 0 } + } + test { + name: "self_eval_uint_zero" + expr: "0u" + value: { uint64_value: 0 } + } + +The ``basic.feature`` file created looks like this: + +.. code-block:: gherkin + + @conformance + Feature: basic + Basic conformance tests that all implementations should pass. + + + # self_eval_zeroish -- Simple self-evaluating forms to zero-ish values. + + Scenario: self_eval_zeroish/self_eval_int_zero + + When CEL expression '0' is evaluated + Then value is celpy.celtypes.IntType(source=0) + + Scenario: self_eval_zeroish/self_eval_uint_zero + + When CEL expression '0u' is evaluated + Then value is celpy.celtypes.UintType(source=0) + +The source ``.textproto`` files have a "section" heading which doesn't have a precise parallel in the Gherkin language. +The sections become comments in the ``.feature`` file, and the section name is used to prefix each feature name. + +""" + import argparse from datetime import datetime, timedelta, timezone from io import open diff --git a/type_check/lineprecision.txt b/type_check/lineprecision.txt index d04cc9f..a2aa003 100644 --- a/type_check/lineprecision.txt +++ b/type_check/lineprecision.txt @@ -1,13 +1,13 @@ Name Lines Precise Imprecise Any Empty Unanalyzed ------------------------------------------------------------------- celpy 351 79 12 4 256 0 -celpy.__main__ 551 243 14 61 233 0 +celpy.__main__ 551 243 12 63 233 0 celpy.adapter 163 34 3 9 111 6 celpy.c7nlib 1663 344 16 152 1151 0 -celpy.celparser 411 137 68 23 183 0 +celpy.celparser 411 136 68 23 184 0 celpy.celtypes 1483 386 15 235 810 37 -celpy.evaluation 3859 1128 251 242 2222 16 -gherkinize 1004 533 14 96 341 20 +celpy.evaluation 3859 1127 252 242 2222 16 +gherkinize 1114 533 14 96 451 20 test_gherkinize 5581 5014 135 4 428 0 xlate 0 0 0 0 0 0 -xlate.c7n_to_cel 1755 397 103 144 1105 6 +xlate.c7n_to_cel 1755 387 103 144 1115 6 diff --git a/uv.lock b/uv.lock index 8c01db4..e0d53ba 100644 --- a/uv.lock +++ b/uv.lock @@ -97,6 +97,7 @@ dev = [ { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, { name = "sphinx", version = "8.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "sphinxcontrib-plantuml" }, + { name = "sphinxcontrib-programoutput" }, { name = "toml" }, { name = "tox" }, { name = "tox-uv" }, @@ -131,6 +132,7 @@ dev = [ { name = "ruff", specifier = ">=0.11.10" }, { name = "sphinx", specifier = ">=7.4.7" }, { name = "sphinxcontrib-plantuml", specifier = ">=0.30" }, + { name = "sphinxcontrib-programoutput", specifier = ">=0.18" }, { name = "toml", specifier = ">=0.10.2" }, { name = "tox", specifier = ">=4.24" }, { name = "tox-uv", specifier = ">=1.25.0" }, @@ -1191,6 +1193,20 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/4d/e0/91ee50f1a020e2ed48d370a054f94b012ba0d757214a420ac43c9327f818/sphinxcontrib-plantuml-0.30.tar.gz", hash = "sha256:2a1266ca43bddf44640ae44107003df4490de2b3c3154a0d627cfb63e9a169bf", size = 15084, upload-time = "2024-05-22T13:34:43.339Z" } +[[package]] +name = "sphinxcontrib-programoutput" +version = "0.18" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx", version = "7.4.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "sphinx", version = "8.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3f/c0/834af2290f8477213ec0dd60e90104f5644aa0c37b1a0d6f0a2b5efe03c4/sphinxcontrib_programoutput-0.18.tar.gz", hash = "sha256:09e68b6411d937a80b6085f4fdeaa42e0dc5555480385938465f410589d2eed8", size = 26333, upload-time = "2024-12-06T20:38:36.959Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/2c/7aec6e0580f666d4f61474a50c4995a98abfff27d827f0e7bc8c4fa528f5/sphinxcontrib_programoutput-0.18-py3-none-any.whl", hash = "sha256:8a651bc85de69a808a064ff0e48d06c12b9347da4fe5fdb1e94914b01e1b0c36", size = 20346, upload-time = "2024-12-06T20:38:22.406Z" }, +] + [[package]] name = "sphinxcontrib-qthelp" version = "2.0.0" From 4d797b24d7772aed87ca3bfed5d06036c60f01a5 Mon Sep 17 00:00:00 2001 From: Dan Hudlow Date: Tue, 30 Sep 2025 16:10:10 -0500 Subject: [PATCH 09/13] regenerate conformance tests with whitespace tweaks --- features/basic.feature | 6 +----- features/bindings_ext.feature | 2 +- features/block_ext.feature | 2 +- features/comparisons.feature | 11 +---------- features/conversions.feature | 10 +--------- features/dynamic.feature | 30 ++++++------------------------ features/encoders_ext.feature | 4 +--- features/enums.feature | 5 +---- features/fields.feature | 10 +++------- features/fp_math.feature | 2 +- features/integer_math.feature | 3 +-- features/lists.feature | 5 +---- features/logic.feature | 5 +---- features/macros.feature | 7 +------ features/macros2.feature | 6 +----- features/math_ext.feature | 22 +--------------------- features/namespace.feature | 7 +++---- features/optionals.feature | 2 +- features/parse.feature | 5 +---- features/plumbing.feature | 5 +---- features/proto2.feature | 10 +--------- features/proto2_ext.feature | 3 +-- features/proto3.feature | 10 ++-------- features/string.feature | 8 +------- features/string_ext.feature | 15 +-------------- features/timestamps.feature | 12 +----------- features/type_deduction.feature | 10 +--------- features/unknowns.feature | 1 + features/wrappers.feature | 17 +---------------- 29 files changed, 39 insertions(+), 196 deletions(-) diff --git a/features/basic.feature b/features/basic.feature index 7a7af67..a5d913e 100644 --- a/features/basic.feature +++ b/features/basic.feature @@ -2,8 +2,8 @@ Feature: basic Basic conformance tests that all implementations should pass. -# self_eval_zeroish -- Simple self-evaluating forms to zero-ish values. +# self_eval_zeroish -- Simple self-evaluating forms to zero-ish values. Scenario: self_eval_zeroish/self_eval_int_zero @@ -83,7 +83,6 @@ Scenario: self_eval_zeroish/self_eval_string_raw_prefix_triple_single # self_eval_nonzeroish -- Simple self-evaluating forms to non-zero-ish values. - Scenario: self_eval_nonzeroish/self_eval_int_nonzero When CEL expression '42' is evaluated @@ -182,7 +181,6 @@ Scenario: self_eval_nonzeroish/self_eval_ascii_escape_seq # variables -- Variable lookups. - Scenario: variables/self_eval_bound_lookup Given type_env parameter "x" is celpy.celtypes.IntType @@ -208,7 +206,6 @@ Scenario: variables/unbound_is_runtime_error # functions -- Basic mechanisms for function calls. - Scenario: functions/binop When CEL expression '1 + 1' is evaluated @@ -229,7 +226,6 @@ Scenario: functions/unbound_is_runtime_error # reserved_const -- Named constants should never be shadowed by identifiers. - Scenario: reserved_const/false Given type_env parameter "false" is celpy.celtypes.BoolType diff --git a/features/bindings_ext.feature b/features/bindings_ext.feature index 3bf3ff6..5c7b178 100644 --- a/features/bindings_ext.feature +++ b/features/bindings_ext.feature @@ -2,8 +2,8 @@ Feature: bindings_ext Tests for the bindings extension library. -# bind -- +# bind -- @wip Scenario: bind/boolean_literal diff --git a/features/block_ext.feature b/features/block_ext.feature index f670626..1fbbca9 100644 --- a/features/block_ext.feature +++ b/features/block_ext.feature @@ -2,8 +2,8 @@ Feature: block_ext Tests for cel.block. -# basic -- +# basic -- @wip Scenario: basic/int_add diff --git a/features/comparisons.feature b/features/comparisons.feature index 3ac5b6a..534cc79 100644 --- a/features/comparisons.feature +++ b/features/comparisons.feature @@ -2,8 +2,8 @@ Feature: comparisons Tests for boolean-valued functions and operators. -# eq_literal -- Literals comparison on _==_ +# eq_literal -- Literals comparison on _==_ Scenario: eq_literal/eq_int @@ -471,7 +471,6 @@ Scenario: eq_literal/not_eq_dyn_double_uint # eq_wrapper -- Wrapper type comparison on _==_. Wrapper types treated as boxed primitives when they appear on message fields. An unset wrapper field should be treated as null. The tests show the distinction between unset, empty, and set equality behavior. - @wip Scenario: eq_wrapper/eq_bool @@ -868,7 +867,6 @@ Scenario: eq_wrapper/eq_proto3_any_unpack_bytewise_fallback_equal # ne_literal -- Literals comparison on _!=_ - Scenario: ne_literal/ne_int When CEL expression '24 != 42' is evaluated @@ -1157,7 +1155,6 @@ Scenario: ne_literal/ne_proto3_any_unpack_bytewise_fallback # lt_literal -- Literals comparison on _<_. (a < b) == (b > a) == !(a >= b) == !(b <= a) - Scenario: lt_literal/lt_int When CEL expression '-1 < 0' is evaluated @@ -1432,7 +1429,6 @@ Scenario: lt_literal/not_lt_dyn_small_double_int # gt_literal -- Literals comparison on _>_ - Scenario: gt_literal/gt_int When CEL expression '42 > -42' is evaluated @@ -1673,7 +1669,6 @@ Scenario: gt_literal/not_gt_dyn_small_double_int # lte_literal -- Literals comparison on _<=_ - Scenario: lte_literal/lte_int_lt When CEL expression '0 <= 1' is evaluated @@ -1939,7 +1934,6 @@ Scenario: lte_literal/lte_dyn_small_double_int # gte_literal -- Literals comparison on _>=_ - Scenario: gte_literal/gte_int_gt When CEL expression '0 >= -1' is evaluated @@ -2220,7 +2214,6 @@ Scenario: gte_literal/gte_dyn_small_double_int # in_list_literal -- Set membership tests using list literals and the 'in' operator - Scenario: in_list_literal/elem_not_in_empty_list When CEL expression "'empty' in []" is evaluated @@ -2255,7 +2248,6 @@ Scenario: in_list_literal/elem_in_mixed_type_list_cross_type # in_map_literal -- Set membership tests using map literals and the 'in' operator - Scenario: in_map_literal/key_not_in_empty_map When CEL expression "'empty' in {}" is evaluated @@ -2287,7 +2279,6 @@ Scenario: in_map_literal/key_in_mixed_key_type_map_cross_type # bound -- Comparing bound variables with literals or other variables - Scenario: bound/bytes_gt_left_false Given type_env parameter "x" is celpy.celtypes.BytesType diff --git a/features/conversions.feature b/features/conversions.feature index ac9e0f1..bd84b2b 100644 --- a/features/conversions.feature +++ b/features/conversions.feature @@ -2,8 +2,8 @@ Feature: conversions Tests for type conversions. -# bytes -- Conversions to bytes. +# bytes -- Conversions to bytes. Scenario: bytes/string_empty @@ -28,7 +28,6 @@ Scenario: bytes/string_unicode_vs_literal # double -- Conversions to double. - Scenario: double/int_zero When CEL expression 'double(0)' is evaluated @@ -137,7 +136,6 @@ Scenario: double/string_exp_neg_neg # dyn -- Tests for dyn annotation. - Scenario: dyn/dyn_heterogeneous_list No need to disable type checking. @@ -147,7 +145,6 @@ Scenario: dyn/dyn_heterogeneous_list # int -- Conversions to int. - Scenario: int/uint When CEL expression 'int(42u)' is evaluated @@ -242,7 +239,6 @@ Scenario: int/timestamp # string -- Conversions to string. - Scenario: string/int When CEL expression 'string(123)' is evaluated @@ -286,7 +282,6 @@ Scenario: string/bytes_invalid # type -- Type reflection tests. - Scenario: type/bool When CEL expression 'type(true)' is evaluated @@ -436,7 +431,6 @@ Scenario: type/type_type # uint -- Conversions to uint. - Scenario: uint/int When CEL expression 'uint(1729)' is evaluated @@ -500,7 +494,6 @@ Scenario: uint/string # bool -- Conversions to bool - Scenario: bool/string_1 When CEL expression "bool('1')" is evaluated @@ -572,7 +565,6 @@ Scenario: bool/string_false_badcase # identity -- Identity functions - Scenario: identity/bool When CEL expression 'bool(true)' is evaluated diff --git a/features/dynamic.feature b/features/dynamic.feature index 2cd81eb..0d3eb9c 100644 --- a/features/dynamic.feature +++ b/features/dynamic.feature @@ -3,8 +3,8 @@ Feature: dynamic Tests for 'dynamic' proto behavior, including JSON, wrapper, and Any messages. -# int32 -- Tests for int32 conversion. +# int32 -- Tests for int32 conversion. @wip Scenario: int32/literal @@ -134,7 +134,6 @@ Scenario: int32/field_read_proto3_unset # int64 -- Tests for int64 conversion. - @wip Scenario: int64/literal @@ -187,7 +186,6 @@ Scenario: int64/field_assign_proto3_zero # uint32 -- Tests for uint32 conversion. - @wip Scenario: uint32/literal @@ -285,7 +283,6 @@ Scenario: uint32/field_read_proto2_unset # uint64 -- Tests for uint64 conversion. - @wip Scenario: uint64/literal @@ -357,7 +354,6 @@ Scenario: uint64/field_read_proto2_unset # float -- Tests for float conversion. - @wip Scenario: float/literal @@ -503,7 +499,6 @@ Scenario: float/field_read_proto3_unset # double -- Tests for double conversion. - @wip Scenario: double/literal @@ -606,7 +601,6 @@ Scenario: double/field_read_proto3_unset # bool -- Tests for bool conversion. - @wip Scenario: bool/literal @@ -659,7 +653,6 @@ Scenario: bool/field_assign_proto3_false # string -- Tests for string conversion. - @wip Scenario: string/literal @@ -718,7 +711,6 @@ Scenario: string/field_assign_proto3_empty # bytes -- Tests for bytes conversion. - @wip Scenario: bytes/literal @@ -776,7 +768,6 @@ Scenario: bytes/field_assign_proto3_empty # list -- Tests for list conversion. - @wip Scenario: list/literal @@ -867,7 +858,6 @@ Scenario: list/field_read_proto3_unset # struct -- Tests for struct conversion. - @wip Scenario: struct/literal @@ -890,7 +880,7 @@ Scenario: struct/literal_empty Scenario: struct/var Given type_env parameter "x" is celpy.celtypes.MapType - and bindings parameter "x" is celpy.celtypes.MapType({'first': celpy.celtypes.StringType(source='Abraham'), 'last': celpy.celtypes.StringType(source='Lincoln')}) + and bindings parameter "x" is celpy.celtypes.MapType({'last': celpy.celtypes.StringType(source='Lincoln'), 'first': celpy.celtypes.StringType(source='Abraham')}) When CEL expression 'x' is evaluated Then value is celpy.celtypes.MapType({'first': celpy.celtypes.StringType(source='Abraham'), 'last': celpy.celtypes.StringType(source='Lincoln')}) @@ -898,7 +888,7 @@ Scenario: struct/field_assign_proto2 Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_struct: {'un': 1.0, 'deux': 2.0}}" is evaluated - Then value is TestAllTypes(single_struct=celpy.celtypes.MapType({'un': celpy.celtypes.DoubleType(source=1.0), 'deux': celpy.celtypes.DoubleType(source=2.0)})) + Then value is TestAllTypes(single_struct=celpy.celtypes.MapType({'deux': celpy.celtypes.DoubleType(source=2.0), 'un': celpy.celtypes.DoubleType(source=1.0)})) Scenario: struct/field_assign_proto2_empty @@ -937,7 +927,7 @@ Scenario: struct/field_assign_proto3 Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_struct: {'un': 1.0, 'deux': 2.0}}" is evaluated - Then value is TestAllTypes(single_struct=celpy.celtypes.MapType({'un': celpy.celtypes.DoubleType(source=1.0), 'deux': celpy.celtypes.DoubleType(source=2.0)})) + Then value is TestAllTypes(single_struct=celpy.celtypes.MapType({'deux': celpy.celtypes.DoubleType(source=2.0), 'un': celpy.celtypes.DoubleType(source=1.0)})) Scenario: struct/field_assign_proto3_empty @@ -975,7 +965,6 @@ Scenario: struct/field_read_proto3_unset # value_null -- Tests for null conversions. - @wip Scenario: value_null/literal @@ -1044,7 +1033,6 @@ Scenario: value_null/field_read_proto3_unset # value_number -- Tests for number conversions in Value. - @wip Scenario: value_number/literal @@ -1121,7 +1109,6 @@ Scenario: value_number/field_read_proto3_zero # value_string -- Tests for string conversions in Value. - @wip Scenario: value_string/literal @@ -1198,7 +1185,6 @@ Scenario: value_string/field_read_proto3_zero # value_bool -- Tests for boolean conversions in Value. - @wip Scenario: value_bool/literal @@ -1275,7 +1261,6 @@ Scenario: value_bool/field_read_proto3_false # value_struct -- Tests for struct conversions in Value. - @wip Scenario: value_struct/literal @@ -1305,7 +1290,7 @@ Scenario: value_struct/field_assign_proto2 Given container is 'cel.expr.conformance.proto2' When CEL expression "TestAllTypes{single_value: {'un': 1.0, 'deux': 2.0}}" is evaluated - Then value is TestAllTypes(single_value=celpy.celtypes.MapType({'un': celpy.celtypes.DoubleType(source=1.0), 'deux': celpy.celtypes.DoubleType(source=2.0)})) + Then value is TestAllTypes(single_value=celpy.celtypes.MapType({'deux': celpy.celtypes.DoubleType(source=2.0), 'un': celpy.celtypes.DoubleType(source=1.0)})) Scenario: value_struct/field_assign_proto2_empty @@ -1329,7 +1314,7 @@ Scenario: value_struct/field_assign_proto3 Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_value: {'un': 1.0, 'deux': 2.0}}" is evaluated - Then value is TestAllTypes(single_value=celpy.celtypes.MapType({'un': celpy.celtypes.DoubleType(source=1.0), 'deux': celpy.celtypes.DoubleType(source=2.0)})) + Then value is TestAllTypes(single_value=celpy.celtypes.MapType({'deux': celpy.celtypes.DoubleType(source=2.0), 'un': celpy.celtypes.DoubleType(source=1.0)})) Scenario: value_struct/field_assign_proto3_empty @@ -1352,7 +1337,6 @@ Scenario: value_struct/field_read_proto3_empty # value_list -- Tests for list conversions in Value. - @wip Scenario: value_list/literal @@ -1429,7 +1413,6 @@ Scenario: value_list/field_read_proto3_empty # any -- Tests for Any conversion. - @wip Scenario: any/literal @@ -1481,7 +1464,6 @@ Scenario: any/field_read_proto3 # complex -- Tests combining various dynamic conversions. - Scenario: complex/any_list_map Given container is 'cel.expr.conformance.proto3' diff --git a/features/encoders_ext.feature b/features/encoders_ext.feature index f4f133d..f7cfb54 100644 --- a/features/encoders_ext.feature +++ b/features/encoders_ext.feature @@ -2,8 +2,8 @@ Feature: encoders_ext Tests for the encoders extension library. -# encode -- +# encode -- @wip Scenario: encode/hello @@ -14,7 +14,6 @@ Scenario: encode/hello # decode -- - @wip Scenario: decode/hello @@ -30,7 +29,6 @@ Scenario: decode/hello_without_padding # round_trip -- - @wip Scenario: round_trip/hello diff --git a/features/enums.feature b/features/enums.feature index 1c91b92..78a68f5 100644 --- a/features/enums.feature +++ b/features/enums.feature @@ -2,8 +2,8 @@ Feature: enums Tests for enum types. -# legacy_proto2 -- Legacy semantics where all enums are ints, proto2. +# legacy_proto2 -- Legacy semantics where all enums are ints, proto2. @wip Scenario: legacy_proto2/literal_global @@ -126,7 +126,6 @@ Scenario: legacy_proto2/enum_as_int # legacy_proto3 -- Legacy semantics where all enums are ints, proto3 - @wip Scenario: legacy_proto3/literal_global @@ -284,7 +283,6 @@ Scenario: legacy_proto3/enum_as_int # strong_proto2 -- String semantics where enums are distinct types, proto2. - @wip Scenario: strong_proto2/comparison_true @@ -341,7 +339,6 @@ Scenario: strong_proto2/convert_string_bad # strong_proto3 -- String semantics where enums are distinct types, proto3. - @wip Scenario: strong_proto3/comparison_true diff --git a/features/fields.feature b/features/fields.feature index a8e94ca..9338119 100644 --- a/features/fields.feature +++ b/features/fields.feature @@ -2,8 +2,8 @@ Feature: fields Tests for field access in maps. -# map_fields -- select an element in a map +# map_fields -- select an element in a map Scenario: map_fields/map_key_int64 @@ -198,7 +198,6 @@ Scenario: map_fields/map_value_mix_type # map_has -- Has macro for map entries. - Scenario: map_has/has When CEL expression "has({'a': 1, 'b': 2}.a)" is evaluated @@ -217,7 +216,6 @@ Scenario: map_has/has_empty # quoted_map_fields -- Field accesses using the quote syntax - @wip Scenario: quoted_map_fields/field_access_slash @@ -257,7 +255,6 @@ Scenario: quoted_map_fields/has_field_dot # qualified_identifier_resolution -- Tests for qualified identifier resolution. - Scenario: qualified_identifier_resolution/qualified_ident Given type_env parameter "a.b.c" is celpy.celtypes.StringType @@ -279,8 +276,8 @@ Scenario: qualified_identifier_resolution/qualified_identifier_resolution_unchec Given disable_check parameter is True and type_env parameter "a.b.c" is celpy.celtypes.StringType and type_env parameter "a.b" is celpy.celtypes.MapType - and bindings parameter "a.b" is celpy.celtypes.MapType({'c': celpy.celtypes.StringType(source='oops')}) and bindings parameter "a.b.c" is celpy.celtypes.StringType(source='yeah') + and bindings parameter "a.b" is celpy.celtypes.MapType({'c': celpy.celtypes.StringType(source='oops')}) When CEL expression 'a.b.c' is evaluated Then value is celpy.celtypes.StringType(source='yeah') @@ -306,8 +303,8 @@ Scenario: qualified_identifier_resolution/ident_with_longest_prefix_check Given type_env parameter "a.b.c" is celpy.celtypes.StringType and type_env parameter "a.b" is celpy.celtypes.MapType - and bindings parameter "a.b" is celpy.celtypes.MapType({'c': celpy.celtypes.StringType(source='oops')}) and bindings parameter "a.b.c" is celpy.celtypes.StringType(source='yeah') + and bindings parameter "a.b" is celpy.celtypes.MapType({'c': celpy.celtypes.StringType(source='oops')}) When CEL expression 'a.b.c' is evaluated Then value is celpy.celtypes.StringType(source='yeah') @@ -340,7 +337,6 @@ Scenario: qualified_identifier_resolution/map_value_repeat_key_heterogeneous # in -- Tests for 'in' operator for maps. - Scenario: in/empty When CEL expression '7 in {}' is evaluated diff --git a/features/fp_math.feature b/features/fp_math.feature index 761a757..ada3434 100644 --- a/features/fp_math.feature +++ b/features/fp_math.feature @@ -2,8 +2,8 @@ Feature: fp_math Tests for floating-point math. -# fp_math -- Simple tests for floating point. +# fp_math -- Simple tests for floating point. Scenario: fp_math/add_positive_positive diff --git a/features/integer_math.feature b/features/integer_math.feature index 1d52ec6..927b49b 100644 --- a/features/integer_math.feature +++ b/features/integer_math.feature @@ -2,8 +2,8 @@ Feature: integer_math Tests for int and uint math. -# int64_math -- Simple tests for int64. +# int64_math -- Simple tests for int64. Scenario: int64_math/add_positive_positive @@ -252,7 +252,6 @@ Scenario: int64_math/uint64_overflow_mul_positive # uint64_math -- Simple tests for uint64. - Scenario: uint64_math/add When CEL expression '42u + 2u' is evaluated diff --git a/features/lists.feature b/features/lists.feature index db78f0d..83fadf6 100644 --- a/features/lists.feature +++ b/features/lists.feature @@ -2,8 +2,8 @@ Feature: lists Tests for list operations. -# concatenation -- Tests for list concatenation. +# concatenation -- Tests for list concatenation. Scenario: concatenation/list_append @@ -38,7 +38,6 @@ Scenario: concatenation/right_unit # index -- List indexing tests. - Scenario: index/zero_based When CEL expression '[7, 8, 9][0]' is evaluated @@ -128,7 +127,6 @@ Scenario: index/bad_index_type_and_true # in -- List membership tests. - Scenario: in/empty When CEL expression '7 in []' is evaluated @@ -198,7 +196,6 @@ Scenario: in/missing # size -- List and map size tests. - Scenario: size/list_empty When CEL expression 'size([])' is evaluated diff --git a/features/logic.feature b/features/logic.feature index bdd8f52..b16b45a 100644 --- a/features/logic.feature +++ b/features/logic.feature @@ -2,8 +2,8 @@ Feature: logic Tests for logical special operators. -# conditional -- Tests for the conditional operator. +# conditional -- Tests for the conditional operator. Scenario: conditional/true_case @@ -35,7 +35,6 @@ Scenario: conditional/bad_type # AND -- Tests for logical AND. - Scenario: AND/all_true When CEL expression 'true && true' is evaluated @@ -97,7 +96,6 @@ Scenario: AND/no_overload # OR -- Tests for logical OR - Scenario: OR/all_true When CEL expression 'true || true' is evaluated @@ -159,7 +157,6 @@ Scenario: OR/no_overload # NOT -- Tests for logical NOT. - Scenario: NOT/not_true When CEL expression '!true' is evaluated diff --git a/features/macros.feature b/features/macros.feature index 6b3349d..2742b40 100644 --- a/features/macros.feature +++ b/features/macros.feature @@ -2,8 +2,8 @@ Feature: macros Tests for CEL macros. -# exists -- Tests for the .exists() macro, which is equivalent to joining the evaluated elements with logical-OR. +# exists -- Tests for the .exists() macro, which is equivalent to joining the evaluated elements with logical-OR. Scenario: exists/list_elem_all_true @@ -71,7 +71,6 @@ Scenario: exists/map_key_type_exhaustive # all -- Tests for the .all() macro, which is equivalent to joining the evaluated elements with logical-AND. - Scenario: all/list_elem_all_true When CEL expression '[1, 2, 3].all(e, e > 0)' is evaluated @@ -120,7 +119,6 @@ Scenario: all/map_key # exists_one -- Tests for exists_one() macro. An expression 'L.exists_one(I, E)' is equivalent to 'size(L.filter(I, E)) == 1'. - Scenario: exists_one/list_empty When CEL expression '[].exists_one(a, a == 7)' is evaluated @@ -170,7 +168,6 @@ Scenario: exists_one/map_one # map -- Tests for map() macro. - Scenario: map/list_empty When CEL expression '[].map(n, n / 2)' is evaluated @@ -199,7 +196,6 @@ Scenario: map/map_extract_keys # filter -- Tests for filter() macro. - Scenario: filter/list_empty When CEL expression '[].filter(n, n % 2 == 0)' is evaluated @@ -243,7 +239,6 @@ Scenario: filter/map_filter_keys # nested -- Tests with nested macros. - Scenario: nested/filter_all When CEL expression "['signer'].filter(signer, ['artifact'].all(artifact, true))" is evaluated diff --git a/features/macros2.feature b/features/macros2.feature index a6530a7..5658c7d 100644 --- a/features/macros2.feature +++ b/features/macros2.feature @@ -2,8 +2,8 @@ Feature: macros2 Tests for CEL comprehensions v2 -# exists -- Tests for the .exists() macro, which is equivalent to joining the evaluated elements with logical-OR. +# exists -- Tests for the .exists() macro, which is equivalent to joining the evaluated elements with logical-OR. @wip Scenario: exists/list_elem_all_true @@ -74,7 +74,6 @@ Scenario: exists/map_key_type_exhaustive # all -- Tests for the .all() macro, which is equivalent to joining the evaluated elements with logical-AND. - @wip Scenario: all/list_elem_all_true @@ -138,7 +137,6 @@ Scenario: all/map_key # existsOne -- Tests for existsOne() macro. An expression 'L.existsOne(I, E)' is equivalent to 'size(L.filter(I, E)) == 1'. - @wip Scenario: existsOne/list_empty @@ -195,7 +193,6 @@ Scenario: existsOne/map_one # transformList -- Tests for transformList() macro. - @wip Scenario: transformList/empty @@ -245,7 +242,6 @@ Scenario: transformList/error_filter # transformMap -- Tests for transformMap() macro. - @wip Scenario: transformMap/empty diff --git a/features/math_ext.feature b/features/math_ext.feature index c3de5e7..c235a44 100644 --- a/features/math_ext.feature +++ b/features/math_ext.feature @@ -2,8 +2,8 @@ Feature: math_ext Tests for the math extension library. -# greatest_int_result -- +# greatest_int_result -- @wip Scenario: greatest_int_result/unary_negative @@ -140,7 +140,6 @@ Scenario: greatest_int_result/quaternary_mixed_dyn_array # greatest_double_result -- - @wip Scenario: greatest_double_result/unary_negative @@ -276,7 +275,6 @@ Scenario: greatest_double_result/quaternary_mixed_dyn_array # greatest_uint_result -- - @wip Scenario: greatest_uint_result/unary @@ -382,7 +380,6 @@ Scenario: greatest_uint_result/quaternary_mixed_dyn_array # least_int_result -- - @wip Scenario: least_int_result/unary_negative @@ -518,7 +515,6 @@ Scenario: least_int_result/quaternary_mixed_dyn_array # least_double_result -- - @wip Scenario: least_double_result/unary_negative @@ -654,7 +650,6 @@ Scenario: least_double_result/quaternary_mixed_dyn_array # least_uint_result -- - @wip Scenario: least_uint_result/unary @@ -760,7 +755,6 @@ Scenario: least_uint_result/quaternary_mixed_dyn_array # ceil -- - @wip Scenario: ceil/negative @@ -781,7 +775,6 @@ Scenario: ceil/dyn_error # floor -- - @wip Scenario: floor/negative @@ -802,7 +795,6 @@ Scenario: floor/dyn_error # round -- - @wip Scenario: round/negative_down @@ -847,7 +839,6 @@ Scenario: round/dyn_error # trunc -- - @wip Scenario: trunc/negative @@ -874,7 +865,6 @@ Scenario: trunc/dyn_error # abs -- - @wip Scenario: abs/uint @@ -913,7 +903,6 @@ Scenario: abs/int_overflow # sign -- - @wip Scenario: sign/positive_uint @@ -970,7 +959,6 @@ Scenario: sign/dyn_error # isNaN -- - @wip Scenario: isNaN/true @@ -991,7 +979,6 @@ Scenario: isNaN/dyn_error # isInf -- - @wip Scenario: isInf/true @@ -1012,7 +999,6 @@ Scenario: isInf/dyn_error # isFinite -- - @wip Scenario: isFinite/true @@ -1039,7 +1025,6 @@ Scenario: isFinite/dyn_error # bit_and -- - @wip Scenario: bit_and/int_int_non_intersect @@ -1078,7 +1063,6 @@ Scenario: bit_and/int_dyn_error # bit_or -- - @wip Scenario: bit_or/int_int_positive @@ -1105,7 +1089,6 @@ Scenario: bit_or/dyn_int_error # bit_xor -- - @wip Scenario: bit_xor/int_int_positive @@ -1132,7 +1115,6 @@ Scenario: bit_xor/dyn_dyn_error # bit_not -- - @wip Scenario: bit_not/int_positive @@ -1171,7 +1153,6 @@ Scenario: bit_not/dyn_error # bit_shift_left -- - @wip Scenario: bit_shift_left/int @@ -1215,7 +1196,6 @@ Scenario: bit_shift_left/dyn_int_error # bit_shift_right -- - @wip Scenario: bit_shift_right/int diff --git a/features/namespace.feature b/features/namespace.feature index 30011af..77ece74 100644 --- a/features/namespace.feature +++ b/features/namespace.feature @@ -2,8 +2,8 @@ Feature: namespace Uses of qualified identifiers and namespaces. -# qualified -- Qualified variable lookups. +# qualified -- Qualified variable lookups. Scenario: qualified/self_eval_qualified_lookup @@ -15,13 +15,12 @@ Scenario: qualified/self_eval_qualified_lookup # namespace -- Namespaced identifiers. - Scenario: namespace/self_eval_container_lookup Given type_env parameter "x.y" is celpy.celtypes.BoolType and type_env parameter "y" is celpy.celtypes.StringType - and bindings parameter "x.y" is celpy.celtypes.BoolType(source=True) and bindings parameter "y" is celpy.celtypes.StringType(source='false') + and bindings parameter "x.y" is celpy.celtypes.BoolType(source=True) and container is 'x' When CEL expression 'y' is evaluated Then value is celpy.celtypes.BoolType(source=True) @@ -31,8 +30,8 @@ Scenario: namespace/self_eval_container_lookup_unchecked Given disable_check parameter is True and type_env parameter "x.y" is celpy.celtypes.BoolType and type_env parameter "y" is celpy.celtypes.BoolType - and bindings parameter "x.y" is celpy.celtypes.BoolType(source=True) and bindings parameter "y" is celpy.celtypes.BoolType(source=False) + and bindings parameter "x.y" is celpy.celtypes.BoolType(source=True) and container is 'x' When CEL expression 'y' is evaluated Then value is celpy.celtypes.BoolType(source=True) diff --git a/features/optionals.feature b/features/optionals.feature index 766d806..7fc2017 100644 --- a/features/optionals.feature +++ b/features/optionals.feature @@ -2,8 +2,8 @@ Feature: optionals Tests for optionals. -# optionals -- +# optionals -- @wip Scenario: optionals/null diff --git a/features/parse.feature b/features/parse.feature index a5ee890..0698e57 100644 --- a/features/parse.feature +++ b/features/parse.feature @@ -2,8 +2,8 @@ Feature: parse End-to-end parsing tests. -# nest -- Deep parse trees which all implementations must support. +# nest -- Deep parse trees which all implementations must support. Scenario: nest/list_index Member = Member '[' Expr ']'. Nested indices are supported up to 12 @@ -52,7 +52,6 @@ Scenario: nest/parens # repeat -- Repetitive parse trees which all implementations must support. - Scenario: repeat/conditional Expr = ConditionalOr ['?' ConditionalOr ':' Expr]. Chained ternary operators up to 24 levels. @@ -138,7 +137,6 @@ Scenario: repeat/message_literal # whitespace -- Check that whitespace is ignored by the grammar. - @wip Scenario: whitespace/spaces Check that spaces are ignored. @@ -177,7 +175,6 @@ Scenario: whitespace/carriage_returns # comments -- Check that comments are ignored by the grammar. Note that carriage returns alone cannot terminate comments. - @wip Scenario: comments/new_line_terminated Check that new-line-terminated comments are ignored. diff --git a/features/plumbing.feature b/features/plumbing.feature index 0c15c55..f99699a 100644 --- a/features/plumbing.feature +++ b/features/plumbing.feature @@ -3,8 +3,8 @@ Feature: plumbing Check that the ConformanceService server can accept all arguments and return all responses. -# min -- Minimal programs. +# min -- Minimal programs. Scenario: min/min_program Smallest functionality: expr in, result out. @@ -15,7 +15,6 @@ Scenario: min/min_program # eval_results -- All evaluation result kinds. - Scenario: eval_results/error_result Check that error results go through. @@ -31,7 +30,6 @@ Scenario: eval_results/eval_map_results # check_inputs -- All inputs to Check phase. - Scenario: check_inputs/skip_check Make sure we can skip type checking. @@ -42,7 +40,6 @@ Scenario: check_inputs/skip_check # eval_inputs -- All inputs to Eval phase. - Scenario: eval_inputs/one_ignored_value_arg Check that value bindings can be given, even if ignored. diff --git a/features/proto2.feature b/features/proto2.feature index 7827ce6..f96580d 100644 --- a/features/proto2.feature +++ b/features/proto2.feature @@ -3,8 +3,8 @@ Feature: proto2 Protocol buffer version 2 tests. See notes for the available set of protos for tests. -# literal_singular -- Literals with singular fields set. +# literal_singular -- Literals with singular fields set. @wip Scenario: literal_singular/int64_nocontainer @@ -190,7 +190,6 @@ Scenario: literal_singular/bytes # literal_wellknown -- Literals with well-known fields set. - Scenario: literal_wellknown/any Given container is 'cel.expr.conformance.proto2' @@ -279,7 +278,6 @@ Scenario: literal_wellknown/bytes_wrapper # singular_bind -- Binding the singular fields. - Scenario: singular_bind/int32 Given type_env parameter "x" is celpy.celtypes.MessageType @@ -297,7 +295,6 @@ Scenario: singular_bind/int64 # empty_field -- Tests on empty fields. - @wip Scenario: empty_field/scalar_with_default @@ -362,7 +359,6 @@ Scenario: empty_field/map # has -- Tests for the has() macro on proto2 messages. - @wip Scenario: has/undefined @@ -534,7 +530,6 @@ Scenario: has/oneof_set_default # set_null -- - Scenario: set_null/single_message Given container is 'cel.expr.conformance.proto2' @@ -608,7 +603,6 @@ Scenario: set_null/single_struct # quoted_fields -- - @wip Scenario: quoted_fields/set_field_with_quoted_name @@ -626,7 +620,6 @@ Scenario: quoted_fields/get_field_with_quoted_name # extensions_has -- Tests for presence checks on proto2 extension fields. - @wip Scenario: extensions_has/package_scoped_int32 @@ -702,7 +695,6 @@ Scenario: extensions_has/message_scoped_repeated_test_all_types # extensions_get -- Tests for accessing proto2 extension fields. - @wip Scenario: extensions_get/package_scoped_int32 diff --git a/features/proto2_ext.feature b/features/proto2_ext.feature index 8a669f0..d112fe5 100644 --- a/features/proto2_ext.feature +++ b/features/proto2_ext.feature @@ -2,8 +2,8 @@ Feature: proto2_ext Tests for the proto extension library. -# has_ext -- +# has_ext -- @wip Scenario: has_ext/package_scoped_int32 @@ -80,7 +80,6 @@ Scenario: has_ext/message_scoped_repeated_test_all_types # get_ext -- - @wip Scenario: get_ext/package_scoped_int32 diff --git a/features/proto3.feature b/features/proto3.feature index 2b79c3d..94a7eb2 100644 --- a/features/proto3.feature +++ b/features/proto3.feature @@ -3,8 +3,8 @@ Feature: proto3 Protocol buffer version 3 tests. See notes for the available set of protos for tests. -# literal_singular -- Literals with singular fields set. +# literal_singular -- Literals with singular fields set. @wip Scenario: literal_singular/int64_nocontainer @@ -106,7 +106,6 @@ Scenario: literal_singular/bytes # literal_wellknown -- Literals with well-known fields set. - Scenario: literal_wellknown/any Given container is 'cel.expr.conformance.proto3' @@ -130,7 +129,7 @@ Scenario: literal_wellknown/struct Given container is 'cel.expr.conformance.proto3' When CEL expression "TestAllTypes{single_struct: {'one': 1, 'two': 2}}" is evaluated - Then value is TestAllTypes(single_struct=celpy.celtypes.MapType({'two': celpy.celtypes.DoubleType(source=2.0), 'one': celpy.celtypes.DoubleType(source=1.0)})) + Then value is TestAllTypes(single_struct=celpy.celtypes.MapType({'one': celpy.celtypes.DoubleType(source=1.0), 'two': celpy.celtypes.DoubleType(source=2.0)})) Scenario: literal_wellknown/value @@ -195,7 +194,6 @@ Scenario: literal_wellknown/bytes_wrapper # singular_bind -- Binding the singular fields. - Scenario: singular_bind/int32 Given type_env parameter "x" is celpy.celtypes.MessageType @@ -213,7 +211,6 @@ Scenario: singular_bind/int64 # empty_field -- Tests on empty fields. - @wip Scenario: empty_field/scalar @@ -271,7 +268,6 @@ Scenario: empty_field/map # has -- Tests for the has() macro on proto3 messages. - @wip Scenario: has/undefined @@ -430,7 +426,6 @@ Scenario: has/oneof_set_default # set_null -- - Scenario: set_null/single_message Given container is 'cel.expr.conformance.proto3' @@ -504,7 +499,6 @@ Scenario: set_null/single_struct # quoted_fields -- - @wip Scenario: quoted_fields/set_field diff --git a/features/string.feature b/features/string.feature index ca8afb0..ffddd27 100644 --- a/features/string.feature +++ b/features/string.feature @@ -2,8 +2,8 @@ Feature: string Tests for string and bytes operations. -# size -- Tests for the size() function. +# size -- Tests for the size() function. Scenario: size/empty @@ -43,7 +43,6 @@ Scenario: size/bytes # starts_with -- Tests for the startsWith() function. - Scenario: starts_with/basic_true When CEL expression "'foobar'.startsWith('foo')" is evaluated @@ -82,7 +81,6 @@ Scenario: starts_with/unicode_smp # ends_with -- Tests for the endsWith() function. - Scenario: ends_with/basic_true When CEL expression "'foobar'.endsWith('bar')" is evaluated @@ -121,7 +119,6 @@ Scenario: ends_with/unicode_smp # matches -- Tests for regexp matching. For now, we will only test the subset of regular languages. - Scenario: matches/basic When CEL expression "'hubba'.matches('ubb')" is evaluated @@ -170,7 +167,6 @@ Scenario: matches/unicode_smp # concatenation -- Tests for string concatenation. - Scenario: concatenation/concat_true When CEL expression "'he' + 'llo'" is evaluated @@ -219,7 +215,6 @@ Scenario: concatenation/empty_unicode # contains -- Tests for contains. - Scenario: contains/contains_true When CEL expression "'hello'.contains('he')" is evaluated @@ -263,7 +258,6 @@ Scenario: contains/empty_empty # bytes_concat -- Tests for bytes concatenation. - Scenario: bytes_concat/concat When CEL expression "b'abc' + b'def'" is evaluated diff --git a/features/string_ext.feature b/features/string_ext.feature index 320bf86..4e70825 100644 --- a/features/string_ext.feature +++ b/features/string_ext.feature @@ -2,8 +2,8 @@ Feature: string_ext Tests for the strings extension library. -# char_at -- +# char_at -- @wip Scenario: char_at/middle_index @@ -26,7 +26,6 @@ Scenario: char_at/multiple # index_of -- - @wip Scenario: index_of/empty_index @@ -114,7 +113,6 @@ Scenario: index_of/string_nomatch_index # last_index_of -- - @wip Scenario: last_index_of/empty @@ -196,7 +194,6 @@ Scenario: last_index_of/repeated_string # ascii_casing -- - @wip Scenario: ascii_casing/lowerascii @@ -236,7 +233,6 @@ Scenario: ascii_casing/upperascii_unicode_with_space # replace -- - @wip Scenario: replace/no_placeholder @@ -264,7 +260,6 @@ Scenario: replace/unicode # split -- - @wip Scenario: split/empty @@ -292,7 +287,6 @@ Scenario: split/unicode_negative_limit # substring -- - @wip Scenario: substring/start @@ -332,7 +326,6 @@ Scenario: substring/unicode_start_and_end_equal_value # trim -- - @wip Scenario: trim/blank_spaces_escaped_chars @@ -366,7 +359,6 @@ Scenario: trim/unicode_no_trim # join -- - @wip Scenario: join/empty_separator @@ -394,7 +386,6 @@ Scenario: join/empty_string_dash_separator # quote -- - @wip Scenario: quote/multiline @@ -524,7 +515,6 @@ Scenario: quote/empty_quote # format -- - @wip Scenario: format/no-op @@ -932,7 +922,6 @@ Scenario: format/default precision for fixed-point clause in a string variable # format_errors -- - Scenario: format_errors/unrecognized formatting clause Given disable_check parameter is True @@ -1038,7 +1027,6 @@ Scenario: format_errors/null not allowed for %o # value_errors -- - @wip Scenario: value_errors/charat_out_of_range @@ -1093,7 +1081,6 @@ Scenario: value_errors/substring_end_index_greater_than_begin_index # type_errors -- - Scenario: type_errors/charat_invalid_type Given disable_check parameter is True diff --git a/features/timestamps.feature b/features/timestamps.feature index 07486bc..bc9f34a 100644 --- a/features/timestamps.feature +++ b/features/timestamps.feature @@ -2,8 +2,8 @@ Feature: timestamps Timestamp and duration tests. -# timestamp_conversions -- Conversions of timestamps to other types. +# timestamp_conversions -- Conversions of timestamps to other types. Scenario: timestamp_conversions/toInt_timestamp @@ -35,7 +35,6 @@ Scenario: timestamp_conversions/type_comparison # duration_conversions -- Conversions of durations to other types. - Scenario: duration_conversions/toString_duration When CEL expression "string(duration('1000000s'))" is evaluated @@ -55,7 +54,6 @@ Scenario: duration_conversions/type_comparison # timestamp_selectors -- Timestamp selection operators without timezones - Scenario: timestamp_selectors/getDate When CEL expression "timestamp('2009-02-13T23:31:30Z').getDate()" is evaluated @@ -109,7 +107,6 @@ Scenario: timestamp_selectors/getSeconds # timestamp_selectors_tz -- Timestamp selection operators with timezones - Scenario: timestamp_selectors_tz/getDate When CEL expression "timestamp('2009-02-13T23:31:30Z').getDate('Australia/Sydney')" is evaluated @@ -173,7 +170,6 @@ Scenario: timestamp_selectors_tz/getSeconds # timestamp_equality -- Equality operations on timestamps. - Scenario: timestamp_equality/eq_same When CEL expression "timestamp('2009-02-13T23:31:30Z') == timestamp('2009-02-13T23:31:30Z')" is evaluated @@ -197,7 +193,6 @@ Scenario: timestamp_equality/neq_diff # duration_equality -- Equality tests for durations. - Scenario: duration_equality/eq_same When CEL expression "duration('123s') == duration('123s')" is evaluated @@ -221,7 +216,6 @@ Scenario: duration_equality/neq_diff # timestamp_arithmetic -- Arithmetic operations on timestamps and/or durations. - Scenario: timestamp_arithmetic/add_duration_to_time When CEL expression "timestamp('2009-02-13T23:00:00Z') + duration('240s') == timestamp('2009-02-13T23:04:00Z')" is evaluated @@ -265,7 +259,6 @@ Scenario: timestamp_arithmetic/subtract_duration_from_duration # comparisons -- Comparisons on timestamps and/or durations. - Scenario: comparisons/leq_timestamp_true When CEL expression "timestamp('2009-02-13T23:00:00Z') <= timestamp('2009-02-13T23:00:00Z')" is evaluated @@ -329,7 +322,6 @@ Scenario: comparisons/greater_duration_true # duration_converters -- Conversion functions on durations. Unlike timestamps, we don't, e.g. select the 'minutes' field - we convert the duration to integer minutes. - Scenario: duration_converters/get_hours When CEL expression "duration('10000s').getHours()" is evaluated @@ -359,7 +351,6 @@ Scenario: duration_converters/get_seconds # timestamp_range -- Tests for out-of-range operations on timestamps. - Scenario: timestamp_range/from_string_under When CEL expression "timestamp('0000-01-01T00:00:00Z')" is evaluated @@ -407,7 +398,6 @@ Scenario: timestamp_range/sub_time_duration_under # duration_range -- Tests for out-of-range operations on durations. - Scenario: duration_range/from_string_under When CEL expression "duration('-320000000000s')" is evaluated diff --git a/features/type_deduction.feature b/features/type_deduction.feature index 5572994..03afae8 100644 --- a/features/type_deduction.feature +++ b/features/type_deduction.feature @@ -2,38 +2,30 @@ Feature: type_deductions Tests for type checker deduced types -# constant_literals -- +# constant_literals -- # complex_initializers -- - # field_access -- - # indexing -- - # functions -- - # flexible_type_parameter_assignment -- - # wrappers -- - # type_parameters -- - # legacy_nullable_types -- - diff --git a/features/unknowns.feature b/features/unknowns.feature index 2a2a62d..d1eaef3 100644 --- a/features/unknowns.feature +++ b/features/unknowns.feature @@ -1,3 +1,4 @@ @conformance Feature: unknowns Tests for evaluation with unknown inputs. + diff --git a/features/wrappers.feature b/features/wrappers.feature index 3296b56..f601258 100644 --- a/features/wrappers.feature +++ b/features/wrappers.feature @@ -2,8 +2,8 @@ Feature: wrappers Conformance tests related to wrapper types. -# bool -- +# bool -- @wip Scenario: bool/to_any @@ -28,7 +28,6 @@ Scenario: bool/to_null # int32 -- - @wip Scenario: int32/to_any @@ -53,7 +52,6 @@ Scenario: int32/to_null # int64 -- - @wip Scenario: int64/to_any @@ -84,7 +82,6 @@ Scenario: int64/to_null # uint32 -- - @wip Scenario: uint32/to_any @@ -109,7 +106,6 @@ Scenario: uint32/to_null # uint64 -- - @wip Scenario: uint64/to_any @@ -140,7 +136,6 @@ Scenario: uint64/to_null # float -- - @wip Scenario: float/to_any @@ -165,7 +160,6 @@ Scenario: float/to_null # double -- - @wip Scenario: double/to_any @@ -189,7 +183,6 @@ Scenario: double/to_null # bytes -- - @wip Scenario: bytes/to_any @@ -213,7 +206,6 @@ Scenario: bytes/to_null # string -- - @wip Scenario: string/to_any @@ -237,7 +229,6 @@ Scenario: string/to_null # value -- - @wip Scenario: value/default_to_json @@ -248,7 +239,6 @@ Scenario: value/default_to_json # list_value -- - Scenario: list_value/literal_to_any Given container is 'cel.expr.conformance.proto3' @@ -258,7 +248,6 @@ Scenario: list_value/literal_to_any # struct -- - Scenario: struct/literal_to_any Given container is 'cel.expr.conformance.proto3' @@ -268,7 +257,6 @@ Scenario: struct/literal_to_any # field_mask -- - @wip Scenario: field_mask/to_json @@ -279,7 +267,6 @@ Scenario: field_mask/to_json # duration -- - @wip Scenario: duration/to_json @@ -290,7 +277,6 @@ Scenario: duration/to_json # timestamp -- - @wip Scenario: timestamp/to_json @@ -301,7 +287,6 @@ Scenario: timestamp/to_json # empty -- - @wip Scenario: empty/to_json From 124a0a042f205318f34aefd059781581ddefec80 Mon Sep 17 00:00:00 2001 From: Dan Hudlow Date: Tue, 30 Sep 2025 16:10:58 -0500 Subject: [PATCH 10/13] regerenate docs with updates --- docs/build/doctrees/api.doctree | Bin 4719026 -> 4754808 bytes docs/build/doctrees/c7n_functions.doctree | Bin 1085045 -> 1085064 bytes docs/build/doctrees/cli.doctree | Bin 56277 -> 56296 bytes docs/build/doctrees/configuration.doctree | Bin 13471 -> 13506 bytes docs/build/doctrees/environment.pickle | Bin 6995567 -> 6927311 bytes docs/build/doctrees/index.doctree | Bin 11515 -> 11534 bytes docs/build/doctrees/installation.doctree | Bin 5456 -> 5491 bytes docs/build/doctrees/integration.doctree | Bin 96306 -> 96325 bytes docs/build/doctrees/structure.doctree | Bin 85737 -> 85759 bytes docs/build/html/.buildinfo | 2 +- docs/build/html/.buildinfo.bak | 4 - ...f21512c6b94e19efccb4676b518bed63780ddd.png | Bin 25385 -> 34179 bytes ...5a23eb11f806bdd308ffac47a78125152ade58.png | Bin 62399 -> 75255 bytes ...fad8472301586150ff18c26187340f47bb62fa.png | Bin 18700 -> 20299 bytes ...894b154086c2a2ebe8ae46d280279ecce7cf8f.png | Bin 10507 -> 0 bytes ...c95188891b5d1267db67bb61a17e9fd7c08060.png | Bin 51913 -> 61763 bytes ...a77cea7a1f2555dbb1cb6cea10dc21777c76bf.png | Bin 63731 -> 0 bytes ...649ac296fc6bea0cee4f6cb2d92533640e6763.png | Bin 12911 -> 14067 bytes ...70d97dc7e0a41eb7666fff5d466440fc8d67cf.png | Bin 47538 -> 57948 bytes docs/build/html/_modules/celpy/__init__.html | 4 +- docs/build/html/_modules/celpy/__main__.html | 16 +- docs/build/html/_modules/celpy/adapter.html | 4 +- docs/build/html/_modules/celpy/c7nlib.html | 4 +- docs/build/html/_modules/celpy/celparser.html | 4 +- docs/build/html/_modules/celpy/celtypes.html | 18 +- .../build/html/_modules/celpy/evaluation.html | 50 +- docs/build/html/_modules/index.html | 7 +- docs/build/html/_modules/lark/tree.html | 373 --- docs/build/html/_modules/logging.html | 2451 ----------------- docs/build/html/_modules/re.html | 491 ---- ...f21512c6b94e19efccb4676b518bed63780ddd.png | Bin 25385 -> 34179 bytes ...5a23eb11f806bdd308ffac47a78125152ade58.png | Bin 62399 -> 75255 bytes ...fad8472301586150ff18c26187340f47bb62fa.png | Bin 18700 -> 20299 bytes ...894b154086c2a2ebe8ae46d280279ecce7cf8f.png | Bin 10507 -> 0 bytes ...c95188891b5d1267db67bb61a17e9fd7c08060.png | Bin 51913 -> 61763 bytes ...1267db67bb61a17e9fd7c08060.png.newa1v5axm0 | 0 ...1267db67bb61a17e9fd7c08060.png.newlpv3pfrv | 0 ...1267db67bb61a17e9fd7c08060.png.newv2qg6lg_ | 0 ...a77cea7a1f2555dbb1cb6cea10dc21777c76bf.png | Bin 63731 -> 0 bytes ...55dbb1cb6cea10dc21777c76bf.png.new1cmjxeth | 0 ...55dbb1cb6cea10dc21777c76bf.png.new4bry_4gw | 0 ...55dbb1cb6cea10dc21777c76bf.png.new58drlmt5 | 0 ...649ac296fc6bea0cee4f6cb2d92533640e6763.png | Bin 12911 -> 14067 bytes ...70d97dc7e0a41eb7666fff5d466440fc8d67cf.png | Bin 47538 -> 57948 bytes docs/build/html/_sources/development.rst.txt | 243 +- docs/build/html/_static/basic.css | 8 + docs/build/html/_static/searchtools.js | 13 +- docs/build/html/api.html | 155 +- docs/build/html/c7n_functions.html | 4 +- docs/build/html/cli.html | 4 +- docs/build/html/configuration.html | 4 +- docs/build/html/development.html | 279 +- docs/build/html/genindex.html | 71 +- docs/build/html/index.html | 7 +- docs/build/html/installation.html | 4 +- docs/build/html/integration.html | 4 +- docs/build/html/objects.inv | Bin 3795 -> 3770 bytes docs/build/html/py-modindex.html | 15 +- docs/build/html/search.html | 4 +- docs/build/html/searchindex.js | 2 +- docs/build/html/structure.html | 4 +- 61 files changed, 346 insertions(+), 3903 deletions(-) delete mode 100644 docs/build/html/.buildinfo.bak delete mode 100644 docs/build/html/_images/plantuml-59894b154086c2a2ebe8ae46d280279ecce7cf8f.png delete mode 100644 docs/build/html/_images/plantuml-a8a77cea7a1f2555dbb1cb6cea10dc21777c76bf.png delete mode 100644 docs/build/html/_modules/lark/tree.html delete mode 100644 docs/build/html/_modules/logging.html delete mode 100644 docs/build/html/_modules/re.html delete mode 100644 docs/build/html/_plantuml/59/59894b154086c2a2ebe8ae46d280279ecce7cf8f.png delete mode 100644 docs/build/html/_plantuml/60/60c95188891b5d1267db67bb61a17e9fd7c08060.png.newa1v5axm0 delete mode 100644 docs/build/html/_plantuml/60/60c95188891b5d1267db67bb61a17e9fd7c08060.png.newlpv3pfrv delete mode 100644 docs/build/html/_plantuml/60/60c95188891b5d1267db67bb61a17e9fd7c08060.png.newv2qg6lg_ delete mode 100644 docs/build/html/_plantuml/a8/a8a77cea7a1f2555dbb1cb6cea10dc21777c76bf.png delete mode 100644 docs/build/html/_plantuml/a8/a8a77cea7a1f2555dbb1cb6cea10dc21777c76bf.png.new1cmjxeth delete mode 100644 docs/build/html/_plantuml/a8/a8a77cea7a1f2555dbb1cb6cea10dc21777c76bf.png.new4bry_4gw delete mode 100644 docs/build/html/_plantuml/a8/a8a77cea7a1f2555dbb1cb6cea10dc21777c76bf.png.new58drlmt5 diff --git a/docs/build/doctrees/api.doctree b/docs/build/doctrees/api.doctree index ac84847e82529ffdf20f040f6616a48072c91cc2..94f3937c78a66b346d41f99346d797209b67fd8d 100644 GIT binary patch literal 4754808 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�=?y?$-cJNDSM z!kl`^x0Iw-d#Mk4van51jGKNyH=Ay!4cNz1i;bc+$5GM5u$*9H zp#~hvZGO-c?Ix$hZeng}u2W0+;#g6Zaamp<%WBVEkxAMu6YbLb)W!;?@qU|c3hl|C zD;nz8a5)rg>aMk8BQ#Afg-V4Adi{FYMpZGgc=Sdx_jS_T)}ArRYZO%2LYJz73Sr?P znFeKdmkYU}T&=lBp0F!ZDK_`ye@8E~nbaKoO z`Ky*;;?z)Tju-M2zCVvDGUr7Qsk{%}xHpI=F;7YCCu`Yi$`z}%OmQgd)kNtsDtkXx zrNZ}FZ|y~!sSaDM^i!%qY?`_Ih!~s0wH_C6Ny5T zq?guJ;ds7SbeSd*SYS*ZcsD!$ih1hx*;eCi7YmRTV(>NxJ1WD5q&JPT1s$S0;lA}3l)qI45uv7#grt5eVzNMnj9ZK2=!@ZLVgFv%~ z;hX8h@IWjK5+qF+7K9c~6o*A-_s915Vnut|QO3RfxbpTqaf0FLCnn|T)`b66dQU$S z^K@#$&k@#5pE9*}2hXtm4X=eJbVZ)j?$VpSv6lQU z?rb)<<{R8oc}R@!h`Ios-3QLxGI0ph@z| zjWk7^u*myM&E_OAXk5=5wJjGXn&A)qiQ|ftZ-jAX7InWQx=G{8_Un)aofXv#?xUgA zQr2BNLCuOqPY~21Rl>?&KrKtV7T`~^#BxAmqEPrt1tkJ�!Zw63!2+ewXQVk*Wj> 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�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%0D8v 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
<)Ng2Wi?620R~M3ZL+&ir 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 literal 4719026 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 &HB`JOeqcCjIvP)ND?OPCvORt0+ZIxK-V6o$u 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

N#gbOD7{yepa)CyU2M0nZ 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

nNLSmUmPgafY1{q|ulu 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 IYES3?1HXWD{r~^~ diff --git a/docs/build/doctrees/cli.doctree b/docs/build/doctrees/cli.doctree index 7892a28cbf62250624464cabcb04f733cf2d504a..2f6e8d7e7849969e9c19c014c15abf7266888584 100644 GIT binary patch literal 56296 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 literal 56277 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 agh5xDB~mU6BRI0{Xx6`{iT+ diff --git a/docs/build/doctrees/configuration.doctree b/docs/build/doctrees/configuration.doctree index a82ec523d274f70224110907c4a78cbc3f788050..4a0eaa958a7cb43f2d61c7568be617ab22668fce 100644 GIT binary patch literal 13506 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 B%I*LF literal 13471 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 diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 20ea89250d3bc35b2d68512d7d0e6f788a39a7ff..57c3fce262ccade86e4649c6f733a4b60921f897 100644 GIT binary patch literal 6927311 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ⅇFv^CarZ)g2AqEJL0U3eeWwB+Tj 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≫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%0Dkoj$Q%uhoYK+;2{)j@p~NuUPsMH=brsi!b}x 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

mxaCtRW@w=hH{}g zC?^#@MLiCAN^izod-5<1mKTBUA^9ss;=QS4DdvtWuTmuQS^9_~@hs`PC&Ix#dpcZK zqs~d6gKa?L<+9M%Ah3Z(I?J3$!B8O-3kzV_@UWd|w7d+|!}g&_ygR9f&7?@?vvd$e z;#t!7PlSi{Qzq0p>GQA?X}oc=IBisBM8^HkY4)x!D6bIp#R%@NlHBZUiik?0xLJ_H zhMiqS!;PzmS_o=qzotmMQK_B%ks_JT(i0SkXGz~d5q9<>WkS7^K0Et>#>-`)uYtVj zPV%u8&M>(=R(wn*vEgLv(SUg|sFQt(BJm!jPWBCoWIju~Q6!!veHTSI*|#avC)~+8 zXuMn&`Wko}G9?o`gkqsGC?@7X*zm6tXso;h)W6Q6NW3$te_c$G%xCF(io~;|@0|$$ zx|1@Y#!25w>~R_|mxaCt{x)67z+RwSs1AyO`4l!B>^&MRF9LP2F=xV6Fz-$3U~5q% z^I6)MBJnKgyC=fIwxmp`bJFKvyU=*KEc7+-wr@)YwjaepWl#*vgRtRWb7-u*1k}I! zC=%~X>R*c}lKCv1LXmiu^u1GMs?&Lt3pJ18VfCHrRO3dA>uAhe9*SaP_I}(x^hnDx z)#-tu$BLWk^o#|hn5j-Ln@6Ii{2oQBx7|csMKk6sxX?{zHTAoSMrr1lJw)r$K)JtA zJ&dPFTn|c?V)hViO_9uJX%~vbv!p*rN1SBrN12j!jrCoSb7;I=7Wx_lFKUv`Gx{hQ zs)TZ$5#+FOs(i#N)9PG1a!__nDob)-^1~gtS3w;fwVM>yTO{8e3 z6pD#SAU0NFJJEP~DX5R_Ly>rgQXiX1k<4f5Ad1AZr0<~!AM2+~sCm-oV<*yhxh(WG zs6N%{Y>I|Tq54?eraINQ9=nRhi%U^$7!w|#Q|*nSDiAx>skS$BT2Iepmh?F%j}jMh zuHjwCxsDhV<%~H_Jh!5FXdmlr?mn^8a+%CtBgEjJr!LH7#xE?+FE%=di65Lkc4Q_q zIiK%z#}_pm(J;Bckn1h~drH2qr88IgqOT`g=*V}Kzucp%Q2y869le!*mM6oAx0#yn za^G#gLQhB6obosB-!V7WTgcAsE`MEF`it*d(3rkN8; zxlw-3&y@0#lsENNkr6j5$_thBDlbgSwjPw76a7O02k_3F8XdiV`FBT=7GV$5W{zr| zAs?#qfS?v#LYF%)(qO@Xyo^MbJ8w}WV5T)@Y1BEgHBBwq($v0|taG&RBG;1^i~kGd zm51%|Ea{~hxC@4))zv9jGOY$M5}hv8ScXk#w7d*dtY4u>=Eb@bMdDe~i#2$Y14*s> zP_krd4RY9!YbyX~4V~RI*o5 zB=eH}HAUiC(o5F6a#>RAA1PKcwR#XXg!(Lvm6w1D^*yYL zb7PeUXuMn&`WjT(u<;D#LUmA1DtwB19P*SRc-vQ;1!7CVfVhW?v>ttp2Fr^;_mF%{ zk$7(^S&F$K#>(fxRlE5ttxJ)3mh{~d;b7w_6Y8AwIoNhIUM>rL4FVfzq^{nJf}uhv z78by;;bF6Aw7d+|!{$;X-ksFL4yQ=wv$TXF@hs{4C&I(dpiHQB(&u59(RjHm^fd@> ztCCFYW=e)Cp_o{Z!-k99N5kcXpf2_lMdJNQUF@F}$$XaHp-4PS`VNY4vE_dX7p$mv z(&u91XuMn&`Wnc4?Ia)DjIyCxC_W~W*l@CKXu!M})XDasNW4d>lO0Hr%x5V_k$9H$ zT@>MDy_5-cPx_qfSQ;;vg}w&fK1|8PPNP_;42p?)5H|el5*jNn0rjsNDH88Y>R-R7 zNanNjFh$~7()Uh;fBls*p~gv{f4xQH<+9M%z~7xK8Q7@vO|FO)1M?|tIM~`WSY8C` zV4F}R-ka3HzCw}AXK5#j#IvODo(KoqhcbP_9jukc%VnXjfwya0GO&Xw7Ak{cU><}G z|2l@o%1c1~>r{%wJCpj?`4q`~mad{mJWKlCsWMCF*OUu2kFpA@?<}1f_g6efW9ITu z6dSYUd{uV#CYUq7n0QP%qnR>DX46e=1XK7uE#IvODo(KmUPnl5Xq|d>&qw#WC=xZR2 zu#rq`FN%grp_rHiV#CK~(Rg_&sE^I1NW4R-j~z~t%x7r{MdDe~_fUk7ok5vU^Q6zm zE~D{sS?Fs}eU{G66b+R^^|8Pt4J+%h`)Itl6tzvQDbK5U@h3e}l?q_|nd zYTMaLDGi2Vrn$6Y*UzWc8?-6FeRE-pGpiYEqEXc41)W_9Ko#}~`UcO4%d0yG%F zTJD>8V}iuUlZE2v6DGR+E01!~O0|`LN&DF9SsEPp(Ks-&yT9n{cuckYwD04Lx=4U` zohg2W`)y9%`&YO4*AnO8(qm8QvA6VCC_VO-9_P7_Wz5?}X8a5c0=M*!5+jp5OlRqm z#7P+#lj{;=kaE36v9I7zR}6!{zkNslSNa&iUw(%GjH*bZbGQ7;^aDp{GNsDTDKus$ zHB<&9iTOyw^PDPUm`bCgKF#x-CN#7ROT(LCri{hdxd(D@1rj*$Rhb6X=zQQFu|E_KRTfX{ zxl<3<7Z2ql{44JF4=zMPziXhc`G9<9pBPBkJgq11uX>9%Fwvr^_7L(zEam8zLr*&PqLig;MY%w@cBl52&2m$RAs#7>oQ zl55IgOy5epFuVfsM`aFsNx(~nS0Gb{hmHDkTmv7Gcw4R;opB*YIYXTJromA{6KR!6 zw1ZCsC(xFjktfd%J{1x{>B+$Iv-EXv!ffe@z+~BK6J<-^Cr^?sJ*7;L9eg%0Ikxmf zrv^m3JNhA0VkQ_7Z1uri4a$xfmH^I}lR?oN@+OZEVY#IvNAtas}>Nv&-ZE16n7 z2pd8@l*Y4oaw;!INN1(Yk9Qhf>=QoVr&%Zosz`a6nbUaAjK zB%UR`RK1&7NlJZ=VkJ|m2Vp~~Z_-$K38+vS`2;XGt&Ai2KQ`PnnQPmA$id zxSvdop8$NB2FjC9CAuR;GVi5RDH6|;UZTMpc1U*mJxYdzs_ZNda@cUxZW=Bx1eNOo ziez4{0~Cp8NiWyXZ5brR{+PlgQ)~#uhG?&(5%Y3T(cVgt%!~F96p3d^FWM>>(*Bup zCDW@mYd&b;k3UM>rL4XSL|m`Ax#9h8#_ zpQ0XzJf#TU_P*$0%*WGUc@gLyk~1k1?@c93F?&dUPLa%K>6a9VXGz~Z5e{|-WkQ{k zJ_mb@#>-`)uR&k~jdYgzcM66Ip;%Y|!-j{wOQYpwpdL2*660%R>S3RwNanM&5k(pT z58Hw=q1H*ChfSgJa#`p-EV!*oGO>Lr8LEV0VnGfYE;gHn%L_qWtU!@?e^M9wAw@Eu zrIRTV&yv1_B35GOQYO?p>2tAbX}nw(`Wnc4?Ia)jEoDQsP<%`#vEgKo(13X{sFOWU zk$8_%C;Kl&GM}aYQ6!!veHTSI*-Dqfl{D&}^f_4rjhD+pUjuI+retDG6bqF>F)VZ*_$ror+ePzSq>BJtj&4t6g^GM}X?O*CIwyS&_92az z%R*lRZ`ZbDU@Kl`av`i3mTYicE$gNmwxP^wk7{QC0q!W$_MoXfca0EGQoOA3*!!_Ti zQz;T}RBC76qe$knd{u zV#CX>q!IIS(52a}6p42!^|C)uB=cGNGezQA()Uq>m;Hk>q4r7N((HX2FPDYB2L3!` z$;Li&g~=tdVq-pq4F~%I4VD*yI@snEiT5UTu&+}j^I6)JBJnKgyC=fI_NPpra0hFr z@p4({Yv5nTEjidc%7yBnI#}hd>dB@6R{Qup=Hs#BX|TKq)WOcANW3?xgZ-Q$na|QM zDH6|;zI!4Z><-F=IwyT=u*Yb;To(EoNW+jN6Z<M;Xnf; zT0$d~TI3N*M^kl!sZK|U_pV{8(~l?;Xt**GT{!%dB7s9<87Wk_;i*ny)Y*(w4^Yz| zK>geENM`}pQYA%s_mEF@x^l3SY1`aIg9U9L!jbiP_+8J4@s+{s~$VqJqGnHOsVMXI-0gSXp|)Y?SJlBqSwVMDHyX}G)) z)LW-fB=d6pK1JeL(tE3XR|QG1os=z^U}X{;l0AwB%!@%KyObiCm+UzdiDyYKS??Np zNv)SstYm8SAZ!TrHX1800Tt@K6v@0$pQK1UOM0RD*GfxDeTi}ss4L#iLrV0jU! zR9CzjE~L#%bsdVtv!s`*cU7#U)J-W?GNpPDHiSBf#>z`Tg}OUMGB4BvC=$<-UZ@cl zrnONfq*CQ?Z*{mZt;SCP4yA$eK#_Qs^cs%X@%UrPgtV)ib=B`m;A(&CjJd_nl{8*13w;f$Y}mM! za-ljXClx+LJq~$FZ^m4E@+TTBF9O{|@)wH4dsE3$%&l4eO_9uJ>3xdCv!w5y2nYMj zwQyaHIwyS&_5~U*mxaCtfekd$S?1;x3>8ALumFY)58Iwb%gaDLY;TIhyOVm@cPWzj zEVWZ4o+W+%M0nUd%7j`ceI9l^jhD+pUxVPbD#^soq-3ZPiirg|Y`ECvG+bT?>SDj5 zNW4F(i~S!(GM}Z#C=$<-zJnrM?C+Eb^-lU+>|Gi!mxaCt@?Ja1$3|aga#gJOm`q~B z$v#g5=Ea~+)<}_fk5VW58bvanr70ANXGz~h5l*%*W%`6W*=!mwmxaCt-absp#0nG( zl|eBv55k6j9YQv+YimPeNTpo&IW43(UHuOl#GS%tcp~s4w>hz=qq?oBr zFPTT8ru;TVs<+)lTs*Vf^>Cq^%xda)@r=^UF@v=v1% zpQXtZiDyZFkd8RXm`0hBb&d7Sk8LzwE(?7Pg4Z%h=NUbe3{^ro&j@nZIMrB8!{vpb zE>@&Syg#XnT|kk{XX$E+#IvODpa>VcjWVI$QBE_gyVyfCUM>rL4MNwqNk;Y@g+s+q zj4Xs=!^_^J5%Y3TFB^FSTn+OsrCzogMKYhI^(hk1lD>~3yletxLhX}2FWZsE%VnXj zfj>q`vazX@3)MlfF`vSQgSF6Lc@e0CbyFnXo7BM;P$ctN8lXr#OZx7KaIha!Ce%6U zbFeFEyj&Lg8u(XlOAdA`N)9PBeU!qqeCob)-^7ihd(7Wx`UGn6C~+nl1IQYa=Sf!J7yZBOInrJz2x zH$~zdN`36R6v=#++9?vxlD>x`d~6g7do?B5o zw2yT*bD!90xlCrS5n|rYQx|43;};g^7aN_!#1Bp%J2I1*oX>Z0 zJtg1Q(wVD#(btnLbmY6rU+&RWDF18kj^4^Y%L8G=+f2=Ox$m}Lp{Jv3PWc=6@0gqG zEoA3*m%pwo{l)h!Xw7wY_c!I{Wjp&yzojWOMruK!zgxUhll!AHD!4Pr# zp{Oqf0#jZrhp9YY30ip}FcYVOwsW?#Gb<7~V@6X`)65B_+$cZiXG(cV%A5MC$cUR2 z<%LRml^3RETMx?4iTG{F|aki?Bb@W{zr|A)lplub>uPLYF&#r@?{) zc^Qc=cV4GRz)Wk*QsySvnx>X)X=-0f);U^uk?To|#s7u!$}{$Omh@5$-26h)>M9g0 znN|ZBiB1=4EW<`LT3!Y!)-5QKd9iL!k$9H$Vh!HpKvL`8lq{KAgB&*G`U4s+F9elq z7ez8J*CQwr&yrrQ^0n-eV2`J4$pkBt*pTeGG+ss4L#m&r!SW(d zsWwt1^HTj9MdDe~OVzs;QBvv@ij_>M9)t~{PN%W*5>TPerby<6TA)ZgOM0P3Tn_X@ z%7j#^{OO|(mjl)K3Bc(zP@a4$(VtNy^Af$5BJnKgB^tcmLbB7}QZgh|T$?Zir{TuaTbUz1q0$9F4B7R6&frr0^LLMAw}Z7sbneUh8Qc}0@twS zv$PIH;#tynPlSVQN|{jSq|d=7(RjHm^fd@XNtu8le*YHD3bXsy-AUHmh>GI;bJ3ig$q{HJLz+=u{2&T3w;gby>^n1 zeUY-ES|~mylh|;wuhW2eF{qR6N|AVvQYYJ=BAL%p3q|5t(sxmWlXX)j)II5QvZHCd zTo(Eoc>6FV6Z;XxLS;})%!9DuUq7d@@)A)0`Xxo;ok{)c4vJ(xOMjwBJWKlCiSVz# zP$twk>GQAGX}nw(`WpDVb0q`I{MzJ-STQi4!iIx=jt0w%Kpku&io|=9I@lHz$$XZ! zr${_Y`tFHvu)QhMC)~k)K;z}I(AU7*wJjM~7sWzlPz=n2u;E`nq_Of6Q2#oaBJs|o z{&g-zGM}Z(DH6|;zIUq3()ktTLd~PB!sSbIjJEuhBrw>tPB- z;(AcB6ti_`Uy5WtOFy7UJWKk6bi_$U7iCJ;HP$yj{*cDYWudP@@LDG6JmX|ahAN?) zX9PKHoND}xhRX{D)lkP$^U& z3ry0mvL5>bjTe`qwy8Dcc{NX7CK4#E_f7yqfl{ox=x5L_|-Fs9Lo` zwr5VRP#hRHYi_=+uQS)%T$(x4?9ZGj4lLi3o88e?bT$_ga|T9>FWU00Mdx)fA*W2; zCSaney-^lQRt}k;$z;m|EgGG9?mHYJ9&%0;sx$jYakGlm!sBp?jw>(``w{MsyLirg z_g}BMMRvbjTy%~UPYkTkB1ZYlnp0>TUo0cvb$oaT&|m;-xNqW(2@)eu7K)!wnCSAa zJjz8Y)mHu`?PIHFX>j02cH-^a<^F2K9a6u-j#HYe}>t6ThQiF0u2 zv8VLdTY4;%9{Wm<^W4WW=ItUgeg+1CTlzkiKF!h?-!O6eVb`dPw;Ps5uD7=`Ax<2#O6#pg=T-TjGq8GimC{uC z-oaaLMZ7M3vM|;?kb5hTz=5yIG_XeJ1NVsip?IjWcv{b$dbqxLC?DZpale0XArkss z1AWa0S*b+taG79GklPCyAwEZ)w_LLwqy8M%z(*wBmg`1mT*y(*5NEz=aFozQT4fUL;1j_Kw54a{$+Lq`g+x$# zGO+wCeI1-ITY4feS+?3l+0ysPlVnRzDHCJ|pAAfoEj>~B`=RSur6)p@VoT3O7i|N% zXagg%@>)QAEgiwO2_049j$jTL(7d&HZ}EAC@{#tW5Yi+WX%C77J}@gI(GUI)q)6Z+ z?J`oRaMO#T+pK?lFx+ZttDQC?BT6Iw^VZ|~Ps07%>q?E+K_wOSDdmt)WzG$@H0_`H zG+59-WhBLAVlIn0fg%BysWD4uQ6!!vy;K9YQI)iMF$GJe)c{7KKRnl1hFfT~ybM&V z_fRDBVtt$<@hs`Z8oXVmq}CTGSu(W-Ic&)FJsK`A1eNQUJJ<(Gj(NGRMUi-x^m3K& ziYN(oW6G9Huri4a$!<*p=Eb0r-Gw5Vm+XENiDyYKS??Zrl3KGAE16n72pdA}qp|W5 zP@yiONalrl3Ps{s(hJqU*O{c$^C(v`rTP>$q&J6UaAjJB%UR`RK2@e zNlJZ&VkJ|m2Vp~~uhCd}38+v%rby<6y7HZH3C**l7iz?fW!9xkNTtdq+B)1=rp8YI znrWas`Bb9YQ6%#c-HRgeEa@d0ymNY$ud_!RXxY$%Zotwkeo)5cyB6MirGVQAw@EurE4e>&yv1-A{^{DlnHfC`W)zNy7LAsdfqK}e-y2^eQx996BAL(91{7%sJZvImLamcN58H{x z%VnYWu;8{T$;9@dWT+B~i3K@qxL7LNN*jbbd)j=^ZpTdTN zT|tB8MW7CL3q|6+NgeDSiex@Zk5eR`C4KiqIM@r633X2T9PB+BFPDYB2Hvi1$-u_k zZE_*37?=lP!@t(0vGNj7{~Aw`cxO`o+L|Jn&(bawiDyaQJ5{DK??<_kd02g?GS|4j zVh)X&%R^CY%$AS7p+{PlsmzOp9xHAt^C=dPVx}^mXC8@~@)Z=R-gXml@ysohDVf#O z@8TJynPavNJwOBH{zCQe3`OF4P_h)Wb?9Y^WIjvpQ6!!v{Xsh7BxB6~nOxnb?<8Yg z8ZVcHz6QZ-nWXcK@stetmvWvFGI z;bMK13H46;TxAfN#8vY4)!g|^a*#c9F3RDLSF;_>TSuvdMOvGgX&N)9PBrg33X2T)?g3Qc)2X} zHIRlOOD6VLiiS#|n3x1&Vv;3yz9Q}uFQ)NCO?67cIMU%!GwP@rZ^BGyIMBd|me2^L7I}oyLaJ^s)oH$X?;55$ zokWp9!fe<|It#dpDk;jlhkTgRWrLke z+vZLhENGiD5?yaUNRfcK)R?7bDH6|;UaEn+uSi<`4+Tr6)c{7K^VJ&5FyfEqP7Z4n z>#7vVyja(xNc9$L@GcvYTE9felBqSwVMDGv&~SMnsJDKTBAJ)#42s0Fr1w_&W(tyE zJ1AQ+!OA2yBs-r5%!@%Kdjdr=FWIvw63>!evfichl3FjOSjp7tLD&%LEi_hM0xHyd zD3W=hK2DK%mh?jPFOim%`U2%jrc|H8hE(69!SW(dsgAi9E~L#%buEg-v!s`*cQLG_ z)Qu@tGNpPDHiWu0jg^;x3UwEXWL~KIQ6!!vy-*{rN6S(sq*CQ?Z*{mHt;SCP`e>j$ z`Bb8dD3W=Jo3Nh4303*aWRSy#qh3eD<%OVfy`3VNm+J!*iDyYK z*U)7hl475saLE)KLa`y**J#AN98|O)QzY}EUHLw^gyvb&i?+%}+;u5eGQIi~Hl*52 zgXKk_Qr(UsnV0Hb6p3d^FICMjr|(d~H&ZTD2j!%~r>MsvPwCB=YftW@ z!SW)|JtR+2B;K1!mSXP6@=uCnK1=UVB%URG_e40@^7q3Op$n&^c@u8 zVt=JfsCUxmVsFuSxh(WGkoVe2J~rwBldEFI$7B*4PPR4;m=}XO*(MZ;_b7F;uTUiO zS=xyr@hs`PD8kA1p-i7}Cu^nga#`qW;O)bdOzdEah036qm0s&yv1(BK+&ulnFIX`c`5O(s;Qn^fmBz=Sl|lEagIVPz=ncu;E~D z&|rBHsDq986I=!J-lPt;Dn&A%rS&Kh&yv1-A{^{XlnHfC`W$Qr8ZVcHz6Rc|ZOOpC zNwH8F6a(`hZ1`7}#>z`T{VPwAcxO`onop6;XXylr#IvODohrke&Z1nXc@z(;?=Ytt z_g7p&W9ITu6dSYU_Y6H&+%TudEg;1Vb9%u%5;f&FC{n%cCgS3m5f8$J zZZfN>-^DXZGskQlT8jqC{e|jbV~WJ}pkyg#>(G`I$$XY}ph!GR`h#@DNyaxRQ?jnH zzWFgrSE_nB=cFif+F!O z={qRG#crWYsCSgp4C^lT0F9T+LSKW>^=*=oJwxG8F%%;Uq1f=U*J#AN9MsD`rbxU? zsh6$%5L}>}&(gXSiDyaQM-g5&o-(2KNuQT(N8{zP(AU5pqa@kbUX%;fL9sEP!iIy* zqQUYaPzRe!k$7)X2Roc1na|P^io~;|@16(;JA*Qz&PktxT}I>Ove4JSzj|A8u$w6t zs)Ooa^%>?=?Nj%dPsQ$|!SW(d2YZSl@!q5k_D_mrK1=UVB%URG_e40@@(;tMD(al{ zIoLQFFPDYB2GR^A$;39JXs8s5iAf+fR$|-GczG$PkL^K`c!yFSJCGuo&r*&e@hs_k zD8k2jDHCd*^!eDaG+r(XeGRG)b2^Qpp;D+mR<~hJHLk}lq4DBURGYzs=jK#asQ6Fx!yu{Zg=_X%F4*LSv*B6#BcxJ2kmKI-`O+)BQ>5g$lg#iXV#lQXnwp#d4U+^Oc~L7XmYJ zDrh@rJ3F%?kuzpAH8stgP|A(+bAG0jm!!O@uZoPgSy5i7q*r-iTDJ9|?40Ny3OImw z?$qe${mZ{8inIv3k2Z5u>kRoUoqGhe=n}fz`6~?;9LUQ^bh+~?MFM78W0pRmNIXk= zsRnL-A!+rqkI0@mwd9vm`&zQj(ZVEMvs^6xFIu8J{4beS0~m=;7iuiS1~gh;1}fHx z6v@0;x1mTpOM0;eZ*m~1bq`9GOszo<8*-gV!{vpbay^J5nU`xnMdDe~%T>OXT@viE zlr5QHWfB{bJ(~v1i$NuO2}Lq5*&8Vm&yrrU-j&OeT7OTmlBv~$up!hZXso;hRH!df zB=bUjiz4wX>4oZFp(-hL)T2YXZ1pK@NOf%*EH46;>LwJ)yi~tJk$9H$QuVGyl$5#? z#Y*U@<&R;Kjij&f^y=F*R$c-s)K-dQUZ@9CB%UR`P$Mn}I+8LWl`4PwsKezzHA?hU z8YoXbmFW2t$-G3bqDVYTdWinFn zc$V~X4ehFz6#D^%OQzTmiVe}O`WRfC^Kwwpu1Ar~i}p(tiDyYK+A8}Xzd^Z@>D8yO zA=PivV0jU!RA*2m^HS}gNIXk=scL5F975TW$<^d6of?<4C(sP=>QD`zMUl*F_+pC0 zv!vH>#D=r$DHGDJa@JM93o*+|Rb&x!W0iYoyj&Lg8dTY^@i^r|bx=+!e2RJ;@{}TY z+gF?g;xG3D;vO#2dh}%)EH47xL-HO);=QS4DdvV4V;+ZVSo2w0iz4wX>ANSw!8WE$ zsB_ZiU|Z98xh(WG2yCE{x_TE1h6g4RVq!rK8!mP?4VM>!y4a%>iT5XU zvAO|Ga}>uC(aoL2DkYxE&Z?R?(_87*_wYgzEam0 zL*8^J8QO-FEt#RoBsMJVt2AKq&AKy1;>}7e?OPPde3oWWB%URG7e!dwT*`#HCw)$~ zkjBepp|63rAyYE3lPDG{gR&~~AZ+;8g)~-P0=gu-h9dFKr2h3Aiex@Z_faICC4KKi z_}5dE2{lgo{OeU3FPDYB2L3i($-q9MT&NC;f%z0R9BlO`j4y|&gKa>OcyCe%n@Ewk zRB4vBp-4PS`tFHvustXf>YVgB*i0HPmxaCt(R;`bqFAU5ih+3$HvH>I8Y?dW?aUJ? z67NjvUuRP!^I5utBJnKgd#B1!of|0^Y97VI>N`}Y#*G$#q%m`OD2k2Q`|-rkBQ48N zofn55D{iRHTNaRFhU$!ZGIfi})hSZF?Iz+XnhhvZGOMZIRWwR7$Lt~c3JsL|3q45h zM3J~2lq|*UA=-x`na|Qpio~;|KS)QMWE@19l68&sU64o8c)2X}H3(kRBz;hFA|*qW zP|h=g95zlh&Zpt>LQogGiX!p;q%QVriex@Zf22q}OZpCqaIq&S6Y3r1G{d@!{fEZO zWudP@=t4Ki$UdNOs2GZog-~pG*{V;aZiT)cMdDpbz3fXAiHnvx{x>KR&yv26BD`!j z%7oe{eO@+$#>-`)uYo_#MzXOE%7yBn*qBdY!@=g$V0jT}Z=OJrcyCe%JBuQj&(g&d ziDyaQJrNFeJ!L|jlRgK#hsMigp|62|8MowMk5evG2i3tUw|=h6?T?h+jQLdTWg09m z0(G$WC=%~YB}*}%ij8?Xbt~1iC=$<-zI!4ZY-7rVIwyS&wl$5HH;=vs(kvUv#CD-* zs1%BcNgy^>V&9?h@={PAn?sR!hf*Kwqe$knw1^_{Ea`hF!pBabOsIL%=VKSqc)2X} zHK;yR=Q@gpN}>8#V5EkX_1N7sUR;XW#@Cbw*F1Tlm{hY!TyEvW46ezEX*YqvHSJqF zhYwz>1t&BVvORNhh2p@tS#$GkeVw`9=F;$)W`FohabWqL-0Y6FqO+M8oii|6e9@L~ zEjq7@Q8{JmHUSe&?TwC5vU1q`OeR|%AkpZ|bKl_*@sM+(1m?^>Qrxv-weVb=qT>oo z#D0YP<1U^v-~HDsZjs$D7Z;r)#S;T7w1}BLv*zR)#}~`UcO4&|1~eGJs_vV3^Mb_e zlZE2v6DGR+E01!~O0|`LN&DF9SsEO$(Ks-&yT9n{eoVFewD045f$5 zU)|zgOPqsCk3FTw-qK^C^w?K=oaa84F>e={@iQ<8+|oZv%uez!oux|>CuLwvu1m~A z%Jmk-8Poz-41>SFeMkRS`WV4qeun^zsz{@AxBSZV14m~vrOM|HZp=<y1V^eqkB(YTNEsZ^F$j@$2GE+V{7yW^ZBgEv!z`=cBjQ1_& z^=;|?W!|$=<~9mNY!W^QG7PUI@$VHq=*@#add8v0$%hVBzPRpv^rDTgtAEAhhc z3dEn8IqW3?FBx8eOc|a!>JM}cd_>~?ajDT67jl#{#F=jz93?cGRvAe<_(X6NZRr_# z1nuBcArX|G3@krOUk69cmYxWVn5{Niw)B1SNZHa;$|%{vX9FW-OHWk(e&~8u>50(D z*wS;+McY6w+Q5jcycQ5&OGmJ;hmI<7M=%FWYTin`xA;6m`ABn5EMx63>!es)5_6N?QFH1xu#Y0EP{*-bAD2 zWuRiciz1m9>mwA2XGt&C;O#OcwLVYDlBqSwVMDHO({Onqs9cx(3;P_&F)!COC=$<- zUas=Z5GBDjP_|@(l}T(!b}Je%F9wzDWQt^7vePIM&yrrU-mUK>wSJ#sB~z;hVMC}r zG*(^$D%7JWl6j#nrARzWdZGHaIFpom4&_RwRG-3zRIjGN@*+^F-bRtkOZ8rg#IvNA zs&_LhNvTg#tYk{{AZ!Tr6&foq0Tt?p6v@0$S9}&Op?Q|{LXEhe%sP|_sZ`lJTZj9} z)c8Tn1R5w$K9%Ssiez4*yHg~dCA~z0H|&t?^Z-hRgsObD8sxCys16O67lO+5P>N(; zu8S!W&yrrQq1!S@iY-#OWQq-;*bwb6XvDl6RJ1oxB=e&E9Yx|<(u=mrg|rV*u4H=k zDQrmfA2e8A1S-`xDUx}qj(pDYid8d}c{R$GOs*!UGS|4I{UXhPc@2M=BAM6ljueS! zNpH6iS1eAYOh~)RSy%n;@O4y6+*GF0EP_@d!0th%RoIW^H<|*Wa?q7P$ctN`T|870uS4qGNIN< zpNDNvSA3KiT5XUu_Gvw`79kzk$9H$ z9Tc$=JCib@-btT}T~6cWve4H+-fJiM*smxXs)gcXGKmc*yPpQki$R_2X^O;qlsehJ zD3bXsy-SgJmh@c|;bfzqhbw8+J?V3@&(nChEc7+-_F+mU)=05X859%qAZ+;8wlr2= z0_tCTQY7A))W4=vB=cFCO_6w(^t}_|Uj@p98Yg}JbsUYC%R*lRe|N5AV5d_qR0qYt zd(7lAt1O%#duCUvm8D3bXsJwlOqmh{~d;b6~GCe%6UbFjB*yj&Lg8hE?5 zB?DXTZzdPQih+3$HvDTH8Y?dW^{-7S67NjvUt3Wm^I4iqk$9H$y;Efv^EAqp%){zC zjJd}B6>T(TE)PYqFlN5>TLCI3g)}faulKCvXO_6w(^atsPlZ@s5ZgO>- zzLSh~XuMn&`WghUWs=S_Hl<|9zm)TgAcu`pjY%|IUI^-9yHh0IpVY+;ph)Jk)JBnb zmh>GI;bJ|M3H46;Tx>Com&-z5gV6PDl93fD94dxlWFZtAUiJ$bF)s)8vKuH8?^5bz zzoSUzv-A)};#t!7QG}O0N10Ijq|eLVr15fD=xgAQL6&T6R?}{NanM&BSqp_(sxgUgH5GOpKu3jq49EA=xg9#y)8LdH|0WgP#vst zGxcP{|EhiJ9`mW#(KJ|I1nOWvqDZ_qse}ELBAL(9l@y6*N#8vY4t6VLLY-1VeJt}2xDw_aN_}hrL4XO`g-kYMKQm8%_7+PaxJ@x|{FD`{Lc6e~0E}xrI?Tw-; z;DiV6t>cZ2+d|wYUJT)h8s?OSDWt;_W;7FKLNkE|Mzn+`C$-3vlNL~QgJDjGiTAEy zn9~470u5J2q6>!~QzURmEF*;qH$2QqOgNj7>bYt91E_yj9_cLLa;l^#?;i4DPQMuJ zWZE{rrNM%>DI?MK_WcwIm`jaWdYU5fEa{~hxciEv)qhd2WLgbiBsyQMu?+vC(eg4- zv99zYJYO|0*3VNUo+Z6lgLm1G)Y?eNlBqSwVMDIl(r|eps9g7?Nap1_og(op>E$Zl zOhFRtY|55Quri4a$sR@n=Eb0rJ&q!om+a{jiDyYKS?|($Nv%JlSjp7tLD&%LO*B?s z0xHzID3W=hK0=Xrmh?jPFOim%`aI=Irc|H8hE(6C!SW(dsV?_Y>Q=35P$Zruy;Qx6 zVI`$DP^@H1^&o5rbt@VxF98+mWQt_oQ>RfRo+Z6dBd$mLK4n5GRsQx?hwIU5`~;wf z2FjC9C3+M^GB44k6p3d^FVWxyKa!oEL&=a(mA^~|IczxU)ihjQ2rAdxD3W=(-b;~q zmh^HBUDhEf_DKqtOtB#p8=`%MM$F4WMf)K|GB4T{{|T4SJWG1fR@sQV4&_RwSD(U$ zR4342c@d~oCs8ExQr(>*@hs`3su|{V0A))iSChk>YFyGfGy}XkRKtf-B=Z_xOp$n& z^cs%X@mQoxNW02eSN(=Lm6fWT$?ZiV$<{ z$scI2ya;p;$)70_?@c93F?VG72SqZUr8g-O&yv1-A{=bwzu+Pkbx!&mY%GnJ%R*m+ zzy=!WEc1&L3>8ALumFY)5BoZemY0Eg*sc_bcPI6*{V9_9EVWQ1o+W+%M0i*?WkRi! zJ`X#Z#>-`)uR(BIm1JT+qGYHNiirg|Y`ECZX}G)))Wv>Dk$8Vn7rTQZna|RnC=$<- zzJnrM>@SoF^-lU+>~$J1mxaCt@?Ja1$1*RQToo%mCX?83vd__gc`>MyZA6iHk5VVw zf+CsE()JXIXGz~h5l*%@W%`6W*$-&ETo(Eoc>6FV6YHW_s0@mUc@Q@I>xVQ}UIOZ0 zCsQQenbg0|rAX$pbU8)hSR|t)NW3?xgRS&$xG*=LrO#6&o+W+vL^xO@WkQ{kJ_p;D#>-`)uYtE~ zTQaacDHbY&VqhMG4gdN+jg^;x`d24K;+;wT>oAIBK1;_@B%URG?^GG)bUNii&7*i& zeTO;KxWD338Z(!NqS%-%A2$s>(y|P5x@+jM;)XdrVgV^;nA7v-k*F#Emm<~MZXzz8 z`5$FUW;OM@ct&aFn5{!={3mtG=LU+z^`K-aX6sNBMdB_@yJlO8#IvM7NJpGx>`9rD zb&d7SkKd>9a#`qW5WJR2I?w2&WT+C#c}9=}oNAnw$&ARj|4r?4P9BxXIM*x@4~yJ? zRa-8_*x6AuZe9`Es7omlZ&Ye$=TIc`S-O-W@hs_EDZ0&Yoy+R}A<)B{nAw}X{O1*5wS5mitU56s^Eb03w!pk(RcK)FyIR0pfiRHquxC;vc$uiG7ixp;9O&CV|*k ziG7{M%S%ChY*&iJJCyp^{uIf4mRcwh&yv1}B7CfyGNI;4pN}0)NeG>#`W0GX}q`;)rK+Q0Xo&*D5?UnQ=MviGpF_ROlC>>Z!2qfgQ8XygQA=< z$BDnPtSBDZ$2uFjPwcc@CbQQFG5F`H3p1JV3ybrMjm}}>PchTSj?82x=kuNJ_@ag* z8YcG_a=qn$Ps#VSbml5w^z~#59r>>EmwR*-%KzHCqqp+U@?;qCHdFIm?z`<*=;`R1 zQ~t*NJLcwk3)#8d<*zGCfAM__T63M<{Y|-f+0MSwZ)pn6lUh*d?-uXWvG#49BUU?VRoG%!)+Ln9Q07YAnMSXtcZxRIHm*B=chZIz{4H(u*~Cw*yJ7yHc`bY7KJO zkn4A8xV#WluI&`byj2iJnW5%uDogio~;|muT?93&~D@ zMahs*l|KvxIcyyI@2BDNLQuIrO_9vY^fo+Z6#tL%gP8s$o+SD(U$RQII8@*+^FPNzubr8=7;@hs`3su`+N zplr$HYI3MfjZ50&Xa;z7sD@9cNai*CGm6Bsq}Oo7hO=ua6Vk47)>Xd?G0RF-WD#?R zmAh!XTo(EoRN1ic2<1X`P);g*ih3OKlp=WBSDXdnFZToDW-iit^d%ZBF9O{|@-{`{ zy{Tj==FS+)y#d#-=Cia0MdDe~cTa?aHBcthIq7q-t!TVl7Wx_lHqc02J(+@`LMRp% zz_8(A2heDF8K{S~Q6%1-)WdoxlKCthMUi-x^!*dzVM{3!YMu0X*ab9RE(?7Pg4?Pj z6T6y{p-Lzw7UZzuV!xx|@NN*!z?V)j=^ZpTdTNt@4)f}{X<3Hq{C()L;)d$HZUHG~s7~hX)GaDkp-A<%n}~~NzCf9hSxx;eo>7`PX6w)v zG*Ip@^dP-GMdEr;vJ|s*Xm5&SK1<)FNIXmWgLK46MmuFn)-~2QKORBj<+9M%Ab2g4 z^g+q-lnhluInM}k*f`ZVmxjv=L0#-}ip2Yqy4bHMlKCwCA4TF>(sxjVi#7W3w;ej*SASV_AZ4(#ZZhagkr3b-`$Cgqi)I90) zu?uLtTo(EoRG+1DHAO?EP<<>gNyEx|>~}O?T#DMJ)|BVfJb9rQP_szfnZb#fSCbP% zZUXaa+P8KNADqMh2Qw71J#%t};=s6BbMtL|ow?rT(#)A=f96baVELZh?2fjg^F=W+ zXJEAWqAlNAbY2$|a>~?g0w$W;n;4;FW&Zq3CR?5x(df)`-{BDPkaMC0=FC1)+^k}? z@Hm{J;|ff~euVquE}k>r{nyKGk=-vB7o8);69X%>h*3VXatAk#FP4$-IzBuEXfS}4 z+&A&Y1c{L+3&qbTOmz8I9_6ByYAgSe_OaEoG&onIabRS3f6>|dm}>cH-^Y31jk)Vg z@hjYKbMoH5y2ZbiI0u&=drFVJrN=_)v9I(v&wVUo-YzoZXJ8PxrGJzdndD(QOP3^0 z%D|Xhml%VT>n(~isD-W=27iD1j{dLoF@nGR4gnZdkw)ik`IYGhj?QFCmG8HJ?T1~XGTv@j8oA!y%7nOL zdA-%>yec1b238NRQkp8?J9x{jh}Wf07FK&NxB>|r_^J%uYIHtukJulIhboJw_1vk4 z>x+l-5&jkT`v(^yq2D#o*L*;}vrh~pY@XJWcXF+T-sU+Sh4#Ldrq=x2=GM-9U)#ji zzTQHojn24`qnshmeAD14p^3E0B-+6z zf)i*<&&ZQ!2cHUwp!8&5`C0lpIAON*L}0RPwTZH&?~^CVmYz~3$PPXmm>gSrqVo4c z*Rx7bgeJw7o{KKp26E8`Mr7r+fcRQEf_*h~REax+IbcBZmg2p|=NZaJ+LJ;^lVqfw zDH8a=tc*lI`2Q9~0v~CYkwS%=UKHJC{o{k-R@1ba{sVCTuDVjcwNfQTeKiHBbnN|ZBiT>VPV;Qce z(eg4-vEE6M%!~Cwio~;|7i;h?nUY$crDVy}8sxAc*EeXmybx5bBi?79BRS^fx++ED zS<=f@z8Rt<*!3t|GQr9uHYB?x4VV{$N_Gc|WL~o0q)0qVddYgXzLV5CgJLC9s|R62 zsCgPIF98+me2QdVs3%Y)o+Z6d{ac(#N!eqQM(>NOrm(B|}10b`}RYY&hy18ZIvcm1`eG zGB4Lf6p3d^FW1m*86?G?LgA7rHiTkBv=`Bcc{!+PucJujMSD9%;#ty*w#tRH4^XaT zdi5!6NcC?tSY8Aw)z>JJd8vL(k$9H$Qq>G&Uim|~nocHHlf#&6T+(hxGr+4uHQY>* z%xic%io~;|*KouYi+fQfq+R8#tA2O#Dl1iyMa-RfXVG}MEc7*~vSDK`TqK7drq`~qc&^;t4Q6%1*N|s{wko<%qna|Q?6p3d^-#rlyb~9x{os&KX zyN|}pWudP@U;~YGmiZI~LxoT*EP!Fd!(OG)@-k2l`-md(?xY^}*^l7T*nF18Q6!!v zeg8yw*k+UowNCmxY#SOcmxaCt!EIHNiS0qjP$d)-3v$?Sv6(bnUI^-92T>&6pVYGI;bNyzCe%CWbFoWkyj&Lg8pwO?BpgcaI!zrfO#>f zlRZI^c#l#idyyiU&(d2IiDyaQMG;Om>VI(Ain=F#PPR6Um&-z518*OuWMZ38EK~-? z#5@Qa{`CzSD=z`{uiYpT?@a1n-=;|Bv(!qFc$W0N6X9P6Qzq0n>GQ8+XuMn&`WpDV zb0q^im2#mvCa*IG1IUIOZ08&f3Snbg0wq)6tov;#%rS7`PX6w*BG*Ip@R1c3+B(4V~OEFuAUZ6VsQzq0q>2t9~G+r(XeGNj_w@F5J3WY<( zP>d{uV#CWWq7n0QP%pcVBJnPzUUoZ0GM}XfC=$<-zK>0|0+9!Qp_8N_s%R*lR ze+;r@V;@s4R0qYzd#pdmN)9PDPwggPgE4t5`nm&-z518D}bWMWTIG*k-3#3T?KE3sE;yu1|D z$3CJ+yhEvveRgE()~n+v63>#pha!AzGs=XTCw)G)4ULyKkG=-ghcWL#(NHN=9}5hv zv9cbUN#n((P{s}q4%FpybE>^jR0W*yz`b?6v2hc{ed5Iso~U6?X_!JfJYhyNVJ0*a zXkbK3XmV1EJUQubs%|jM=@9YWH4JlFLXkkjm67Pe;S7od4vA%?P~nD$If)5pGg3V_ zO@9FO@5&>c1zbXv6y@Djw<#z`PoJX3Q-IS(WW-c4@!#Mq){6#Pn)c7HY1E*9%1CtK z{YQ!fT&Bh>JwcIpmh_qp+=fLG?TZvFnP>wTHL5m|SU;fA@-k4dt}x2nSz?W1U7I5D zEa}A>yxoSR)=el`GPMRdY{>N+G+bT?D%ag8l6i0aHbvrD(#uu8tAZrhR?3!4uri4a z$sR%j=Eb0rJ%%Egm+Yw&iDyYKS??NpNv-EotYm8SAZ!TrdKxP)0Tt?<6v@0$AEZb; zOM0RD*GfxDeU@@1Q>ss4L#l7kV0jU!R7WhAx>f6{6p3d^FIDfVSV^htQLJQ2^&o5r zbxRs6F98+m4iw3}r+$+n@hs_u8gXIT49bL5s{9eI4i~1?cy61gf%4>2iO#1;<|TRp zMdDe~OEh@pk7TE3Q8FY{pLXHK2G71 zDK>;+L$oi`hngL!Ns^LD0WM0FIC=$<-Uc(VvA5Wo7NW02e zSN*0sm6fW$qokYn{B@`12a@cUO3u(B#5Y)x4p-8+xsf+!FBAL(9eH4jjN#8*cF7^~)rkV={>iCtH1t@ntb}vJEH_?@{Vx6DbmxEX~q36p3d^ z-$fBlwg+WG-IG2in@Qv4ve4JS+lMKc*g+Hvl|eBv55k6j9Z6&5C7_*oB1PhzN&V|= ziex@Zmrx|0C4KKi_}7h;2{lgo{OgZ2UM>rL4gB4?l7T%zxlkPx1M?|tIM{z^u)GM= z!9Ji!yf>+Xt?-%Dty9;gNIXmW?ul@)O(+xUob)-^H)y=PdGs~#c5O=rwj0GlWl#*v zgRtRWGia>51k}GeC=%~X>R*RYB=cE1h9dDS>3gTjRHsuZ7iu2G!|FTLsmA>k7t@%z zJQT&oZ27o;=#iFXs?(iAj}&`sT+OG+r(X zeGP)wGD+td9h3}JLOIU}a@aW4m`}syg`oX;0!8BeNnPwLiex@Z7gHpjC4C1)xY+fS z3H6S0nql3=?xFE=S?FsJy1q>^vd1YLDu!ZYAru>4_A-r_mxFrQdlZRxDfO~3E2eJU zx)w#^S*hJ$^F2Fr^;9c&Io z;=M^7tdAm@&(b1_#IvODo(Km!g)*VeNuPsVMC0YM(AU7fdRua^>nInhgX&=Qnd(&S zQ}>up#qOrT@*+?Ndz2#a-lPupH;QCFORrHRo+W+vL^#;TlnHfC`W$S{&l+Ev>uVql zQ<6+#pha!AzE@eW^lRh6? zNaN+Q(AS{)RHu_D8Y+eAV|APARO5Q=LK-hFMYUl}cz{l|H;Sr2>{O@P-ppw|J(F3| z=bSuB3<6oh8x*yY7!>7#XlSvD0#y%w8kJ;Gd^1%w)zdEY2@BI){lL zoIZABCNnvo?{vo(H5}0}xxbL>E&qE;zOSV-SNWo^CtK*qca^`~qpMK<*WMkym4B8e z!-%(;n(uPoZNEZKN7tP4H}2mtH`iOp&h0LLU0M2z?_1EC>+J4t%FWAm_LY81Q)r&l zft+0nN~Tnw!iH2=Um32^ zc@d~oH=s!7r8RpQ{DRmo)l}xD~gbktYLu2J7phBHVk<1JAAd1AZq!(($ zt;Jo!|jXHz8e61{{X@hs^j8ob^@veO$W84{}UhoK;c z4M+VW4VM>!%Jm6~WL~Z>QY4-wy<9`P>Lta#Md6YuHiTkBv@5KVy7lVX6v@13H=#)N z7HyS%kYAx($@J<|*pTXOG+15)>aX9XNam&5N|AV$^!}=urE@T4OD0#7vvg`)(jG%I zz^g+wd@4mUui^7463>!e!x0xna|S86p3d^-$4;B_8w(Iy^}r{TX{9(3v_)Al|eBv55k6j{e;HKOF&m*mr*3%nbf~-rbyufSqun>R{t267NmwV4G1SE>)VPuTmtQ zC4KiqIM~jV33X2T9PB_EFPDYB2Hvi1$-r_H3zb1JFb~3pfA!N?c?oD|9!rsUXHx$< zjUt)P(uEX>XGz~XRc7g2L%C4%C>~bdSvocDulPNUnae{_Y|NIAhld_%S!U_{b?C9; zX6d|Y0V!sd&PV2vs40JT4YSbIjJEi8N5|FH{fPP$aGg zB}*||hxVXI=CgDlMdDe~AEYBrGIEqDS=U(K{Mb+9<+9M%Ab2g4be?f6B}0`^&NG4> zHcmCprs48JP#3#|BJuvDE_NeDGM}a2QzV`xeFsIj*u#_w^^S6yVco@Er15fD=xY$V zzD+W+wGQI0(|EZo^fmCO*hn_kO1V%S6dUs?Y&h5R`uEB;K3U!A_+}=CgD@MdDe~ zcTa?aT}7Et=cLcU?xgW@S?FuvU%f3k*n^Y{)j@Tz${nAJHXQ5)8Z0jYb+9)m67Nmw zU?V=4x|Qmx6p3d^-#rlywjO0dos&KX+mgo1n@3**X@rerVmnYYR0_q!BoG@uwjYg` zmxB6OmLl;Er9PIYNanLNpCa)r>3b-`$4;P3sCm-oW9QL$xh(WGs6I>Q3W|nGq54>0 zl7^M_*zGi4T#DMJ)|BVfJSoP|3{KpLnOBn&Lv8}|YTCDU4j1=x5PzaQTKvzQVzYSg z%i{+BSG8(|Y|orrp*S#Z*4%tsUuUkjxioX8*`GO699X_5H@l;)=xit^<_wG$U$o_0 zi_Ys}LQa{wO~6D`Pc2Q@ncCN)WaX&&nM~Fh#A|fsx$kg@c*r?XsLt#o#my>K3y;Go zI_@mi?&3M~-G9C07TNuBanU(aJTb6Bix}lIt1H(yzF0=S>-g{xpuqrEaNoom z6C_5SEEGSVFwx~-d6bK`NYulTe@Xk;>RBr1XJBM^f69J6H>?=Lab05o?w~Ng985jg^=^rIVCV807(j|$LGB76B zCB`7-dW)`TT`>&){`MXHU+H56fB78(FsdSr&fW4W10V03o1N!^udB5(fXe;m(uk?;O8*;Q zESo~3b6+SkU!Jk;#)aIWg-H#YwRUEEdpFyDLc_Lgx!%@Uy&ZFA^>$}lbCVjpZ)wK> zz`W)I@|}HRq*wE_p1hN5E%Y|e=_s`KwKTQn=Qg)?=KI{JxS7*PF}!oIYQ6 z!DeXuw-R2Xvq306cM&CyN0o0F?8C~Fl4hrdbQITo4j9?Er+9C%!ck6gC&^qRCdn@U zJ&FXD&}Ah0QGi2{z~Q2d6fWTnpG;|1N*g=9uo9kJ`y*(gqgM0FKD}`5!9$mLEJ(|> zWT%dY4(gtY>|`1{5Lp>XX~me`q~}s3(26x?>2iw1v!ws5qsk>8zoJ}7xyolw^}Xby znml5zuehJa%;ljdHU{bGp+{PlOFsTJ^jLA1e7tJ`Ddv)o(POKe-&HviaJZhRDSwV4 z)!l9?pAX0f%8e)&vK!@d)jHiZwnoqY8V!~gLGhWGBjXf`WL~QKQY4-w{gE+nUry;9 z;|CNhnN|ZBiT;vVqgV?xT3!Y!)*n(N^I|=jBJnKg#TvZ-qNLVyDOobL203iV^;#M( zF9enAZz+;_x!zBac$V~Xm2a~r3HE8qmQ1iRi4DpAmj=v>K_&Y?iez50E3FL|(>zOh z$$B?clhpcoij_>Q9)t~{Hqlsl38+xFrAX$5x+g{AS<(yDzj>CV)ajHfnNocU8&d70 z!SW(dsUAj=%uDq+io~;|m#TN0BuS~KQ>xuF98+mO%%zzQ17BhJWG0^ zM%=075z2&As(eCThdY(j_zA#EG*F&=D$%zol6i?Pw~poYY4BDMlAW$W$&gT$&sKvR zHXLt6Q`AGMiY~mZtI;zLFQCDi*TvNoiR(hiQp_LJZlg%%vve;-;#tyn zPsF87Pf{k-Im#lsez*K7ucZ}P#O&vIg~rQep|8P8!3~)5-{3!_Y^WB>I&t05W;F@S zhOwSy#cQjm(G(gT#Nq&Eg|s9Bu+-GoP+W6p5!x-(3+O6YNfz zP**7qSGSJ|lq=B67kuyy(^T{=G-IHO<=x4R@>OaBBett-^!uZ(^I4AQcw4&7s+GGmW+4P5CUUkv%EMli-TDL zCIpBH7-W*a;*i5O@!=@YuJ!bC+69-Ky&TyQ|dWU_RXH>8`%@pL70m?z#7# zdrRj$XY^5<&PD3T$(% zu3CrJn^RNOT4T6AS*SI3HLDHU0H=4}O+2Kw6e<11(KX7OjQvSRQ4Ca#T}V}g&C$5} zyyV85A_?Md3p~tgvdz|(e(X#gA}QPKObw&6@(X=}1tZ&($wSKTVqY+<0fogcW2 zHVay#wl!6&?krdPQ0NjHf~;b-vfHlJ$(Ou#mG3AoDplyF zBO@XNo>#3j3Z;r&8yQJ(k-vBbOXd2M>3j!=q;juRF0d?MN6y^;W+VtOw+o{A?)NLn zRdw&TN%xzbyy3bKs3X1D2z7@VgyZ^N!RW~Ea_BKJcS%j-bMyR;v2vvmoffI+^fPJk zE<`Y*lWwqWbo#hq1JTpgtCR{E{p*&AQr)8eH)>7W+B0ESWM(8T6Q8c7&U$T!eJ}OW z#X_@g5A3n6u~NNQrPxIMwMevNb7Re#OtnPhqUdK=c9&|^ij0k;rOFt6mk^ph_DmJY zWxpAhdhwJqGx3zus8u&Lc(II4-Ef9`m}oOPaxB?7H<&iI7D}?Y`ce^cKJkyYcX3>M zT{zfcLZEy!D7kas_|8R(RaF|nXg~?NUYfWIT^YehH`q29T|Y7sni;;jP;S~PXPOkF zv4S@wpzNhwuUZp@-L|z`Tvg8xP_|RI<%qx=0<2wI7;o6MwQDUub*>LmJ7YA=+tnkG(LFR0b3G`J9XhRi7Hwmn(5nw4^Cr(K>Nv__i^i}Hd}rC4r`(Z6C$FS7-D zyP8Jy)q1@&TBh;7XWH=i{S~R-%e|H9iHC&m0-GX-Bi#q>fB>M(&)WRk7<0N`}oWmZr1z*yZv7{VN9RQL&xe zD%Y$x-G{LZxWu181GdiJd$Ki__t6;^>g-VDBq&cj+R4`JN)M zyD98JVy@6vZnr|F*DZf1bCH(^nbNJm%K{YRfzK(gkSuTWvj3;GPf#rkL5P6ru~p}b6BjA-(X2qB%5>l9#rE~|^Ho-3lWE03#ycEZjrb4n#_f;+L4$8inU!Do_mz?+*2iix-gS5 zdeIH8XIhL{#JPsKqn}mLGzkU7jb~33At`X+7mytKQsEsL?XA z_`&G5)y37@6W3R+&gO*vu-dPoDr<;NAJ1^Xq&iy zPAsLbDpxBzXm~CM@~f;GJqAFg?3Be%6dH25OlH7TU!p zabtWrht0c;QibNPr)svUgb_`SRV!k8Og2;#^)JN&O?%Un8OnmRuBN_mdFm^xcCAbvJVzuN3RA|W*Krn5nPVO}mq(dE%s<*ujO4Oy$I z)v5Zb8$!S7^haB00baqPqw;mN4&AX*)E{aH@)L2b>-H*d_#M`RnqyFWSw&t@kFEE8 zH<2g0irXk5zK<@Aq9B_jUQGd{IiDV|vVfMU?U^^v1gapnK1dIUxv<%2QYb&)rpHQD z1_n0LFu^698b{;`Wl{FHhDOUHBaJ52if!|kGzU4S_0uf|t*gb#sQjyOrA_~@G^nzx zEQcN<_7|Hq@z4*y^h{Pp%9Mz@8_|)`a*SSlk))!rI)SWCiK5IxSJ9@d#4i!IqeWyAp-jYU1kBPpsFzDSCK^tavW8fw zp+Ku!qVi7E64Pv-3^7BLD~7Eoo=Ot_%(U#)!lu%Mmsf11f;x5mQ<6U-x$tQraTa8@ zLbC6vhOZ7>DHb7Q%T|s?EcNDSy+qI5s7-TXtqG(M;q{FbjKVzTguY{QeJ@P0J5t5Z zfhx^4$}>-;dyof)AaDH>+WYjZr#(YF&1IBMUgvELjjPX(nYcPMolLy?n` zdYjh2|E^{VH_oTT_eI@G&+T_d9K(z#e~uXmu>^~={j6{pL>l8VyfIFOo_Z6Z8Mimt zoge5+a>x?9SW~6pYNrHUt&0XvCT+11n$8rBiNLg<;CQ?F1V?_)z`Bal@e>@k9zwmI zJ7CNY4~xBS!^6L$Pjj@^ZIF+3bR9V77>~nqHRN8Rvp?@+M&wU}{+e^Te;nQ;p?kIV z_2)5(9)|+YOMLcOd?L~HDD&*I_^4Ztd=}r=LnQXLkjHg!z|j(4p|+`;GmhU0?Z^&4 zi|;!qB;d>v4GBHR;s2qKfO8x)q-USSN2#Z?@c0xKJTiV3pE&QJwS=BxtDY7dJnrB_ zq5}D5A;?@3gt(6q?PyeffM^<$;f`&N5L%5w0^G4nEuDcv!nKrqgiy@$_|8LdMI8Z6ZU8n60W6W!Ums-#~8aBMb;Z* zgE;y{*_WUqz||Y;$}d}`oB>~*^~7vC?s4<$z=7PkjL2i zFDS0w*y^L`7hQjX3XB^9rR)3?W?dG0C<+PJQZikm_wt{B!s?B!9*BOC^)yso+zcpL zH=>ZTkFA%ZkZ>&}lQp6$Z99qyVyZENt`PK#rn^vKaRZ<<-G@TTo~ExyA>mp|rfKk5 zc`ONd8;T4ft1&}Q#SOlJjU8@px}CAZ3s%g zi2FlSYTP6!aeswE%AUAOEik3VwUkU;|EYP5vqz%1dgH8*A}zWa+-URszLQXav**T( zQAjv93@x=;czYQNDSItlg+ju$l};llIo71--oQa8PsS~lClSt8K*|F z9TJ}5cPokwvWJm3cKr;$p6t^mz}<)H0JjgiX8s-&67ISNi`xXaKSLp9ucgnTkZ>&} zJ66Q3!QY{nAcrynT&lAMaT{XrI%|~g{}4Iu7w+Ba?Wk^FXe9SpWC)ypq6_b_)P+v zA`Km?R&%X+Q`0lf)?4Syu_GV9I&ryE7mBIeOScf0IaTl76urCC*(G0V^0h8s8}hX& zUw4aFt(iyfqMv(Dn$*mt9UK9ePTCts?`pqsw2zwwYxY!acvx)~+(eY~6J-+`#GH@p{EAxyhXPtv_ZnJ$DJad*%ulDWR;-B)T)Y|~eUh49R1#Q8h3=qn!=ERucY6Z9_BS855O`bzbc z(N_leu6l)=8B3G;%Fy9dt;06kbflMf9Pv~wSGUXK{^46{w|dkC%tQW(-Mf9*i}VnF z?BZ)hlggi!d{44_VAR%4`+YuF79G#v-Hy5xgAc6Ve|1v7|6>7C_WR;8)$hx9>Gk^z zYU+Le>pSTCZ|K`W0rsx$dj69FJ-=upCm)V5WZg(7HYA)ym$8&F8VgqnsFHsJh# zdE2FB;!&0!4qv0|p@?Ces>n$+kQ(_=+;vqn2beq%AyTH)yA z94)LCo2M@bM&LG#P}ed_T$d>&j7(i2=$Q<=dr-U1Z2W1hHVW@Ys(x^&_iZ<+6&Aq@ z*9Og7StRQB3lhmh{Xu#cOw`@J-c8ek^K~+<2v2AQ$gYyu1&p9bl1|fSGD#Qt`PpaF zsf112J0e&0e34f$_xMwG_f*pK`J%~Sn*M%vj~>%>t}aT`z1y`-(?^oh^v?^BGEEnk zsWe@_OEFCkLQOqQe`5z}`rbaJ>5`k>%+DR<#R=Vn%CmFM<1`5xnDuR)vF)tqH|%R0 zL)L0~{_>PvYfP`+Fle1MX4i|ubgcPseX3Bjhb-?ZYxRZ=-ip3H)^~~fQ=V0Plkqp; zBk*B3-;HZ2uGSB!VuN`4gZPgQWp@Xp=h4aY1$y@Iwr%-* ze*2*1o}NLMoIBmH>-zHZt4+Gd{i9ivr|RoJFRnE7yGu)T_pN?}ggmI9p6#;N@}ECJ ze{3mD(lciYlk!on^!HWtNEp$EIDpheCjQr6^A7cQ5WQT!B`p*cRlFO34Qw zj~ozZb}1S`E)C%-+OUwv65|`6Gv-$T1{q&!J{h08>@vR4Tnm04*0wn1F!;Tc$)}|8 z6(gwmt@b11i&!3CQ7G=z57aY$6nG%ocJU>9=7T%ukb?*QE1pl`0hk(cfPw!~YMXLO zbl`t13JK__G^FGumnFjP;y>OMuR(D|jZiyZcR4a9EcZUz@6s-3qw?c+F{Z8BRPz>=?m%%t>@}+T(mzd4v(}(Uo6_a$QMqx7ppfo7@Q^w=P46uS z9#*^4^xoA6NNrBjdpLVYXovYI3MuuF2=vdej61SH-r&u z+VqhBg+ju^A4=E%Mj_!^O70;8$JnuP`ic|5T(~#B24M6&XWu1ZpNC3}n*t^5dK6Oj zggqODglj38u)$O87-KI%k@d#dAdY@fb{G{IHwH@CNfc7{l)WB>glj38viuA?M%p`3 zY`u||Bk31y-+>B^8w928Lnx%|Y5Q>$60W6W+Ik1sF~)u#h1DBlJrMmO>r<$_xEWBg zejkODJz0N-Lc+C_OjiFKJI2<9zjr{>SRX~d=z26NFm4ExuB%Z<+0*q56cVnbWV(6> z*)g`Bhr;SHw(4b|zRjXvgUXAW0VS)ALdu@3brce=rDU>3?2Eq%#RM_cm_bizlWLbU z19zjs;s!uz`Tz{wX+6p9QYt1R?3JKRzGG#+Y*fG}r1_jp}YeP`_MchMQ04D6XNl@aRfI`Zixa&|zxR#QM>z`xC zIQtS5S8ts4QKUszgBxCHsw!!uMOr5C<*2~fb7MOS3Fn5Pr8Wz1J5fm4YiSyVglj3; zgCb7TyB);@d5@7)r+b>7&aDk8!9tSjbu9{oTm3DC^pC*M&6k1X?k(?X%pZ+ ziRu8i54vXlHz*|BbqyA`32@&)A!Vr_2yJQinLM$l&(ux z&$^8ENEA}`bp1UPQrdJ4RG=`vo`wSJjjsV1{UYqkP>FF@E~pZ;TD%=oe*gMMcJqfl~I(D5UHu`$s4wTuaH6<>e=gv>!yV^+sBbq+hiC zEGjf^5R|rmheFDpw%82dvMR&R{;K=g~Ob91vUk3ATLls#FGMrwu?8$l`3JKRzGFc-EVcvscf|zQ|+4r{)<}XlTaRZ<<{VNnw_B8!E z3JKRzGEIX8C@idg2So;v)mYF7;^vdvGqpT;}eeo>)V!uhfyuy7D9RaC<-Zi9{(*0 z3D;6GkC#Lr?DJ13E{Ma%Xl<?DJo!+&D!H*0w3^`tJh|sgr|!R;{2X`&@wHf zC?s4<$vtGCkcf>;ZbpIi#@7Ihehp3Df=Y~=0wwIbP)OMm_F)tfuBBwc2J46zV;@D4 z^~TsBj($=02~=d<7${}GjY7(vvj2rb!nKr4SzblNNc-O?w%$m~k@SnUho1x{*SJAY z+CC43ls#?NqmXbdCDYa`C1Q*{8->*yV?7Z4BI_$qd2utKWF1B!Wlz>g6cVnbWU~5| zM2xN1qqurwtB;~zbp3r)VB8QWUEhI1%AT$dp^$JbCDYX_C1Py-I0~ybwt67?Mb^hr zd2utKWPJ*Sls#F$k3zz=luXu$dZwSDm>{MaGwA)TXIeHm>+;p3QApX-bTtYoZJGw_ zh*(%X14Rar)tGw?;^SI z-i}I*n*=59-6*8&iTeNw3D;60aqm8K&fGcTe=WbHh>`b0D8Syx>!auwZ~r$cFm4f) zw_iaaWzXAxK_TH=*)22A7hzg7w0xhlBg+ju8 z)X-9!0+f9yr0liydK40_rDP9^h-7a=F+tulJ0sZ#QJHaSB-|)+rcmQWr3`T;(}~p z1Tr5*zarV4sKB@(&`9*w0XTaWkNCY~jgZQjB{j8pjStA!V6ht$bIGs6cS7CoHMxqkkfIrPts^iM1N zu)@hcKx%W)%=OtrLId-iD5SJQPQ%6cgk^voofB1(g}6MzS52Y?+?2#ee(^@P9#ZLAEf$nUA7hk?bd^z_=mMNH+ge zFh|CH6pdtuqL8xJ(g`ReTuaFw6cNeRp_m}=nVperBPugajbuCcJH%OHb~%a*vV|GR zt}0a;GM@G;k`+;baYLYyY!?a%_fa&G?L#4Ducg&}dr(9qdmD-g@}Ail$v%k6 zj8h}o4$H166n7SOM5JY(M4>_EFoGEa(yw^-cc{#`Ina3aEff;&sc1a=AqpvbE&U3G zglj3;k0RpP($m148gii78PASKWyYzIY=>o++4Xv4JUa=62ARW*XF(wSif1oHWyZ~6 z1dlcgt(RpF2@SE^P)K<2FtpTWp|ylU!VQONX%7ks*HW@;uh>+Ww9l(n8ii8DuJJjf zTTyVmId=$3O73ktw@?Mm4Kq3CHdRn_hx#W9t8@GvbLKcJ>80tskuGz-co)6gEZ#l2 ziuXItFU1EN7tEP+$=v3sag*P_Va}X_qi&URcHcuS?4cLiiM;LjKC1CKB>Wh?8ArrF zXXv?fqrLRw)Ihi>%aI;(j<ByFfea6`*zJ51-t)+R4 zq?tG(h+N6`btYSL)VYa%xaOuAp|tBr_=z*!Vx)6OHGwZ$k8hc%{hO%)mw zR;^jKtx3C3satz&YpNy?TO%WkWg{b2bvJ!ns7%w3i-mG|+8VRRiGX941fL(cyfIIIz%$9?AgaX#amN?Zx*?odN3?)}y6L+-%lME)%9 zE(L(?niZ!IF2w_Zovbe_&fboh=;{6UfkxuLh%pmg6lo}?j98T$UYX$fS{W}Tf|HAU z&3A64n)fn=H%GhB^M2utGL~?E3*K&1L@3cgq&079dd3;MH7zur z54o+y6whiUyFNoH&YMNlR2U}C@o(!xnK)vTjJe|GpCOO|fAVggb3V_%Y31GEm@iVS zvU6*!bsMZ3!{OGu%5}q>Gxv4u7OjQy_wM(~QS@hwkw0K;34o5FP0m?CcXAG*mzW+R z+%e4&*Gs#6FLbZg-t|{k%gsr`uZKE#zb>8U#w29CkdKk>x#{KqdHb9 zRMwLg)=f<}CaRV7^;%K2~!&{(xtClgh6Sk-YWR%=SPGhUbI93E2M zyxba3bDi_U=#meMmE8HIP=(tiJ5N2pjdx6Yi#y4=lHbWPYcD;WZtHnVduvDL0Ij9e zRgP6BDGi&Muv?4iuZCFElR1F=vQen*up2Y2qhn3b`=fRjk|QpVT0G4w6{ZjRq1 z;1`DWSQj^u)WuySR3f`LahdAk-}UL&*(M7Cb~u~&ue)!Nsme$3a9*OfdTN+?uSy&e?h9CXmXD;s44LUR#7(D(yo4U$XXu5RBqVbTm*V;sbN$YI+&!9z# zr&}LcP9v!=QE6m|ZUp z*GoHw>r;gyA@?q^R&Utgtt#jlFB;3z?|9GfE#}EV1EK-_-{M+Iq1zKEW9LrL@cdK= zXzTg|n~E^=2S(KY5lTZ2HAaHGlaKhGrFXv$$?5rKj6rhFuLyzjYkKK$n&RKZ^>Ugb ztW)P#;^uCbXUw#OCO_TzXW3zgzGET{oDmZhV@2wI=B15D;rWmK{SF;2Idaa?p{bc8 zW1#uJI3e_l1>zU(*D9q{A2DlKpf#M6=r)B&ch&jEN^kb(IBGj8(e-BWb)q}O!&x4M z1SGl|5*ioJLLmW(u7(sg-+Q9nE`507;92cibW# zc0?1Fsu$a&Df1zkq*gKL<%%+>eMV6^0sCl3#&E68O7;{A31D%TTDlR1glj2zb~a)h z*FrHt3^j^{+Hbb+kfJdud>7#n<@&o(jR98Fu_(vqeOojY!MgYG)Wk>UCkf(e{No7R%HhId=P)I<8*O1WIu<(UgZjDS^YDi%d9vrf{Ys+@YO3X^# zk*EYw4DLK*>2js6Z6|R!i9wEn+V3P(dLU|PNCwN>mqr^O&np zOb~Cg$YYf9<2nXBe4<>hq8bCNsACnH$J~HI0`izHBl_!5NVt}|%VX|Cf%TZjDE-CJ zHOiatJm&fCd@q~c>o}QFzjix7oy_PDSu*osRCjqWr-qm=V{GKW7?SsmRN<Py*N+-{$o z6W;E#VWTD1{bVTtZNDirtnp@fyi_jN#bzAqybCUs-%~9_ol4NqG1ID~ooeP%BaS$*Nt= zLb)_vvd4yLyHuqi-qwbFgA6w-#R(KTcBO3mIv`?FM9uQWM1q=&g z%oKK?GRu>#Ql;J~REl=pDi$i%sBIM|#3sx!E4RB;u+-3Qjj%wmW)~V_>sy_i$);b3 zjTm*iP@^A=mhAzthfX+KUD~7|eK6!~2lm#?H9ySQ8z>-(DalA${@2^HeAO?BQT=b{ zv&|oY%|Y`++wdO0RO~=pH(9MW#9l(O#KvNyv|DW#+(R2@)D}hBD_AQDZPUI+`mj_X zb4(VBwQ7D~%Y(E|AvROmehD<;kBFU1{qT&<3O=TpzP@K@ew=NLxfa$Pp!qf~YVPyFbbN#0lY$iXwrw^8=m-hPn5}|4CwcQp$Ru|5>6j-}!u&zOzjE z&S&W!*q$HVPtGGxVsTJ6_-O{3x~q`OZT&9owYfqTKT2nDcL4{8EId&#Tx=7jUA@6? zRJTLli)5D?M+@Me`qk{Vb6#)o7b-d#@5jeW&bKVhpa|Bnu-)hMyIXw&fKIy2%NQMWnH5*8Qj}U&DN@us!OiyF4d|P znRE%UC^U)i)YwzCc9H}_U~y|9H0=>=R7acRv}ao$@u49Q1iz-*K$(n$; zzu)NXtyW@%6j&D;;V2un$S10z!<#6LQH~;{YtTh<>o;jyG%fx|Kb&4ouqoDxuglfy z&gPU3sr37LX>y7(9a3D8`cUFaRcsPx!nkG=5Nuy3R-s&%7mFR`ifE(FQn|5C+==8= zNiG>>jIJyd>U51xb|khT+GjR2LX%)pCnFSwffL?s$KZi6 z)^il=me4)YNmg`&(X8A0JUV$rIA_oOY%hJR_-#i0E6LV--|7<4?A^{wL3eKJs!vL# zMMl>Xv!v^himsNVE6|gi*=0WFDJvYPUf5lOUVAdeblV8i_lvXC_t8qj#6eR*Fi3YvsA^&gYhlc#xO;nsinvR=8(1A0$TW&Q)zmm>Ku8UEe;Z%)&z;QiB@7a8L zdKfszn{gZuZxm`B9MYwWFnr{hvrjY`e6HmZcNEQUeN)`6V}=_!=TYLQ+~C|=G&N0= zxnncYI}|nTPVvq>y8-qxzAzXpn{i%8jrm9SwB`#Oa>tT=ElpJvOO2U3<=1-(waUz$ z&R2wY$tAq6ig#k|&Ur!z;;TjD6?>T2RNG1wBZQ4;f=zbP$0kffaP`JowhIR~X5=-p zU9eu`B7$yEMFa$4`{<=do@%_0G#!UkPauS6K#``~qt?@`#;RZ__1k)w9K+CDq&kjK zEcFFfW@%Rktpw^>L%IB*7C~qpjn-?c4O{*>s27^V@n2#Rtl-XT$aRm{Ne^qHu$!j+ z)Ut+ZS5EJ#Ni}P-O5L%#3w`3A&ZwI7|E^oPQr^xR(|U4}uD(XyqgtWUBMa7ep;V(c zMw@c+q}pr@=z}Bqy4bTik~7$1fr;seCGMXhSB^YIAto9_3wX~{fy^LtlQIp8w9V04 zsW|iInZQARt)*8sYRw{@*csY@9Qd5!|JxMtKQ7vm8`?Qy7Mxd8NDet;>%xuJh;a%k z`KDM!oSKr}C1&sCdc2s*9vN}BzR+o@-b%5@Ufuc6+i3C7{!ekThWp}HFUOC5C+;p? zFv9PO1$MVHJ5H{}#^|P7k(URR>Ln?%^NiUr^s~$bT^2Mhqiw7yk={giR7NkIiz0CZ zZOV6vVM7wAfL%~ie7-GD4}Nh>OmU8U3tPEw4fyx( z$Ye*xwcG_ak02~cQ39{a&67IS!_)iU&8ZqIbs8pJ8)MSnQX~z8&xBHl-`mI+Mrkdw z)}YlxYpl9Qt-*;So;@psLY#BD(0nkv@31|_`WL2XK7;jxN=2tiV|Kv@W9dRSxSoL~ zo`mO%R&1oQ5--n*)!-#z4TgTlG<6xfY04{M>y)N0PEAv~!M2(@nrTX>i!ybL)!JxS zYYA;I4UT20!MxJoNNO6?4Yt*wy-}1#T)~?j|;N%J}|dr)VV%O>a17P*^?S|bc12) zAiYleVX2OVJTInL_$A7r0{u_xkV{MBq9SC>5|5pr5>;+Y^J}K~yHiwrN6GxD5m}L# zbE5&QTT?Sdr>=@R5~^vTG7^yiN$2s3|3=Kj-!1(NCrWv&Wu9I<5T~0|lmCa}?$Skv z>L>pKyPIIe=ftrRB2anM;P?b;>q5P1JTl_fd(!Yt)$gi8qf&)x ztEj?kWJJ!#43Q(a(;sxDUvBm?n;yra9%vx~u^Jaj!g&QsgI2k;)3#Poo!F{DYqZ)_ zbyY*|2}pj8QvPD~NXwD@0QCm-Doq3x1!V^%PbCmJ6diAhQMF(FCcYW8R*BN^X02$i z8XQQx%VmYBErgEl;<Cw_u|Vy*@pB`I&rx(P<#QuFh6{VB;Zyu>|C+hX7kA~tPw#&_Iq}o`-w|+Q zjyzsZp$(U<-3%)cOJGYb1Gcy-0@yM)&lMVL;570e&DO_Y zuhRkw|KFD$U5q=jzeB$pU5j1=^Nr%jtK$#Vj~y@o0~dW%+fl`mQA)`@|EED)Wffo^$vAaoZRsuaXy|K#|= z#YaD})I*BYa3wsp9qL|4PP^;kJi_p}!$P=8JFY{k^!T7nG{o^9e;GRZ{IzlS>4J^E z=Lz(#=e;t?R#ddsk+q)Q|7K|}Rph1()~&{RSr(khTwf=4L_0QN6iXJw@3ns$3kqjN zc{>?5Jm*E{7}AdT-C|})5U$QiXne~AcwdTI?P$hpV?=;@#g!CvCK`>Y`q28|{oEL` zhdVP-s!y{>am#_}oY=E^ z`osRzIy^!r?(J0&7CmH8XZ%h_#oY;U22D;sPZRiEI_SFkWTYEh%JfLGhX&|dKSZ28iR(37^aVn6-sTl?ZFUhQqNRRWN}kJc$Lb=DaCwmmmoHSd3uUWvr|+{t zMCasjL4*M4g==2@xd+A3a$C#?w z)F;zvJb_-Hww09avG{_9*7tr_RN#hyoY6gX(>>pkqCfZ@)qWM?Wl`XZyQU-Wnnasv zchmR8wb@fQ9hClHl@ZI~BPG29-O98q;Djy%RN}SRUB+Z_?!n9@Tclz^w*nm;3L;#n zWq|<0@9>Gt1+zpvqdEN8h{geR&dWo>p^(eGTtrAWPV#$vF>|5M?kOyDw6PlLqDwUT z*eg^YyO%VA6&L7v1*4DE4Tk$z1Z(@6Ts^QirnEvyaO=G^zv_*#y}DJs!l;Mmb!)9U z7XL56=w$UPs6|QT{WI*3Och{9xTBuE^YF7AZyWR(~GXY8OF$G2u{z6Ik6@ zs26vwc#bq){_x1Vm({?5vtl~VF7)Ad@j-nY9ZR2n$a`Go@-Ef#k`u5_H`bm=Fo|3B z*`j#ZHiTRx9MKCM{=uB;?8K3gi_gDc(-zUk1^-nOfjJs|sx2yO28O)n;^~QJdG1|o zyIc{c$C<#$S&xnd#6A7F46X~G-}S7xyY@tMA&cwyGMfu%iQhj~>NL#1HOBnmBgjvm zw8i17!(-J(F7S4$R-$tTrgKt_YX+6|y??o`yK6#ufUBh|SSr zlZ7~JH$QN>JhD5w3EDYCow~cyK+{SzdEc<;@Nhb6yi^y*bI>8+YVBe`9KTU-j;cf8 z8wAKVA%U5+=?sT4BR`7RS@7C83mXig@~N=UoJ9xmuQ`+Min~uwOcLl_CY=JCfFnFm zns|HWnmCINL+P4H-72NK0P}&&m9f-!1{O?W&7DRt8IB1iomUU+r)3Da_$QVc$-R?j zKlM`qXdO}xq4a`fC@9DQ8J&1bGo5t43$;p51EB{BsA(awOj)yO$Cs$bDFsfeHp)}? z^%zjY{n8o{Zkg416~vUR~%WA;in_!!eE@i<&DvYaYLn72ku0jZ^( zE7U3aYH3HT$EYen9?%911ye$_PESyYiQ$ov3+O2ix)J$zU`BUjWPrsyD#j3-X?4;j z4q37bW2!_%M#%iYMk=WgiQH6`)~#ev);X8@jmqok5e@njEi%5`0dCQvl5W*|CWE+D z{5sOsWzQ-~KfFRJ3W)f}o*gsKWJLU4X0x6jcb6`_$)C*<*b}3F=fY9+XD;MwP_5Q1 z3w+1p&Ka2tHsE_Rzjf!rbr7W- zo3PvLWM}4LozrWt(5*@+9)-FSZs-;4TYi@tGFQubF--&XZ5&@LG15q9##K6VBwyIGsVTwqK0XIaAx2^jC`MCOv^(tx<)`keJ&U8j;U)9G01hJKYnQ|DfN<3*-YI zRhbPXQIrsQ$M=nd*Uk=OH1mv#o-YcJu-(@m7Iq}v%&onD*~eB)^H5( zkHZkt@do!$EEZ=$lkPe_4Ej%CLM3dW_;YG3u!UlQ1k%kp1Iq&1nTgv&u~WH(u$Y@r ztkKgT?McEl9&h!KAzS!?nva9ljNG?klpXG%j^`kh zXd^ovLL$VZ14s<{{jWk%T(lpFIt?$}rEI=H$`I2nB&ore-OvrrWuQqtq1lbr?|D?A zxmtOMvwT$R^{a}jhzr%~RDIPA@ninhiJko1Mx!gx`P&xD{9M-*h-|1-lq%XQ$@vUwAh3zE~nM!`q0eX^XAZG6aA0nU_Cab6&+mOdl8$j!Vg3rkbNLcLW+4pwLLAt z=|{7_xf?Q+dme}zGV428T7S2){&;Ghts5*d&=IkI&y{pAOJz(Ro1$o=L!Ks#oS7E; z^yKaWxw$}=Kzh`XBocLy>KVENQQIWEi?^*7Z&z7+zozKuwR8cq2IiKg>w2s_F9_3Y9=hb8bo$2Iq zB58Y z#jJTcTbGWtsgq5pkdMl|~{$|SmMo1x>9D!t0{JiP6=>~=2~0Ii!C>A)Q4xNQAWBv%iLfYUw8^BwR~!Jl~nInE{1FJr9%& zkNKi!#IVOWUlliW>1u?^w}~jEV^+@DeGhSA552@V>i9l-jFUJhb!s}`B{R+xjX=}` z@AlG<6JpQ};s%Gml%`TwFxQ$1MxonhoPFZD=g@UJB0NU&(Xo30SrlbI#k5K8coY3F zDo_GZTHkWNfFOeqzeyl08`@N{KPMku=rnGP)8oYD&WR+OQ@NLJAue;O-n%J!cc-&U zzSiVxUA{KtYg4}N7OxuSqr&pu1d;+Q`mO*>C+)8553}jILL)ai;KQbU#$&@GM;s15 ztH$iZ4vW87#nGq>m|qSFgLrxjXfI}v+e@$Z!qB~1Z|G;Q7Nt5jUKrimMZxavHLrek z{-ti$#{0P3ONZ#o=s%GVYyVk zT-~w5uDMCO*;y{)7pM->{g8R#2N+8N2F##Sd~fJpt=IOmQ*>42Mg*fHe8E|lN;T^- zBeQ^&yJq9&O&4!^*_sW$70>|wXhLRSCl+=Y=Miy3m$F8X{i7^8v6$E+JFZ_59HZlM1C85R{hBV~omD^z)mgoV z=`o|uir*v<>kK`z&T4N`XSMtsx3dzLsm@BidnR;N@5-jLx}Sy0{P3`NhSu zp!vTzA@qv{;ur4MiWBN1#)lV&Y}B?xKZ$OWI8VBgE>IEj3~D>7L-&qfP^jh(@u}OF zp^$(MT|+`U^s7)vK!>g&h0QnM2OZalxo}CW_n1JX$ocdWuF4%K?z_}-QA_>v2Ki5G zDFwT+>SUo*nVGQta#K0MD!)`u2sCccGXdmM(13%Tk3PC7QA#Nx+Z?N_*5UQ$)KsX1RZSz2nq>^@){Bv8&;x_0M=_rVH48h6UOQJDYS)I zjg(wlwo6);xWD6l!pW!vQ4H=pb2&P87&p^%M=?mEkh7pRJRj8nU_%YbV0xQ;W-|&2 zV0xEY8bKl9T7vVL3W^EhZdUn>GC*7h0pv4X#;iL~tpS$QkkEYQ9uyLg&vdD!ccPGR zEp?aAd>94RV?Lww7f079kHYhr=eu)u2{UwlKNs#17pY&n7wDu$f5?)Wzd>~ec;n}( z?Jg!^zJWplLcNBBc8LFmLIS9-A%#uI*Ac+XCR9wuEdC2rmMB7Zp5Cl9(i_I;-gBIv zD3+lnU2!g$%>yRYkkB0GSQHXK{4TY$28D!c3C?lOL@_}G&ML=I28io4@TiLN{S~Oz z088o+hUPfKC?p`q=`zqyqL6Scb(iB@j{@s4$5Hx=qid8$wasz5Ys@Lqu9CF@@YClRrv3+J%A?F@K9lsGG3Zh}dCrOWL60eQI zZ9Ws}&%6V>fr2yTM-Quoo4T<{Wu~=|rtC^%Gp!?7CgH7|&+t=A^dip~0gRT!TX!@F z`pygrM4V3xF3EC`FVH)q9K>Hd*99T1qoT#6lVo_ANWcS>pvN*Fp-eoB%>eu+9hZsh zPbw4nhES2LX%v^KG7)dL!tS>otnx^&j z`}3O-A0C@uvtiSJ2u>cL>XrW+x>u{!&*~LZZC*DU zu44Ihg$h4@S1IVxDZDoIIjt4ukb<`2Kce~Ub3EyA+`(Mw%oVhSQaty2HP@s+V;;2V zJj{cT^|N`@b{A7k&p{ypBW?`|9jC2AAps*04Jka;^vVAr#7s`>#S{HRzsMK+PDj-p zl{R;t*&ozkeRJ=#Unj>9e;fD5x!btd7olPU#Mh9Ltzj07U5!G5EFpH}N;A2oIO!CO z#i@TVr2av!eg~BmS3eqeu0UIm z6_p>i3p!8zAPOma_I?zFglj1|o-J{cIL_YBp|~LS8WTqc>+Zz^lNM_YinQrp{sEO6 zrw9t^y9XZ9d>TmejzE6Gvf>{fcvy4kw4LDj#Pm0VH1B*cQBT2mZ92?DvWJ8Q=9MU< z)I*LtLBp*#h~k1mj*&+#@ld1{YfwX+g9?lr!iY6(s?|23kZ=z|we)Hf60W7>9&)KS ziOBitpul?LYXC;S2zw(cF>VT!uq_l)_Jn;a3JKRzGGPb&nQqS52T^3bF*b;!UzB|W z6&W`MO4+|gA!Se5e?TGOT1uwu^78}hF`TsDMX~ipT8^Y&wEZP2G;R=-wo5L^Jh?_w zgCkH#xR#P>yI8Lqa>kyB!s?B&9*BOC^+l+>xEWBgUWh`mp|ChHP+X`8ck z6vfpWTYVJ$qU&x{VB8QWU2j1lWlz^Pp^$JbCDTx6&!CX9C+n9{NVt}g$r`a)`I{&vh^fX5xJ&(>WK;x_tE@6cVnb zWSS266>L1L9)}`>$ZE{J266O@vL~Y=|)+hKXIpqfXsMK1%BY{(u)-gs=N$c+KZ%sy=b+%c#QaQhh1qz$B8=8%jnXZmSb zz~8V4kfgj*^HS7gQ3~q3o;#)K zf{O@sw`$j$0R5esZ4};*oti6?cdoVDu^E;qe#ho}ve>a%6P%JeHm{?1#*R&M2qx1~eiZwE_vDhf>E;LHj%E*X# z$m?jcR35Vm7CrN`L5Hi_HLEEur*HI=VF$`pdIX$!$dGylx<%Xa=yB+@RgW%X)~x3T zuCyEU0LMzD+K{)XTjSN5MY{zWmI#wrx) zJ+#2;DWbD;XQDF1K4xArN%%q2r;UtUze;RgJ4HUc_EdVRxliI7$Wcb=nYgr{(Q53e z(qpF8Aq&zm^&YY$1VPXU}Sog%z2Ldd8PNblWIpXrj-LG9U$N6K? zq)Y=A#@OpBdX!th%e^xNa>kSDUsx%gD$d6zTY8WB%qb0@y2=`|+=Cu-zJ1r+uqOWT zvS)PF9=Gs|Bio=S#tX)sN{@_>#l`LaSe)v+u)luvudn*WO7)+SZ0MrFc@*~OIfO=o zpJJfN_vVKp_WDZklo*Sh!YoEwOf*#%}gk6FOIf zgSxeDowd;#D^Z$OtrTk0;^Di&9^w?*Ns_1j$qi(K7X5vLRchFi!G!91e%Dr~TeA

GD8yV0}7=W9RrNqC-P{~9WLif>Ch$HJk zPZzWO$4=Aqt+Gq44;pEsw1F3`7lKxvXL7in`PY`%*%k!NI6)%E4<8P04DRB&@po5b zP|;VXftrSvrhoOhLw(0R+j_Pal;4i?&51DTFh$+`3S2Rw>#sObbTU9Ah|tq1mexwH z0xNMmWnXh8F;o)Pc3Ioe{;5v>bENaV-=E4#7{XJWyWN3&SAJwPhk5~m@L1vj)SOLm zIbn?9{!@E4dOUPS_`(`a{Jc}>aALKrCzF>$nV|h+O{z_z!|GexjD6x~Ne<21W$HJ| zG90xXLs0sUCzFwevaMnJ%FZ0y<*|du!!u_)@?WZHy<8pmGv<>2&eM3gf~2JxYIMl% zq_BW8hr<5LRB9N1B$GKiqz+ciIw!%Z+Sby6)QBEQvEFw{^2|owC5T3X-iD67Ia>^+ z1-a&sSe=V&F-Uixq7U28-E6G69 z5PO_eXM9L}+AskFQI-y5t+CB86!inde@&AcTS@eFiJX{@pBx~mAL5jd_MJDg2J5el zeq_OdomWj+sYWoME>GzSt>c)-HfDlagUUn+=00`7{$Bv}}zlEhK=uxg~eqRlI96~mp~t{>oO3!(avtXzS$#_91G zsD-L=N2VQ2SIpOW;>iCgN{20A<8W~G>W0U$UcDO7aN#iIsU_$N@3=`~e!T4l5#M6X z!+I1&4_MCP1n>B%eTCzjfjWcE<$+o<2SahKe{YlX0L8>qZhC~NU}@L0?qxk&1Mga1S?f2ojAK>xZEL-Y zP8H-Z%*MWg?Xc^`>teHI;Zl1L4-IR>YbZ#d(k54JaCd~steK}5IyiimaNUkp@cpex z*zEuXUo)S5yJB`8PMhs$;SL#5Ms4itpoC6fO^x6kv*XbUBCS_zA63#Jqi}eOC|b^% z2`?u{oX9-6@>YTqRRft)PPjrN278-SC=%W2t>hWlpC$hW# z_lNH-hO1%lGx9e+IU2jAo2w|kX3;~yw1VwOb9+0)vWEI^nw={rE&?K)k5vawv(TsR zBhkbJg>+mmq>PsboA*Axw?4R!9IfbG=d5-lo%D#!i<@IJkpiS!b1ds&7#4c@R#F#= z+Vc*~v;l_N`Ooi+VR1jb{)Kq)_IBZV@o40Hi~qWKNaIb+s)hY+gzew0Z4kzvUQgzw zhL@p{p`T0&4({y3>($rRu*_iiupCwcA8tVeo*RSr{kci3b^Au8@g?81h$k@a$!zRe z!(xWyrn9N|h_DMLkd5mdBXWuRSHj*svI$_j!%q8rd2ijHZixRmOLLkQ}Aud%8*W) zGLvj=<4X<`oZ<_%=!I?Mumh*+7!KFF+XzN!-F^m^-uw+e$8lYL^*5~hoOgNkuYYET zfBDsmM?Le^3r4+7O3TR^qkcR;MbkQG%HH5j-~Na|rZe8vPv?wlS0kSF>T^O#&UyC% z=I6sFXT0n`p7Zvnpwk)e>Zfzwq-z4*m$&vaFTdn(zRcQAWyo>Dnuy~~R1f9W=;RLK zdbOmUNCD-Hi7SV;sZ$Nw&64}uT(%1tnN1Rw{*DW=vM^QSChtm;k2x|sG{#nBhJ~XCJT9`&n7IjTj+fW;lx(!9*^|6_0 zH1h<@qu}Ohr_vr0!Dh%atQ*P92@_jl!)WhxEu84%vAf8aGeYWk@DW5S;w#&&fe5q; z@OJVA)evL)`!=YBFasUoNwvYPmbYDA{n-3J7z6r4lPpGnEKkhPx~2`x>3KEG!kSkJ zBhB_{A!2Cov1oLnxosLt=B~Q}ucRIfQa(=r@1A+TSy3f=V-^RaXK;XU2uaflcaW)Z z6;6+{GFX}D;@QG^AbX}+B~7t1$=jyK5lEOOYYW>{1(7&slQ+kB6&4HQRdzdGifCuP zxL##!wW(&K|3=%B#xe$|lSQb2I2(SF2rekE8XMa@bIlwDrP?Je)>_ATbo9uIbYq2* z9Y7&X+nhMusCE=8Mb*0509NAuI)0cA6S}AE0}WuukElRru`=40)=}v=q^Z|9T1F0N zCwW~a$Rl$9X1mYXY@XOL%#v&nRBD!RXoSLLh=&EwtMWHZ$ zgJRK&ShL*$p*?#Cr2QE#wYwG8-3&esb>@umu%8VYdjcm#P>M?=?@qEBXLzEu-9@D& z7hm-X9O253g**$;95D&Z{9h4Eq#AuS2Z!K3K4_p-ascKr_3GN-ixjQkjWg{sOPQk6 zWX3YYLvQW8dpmrLKG15ot%wY;sG;#qJV!=kDozv&ZE-`u&n(kXLt6vOgzk7`;}U}u zxor7eo?H^Av_PVq#-wxQjkkRtUH_~1-!HnFSq|Jrg5nT-?%TLOGkT;bDLI&Ry5fgC zQyaNCWW8sLH>*Zk`HPorA7SA!PK$|0^r@W9#o)bT%skz}Isj<5L|vp)%JB7%8h>d! z+UbBY6F4JY65izmeQtk`%u;C^?I!QKSFBe}I7!d!giDxfjC2%KyiAM)J}8cs0_b+9 z$4W)a;fb0nA2 zipQ>8xpqZR&|$(^8&r|C5>oMY9Oi+&*+E``IX|nnwDFsVAQny*sWIzp*s;<45{T9q zn)2e~oI5R-kl`lEitxiC34S-Pd8k1~6VZh%5iE2e$wG{Yu4X>Ll*g|gU9S?w&1=?fLSqxC%kCWY2tjn@t5#``BygNlzc#f2}hx+D&H11TZgKN1& z;0{Lt1Byn|j6Duc29f#El+X@0dIwckab3MZTcg+}6!Tjx6jpG`Vy-(>{ode#%dgqd zS-D>Yi1OSNP!v=peh5c*m5b@u2@k43TB%GPgvHD(jW+~t7%~xi^EDaleM~PMk+d|y zB^ZPwh=xzQqh%&pv4F5RJ)8Kx;xkF$Bf@NlL_cAIfTdnbOkLey@{g9-@NDgKk~ZdD zBWU4fuHYjisbN|{vSvz{{h^CSTneQm@BxB3(!vW-2{R%u6cc>xZn5#IBMIn7q<7?n zSN@7h_$us$MI`o}#V|umJCROg`%j}e5VXf#1w%TqG8rvbqEbt}v)1IGtu|z|NEK;< zwk;l$P*e=mN=I(d73>;ONI8v<6U(~Cq)=QZ4DD2G6l8nGj6nUO0XJjM0FU-AU#tPL=4Ny+*0S|y*QK2 z(3dQY>tEOVv*YYU{Nq3T%kbYnezNz;v;X9e|4@E)c1*D`Dz1F;{F6WMqpDr~CDjZGj{>5h#HTg$XFEP#k+kQFKh35ate@^`_t})}%DP7BLfBkp)uMc%W zw>|ss|C{vJ&vik!J^P>jm-N>SUCV9H{`voz{`x=upY+%Nr7O7Y*MIW=roaAq{_8LQ zk`nOt>p#1c{`$i|N`L+3zZZX<{_X{(#!mkD5C4YqzSvD{(0?5LM?d-x|D_*N6HP0J zxJOc-TxCC`Cce9=iMPJ8Fff>W%OfePWucX_$|xm98Dfae~t_C2897+hN zgQ7|tMXcJymFiVrXL7p?aHULT)@L4a8w)~n90iJ+vxhN{@=TKd(dh!a)YI7|bQPSm zR2#tJgo!e(CFE`kQ#PwwmHco{)+1A^$H&wC6XXphm$$;@9r?hAlb=k6{F-E<@ulqe z<^|caG#!asYO%hZ7BEJhLgp&srvY()KL66Ryds}XCbXPPl5sr;+seD7=ud0elfii@ z%n0x-R6iBsWF7!{e}G!HGxNApH*xQ|(kh5zvP8P1$`JNS@_JS;S!O-UtrQF?pAz}T zmo_}=w))k!kQiRx04Y_%=a{^Ex2tKU_E(C|g|7P~@0;jcgmVtS^DB%Zznm$Fsm@Eb zR73~?iCBz;oQ-^&ocu{ald}@vzQn{!b~nu0&ff73)k-SFlAP%o`G%flk%paY-~mPO zbP$k90|QGNH?w$b>Lx}OSH)H%TJ?^KXQf91tvCE+_S_#{avh$^O2h(7^GI%&1UhdI zBI>AzniuJ4ads{SsKD!`6IjbsX&C?|LM9Rd>3kX?V2zqnj+ve9URsX0AKcMpIi0S~ zo(R(yXcma;nu;xy^V+wz3|LktFNtSlP7hDWK>AqTJ4+ljsr!yslDYSwHo+G!@A~ZU zD^|C@&FGWO`x`fJ+3CduYc?xNnI%^wK;Mxz4oKWz$MIs*r}FEjGBvJKY?7E8DeQX5 zg6G^k61LibU6f;oH$`1$8ZB)_!C29B{PC@ie)H>Xj(?LtyF*qqq1|lJBIU=%3+Zbj z9{GE2NXoy%OU7nTJvEACMPT9=vM)#tChvnh+h~K9spUt5O{$72UnA0PQM2llT$0Dm zNXd08fD&_Ucaq87ze(HozwW@Kq}Wv7pzi)n!43Y`XSh0j5q&b^Aze8e}Zx4FMJICg-WdRL;q7TT$Ys@0FdD#!O@HuUlAiF4wN1q&#u2h zPO;=wH#|qbW>zNq`^fTNVe{EG3@VyQhyz%kDIJ+gUvxH`Sd6>ipuVM-8x)OTRa*vs z7nd_})%nx^eaUHays0c8#K12_zI`E@V4Xc&Re}gwcZ8>9M#qH3fs@f1H<51nvboud z8gi>MmD}N~(Qmn9>~e4$XA!bpRTkY#4=-KP5ik>eIy^loVRa5zjyAvb>4WElvN#PM z-Lm2yz^KGCipP7CFa#n=!G+DV&ZqQ@;+;tgYDhAIXEH!R3RiZ_XWtQT#!{ov#AlmC&U zf&fW3qoNOTx4k?r{3NHlcwQ;Q6O`{1+@RAlV5PZ$+Z_-A8KqG>MELUktvz$vzC{aN zW-iQvMmg)oEr?;T%JRq*W431RMB?b{GLPHBIkR`3R4YrH>;3CRT@ZB>5+TV8sOaI#Wpk z>&I|=Vx-vXBhtfj5^ER~m`sP!)aL{hxI3<`AFO3R-*lKkdcjw0960Mk$ zQJ}()tksXUV5QGFlRRSZg1I;LiEQ?EX|PEQn2hIqNtYd0>k zD`vkx3%wqpVi&pvf2z`ojGS0ek4)o2{cy^fX{)gZ2}gq)H=J~g^)0ilAcv%R-bvy$ z)|pIZVVH!uy>D%QL#w&K`bGw{2-j!iaepf%r2&jq)xgiBP!0g;h9qLd&*D4 zIa?8P8fJ@5vcq~Zj}?YP(!_I&T!6gUn(%7z)}&x=KM|+b|I>HWM3+R7#EEaXj8#ge zOWpk>Yn?gckN8R7WOzA2;T)|nC9DRzdIY6|yr1zUH#{PDoUJ~aDjd3VwY)GOvXz+|=RmtSA{;12Rd$m>*+gEAOCuYV{G#9i!ON(ni#fH%I{l zrqI#9{F0P&pplIPW*cxI*^)M-d=Mz%ku_2nWU1Gh17j@8D9=0|%EV+r z`WX46254F+`qa1=?~A74^mS4ND! z-!rIfPENVXd<X;?yCtxWs2CwF1Vum}~IY30? zmilXFuHJcz|D8O7!YV3WtFVdy%PsvNTjX}8ETcq4G#V2zqNJJdO}nx(?okvqZ2hs0 z^|F$FClhAUGxOLIYuhXrS)5IZwyp$R#=0F29UF#o5EdRj$H%*#3CGeA|v z3ZFwcPED7NQSdBDuDCZH`_sHAITINZTW2~3$lPz4R$t4MV*Ah`R5LCG5m&DL2+W0r z4AM&>I3&sww7JYt)y9K8rLM*lCe8hhpYUaNvNM*vf-goFab?iESe=Qf>bk1F0^!wh z0IPhLo%!r|$AlCCKa;0k(ju}VnD)>WYHRh;3j~V(9}MLT#+}y^fC}0jo9}#*j!Rm@ zXiDb=n_!4-LzNb+m5I_}7t79=!D`cC87X01D;cMGj|8AmJ(X10Bi?HO7>Js-7*a9P z{W>a_VTEYfT}xJ0O?iK`M0gY43A>^-3=jL)&x26%P2#H^*Mx5$cMHu4*|xW@%`sp7ccjB+oG5GP=AA;$N}okeh28SPIG z9_>yCUvpvC`rvD+?a#|JJd4JBF5BCO$h$(@;}N$E=%4iJdK!4NvpV>C#XLkisIdu8 zXUCM`Kxs9o`N}ZalDjeZ=#>9hAci7jxF!JY+iqvDJ_Og_%^w9GfJBOL$#qF`3Y zk7{45B7LtB=Ax_h&_Teej8O?%<`OfjhoU>cQvNr^gL-m8f~MzHvFv3**MWoUO`bqr zkZVG^!E z_Pi4IG_DBL^fevK2c!>azfv{qDht`9dhG?M5m!|23Nqw<*%s)4Y;Sw)$f(#~R=NC3 z+rdnC`Y?Aj^YW2xU`FIbkZT^0s5d9@3~m#h*o+h;;OB&09NpnaDXL`4830Oi25Dt$ zJL$^ZFhtaR2Xo8&wBQSvm~gysJcoQC4%%2G@(ew7*vQ?(nxRS5ZUk+CwOWLP+cK6< zPRuWJ{2Jd!eN?MoRJQ4zGcEA&Ju>5Nc;4pHr0VVS=>^Q{AA)};nPjpcPRB}Ok-zl{ zJR8!5?#L_9#w40GD()B3kP}(*v$_k9eqz!bXTvQZn9>SqLlafpmEdSydjyn;4e;x~ z^sf+z!zU+CODkiIxsiQaYNI<=M;j}-mA=~;r5hq!M;n}s(ugPC#v0uQvrADZ5W^@? zB~nb2_U`(65epm$BRkA?>W`FO=tk3I@qiNasri0x5)-W`gN1&U)8ulJ9lln!dtgCi znhR*#{$z!8>=#>~px$Ybs@j;W(D{u}FuiN9CbFS(n@FZ;b6XL+|J>g3x=5o)x7NPz z+J)JMh9Wv5BoFksI(P}Io5R+bVd@!t8Fji1n@xMd5*qtSsLoejQ=eG<3MVVxU$`=t zdt0v!+vh-kY2yO)OV7(*+pa_nH&KT~!$UW8ta2il_D<(HPxP!aeKYT_Nsn#?i!=T= zJ!f1}$ad;AMM;bIQiD?!aQxLYg?)jE(G^My_(#V7*{1KJ3_2k!2SdrBST7TQg+|6Yt7|HJ1yf zYu4Azp<2{2 zxhT^5COA1hhC@1Xo-CU(H`7(xg>awz!Hj-Yq*Lca6l5;3SWDZ`KkGz8DI%X{7Q-#$ zsWo_h@9}34i8x*F-U9OcE?mZMXR|Ng)ooxEHoXfM@wXg;cX$ytz4I1vn+ojj?i%v! z&RfDed>njg=S}`^=9EKvHxbCEcHZPaqh1}g?2#LG-_bQRGdzDOhg21KXIJ5qJ8uCG z-sNpblj|K!?5k{JQl$4c1yJsQC~oqfwrXFZ)h`Ia+% z(l^s5-*To;`er)&{kL2G?Dsv(Km3+6MHPWZhw+a19YP~n0#)!7T?Cm^ab2#hpK*;T z^|}|9IAl>iLj2I%bzS7)>A@pnyLkTuYY;8{ik-nw78llrlWCX?06?UuBCCUJ#z~*5b)54qRdS|lzj~BKT zImy&}*7}w)N@`e9#fan2_O_JCqpF8&DM3>*bZRHK;ZlA!rOzwzgL@q(@@=^&%7&tfHRHjquAZd9H|v(UurHt{Gex6vlkgmDnDsK~>0N2WXsRL)cGmoOt0Va6xn z)!DWEY=}G0+=V|3eX$-r9>w$;eQ~K-Qq($)rS|l-)$>kM=?#5N^}IAqGJL0HdR!Ws zu-s{7&%6nTu~y9u^KtWCc{3LskN8r)4cU)-RYOw$#?1mS!RE zbehG}w44(m0cR$Wm4uA3y`uMY&>^rN@w6O=p&8?QT6M~_?^><-<#tOo=t+4ufc7-4 zKphLkWw6{X3>wiyZh+-Bi5^*Yt?q|ka6$YNPTT3DszBp4mcFK}y=#9dWiEH|v;ta&ZD>CB5(Oo>X3)1Te<@{Al3hUcCfxqY{{OFlHt zRjZ0(S7O5P?4~!dJtsBLk(7cdoA_sO-D@O5E!C4ydaYfpX?PLNBOem`-RsJLCk#b`*k4Xsxr>K9J<9Kh<_$AL{kC65%`c13o--eTV6P7LePLYE=DK7%Npxj20?^{b9p#nzP_MMedlYmu zMN-!mvJstC)nN@KbjxI_ZMn4dv7!$@{BU4-4-ICFnC&?(KzDWMRmJlrg5JGHDqvqV z9y>&qf<2<;=mo=aukw6;v>3kZdGB>zRH%kQ+NPP@dX_43xKsTQQ@Q~Z?5VwHf5{^b z37hF6Y`@6!A&eI{4|D zfu~HlK|n)n3qZ45Tttw6u3>qT@Up4h-l~b(EXoo_pgF=$A}IVyIS*^GqCrvyB) z&Qw)-Z;@!108K1mz-Y0*M~Nop>I$lr(Gqy-axKs{qmm`&hm^CUsKz>)H2IqM`x%iUU%f zPdfne6sMw=Zl@Q7EZ5e4*EfW<$;rI(50+7jLr@L%L65OZ?=~n;Zo6XFg0nT`7*Uux4H zJhh9K@7~+g(K$Na`wAjZ4xNRV8x~}!Xq}yXFwePK)wuO4rQr+asn_#vR-figk3tRQ zfz@yrHuK|N`6LHN^ZdQHwQq7X^)FTfB6k{Lz`Eh71JkCGX~80snI5v8a-zvaeLJkhUul7jFz&pxO^)1CI;96e4K?R`o0o zsrLGath6Vmyq1A^_FE1_$F?+DdDi=$t!eCy%2@FoNZ4#j9|PT^$n~go)TSoxvW5QA zC&CjJfF=(b&+az45;_b^SEk!5zd|*@pn3A#z6k}4z7;TQVt)FJWL0^tnn6Vqx>gS( z+ifbjeaq*4&^hBagGjzn-zktqe~ZP3__}5nI8@RrN(Wa;No81)70o!yZa?Q`C7jzu zV&=TCRTffk4;Fp=48JI$$g?ZD(JNh+7WAGiQWNwWa)AyjB63?dBuoEk-=i_(B4LEA z6R#85Nf3Bv@RZn-_pn}h!i|iUnt>#jmU#$B2_1AGa`W72sp?YDtg!#?``)H{dAT|Z zD3+^OIyYZXl3bPBPo64_{WzlOZM7hHb%jHBv;rw7vcGZ&Im5I`oQs*>o%8b!g6gNY zj-=`|0twIJ<8iVTb!EImujtb~=eh$Kc|Wgl2P_W)I3SU6n56Wo(hP}nwen&;7629s zLA!zmykQNO@j}h=Y^&+zy)O-dzgCU(BsUEFqdhh=^Mi2gQ?x) zowU_J^Vjo!4qhEXR0lERYszB*C9u5vpkH6$}bBSQmQaclv?myus)RU*& zO{fB?`PvbrgB>}jk*!aU#+Po!Ja5PyquP$TiD)$VrRM{KoAaYR z3GBKw1vzPK^&0PdeCzI}#ERk8WV-f;jkUjfnErTw?VmopiWD0r$3})5m1`&xRy-`V z0c{uDs^Z7cR)}szY7B*{M2}?2lh9pnNmzZvm_xCy^Nb$s%nntx7u{C3%I-a8F_W@U z+>n#@b|R12Z0F0_ZY`_~HJneUG?kEi%H2Z*C`wAsntn1*h?wtvofCuP1#-7gNcRm; zvK=R1#mVI=M&U>Dh>=Oj%2qT^ByG0Y?H&)QYz%{+xP+B6tyGi%i!3ysiixb5ZB{5; z-$~{cALBBR_v1Zv>DQ2%{nAp)3%l7YmboYc3;}ghmrY+9V!7|klkjG`p3nOk+|u7Z z7*0}&wKypAIke-o^K=gwD=d`*1Vm-J_6#$jg2Sa6qgv(X1~b#96XUEJ>hP)u88~5l z^)HIF$I2bm!hPFvCaQ=Z%kFzGXp)FR@tiihoXqCxL>r-wp6t&bkyV#~oy@2yBQiDp zNG@Cq?^;hbal=i_My^^cbjFlpRs1j|RYlyYej#6Kmtm~#kM_-AiE6*QyH=;`f|Mu6 zbJeaj7w64?ayP)6CZ+jvMaG(Z6_uF4FzI%s%0QfQ(_}!9Q4$ijTLUC@`gymqX=jzm z7;K8aqV^@XR1-`66n5#$?f}{#*3Q~0?r_8)qfhs+&`>Fdqs4C~GP%~)nF@W9C{Zx8{Jmz!Hj;<3D z)^EyCg0Vq@bjc6joOWoHo$bhY@A-&i{uLr+;P*x1Q38E@qzdCow?%@W z!pGj2jL0s?-D0%jn8d*}Cx zxdbG;WOMM7L97uL1X@Fi)`%HZLDOE)S7MXf$ z2i>zLS-`Vy9-khA)5ln@pDDP>1zlU9NYX}KB)R`-?1b$~X(6_pbfUrN4#|&?A0yJp z?pH~!ns(LDt%3nq{igY3^41z!la;Um{HJ@5b%u9UD4F9M7iEE8vQh@2Il>L%fX>&! zX_(BRdiJWb2OqH4^vSLkZpM~6EB0dIT{_o zPqNMF@y@I&^mFd0;WkLlnd|*f@>>%_v`s@MVrVso5_vUba@kMwRP`B3`N~oZ2qa6J z%FJJuTuz*j@~J_ZekaZ%sI&h(Xo7)ME@GdT z+^~Sp2>k(gweL2DWvrP>^2;Ym)Lu|0Cy9U%-{3ydfgH|N=^~VOMGu^SJYZq35S;J` z+2Ps&Idrq*YrFHEYx~o~CveO0!R}>k=~@w1z1z)lE-V+_kOQhmBD=i2Vk*qILa-dm zMEQe5t^r7HPf?05vUsTTmyW)()$rGfuvr#g`c-r=oh=IHK%OZbLS0Lw^C;Jx$eu=U z5RU~Hoi+#wocVD2)gF1K2xJ*65>Jhr#4HW_Fy7XP6ngG7X++ri3KVgjaIj=KK0Ll| z0IUR!JEXdeANh$AxV7U<(15PnF#?=IIcbX^Dj1w50&=57`8rIx#n%o$-xz;XY{YEF zp?BwcCks)s)xisyQYcq0}{#mWl+0?xA zd;@HpN0&Xfx7{uPRLwpR|N1!`fwV3cxP7Nq(hp{eHl6IwPe#?Bcsmd|pO37wl~wOF z|C`{*BK`h#(XZ|8@;<|IPA5rR$e0!28HJi6x;QP5H-otB+NREusx6fFAt#=uTvyPvzi?3 zYi&g(AwzaPW1|yO=29QGIW@Q*nlz-t;zT;MrZbjd71|+qjSMV2-O^mr(lZ|1zMU45W<4K^QEr7pvUd)Tj<=;nSF1T zo%<18%(I4KOW2BC6=RxBDfTHkZEGx4a|1f2BHl-H=np^VS^B$@*nh%2(Ooop(2 z=BDIAKR(n>@!K{~%0)8bv2kF?H6eW;wti}{o@Y<@u-&L&=kWP#`gBMoMQ7(C@H+!6 zZT8rYdD9gLDqEyuViR$a!J^}g8IzNN<;Kfk8Z8rdvZ->UJb+BXx1_+Hz^2cQav;_j z+i6!2){+cW^*+x35j*Re^D+h*gupx@LlX+7MS7U636nl*EH=h-%z$wk$1sLr)H;uB zbC5*gR*gJpA4|+HZC%lyR~}YJ@OEPTA})sHMIDJ|Im*D%4bfVr+?j%4bwOPaT$_Pa zkpa`-ZXtY{Ez?s@5jG%Zd9x~?3l>gH+noL@PADS z>=m)Gaq~`!n5E+SIkw}4ufW?z;FTK6d)oT8mR>D>5_4xP&AkDtX6`Kta8=orGS5j_ zjWk4?W_FqCo2E#-$FKS~As;(xhp@;_6j>fW2tU%F<+3bv4yXq!cpX3J&0emkcEQ3jPr&KCD5c?3-C`sGgV1jjK?=hgF7Avr}#M9skgTW==UW3ea{4_|2WUfLe*iMnWM zh$Yk4Bsej;QIW28qt#0R zebZO7;GTsT(5jX2vLmXBTc}@g7DGUj^%imQgnywJt4riP)SYwinz*2a>xTm~Z}5O5Ki`_W9A#~xDIFANTj$?+<4ZIJ~7ZNjWyCCj}*sZNCU+?LsV=~g*)RP(d@Q(~rc%Y{c*nNW@wSNs6#CSGH;F-1?MY#rboB$dRNYM3YjjwX{s3sk1$~P zw_hn3ac{>>0-2_X&rk9QRRkOg>_k7NIN6>!j6yFd=V+V*mBx$cOXBmg=0+3myDL7j z$d=$aBUpZcg#{S4=Gp_-{%}bkDwqeO*A%GNL4E4tgd_wM# zz8=fn=-jo3P=^@n#)4ISsjY!BNb~IT+B{KqB06`_)b|SrSIko6nQ|_Z3ReJ|y9TRH z94U~dzmOObxMlu0j1Vw*L$aP1Ym|izFSGWi7%(Ux580Evpx-mvXp5R!T6&;QU}yv2 z@mWaZulRqhKwB>oW!SH5X-43ZX4FhYU9^NXDtD!OnwMpkc7}~4xzx3~A0kaQM_1+a zds`aVdVhJ9HIBcWJ?G|y<*wWHX-Y19whPHbO50UlS=RlKGf^lZIzlToR zvFBYc+o(0@bL%V6-V-_HU?Qk7c3#$Xsd>$WEcg+Y89s>aMPJRCQt!6yF%!;(W*6ga5hh~LDr_?BvWfmS8s zRi^fgG|Qm61Hg~50?Qn^o9gfG%y+Rm*hXAUt}*kCHETuYGyf{@#WDAo!FHjTtgD*u z1qvSs3M(Z5w8M6V5<-HOLlG#vkJXmsDS}lIUcDLzmDg=gkpDQKSt9{@$d%6&ybA!H zL&u3#QTUh)})An8-WTGWDSo4=Mi*w|PC7A-x zjFn!I&)aPle&q6W&Smsw3TSxyG8;ceW%C)S#)GG%I1ldVYOld=!=xlRrMs`DLY%W% zd0_%)z_|iKkxZ?oPXs2V*sYZ32_r*(l!?G8i*iu8Kr~26*@=GmAnBOZ%%P%1!2QZT zR0hS%x~1BcnQ1Fj^M(anu>=#|p?5}}cDb%kE7M1&y<#UUk8y~W(TZuvWQGK!b?z7OYjE2c@p)v1lMH|+zE;_$7DNxQSB^T!{mj^hmq{a5-;7@Ibo8=o*F2} z>K(pGw(f1G4i?f*suvm zpivj^M2A9i)1lk`JwReetD)uZ4~FAM{Io#&J;a11{=&Xt%qE1s zqNK=t7D#qcx3AUdPl*vQ8CQ{(3KKYY&ceIbneyg46WAuw0h4{8YV=7%D}i1KJr9uw z;X{blS;0gqM7N{D1^a?>O(_G59nIBG)bX#OWvV3PKf$y891sOzilvc=Wnoi?Lu4Y+ z2e)J96A*zX)d@yE6=AYMHyT!-O@w$0JafaSY!5n8-dA+ZeB#bca7+yL$$YwBjl6T<5Q?m42)!b53a9qpxK1FYb!j4;MFw~Ks!c%y75A;f+`~o^v;$mu#Texd zbEIc#q%A4Bt9S#ukm)G-fB|)*HA?%MK0$Y0ULA!O=O-uggEf*tB-8^4NbqCoC=hn6 zxu&2$4OkJPY+MZT__z(YZ2YIFCzYd@>pAH@1z7{7E3ICU*Pn8AjcFtC zrTjOKT9Fc$ln&MDnLj4B9;9>0#mWRyq(c#)nc6~hriZzE?NZsq0-<$dpo>A$xrqUG zbC!Xg9Tmr+-^$t!wrqEmr#w#05sVi#nnP};=~#68{#P?+MDHDsbqNT#t80K9@oy~I z2Lmx$Imixf)Af=T(!NkJ$?`*yUoMl6=P{snL5JKifQjJ?1JpVklS8u_FMEUIrIo=? z@HP+2MWoBZOzx>^cX{wRb^at!L_Ntoqxil)FoLydWmYonDwf5EiZa`KYP~U8F2AsZLP0;Q05@OnfukQuc|i0 zrLm4YYhdo)TcwBk1bjVxG+-g|g+&KI0laXe9o=7U)b0D>La~_{;nr(q?dcW$%V|`M zg{mY~`cE^Lf>HI00k*Nl2JeozGQ)_APv6{}^xILJ^?oSnLdh(Yj_-zbvW0va&OCWB z-p@(YlF;or5PrUV>z2u8dSCyVbE|%E!Kqf$=44ZH(U60~{FANsBvr~zPEE^6kV zGKQGtg=%O(Jc z3vStVAlp&L%Bb2%ex;z%d3le*WY9-$p&=ru0fBbcT$M?LxD!ND8HH+Io}=hQ{kv7bg;{asE=eaZBqX!c`}>1knFr`t>N5 z!v)B*=QrX`M>X}3*>&9yrki2nJ2uShqj!p@RjU4H+RGIDzxiQ~Xjg%B5SlNDM^c5{pB2|ct zrhaxTSUQYpIkg`{E(c6ol(eGCF@6U-ak^sDPKP?3=JzZ(pGOFu2^}+es9YE6&>{fM z=cJCV;T0iP!H)mWd9@^flQ4#Qg(%5RkN>rUG00zknT4en6&IDUJk@$A zUU?rQO%=;f-YJkSEz5bSAtPS1D3)NdLrKAj#gRklRT%o`Z^=QHvyU2; z(w>-IRCll;+QsL!NndS9pFA0n(Wes{NLguPVM7_&iAm)T4gbwrliYU7=d&$iGsR{t zfQJLKqZ%6^-Rzk3CPZ}@2PR&ShAgTuSimHSpb^%nV9L(^Da0b77kGf5g$k?s*K|v7 zXQ9QS%sC-14Gy5W&J0JK%8a0bgF?+MWqtT_QyKs0XxHuncK-FlSAg$DJs9o)D0}AA zV(!sKuHZ(^5$A_~^t*3sN3A-(?NZt{zy>wO@1$YfUA8B`x&_3RgNuu0J!inCt3!%Pw0cuwEbKh@>sQ zj(x&a`%z)P>PUxV9p7z~aDi1C^-DjE+QF9Jogg5nlr?ds&@7o%wziCEBA@!d>M{nB zB~^`Er+|{3C!i2~!ppKi_|hYMpRs>s=%drcQ^iym4IE2P+Y~Bm2h%`lRvfSS5uv{2 zJc0OzL3UxM7H>zu>7O{GY$4TV6kPRt4vg4wo+Hx^@>Mm?P$U@6WLGHbGQx=Bpeg!U zpeQI<;FPtmr}0<#T~2bc6m&>)rrM56nQjUyK+?EQM{OaIp_TDc{KQ{Lpzb^KqJqxP zZrbsqaEHfm-1RQb(Q>!11+JK?Xi^33$*(i>R&JYu(i49COB=-e8PhJ!7EQ-+U+gW(EhhWvWuKSm$x7$L?~?etvGv){b)1`0VNP zdc<#AyGnDl_~*A>zv?sUEC<&m4mFv&BmGxaL)|8V$m0pTmcHM#8>jjV8$e*H;xKGI z55*v54>M#4^R~mvTKiqvNw*}9Y&l@zOD`-7}--gAjtxUxvya=VP! zRbyAmnz5>SDzFos$*ua4+2c$<$V(0}wCXl2SZy=ib+tP|C@6Cs7E+&U@%qC0GbQqn zMkHm~uNZNVHGvcvt_G`l1eBZs>+pTG7KtAFp@vxO*;ak2rRsHPuc^J=de0*e=>!S;lLHQnSr$j84!rc(R#-l`L~jsACklM)=yTS!CMiIQKI^^Xwd_JJYH*2*mX5WI(S7V=xni6#iSDMwxc*HbbObm{f0mTOsHT z$H=Ea+gfXA0uD0FsVsVonmo#qS~|$lGxKtIHsC9|Vac-ZP(+II22XG{WViyl*h{6e zq&sUD&+%-OGl`ms!Ouoo+<1?g9@-ZBBLmXD#VYOZG*JwsE1mf0s<%SDG#Pc%LJ3M2HMqgmwekBNYS0>SVv@1y;^T))4kv?aiYIp!LVy6lL-eI zB(gt+zJ89J`V`=4CH?dAmLm;aMGEAMD?{N1u!WovXep2=#6bP)V`F5b;jSqHE~Ege zl%c89usCO>H80Dr(_a;8mHSy`yocnoCdd)k)h@E>r!(vPmJnYjuh=j(;;T)x9j+dsn`!U< zkuSuYJ=SYjCZJ@*E+_*$z?p_(r0L zY=`CKK5gOYZ6*DfgRjWHUB5=*7L`+@<}^uEbB~CNN`SnOS`V<8A}gNmrH``>~H3_4M}_NbN>-Lpsq8aIhSe5x zFBf!~8jwoLF86cAZR}dncGo&xOVaT6DHhlap=#}J8#d#Kc@|12wr1t(CeZSF$YtIU zdgE~XRN13~X;e){dSv>3)sJPAnoMnWS}nH^4mm7mL)O4_Nldp^hN6i~O)*K`7;k}F znOwa+ErQx+X(C~FtKM!-U;Nx0zl@p!cLmEE)!(L3-=CTC<;22HP1T~zQr!rCH}s!^ z>Ux~dq&rsg*S1w0&E$MF>eseNLYp-yKb2$ILdREq-ud+w!c z6k6fmRJu;vvypM#j5{{EsZ8?ZBsGLTcdx-A!<$;Z1`O4aKC<_^63D%fvMdFEl$*-( z9G~I4HI;GOWE?^zPl$`d#$cUfX;=p!$)npQXB;Ir6mM-74PPPbUt~8{3yUX0p zO)iS=jTmKW62V$_G-WSL6HX0Y`7l?C%2I@cHbwt$4=_}|zG%y0S<|pyPDBWi^1`6{ zUu5RuR2unkM^Pi8i` z+;R1)6hPCI>5jZ4+RFBJT^Zm`6>BPa11Ua?euV)h+1Ab=HpGx9Oa);4k|Aojun9bf*2N>B+ACJGRg8# zALWb{Sz2xM`Sui0y(|a&>S;ZP%x{;cpr$d6JmuUxql;SUV-|(nt}y;{`!(~xD-!t9 zWeZUsysNg`ocNDp&3$G69OPuJoAcx2)1#At#V#q+xnEsReVofnF2)O01-2TGC<2KL zQ-PwxOf}erbQrXQw^oQ(WY1R%?<$mAL#v|?C(PovT#j5*&=;2x+)Ar7!(>TXQiz9WH#|1 zOiHAHYz=IMx)9l$KyHu*=!M9bOxK>t_ZF5D?Z0qU#{S^yVED~|ty6D>m>}?>7dTPo zlvR`Hw(K7SmKhA-jG@N(ex?#x%Q*GumbzO1=)i(n&llsk3`W&bN4lA7vUz{w=B;66 zrA-{81){;bWdqUB*O%ipGn7XLU5lh4Pf1rwB=uqIzRkRQOIN%p&*Na@!Df=B#442g zj{=AOL{t~vlby=26YA*2R~$TOAZ`Pag#=J$Z|+x zgbkn8p@c-QTmnHxp0i!Dbx!PdDfGILVT8$doSdCKt{pZ2%7kNONp*}&x^cshI?|)` zem0V7uo%9HFunD)$}h{i;gjB+M+PSIxlT0Q`-5+|rI;)96gZ)tx3|CfMt^T_|M>xqupuH{4uUB$L_%&|QIrD`iB=@ura7`T{8L*26JHlRft%*BPfO{)D_1c3*74 zN{T_wpZiR6ykz$4`4rcaVkB6^~BZiKxPQox% zXkozHaZPHIQcf^+hw)OGAfP=O;+VqZ8d~_wyi|l-=WFUmPBvAyL3MtA#P3cF%!NJO9zLk1>7W@<5Za6ePfQjw&!YX2=Q!mnts zU|bFE`SOkhgksv*xSz?9NJF~?%P=aAr`@^o1g>UP08ez5_!2j0#)(Wx%hfpws~_wn zK&!bWbd38(%p{os;Bzo6vAHYxcCJe>B`O^*1PzOah%qHXL0+BRCjBua@+rfTrXN!P3%Vg1D8QNezLv6xkGH^i)qpZ57BoP~;ymyZ09`T!qjjl_= zhH&@ZCME=jecJm1L<$*&?3zQsgBgK`&9!!#zqY~pD5Tv;hS*k#)s2~Ip2gVV3(xVs zISR;$o)gh(^ms}J>iM_Ux&MVV*j&-U7@XPO)Gq=VU=k|aU zz|q7ouBM_qec=R(1<1jZ?(6irazF-rFSa*>kEsrA_(0OaMB&UeW+H9uBA9BY&4o!b zp=Y5sZ3P?yeCZ?P;UF~l2!|ynGpB?h>Ff}P9nQ%LU}~R6$O%w-8;N4+#XPu|0LWic zdlgLxQZ5dds@}V>i4vx)z#tS(=;MCI?KWZpy$=>5kp_`Ti0YS(OM*yIJI-RA5Kv#F zEzry>92@timN}-xMWYECu!f~ihahIO$n>{~@BkG==D+P@n{Xu*(j)`5ZCRevk9FC3 zxA5&sv%4{PzwM^gI`jFdhOK;w<1%Q`0eg$%XYkZ-=Z9vwLZG5M6WMHn`B#&$z!ccb zMp?W~TMBnd0I_p!>NWyfbA;`bR2q0uwCip7$ggaGwkM(yOpyWB3JrG(WrQ-wx%M$( zyv9vOBk_gyU697fY=!l%%tBQxY+yS>y(?O3qtZOGelD>u(?x}2viXaEy z3N6~sv5KWZxz_fTGJ<+Rr0bzwlfk=Hc4K+H90)1|`R=!|5u*iZjUZ%~2bU$(o8iYe z!~Tp@xRemxd998BYNFtLZ^|+ALu_}>q#GzU^5FF;D_c@t4#ZI(4h5lvYgaZ-;DbaM zbM<5IAuC~G*Waz1Ov>_1%(Js~-;F`HLs@Ok7r${OWJzgsQR(#90JoRyr zc?McoCJ0XFLkxd{S&=df+9y;V?vPb>N)>w{W|sBTFx*O|E18t}SM^vcE+pSXj_1A# zuc4(wh3b0%J>D4!NOe%*L;0HEtPJcM(kc}&li566OvbaEJW!`V;SQHwP$_3;4=a(@ z3!5XRA*Yh$d>frFAGf?)V5fC%Y025)UWS%^0Vxe`=6MGN^^h`? zYlJqj7J=AKMRDNO8c)RqHj7?LHk(lz4BpT;*HEjLvXI4-D3-GO^eVW4nrQbe4({49_c#7@-OXwpT0!DKEdWHEU!yDO$Tcqxy{Wp-^PGRLs<7Q|zx=4rjK<%5N2h z{M@y{6T$_cYNz=WyNCNJAUAT6d}-z%aZ`hQ(9Sp#(nbSTO-)3DsoxX)lN*B%s?`<4 zy?B&H8&PLLHkh&mO};?2>T9j->kM4kXl)j00{-JF*p3?5F=^-%bY90hk26PF(Z>aYBE^Pyx8j&k&A*%`oxSg z3S4daD{TV-zQ`F4eJIci?q)a*O9d{YY96E`xl$VaV>|^oTVHWsnoi3s)xAyPl{ZOm z=o9N3Z9-X$jpL?IA*1%4BBaYW?{vG-5fUVwDl4mwOgUnsaQdcj4nJaLU-Vbc8raMR zZ<{r1&bdgx;HPY`KLPw~QsPGLDDLA$dEV}OQAKcZ$YR%vS4}-?xK(~L;rA+RV`B4)q90-3i&L(Ge^rU)JAt*q#$*<`t|tTxxY#1%SEy@}M5L%IX0KzZ z_=vax35!Jus#&Wzv;q-ke-h=BfVvEBnv(yY#Lraxs7-PL`hi0^<{vDp!?T(0& zOAV!q36%C07ZfF2>E9Wj|6Z|ZsB>;vmuc|e=;V2|C_S%-m6PZc3y=mJ;`^RI9=_(F z2oiNY{hz%q)PDMB2(<=M0$m1U!hqM|DSVtc8H3p+5n9<_p zK^1}pvdVWKhLMrVr`wsL0`2S=%d-t6SCAr%?3aj-svJI=E{sZeXDys;cvQoq=a8NH zxc`-~1se|5u?SVcVb1^=;ag&bbNKjJH=5l_1U9c)$QjIdevcR|5a5J z$g%=Vr~6>s*6^3Z&ZFV_&<3mu=!wy!P0f)_7Q)tg77FPw6Sv5-7txzGMutS?{%AD^u4xKl=cfnwa2-8VWfvDJkSVI+c4-W17j zd>7|FovK3J$RZxe`qxc5!_RhZQU>qo^C}X3SY4VWCMN_@NTkByJ{bJ?$Aj5*a~vs; zaQ5tY??m@(Z1dAE^$X=@bZD!bzXv!~q5LXQr&h#_&#n^^%-;9(pm1{fphds20DVNI z(uL&X6wIe=w!sGlyM@PcUV_&WA&h7eI9}mL_p(AGRcD>%)<>ewYy0YgBbxWr)SUkL z{j@tj-MHA!X>j&YE5Pu@NnuXJCo9ie!^tlv>l13+@lo}R*9x@JOX*X0U#a1sfq9J6 zh@%*=&^dJ=IOoKaLLNtE5_TsLyXTIxyoYVYdv&9uz!Lo=ghAQq*ixc$rlTIJ&`xK` zRIScIqcY8QXY{i^G5#wr;Dfqkzjpz9;wbcYpVsxt{a^3vzp|T;%7Vyl0(b;-h>En( z2*objm;21gn!HV`4HA2AF?tV{+1QbV3Axf#GwiZ8S>2vxa?x*(haM-4a+Z_6l7eO& z-mtsJ*y1l&`D0f`FT`Lgh^&z7=g$P0^35Uia^*@1(^GHyv~bgtUgeS%X{r5g9Ps?c zGWp1To#!4D%=CyQKPliAKF@)G|nL(}i^CH1%*5?ynR#|AhSmXDg zV!Sf-{qc{#UnN1~wKT6HhCh&BAh0a131=>rh=J@6>8nP6@GCR5xA=8)>!llEI1ChT3=f2&t!zppzW6QlZV@9?22NSY0?(Dr&JHn;R( zF#JW)zS2X@u-ocJPqQZ{-DV&5wOZ=z!@kZ~RAHr`eDCnqh$JG}}9jnj-qa z@*nJ`D7S;Tu?Cx*B>?6d8{PG2KD5P`dsh1Z!=FMwE9>-~-I+XI^%Wc%;x&0rSbdUp zXR$Ru@*2{3h_{|(T7e|Fj!u!|;S#&cC{AidR}kiFk4b#OWCV9VA9 zvYDBzUE9b-xT_QDp(k6WsnJWwQeC>7mFoP*nc8*JO*`=(+hoE=V%IQGdSyGGU@X1Y z82T@!&i5W^`J%$iFr7X-2|7k?x+@-5Uyz>2+;BAB4yB zWWpZ^c=;=C*oOq%?4OXer~sZuhtI9_lDbI`2E(5e(JVbAFy>LG)!Gk2l9zA!euSiU zAA3Zlv{kKm@PnwNL*k!vMWqBj9U_w zdFo$CNh4^2{gc9|zsUJ&tAl%yWoB;L-gGX#+9Tt>4gb4QZB)A2PuXvKe53TZ~HvX1k=JyiO@&9{! zR=cx5$eKUMnmX|M)INvIlJ!H#ntw+w#mAJ@R=l=}nBQ}R=W9rqaQ0IbeI`g9IwyA! z7l0`jHNtFs9EBqI*E%&qZ|akjy`k0B^$48_Ml2SS19M+-^@M$`1O*rSQq& z>WMHNEmuf~>I>xtgLvw`RZ8!8sr$ogY zg;KqB&-y9uuI=rut?cZosye-y^Ev7&Tk+i{M7Qh~gfH(-L(5aSC(<_Y$l-}oArK`) z9nDF^c|>ePEW&CfEvPWald&>6RUm#vRoe)Pkuy&3eAk8|yZD4j)Z%KxLDo@4+`wlW>Uevhunyy_3z@JqrjE-My(ihpn`nvM&8|~6- zNVy@flP3hZf5kFm->HIJ${JM|Rfh0wwmhzYD$<&;7E$Aa)xq`E!A~D@bH&k! zl9-3ruB((}emD9S6HftJ81A>X_ooMscBv_`t~c^+F6wl%ZfZBvkkBPTz|RN@A?bU& zdkd;;Dpja0`RaE!Sw#uIzNrc?RL9$vZ5ubyY`btXNjLl`?a1Y*s`A9zfTT`k;A#m~ z60xeC@(}$^r9L=~TMO?0IPvScbZ?Lgq6GxPz}`?A zEAkWloSjEi{I!cS6svaqDT+QT5`}a1n08COjIF~9G|#)BJZ3KvmzU^wIvG)-50hf> z@!NO5%Ye$pH}b|;L9-%j))J%`eMMo0wt9q-C!=7^rGlDy@SJMoaVl^zdQp}{?BC03 zym%`O=_j(#*2UtTAg^BRW4T;4HL0ue2v%0YN+zT`;zDJr$lAr!`O4GT{{H;R!}08E zj?%)&^x(rAgV(0i_R z>TT5Rn=^{ihvl+YETBzhFYO|oy=vKI7T&f7S4DH7_P3-c=whl-L*&oDyv3l$f7-6T z7shd3M07QsbGS*Gy#5W{tPVCgOFK(i($_@}ynr1Y&vs9DxPI4)=ZW%{I2M5_1g>6* z->nfv?)PZ))u;%J#Gk{{v;6it3V;dGdxzvdi6@onIa2<7))e9|>pYJQy}vq;p73xS z?@?=FZ*{=anW^+yQzn2!16}IeYrB8f2#v9n2gmvA6I6KzWETI@^ldQh_S&Bj?l{$Ei;2C+V zd%yet1mzoDB6n6OTTIX;Ua-V;i_WaiS247p_Vs3s=fCV_pPEUynj-I^DlS=H-hJpV z=dvh4=~Wq&+Mdsz)Iy&(XHNcplv$}5PRp87tBVjmme0d!wa zm9Bx6(WoAz@$JDb(nOvo~}Q zhf7gQ(1$2Wa|Fu_r_jy(MYnF32jKNV`R28)`OdXt2W?zue!uB`FdPpDcRs##cQbQ^ z&PZto(s{*$;S2h=Dxre; zf)QR;0ikcVvavyf|I`fLWTjV&1r22LH=v2=`r2{15-Sf7+ z9Y<<=dwuXl7>!+Myp8)$S#sQOV0Crl7IkyZLyf5JEW0-RYEL&{S?x~j(YbeF;Oy(! z&Z(tqV{1R*mP{&BogltXkE=_3xvC)*{8ZoN0^Ud^BgW&o8Qf9Hn%*td(=+)h>EBmX zPP-O%+iF;&VR_we4CF^gTxlj#+f+BX?-8zTT1BxLc)ocNnwycm0z#@c&EzNt@N9NP zw)mYLl^wN??WkMKF$R0aIi8=)5rU#LwpNXIptVJ-cZ ze%=`)UE^q*Cci*zBAx&Kbh^LC6n8D$0t+|MG|eI@x((J~X_5b6`pB-7r@FG#LFLiM zwV6uOmp7!lx@Kg>dbA7uoSWmQ?CPN&UI(2>p2u?;6PXe_PVx097_PF2_?@YAM&sr>>A4%7ycwyDOGQ}0`A*oQF$6x za(%hIAi~%H zGyDDN9{uagLceBPS03XAXja)%PF(LMM+-BtIvWPJ>P^4MFBi!Uv8|GwM6T=@Q1?G= zg{|rgV?)qq53b@xi0}#VNcrZ)q^9K^5)PkXA&@$VF+hD~-7UXY^e7*aj?E}()z3%O zG)lu}I<#-T*LVEoL72c?_o6G$A)gG0^pFCdxcS;zSZM+m!)vSQ>!JHP3lP=Ga$Jc$wcC~+5AV(gFPc6Sr^J*JLn|3E`!1_32=kXq9F#ge38NZ;rMKt$7|+C5tK8nHdXgx6Y1NTZK7}nKT8z zt80a5`Gl$sT-#0Q0L$MPKbf73&Uh)spx!>^n#36wn;z-v(K(SS+)uqr2{sI7C{+yB%{7V+W~M0F&zNA;o(&fxHxTk7uvzvj7t7mi?F3DkO-pjIA3s>q@7;; zjnxmhBTUiR6~2}ZJ9GO^F?M>?0j7@5<$=|RMj6>5wBX4UM4XNviP%iHhL5Pp$wfRA z^WUE8o^Bqdkm9nV>g5bCQ6bzw&7p7>+|^5Xhd!A-zopo?Wn#1pegW3Vmj^npFH@55 zib`~AZl}4$Zi|Llq_?DxbuNh2zd^xPxKvhk&s>^0JvxHC`3)yxpRPu=)4mW*w6g}Z zb0}Nb9qPU=Fg?g@^n>}~9X3Chh}(DP)@Oc=D1xK8Lw`B=?QHNdmNz7f)4j!0*v`qb z83!AtV|f9HchaPEEr*-|jb^e&^*F*AF;#p!9mQs{s3m4636-R~Y$fD|+5wjuW71$P zexpw*RCjS_*crKYs_FuTQH2DNyd-rYHy&_fb}D>V3178sFU3Fg-$z=XrzQE+Y{!xX zmwtiN>z0aS2!cRn_j6`OB8pobzL>7IsC?3Aw8-65*YY^T!)54|B;TT9u(f`@)P$?z z$l%vYW4W9t+TB(Y9AdZWlnxv|-qV#o-KPXcbsu?DR{zt90~b%Hh)|q9KcADYpZ{UBlEZpi z>%wI}0GMs;viGAs-P5x}HSkJ@)Kp_{WnfR5O$ReRYpN-gb00mQg%MocV>r;lR4=7-$m&cEUW)LRmf8xrdJTk95>$doJ{I~deeQr? zvb1(j+ZPIfK>wwWQ5rr;*9M8@;g+A&6hgCTqc+o~jAEXB@7ulPbvG?EO{6{#o^gQQ z8c6G@oUCLx%NKoev{0>85M zknXZUU(52_N(ov@ucm)HcoUa>O_*cvw5m(HQV)F~hq{@qf{T@m()Ev@0CC<)IQtf+ zP44ho9((yomQZ6-uZiVB{of`6%#Yvs{hu$#&TGHl>h=d1-fZ{%4z48}{f@TZ*!(gI zTprvp`x#u9{F|MV{pW)Zez`QKMB+K`uft(*FJKksozsKS2PUbyl`h-Wj8%x8K0@Tn z^pNOUxXVhFb&(Eg9E8q^Pof{!SlM{wWONud)<+EFh{^{_yUymo9=Ya1mJxDKA0#)9 zj_909-QmQPUE7%geDLT0$M8Y6*=<;&Ua`)W_-TE98k@GW!;BNK$ei0zKd=X@$Z{(^SS+2-%}5 zC?xH{W#9QBEBaC0hoAmG_1+q9B;2epbyHeS(Tkb#J~`t7G% z`nCqX7JVx96IQY>L_5snb5;bkUT~|_aDyv3xfi!OsG6_cl)J#MHN$x#=d+aK_-3}N zsjb%YWLkq%noPYYsEnf9ZBA}(fBjqVE|LJcRyWPVH{iZ|C4Kba9U>ykzw+^H0Z0e- zcxZ55$~?Pi{A-Pa_OPhw`2{4QpApXWJ4R%!900N1cb#)nU{5B z)@yVAufU5uBFcV2Pub_nYz>?~wC%q=v~y{I+B-sV1{7#KNT&D7f_*uK6DdadX(sJ*~>c?JxA+JI^a1VkSIU0LtWm*3BV z#_Awzg$}BR5Bp{NGhw#eyj``X{8~V(melr?&rLD8yYSo_ZOE+!yR)xBQ!OUiI|hT{K|jax zfbSnz)}JHG+8~_s(eLnU7kwT+b*z9oq#w8!0Vf2GJg4-BIVTk42X~8iqAJ_a$=R^T z$2D)W1AIOo$wVe(YJX*AfWP5`R!LQL3QL8^NfMS`po{_$@ARRcDsKuaMkh?p@~!Q* zEx9zJ%N~6=5g(tB5(3f)`u8l!*s8$*yA)33Ff0Lr1x~5A)MB!;k5~rx(F6vmAf$G{ic3fdbBL)(rHs1-&4)?+q;7_IfB6dL|ouz+R9SaM9g>LjjIO_l^KwFl*2FWgcu z#e#f{ydeE@dElnRYS=jK+3*LUkmp~*ZbW&e5pn+rWV;``pCz5TtD=V_`Z;K&T?%hEJ2D=q^EG2wv(Da@ve zJq)Y-^<+k5DV+BY@)7TKOp|Bfl#~LArpL=?Z`H$#Z1Y=e>pg?%5Ts>06i0pZ;tL(M zru(-4w|6?zq`rfbxp(+@J{lVN(!nIs;B^jW*CzGKnZdHFSP{sVgBSLu0@8&Fe5B6Vj6*+K+W|`+bIUMk?Sjyw{DE{KRj!Gpj1Ax@M{}YcjLCy42H{m*HR}V}n>7FE$G@U>n0O4;!;A2D1xmmdAp@ zW?2^S!ZC}$=B4#=Fvn+izwbUG;(uhlW=1PWP77$o)&>>aR0VGp3xivSfm1@zaJp~Hhs}tz6yzlrUl7)fdE|t3h%4YV z!d7&D2#967Dwv^R*`N1Rp{HVA$yLF*4n>ww(x+1PuxFQ~h3sa1us%5h%Js;IOa~zU z1*;Z$^+fiV#U8?7B33BE%3xDJYG_oJ4N;2Hgr3>Xvqri&NCG1~t+EwIov?y!1`LUj zV;cG=;X4=5-MBp2GXHj^fD&}GPOiraB7X+7c}dGg-emlixg-Pq8oz%jW(J_BS$^3k zr=j5qwf)VFZ(WsIVzUHmhpG-%Q;4LM;TCoyoRf-^hch$csfyEgv~uZ6y#i%LDq&K+ z?q=#I!?6;t#3>m*nagO0SDtp*c1}{~1n&tooLdzr!*fmTMu>7~Cd-5sR&ybXm~O015ge0KOulipa;jyW<`(UAf>Oqxl`h<5i zSl)PZZk-$zyRkA}QSH5YKBZLhoHSS?{z(P2{Po;i!^u` z{y(6qrcl-Ne!NfjVR&LEay{L9p}#1`l%3xLEpTd_!?`pk2EY}P$$KjMSjnfMcN2Pn zCWvm(KKGJUq$|E#T*Cf3dmyUHc}SQGk3xy&o~U%`$`2|yqh;oNv>2Jw))Uz73r3c8 zh+fZ#{;bSD?+w;lI5N~IPEA++69yuHAk9uMybn1Jcyyawy53oO4h4$61t@h{9c9QX?=uH%1C0>!N2qeL zhj8A9sDi9#frnwn4WR|^J~p)LR=#KdWFnkf>O2(YjIBg6#p*_);9BrR%N=Q-mS++4+nk zC=+3_9IL>QOQnR-@=dm74*O{33ALa=-cg~!t;w~udZ*63LGBA)#M#lxX}|pp+usZo zb27jJ2$C~`_CVooD1o>;7$EghHh_;k%1I6~srwdZauEXi6jnw#8L>MnxTMO{?4WOw zM+82=I4qCfic^O;^{7K;HUC?w*64N?<{q_#wBwuG<0a1AMO^35k`buT|AU%a_mGiZ zHcQPOyW75YwtektZiqjoPW3D<3gMLwjgQ9=GSuJ~aOkjsaA{_~d0}=ww<)kr z3Y7iJDp$|+wh%u%k6Bk2h4eU6@o;U!+yBKie06lol!u_8Nc$_#3zH|W z)tOMQ4~c=O+bThspsl@z>keCHmP8_1IYFwC`zcPFA2_a9Ytdd_j zeN}m%z;aU3+)ull*T+9Ne|B!)OJZ>clK!EZxpe8mzFXPcsbl$Z)eh<*DzH?NOz1^V zJQ91o|^tKEU7#px`I8*KS{+2hzr^vK!`8m-Rq zhy^2yB}ElqP{|R`n0!-==OCro;z_IPt1JM0R|FBUy)Qj^Zmne{rUR(Klas+nsVV0Q z;>Vjq${AjrIK$tRoRp!5KCaFU6UPFDq#M7Wb<}~7)05zj;q@$9yCG8f4XT)}KG=BT zxppI$z#_sZ*-9l?vWtv;3~ECIv9L|p97H2Iph=>aFbWQG6Mll>g@mNS{7)AE+t+kW5*Og`5DqJ>W5syUY-5KpD}k|t&z)D{8hSuk%g%b)q!v~+Ppb1 z=nhH$!j$|4mIzO&u)*OVDsvynTwJsS#jJ=LmOrxs^(-v@VW|LqvTCER8;_xgeMX8j z2K5HCaxk+4ICtF|Z;wy$?xpcX{Cn!b6So)e<{I6-#K;Ma=E@d)(1df7HUTi3VB!)8 znWj)Gi*1#{xFVheGIFTX5Dx)hlGM<=K2ezKx!dV&4IYc#;$d6Nb%~Q6umh(Ah5`z| zU#MZI?#Ox^d9AKZpj&Im-K6F^(Zi~OHee@ZXdJm9RkVOq|B1(6tCc4)Yft8bmrt=G z|5C=Y`yS<8PGk~|ydE&oDAtxBjjNRyMA~$@^1ki{&vtezrLC%s47{Dn)@D#xhF%?I z8mUQAnDOw(DohMd_AHDOy9e~soIpAuQdc|GVri0H;>-u!4x+Mp&%Je|Pgq>x&UeW% z6X?2$9T)EsYf$&1Sd%O=&h;q1D9$nbn9fC(cXHNtsg-@&TD6PD@8 zN%%HM99z)#qj~PTa9!P!Jyy80rb0-?GcW`YNHeN8rz$f+`8hT=#ye3J1GVxp5K218 z{{%Wh5<%oA33|H=#R!&Rl$nKjaXW|TFq1i1G zc;mK>M^F#z45`}5sT3lXBtS zX3?{xqooG|7@o<{5TMB+`4Za*e0RxLnDH;PMqHo?8)7<_554PMl?N*)LP?u$-rkXP zPvsL`n(5GL$7xXefn9IPxItFrx;{oO0wd2JIA@kgyI!TdKrExU3TCX*|xJx2(PK z4R@hjp~6UG=}Yi?UV%O>S0jeP#-bM??Iy)M#!JRZ7S_4hG&>ANmCY_0dk!CXV@MsI z>SWo__nLjkX$gF2Q<==q#ni*m*`uhM3&=pbIQtE@=)sQW)_d)|Qlfw)RLRm#u74TS z9bjA$x2RMM^$qwWPOo;?xNOc~-7YKgW1Y&?`E!%+&2=hF60tVQ*mNs{vI>n#uoP%w z{YvG+Aj?9%vsnX_VW4OE_#z`i>6z^%YO9A#t!pmjLy`L_I+!IN za)DkHgxiF0s1r2#Y96`YGtQro2u`|q#Qnq!GQ|ZVD+zGHN;66=U zSi`YF3qyWuE*4C$+3FOFZdJAn-1`?}pl8{a?&+aFBd%ArRDHQil7D$)!x zA_RckJM}FEB|}4jA8PsX0~Zx6B7Sp#J_oQj2WeqI9xeidPO|05lrF?lseJKSJM0OUBqN+yB+=hW&Mwif zQ>^MP?-og^VE090P*L@3{Tw}M5=>@6{7cI_k|FL%S1JKrL{2w3;=xC?Kb%}z>o08~ zUJ!c?wFD~K!s!G4ED-a>)$5VU;-g5pItWky>%~6@~JDt40IztI7_WdBeBy%nRZxvtEYtubh<2O5_yF(pDChXGHFq2*e`%OZ3Y8SyN)> zwjPh=>c@pw+)$FGoU1#c_chIN8wFJ5-`SlW$Ns;xWY4kf$%~zDCg{cH95?0o{!kn8 z%OTEv*3dk3<&pY6O++t&6|vPw^QzYf+PnTd%(S)Ov2H>UoyFz6BFw^Vb~sheSq{<# zoH={l1+AxE?^%%7uHkZzY~s`f*jwQ>!+;#S^@6IoCQgBC!)7y*8uhWU=bx`rd=Mu-WjLkf={T#94WLD6q{j{Y()f9=#+IxTT@*sv3_@ zEkd{(?VU;uK>07cD<(){!8l+8nqBTdN`OTYGYvH2e6S9?0UaBFCAUxXfv1_rPvc~Q z*&<1_T8jKk3Gj4yV@V{wm>Fb==zLu6w^tE?h=^=yOEv#UuQY&-uiZsPCbk|-hhuU@$%2??>3xM;PbbQhE~EW%0M6fRv=2le<-R(B7V69Z^w z5aa{GTZv+Fz+z~Kp;6%qLy~YGM3@P=n{yCjZ?TzUkYQ7))H?N5#ICejS|+1IZMCRI z-O-^~!g8?2!7${!(M&p#Yh7O7QjXVZfxRMce!e+^v-K%KUW)LT=0^LTX~XA2XZe!M zCKv>+mz5jjunJ_X_{n`vZbNRhklsVCu?2k3@us~LvXC76dUqlRVfHed?FsTecair)cxbB8?#jKMF8tr%J@FI8K zLb0jZe2fS@E)uxx*8rU@6=&3z5xaiu*su?aBAFnBiw#(saDyIWw0_5n>g{y=G9TFaC6kum%g%?>O+mq}F^tbblV!IUaW&q{_ zmpMa{UiK}^(V|AM@AP}C(p&NoE>HaEt#8pq#}>IK16YPoE%%~Hv4l)g$wKN(V*N;9 zC&;a>*CGfhN|%IlOOFKia!Ds91(&vff9YnySri6gJ&DSZX#m(2(olsx?5i&2P7B3)JZmXxptT01eTrIMU&60wg}NehMF%!k5GIE z$OOY_S~X5Y@I4hqCnBT_TRD3SgT*$Ww^S=78_5XUJ9ezSzTMs#@Cf4^2SV^*31$wR z8FH%#H8mw`p4GY*PuWbmFC-&6AifQAeDNlb{0(9k7CR+0o@&9h72gkv-G`rySC$ zJs_PL4JjGiw1ch3mt~FXy=0m!6GqAMgS@TJL6q7v-D>^W z9=<6%>v!YpozpFBLo*1ZphMR2!AnZ1P-Q:Sw;t)Bpi02-GQ@+ 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%0AnGyMI~ zKI5#$wkfpzdFgCG%60!OT$i{Xj$X`?EZ!OwPegwccfs(w|KoOYBSsDdT(R!|0vk-| zoch=O!X9`#XSPuoTG$+scy^G=(7{J`^;U2Rd!ZxwYPbY$k9oT{MR<=1IZ+XRT(H3# z;#_+OtNs4E-5UGQTxzb~t0ZwhV}plIQ3Sj|XMK{5n!K~VgrA=%R!7Ii*|C6gN`bby zun&-^{*qx-`~c0t;ZJrU5+ugQfhVTZIBaVl4oWm^yM`Yl)@i?fNks%2C$U$$5JOIrdxV z5AE#zVvc7B&j)~o5qCV`vEKr=smzZ34r7A}yPZxS`^|Lb?S6JhPS&TflN-{igTEcx z0s}|?nHWEmv_RiDTGhG?b!L#T8Zt~+1;Q&;upi5 z?T;MmZ_<|`Zu|izFl^)9)+6+t<|`x4zW4PN2H5#}b_B`}?MJGE^}fE=s;%4Fk==DE z4By;Y@oA?~hkk<0#Sih~gq^jGXja|Up8Vd=z1TnDmtF!lq0aU06@9<7t>y)tyQ~qK zD(^PcZ%XCaeyCPG*R0gdM)!FaEc7dY-aq*TDPr%4Dk8fUaEbr3Y;1M_7%)P_-17Yp zDhV(`xRTH;eHWF4XURS@CRLTp11>#u9w7Uq0Q=wI9m{U4GW*tN_y$`51~&3P8DE3P z8jgLf{uw4P`dWQxXK^pvTYqMM>h^5+y1WprlaKe2d^3)tuFC_B+ufwUH=`R7I&~o5 zuG_)coAs&oX49&zy&3=b*H$AXm0BoPYTwFj@#yB`#&4cydrV;uHyE&%un!5lSntGjw{<659trPQHyp}_bB{n|ON98I-Fas6)7pg^ zyWmRC70l=P6g0)|AHr-zZsmQm!#-?O?C8@S;){FJ&Xzshrc;zdPFBA)d<||*xF0`{#AA`1uhduwzaO&xu z261gV+boj~jF(B7^h#`f{a!*;bC$oY){4Vf#ck_Ipy;fM8aHZbp+M(rOo>x>u9hXj zhIY58h{=vKGCq0!(m5M8Q!UrV@oFBLvug~aF{DsOuVW`W*#$8+!3^f$V5W^yrQRr1 ziY9krNKUPCp>|f!N$j6~!*=e-C7c&K7_CGhsuF=yAG-)fD_@0IY`Kk`#RnEoa?JGp zh$Ri`mrYpX`s83WHg^i1t>&mn{(onTruAal3dD24`lMX`C zaeIbU2y|ulT4aFYb!^ooERlr8(;MhJ&0|Iyjj?*~64%Pu!>&^;8Ln1`%ckvTtdE(+ zB?IN^z>?8Ion35L!d#3?%7w}>v*7lO4$ksGlD3344tNIB#LkWSjoBUW%OneIs>{f{ zN?qFG*cc(kS)DCe!P@2Uq0zt`m15LLTz>-mS6K1 zA+NMML;#lA4t>8!I$!`6cfeR!j#Za+xEjXFuvuBc8nu#_n8p=1a3nH2j7i9(-4LN> zM?QMm!%UwVE;c~T9R6Y^)NJoiGb8DM0czXfi=!no7M*Qj~n>fh&~qBDayO3 znJYIIxJkQL+U?J1y-t@?2WC;asQEcJVqJ6O{3+s&{ESoCd4Xe&ImTdT#YbB=5wwn; zx#gTa$&xQ|oCB~~{F7tG(f%vl3+>nV-7p8U*B9{HCb}!kufA}B{RZ2|^Vi3E?55pq zf6n=nF?Q!dqnp3q!|!@(Omr{oshMNtLecD=Zy3h^v-jAO-_w2PNuIr{(GwR(IEs3d)@RxW>l^Xk7 z`h;G|;U8JFOuoX^oBO9_l}5zR{0}T^oV~BZ-uIC2WMxjWmH(kz*=OVS_>e6g$^P{I zqdJnxS8rzDmPaTNH9+r&DFumNGAqV@!75rQH=40uTJ$Oaw}bb1`TtSt$lrT^h3*S% z=6xyuKVnJwYwxcZ`+8r=|4*>Ge53bQTw8eG$^X~1kbIN(m%iP+JLLaY%A{mV74{+H zz8?zMU}}30Bdf$PAfc_}T2<42`j*<>!(@(%zY?q-cYD0Ii@#ITLh(22+b#ZnwTB4} zBx2keilYrko%e+h2olo)@zD8)iKRQ=n<|Th~%t zp-G8eIvHT4RVi2Pewxf^diyLN%ePxzNl~;iIbMzVDwHf&lj^5m@{$p|F+9*Hj}BaJ zPi>|b#CD4F|3emUMf zVlq4Qxg?E;P<{13^uWX&&>!`4zL#+Y3vaqSfkFb(;Q|t*d|$xwW)}V9s>mRxeX#_i8H568ueR{#{w3ZK{|3%d-Lg+`eEz^lOO>uTm=H_bScky2t5ei(7VT ze=*FnJ~>q5IXAF}dkX^8wLZ=hG+EnHxc1x3n0bxyx*tA|lYz=9$d61t%1+bAT!gKC%8;v=35hpIj{{gSOAE-qC?tUJE+n-H3y~;)M{&nd zRy%qyAW{AzD1)}o9(7P?1MTBNLM6)nC?tTz8LiZZLc*;COO#_#Ob|m&NEBgwozKVJ zBg*v)P>TVr==vg5qSz=TK%!*y*bNjCZl!DzP-Q zxab{q_fdD$^^yYqrn-DqU0$8;&T$3%=Bl9moIu1tKgQqLTcV^Zruo*nG%3ON&E<3c z{9U|%Wqe|P-Y7Q4<<~A$_YJ!n*c@W`rHKoqNkx)qx;N~iJKw%=t-D&;vf1vI-tu$G zIPldYcB2vAT1yDeHh&}O(vP9tB#z0h8N}klPN$&6Jm`m|dXTA$&H(>!Gy^O@Gqe)a zX+HzJQOY6p4h*pUjRyvbN(Ec1*6?((H$sWN!M@OYq<4$pQt+`vm+wes4pmv3p39!r z`j+ynR;@F+O}`OBNzQFEhxQA_g1+O_v=)*>dy2}YZl(^W+RLH+9|{bRdoHlZI3gv7 zwy*&XZGdrv3kg-AOHoLGw$e0Tt{hqqiZ?EnXh*@3F-E&NG#0r-Ika%#4)SOR681v! zXu_}&WsuD0fBCLDmO5kN4pq>1awOm651`tP)I0+^i9O826Wa4W$RRrjNq zAeKggNO~>}psCL5<8Bh=`?pc60WInJBy_UsM<^sJ|<|ApwMUAsLY>C!)CHD61Vw z7?LW-3EH4-bOBmdpp9Hes8q30NC1;FTB(6T!mR{LmFrMU5KB!-7101X-;cXVl<)t9 zS`BDP*C(M;<$Wk5K&oW)+@C-p;a18fRsIbHmQ$(-`|0Q!*P~LUO18oh^J?l`wew>( z!|A_D^7D7fuV9E#M|*44W7Zq~1Z{&jGik%4DaZ38Lam=-i-Q3 zy072!clm-OLP~N|t%yHIA7SZ}MI|@+45-L&c25#bd46+ux@swJG_`^(karyDKJm4T zoB|r+zev!1U7GSw$c5(FZB%|pC_NQ1rnK9rLvLBcZ>3CoXCJ^!#P`l-w}}lm`Bf1c zZhn}ok`6OzgRWq!RXN+7UaGs>=*FbVAL>`0-6kr}uZpNV+o&T1v+$Jd)6tZzyf;Yr z;q9kvkMz1gy{B2X?E!K6ti?8ipe;0B!vD0E^L+x@_q`kFpXF;3-pV~W@vU55UcNVS z-97!hc*FOOb3c=^yQj0(MmDJd-o!nb%BEhAs>KUYNPrF!kTk9#w$DWZQt&432@25G zknwDFJ(Qp>_AT6Tr80g{(j<=ayoIY8&Z)46`_f6>aetBD`{V@+q0c2wUj zs;G+yR%P-Zk+O<^`{pl^oW7qO>ypSIe67)Fs8$Y}y zNYLnVyhBf{(}~Y?-gC)1leT_!cb*nUVY0oA>-H6sHX5;prf7Fpx=(B^O}}H? z_wp^NS?i3KuN0fYva?F<>ZWqNR%OR^H)yMs%c{3h=Ar8dmR!>{@q zok)&NKjI@3cbh=9+gIo9cpm!!D~lK6SR#Wokk%J zyXLXTbK>OP>F~Wxw5gp%8;q736xh1OuH)`H{&8BlUmCRof#4omv8(zZ+4H_YXWhsV z7CVIy%DrNNi(D>wxvu04+9L4j3@^oa?$l`0Qi`-pC9yy%Hics6g|}-ciDp_uWMD;v zX1i*nO408U{4zQ*B{MP9eSmif_VoN?JtRUr4n$Y}GhO2<74Ig|VBs$$@+vET6!NAqZD;AM-d&<)D5v8jBfJ)Z|fpq(z=!odF zTOEZ2OuM;|Qqt|rva+YzieidODQUA_kwqc9$gP~XB@7#lhL@O!2BX0e^NdX~jaD0P ziU?s-ma@JBg=C(vA3`DFR!Sl4dK#9>gnbCb1Q9kvniilb5>69l#Z@ov3^1E$U8|HA z?}3vA-$xA&kl=ADn-oo?tEB8I^E3(x=qfHG)VDu_Lc*=YbzjWF1%^17feWdej?gXg zkY5xvKgnkzc}BgZ5n(*XzH~E%iBO`V6;@i_$(?)CP4Yx$sLu$2db(uBgo(^Nxpes< z>22kvlj}+872n#;tQ987xdLpd(R4`Sj}O4H^K!A`ce$u`BZ3Y_o!o@PDzcbmGJvbM0)(X zcH9v^1F z`651cn-CuSYFiK z!ku2Tx7hXG4YkYd>Ix=tBA!+lMoir_ut`l4Swbx(?gbT{v<-W}1++~+jC z??i{8za?AD-$HPJkq5FKYz~!84H%ieNtv481BC=k-?)&_?z=w<3Fy8qBz1A%e5qm8 zGu4$1+})d{mOUKB4C&j*)cvkv>OP1d`6uuDIDa&q5+`CV4;c)9o}~_)bu5)Q{7G>Y z>hNbbZFJ5+mP@yJvRsr%mN;%lqF^vEN@vb%_(chZf>^isyL*yys>Q8*&@dgTF1zbxm1oa%2$-+&TlWGhsuliJ{w38 zVYAz$XJAgwEjoBLN^SsJ3FJSH#x4=!NyEx3lZKV|GLU>&$!-(FN`6(`uu_6r_?-41 z(}$LR2L;A>tAhR#94OpxHJbI%Sk8Yr%2S2WB`Wjzuf6YuYIHx72>DrwEa{`HJSzG@ z2lxR*YYQ$l~#jBx`?Hv4GEz0_4$uP}v!D z`cF|vfKGQIp*sEdC?r6qyO30!zC*bElb0*-TcuW=KLw7y;&e>=%WF7*q+^!aTC6aK zKG* z_@#6uiEuZ#d%Al!rCt%K9pb-`jh~dfZj#h~gx){8X1d2&H?OOUPBTtlL>|aV`5_^> z5iy@6C9h4Al2v9DE+yG*LQ3+h;-sYC%7x3wKbw(}mj=zxcflWETBOHaLeJ%7rt`5` zIw2G(qq4I*c$zGR!e2z|>_P0lHOrR!3Gwhb`jA8+FF`_`FTySvz{B@ZxaM z!ELGnTHxO1-64hy{-;u#{gYxxzkBEcHy|h8L}h1?vF}460W#Kwgv!`YppXC=>q1f+ zF_(<}GKx1Y_;*^y{u`%DVZ76XAymfR&QV478!)x|_%G3x1N!67L{-rA&tFhTK!0>0 zq5W~ul~|;4fd1%0Qu|{eyN~aS;?CJG(@ybiYk0XgfhISOwoxBiSD=ktND(Hdys~jD z3JG9xMk}3xLc*<-JO>i9K>Z>V6U0(euWX10(0P5_O`?2npjHD~()CH`mY&z4kbo^c zGkWgVp^$JZop(plK9jn)GTw>;%ekeeu%C{uaXl)S9&;ySg1I)0NHM$n_mZ6v+mYR|(q5*WiA9s@|-(P}S4QNT%C!td1bQBUGRWf?+ z3sFe8m9j~djVQ33QbpKLN7uL>l`2)T6_%J5RA+>pH?VmNf0|ZJ3+9?%dllLOaYh1y zBb%tto&LLyKvVTS)0g6UILb_2Tx&$vh{a69o8Z@@N(4|!9 zJ@{gG5#Qx%j0Smj5m(LT?93kSOCa^dtp$GF!~354pGtY+{orb3-$6X38lBe`&hx4E zDM~^GtydC%DN0Fr8$vU5LPi|RuGpX6hS2QVoh^LimM*saV~7$$9{fn^YYFloy0z{) zMj%?1Pb*X`a?4^*U)rshJ{qpn8nj@4g7!DuQXUt34bygqYy-qvy*yg3mMT`GHd!CG z{jGb&GKGT5l*oGmGYjI1|-JJS*N*V>vgohx@@@U52)2Tu<}s6nQU#-_4gi`^s8PE9^k`_yzDZ8vjHx z$lahpke5d9qOz$sL}t=c-d_G73JI7=cOjwkuMeV-fDYH5J;SV`1A9)ob#oC=8ue6q^;VxzHqSnBVV-ceNt*F5ZAEt=&7oUHP zH-0&Yu3G*8wB-j~Zw7QXrCyQA&rnPh!ujPAI}=7Xd3K4E9}?1l5%Wo}Lfn!x|92EK z3ZMLBw~6^bepST$-*IG>5X{0y6LYWX>MDtTGIm_t2qygS_IFKsuGjp*W?e;Z{CE~K zJ1|ttqv%dkp4BRwp5+P-WYr7Dxxwrz&?kbxe6c&f8itY*!|xdfC6Fdc&r-#o6XLp@4K7 z;}Flwy_v2;0V%qJ;O=V8A|WZncF`YBmKbU%B*_m6x!Z^VrI2)MQb>9q1I|MdyG?{7 zezh%xr1@q-(ji{^+gm2YQMlgTee(1ccU1n+TAg#4$9^r3t;I*u;QBKXaYAjXacy~G z)2EbYwQS?DN!Y-T3+jZ%Ud*5od>$19X)wW`KtrD7F7Ud$eSd8c9&-%;s;C=lB3 zpt3XQ%X?5rfWCAgq5ASZ6cV5>T}TD%%STYeaq(F@6=hyuKFqmO7zs7e1J##rNJJH9 z!a%Gh>Pyu(Ij?8!=lhF-_2uu3lEaj~{8bL)NAzWi!Dm2U?iCx6(}bp458r=B7{9=P z(A?)0p3t=DDkL(({fa>3JA45SO0pHX%Lv z)wUo#cQPYAUlculKMP_wN8iB=ZVU*TD4B9 zPi_}KoXj5id6{Ar-+dJj`7frjGsw>h3JH*(E+kZbUWq~i+|L=|VkpfHX6eB;8dIbG~O5olE}<($VF(svvM>(Kj* zvc!}Q{YZ{hi0IH1gU^5tT^b*r(}bv65#N(XxZiC+h<=|jiO+ccgswtDRE__h65S`h zmJul$;=kx2$4i_wBt_+iv@J#NOp>Dij{)aWl-(wzD8Jekr06bYq-dYVg1TMd?+IlV zp$okdWce9ND;ft6l?E&RwadnD&F#U8$+Dj?cFpUTc4IS)l40g}^& zgi6jeC?r5~x{wN%oM)qmXw}6u=ex) zMZrq*N~7d3r8GC?Fn&a7rWkw%l%~Hj(~lP^uL`JD@LhL=>^mFKn0GS{agBKoU4=Ae z5ac~|>95T6Y8KIzA-0SDFi&ErAzdjyq-|aKwj^EoNd}zjN_LyjmHcX3(3QKH(Uq%J zT{%!`W|o#ac_gAjWOXThBMHoJNNfrgib;G& zr7=IUYV!#yJA=mj0}2Vym@Xt#W6r$}8wDXdsk@L0)|h*uh~os(3~J0>34bB0Hida3 zVK+VVfFL^-RtWSSRrPMZp?#jZt!#(wO~;lt?yyL}R8Hdu-KgYO3dfRnn_CzQ)2UPIgB3> zn<)mL9b(f?6Ps!+eD59M`yK|wW)Gtg7n_IDRlL}=rxV1c9TA%$+6%GSV*S9E2ZqF^ z{E)WA=6jOF=2~VPE;iY1LTvJ@Z9#1A-6^p-TExuesCH(PzL91&F9021o|(;am1lKQ zY%+`Z!DIG_&8lJ&-(3|D=N&3LgV?+pg#?IA7ZNHqZ$TjeV$+3Gu-Lo{MI5J;w0gq) z`$BK#+$oHNk>HzcW^-dAsyGw2DK=Hlq{Z2^E{`QAmK;bRiWiHV09}aY|_h z#pcU7cM2n6B=}|%n+GSNiZfxGVpH`@&I;Ckro`qgM#*7HY~Gl|_z|(0V({4^HdALd z)mr%8JHq$p7!aEuVl?7n^M1OD7n?~lo1@X0%@FN{*xXa1sv)r{KP03OnoVI|P1K0Z4+r|tl_Yh3~y1eBaN2*laQyaj|(dUB!w`s)BxI zlaz)!vl*hj=opVn@yU?blphk(AQ3Z4V)G+OV)M1kI9zP9+l1KUSKETvv^pg=t3}Lg zR<$#m^o=Ao-^m)KLo=KItURleVv||K4<55eY(Aiv#CKP^hzhLPypPJxAT}RCApv63 zg@lUD$52Rs*mNNkEHVgqo;z0m zHp|rlW;V-J-OMI^BZ}pMf~6~d&K6oib;HTRY07-lFH5?Hd`np zKy12@P_cO@3JDOKE~J9R=KE2^alu-vC(N(eyoYnAFcL~0|?nNdMVw2q_#3sMm7R2U3X2hnyrDkbF zoGX-BX)g3ikY#4@v7|8%VQtYNjk#QTRtL7!3~b>CjM*bFPf+aPyQl(U`x+`cgTOo+ zg#-vp7ZNHkFGC>#0@H<5u)v%^5yz>c85Ecm&Yi+Y7zw!91ZICCsyGw2DKJ&HlEak1yd#J4BLXwU;4>gF{Vg^9c#)zm)hhU|J3{ss8c>&?WgOz_@)5cU zO=Si_-jkO8mYQD8BDylfcA+Z|lo)DASIQ4*TUS1mq$~fE0q2vL>^7k*`PH_dD_5A& zm4|y9d3o(WKo^;{<>GKDvc8nRk~HS8B|?STS`%XOtkC?q@~qal@m)1#oA_~K_UOzV zUyW&eWQpcnDm#PD+!KWa=u8(9sxz0NkN}G5)ipWKGGFEUi-L9LWk$(iN@rf2NQpT91|mPAGgAyc13GihxM-X< zlc`oiuQhuNXw4fKkGR%s(N#!m$^qZgoBlCK;iwqVoFV25&H0oRwhd`c`5_@4qVXI( zt+^9Z)6VCUH0N8HdAR0ew+YS3ueJrvxw2E5voSeTfaau9befZWC27u&vUcgvyym|u z&+4S+6% z7ZR#H??oX2+S7$pu=acqMI0xbwDQ9I!p-|RcM2n6Bot?x@4PV)Rh$Xi)Sjwya$d#S z&-WJvYtJW*lEaktd?JVOBib{?;4`2-{nBtVh6kWfWhMIix-)P+>ABHfB2j+0X}s7SBo+$oHNk?@>Nk)EE2D$ay$ zDpJ)!Ij6Dq^ZiA^iu7Kihr(l`m=DbxM*wT-CLP+t)0^azQ+hSaJ2khaz7*OS!g&lqs7PT6fjo${+~ zL7l#+v+8uDys0pCN@XRhQ+9)-PX8`ZEY$j%kd$X-=wFm)bzYrv`}omj_NddPw_sxg zWNF^+RCWe+dLRl3P^T^=RGqFyApz>tg;cOQJqbk|C#_~sogUA*qj3c|2_s=Tn>yVk z5mlTC+f=8jgK~Ce?dSW8g4Jo&C^<~2QzwV?yXDXU4EI;DFe>NM0BggSjj3g?E@sr-0jsJN=CEtj?=bR{bE_%pP_6J;gG< zV=F)yJVs?_P^V9!kN|b+LPFK)A5lnvI&~oxtWFoc2J2neVnOrS{CR|5zibfLcvhHK z6H#Jo9SBNS(*!F?zs(t~>l!)Ksp_DdZ!yN1Qm3nplEaib?Mo47h1q^ksV%4(9PPU)VAIt}#&p-vx^+_52bDnF!cb^2J6 zI=zCKimOw0n^33xYFkjJFE*o2S9-JPlhsmvD)V&deExG;gSwwdlcKL?P0%6PdA;(i z)<)wgd)EqndlEakJ{9O*? zN0erY!Dm2e?kq*zG;yio_x*N+>HP-8<$f(sTpmbQA#v%(c27?(k?ItYkRg%_3At4w zrXdL_KcsC5`Mo3w`66ZzE+N@%LPGMZZ9zh=F(V-ll^TDbT5D#Ok&C#1VnxVOGW5A5 zC(mHb(IGi`it?aWLM7$3C?r5q zx{wN%l((UX9(BxQ=hXFyW!7Ky-VvQn*s@4F*xKh}V({1GD&pR;_5u0pah6z4r@xksdK5qTLR zypWeCNhCESFXe}{EieB&NnZY$0q63P-6rHEzuFe$<=W23OM5i8ytGH-)O{6ti7CTvq)s(#6N9&10}Ulc4auQf^zQ}Xi49LA5x z%M^pp0(nURBPAuS*1`AP5w;(1KwiF!k%-I7_tRC3yrc@~CsP;f1_hD3R2V zyp$i(w!C~INnU=M0q63P-6rHEzuFe$$)(p>HV9YF%!80yAt6KV-}viTSi*5#LQ|tdG2x@g$Xbo zlk-2U6Zrn3V2OExQF54)m}?R#k!<{k#7r^x3`k7>D4$ToNYR*TC4A={q5FvjH0Bs% z5!aX#bQRK=;ZX01On+p@1?RcsLlsbNPy~eA)%`CD<~vDb-IuWR-NBR5ywUC8C0E* zbM6#ILQMogU;24ZBC0qOwy8Q*=j6PbwVx@~x#R0Fw;O9FEjdi7&bfqIKM+YaenfSq z7<>j)XRw8*95qsur&w@sDD_ds~pSK5qnGKO#0$*DYE*M zzml})C9GXKq&+WCp4EYai)5Slk!1GFch(h~_>QZ9pkJl3GbqokC?r66x{y%ic`FJD zP@XQNf|cjpDB`%ttrZvMUpK#tbEhy8M#6Bm`A#PhRh$XiRGzA9a>}gze1B2!eCJn; zlEakp{9+E{N0euZ!Dm2usxyK-8mDE|)oS?eJ3{!=4Cv0^FdlK;`3zl!bf+BfJ=Ljd zYoRyP+NCoT85fpKpXqrLYImo$F7zra`IGgV5O+*!E!ZvlM>YJQZ zto?j{QLyg3)hIbk>CRhn7(b#rQw%->x^u7Ch@2)o)q42;JHq%g4G7PVF(Pr{`5;|| zgr^eoJ>|J~Y#k%hogwlI>A8 z>p2I?BX+f!E8o7eRE#1$ zRL`K)e2R0YFcNB_MeKsbKpnaQCD_dUzC=`UCJYKo++tJpOU}nx`}zK&;91V4Z@@fm zteLdrFeNp2C)E1UN3!uFQZvQiGaxnn{g8ryks>qII{3aj!uE3v$jp~85^3Hug!xsR@8{epjD(TMn{7(- z%0yIgCTvq@s(#6tV(n*2XMWEpIZWxy$8s1yqBBzrK9f2#2pB0kQ>}yVyCZBr&w$SC zy4};63+XDXGlL35bf*7RL}!KwFJ!@pL{dXKQ+`O>I`eNyI`cWqFkEM{+l0>KSKETl zyvU5s^iKxj1jsyvIiLSr)|c*Q($r-iYl03*%0rZAb>L(m*9v}km_2gxWW^Z1ODZ6e zpFm}2kdqrwNPwJlA)#_|2!#a5Nf%PVaeZhSfofv6~FJdBTT>0fRucg z5r|J&ewD65Qqqm>o{aQQ1`;Yleg7v!av>pmBw`wpkn%&?mXLE_+0|voPT-HNcYeTt za|y|A6B3eNZ3`0e@5@Z%sR3=C_@&L;V&db`Fn{hiBB;y7tEgX;1b&Yi+YsEHJ@a}a?bbTvt^*7A#qsNzf*6qdNw zQguttzp?i7{YAm*@}M_j4mZ|JT5_0Dm&*usVQVc@3_b(ua#uC_roBwAR>61O5wc%q zKwF;4IK;K(2D%Dq%OJ>m%F@@(UL=g@$`IRyuKbYXz6|L~`5|rV%I+jxX*08MUCC|} zx{_aQ3%YX1jIQkUm_1&a$R#TmxCO|n(*INvl~=Kb=#Z$~tURkVW?WSImhfZ5?9r5O zP|V>wrUJtGtyFdfO?fv83DA@-Bvey=5QPM2N*7YWn)0(K;y6L1l?~?CRX)hMQy2*& zVK&>0S*;!N14rc}L>b2Do{-(M80DW5h<4pW-)$sERy%vh!vdU23o}y6G;UTIELD`h(X-H7Y4{2La?vf-Z zS1_Y+LCJ0tf|6ft3xd)%BPjieN|p#`gNn?_@P%FpvZM??mNeyYtSvgEDPOESs{<32 zfi3(XF?&Si`HDS!*Hl0}KZnZBASy>tNPwtxA)%tOjzR)Nr36Kvh1PyuzIlHm;^ZiA^`m%169H#VTHHYyd z`ZC4fGoUYh6&8vZDGF1qgkE8e8c>*TW-Q_g^KQBdDa>%F_cW%z%rdB5L}i9JFI47V zrEqOXWy%j}TV*ayQkfrSrr|1+-6m8fzuFd5=H=-svjekoG{w!8s5pXqJvIKrw{&%_ zxNe$lBJ|J>U0q{GI-jBcT}pp`S^lQwPn3FvWR|lFy%JyD7!F(6|vWgOx%)~2hFj17XkCt`hx?$sSenzP4`vPWxU_f0B!BBYNZ#Y?0Tt^Sz0e}3y`Vne=4!^PKhz0F`6cV z^=y86S4IegA&Opoa54^Y_|boFOYNPw<(A)&hZYbYc@SG$l3 z*3~~m5yyGs8Jr;gFV3C9NT`VvDN@*tM!}m>?@L4#XTmmhwd$3edszGV{-WRs;ze(v z!hwm5STkwKVMOMvxE~}5C ztB|brBfO`o{Z*}=qEJ`0hNvzy-|dp`N)pxWYo~~?lphk(91-(LqVoAkqViN`6fP>+ zZ9-J?tKvkZ-^zsx$}7wW%B9|GQUe3D1w(1vCRy1S81Q6akF)D*Bw^gzCH_X|^Q4m_ zUrI9aGG>0jt>uxC7c0+d)r`L!rP{@h4&PAb$LG?x)t@{^rOp*f#eBl)Vlg0f#;NQ$ zL3peOS2XgRW2dEdeFX{$5QHuy)Jm^KA>mfyd}mE5*@EGX<+#Re#fI)kT>LsQNcdir z*G`2!(4$)9Arr-imX_9I@Nn}lgeMekRBz!%9q0XYo9pu*p~}(3L8v04suxJ6G!$m! zhqN7LmL-Lm2N`f4X4q{a%Jb91vHzg|VI&4=arh3`GC7SZAE0dbhuO+|tBdN27+DH?YdYo?3 z70yodPyC*o5g+)h?*qTDJgaj}!jrD5AX?;G-ZQQUlcCQgQ~g?j@6%aps{NR$p4Yyq zmazNz^sH(s=U43EUbu+lkN1qDj$f-DDmJtNptXqK&DiDL(&MPpBszp`iCo}Mq_%t8yY`KRTLekkMl;;BXI&EVLIaZ zg88jysrP1`VoBTyD8)~x^IJQFB1sA__^lExF6}HWIDpnpb$erD!X7SfEDulL+*(9U zKVBP|tdQ$U<-$dYT!l zhE7am-NJao{=9M8c^!S#+Q|>RkwkDP%!&T|pR5>v?jdO~p(cX)dC(23Ic8gH&)r}( zYgTDuqF&ol9xqXXn0;KUmq*LhQpIZ2ChNm~Fcjeq|GCszZY!d*xZcf82tUqDAtZpX z&1wKRsto*GL{{O(b@XV(Se_e!1sBM>LHFjyI$Kw2P8DC&2{n(G=FN*1|+nQv{bB3m@l4oxb z*O|dL*XoyBo6F5HX7W`VX=z4vq%sv=y~CQKZZ{??O|>BmJws}spBCOg&QDm8+@LmEAjGXYFOD6ceNfXT1 zm|z1r=a452`Phr(Z(8flt5(XF+a9$B2Zw64%HZHiZj*j*{Lnvm0)4!J-0L85uDZNw zjnqgCjN2Azgt6Xkf2^qz`J^I>_e$>(f@2rCOxfQr{HL%C3i*3Ag0vQTb@hrDrO#sq zkjvavS7rt`6T}dPl-SCH*N(#8@?-T?Q3k55J>we6ua+7*4`kJG!>S0KUgOHoKM1UL zkMjl64z0NpQ`2nZxk`*Y<0ro&5p@~224YZI(T7LT&Y@ITYXJ?2nD3o#%@;`c5Q$zv zuat+&O&TJx8#b5f)#;m^@33L<3MRWAqpS7KcUeUi`et#_vcWTnn!p1s5Zy1_l1o|t zcw*~YlpZ2mR@<_X(MI}Yx2t(0pyt5_b!&Mcd5E}L&XMRq%vD{<^(@wml^WLIV7b~n z@`%AfzJ7FYaMJs;F*(GWLbzi3)E=d2SZl+W-LUDGn{3M)!CLiFbyO@s?XH)~^mV_z zWw?Lve6}uiUA^SQa@QZLh$iuAZhr)5|@7dD?aw*1ug>(U*tM6S$^f;@7$6UJ+Etd)nWGFrVA zR6o93gyg<4R40A|GeOvicL!ZVe*BG~vBGYAM{?uT@21;y;;-a*@(WvG^vOO-TY=6oR);R zr-`d68v1Oc;Ztung&2#8BpN#P58CYQ27cF|<&LG;P;0m}(VVRF883=AL^pdvl*EPx z^bHMk$Lw*7ylc%JQn_$g@$PVq9zR}g@=3EwZL~aW)i@v)r|4H#OqT5?jn5k8id`M% zPa3y2l}pyL##pW1Ts2&-4^Nh9d@{PsPfohgVy{?>$(+1j*VEM*>=xi?KF9)H{()6c*B>u=&%3HeO1Fh1;0nfQ3THC_p2>ZI;B3C$`?D zMvy1AzO`3wUoFEB8Q>ZxGU{}DKx**cpMw8sJd#?~T78^yO2d>>qIgSlbMz`=wb|fP zA-0ydKIP4hseYB+MiaDLy^uuU6W|lIQA(S2 zlT;8Qve$Yk4RP06vK-)bqPfW7Qk{P2-D}l`9DBH_#{N&WVKACEq z{TTKVR%SafY>n>Wnpl%VpY+qC3iEHLQek2LmSrH+Mhx3c$P?B?o;LsmQ^sBk$$SQ+Xo^?rxgo zPRLVSZrc;o@k>pMCd^8dEo1K{P`Z7%M!t%M8XN1iaqbv~YcwSBMiEw-B{IgzO}c}e zF}qHq8}ecm_8xa>)St-TXqVVvhP>(KvGVYkHEx$E;lVr=b8o)0q>SDeB|yjn(NoC( zl~@jMh#sN(pn1$Ta%UdV^`}T@#uQ7Hl^gERTE#MyElhKWv;W$ zxvbl`(F$ttw^3o?2G8QcWwYo+YD|-VBIxehmIso8gx1>>5hPrzMS?`zYgJnF*}%Es zlbq+(+|Q(Hd>UkMtZQ)_KUhrifKqBGN3}2Yd^Ib3?724OTbj*@Mt@)5C@mkD9O@me zjrWb#YNHjqkCra18m;xQ#bk z>E~l|qYycd9OX#O^B+3oup^kPm#3ZYP;qW!4O7j9J7(6=ZXJ@;-jPAq^F)Di>&LYB zQ53vMu$08)rgchlXM&2{chjP4X@}VXA32 zn6vZTfa+bG-QTJhDD)f2LVL0sfoKl(jb*|@yV5hTk(kaxZh@&5>OQG9NeVjAL@QJi zg?}X3=n#`OIzZTHd0{qk3rw}q;*%ytnkLao$E#M7eZ>L#b+EA1BZXPYEilzm3mK0Rx%5A(k%FH{_W7|%`y3+d^TWdI z;})1|pGD`2U6Mel7sdc|jWjAaeo*Zueseyd75sWtfWHM>OlMOt0aMi+wYW9IWuYX4?VK#FM1Z>8p7L#o@_n(!%7}zZMv1GG( z>=&l8WiJsn>!N2AlPz-#Otsk(pJz1PNQBe&$>*pBi~Lfu*1jgKb*!+~-i2AqEilzu zyZF{hX4j#rvD6<*wpwk{R%?Wl;nBLI4bO@NVm~cU9#!ErJ7DxfMmP>FloDW!gk*%%yw>psjLfE{k%|z(~Yj4 zO0r$J0LgYwo3!1@!gfy9fvQ1~>AUoNsypkFmQQFMK@)lY`%>lVrdoxj`e`F3nze86#m9UHGMb{L zbb>qc->=N#9iE{Gd6sowlkIn!XupUhj-kCSLi@0_dc+F*UT?;-H`ITx+QjCp`>n%P zA3k}FKMdvsZU1M2vI5Nts&QionO=+R>U%Wdm-d1>LsL;@N~rZ}{>m!f6r*9UWYh1~ zX1h{Zb$OM&SL9WnXNA~nXMR$B6TP3tQZ@8a981i2xpiv&x=pXxm1t^Tn2_f7CrZPY zvp3%O{)g-dRofn68Tw#ZyE?spu>n~8ZK;y-2EU(V@u=q zt(D*VkqFOTpK1Rspq)3cT<6(h8&v-&3h|1H@||SBp#qyVcq?c?DK+#~(95V=YM*_x zoBN{P$#!wAd;5*vkk zZjHk>jioa;SRpJKYi%qIH*4ZWSUT$1%_XxGGE3m_M=?9Pd&T*kSlDs)!jzhHLNUJo z4pfGo8p#-)EBb`oz%fmF$~lwORZUu>DDtC2uCmP02GQ6`55^}K zQ>yIQt~F_|^ELKT6RSQgy4ioGgbu?N@=bce4VaHVIzb;RMT)c_6rE*zm- zROg~2^o5$Ls=d8RF_ofexWW`ui5dJA@F1Vcx- zHPKp2jf-+PjN854iMW@GH5^jA%gS+ke8{d3h;2(OtDm+RU>{h^u3BbYLJKb{YnI84g#9$!X&x}pX)e`NSnV|bEIN&-rRXlSB8jg#DG3+r2hU1*s7_nQtn9Yw z{aP{!?eReS(2TJCUVQl*C{@~OhHX~EU&?1=BGI?F1!)HxGNCmzS+0z9^D%;0c15KI zCB<(X6SHZ18BLy?V+`x1;!2=HoYY<>u;H46WC*Ue9{g?6S5L@U@mLqDKz2 zNznJU^=9`_r8eZf*-Z(aW*=wd;S)oB?5_b@em5Z08~>bdWX9O0y4`?&AtLh^iK(UP z_9!hJpkW*B!o-3KE0FzwOG{tUdEp@X4*63$LPg#oe`)GF2`0nub;%3l-;2W;pi}Ns2 zY8S0Nis;P4ZFc6D@NGpy(wq;q=opUSdU=S(Npv8DxAIMFpL{rb^&mbJ9Nd0cGBfto zwOU-j5K>uPSk3ovK3sW=-~e5@2=gN|84Rt*^@YAEq^8wYsEDTB7~iyN(XE}CJ6z?t z!^ors|JwJK$%pPFOkS{2e*2Rbi#ISAy>^7Q!L^mS3;8R_oF^C9j=|K$iAt%Vsf#jI zO4Vg=JGVx23iXw=5f?kWO3XFz&9y|_DTzw)<7;S}ye$-&*z$5(SW3F<#6u3@cQv~G zlT_+9ZPm*{7o8S9RvY2#*(s(qY{0?KViXZ^xAaZ*cGGWIJ;zI_!V^YW|4-a@dJ_epe**eR4FXLT!H9uao)Jxx21doHE2!j_HioBbB z2&E)-S)nW2w0GY!>htVS8b<7Dnf3uD(M5amH)$76CJgWtQr2 z+E^L-J?*+IdxuXKVO5h4w2SF8N5R;_k_waWcf@Rk27@2jA|RjcKp^-Z$|R@giIJGEHR-eIezp;Yg%hx_(o z5Tw+|w0rapnQ;GUl5jU_>Y){1F>>c5T+2I|ZF_Eo3IoD=O>!63>;p4-&o?wydyT$ZXp)wPHoL7?xV% zR++>_7an$|FC*&}E#=-6Z#0$KttC}4L$qqdogq>erg=BejD(m%$~tq!rgwmuD|-F; zN_G%R{LGd5t;9yBKsE+5SEEX)p_!|@VkUB4yOs`hk&Z#&hpF)6L&M9@Xw?(1r`V{3 z5BA0lqtFB!3 zR$bY-0wqK2182xB=WYcE5K3t+O$G1S@n;p?qXsJ@B`6MzPUHhpdw#bsXn}j2XkIGo0%;wCc zNXGw+N#nm$82?ke+h_0`k?lR)0`HeV6Q$M7$yd?}=5n)QN81c(r$c~JjVTZ>dS`C^zl3U)TK)IM`->wou#-1?u1dgb>i(8>D?H4F>q@E&BWDdv$Sb?OXkX}y1Gh&0b}mQ5o+$dHQaYz!>%{_ z8kJhJ=^i7~SE&t`D*ObQi78q-QSEEghuNPKQ|w=s$8Yq~Im{!qVbSy1yeag*{7>(J=O4G;$d73dz>%J-?Uoc0(!&>j(+P}`jmN^6UiO1-2gAS#QS7z zb!w&mHT`j^{MQO=)f)e6_}89O>T&+2z+9qK+q+W;^vJi8lUhy0j-4RWMB5&x`!&Sl zo#>zVG!ci+2)~TkT0|=#Mrv$%%JkSsa891HXRE7=f7vY6Y0hQ3wM22^;+$u; zc7nF~9Gk_5?E|Kf}7PQU) zr7}W#uX#wx^w@!XiEO2hqmc43quXT$!@&>#E}9f86;iB}tNUfNx;QCNKl5D_65wZC zo}#4qDGF(plfn<5B0A2wR3^or(dy!)hy=zIo-TM7rW_p{63WxPP)O!^dH@P(+ve#} zXmw#y=q4m!C8#SXt^p#0n&rN9dnxryY$0M$m{Y%_tLtW`LI2+5YKr~+f>X5r&)+Ez zW{&X&p`N^Idsym)qaO9N?O^PmB-}1Rn>^0IGbP+EAn>6cP{+T`Qra_!J6hmXjhyxP1eyE=~$mxc$I9 zB$TH=M7P+Z+cr;kez!R_FFZvqz4bJyowlY#CrL|%=6C}M1Eeq5B$78zv^QIl zM*Ge*l+?p?Yd+morb*2cNdWSfRVWiN?fh+Sm-n(tlc2<7_NR;^Hko4C5_hdek8>j{ z;nnnyW~$wJ1gMu(Fd(vq~ykmX;*+g zLNkDrkqb>Ui#i;_O7ag4AkFl8DkRp@>SExvC(-JAb`BCt*NUlNwqml>XiT~bBbU`^ zok)F|yZ+vL$A+)sXCRei-n!KC=v^CLBE3VSFH@RH?MLY!*V|nSx=Tn7W(E^e^}>Qj zNzcH>3~tf4v6kes(QeLt#@9=KwkT1dJMbG zd4+$qm9B1fuH*l{lK*=>|Mv#|@2mK~H?n_Ss9#_+$v$5MXqNa>pcbBQye2*0=y$*N zQ-K%WMbpfc+Gu&WR2g9JlJLFhdT5i)Yvu084+z-6UVpzj`jvO!eav^kQSWhIhR!&T z`I=t9)jZKV);i`#?upLy&3d+mGm2L1#;hrLL-@4Xm>+v5iLSJ^Y&TIn8v+weZ8uS} ziA3Ujdq+#?Xu%{-k*fnnrI3}rm@LogfMMlXtuaHZLLzQlEDecWBCuP`&Ea(dG2ctN zVv|xSKlB(_ET9_DnPd;wEf%)b?T z$IZ*fFV^wb=-i1y0%qG>Na)noJt!n#YRiSBHr%zdg;B|K!wWr_GOZp!4Hh>P*XEPh zRzbP@TojUd?)IRNa4RKqw>!`kGI@_g zk>w-ra}@H1VC7nMm(i!3j@BM;7nHphqL9q9cOwc3w^A~D7l(zg%-<%8EgygPRrwp5 zqn#1|dlOoJylqeh-+@9h&)|2VkZ>y{GkAeJc9Y5b5foNF@-9`#>tUJ+&-+ER>UfKw zynPgfWS+NAppbAYCG&QnH`5>!_cti6e8g2pYd)x%VD7y4&N{`rI||7>b1f87(ac@o zPK?RK?L}ebBd+RkJxnvf+Y`{L<1K=E+_Oh{M|rF9!gC| zGWoPn#7k(>IxRm#MAyO8Hv1zqPe^}uCX=u19X)4@?CefQ*#f+5c`}uqA(MY03JK`z zE+jNLyAg#1^mP}~KUOAx3u>^qo;cH){HEY9N|qK{cYrJ|Bs6^9i9!OpR7NY^gF?cs zlpH>Fnf&`uVEL$PD3hPDRlb5&9&Z(tyN{!g%yaii6cTQwWbSG+`F}u>+|Q$R$J+#D?l)0L=9&B7C?woU$;^$<`lt#zXt`EkH7{q`58I<0BQid zbx;mJfBbq6UlWi8Gza zUoH5HlI3)??f_X_NND)H5QPMEsfFnfxXSEFX0ZW%4t&%1vnH@m4{( zdj|^1Ja^xPLc*<-%w26J|05`}eB?Ei$1-W`Qxp1~Fh3Aa)*gX1&#y(p}FUfKwygeI*WS+N|p^$JZCG%F3$*-We@)1{^GAbsMpOLv+(YoVpf-?736q0%7-i1QK zt(45%_)Px2D6D+MRXuJYnf#2reF&{O-XbV(zluUK&)e^zkZ>y{^EM`v{}hS|BCUx` zenyJ^6|E?4e3YWy9{}~Wd5Z3XLc*<-Oi^tn{~#0@MAVLD@-woxAFVy!E+~6XMIo7I z@A)Vs+)BypP0Hktpy2Wm*kC3)#A@#6f zZv}?DQ^8kfwh#HBa_wvJ2vvd>QlN?GAE9*z{F)01_5Qy?Apzb$qm}-OLc*<-?EQ6# z=R>>yEbx%G?7{NamTl8ij;gDVe$PiRj}|SjBqWLK4v#dAk9vI^H5EZ--Dw z=6O4TLc*<-%-fhm^tC7^h_ogW(HSZF2DGBM@llH2jY2X{(GQ}Ka4RKKRGWx?5Jd(N zwPT6sjO_g;T6?@*Q1<>e3duZse}O{6t(45(q(t=pq2Tfn*kB?$BZqhS5Gd^N)R)9ebr%^p9(A>iIy$p>+b3P^gFw{oGdOC-3O$ zT5;VpJ7)YLx_#_O?;Y$%=r8u^x_Mn)mrgsUi2rHL)hyLV?dEiA?}72!$YjNC^zmaK z*uTxG3A-`fnqRj!mPe+YEwsseYe)KHq&7V5{B3Smmy5YcP~tJKcjoNV)wOfK^LX5gIHvMZZ0iT!!wwDUUp zptVP(Hd-DoRR)G@)sb?uT&wo1n0BE*atjr))R|C+VBPue;K3H@U6}OoFp~UFx zsiZh__c$le4WVyZgD0*#)3UAOtSwf*HD%Q%?0TtLtM_)FI997QY>N(1vT7UY+gjb4 z>b2Hw8MY@FsD@RpTFo)rnye0w(T!Eh-ZD|Q8x8u-D%EYPJX)>Q?U7#jZF}>NlMZpX zyoi448h_Z?xPTn;hz^)TqT630F-_HOFezzD9jmVP@~d zR6kL%(X5xNqs*i-KYAn0J}ouzm{b#LVznU`t=m!>pQzaV{j$XudY{Y70IrnEYvZix zIHpUMai&<2oR;$hEhCtZSvE%^-*Z=6eb%AY8tVum;PRo;mCK2Q%deQ6+_GG*MAD6- z!Nn7AA_$G4lGDCdi7bgZnlMry3o5gtrZQ>+JipwqO4hQG@}@HH1VdBSm3FQHipmhqdP*m{?G`x9H=>is}s@*O7IYoVr!YI{ApX3ZKaLe!q_-rin+zmJ{`^+|ih zN-H=(s%KeqtlU_pe73&Uv^I>Dn#)$K2n}<3ma}`8ujp>)Nhg;o4fRo?*y!V$v5zV> zm#>f;<{z_);Xd*%1ASz%hCqLPwH$3eej-JV@`zoxCQ1}4$Po@#YK=*X8x&3&O}jM0 zJmdML%B0=s?e5+{@ns_g7#47>;S$A|P4rc%XhuyueQ?F&CYfF-&gW~ujl{X!2f*}|My1r zuM6`FG!_UnziZ|@nM?48G0tr_OYSPusB3{;CCN%7D;k|`Wy2ux{ITPLM+Pv$4}X{d zhJ2;}@E+&O@;4VY$ftR#qEsE}p>x2tF9A+k0=&|q4c4}sD9J=CtW|5an`k1*L|(Y> zasDQE$kq~NZ0g-9f?4ESDV*&1;qY8U$RTJ(Wj#*!Ysi!BME_`}Q(nL(HY_%=;XKOJ z&$G<)aR)tDc~)!4@Zg-hlQ%3U?XfFi4tcoNP9Y~In@svfGS^;86@2HdHP?R3T+eIY zTua#fvF392WDge;NmQL>a&;~|iRR3-7ZUo$%_%4(Ac5mT`p4QQ^di(?al@td z-*HhhOU1mNb)MiaN|tf7?f_X_NRcjewdb9LwwZIa+@-EUApu<~qm^z(A>md^&WY+? z&w3LIEFX0Zy`Gh^RsIF7Jl-lOcRz_jGSA&Fp^$JZC39E%de(PPWckQz>h-LQ?EM*9 zd%Rsx_WlWlWS+hAKY|Ty9o$OE>`iz*YY!A#KK`0}Ju4%Fm!tK^+XiLui%>}B8GIrN z3Aa)*gX3S%dKn5UA9;dzl^{kA%{U5aIc#ELC z{WS{7Ja3;xA>md^=55UDSv!3c)ZY+kO}w6!k)kg^D~cN*rRXXYl6i{07=?seDVd_7 zb&K+>;b|x`h^QTVJu4%7FGXvQw+qVN%TY+?**k?o!mX6d-lW&FUX6mwM__}mXJzE@ zKcNP|TL71?BE$6q0%Fz6yneTPc~l+D!iKD6)LyHI>QF$lmv&wa429 zW$(vPNaor51r!o)rDXOdWb(g-V#~*0bD8{%4E`xvf4pr_2LB#~WS+ruK5kBqyA7Aj z;P_1b5)@WG@~U~ILN;2>$lC+Zs+;HSVJIZ?ygd$ugj*?@x0+1;Stzc2#8sz^ipk_> zWNrzqJKiR!$E~4|%ro~I6cTQwWah?a@?V3(%12z);}(+1&&b<2#DB%(iu)*bL`E+o|Z ze*=XCc>j!6`T+_Fw^A~5b&2Soqrl>PVEbz*3?-s7w#whp%Hyqqa(CxXfWsm4+}#(2 zgj*?@yV^wb3KUsB@|sFSXJqfOXzlTKLD_o-3duZsFG3;VR!U}XLLzz;#g@k3H_q## zJ@Dzjv60pS+L@p2*e~|Q=PugY+uvM9IwO^@LJfg85=!NpQAp;g{3a95RPnBwBU6MNr;;358^yx8Fe_;Z{oKttKP=V-#0D;;K_0#bl&2 zGWSnt-SIX-nLGdfStot>Kq28)N@i|+MtXk~RzBjY9=DK;bVlC32(3EaA}DW9L?M~? zxGzH?;Z{oKZA?ab0L286)w{g@juvnY~FF>Hk8(v-ZM}MlA z{bLs*HhD$CM}IPK;^@zl8I#zb-qD{sht7|P9QqkLt3jOR@OSClCd!Srf9PjzeW_XA zWLszR!z!(@5<9uDLKCv9nzdE+^5|I8s?*`BbO@>9D+W7cnQ~Yc*9eQb1 zYt>aOwQJL{Z0uAvyFmx4Rfj8+BkWi=e&(T78*=R7W)1M~Qftp@DXYU=zv2RJ|?8Tj?M+f6oz0>yikz~F8z6ML?h+m6AZdY4eCbgtONtZ;FZDOp!N=@UB{&pYXupALxqR3h$p zffaTS)eBWq5Q|kmrov7A@pa}2A~xpV(hh|1DS2ru^-tSN%U}{c)bt=H9P7 zt8=~gj5*YOwWrPTPW~A>8IMlr!jM`P{sECn5@$nu2yybbXO{eWva|1kqul8abr!W9!K5AYt9x=>$_(xZIMa&9gvjB-gn=kvZ?Px=EG7> zQu{Fq378LaA)#Ap{T77;%!j#<)P}ouwlFGXqRxXU(`ttY$lWYrXNNAPe?o#(pgcF)M$C7%NIKHefIZ=Z)kGSAyXP)N9yl6k9H?S2f3D<5&y(V92? zk#EcXjLba?tvlW(D044CA(>}x8HI#fDVe$PtKB!Fu<{XC^|*zscF)M$*PvC$TLk6p zTTn>mdHY@z5^kkr-o~tU|2T>XBCUzl?infiWwfHW@llF?7lmY=qCZ6;;Z{nfsCKpc z?@?qBQ9HKUJtKP;JUHtl?OrG(^XxqUg;X?qlUBPQhJwpSV1ujOGjezxY5=@-P!D`A z3duZ&ODH7VO35Brv)a9e;>t%~by(&nmkUUuY1X0P*<@WoaaB*)f9-2LwTC1lgTfN` zUrSkdv3>uw4)4GAmYMBC#U!HNNR^<46lfy)18Cg=zvey{ zdw*Rb`nxEwI3L*l8VW;+=!~uMbF}h!tDxNdGYZK(cNcux+!)1exMc2X6VZF2$nufb zR3bVfdsm>fH_zUqP)O$4yAFkfTPc~n35n=)QEd76Yc3I;k-?*A{qeRz{qH0S$vlIv zMN@j3;BKq|xtbF8E(;|f=qBHXL-DuVE7D0LYQ52GS-hK{+gj*?@x0*!sH&9&p zh^x+c6qAU~$lM>Jb;sKTW$tfLNamUQcN7wCrDW#DC!%+L2o&P^h^u8QF@hh@biq6Kqv<&T4H*HY5Fo!@rtbCl3d z*>+9E?C(DivB@h7-gb?F6Wgw>W=vv#Mz&pJTb-<1UtHbR5dut=@j#U-gsZEGo*aqqGgQ0D)_*M?jOZF(F5)bI zQ&-oD>!z=n?r|QXeIi=(`LpD=@^^@A7ID0;JY>y+Yt4fQfv_J#Nmk>vo73B74I=b7 zWgg$|A}&Trd$T$Bu;vn*PKf8fNU9YfQFr&cXTuoZ?{2a(VwEc6wMNq#vaLaHKOAbe zV=bHQc*i$V=p7P!;PuodY}#6(R_`S{4y+hl**!Gbv}hA5YsB7Iu9kVDZ?3UI?JX0v zhPV0N@&@gs$G@y?w3apNlg+Vm)owJFt+Y0em50Y@@4f2srd67lsMjXy} zRI2P1i(5AEg;M21@5DzaawuA1nN7Wzxnz`sI+VGH$Lj78@A7t=hwl;=G|&@U?+Tje ziLGx9H4@#aX(nk07Hta@LGc~pDW0L|+wSoCtL*Q{Bl_~58zDLL=_K(pq3woAt8Yn5M0EZcN|b z%MWkB-dlA-6Lg;KTW_Upy|vPs>bI^Pwks1;z4ULB&Xj8OdTX9&znaKbp{;S$@1(7A zB45f|=cr!?Tj{9ZcvJc@U?N-XsK1rA-ci3)x8hO1_eAUV-N|NXcd|Eufh^DNWVb8N zYL)uVYuNQhU!ziMHv2|t&)&(QzDjMlROzFBvP!7VzD9kR{W&qk{uP~PVyb_nHryab zM;rN)D&b!TeJgNIVr#+J&B?mMcZK&R3x6R6#`h@rec!1G`aRBmuc5f{Jo?9u-MS}O zE$b@6CG7q$k$ZJiTRHD$57%x@b`ouexP5CfcgrxHliBWv0VmT#R16QuuG@yUZ+j5z zxX6P0`>AZw?2&o3ld)NWi?B3+W$g`?jZ1gT>7Sw7>LNo$&J% zWWEgno)r8=$?`X}?f_X_NRcj;vVGg)&xWVHLNf=N@azCxDx;O2i$cP!lsr|fTQ%Q< z0?S8TL#yU9w#rM;%Hyqqa`$u;l6mf4h(f}xl+0c2s`-s5vV7zid#^-mkGBiT z-kVTJ=Gl7(3JJGTGJ6wN&A$u9mXE*YR?TN*@cn50@wP!3{6!R!c?Lg zv~~nqcf3td=AM8;GVgKEMj_!=N@i~Ss`<-MSow&ndfY-*&1dwub+qbui=e#Sib68a z+gnjcxRsK58?$QuE))|)S`(}0Gg9*BYS^^)*f#cl)ZmNA(>}y_vb;Cjaw<1y-BO)_d&tsBe20$^BFn35;XwcIw*(x zQAp-Fd@2eFw^A~PHLK>&M{(t&uR1LA79bTdEYmDC#Iwn|g5s(kSwphiUqkXSk=l!7 z@@X}imph~dU$g5Vwkdg$?wl!k-R+eqTl&cwrP#$c?vk5TzPUD0*%>nVH=&S#zV1Ro zle2fAkbu7KLi)$by{ zhfiH5|49^BKI$6EBVA>md^W^Y0!e+b2vkH6+J`576!39UcgHYkH{Kp~lD@EcG_ zxRsI_9G}U*8-gPHt{9DW)#0Ny$% zho3xK#OCcd((Xn!-tvVWC#4U0D=_5s4Qpn$5BZ>S9cI{1m7s+bXd?O?wC;dkb0MML ze-MQPc>j!6s-lo^DejTkn-YzJ6zmGyP&)%m|NVt`f*_)7veg?&skH6*;(HR-M z_>1PoL@p$h!Ouk@nP+eh3aMxY$0wqXL}BG4ubLJqBoUpFx2L03$6EyD?S&{L^Ss@N zLc*<-?0Geb=q8FQA92+gk75$h8JT+%T6ernQ0Cr&LNd?XccGAQDz8_oBG+(N`Uo6_bb-%*~eabzf}`4q{75 z^LG9qwtMK+^pu0xRLuTq3lW>Vs^Ejz7&vhd+jkk0*q`1(Y>R_KBO>Rpg-&P?XE@x( z%E@*P+hgm+!E0xWgV)AN4Xb2T?2XM;&DyGZd33C4)h8=SR4)4J>Z`@A!?p48$)MtRjv+KCP&yw8+N^3t2cVPsq8J*)mK{^*#q3C4i0V^99(IYsw3>t{2O+Q2WoI| zYA|wiTu-~Tl#}E?(DiTUw|mQn7A#TB<7MZ?*={?9Oea6#r@ANTwi1u?AZ{=G4Pg>| zV7R^Gy}E;zk{{iE<#tt@SgzgTaQn;8_>=MK?Zm3*(oKGL`}NyV@KmnV+^esa%UkqF zxRbT9>pR?3FJ^Vg*i&Sz?bn^Pt<=S2D=ZFwDL-Rh>)q2{ff=!enPIzoGo%` ztBhA+N8zaC$F^Sy);f}hlk2lM{H6SiL(n6=X&0?H?i|kJ9x^Ju=n>Q?@A6|J-&0Nbz4f~6BXM!tY0}LraSmX=8aQe zLkP1tWmY6VP-?yg_c6=nNJjwe=5zkAzC*43kF^e!*%R}>onK1FhHbLzm0D?JnUFR9S*1c79K?S>hiS(B zgpSqpek2_bcB9EwTGVD$eRi$ZvTJp}%&uvZxOdXvR@t?zXSLO59crzy4!4dI($ea; z=qyuv1rw6&LZ(|gKM3>h9R~Qfv!-$?|8^4mW72$?T#F?h(b#uHEV*SqWU^(Jvn4ce99qDPTuu65C9STfR-&-=u#Q$b{d8J|v*KKwNFpVGv2ib{i>)5D)#v9GC zQq$U8raOjgl2dfY|7Y(@;Or`@^gA1b4iHG#1-XF8OUMEU3C0iztEdEIa|xk&>3&JS zo9_3T_g*KoBB&^cJpX{xFoMg7;4mUXvi{Z5LUz}+$X+eET`M!VIG7CV#zY5S=S9N9AbRiMPDtvwhdU^J;M%`ad>5nCk3sa_ zMc`l9Zg4Mm)PKZnJW_Z^O+pjftIUK(3xB)DjNrdtf#<qE7cH&$)8S@atm zX|~5(wKmM|+nriFP7c-~s-CWyCBa`!K&62OEB=4N=P&gS56(Wj zIn)e(7H&bjLZNrNyWC9!KLrScU}r+Dh;J;6pmR$o!o?k-{VD43ZVo$aF~Wsm_ai#o zo4+T z2#onD_<PKz{?*fK58uhnP(UO(iU!gkNOGE1%k;OiZovYwX7)eU1G%CT;#Tc2-P$ zjh#Qa`x?7iVs`!|_A3kd5_@;QfU#8C&GFVCtOs8LA4mrOzHDt{Vo~60D*nB%$3FGs z^{aff0L(C$D%pVJPEO#7JjQ-;3h8(-kYnzw#MHt-6gA8HiF@asIEAU9>^ zU(6a;pVi*Q_~>ysBaoIZEIE9QI&u}cBiX+Xp3;#6jgBmg@DEBy<^|F7g2LcLfQEmrt4ggVKHAh{&K6CjY( zLcGTHu86BQmmx8Xa@bS_~vACA+MT`b~U=g($mQbM8*>)WW12*X-JGL^S;oR*WbxM#CJ z!z#X;3OB(I$3+_)9EI}SmgSw-}V9K)KQUvL`*?lwm z*#9&F>_F)f8`Ysd2Vv_062YNMNTx&2wLW+n6>pT4_U^-bT_5bpRh-JrCr;O7J9IiO zvsIS3Mwr4DjawkQd!^06Qr41V0?oEU4W`6E(@wOWC^NU5@gp|}Y$8QBrLW(1cL^f0 znjWRB=9)cF^B&8RuX41S%hziC?)4zUw=$!81ABTWJat3U>#9lG6_fteP@ucO?3i`J zOPfRqs`nDajUeD$3l(X}OKN$jRkrY-KLez1E@{k!(Mw+# zwH)yQ>hr*6FZ~Btx7Cu086;yPcd|ku2atQ-`!fJN zp6`4|81_=6U4Gcx)f%&tDRIy2f>NU8xBs8}xVOt!g1EOAJn3;SbQnS4TWEF7ihP=_ zi^%sSWT8os&pZmT;7pM#%$!-JT^rdHCjSbL7F7U^4v+PX;M*cchYYha_4SM4SQh=; z54AxvYb%0dVZqL^Y7XLtWeq5bpPCfKS2B=1inC%Oit{ITQ5->a9?9R>LnJR@l^SXqvaPC{q~3Q>0yf5ZC9f!uC>PxY+}xL(6Ml>pq5G%M6Im zU2lLVJ%%f95rlAk?kXM8qzpqcSxGZ=5#dfj=1Ga*yUGX-4MhgB_e(YIVbCy!qS6@q&+EzfhZd{g1LB$%>G_vlIdojCz#)Dv{gnh z*R)VhFgH8tf1mX_Hkj`cr`D9|`CMfNNS(hjM65!ClkjfkKhKwY)Cx@Q`T8%Q12o5& z5b9HOF}0yySY}G7H+!J;X@&Yp_o05lSA$T$4?G#6UciqE_52rWvaSsS5e)A{rb-F* zbC$9hdf@-W{9L|6gW*7i-|dwAj&LxGUhI$BpjoaJ(y>S&q^ssqL;4GoLi)2ANFLHz zF%i=Flf#g%Lvh(q^uwy%p!=hNwq8`Y@*T~w> zK$ci+B!7X?RvC-yfhbfcEqrm^?4^G`>$Ym&T3pwZnG(Hcv7$(OqlQG4qjwUx?ZtHl zAa}5?18ADdO9<8}(k?$(>x=8s_)?;^*#)IUD_Z}n`)K_y%!2sD{LS#BN9)jG1mRj= zTo2rlF*Vn0T|~N5k%dy?b+C5MT8f;TM-@P$<7U)$x^L@Ya{gRar9L@-J8FYw)>b6P z!h%SynoEu3=Ojh)Pce`@lCxqWlJh5rk-P_}N%9SI1n|i-O>5S0K)VZTlLT;w5&$bE z1i+tM2;ieP7MmmRW}C*aCL=j2VdwtF<0m?`Hp>%MH!i>`n0K+ak-dliAIvdN?bKS; zjU%=7;QcqS_vT5Lpq_}|&Vr*kjm@l)CEns{YqNH01`h1PyTx0!S+CV@w|xL++T8Z= z5E}QImBvM0!s(aqL*3vhsaci3r9vWPRSHNkBQSDYTQNI4{qkJ{X!nAmGF$@7)Q-Kl zyzXK4Ju$;D#t8CU_h1UmpT!ziw9-tm(LQY(q>hNgq-xY-Cb@vzmFy>aQo3R?^s9sO zbJN5nT=H zAra0TNJvyic_I}O!BI*`rV5Y5woA2$^-BDE~i4GODWkv=Wt4i1I{EBR6Y}x z5Rw)ziZasoPOY|v6H0Rz+n^I7YXl4u_dr%?KN2VpElpy;I zDkQprQmM!hR7i9wC65_x#)swv$5Dah8##N$tqvt_9P~Pzs9HIj+IhNGsJ6S23aNP8 z9iu{`ODWlQW4}Lo2^CpBnAP&bZpAin>is@xsMNyr%*5Sg#@gBrfn9-Z7 z82xggR=ZKL;;+P~0lPC68`Gf0m^QtGs<;!NfyCQzS3m)o5D9eyZgY-3n=K?`RN@tK zhaaW_BWUMs0+{6yQjY51PK8A92oe(2Z+?XeiQo|=BvXC4PU!!DiZ^Pg#4dPPEWOtg z`l(^Y_(T4glJq}Ce)(b-BUp+=eowKqjb|b73Dg4+xa<2*-)5(Z;5M~H1wyLG zuhouaa8XJx7oY~4@7fKhco%Hy5=}ckO*EyLNb*%pCv4=S3ys0*;G;z^dqi+o%?m2 zWA)&s^G!Q?zW$Z*MJ*$PQ%5T+V>W<~GNP32!+oiJCK!=~l)RiAw-vIO3XG%-YZEcs zR!A<*C{vZmDaHk`Yp4PsYbGv26DF!+P{vghrILg-?r#V`Xs&Tjd8XcZR80^B_+qF# zYS^YML;F-n1mlp9sJ{OqDkOsMmyk@~Uvj42>#04Avj5nHYs)32UXRw3_qkjc7*(5Z zqxO}cO$o{3J1L0-@25f{*nCDQeToW+E~Vt?8I`SfClypaGwmT;uSi3EklI_i3aEzq z2o+NChWZ2*5?xBkh8mNxx7{~NrQE@77CmL`QLNT7krdj!54GQP6G_&GowZk?Ldxeh zIDn)?ja=eS;nu6EeWi<^8gQRSg+w2rmXW3e+!s?J6)&YtR7i9wC6Al9>1u}xEZ^uU zaJrh23cZdh0J>(V_Io`QQt|eC3l$PwO3C&co4xl@DzbbAoH2Wk5ESATCCHQWxQe0# zKwsT(lEL>as`3aqI^Tf0VTHn+d-s;X_Y*2Gf_5Y@%PXWTojgW`MDPj{5;gYseUr$7 z30@&aeYx^;7Etj<4VBo1kjxo;JvoP+0lSkN9U<6aorAk9z7tsCC;QmB6tZ2iRvXTph6;ei5L~;@)9j7-f83|8i3u2mk@$= z>Ls#OmYB(xk~d)9gSL0P?9T6lLiabqp^wPf<_l ziI&}6)qcB5mPyIGG`pa(U@U8XtE0S2zD+JtFF(i3ieH@eWq9gp)@Of?YoXOO>!MRF zsYc`qUXRiqfGo!)XXg1H7j8t$POv11?%LXrbl27cOfdYiF;-06wZ)%Y+_g0UQqf>K zPoTUhJ%O@YFZ#A3u>aumSS-y7?tUZWYCcW3wSvCL^%zqz;fmZm>1V$&+A3ZA4`i&e?96D%_i+OfoV+??-wrdMRZUP|2}M7+H&lAB;NH;P?9N&7PcwHB{~kr-J}LgW z|0>r>E(QoXY2ZJ?x+8|O=-=_E4Vq=ks>3@ov9RFcP}N-O#i7-tSbiP@$zwSyCSo~% zau>^cfg0(6EFs|IEE-ElCNnQd5p;=X zp}|oOI2ZcQaC_%vXz*#K5|cmg6An*Y3U!0KqOQbTONB&Oi4l-uhC$@uvL=q<;fa?U zK)cm~_;6@u+NlYb*LS|l=!uG;F;(}_}KcMx_kC8i* z{Q}RF&X`9+76#X1YFX@0i^Mb6WgxD!e=G~&y`yL+W78B!N=%$y; zrH2>6d@d1Hl<30vkhlh%;wVa=XZfFio~EoSnwV8ou!McHqj^(w-Ug8Zk;ZApW)!15Vwd?T8tG2yHtu|B}GERHDtQdLq6-+>?vpo>F zC?iHQv=V8I(ATq27eHU;JodPgn=N*Neu=lO#>LA{)Q`1lTWgJu(9Kd)H{PaJbJW|` zY;6Gz8M??{9n!!_2)+vq_$RU|IVGCaqlk_<`}7k}U*(;knIe|}oHGXj9P6Fh=&)(Z zvEDiG?E>)>602hs2jT1?XI)4*XB8=&IWfXoxKoe(~UYP$m9SM~%ajjPK*9kO;b#kf`2#9TgJ6n@dQhH_x?(cL5b| zlySy7jLd6zJ$Z=pxYfiEGYXjyf^|9^vsIS3j+a6g&FqwY%v?^*IR`{IW0ZM)p+-|` zl({_7hN6t!^2A{}XNrbOUuo?w2z9RJNhvF@W*^i9$g=2nIa+z;Ypf!l^TW)rct*=7 z;i;?B96Owxp!Nbe_@q-t<+hu3z{LcCM7peUY^ll+*bmrewm3dY;vX2aUGMS3o&Qon}A% z->{CWRTeXB=1S^((vYcgo^d24D!|0DDJw9hCUy2iqy7S*X{m1sAuvVS<%ht95#u&3 ztJCa+QlsU+|J{8IJm}j&3_KK`a16B5I(Lugo)rZ(ix*MwyU0$HqM*4S7JToWIl#mZ z!s`Xl3hT32{|G)Vat#{o8v5S}N3`hQVW+irRH^xCPnn;F_1i> zvtlBm^Cx!^9YJ*-)j!ZfR4?kB1~PltX=GRSGM`R7r(su9;hR`cW4QJmv7aDY)RV$s zKS8`j)?P)HsBx^Ah>$0uZ!p>_XZJ-DemMc%?55vj{Vpb;Ut)+XhMLMgp1NzGV zG|lHF1oRYXmmkpaoK{$0%AD5hgVLfE&)@Gpp5MYuh|g)?4^KFrE1#iGX+$}sNg0x4 z(vfEFBHFza87U>2?|NpfGu~==AjQaF9`QT!ZXZJ}r+c@^;eliMOIVd+FpJ)O1hql4 zYb%yxQ9&$M&85cj3zK5`-3%m;<*b;9<^0KEEZ3nrkL4epF0s5(+ngep9!=eMMG0f3xvg{&;qj$O1Bm*_>g;AaPW5mTCfzJELtEs5KRmC zZ`LGV8zLfbK7dS@LJQ_BZP!LN1rs1~i@kh@Jl|2Q4{oRO-wOx2=*1DJ4VwL0;U9|x z!oO-RHT;h!h5r{YkUadeVj}$WCx_u*hw421-#T5w|7de4Tlimv!auL3((DY^TB|%O zLlrW%S!(vWrl7xpp-0jH3CN%U;w>5sgUC>er2zv*TjkIIO*fG=V1X^~K(zMvjb+)y z17>r0Ayo&@5SQwz$~f&8Z2|6 zPmVeJde$9%$!-p6BPVCa!UE2&noH&E6G@zXe+H6sc2-PqcK+m$v+GcubM{a4z}ZL3 zNUG_y#%n|Mt=V|{a}jS>RmF1m!P>~!#4`9Vkoa1AS@_ohO|)73ynz8#Z%|51YSAxf zn5;l1Tr8VE!f2~I62rd5ml7x{GD>1+Kuqvrwb4a_Wj) zfxjt-wk)2XqM`D6{vKg0hD_Tq;-+wYvmeUUTSMgI?z#Tm%(yt$|0X=)Rd_@W0=~aj zbSEv&uMHQ$`IjRz&dT|hr*ZzE03tIFptjS=Ob^@i%UG2<=l>3BBPZv_!UE2(noH&U zuSnwjk1>#(^Rr@t^YbT%oL`6Pob%t-1LrR%kzQL22AvSDo_G!#K`k+5wpWhDT@pR7 z)U(W32}xh74_~7JvBUSk4hS1pdA9857;Tl5XRqmJdQp4Nkcaa34!G66PDSQR3^7+M5o^-;?Ps zmfAaBtiPySLvg=Y-^rmDi^QksqI?o>9G4MMB!$77olqX#8VR3t&*0z2?1?k@cfk{8 z@L}{1=(}-TMv#w1MuM$29t3xviEK6tcjvVIV76)>vtF+kKvd;}sBI_QeFm#i=kD)A zZRF(cSXjW_RdcD_{Z&ca{fi7F=kBbS;O_j%A$QlII_K`6?t!~E%2=;&g>!Rm1~mSD zD(3I1E|)9zI|7?m72_p){1X}~4KUL>Ba2-V8}$p0SDCTw@`Nm zWbfG5oPF+T`+|K2g(wASsl5hJ+&{V1qq=KjmmxW6ob2+gZp zj3Q}+YhTv~SG@T5g&sll?-JBTyt9llbXj$HR2~aUZ!VSlzcz{czlnk5+@BQ_+@C)= zL30@DdsS zhmc_w%jVx_wAC$H7t@Q!f60)B^6hbyg+Qb}2X$xQ@%K?75qP|WMCI`hQy~#}yoBVG z$3ITR8|Cq*h{ykqTa7dGvp7mN9)EixswnaG$m30Sx{ z;)MJK@Pr9@5ZnVQj&~S1lQ0+HHFFmv^*zXUQAqg0;D!rWdOzlvsO*`@5@>*&?P7pn z8vgEZK#Lx}5Vb)wY>S3taRCii&85=tE0bvW76y{ja8^vvaQ@_whU-wB)9}wt7aHEE zxuD^!mdrFn0TtybVvR* zOm{`m@ZT3|7)8^n`?t-Mg9GPfV8h$`34Ob-)6FG$SF7G@Q)9{yt16uU(8K{k%G#rZyXt-)F zm4?3|iH5IXAUO?Z#RLuKPY!9g4%Img|6&g`yp$~V;c9z08xhCX!Hastb#w5M%lPGQ z$Vdy?)R}kq8d>}~$Qp~~-Y+!TDkn`n5QYk>=11>lf>#Q@R&wX8zP?vXR{WD@_w~V7 zpeStNfU97j+yQ^@oBi|$S;tlT)^+fjI#ZU`X0f73e=S3%Dj393s3@}1`^p*zkb7aR z0ibD)FQijeL{E`+`4JtjK1uUSiRor1lp3v={)OIS`gODWX7sWDfhGHw_Vsml#wXh+ zeMZ@|Z=<}4853V)dpkVg;2!#qAiU#5*T6p+iLRRIi@~uD87w8h2lq~}mLji`jVgc! z%X?7U>CUc)Lu#k7D#g$i{d*^BgJ$K{DjOCSgm=|kYIwgkDZKv|1IfcXD<;A_e{vY! zdw`lG-*CqtfACz>nl(0ryRLL+j!jJZwIl(2MG1fv69V8*E(Gw=8;kwa&7C&4VNL49 zwR>JcJN*!VRvek-9{lI?zpOOjqx02HlUocg32rH}-lBvdd5z0yosx?DUQaRs68zqWGQEm{JqO~6T0AkhzXsSLs{0` zE=575&+YujArhrbT{ zd29Jq3#=maKFF$23!s$Q*$HdM#zrQ*YQq!pvEFPf@ivZkylT5W-l}ecMWPI=ll<=1Ll9KxzzdJ zbxG5o_cD-t{>O@m=?{N$H~m3SoiFd+ojwIp&xT9?D(&WYYp{my^Hxs5`?nb#E#p!ZcMvqB^KUsE`N_NdWOAZlL0wCXV4cz#TuOBAZ^Zj$x<8YHpC|8)hyx zoCAA-2H|I@>LPfD+qg)5(>rV@rZw0<1TPV|yQ$y^YLein9^$)HNCXcdAyGZVZI z9wJ7Cxje*QsCcJ|hxjAlcH$v~P@Q^+Y?URhV5iJS%3mP;Gfc)(7D!FZYT9YZ=gW>4 zNEtY>KzhWF;EDZHE|BtPxsD;ffvinX1&_K7%`+3$Ml1gDa1(+~|5mN_w$@s0SQGV{ zn><+ZRjstyZ(u_L}3Jc73SE3amIXa!oW(MaXNfWCBnNy**6$qQ*B` z3N339L@47(gddb)ihT8^S`|J#U287~Y1TH^S_7li&hRq%cGVFpS9;!oT+jo78V1Ii z?RuxawRRv5d&l)q)x)oROH5@Czw)g(nxBlIyAZv9604Fgrp$^F&uuI_VyB_zV5ipZ z3~U@}4sMzJmr315>uc7m@lKWNpU*zxh-W=(Qdj2N&Se$ zi&s3W-X0Oy{k62zUtQB3DSC=ZxJwceRZ!5aT-oP_Gr{aZ#4ZQ26 z8sY08joLOia5Olg?bxxcz4Z}E9PIsuC0?+m9(+0yX6=+sKX2)psH8?#dEm$G{lHTa z_XFD<@P~u>HUzg5l>`uiO#ogqCMLI19V1~&@Iz2Hm=Sf_{8=g_!n9dHvL+qbwglg2 z0PSunc1tiYaBXYQ+C!6L0Be5x;H~f{6%nt#Wx!WsFNPrHx!2Ydm482LTx|uKduV=n zLpYF>z2CNggW&!{dKhgB-dsDI1%-pE#Bk$pkidUM6gXwq;}=jjj5X@2*@ z%14+8x(9%dGNJX@u4k;r5o8&)&jb^akdpNfoguKA3X7x)>)iVuc6x5HT2a18c$*m; zuvX5XcAu=3xFAYc>KDT?uA(S~Sd;K@tM(_t1DdJ+uCpc@RKXJD;X~a~BXE^50#{*O zUrdEW(6xj_b>gq5LLxYE3CVQgxwbyuLd6?poV`2le(AW`9${|3{U&ZTF{F*cA%tLy z9ga>iC;pqNEyCXDr@1t(z0uw>C+?vFBRB^MjLPsHq(UM%2MLMl93G)UA~=T__2qI7 zf2ZP|M$X|0!0u#kR0y_M=in}T!h4uFi6D50eW7lM(q{Y#5+#CbC3qHg@Dj}umQleG zyo3Zt^%AS8kO*EvLZW(!=TRXMyhMx&b9ssLsCcK5mv}K?cj6_4V4Zr2Y?UQuP^7Fz znP&j^j9ETbtUSy7^zuT@rM&s+s}oHp%EqlZ+#@#!X{#xUDLu8NJKxw_NWCsOZavMi z;;%Z&bKz?_;w<3%nMv`hTs{U*U9~RKRqMaOH7>gv-Leh|YRj`?vG_fxV-WtX#o5kq z9#Nj!=>0k+xsM*+`hgqKvLr0&p<6%Rnsn^#i%cl|*c&S*j=k|G7suY%_LTGBZ2rKf-#gc52MnI7`!I+F2D=6e;g7hCtJHpdwEq#;&?pF_2@; zz1;Fg03FYjhygD}+T{nlUCa@i7V*p;C>>fp`)lqa-u^!hBHkhJq(!{YTLd9*f!Q%D z=4pm5V&478Jdt0vz`(BTIA3`xtjic;XoGsTY}o4*|ZhA zv9KTqPBoW$Z2hLB_TRGCgL}Lau>f5ROd1Lz8+$D@reWAd$Wb`y~1(B>*yhZ z1KpI(=>c55MRvXc*`UUyV%D?s#P63FZIzI(p^3em@NM?d-@-awO!$78Ay4J{V{{kk zqsk87TLCo9)g{bVQ>0yf_}1pD!t_$kWtbgMDzu{aH{D0?w=?_U^VRpjlNP;|s|bR( zHeZ!a$hdM;vvLvJ&PBFKiQT&fpZ4iQhwg~qkw^P5YB}AbMUDy_xzAx$iZLvD_W{%f z&77^sjYS2KTQ!#&x!;)-x$j^gdE{orMC9gA4kNb?)p_Lp_OyuHkkg(maxV!ZH?KoP z?v%Amdp-_>Q9>}Hxp<3g{|Cq}(``RbH2d(**nx{+%{3(i=(!ejQG$rtx9Z*`e0{^$%2mS+o5(NH5@Pq@uKpzqK z`485lT^kT0G=3YID<$yHS;{`99V|?Wv^x0?Il03bdbd;aZ-v8J^kNxmgJ!l?fX5<% z0I!-$4eDBqURTxsph3q2i6& zZ-`w|$$WcPPv-~T&aK9o`B_ASa!4yo3vVQ%iV|N)`x28#OlRbeGToKS&F?AHT&xYW z!npaDb0|sDoiK?cMKM##%|$p#;pS!slxw$!#CP3u^T(M<@kP16!xQG_0(}HG=Ra87 zTpJLA)xH>+D}|c}8)}T99~$+!?Wh7MUe5lhbJqSM)*XFWZU$;2Cu_&T0@kjYOJ(gJ zNMh|zV<0(eXT=0-=T8nJ%ArV-+gyfX9Z=>RkqMcL3 z+S}Y}oSC0RQL?f2wTY;r#MdKhH=U7x9MfI7to^1!&80ln{?;5yvRHeHVy2X}i*S;{ z+RY9q*KQ4o2i>#wJD5pv)_yNMVb(6tN3eGOgT>ml0U=oXp~zgbvi7BEtUV}zc*?g? z+vz-|ht2fGtV*4=--p`B$=b27fVHdUQd#>)l34q17)Z|ASuw%d`IAG|u0wUs+J7`H zSo`SsNN(27>u|~1B`AZni??Vr%=sA@0b%DU&-VHZqpcEHyQZA!#oG5ZWT9NU1KP9~ z)SZE~FQ!5wuyzTF%G!^nLL#ts3CSsIe;yTY6z!ZM)_yX#8fWHbQIu?~eYZqZQR3^7 zwVTe!U&wS{=jD3;T5*lzBrAw2L%vMd9RD1B5h56bMZ-&wZ9v+ zk(0G!VF7Db&84#Tk0-JA&oYplwXX>1-*fq>EP9??CE)oX)8u==l~V3Bn#et8_2D7LwWu<4nts8 zw?o|-i2c{7kO;(HLZTA;A5b9?h`og5l-U1{iZ?1QOcAmF6}K8^=4UaOY{dRkiKwE) z*CVkv9g=?=(_Oj5exF}JlZ5@z$ZUaFb19G5?*aXwai3607O_uOjAd3obxw@CyG6z7 zNkNrYL02`ZjH7G7mG_9Mz#_|X3-TTmvb-?30|J)7mj`4xIM&54_Khro*uV)c zj1kl2o5LX`dUzaagJv=oUB==9x~!T@rOTg5qRTI3AUR!T#ROgEPY&s_4%Inb{$&qz zx%eBLMw|JMiSjy}v1GUzLV_|=S2$EO8ZJbZS}ZpnHQFj8btP2J^jh$KogoXCy!bUx zcLrX3Jrxpx7fVP~UVIA`5`h;>NKSe2C#ZO%h+QnvDfXD?N4eEF;Kf3)7Ju@q;;(Wbxt@#gxC`t=-)w!fHzDirE3>+N~k+ z3+J5P-|m-S#eA`QXL!;WydnhwdDrf46ZB(|ad(?GAOx%Rk-1WMyM7Av;Iu{Vpa9}2 zd$4}xokC*PUJnPn=-)!rMo!j_g$1l#HJ8fTKbyqbmoku?wXzdPVgFM_%=Q1?0&5`nr)NL1>+jS7iC-6bTa)cr~--YD)l zMb!PZ+-jVepT$$MQTMYFQALTbN9t~RBmYdMyK<@ft%aIPdDQ(wIh15k_Y}pHPu=ye zCWv^F!rjdtDBo_4iAUXY_wO>B;@tfqc+$9g$N&QJu75Q_kPwr-YhyyN+hdT$W?}D~ zxF5>W&zIr7_kiB(1rS&HC2BjJt3+-9VfMb7RVl{2=-9vUdr~WbfiN8WDRkLmYK|@6Sv`6(znN*}LhD{DYb9%4P4D7iuo$vG-T!P?E*oQxr3`>|Ml@ z6!vcRK>2oSO#H?@dw)N(DbC(M22Tci7x1IlJO9PXnbF3CV7I#|GW> zT;wCIiXW-dQoh-uaV5_O3&9&fXuJ z9_(GaP$WBh7w4^AvUdr~WbfiN8WE2mYfT>!dD#2UjJC>P@0x<97ki)aD2zbDw8}11*n5g%rk1^nc#^{2%^t+F_uso` z@0T*0;_Uqjcrw_#fFH%)`7aiG*T#fk?>|N{JTrS=oVNBZ3m~p?wTsb$*WMov$GqrY z7qt=Z4x?;ZRvjJ>#liyiu9{0_?_W(~@9$zDIeTZt1bgRC4%xd7)j50rV-M_oOW~Kk zw6u#=nBS){c

>Sdp{LcQ~dJ){6J2@K0!jdv26Y}qpfcF3Y%Vx{ysw>%In9G z7XqdF8q}SE(LYRuL}2t15|z>ajtYsu=p`hljDF^?i1W0l$S_5W{wZ!X&dkpdqyI`G zswnaG$mmUvAykI`44A2jw8D#>E>DT*nd(QD^LwJ4jy>djs#|89+o z$KA8~Gnrj+R{v6X(pWua0|B$w&a;LcwAj5iJ_P&y1ai)q+5Pe~b}tJc?y}Lv$ieLX zLXpmfk47gZ=-!M=x4kcLxKUp!BS^e2LKkjOm9iqU>Df9lnMwHnIumNY@Gdkp(>FAox z2~v3_vIq)k4z76N+2+fmSaW0v#0Vwz|xaGX?LxI$kL*N>BmbJ$K(TEzV)R!WO~ z5zM*BT8rh#XBusllF~9=Z-N;$gyE7O*P-qV{P^WmNCbW?AyN79l~hOsek>t5<;QQP z;*AP0Q^b$|m0OJiek=rQ5t(fKxR!`2N_;)?W78Y?Lriz&^5ZWSYA)sRkJh9w^^#jfuZHC-?rN%%(V#{{uW}i{I=xsem7lc>Or3AR#7y*T#fk zx2GeErSNxjTJ+$wMQ>REvG>2Bw$r&v564N@u`0!w7yWwzwULv(V_^Y%SIwoe_wOdL z_XWQR*gGpG*gJo6$li6R&e{7@J+Sv$;VCV(3$uN~XmL3AWmUwjb8l=mM}o!bif`Wf zvfaRdXkRDk!AoTJiXxa6>6M{!oFNM3#2qlC)lhc^g1(Lli9paL zBq~8aj|z!E&?O|N1ieAU8^tiEh@ku2YMhy$MMkm_^rI6|MTxIRf^PaEenMOox!-&Ck!SX5jf=+0}^HnqoUgY`}I!O1JT zJB&@N0wOj(Qk(RT_z|$Tx$t6eq}pyz`hWfb_zeF(=!}0WbWYHf$sEGBh%O~DD z<3OACxgit3^4ON8Kk1%!-_GoZ)9x?9lSaFPm>!UBZ8pK#gGsqHD;GLG5LqULat90I zjBFosOw#K@EKYXk(ts}w5=+v?Vy4R@XCf%%x%%oeiZ;)>O5}Ezqkx8bT zeIC;Ngwa;1T9{s>d*N@fK`IySfc4CWx-*dO1E`P)q+3FwlJ4bHNCeU?Avq=8YpHmn zSmP9t?qj&sI5R(siew|*^Ab@-iLXb}ZTcd=pXshB(!Hfn!zhY$Z_Xini*%<5d`d|- z4~r>@-X?zKu`NsQWBkJx_FnNXzaB``74V;0`PeZLL0k&}I6x#`WNvhRnI*!L$HNY1`lF~Pq1 zlSB5cBm+>Lv+vo{f_;y4arhM6&QL_MIZ|DP`Y0 zN~ExF6TkA`3vK$n4*NOtM(Y{WhbmGAOsw!t|ot zw;7^P4m^%s5IE1rq3#Tn`wl830_B#FsFeGDDkK8smXMrM?w?cfMmhQ^qTD~`R^!b4 zEFzMPa(^TdRh0O8q}--2@;}UUR}|&m_4iOYW$qZ&vsl9@igND+sA(i66uw2dQv^P> zl$%9~6v}PlS03B4^zGbJ?v>1bIORSTo(#&(z(-MTcyCc|&B_HOeKT@d6w0mVkgP@v z-cjq^ssv&mr??mwm~`J5j$_fo6Hyy9d$ve778j6i)m$p+{$&#BKA(Z)q?;8Jq?b!Q;mH&P)HNVkMUCEf3#LL!iE3CStx{uC82iCgW~h5hIqAYHdpZEdb~CcFKx zC0%c9UbeO|F_}A$_Y>S|oSC0RMY56Z*Ce8f5?{#s67ME4eUX0|(_K-d`zM7OMp2~u zM>&LVk?s_MPbulCx?_swtmB+R$eMk3{`}@p(_&WDb;mM%f415&jhW8fb)~sAm z(zVDkDU@4Z=U$V#&aFxy_VH`fdOG`v%#FvS`#4sm7{{WAkDxYkl5Q+6Al<6DRMP$X zB+@%g6G zY@gjlaMEmk`h&s^4uERqY})9gzlgn1?LT@mZhw}h%ar>Ncu}Ohqm8zd_m3k?QPd=s z*;xUc1IWFKdL)3R`MZ!jS@GL6DMQ-j$8YW80BL(E5!~#7(xDZ>=ev*K=Q9K15quLo zX%Rg17C{Wxt|1Ft(WF$zov>H{K}R!mF%)(~=1Ga-!NM79slu{E7sY%RTQ7iyMgz6& zB!(|!Rq8Q(3u=RA(^7O{f+!Xih*LF}8pHpX6vJQ3K=Oq%R!qcj{^T%*_W(7CBZWe^ z4X#g#j7HXA5YD;MojEo!>EDnffHx`uuwp_0{KL!Fnu*N4tX zDCiEhaR^N-j?6+^ULgLo(j2R`s-0$Qm3Ij~Bf1QD&FS(-&S(;T55jZBf67>toNrVb zloScH*00Dv{5u-EnhIk=XT|SlA$}hGC*~~d{%~^B_uxNrXg>*Pg&%yU(N-xM<135S zeRhFPb!NDoe2L`qNdvPo@mTrn%jC0P@A8??%HP3mN;2i+{|9SaQ6`hJ9o&;yDPyQW zJK7~v-QB}K*Q_uoUh&Pfx4A+2polQ9@HLX#Jw&-tK7#&bs5`?F>Vs5Bge6o7iMoXP z2o(}x2~|Qe)i^Ig*(rn@{Rz_Y->LZX5$}BrN2hlsiH|RWfT!I~woZDc@Mf|nxJAVb zX}W2~MCr)bZ;|>#lt1`VBC04+hLt5|G^98hb8hyu9->la6ME+3IE<$`*hnGvK6fk3 zgbsv$(5P>yENPFAz?`_JNKpE8&i@pcV#);0G%BS?YcwoyG=YPA68Xg%44jy~oyCla z{qyok|7y5%qdQkJF!SCzEwT!Uzk}7G)_*8-v=i5kjg3rr)rKbmWWCu~;%yx7cyJNo zc&p}hhHDT6BC&}4?GvO zK^qLR>Tn8#6$0}>)m-X4@GnWzpfLuL&jVR8F%9BR?xsNqs`IJP9_dpdHS`FX4bMHN z-sqeS7uQtU&GFV?4dyCg&fpSnF(eYU&3B8pY_ndgWyFequQ5+KdHw34T6=JyUEe&g zr8cpx*&15qtv;wzyQs6uJA~gHddQkJOT4gDd#uWks4^b>4te^5wO9Q6jRxk(+edX) zFW;fT@OosZ>60G+A!w)?8F{4L-lrxxmqXp)KB!FaO;kt(CMY0TZkV#Jdynehs|}#t zfr6&pfjx?eH=oA2ocMmg=!Y6JF)T38#MhLW|9;lEn%J4M)45^SbxRIkBV+zga!0by zP*XZ$&QRCnb0y(GH|MVNf{Ix_vvLRKRA)O;Dkvb&6U&!KhF>SjkTNCsD%71}w)#UV zB*JV}LZbSpUsE9we3XP_s&JO3;FKu_FN(DK4=UcMDOK#$B6Gq|>TL9H++t$<5Z&~0 zIsR}qdKX9Kn?tc*G6PLf6@MjgZ+)$4#$r4O;onG82mMiJ-#rB66QF^_fV_g;xW`x3 z_J_J*{F#k59m8o-@(}+;#XC(r#D4;ACmuow z)v1TbR$1agcFKID{B_dL07*(&Cp9sviKiu>-5sx!GH_y@^a*C(?4NR-lt0U*44K8E zO;H7px|IEOFDs-K|9IH_)#=}J)_PlOtv0NTdd*ENYmcvkdQEt_X{5Q$tF>CqR@-Zi zciQ!#nwPLLnyV({x1V$|!qI|gX)7T@AAdz10ETNyeW$e}om#6=?bNr{+6JjKenXPk z@lU#m9RVz<+qrOk^?_oj%rK_Hwwl)H|nL^M*T}vG%Iv%g5jx z^Ri}Z^YXD))2|J7mT#(GR2u@5THfC;|KtexlX3WyYO7V9@R}{J-D!;vc0BQ|qPEv* zdeyjKIk@eje^gdLc06ibPxx}bSy*V-NLglgMz zKDTx$)CRy)JX8JqJo942a}IoZN%uf!uUWIk zTN*4=SB^YlQUBR3*s9rB9o*toMw_7YR&B5bfqt+$GUCBE;W~>}^)Fktte@>Loy5ZZ zDzDM>+T(-6oCYwtVX+m{gs?Qx%Pkq}f#7v>sQsO8ML{+gic^7gN+=m1z(9*EXt<_mj zI;cyGIQ|BSeCIzC7num#CjC%13^(ew$-Y!bgl!WEiRu9sQy~#NfP`c!Z|68Ir+lQG z{TcSCtEu247m?U4hC|KKYP~TzJk;Hu-D${L@~!lXdGMZHamaxrod#fw-`Z&aeeF9u z5pZ;j4Xww9J!3uY^BL4W6KqIAO4dV6lGyoFTqIpsC#3f@4r&BWBk}IZTzXONNI0As z8?atl)c%w85*JFzek-n`D2-S#IZW5tP8hJ6uH!m$?i#9K3G(QQE>QjW+o+HTx|Wcr ze*FDZNCZDFA(?(W*Y@}ARJ>8f={|F=ClB!{ZZ$E?jgmbl1Y7KIbdo*yFjZTG{Fonb zXLPDZ? zi4iI!f|rO`uId5Uf)#k*%`CEV`5>Df2k^UTF)xDF-!Trl{{J z)L=@SqTZ5dJyB+EP2<9o;3>K(J;SlPOE8yLYp^N#j%E+k;;LoIdpXK?609!vGCO8n&#A4{iapFPqjh6ga=aFwdw~P$@&I4&dqpybCp-v^ z8`0A7Ecv0kpk`bacSFzcI{)WPEc_5OD<%#>^CuUFpxJJg2GjWl+P>)ue8()pwaO{7o!8G%KnLUM~r3Bzjde$nps;B919Dw0#$RV zSDDO7isHizB#+{(n26&1$z2pjP@PBe{dD8(6Q43F2=t1giXh3a7>H2+7vv2np?=O%_R)#J|B2K(`3?<+vs?@Y9MYd)p!JY` z25N(5xmHNWB7u;unoAAoJ0*p5pMm5dofQ)yoj*AY={i*BA^qU#5z?zeL)k+5aau^{ zmBf9bHEk2qUV(>TFJT$MUc5yE;#J64(>ZRQVE+oEtulhWrk}`Qzrg-5uJR&gN@~9> zi*AWB(;4URLaGj)O(NeR!N186hH~R^vu;8%$t2Vb-jkY4@-8YQLNbYjL`^377!?vB znM6V|6__iTvPi)G~nC6oNFP=m2{(26_n@T(kplB_38CP~rF)UtFDQc_sD*#qU?tzq#D z_bh#nzXdG)>F{K*bOAq#rSo4bmaYv8!O~xbOqRmZgDo}2)eq&L8Zf>m5LEz0&1bTn z5!NOmC$pHpPlUr>^zR_lMo#{Yg$4XwHJ8fYcTM8&$1sqbzq4Y3zw;-D{9T9YoWED5 z2Y+vmZ_Ll%c_mKyyM$%%ckvbth_jKg7R%qyFxo1EziaxLUi^KFAq?f<9T2F^P<;O`O=mA_v>g+$=*5|UH?eghS66ak$g{(c>|8fWHb5tVHGeJ~MKl=yn&@1{5M zH!|Io&EG#?sKJ!T-~TIzo-F>JqMNDZ?;@n6@OQHZ%Dr2|;t==z{g=$B_$vGF;mP3d z0)7;K=f7C|T^kmH-=2m{HY+gR;ZRF(dSXjW{ zRdcEQefK2(zRTYO{?3XC{?4Bq@^>AobN+tl^x*HK<0JX`JFmnkf0wWf{x0640dWYk z1Hyzh&-(j8Mq6d@cTGRji@&cigrOX~0|K=Q>dwI5UqFRK;O`O=mA}7~3W>nqB_yZ( zeT0fPihxcLe;?*n=I_@RYA_}8_c!Lylf~at zbThU5U4)br{%-a_xp!+=EOyV|Kh2Da^Y<^nlfmBw{3!m;f3f(xHY@~x_mIhE_z{aKYdf4>X0k(0k;VF7Ao zbN;@p2mZdL_`|92#S8c<#@1{c{zNT@MpfjF$IlxWP_^QO4)hBeAb&;1n?6AD@cBO( zZFS4n*Yx7_yFLknk}#Q~T(Y$j)SZFT?@xt9;Pes_mD4Y!LLzW_3CSs^KbDF&ij+8@-}UoX^PO62sl9D1@ieTr_%=k&Wp zMenr3>SizEdHquNy#8utSe)1YD?I7E9ub0o+wT$8L5tsOLqzcVKcKLlmESK<T>34YI?9P)b|s&jsS z`2PTYf08zU;Il)`7N04&BltTG420EUhL3+jW8|yIev75}cNuN{uc!DwF$ALgzXOi- zBd9wA#ea+ni9qosBr3)4dkVZ4Wg`6hI z&x5||q#4K9fHm(KS%pQLHM0}6`Af(RQ)u(T;GPIbOJ5$);^0C=et;{o1R@1B7Y2!m z^B2Q`C3?6KwGr=gqO3+%9p2W6#RbG!HJ3`94@e@;7c-EYIJ07cIP)im#94>xoH!rZ z192|lt|#~ibhbrt{a`7t#2sITgQXIdnb^X?q5<(Q$XJVI$yXa~m6F&J>SuZ_g1^@g zhD(P0E~q;LL;fTc5`iI0NK}UWB`PEWLza-7GUV@2@kRxKDPqX?ajS{rq6CI41Z(k_ zY>VLUNJJGSz8)E}>5crGnC{AE$TR;zoB~GmIM!fFWXMnD(38cGQ*=}QBDj9jn~1F` zi7jRilzX>^#j~8#d%wbriZ6g422VPdSJWV&@%l|~f`%+IZhF&(h2XbcHcr&41%<)u z=SB}sTlfwNAi8q2i{XO#`&Hqv7yUa5wULv*V_^Y*SIwpJ_k)x8`{@iM=kKhT;P3p& zA%EAQI_K{zd*JV7+`6vaJOUaad?0zPHUVylGuiefCGeH;UOr@Oer%Rqsw{!&6h3^7 z2E`_1u*GutjYeCgT+XiPXnK+OR~XVzUfuzVnt-}9koc>pkO(ARLZXuR8>o;7Bwj*t zO5)!~#Y^I3)>V8?Z-;p|w;E^WXR(!RBz`;*Rh0O8B=M#@@;gj-Ws~^(3pJP$N&MGy z=*c4SDY_}2#G`L6h?tVX;>|87|89+o74BL5-0u*^kmCn^0XqpebSyr!e+#pBN~q@n!010wYTs5=9XKc5PTz~dz(DvuwbLL%^Z3CSss zzl4f6iipOptrpAUU&gJ*nfY0KB^!@_ZX&8E@%6~#O?Tv8tUK#|!+CJf8n#Wz=XRL-6<` zkkw}9@%(D`BpxpdAj$>4C=|&Z^XT`~#?soID;23wXS0E|teGP2%x?WFR?@ zXT=1M=T8oKybjelk3VLb@ObSek{moPH>L6T>t^=N z=wtuu&S}*))rTg#XklIimlQ&8_C+~*Yk;hFPv~!A=EVv9zr&MB=mq{rLeGD)2)#B$ z1fidU%r`TkU!1luFAE^<@)6W_I(O-T(9dR7>V*D-sEwS29t#Tyy=pF%&>x;e=P~^qrWeWolOYl1`yH^X$Dr;EB!Biya2A9apHCq95)zfk(vog$L&0rvPXM#!8Og0(nIHj@7vZp(3lB1(Kcl6=!8`M+i(vTTyS zu26$1k>o!w(Rz~gWRd(7-IPZ16}Q)qnriVhh2NXqP(I!o8^^lm_Z?1cJ|N!T4!wZr->Xm? z@eVS|#AVgtL0Bv-y}4ALe^e6Be=`Hgc|I#9cs_q}$n%wC82P>C%D%ouubOL?)9-FyYjj%mT6+@8o$x<_=bx-6(}$P6xFh;I0nrcZ z#Z2G$4ULnJA{#E2>VME^>;I_!U4}$d7>Hvv1g`Z(s5=AI|27p8f$B?0RI2||DkK8c zmyn!N{XbLjMg@o|qWXW}R^!b4EIO0m^+R?pgJbyh)z2oPiV|N~S>o4MO_${VH`86& zRR4fk&?sek9o6GlgDH{f?*|>B@t{yo7S&JIjb&NKJ15Fr{pLgzT{(GP3!T-;vk_(k z_Pke2=r{A%HOmw9@_opSQ0Q}TPYh2_UmnGuBTFD+@H`hbi3#+3!?7iLcnWHRW;hms z#^M43t(r?E(9cdH&{YPK6KGaU5NQ77kU;BDofGJjdmzwdoJ5s(w$K;J(MeQsh}&)E zi?~C@%6zeJleq{PY_V*)W3*LH=F4=wPUdPu8ZMdgRZw>ZrujWy+tS;w2HEVl&up<5uHRIBg+Z7C=0HKi0Rrb4$$Q$HI{>`nL~iBPWl? z!U7(znoH&J$0YIiBN<4}<5@AmVkFs^`b!g0MTxIR zrfxbT|0PU!u}poo?r{B&#qHjHZWbgoi?YbgeyUKzuo$^O(47aF)$Os`V0}}4aPrFT z4r3FmfQyZf)F%BW{>ZKbgcpM&)pmQ*|IFiX&y;^3!1r&3&I!iyi5$YW=y!_1%ctM- zjZmBRH6ybF%4J)o{#^Iu`$x=xIQjksJn7^+2(sLrYP3#JG4Zq)KqZ&pWU>MZ~m)SJIVhW~V?Z^E22PyYBmMq6c2 z?@$lZi+Uer$U^yX2i)gys5=AoK7k5}K)od-D)oLL6%v7ZOGr+s_aGH-6nC5=>OH`% z#+mt9d?Xw7UYdw1N_;(1Z_^q1OPKD8qTX*P)G&&o-dE-jzD2!L1U|LYn}>;%b#Jo+ z%4J)o{(Se;`&MQ^oO=H!JQ>uRqmQEA><26PTQhV)O!q{_nU#7UkV?H(3B*7?k6L#^ zz4u^M>eTzcQ5!j_Hx?IAZ`E8X^*$+ydVi0Bk?(!9$+)Pc!f#ElH#+gl+_3Kyw5YS~@HMjb-y=&*xAr`I``1QWWu&D9qELbK zz^l+1gYHc5NAzO`VNjQGvnlM|6 zTqcO+cUBnZ0CF#&^#f>{%d@2Y2new!X_p_x^_3=Rd?|6<92W6$e4YC^ek8LX9>-V1 zlOD%IhY>__eg8UeN5&UXG+P(?c?69HN-PiduUShKwwAWYSVfB}fJVoOE=GqO-|`^W zFT=4c`nMLfK{IPvb$E~q3kxE-YA!XBpPCfO*E5hjlCxqWlJh5rk-P_}k>1A=!lkh2 z9_iC8S}SI7mF~>3iAn#-SNHYRB3l?<=MO6Zuwp_0{KL!IOC^At#cZ4rcGm5 zlaVqae57Ts7u4IGvnR%Cm3pVvs%{*q9aCAf#9OYyVa31q^*C0Yyngjitvxu zk?+vRel;3(n(*V63m$@os*%eA3PR7ixSApt4I{v&&3Ma+9t z|6XPQ?G6-__z~FGWJrFVGW0!vur@L_u?+s(0YhvX4&M3|*}yxEey9N$V*?expK-K# z@SkWuVae>tSef~^u*MaqGc!%*hF#Y!Ied*eax1wb`?8Mg*Lz3iv+{S$g8!JxH#%aH zrEP{ik3!{KWrm%E5^@hK-9p>7!DE3e1hm~jk7 z2LDEozDypeW1PxRWbr{Vr!N@i#%{NdKMGjt0Kf8auzu^h{&Z+jOL zrFpfB#zv}*YNy_8Om>%^(QMb*V|8R{voSK^ja6IK(HaC(uU%u$oo36coN>|_-cc(L zQ~S*y1>8c8Px7wEd8_W;W4L;_V^~%S2irk|(N0W;v(T*mn$${fvBT6>Hq|Glh^P3a z(x-9$$3bi<^EMN+3P6^8Ug&7v1{Wf9nZID*#H8&gX4mYWmrwdv2R}(0xD&z`%ptT; zCG2h+`)jpmkT4~y_{YQb6}p>0aUIzH)|z+5L}$3!@am&uBehYuaG~uDHb=oa>uq@3 z90NMZ#zouPSnF)7)f(OiP))D7(XS15%pmWkO5_k%xftwHh+^JX8b=ZuT8TOU8Z!0p zoRh(|oN&?$mU!E0-dL-)6?7nkZ0VudYI~bn%~227`j&cQv%#@))r6#eDgxaDCy&}J zLsIvj%c|roYgUhfx%fp)9?h-wp_*51c&k`)SFJO=>H?AbdjY&0LT}lQ#06ewxZ3I8 z+=98vrtuN*ZCskm36m=1U{yj$?j|pgfB?4$Xp++cOavW z{l2Z*YD`|~-_Nr4xR3l6d*Xic+pH@=eweg3mfZ)gGPJij0zA_a3_ngO=5X6_qD5|W zv08jB(~hAmbheNn1<}3WuLnt9iqn&RBcZ^5vWBo#F9~%OD&q-`s3&9;q#dN%m5f z_qx2^Zjaa6%MU+dWnhBRVa;Y0U<3a^oQ?TIa21nI4VGqVSqv@W-y+d}JPsk*SjSuS zN&i2Xp^KE?LFl1y1566z8(rvfZjW(n!&a`(nq`A2c5yx8#p=-2O1zJ`0+7Nz5 zY8_x(8*9VWt+lpSZ@}vz;92#?V8`25oe)vK3h}A2G%U`Tmi6g|)F(#(ib07O}6~?zBReU@dBeEgHc|0zry? zl&I)D`^rBz+A3T4k(r$Ox=rub*I8?j;l8rjOaCvd+iDHc+E><;X>!W&Vm;1mX0f73 zdvoW~s6{jb*a3*xP;<0eZ%hskg#q8U_mvrdqJG02&=@T#ODJ#C{x(WzoOqpf+e`EvpXqm9em3 zqNAEi-B*4gY#2w+^k7@{90ro_E3;x^Ta`b#*j8mB)qv`JYxTuFMDn7}<7!4f(#aOb zR~mK19nQD}rps*UXI=BmT4x+)#%crB4Dv897GU%cAG}0^U<4UxFSF0=yH>+STZJ9e zFyyK2T$(#$3+!v80;&4OW=6MPmR;L`JOv@xif`_X&EbWD-{q2nc!%VEnIQ}1)#K(n zgk7;qp>A-c#~Pb^Gge_(@NWd^S}G*MK@ACsx*Pv*R7ix~cnQf=;4DqOX@rXvMI!tN z6>rqyslHT(2v_Da(mnC64{)n-W`2}uwngB=t*VzNqKXntq{KxEo z^5)hkc#(UKK4XV~qwfGuI!6y8e!$T6$p_;H7C+aF8a4KY9l8<$HD^AtC~yY=jSBx^9lpW`8g{l_&I-a$j^1C z&iVQJX~NIhCIffzpbtWdCF1Ao=#xzv`FW1G5D|HY(Fg})@^khQ4T58lffmcppJTLD z3O`pmiCli0GJbxpAq(Zv9T225q3#U)e25B(z|SQlDnD;gArbhwgyfW;zlMr8ieOF= zKYt~+8fWHbF_VNX&5%;da2oRSb&05=#1~eU$j?n@=I1Per0{dI1In9Qqu{0P`T2d!miQX_gYabXbA~>WpTiFpKi9^9;IBs`JEib* z{qmyKsb{QJ2}DkQf?7`}Cp|Fqm8?oJ%0&+!LT%(^=vZ99&{cD(4E-fZ4E=8mBxmTX zm|*Dq$st46p*m;i=T8rYzS+SFI;+D8Llq4Nlm!qCkQC~t0! zf(`B&`n#DeafbdOcrq9|M<2z|*$);&*T#V0uk(_v zepaQ<&p(FR$jQ&Kuz;Vd=2H3jh9rJ|4+F{hIV&dkIe&7<&vmHI`FVAk@N>0Vn|%d+ zGn?4DSV3nM;fw~@@8U1fAowXV(DXr&ho3)Wv{ec}S2~$q{QU2RER;ugK#-n*x-;naB_yZ(d@&Vo6v3P#e*R3r9v`3x306X|7Bk7l&mZTu z95*PU#MdJ~H=U9H2R0(h;^$|VYbfsd`5B4UlB^etpQq?ziupN9p<28aREbD&80H*Y7#@giGkz{ofQ)doj*Bb=sHyA41H*N zF!apd=F&3W%J??dCy`MW%gR4yv{eQx5A`s;Soyt%ER-LQBOnA?bT`zUft7!s3W>nV zB_t{y)*D&8nxKSiwkFWhRJnV-c+va#|z5>Z8ouSZsHIwSu}On0%Y zJmNBI zSK!H@-W+`t^=3a%z~xhI_JNDhRo*4W#|DmXHb>58H@seK|1<&jp2z%lVsjj>fsOldTwHw|^Yf_< z{>6=m76Z@`Kb=+`lhv(jHlom;)oH=)E-_7>T_3HrJJr#k4pR!jC&t7<)EE&3*)sO* zVQwJgpoqA+Bz%p=?*?YJgz=jvrRF6@TgBfB7m7kr1LNA57e52+^Z%?d-5QlOnRn^D zMo3Q^yT@x|6^+dk@mLJUo;KF3v4zHxId+1v5}>nh@tMuw1wV_SAYP$i&@oI?c{&G- zdJO8$Frj-j6%t`WCm~TMbk|TJ5hipJk~yKfWV+bZ$KXP0?RH(`!p6A)Onl`39aMou zO^JG6v)?l=SmeGV=54};sRr{2YX1oaBOzH=V_l2~`;3dRO1?maL>N{XrSuIdB)XK6 zt#=3Iv9YXvL7^rpf~!L6rbqH&hEgjtZ%G54?^Fi7usN3*J$u#@L3>qhiZv z!%s79SmW$d=7-0qGN9{+YQ>jOAr)`MT`DBHl#;D@dpV=S27DtGRz3sX!!Y0g(^Prj z4^q2N*9z5kKTU;HyzPFO3W+YIWZMnzLq`h(-=X5lXT0VNE?5|uGSB-fYX9kap<3@> zsgR1d-nsLMq?|6LWb55tE}LP`y9X6kKI1h#Z-8m4Jnv#^_vu=p+V0U*NX6Uk$y7*m zDJ9$PY_^Gl4fkv+CX(S=nHU1WRGH~8wX<{uP|b8J6;knL`Wh-Ex|EX5v_IU4z{dJU zDl(F>TG=7yB7+8Nsx0_jR0+^^L$%@+wLKi(i4~FMH!y&U$Sgng8imF;Flm>R<#(mgR`FSWs?TB2xcBuqXowlU`qUdW zkLB$~pOk6ErH2uS;ai~YsPwR7j69ZOFk$~76%v6MN=Q^GeVPi1E+zhT+=vAuhB(r| zV_a0^_2nU7kuLBaup;4SO{4bT%o+?hiq*)7^GFiu9C%>)9w0%1MGXfTSo{Z|gzS+# zzpJ4a{kt5=ub?=B8|gWYT$mI`9%aCJ9AU*o9N|y@3~^+vm^iYhA`$}w%~pN$z{YC3 z)=r8hJ4Y83F~$55MV1-6#tgg|&zL8F{7Gb_@JaW^@^jj?R(pASq}k~#-(2quk8fN) z(j2UgEQj@lrDGGF;bvobyEVxEIX1!m+kxW+?PX&VtA?6`ZJwp?H8*+2YDBF3f&uRv z@#Vz_LKb-i>So_`Wq-Y1KA+R5Hyi6uZnm~nTSI5oHdPJ@i2fmqmU!rWknCpu5GD~> zzi6o$=5KP>+k74L%zQ7mYS?SG8qZEHV0hswqxq+3>Bjsqm=qtfXv2mji-L$&@u{I@ zH=>#OgwV1J)SV#!A4r8n2*45&RZ53ZA~G^vqVqli11t(+OuQ zte9Xc{OO;8t+b10D`VAGb+p!jn4ZE`q6#Xuf__AUaGc4%q|L{iZi&8p5x3! zQk?lF1J2_ND<O3nZI?tb6bpE3^&g|24 zVBTF5bG&)t*PuO6zk2M5})RqgA1VslDP|FMo1haLLd>4C<8blFg#|+u6uq# zt204bsR}y&Q--?d8|yh(@z$@%1ok7!yW;m>1zu(z{HGRa2$sm6R3>4H%-@$a9>h|A z7pPM^a@c*kuZtTmtv0v}qn9s`JF$?~a(hcLrh3?DPiTtVYLCO%! zOAL;em;!&uotgB1%I^t(r+za0TTr)s1;HF%dGNdRKH?qH*;=B`d_pS7F;I6DvtET^ z%~*xmRNl3|> zm<2-{L%Nm2&ajP{I1@mVUQX>JsX zH_KtU0UO2r)b18<6hEdyq8kM@Pxtp!NX1L(A5=(mDJA>UxdC&+2DQ^d;*2KW_z6BI zrN9*8SyN)$0n|Rz%_CVCb2xd$idaqsl}`~n%IGGLOobLspmx}`7Ho#`LMo(uI+$vP zQKNR3t^q2;Xj37%c9XVIyow5Gnj1w5!?=#xUAj?N;XDP>&Ba5a+UZBAkmz=5Nh#$n zwf~|*qAQLnrLR&U^)99B`uZTt3;yT#G;xT?Qhk65F5kFLKi1siL^5uLn7;l*Rp%e6 z66;-^zFh2Cc|BfbopFpYNj4I%XYEF$uO~nQiF*VqpnzC8$+#r8D-{x5O6M3-LJ9R^ z;uvA@`%{5cV`bG{*d8AnYqmNA?a^whbK!UsE`*-EQY=0VzgL%EoViAgCTn#*Jn;5x zm_KDbNR@ctEoHsD^g~ttQs`;QDJm1Q%KET`J??17A8uIfvVp7M~ynNEX zI`~PhKFY*)Z39JE#Bb5ARKga1#XtUa*b$t#uG*<@t$AngG-9thGSb}E_D02Otv5b4 zR0Rw4s*NG|zX^|>#;L+JTv6ch9qQ zZ`fnzYHBa*uQxhNym9{Djd1(?60h0vWL`LwYWD~FtN2G4&7a_)`Ji^;K%LZxjAIxH zw}<`g1midy`VXH=xPVp3w4)YR!!FRH;vY;LU& zf$M8{t6*~o(m01#T`(}fz8`o2_mcWs_Gyy~yv}g7)4#a|sT`ZeM@A;R`sPNnB|Ye9 z9pZdvaG2E#ZgsTnZGxfM8LoL-t0UvJ_7V?{d5plm8GASCHJTj{@>8lK%HvkVpxPNj z!z*An#Mz6vXV=|TN6-7D?DY40qPXGT%qrDC-8NT9!OYZqXI$ekwpH;z4_j>fY;AY@ zv5BQj!jsWC2hu=(2groc-b6MD%m?(HME^rjS$F$ZZ4(Q1lik@I2w%^uT{JdQAFOvK zujIeOp_j(wmHz!~XOIW)Z?PvH(7(;PvYimjq=d_M5Rr%3PJm}x0uRHp9p-RTa-v0U zgRxq?gK5XmqWmBaayfUga-@{v>{|RH7etJCL?)jkXz`m+nJXKP9|t5)-dJDsuis^#*88XWH*UB0>5+&ofaC(@R-$7+Mi>+Lo;wdIE& zu`;ko>Az;P3b4KZHqPYyAvoNxXACXP)Up_9#J@$N|8pEdvh9wy>XZIonBDvLv0S4; z=%MfmObX*0UFdQLQDLesFId~~>Z9P{fJ}}wH`gHmd250GkJhRUMl{Bk;caR)N8w$g*;pDDmvaggx`YCXZw~2f$K7d;EYjad zEm^~5UW|yZ0hg~CY{(jWzpkRYJ@Efl9To#%O?SdhpT%m`I4~i7b`o-Q&W2#OY+#_? zsCVGAY%*Ug$c>dbJSsJoCy50=!arQ*(RxeQ@PyjXQJ9H>KsW@{$D;~kNJov7|K#>K5<^0upWFY)D4`@+Hpw9M|>d_5@E+d zLZU8F4^SZy7GEW#X^@Y2A+?uL6JdQ8F+3EKPd`^aBAZ!g`G|aeq0J~n9R3$7qT|iEbEH&`jB;{{t0L@lu+x2XV4Nmr}A{jmb@%PsNpQ43TmZb9va5 zICl`W-*gj6)<;x+;^9R4Ls{ zg+!N9a?p*)*!n&dQ@$aco}x&IwQ+j^^kpfkCjU&88bOnC4TzeiIA>2H!zQFDW?U&- zNQFd~Qnob31E|1qrYQ>f#hGi=h)PIPd=AX+3Q1Em*XsRMY#ym@Cou2j#~Gny$8#K2 z2T@|`eSy)D<5>-;vkG6XQ9g2Wu%nqG@Y3@_yStd%UXwVVK=z=+axwW$5M~e5j)7(C z7dgrj71<;_QFIftAbtf@1D?X$GP>cuS8&z-0<&X~nTI@nX=KI!x>c4>Rn^C*g75^^$OLyt zx-_!}m0^hecU}}J?^Z*g%3sFqu#$qF_31bcAnD+3Ph|T;0NPp1OOf`J#ymOPQevLj z1EoXDXTRKi%=<1gARhA`f+rmFB>ae&Cw{SFo@VGG=3R}jJry_~ z5?-VTIbJ-nYdK%>5q{plfT|`aB|-%H1&xP2nHiK6=NB4nbxT)IWT@Z8l(>?ed7ax_ zUJ`T?l&~*ln*~LJUuAe^Z;;HF8FEmrJra2`=ue$dbQ~SUUBD615p-N<)NveTRG1mZWkmnyE^oQ_zWZK% z-%{Q2kDrg>b=9kTzxSMT&vwtfS3=SYp!iaRU!9+vYA{zVUWDR>oGzo3snF%DE4kDZ zCVm#P6kFPBxXj^B*=Ho8iX&gxSmI7uT@iUFFy2{x@g*_ZH_az!NX4_ze{dFVlR zsUG_6Ngnz)7)b7+v)6=&&YueO(4$Zb_t0Kl64gC)lvH!UulIdcfXS>9|X?=Bi$%R-S{6LesK2bg03-6Qf zCi>wE_)9?>Vw0!%Odg748HhM6cXTzOGv0Mel!XR@WmyhLVfYo zDBd_{vinuPLVfWQ3A^1Q0imEEtl^L(8~_ly&(doPeevIMS++$8apVgdOZ3HcUF7|i zDJQEhzE@P=ra0l^U1hpoRjObZnQ?(2cWV6dM3G1)zTtnT5WM&P_kOCOO>@0<{C3y- zrs7@imooX`uJ3QN+BEq9)VgKMLou7-2{0!>;1uF}r#h;_O}|Iu}BnxOncMeIMN zh-A4=_s6xqdf;@2T$o)>_aho90u^raF95ISYt(iIr~5}JB*5vGkWi=laTF5ZbW2Eu zI^FZ028L2`ihhQi?mu#=DNOtda=O2gh$@bJT{_*mF7p0?$y!-X_sUWQqb#SppHO2? zN=SUe=}sZ|j5^)iN~Bby==cMTZAkjdi+8#&WAekD?ibRN>U4APF-|x8+{kiAq+Gb9 zf2*k2tWNi_sZMwBhT?tfC}LiyPWMN{c`Qaar1XKwv*C2B64j=aeaB9LRKUwLFxTBTH8eN$g zSq9ba;AF+8H)^*do=u5yR@}m_`qaOgq9blC-<{i-q;nZA+w#qY zbXb<-<7L?+tJbPQB|r{&jMs^e~}T^Z+fJTXJPoQ@@BKlL-wX0$S&GcFpc@J|#? zai=ni%Z*byT3?->32tnVax$;EiHKe|0vS?UUpy$Ngy%gPkpg>IfD8FfYCA&&^HCHM z5Wz@DXaw_l6cP}@NJxc7Fpr{m<6Q6=ieSFZrKT|PGyJ-2%LZ@bsEj4Nrv)~J7V&(| zEADd+r>@T0Me;}f8=|}}_*7Atze70*WEg%e#)OvGEjkhmkAe9qA))j05EK$HKP4oc ziG3l%eLkk$WNMb$Ek|+BqIr58VJGd5vg!v` zmxab`eRokz`GmEg9jJlSVRN*iS~NHQ5iKQW_^nR)60}OdqDFK_o8|FXirP@8lO~AQ_yB@1f%d z)Q5zGIu$=hApuTBMk@Ulg@jWnS$g+A+s~J&;=AxDFrvsOzK84L8=%Tv;FOUwPeTcS za|V^)eiTyq@_Q-@38zxB{Pu-8T~&b3MUmwb;3G5vj=-8J3BD4g0L~j!f=5wEE2mW=eVwJQ@rEaK50@>!6Uzm)=1X5>BOL>0Km?3{>HL778n$@ame^$23#2dnr16 zoGYm8UX4O3Uv_IKB%DggvKy1#y&lB`39fO}ML|m%8IufufesdD04k<$Mj@3irtd=` z;Z#Z%)4s4wOVzS}ha!W7)kyN{NrnilnNqZ0K`DUq29@CNppeR!;D1LU;Z#bN;C+=^ zLREy~OG!@xQ$#LH?v(DK)9EDWA96tkvRJ0r~4p!%slB|B}li4=pUZN=8X2UV~Jab8*cu8g>kmbI!YPCBL71 zIlI*P(y8_seLm_|=s;6f+pqoX?i>5j%ib8*oHFygB4(bt&*ZkSa6wRRr_x8xeI_a! zXrD>YUFtrQyOZ{r+{8fgeJ1QRvCo7*6}ZnN3bpWkCa>;dpUHU1`%LJ7f$GQ*Rpk%0 z`Mw5LzJhJ?UgOV6wJBrkNz7L7hqZ&ypR@H@BW`PWs8!v`Ank56N7g&fIE82v<9>@6H?6gpXisK@23i> zDhK+PiadN;8&hB%Ek*iyPW000=iSFT4=T&_)9rhH6Nw3Gxb>!{*r-K0*G^Kf{xi5Ak>)W8WP_K>{1Bc`@rtdc&{rh z#?!|USTRH5UsZgJx0%TikMXwBQzXXI4X+>W9UebOBl3%wN8w=IrKnyc^1J*6%pqps zokJd|!<^#QpmS+$l0rdpKd*J!wLH#fqv^C8yWDz<#e#H{sMBgpHiunj_n2FETyiod z>E-%PXZv<{aCG~2-_Ph54(G+icA_R1hi$Xfd*U$VGOErZ4V^sUo)D`o?y|LL)3yo7)`!M@87aJr`Fa)~MIbH|v5+X#J9;3r*eA08ikST2$4c$EGladL zMHtbvbXCcF=!2AXsKOis? zl95eH*$ltH0aGEsw8}`OgHT8~m6D~`wr}lN6j(m-EpgvkM$Vjq5&-86D!=ETkjj_e z=cABtDkaOWb>G?$iY%W1>m_BO^OJw)a7GDkp%lP*gG%sCD5UZw_zn~jPNifCPT05h z78F}P87_CALj}xyHhBn@@4mxC?uRp$+8=>Z|!ar z6C}7sy-Gp*)-pN>??nfTGXNFSkD-vt7t=4IkZ>v`i>Y!Dh(6rFqDnvhLqongGcO`qtiK`){DO~_ z(x$I6V()z$(Rm;GC&ECBD$i5k_hqfG(hK~8A&2%t-+3s4`=CAyEn)egHl#qXEadY5 zZ|D2ec3frH2A}tWv2!=5rs`KHB)}(>kWeZ;i9*7u^f}UD@=$w4z8T_J`L-yi*!pwB z1co~vb(!|Q$2#=g6Qh$m3%4S1s)5^-Bac&UN-!CuP4SMR7o4ghWwu-8?utdCTs|MP1q3rv?th*>2hpHuybf=sL`a2);lUKx0Pf` z_KSZ}s2%-FW!9a|$loKYa;DZ->3fcKs`!)L(`?I?r_P%*r=KQ&;7I6^)JHOA>*6Kh6epRx!A3L>@OqgpG%*U zeaxz@x6qa-6<(NJ)PJf}V(VY}vGDSNZFH1|pwCk@5f@AnO}4EZ@GX2le8JS^+H5G& zA$dNvoxvd)Mj-(XiG+kYB-fyj0Ea|EVh+hu8bIzGc}fFtHQ%jPWEw!Rr%a||?Wx5@ zLcLhshI*H>4t>LBbn=(Qd$CsMg!{605S&PUME5;>kM>S_P4#Fa;}9P0844v!@@Umg zy7p+_mE_UBodM@r5%!w!X!+Bg;L*OmbdPqT(yWZTZMT``(Z;WwP6+MntYMk&fuDS3xx!@CK3|rn*0QX z1h^&=5_3&BD-{W6UzTZObgA~fz&fps^qOj8BI6J? z=C2h>mSkhpP9h4)u+~b})yj8v-vZu-Z+L{UmY*pa>4e5=U7)!I1HoQ!_2@6|Nhm(V|M ztnM*r_GEC{p-wYz8|&P+Xr6KMMmY3O(=chJl^f#4!N!Ab)8JE9?sd!oqm2pi#)3SFu~WSc-J;CFiDmoOFdi|iubB4k@V`=>gNR57 zTCY*~n&2GtduP*%Y;<0%6Q>Q+!NdIUikhIHnEy+|r67ny*!c5OF;$u~6*1l4KHRI`vH32p-&_41joW=j{rm ziPLh1c3&FNS>)E+&8pj)riuL)(;TaPjvd+=Em^@14h^~2u;m@5kg$_|PxMuiY@@$H zC!ICvKqi^2-&miDIn-CzcME+0QElgcs0h?Y6n>-&RG#4aZ?wL8%Ljfot$vK_fhKta zlh;p5I;sQuwO)Gj%x+2} za4)G}p_zZpKHO25_!+)HLT#Jj=!M0tpHD;;N4~JJ#Nt+68F`8TS&E*;;j`}L{^Xu~qfRU?8fX8s45u<93a#J-_SjjM{78j4Hny+54FVuUYH`oKh5HXR;Q zs*;Opw}S3ck172SrMKc^-LZ?k2?mlcGqKl17K}d?kp*Kuum-ho*Zb|W!}YGa`CV_; zMrPMr0MJ}-{-GlHuT+GxT-W;+t*>6V-XR}mm+SpjjTV6(FTnS?huY5IdcPlq1i0Q3 z66$(?0)+&)-V#!wuJ>0^ym9V})x#>+^?ra$O=03^_#@d|@7E=wiX&g>{Uy5Ix-#3XZ=B7ZjMF4gt^Xp-xF4g<+uZ}ysSz4=ptu6Gn_;jZ^P(_Qai&H#(h(O9zB&2LvJ zVv#O-dGgMeYkhUb%FqA%)C#PczI2~+_ghUHQ@~xD7Xi3uW7Kw>6PvR8?Rpdv;KWKu zDNgL&bLP;c0rbDlTt}_qy$!{NlZ&q?#~hi&pvNj%!*(HVTDT2Pmu_z->(G}wqmy?O zZXi2xT7svl-c3lN_A=Zb>z8!Bhu)CxirfenK`#u*WeWY0Ol0>fhDJ_D?Ifa(4EiZ0 zT^~;}Dj#FOxlv)S38TWFiZd#~thc~SGT324YmJis>w54XNE-YXg2A)b#Nhc;5rZ$g zr0dy~iSR=>ErYCXT%>Ltz&w%Lqs%`i^T@He5wd>1yh(pgby?rbTG#Pr#U zU9`zf`#4fVtQ(|RQ%m*(Wx_|q(Pr9!TVTIKZIcQ~u_K20_zx5kU_JySWCDj_w$x*x zG5Dqiv{Na`)d{7qq-wIc%PnTpA_aM>$#klDb6DrT2{o$8q6g0TD}vnmN54=4t)=i_ zvR9O)3`Vbj*gZp<$S;xTH|{N38ILG>c~MmQM4sKO#8@br@%s^_82*O}cTNDggWPR; zEVUiyOQ+OgtV1CIzO;md>cEXCBtQpBNP0r}_!iy!7+S|P2}oX*pHGdcLBVEpL~%J! zYs%Qj3~~TTr$`OlOp!}irg5>B|?}`&h13U32;tAGHQ)dF8i58Ap!E8kxI9q zkZ>v`3+Mvw1*#%?7YZt$h)M`EA*Am@M~agl71DcANaYLZXHiHvm6CXojhQpnp);8lxphJXeURs zq_cG@+e>o)eEMekQW#E!Sx` z9CO$0DUn^bKpTptUcv@lXq8kCS7ihb7Ar#_9_ag(U&G54A+nq{%gnw}Pnl)?Ij-I@3E&H%qXXNMK37QA{pZi7X z{pl%PsJ8oQ3gXBjp!dXKYK*W?6q{;z7yF>qwwKx3wk$0r#S4!U8bM=*m?+B^f);Q( zsJ(VSqW#&3qQq54wNLa*wU3iaAK5{1j8>+Lb)1MEmpVmkQTL8u!{WPi}Um8 zeg9iAVfiNtzupA$3t5(bJ+)278jX-O+xeWFfZvP# zP*uqfqVV$t%uCwh%ySMTX_=EnI+3+_9`qRN@n58u;-qM+D%x|ms$>2>I%YtMB&1|M zSQkPbLyBvjp>jzR*|y@aHz`;x1$EgqmXbaCELfiO03&aQ2E5P zi%P6A1@$fHXmJ*xg8KhZNaYLa$5BW)m68S3R*iK(3M`+nW~;_3Q+~gT5&-86D!)HN zA(bz`zd<44R7#d#Yap`VM9>+`C%|O}BEksToORfVwKWt+0Nm^EE21iE0A(IfcX0x> zO`g2&qjp!7bs7o`;En`lXoZvz<2)1+pcNz})JffpLISjcg?+hdE?g9E+*Gj!5Sgp8 zx-xGS!d^(-g&=IX%AvT*tlLqR0UF{~PEtcd_(fRChCTm7CGY%t6da%>Bsf${ybFZ{ zXbA}k)e`rjkN_=VVPP&U@kJExEYcF6CG3T02|?IGwM4eY605UP7SHta!JcMc;12Te z8Qsudl`1qwZmLW-^sz)4iW7FjdkoL=P2o__>*qQLhO3Ujs&Ps^oj!(OIoOcszbdGn zjxQpKi!2UVN%0LoBjsp%>O|w9POy6IA1ijSIXL5FvB>(eD3Q5BS;!!l*;aPvJwUr1 z*aa}>?Zt0KNjQZ@E`Wt6hp3%IYGMo;D#xaLHtFP$K}H&WYzli#oE*ZRia0rh74bx1 z7Jd%b`_t=&I$kddCz|d=Gutt^M=8=K+Ue(aPPAwPb+DqZS7OlFK7OCklW)V16(8$7 z#$=$TGEXhWMy;>jGa&Z-+sK8Ez!Wr;^0C2HLi#wp&1~R7&53R{`9g^A4JX@2bL;#L zji!O}wA9kXmQY$_F2gVuvuJZQfwsF*pb1Q&cJEE#K{4|-?MQol5CIzv{r&%nw}H1Y z8R9nZPI^*pV5l~HBX~&6@C+*$k$7PR&s5|z$qMQf(Fe+-?U_>RXXo1w1O?5aav<&n zMaR8C={sU|kU63j!fs$qiWx1&cem09CftTKSBXWZYX;q=p04@DB#Zvn3?#Sc>@{K0 z`BQNgU4dG-RsZWQta@2zN-AQX^;W4>Mk|>Qw-*qiCf>h*LJ|HiDT0|U{CN!g=d`{` zJKxiwVx%%vFX^1Io29<5Q6tdlHnjt!uf9!fXQ-oj421-wuOuWief2vO5|F-->vo48#g@UMQoOB z#@z6~(WntXYMcf$vn2yr+3RC+SpaE?FT4QF2&Zg@o8g_HVPMR#R& z!-JcotZsPlhT@5wS;PcU-SE4@2`xr=hSCQn*oGUfl8fB%pu1Ez{GlW_{Bj18yW#9L z;fC|40^RT^)WY5Hk9OgP_hgMbddCvxh^uSdq8+iuU9Gnh*SP&Yqn>wot&Jk_HANcB zO@WVTef4II+b2d~RP`iy;cMLbIKAuHz=QrDd#8Ff(EJEHy_7X>_Nv0a+cla7#=z!6 z#W^chU(Yb<9Bb|^>9-PSOz|aH^b~6M-lD77CnJw^{*#c^=~qe+^VzJgjMHH1zPne)WWU$-=$mi zVCHn6^1AYJx{xoD4IggQ+m&j))n9G9<8)!wuv?p$8l->eTn@K2cy^;vV@GquTz8dp zqSd*L$sIM<^22i{n{>uhqi*?nQ@w5Z=E7>r_SHp|3HhUo8}&G};gDm7vZXri(wSA` zej7R!E+mX?mf(Gr)iYJ&4x!-k3Gq={kftJ=DNWo$iGXtmmE)UG zNaf4%9VjH6O38A(I9T;n^zd6yT=_&;57h!t1xc?_p(eLj09%E`nyRg#xZxZ1fZ>+u z|K-crNcm&fSmIs{y)eZ4J*yP4mUSMURuq#`>uFi4y?_xEU0;pD=Th&a4(lD#GhC;3xxg_Cw>Cu~_W zDo53OjJqEEr;-MLP%wD*nixEPDq`>-zGq&kXC3~%Sux7GjIE*SzGAeqU2z2a{rgU- zCX(vPT67QeOPm`=Ds8t-Rg{DN19Fq8UkPU3ReFBnU8TddN~@Lcs?r6#4Ih9gMU$T? ze#|N+7f3A{a8c<1wVk1k=L{4Q;PMGb79|o}GH%$b@S@TaG@zZ4lFr*y;)E~7= zf0t^3j>>-HTSX8q)dmx&GK&+|@Aa|sAeYcTZg+%xlF$khq7%-$gmoS`VfuleS}3V( z2h_e(hIBPNq@&o7j_!U)OWFJP&!>M ze0~Qyg1Dfsz-?*+H_wUQoO-czr0%`lpOkME!h>?^Z_#lAoRW~x%*+>1NPs+Nq|!g4 zkZ>xc2q?K|YF_bQP)IoilmSQzq017`|3=4&lO7e&dFwzwvU~yEABBWdDOo@l2P#)l zqsO4Q@=56dK8hfODMDs#E;NuZ6h_O|P~4ymUp!10)@VwQpP=s-D&&^2vr&ctcL<$H zZ4++Ya(8#j*rg~ifIAYHp$AfK8M_*V1n2fMcGWP2rk4+wx?GmbfPrrZT_)X&zHFw;tw_DE6Mq_8q9h_)3+KnBPqk}=_RZW9+ z_Y*}EAH@b00E{f^Sn{i}IaNu7jknFA^_JeIn+2JVP)0#y)`|K2&93W=wc8V|^{ZEp zxYxS1#)R8!4NAfeH^x_U;tn@ztBAm(^xf)_#&BzO)1_y(KJ2d6c;HjMU+$-89jIad zi3+F)X}uA;Xl&r7X?Ew>eUzo`TvQ4&0j%J*72#QD8zCY*eCAI!tJB^o)SMKhVWN;= zEu-S(4r7|9FI);~^j0v8JcmEOOIaD*SZg($RzzTS@7_IFb=#wZjpokP&Cy}@|8?uu zoj%yUt{q&8BL!ja;Mb}&Jl94mLmH0vr6H+XU;G4 zj*XcnBR{8n?qHYnD1y}sx@7gGTgF_+*Q!p{SGfGR9H-iHDs`vP93cfT;!ISkO{X#H zQ11HFlSw+LGGT14}2jRJu-gN-XG^tw|n!y#_7N z_XB-gi_&ZC1NMot%2%}m&I)JkniVTfALwI0=f{W9ivcO=_&%MHylL&QO#E0z7}@4$5~Y<1v#*6Ex>LN6xhlHgE#M!j0`$c)1?WHv zT3vwNapsw4I_)US*%5L5%T8Le=JZu-PFl5g-IkNqtzWlx{kkqwg>u_ z1yaI)vOMl5%LkV6-?Rq<@gfmjd(yg-PdW9pXP&-ha1H;O*4Fx|#rP&vDcchOM@8`) zC5Ym|7Ut@rc+h$xY@@z&{dUHx>uEDwYkNS=hd!ek+#fS>j2hg%gCD7K`;!9Y_A3NJ z4CaT_DrQk_KGsoPQfF;2KBv-j9Wu2|x78x2l*~t)JlN4jt=8DhY|GAOWqiES)Qm}n z-zyHwZwsWO5tbceA%Z^tzr~2~LU!8Z24~sjTh3WVb&wa5$ZUBbJ)B>?&K;qrGy3F5 z8=SM88l7M1RIaU5YZW>j)2X!kobZ1v$f8_;*BGg+YE#RDqOOSS^iFrM?zUI654j)? zjailu=Ey@RZ_>-ZG0A>6+#S&P48qaPImuiaW2)SYxuugSzo*eX{LR zP&3+cDFHXiTssoFK`vjxugS+CSA;iFtL}20^Cp{=S6Y2(rCDvQbj~?%%SwtLoy#|` zK8GB^W~CMcHzGcqVJylVKbUw@Y$7n?B=&d7oZDGE{ydtJ%#HTk;kMHsO@^?^%5yNm ztkq^I`IMEZmc#A6!`SOkfLURYJhgXib%a#rjw!A(C+NW3>aeqE zOKx=biQ-j-aj_3tZTkXS+lZVQX$*$gm#leCzuKjJIC`f2NPqJA*dqj2N0<1fGO@N5 zG2n1w4Y85xnbhd;`y!H|0I`yxh)FTn<)rxj#*vXKJ8ryEt4*zBx|TdvmP#eb-}1tt zjTdg(xcR)zB>Ur(5abglaL~9nORw_$meX!HlrS78$Ep&v$U}dw*SX;xq+^zy5qGpQ zS)+s_n_YgR)QUSk(Ix;aL(9Ht)N511T=zv>Lc&Jb7s^mJDSNQ9UcFvei1p)*k@dku z&BvM(f{+Ww8U_H)fShT5NVZwW{nQg8O~OQnXL z+FD^`=WrXN1G;Pa(0eVTbTsxnAkZX!z@UPe23ZqL_AaDkFG=Ebm#N-6IlmB=tE=ux zs`stbSR~aupW(=q=r!phwVRRXT`N>fRP6LsBP(l*P;s(21^AedfMFwa@5U@fXz1R6*zc-h=8lox_=%6hyn6OtC9m zku|NckxC%^^}fT@r`4#5=~oOuh)HyAiKPil@{~O z`)VhVpunJ}a@x%IZ?TEoAIB;DSi((=$3%{c8v*iR%f3F5k zLqm0UH{B;aTx-zD5<&=231!INxC|3q>P71fhfd4;AI}1Do=(1vkKPF5h9Z6%TIy1BC=A zVgboAOS>!T32pc{HK3hZPoiKs3nIt5=*fdc!7I^xSn#PL0CP{XSRac3kwA9$$dZGZFWCw_xsPV!F_ejEn!134SzAZk0# zS<{MA=B`&AloL=$fU_ncq0ZVm6cV5#BqV)@^+AcOP7c%eV!u_1dLB9gC@Qn2OE{3+ z@%l!KAf=>Bu0qEQ2$F=9%m>ZKR3_d|6dc45BXN@bjNz^_DmD%U+9^JMelbb}m_s(( z3+y8n6V%pF99xV)JUj3Y84GqCPQM-V5!(e*ziEpDh4eh61?{r-6&Kq$Aqi;flGmV{);bjpRQKSLn_ zGM$l1zd<44R7$pjW{P;hGqE5bHc|qFl&xCKl#m{Qjuj_ADx}L%NaYLZDJUeIO36ZM zIScC?6jwfV8nYR$Ai1@}{!-FaA(C@_FK z5}2V2Qk<|`P)L9-kdRQbeisS}&;=Iu)14q%f6hiZu*qmTeCAt9k!;t3QI zpd~CU%%vsfpI)ZVTdtP)6BlVqh91cX3&IwvC9*Y^crI4Ty1`@bRH{HbM<=cZ1_}6N z|1&97xT;jqF=G0XQ-uRG8oSAfvyFxu8D7bg!m6GhVb(cBS)3X4SH{%(YPrDQ4i@!#9-m%aTeZ)J`Hb z2nHpUQi&fXl}gkYfq1C|drg!|@TWbXRO0UWbLP%r|MR|(UNg}d@6n1fJC9*#NGvH| zOp?%jZTr)8;S){u53m9WmgfoTuJu*w#Y01Wx6x(l@MFaZyM^%_I1Vq*I`vDnzGj3C z7tAF-=u6`BXjc0UYxng_hQ2;FxQ0X@s&^L~d$1(0n^vAW^Z_IrP&3Q;c8#ooQnfiU zakj@AmlOqonjvKaRi(+l=|n3H;-RpV#LkkSLw+x zkD>nX?W4B+##cLrfsBa0Fpw`%1UAV)>Sq}oc$wRtY}Um&H!Zg|IuPs?77MR&FDUx% zn@ZmiyNOH|>DS1UJzmV36jNI|07@U2lp8gXDzWI;qo6x7D27}p#{MTs#{L%!Bscc# zHDT=eQ*p*#fm(QN@;fRgHIKi-)lXwx<@vC zj@DPtiuWQc=#7cjN9rBOhF*?|KUSk^U>Fds)oT-fG=avHpW#r20dNYndvD^609XiM ziiOvQ5iruwrpR!@8@aBI_P>mulUAmSo-Q3?#Si z>@{KC`BQ<`JqopO>;C0gWZmgFj%?QbdAfDyE%i6p86n|L3%c-yNA+E$SIsT$G;Jk7 z%@YuxD)Zx3MRwD@-#pR&O7Q7@Roq@R)yuOU$ zh0-tOE_i*3OHE+u|Hla5j7@29Y87Wn(Z%%u4H`Y-~OZ%ma3i}&}Rc82foFQcb8e_xEj>hJTf zjeK5Y(g=V5Mn#N~eBQBvgXEm(oIBa1Et-uwTj2;kSFLIn?<*E}1)~6v`G_sRRpWsh zLX{y#zg+1fXFQ;ilH!4&yVQ8#7fJEJMh23{1MD>s5Ade~5=A%2w19KLX3t4;m67xxl)nea$|xmT3@|e0gSM0b_E3u zjU<7ED8MV*MQvvY3T{9l0YQO;ga!q#Mj-(~frM0OQ1BKMZ=6?aP1u$j6ugm3O=03^ zcskjFf}M$|;>g!!P@wB1Zz;{<;; z@KY&*w6$I+$kzJ=;%Jl*e5y>C6PcU1m>2^`!Y>irhEh)f(JCoYZ5IoKu0|mN@q>h<#}C?0 zhwiF7wI3;SZ~`4eoKtL#DSGV~*0^jHCZvYvlr73wpNJ}spj}28x>EB_XWR@_jb0FZ zl)e}or_%NNT(!fb_fdYMh|)d16{RCJg{c6`T}u4A96U2Zj1)fgKEyEVjJVBCi7@nG z1XjVACl41NVSI*37mqL=peG~32s{iwz%c8Kxcj5W7m*nw;)~-IDJDauUl4%#RZ*#o zb*n6vJC9%Wb!7LIN!O$F)R&T$rRCrT#YeerZ>=OFpxxRITdEQIuduI7P7E?sdE4R2ZGvX>(k1y9tlKmY;tQ>jOwUyeW zYuR!XeL>M?JByG&wFu!jM%`$#aYX6Eu5RKaL^d5B!>;;Olxz&TOHDTZIw{$BBLm5c z5ZG%X*~p&?Og2WL7M^VUMtZU_a7lo@zUL{9@{R+2~ zu6T9ZboCXzS*?#Y=*;zt>8?KC7c&n=zcBG&bbk5ZxJ$PJj^sNXeMzJxAB-r5RlZT? z#v2s5P4|C2;GFbnYMVSd)O~t43JGwZ1SE@Qja_62t*)G=;W_DdYCt=!p6qH@#WUf! z^!@ZVqiJUSOGPUFUK?33sVx3Vo~THtqW1~bd61aVqoRGH(=m{8J^YD%%Zz&#$;N_q z_)R9krwUEJ4$=fUuI3?XJ45XA&nP4y_K}d#$@>cw5-@osBt7=YwRitdDBd^&-hHG~ z%-;R~<>F$Qi@4n7QioyH_=Ab4;^-FY*2Jpu6b+$AG>3&3pjhm4@&OME#jn(3?FY^z zr39?M#oChYP024lPd9XBwaB_w0ZOv=&67od;;t(TEXSD}z_DkaP8 zUfcmy?A1;bQ``)-N~}=cyXnbTQqa9ge`P^CUO{z8jg1Wv&rd8cyhgFkq`qufgMLp>8*JP{SFmpn zZd9l1-zO@~7Q6m^yfWqNa2@x$wp$;e+t+tj+hdU%- z-eQ|##wF|fM3MLni*^_L*Hx=+zsuIP&FsfbUm3DIei%jj{DL=zn8?W8+_gAG6a`}) zy&;bY8B!&!GNS>MAkaMu*@;y9-=-eIIJ)JMb1zx%TsSk_HEhiR(6pzYRj;yHVCiJ-o8B$KEbM9bt?EPC~+TAqO}8&w$PoE zTwO}Eiz6##v_8e?%!9nWtf%P2`cSgzFj=PRh)4#*B8L5)c@wmk_;*Q(vPT&@o+x9l zi9{KHDlSnLXz#+4WZx_&Np`*}t)$8uqoXaiJ;d~?`{$h{`<0>hBE`azl?35(;YZJI1b$e42Zz^N!CAY_z~&_vm}C?sJ1N=St!%3grtjq^vX z;iOUgSWKeqGA=GQB@Hb73yS8_h+(44NkkP#w@|$%CdyJYL{AcBFYB$G6rU)23Fi*H zYBi0H8<@`$lA-ld5@qi|Apu%1BbELJg@jWHPL$n;Vv3ugR?SvcqD(L#mqrQ`WhsiI z_ldHj6N8PkOqo8MAl5R-^=R>#vVUdb#4~08K~F}e%N``O}^dY=65~!L}J? z%d(SfB`MEIEJM|(6G9OLINhPgrtYn zeN-2yiA8_P&M+R`D)N6LiW_o5OA4>A7h;3*=(Xrr0Uk+6XsGmd6cQlG8L9L^6cSD) zI8^#1iV2d^vO*=n0Gq)DvOq!s*cyr(YnZr^u5_3MdM?ots}m0!OUweLn75u}f&Q&j zK{3=>@mZiBaqhrbpx>k81}3e9gsQg18$s_HP;D8hbSMf5rxL8%jz=-YP4}K>fdm6` zX{0aDdD4b(sjaT?#pev)5b3Lh8c-?!iT*k5u$u7P z>9)_MO-5l=g?=2x=5~{6+1U9)GW2jZ@J&du`{p;*+bJgz$^O)2%_9F(B~qCJ6=j}C zeNyYIM<)^a zQAmJmA|au%>HASgfNLTl>G^{L48Dg9Pj+Ma!e6SzqxYesfSeh_{XRmgYmC6kT@d~W zAzCOO{}H7Cz()xQb;SP#g#<`@Mk@Uhg@jWnS%PEsE&Kt+1j%k$IR?Q1!@-o5&p?hL zqux67Y%t0LI4L2WMkfvo+%$c|bia2WCG(*eP>Edtk;#)& z*}(_Ajy)rlPC_B!RJvTFl8|u!L>9gT5+n4_MuAnVwCWtxnw*$uG}}Y1@k+CO&19qP zwx(|vBpiERlzujGjhj(n^2x|#-9|IEluVZH{&}xtx*=GoF*8}39n$>Xl%)J3|8+%* zhfvPM5zm?zFih#8mLcS}qg!blS(zj`9%c$s7}NVqfp)Tq@4%-d3iM$FF0nB&zFT~v z;8rGBJW=o(dNL9PLGb103A97n392z^f~iYJFKX1=W4%fi?8`;Z?^X2ywC@y6`Vq!YU<-Ag#KGTa zeRY~W*>s>$Ca_fcAr^aJ`rscliUzu}fb_xr)OLpS!M9OJKtLrSp<(AwQAmJ;DIxVB zeegSU6#0CfGSdgY7NUjnao=+=U4Jd!>4S`V>-i|v08UCsX!>9Xg#@GzGE!+Ag@jWnTl(O|D6pLA13^EVxW>(> zg!IAZxr(;A5y_1u7Q*OGp!Ydu*8-=kC+UNGP|n1ScNU}%UPt37EPar|nBJ!kj!X!v z(l(pug9#jCV|x6c_$0z-n0WCd!UObVBoVZ5%ugj~yK9uF#YiYbCXGlad_eIIOG+rH zopha0*gGkq@NGsco={+~iG%`w+7l8AKPo4oFcvTQSGex3UgZ<^@#T+os-_dvuas=U zuNX6XludX{>#K83PqPVvE`i5+LmvsWgH@!l?u&6PhR{NOsFg zCI|)??kAp1$f&nEDAfQ?N=Rrj;T{wckW9!(rN2TU;Z(|&O!!+ASk7dEpr1`#<7QMs zGU1Qps%4E+6O#$L59mF~oWj5<>q#=X zoJkOL35?dCK_+3NM$kZG+SU_*Qrr#Hc7{yCB`72ywvv$02y`0?3Gg)~q#k4v8t5qU zxj$uQ5_SpELiuMb;r@F)ri$RuRc?mtE$;Z(|&Nq7PUmNSze=w}nxxEYm@NjROrXAM#l zGYPs6=slB>DR9bql1bSAe9Y&K-IX&7G70<8II=Ry$RwmNX4Yg9xEG(YwLu?C;1?US z<6n!mYlGY9{UVuED1tjvL6fZ=T7H3%8? z*1YFnW*OPQBO#%ggZ)uRK;|GLm5xCn0rD;(Wy>6_M1keZ90;&BagCc%37La7&Dg9# zX=3I;_y4>W(+z=B)|1S^1t@3Yh}XR-E$uvn=g>H^GRepsq%fxUnFHgK7kxGZ4kZ>x& znS(^nFHMg^ghV6df=4xBy;czlrwSTodubLn`s<{We!pp z)BDW95!P@jZS#UYl)x=ECdbc;>z1p_GGF!Yu zHF*$ztYi+p%NW?B%)z&`zIs=1An6fUs6T_W!GCJR4D_ST-UIcuzofP^qz&e5!ej{v zq$DIX+}sa^1UQxwQV-Gw4myf_zD}8GgQI9DBw8pRPev&K@KHiS(*|dwkbty7Mk-y3 zLc*y8rwy(~F+s9hR@y)?z;HG3v_VF_bsb7IfRhpunl^X^3JFLXWTetG3JIrDwzR=J zP+&RJ27-PzagCc%32B3$bL($&Ba$0SOdII_pZ7E7!vs!QPtpdTML82U-dT_~_!Nz! zu(Ux6V|t%9FbfWZ2cJ@KppPT)iH(`@i{f(zKV_1|a|XYnCnIMN#$SHIz$`crapJ(V ztO$AFRdeQy9U7e_B3tl?;`*1AEl@k@I$LmbQnp~u^N2(|Tfklu*#iEwCu9qrC?{L6 z%gB&jRISyjEqAz4AL&`rU@0qiiS(=H4vcS=6vCm5t365~9H{lxY4@u5K&4J#wEhe- z39B@k23phR0sxtW0ctx#CgBVe5)fNSNN5DQ355jsni5hEG6`GJQRH)f%FHBOAw&!1 zV*{lCz()xQ%_Q7_LIR{cBb8o_Lc*y8XA<6sVuED1tW1JnfZ>4RnS_jb>t2*<04F6R zG?VaI6cUh0$VjD!QAjwIvSkv!j{?h?Nf7k2iEG@9O2{OfK;W|msfn2c-3|1PXJiVT zvYuoT{(y2Oj(D>mlknRdOft4Eq%fxUnFRB40>zO}Nhs*U30z}if;?V)LSfkjenMdd zJsAlFBPjFp3QtdtDE0J0Wa^0Y!cs-BOG+=OophaEI5sK0a0Vk7PcN|7M0$Zg?Fs3H z|1KxJFd8Ea^+~$Jw^!u|eLS52e+H?9 zF^!yozAPY>FhXr-NF`j0LIQ#-2?-5BUyecooJ|R-2dRYDp`*y>|CE_Zc&!jEl#lO2 zDFEq&*{*zJx-;sRXAI9ziidvRhUvK`_8@J@HgRM!oe*lxhGcB_uSJ z@COtUkV?o%rM?R>_XRmCLPE-xN;n(^mNS(gz}mz$Zbl`f61EegOGzc@9-ueGL@IE~ zdXh>w4dqN6@n%6PVI7SlE0c^=Lco~2=gyfshyBmn=Qh3|u5zgNIR$g!{-UaI=2OxM z!I0!g0{7UMB>z=>I$;|VGG3qH(vy)+h=yZ+Cc(UWLJri}(GX#YNFqE>QOqSJ5!6n) zP9mI;ltj3ek%=b}*lQw*z@PSnB*Jfcl|sBoR7{jXg>t+@|%_ zyCi}?^w3`Y86*+jsgX0#k_99Y-bQU_NFsa)g#?6E5)vAGej0@YIO7sh50VI9M@Ny* z^C>fl@Q@HKl#f3_DFEykkBN;X(%KhiI9;>=b?~rDrHL|Y(|0QOd<&S*~B$&MkOQ>-o#b3 z&5cNIEU_Lz_W-?nmA4%X98*}4- ziq9Rqfyoxn9lV{MVsi)nFzmSl`G%1@h|Cp{JGfQxKT66SsGW43I~YjH9ejw9iRTX3 zYa(~RpGwFb7;KjoJZ@IY+}fS5BT)Cxr+=26WO1h~t@d~3O-xOD-@awe95?pzma&Vy z`+~u<*TmrYQxSvz@ICWrD@-8s-krD4nKN+H^bOPf-hDKnu~WTI(|@*2dk@fm*r(_1 z#s5qoN@tNrcweA>IdPr$dk?DLbT*wk*{rmyjrx|U3Aeu` zk|yh&8{1P8)%woCjrFOOPQ6lZwAMS-dfVCHtXb)-Sg~t&rMZ(nio7=9r#3P}s_q=xOc0RU1i-VdpxN~}0ZfqjHt5CZ!MwM~iu4X*wT zg#@@!0+MCI#E#1FOuib7?`s;+&TvU}C{cl&4n34VYCK;$?A9ix2I*fCRkt;$a^Lt? zk%Rx$#uCh0i{sVr^}U+-yoCOVS1tzKp0v`<`#tMCaJ=@XHX}2&vyVD_sWZ4lt6wPt z+WTTmu=~BE*np1ien3mv`&={Yf}jmZPw$4GXlue9u8vlRr*H4%Z% zd&y}KvuqQW7>ho_MK6~TSRTy%!#FBqHtwf-2>xvA_jFb+;4k{$OG7O_Q@C~w$~9mv zj*BrEDaZ9Hthwu_6-X~dApvtyLPF=_YfwnQT$GS>2F@oZFrZV)Tx72*Bzzl+7n+Mr zT7u^jwN1XM+n(-lthpxPo4BYHFbOj<_~R(Sa0a89$oo-9KqfLHl^#VQ;Z)Kyk#pAs zlYqNs^tU4EKSm+t%s~pum8<0U4a2^OLGJf-37WTJg-RUufkK@>pwt0m=(p51d0M*O zS|}n`6`22_0^;jp2JZ{fa#HtP}B1a6cRA!EG*3B20jzT3z?qs+`y9w zw>{Mics+usg=&awjU}#9q{NmzPlkI-NS&mly>-k%GQptF?+QwLQ!cT?5~U2B$a!DG z#GC#3ifQi-|0@|&$TNB(X$KKuJftK+5^~u6-q}>u7)??fw`qK$=8jW#vgPb-G6-iDx&NteYbj~G2B{BVWr!2>%;D9jrhln$YgFn{1Hkr zM>yxbk^zb)mC6F3@bY$r43R9k&9#ozz6)vGlg;WhAB5!WFpW=;`c~@0t|{XhRD{EO zIm5`)a`U_7-8;67xsEUQPSu|hJe%%RTTZ3!P^OzWHR4QEs!gXc%2Md3p6tk^6umIQ zK3R8?$gmIgZK}80Ze@hMS#h>Z(j41L->+mZZF6?J&ScA_FLpO86C^0kXrt+@_frV# zw~tiXZo4|}4zhnnC@osq9wbHkMW}ttEI_Qff^V@&hMwr@9FsiMK;oY`OqKZeupXik zf1pVy71Midm@LxT?|q)qHhlewrF2$_lumr2Sjybv1X4)ZyQnivY*ljKTi5rh^vL|j(zQqO;MCxp+S|TRyG?pGGRH)HeY4`sk-**O!`OM(Q3WQ7QCDWX;7zCsg5}9 zv1)6*mj5{>`E7N44}&5TyZB-o-(rhCI(^yPsBZ6ExQwygp;OteB~w8oT>Flny$DC!YWhZWDEeB%5pwrOD-#HhYclxyv< z%&b^48EY-iBswSp*=He`ZhX(!LVRbMy0N3xsJU%-r8CypO@_F+l2Nf$CFM}G#eTdheq(5yn-e6@P7;>M9fQmr5$?unT60^) z^4hC8DO#)7u6w30F4EBK#Trnj$nR_e^E4l&vno^1f)U_v71GbWlq?0ZIvnRzaP7>! zl=;-0oYJ9}!l*F0qX@0HUzfZ*g$p@%8Cy=fp$oI>wT!s!O10Lf>%x=pHdN*xS_Elr z`f+~?C3OAxud7!(8zU-_N-OwuCYNfW(P~w9)TSINQK*x@)^e|zWDYiYVtw?h5n96; zuhg9Sf z?|<&2tz`q$glLF=H_nhw9O%;|HuWpw)VdHU8>CvH2df9sl6r*B))|Dr+hFmTq^%Bt(P zoj7o!ZvuoOPJKJdv}c#Vw5M5yRdij}lV)9(>WN0eU7#-OFh7s7g?zffiz?S`7NuD} zmHR!ta-`3ENw6aNg<|lwgJPAZYUD*)U!8gn%7+xX1tm9ndD=ef)}C_8X{WB?{|o7h zro>y?2!lMJ&AA0q;tgt>Vk=|eV1o}=aC+_rRd3vcLIM^JBqWqdcc74PDv4q#g{g|z zGvu*;9^#f6QAk)Rr;EB*XC3 zPK%bzV{^Wy_0=Pr6OKHX^hQbazN-}d6jU~&>h!1D5Q{WAKc==b7@c3EkN~42A)!>7 z|9p$aw+J1wH&a65Mn~hSBKYjRGOdm-?B0)9hgPfer_!xXWEya*b1X5zv^wEizSUVq z@2OTNG7_Qe9#UvolGRZ=iD;^1t8+?{)j5d?BDXs1HDPu5)1F{;=9go2j#VO^i`iZi z5$as(HiZH5om?~KIXLNcVTs~jQKsf|LG_TwCY`JG)w!-0aZo&&eC1$Rr@pl!7@~he z+M`N$t2WXiP16Sy4#6uDiH%(END#FiRD$_3M0`I+mb?A$p zp-bm6CF4my-g^bBWqBq26Ys}+-b*Rk*-zaGH0`lU;7Byoje_A8>TW`&Tc~*T;oGX$ z(Jxe66&andRT~xhmSn5cPP(>LrzhE}cQfGJRRC6f~{Iuj;%USu~n_%3fs%! z?@H7YatoC2g*B3&DKqesiiAX%XYo$+n4iDX`s!4BVSXeb{7G-vo5THmq~}(L+gn?0 zT7Mm_H7f1MmQN$~r7hR%+ch562AXPp09F4F)HY3IRMmeUg#@U22`PC;#$JrPYKHJJ z6jSV)=iaouIMNueRO{1YBVhrGXVk?mk=vs2>_#fl+$EotMMbGrOW-Yx`XMe19 zSFJgn{@~C2^-2HZQ|V(W0+27AdV@dX`eCC~Md=QRzDsRqh|+eWkN{DTkWdA2D+&px z5|7e)BrS^j$w*RW0GK>sj9Iy$_y920Yv&Q)J8A5C#3x;JKg9dL^okndMJBum@jj|J z6eWdtYA2B>!JweB2(}?9#QO+iJrD8NYa+zsPkTa$w|6-q-aC{KZ)m9Q?j9QIAFf4C zyJ006TW?ge4#B<`_T{#fevQ9!L{7IS={T#-bds76wY^@-@SMbxcBss^T^-JM)XqZD zhz~&+bN@p{uYA>}S8P5laM;e5*`&lHucOcu_$;Yx}zfaRN?;<+8ELz@H}Y^onGGKtnRAQ<}eO}Ym=zb z2|Q)<{EYeZ3%@-v_4p?W-4|`P*mK*w19p+lr?%rfx|C$hAt)rkqmz(OkM1}W5}*ns zBz+J1fk~WB&KT^)eyRpcr=SCX!b5B3h6BkRB(Al{QA*}!6FO!L?7{J5x1+QL zNOCK+ok6X?9)$$3TS7wB`nym_fLfQ3bhV!AT#ApOc;n>Ln)o%ec(=!sb(MaHffcYpPq4V)KC?sG$N=U|hq}}p?kDP4I z`3Yf)^St*K(0PXDqhZBUk0|SEA}%1%_C4gd+@VZ94ka4SWc`pS+UcNd>eqKZtVJOK zM@(g$3TL5^a4Mn4lwE{E%6Uwgpj^3%zPMw`Mp5bjGPHx*CXY+kUH*w=ifsEIDvGL& zf&F?=D zUoQ=^|8m8&b7q4_`%PuZdMu{A9H(g%6X zp+W7?9Hvma_vY}B*tt8MVh{CU1dKH7;gaI*q06L*+rx2s((PfWJbZ(w?yL4yj$sia zaxX06k&3h?Sw#ILngcI$+mp>Yoi8)dq)VM@qXXK(Kyfc9x^7bGJ7Or2nIg@vIDXZ8 z8f#L_Ycam2(g!BuhGkcYMd!f<-H|OZq(Z5YIxoq(cNj=+-Pvoxy7Q;vth)lW@WTR@ zc46UrR9-^*IGce#T2m6dp)Tw@`KGeZsCf@QRV4nMiZrH6d>-rmHm$E-)%Qdg&>Q2f z57he*8+kd#{WBU-1Dk-TtX>=UPZDTM^CcMf6l(Y0xa+a5kiQh$u8$(%qoKw3E8e#M z8xtaK+kZ(Z_N$qV<=h3XYMgD|bcfjvPFb9#NRWOX1VZd-=k| zqHmjr?6?x(F}-XhnnpFaJu1PO#x; zu8%a_R(*Nfsk?M4Ii21vPM@qQ6nSr0wL$b;Bl}oa%lRA{AhCC z4LjJn-e`vx-w?tbQyf}w0}UN}PB+!?uFvSB1JUUxqR-$}|1y@yo76-l+AKl!hZcpU zcobLC9S{+U{pe+He2QjL92A-<9@m44d=?T59>toB#)4l``p6jzsuPN0!Jxa;Sn#5x zSnyvMNS@KMjaJ(kuC!cnnN}nKWg+us7BXwqG2Q({aTVXEz({u$yI5BXhbnKR z)rX4M4`W?T6-0`qg6>jdsplufQlDjn;IR~YO~g|CslZq&3bpW9>hSbfD$qqnu6kHa~&EUeW5etj_Vp!N-c! zehZY^JOR!(w7z;1-~{6i{T98V^=Wn<1Vq$VzPk90d3wtt*-_9cUkeL9RXFoYjaq@o z72tjToZ8M1{QLoh1Oz`45*qyUT}jFY2@!$dM?%trpT2OS`h4t9*|%e!_j(kHJI;%@ z20?}|TTC7D;RKq*2IbKjbgTf6BqU>9_a#1SuLQAmI!XQa}FC?uRp$;I+} zG1H@x>4hjJNJ@>hTY(^Vxx8S2%{Kyy1~TfTHcB;slM)iT8~$b#60nmwBbDw%A>mZI zT-`s`5%T449pSb&M(E#)0?WB4UeM1bu5mLe%-%?+KCBJ+H*VQ&E<$o+iM0W`^XC18 zIRn;I&|!M5mgcvn7|ccf>xxVCDU>sDZHF$sRnRTLPBHxPoa>2SU)3`{sD!A zQz=`l|7{dl&RAd2&nB*MGs=kk!dU-U0-rUEOpNt)AI@_anF5zeKaiu8SpT;uXX1!A z3u68M&cP(3&Lf2}y^r;eN{WHfj_}Y&6L`JG{CHaNA^$Ni^h5q<(32kW8}XDM`Kt#F zX<>(v0Eo;RkpNhtNOegG0JW2@6988wB>+xiKrIIGE0c_1KZP;95BAj^50RK8Wocg@NZ{}qQ{(93!U-dS+ucMra8?RLz8GGGIE8F*I z9EC;qDU6u~(Y^10r$qPqKmv!?m>N#;(fu?NEgs#!nV#aJdw&$x=w7~HtldW@iiqxS zQY?K*(Y@M9*U^0?DZ2jvBNC79*=r)Y=T9X>_Xg7wPP8#jBzWi|i{D~twZAiOVrtr3 zl{ENI1cPU<^qou;2NU_2G84QD-L!kl+Vr z2|WBN<-)bj`CFeg;@3?}yY;CDyN%QuheGAUEYu+ccZe z@aRV! z=PA_D1wk87&s`305e+`YyU;NQ3^yjnaRqr7bjxIi-MY!Z3D@Eo?1}yPifQi-|0}6R zNoUjSGWB5th_}=!pgKCe~u^DqI-Dwjyy7knQ zhynI1WTT<#r+r>vT+Yeb^lu>L1v?-5Gb=V~vrO&S<0QxYyB{Up057 zGhUf;Xa802?D{(T*o_7JG0XN4Bx)hC%ZVnD3=bS$0 zybDPZNU^n;Vhyz;KYqN@WLj{vTBlRZ=`?a*D&%46bg21wl}=2ru!hDfq)9^!U9Iyo z(B1mA)n=nU?$+t>xdzE%bCNsV;&gM;>lLaM?yJW=J7-lZm3ZFdfF}g;9DA68kl2G~=JqYiQ{pC#7E6u5u4#^$=FI^cy?pw26rN6{E zm;u>*Yet=@7Up%fv3uKg%~b-QMG~EAz!q@GYMXDhwVA+R`$JcRw5BNyv)s%lss7a1p`{(l7!8jHhlW_# zk?G2~D{q@WXHINm{VOWXoh`aHPD?PH-DuRdFw^=H^Q$Sc!ItmNZA?;3W&2WIlVbT= z9u*YRQllr;kE{SVe)mpdFvt_nC(yTXeuoHSkbNzf|emq8tjW&Uo)Zc;_lhF z@{)OT<~*gsf(xwd6Z0t*)~&J+=cj&t@vTzQBKqv?h%r=*U$h{a>{e*pBF4-xUW&2O z@tXR>D2-X+W0%RS6{;`!FWM{)62mrM5-5%Np71F33c|gZ(Ns~1kD{vV?zwa5A~O1) z_e&HZuz^V;H0tNptMKNoSBdrq6cSKBCn2HBXnj{(60SBr0?TL?KHfN6WInmDZ?O+k z<>65%!SYqp9A>WGg0}#S>HO}wu<{9T zmXh)^Ww#$4e)+O{DhjE5**zD9gi|S5b{G5k5mozMhT_U6ym|x|fSM`)VH6!d&KFek zwoypsOYhAnB%Dgg(z{5e^i<)!6NQyecy-O|W11=1{lDn&aju}U`(YGP`Lg>N6cSFQ zWZ8|m*5|7zCP;8IY>F+@LHH3mSeyZss*45l3rV_BE0f!Ybb8` z#@58}27`ZM>w-Hxy*A;tutLpW1EsQqU_ptV!z?)aL#@T@NqNG&63ltWLx<0iA!2eJI_X!jnAR!W*p_Ni<6COYz0a{5yLYJDqi9!Ojl7)qP zc5TAHqXdi77u}!qp{q+@S>#{a{Z|@DhT4QbpyLMwMnW>CRZ49_Uj>XLfN7PHN{6G6 za4IDmds}V7Gf-gp#J9xSgp8b7j}idq3@X3RMIn_hzb`-`;Z#bNUu$i`2#PG90PAUk z&?}oU4SXF+0h~9e1iu1>RK5gHqmXbaB};HZZNfWHZ24rk+}ebUdiZZq8sPjvrT7ad zr1GWsA5lm+m6D}6zBb`sP+0i{SYIKN;qQ!T;QvO4k8=f;-FZ7^oe#V}3JIrDvg}%F z6OKV~CGA3H}e10yu9_3I06_seB1uJPdl>IF*tmIH@+_P!wD~ zAuhQ#A)_3xK#72J2$kb!qL9j$BXFBDw zR(%-3nfwNso>9TteeqZbUqZCN+tKbi(C+#}kPI&K#e-Zp)u|qVjfsZWCi(|__ z$5!iu8$xNl^)9*+HgXYgcuA9fGv(pzs#Lm1t~ScAF$*pn3@+mmHyzktQi9;-X3N%ymcL{RSqj&LoR0B#Zi&J75_UK0f1 zPel-*>?`h9m{*b&amD>BFRcvks_f*~clB4>?l`*_tSxRVrj!S}xp=Gp_r^Nil^6MA z8=WcQ|GC+{X40iQWP_KtOwzrv!C%Ht*>5jy&=rOo_ z)jC)pFJBPf3*90=QxwV7$|R47q;0nUkUFX)iTfkL9qKQnwlkEZ)KEx(_aY!!rd#Z& zj3TkG2IG5y2DGzd_2n(M*;?JIHQMdfJFD%n$sMa}4Y~?zH62g2YGR7+Ag-@&HHX=s z6I1M8l1jQ!i!RF;X$-gc4R20^ZoXt+4+dXH#CbZb75k&c@}=6ZeBltxH@;QG;3jP- zf$_G8LBH4cYSK1K=pVN`vOQ@foA)x-c~AnkKeZXLsGTLs=%ezie4`BK4tO|6vEdxu z{cx7D_qk=$r9d0bGHp25&zwFA1VTS@>1>I~*Nt4U(LYR|1v*gZzThiO*ZFPt8|M-& z;Ens=OHCv`Q+W0+kY^rH8~T5!ZPG+WXqR#-(Y+`nAheT^&{K&%i$VgFqlBa%EOl}g zvGDob?ZANx^Kh-x#+&w*T^PK4IMi(158$E21wXHr$ z#1xpjRUPtA(IEq}CLtwrg6_1RQX%~sg_MsAeUb|dM^c2InFA{|4y;s%yZ25orouUZ z&i2DlNWg5*C=@54kY>411U|H!mfKXJI2|2s`9kp=6cR2JhM`P3XY6tmQu$OGMj_!; zO4g@~ea}f1sB2JM`R313sZ;|nrD)a^+jc8DW?Vdyd9i>yuPP({5(Sly5&K9+2qZJX zh4-KXE}9Fbhw)JqQa&Ecw1@E^I$WFssE6?_6jIS@(iDoHppa&{P^5Smze9(M3x#3M zQy?uGn{}S>At)qVP7NxhI6cRqkZ{JKvw1BF38zxBp^d2&I}62>Z#oME1=v?xk{C}r zp;X(tK^IL|y|CTtRggj4Bqb#b>NWJ|8Ohk#ib*pGZIp`q{)aZZ;Wf8sVY*Z{gW1 zOV&Rn)1SEUJta-v^C}1LE*fb{NrR3#SQRmdJy1|d1Jw`kdIkng)H8gDNfZ0?71Q1w zY&o4h%cSE2w5CGq(~A}VVEjnr9(pI$#2wLynewheye}#pcd>|@N<8litVzBmH{UY2J8xIk z>B7pF2WUz923nFnZ!fkq?TK2BSk=*4O-MtlR1(4)ds*Dkx7tU7+7;Lkl#o%`yST{lBU0xW&K}7ieKMs#GJwXoCc}`w|jL zrGrsOIF&v}lexoKsYp4)8yc7hEeyk$F#8QJB&@8^CENQi)}b$IMkgx^vcBB5as!;K zHh7`oNkn|LIH99!23c+Bt)o{}lN}k4P_I8wD4Jlhy$8Bhud>Uq{!Hy8oo%uJ@0z6g zvvZgX@&Y{eny5eHPes(9F$0heGuE~kgIArR^j78I$CCzsX)t*9nixEPDq`?u7vHTh z4Q>I&cUQh>-kdoX3BPd*xsClRD$Sj&{!Xh-@=rcu<#zg4QxxT}-^P3w-ZByQrFs{b z-fnm|nEs8wi8rQAs!xzmcx9i7HoPt~=GV$KgfZXyCFv`j6)Q%oZf)c#N?921Q!3(A z=pM(cDXR3CS_tB=h^n!<3P4fiD6=IyJk(XV4uu4`3IdX0m9v@t9U9Qm!nlZzDygXQ zHQG?poY*`?l{(qH4(r_an2Z2ti86Yns51JE;`F@<9!~bqCS^EUQRS7Fkj;6@&a^Az zzOB*?oUc8fvNPRU2GBoe+Zn%9+1ob0JTllNiQMY zi}`>)MP=fgf208WGztt@ijlyKHNKPz;D=C1K+rECp_cr+C?vp=TiCZ}-%I)nlwfh$ zQEM@=vHM@&b?U2$d^N2-ruPTR!>Ce5`9(68!h*_;KE#68srk^ z<4|1r1XqvN{FR^?iPla-$By#^mE7}CNaaiJW)u=mrDVyCKgzX&!pbMOy2h33lrti? zljzWKj-YaT3ks=xxxEX8gi|S5Zewbd--cp>gx1(-UqEqw#$>|1=sK6jwg+)x$EsexV5M zYb#WOSCefG#SPskb`G~(y;m&l>177Dg%yGR5+W54&ZGtNwOZbx(Hjqp_#Dy6XFWzwht&zVAjM;a0NqHetTOZ&6&G z5m)cn%4WVno6MbCnRSYH4-``V%zY*bDQo7&&o@|(!s?8;ddAIUzCoM3U5yqU_XwJC zUx7l(pSNeBkZ>#6Gj7a$gR@ag5NY$6Z_p-1FGLH98y}_U)hML=Df$)^5^g0sMHA;6 zybDDJ5w&ac4ccVyC(zR4enHv$B@|Nr?ENkZ3Ad7+y|(!VKS#lJM&KOh8??#czn})d zy@PUiVHMQd`Ez(*6cTPFJBJhI8~hWBt26rQ&9ZFf8wlnmO%s4elan44SM=2R2JJn} zy2WeCrXAhi;`OaGvm#}SR~>V(M~h*f6&Yrt)v6N?pIYHmXa`NFQI&sfDwd~QZS&H6UZG6h7|9|*NF(RGVQh3q9l0fsaN@91 z26CdlVeF?*b6w}O5w}vTm8vV9B@<#_wV^VdpI0lEmyjQw#<)vc_SWj|;Fw!%Ox4^$ zvB50uFZEwGMvDj3;ykkT z7Og;!Y<+9qMWUC=La~<#LgU3!s900n*ur*SaS2TZCveJsl@Lqkt(3s`?@yQT&|{5G6hAG1MXtJ^g#bCw^@4_)@>{h6CO z(<$(Rd;TqABckxK64W<$~ar3egJt zG2PV0ROctq@&kmCkc_ZOnd&@$GTJE+5$s7R2nee-t+Wpc3Ad8He=%vQ^T8;v&gk3T zROdYT`y$i;xMxuQu0bK?&)?HfNVt{k{7szhTtty|M&LH5JLk#ZDbxbEZ%_tbfC)iZA^)1UL??gUzV+$$(|Uxz}Mz6{YDfMMBFx}K<7!*e?tq4I{>BWM^Q-m)AS1{B-~1NnkG(z{uYW1B5PLD zpz~z#FHsBNzCjuMKPaU98N6ey#}d~z6?!ieTxTS1e=2mIJYI?#A%7mf5QUUKkB>qj zC0XglzP>qq>_2DC$eCR~rGv?p0VjJ(PM8<{&nUpoxU9F?TACLP(Abz|D-Vr?hoF-l z6jyx9-00iISfD;P;eW+mY*Q$8fC&oc(6eJEDEQm1$#dYvge(7|GTrJD6db@13C^fy zQzj`~k3s^{lZ1p$Qn(F;l$4%gvQmNzx9>>`??(+5moH|+B!%}-LE4z4@Hw>n0AVB~ zBdk&;DSQKk1cX(aR{Ajt3Ad8HvQL_%@LLpEXY|c+l0uuFnOo1VUC}0g_dp@#&);XF zkh11);v|LTD6-B7oaZEkHW|DcwE*rLGy}f^g_J*o&q5*LR)t+%G757dAjqogS zlEOcsusS2Jo_RByq|hdJUxF4N_X^70V^K)?bN6%<5^g0scVi|gjG&kx;^s9;p-q}@ zMhlBO0Hx_=D5U&p`UVsdZY4WS6DKL$jv|A|+SN%4Z8G?Ss0DD}pbWkbg_J*ozm7t} ztz>7gZIZ$dQE;7+IOjiYtEV+=TWXX5F_<-+sh<8(Z4UcORNVV~&sC(bu=^qM7q&3f?E@ z_VqP|T=a+Z?M#W0mdEDGlDwqlQG|MGL()3xmOS|w*-=aYN-=oXH_B`79lJ41%GP;$ zDS{0z42m9_(bjo<{l3?{iR?JRSadb}G)149iy{S>X@*<+TruNaOE)zaN4^hsz9}s8 z=Vm=XbF;=5M|m$Cb(ONlpJE|tmp$(RiVPMZYv!>jU!I)C6vqoW9qc-W{R{LfPkl*b z)xKdz@zg?dhso&~Z~D@{KG%zT!}wb7a%P?j-b7Dlw|N%^pSIGcZQe!v-;4Rbm+*ft z<^NvB|Gk|3D`DQpW~~ML3<|((U$6*FFYB$y4$EaLvgQFQ2WZbc+Q*Rg(W?&)g}c)1 zewCW+b{!guyHU(!(!W$@G~L2n5Lhl^uY@Gh$p%ty(%#iPrz;yssg?;UjIR=Bq7}vt z6lk)#D0t|Ur}t__3$jdt89hMk{2M)+g4&RTt9-b^&2v_%hnju@g#IUqT__ zR{AWf`}iA7K))nNS`DOU z23ZezkI}6%v&uRrQXY|AZ&WOrQ=Ox}B$AvAiz;=_`L;UeNd}zPIqWu3=kQNC)Hw+- zW7%a?xa!`yEf;>uR`~gw{KB)_MB(|TEDHaDn|H{y!hMNZ;j&l8#&zp^e>R`Fj`nwC z|0|R#wA*E6#9irJKzlxxDjNq^SEeJCf?i`Bv;JkHZhd5^UfMWxwmZGKS{q&IyzJnH zyQQ(xS;{waT6*~515S8XeX__NAKc^6_oTx){l4al0s-zv|hEU>rk>=$!CA}TQ z+zM3U-jC@;MH>yj8KkxY>Dd(CXsTaC3Www0c{TDBuadmMRv0MyXNoR zw2d8oW(dz4-zpq9S}RAI0x5X?BqF^<^iRA#H*EH|fD^jSyrbC5{p!xs)#-w;=uswz zmz9E?3K!(*tRM%rUXb0`{k&0=QV?yY(dIs}86xnKz8+(j@ODZh{%r+sklr6vo(uf@ z{9A;-!^?_&#zFgdKu^#pJv&ZnrmR8OghB$Ori6s%pG#3lK>m@CbT`h8IN7szIPqH* zuik{>jcZaTE&(w5oBG2FuCsH1Z{UncYURMx>nN!&4dQy(iYm@@VYah&LZ&2)uJ?&~ z>!_qDJzzTKpk^?P{o;(;CH~FT)6P`g9d(NAw1Kgy%7}k-07IToH zYt>#8deb>Q$#oCmq!I&+5(yJ&fMq zRz~SI?UaGp2~o*O-&7nBX@Mk#dt6{iC(FYtx+SgzgTAg5fEbi@AK=T(CW-pah|z#1 z$qUxWCJA){SKQ5X4gs-ifXW@lf#ecFM8Vb_zYSQ5xy2p|X>Bhz~*N z7yqKdsV5YdM9h=KDWIwH-}LM@nkw@*NApYzkN~M5AQ_3)((xWvL^5*1UZ&q`wrg(8 zxvApQFVbYuwf%g_P}TLpRmJyD2MygxU$bs2?`iDiK@&w+_6H;fm|rq;FZj9iBmY}N z)GJ@|UP*pMG035yK@cfFNYCzYC@|Dhhwz6Po8jlvz&RmDs~jT=V)Uh_G;q#9Aps2> z2?=fBjG>T#tR*33+Q8X@;*Ap%**9>QFpciL9?_-Y-s=s{nxq;EXygdPc2phcLD}BJ ztc{$M+-c0Th^mj2hVMLnuaX4+C0Ak?^CAU;=AxQAR-bf7N@JywnQhI5wEO-DN*hxzL2?`Or5Uv`d23S4vUq?oh>vl7 zjXpKQe#K^>L;M*Qd+G%-XXf@nniMp0dsW@sm~E7X@nG-yJ2%h?r|*#>)l%*?_^ zy4Y=Eu!n!jVzB4yWR-N7wjqXaYKhv=Pk*W`{6)6H|0XCryG<0Hf6Aip+DMn~qk^~T zb@a|vbascU&ar7OpdNmf0_!tH@5Fh063)r||Ag2dKSyxxxmVKfgRT#n^K%fpz}4%E zy#LvMPT!Tp!xeNb(v3`=F8(;u$7nn$@{M=yne=Pf_5S;PlfUCKwcll@B=W-*)j{-s zFq1|=1u>pfF~(&<*{Jy)p%6v=D?Js{sqzu`QX$17p3s0rto5=S8vRF@jeZ?LU>f7B z%%y9Db=|si)S8p1cWAOkr)APXmUU-iX_H%VsLN>eY3sDkqLzQ9)T{??$cl22q#f^5xVgM03N4 zLk&9cl#W;>>NumN8g*Zmrw99k#;I<+Wi3A=cm&T4k#|3`^$pgStGQ!!o;KZ4*mM=W zqpeJG23eSLZ0IEUz?BMU;-Kz|nRT^dr9N3IQ;#qCg1VB$U!gDP5ZY6w8{^f=0QDbF zusg+f;-Yd!?MQXhm0iyRlm$kaKP#-;y6&u`*kQfaD~H`J?#M9vnT#7EKY2a!Q;XBz zFbmQ8^eTuh!|@12MzGv0sH_q9qrzUxlW&#<|e&3 zp-L@y_mQaJGi#gkC#RP)Qq05;-y0Qek=})chpPFbZEvqi4{Oe+HWY8qHRo|4yir9p zTDde*YEYw!eZRR_tITZkzQxWlyYf={=VAJ^*84Uq#yn;ce{wTxZ7V@IUqm(Y4TT<0 zKL=Ww-=a@-wWcbxI929}$}f^2B(~FGlS;1`8Am=)&o~HHZ;IJ?6a6D!a#})KQ^iV5 z)%s?tTAhtwN&g@m#bB^0uAtNG+MnEaM}@*a9vB%jP>IM8&W z8%BnKkysXr#KN5BCzb^P!4xH!=vO2zB@82nNEoTn_#kU1_~GRY4?kykn8jltcxhOh zqNhmTEE#&v&=UIAAK)JBf0fIFw!ucjE3}S)MPOKi`41f|j*bow_VY3G&82c#D35Zr zdbTr0Dw9*zZH%uR9vY%MhlVH|>CfsYfvE7X-9$s|)hVG<;=-5BHgW5E^zNb*Oy%)| zNj%mo+UAbjB0>1@dScFV)Tezt>1hd3Ve7UCTdoYFPoRBbU816By-W)OU#jKWk$YHu z>Q8bn+cQ%LrQ%60r8Xt1xo-j!gEH%y>VH^Kl~fpIu&%A101eZLw)$^Q1%yqOTsU`H z$%XA{tDU2!Nz_<7i&Pk8@&U<-pj}7rX=ac_A3u!>ulRVOOgg%I4`eq2y-~V*Sqf{l zs@tF5m6>#2s=1c~LF+o|*ygDi@$7y{X}ev&;$r3q-Mf07tyI6OJ8&^5W>#hC;S*I4 z=PG7mB6z-E-73aR%*$D58HplI%bal-oi=bhO|YwtvN>{9lK<2^*hn+*+_9-LP14(3 zYK%J*CF&5RK0?-zC{+#NZaB#*mg#GT|_eY^{h&F&lQU+vV2 zB{t75_?EX^rfL@Km=xRc;K+-WZk;-RY&&(O9WA z{5SZWYy-}QsRlipCI%KqoqBN-y@_TS(wak>Ku9efYDtA%oDR(oY>XEh{q^x`jbM~& zBU3bg&`;H3!eD7*rOG-r*)M}a>e^}Btg)h+JT@kUtkDuWh*b(!^C#93=dhPVb-+Gq zlSukcMOIHjmQZU)>kB%YU2vw=3ZqId%dEmUpB@%z8_5MgXpNCzqohXC9zq!~fBG8t z8YLbc+4|-lM}(5z5{Z{ZdXvUTOK;6vcoS;ErEXvz=YDTT7{^YzbhhiPqzfyD*--SF zTCG|e9*|d#uZ+4|{7WqTi5pLJr^Us7Hrg>#oZ2`}la5&rG3#)qCfbCb-o*XXu44WB z;y2Q1M(b;7i&)htdUH|~8S%ZlUdY67zJon88qNy?%cw7ZN7Bn%2w|oN$m*>I@a>%U z3D1pf9$Ezbd+A}30G`Wmpy3;_Nm9t}D?*mJ$Pd{a1{~Fdt^02e;lBta6CL;k=9j1g z`@>(UuYZu;*`{a*J@`3phKxM;4SHCo9*i0VaN$m3Fi5py>u%glOCgC)d|Y?p0zd7j zul{xST=>f@UHCs4xG*#c;J|}Yv$ksB)_uEIOuA3>?{4R6LArCanouF^!S3x&nC?Qa z%1kLejULu%n5t$0{Jb!%X%%IX=+7*aiOl(_%H;cOq$E{wi)B#b)KX&YrlK=dp}7=( zGsf@aW%F0~D0Y!V2qSau6wAadAVLbt6^DFY0xJ9YI@Yxu};-E9o8?!yXouQrM_<&1X} zjL2!1!O(4;hK6azS#cBH!X8K6oK>gpik?U6SzybY=~28RvRvheoU*&gE%QO)VL3&E zbu`dqVd})-)6#~A<*kE9uQ~GcV~2+$m9stxabZx>Aouan+sJjrJs$+w9-DV0QH;^} zXNZdB{ha2;WYhcqcX@)F`I#wYQnTHCNyg85O*Jj%r}@?1(e#fioHc%g@C}1NmHxpA z)86&v7po%+O>9(H!lu^q-C*Pk^l@rR-$tATjMc}ef6VL@t*sXZ!KoVbCrJiPs70ml zn_F+t%$R=qcey~-YLC_rx%Cnr9%~;Gy=c;G`+%`4MeWrbttfvmTvIF_YB zHIb_C9ADf#JHJ&OgZ^Z+p^0LH25;+Pna5g6A#s?A-y79r~C?sIx0|`lY zABnD7;5|(q25C#UmEWp(^-U<=xMh>k#TVnFq4e^M_3a!07h(y^+u16N$c_hVBZ5pw zuo+I3giypehg6ov8u@UygAE*&u?5M_(e&^8$lPLazP!!9LpUqAsyOW9sKbB_AU+~W zfrjB1QAj`-N=RrJeg}mFgrS6#X&63+;_Y=9{)|&4gD@1<%rp$!dzf|8k(7E`-*jXr zRpsg9I9gWr?^fb`@AEQfe6^mKeGDDt=G_T1HiBcM)NtF86q9GY?a2N^Vii|?1sC8e z!coGR=8m*furxa3y^=_;_B+VxsSzARqN5JPqe04JB0WF_?{fBpE9js2^^%@urM>Uc(Zd_<1f2p4e$*H6suEQ*LP4+*4P?#?B%U;VCNG!`ahCzy6a8=oZI6M{QRhn-nL;TAW1@0REd~ zO)G(^Pku$xlasPuTuwH+KNwyzChz{(Jy^RU?Vti^y=e0_14^|=Mpd6!%&|xY!7bYe zN~_3z?p2IwqRk_yceDZ%%P8{E;r=ZukExd-M2EnNdu{?`#Lrg~4;w#1Xl!RNik= z2pn0mpOiX)eMD#I*_1#~MSLd;2~flWQbH`n_6i&Iez=e5bsErSDaZalm8<#4=95|yJ}WZsQn;ZkoFHiNGXWkJ9cyy zsm2d*vny=@e|%&ceX}7ymu~SNAnRauMKR!if(AtTG`>gACi0>U_+O!rfCjvTgr=(} zQAj|#l8}rBe8jaWEjIIngq_cis^u0kewVU92 z?P0-V{m7Di6O@A=a%MozW54jf77-~fDIxh>)Omni2DpLYkUSiP1cao7goflvC?p^x zB_us0`$Hw@JF$=!n)DMj;l38d4TYxJ#mxY8)Q$3LK^fFPHME?7e4(oysR>oIqSu|7dQ_p8l}{SXQXx6i$qz9;*O(i zV(TFXiE=OjZle?GrD!<;|42xvL^&RX1hBYGE4>PZgj)%gC@zW#VrU)`MHoLR=i})S z%|#cY76ZH}a}g?0u0|mN5~a#E~Cbe>+RQfkn7j#-SO@X7AH1bqNXy5c?7mDifcJLIMPkgrqlF zJ30#dNEB~e-cD?)8V!L~j{;|vYh>OyuV-cL5T2BGIA={lzCgxVg<%c#V43k`5odI-e?vDBzU(g(Z% znkHp^JWZl}{}pOAz>_j3p*>1ZqL6?dr8YD7f~}zJ#I4j`kJ4fkScg4I!hT6~jf*H; zq~ts3wF0#m5QER5XSdOUScO6Y61;?jriBwxNC4p_q+F!RSt#x}$|klXa*`@%3fiDP zItMK);3EkMl`0pakN_sPX{D=CNVt_?sqz*S6U5TIq>6ArQtrpoB+B;>qE-VuDRUAk zRqjI}0aB&S%>8u~5^kmTq{!;oVZS80#zj=BRB7*F*1<2mSJ+#`)Nin^LSF=| zPKAOK&)-oW#F;6vddw^FJV~gN=aa`lG&~tD0ZuV^4@MiC`zDN;%%luK>P1N&f;=g+ zAxN>Zhc69&)a~yElsv-?w?RlW8rWl2*hyMpOnE9%b2CU zC!VGIRCeWtt2)(}L`H)W;$E)koUyIwT*ZvUS9G%5#EMS-DT@`I-zBT0!;D=lXB1u? z6;6MuEc|u0!k-Wnp4}!2&p%~Rc(I%{;C$u-q^Fnzr1~~u;mcd!*=rTW!08n^ztkP& zN0!(IN0k+<+uNGeQAU7Zy?=yMN#iBJn$=-?HYEa7Mb=PAfIbqC60${X7#bB-xMuY= z8qj7X-|=Fdl##LGtQW3cp%pENqXb%XvT#*5qjx!bc_6U#g{x~R>Xj+^d&R`7I?{9_ zT$=VL5u}txAJlI-vG}tka$BMLZqP``$myN*>^8dHK7v95Ix8e3G&y}9g#;ug2}$pE z>uBKqJ1E{bvEF)nqSb->)D^1V*ukSMoI^tjyh;385Vj)W*vO~ z#(%sa#C!KX$hgh^^w$`$&$9nWt}(cr35)0&gEJMSVd<|k*BBgnj9X-D1?VicpqIqi zFik58=xl_Nu?rwI&$Lwq?L0uKQ18tmn5BWlc67aJyNk}#4=d#%XJoyW;55cQQDA>9 zf%?u!&kwMcU~Np(JDAGea?>{RMFam&F=wP`3E8xhz1+X8y{oyoyPZIRxg)(nv$vDs z51O@te3{@Gq^0*8dUhL~41Jg6*S?XEP;Ip<3JK6w5|W{9SujLE(01lFXtwO8#$+< zkbp*xgoFm-FbW9>L5@SOAS{}11ZLgYa1-h=AP#Tf zhK1ws?IvIQ%rHO9pW$EShN?w)Ze=hl4KMy^SV+D-h&>V=F@HM*R;u9dU=Ajj6v2@ zGwb`|y*%RFhrKT)y7KOyr_-lq>?nB546kR{ifl~tio}HIsrV)fl3>1wrQ4{JXvO-m(-nYF?3tPts6NGt$gh}!Mm=<;lJ)05-ssT5k zkN^!RASGm%*swL~xo}$8NgB}R#(aAO0}@Ai0JEMCwplAvP}e2!p_BPwy8XOO?B#(l z)8~V&qx9ep%zt(+jo9oQ4QzEH*ky1r+MfuPQVhM1b|~iz6poDRol5=k&5<6!f@iF= zImCZ}-1GSm)v`B(mi2&jHaF3;DPia>w0SILtEj{!WvJ+#C@`RbErFpkYCeQQ0vgy7 z5}I7^M27?#T(aF>A|$NhX{8jz0Ja?9o1N2Z}SZtl`*YtKOulj)#C@9 zIm>1q`-%UxJb8g%QeyH+)O$co{z;StjmZUhWWZSxl0oT|U1?50Apw+b(@JNc zkZ>#6=Vpq2F(ny|p_m}Dw$U?}Iy+MsKPmU)xe`rGTTzPvUX+Q6$ul24hP|8*1+kmMyKG(G$fg#_?jLed?$bJX3wAJc@( zj{HZea``=qJ&v`B?FvJ=?9P=-q}Q-B?ec5EA=F_zUJhzsz+n=SLF*LlvKI;opmm#8 zItYb?TM5=KD^N@jUGvZ`!uUyb0G=;Vt{;zD4Dg~%PDa;R$`MkpLLmW?rOg!XqL6Sa zwI^BXD6kGCi?Cl3UE`uDRkF1AFzZx?l&J2{@MvX zXut>0Z)c2RfBI`D*k^U^#3t5V6j$EjkYRINCZwd#hl zJ2B|2V~Zz7iWO&r>(uFdhEb{d+1I~vbaMj2=VL4E7ex;=&Rhom%f9S zmrG}pH|ao+QnBnzxQ+4ZXx*t-9pY4}Qg0M1Bd${&V}J64LHcVhE#j%rik(K?Esr^y z$7#@7JdF5Lt!Px}&MOsveo!$(3xm+9{`Br)kK~~|FTvDVue>>vpmks~^O0#WHmnX~*K!$&R zLC>ZfsJHoB8~%L~1qL)hBrv0Go6=>o;0mz04YX|~B(znu7=;Ar{RH=QH2hmY@y68* ziQP0tySLQ^M@&mb7aT>TWVqnyS%f{4Az)!xLoBzq;OJ2iWcu8Y+=hTpLOlq?<#F7? za98T9QAj{sN=Rs2j-!x(xRj9ew3^Wn@VO{*C_;^nRAdOar6}DbID|Uv8noDe!z3i5 zx=HCuy#<8?(7H`4y&HvuTM6z;{RoN)BCJuRq%Y6_Xqr?9;5ifJ`$MSJ08h#Ug?6X@ z2!#Z6r?#2Ke}h88t<+w3>R(Y{9d@S*`z6seE}|^msR@!L*Ad`-t^~C^5Q2Nqv)dQ} zJ{W}rH<7(qI`b~YBj)xQI%XF6}+cIufk+aeF^u{hz_wsf-u3KZ^Pw&P<7Q zWnPKrM}#`L11=7t;mL4Ody2t(F!bKsCw6EkZ8f`Ike~+CkMgqwfLVhJ}Jk&M91eEY%Iqz{62b2P5zPS%Eo#Aw`F;y~+XgRtEb zqO=oFD)4d9dZQLjJ=IpJG6wr^{S@)=tQj%OIJ~Tke6M8A29{rUGAw$S_O4zz;>0=R z34K^}2a0Haaqk0UxASKT-kN#be#kh-L03`8@c7qD>mA36pIAZ8jX2e_3v+&};>A~K zmJL#B(x7Nu-IG{78cj(Kpt-2#j`2w#W2KRqZOw&~(<>*cqf=#CmDf`1@iYRRS?!o& z?b%Q}%BW14tELwuaHWya*XL0?p3j)XYsbszQ%vnBOW_~mrPq#rnwn83wnexvqT~4r zV{NsgJ|k(*Q~7KnhrOx5<`XT`<`2c)phU~n%DW@A5fUxR>@Dw5_DB)iqI|Dc-ht6v zJ~}*%Of}Z{;_!7;rx?6YYWjEDYWlY`ki4d6w~3mbf6A_=SD-5;^L@#_;dsnlku8dU;yJ=ntEU8a#n9puh_Px;im3L@t2!73X z7hx9^+drh)Bd8jZ@)ppw^%Z(HWnrV=G-Za-k5EWJzo~?T_O|^7g#`2?Nl3cuI+|hB z_j*dgfC7)*Bq&k48C@Hh&M^8bXH91GOQ_0XOKkL%gbOymXhjt#eZz-Y`@Hmo~&&|ceg+#q;16$evFq2Hut3cJfveASBv!PBCZ^PpA* zr!))n;sm+hh?&>s(JVNHF^xA1&Y(|vvp`o2e&gUkOM#6Jv`8!o34M=}$dM+($!oTZ zxRY$vi)LjKQKXxe_t)Kq!LY5I1g}eNncQV-nQUetdCP>|CR!%^Q-&>* zDAdebCL7XQCP4@Ty@D@RB5G);;%*!o5}ksrRW@c@V7`2cO7q~V!q2M}?&Pcfw`uQc zR=d@Z3k(v}?74Rq>V@^*!b%^!Ums1&U0J+aGk(C;B&`>xsuD$M*OkScR2(eRS(HVJ zuX>>@_Kr&nY2$EuIRYOWlA@T0r1%=67?%{^p-;M`2=b4wB^JjO(GU@luo1Q0z+W=pyar^qi5if9%B}_s9G-dY=jK!UouF}`I66wT zU$rsr*0SpxBj)kv8ug*Ls?>-7P}mi5d_tP+q&Ms@+Pk`0A4-D+^^sm5?rHiUFrVHN z)-Uh1c82Z9Zwj8l`@`fl#Q}@2q9{Q+Pk=75J?YtPbcsC+g#>hoNl0jy*r6ySpi4|b z%Ct-DXcRA`KJx7ndpT!KLi{6#%n8FL)F5b=*sfMoapnsJkhM!p&r04d%y&Ve=(=#N zDScsjIRYJH1j}e1!gYpGj0@LW=u?bv6@^F=uKZg= zxJJT82-iO=)qPIFReecBzZjNOgzG&v;rbqC9xhzjZ9=&6PuqiV9q*2Ctxs*pMY!_k zs;Y_PthlP^ru&$a0NvDyaQ&3_u5JofX^@~knl-}pdzw*#9F~D{c$l8uhH(7_3JDOd z5)vw0|AayUgsX&D;#KJ08#wB)}VtwuGHzea2>R=$?i8pxTg4OHV9Wy(WD4hy&OT(H-cqj z9>VnuMlmj2hv`#{a216}60ZDPL%2r5MhMrBD>*wS;i|r*W#Re}n{YjcnTHEkcAF5c z{L}UzT+i-~aGjVc=OSGBa}D7tt}4Ry3g)CP3D--scXd;^N`nOT(X0`!w`xWSa#&Iw z4Je13>Dg@v*SklqZ^~)&UxEj1i!u0{pn#|~D)Wyj1pHR5o zWJMKczEA~QdtCLbV=TqPn!%FRyHYO zRxeAC_>F*>$V1Hjh|!Gq!v2Cj>0(w94Zff~AgQQ^sEve>5Vc1uq|QmysxN6-)PC9~ zYM)@hxu|8g2~o>GZ4aXMoP0#>D>NRAm8;cSE~<9tp`q~Ms;pJNQgrQZ*K|+UF4ErB zY;;f8MokmcSF@&v_Su?cg8Y_&vRFdTZbR6<0EGkyTL}pjwnw6n0AVX3Wh!jfp?Kqz zS&xM6DV#N#(a)%-+Y`3Wu%e1HUyH(4Pfgx|%y&Vec>E6ah^^cgb6vn*4|F%g&e2Gu zPS=I)xgGe;5Vk44>V>e~Ke3iiThXN#Cdm9o#7yR)Y~Rj!#+B_|^hsB?s&4S5t-2;Y zsyYm98;K&JZ5JrK&Pm&kpJ2ebwq>^oZOcDx58AeokG9p~2` zWLW-ORnZ1l6*2n_g6FjUBX)X+{aMS%L$Q#Wg>pXSbna z|BONcbgYDg>e!vG1uJ(z$4W?<>e&5Iym3M-QHpJ#uE1T?oGjwc?l^-T#x&70CWtCu54`bMzS z^N_IPjAC5EPSPh`!UjUYSFie}1VXed(>6bigpClcUskG-oP?|Tl8AmWEGg1Xp}E84 z^o;j_O}Jjf%)^B%yG;mJ{%Ly&H<@fN+(NP~rMT6cQj@C8SJ+>-SN- zaW#04gzI-WYciu>LJbnzZy0J#sae7)vUgfh#hEXBn01P*o|U|JFy94<;_+^G!0vP% zmXTu(nMj?k3)dZ}ILXZ*yWb4qn&PY3AY4U7lOkO8as)}=2$oHG2-g8dF)mzRK%ZiS zt0+X0aOK|`J+6_k5yJI4B?smtT-BGfEL^{A6RvBRdAM+8w+Z3OKWz`f_1t`f>xtSp zLrv^VVQ%Hr(N^>9+!?VUhJU&W-^?kztZ3Ku%uij?uCLPG)z#x@q)CE0Y1W9>nr4+C zk7b}9D)j6&#OqcR5+GhBBvia!gF*tttAv!Pczqj+H?9^>R3Q2Gy57QBlNtSt`nbJb zSI>$n&U`J3S3NCxCFZ*zQFL9relb_-bX~lDz5~A*;x)xry%4YZnT)dXO;N9UL4vGr zM9Xv@>h*VwV_d!dnLg?2HPi~ed^Jv;ir-W#5;;P@u2Z<2lYUiS(z1U2noYkhyx!NZ z>^7la`KRqczn(|$J;5S3Rrub@B=vPtGr07?@AVJnQqUF3i z^y@v0V_d&}oIb_rS5b;Y{mQ>K`d=fFBlPQj3YT-zuj)%$*00~R>DT{Yz%W@AoVsgGAAF{d#Jy)akl@U2A2N-EW3|P4U&N z(66GVNzt!*L4vGrM9YPF=+`ZbV_d&(rB8ACRg@x8zw)mQ{ThiJp{fJRfa)ias|s-0~@Fak~qN+wkeCy4Ai@er@FV5L-EE{^ob%R-}$n4 zan@u;Kclv8ufO(OE2=p2wWx3P+~iF&-vx=H>-zS4xl*U=`u5=t{ATFe6kqj1-|Bm- zMys0?fvcA$Nc~30T$YEx?VIrh?gILx3tUY)_zL&w7Gb0BTM!8(A#q0)YUdrhC5oRyGJIlBRc1jtzlDN{MyK=H=uu^!3UNzR(g z=x5Z;?aA50t*GM6*P@)&(~`G}`L1_z_SRgf({(v}a|eDi2DPuqijZFWh&iajiHm_94E&M>CWipz?A{i8y#i0>1suTG}V{#JWeSM{qj zNl-1#n(o;C8?hDyGJSR@dUhN7bw3mmpkE~QetiLF zO+o^|>1Wi)?djJYtf=D5*P?#a(~>ub`7THlUGI+FkSle%u3ul(}e(Q=EPkrAXAT{A**1K_qg7e*KkF<>#bd)t5vxOhV?7 z`^NslreAMo2IBga-6r%a|Fk{m*K5=DYqQe5@o@JXf4ly*#DM!>uN)>bewdW01@A%i zo8}6w=bt?%X)eQtYPIaoL@0Q>U!}aGxzo^)0P(50eSK%mczi=I|DvLYKf?UprT*M| zw0HH!CnwG!r_35P{8h~+L0-&2j(mxp-G&U7{ME7frn0J=>JL z8{~G8aK*h!x?Oq`mTqIslt>Ii>k0(TMKyP#!4eI+nNg}r&m&c+*H|}@ovAI zoeXus!FBt@20{DRdX<*&TIy4iots!Y4?h$c+*bu(u)x!ZiDdGHG&!-!Sdcw^nzk+jV^P^VL>jrm7YzJsEg8hjA<$= zaY+I8J`@aR6cW&;kdV+e#g|b?K${}LeRCsxOVN(}R>g$> ziQ=p2adSq$>~9t>Aqs4RILm~_4Q20&5?OjoMblH{U%B97#%PoBw&iKdeI!w z)w-;5hXKbo6!r7@-UCFm8>G<$0VoI`6Hcu`IvxF$?OOh$WymUytJPVtt%7JA|e; z`|K%1)LVq=3@gKxI^GmhOm9 zx5>2l6=IRdu{ycEY4$>&ZpKSya;Q6-NvVQYryn6aG1aLI3|XCeAEmow*&d*>QF@P* zLzHw>v81i$Y`veysAbfbMDmhhNu>kqzic(kgA6#YVc2b=hT)&Gt6_q$Pk+YH@ zBkm+qm}fcX1-*l(x#vu|l@WKn-(47U`&pv@Q1&M>*;?FCcGs`Jz-U;lqYfdraSSQh zvj!aN*M6N-@cypVpnDik_3st+Q_S~DhW<5UC^UtjpL&nHMf8sw8&^iQ{#%f(f2qBz zTkHuc1Y@d2f5;8hY|$?id;L`_LlAxmlB1IzTissXU)an2+Rc~-;dX`HzMTr5-Y>h0 z^8WBXy&rUef1iJg)XKqS#o&9s2_q;n<#ShhcAUmb=?`^KNPxzZkWh^`h(ZE1o`j^k zaW19Mz=QU&bbhPi)t94q<2r^C`$LVPbPmAQb#*0G&ykVzwNf2~qv$W=R7nVOoO6g$ zF*0h{3EIz58IgE+q+*Myp{PO&DzccbY0%Gakm){O7(Cd&N5pRAy5i;q%Ktg*)$-nnmKPwIgk<-@E{cRz!QF#`gPdXHUJXhv?g&zr?36i6E%5_r ziE($JG5;_M35fY5(w?W0_B_=}kD`$Bx6&U_NVt{kakRj%C{XjuZrq2A(^Lphlw7gmSKuhL|*gF~p2RUOl)+=YACC1%h z$lH{vZY+05Nlh16x+gs-juxqHp!ObSod}ZB{i06ro!W zSv|3VomfK!U^=RyE+_DD{W2*v)U9ZlfpBaS(p~vOveTnK>||C6axaPuB8ZW#pJwz^ zM}Xx*mXt*K6}0>rkYzv<-~*~lzMnrNw3+f43JDP4GNjt%@1Id*|I7Hh^UYur1m{kRHHqZqv!pd#!*rxeQ!3#+~XWw^pteN0$urH^zzW^j{VOHL=`| z$B9!CaiK)e26v=7;rch%r^+Gy3*L=tshim7>Uf6knF-u8N>3$+@L6FyI*)99gQE%^ z_I;R`BBT&MIooRBN4DOgn)s2eZylhQ+@hPAT~9T1tH3ms(%fq$d4A<^)K9~Ky8HdU z3gNu1th~|XU^_>Dr$V?m$u*Vxuf;AIAGeahf-w`+wMHg^4 zB|JBFa)(-JMw^FTlOEQbPivK_uhN}q&Sf~bu6MUgmP;e02CZFYUvDnfDl^->Z?W~s zyn1_>KCSh>%?hEKB{Bx9#QHpeUL}!Fx4oUXXi-v<`ojqOjH=x-DKV0L1)L&mO!ZPdrIUZqNTqSzQ27a7WVHD#rvDM!_5ZWFJe2l}a& zF4Ek3F}I0jHhQqA(#0bv_Y_!ma|-5xz>;NVbSg z5eQwSg~P=3eqrIn#KgXjeXB@Jm(B_sD|Sjm+!2}oo!hAmQ|n}I1I1}UJgjdQ#Z^H~ z#DqfP`t8^hCpohzc*L>%5r9aVFV@d%3Msg%xbIi=@L0mNVf#=X{gR%lq)e+k(zSna zwKGbJqgHHCUTBOL8_r0vLTS}0PEsZ(aZU*(T!7Qh)61lheEh~h*bpdH>Wv~zo~#Gr zy&%HsgzR3Z)}?<-vaY^<6RXbWzoqr+d?C9xXoE#6n*;}UP@V5cufmoYS*r8B=waQd z&KHQvPxX~woiB1CtWhFIy+2~uHc}32LkSd5@?cN!jV)hx)WT_@WkQ+0~(QiZomhKFhHa$(uW>6mQuY@=NBf5Beg1z@Or6C zn?;nTozliiwdOi(%8h9E2O7eN_r2rZrbh1Sq_FWcZQWcL!1Tq3YQj$TdTJXE z4`npN>hpC+ZY%Yzt(RrzsFBs;Eby(bK6`!cC3-H2N6gtum?jp!4R#w{9g9TJs$6d? z_QI8xYNweNI0>NTQjkAinlveXe64pL^AukP!)_BxLHMWamV$)+A$e>B^Op4GAVDW7 zu+s8}Y)>w?SSk1`dc(CC{$S$z^@D?hv_#@ax|8J>ny7f>bi=L7&qr6MXn}?Q#}w%n zYT3v?kFPZ3r;{jo$&V)&C*>!${E$t1q}^^R8|AfiCF*Nw6es+9PA`dPB(3WZ*yQpJ z8s%yb!up_(H5i4;e(A;yVC)yX_Lpv4qrI!SA;*P3k`XiEQU`sD%=y7B(O#9{s*-_j z*PsU^O-TBktk}@au> z&4)qWAd3L*re~96Fedk;%w7K+3JDnVlaSB>;%}gkfB|9&NuRrZ?W`r7)=3QyMP&bS(Z(F?NP zhL#q014`ESppfz>>&H+?xRvZ=?GO7KRJJ~dBI}H;Q5?OX>krW4;*LP+`Zx+Hf4V+_ zLc*&= zu0dgS#?}BtFNk_3T2|ZzC{Z_}kn$($6bcEqlAWjv{6Phksh6O*I%8^xq8C(sBU)J8 z2`E+HfkMiks&}K1a4XrVI$sWYsZ9M03ac}w1|WJt)Ni3>#a)0B^(QE#{E7N|6cTPF zJ5ghH5&Z{>31X?yLoN{Xf}(rf3JP-E_$WmWLLuc((G@5p+)8$e_J{KY)O5NEMFtVo z=v$5A=mlN>87(gE2$ZfvD5U)9I)OsMtz@U`F3OA+m9eiw!F9%14N5Oado5aG+#M)s z--<%YpS1smLc*zYZT}-OD9qVwS#_%k#{=Tw0#ym%?j*@`}pq-=nUMGi~JDhepstm)8Q&Q@zUTmCl z2i4E&qA|H#vJo79siO|2TN_rnIrEKE7(B6Y$_#Td`_tbzWucrgZtR*8nV~IKlU&6f z60F#xdhL2DTjXfbU{{;?&1x93PAtFqrDZ@p%chOU6InhCE zts!3#z%*0ho+bJUy%YSo>ujn2D`?e<+(5_Y+F-dc5D;&0BmLnvMg|?)IApR|E7fV6 z9{&Nsx@2>aemE0eS)(6bRv34GhGq(v=zp4?N`^^XqR+k$!!zO>@sqc9l`;TeeoGc% zPcXjlyI_qkPAQI@UECP|qm$iw-T!WY(rTqqELGgvQxpl7B^&1azf2K+Se_q_y;<1( zRQ8~ZI196fuf(!nIe!Ew&^lQ;|5EK;&9NL;&POU{%j)?>%59&T+t){3X1u|re4}XE zwOTO(-I5?kJ6T1qo6I|zy*z0Z{TWBh>+5?;g{+Ux^M9&}c}j)E2)d^z5@`cOg=$#U zX!~58aWkDeJWG;`)}S#OGG+sYUr`$_;*!>2;TIz+l>Z%VpzsTkhDlO`gx{x134Y0F zfQYM+h6le8ZE)}lT0?_hi}#zpNyI$nG~cbFaub)7T5S}p)sTr1!}M(G$TTK>r0nrg zLm>gfQxXz7in$eq1dL)zNSgc3n4z%id8^>5fU^W#TjS0*piGJzq)MFTVvIXywE4g_ zB9hUtxf3lc5H=E$kz7(XAGimF1SFR>t@K$G5^g0sRU@nZmAc_;D6r1B8iCQ#T*Efq z@F-eZ+zlvM|A0cupR9eigCje*mF#4VF8Wv4x+{vTGqy%?^n$KS(Bk5bKU}6A1y5I1eB_e zp^);Y>Yq_axRvZw4c7fDOx@{UKr!7JQv(paAnE~VS#cMjL@l6@@+azHC?woUcA~~? zK5#UO31Vp;n-8?v18@dfP~7+^MaNJ``BSukLc*2DSs<{4~2wV$sRp18SED*CMa@dUk3XtT3(zMb{|A0 z&?qUa|LvfVg&bj|un3G^6cZFXvoDK%2Q4p73%d{0xpqn(`x%N2@`aJdR3yE~WKW_6#+`v? zvIXw|1u-6@XeL{XLdxGt&q5*LRrhyb z8;m3tfapd38b`~Dy8z8!n@~u2WTN@&QWR4DR=NR&gj>lTJ2Cm|Z73!vaAsfrx(6*U zP7Ava!r8e>0{bkA3-W`Jz(N$g$Y2kng~gqKX0S(5NO)|b8SD=zr2MVacW3T8)gC=D z8EjV+6BIeKFM};X%Zt;(?t@^~wvxb}i^783U?i{rL@)B!(P&w57ohp;R1{MF`D+-3 zl)sfKC?woU_SjkAZ_}dAtvC$HwPC3)i2~|=n z{H^qN6cTPFdmP2&vYp=vYH28ZW?wFI(DLH6u=`*EQ^lq-9z=0LelXHlh@ux6>`1h* zxD(I}b_xm!k4-d#y%vR(zm>`;B-~2&=!wZ-=c1UP$eDc^>>9MZI4$fx2v=__LhKe4 z7vu*sgZW#k=d-FYr9JsRw6M4n&@%BA?0tS z<4{PrmFzJTlgD0(V%pC0n1_}Zr-j`Iiy|k+sCjG)3Jr3Fna83)dXdMPXnA2*BpudQjXWyl1jA)gAgrK5S|5u-DKT0(1zEeyY=LbiB-L zI+`@PQw|+R$vQriGit?!=-IUV%Ky!yofZb3Q_pvbTvwW0??zbhoGg!-GGwy#VDlw z$$AV53Ad7+tkK;!6t=EIk#)w_D2`sxbsQ}&?g*5wn@~vk)Adpm5^g0sUDZt%6vEzs zV(W~sDw1AM_D;0GxHC}7-h)EQpR%7tA>mfCQ#M#qudwxND6G!d8i42pQ6ELiin{K{-@`4hG8-+HWD!==*-Q+Gvib;i^XMK7qj1TAd-RDCWADSxUSjzYq%l#)~B`S5BN z`$;IQ&X}6bO5HY_SHoyoaTlODwSq#*pQz`dkZ>#6i5jy`?e!=oh^5Bdf(+KFwMo%i z(SqW}M=5$23Mqez-it!Qtz@TYbRm#Z@jrkfgNSO3SVnR5qU!%XT3p-_C|w^zA>~ik zKckRvE7|F)E%#6uyVG5ugid4ZjdS{F^p^fJKH8jLbH^I&@CeVKu7;@>>^%T2I_?*g zy#*9f{_H&rg@jwl&fbKXx<{k9(uiy4Ylxy3R6PSNEbau9s$(dm{HfYNA>mfCQ`K_X z)5R#Z&gh!wX-{ox+nZ1e;NC$w{B{&l{v7@Q3JJH8ox?FxB0r5{g1Bomzp`5@ESYN1 zB4z8JZ=&VJX<_$4!px0FP+X8742c$^$fC+KoRG3O^=ym=_(0q!F%&m#6|)O zQS>5%JsmA9?gTW09fCr_V-w9_FGeBdZ>3{UNVt{k(G!!w)}ffT^9(kQmKUdm-3P(+ zZ6$$iLSaE}FcMe*q8It=^=Mgf7ohp;O(-NhGSU2XCkiQlE8T-a!mVVForKe#K8xal zg2zx{*`D^)=KP9>(K6%oFc_OM<>S%rLu%!;r$2NbR@!M#eeVP1Y6i|rIqhlJ{2`%9 z`ROR6tkX@*Dw;!3Or52g>{ihj!JIO6=y0^4I7LxDoPDzF?Tj~}$RJM`?TjdnUNklCLW_$#0?lIg zqLA?TM6=ifD5U(Y^e_quw~{@AVzStyC?+U&jAlm9v)G@}^5V3x`#@XYrX;eR-VaJ> z$Qec=)1dSsmmPqX7QAqh)=^7LgZY6sR#pJPDP)tzp%)UJKKD4|zE$lu> zKJDp~C^X0wW**Dzw5K-p*h6S}VOJy_(gYu%lk}iC52T*<)ZW9q+D(0Z+q^pcd!;-^ z>Y(5lsh83*Qr<##%GA#E&-h~RWOiZBetmr>&Y|Of9>1fnZ`nmN=g$kqPtubH*-w?zrqnNd z@Mp1SMt>3(#r!H#Fyl*EOyjy=XyXfMg6Q?5isf=~L)l%wesFN`tO0JD==Z!#p{0zk z6uX(m!>UEB+6t&Lt#N^z4U10#a(5R(duH3Ad7+s*x=) z6t2Di1=bl?BQQE@G_>i4l@S9L|ZLfH4A*g7Muili5my&o+w?hKT&5229qr|geV zNVt{klnvG|D{TD@3ac}=1|WJt)E(}bb-HzT6jJ^~eFh3CYodnhR28NUptw3?YKWp2 zRDC&GSlkI{PF;&a%AcyQK_TH*O3A6QN9%Yftj?I4&9cZgn^za0WyM{9619m!%Acq= zqmXbb*@+snDCnIiCWxiR07wRlg4(3$$I*h~#z!goMHEv06#Whg3Ad7+qR~|sO2z*( z6d6QRV|XZvqZd{GlW1{qN1$|F@Ig>G=TFzgC?woUcDibF>lMa63kBC1V>KwfAnl9M z665YbNqYa;0o??Ekqdk5w4XHiJ`bNFj0B-~1N4#!M8`%e@T#9gD+mECeo z$y9?DDch_30WB|13%d^zCT#S52$ZytAB;vth$4$B&u~I8eZ~7MO~7cIw=Ba)gn>A~1T9!!AZki@O2MVb`IM@aRNy*sUm}{H=5s3JJH8J$_!65oi|sI|>PpPc)0|{9#a>=WnG0 zP)N9y>=6``#R@1UD0XIF7JC_5UYr(oAERlY}b{H^pS6cTPFd+fyIuX!H<1uGOdvoC+`hn5$o zh200?>|7;*JsZUZ`N2qFA&OpPu$5?GaVMY|>^Kw>9-C+ednF1fe=CimkZ>#6qbDYV z)lf`OaVVzFQcZS?XN+J@nL6|uw4it}qkQmC zNH`x1E2T^w+JZvL-%6LGkZ>#6E9sa<#te$7v#9C$^mqVJU-DZ_A?Yx{#N=g6cTPFdj!Q~u^sLO^(_=TMl+-5 zS!^*{UYr(oA86~_ltlI{6ddFXBavxPdXdXsjFuR82b#-{K_TH$isrI)D5U(Yv;l>L zTge_rF}Z9K#RP@V?8{}BqUFVDVfR6JmW`6eZa{HCelXHlh@ux6>`t_>xD(I}b`J^( zk4-d#eHMk3zm>j*Lc*MRu{>3=nZf)W zpJ#fJ!S+TAi#q|$U`tR)cx<8>?71kU{H=623JJH8J$hm?*hwg+?L31GqvgeEVfTS@ zkd2bWDkwC_6-E+Mfb=4dU5u6&cLkcqu0tW=5sK!qTTw{)Tj?$o5^g1X48`QJdr?eK z@XS6X_7$|eI4$fxNIp^L`zSQX6=oiboTSkcJ@z}ays#_UJG(}nSMwMhL*spcc4qKW z&a0WCLvAAH)r=qJeTsfXL$vYdY9xBCQLJrr8#B%QhbF3{Q)Rclf}c6FB0O_urnzIy z9V?B_c&E^bInABukJ0MLjQ4jsAxENa5SVz>!GRx!Ro;4jUtduk`%&;NXHU3-{&BrH zsGfHrZC0_nejLt>#|TDcZ?c~=c;40Q)4m_4PwdajXS{3aLUWhuq)X@YRBJ<}N@3ZI zg#Ezl^@D&!AzsWL6dV;q$DUkI&xkX2!8?-95{i7&TuKM@I3v|cqgblcodzB3^HQg@ zu~MzM^cOoy$gS0?wff+U?=HRzN6WubB*=lRlmX1~#euDp4p)h@tTe@HekM|LY{lty zw^m|f%GHr#nbBhTdUqRi`W>Ma&SfPcmvWjfYuPO-vevD#TVNI8Pt_2Mq#@XM z>Kl&9z3e-3YN>B+vs}c<#Bv>~zTu4A%e9jT5B0Ul1=D0ob9X(if|6;3_sXm&vX0|y zS{MYQ`tk}`=7M+MHmV|an4F$z?ld{QoC19&z7~?XG9SlM7TWcvLu^XqIdc&P$6;FezgU!Y10UpuCN@%=(c1|DF zHB{BpEn_8C-%!OrRc;JAg|*cN)hx#p%XOFPnXy`Rg5Sjs1gummjCG=3qTh^ECnk%v zQoULkT;|6EP>IYW1%OeBJi9ex`4~hNUlOfO;_a&jNlZ0HkQnmOX_G{HOpU==WLVrh+;G%@`zhucArNMEWd(IGRW;m<3 zJRaihi^7sh)u~U7j5}4zT;*zUbjg4dRF}&N<>JJK(W0|uz?oj@Y;i~rO$Uia1bKFk z6_gRB`6gMco_O|STpeMY6#HT-zfzy=l3*yk5pfy0y6(CYb*Ee+b_@?!+%1hliJAq4 zu~M1+pKq0wj)hHh`p@uizu?_y)hSVeKXQuxIli&9PU*bi zoHIpFc50=K;|>0MRv~!R4SJhkR~3}XuSb&jW#sXrGANB27)Nwy9knEnC6%P38i3iy zuK^B=b;cuG-<;wOC7~r6Jd1?3TZ=s1K&?$`PgY!al%+DtYK`%lOI+eYqCVi%s}pWx zoVABnQk#2hszU8j!Qf$MwCdI?OB>EOwPVXJm*$iOS^Ja`aAdqn39=sKK&dGXY5k3= zTX*0O!W z{Qc-*5uHDe13`uUPQoaDPnMzb_Y`bn9`ZwEnP3OSL@Ga&s7Um37EvK_8d`rH9S0og zR|~o~3*MRPH_hYL)u!A*M{sy^vF;Qp9lH~hb*Cz$gU%XXSJz1uOgq%&!~Tz@=<(tv zm%_`f$Xf$OYBh)V62`PBBeQ#@V(6E$_hj0i7ts^@2tvGw6Cxo*V!K{tEA0$2yHfAU z2fjc7O9w^^Ie{6#(=Lz;3%DBVB z;rH@swE?Hb+73Qkv#&~eb{m-{>}zC*{i=MwBu}Y8S}!Dx zCWJ23U91**zoZ-0cfU1vBg|veQ(xM8ftN%J9M4&`*v|-y9e2BmQs3_WBIz3G>#tWRdapUMj%6$+)u;iq!EI3coa8H2Va0lX|L}0l9i19+3+3v@ z5{*p`RVm%@gv3(LNL+(`z&Wy7Ewe6=0@ov~{q8%s;L)6bsM>7KTUQ;e`d^C<5phW| z)R!{!GELQ$17=^Krz%40K#F=jyC0Bj9u>CjMx`*{&9E?rJUUQ#ofR#nFvn)>Pd$Zu zzhq^L3izWk;Ex*dk7sDUFz5fA8?23L!|=c}qaM%$xjC;i`uyk3__Hy*OLmw;Q!`?_ z5(N!V%=fS=gR zVmO$O;ax|9F0M6;OxBrCI<8i7>oYXR=XN%CM!bLgi13vmjOfenCxCG;FL)2C-<)v* ziA~lU!KOzH)l28Pg`m<~8RSprJm*L@ipFv&eLlK6wV~|#e@xLN8~U;Q^Y}_bemaRX zpZqA#L8hOsW%>L(=QKWLM1H%jG(nx&#feGzw?B8E?z_O4Q4(#bup1iFlhiFX$bP!s zPxogTU-;mSZ^ELOUquRLd?|}*T=xrYd?8H`y?#`&TrQF!*RLNO96W1)+a~%wFH>kK z<158(=C@=K_5|Y#-@L{brxZudE^dtfQDh3=S<9T|hd)IPpYw(p|1VR+7a|4k?`ocD z?qNi-f3MJ5G2bg%Moks5>%s4r4+Yb_iLgcO%yct+(y%YXA^rgWnw52aUrTi_!U)w zh)Wt5_{B)I!vBsc4Spe_Fp`u7zfV;Z{F0$0#MOv`;1{CGfnU%R1HTqk3cl|O-k|Ed z=EA^p{ym}^h+J2)*zsT%^H$Oe~ zqElVRN5k=NzJh~)>90fyQFOGx`{Y z9KE3Hd}^m6?RF1$1WMO^P)PaH^Q8nnQ;Gf>K& zhC<4pvPBdUZY4WqgY&@@wpLMCov}3l(F>wpf|eC`0ZP>CQAqg{^)?g|ZY4WW!*ie% zroIQo)frPm6uqG8XVAjpPC%*pRTNVGRQ&-83Ad7+s=CC?(%6+Lg!D^r=gH=E7^$}bLhr06cfZ!V}qd#4&7+8BW4v^P~7+^MNdQ_=ccjYM`XkjVLmRsK)k7Q5?Ooycp{&amK3JJH8ovzy6^$KI( zfr9Idu^NmfCQ+4O)Xtg?};2;!RXLLQ#n3JbK>jj5j zh*|*m4w`q5LLud!cmElMgj>nZ;h6nhhfquqca7#(cIO_+`o*9{$~mTWw7fVi>^=zR zOek9IA`}U|YL6I~2GT4vN^5V3x`yeutMoD46MS($%Fj80qMlW*MT-rPVnjwL^0nK51 zppfwBM040PQAqh)X*miBw~{@6Vsh9^QA|+i%)T7<3bed9E$lvs&aYCE*jXqt$P-2q zi{j`-7CQ$mF7604i(QC9!s8RoVppS(^0(4kP)N9y>=6``#omQtf?{X(WwB47<;7`X z_klX;PRV0mLa{-<;7`X_dzfrQ%PbkL195|Fp^jRq8It=WVEcf3()+v9)*NQCYrxW zD5U(Yv>AnjTge_fG5PB<6cZFUvoC+W87(hP3%d`(X}U@R`&Sef#6V`qWCbBj7JsEFc% zg2%{VyEVk7dI6YRf+%Hv#S~g*oE`>aQy^W^eMoa@Ye02}9DYSft=D%S)|`}i8MpNS z(tv8GIRk18y(fQ2Xj1+d3MuP!6SIouK@?MGsV2KsG)6F|Q1l0ALGk>8^5Jn563z$1 zN-0x^o9O40|hQ_C3__u)5zEd#nf5U^nCK;GPJxnE$lvsE^1OL!xy2*AWslTK`~kE5)=~@J4Q33=UMEH zXnAp3*nOZabW;-9J5X?tGmJ#0LFq*<`zTss+#P5x`vM9Hk5V+3eG7$@zmlTJuw+<2*m_N&g{!zb+o)VE$luBS8ppq>>?BwSD@v^X<_%lqR1gKY92cag$B98%wtg?y~tzdpyh>Kk#L?Set=HW zgW^139KNnYc*d3$7hj}$RKXjW{r+=@M$NU@=JXk-~O*@?I@jI0B z*3MW=hm-aEV4J7Tzf@1FQjYsHPOVbEjhtSkeBrmRj8oPk;>q|fk_Unjxq@fUV&T>( zN_+A~G^FDKsOv}TTu-R!kSw%1e-~OY6cUh9+qBZ>P)N9y>{N|xfuV5q z8z`{OxEg`cQDxhv8-9+K7Iy(zZxC>CCz88g*KT$t{Lc*acgEBJL@$VXAX--31t?LU zgF?!ms4qbw;a0K}HD*!Ju_z{prN#hA28)8)>;YJh78Ex=O3@MuDSwJ?Mj_!=vQsp= z>Ox7Um!ZfYq8h_PQ5?O%XFq@~7(uQAoIz>~z)U)+>y?4+Ym5V>Kwf zAnmu&665YbN&8b2QvRgNnZ;h1S>=cAY)?i#JG z?3QCnrW&+J*^?}CuyGrT3-W`}s0dMHQRNv<2&S)iw1aP7lXh}Z^yuAa zVR0v*b4WgeLc(Lyuu{sl7+*yp`w74749JT_5ghwZu!&ae?^0(57C?woU_V|g(VP~S4w(}e| zftDAih200yX;n%RdmV}l@`RzoqBwey#jZt*i#r0%VsAwu;qi%Pv42A$i+usb1jWwmQ)2%QEiX7g~Ec|U?i~s zL@)B!*=SjD7ohoT8ij;MCYrylKq2LCr5jO5xRva&6O+I0KrumqGyC$_htcxlw6Oai zoSmyAu+O2mAU_xhEJV?Z4E9~Lu(%V@4EA#r5+0jq2K#RmQvOz&`yaXMRD1NqWUxI@ zOi<*^z6|zHXnAp3*nJSp+Ex>aeMb6wQ{1)d%F)S?L?hV z^Z-)Ii8^1(9}=3Bzl%c3I^D!9p7}Y7sk2m*-QpP|m{X<>{RJ&3o?lQtEc{CD^4YLb z%G9BKQAqh)>7P(YnMaMeZ}{_3Or1qd&nG_~iRs{9vT95JfLC*c!C3xD(I}b{YyP{|r_{A?0tS zDhdg=l0AB2GT8YjCMa@dUk1A#EiXI=K=!DGSJI<)rhn+* zlk4dzapo>~N74hkn#e zb5|9g56}DkzKS)x&$A~=X7UY3cBJBv{S__sK+g8&qv0`JXF+R0nMY%ds zEVJlbKFLY4qFx&@f_0E+L(y4p)Jm0&PIb)DLuSzDB#(p{9-b%85w>COC$5W)VFpzn zB~rr(Y)i(G-dIf`Ls9oAb3029{`)`5E<~eFkFBeDT#3RhbCw_OlqwBJmX)lyu`%Ay z@7OTiaO=Sh4*%1M-cT;p8->-&!do2vA9k6?u6WEuak8*_z&TR8k1q3@0@8DX%`$9C zfc;i6?D*m!D<=e4Yz|Ix-aJ8`ROd|}Q>{7G#<*K^Sh&;&oCeE)n@i=gQ!AG0E~Q41 z{+yNW7D{|+!Kty&u%>@WD)a-=xfn5t2-ELKLH4em&F!mZP1`IDp8oV122F7Yep zRJT4=ZVWE-9VL_JA*};ZW8iN|W;D{{?s^G)2u6aO|8*@vE)0sTzI-9OF$j)yA4Zep zPLw3cq^;)29qCn><;cD0VUZj;m*GHDWW*-_pS^Q|ucIvUf6A?tiv=q;p^}2wbZHY1 z0VzU-QlSeimr^cUYdK91ZBEmq^3Gw-}J&-6QU-n;|<_}L9fPMUn5=lMOqd1uZ$^LQ$(8D+>q#?(~k zmZ)xFJFbOn)EuvUfydPftmrMV#ydxAEIhGr%J7wWQX|W}X9LQtrUg`bOwj6z?u_@PrTyIl znrjS`H;VkDL!3jF`$E+ZBd^UWEq7n4>$0VCn{#duUaPKmWcQ-(`pdQBe(hUI7LSIK zl#U+%=@8U9b&m5}l|{fNPTxik_=U+`Ejjjal){u7SQu?hwn-*nnTt$Y0XAw!E^;GX+cPoCBDx6r{d;kUL_PbMns zoso0`x@2}`m7DF)e#Q9{?vGVY_dolb^VvC-mDP`*uYO!r{rH9I$1|!Q&vZX}j&_f8 z(it4dYrt=u>d+{rx4=f&?By?MF5qx$A}n)Z_C zjm`QiVH@t~D=(YcJTeE^xpLwjNwm4RGrOt>AMN|~#A`2jX%ByYda1Lsw6L>0Z(eI_ z>-@>hv%9Cq%k6m)~XCc7qh|L`O z&=F#AbL}9Yu3=+dSCV*5BryN5n{YX#rLvuy#PMsN#If$r$0o7zE%%Stu6jA4?VyHs z%*oD0^^pUbb5QOZSngcGthH9%WHsyePm8oy4(RT84k@w6tONRcs_$#WzWD$10j=Id zEtM8km4p8jl4SkR?yQ`GHB@kT4t_~%(f&?{>ORdwYMXiZ*JhdVT02iUi&~^pNN#h$kr$czfSNiWYMFwU&VVrgZR3 z9Hs6r(TL(sJHv0&ELjv>f2_V?Sbeen#^+X%izfBp^1VC#LQP<_nxlTsF7j4DH9aIv z^C>s1j-^OI^BJ==o+9xq$;$N~hN1{}XNr|ixLZbqTff?uYj;@2icF)S^NLX2&Z0=> zbvutD@hr)@4c}a=NVkKM<&*9<5$T4O4-HUn!Zkj=K1ljSalvcnQ4{^e#x1pDL1a;N z%vYVQD+Rf}6n-1aS=Uw1XTyu`+BfR&LAZUY#dcI{h{#dY-r(q|3#sz zLP=MHs{b(1iT_Wvt3TBrbU(QN@Bdi+9svIvhn3owmKLi&6n_dIUH+`+7EN6z*1n~5 z)Ooa{!0PoJ=XYmVy<5&jUTXUxbwG zeCcV}`K+#9=hNT>$h~Okd?OI3^MxW!=j*x#oli#^uG*&Y4JRMNg85iVzuiWa6ldaV zf7TFCeHV@NaLECspbh-5uMFQrMF-tE}B%UQ%s-ZbZidNsCVEMEf!muIM zO&>LPPMcAz+fpR+Vx2^h8ZFlFyc!IW%Bi3@X`+DUx}~UPY03mSoBLLo5`v-bAtTsnv(DA=EWA zR$c-s)W;~2d7(Z_k$9G5p(eaB^9tq4r__MLhE&)8Md4Ph<0z7OsZO9sjh1TsJ27n( zE1yz*2pdA3PGjXIpq_d-MKUkc1r&*AN%qv3CqplzOh~2LUGNQfGIYiZF)L}HJo!|j z=Tju}61|Kf@hr&_O?-FoI!cCwsy!nh%wfY(@1)`KLQuIrM3KzP^+}4vvn0zk@_<$4 zr0N93>#*4AdQxnftuM| zip1NLnprzVGM}XrC=$<-+&?j9b~SB*jB=cE%nj-Nm$sH8qVlPo9)H}s}4JX@?2F!~=oorW%#Cw!F*))n|K1;JG63>#{MKMk`k20a|DV~#c z(|EZoR*>rB;J|Szpkf9=CgDgMdDeKdnd-f z9-vI9af;_(Ptka}EaVyl+jJEJdy#UXI%ozKP}p#=cWAJ@2-Lwg{UuzX^WLNmwk<_6 zpQT9@iDyafo)`z)lQN;sDV~EJOylLUkZa&?-&PFlSc-+ppc$ACVZ*^ z*c7BS!;iGC^AKnC;W*XrDAxMe@MAd}GL$h?(G42UT0oi{L7J@g&@1MVs42fgks56` zF?Z2y`UG6)=Chi{-9@7{bBaVK&_KDrP(8F!B(4W7ODTJZ_Mu4Tvve>;;#rap(lI9) z$5N(zU1NP0PwHaV zQ6%$Ox|JgFEXf@d<6>(l6Y3r9G{d@!JxSx`vXE;KxzSBAvKJ^EDu!lc5fmF<_7;tp zmxFrQ#=nBAVcwM4V6MOF$KiNO6))yFE0i4vAGn< zypOe0B=cE1fgcgpt5Dm~7~`g1D1&d0O8A(a#Sxlz&iyOGhcFJ7rk#XV+A zXLPLf!8YCm_RxIe@S}R1$u}c|T}#WB*GE$+$*5nBaz|7tFVxSkv=>5)C+)S65BO(L zEfv|tf@h>C=aWy+mX2$nVIQsYm_zLh$)by%muRryaPA?|leaf160p>aSsL?eb0=>e zk}TEGBQO-LZbiZJX*GnA>tLI)3_H_k&5Ly}iez4_2T~-SC0VTDM;$0?olD8`sWr@D zL#`b(TwVz3ttU|=^Kw0dBJnKAa#inWR|Id6mBfZ*uciU>Vo=H6Op(k>_8yAF zvm{H_zkgX#>mw8^pIUtg8$x}K#>z`Th59N*GB4CoPg!2K2KT8dN*znN@+mc-up!kQ zX|U#{x+_I8FV$%jiDxOrQ@!cN>h;W76f2)n8*^J^#?z}3jg^;xdTKXCGB4B>6p3d^ z7HZ5*LFZB?q*Cn-kOtfolu@FW(?EIhsYI`*NaiJa8%5$-k|i3x>q0s3KS0TlP_?&* z!W=dZ{ZG+wc_FA=U!+Lp<@yFi;#rdA8rfT~D0cM!z$J7(#YRwUh;~~VF)s%d?Ien1 zUbK5sB%UQ%vSBsyUaI{RiDyZcsxVq-6=lmOSCgZ4 zGA?N^rWxSXp&Gu5BAM6lO%#b|N!D=8wzIn^6Vk4B*44P%F+HVfvPgNn%40NME(^H^ z2^%(^rCg{E+DSz~(TGEyRs?_hO8jV@*J-f42y_q0`cK0pGVe_-ODQ)1jH5{AvowJs z@hr*R6XRfQlnHfC@f>VAjhD+pu0d!6jdGTGI0Zw6&@3#3VZ+19G+JH;>S4VUiFYUU zu$2_ae3s6qNIXk&|HOFMWt0iEPVqeKMj9`dg5}JvHIc&JtqcmJz z2R%61B=cE%f+F!O$-NWfU(Zt})HucS zuQzGDTo!T-g59}_fsJ{_)b@*+?N+nFNq-lPt;7ez9kr2{Dv&yw6d zF%CADGQGWum= zT&^~tcqtQg#+pZ>raYb^HQH`sZl2khGUcWt7Srm!uLCaFg z)}eV6$$XYNC=$<-e2|Vg$vBBJ z>uI>W5Y)wPqe#3zsf#^8k<4f5af-yVBzI7Zi#?(?6K1(-IB%UR?dtw~y zF3N;Dr+5zb7>$?9Lasq@_qO6-&r&W_2i?KyPkhcdQ77rDd&*U@*J-f42-LyW{~cTi z^WLNmHjW~h&(Z{n#Iq!KPmF`LQ6|(m#dEOfG+r(XxdzH08^y#9r)a1Ynu#eOHdbO~ z8ZR#e^|4-x#5RDXw8yehZ!Lsf}{hj6Bw)S%8@`1Ks=FHIG`aR|2 zI~EO9u6tzNroj!IFBWyT4^`fFCggb3eGW`K_3X;1t(%%=_b=44a^;Gqrc$Mb*HSst z{S9Y1AIg&{{dAx63y-V+#^aiomHU=-FKX^S-uY+kou%I1)*-L_Ew#sb%r!!w zKD)N*xp01#Z0VP}GVx+H9~%YebkS>Gi_rwLi;FpptBM<0&DzT^tZZHI$L)rj6wyr_R+hVU+M8B<&PuaJ5WCEGv*|GDzW_I<(e*ch;-uM^1=WmBcdrdEO zc9s@)mgmiDZEc-Dxp{VXS2_H;`v>L)b<(0N-b8@U7aHg-NF9Jsf451`HN0krZ9$9XGnxh_yOti2y zayE1LLtP(QE(DFO9=U=AMd&A#RL+is=N}#uT)w5Uotw(>YoE%o?$5`jvNFs4$2q^- zNtSlXKUL)#HC0`#^iU*lLg69N3nQPSNZ^#;LyDF#ylty~CL*7bhW~|9<1bPAxD$r8 zACS0B%`2RbeUamIzVp+6t;#8(*|{#svQrqZ`spf_)~+82RwQfFup8EYTy2fu+e$&d zPYVi~_ItH>Xw%+HkwDXWNVI8xPLV*bGI1ty zbO{z&H;l|gj?4}|pueZ&UPX#M^B6fJneSY7ln?sB!)=u##QT1qa49LN6Z5%8K#}X6 zw2d5UXTeB~eg_&XFnSM3I~=Cml(Gv&0*AwlS=yH(@hr(w4L!tE(dr=-ET2|G7&gRu z9F3Njfr_<@BAFNKX%vZPNfvAPVU>znzevgQsWr@DL#|(^;qpRIxqh1>nV0K-QY4-w zS+43c2^GQKPucPbRwc0^*MD|45O{OZM*+iDyZctp5Z$MXeh=KdcK^AHs%E zKS*QcC7?oWp-AS1x(7w#S(1esJZVf(>H(B1pRWcKHl%tC4VD*yO7(b(WL~O$6p3d^ zma6|uDMhKDr&#%v>OX&J(yaZIJ-=s+9h59{;#Iqy|HRiD{KcY-XrP>zO20Yd! zJRLz<0DOYN{33X2K9PDHo zFPDW}gU|*V#lp^{V5kt9g@rI|c-U8Iw7d+|!@fn4cz03{`#wc7pQU>#63>#{KQSKm zbIOETr+6Ordm1m7g#{K`}1&Ny>zJr+6-QB#oELLau?j*G}=Vg_I4|Lh~_|#D>;{o$^hgL>I#C=%~d>Sdi2$$XYhp-4PSav#Nb+1Zo{ zwNLT9>}xb$E(^H^!B}F&#;&DYs1BNq1r#<$_%F9LP2pHL*;o7BO6MUl*B=?@f% zXG!j!7zg_sWkQ`(JO|t8PjE%dWg*ufxQ$zJu&pTV%BJmETKK6ZzWIjvxQY4-wxrbtW?B|pTHBa$;?DsTYE(^H^$-|NV zO3_d$bRTQjaO8~Zu?=4~y(rE$#KxN)7z{^F8C+vyIPzi6=%AG0$Wdy4B%qd+e{cA3 zWEZbC9J$RcvioIyIPw-T!x6Rd$f1dXwe18ScYonpjYq!U*?q8f6REvA2SaVuKN1?$ zs%1DaN8_v#$55Ze=~RKq*O_CZ=uFvNCEEgtQ9O3LKvCnyqVS`Udf?ei1~G_8kZuxa0*^l`ei zKY9AKs+=0ow6%;kv}v>bGI5A)%DUmjE1Q}otsHVsK<{u?KF4h7oa)pU_syp@`^$Of z^I!q*ei2%-J70R!U7gPk>FDiq*Rjs0vr5ao&t`Xbx!(weXFFdU*|DtL+gDmv|C#z* zZO%)dtqmP7pIGYbuTGS0oj&7`8O~QTdV0Eh+#l#02o}tB+>vt;=j_2vxcmQFGV1Bo zUO24OzO=MB{vXAki^$gtgQt-yYvmpP9KIkDx>k|YiTT_kpvd)($Mz0&h9S0l(qMtn zdq~>hFy-cf859W|4l`zH4n^WwlBF7Y>ZGF85(Uer)ewdavG&twc^Rl!S5YMMV!e76AhOag39$Siez4{4^t$bC0VZOL*x{}K1JE`305Vs zA=y`Gz`Ph#vhPqN^OD{46}Up=S&}8|KQc^F>$VgtpIUtg8$xZPvGNj7q3%PG%nS8k zio~-d3pIE&l%mvQDOWzF1{5}=x{LNQMP$C95!5RJPnr@g1Xqw6p8mIb+NrDlKCthNRfD!SF_fRI(J;hs(Jx=50vXE=w@559~>^X{s%AlE;4`IW<-k`Da5>Wpd{Tf^g^UkFH zwFN~opQRls63>#{J2C#XD`i5BQ#}8gLF47JkZTa^&Q%O-4&_31&myO*CFE3%LgVu5HD@?xI+z44Q%Y z5H|elF&Zl`0rjtEDH88Y>R+!=B=cE%ha&MT$-R>>#CFra!Syq09?ioVJH$5Q{)!1S zW-bp+u_;?V+J+x#ZHCzHGyGU-Lu?PWfRr-C_E_^s)RY%fq(<9K%*`|XlqsLpH16gZ zt(jA{4xK{-<^DqTa4|*VdeE|zvUTVxiex@ZH&G;>CHWv7bCPivWy;qz);B*sM&sqO zkZTaWmq|I#c$Si(N@(X9VGbLo8n4rEc_FBat^Yb)tn&V(E;f!Lna|P$io~-dcTkLr zwNWP2JKAZ6br+jXW@Hf*8(vnX5%Y3TFYBd9yi2Kio~-dcTbFiZTxq*jz*nRJO|sJ#>-_P*C4oiTXC={lnd2Ccd+^s zpNDKX*nTuvUIgl3hf*Zoo7BPPQzY|QT1t_4mgMe~@O8JCyp^gA~bpmY$$UJWFy9#rW9slnFIY@qFw} z8ZVcHT!ZASQ0gnU^z}}yk63aBEjgo<%Dt`1 zG^WYTeWxtwDlIGPKc|dvs*ZKqr`i3_q~`!5?U5#I zYN%36PK!1kb9494DJ>HGY;>sNI(@zM7i*7`a=)SE^X$jZy=5*+cIWk+a5Qt!}~N>l@*y?0J6Z*UR z%DqG9)Ka+Q+Hn4o@VlHcrn@QN|<+3={qtvJUqf& zyBsod!DhZQ5?($O1&?f2mQgp*?u=`o!7)AM;}>-=D|K`YEm<@;+WE@8P&ri5&WHkv zT<;HG=TK)@HQhsl1s>@k(N)tU6bY=FGG^&%io~-dOEvUpUPY@fQLubk4Pn?2>!>&3 z2@Wp<73)}vWL~V}DH6|;EY|QNSQWMIOv&=8HOyf{uG46^ybx5bvnY~zxz3|VJWH}% z)hBH#g6*Je`2?$y*pTcB8Za*gmF&3`$-HDQp-4PSvSj_|Dk^HdnquWss}EsAsJGEr zc?qacAD~F)h59%};#rb~8azKwQR;J)E1yyW3L8>=g9gisK&3kR|KLK}yi~WKNIXlj zRQ)HVDN5auV&zk+4`D;7d(v2W38+wKP$ct0okNj$mSmyETu?4iCZtjm@1SJ75YtZs z<;kZKT}6@1OY}mD#IqzzH1RF!%PAQWs&;KP%wfY(Z=&JyLQuKhMUl+Q^P`Sco4*pO-)4VD*y zN_8KKWL~NVQzV`xS*pUM?_()jKDnBl^qp}@yNqUlSBGl&RElI?!{<;Wo+VksF}K5B zOqq~&wX?3qJti*cjro+vK3_-U<+6}#5NwrDuF>2|xlkRnlZt?%5r;gjH&Y(h`w$J5 z7lH0Ze3ByZ-qf;`vh(%@iex@ZuTvzRCAoWI9Blo!;UX4wPVpRU8yYW{gj|2+hJm7&bg?ZyGHx1NE?(6p42y^{}HUlKCu^DH6|;+&?iM)=QaC>lDw!&Z6;h zS;#dAZ>v&FY&9iAmC#Hq%wfaDuA$-bLQogGg(C6(q%L+JMKYhIM=27|lH5TtF7^y% zLcLQw7kiDy%VixG`9xE4iDyafo)`z)nKGfyDV~E(qw#WC$TjeHZ7T*g zi(;WNXa?p(*zm6sjg^;x`d2qa;+;wTYXwCzpQUpt63>#{I|-A%FQHthc{C4e?4<9E z`zx-eF>`rnicQ(_aog}Ct<9wG2ZkRjZPNGS7LZaVeLrU&iJJ1O6sgg66La&-s8MjC zo6l-$1U3%RThKtczfe8wNRhZ6G|NlbIW&7bx!ddY#SOcmxWvdWzx1{ViPGEDurfZ3W$xB*xoc=UJB}CGbs}9Q0ikx zQzY|QDpMq$CAo)Ue5{u;q2?)`kDW#1<+6}#kUa8xHAO?E(0#07Bfm4Q$F8CA;!g(w4ihXfpjFdY@s?l@5UxP=sJafNa ziTtg>6NYW>cfE0i>EBzbZXf)MI~}KX9J)F|FX@Mrv%K}zV<+5sCV@wDT3OfqZXQx}fN-rK$KD&tgBc+25qA}z< zzc4rn{D7*ilBOPm@vODfC#>*d*Nwv9%=cHRtW5&%q~!&9T2c#5y9Sdo3H%g_1RB{x zqK$kuMFNfNAw?V6z$Eam(kSw^vZ+bnU#`iD*6=$tdQd|TNmF{trs5w`B%t(+S^6M7*w)bQ6%${-H9UcEXk7fpS!52 zbvKHYPpv+L4WS-LW922FLY+&I%nP-hBJnKALJgj;rzrIV%9T&40fh~zo zh$5Mn>J=1;XGxZ-|0Fd}+9k<3eUJVk1>M8i*uQS5YQN`{20?Pd>i*l^ToG+bT?>Zr3Q zl6kq#qewhUvZG4-qdF*DKE*~*Y>0LRjhL5%iuPQJWL~tFP$ZruS+of^Z(mKh^6538 zup!mkXt2BpRH_e9B=b^zoFefo$x;<2fj>vt^2ycYB=C$&+Bawhcy*|TM{fvM+2%F8 z1x4ank~JK2m+X#|329e5>uTI%^qw?cE(^H^!3=KYq+$l;LUqtiDguf| z9P+dx_}f=%x4}41pjLuCmIljSBje zB=cEXK#_QsRvm=$Ihp0s1}-! zsU$X>>`EFiF9uzY-AIvmk5VVQlOmbV(nA!9XG!j&7$r{2L3)w z#l+sCSf~t|iTMyV{A=@#j4z3)e{D~ZcxO`onnIDdP-&L-rbs+Xa__|W*G$TU8mD+G zvH3J!E(^H^!R}nez?M=jR0qw#0ty=rb~+7~7lHQXc@&BFCUvk&DU$gtT|<$0mgMe< zaj;t`6Y8AeIoN|VUM>r{2L7&X#lW7RSf~t|f%yT|_ zI&~|G#Iq##PQoPcohTP-9?ioVI|)4F{))Y5%)E&-#infeIB@up)@Bm;+~LPcn*`o& z0V!n?_zC8bs41ULks56`F*nbgN15_jO#>c3mgFxfTZgWofpUMLdboiiaXo03m$G%} zc8X*^OAk^co+bGp9dnZL1ZB$CHP$yjzC`2YvXE;KzL!Zk&v=uPp-O1y8DS0^ry657 zDcmA@JVoODNnLDbip1qgy?!r>#Iq!KP>hQmNSRRYXr~$0U2GnWm&-z~LFE26#mG7+ z94dxpWDyh_Ubccp%*#Q$^jwO>yOes_B^1egmae8qJWFyP#dz7xlnJ#@@x1H-8ZVcH zT!Ucrwqj$CQ!Z2o&Bg)>8xHm&4VD*yI@lW&iT5UTu+f_qZq2#{MdDeKyC=rMcBD+G zbBgC+d(wD$^T;&_?%q}$YzE~*b>bL4nx}X^Htv1K7wB>gk_UiKplGNRx{rk>X$;x$vE6CB zxI?qeuF(d7r_8IdF#vo6XD(FA0PrYv@&ND~8a@Er#j6bf|Fm0V_sjYK@U7!V!fIo{ zLo-)vW5EBUOu98R23-9kYdr>hYiSJlQa1(FG2rfx)y9BVKYKTf0l&%281OUV#(*DP zE-xLK0zNVYTpwcY4lj=#U|zqVpp890tVBmhHF^s8N_cq7GX;D_S@Zr=(+ zz_-vGzxEHpGr$vmMmf*BAQGg1KueeeoM!}hG@+IA-9P@`90C6CFt20;_&1#2onZv{ ze^4Z_H1v?@Dem1A37ounNYTl`k@v0hj{yG#jUnF|hQSfwKdb60q4BvubDbzmJl9#( zty$Ok@bxN{wGrTdr{x9nYyVmcO}h${G6H;qv5swyIorw2CeDY@dOE3eppiW!+Q=WE zNT88Dq-Y}>7yZsvvd?i;#rcf zb;az#UqqRZZnf);4cLQUOMcQ3f?Fu{tIyJmfhu}_MMr=SQY0_}Jfo|Bl_K#hWg7wh zEee)%1b8ifNpg+rCSe44Z9$Xmmx&|5Q_inOMu3lu0H@b)*LENA7K!W!D0aSfFC zG&b!$mw+PI8!q=a)EQPyPtst4M|wzf)${^I0;{HsS$dr!@hr(w4L!40(dzn}!E>p6 zS`A^?5bHKHT3!Y!)`=9!yjXXqNIXljSi{d|Rn$72lI2rtn8Su#kEY@BLQuJuDUx}) z_EIFCC0VZOBRCbouB2@F1gnzRknCz2FfRs`?3EPByku{rNIXljWc>#&Dr&uxV&zk- z4`D;7kJ4Cq38+w?p-AS1`Z7i0S(1esJXlXr>RXg6pHc$~8&chTbGSz5MW9mMo+6o- z>J*B^vm{H^e}tN%)V(QIKBf8)HiUX8jg^;x3Uxk3GB4Dn6p3d^7HZ5pCbxroJRxY$)^&%lp>jz=rt6HXGxZ5_%Shxo!&ypkWjU2t6>fsj`|=CmluM{^$Ch( zUarqmB%UQ%u8~buieg`*aQPG)L9rp)G4C(jdUY#`WL~s8QKUwTHsSW|-6&T+y#^FE zqs*RtUaIXBiDyanS78MB36w3LTuqJu&$y&LgJytNhidpDiez5HS5PFL zC0WBU_sQNsnUHq1v#!QHKQ8Hw`IP5D-$Uc&vXE;KY?V-!Xpc}XR0r*(BA{r*Ay4bg zl;`+9M}y@>pt})YrAWLtwJfFVyd50s#QT%F*i#hAe3o9MNIXk& z2gSJ985twa|P_C9&aTZ8Tu>J-QD?;yp^8>|lyy zK1;_^B%UR?i(;H?F=ayCQ#>a-mB!0uA=kj)hpCv@ITQ<(K{GKQ!iIlcMq}kApewQK zC=%~X>R-1~B=cEXLy>rvwojB;J|SzgANu^I5u*BJnKAy^}Bk{6@-!nn&}n#*P5b zxWD2)8Z(!Nrr4A%ACC?{(%Oswe`ffx(nf&4Yyl}{1o&I#k*Fzeyd_-cHrj4tZl2kO zGUcf0jhD+pu0i--CgnWiEJ}tdp`B-hIc%J2TuQ^`g`h5W4MpPpNnPv~iex@Z_faIC zCAouQT@^C9ilG@<1jUAzjoAt=hj}@umu*Fn zc$ZQy+leBX&(dxbiDyafqZlvSk20b5DV~?jrSWoE$TbLtZ!0#|PPtGWG#d*jY&h6S zG+15)>R@M3B;K3U!7idm=CgDKMdDeKyC=rMZlFx4bBgC+_t1E`EaVylcW)~W_6X%d zb%Id<-qltnw-mjyh*8*joP|!OV+Uz ziDyY}qZlh2Pnl2)70=3crSbAEl53!h;8xsh8bw2;(A-P`v9TnZL*wP8poUhWNW4R- zk9AWd^I2L!k$9Hm9*Xg?b14&Qp5pn~h7LdPYWpkBkC;Z;S%pbephWg{&lD3TmEF;A0|xYj{V2yM2pBf!F?l zJPN$}Gs(MWf|qpklp= zBAFNKT@;CDNfvAP8Lf(1AEspa)EefnA=hVVxV#WluCGue^KyNMBJnKAa#bJ2sR(w{ zZQ*%VKEbLaHY7WN2F!~=CEG@k%u9A3io~-dOV)qzqN3J=DONtU`VcmRx`4*YOF)IX zj3SvA>ZufoXGs=n@PIu!%C$_9%*(ZxBJnKAa*b@NQWU$A z!sSzJ1jUAESJQ}jIjCr_q)6sPdm}~SS&~JYa2xlXlq;WJ0}2~beUt{vi$JCN3`H_8 z)t4y}&yp-vVHEgVlr5iJO^yQ3xTM{DJY2i;>QD`DPm#=PcnU@0S&}szbDQkmlnH59 zJL_uPbL2dwYO+XqF7%-^UM>r{2EkSdWr;SQa-lkC_s9kmjX30KMM!y`?+G+mUIe-u z@pOvBdsE9&%Ff&KD3bXsT}qL7mgMer{2B8f!iiJH$!B8PI z3kzY`@UW+8w7d+|!(O6DygR9fy-AVGXKBobjIUMY{)zFhttb;}o#J`e&NN;w3%Lg2 zZB>ei?M2B@B{UNYbJ%dPSu|W;2>!3*Hvvd+g;#rbAD8|LkpiHQDisxdN z(0I8l{ZHyx~F(fHhO!wCg!q`YvAw0R7`9OiiOIcnV1h@!@nlcSa}Jkf9*+;cxO`onn97w zXK4;a;#rb=C&s@@lnFIX@%*cw#>-_P*C5!Ps~FfS%7yBn8CXDJ!@(}5!SW(d2fK#{JuwdUFl9oWQ#=QImd49vA=kj)wXGP~D-;WrK{GHP!iImX z-)wvlO#N#dMdF=F{c8e6;zFfaYNJRzOLFfdi~`?>a-rtYJgl*!z%%ZzIGo1J<)JAy zWy{Bc;YV7VQQ*slA1iGX_^B3ZTcPLX(TQU}|f zB5|qGEKQ+EJWF!-#5maAlnHfC@f_?>8ZVcHT!Y~5ZN6Pp3${H>rc2N0H2D=~9Zsvm|#u@ZZl#>-1Vee5NQ#5r03f;#VHUT{2dTbVr7ndU2>>6zXc*?vQ8xz1kyaJH%DsK1Wy_CrzMS0LcgljU(z3Gtb94H7I=U9SKh%6$^X%@fa`Qgb z|4eG0vTyVL-QAtuOZyM>m3zI<59sb+*jcWB(ce?*>*((CzMR?B=Y4iaM{oVpS*0pQ z{V$x>to&64)%ltF`L6S+7ghPhQfGhlue45|amWnks~J5#-97FP^bIU`_*>n-Ij@d8 zUwferue}n4qQ4XhOncD_Q~Q2BXzc|r1>x^cFLid7oJ7u>*V@`Te{wbL;n%A%1)0)b zQu3z1>SV-gazf(#oL~LoJm%)@^DU+`J~jP`QTcBY5vlcwIRu zxda~E@(ci99r;^>-EDJw%RRkqy`9~CeQk?7`j+%BZ0qc9FLky#VNF>+(6^+!tF5=E z-TiX;KwBuvECz2yprL{|LOeh4AZ}VLXp6#&_kkUx4)uD;JnR4iVh8qyk%Xt z9{JQF@{g1b`d=DDzLN`s)4%^v)m1{{bAcwT?CA9G?^mg;P5<8P!;VLdIonxZZsL3h zEnFLrr%jySouQFGM3F!vdq}jACsQQQ$R1L(kqu1$-j_y^ua!+r|DIZt6|LbBGHDtbtC z`u8^}5}5v-F-za0NIXl~rhos4g5{k4UCUpRT;sY)nEqW`&}92%;`Hy7^Q)2R-;ql} z2aH_239gHU-m~!UfoiG9hoayy&dM3l)3iI|8fe(3e?RF^XPEx|Dh(ERq=!UTO`~># zrz~LAlrc+VDH6|;EY;BCdKImXr(pTC8p6o6!69QAcBRqsGElKjqe$k(I*TIlEXiUG zKbBQd>pV)9Ppx4N8*=TY;qpRIxvro{=H+@WMdDeK<*Gh?QxWVXlr5iNRT3MLy`Bcl zi$NuO8$~iN*#{^R&yp-z|5=NQS|6ua`PAw|*bwTAG*(^$D%3Y9l6j$y{s>%3^DN0i z4W6l|D0K_Ul~1Vwg$=1rqQUYaP^s=ok<3eV21VjolBMcDJxx*S9Ez1ssXl}ap)RJe z@)A&?_ERMDLS03Xc$Q?L#=L`aA!R};HSrEg#w!3<(Lj0fsYGw0NaiJa7e(S(k|i2` zLX2Xk4^uKERBbDJn8SvnK1;*pg`jeMg(8`k>pK*QXGxZ;v_ERoiEs&>Pq7gc8={>+ zBj)9xqHUu{=0&>?MdDeKMVoNv_Q8}ZpI!qB8&X|BgXKk_Qe8%o%uDrDio~-dOI4Wu zeGX;ICs&ixzcVgrFQXaY)u9@`jv|@Y@U0YyXGzv@%q_BOC==4IcGlInN5^?e)nt+K zDCj3?yj&J?4H7nNyg<279ki2*fT9tHJgo@+_LWNYej?|o)5;mtTQpc+1iJHf;}*C? z=Dn$9DdiEq+fXF)S(-?Zc$VbuiE*&qDHH0P;yKt%8ZVcHT!YXC8l|g`reLTLnuUch zYSC`^B=cEXcarh-s@y>_F19&kLcLQw7u$)( z%Vi~zXB zbG@b}=c32Kwg1ej{wMMFnc_LwMKoS63%LgVK1{{LuAo?`44R4g5H|elW*RFm0rjtY zC=%~Xx)OVYBAL(9(-etkN$#B(|9Xis&3t$J*QkGjt6?q+xdy@RT*bh~QZ7^n&ASTSM_QZd-){^*R@(IM(K{PoMr*}Onf|?nc_eDeJ5r=Z+fB^P zGrLlzd{)zd$B!lXOUl-v88lGtFH{e6C=%C$)-@?xhe{O5e3rT?63>!+kd8UYSV5Wc zb&d7Sj~CK-xh&)wgzsfi&ND8jWT+C_c}AGS#;L|lG+bT?>SA|MB;KFY#U7?e=Ckw^ zMdDeKJ1EA*UZhN@ceK+C>n`>VjhD+pu0iDfHpR#`oeY=Is2G}&MNn*b*#sIfF9-Fq zHj2c%lzQ1d6v=#+4yH&vOL8B@c-gU(3AIo0ylfebm&-z~K`?h)v9VJr7pjA1V*!N? z2Rokz%ZorA>@tePdy_iYbri{bmTsj;JWF!-#5mX*%7i+ncntFz@yau=u|B$KWO+Ea2KyO2E3`&`ON*YJ_dZt zxVf+`(JA1e(W|v7;9qioqd(`+&=hd>kA#LPYALIAV9Ve-%Lj%kAC{(ok98AJodWLu zSZxY;^|N=w6!0IKnF78tG6j5AcURw%mXQ(QBO}1If!^-;?|0h>@SWV2_q{4)BMCEE z^NawW5cyk!ox?N&yxOzE{O`@fKJWc-c=&hB>&off$0C9Ghp)sWW}o~WO=4v?_m96f zCx8Dl%qtnJ{3+*mXBZfK3`GJ9K@W+Z*&a`kz&V?T6df2GdAmCQjfM#~Gv)_$cHns)JJ>QG&lwP)8&Ri9mVEky#2>><%c z{sBb-jqD*s8`;3*?;q1B^0l(5$>0A~lNGJu|Ip|`4Lu}H=_#9t|Cb^GrDx32KPVE< zl6;9PX6yZiZEPhRYr$*(tcV6|y{{!d=?K9slxlqknlVsC&#&m@?_DSonEaj5)%T@H zJWJUoe;-1@a!&rP`-Tz{CzqN7I>tGL|0AcQ6#Wx%9y1~DH6|;ylM(P zs#m%Gbqxi}r_~TfuFVY@%Wyl5mY0Ew^+AecUaU`0B%UQ%tl>wpDr$Y6lI2rtn8Su# z-=yL4LQuJm*#(|znV0KU6p3d^maF>YO+~OfQMP=7RY`0}b}t$*F9wzDffUKSWam;O zo+Vkb{&N-;wYF2Nd}{R}YzXxv8Y?dW73vuj$-Gc6qDVYTvQUHP=_yLRf^y|kYCvH_ zsyEYMc@d~o@1aQMrTPd(;#rcV>OVP6QR>qaE1yz*2pd9umBz|TK!rML*TSt=$5JGo zC0VF3@1TsQOh~2LM(qZ?gOc$Iz^*h~tO_LqgTA zt%f;lIBGWymluM{bp=H-FV}M^63>z>*T|+SMX{GqxO|F@px6-Y^)zB$4l3H)D3W>6 zK0uLpmSoW;+_n8U<;thmfWn4UU!=kEB2cNmL6OW$b@WH!BARDOmZ~uMdke~zPp&2> ze`j3MPNEs$)u9^RlOmbd@C=H?vm|Rc=Jwb*lnH59JL_uPW8*xfYO+Xq4D@0eFPDW} zgJ7$KvPA2rT&ND(Nku@>h(n%M1b_QV{N(R*Xt2BpbT{I~6p8nymZg-Pw^val^I5uy zBJnKA-4o+rcTpzPImL6Z$7sA<7IF3oXBvm|#=%u4Js%7l8ScrJD$jhD+pu7SGOPVuojDI2PV=3^>} z4JUh)2F!~=o$MKk#Cw!F*~=8ke3ss#NIXk&7sWW)#vg+#Y1BQ%bF%Geyj&J?4g7tW ziiu63Sf~t|iTMyV{A)iND=z`{uR|#k?@a1n^C^<~EG?x-JWF!##Q4_$WkQWpJpVe6 z#>-_P*C5!Ps~Fg&lnd2CGq8ZdhJ)QegXKk_4t6_5;=M^7>_LiTK1)wfB%UR?dtw~y zdCG)3r+5zbCXJWNLau?oYg;j}F}s^w2x|uBL)h@I@ibOm0_tBoQzYJ*)W7zkNanM2 zAVuO?l6xm%^7mZImCwT(JNY}~{)!G7Gna>^*pw|FCk;Q++D!gFWB9SsCVyXK0V!qj z_Z8-ms43q-ks56`F*ncLPMPvqP2+B!(V97B>(C=KQ0^~O4^LAht_LkkDO-nLqDbbm z^d?2(S&|RZF((;g_At4+E#67Scp5L4gCAoWI z9PBR2ggU2qYp};?yj&J?4U~b~iitf-(NHNg6H`EJti)cY@$ynoA6x(9a3#z;l=|2> ziex@Z6DShTlH5ZvKGsH=Q1cYe$EMSGxh&)wBv1Z6oT8yp=sp&jq>*pncgFQtnZ}Dt zk!^O3Ht;)TUX6``-+MUIy;25#N2&dZsajTUYxux#7q2$(d(bVi`(=IL_c(13tTydC zG;Xyv?fXN@EHgvXzSTbx8q=%gOPTiFB2D|g)Q!G6?c4pa+O+TLXYYn--**nrwC{tu z`+IsvrhP9SnfCpjnD%`mJgViH_I-WiZw=eD?`qGk?X++2hZCoL*Irjn>3$Rm%s+M| z4E=4XWS{mOO=9Iv_m96fr+xo7%qtnD{B!4bXPEZ=JBkEWfgTb)oBaz#0_SNSQgldg z5vqgJ((34_zVo194c7banY5v;Y; zC#>dT;}?cw{ltn znrC-+m7Dje{--`NyQLDUxJ1x!u*KB6WoTEhyB9@Nl7(v+UEark741eBgJOJ`Cf zo+bHM6tmrah%zDFYL^xpu-(3v{G=lUw@|9}@6e2aDtdlJr+xpBB7te&8D0Iy6p3dk z+qCarQm~xUzH9kQl51Qyr7mc){W5Xdcgp$I$h7Z~Y2U*#?fZ4wopB8`?9;wqb*M8; z``&meJpBV6=^@co(>4?dteP@rX(C19S&~;xp~v$or+2$kuzXq#VdUD-kg*IiX|%iy zRIEo+B=ce|QzV`xS*+p5uqtZprDXZk8s@Me*RyE2ybx5bt0|Isxn4<;c$Q?js!!Wg z1bZW8%O_Zs#D-+=qXF|`P{}?@k<3f>8H&WSBumzRwxXiemnl|0wfYb?gu3qDgvOnYCvH_s{7Gkc@e0m9!inSOLaa);#o@Z)LEtF?z?b9 zic*(Stb9ss%p=<}o?e|!W922FLOqWnnHTD%6p3d^7HZ5pDA!OXq*4>_pk$Qj?KDuH zd@9igDUx}KK0%RqmSl;Bp9rJa>GPBf302!|66UaR=zo)j%L_r}I_48_;cQ;6TTvvQ zC0VZ0{-~WOTt3A{P;7{HFB&l~2Nmss6v@13=Tan|C0VoycWSp&u6%k8C~QdeBpNI) z0+s3+6v@0)FQQ01OR`jjY2Q~+wtR9mIqf^+lJ;hr0bU)d;d>~Oc?~~8k$9G54aeLP z`!r=j+SSgw8aM6RQ>rG5lt(|mO5^3SkZTak*;Y;}M(qQaw5Sf+Nku@>h(n%Mgp`Mq zY(azNMWDM8cce(XH?=IK?7ZETBAL(9G>XKtBzI4YgUzB$sB?QR-x;QY7

P#rV_3n*+j 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∈*Z)Q#rBByCppbAaCDS!ffx`H@ zb1%;G8VV{LU!nKr4*kAz)W9<1TvhElg#L+LxZbwDN zje%0Oh(b!AvU^ZSxR#PB%gav~X>Ucbbw^r`q+hgsJt{PA5R|rWM&}(==Fs!oupuP-GBU zjR}n)j((*9UqnU5je%13TPURTDf?p-60W6W%7&^>7;FC*1=k&GLs0rf+~rRK6L#Dr zC~=QQA*D~;H7F!pOUcCbOHdeRpMm1)jQufImSD6|Ld97qXOfx--tCW%J0rZA>rWmp|CTm1J(*r0b zh^fX1dVlMgzKaTr8vv#0&rnF|)AavPNVt}gX&S5}VoAW#RbVC!k<}P`4dUomWPK7U zGHwi%vg=St=~MP}6cVnbWXgt$h!|@xM8S2(+7Og}5qAeFHEt4=xVunD=@WMvg@kJ< znYex>5##LbD6Z}}>!auwUH<|V7∈*LR|j(x>Z(QAoI!lIfaI&-7UoTX&S5qxDSx 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�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 r0Ltx^K zBxTQ~z)&z0DGR{JOUt^c#XJ;L%U(et@hqiU_G$_#doQh}khquhITWE~8!0A~KJBSx zXHlCuHS}=^PRWwQ>@tcBMMDv@AdbA$?0RZ44+d4UTPP%+r&P`Eppdfn(gPF{_mVz~ zBGl|riV5XUd#c$lsLh-j`Z&mQ^&~y}6UBz&q3D^6Briql{7&YjGF7xaDI}h&RM8Hg zkT`9rmky;q6rpG*pnWPhNLc#cvf+u^%ySGUfmkhquh85E&p&!d=7_Oz#x9YSs938asM zHv?P}vR6`AC=`m2c_8xAu{G3Q9tNsoeH0SUP^x1i6jJtH+DajDFX{6q=J_&BiVG!> zqGfIKe3_f5-JBu{YZIo5+&cA;Ch~llJEtC2((`2=$pKQr^JN~-9ugJipHWDymYj&i zIDep+(#cJ07vm@ioiOES_V?PZoZg*6;+#;tlrZJ!`4kdYVwyRJP)OWM`o=n<)A34* zDP88Y#pKB~)Mic%eH?=8qojUEA4P_uq4Ya~IP&UxY^EmjV9-3hh(h9dO4aO56jJtH zx`{&KUeae#gqqz-F`@iXx*ctyX7^H?IW_cg2(6ow1nsL7914gcXdx(hY1&Vy)jT9r z(|%7O@oc4<*75zet7CVjkhquhxfG#k`%p|Mh1yfoUPNu?38at1Y;Vg1NzRU-xKJz< zIrCBErDP{jgLxpRl5L=nc#cvft58VUd+8hsiF-+(K@m!JImLvsr#+SIMrt#shCUAd z3UNuvK16Y$Sg1R=Tc}W9EzApK=P{0x~a|CXX+~`B%Y~M z&t6R-W$&f66cYE6K93^wY$L^l5~w}(>?~?Cr-nWba|7G<$$EAfg@(eR>RAv-UV3&t zwV8)Q5s!qD@s{i%(US2F3WU=DdV=Cgm)Cp5 zZ3Eh(98a}D-;-i{yyzW0L;L8Bip}?;w$%lj$V+=2?zMinIxsp^tSkEfk2hzEEfPxu z}=y)zQnx3rQ#)K zOVsjt9Uaa2;fH70n>m(eY!bzJ)4am$ABuNZn(yX|cg;@UlJSULUN0RlUnS0MF7QuN zb~x@@H0~Jrkl4pq>`EQj=g^Me{nGB5V#m;H#5E&hwnA(h9XQZjzTBt}R%?wV{bFzN zM%CC@65Eiwo6Od|-NuKi)zi(rnF|f$)IzOP5E~rV#ksY5BeVf|3$7<+?4G7K)9%CR zc+c5F{62q|NZWhQk$xk71I;Kga4zj{AufkP1k3xm#4W@h(rqEW)C6g5A#R>#Zy|2I zYvC5+L8$+ay>o$+qpI`$ge2s}Blrk!EkI#{$&9FgMj<94AOb-lNHFAPIy03_7d_oW zcTd7BA%Myw&@7?@>UEV>e5~uTu8Z#%Dk|XWdhxlg>nb8w1>dgXV}*N8y-%I0)AOC~ zO0{?6XSeBe)l~id|Nrm*JO6X))Hz+>Lj2@uY$1N>p4mct^X6@Kv(#+XH*cQF?%|KA zyNAcFme@Ev*oUpST}8!qvm$K=_HK6?+Xwx$y*rn?q;R))jrBa@JD1zrOO*+Cxa+dJXSQ-g5%<#-;cdUkawprCuTI>nRg~5gzhn8P zge$@VDQk~ruygc9;@UIVvHTJW3G`unNVE?#Ng;tgj1Q@+JC@%_@urnC)8F2+J3E$N z=hCHXywfUtueNv6Of~FSet{8{`C`T$%abDHtd~K{+_C(tqR`k|L)eXGX>44!R-%py z9%G8HyOLe8f%p>3@&v#7aT~h8kDIgulTEuJPtlH?R+|w0ob*F`Yltq?5N*bAf{>|W zvme~EI@iS&Zr|_9ibETs`>Da8A@U*7A;)h~NT9i%p_d+}khqu3bd9Yasua1up}^AG zm+805F&G_>GR`m*^S%$qY|MWz}T>71Guyw$4baA}NZtuck)xfKb}rLLuc(+uJE5?j&e$5ED2lF6 zP=k3OC|&n|5EjqQh2 z_mY{cDJ!RJqnHp=wV9t?S~+EgBLkOHV|f55O?OjB`P1|b6cYE6nWph&DHK_KCq;(H zs?Cdy<0wj5KT1vJ!Jw4AmqN;)vfrSPxR=b7O)Na1u=XJet~1sqpcF;i$EejjB$T*w zf6#OF>ys%Y?j$`JsZ?+P7#f@Z6IB}=OImJxzU^VJgj!hjlQJ-NNtuIeQ*Ad z==6h+Qb=8wob-7h_flL)aQ|5t8QcQ@c+6a2F^FVH*#_|AAn!cGr%Acn1p^&(j%ruS9zfffL!xR}Jt2Xu; z$5E8B{tGpk2ZK`f+Z0m%l>HHf#JyyuY+~|-!rI?baGkL>0i`J7E_k@->equQr2L8d zObV&n#EoWPD4cyR#nl;SBNRo^^$cn-4+PcO3n--g={igyaW9#5cE9*q3+h~uODVR_ zD0`%F8Hmo8yPx4y=WD1Jc!VgAUr!2 zP%SG_NIXlamenYv{JnGqg~YvN&Y=`7yOCl->C>B9c00A1Q^OpG_>?R~%4_fkkaL#d8^ zltRkiOZQSp+)L*CNzt)yP)sO!dQ-=KLT%>MFvlU9?yCsdV-y#Pg(hSXilUTk(T{Vh zm4gzQD%qhF63DVN-mxqC7=yenl&rqskw^B&?d+81eiF?VMKl9TUnt4CPg%U{9vYuIJ z=JV8UP7#f@Z5EpO+Mb6rorPu|-1D&7Ej06s0wA?nXy(uPL!!dG=qIq|?Y88kyp?k( z#nhSHboZ?sEuq`YJz7qU4{mClhkHT4RajgFG?x>j_W8g6b-H45yw$f*W=C9WF8EvX78bpc%D)<`!I!+zn4Bw zA#pF6vnWN)zD6;j{L#7{J)velqBe7CnB$Omfld*$-%@ZWAex{hpcJKP3m$2TuRZjRTL9Sq2AQA3#iSU8s<36m)i-;|5x9c8>YBW zEHpWbP!y$PJE*}t5LC&op^$ivQYCvmg_OUS-bNvDFPSqaMakYrF`?|~O(naB+RUk8 zjzjdSxKfxsKyjg1=t>rB2;a3AeYG5IGivrQHJAs2D%o!+B%Y(1m)eY)&3d%wD%S%k zB<>}12Bj$3krWfkp59cl6R6ERfy{AO^s>_MC8cdCW!Xv!4TVD!GX+RdmD%~!W*!cz zXC(@WXDZdR8ika< z&fVfa;%?Kwd22!4-r6kHx7p39)}fonY9kXByD{i`Y0%zYs!Wucgy}{ z{_1zGl~=esylPG32(LJ6_!hu-6X%AD8988Mn;Gpc-)NZ zrktC_X{|$|Gva3UFP-v(bl(la;Y;EH@eEz5giHkK7IC?>AoV+|MaW}ETI*g?s*Y4_ zYiOtx`M4@lXK2VOSFL8fRBeoxEB1&rTpO{i{#so`)Rm(bqKKVXhCD_izV=oh5hK8gtudUZ>bwPjo zvSE8%3XwH7(P&y*Y^z=>H|&ul$xocoy;P^w6oW>Wgi@uY#Qq9Ml@bd=`0CYnWL>?Z zG?18sG&s!QErlJKhIWG;v!}_9cde^6ZNZOH(^@e;xnj(2j;hIS@LaYVBvbfv-am%^2W6h>-ghKl}7FO z<1Kj!m$oh=lRR4(p;p6tb5?krM2XZoHUecbH)K^pkDWKkJNfOsD}P5CE+g74CG>C3 zf|e&?Ruq7B(+d~&KaZ+vpO^wv~*ldMVf8^paPwq#s5wN+PZ3AaQUsf~%^amsn8 zxL9kRtXbsK$krSeh+DMTmyK7-!{z4GZuj_(QoTC0+xdoo?Y8;OH|00CBKVdx<#2t^JC)=QC} zAG8_Mjs2HDtya|YgT^MzZCA(V$QDSw=Io!bR87q&UzoonQ0OwYSZnZ<_99ctx=||l zs@k@YJa7G|C?CcDEnjYp+x5}XxcgP~R~xc`s9H5qB94_RqC6ZfO*BNY*|dhm&ts*= zC0+$u^Xf~hVap>8J8agy4#fK420ys!_2C`l_l|C%IP&l=MpCQD=cm_PGl8Uj@zyY{^X_#c`rSgo`O-C6-S*LS&U2(AcD+&DMxN$e8GgG;eB13@?S8(>{d~3i z`5O208u#;B`RVid9?=nxnlTUb-?Zi`4Yz>myjC>kvEKHK221AI)n>hHH>SiG%L+M8 z;b9nE8QnI5GPEHzoyWSXVRBFxU;5O04nbmJGxW_<*ADvr*M1M8p&jsJ6aPKwZ5g!qao46OgxVn`p!!ka5qSme zKoEEBKt z#YcLdNgDz_P@eDV@7lz@3eyyK#QEriw-$s#5&EpZ?J51vK;oP^@-pESyei23Npbs7 z!WHd0EY1pXo06#(S}soT+xR`mRf+0fQ@m-<0peo>qa#u0(0vY|JmYWybo`X(2A3{b{aMUA zQlV*Daa>5^4MtRHev2;V)J4g++i8f;>;1~=sPMu`5pph+K?|QlJ$i?tp&Py`3W}hu z6HVRTnqj9EG-|Tt*P5oiHG?ef+;ZYCqGm8lT(ljBqH`bFvpN@{=veGN;L3_a8=@~! zgF!>&L(-b-Hj^{{ok9Z5^$flAV+x6T$xPSSmJ14Be@B6(wJ+0emt!!BBJ9GS!%;RK z3QE{RD5U%edn|>-y<{eAd|7>kvCpH(I%8}cM^Ti02{oAqgHrYt6jJ__9ifo8m&}w^ z7fe@3Tc_AMBdv<0DB502jphNNw4I`m@~7?FDJ1SCGi}4Au@%Pt6NS|oV?z){k@a)b zULFQY)~`}X`IGhg6cYE6nXJ+B#|m42PH}a{)(AyWblv9{Jy*pprjYWd>(eNtZqqef zVMUNX}(zJQ-1tA9t4A+l<35XNy7rL3QzCi7rW%6^eT%Ad0T zMj>%8nJJrCqD^7#|E1tMV{HOTQN;ZtwVH>75_kSDVM(1oahFg?+)HNSW-O%h42r8W z&PFJTqU-ai!8{O@uBTH-`O|ehg~YwohOWV6Hg*2a7K#heRjXpVzcEABgU~j+AZ(|0 zbBbuJZ3F2wdmhqsHfDI;o`=Q%KxPX2QnjUnq<{og(Xuv2h$lQTCP8WF8Dk*-;89f68vBkhqu3 zlvQV6D5QN2#nu^VRU}2x_KnnN9uP{~cTq_B)Aj=t68Dmsw&4^Eg|VNdusUOG2%;#m zev{hE!$8UULkcN>vi_Pv;$AY7HJX8;u(j{kd$f#=P!vVir%;1=AShjrrjYWd>$52& z?jgcNcj`DpF-kZG7~qN zfuV5rB#Nsu&PFJTqU%ek!8{O@t{W(%{OP)tLgHRB({;c2S_|rf*(Sx-8D)<&E(1|m zPwaZ?1s);FCd4}_tzCdl})G)^(nqHwa ze_yA#P%N~LMuehU&7YQ|Z8nGbF*TS6g3hS;9fibmRP$1sc_(xJ3)Zyxd+A9O68Dlh zgHn{tqL@(j^rn(MkJ`+sVU9y=;*BC@t0^!P3{A>nFpAQ$S5S+2D5#c=P)IyWsg~6# zr2M^f6@|pTWX_=!E&FSV38hbOYT4VV&72zMIK-!9DPs0d6d8(!CT4LQMXA~6sL4DS zRL#ChA@Mw=YW95!DSt2hoI>JWGG|eWn*BG$gz~31)ok%^b1&M>aZu;#DSGxaiVej> z(=!!GQHu5)YIOd&`eF)+=PFgSbre$mUb>h<;$AXmQi`HE6cfsz-c+<*)Mic%a~#6C zoQjyWC@d5TP0T_NMd{ezQhRwAXl3?~6cW!+s$-v^kn;D^7bzs}C3F6y=-9teOelGJ zQ^$TvZRXT4$03^Ks|eX2DJ~QXO~@h?MJd?1Mg~W4|D%tTA5~nNm((@@K z?j>^ur6}3y6cfsx-c+(zQkyw7%yCGchCWJRp-^Z-7J?{B$97VCc^GJh-asMo45d2u zMhYo^FTIOG;$AZ6&;0cDWj;W0p#;*jtY_AjxsTe-DWb8q&H6Im-1Cs8v%bs^_dKk2 z>&yJQ07z}tm+5<~=L*aND5P#nPRh$TM^H?i$xU}(#?cbG&6J~OQ)9Wt(8l^y3W;+< z^HQ5BM`u$=`FrV=6cYE6xv@^^bc|9=on=l>OrG3HZRXT4$07cHlrn&F14V|Sq4hiB zIEw0eyp@{FgF)5oA1EZAr&P^8Mj_?zrTZu(?j>^;rKs6ADJGOZTDPMo)a(&zGpB|* z4vF{X6hZqv1&0En30eY5QJS{j?|ZIlKa4`+*-AC7pF-lqrOJO2g~YvN&ZQJhJB?yO zDb$;qwt?ErsbP-8e7PyF{D1XTxvdlziiIX;5sIRe?60W7JPDKr!gP0SP^MO9|6pf>YxP(2%=ka(t2J*!hl`FrUq3W zN}%45IW^32SagovXr$`dKT&8X9J-#xffS`@pQASOaA@MureyqT{*b7|exE|( z;-Pt|P09Fk3W*1fdg;F@B<>}1YVW_UG-j``bz$-`kiZU6IZxSeArIvZJjIo`dW*V{+M#4AUboli5s=V zAGZ!zHQX$3FEz`x>cBR;Ipy3WuY0@*TWeu-XsR_^9=vYKxmo_v;^>I{qyD8+zHRs2 z(APJ*ByNXi>1xH&i7n18;xbFGo{}#7lyJr9NzUEkKbyoqR|`+Yj~dSTX`N`PX%^M5I@dG40@g_GU;ACl!I70C2W zK1?xLaj$Cml9=VO)71N(le+`<5kXf*gECFkGR~0JzRy<)whF?piW1k0z_S&zL@biD zzWB_oR&&(0Br~mY!>ZPrZlJ_ZQF2*3%FR)$WNj~1ChTS6%g~V2v$geltuE+qUp8!y z%gnXLCK^p^i*40Q<%T_yB>9Omx|ixSTQO*K$vRi3)(Oj!DY3r-Ql-R#5Waf#v8=0i zlm-%WkOqetyrr-s)6j0PWA-%J@ve2XrY-nUYFaDCCs&Nw&CwM@5ibVncB59=Zg1XR zs+UV!D)x{yVvpO^k%lG65dDSpcGxfvY%NzuHcP$@4J=$Qc-Hqi;K19i65HsAzo{a3≧?90Y0<>7L3YPWlQN2y+&+UwzsM0q$|nrMh( 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

SQ)bYd!TUa*BqzS7KIQU?~1vABno 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

n=gCA~+; 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

HKYs5!|@8eYK7l2F}P5@ zV)r;UWo{h?DPWBf6gN_&%R*(k&*{cgRg`3$e)SqD5hPgHerfb2Eny;+i;Pk~8x|}c z##m12$DqprrY)4TLX~6q9X9A3*_p!L#?!%0N9j8S=i?Cs&p^jS9tzimx;F|{~zLMP5?*37}P6>lGrI^b6f#oK-tQ;*wUhzIS0dD+!@y_Oj^n~VHcy3 zv{J0ObGFgTW&_T6JwSPbqZy)1i459Uu&a!G-sO39ou1JcWS>7z!jhGNGQ_8`JZe2; zue^;B)8~P)5(=`%B^fnRBaJ&y`X_+QqGliBo;B_}i(ZMIMcOv2BTx01?; z?}P>x!h@EGo5UMtIGlUIVF1PQmfT-3SL``}~z0 zq?~=IQT{Pyd9UuEA?n4awNYQKNFO~J5nF*1>PT5sL2(;OPbVhI9}53vtqHds&CS{} za0Rki1@Pd&Y_rA&kZwFfdJ{x-Fb2?MJ>=fd&*ENn*8m|mT6hTVR!TTO6T`iI)C^Ok+nxX40zbN+PS{mg#%K! zqOCR48H<&G`eClX*#b><=8+o>K&F&p>y>c-L*fmpZPQSjYB>an)mFikjw9EenVQXY z<-BQ^%@aV)!+d63cgk=3HsPXuFSB2E#6z+M->qta0BgL5c-5;1Tl{taI>}Pj#WnSt zVw#Xo?O%531JRPo#zdZEO$@~#xDntYO)YCSI%G|*i zC}xG@H9bP8Z$3{zd|{BToaEwl1dRTX>CqNaY(|Ey-E$yfhx6>2c0h%qae^Yw6hL`Q zX1s_nq&UzN?JS@uD6qgNYg+=70-Hfo zz@$1Nt3N5}KC+ELodwqtc(#rJ&|2qeRJ^K7UtKkL5JwCfmhuIyvfJNg#WVKs+ z`<+Vs(ZP%KVmDx)a~iNv>NiB8HhZVz^mN7s$DpJC)j5&NZP}M3~t^wSV>+|*(zgirae;XV4}JHGI~LoQwT{_DWys!6qQz# z{<@;8AfO0?gTWh!f-s=0Q(C4F-Vf@8lpcwXSuZVwyF!t=XOXQ7nNguwW!oRf3eI~f zaSN_YQn%PHA$HN&l(K59qMi!a3D4wa`AGIS=?7`aZUid2bqiMAjCWn_3?LNbxpp(D zPqlb$VbU!4eO4_(^d}06NJ7XgWojpDd<_{6@1TyUB7zA;F8SKNszuOaJJg`llT@Um z5S8b;j?Szv$j3+Zsc26XZ#CZm^QqC%o?m5!pvf>3>;260!K$r?o4UaOVmIiXP03;ut8{jJlNE2p*rDU;_Y{%G; za0Te1k8)?_0XoOCk`$VvogNHrKvC@*4rO(k{5o(qCS;5N9|J*RIN?>@2dmC+%_TOD3Y7=0C0f>+= z5rcz~z=N#$l5!XRE`IbpO_YDtYX$zbEwpmnj;6d$GA!%jNtO-9?;R+(YEE2ILUfRWGvYr!njF6%qf8!<5^c0pxnPasDL!b2J<69pGYBcyn}tQdW-W7;yuqOCYIy zW-uN^o`XBXf(wsZny85Y@~hVxkg2 zo=L3*Sd1VqAl4n_os>{c*{MXwG{3Uziive^!nZ_as}>58ik|mHlgEk4lP)YXdRbBE z(kpJnf5Dq#ALYIDPtpSfnjW1l43gnnf;+9TUYCaOJa#tE%W-478sr^Xv_7Sd`FUoO z1y?C#@=6)FkpzG&_Y)`Yqc|rWvJgr$u_rArI%-u!B-fW>e?BJV&IZzy^1X4(P_E

?Tq#;(`gYZiGD;;=%TCMX=J^-> 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

UVGdv??1`<__0D|0x}Ca& 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 literal 11515 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 delta 1569 zcmbu9&r1|x7{}+G*`3v0wO!b8O)VB(e~qv!gm#Hm3n48|*>&<+TW4h6nH3NI zf+U3ZBJV`E4naszde}dpQ*`ZA1YWy#35n>^yE~5idQr=PcbJ*yeLv5S?=#O&^|RW% z9(*yX2-S-;&6;_~E);QkJ251Ju>EKW3EN+mP=rn*L#hXben73QBbj?xw{Qj*P20}Q z6>M;FnWCB3ic}T{kwCAB?d<+Q>_$<#E+%d$FaTX3LH8u|PC7XanpfOjXqk4Qm92KR zF0+-Kb{$AT8WiaFwnGo}-VQlA5a>5iXRxf)98+MJhcVj|scS7t- z1;+V(Cp*2xwhuE$Q4&a+R+57pcQ)4N!GlCrRi~t?E`(U<(VIkcO5CZ3|KXZW1cq3t zjycp%EY)@Bu9k=i`PZJi2~@Cnt14(Oy;g9C{a*oUMDN6OOG;4~xc z2k*16w$7fBAJzp9=FpN{X@^z$;$2T6W_)>Cbnt8oHc23-VQ}I3O0_@yP-7fDOY1{R zjJ^?iyr#eoA1c%&3#sbV*wm3`L}G88W_$dx)7xdI+AiT_-dtGFj9HxaP@~n>I~Ky( zL{zwZ9QvkifaUYPu9G$fLw6MTbe>WrI5ej!!+t$`&c3Q`9LzcT9lGdVU6LB%h!iFM zvs_d9`+35@#Ca6xL3kHsDT=&io?g-2NC$n|u*p>a^Y5vo82Hy|^XTC4*XXE4Q4^Fj z6bx)@#kHbl7fi#|{E6lpj=pmfu8)xA!a*377x? diff --git a/docs/build/doctrees/integration.doctree b/docs/build/doctrees/integration.doctree index 93116f97ff2d6d7e554ccc5e67a378006baf49aa..44b29759999592c01e01b5037c06f9220ed723ad 100644 GIT binary patch literal 96325 zcmeHw3!Gf%RiCZ*t{%2*OSWS>x!%~;tg|~SKjmyJC9*6#iY&>oWLvQ#@6OKL-I>wM z+{xS-tv0s62?VUX<`~o2%@GGTlph?3kr4$HI8cLxprBE7L(h~YV z=X>9od*{yVu44!JXRmi>zQ_5_ch33FcV6G~8^3$|WtU$@|3p`W&2pu2K3^!68bQeq zm!mDEpxCMVjrQ{Um&f0+d|^2kjkF4jVbEz6{pIK~v?!J5EELQB`Jf*STNoO-ksRQ+N*oLZ=~%bmGA&_7iqEKe2{mZyq-ZL+xpOgE-5S~w*}nW{9} z{z9wJt^|#ID{L=E8)}t?zkGB|MuNDMny+YfwR__J#-l4;f&_{t+Xaw!D-|`C9 zI_6tJ-J1s!dQHC-HVGl;{7@o#XLRyO|0~abc$LRC_&AXrAIE6hfQPLLFN}{X{00aU zWaXD;Y88-`5-#>uj?gzVm9}5EzK&`FX(1@D?Ja_yy;*Bhy~AKINQFWzoSn%-oK!*& z{{nyBTp{$mBK?>TS`M<4u$&(iG;&-BJ`nfW7jbf)J6GNrU9C3LTJy5mjIzBM;D8Zu zlMiVGsbR1hU7v_0#Rt24qtTkFWzUq%2GIr65lFKjI^eQod z0H|@d0QjldW5n2p&ll>=nh)^k5T~Q*;lQiVN5sFZr_9cHVL4a~J^b(lqjN)>&pRQ+ zhu82Iz4lVm2Zuk(+8a2sgEI~aM5$9eOW#qmmR}E`AV8?p`8%2wS|H{;53Z%wJ>lqP z=TE-;)*zYFaNlbNSc789T-L3#sOJGSJ^o7DlpkEX5~m~+|7}vPeHN9QAq!J^I#?ae9>>x<$_N; zztsv_lVu!yxb!Tr@)&|`&Y=&T$lmN>)m)s8hp9a&o?VLLlWR1QK6nnSYyxX1{@mUP z>&&_?X|;+)cJ;)DHS%BEBlkbM62=4Z@6y{8PGWN=d7nZ}>3^;${qnpuyR)ur6t)XQ z^Ix-47&Y#uuV0#5u|OP$FFbUjR!o4Q z_qGnMMj+c7UBNxvr{>U=#6BsFP%^zzpT%|~+HL?z!UoLNgWveq!zeeC|vbCJS zpth}LJFZ*LC>>jvgskgV^`T0mP^&FXkl1efE&SmfeDnx7Z?OVPNy|T1!2!Suk}p)T zQ0YZz1_p$Qh7Jmta@y((YZv*3#uun=>0f!#rq&!aqNlX>`iU5YTWobj3@M6(w%NF{ zhI%G8RDWi1M*?4LBgK}sVY1MyXeMA7B@?`P)wjl4K^z&$bV;

;Tt;@E;q1@TvU? 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

@1Hhbt;Hud)v_?hxM}_Tz4L! z1(dzk4qNRi0s=TkQuF5QA3rm z$~1){QuLYnM|82?5lDPb?Z`|<<-aDJp7f2rNI2h|b^h|_qfQ%cD)AniCl0bcv*=3b zvaql_n>(fr@6;YSrdcop&DG@)AVQ#*#jFloV&w;@@Km=6yHZxDW(<;t%33W&I7gj9E|OcYqfYd#pHfWXYK&y!wKIy(sLk;YrTj*Abra z1|&+^DMeCcF;%yP|4iDYz8Oj@5ektCL1EAWP zg;by-oe@U6R(yiA3jSo4awcY({}337$z%r-;rzi?ygDDYk<^9S!@%X5c&y^r^`GnG zOM^3Tc~C`yZloHmkJp!j`R*dd+kV<_({tl!0omHXC!6U=3TQn9U$qH@&4Nh6GFmOi zo4cKbse7lQDt^Dt{c<*Fx5M_Vc-XiN^b@G1&T@Q-K)W@{dLCstzCQ6yVu;$rPAH4p z#kd9r)%!a4i$v#m2dx2w7gd0wI@YutZ-XYW*hPg3V7!dK*96Vw_;Nh=6t>H=<)8(! z!8EA73_NVWVY`530wdM3q6SEh?S22Tzsh$y5S{JyngWf?h9~l_j9D5DDc*#V6potyoM1 z&S0j)pxb0KDs+X#omh^qq~GWfcieJ_F(D68(YlN+-_rI^>pu@(9A8Sz2FhtJf)MM~ zMzyniXveO2dn;%e2}0}JN}rH3dzSbjzPi%sw4#~mX?z?NTYQ5mhV4bL(@tv10HEb8 z>R@AgI@pd)_$G7 zHXdBWG3%S+>p_!^SgvrT|Fey-x@WbRL;Ju z%Q4C?#h3Hn;?LQ7h?4aJwbz#_K52D9TkspO%qT?flie1k*beAA)ei74#K1XFPgtrp z7eE72E?h=}0wOlitlA*jt%tr~#&s-@Kr)og1rA;U1eGA@V2+(|TKgwwk!ew_&mz|y z4sntfFU6PA$h6~BK}!gB&cGkBLDU#fG{@WwhVkH2`? zj|&`iE6YWpND_*wbK=Ni=%J*t5R-z=G0>O%cxP~?6!5cea9tx5fQ1AP_6FV;SY z|J6P~KOROY`^sl(@868yU!osxrrP%R(~mc9!B=0ceReB;Uyu1}_rqAt0SUF&p|nu# zD*EyJ^yByF$6fp_{rFRwiIkFVyqTa85fV6N8J?FIoO2AyIfmpMLvfCQIL82-n zL3QF2lGLi5pkDhE(GD~XmT%05sK6|bY;Jl*;zQkfv(s#|nw2|U=8Vsm&}E3woyoD} zH&A?Vj&N=UI4<6TU?Zv_gf&2;*|?ALq44>KKxyw?ejG9p3DuCUV6F&afF`6Yp6$_6 z1QDt}*4j>GeNWQL%zo$|sDDJ+mh_?o6)J*}OXOivlrN4!92)hh+i``uYuqcyzrDM3 zG|`?RhCuS+UC2{*hB4NOPvC4H#yYXH_A&Ix^en8GO3=meIwF5a?gNJ(K0=xZ*JUPc zltgB*d~h>V%-Tl?f}OTaVyDnM|}HRv3YGe+fetLP9AUEIyz9@ zU4*3Tvm4J~2%O;3_OAhMR!LD|?%P@W%4#8Ey`m&gX1qnOnom$%%D8kNPV7ZGJjcqU NX-cJxFxH(f{(m65I+y?e diff --git a/docs/build/doctrees/structure.doctree b/docs/build/doctrees/structure.doctree index 1ed155a2d906cf1a4394d47adad87d4d5e18876a..ca135e8a8aa74514477c3063bdb3c7628de93e5d 100644 GIT binary patch literal 85759 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 O(|Fz?$FsLE`~LtF?$S;G literal 85737 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 G&HO)Z7_!R% diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo index 88859b4..92d04fb 100644 --- a/docs/build/html/.buildinfo +++ b/docs/build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 3f3e9d6f3a661b200fa79b5036f419ce +config: da3100d0b8694a80ddf5225b78156ac2 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/.buildinfo.bak b/docs/build/html/.buildinfo.bak deleted file mode 100644 index 1791560..0000000 --- a/docs/build/html/.buildinfo.bak +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 4e2cb0e805ddcba79237f83ebf4c7647 -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/_images/plantuml-01f21512c6b94e19efccb4676b518bed63780ddd.png b/docs/build/html/_images/plantuml-01f21512c6b94e19efccb4676b518bed63780ddd.png index 080aa3a532c9578d71bc51afd5cbcdb869d6dc8f..aae22ccdadda973622559c0dd19b835b20cb6e94 100644 GIT binary patch literal 34179 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 XRx2v!VvO`!g@1Il4r-RF+eQ8#F|wN4 literal 25385 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 diff --git a/docs/build/html/_images/plantuml-165a23eb11f806bdd308ffac47a78125152ade58.png b/docs/build/html/_images/plantuml-165a23eb11f806bdd308ffac47a78125152ade58.png index b02b306a053fe53d4defe45f264d36ff86da32d3..358a2a10adcec39f06797109c3bfd694d228d038 100644 GIT binary patch literal 75255 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⪚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 PM3>~Gm86O#4gCH;vWpgF diff --git a/docs/build/html/_images/plantuml-59894b154086c2a2ebe8ae46d280279ecce7cf8f.png b/docs/build/html/_images/plantuml-59894b154086c2a2ebe8ae46d280279ecce7cf8f.png deleted file mode 100644 index 16f9a9ced4c8f1ed9e30164d83edabe9a552fb87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10507 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%0DQ;8J-9b5%#^q)jPlj??@X7Qd1ciB!a_SC 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 YT&8+6s0IUpEAZc8D82lveEiD)0kLfUy8r+H diff --git a/docs/build/html/_images/plantuml-a8a77cea7a1f2555dbb1cb6cea10dc21777c76bf.png b/docs/build/html/_images/plantuml-a8a77cea7a1f2555dbb1cb6cea10dc21777c76bf.png deleted file mode 100644 index 96c3652f2f68b17c53b2a06c14961333e42022a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63731 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 K$$pVG4gMd=Cmn78 literal 12911 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

(x`Ex*V&Riryi69fr6!(8+qkTmg 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 NqOPs>Q1$f1{|4K1prHT& literal 47538 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 diff --git a/docs/build/html/_modules/celpy/__init__.html b/docs/build/html/_modules/celpy/__init__.html index 6a41db2..3fa2a5c 100644 --- a/docs/build/html/_modules/celpy/__init__.html +++ b/docs/build/html/_modules/celpy/__init__.html @@ -6,7 +6,7 @@ celpy.__init__ — CEL in Python documentation - + @@ -497,7 +497,7 @@

Related Topics

©2020, CapitalOne. | - Powered by
Sphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0 diff --git a/docs/build/html/_modules/celpy/__main__.html b/docs/build/html/_modules/celpy/__main__.html index ac2fbb6..e061234 100644 --- a/docs/build/html/_modules/celpy/__main__.html +++ b/docs/build/html/_modules/celpy/__main__.html @@ -6,7 +6,7 @@ celpy.__main__ — CEL in Python documentation - + @@ -68,9 +68,9 @@

Source code for celpy.__main__

 from typing import Any, Callable, Dict, List, Optional, Tuple, Union, cast
 
 try:
-    import tomllib
+    import tomllib  # type: ignore [import-not-found, unused-ignore]
 except ImportError:  # pragma: no cover
-    import tomli as tomllib  # type: ignore [no-redef]
+    import tomli as tomllib  # type: ignore [no-redef, import-not-found, unused-import, unused-ignore]
 
 from celpy import Environment, Runner, celtypes
 from celpy.adapter import CELJSONDecoder, CELJSONEncoder
@@ -328,13 +328,15 @@ 

Source code for celpy.__main__

         try:
             extra = {
                 "st_birthtime": celtypes.TimestampType(
-                    datetime.datetime.fromtimestamp(status.st_birthtime)
+                    datetime.datetime.fromtimestamp(
+                        status.st_birthtime  # type:ignore [attr-defined, unused-ignore]
+                    )
                 ),
                 "st_blksize": celtypes.IntType(status.st_blksize),
                 "st_blocks": celtypes.IntType(status.st_blocks),
-                "st_flags": celtypes.IntType(status.st_flags),
+                "st_flags": celtypes.IntType(status.st_flags),  # type: ignore [attr-defined, unused-ignore]
                 "st_rdev": celtypes.IntType(status.st_rdev),
-                "st_gen": celtypes.IntType(status.st_gen),
+                "st_gen": celtypes.IntType(status.st_gen),  # type: ignore [attr-defined, unused-ignore]
             }
         except AttributeError:  # pragma: no cover
             extra = {}
@@ -680,7 +682,7 @@ 

Related Topics

©2020, CapitalOne. | - Powered by Sphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0
diff --git a/docs/build/html/_modules/celpy/adapter.html b/docs/build/html/_modules/celpy/adapter.html index 4a1339c..561d5bd 100644 --- a/docs/build/html/_modules/celpy/adapter.html +++ b/docs/build/html/_modules/celpy/adapter.html @@ -6,7 +6,7 @@ celpy.adapter — CEL in Python documentation - + @@ -279,7 +279,7 @@

Related Topics

©2020, CapitalOne. | - Powered by Sphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0
diff --git a/docs/build/html/_modules/celpy/c7nlib.html b/docs/build/html/_modules/celpy/c7nlib.html index 56ba3c8..5d76fe6 100644 --- a/docs/build/html/_modules/celpy/c7nlib.html +++ b/docs/build/html/_modules/celpy/c7nlib.html @@ -6,7 +6,7 @@ celpy.c7nlib — CEL in Python documentation - + @@ -1977,7 +1977,7 @@

Related Topics

©2020, CapitalOne. | - Powered by Sphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0 diff --git a/docs/build/html/_modules/celpy/celparser.html b/docs/build/html/_modules/celpy/celparser.html index f7916a6..8f06c72 100644 --- a/docs/build/html/_modules/celpy/celparser.html +++ b/docs/build/html/_modules/celpy/celparser.html @@ -6,7 +6,7 @@ celpy.celparser — CEL in Python documentation - + @@ -647,7 +647,7 @@

Related Topics

©2020, CapitalOne. | - Powered by Sphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0 diff --git a/docs/build/html/_modules/celpy/celtypes.html b/docs/build/html/_modules/celpy/celtypes.html index fcb5ac9..e69aff0 100644 --- a/docs/build/html/_modules/celpy/celtypes.html +++ b/docs/build/html/_modules/celpy/celtypes.html @@ -6,7 +6,7 @@ celpy.celtypes — CEL in Python documentation - + @@ -514,6 +514,12 @@

Source code for celpy.celtypes

 [docs]
     def __repr__(self) -> str:
         return f"{self.__class__.__name__}({super().__repr__()})"
+ + +
+[docs] + def contains(self, item: Value) -> BoolType: + return BoolType(cast(BytesType, item) in self) # type: ignore [comparison-overlap]
@@ -1106,7 +1112,7 @@

Source code for celpy.celtypes

         result_value = len(self) == len(other) and reduce(
             logical_and,  # type: ignore [arg-type]
             (equal(item_s, item_o) for item_s, item_o in zip(self, other)),
-            BoolType(True),  # type: ignore [arg-type]
+            BoolType(True),
         )
         if isinstance(result_value, TypeError):
             raise result_value
@@ -1128,7 +1134,7 @@ 

Source code for celpy.celtypes

         result_value = len(self) != len(other) or reduce(
             logical_or,  # type: ignore [arg-type]
             (not_equal(item_s, item_o) for item_s, item_o in zip(self, other)),
-            BoolType(False),  # type: ignore [arg-type]
+            BoolType(False),
         )
         if isinstance(result_value, TypeError):
             raise result_value
@@ -1216,7 +1222,7 @@ 

Source code for celpy.celtypes

         result_value = keys_s == keys_o and reduce(
             logical_and,  # type: ignore [arg-type]
             (equal(self[k], other[k]) for k in keys_s),
-            BoolType(True),  # type: ignore [arg-type]
+            BoolType(True),
         )
         if isinstance(result_value, TypeError):
             raise result_value
@@ -1247,7 +1253,7 @@ 

Source code for celpy.celtypes

         result_value = keys_s != keys_o or reduce(
             logical_or,  # type: ignore [arg-type]
             (not_equal(self[k], other[k]) for k in keys_s),
-            BoolType(False),  # type: ignore [arg-type]
+            BoolType(False),
         )
         if isinstance(result_value, TypeError):
             raise result_value
@@ -1974,7 +1980,7 @@ 

Related Topics

©2020, CapitalOne. | - Powered by Sphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0
diff --git a/docs/build/html/_modules/celpy/evaluation.html b/docs/build/html/_modules/celpy/evaluation.html index 72b7208..5174cbc 100644 --- a/docs/build/html/_modules/celpy/evaluation.html +++ b/docs/build/html/_modules/celpy/evaluation.html @@ -6,7 +6,7 @@ celpy.evaluation — CEL in Python documentation - + @@ -88,9 +88,9 @@

Source code for celpy.evaluation

 import operator
 import os
 import re
-from string import Template
 import sys
 from functools import reduce, wraps
+from string import Template
 from textwrap import dedent
 from typing import (
     Any,
@@ -113,40 +113,11 @@ 

Source code for celpy.evaluation

 
 import lark
 import lark.visitors
+import re2
 
 import celpy.celtypes
 from celpy.celparser import tree_dump
 
-try:
-    import re2
-
-    def function_matches(text: str, pattern: str) -> "Result":
-        """Implementation of the ``match()`` function using ``re2``"""
-        try:
-            m = re2.search(pattern, text)
-        except re2.error as ex:
-            return CELEvalError("match error", ex.__class__, ex.args)
-
-        return celpy.celtypes.BoolType(m is not None)
-
-except ImportError:  # pragma: no cover
-    # There is a build issue with python_version=='3.13' and sys_platform=='darwin'
-    # See https://github.com/google/re2/issues/516
-    # We fall back to using re, which passes the essential tests
-
-
-[docs] - def function_matches(text: str, pattern: str) -> "Result": - """Alternative implementation of the ``match()`` function for systems where ``re2`` can't be installed.""" - try: - m = re.search(pattern, text) - except re.error as ex: - return CELEvalError("match error", ex.__class__, ex.args) - - return celpy.celtypes.BoolType(m is not None)
- - - # An Annotation describes a union of types, functions, and function types. Annotation = Union[ celpy.celtypes.TypeType, @@ -552,6 +523,19 @@

Source code for celpy.evaluation

 
 
 
+
+[docs] +def function_matches(text: str, pattern: str) -> Result: + """Implementation of the ``match()`` function using ``re2``""" + try: + m = re2.search(pattern, text) + except re2.error as ex: + return CELEvalError("match error", ex.__class__, ex.args) + + return celpy.celtypes.BoolType(m is not None)
+ + +
[docs] def function_getDate( @@ -4423,7 +4407,7 @@

Related Topics

©2020, CapitalOne. | - Powered by Sphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0
diff --git a/docs/build/html/_modules/index.html b/docs/build/html/_modules/index.html index b4cbe3e..c2493e4 100644 --- a/docs/build/html/_modules/index.html +++ b/docs/build/html/_modules/index.html @@ -6,7 +6,7 @@ Overview: module code — CEL in Python documentation - + @@ -38,9 +38,6 @@

All modules for which code is available

  • celpy.celparser
  • celpy.celtypes
  • celpy.evaluation
  • -
  • lark.tree
  • -
  • logging
  • -
  • re
  • @@ -103,7 +100,7 @@

    Related Topics

    ©2020, CapitalOne. | - Powered by Sphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0
    diff --git a/docs/build/html/_modules/lark/tree.html b/docs/build/html/_modules/lark/tree.html deleted file mode 100644 index 8207153..0000000 --- a/docs/build/html/_modules/lark/tree.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - - lark.tree — CEL in Python documentation - - - - - - - - - - - - - - - - - - -
    -
    -
    - - -
    - -

    Source code for lark.tree

    -import sys
    -from copy import deepcopy
    -
    -from typing import List, Callable, Iterator, Union, Optional, Generic, TypeVar, TYPE_CHECKING
    -
    -if TYPE_CHECKING:
    -    from .lexer import TerminalDef, Token
    -    try:
    -        import rich
    -    except ImportError:
    -        pass
    -    from typing import Literal
    -
    -###{standalone
    -
    -class Meta:
    -
    -    empty: bool
    -    line: int
    -    column: int
    -    start_pos: int
    -    end_line: int
    -    end_column: int
    -    end_pos: int
    -    orig_expansion: 'List[TerminalDef]'
    -    match_tree: bool
    -
    -    def __init__(self):
    -        self.empty = True
    -
    -
    -_Leaf_T = TypeVar("_Leaf_T")
    -Branch = Union[_Leaf_T, 'Tree[_Leaf_T]']
    -
    -
    -class Tree(Generic[_Leaf_T]):
    -    """The main tree class.
    -
    -    Creates a new tree, and stores "data" and "children" in attributes of the same name.
    -    Trees can be hashed and compared.
    -
    -    Parameters:
    -        data: The name of the rule or alias
    -        children: List of matched sub-rules and terminals
    -        meta: Line & Column numbers (if ``propagate_positions`` is enabled).
    -            meta attributes: (line, column, end_line, end_column, start_pos, end_pos,
    -                              container_line, container_column, container_end_line, container_end_column)
    -            container_* attributes consider all symbols, including those that have been inlined in the tree.
    -            For example, in the rule 'a: _A B _C', the regular attributes will mark the start and end of B,
    -            but the container_* attributes will also include _A and _C in the range. However, rules that
    -            contain 'a' will consider it in full, including _A and _C for all attributes.
    -    """
    -
    -    data: str
    -    children: 'List[Branch[_Leaf_T]]'
    -
    -    def __init__(self, data: str, children: 'List[Branch[_Leaf_T]]', meta: Optional[Meta]=None) -> None:
    -        self.data = data
    -        self.children = children
    -        self._meta = meta
    -
    -    @property
    -    def meta(self) -> Meta:
    -        if self._meta is None:
    -            self._meta = Meta()
    -        return self._meta
    -
    -    def __repr__(self):
    -        return 'Tree(%r, %r)' % (self.data, self.children)
    -
    -    def _pretty_label(self):
    -        return self.data
    -
    -    def _pretty(self, level, indent_str):
    -        yield f'{indent_str*level}{self._pretty_label()}'
    -        if len(self.children) == 1 and not isinstance(self.children[0], Tree):
    -            yield f'\t{self.children[0]}\n'
    -        else:
    -            yield '\n'
    -            for n in self.children:
    -                if isinstance(n, Tree):
    -                    yield from n._pretty(level+1, indent_str)
    -                else:
    -                    yield f'{indent_str*(level+1)}{n}\n'
    -
    -    def pretty(self, indent_str: str='  ') -> str:
    -        """Returns an indented string representation of the tree.
    -
    -        Great for debugging.
    -        """
    -        return ''.join(self._pretty(0, indent_str))
    -
    -    def __rich__(self, parent:Optional['rich.tree.Tree']=None) -> 'rich.tree.Tree':
    -        """Returns a tree widget for the 'rich' library.
    -
    -        Example:
    -            ::
    -                from rich import print
    -                from lark import Tree
    -
    -                tree = Tree('root', ['node1', 'node2'])
    -                print(tree)
    -        """
    -        return self._rich(parent)
    -
    -    def _rich(self, parent):
    -        if parent:
    -            tree = parent.add(f'[bold]{self.data}[/bold]')
    -        else:
    -            import rich.tree
    -            tree = rich.tree.Tree(self.data)
    -
    -        for c in self.children:
    -            if isinstance(c, Tree):
    -                c._rich(tree)
    -            else:
    -                tree.add(f'[green]{c}[/green]')
    -
    -        return tree
    -
    -    def __eq__(self, other):
    -        try:
    -            return self.data == other.data and self.children == other.children
    -        except AttributeError:
    -            return False
    -
    -    def __ne__(self, other):
    -        return not (self == other)
    -
    -    def __hash__(self) -> int:
    -        return hash((self.data, tuple(self.children)))
    -
    -    def iter_subtrees(self) -> 'Iterator[Tree[_Leaf_T]]':
    -        """Depth-first iteration.
    -
    -        Iterates over all the subtrees, never returning to the same node twice (Lark's parse-tree is actually a DAG).
    -        """
    -        queue = [self]
    -        subtrees = dict()
    -        for subtree in queue:
    -            subtrees[id(subtree)] = subtree
    -            queue += [c for c in reversed(subtree.children)
    -                      if isinstance(c, Tree) and id(c) not in subtrees]
    -
    -        del queue
    -        return reversed(list(subtrees.values()))
    -
    -    def iter_subtrees_topdown(self):
    -        """Breadth-first iteration.
    -
    -        Iterates over all the subtrees, return nodes in order like pretty() does.
    -        """
    -        stack = [self]
    -        stack_append = stack.append
    -        stack_pop = stack.pop
    -        while stack:
    -            node = stack_pop()
    -            if not isinstance(node, Tree):
    -                continue
    -            yield node
    -            for child in reversed(node.children):
    -                stack_append(child)
    -
    -    def find_pred(self, pred: 'Callable[[Tree[_Leaf_T]], bool]') -> 'Iterator[Tree[_Leaf_T]]':
    -        """Returns all nodes of the tree that evaluate pred(node) as true."""
    -        return filter(pred, self.iter_subtrees())
    -
    -    def find_data(self, data: str) -> 'Iterator[Tree[_Leaf_T]]':
    -        """Returns all nodes of the tree whose data equals the given data."""
    -        return self.find_pred(lambda t: t.data == data)
    -
    -###}
    -
    -    def expand_kids_by_data(self, *data_values):
    -        """Expand (inline) children with any of the given data values. Returns True if anything changed"""
    -        changed = False
    -        for i in range(len(self.children)-1, -1, -1):
    -            child = self.children[i]
    -            if isinstance(child, Tree) and child.data in data_values:
    -                self.children[i:i+1] = child.children
    -                changed = True
    -        return changed
    -
    -
    -    def scan_values(self, pred: 'Callable[[Branch[_Leaf_T]], bool]') -> Iterator[_Leaf_T]:
    -        """Return all values in the tree that evaluate pred(value) as true.
    -
    -        This can be used to find all the tokens in the tree.
    -
    -        Example:
    -            >>> all_tokens = tree.scan_values(lambda v: isinstance(v, Token))
    -        """
    -        for c in self.children:
    -            if isinstance(c, Tree):
    -                for t in c.scan_values(pred):
    -                    yield t
    -            else:
    -                if pred(c):
    -                    yield c
    -
    -    def __deepcopy__(self, memo):
    -        return type(self)(self.data, deepcopy(self.children, memo), meta=self._meta)
    -
    -    def copy(self) -> 'Tree[_Leaf_T]':
    -        return type(self)(self.data, self.children)
    -
    -    def set(self, data: str, children: 'List[Branch[_Leaf_T]]') -> None:
    -        self.data = data
    -        self.children = children
    -
    -
    -ParseTree = Tree['Token']
    -
    -
    -class SlottedTree(Tree):
    -    __slots__ = 'data', 'children', 'rule', '_meta'
    -
    -
    -def pydot__tree_to_png(tree: Tree, filename: str, rankdir: 'Literal["TB", "LR", "BT", "RL"]'="LR", **kwargs) -> None:
    -    graph = pydot__tree_to_graph(tree, rankdir, **kwargs)
    -    graph.write_png(filename)
    -
    -
    -def pydot__tree_to_dot(tree: Tree, filename, rankdir="LR", **kwargs):
    -    graph = pydot__tree_to_graph(tree, rankdir, **kwargs)
    -    graph.write(filename)
    -
    -
    -def pydot__tree_to_graph(tree: Tree, rankdir="LR", **kwargs):
    -    """Creates a colorful image that represents the tree (data+children, without meta)
    -
    -    Possible values for `rankdir` are "TB", "LR", "BT", "RL", corresponding to
    -    directed graphs drawn from top to bottom, from left to right, from bottom to
    -    top, and from right to left, respectively.
    -
    -    `kwargs` can be any graph attribute (e. g. `dpi=200`). For a list of
    -    possible attributes, see https://www.graphviz.org/doc/info/attrs.html.
    -    """
    -
    -    import pydot  # type: ignore[import-not-found]
    -    graph = pydot.Dot(graph_type='digraph', rankdir=rankdir, **kwargs)
    -
    -    i = [0]
    -
    -    def new_leaf(leaf):
    -        node = pydot.Node(i[0], label=repr(leaf))
    -        i[0] += 1
    -        graph.add_node(node)
    -        return node
    -
    -    def _to_pydot(subtree):
    -        color = hash(subtree.data) & 0xffffff
    -        color |= 0x808080
    -
    -        subnodes = [_to_pydot(child) if isinstance(child, Tree) else new_leaf(child)
    -                    for child in subtree.children]
    -        node = pydot.Node(i[0], style="filled", fillcolor="#%x" % color, label=subtree.data)
    -        i[0] += 1
    -        graph.add_node(node)
    -
    -        for subnode in subnodes:
    -            graph.add_edge(pydot.Edge(node, subnode))
    -
    -        return node
    -
    -    _to_pydot(tree)
    -    return graph
    -
    - -
    - -
    -
    - -
    -
    - - - - - - - \ No newline at end of file diff --git a/docs/build/html/_modules/logging.html b/docs/build/html/_modules/logging.html deleted file mode 100644 index 134fdfb..0000000 --- a/docs/build/html/_modules/logging.html +++ /dev/null @@ -1,2451 +0,0 @@ - - - - - - - logging — CEL in Python documentation - - - - - - - - - - - - - - - - - - -
    -
    -
    - - -
    - -

    Source code for logging

    -# Copyright 2001-2022 by Vinay Sajip. All Rights Reserved.
    -#
    -# Permission to use, copy, modify, and distribute this software and its
    -# documentation for any purpose and without fee is hereby granted,
    -# provided that the above copyright notice appear in all copies and that
    -# both that copyright notice and this permission notice appear in
    -# supporting documentation, and that the name of Vinay Sajip
    -# not be used in advertising or publicity pertaining to distribution
    -# of the software without specific, written prior permission.
    -# VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
    -# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
    -# VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
    -# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
    -# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
    -# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    -
    -"""
    -Logging package for Python. Based on PEP 282 and comments thereto in
    -comp.lang.python.
    -
    -Copyright (C) 2001-2022 Vinay Sajip. All Rights Reserved.
    -
    -To use, simply 'import logging' and log away!
    -"""
    -
    -import sys, os, time, io, re, traceback, warnings, weakref, collections.abc
    -
    -from types import GenericAlias
    -from string import Template
    -from string import Formatter as StrFormatter
    -
    -
    -__all__ = ['BASIC_FORMAT', 'BufferingFormatter', 'CRITICAL', 'DEBUG', 'ERROR',
    -           'FATAL', 'FileHandler', 'Filter', 'Formatter', 'Handler', 'INFO',
    -           'LogRecord', 'Logger', 'LoggerAdapter', 'NOTSET', 'NullHandler',
    -           'StreamHandler', 'WARN', 'WARNING', 'addLevelName', 'basicConfig',
    -           'captureWarnings', 'critical', 'debug', 'disable', 'error',
    -           'exception', 'fatal', 'getLevelName', 'getLogger', 'getLoggerClass',
    -           'info', 'log', 'makeLogRecord', 'setLoggerClass', 'shutdown',
    -           'warn', 'warning', 'getLogRecordFactory', 'setLogRecordFactory',
    -           'lastResort', 'raiseExceptions', 'getLevelNamesMapping',
    -           'getHandlerByName', 'getHandlerNames']
    -
    -import threading
    -
    -__author__  = "Vinay Sajip <vinay_sajip@red-dove.com>"
    -__status__  = "production"
    -# The following module attributes are no longer updated.
    -__version__ = "0.5.1.2"
    -__date__    = "07 February 2010"
    -
    -#---------------------------------------------------------------------------
    -#   Miscellaneous module data
    -#---------------------------------------------------------------------------
    -
    -#
    -#_startTime is used as the base when calculating the relative time of events
    -#
    -_startTime = time.time()
    -
    -#
    -#raiseExceptions is used to see if exceptions during handling should be
    -#propagated
    -#
    -raiseExceptions = True
    -
    -#
    -# If you don't want threading information in the log, set this to False
    -#
    -logThreads = True
    -
    -#
    -# If you don't want multiprocessing information in the log, set this to False
    -#
    -logMultiprocessing = True
    -
    -#
    -# If you don't want process information in the log, set this to False
    -#
    -logProcesses = True
    -
    -#
    -# If you don't want asyncio task information in the log, set this to False
    -#
    -logAsyncioTasks = True
    -
    -#---------------------------------------------------------------------------
    -#   Level related stuff
    -#---------------------------------------------------------------------------
    -#
    -# Default levels and level names, these can be replaced with any positive set
    -# of values having corresponding names. There is a pseudo-level, NOTSET, which
    -# is only really there as a lower limit for user-defined levels. Handlers and
    -# loggers are initialized with NOTSET so that they will log all messages, even
    -# at user-defined levels.
    -#
    -
    -CRITICAL = 50
    -FATAL = CRITICAL
    -ERROR = 40
    -WARNING = 30
    -WARN = WARNING
    -INFO = 20
    -DEBUG = 10
    -NOTSET = 0
    -
    -_levelToName = {
    -    CRITICAL: 'CRITICAL',
    -    ERROR: 'ERROR',
    -    WARNING: 'WARNING',
    -    INFO: 'INFO',
    -    DEBUG: 'DEBUG',
    -    NOTSET: 'NOTSET',
    -}
    -_nameToLevel = {
    -    'CRITICAL': CRITICAL,
    -    'FATAL': FATAL,
    -    'ERROR': ERROR,
    -    'WARN': WARNING,
    -    'WARNING': WARNING,
    -    'INFO': INFO,
    -    'DEBUG': DEBUG,
    -    'NOTSET': NOTSET,
    -}
    -
    -def getLevelNamesMapping():
    -    return _nameToLevel.copy()
    -
    -def getLevelName(level):
    -    """
    -    Return the textual or numeric representation of logging level 'level'.
    -
    -    If the level is one of the predefined levels (CRITICAL, ERROR, WARNING,
    -    INFO, DEBUG) then you get the corresponding string. If you have
    -    associated levels with names using addLevelName then the name you have
    -    associated with 'level' is returned.
    -
    -    If a numeric value corresponding to one of the defined levels is passed
    -    in, the corresponding string representation is returned.
    -
    -    If a string representation of the level is passed in, the corresponding
    -    numeric value is returned.
    -
    -    If no matching numeric or string value is passed in, the string
    -    'Level %s' % level is returned.
    -    """
    -    # See Issues #22386, #27937 and #29220 for why it's this way
    -    result = _levelToName.get(level)
    -    if result is not None:
    -        return result
    -    result = _nameToLevel.get(level)
    -    if result is not None:
    -        return result
    -    return "Level %s" % level
    -
    -def addLevelName(level, levelName):
    -    """
    -    Associate 'levelName' with 'level'.
    -
    -    This is used when converting levels to text during message formatting.
    -    """
    -    _acquireLock()
    -    try:    #unlikely to cause an exception, but you never know...
    -        _levelToName[level] = levelName
    -        _nameToLevel[levelName] = level
    -    finally:
    -        _releaseLock()
    -
    -if hasattr(sys, "_getframe"):
    -    currentframe = lambda: sys._getframe(1)
    -else: #pragma: no cover
    -    def currentframe():
    -        """Return the frame object for the caller's stack frame."""
    -        try:
    -            raise Exception
    -        except Exception as exc:
    -            return exc.__traceback__.tb_frame.f_back
    -
    -#
    -# _srcfile is used when walking the stack to check when we've got the first
    -# caller stack frame, by skipping frames whose filename is that of this
    -# module's source. It therefore should contain the filename of this module's
    -# source file.
    -#
    -# Ordinarily we would use __file__ for this, but frozen modules don't always
    -# have __file__ set, for some reason (see Issue #21736). Thus, we get the
    -# filename from a handy code object from a function defined in this module.
    -# (There's no particular reason for picking addLevelName.)
    -#
    -
    -_srcfile = os.path.normcase(addLevelName.__code__.co_filename)
    -
    -# _srcfile is only used in conjunction with sys._getframe().
    -# Setting _srcfile to None will prevent findCaller() from being called. This
    -# way, you can avoid the overhead of fetching caller information.
    -
    -# The following is based on warnings._is_internal_frame. It makes sure that
    -# frames of the import mechanism are skipped when logging at module level and
    -# using a stacklevel value greater than one.
    -def _is_internal_frame(frame):
    -    """Signal whether the frame is a CPython or logging module internal."""
    -    filename = os.path.normcase(frame.f_code.co_filename)
    -    return filename == _srcfile or (
    -        "importlib" in filename and "_bootstrap" in filename
    -    )
    -
    -
    -def _checkLevel(level):
    -    if isinstance(level, int):
    -        rv = level
    -    elif str(level) == level:
    -        if level not in _nameToLevel:
    -            raise ValueError("Unknown level: %r" % level)
    -        rv = _nameToLevel[level]
    -    else:
    -        raise TypeError("Level not an integer or a valid string: %r"
    -                        % (level,))
    -    return rv
    -
    -#---------------------------------------------------------------------------
    -#   Thread-related stuff
    -#---------------------------------------------------------------------------
    -
    -#
    -#_lock is used to serialize access to shared data structures in this module.
    -#This needs to be an RLock because fileConfig() creates and configures
    -#Handlers, and so might arbitrary user threads. Since Handler code updates the
    -#shared dictionary _handlers, it needs to acquire the lock. But if configuring,
    -#the lock would already have been acquired - so we need an RLock.
    -#The same argument applies to Loggers and Manager.loggerDict.
    -#
    -_lock = threading.RLock()
    -
    -def _acquireLock():
    -    """
    -    Acquire the module-level lock for serializing access to shared data.
    -
    -    This should be released with _releaseLock().
    -    """
    -    if _lock:
    -        _lock.acquire()
    -
    -def _releaseLock():
    -    """
    -    Release the module-level lock acquired by calling _acquireLock().
    -    """
    -    if _lock:
    -        _lock.release()
    -
    -
    -# Prevent a held logging lock from blocking a child from logging.
    -
    -if not hasattr(os, 'register_at_fork'):  # Windows and friends.
    -    def _register_at_fork_reinit_lock(instance):
    -        pass  # no-op when os.register_at_fork does not exist.
    -else:
    -    # A collection of instances with a _at_fork_reinit method (logging.Handler)
    -    # to be called in the child after forking.  The weakref avoids us keeping
    -    # discarded Handler instances alive.
    -    _at_fork_reinit_lock_weakset = weakref.WeakSet()
    -
    -    def _register_at_fork_reinit_lock(instance):
    -        _acquireLock()
    -        try:
    -            _at_fork_reinit_lock_weakset.add(instance)
    -        finally:
    -            _releaseLock()
    -
    -    def _after_at_fork_child_reinit_locks():
    -        for handler in _at_fork_reinit_lock_weakset:
    -            handler._at_fork_reinit()
    -
    -        # _acquireLock() was called in the parent before forking.
    -        # The lock is reinitialized to unlocked state.
    -        _lock._at_fork_reinit()
    -
    -    os.register_at_fork(before=_acquireLock,
    -                        after_in_child=_after_at_fork_child_reinit_locks,
    -                        after_in_parent=_releaseLock)
    -
    -
    -#---------------------------------------------------------------------------
    -#   The logging record
    -#---------------------------------------------------------------------------
    -
    -class LogRecord(object):
    -    """
    -    A LogRecord instance represents an event being logged.
    -
    -    LogRecord instances are created every time something is logged. They
    -    contain all the information pertinent to the event being logged. The
    -    main information passed in is in msg and args, which are combined
    -    using str(msg) % args to create the message field of the record. The
    -    record also includes information such as when the record was created,
    -    the source line where the logging call was made, and any exception
    -    information to be logged.
    -    """
    -    def __init__(self, name, level, pathname, lineno,
    -                 msg, args, exc_info, func=None, sinfo=None, **kwargs):
    -        """
    -        Initialize a logging record with interesting information.
    -        """
    -        ct = time.time()
    -        self.name = name
    -        self.msg = msg
    -        #
    -        # The following statement allows passing of a dictionary as a sole
    -        # argument, so that you can do something like
    -        #  logging.debug("a %(a)d b %(b)s", {'a':1, 'b':2})
    -        # Suggested by Stefan Behnel.
    -        # Note that without the test for args[0], we get a problem because
    -        # during formatting, we test to see if the arg is present using
    -        # 'if self.args:'. If the event being logged is e.g. 'Value is %d'
    -        # and if the passed arg fails 'if self.args:' then no formatting
    -        # is done. For example, logger.warning('Value is %d', 0) would log
    -        # 'Value is %d' instead of 'Value is 0'.
    -        # For the use case of passing a dictionary, this should not be a
    -        # problem.
    -        # Issue #21172: a request was made to relax the isinstance check
    -        # to hasattr(args[0], '__getitem__'). However, the docs on string
    -        # formatting still seem to suggest a mapping object is required.
    -        # Thus, while not removing the isinstance check, it does now look
    -        # for collections.abc.Mapping rather than, as before, dict.
    -        if (args and len(args) == 1 and isinstance(args[0], collections.abc.Mapping)
    -            and args[0]):
    -            args = args[0]
    -        self.args = args
    -        self.levelname = getLevelName(level)
    -        self.levelno = level
    -        self.pathname = pathname
    -        try:
    -            self.filename = os.path.basename(pathname)
    -            self.module = os.path.splitext(self.filename)[0]
    -        except (TypeError, ValueError, AttributeError):
    -            self.filename = pathname
    -            self.module = "Unknown module"
    -        self.exc_info = exc_info
    -        self.exc_text = None      # used to cache the traceback text
    -        self.stack_info = sinfo
    -        self.lineno = lineno
    -        self.funcName = func
    -        self.created = ct
    -        self.msecs = int((ct - int(ct)) * 1000) + 0.0  # see gh-89047
    -        self.relativeCreated = (self.created - _startTime) * 1000
    -        if logThreads:
    -            self.thread = threading.get_ident()
    -            self.threadName = threading.current_thread().name
    -        else: # pragma: no cover
    -            self.thread = None
    -            self.threadName = None
    -        if not logMultiprocessing: # pragma: no cover
    -            self.processName = None
    -        else:
    -            self.processName = 'MainProcess'
    -            mp = sys.modules.get('multiprocessing')
    -            if mp is not None:
    -                # Errors may occur if multiprocessing has not finished loading
    -                # yet - e.g. if a custom import hook causes third-party code
    -                # to run when multiprocessing calls import. See issue 8200
    -                # for an example
    -                try:
    -                    self.processName = mp.current_process().name
    -                except Exception: #pragma: no cover
    -                    pass
    -        if logProcesses and hasattr(os, 'getpid'):
    -            self.process = os.getpid()
    -        else:
    -            self.process = None
    -
    -        self.taskName = None
    -        if logAsyncioTasks:
    -            asyncio = sys.modules.get('asyncio')
    -            if asyncio:
    -                try:
    -                    self.taskName = asyncio.current_task().get_name()
    -                except Exception:
    -                    pass
    -
    -    def __repr__(self):
    -        return '<LogRecord: %s, %s, %s, %s, "%s">'%(self.name, self.levelno,
    -            self.pathname, self.lineno, self.msg)
    -
    -    def getMessage(self):
    -        """
    -        Return the message for this LogRecord.
    -
    -        Return the message for this LogRecord after merging any user-supplied
    -        arguments with the message.
    -        """
    -        msg = str(self.msg)
    -        if self.args:
    -            msg = msg % self.args
    -        return msg
    -
    -#
    -#   Determine which class to use when instantiating log records.
    -#
    -_logRecordFactory = LogRecord
    -
    -def setLogRecordFactory(factory):
    -    """
    -    Set the factory to be used when instantiating a log record.
    -
    -    :param factory: A callable which will be called to instantiate
    -    a log record.
    -    """
    -    global _logRecordFactory
    -    _logRecordFactory = factory
    -
    -def getLogRecordFactory():
    -    """
    -    Return the factory to be used when instantiating a log record.
    -    """
    -
    -    return _logRecordFactory
    -
    -def makeLogRecord(dict):
    -    """
    -    Make a LogRecord whose attributes are defined by the specified dictionary,
    -    This function is useful for converting a logging event received over
    -    a socket connection (which is sent as a dictionary) into a LogRecord
    -    instance.
    -    """
    -    rv = _logRecordFactory(None, None, "", 0, "", (), None, None)
    -    rv.__dict__.update(dict)
    -    return rv
    -
    -
    -#---------------------------------------------------------------------------
    -#   Formatter classes and functions
    -#---------------------------------------------------------------------------
    -_str_formatter = StrFormatter()
    -del StrFormatter
    -
    -
    -class PercentStyle(object):
    -
    -    default_format = '%(message)s'
    -    asctime_format = '%(asctime)s'
    -    asctime_search = '%(asctime)'
    -    validation_pattern = re.compile(r'%\(\w+\)[#0+ -]*(\*|\d+)?(\.(\*|\d+))?[diouxefgcrsa%]', re.I)
    -
    -    def __init__(self, fmt, *, defaults=None):
    -        self._fmt = fmt or self.default_format
    -        self._defaults = defaults
    -
    -    def usesTime(self):
    -        return self._fmt.find(self.asctime_search) >= 0
    -
    -    def validate(self):
    -        """Validate the input format, ensure it matches the correct style"""
    -        if not self.validation_pattern.search(self._fmt):
    -            raise ValueError("Invalid format '%s' for '%s' style" % (self._fmt, self.default_format[0]))
    -
    -    def _format(self, record):
    -        if defaults := self._defaults:
    -            values = defaults | record.__dict__
    -        else:
    -            values = record.__dict__
    -        return self._fmt % values
    -
    -    def format(self, record):
    -        try:
    -            return self._format(record)
    -        except KeyError as e:
    -            raise ValueError('Formatting field not found in record: %s' % e)
    -
    -
    -class StrFormatStyle(PercentStyle):
    -    default_format = '{message}'
    -    asctime_format = '{asctime}'
    -    asctime_search = '{asctime'
    -
    -    fmt_spec = re.compile(r'^(.?[<>=^])?[+ -]?#?0?(\d+|{\w+})?[,_]?(\.(\d+|{\w+}))?[bcdefgnosx%]?$', re.I)
    -    field_spec = re.compile(r'^(\d+|\w+)(\.\w+|\[[^]]+\])*$')
    -
    -    def _format(self, record):
    -        if defaults := self._defaults:
    -            values = defaults | record.__dict__
    -        else:
    -            values = record.__dict__
    -        return self._fmt.format(**values)
    -
    -    def validate(self):
    -        """Validate the input format, ensure it is the correct string formatting style"""
    -        fields = set()
    -        try:
    -            for _, fieldname, spec, conversion in _str_formatter.parse(self._fmt):
    -                if fieldname:
    -                    if not self.field_spec.match(fieldname):
    -                        raise ValueError('invalid field name/expression: %r' % fieldname)
    -                    fields.add(fieldname)
    -                if conversion and conversion not in 'rsa':
    -                    raise ValueError('invalid conversion: %r' % conversion)
    -                if spec and not self.fmt_spec.match(spec):
    -                    raise ValueError('bad specifier: %r' % spec)
    -        except ValueError as e:
    -            raise ValueError('invalid format: %s' % e)
    -        if not fields:
    -            raise ValueError('invalid format: no fields')
    -
    -
    -class StringTemplateStyle(PercentStyle):
    -    default_format = '${message}'
    -    asctime_format = '${asctime}'
    -    asctime_search = '${asctime}'
    -
    -    def __init__(self, *args, **kwargs):
    -        super().__init__(*args, **kwargs)
    -        self._tpl = Template(self._fmt)
    -
    -    def usesTime(self):
    -        fmt = self._fmt
    -        return fmt.find('$asctime') >= 0 or fmt.find(self.asctime_search) >= 0
    -
    -    def validate(self):
    -        pattern = Template.pattern
    -        fields = set()
    -        for m in pattern.finditer(self._fmt):
    -            d = m.groupdict()
    -            if d['named']:
    -                fields.add(d['named'])
    -            elif d['braced']:
    -                fields.add(d['braced'])
    -            elif m.group(0) == '$':
    -                raise ValueError('invalid format: bare \'$\' not allowed')
    -        if not fields:
    -            raise ValueError('invalid format: no fields')
    -
    -    def _format(self, record):
    -        if defaults := self._defaults:
    -            values = defaults | record.__dict__
    -        else:
    -            values = record.__dict__
    -        return self._tpl.substitute(**values)
    -
    -
    -BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"
    -
    -_STYLES = {
    -    '%': (PercentStyle, BASIC_FORMAT),
    -    '{': (StrFormatStyle, '{levelname}:{name}:{message}'),
    -    '$': (StringTemplateStyle, '${levelname}:${name}:${message}'),
    -}
    -
    -class Formatter(object):
    -    """
    -    Formatter instances are used to convert a LogRecord to text.
    -
    -    Formatters need to know how a LogRecord is constructed. They are
    -    responsible for converting a LogRecord to (usually) a string which can
    -    be interpreted by either a human or an external system. The base Formatter
    -    allows a formatting string to be specified. If none is supplied, the
    -    style-dependent default value, "%(message)s", "{message}", or
    -    "${message}", is used.
    -
    -    The Formatter can be initialized with a format string which makes use of
    -    knowledge of the LogRecord attributes - e.g. the default value mentioned
    -    above makes use of the fact that the user's message and arguments are pre-
    -    formatted into a LogRecord's message attribute. Currently, the useful
    -    attributes in a LogRecord are described by:
    -
    -    %(name)s            Name of the logger (logging channel)
    -    %(levelno)s         Numeric logging level for the message (DEBUG, INFO,
    -                        WARNING, ERROR, CRITICAL)
    -    %(levelname)s       Text logging level for the message ("DEBUG", "INFO",
    -                        "WARNING", "ERROR", "CRITICAL")
    -    %(pathname)s        Full pathname of the source file where the logging
    -                        call was issued (if available)
    -    %(filename)s        Filename portion of pathname
    -    %(module)s          Module (name portion of filename)
    -    %(lineno)d          Source line number where the logging call was issued
    -                        (if available)
    -    %(funcName)s        Function name
    -    %(created)f         Time when the LogRecord was created (time.time()
    -                        return value)
    -    %(asctime)s         Textual time when the LogRecord was created
    -    %(msecs)d           Millisecond portion of the creation time
    -    %(relativeCreated)d Time in milliseconds when the LogRecord was created,
    -                        relative to the time the logging module was loaded
    -                        (typically at application startup time)
    -    %(thread)d          Thread ID (if available)
    -    %(threadName)s      Thread name (if available)
    -    %(taskName)s        Task name (if available)
    -    %(process)d         Process ID (if available)
    -    %(message)s         The result of record.getMessage(), computed just as
    -                        the record is emitted
    -    """
    -
    -    converter = time.localtime
    -
    -    def __init__(self, fmt=None, datefmt=None, style='%', validate=True, *,
    -                 defaults=None):
    -        """
    -        Initialize the formatter with specified format strings.
    -
    -        Initialize the formatter either with the specified format string, or a
    -        default as described above. Allow for specialized date formatting with
    -        the optional datefmt argument. If datefmt is omitted, you get an
    -        ISO8601-like (or RFC 3339-like) format.
    -
    -        Use a style parameter of '%', '{' or '$' to specify that you want to
    -        use one of %-formatting, :meth:`str.format` (``{}``) formatting or
    -        :class:`string.Template` formatting in your format string.
    -
    -        .. versionchanged:: 3.2
    -           Added the ``style`` parameter.
    -        """
    -        if style not in _STYLES:
    -            raise ValueError('Style must be one of: %s' % ','.join(
    -                             _STYLES.keys()))
    -        self._style = _STYLES[style][0](fmt, defaults=defaults)
    -        if validate:
    -            self._style.validate()
    -
    -        self._fmt = self._style._fmt
    -        self.datefmt = datefmt
    -
    -    default_time_format = '%Y-%m-%d %H:%M:%S'
    -    default_msec_format = '%s,%03d'
    -
    -    def formatTime(self, record, datefmt=None):
    -        """
    -        Return the creation time of the specified LogRecord as formatted text.
    -
    -        This method should be called from format() by a formatter which
    -        wants to make use of a formatted time. This method can be overridden
    -        in formatters to provide for any specific requirement, but the
    -        basic behaviour is as follows: if datefmt (a string) is specified,
    -        it is used with time.strftime() to format the creation time of the
    -        record. Otherwise, an ISO8601-like (or RFC 3339-like) format is used.
    -        The resulting string is returned. This function uses a user-configurable
    -        function to convert the creation time to a tuple. By default,
    -        time.localtime() is used; to change this for a particular formatter
    -        instance, set the 'converter' attribute to a function with the same
    -        signature as time.localtime() or time.gmtime(). To change it for all
    -        formatters, for example if you want all logging times to be shown in GMT,
    -        set the 'converter' attribute in the Formatter class.
    -        """
    -        ct = self.converter(record.created)
    -        if datefmt:
    -            s = time.strftime(datefmt, ct)
    -        else:
    -            s = time.strftime(self.default_time_format, ct)
    -            if self.default_msec_format:
    -                s = self.default_msec_format % (s, record.msecs)
    -        return s
    -
    -    def formatException(self, ei):
    -        """
    -        Format and return the specified exception information as a string.
    -
    -        This default implementation just uses
    -        traceback.print_exception()
    -        """
    -        sio = io.StringIO()
    -        tb = ei[2]
    -        # See issues #9427, #1553375. Commented out for now.
    -        #if getattr(self, 'fullstack', False):
    -        #    traceback.print_stack(tb.tb_frame.f_back, file=sio)
    -        traceback.print_exception(ei[0], ei[1], tb, None, sio)
    -        s = sio.getvalue()
    -        sio.close()
    -        if s[-1:] == "\n":
    -            s = s[:-1]
    -        return s
    -
    -    def usesTime(self):
    -        """
    -        Check if the format uses the creation time of the record.
    -        """
    -        return self._style.usesTime()
    -
    -    def formatMessage(self, record):
    -        return self._style.format(record)
    -
    -    def formatStack(self, stack_info):
    -        """
    -        This method is provided as an extension point for specialized
    -        formatting of stack information.
    -
    -        The input data is a string as returned from a call to
    -        :func:`traceback.print_stack`, but with the last trailing newline
    -        removed.
    -
    -        The base implementation just returns the value passed in.
    -        """
    -        return stack_info
    -
    -    def format(self, record):
    -        """
    -        Format the specified record as text.
    -
    -        The record's attribute dictionary is used as the operand to a
    -        string formatting operation which yields the returned string.
    -        Before formatting the dictionary, a couple of preparatory steps
    -        are carried out. The message attribute of the record is computed
    -        using LogRecord.getMessage(). If the formatting string uses the
    -        time (as determined by a call to usesTime(), formatTime() is
    -        called to format the event time. If there is exception information,
    -        it is formatted using formatException() and appended to the message.
    -        """
    -        record.message = record.getMessage()
    -        if self.usesTime():
    -            record.asctime = self.formatTime(record, self.datefmt)
    -        s = self.formatMessage(record)
    -        if record.exc_info:
    -            # Cache the traceback text to avoid converting it multiple times
    -            # (it's constant anyway)
    -            if not record.exc_text:
    -                record.exc_text = self.formatException(record.exc_info)
    -        if record.exc_text:
    -            if s[-1:] != "\n":
    -                s = s + "\n"
    -            s = s + record.exc_text
    -        if record.stack_info:
    -            if s[-1:] != "\n":
    -                s = s + "\n"
    -            s = s + self.formatStack(record.stack_info)
    -        return s
    -
    -#
    -#   The default formatter to use when no other is specified
    -#
    -_defaultFormatter = Formatter()
    -
    -class BufferingFormatter(object):
    -    """
    -    A formatter suitable for formatting a number of records.
    -    """
    -    def __init__(self, linefmt=None):
    -        """
    -        Optionally specify a formatter which will be used to format each
    -        individual record.
    -        """
    -        if linefmt:
    -            self.linefmt = linefmt
    -        else:
    -            self.linefmt = _defaultFormatter
    -
    -    def formatHeader(self, records):
    -        """
    -        Return the header string for the specified records.
    -        """
    -        return ""
    -
    -    def formatFooter(self, records):
    -        """
    -        Return the footer string for the specified records.
    -        """
    -        return ""
    -
    -    def format(self, records):
    -        """
    -        Format the specified records and return the result as a string.
    -        """
    -        rv = ""
    -        if len(records) > 0:
    -            rv = rv + self.formatHeader(records)
    -            for record in records:
    -                rv = rv + self.linefmt.format(record)
    -            rv = rv + self.formatFooter(records)
    -        return rv
    -
    -#---------------------------------------------------------------------------
    -#   Filter classes and functions
    -#---------------------------------------------------------------------------
    -
    -class Filter(object):
    -    """
    -    Filter instances are used to perform arbitrary filtering of LogRecords.
    -
    -    Loggers and Handlers can optionally use Filter instances to filter
    -    records as desired. The base filter class only allows events which are
    -    below a certain point in the logger hierarchy. For example, a filter
    -    initialized with "A.B" will allow events logged by loggers "A.B",
    -    "A.B.C", "A.B.C.D", "A.B.D" etc. but not "A.BB", "B.A.B" etc. If
    -    initialized with the empty string, all events are passed.
    -    """
    -    def __init__(self, name=''):
    -        """
    -        Initialize a filter.
    -
    -        Initialize with the name of the logger which, together with its
    -        children, will have its events allowed through the filter. If no
    -        name is specified, allow every event.
    -        """
    -        self.name = name
    -        self.nlen = len(name)
    -
    -    def filter(self, record):
    -        """
    -        Determine if the specified record is to be logged.
    -
    -        Returns True if the record should be logged, or False otherwise.
    -        If deemed appropriate, the record may be modified in-place.
    -        """
    -        if self.nlen == 0:
    -            return True
    -        elif self.name == record.name:
    -            return True
    -        elif record.name.find(self.name, 0, self.nlen) != 0:
    -            return False
    -        return (record.name[self.nlen] == ".")
    -
    -class Filterer(object):
    -    """
    -    A base class for loggers and handlers which allows them to share
    -    common code.
    -    """
    -    def __init__(self):
    -        """
    -        Initialize the list of filters to be an empty list.
    -        """
    -        self.filters = []
    -
    -    def addFilter(self, filter):
    -        """
    -        Add the specified filter to this handler.
    -        """
    -        if not (filter in self.filters):
    -            self.filters.append(filter)
    -
    -    def removeFilter(self, filter):
    -        """
    -        Remove the specified filter from this handler.
    -        """
    -        if filter in self.filters:
    -            self.filters.remove(filter)
    -
    -    def filter(self, record):
    -        """
    -        Determine if a record is loggable by consulting all the filters.
    -
    -        The default is to allow the record to be logged; any filter can veto
    -        this by returning a false value.
    -        If a filter attached to a handler returns a log record instance,
    -        then that instance is used in place of the original log record in
    -        any further processing of the event by that handler.
    -        If a filter returns any other true value, the original log record
    -        is used in any further processing of the event by that handler.
    -
    -        If none of the filters return false values, this method returns
    -        a log record.
    -        If any of the filters return a false value, this method returns
    -        a false value.
    -
    -        .. versionchanged:: 3.2
    -
    -           Allow filters to be just callables.
    -
    -        .. versionchanged:: 3.12
    -           Allow filters to return a LogRecord instead of
    -           modifying it in place.
    -        """
    -        for f in self.filters:
    -            if hasattr(f, 'filter'):
    -                result = f.filter(record)
    -            else:
    -                result = f(record) # assume callable - will raise if not
    -            if not result:
    -                return False
    -            if isinstance(result, LogRecord):
    -                record = result
    -        return record
    -
    -#---------------------------------------------------------------------------
    -#   Handler classes and functions
    -#---------------------------------------------------------------------------
    -
    -_handlers = weakref.WeakValueDictionary()  #map of handler names to handlers
    -_handlerList = [] # added to allow handlers to be removed in reverse of order initialized
    -
    -def _removeHandlerRef(wr):
    -    """
    -    Remove a handler reference from the internal cleanup list.
    -    """
    -    # This function can be called during module teardown, when globals are
    -    # set to None. It can also be called from another thread. So we need to
    -    # pre-emptively grab the necessary globals and check if they're None,
    -    # to prevent race conditions and failures during interpreter shutdown.
    -    acquire, release, handlers = _acquireLock, _releaseLock, _handlerList
    -    if acquire and release and handlers:
    -        acquire()
    -        try:
    -            handlers.remove(wr)
    -        except ValueError:
    -            pass
    -        finally:
    -            release()
    -
    -def _addHandlerRef(handler):
    -    """
    -    Add a handler to the internal cleanup list using a weak reference.
    -    """
    -    _acquireLock()
    -    try:
    -        _handlerList.append(weakref.ref(handler, _removeHandlerRef))
    -    finally:
    -        _releaseLock()
    -
    -
    -def getHandlerByName(name):
    -    """
    -    Get a handler with the specified *name*, or None if there isn't one with
    -    that name.
    -    """
    -    return _handlers.get(name)
    -
    -
    -def getHandlerNames():
    -    """
    -    Return all known handler names as an immutable set.
    -    """
    -    result = set(_handlers.keys())
    -    return frozenset(result)
    -
    -
    -class Handler(Filterer):
    -    """
    -    Handler instances dispatch logging events to specific destinations.
    -
    -    The base handler class. Acts as a placeholder which defines the Handler
    -    interface. Handlers can optionally use Formatter instances to format
    -    records as desired. By default, no formatter is specified; in this case,
    -    the 'raw' message as determined by record.message is logged.
    -    """
    -    def __init__(self, level=NOTSET):
    -        """
    -        Initializes the instance - basically setting the formatter to None
    -        and the filter list to empty.
    -        """
    -        Filterer.__init__(self)
    -        self._name = None
    -        self.level = _checkLevel(level)
    -        self.formatter = None
    -        self._closed = False
    -        # Add the handler to the global _handlerList (for cleanup on shutdown)
    -        _addHandlerRef(self)
    -        self.createLock()
    -
    -    def get_name(self):
    -        return self._name
    -
    -    def set_name(self, name):
    -        _acquireLock()
    -        try:
    -            if self._name in _handlers:
    -                del _handlers[self._name]
    -            self._name = name
    -            if name:
    -                _handlers[name] = self
    -        finally:
    -            _releaseLock()
    -
    -    name = property(get_name, set_name)
    -
    -    def createLock(self):
    -        """
    -        Acquire a thread lock for serializing access to the underlying I/O.
    -        """
    -        self.lock = threading.RLock()
    -        _register_at_fork_reinit_lock(self)
    -
    -    def _at_fork_reinit(self):
    -        self.lock._at_fork_reinit()
    -
    -    def acquire(self):
    -        """
    -        Acquire the I/O thread lock.
    -        """
    -        if self.lock:
    -            self.lock.acquire()
    -
    -    def release(self):
    -        """
    -        Release the I/O thread lock.
    -        """
    -        if self.lock:
    -            self.lock.release()
    -
    -    def setLevel(self, level):
    -        """
    -        Set the logging level of this handler.  level must be an int or a str.
    -        """
    -        self.level = _checkLevel(level)
    -
    -    def format(self, record):
    -        """
    -        Format the specified record.
    -
    -        If a formatter is set, use it. Otherwise, use the default formatter
    -        for the module.
    -        """
    -        if self.formatter:
    -            fmt = self.formatter
    -        else:
    -            fmt = _defaultFormatter
    -        return fmt.format(record)
    -
    -    def emit(self, record):
    -        """
    -        Do whatever it takes to actually log the specified logging record.
    -
    -        This version is intended to be implemented by subclasses and so
    -        raises a NotImplementedError.
    -        """
    -        raise NotImplementedError('emit must be implemented '
    -                                  'by Handler subclasses')
    -
    -    def handle(self, record):
    -        """
    -        Conditionally emit the specified logging record.
    -
    -        Emission depends on filters which may have been added to the handler.
    -        Wrap the actual emission of the record with acquisition/release of
    -        the I/O thread lock.
    -
    -        Returns an instance of the log record that was emitted
    -        if it passed all filters, otherwise a false value is returned.
    -        """
    -        rv = self.filter(record)
    -        if isinstance(rv, LogRecord):
    -            record = rv
    -        if rv:
    -            self.acquire()
    -            try:
    -                self.emit(record)
    -            finally:
    -                self.release()
    -        return rv
    -
    -    def setFormatter(self, fmt):
    -        """
    -        Set the formatter for this handler.
    -        """
    -        self.formatter = fmt
    -
    -    def flush(self):
    -        """
    -        Ensure all logging output has been flushed.
    -
    -        This version does nothing and is intended to be implemented by
    -        subclasses.
    -        """
    -        pass
    -
    -    def close(self):
    -        """
    -        Tidy up any resources used by the handler.
    -
    -        This version removes the handler from an internal map of handlers,
    -        _handlers, which is used for handler lookup by name. Subclasses
    -        should ensure that this gets called from overridden close()
    -        methods.
    -        """
    -        #get the module data lock, as we're updating a shared structure.
    -        _acquireLock()
    -        try:    #unlikely to raise an exception, but you never know...
    -            self._closed = True
    -            if self._name and self._name in _handlers:
    -                del _handlers[self._name]
    -        finally:
    -            _releaseLock()
    -
    -    def handleError(self, record):
    -        """
    -        Handle errors which occur during an emit() call.
    -
    -        This method should be called from handlers when an exception is
    -        encountered during an emit() call. If raiseExceptions is false,
    -        exceptions get silently ignored. This is what is mostly wanted
    -        for a logging system - most users will not care about errors in
    -        the logging system, they are more interested in application errors.
    -        You could, however, replace this with a custom handler if you wish.
    -        The record which was being processed is passed in to this method.
    -        """
    -        if raiseExceptions and sys.stderr:  # see issue 13807
    -            t, v, tb = sys.exc_info()
    -            try:
    -                sys.stderr.write('--- Logging error ---\n')
    -                traceback.print_exception(t, v, tb, None, sys.stderr)
    -                sys.stderr.write('Call stack:\n')
    -                # Walk the stack frame up until we're out of logging,
    -                # so as to print the calling context.
    -                frame = tb.tb_frame
    -                while (frame and os.path.dirname(frame.f_code.co_filename) ==
    -                       __path__[0]):
    -                    frame = frame.f_back
    -                if frame:
    -                    traceback.print_stack(frame, file=sys.stderr)
    -                else:
    -                    # couldn't find the right stack frame, for some reason
    -                    sys.stderr.write('Logged from file %s, line %s\n' % (
    -                                     record.filename, record.lineno))
    -                # Issue 18671: output logging message and arguments
    -                try:
    -                    sys.stderr.write('Message: %r\n'
    -                                     'Arguments: %s\n' % (record.msg,
    -                                                          record.args))
    -                except RecursionError:  # See issue 36272
    -                    raise
    -                except Exception:
    -                    sys.stderr.write('Unable to print the message and arguments'
    -                                     ' - possible formatting error.\nUse the'
    -                                     ' traceback above to help find the error.\n'
    -                                    )
    -            except OSError: #pragma: no cover
    -                pass    # see issue 5971
    -            finally:
    -                del t, v, tb
    -
    -    def __repr__(self):
    -        level = getLevelName(self.level)
    -        return '<%s (%s)>' % (self.__class__.__name__, level)
    -
    -class StreamHandler(Handler):
    -    """
    -    A handler class which writes logging records, appropriately formatted,
    -    to a stream. Note that this class does not close the stream, as
    -    sys.stdout or sys.stderr may be used.
    -    """
    -
    -    terminator = '\n'
    -
    -    def __init__(self, stream=None):
    -        """
    -        Initialize the handler.
    -
    -        If stream is not specified, sys.stderr is used.
    -        """
    -        Handler.__init__(self)
    -        if stream is None:
    -            stream = sys.stderr
    -        self.stream = stream
    -
    -    def flush(self):
    -        """
    -        Flushes the stream.
    -        """
    -        self.acquire()
    -        try:
    -            if self.stream and hasattr(self.stream, "flush"):
    -                self.stream.flush()
    -        finally:
    -            self.release()
    -
    -    def emit(self, record):
    -        """
    -        Emit a record.
    -
    -        If a formatter is specified, it is used to format the record.
    -        The record is then written to the stream with a trailing newline.  If
    -        exception information is present, it is formatted using
    -        traceback.print_exception and appended to the stream.  If the stream
    -        has an 'encoding' attribute, it is used to determine how to do the
    -        output to the stream.
    -        """
    -        try:
    -            msg = self.format(record)
    -            stream = self.stream
    -            # issue 35046: merged two stream.writes into one.
    -            stream.write(msg + self.terminator)
    -            self.flush()
    -        except RecursionError:  # See issue 36272
    -            raise
    -        except Exception:
    -            self.handleError(record)
    -
    -    def setStream(self, stream):
    -        """
    -        Sets the StreamHandler's stream to the specified value,
    -        if it is different.
    -
    -        Returns the old stream, if the stream was changed, or None
    -        if it wasn't.
    -        """
    -        if stream is self.stream:
    -            result = None
    -        else:
    -            result = self.stream
    -            self.acquire()
    -            try:
    -                self.flush()
    -                self.stream = stream
    -            finally:
    -                self.release()
    -        return result
    -
    -    def __repr__(self):
    -        level = getLevelName(self.level)
    -        name = getattr(self.stream, 'name', '')
    -        #  bpo-36015: name can be an int
    -        name = str(name)
    -        if name:
    -            name += ' '
    -        return '<%s %s(%s)>' % (self.__class__.__name__, name, level)
    -
    -    __class_getitem__ = classmethod(GenericAlias)
    -
    -
    -class FileHandler(StreamHandler):
    -    """
    -    A handler class which writes formatted logging records to disk files.
    -    """
    -    def __init__(self, filename, mode='a', encoding=None, delay=False, errors=None):
    -        """
    -        Open the specified file and use it as the stream for logging.
    -        """
    -        # Issue #27493: add support for Path objects to be passed in
    -        filename = os.fspath(filename)
    -        #keep the absolute path, otherwise derived classes which use this
    -        #may come a cropper when the current directory changes
    -        self.baseFilename = os.path.abspath(filename)
    -        self.mode = mode
    -        self.encoding = encoding
    -        if "b" not in mode:
    -            self.encoding = io.text_encoding(encoding)
    -        self.errors = errors
    -        self.delay = delay
    -        # bpo-26789: FileHandler keeps a reference to the builtin open()
    -        # function to be able to open or reopen the file during Python
    -        # finalization.
    -        self._builtin_open = open
    -        if delay:
    -            #We don't open the stream, but we still need to call the
    -            #Handler constructor to set level, formatter, lock etc.
    -            Handler.__init__(self)
    -            self.stream = None
    -        else:
    -            StreamHandler.__init__(self, self._open())
    -
    -    def close(self):
    -        """
    -        Closes the stream.
    -        """
    -        self.acquire()
    -        try:
    -            try:
    -                if self.stream:
    -                    try:
    -                        self.flush()
    -                    finally:
    -                        stream = self.stream
    -                        self.stream = None
    -                        if hasattr(stream, "close"):
    -                            stream.close()
    -            finally:
    -                # Issue #19523: call unconditionally to
    -                # prevent a handler leak when delay is set
    -                # Also see Issue #42378: we also rely on
    -                # self._closed being set to True there
    -                StreamHandler.close(self)
    -        finally:
    -            self.release()
    -
    -    def _open(self):
    -        """
    -        Open the current base file with the (original) mode and encoding.
    -        Return the resulting stream.
    -        """
    -        open_func = self._builtin_open
    -        return open_func(self.baseFilename, self.mode,
    -                         encoding=self.encoding, errors=self.errors)
    -
    -    def emit(self, record):
    -        """
    -        Emit a record.
    -
    -        If the stream was not opened because 'delay' was specified in the
    -        constructor, open it before calling the superclass's emit.
    -
    -        If stream is not open, current mode is 'w' and `_closed=True`, record
    -        will not be emitted (see Issue #42378).
    -        """
    -        if self.stream is None:
    -            if self.mode != 'w' or not self._closed:
    -                self.stream = self._open()
    -        if self.stream:
    -            StreamHandler.emit(self, record)
    -
    -    def __repr__(self):
    -        level = getLevelName(self.level)
    -        return '<%s %s (%s)>' % (self.__class__.__name__, self.baseFilename, level)
    -
    -
    -class _StderrHandler(StreamHandler):
    -    """
    -    This class is like a StreamHandler using sys.stderr, but always uses
    -    whatever sys.stderr is currently set to rather than the value of
    -    sys.stderr at handler construction time.
    -    """
    -    def __init__(self, level=NOTSET):
    -        """
    -        Initialize the handler.
    -        """
    -        Handler.__init__(self, level)
    -
    -    @property
    -    def stream(self):
    -        return sys.stderr
    -
    -
    -_defaultLastResort = _StderrHandler(WARNING)
    -lastResort = _defaultLastResort
    -
    -#---------------------------------------------------------------------------
    -#   Manager classes and functions
    -#---------------------------------------------------------------------------
    -
    -class PlaceHolder(object):
    -    """
    -    PlaceHolder instances are used in the Manager logger hierarchy to take
    -    the place of nodes for which no loggers have been defined. This class is
    -    intended for internal use only and not as part of the public API.
    -    """
    -    def __init__(self, alogger):
    -        """
    -        Initialize with the specified logger being a child of this placeholder.
    -        """
    -        self.loggerMap = { alogger : None }
    -
    -    def append(self, alogger):
    -        """
    -        Add the specified logger as a child of this placeholder.
    -        """
    -        if alogger not in self.loggerMap:
    -            self.loggerMap[alogger] = None
    -
    -#
    -#   Determine which class to use when instantiating loggers.
    -#
    -
    -def setLoggerClass(klass):
    -    """
    -    Set the class to be used when instantiating a logger. The class should
    -    define __init__() such that only a name argument is required, and the
    -    __init__() should call Logger.__init__()
    -    """
    -    if klass != Logger:
    -        if not issubclass(klass, Logger):
    -            raise TypeError("logger not derived from logging.Logger: "
    -                            + klass.__name__)
    -    global _loggerClass
    -    _loggerClass = klass
    -
    -def getLoggerClass():
    -    """
    -    Return the class to be used when instantiating a logger.
    -    """
    -    return _loggerClass
    -
    -class Manager(object):
    -    """
    -    There is [under normal circumstances] just one Manager instance, which
    -    holds the hierarchy of loggers.
    -    """
    -    def __init__(self, rootnode):
    -        """
    -        Initialize the manager with the root node of the logger hierarchy.
    -        """
    -        self.root = rootnode
    -        self.disable = 0
    -        self.emittedNoHandlerWarning = False
    -        self.loggerDict = {}
    -        self.loggerClass = None
    -        self.logRecordFactory = None
    -
    -    @property
    -    def disable(self):
    -        return self._disable
    -
    -    @disable.setter
    -    def disable(self, value):
    -        self._disable = _checkLevel(value)
    -
    -    def getLogger(self, name):
    -        """
    -        Get a logger with the specified name (channel name), creating it
    -        if it doesn't yet exist. This name is a dot-separated hierarchical
    -        name, such as "a", "a.b", "a.b.c" or similar.
    -
    -        If a PlaceHolder existed for the specified name [i.e. the logger
    -        didn't exist but a child of it did], replace it with the created
    -        logger and fix up the parent/child references which pointed to the
    -        placeholder to now point to the logger.
    -        """
    -        rv = None
    -        if not isinstance(name, str):
    -            raise TypeError('A logger name must be a string')
    -        _acquireLock()
    -        try:
    -            if name in self.loggerDict:
    -                rv = self.loggerDict[name]
    -                if isinstance(rv, PlaceHolder):
    -                    ph = rv
    -                    rv = (self.loggerClass or _loggerClass)(name)
    -                    rv.manager = self
    -                    self.loggerDict[name] = rv
    -                    self._fixupChildren(ph, rv)
    -                    self._fixupParents(rv)
    -            else:
    -                rv = (self.loggerClass or _loggerClass)(name)
    -                rv.manager = self
    -                self.loggerDict[name] = rv
    -                self._fixupParents(rv)
    -        finally:
    -            _releaseLock()
    -        return rv
    -
    -    def setLoggerClass(self, klass):
    -        """
    -        Set the class to be used when instantiating a logger with this Manager.
    -        """
    -        if klass != Logger:
    -            if not issubclass(klass, Logger):
    -                raise TypeError("logger not derived from logging.Logger: "
    -                                + klass.__name__)
    -        self.loggerClass = klass
    -
    -    def setLogRecordFactory(self, factory):
    -        """
    -        Set the factory to be used when instantiating a log record with this
    -        Manager.
    -        """
    -        self.logRecordFactory = factory
    -
    -    def _fixupParents(self, alogger):
    -        """
    -        Ensure that there are either loggers or placeholders all the way
    -        from the specified logger to the root of the logger hierarchy.
    -        """
    -        name = alogger.name
    -        i = name.rfind(".")
    -        rv = None
    -        while (i > 0) and not rv:
    -            substr = name[:i]
    -            if substr not in self.loggerDict:
    -                self.loggerDict[substr] = PlaceHolder(alogger)
    -            else:
    -                obj = self.loggerDict[substr]
    -                if isinstance(obj, Logger):
    -                    rv = obj
    -                else:
    -                    assert isinstance(obj, PlaceHolder)
    -                    obj.append(alogger)
    -            i = name.rfind(".", 0, i - 1)
    -        if not rv:
    -            rv = self.root
    -        alogger.parent = rv
    -
    -    def _fixupChildren(self, ph, alogger):
    -        """
    -        Ensure that children of the placeholder ph are connected to the
    -        specified logger.
    -        """
    -        name = alogger.name
    -        namelen = len(name)
    -        for c in ph.loggerMap.keys():
    -            #The if means ... if not c.parent.name.startswith(nm)
    -            if c.parent.name[:namelen] != name:
    -                alogger.parent = c.parent
    -                c.parent = alogger
    -
    -    def _clear_cache(self):
    -        """
    -        Clear the cache for all loggers in loggerDict
    -        Called when level changes are made
    -        """
    -
    -        _acquireLock()
    -        for logger in self.loggerDict.values():
    -            if isinstance(logger, Logger):
    -                logger._cache.clear()
    -        self.root._cache.clear()
    -        _releaseLock()
    -
    -#---------------------------------------------------------------------------
    -#   Logger classes and functions
    -#---------------------------------------------------------------------------
    -
    -class Logger(Filterer):
    -    """
    -    Instances of the Logger class represent a single logging channel. A
    -    "logging channel" indicates an area of an application. Exactly how an
    -    "area" is defined is up to the application developer. Since an
    -    application can have any number of areas, logging channels are identified
    -    by a unique string. Application areas can be nested (e.g. an area
    -    of "input processing" might include sub-areas "read CSV files", "read
    -    XLS files" and "read Gnumeric files"). To cater for this natural nesting,
    -    channel names are organized into a namespace hierarchy where levels are
    -    separated by periods, much like the Java or Python package namespace. So
    -    in the instance given above, channel names might be "input" for the upper
    -    level, and "input.csv", "input.xls" and "input.gnu" for the sub-levels.
    -    There is no arbitrary limit to the depth of nesting.
    -    """
    -    def __init__(self, name, level=NOTSET):
    -        """
    -        Initialize the logger with a name and an optional level.
    -        """
    -        Filterer.__init__(self)
    -        self.name = name
    -        self.level = _checkLevel(level)
    -        self.parent = None
    -        self.propagate = True
    -        self.handlers = []
    -        self.disabled = False
    -        self._cache = {}
    -
    -    def setLevel(self, level):
    -        """
    -        Set the logging level of this logger.  level must be an int or a str.
    -        """
    -        self.level = _checkLevel(level)
    -        self.manager._clear_cache()
    -
    -    def debug(self, msg, *args, **kwargs):
    -        """
    -        Log 'msg % args' with severity 'DEBUG'.
    -
    -        To pass exception information, use the keyword argument exc_info with
    -        a true value, e.g.
    -
    -        logger.debug("Houston, we have a %s", "thorny problem", exc_info=True)
    -        """
    -        if self.isEnabledFor(DEBUG):
    -            self._log(DEBUG, msg, args, **kwargs)
    -
    -    def info(self, msg, *args, **kwargs):
    -        """
    -        Log 'msg % args' with severity 'INFO'.
    -
    -        To pass exception information, use the keyword argument exc_info with
    -        a true value, e.g.
    -
    -        logger.info("Houston, we have a %s", "notable problem", exc_info=True)
    -        """
    -        if self.isEnabledFor(INFO):
    -            self._log(INFO, msg, args, **kwargs)
    -
    -    def warning(self, msg, *args, **kwargs):
    -        """
    -        Log 'msg % args' with severity 'WARNING'.
    -
    -        To pass exception information, use the keyword argument exc_info with
    -        a true value, e.g.
    -
    -        logger.warning("Houston, we have a %s", "bit of a problem", exc_info=True)
    -        """
    -        if self.isEnabledFor(WARNING):
    -            self._log(WARNING, msg, args, **kwargs)
    -
    -    def warn(self, msg, *args, **kwargs):
    -        warnings.warn("The 'warn' method is deprecated, "
    -            "use 'warning' instead", DeprecationWarning, 2)
    -        self.warning(msg, *args, **kwargs)
    -
    -    def error(self, msg, *args, **kwargs):
    -        """
    -        Log 'msg % args' with severity 'ERROR'.
    -
    -        To pass exception information, use the keyword argument exc_info with
    -        a true value, e.g.
    -
    -        logger.error("Houston, we have a %s", "major problem", exc_info=True)
    -        """
    -        if self.isEnabledFor(ERROR):
    -            self._log(ERROR, msg, args, **kwargs)
    -
    -    def exception(self, msg, *args, exc_info=True, **kwargs):
    -        """
    -        Convenience method for logging an ERROR with exception information.
    -        """
    -        self.error(msg, *args, exc_info=exc_info, **kwargs)
    -
    -    def critical(self, msg, *args, **kwargs):
    -        """
    -        Log 'msg % args' with severity 'CRITICAL'.
    -
    -        To pass exception information, use the keyword argument exc_info with
    -        a true value, e.g.
    -
    -        logger.critical("Houston, we have a %s", "major disaster", exc_info=True)
    -        """
    -        if self.isEnabledFor(CRITICAL):
    -            self._log(CRITICAL, msg, args, **kwargs)
    -
    -    def fatal(self, msg, *args, **kwargs):
    -        """
    -        Don't use this method, use critical() instead.
    -        """
    -        self.critical(msg, *args, **kwargs)
    -
    -    def log(self, level, msg, *args, **kwargs):
    -        """
    -        Log 'msg % args' with the integer severity 'level'.
    -
    -        To pass exception information, use the keyword argument exc_info with
    -        a true value, e.g.
    -
    -        logger.log(level, "We have a %s", "mysterious problem", exc_info=True)
    -        """
    -        if not isinstance(level, int):
    -            if raiseExceptions:
    -                raise TypeError("level must be an integer")
    -            else:
    -                return
    -        if self.isEnabledFor(level):
    -            self._log(level, msg, args, **kwargs)
    -
    -    def findCaller(self, stack_info=False, stacklevel=1):
    -        """
    -        Find the stack frame of the caller so that we can note the source
    -        file name, line number and function name.
    -        """
    -        f = currentframe()
    -        #On some versions of IronPython, currentframe() returns None if
    -        #IronPython isn't run with -X:Frames.
    -        if f is None:
    -            return "(unknown file)", 0, "(unknown function)", None
    -        while stacklevel > 0:
    -            next_f = f.f_back
    -            if next_f is None:
    -                ## We've got options here.
    -                ## If we want to use the last (deepest) frame:
    -                break
    -                ## If we want to mimic the warnings module:
    -                #return ("sys", 1, "(unknown function)", None)
    -                ## If we want to be pedantic:
    -                #raise ValueError("call stack is not deep enough")
    -            f = next_f
    -            if not _is_internal_frame(f):
    -                stacklevel -= 1
    -        co = f.f_code
    -        sinfo = None
    -        if stack_info:
    -            with io.StringIO() as sio:
    -                sio.write("Stack (most recent call last):\n")
    -                traceback.print_stack(f, file=sio)
    -                sinfo = sio.getvalue()
    -                if sinfo[-1] == '\n':
    -                    sinfo = sinfo[:-1]
    -        return co.co_filename, f.f_lineno, co.co_name, sinfo
    -
    -    def makeRecord(self, name, level, fn, lno, msg, args, exc_info,
    -                   func=None, extra=None, sinfo=None):
    -        """
    -        A factory method which can be overridden in subclasses to create
    -        specialized LogRecords.
    -        """
    -        rv = _logRecordFactory(name, level, fn, lno, msg, args, exc_info, func,
    -                             sinfo)
    -        if extra is not None:
    -            for key in extra:
    -                if (key in ["message", "asctime"]) or (key in rv.__dict__):
    -                    raise KeyError("Attempt to overwrite %r in LogRecord" % key)
    -                rv.__dict__[key] = extra[key]
    -        return rv
    -
    -    def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False,
    -             stacklevel=1):
    -        """
    -        Low-level logging routine which creates a LogRecord and then calls
    -        all the handlers of this logger to handle the record.
    -        """
    -        sinfo = None
    -        if _srcfile:
    -            #IronPython doesn't track Python frames, so findCaller raises an
    -            #exception on some versions of IronPython. We trap it here so that
    -            #IronPython can use logging.
    -            try:
    -                fn, lno, func, sinfo = self.findCaller(stack_info, stacklevel)
    -            except ValueError: # pragma: no cover
    -                fn, lno, func = "(unknown file)", 0, "(unknown function)"
    -        else: # pragma: no cover
    -            fn, lno, func = "(unknown file)", 0, "(unknown function)"
    -        if exc_info:
    -            if isinstance(exc_info, BaseException):
    -                exc_info = (type(exc_info), exc_info, exc_info.__traceback__)
    -            elif not isinstance(exc_info, tuple):
    -                exc_info = sys.exc_info()
    -        record = self.makeRecord(self.name, level, fn, lno, msg, args,
    -                                 exc_info, func, extra, sinfo)
    -        self.handle(record)
    -
    -    def handle(self, record):
    -        """
    -        Call the handlers for the specified record.
    -
    -        This method is used for unpickled records received from a socket, as
    -        well as those created locally. Logger-level filtering is applied.
    -        """
    -        if self.disabled:
    -            return
    -        maybe_record = self.filter(record)
    -        if not maybe_record:
    -            return
    -        if isinstance(maybe_record, LogRecord):
    -            record = maybe_record
    -        self.callHandlers(record)
    -
    -    def addHandler(self, hdlr):
    -        """
    -        Add the specified handler to this logger.
    -        """
    -        _acquireLock()
    -        try:
    -            if not (hdlr in self.handlers):
    -                self.handlers.append(hdlr)
    -        finally:
    -            _releaseLock()
    -
    -    def removeHandler(self, hdlr):
    -        """
    -        Remove the specified handler from this logger.
    -        """
    -        _acquireLock()
    -        try:
    -            if hdlr in self.handlers:
    -                self.handlers.remove(hdlr)
    -        finally:
    -            _releaseLock()
    -
    -    def hasHandlers(self):
    -        """
    -        See if this logger has any handlers configured.
    -
    -        Loop through all handlers for this logger and its parents in the
    -        logger hierarchy. Return True if a handler was found, else False.
    -        Stop searching up the hierarchy whenever a logger with the "propagate"
    -        attribute set to zero is found - that will be the last logger which
    -        is checked for the existence of handlers.
    -        """
    -        c = self
    -        rv = False
    -        while c:
    -            if c.handlers:
    -                rv = True
    -                break
    -            if not c.propagate:
    -                break
    -            else:
    -                c = c.parent
    -        return rv
    -
    -    def callHandlers(self, record):
    -        """
    -        Pass a record to all relevant handlers.
    -
    -        Loop through all handlers for this logger and its parents in the
    -        logger hierarchy. If no handler was found, output a one-off error
    -        message to sys.stderr. Stop searching up the hierarchy whenever a
    -        logger with the "propagate" attribute set to zero is found - that
    -        will be the last logger whose handlers are called.
    -        """
    -        c = self
    -        found = 0
    -        while c:
    -            for hdlr in c.handlers:
    -                found = found + 1
    -                if record.levelno >= hdlr.level:
    -                    hdlr.handle(record)
    -            if not c.propagate:
    -                c = None    #break out
    -            else:
    -                c = c.parent
    -        if (found == 0):
    -            if lastResort:
    -                if record.levelno >= lastResort.level:
    -                    lastResort.handle(record)
    -            elif raiseExceptions and not self.manager.emittedNoHandlerWarning:
    -                sys.stderr.write("No handlers could be found for logger"
    -                                 " \"%s\"\n" % self.name)
    -                self.manager.emittedNoHandlerWarning = True
    -
    -    def getEffectiveLevel(self):
    -        """
    -        Get the effective level for this logger.
    -
    -        Loop through this logger and its parents in the logger hierarchy,
    -        looking for a non-zero logging level. Return the first one found.
    -        """
    -        logger = self
    -        while logger:
    -            if logger.level:
    -                return logger.level
    -            logger = logger.parent
    -        return NOTSET
    -
    -    def isEnabledFor(self, level):
    -        """
    -        Is this logger enabled for level 'level'?
    -        """
    -        if self.disabled:
    -            return False
    -
    -        try:
    -            return self._cache[level]
    -        except KeyError:
    -            _acquireLock()
    -            try:
    -                if self.manager.disable >= level:
    -                    is_enabled = self._cache[level] = False
    -                else:
    -                    is_enabled = self._cache[level] = (
    -                        level >= self.getEffectiveLevel()
    -                    )
    -            finally:
    -                _releaseLock()
    -            return is_enabled
    -
    -    def getChild(self, suffix):
    -        """
    -        Get a logger which is a descendant to this one.
    -
    -        This is a convenience method, such that
    -
    -        logging.getLogger('abc').getChild('def.ghi')
    -
    -        is the same as
    -
    -        logging.getLogger('abc.def.ghi')
    -
    -        It's useful, for example, when the parent logger is named using
    -        __name__ rather than a literal string.
    -        """
    -        if self.root is not self:
    -            suffix = '.'.join((self.name, suffix))
    -        return self.manager.getLogger(suffix)
    -
    -    def getChildren(self):
    -
    -        def _hierlevel(logger):
    -            if logger is logger.manager.root:
    -                return 0
    -            return 1 + logger.name.count('.')
    -
    -        d = self.manager.loggerDict
    -        _acquireLock()
    -        try:
    -            # exclude PlaceHolders - the last check is to ensure that lower-level
    -            # descendants aren't returned - if there are placeholders, a logger's
    -            # parent field might point to a grandparent or ancestor thereof.
    -            return set(item for item in d.values()
    -                       if isinstance(item, Logger) and item.parent is self and
    -                       _hierlevel(item) == 1 + _hierlevel(item.parent))
    -        finally:
    -            _releaseLock()
    -
    -    def __repr__(self):
    -        level = getLevelName(self.getEffectiveLevel())
    -        return '<%s %s (%s)>' % (self.__class__.__name__, self.name, level)
    -
    -    def __reduce__(self):
    -        if getLogger(self.name) is not self:
    -            import pickle
    -            raise pickle.PicklingError('logger cannot be pickled')
    -        return getLogger, (self.name,)
    -
    -
    -class RootLogger(Logger):
    -    """
    -    A root logger is not that different to any other logger, except that
    -    it must have a logging level and there is only one instance of it in
    -    the hierarchy.
    -    """
    -    def __init__(self, level):
    -        """
    -        Initialize the logger with the name "root".
    -        """
    -        Logger.__init__(self, "root", level)
    -
    -    def __reduce__(self):
    -        return getLogger, ()
    -
    -_loggerClass = Logger
    -
    -class LoggerAdapter(object):
    -    """
    -    An adapter for loggers which makes it easier to specify contextual
    -    information in logging output.
    -    """
    -
    -    def __init__(self, logger, extra=None):
    -        """
    -        Initialize the adapter with a logger and a dict-like object which
    -        provides contextual information. This constructor signature allows
    -        easy stacking of LoggerAdapters, if so desired.
    -
    -        You can effectively pass keyword arguments as shown in the
    -        following example:
    -
    -        adapter = LoggerAdapter(someLogger, dict(p1=v1, p2="v2"))
    -        """
    -        self.logger = logger
    -        self.extra = extra
    -
    -    def process(self, msg, kwargs):
    -        """
    -        Process the logging message and keyword arguments passed in to
    -        a logging call to insert contextual information. You can either
    -        manipulate the message itself, the keyword args or both. Return
    -        the message and kwargs modified (or not) to suit your needs.
    -
    -        Normally, you'll only need to override this one method in a
    -        LoggerAdapter subclass for your specific needs.
    -        """
    -        kwargs["extra"] = self.extra
    -        return msg, kwargs
    -
    -    #
    -    # Boilerplate convenience methods
    -    #
    -    def debug(self, msg, *args, **kwargs):
    -        """
    -        Delegate a debug call to the underlying logger.
    -        """
    -        self.log(DEBUG, msg, *args, **kwargs)
    -
    -    def info(self, msg, *args, **kwargs):
    -        """
    -        Delegate an info call to the underlying logger.
    -        """
    -        self.log(INFO, msg, *args, **kwargs)
    -
    -    def warning(self, msg, *args, **kwargs):
    -        """
    -        Delegate a warning call to the underlying logger.
    -        """
    -        self.log(WARNING, msg, *args, **kwargs)
    -
    -    def warn(self, msg, *args, **kwargs):
    -        warnings.warn("The 'warn' method is deprecated, "
    -            "use 'warning' instead", DeprecationWarning, 2)
    -        self.warning(msg, *args, **kwargs)
    -
    -    def error(self, msg, *args, **kwargs):
    -        """
    -        Delegate an error call to the underlying logger.
    -        """
    -        self.log(ERROR, msg, *args, **kwargs)
    -
    -    def exception(self, msg, *args, exc_info=True, **kwargs):
    -        """
    -        Delegate an exception call to the underlying logger.
    -        """
    -        self.log(ERROR, msg, *args, exc_info=exc_info, **kwargs)
    -
    -    def critical(self, msg, *args, **kwargs):
    -        """
    -        Delegate a critical call to the underlying logger.
    -        """
    -        self.log(CRITICAL, msg, *args, **kwargs)
    -
    -    def log(self, level, msg, *args, **kwargs):
    -        """
    -        Delegate a log call to the underlying logger, after adding
    -        contextual information from this adapter instance.
    -        """
    -        if self.isEnabledFor(level):
    -            msg, kwargs = self.process(msg, kwargs)
    -            self.logger.log(level, msg, *args, **kwargs)
    -
    -    def isEnabledFor(self, level):
    -        """
    -        Is this logger enabled for level 'level'?
    -        """
    -        return self.logger.isEnabledFor(level)
    -
    -    def setLevel(self, level):
    -        """
    -        Set the specified level on the underlying logger.
    -        """
    -        self.logger.setLevel(level)
    -
    -    def getEffectiveLevel(self):
    -        """
    -        Get the effective level for the underlying logger.
    -        """
    -        return self.logger.getEffectiveLevel()
    -
    -    def hasHandlers(self):
    -        """
    -        See if the underlying logger has any handlers.
    -        """
    -        return self.logger.hasHandlers()
    -
    -    def _log(self, level, msg, args, **kwargs):
    -        """
    -        Low-level log implementation, proxied to allow nested logger adapters.
    -        """
    -        return self.logger._log(level, msg, args, **kwargs)
    -
    -    @property
    -    def manager(self):
    -        return self.logger.manager
    -
    -    @manager.setter
    -    def manager(self, value):
    -        self.logger.manager = value
    -
    -    @property
    -    def name(self):
    -        return self.logger.name
    -
    -    def __repr__(self):
    -        logger = self.logger
    -        level = getLevelName(logger.getEffectiveLevel())
    -        return '<%s %s (%s)>' % (self.__class__.__name__, logger.name, level)
    -
    -    __class_getitem__ = classmethod(GenericAlias)
    -
    -root = RootLogger(WARNING)
    -Logger.root = root
    -Logger.manager = Manager(Logger.root)
    -
    -#---------------------------------------------------------------------------
    -# Configuration classes and functions
    -#---------------------------------------------------------------------------
    -
    -def basicConfig(**kwargs):
    -    """
    -    Do basic configuration for the logging system.
    -
    -    This function does nothing if the root logger already has handlers
    -    configured, unless the keyword argument *force* is set to ``True``.
    -    It is a convenience method intended for use by simple scripts
    -    to do one-shot configuration of the logging package.
    -
    -    The default behaviour is to create a StreamHandler which writes to
    -    sys.stderr, set a formatter using the BASIC_FORMAT format string, and
    -    add the handler to the root logger.
    -
    -    A number of optional keyword arguments may be specified, which can alter
    -    the default behaviour.
    -
    -    filename  Specifies that a FileHandler be created, using the specified
    -              filename, rather than a StreamHandler.
    -    filemode  Specifies the mode to open the file, if filename is specified
    -              (if filemode is unspecified, it defaults to 'a').
    -    format    Use the specified format string for the handler.
    -    datefmt   Use the specified date/time format.
    -    style     If a format string is specified, use this to specify the
    -              type of format string (possible values '%', '{', '$', for
    -              %-formatting, :meth:`str.format` and :class:`string.Template`
    -              - defaults to '%').
    -    level     Set the root logger level to the specified level.
    -    stream    Use the specified stream to initialize the StreamHandler. Note
    -              that this argument is incompatible with 'filename' - if both
    -              are present, 'stream' is ignored.
    -    handlers  If specified, this should be an iterable of already created
    -              handlers, which will be added to the root logger. Any handler
    -              in the list which does not have a formatter assigned will be
    -              assigned the formatter created in this function.
    -    force     If this keyword  is specified as true, any existing handlers
    -              attached to the root logger are removed and closed, before
    -              carrying out the configuration as specified by the other
    -              arguments.
    -    encoding  If specified together with a filename, this encoding is passed to
    -              the created FileHandler, causing it to be used when the file is
    -              opened.
    -    errors    If specified together with a filename, this value is passed to the
    -              created FileHandler, causing it to be used when the file is
    -              opened in text mode. If not specified, the default value is
    -              `backslashreplace`.
    -
    -    Note that you could specify a stream created using open(filename, mode)
    -    rather than passing the filename and mode in. However, it should be
    -    remembered that StreamHandler does not close its stream (since it may be
    -    using sys.stdout or sys.stderr), whereas FileHandler closes its stream
    -    when the handler is closed.
    -
    -    .. versionchanged:: 3.2
    -       Added the ``style`` parameter.
    -
    -    .. versionchanged:: 3.3
    -       Added the ``handlers`` parameter. A ``ValueError`` is now thrown for
    -       incompatible arguments (e.g. ``handlers`` specified together with
    -       ``filename``/``filemode``, or ``filename``/``filemode`` specified
    -       together with ``stream``, or ``handlers`` specified together with
    -       ``stream``.
    -
    -    .. versionchanged:: 3.8
    -       Added the ``force`` parameter.
    -
    -    .. versionchanged:: 3.9
    -       Added the ``encoding`` and ``errors`` parameters.
    -    """
    -    # Add thread safety in case someone mistakenly calls
    -    # basicConfig() from multiple threads
    -    _acquireLock()
    -    try:
    -        force = kwargs.pop('force', False)
    -        encoding = kwargs.pop('encoding', None)
    -        errors = kwargs.pop('errors', 'backslashreplace')
    -        if force:
    -            for h in root.handlers[:]:
    -                root.removeHandler(h)
    -                h.close()
    -        if len(root.handlers) == 0:
    -            handlers = kwargs.pop("handlers", None)
    -            if handlers is None:
    -                if "stream" in kwargs and "filename" in kwargs:
    -                    raise ValueError("'stream' and 'filename' should not be "
    -                                     "specified together")
    -            else:
    -                if "stream" in kwargs or "filename" in kwargs:
    -                    raise ValueError("'stream' or 'filename' should not be "
    -                                     "specified together with 'handlers'")
    -            if handlers is None:
    -                filename = kwargs.pop("filename", None)
    -                mode = kwargs.pop("filemode", 'a')
    -                if filename:
    -                    if 'b' in mode:
    -                        errors = None
    -                    else:
    -                        encoding = io.text_encoding(encoding)
    -                    h = FileHandler(filename, mode,
    -                                    encoding=encoding, errors=errors)
    -                else:
    -                    stream = kwargs.pop("stream", None)
    -                    h = StreamHandler(stream)
    -                handlers = [h]
    -            dfs = kwargs.pop("datefmt", None)
    -            style = kwargs.pop("style", '%')
    -            if style not in _STYLES:
    -                raise ValueError('Style must be one of: %s' % ','.join(
    -                                 _STYLES.keys()))
    -            fs = kwargs.pop("format", _STYLES[style][1])
    -            fmt = Formatter(fs, dfs, style)
    -            for h in handlers:
    -                if h.formatter is None:
    -                    h.setFormatter(fmt)
    -                root.addHandler(h)
    -            level = kwargs.pop("level", None)
    -            if level is not None:
    -                root.setLevel(level)
    -            if kwargs:
    -                keys = ', '.join(kwargs.keys())
    -                raise ValueError('Unrecognised argument(s): %s' % keys)
    -    finally:
    -        _releaseLock()
    -
    -#---------------------------------------------------------------------------
    -# Utility functions at module level.
    -# Basically delegate everything to the root logger.
    -#---------------------------------------------------------------------------
    -
    -def getLogger(name=None):
    -    """
    -    Return a logger with the specified name, creating it if necessary.
    -
    -    If no name is specified, return the root logger.
    -    """
    -    if not name or isinstance(name, str) and name == root.name:
    -        return root
    -    return Logger.manager.getLogger(name)
    -
    -def critical(msg, *args, **kwargs):
    -    """
    -    Log a message with severity 'CRITICAL' on the root logger. If the logger
    -    has no handlers, call basicConfig() to add a console handler with a
    -    pre-defined format.
    -    """
    -    if len(root.handlers) == 0:
    -        basicConfig()
    -    root.critical(msg, *args, **kwargs)
    -
    -def fatal(msg, *args, **kwargs):
    -    """
    -    Don't use this function, use critical() instead.
    -    """
    -    critical(msg, *args, **kwargs)
    -
    -def error(msg, *args, **kwargs):
    -    """
    -    Log a message with severity 'ERROR' on the root logger. If the logger has
    -    no handlers, call basicConfig() to add a console handler with a pre-defined
    -    format.
    -    """
    -    if len(root.handlers) == 0:
    -        basicConfig()
    -    root.error(msg, *args, **kwargs)
    -
    -def exception(msg, *args, exc_info=True, **kwargs):
    -    """
    -    Log a message with severity 'ERROR' on the root logger, with exception
    -    information. If the logger has no handlers, basicConfig() is called to add
    -    a console handler with a pre-defined format.
    -    """
    -    error(msg, *args, exc_info=exc_info, **kwargs)
    -
    -def warning(msg, *args, **kwargs):
    -    """
    -    Log a message with severity 'WARNING' on the root logger. If the logger has
    -    no handlers, call basicConfig() to add a console handler with a pre-defined
    -    format.
    -    """
    -    if len(root.handlers) == 0:
    -        basicConfig()
    -    root.warning(msg, *args, **kwargs)
    -
    -def warn(msg, *args, **kwargs):
    -    warnings.warn("The 'warn' function is deprecated, "
    -        "use 'warning' instead", DeprecationWarning, 2)
    -    warning(msg, *args, **kwargs)
    -
    -def info(msg, *args, **kwargs):
    -    """
    -    Log a message with severity 'INFO' on the root logger. If the logger has
    -    no handlers, call basicConfig() to add a console handler with a pre-defined
    -    format.
    -    """
    -    if len(root.handlers) == 0:
    -        basicConfig()
    -    root.info(msg, *args, **kwargs)
    -
    -def debug(msg, *args, **kwargs):
    -    """
    -    Log a message with severity 'DEBUG' on the root logger. If the logger has
    -    no handlers, call basicConfig() to add a console handler with a pre-defined
    -    format.
    -    """
    -    if len(root.handlers) == 0:
    -        basicConfig()
    -    root.debug(msg, *args, **kwargs)
    -
    -def log(level, msg, *args, **kwargs):
    -    """
    -    Log 'msg % args' with the integer severity 'level' on the root logger. If
    -    the logger has no handlers, call basicConfig() to add a console handler
    -    with a pre-defined format.
    -    """
    -    if len(root.handlers) == 0:
    -        basicConfig()
    -    root.log(level, msg, *args, **kwargs)
    -
    -def disable(level=CRITICAL):
    -    """
    -    Disable all logging calls of severity 'level' and below.
    -    """
    -    root.manager.disable = level
    -    root.manager._clear_cache()
    -
    -def shutdown(handlerList=_handlerList):
    -    """
    -    Perform any cleanup actions in the logging system (e.g. flushing
    -    buffers).
    -
    -    Should be called at application exit.
    -    """
    -    for wr in reversed(handlerList[:]):
    -        #errors might occur, for example, if files are locked
    -        #we just ignore them if raiseExceptions is not set
    -        try:
    -            h = wr()
    -            if h:
    -                try:
    -                    h.acquire()
    -                    # MemoryHandlers might not want to be flushed on close,
    -                    # but circular imports prevent us scoping this to just
    -                    # those handlers.  hence the default to True.
    -                    if getattr(h, 'flushOnClose', True):
    -                        h.flush()
    -                    h.close()
    -                except (OSError, ValueError):
    -                    # Ignore errors which might be caused
    -                    # because handlers have been closed but
    -                    # references to them are still around at
    -                    # application exit.
    -                    pass
    -                finally:
    -                    h.release()
    -        except: # ignore everything, as we're shutting down
    -            if raiseExceptions:
    -                raise
    -            #else, swallow
    -
    -#Let's try and shutdown automatically on application exit...
    -import atexit
    -atexit.register(shutdown)
    -
    -# Null handler
    -
    -class NullHandler(Handler):
    -    """
    -    This handler does nothing. It's intended to be used to avoid the
    -    "No handlers could be found for logger XXX" one-off warning. This is
    -    important for library code, which may contain code to log events. If a user
    -    of the library does not configure logging, the one-off warning might be
    -    produced; to avoid this, the library developer simply needs to instantiate
    -    a NullHandler and add it to the top-level logger of the library module or
    -    package.
    -    """
    -    def handle(self, record):
    -        """Stub."""
    -
    -    def emit(self, record):
    -        """Stub."""
    -
    -    def createLock(self):
    -        self.lock = None
    -
    -    def _at_fork_reinit(self):
    -        pass
    -
    -# Warnings integration
    -
    -_warnings_showwarning = None
    -
    -def _showwarning(message, category, filename, lineno, file=None, line=None):
    -    """
    -    Implementation of showwarnings which redirects to logging, which will first
    -    check to see if the file parameter is None. If a file is specified, it will
    -    delegate to the original warnings implementation of showwarning. Otherwise,
    -    it will call warnings.formatwarning and will log the resulting string to a
    -    warnings logger named "py.warnings" with level logging.WARNING.
    -    """
    -    if file is not None:
    -        if _warnings_showwarning is not None:
    -            _warnings_showwarning(message, category, filename, lineno, file, line)
    -    else:
    -        s = warnings.formatwarning(message, category, filename, lineno, line)
    -        logger = getLogger("py.warnings")
    -        if not logger.handlers:
    -            logger.addHandler(NullHandler())
    -        # bpo-46557: Log str(s) as msg instead of logger.warning("%s", s)
    -        # since some log aggregation tools group logs by the msg arg
    -        logger.warning(str(s))
    -
    -def captureWarnings(capture):
    -    """
    -    If capture is true, redirect all warnings to the logging package.
    -    If capture is False, ensure that warnings are not redirected to logging
    -    but to their original destinations.
    -    """
    -    global _warnings_showwarning
    -    if capture:
    -        if _warnings_showwarning is None:
    -            _warnings_showwarning = warnings.showwarning
    -            warnings.showwarning = _showwarning
    -    else:
    -        if _warnings_showwarning is not None:
    -            warnings.showwarning = _warnings_showwarning
    -            _warnings_showwarning = None
    -
    - -
    - -
    -
    - -
    -
    - - - - - - - \ No newline at end of file diff --git a/docs/build/html/_modules/re.html b/docs/build/html/_modules/re.html deleted file mode 100644 index 3c2eb8d..0000000 --- a/docs/build/html/_modules/re.html +++ /dev/null @@ -1,491 +0,0 @@ - - - - - - - re — CEL in Python documentation - - - - - - - - - - - - - - - - - - -
    -
    -
    - - -
    - -

    Source code for re

    -#
    -# Secret Labs' Regular Expression Engine
    -#
    -# re-compatible interface for the sre matching engine
    -#
    -# Copyright (c) 1998-2001 by Secret Labs AB.  All rights reserved.
    -#
    -# This version of the SRE library can be redistributed under CNRI's
    -# Python 1.6 license.  For any other use, please contact Secret Labs
    -# AB (info@pythonware.com).
    -#
    -# Portions of this engine have been developed in cooperation with
    -# CNRI.  Hewlett-Packard provided funding for 1.6 integration and
    -# other compatibility work.
    -#
    -
    -r"""Support for regular expressions (RE).
    -
    -This module provides regular expression matching operations similar to
    -those found in Perl.  It supports both 8-bit and Unicode strings; both
    -the pattern and the strings being processed can contain null bytes and
    -characters outside the US ASCII range.
    -
    -Regular expressions can contain both special and ordinary characters.
    -Most ordinary characters, like "A", "a", or "0", are the simplest
    -regular expressions; they simply match themselves.  You can
    -concatenate ordinary characters, so last matches the string 'last'.
    -
    -The special characters are:
    -    "."      Matches any character except a newline.
    -    "^"      Matches the start of the string.
    -    "$"      Matches the end of the string or just before the newline at
    -             the end of the string.
    -    "*"      Matches 0 or more (greedy) repetitions of the preceding RE.
    -             Greedy means that it will match as many repetitions as possible.
    -    "+"      Matches 1 or more (greedy) repetitions of the preceding RE.
    -    "?"      Matches 0 or 1 (greedy) of the preceding RE.
    -    *?,+?,?? Non-greedy versions of the previous three special characters.
    -    {m,n}    Matches from m to n repetitions of the preceding RE.
    -    {m,n}?   Non-greedy version of the above.
    -    "\\"     Either escapes special characters or signals a special sequence.
    -    []       Indicates a set of characters.
    -             A "^" as the first character indicates a complementing set.
    -    "|"      A|B, creates an RE that will match either A or B.
    -    (...)    Matches the RE inside the parentheses.
    -             The contents can be retrieved or matched later in the string.
    -    (?aiLmsux) The letters set the corresponding flags defined below.
    -    (?:...)  Non-grouping version of regular parentheses.
    -    (?P<name>...) The substring matched by the group is accessible by name.
    -    (?P=name)     Matches the text matched earlier by the group named name.
    -    (?#...)  A comment; ignored.
    -    (?=...)  Matches if ... matches next, but doesn't consume the string.
    -    (?!...)  Matches if ... doesn't match next.
    -    (?<=...) Matches if preceded by ... (must be fixed length).
    -    (?<!...) Matches if not preceded by ... (must be fixed length).
    -    (?(id/name)yes|no) Matches yes pattern if the group with id/name matched,
    -                       the (optional) no pattern otherwise.
    -
    -The special sequences consist of "\\" and a character from the list
    -below.  If the ordinary character is not on the list, then the
    -resulting RE will match the second character.
    -    \number  Matches the contents of the group of the same number.
    -    \A       Matches only at the start of the string.
    -    \Z       Matches only at the end of the string.
    -    \b       Matches the empty string, but only at the start or end of a word.
    -    \B       Matches the empty string, but not at the start or end of a word.
    -    \d       Matches any decimal digit; equivalent to the set [0-9] in
    -             bytes patterns or string patterns with the ASCII flag.
    -             In string patterns without the ASCII flag, it will match the whole
    -             range of Unicode digits.
    -    \D       Matches any non-digit character; equivalent to [^\d].
    -    \s       Matches any whitespace character; equivalent to [ \t\n\r\f\v] in
    -             bytes patterns or string patterns with the ASCII flag.
    -             In string patterns without the ASCII flag, it will match the whole
    -             range of Unicode whitespace characters.
    -    \S       Matches any non-whitespace character; equivalent to [^\s].
    -    \w       Matches any alphanumeric character; equivalent to [a-zA-Z0-9_]
    -             in bytes patterns or string patterns with the ASCII flag.
    -             In string patterns without the ASCII flag, it will match the
    -             range of Unicode alphanumeric characters (letters plus digits
    -             plus underscore).
    -             With LOCALE, it will match the set [0-9_] plus characters defined
    -             as letters for the current locale.
    -    \W       Matches the complement of \w.
    -    \\       Matches a literal backslash.
    -
    -This module exports the following functions:
    -    match     Match a regular expression pattern to the beginning of a string.
    -    fullmatch Match a regular expression pattern to all of a string.
    -    search    Search a string for the presence of a pattern.
    -    sub       Substitute occurrences of a pattern found in a string.
    -    subn      Same as sub, but also return the number of substitutions made.
    -    split     Split a string by the occurrences of a pattern.
    -    findall   Find all occurrences of a pattern in a string.
    -    finditer  Return an iterator yielding a Match object for each match.
    -    compile   Compile a pattern into a Pattern object.
    -    purge     Clear the regular expression cache.
    -    escape    Backslash all non-alphanumerics in a string.
    -
    -Each function other than purge and escape can take an optional 'flags' argument
    -consisting of one or more of the following module constants, joined by "|".
    -A, L, and U are mutually exclusive.
    -    A  ASCII       For string patterns, make \w, \W, \b, \B, \d, \D
    -                   match the corresponding ASCII character categories
    -                   (rather than the whole Unicode categories, which is the
    -                   default).
    -                   For bytes patterns, this flag is the only available
    -                   behaviour and needn't be specified.
    -    I  IGNORECASE  Perform case-insensitive matching.
    -    L  LOCALE      Make \w, \W, \b, \B, dependent on the current locale.
    -    M  MULTILINE   "^" matches the beginning of lines (after a newline)
    -                   as well as the string.
    -                   "$" matches the end of lines (before a newline) as well
    -                   as the end of the string.
    -    S  DOTALL      "." matches any character at all, including the newline.
    -    X  VERBOSE     Ignore whitespace and comments for nicer looking RE's.
    -    U  UNICODE     For compatibility only. Ignored for string patterns (it
    -                   is the default), and forbidden for bytes patterns.
    -
    -This module also defines an exception 'error'.
    -
    -"""
    -
    -import enum
    -from . import _compiler, _parser
    -import functools
    -import _sre
    -
    -
    -# public symbols
    -__all__ = [
    -    "match", "fullmatch", "search", "sub", "subn", "split",
    -    "findall", "finditer", "compile", "purge", "template", "escape",
    -    "error", "Pattern", "Match", "A", "I", "L", "M", "S", "X", "U",
    -    "ASCII", "IGNORECASE", "LOCALE", "MULTILINE", "DOTALL", "VERBOSE",
    -    "UNICODE", "NOFLAG", "RegexFlag",
    -]
    -
    -__version__ = "2.2.1"
    -
    -@enum.global_enum
    -@enum._simple_enum(enum.IntFlag, boundary=enum.KEEP)
    -class RegexFlag:
    -    NOFLAG = 0
    -    ASCII = A = _compiler.SRE_FLAG_ASCII # assume ascii "locale"
    -    IGNORECASE = I = _compiler.SRE_FLAG_IGNORECASE # ignore case
    -    LOCALE = L = _compiler.SRE_FLAG_LOCALE # assume current 8-bit locale
    -    UNICODE = U = _compiler.SRE_FLAG_UNICODE # assume unicode "locale"
    -    MULTILINE = M = _compiler.SRE_FLAG_MULTILINE # make anchors look for newline
    -    DOTALL = S = _compiler.SRE_FLAG_DOTALL # make dot match newline
    -    VERBOSE = X = _compiler.SRE_FLAG_VERBOSE # ignore whitespace and comments
    -    # sre extensions (experimental, don't rely on these)
    -    TEMPLATE = T = _compiler.SRE_FLAG_TEMPLATE # unknown purpose, deprecated
    -    DEBUG = _compiler.SRE_FLAG_DEBUG # dump pattern after compilation
    -    __str__ = object.__str__
    -    _numeric_repr_ = hex
    -
    -# sre exception
    -error = _compiler.error
    -
    -# --------------------------------------------------------------------
    -# public interface
    -
    -def match(pattern, string, flags=0):
    -    """Try to apply the pattern at the start of the string, returning
    -    a Match object, or None if no match was found."""
    -    return _compile(pattern, flags).match(string)
    -
    -def fullmatch(pattern, string, flags=0):
    -    """Try to apply the pattern to all of the string, returning
    -    a Match object, or None if no match was found."""
    -    return _compile(pattern, flags).fullmatch(string)
    -
    -def search(pattern, string, flags=0):
    -    """Scan through string looking for a match to the pattern, returning
    -    a Match object, or None if no match was found."""
    -    return _compile(pattern, flags).search(string)
    -
    -def sub(pattern, repl, string, count=0, flags=0):
    -    """Return the string obtained by replacing the leftmost
    -    non-overlapping occurrences of the pattern in string by the
    -    replacement repl.  repl can be either a string or a callable;
    -    if a string, backslash escapes in it are processed.  If it is
    -    a callable, it's passed the Match object and must return
    -    a replacement string to be used."""
    -    return _compile(pattern, flags).sub(repl, string, count)
    -
    -def subn(pattern, repl, string, count=0, flags=0):
    -    """Return a 2-tuple containing (new_string, number).
    -    new_string is the string obtained by replacing the leftmost
    -    non-overlapping occurrences of the pattern in the source
    -    string by the replacement repl.  number is the number of
    -    substitutions that were made. repl can be either a string or a
    -    callable; if a string, backslash escapes in it are processed.
    -    If it is a callable, it's passed the Match object and must
    -    return a replacement string to be used."""
    -    return _compile(pattern, flags).subn(repl, string, count)
    -
    -def split(pattern, string, maxsplit=0, flags=0):
    -    """Split the source string by the occurrences of the pattern,
    -    returning a list containing the resulting substrings.  If
    -    capturing parentheses are used in pattern, then the text of all
    -    groups in the pattern are also returned as part of the resulting
    -    list.  If maxsplit is nonzero, at most maxsplit splits occur,
    -    and the remainder of the string is returned as the final element
    -    of the list."""
    -    return _compile(pattern, flags).split(string, maxsplit)
    -
    -def findall(pattern, string, flags=0):
    -    """Return a list of all non-overlapping matches in the string.
    -
    -    If one or more capturing groups are present in the pattern, return
    -    a list of groups; this will be a list of tuples if the pattern
    -    has more than one group.
    -
    -    Empty matches are included in the result."""
    -    return _compile(pattern, flags).findall(string)
    -
    -def finditer(pattern, string, flags=0):
    -    """Return an iterator over all non-overlapping matches in the
    -    string.  For each match, the iterator returns a Match object.
    -
    -    Empty matches are included in the result."""
    -    return _compile(pattern, flags).finditer(string)
    -
    -def compile(pattern, flags=0):
    -    "Compile a regular expression pattern, returning a Pattern object."
    -    return _compile(pattern, flags)
    -
    -def purge():
    -    "Clear the regular expression caches"
    -    _cache.clear()
    -    _cache2.clear()
    -    _compile_template.cache_clear()
    -
    -def template(pattern, flags=0):
    -    "Compile a template pattern, returning a Pattern object, deprecated"
    -    import warnings
    -    warnings.warn("The re.template() function is deprecated "
    -                  "as it is an undocumented function "
    -                  "without an obvious purpose. "
    -                  "Use re.compile() instead.",
    -                  DeprecationWarning)
    -    with warnings.catch_warnings():
    -        warnings.simplefilter("ignore", DeprecationWarning)  # warn just once
    -        return _compile(pattern, flags|T)
    -
    -# SPECIAL_CHARS
    -# closing ')', '}' and ']'
    -# '-' (a range in character set)
    -# '&', '~', (extended character set operations)
    -# '#' (comment) and WHITESPACE (ignored) in verbose mode
    -_special_chars_map = {i: '\\' + chr(i) for i in b'()[]{}?*+-|^$\\.&~# \t\n\r\v\f'}
    -
    -def escape(pattern):
    -    """
    -    Escape special characters in a string.
    -    """
    -    if isinstance(pattern, str):
    -        return pattern.translate(_special_chars_map)
    -    else:
    -        pattern = str(pattern, 'latin1')
    -        return pattern.translate(_special_chars_map).encode('latin1')
    -
    -Pattern = type(_compiler.compile('', 0))
    -Match = type(_compiler.compile('', 0).match(''))
    -
    -# --------------------------------------------------------------------
    -# internals
    -
    -# Use the fact that dict keeps the insertion order.
    -# _cache2 uses the simple FIFO policy which has better latency.
    -# _cache uses the LRU policy which has better hit rate.
    -_cache = {}  # LRU
    -_cache2 = {}  # FIFO
    -_MAXCACHE = 512
    -_MAXCACHE2 = 256
    -assert _MAXCACHE2 < _MAXCACHE
    -
    -def _compile(pattern, flags):
    -    # internal: compile pattern
    -    if isinstance(flags, RegexFlag):
    -        flags = flags.value
    -    try:
    -        return _cache2[type(pattern), pattern, flags]
    -    except KeyError:
    -        pass
    -
    -    key = (type(pattern), pattern, flags)
    -    # Item in _cache should be moved to the end if found.
    -    p = _cache.pop(key, None)
    -    if p is None:
    -        if isinstance(pattern, Pattern):
    -            if flags:
    -                raise ValueError(
    -                    "cannot process flags argument with a compiled pattern")
    -            return pattern
    -        if not _compiler.isstring(pattern):
    -            raise TypeError("first argument must be string or compiled pattern")
    -        if flags & T:
    -            import warnings
    -            warnings.warn("The re.TEMPLATE/re.T flag is deprecated "
    -                    "as it is an undocumented flag "
    -                    "without an obvious purpose. "
    -                    "Don't use it.",
    -                    DeprecationWarning)
    -        p = _compiler.compile(pattern, flags)
    -        if flags & DEBUG:
    -            return p
    -        if len(_cache) >= _MAXCACHE:
    -            # Drop the least recently used item.
    -            # next(iter(_cache)) is known to have linear amortized time,
    -            # but it is used here to avoid a dependency from using OrderedDict.
    -            # For the small _MAXCACHE value it doesn't make much of a difference.
    -            try:
    -                del _cache[next(iter(_cache))]
    -            except (StopIteration, RuntimeError, KeyError):
    -                pass
    -    # Append to the end.
    -    _cache[key] = p
    -
    -    if len(_cache2) >= _MAXCACHE2:
    -        # Drop the oldest item.
    -        try:
    -            del _cache2[next(iter(_cache2))]
    -        except (StopIteration, RuntimeError, KeyError):
    -            pass
    -    _cache2[key] = p
    -    return p
    -
    -@functools.lru_cache(_MAXCACHE)
    -def _compile_template(pattern, repl):
    -    # internal: compile replacement pattern
    -    return _sre.template(pattern, _parser.parse_template(repl, pattern))
    -
    -# register myself for pickling
    -
    -import copyreg
    -
    -def _pickle(p):
    -    return _compile, (p.pattern, p.flags)
    -
    -copyreg.pickle(Pattern, _pickle, _compile)
    -
    -# --------------------------------------------------------------------
    -# experimental stuff (see python-dev discussions for details)
    -
    -class Scanner:
    -    def __init__(self, lexicon, flags=0):
    -        from ._constants import BRANCH, SUBPATTERN
    -        if isinstance(flags, RegexFlag):
    -            flags = flags.value
    -        self.lexicon = lexicon
    -        # combine phrases into a compound pattern
    -        p = []
    -        s = _parser.State()
    -        s.flags = flags
    -        for phrase, action in lexicon:
    -            gid = s.opengroup()
    -            p.append(_parser.SubPattern(s, [
    -                (SUBPATTERN, (gid, 0, 0, _parser.parse(phrase, flags))),
    -                ]))
    -            s.closegroup(gid, p[-1])
    -        p = _parser.SubPattern(s, [(BRANCH, (None, p))])
    -        self.scanner = _compiler.compile(p)
    -    def scan(self, string):
    -        result = []
    -        append = result.append
    -        match = self.scanner.scanner(string).match
    -        i = 0
    -        while True:
    -            m = match()
    -            if not m:
    -                break
    -            j = m.end()
    -            if i == j:
    -                break
    -            action = self.lexicon[m.lastindex-1][1]
    -            if callable(action):
    -                self.match = m
    -                action = action(self, m.group())
    -            if action is not None:
    -                append(action)
    -            i = j
    -        return result, string[i:]
    -
    - -
    - -
    -
    - -
    -
    - - - - - - - \ No newline at end of file diff --git a/docs/build/html/_plantuml/01/01f21512c6b94e19efccb4676b518bed63780ddd.png b/docs/build/html/_plantuml/01/01f21512c6b94e19efccb4676b518bed63780ddd.png index 080aa3a532c9578d71bc51afd5cbcdb869d6dc8f..aae22ccdadda973622559c0dd19b835b20cb6e94 100644 GIT binary patch literal 34179 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 XRx2v!VvO`!g@1Il4r-RF+eQ8#F|wN4 literal 25385 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 diff --git a/docs/build/html/_plantuml/16/165a23eb11f806bdd308ffac47a78125152ade58.png b/docs/build/html/_plantuml/16/165a23eb11f806bdd308ffac47a78125152ade58.png index b02b306a053fe53d4defe45f264d36ff86da32d3..358a2a10adcec39f06797109c3bfd694d228d038 100644 GIT binary patch literal 75255 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⪚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 PM3>~Gm86O#4gCH;vWpgF diff --git a/docs/build/html/_plantuml/59/59894b154086c2a2ebe8ae46d280279ecce7cf8f.png b/docs/build/html/_plantuml/59/59894b154086c2a2ebe8ae46d280279ecce7cf8f.png deleted file mode 100644 index 16f9a9ced4c8f1ed9e30164d83edabe9a552fb87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10507 zcmch7cRW?`|9>TWWMth!l94?td&_QE*N#heA$yiBE-6GASy8TW3)!-+kXc5NnPkh# z_I+J_zTeMZzkh#!^th*Uj`Mz>_j!%yct_vVy-rDnAUkp51f_<$%Iy;;PD;bSCnTrf zjD_vZI{4xBP(^y6?z{Rr+urp!aozTwt-F z?z?z(cd)@Dt~%%=J^uIniIeagpEQFfBKMnwsl&aG9@EiLL|;%awJmt15JR1ClYpN- z^qJZ1n3lLjG1{YgU8N^dNU4Us{jqe$h)OQgq}Z8k72%HgvyaX($#j_T-Hz^h)JvT^ z`ij}ZIW7&O_NCvlp`b)*>!NrV!MEnt^|8r(-H@h|6~--$RA5m*-#mGk@U`--8?ArM zYpNO2t1Jr`b}QaJI!xVYE+y>1{FuGzu90tl=IU299#T4aCgKOdQn5v0>C)4rvH6qx z5)^k!P1v#=;)h**k;N4+5BWr`)MHwnzGuR+G`P9$T;iq3s-leVBbm|>YEl~uGkm9{ z;p`nJMN;v2%H$S#!{^#Fiqtt?&l)AIojz9yw9D!kaM{o_&27)sVP&6(&xDgJwHtO2 z{;pYQT|C2&MT@RW{qZ|-g4$9y`sMzQ5p1n31|3M4?qVge(_n_^{H`E_CrKq_(jl37aaI{MH{Osb% z1_~r-&ajjOY{ULq=L-p^{{H?!+H6V<4Gk9;7x9XkN5wiiI!j^pq$av9E=yf6uR1t? zpk-jd;jUMos5Y)0{Q7kR=|G9X+*}Fs=t4fs*lJ@7&c%u+r$k_7EAsQOE&6DBzwa3p z)T*dx(sLsOd2p%>P54~M@^EK1(}5q&sn#|>P-qZwv|xEO&)(mUwANf)QJ5*--QCS7 z_0vX0M`PWl)sj9a*KH1(_Q?J{kA^4MARB^Y;eZI$96@PbP%zyV-`3LdIYk83nJgfl zjO!m><`5QkZ3-hbVR4^oA=T3A{PgJ)27}q(4?t+492Vs3`*Sn<|7#Qq& zGV0nep8ovkrOUXA@^T0IVgtvH=rYgV@~`4Ow!c27PUFyDE-Ct=B>0hE2+R|k~LEYi{fSt8rEDG+7TT+c-AXQd5UmmdI&YnQeXBf*Ql5JFC5f>L% zRaHe&3#;JaA-?wR{d?1DkGUe#5BkZP>Xea{)z#U~@9lc(y_Q~7o9Q!bZVp+l43)5* zy46(mU{*6T@ean_YhL#X2M20(qEUFTtBbOY_pF7alc!yg*-l4WN6tGIpQvfToOol{p~+D{hdlJ`6ZSX7mU4gBwElf%|lB(5rY2?F= z-Q2IX`O7wZyu260#(w?$xj0&-m$lkqTqx}{(_tiMI2of|rP(;u8iPWiyjR9pXlNdh z%=Tm&{r$fe*}Rb%4N^z6TDs6$GuM5qu?hHqYqO|q=L zEFjQYyuIzSQyZpGDN;{Bab#v@CT>jDq(C+OkT=^WGs~4` zw3rGZGPJbFt2-1!iL%yPc#OmiCEZ-Klu&5zA|}higoK3ONMSP>@8$Dy72)KJWHm2d zybwNkDdqWgb+EZv`Mf5n(KUU9|DP#U3TYZ+x#urlAWla_L^%3awYIep3*448t1htL zwPw4>qGt{vYDkA_#YoFK?Q|GjGh|INAQRqE(Fm)#Mom1jR!Fe+Z&5w)*=fbI*>{~S zUDn_0dzr)5)>ad0RJalnqqC#qZ9xGwgV@&MHx5Dfjg|4>p0@eUHaa}a^KZ5ldMNsLhQ5RIyq1&0x`i7tLiGw0>pk)f_s8XOLzjk! zk)F{`2FGC#$1H~H=pbVgQ+udHPObK^v9WPmPVL%VX=Y~TDR%qiltcE>Z{Mm43P{eK zyLwN>=jP4cmT0;ex(2_^`S(3?e3$MyIq{i^Deyt^gwT?NU9uL+cjk}4FjZbeJQnfa za<;mqBFPw?ZD?fV@9WEMR(XPhhK{DTt}f}lp7*;Y7J0R2!iMZlNp?lWYxHqTWtxqn zRS$}!ANnxiP%9(%8;V5TiZtP?dg#XvM)xJUZ0WQ;8BXFelIl{eE?Cog#fxe>ou#aon*NKMFTK3uy`j+#S(}$ho~Ng0(`5zu zMf&CNo6jo^AwX-jZV7#$q#essM^UO-TW4!?u1t9{P;1MGsU?pu}R9P=sv7%CqpFF1p$k!!kiqAE5f{YXL^y=vCxjDCL`Ir9y|yw z=k5(z!Elf_{GBf+^$SyvpUKO}kAxuk@b3K0R&z~y) zzk-F~y~t_R#XD?)8+{N>h9pq5y1d5&iOu`I$Zhm0FD)%$s38o~U%k4Z{xT)y)7uN; zgQvHrVubEEo13!~hV&u_0Hg>x4PrF3v`n4Ox8QIH4Gl=zwnj;`gw!i1Jv}|?Tc-w| zrlz(tz=Oy)iWBu%AjzCzK9wI=quQ{lrQoJz-% zj(R%T?9*YQu1jK@cfJ1ag~W@K-`@mjq#J|2#v z>A!>hi)}cahvgkEwF>ocl#r0f*G;c>noK+zm0<8 zHJEua?yYTKwkp(U01w5*#esWUP%pP2vwxxusbdh63go$XJl4CLUV@B z52^E}ScZ2!9Xh;Nj|>M+(ra-T0E&pgYy2}0kK(=#4i5J9{TVQ_Oc%8!8x3_xU#4|% zaiJt3sXRK|Gc_?;^%|@7t@GP_{P^+iMCcjnIAx2V9ow$;z?meY(pv@woGp*~S5pJ= zi*baC3k_}lFdoELy9s4{eSN{>xw?{4NO`#@fQ?cQXIoo(R#w5qYR`paG#VX-?TF5l z3pClc*go7_S*cl(`*GNM5}xzx4rYJtHlQP^c4(XGE41pGno6G_Fv34@a&oS^07$eB zlMCEcXDSr^bDh=KrX`9d<=aJ;07kQFk7)b{FC0u`wD37ONJ`#7Tk{dd;};NEUtez} znVFf1dh+bq7eZ8P%hh|MJQx(3O+E-0%WUSGjTJZSIM2qG3GLCddf`(7N3VgENsQzY zEG5Uqi(wz6y%wKjw7u0nA8O^ZJTnuHl0V!=;R6tpEm`OPS64^p;MdFh!X2#&9<7h* z)0dmd^q5ZE-yyKtu6CVN3ftS=)lHW&sBE>~S(|BM2M~2m%H#LW`mD6h{x`eK)<=L0 zQ%Jwy1CbuhA{TJ&eCVa$R{+Td9_)I$F@DysA`g7idgKoMe=F|D-n`o5O=jjeptm>{ z>ASYJNoi^P=S2f|JyfKjh2-yKJE=}MmDJ%Dj)R9K-J;g#R*(UyS)E@w7JF+(P{-%! z;4k}Fce-?W*VU_68L2X*z2lD8uC*x2{DO#x8^9l9V`Dcrx0L7EjCH>2uMKygS)-Z7 zh(aC5)>YuW9ouX~Q;QRMczB|sqE=T|eKz{8=j7x#IXaeg{mneupM7>i&UfPD$>S^y zKF&J$y!e`Wd>*}&fy4(2qRd?&@YH2<2^h|2Ek+@5_ItrmVfa|Kf0JgJNh-sR_Uj_wL=Z>rU&lWcbY#8WI9c2st92 zJjxdy9zHoax!cVtCnqN=x(17daYbk?N0*kCh7zBdmu9Sdyh5n$WIQRJ?2-QVEw8+M z!?N+GM*YF@arvuPpAYDwG#F`EXUAQ>4Gaueb(`I~)%YSGn;Uaj_ThuK-D{}q%gf7f z2@{OaD&v4RWoOUYTmMnv^0K5vsN`=iGMlhTHU0Z{lhB_T85!Mq5N>6!`~~OLsp;wS z8b+>=pe3%JI&}&d^l0E-B_ku7{}uU(2H|vqLC7NQ z`ExrW?xz_Utn~D)nPk1l2e0Af;2Sz0uHJ2b%DMmM1X{xG-Me?6=i;Y zeQVS4^7l}v>7PIK_4GJS4-O4QhJ}qnKj%=3rOxy(7UjyqR$mej5a8o0=-rm*5fn6Je%6aLr#*Z2D?#wfh;Poo2%EnC`0|C0!2FMkni|n4-FWtq zisknb%Lc&1j{}_*6(6}zk>Tgej5`X@J9v~3-qfHjWLZDj-|s%#oem^lO7F(($dyYc!p7yIE%=W_xA z0vfs+BC7M-?cA9KG4M31O28biAIR?Pgep<;n5`&I%zeo(F{{dU%_=W1H<%$5KFy06 zc@v|7YL`t&Ol+A=F)%Vh*>ql4?nBZs(Y+X5*V$AtHcpL+ArBr`Mxhbfmgw~x3lvIL zR_yf+!mM`IZ68Z2MJwk~~Vq#+A;u}z~F=PlQ zCclXrRx32A+E;=P1B(0mkj>N#42BjK-G04}`n1f+5-8k?&SEb)tr&f$3|$Res(heg>0fYX^x^YOX4mv*izHxAd< z${3QP2cm!qgfHwh-LUc<3OlTXwx`xKm6LVH`OcjSh2c2I)1UQyUN}HU*Vd+RQY-m% z6eAw%>EZG7V+ziZ%tYJMvwS-liq!S|$Gm_%e}f3nGTsFMvAU*)gL-piYASnee3=Ao z;NpDq=95x$3yU$-QJL;|n&bnbX68sLfKl%q2i|%v3@Vzi|9q35VGVQzy}G%n8bfpU zJ=9&|Gpsi0zt4PK2W(&$Denr2as}f2+k?Z^4BQxH=p$e zULT-<&G>}{9t4sd-2jWMpEz5FCQ9NWCnur6U4Y+xeSJ+RI)JCb@0Bjx&+ffi0JJ8^ z=XY;bfy<7(AGf%n0AOZ&L1^K?bFf$}2t%~>o8M}@&gI|8%#iUFolhfxnlA~xfy({k zu*Ng4Ki9optal1E00!X_5O7(l!@_Ij=H`}jsjI1}0eeR;aq;r;shW!@y_9^wRYK`V z=;7k%=(y52vB53?7kksms{Q=@aBXetUe+#(E8oYa6>n&vYDo1zlp3Z2pUE8ZJSlDn zD5!>Bko*hsnTVlLClQwpfaS{!d+4iU+jun)2~629 zEB+J-Cx$&_zYY#@)1(_9*W6=l#M5KuQ*Dn?WXQf2pNCc9Ff6es60Lpde|$?{)By{V z*}ua?^tr2VYgu>&1eU61Gjg!zza7vA8Qch`VvJ=&2F`2tMMxjB|H1Ai9k*_pd~iLK zABxdZt7h4tJAX4mPC;XckB&|iLE(}GOkcc_d^Yixys$t^M3t|o2 zK~i&yfPh;&#Z@SuH=&8{hRo#3N{NBvwyvTi2M5RdckkBL*U|IJ20SnKzy0u+064i9 z9I!L<{K}OpFn(uer!q0Q{}9G_dUke*634~GRlnB3XOg$oExj@!J+t`jy*Ur*Ze3W| z>4U%mGTUeJ((oZX?>ZxqOy9pHa9o$#EGjC}kyJ7zo~Laq78Ey(KCO5A_DvIt35m<0 zO52}P#oEy4@|Ui2W`=CEzvX`^h2rec1~_aoKR+-0MA`r8GCRcW!rYvs>x4q8HrFx` zL%i5~YH4vXShqmY%RH_YU@X#-Jg!i>}FBy=r9J!;z4nuBu9SzPUIp zEiGNzTQkw>&r~a<7kt9Fs3?Vi*e%fSplU`?vFwidui$0hs4GGH+xeM6Cd0)=MXK7d z&Pg{EFLFe`yPTF@StNK_<)aY}Qa6g0fgTFSfx!3FQY?@z1&%#16L_sK(9v93jzATT z;vbEAFxSsnR$<$j9IYdN;ex{0Fi6gt^;lMEFNy=xfPmU+Y<6|5ew<97j>dDvpYYA1 z&JgRzJguUns9_RjsAuDxF3$PnnZNGxk1BBBd<+i#qPcKj1p&zdeb;L@kEd4F zZK?$j*68Ty{KA5#Ev8!Z4sX=8CRvK66Q(JAO~~;2KDi9cjs7O2$&Ze_2=dIk zKAy859}(CqGvzORFDF0v46Uel$-|K!S$gNBBSVt=+RyeLxjkoCEm|BIfl`2a%1`wV z4qf>77pmVr<(3hAxC0uA&dV#5BM_4$H*|Dby&y?YsGLfLfrjAVv~3{AgZVeuJaL+7 zmh!PfnmR*L`OzOymw_}=|maWc;x)FV@~H_ii&QLzP#cR5@hcWB0{!v z!AIZqUyv?}RgkG2M(IueCT@?J=r6dH!+&^!dvSW2V-d*1i)(J#wd&g$bYs~+at3ei zHM!i@%hxrKQ<+=>AoGVbJTj7R<>@E&jDbR7Gcg^xH-#ytbpnf!d042h};JYub{aoL9CHN8k% zJC)Rtq}9bJ*Yyo)ZIbc?%XFk%3T*q%t3p?uv46J3)Qj`4xjS&YC1#HGs~Vtp4Rj+t zVwwJ0Gq}!wz05=Wg+b7aXR*nQWwNREL@0Ue6ImGXWkpHH&6LoXj=8vb@CY~ z!6T&5p3Wu<_fb-vyF&40=!V>m%BU$gUDT8L=_$c?ZET`yiY@AP7vJ}gb>6S2sA%dM zn1>0N9Zz8Xq0>+?Am~D~>6V+uKLiN`1NxEuIcN#Ve=_nvWh2_{X+nY`s;d_nZCOb7 zC9l3dBM{?@Fui>{d%0?@#RIQQ0Fe?Oq(BqCyn4U;(k~@HKPij*W3@Y(%ON_7A`0QG5h)K1{IU=$EK$2($Xh5TI<@6!zn3D&fsPc*WJ5$lNzQ4 zf-RjCbp^qxQ=nj8a-RM9^E43=*@&23cffkrRXSSQ2nyz@rKQ0AZ8!GXva$`JiyyF9 zH+T29Z{EPm{q7rHsoz^p_a193*sl9KM%NTc#R9e#uQN9{x3si0`3Ng3D*)WAtSr!& zBFExox0p@^?=4;R_us3mtn7R))I3>HaRs3jRUccv9SU+Qo<^r5V(K@5k+*uOsYMhO z30!ea{4alvdraC_f(5X9wB05TRE>#&fh$6bsmA%6s1=N8D$I~3jU?!bBc;wett@b8U=t1eDbP8Ho{K@69x`nB!wP92| zu!FqZ+&lizgxJ~He|f~gb_aT`=Yp#F2sSn$j|!0JfEqw@aOCCXsWOogc$AKfjs5n4 zB*Aq8ML3NL3z`ld^(lC45Chq;FprjiVI<9&s8s zI4}TC&aZ&ox%@Y8-Z<%Gg2AXKAO2y?Zvl1_h$k1=f<6o(d7oQN*}-8B;0G+Lqo|nJ zRQs zYXd**8s6%tHRW}dAHVIWVwPi3R7KgFmT%4#bdHwqJxA%5`7l!V`%2@{O5h&LWg_{RGmK-|A6hK>koFh$^FFo4FeWU*UL0&7Am#J#p#Drg`7_0tZPrHKjQdIFCXK|#U!*B!iK z23HJi)z;J#>Cz>=+J{C!vr3h<6c3SwOGUQGFa!P~q+GElxH^Vr4;) zAC(7h;fb)JZc9p@!;xdXDpXo{z`ld_1opC4~os_|*6a1cLCP^gR^>0*eQM zz|=dB3IB3H?MVuMa5>)BbTqVm=4xeZ;)r-)Y-4P%?`UkqXyD3d=IHp$L5PRvnU%hc zqm#AObwgWg=kBiz@Cb2pHBHB}e@9@zbDk$SsXewG6}#wOuU9nFt~Shk#r!Hks*>a& zshRSPS~ZW`ov*ZqO@FVxe);ZrZ}lKPl$j~f#@X4~bk9ADFIp&sWmjOF>1o2!r6x*S zWv-T&fmg9r?JgKI8<0^yq3q?E`|PvUhn->U`PpBZZ%Cgxf}rL`Z#~}P=gPX1@Br+G z39m@Bsgs=)R$q#|4D9gzDci(cA-DUkl|nSD-@1_gjxnps-1&&*JTCqQjyaW7 z$J#~r*yNnx#qoYtnVLMsazg$z8FkCX4w{e3g=4I~1aykbLmz}*Z*b53@_EH9uKakB zO5@67m!Jpq#!ba9?~y%nZDz8ylw_>C+Lu2jGH|Vc)FNf0$Z2FzSYe#E>qqp-qm@65 zBC#@ql~=8=nKx?8JburbmzzK;I4~0dklgd^h7Zb>x8HRQ8BTWBQ!uy~z92Po~-5_RUV|7g?b`q3Zqb z{V+2W$bNArcpu4JhHp#X5^z6}u#Ug^l{)LqjbA;ZRH)=r>~7>VQFHel&+^xmy}z4j z-)yhTFGt>5Aht=gw2Z`y>8tm`{$shf8zNkZVLRjNQ`1S!(>k%o`Qb`9Mt|cK;znze zVwaKE3{@jqbS*~n1!T=un@W#M?_RYk*W$xSwq3SOeMK(Ag@YtOerC5}<0Tg_CTO1U zFY~hXGIqGWt93#rAucQK$|`U7$>0?6l{o%Vz>*3V0^yB#cu!pI`IF^DTuri}p#byu z-ocN_#4lMcaA;zf8yH+8A=G@&{GM$WKT6Xuh*XwOeVI=7#_mi0U`~sBMfw6<%v`y= zyiqZ0Mr+9juY`p=g3sStcT4toZqi+~*PS?`zb0H#a!cwI9rOtAU{ZfHUOiP*d}Oo{$e%oCFa3;mZi#ixeoKM@CbRu>Sg_6xnK55w8yaS+}D(+hoR z$60tvScSX@veqbW9i+|p2MqXu(bli7qN1W>Q+%a6fBme~d|>~rCIWHeb+&5OW-_PP z2E0y*R?q7X|LFl7%~u;;0+Z|i{5$*~u{S=bY!VntFcvau&B(}Td9v2n^wJza`J2GCK8VE7ohL*weFvw;Mnhw44weh~;te^*%dICR8+(LTR zY&U%64jNnFkymX>D>C&cIQ&?V+um!m&X1vlDCFgb>5ADkv}}g7zGWb$5^X9=`W$RI%H=L!x?2|J`kJ-^evIu)l}I3e zEiAM>D0!FHzv%PvV-_cts!)ir*>qZLplY6W+2NEg@x6zkF8|s*L#a2kBQ9!Q-9^>J zZ=Z5~KOT7NHw6o3sOZ@fxlHx#DCDyTJeb+k@JF>10Un-Kg-v2fiNj)l1}+h8+e}v+ ze@I~9#bA%qKYLC~gH_Krn6L8W)6mgbTUrV~Uw;~$o{^zUz-MV=v%0iY?etsS?%|?} z-{9t4NA@3;44L~}i8 zGWX#FM~;F=3Q|&1(%;yp7URD=NPmfv@;1w^PIuAqT|6Ts(qVx1dh@3bHkT&Z+|#s} zXg)sqbeJu-`lF_GMm`?N{iOCbr$SGX$XKblWQg#yDMT|aA+=hmS>ITNZHWOalf8q3 z;aoOnYQDe!{pMiuht1Bbd*)brFW@@Zq2mXxFg&CVKGRO!`w z<_4#wrA0?aD?K*t*w4Jl@ULXiIy^FFeW&@V#y9P6ZQR##uVoyf*PXnE3%&0CIa(#Z z{N?-@)Ph&IL_`v!ZrjgFBW3#s(%ZeV#xvz&RdO|pbSiA@=9&kZx)X)7tDny^G2|$x z;b^?m3BKJ-_H6EJq*XagE%K^HW)PjQv(k7=ON(+yWaOi7Igc{FHFGz%Y?2JeQ2U@T zQf@yrbbTEX(oyXDQLxoMe@((h-^w6&i^ynZsNeS^?Sgpyu6GBa|uG-kz_C$92psdHrQ8R-9g0X=;D~ncC$f&pfJ~EhCSo79e zZGusH@dy@fhw|=d>X?0g2teDrwsn2EvkfiRpVXQe7)WSKerE987uQZIDRP+aR&Iw$ zmW)J1klng<>+apV`9?%m%Md%W{;(sacD(l7suliQri^d@y~3el7Z@(L3#t!&*6(Z? zb+o*C?((V@^QYIjrfO?UVUp-G|JA_Ow*GNbndK1QCbBW*+Wj20Z07LWcTDyz2cw;_?y$!`i^${87`2L94c%k+pJ&fz&9$fv;OBL(MaTXmNcC^{DKDxv;3&C}ss-8bi7PGs4dA-=pNi)tnaln>#yS!NTVbD#Fz@EVQS19#Bx_~@gzi4`*(}od_8+~0vTdC;lBkQ50 zw#@_?7h;#34gp-T6AT(v7IfXkwYsJk7#xgm!*Kj3_8PL~Ne5Bh$%`%l0%sl)T!BC3 zWv=nWEG#SsuMlk-|E^VU8SbtQ7a7(lj#-}w#_MSJTCM~QzZEs_OEtuurV>YRocr&f z4zRNysi~>`!P%L=c6xnvnJC+@XsF3Q{I~1(kk`R}!5G+>{~e9j$S1do4aXY8!XVj%1<{Il-=6GPx2+Iat45fKPMoU`;+Tr}4at%$}mMvzy} zJ~K5=iC}E~?*YR?%u@b$(g<%_tbb;80TF8WzmH*Uuq9J5S=7A$iYPvUgX8RJ8w%FB z<^!2fa_7?!-Y@^DtNvXr6xTFwI4&r`$J_oX;FJc2R8&;`fqZQjTX)7{lB8zaw8%HC zKC0)5?oVOa-J6ov!9kooo9V13#@;ej*jf6<&CNYlX6XVU7TlA3_wJ1wg+}e~V8RT% z27XGS+}zf~h5C@UZt?Ty=~mr*G-y;-1o%NvSeTuSZOMH0VSh zeDu#xJMk+Qh9v)tvPDN(7Y96m)i_#S?uCMTGe7qLU zb!uvAT<5pfZ{C!bmC@aKeq#s|A$Ip{vD-!{gChL>v0cA~GD*6-yT5+@ItJq7{Rl87E32}hJ)FHgO4`y)NKi2L zLbeo&dImF2j%KXH^lep@>tvlrRW6$)OEiyOrj&MtO_vIst4!_A7R{qShdYLx4<0w(+G`eHjh8Wj(n5EM90Ng#e-_FwtmNF=HJ(4O%+6k1t3OSOi>rRV zF%uXVn3BRsnmtlts_G2?hmU)Q+ale5?yGS})Xv5RNuAE1S-o=vve@IuIW9@mqgpA~ ztnWSg?M4A_v~zQFbJX*=$ijbi@YJVk5BfkrW@KfRqztxf>yF?cdWp~8jx(zHmR_XI zDqpXDb#Csy^S1)MdRR<6<}&LsWE{Py`~KsKLu4)RTXwOPp>|y)8z9@ zY_clHMN;{a-xX$X;D_7WA9D0OMP0daCE}V^v3j1ifbB$jiY^P_Rj9}WL_{V|u+TOU zu0Mt$ytDs6xj6M2z>(~F<>wa@7gwASjtc7e__+n~oaXGX_8J=A4<@4$uo;Ine1M`h zHZeh34HrrV5QQ;0txb3gWXfY;VDSC;sKKM2^g6(#J;Qlrw9IOx*y;E8BB_|)%fm&D z5Z(HXud=hVUr;ZOSKaEWuBkaXI2aij=__3qZiT=PQ|?<1y2QS_Hd+5{T7n`=%5mcE zHAuS5%*;q6l9x9uN~O;I0P1h>0JU;Synt<;%UTi+5~pG8EQ<%w)09+Hu=6sz@FI~m zL-}+yw4!``gK`8_3LzBS9Kwbz7lJ3N9I^l(u(7d`6%`gfb%|Kt*|F|T!LSS^LyhWR zUhLqP_%fKK$e^gGXkQ@WwyR{R=Xt>TQDJj1L-ulxg#W`!4~I0}ry6`pZzH*1S>?h+ zbML-+^QMz1C_Vkk<;$1x`|&M`cP}E=Gtc%bwY6pVVH%vcKPN|PGlP)LMuJ#x(!ZnG zkXL<}#lft5vjA5FbtCGUmPB`{K{LMH4Q}q0&e&Vq8nlC0R9AMA-&*ip=6N#fX^Dqu z!#GO?MwW)I4}tDMya2*;gS=I4rRC;!6hO?d>5o7J|AVjvX;^rvZ$D#X@MvvnYC4CD zD=aAJ`uw?HK!9GIdn^wILW%V3nUG!(2qS{CfG#W&nA_^Pt5;$|$iV-4aUg52_lr#h z#zY|bRrSKWJ^0aCU&eR6DP5ef{0g(Dgn5NCgWw@w zqN-9#w7Iz|fQ&a?c2MiJq)pI;M6E<|k@IuS$jnQ29sRhx53M`bclgtL)G{r;+atr zflV*x0n2=fj=f*G$s4Q}R03(N`kAo$hF(Z_d88{K*%^NqAO)X07C= zX4}L0PWrra`iR2$UfPTl-w!`%SSvDYEjF;vzN(QQ6BAR2%S?h!j&>D~KB`k66cjbd z4oU~(u~a8TY4IlhVQRCA<1;sy`m}F5UMbG?z0Si8d9={S;^5$rjbdeIS2eX5{J^AU zB#jnykfq2)s5(=6ZpXNIrc0hOiN*2+h6g8KwmDL;qJ0XGm$I-6xG$=;+BpXhKUsRlzhsB!@cUP{G8U8ak-s9Bsyu7?t1BrtM zhK7db=I!*+`KG>Y8QWIV$1m2N8p`~`V-u0PFijqw0yv+$zlUsr`+nKaF^!3kZEkMv z+fER4&__jdDHm3r`Gi?z~$<$hXo1CqFLA5vl zakM8UCQ2iqD0=SwaM|76mAa|15w5HpTwMfA5YP)?NQJbITQ5=VJNLBxONwA9YB_2_ zk2!fvj`uf=40Yi={vx~b@ZA_A^?`Lp*yNXk%?b0ThF|}+)lz=1Ud5R+83N?NCiDT( z;XeiOYQw8`0Jue3BIwg{4hM&thDNpb>sO1f5uDeOA|hsIW+cR^J@{|RMo?Vhkc?Iq!tM$UMNp_N~xHUAgnZvS2=``Uu7GPdCqwSA4;(? zx2o#$8*<%wL7IV)OCrBJ%)aMR8H1#8m57vxi0I_xME4nBTeat#v+edY_gL!l_%?NJ z>rDuQzUX?k4}j*I(1n$ga1)1GeP=S`md@(LCs|awY<^t*^NsiGX%Zr`WS4)2T51sw zLMe~l|8Qq;zsg~rUgSj+`<3+cbZKE0$E5UhKrEmVk;c9I9h9^q;_&OjND@ z?JS5j#AWM20@F+1KDvK+w!Xh%SiUo{$;aJx|18|SQU4#gStyDd>i10qqL%5Zdan1G z20Rby^nWQE$in}>xfy%2GnAMn6P+@PozJ)ofdpob-`+`@I*B~%S}IWRZ~q3tA08FeGQV96 z3>y?XQ7&I58u<&d4=vk^0JRnuK_=b^l56UCr&Fp+`{5r-G;8&GQ2&20$Pr=!BHG)% zKn};p$G?4pxXa6Z_BV=%;?a8oLHNHbtZ9{${Et4paFUgk<$4CF&n{R#gq-PrBb#on zu4Ohq;^ZIPzu))rgKX(`Z?967_TAIt5?^0Q;9OdH5UQ#yrEmI|pil9>%&_^k^jov4 zL01d+&KO?m$Ff64`3jDXeAXWUg(TngN>XD3ATFyjB2F$ZC-)%{fWf99-V6%qb#mO$ z(D05`76$Iw6i6aLm9L?j_YXV9pKD$yJQ`rwZ8WDpgUHO+E`^GE?Pzb5w802Hxd32Glg%! zeNoY6vETpIv!yFk^x5sXS|xniVeie6$CuL2U%!4mlIu|%lzRx3Sql=#?eG2H@%KB{ zd;V#=0Goa#Poa(yNN>(FrPj9U?*)2_{^lKKj@*yKt1LZUVL z_09J7c5}$(`n?Ia^cRrxt6%JJ=}GuKPXj)#eDEJEb@+||-?-@$>5xHjbAk@LkhR=s z%6L?C2v*sdEE1qVBdeg0$y9c4Gcb9I0!GT_H4V;cJm=_v$(laCMTLnGsBRrCTgob1g7?yr1O`R zm9b8uf`duB+3W)aQqT;>WQ?lvkXcosnoT)^KNYH$V zs9#h~yF!U3Ba3Fo)^A}`_kqL0Rc=2ggB*i`3K*fpyqoe%W23yhyw~X;m+P!@B{rcA zf)-44+1h1X%|Czs0OAovvgXkDcFq0${qNJ#+D%}c1Y9?b-f`!9OO-Z(RN(6B z8uk82e+bh%OG z2GBY(uUgKz?K~aLX6Ym;t*A(hhsVp$|H*YLQ%b|hM!r4tL*X+5;>OfqSo%CjTaf8n zP&5z55_rOb3ek0WActGCP%O=Z!CbpiS~d%%>^D&i`Qm%dqmaBe3KxoatGIbC<6-mpspkZ2W^Fs(92OC>UM+btNLD1gsF;jQlb;ugQWSkP}cDu_X zkZ-~|fn>-@KeT?mFqnPGwG+stV#4hruTxKZObS~N1jr2s&XqkR_yM@+liS|*AoWe7 zz>JJJK+X^;Q-3ozXA&9>w4x!j#t;R1D*U3MiHDxe#fwUS%rYP7I-%~VzG1klfK9|8 zdhOl?{jqZEZ=ifUseP`dMs_5sLHvc37%*YS(!?j>JZz_aX-5jB?iRjLo=aU_T{K9m zHicRzC||HnU*=A!8?EG6>gVQW#8%EQ1z;JM)p7H&^1PrRJk)1EP|G$%8u_|-7cTH2 zk(nuxk>4UXRW)j&AG0r4>z0?7m;QG#=|@1&9e=hEil!25kV1Q} zt29)&+^p}V5EAs3{MV%vf&!m7mo=yd^>bM3#+m`?b4W0=-s7vL9;}+%Y4RC8YnVuO zw@`9&a;8&%nOk~Y`-(9^2DB}ea(1^SXhkLpI=rfJ;~J5KE+60lj(gCk;W#Nv z>(+iTmD3?^>{rtr9QF~?#walezNqheD^;Fk&=?WMxjO|KZ6p~ndLwXi@)3P z{rEkUBP^T?y|u22Qg7*3=H{A{5WA~p!-Y(4t$?yAC@CwA+DYr~)t$kr2cHXzAd%Ib zo*aR?HG9cby8KB-_+Oam-H)_-0P0dwQp(E8R?c8eaPQMKZh1{LE`QxV1e<^&&~~1J ziYnIkXyzC5OB7ZACA)bvGtR$bJzAQ3-=1nz1a!^KA1;&7OAg9D0N%1Mae#XUfL{&A zjQ=62tkmWG6KH8{M#5Us5J_gt=kTkOQ$06kzva?le7|p!_6rs2$4@fqiLbHdu?BP> z6$DS0zwN%?(VX#`>eefYtgR%v7onEAw9%r{GQqmSXF3ixO}M1ue0wM0vn{E;Wz7;3 zc?k(jhR6VCV#u>dkr&%$X}OB*9TXz*_f2Jb=-=NWIzy`oD8OFaSFZSp?tunkV{SeI zDF?z2e`8_6Oh;!7Foxzqyuc@wvoqlBI*J9752lE9T8AZwa5{KLw6;T>? zur-g1g9ExyvHQWMnu?iEq%I^4kV`%!LLh;7x%3+Pp8&T!k2fBucXo7y{3usT^DuFK z{`@&~<^OJ)H`2fQ1LB(S?c3*xRo}l+CZB$Yu)lgW-7jC|)SON$SaSK%p~i#SnHlXg zDb#!Uh?p3Th|6gME$M_yx*j5SiE^f}>%uYd(;0mixV`!#UVgID&UYdVNTd19 zqe950yU(#UdQ8kGQ&8}^|7b}A6mNoq-|xL~CeNX#rsh(+{Iz36_C=J0z2utcCp$9J z3Qo4|T2+AkPiu_*@yQo{aH^!AFX6RQ2tk*{WFDTmO3glJf=$FA!ZpNeNfHjSxf_(I63|1*?t*9G>Ua60J4&O3 zprVVhynqJH&SZ0Q22=z%bYN__^zpitfXLCiqzok|`!J}Vs_|b+9_-YrmXh5p1jgE% z0bY%1Bf6^3=JFUe@a(YSNB&o&ulNcFAwulWa)d0R{C$L zpj9%G2poIVu2$a+8J)$zI!ifkDhV&UVp2NEODSQbENgr98+s9$0hng0T1OQ3h|@qR znXs@hYM1K4%hoIG>;n=H%Qc;-i`p`r>P>Lyw4Tu9-?} z1X!ZJy?>O3V(}!ZCKExj@o`if+S`c~+H#E;UZt{cyu0H=W&tmV>zt2xODC)zUeycG z?>zU7N}eOXl}uATgJ#F;{)`%o;sWckkL;;cigs7VO0-6!n`$!FiKvHN-ve_Ke9kDu z9lfimqoY&&5me-9-CVLI(v{NH)z!gd04Bwac&OvQR%%wo-YwAa?c7 z@9cY6-oAY+@YUV(;0>LyS=``PWdcGckROfbf&e`AHArEDKfymms-HpMID=CpP?ow_ zNW$;?duXPJii#fAi$uVA^R@rTb9tzdW+bLJ;6HkyN_dr0w!zntm?V#fx^m%8oK4Ys zo)1e(sj}qbqgJqL%&=7c76=n-GJF!*Vab|Aa#hnjI)DEME4!^vecs>rX)a!hbzT^W z>y!;yq*SrLM!mx3u|9j4n=s#tib!1<8#uW||D0S(GebzNDa60Qi{Y?QS$R7xce0>Q zy!O*45qa7>&wHh>FjL3sE2fDkis8=iG4`b%04ZxKYhsLSl|Llv>T&(PO8pJrNSHxM2MU*?S@iw{mxIc{@b5(!8>7@& zSf6gZMYGRfkA(dvy*wa&K{D;nTs9c_bRIB$2nU%=g?BVY;@-TC`O|s4rPODbic`~# z0n1qh2GV^^#($&jhu;4|+Z&k_s&}{IWj5)TNVC~PIzG`+e;Sjy&RP*5y{AcZ22n4R z@(KtD^b?pT#3}*N8L|3HhKx;4PL?{-Qf!oa_Uwi%C^X~Jzc3TgCph?rL4=1Jv+lPm z*EvlM`8KsQH46tQp%Vw3`ujl_3He8zitBmjYv`pb8>Cql-xe14N6`Dd!^wYhTjHa7 zu~EBrnFZih)dX_GKva8Povtpi3XKE6`npM@y?W?$l&+R4O^KjsHKa#r80z$LfI6e^7W|V6&$W#~()`eEj0_^31ej zmIrSNL%xqhzdDD?<@>$5s$iItm`Eot>m@BsE94lc@}tIOveaBvOw2oMVLY-jJpn}m z?L*7BgMoTzl=LAU5(wGNG(m^mzl2fp)rF$c(mQ}Kd~u0~iNE?0G|#F>Wi&m`pbuV) zWR>DDpIUkr25zHJRz9oYP&}moB08AV72T5p-p&@jO*lBw*8`c#ps!E}>U#mK>i+ul z{SXTBS6)>ZNsJ=zwMMW0w|l7^T7C-~vY(tm)1#pho_213TGoFWlI6|^n{%<_3$9rZ z@aCMC*cFafYu1)mR!~Mnq!$*Cq1Kr1LTF0lS&fui>p+vh!L!#)(GyGx{&DZW%xW&rens*-V$j4&s6}VaO}%NpxO{ULGAWhur-P-xFnweC#l8g#rTL}bK_%D^*UE1=FKedd zBBfrbrAZOuztglGF7#nD=}yRQAH_vBg!dJX2)nG7T8~AQ-@!JoDH>C}!pd4zS*hfQ zS6W#OS#>+uj!ET7_4V~i z%@?J&&!`9!mea%Iaeur^Y`y*FE3*JQj?4R#`>O(^U2gnyf+1>!+3Fk@-!VN{cUhar z@ZoxVLcIhkR&Q4Avzl|9Lj`)K^E77e8JUg~7AnN)H_I%(z1Ux8ikFv_6?XXb+NWa9 zeISzGuR=Gm;-1Y;hFu)%w;RVBqUc_&Fm@>?^{RWzJHtqBcsD(7pbU5>O77X78YPfqPcaxPfR>1 z%y9V}!)s_ZHJgSLdiCl@m4&>;$@;qt*f?TG@h1#V$Z*bxe`pCWDd&bqwS$zL9HgSc z@bK_}fCtZ???cP~fb=V)hPrx&k=vd!V*4M}HUX4pvGOw#`k9^<50vCHS?3K}a~Q7- zI}OA}crOpvx;g-8IgQ06BmRH$I(w@~%gZ~#>%-P3+}4zXc^+$~5`GE5rvY2_aS&35D{NAxnG?lxP|lwlN$~p_4;)a!=H^A1|fEmwnZD$%~;4uiu+w28Zt?(H)1IUaLBt^1bsjndIH4KT z5Xq1dY{}6 z-t}OlSb-DVdwd=W2H2m#usIE)-U01%nD`5js@CAZ#Urg@y!*5We6Wik+T@e&dePI- ztxQd!EnZ$H2LXz{72tA9h69f_7I$^6w1u&_6CpCt&i+|yur(Y0Y(YVz_L<4d4-A@H zeqa#}5ABNK#R@nlMvk6(RRciUqn+RL5UZdziQ?Lm56AeVXJ+Ey;<_yKPDA4dp68DN z&#NT|TM)DY^TNXiz`S{S_?t(R(4J;EX1eypjs;W$*n*>-A-w}ygbXHnxPoZ64rp+I zdBK?0Gv82yf!xhpo~)l78F2+>;f{%DMxY1k2Z11;DDv1Ti`nmAU=xXZc+>nk8MFLLc+tv z#-0}cDaM3;@Zmm?VRnUth1uCssLZfSTjrtj4K4N|z#mLa=do~!*6|RVw9xDlivnE* zxDj-%*8t$T6U|;KEYh6?D4eZRu?mmgsCgP%kAA3-^uvdXur08$z#>}a#XuqHcnm6F zFR*`Dn>(JzF+CWe8tBhzJ%>F3RzOQj3#zPLYzZbTtWaqW^u*d58-IeU#hu9e4hAgi zzE?K{5U7h&Q&WGPwUi4_4c7tz;DG5S@5!e)Ma23lI$fN=UYtdr+h9k_CRw{N!k@a3wQzPXlYG) zlK#vz6NnN<1P`|)-EqBX{51l4M0$FY0FDak4wt~U@xGXGzIP)iKAz@}%M{X$kr@39 zNBb^}4}r#`s6auxgN^M$beEQ z?a=-L23&=2b;0|KKV&xW2GMOp3t-Qk=mW;*7U2G%0Lvf!|uQ%0h)GX=q$lMk7lXK_&!G5SXWdLc{CopIKPLp@DIUdY#lpM_*o{ zye7T$Yk7GbMuc{tv9jJbZ3bZ@l1C4GZxgWYfp6dTw6#6mcqwmS@ID{_*P8E+Bwj56 zdNH1X7R~Fjs*8&ouvT}p3N_!I`U9cKeUM66X;>6z2DIB+M32`cksdQmcw7&u?VzOw zZPfnK{Wn{)768|;!3BtmBz4&lANL^!fENvY)Oh<^{=*~6=lkpWHO?ywA8@jw#PhLe zuu>Q$e`XXE*a8Q#oviDc_ZHGeI!`rV^rxY_uIAiEhG-Ax0O;N+@4%B;XULZO9i*a_ zAV}!F{5`)Uf$N(aB?%cU`b8Z6~!>mdJ1A`{CFfaER4dfi5eQ9b47dZ|zGT%3V zj|A2YLV(|(>Aa{$FEoV+tf#?(uz`oLM+YS4c@zcg3RJc)JX-|xUv_jL)3fU=jh6j} z<$+pW4#|CU4HoD){#(nFI`_q2ztkb9p=h1JK{V}7sDeu}fQ-IDzWxo_jM zpL`1UWVqbQ&iRGgw zEM^Bw7aAJc(9kgHd4%fm!Ss1*IEztY(#54!oE}CIx4+&<3{Xm*6S5%CBZ5cLLvcuJ z8Dmh2(RRZ|;=7^d*yqj_YKOBcmY0_1s%8;gO$ZHDDzkWW>sARYko47)k0L9FXmFMe zN;23iWFI~xp-}tqe0xC|I{bE2RBhzwh`I<7C2m;a>)QzN_~g@z<}7h>AGe$Ru%zv= zF!ExNhm!rzfL_{Nfok%n@F%nj4Kh-Y5E9(W_xpqIy?7yX&98g{&?~io&Fh*lp9;9} zB_=)vCGg3UC;IyO5Y%%HDNlXo)wl?q1&aU10T-ZPdsl;XdIQcTm?kRVvX>|>K64>2 z_U4#v{kJ?FmtUQ+{s&dqQ`V4}QVbSS#-S>L-xQVw9_J0RHyhwZP(tyEiCgcop#75w zwRQk9zP`S9kJlSPblDJ8O7TH)MgeZW07bE<=k1?;GDIV!>6DuQ6+|J|J$TRxo)Htb zX(Y$n0=fTqX1pky&xYEDm2|M1~M z03P6wN05Dmem#)I8K|Nb-?+w`&Yy?(w?blCWN-yzi#w*b9PBhl81QPOS??6om*?wK z7|B@vfK8|&d*^5rOn~)k{~SUa{kah6q(Y$mP zU=8p*+HL@zR#-rgZ_$Uuof^Si$h#wPIs~S8XyA5%A!MJHV;u6Q(m5C|gV!;yha70N zTY`vtz(%@3Hl^XW@H=&6gkTU8-Gbwy5Od=*Y%?4(crRXI5oQAz!G4U7KjX)|2w@PK zy!@kPsIf84>-1#*7bfL-tK6s0Kz@bhD=0Dvirx}{mA#LdAgO{wAHWXWWSnV(9jz(%NZ0D1c?xuk3WFS0{p^3z*{;K1jDykuUtt7kN~@c zz5-gsR#pTJZ(-pYKpGNl6J+RDHlbI;q?7XU4W2JpcVgGI=V@-AWpvW(@eUjE%D7YO1m#+e> z!BI_$`=}L!By@SGaxfLen1v&=p8p*1#Y=1gSSG+1sE<41HW)NlDHlqMyvioGq3evI z7dZq*GOa=j&Dzr9VwGPW_-H@_Oyl%mKG_|!4RYU9;xj0Rz*u^Fdtvo91rZaN!j06~=%g0Vm}74e2vP{Ko}-cuwQaTDgzX3R(36-dGY2Ai3g z8CZK;LYRI^Ys<+u&k=#A4c>1>4>`EGQ9Z`*jcDBd9F`>}J_Z}k!8!DK6|({Ny831z zT#B&2DT*s*1N(-a1%PZ6oiO@V)|W3Yty(%dK8pL|z(1}4MS&s)p5VpbztQeO^_UXa z&{07EemWKTa9IJ+RW{tIgEXdP0bVw!{Q%RiLSlt3HzcIyN8j@w(@;}eSX+15)HpyV z08%>ifHbwW;RkNuk;z?$a7Zno5u#xN3$Tfe%?TLDkObRMg&AEcoqkhzoIgA|O1|R? zv?$cAp#>jD$T}A~KBGDxsKMNk3p8Ncm6V1?Cqst3pW2=$%46-*-Y~0i0;*_)lvO6w zo}61dA`^u|fdyZY^JWRWq+j`cO^t9fV04yziMd5v5UgS{U=#bS(3YY1?>`X3g!TQi zZ;?g+#u++q2S+*>T;_#ZDGU(5wjB^2kf0?4-obR-4mMenaTqnwp_GnvhNOOaud_}1 zcGgb8F6K3rB7AbLLdIAs@|3Cio5=5#c0XaKdq3+#Tg==URyKk(KNB4woMzV6-1(be z2Ggr{e7N5y2B(knw$1qM4Z_A@r>CHFF2}2y3sg!`f=I|zap{3K$km96U_epLLqmH| ziP4o8Vww)Uqtez^VC<0^9gv+#W-fl(_x?U0lQuV*2o5I77zLV3Cca?KjS`JBJA}Q0 zPHT!{P8`2w@%_M$*L2EXcijYdWSX7Os{c!|thEtjCka+99_x@qKMY7Ngx z!K0fj+T-=_ZQQR*mEG-Fv3lG+KT@Ya(3Ac6Fu3Q0y zk0$N5vAQVV#OL zU&zPaY?eMEWNQY5YLzZBz?T1BHT~q|$aa(atG2c_80A&Q3G>sFq|PgHyOW{Ev2LOZ z?yCXCyVl=xM{Mi=v;gVBz2m;$`}s54RAHrF$g5HWyk2$pGz4>pv8)L2FWh|L#aJ4v zSVIGLNXWnuvcNw^c1LSSISmbR;<(i7;L~(92ca)2N4a% zfl5%H!?~P$G_$3Z85VArK$(Ekfk#Nl-~Xiiv|!gSwvq;bpY4z89k}4>gk*jtLL~wh zmlVBoA*xJ+zqC(A4~>Nu3}RA`Pg zjs}(?(X_#_kUlC)0i=$ts-gmy1*G$0q#xz$f|S_}=#q{5*4J8v(@D9jn_F8fvA6o4 zE?ZNrX8 z=3iiZEFFjFTgM9}heL=X?wcGPt)Zz&nJq| ziM@Tl0I_7#xJ&dCN-~P0aV7({7F2^!Lb%CAfBV@}@W(l?O#rKHyDH?gG`p}MEg?m! z4mQR^nu`}3E@LibFnuTu>2lir_fe|%legIPFWo#Ky0F$wBWZ43mzFAU8)^nQzEG{Hf(~c zYFL<D4IAa(@E#z+8GF3?WwKqP@!fXZ}$Psa|zWG!@V(IjafCshnJ z`yNFCBAz*5MsSydVZ&B53vqJ1)dQ6h!hYTz(+Hk5+nks zYzyGB+r&#jmfKD$AdwK>l2zwCo&f~O2h0UTc*+5v@y3nb(NXPKj}8hU8AW;dxydiO zpwDeaK$St?cm~jHAdsVc9`vfr6A*jk!2|{{C2E>zY>3{J9e%z-gim~Yj z8Ke%F`KebM$+Dnyl>%^QNSUS<7GK#L#>C?zaL%7R?gXyRxOUra2FmySf+wHgHn%49 zuE902#k%PW7^{_5vR%Ko`wXN#_w%#lAmD;6rD~IZ1Kl`%oeYB3^!Te6 z(ydXDdD%B3_xGP`Yego}u!tTl-y$srYwMP+(REPVTw7ZiyvD(=gp|kKgM`_cm)4oE z0jQEwHM6%BENCCs4H+6^g`6y;q;T%aVJO{ZWP<)Z$*JDPFWRr)ez)8P@Q{$02ulta z#~$BJWggac|K4BEMguf`0|T__rD&w7>E39`j$SGhtB-&xVN)sq8iE=OV!-c;Nl!~t zQ}q7kfuoJ*&nxJU76NoYUk&{WXTM;g`H9Pcz`q0sYyR}=M1qTj;i*NB{y-|*s#c;- z?e9GT*qlIu%h!AJYvHOQGCnCup#;iryEYfWwz7eR#b}Y?gF~@wpl7i+je$#6SdV=N zx&}M6kwN$i&;*bwo8iJ~5J?VbZy<&#Ic7h6X$b^gP+e8^mpbJwF#ot-uaGzN0qtGS z1m`)B)(S`JPfy}a>JNU!=Vla(A-}_s+NCpqn~q?9`9lAu9F9Ovyl=+}x;De|f=le3 zBFC1?R1WkG0^ow`{{DU#%L5!f%U?4~hm+RYj~`>j^QWC}-XOI7EXIwL8n1ONf%0*9 z*W8EcY?8pFV3Nii6iBzz6OXvZ(1ZT2qQyu9bdw<-@|ytNY|$ckW#KM7kWbN*{hvUI zro=mJ@vP+DfZ8Uovt>E^bHK8*a&gT0y3mH~@;91offr-lbw67K%w-#Lf{m#7t91G!F=_M_@E99)TRupOkl+DhX#AeenG7Ezlf^9z^`$9PpMFJ+og@LRd_GEX7Kl2U^i2ux{6%rQk z-4M8gpR36WmlXSNQWU^_H1P1G4|I2T8!21GS#|#Sktk1NW(cst@!BwCS(m-|*)Moj zuMM9Y89f~<|IMQ}*VJ+M%AjV5^$zvS?Z_)kA;G~jG?-lCDD*lahXCX5Y;83fPTDur zc-F&7FF@Be*rt86{7rzpAlHH-Wm|W^=4ETH&gg>*Lf>+a&zcXuHJ_gKnMos? z8<%FtA`3L?Me~_dIl0PsTR={QV1{h*mEHTv-!sBSL2-bKt1x-cM=e3;#VO?VfiG`i zxLe;R8!h|DYIQp8WiW|HeQY~9Wxaa_Gzfj_i|;&}YS_~TFR9E=j$|CykR0pRFwr#l z-U%S5`{zRc4t}L)pi18b-eH%yAz?|M=}M~LhqFoj3p{s*%e+?NKC{bNJRxmQy6cPMWuYbluIxsebjsaX? zzh`fMb261SEH3VA0RAPk$oOKLqdsV^{qxa|R6~pR66})#yd7?odmb*bi{egzOoG91 z>J6tyn%}Z9^7nV+j($^@kkx75`uKuB`Tb_QC%(G8IW!k3+XT4uL8g)#jo&gaokW2z zc>uonAp>-UAqa3duq7jc4!;T+aN$C-(lKPgctHmf(9EEBgw`z7r4)mu<>ZcMLU=GS zF%S3F0E~IqMFRYS3+Jwgxr`wa%%<=>IC&|NINnI+la^MBsT5ckw*jM&1Tv zv^!C)>{CO`N6X9KA6GM%71^Y<-oQGV-4YdHljFOp;+IL|zE7g@dTDfIWCJAwD*sJh zUOWPVkB>e^!9_Q!m=ryb%wX}12S95V;OD19T2ab-ZML(Q-a~dJx$y#2RF_lyIy4j= z)tm{bba`=+Q!SMU`V;|OFOQ3PwXaW-uT!9j{?&zgGiVh$#-Np%EkSf|0`K;1;oo-z z)Q2XMM`B_~Gh}R~>)5WFOjV)z8MJFdpDVLKLZq0XqN0Lp80U$JO-rEIW?=%f$XJBR zhxYz9dmXI^1jBC?R_fQw(D&+{?d;6+GN2qfma?dU9#0;RL%lN`vpzV8{;CR#7aOamzy$0ed0E(T*xoSgLkZu$PW&O*8Nw#T!9$<0SOy&sKYZ_2gR zo#@w8Uir4uvs%qNP3jq!56Bf*9DHR|6C7#|)`a3)uZMmDq{}y%UeL@4ZiNdm20%G) z2nZ<3$_^xh41F~NjfYh*b;(ndYf&Q5qsp!J^gX;4-E|^rC;Tv`d&uwX3q`J#5-+|) z`6OJTp^+63-gvx!?2AD`mnA9^1-L;rvFxx~wD&Vqx0iEz|DM zggz_KU7)FY{r_9qU)@R?TieCEO!&ri6_2;8en{S;Mxgi=Y8r!v)a%{v$pL+_>&~foDd>v)4g@QnC)NkHrsrPq=v8Jrl=Ym30p`xoo}ucPo8E8G^b^|Pt9m}bS_VFcu1q$lE<~|wr9gaAxX$2{_LvP zV1vq=h6}qP=8}{w7Rb~mzLd^mrUsQT6?>4qzm%y?GvTssES>ywv%&@o*#F44zUV}G zWm5~oyWyDdF!@snmj-_S{+)NdXWDYEJZ#;DrL*kIthINV+*k3nHRXYTiVMHiyrF7q zng)%5=H{jYpy(8z&>Qhk!H1%}GBMu^1d!XSJKs@$UlJusuAPFVWuWq}NjJ8u^6d`! zWn?HpH{8`KQXJ$hE5$ZcdCJhf?m(ekwkc2i<;$y{A6trtN*q6JyCaioc%E~_VJ(5B zNpob2oNV(jXWhpjr7N~=#N`W}HInRLXo`_?iYo}mgM8+Dil(dv$gNHEpdYa4?dy|s zS6G)mhHMr^F2d2osiHyt&7-r@$0bgO;p0&71R>1Uz%_=xcp%iiB~w$Q#=Wz8i<6C} zX0-n1H^<937?WKcQO((^c8>GC)$8azJ2>3`eAuJoH8WFFCjQ<1SCGLsKJJ~#?qBgt z1&_d{PERprPUS0fPBrf==TdMsD@PRB{D8|k@`&72b&q`DN4FCtDA5W;qejj;WQ8(L zlH<=F8`2HsyYJ_D|GXReheyXr_8$m;y_cgMql1Un2X<<4NW5$(oT)srp6|T2E*{q1 z?(CV~l3zWTFm$@^cW~=Q+lG+WLqpZb-lnoS|2;!EDe;Z@budtSUJ@B;*7bj~b76x7 zJ1W$lHlt_Ye^zd!75ifFkf;L5*gRTB8OEv%1peZpR~$sJs~=wOQSD4TGzeaNnt5pG zC~Dy-`vhihSUSJ7v_V+7ZUe79J5H>Hp_f0R2@82+b_-SS22d%S_Ar2nz2AI3hqmNTmfTbfs1hWdXO-Q&YQP zUe}gCa27f6PQCBS20!b{x1%kmXUnrqe^;H6-3O}+(GSo5rLKby4=Gv4MWy6hHdJpJ zxa)9Oe@r0Ak|<`iYRjE4oNMI~78AQj_0HoCMA*<6dV6_gH>033O`icebxP!Dx@o2w zn)|PaK7&)CQQy;-^<|nSa3hcj0NPB9T;o{Gzl`hA#OCisWN1z44P-Wq!jn)`%5t5zagAd8?c zl{4!!FCZnp>yG(-?Tk!=GWlHVK*rr)qE2J+AC;GWkJpGAI5-F$!~^E3N*EOSe_(u2 zT|V8j1z!v*5h-*yV!?4$<#)8l;4(bGU|E1nNbxax@RT*h+0Oaw6SlBHwRW0W6Rn1? z&+#8VeP3;_feO!e-Rqw(ukK3Mn5Fog?;7X7Gw{2z$D^Q=3&(e9IJPIC9fc3X2TtGg<3Hq3iGlV40XF3Kx5M7YwElg8{`Mh9t1U8CS}&oN$#p$9e?4QL`E{^_ zs2`txQw!0ClcVEXqvrf;7iE}K4AM}k~?5m374S)j>?tk8y}AoEvWH(c%%toi;j z@W=Z?&0UZd_w-!Se3T04Z@k_(_vwPeldGc3yU(Cf8<%uVf6pF^MPMBV-o_MS&wMZ%BQo_hP1CqQLp zt9x7GL;Y=WT&}Xyn-=;)=9*(|sH2Wp9Wnl_GSk<3ro;A6_-b{vYKaxF`y1zbl zX=`Uv1nah3(EV(nChIbcbRBx4BirQ5L50GGr`!_F$PX&rh_bBfmCPTx)$vc)%l!E4 z%(s5#uUc(wkZW^MG!Pczl{}DqiI+KnJ=P|#iNd(teU7^6O<8ZNJZ!3>_{I+Z1O)wu{R^4jmHkGeEJ$@_BCuO>}T5Fq`nJH0aSHVn& z{sYRRmzgE#bAr;)8t$2rtKH#?21foA3IEvsV#uV3>Hm%aWj;Fgdr=Aoo4 z=BsE}R=fDsW4`S>jpT3MUk^G4_C|LVE>NN-uTSShAnbHvObU zu{WrV;dy9gCNh=xjs9>>gab_V2sU&W?FJ=kUU`uoO6NrjzT9?23Uf!w4STxX=Ef(b zwd*v_*CzQail3O-`^Hxe=%Pq#}g{qmy{KSB(kYr z>gebEU8NwxRa~}o&vDpx?Z(`0ZxHJVrTs#%CwmBsuX?r6jgy01|NH&U0Zt*u{TGws z%kP%Io*2qmdcrWcb%>0f@lT7gl}F~>+-TKk`j2r|-HUYp{*s&@&uYak^&xo^Bc*Gv z{Gy@G5|(+`2{A6jeorf=-@Q9EUZ3gOw~_c0nZ;%JtOqB#j}tPS?hMKjXr?61kzl z=CO%%MXZWW+rSWZE*8>TIv$u@M2d5V9U0{r4-c6isaLOti;FV*##rJfIB{Iunk^mo z-cYPl{J8a~vt)6*-MI7K8*W2^J zLpv_ZdTq=&N1=T%hC7KykHpe{tGiq-kA63gLha3<819#}8E%Bw0f2`P+Ja`3hsb{< z1cCyH1`*8^U3%>x#-WOt}2XvZt! zxZ1%f#w!;{7TV!HU5@W_l;MHQN@AP-v+)Cl4!evE-4j$Fe%lUvU$93~`%-2mCnslT zV~!q-ERrKN7Po^tS_ch(>P_uV0Rb|Kg!Vz{;i91jWvV+%^^W%ao0wn_NyVif5 zDgCwlvVm>icI%2F(3ahK_Fg4&hYt@D^xVquNrARrN(nIYVj1iT1c{~K2!dG z&(#*$W;vbN#s6cUeS-xT4^R9`N#{r1ce&H4f-+ncdFcFNY*1rXDqunUdWO0Vlc3)H z1N3fBhKFlPORuCE2sc;?DZ#8sZg~mxXm*7`!rJL!NBDYyJ!2T6qkPzx$1QBq>K2Fl zhfT@AjIDtC>6@Fcn<_N_F6^<)V`bmljZI7%AScJyZ?wfHG2OxzmZ*}ky)v;})cNv< zNz;o>yHwdKumAfs&-WqsN$Ijp%yxX1VuhZS+cHGXG zk(fyCioJTGBpVQj`8fsl#i`|@_C*sxOS1oLGXbTstz)G%YblnFpBj#Tnhbm1)_|(9 zAsqagA>SwZox88!>?6wrluo^IBjS4Tz}hjGNR__6Wt4>9hPI&~KVMKisGIq{zwkME zU!lo}mrsTUBZ#e9IxqymF*?h}Aw32F>xSIExLu;{cB0uMNMJSR2g%G03idI0}>^naKm9(tjU+m!=KsCi@>4S<;Ur9@LyJetOeggMn zpLg_nI)E&kMv>T2Bmdj!1?{1!a&nq;zrHj-FQ?*q&wuMzfywisA*(r6n2HEEXpJ{2 zOYp?hOib8~Fg)Wcx(P|D+2_#_i0v4vp<6x#VFz3RlBv1vT$pmm4fwxj#oN6lm7ef@ zDIM(9^C{p0BZA3>qokalgzcx6T2NqMv$BMT@e<{h*5BB4s7Era?BDgB@@{~VQy05o z($%Xz;A7WlgXlJiS{jhZnHvSx&}g2Sl!U5z$dJjBXW#K;Fz%oPU^1}xXP)L4IAyc)P z-SZq&v4A?+qmKaE2BWFnQ#_|z3)>?%^#o}88WXqEQ4%>^kq6kd%#jmu_&}h<*KdXM zt*zOz2j>RcEV~t4Ff?*x!pU2L88>Z0qs_UrmJ}y&K36y+*G`9Z{2idd-2XVt}3|&NYsVJUUXoE_TDIOD1f|AlS`xZ6ae(w@?JT8S!NTSabHsmY5yA zN0%F0o12@#LtZy35s;PL6f}51n0?EZ_cJri7ew(SCCp0H5TH$9O{x!`n0r(AxTuJ> zsy>?d%=jfeXXk>)@sH#0J{4J~`*8jo-(gcmhIPMlA~0N1FaPs z6H~pGg&21b-e@6_0s`KuHXv1^Nl<#9kd=@qI&_!&yy8r%ARc(ASLlacGtK*2zU4$A zH&flkVmXQ?Ede)1%bxY$_6E$=@<8Htj?+o>rCbrUYW7Z(-H zIngbrD^Wj8Y}TPzN~Rt^P1^sWk&ecJAq+qmK(a2Vd(rGptl&U)_#WmrgmWp@E<%0x zg4y5eGjbqx1hE=rd%Jd^Pu=Nfkl9J8Yta~GpcOCga_~KH)NoLN=z>dz;LmM$D*xvc zf7PR)dHYZ*dg8j&GjTHwntuO2qDac#)W)D?t3s>F8(Nc#f?i&`hya2A4dd3bVmZa< zLNT|%{1QFw&~A7I>22?!;~jRdeK44mzqZ96fI>6ycBZDB$ha*OI+331&{&#tSKn^Y zhMHh#53|+7Yv&W^UQ52JdW`bL^jGYYr&~?_LZieCZZ@9(p`D@r)Y}dzrPz6wxfEbt zL&apmAdA0c9yr5&f91}%6Ovg}w%UeG$}ha;VgQTX$^hxL+*p-6l!) zQ%LgO>*4Wx=!?$yy8G|Vm)kByi^U=D=REQ#)vgp6!Zy+^AtZ>76Y3I#R~WCEESb*6 zif$s2_(qJzj@GL18H{foBM;!fF$ARR}PhiyG-*L3wRsu@KW>@B49)>G-czr>pqAFU*Fgxct7-GKPoEf zgn2Kd3NG0WQOvWyX@sfwZTb|UD&5Z^G1(l2U>)}3bjH1JFkZb?Z^>ktN(Ul=N5n55_c05 z`w(ZMc0CZkI6Y=Uw!)%1`Pi`jH7-H$>n%NOhz^u}-cZKF9C-Kc2E?`_*4BUw9Q)1r z5YI4QBW%4oLO{KuusyphP0o?pbAaip)mJM{mymrKs^s(1n%fFFnQaS?Tz1*hf%pa%qj$+FldHS@twL_@ha&Tj{b=%+-_cb-%wx&Py1P06F3ModfL7?#3SQbaad;wBUZX{~66! z+U8G+?vX%FI*+TNHZEWh$wsg8%W(6iSqC9y0NYJKY=P7jTO@Y$+Gn?GCH0*n{+*L9 zC2F&Mg^X|~C%IC=uLDi&haFNzOjZ`=(xN5qorvdj=X>d8t6Z39P*?u7sYYEKHJ*q= z#9r^1g-S~_N!Pz41A zDO`^pg<86-%-hzM@4a!mve7xf3V=ALwf`qoEW|_Mwta;c_zrxT<2bJV9WflAu;4hq zW8TNM^8I_gZ8XMH&hTm5WjgNyCfn#kzn$oItiBu%-85FCZ$p(fUlSFcd1p(+f$fim zj%U2djIHk<0=)?}Mcna?+S|0eo@eZ2d+rd@FCm*E;MN`5`Ro}q9AB50r!zj0OYIzc ze7x2_OucJE5T8NFon*}nw}dmr6Yv_DG2?Tgz?PH9N=YbwFrQys>UNAq}pnmm}3 zR8b7)^)>X5^wt)j+enKaJ}e)&_WXNy)dp3b^Tl%2yIZ1+tgjR=w_4tYCYE2#m-hd@ zyFm4Y^<86{If9X%OISLus&H8LfDRoip-lZHwEIvOUnTe3qf*4kjg&XCJA!fKk+r>y zqi;I)B=x|(x)b5^J-_M_K3`3B=gU(ZTJuxg!ucWkBy<%N+Pbp0DGt+G(~zuml5RlM z$5oTOQ~luN!z69SCL?%z#j3Lx`7I3A5R<-i*^ zZ(c6+-=z3a;Kn1r&-)~uRYLDS>0vvV7ymiFyze@9P$B0@!gfgBLee-Iq$&#WI*cz5 zpkmCcX6HXcpKBW+i2(D3=0`CIU+Bq$zD(0C1Z^5S3CZ{5?gfcWEBli?7_^;B2T~gk zG%fZG52qbq>?=BWdvhQu@rW%b2YJeR(rDjU%3)(Y=>o# z&X=8lNhgA7R5{_;5b~p~;KKSJ=+$e{&Oj;R(b$xjDXY;%+8!o*DQAz8*jX4GGyEnW zlLCUb)gy6HLVZwGQGpVX*n~E4AFQ903d4U$CHIS!-zhidkNtg#?3uMwQU&ehVqplc!r^B-o~4|XY`$Z ze=0e-W)ES_d^;?VSc`S@tIzjcq47{MSd!&1m9*Bbj@OoEpbwoo{)99C*633(_UJD> zjfOvTRbb)u=JOX9hJG{!UvEA3RdvS>=5utkv_ohW2S)0f@I@-j%2a#k(kJBZ?mm6+?bPt6?PqN9rsbCfO7|)7 z<08P&B++DluxR6I${tW8QHfIo>^)wi#rZ*+zZT!RifLq;cc+9!4;anfzhrNjbV+ncV$jZA|yyX9+PdI9z1?w<2`tedX83Z zR0dp&^y_%FY38xWOnL`Yy>QIGpKBGz$^8w~w|U&nd$qN-y{4;3PBN9;H;*Jr1w|S5 zCZNo7-g1Vx1h^8x%8cY+rKsMAau94egsyXMd2Z{MhMVqi&#v%B#6*ne(bv<1tdh-- z)(7O0s^sri6ydTO$+6p4ww&ZkyI52fM|M67xzxm=zP$M_LT=rqs&JWvl4H_f|Iz-e zrEi(p)2z&Hl*KK@?aW=W9CxOT+mSa_8-+Cz>ymLj@@~K}Gcz(8?aK=;kgE^3`85kJj?@5Ecm}_svrBUpxBZrI`G2AgTeNH5V)HJ<8$iApEWyTyFe*7&tvmMb zy9!La+VFc2bv`&$?%ckeiEH4-(l?uc-FxVR=&l-Qk&I}K?gYr_M-IAP121{-N_KWO z7@4U<-v6H8tor;1#gDrwm0fvQ2U^tvBqy!e;AtNE^w!QWr$4nRBC{rjI`l;9m5j$rn-fS&9Ng9^*EA%fW# z$BO5f>L*W~n*aQHH-<0Gl1+H-^g)XilBllFwB@m53F;M$NHx;Y9OhkV>ZYN?EG|%kRsl~Z zC#uY#AL4_M>aIL}njW5Z_R$lA8695Y4>qqxoxZDCBT2U=&rhcm6WqO>Y+8i&0aD3> z@|KvbXa%32F)3s4r-Y2CmR1SGpbv;AUhG8N^=-T(psy&v3`ZfYAav9Sko zVzQUqqqiOZCHg9qsi>$DBDo_n&$?;Ens4x6Ioc!Z8Ct5qzcD5E;^H(xoQ?vat?MhJr@e2lVM<*m#G^}BUrK-pj+>kFU|@*H?LWbksnwq<_!Tt< zRGrs;{)F|LtaSxpu7ix6JK&qCC9Q^#@xFZvAcbG%Y7afzee|Yl1QrafS2tWIgC$&C zvb&@GooNC>LjEAk!{+IHa4@XHM3#H9ZHf2;@#n42bm^cIzN2|j5*^ln0TWC%+Wo2a z@E>^qp*&C=3MCMzHw1p8H!*8+P1Dnb>R!-gECc#gs&x@Gt$km&%ilcaG97LOKn?48urWA| zeU*i9GGI6%J(khZ+zbFodQA8E&9-CJUTE5@9$3T%X3~m^<|A~H-qD_dZrxh`zki&? zU=VCM!H<~DCGh#?ZTv$O*wgqFzD~bKR^`T2x#I9iVH^27cigvTT`svwouZx6V|&aN z3Ez<84R7Fp2o#7uj~CWA%}2HNQ!j{6|8eV7&uu@U1x-AzYvt2#64ZT}%pD&@=N5rq z9~~aX_#re@+pIV`(9_dHD}iEDro+FR@hvA-B#eCia%tJqrlJ4e-m8b6q6>_PbO^FC(!eFo0HGd4_aBp zJl+@zd?-Lw8upVN9pK_ScXCy^kuL{{>d-Wp%WEq%O&y{_ISpfo)Pl^!dC=mfiYhoZ zAdnT$T2c;pW_VU`uU$^jBN-9W$L8O18XCtmSWNpQ6H)pydy036*Qs* zm#{k^T86^@((g5zZ6S;{!rk{owU)K?U)C+#_fVRAg#;SLxoDB*f89TWsA<-q)uS`0 zrl4S*)L&NHHH9Mr73h!7-p;jGXbPurhcP+sNL+ec#k3#Es+MtxeNh2W+YNm)J71xM z3HZ3YfmOR!WH?t(paR@`AntDa$J>blE^**IOkvf6I?BM4){SAgxkBiVf^ua?bYhq# z?5TQ}T9<#6xOAu4X~z-x1AS3lT~c6pJaoc;`~o+JOiw{Y1s3=ruC9^`*9f(FXi4PJ zjdZ!~xAwpY0Ox7v`>LTB-lU7fd!&k$| z8-KTLdH3TCo>KAS{fu$h^;6lCoK*N2z* zq^;qI+iBK&qFeH8`z2l;R#u@BbG9!NIHrKzu<%Vo@dc3DyJ`;dKi`7{(?(LW%dtm8vre!jLz@z0w{%T|5a{1~740QI2) z7GEnDm!eBF&$*b;G@R{+L^EfDKu<_@0ip67sXBf6=tk?0J1Jr{2@T+7j0r*8lK4JFVz7p|#;c+A$*(%+N!p>dF|1gK;RpOKJ}$xw792Ch!71I~I?Eu*7~o;%Yu6bnG!T8b|cQ=TYLYr&|M z2JAD|ipuj+Lru_tpF#2oIq;G*(s zV4WX2wA1|9F%5J)7mZ-(u-zuNWC;Yds5QB6K4EjmTmud1aOsFt9=Z+Fpy9{QuV&WN z>>RtJugV|SiKle{RerYi$CaxwwYg~e8hQ4N6q(^!jr|Ef(@pfwNW;GPZ#mflq*uK{Y+5Grp3P z1Y7#;Gvmgs$NLD`D^zK?zs9tC#UR!FfZ`D(au6V1{CTSdJWaNEz|WOaV}gD$+-$-^ z$5@VWwT>Hha#pj@P*SR@s=`%J``3hLxDTkYju$TuOrP#H%+1vd_|p3HsXJ~)Y#_n_ zbSp0}uvWhM{qr#ICpW+yle;018rP1)QT(DvpJC@^baVP)M?hAB7OAW8T;}8y7+@eQ zC&%I!!&q!tfkHBNkn@QX6HMXP!u|{)fNqnK0W)UnmV`zt};LD3+?rbFAKn+kk#k3@t6L${G#nS#{iNo0S@Y+^Hp%drM z@KeBd97y>4trZ-*Cap(`jmH{-3O89kD?+Eldf+{@bz$|Oan;j2EG)V+)d!zH-_J_A zRw2c`%+;B(C2$%~h;fr>Q;fbry}*WGo^a%$8;56#5`HWOiFnL8oSiF&gaysv?fVfj zv8kyC?t|OEXqZ|+f{okPDF36;z1*hEX9EKVD?S%-Q(&H7Z}sy0=qhS+)%%lidK(7^ zw^Vg;=eD^fSKN8L=xy`~nx~9c`89pnn4gD($OI zLv8SPAKVF`Dv*l=5>(Y@F0Y3$T|z0mTDKktkv^N>&fXqoXB=aKlDCEo4a0#Sz{x#@ zG#u*OgqMRdKu55Rg(-0puaH3;$HpI?r>DorC9mhx^7+=$KEySFTTe2!IFL1mfUbkH0S*<%d(%GjLa4~g zPi=kn9k&T=g#eg|&ZE!c7x2f4q>s&LV{ZF0oi)obYWE`ow?++Ph)XbG>rPh1AK)xw znO^b%6EA=Ha&^k*>D7BKCwdsn&0+A#%L)rVz~{HSSazUYdPV+OuLT4(0k{AsckKkG zsQyD3#sPnr6iA74OdR6H$9e;~T^O8!@D5(lClY;y1*x;QK#8fx#>Q6N1|v02KQ_e< zz=3RGU!b)yL8@D}eZ3i5dOtPtQfelqq(IrK00?~bD(hI`VR?CZh{5F?A&(#|s%G3F z=&MDF%q48Zl^nb_KRY{g|G3W2t?)+k3^LNww%lEy|AbeG%G~isSgr&rGii4%WxpBd zTn=3UBj*l-85CK7h+-boalgZc#|q%5u>#uE9Hj05L1h@9QK;~nm^{T9oY?i7aIxd$ z;*wLEf@od(V2L8;hZvNsPriLibUVWj23+17bVmXy;s0<496opx3kwVL^nYmS9`0L& z$6h(DcKFAa1}`?zcs)W=%A_p9cEM^z+h;`eeuv4xB^iOO%@*G^>qjl^5MP_ zH@raM=Oi66Gi$7Qi_X2>-=~wXZ20^NsHRp_un!ZT`4RQPF4$3RQ>;@9p)c7m-DfzP zfHlJJyngkn5(zx;W&3N&ZDgw!F0NWM6HG>em*Wg(YMI4*b+*|&>chv7uTux)6-hUy|!qqMbdt8er)WRnyAY|@Q>&5F)O0} z8orcH8eRwYks_5lpFfXQk4j157<+r`kH3M>FL!U88cb=A$f;UvY*ocr-WhkFgF($DzY#u(NIxY#RI@&tMoM3 zH*7ATy5pb(eiVe;m4$gHC@3^F`Bw6ga_dUF3k%0MJXy^DT{elr6ECx|myJ4#_ zi(e;gni4DbG-{dno1Qqi@JN*S!!b48fvb0NB|S5fq<$;*mlSvU*YMglA?w-b6M-KL z4zN>=%;N0Lz6BVVfu|%!n;beo#)BqB12?|FW9aX>sH>}Epr@Z@BlO6=JQA33Bb|30eo$@Ax%=;<*K z=CQ4F9i|YfDDVA&eW0yiQ|(3G%Js5`I-LH8qv=y%&EC`ZkwrRO+`5%5-PPLrfgdHP zy$bexC^|Cnk98b9Xl0*0d5~B{i@O#R5M~E%ZyA&K;@3VLjKdB5-f{PU!99*sQ?0Rx z>T(+#MCIiA`ulwm!mIZ`1sXb!S%TFEZ9&}Iz-LA!#-@JI+v(yl9y%qm?^HtFZEgC> z4VR3PA(=k+;f22Q=VzS{bBR$uIIQ@=#4||ri!31MdK5eaRf;Z2=u_opoge1-7a#2!JZu08TIzGNUeUpc-oiPIaF+oOkrNyH1U%alsieU7 zC};Ydx7h#Y?>^>0K?&IrP}kiXDoNO7%mml#gwnlr4ulMSeJr^&ex2L_Dy+>~h0kC# z1Kaxt7Y^&PqLQfP9pl!fxl!mR5hJe9><0LW)c1twbxFeE|@*86rH;#a(ZJ zKf(!DR|0Oou#TZOYsb#H;+Mm@Pk)2`UgBkYKW?+F9YUxLa-7%x`q1^I!M!E?T6?G! zB`>v`>AkW8+o@j|63H;mO)m?vU<<;tDG;6LIC^1Aj0wsz-pVCMhu%eXH_Sm=5Qs?u z{RPy7CKX$gmtDB}ZSK8f#~aJx_Jc-B{4Yn9|qbmT9hY#(%)qJDu$-vu)eE zz(Qv%L_1h<@!s!8Dm}P}Uqn1_I?rmnm*@8Y=%1$tGuf01xNzn-HHm*7-_xbvPHM$> z2ixr7;K0hye?Na0e~u6wQ+At?V>D=#`gBZ!G`BdqrcsKX$A|Z#(Qd_&NJ~p|4Zc(e zhy;<+0bV zjm{@;#)4(ZIbKBL4Gz55O=~zZ@%q;MDkv3nGd&OH@06R{4>&DOGQli^)QX!fN8$ba z{N4~QmYvAL79;zm}N2R!oZ&lmk(a!eaHI|x|h9c}F&7?`DYmcGh( zD+-^}$jkwcF#D*LmpVa%n=r?V=(K(0D_Qe4K7+{6)yC2vHJH!_SSo%CwdUgH=4NAy zP^ZnM`LPeZeB4J^cL@q=hgjUf$}|0EOcuHFhGxUMM3nDC3=IuIWMT43_)l7)w>X4w z-A4M*%u5~GFKtal-1Df|;2FGWw3l&&s%vUsnfx%E?N-aSk@oh2a2gh9=Za0ez02Uw zj62mUx=HwhfdjlSvAW2%cMLrV%5TFb#(yK-P$t|Z@FA{%CHw7(Q>X6M?Hs2|M>a8i z9UNMD2k-~VFo@C><{Pz0NMvTFrzgadWbpg#Xd6YP4}DX3jt3+?dwao(PiA)zUs}&o zniE!h)j4RU<@DpEX1(i@{tmfo?|JzO!HBDG5fH)nL*-M_nhg!hM)pSPm-kqa_57TO z*ksoN7a+c*d-ymMh)=7lt2cMpQ!EHbTyYR4f9;N4f;!a_j!yMu0pn~H4^PjKuQPkc z>~|QJ<+?^7HG+R{(oWe{MngGfQxrYC3Y~ThtAQ}_^72C7LRdIeNIwUPo_vMoz&LCp z0(0yxqr`4GLZs^0PB0@&`+exH_N@U!Ek7w`1~vLoUAWO zT&$g-+=Kri_0MF>=|;`Ue|?VCZ#Cig9Xb^R`NM)46RacA-5MPkiRJ<=>X#c?l?vFi z8&Ry~;N~`_=AaYEF_?m%F@z6Vs1SO6O15+Ad-Gc3ye5Q=_togmXUp_>Ka zriHa+R{{*`u!!G64YvuFCr4Y0b!c9 z{fTzJ)lQF*3cB#d>{mACJc%l-__?ae$}EMGOy6sc_+X6u5Il{yY0*(jtrlT89nc7`H=JbqFJ8v$M%o zS@fPm#OHMK_VFeSz8E59<8ZEs-@VbfO{;Qt*p>#Z`NS)0Z<@b&ivR;~)xM-`-F&)9I1CF}{pT z!sGj0lahmaLxx&(0EXvKW}8ltmZVU52j_dZZqWE~Dhu6lnX>;k?tI$DRnF`lxBEaz zN<_ql7%4MLyXCK6gOEl7n&MMmyc%X4v5pf?QK$de%F?pmirk}78w_WuT@!`NgQmww z1!ih)Ar;$-LAO-&e=w96yOLIs6&nkRc);NH^FQpso!r_gx)&D6>wkVfVZ6YpN1}rn z1T11szaW39j{c&+vETU6O?b=mLm_aig!3t6?2Q!bz*q^JwRF`nv;H0^738@2(V56G zK=n3Vgjp$(FB-GtwtHd5vb&?BZozIdjw04x!(c#5H1@&icm@@+MRqk};&E>rveMtE zL?Gs{OjI(g9;(+Cxrp*(b0`x76B8e_LJI=3*L((spdG`peg}bm$wBF5M#lUciI1?M zErNq7*ugU1z6&$Ko3jTR{juZFe?)GX?t7t7%%9CfZET%(WNizY_{QQJU;)l8Z& z0z1Fgzzh5k&K_dG$4?Zr9E2^eSF|WwqL)s;RgKmK##_G-#<2gQX>XT>hf}zS+41yq z`evoMG44=M_&J@lA5Fcn^Dgf04C^^9H*ef9d5j@vxci{6JLm-u*WPok+WkZ8q4cN- zYJwse)0Vi5<8`?BK$NEll0SxrLdc#yO5|~|W2TZ5vM9n;K~C=beAW2o?Z<{tREOER zl%yox{=15(a)rCWzb-+Y_67N)8n5>-`A|gw$MNCEY?|UD(GQ&2AppXr+_W z)64t%q71m>)9&C>fD#9H>xl&nS5N~PGDNmTQ*9A_m+-(2C`=7u%-$rlEr$E&WgJ5A zqlB`=k2!e)%#@kttU>OrTa>%#@7rxir;|F0s}u|ZOt5xCO;e%RY&!8%S!k>ES9rdy}m|=Q~xGymPBn->bx2qK5B#35u~2GWn>sh zn?;JckQicBZoxe=q>J|K9rQc8gs$MsK&uo_Aj1`G0K0J%k!i-YufVho0580fE$dmD zfKN7s&fbLBSP*p7dL+qBzAGb@r%c)}f27){GN^r3_N!L`fOiJd6`;nZ&c(0m;KEaf`Y+IYm|Ge99}~j;JTNKV0sysn^tqJbQIj zT*(|ge3lLeXo7ujT$&>7=IA}b( z5*y4NODJBq0W-?WSarA`vds+wIu( zpgQ#NrUJc&WB*iW)w(YcdfWa@x|lAc;UZIe)6pT0ZX`cue;id!g5Gq7=KNgm9q2Nx zJ}^C63cjm6W@KIExzR>lvHfP&o#RrRMcl&D;qDt=E3(1>xjZfHh_NyKf`DNXFagwA zhWCVT@A0+hJ3*KJRma~@THC_q7>OLb5N16GgAiRXLvC9MS`6sw74&n+SE`SWapwO0 zQ952lRw4C;1@kBy14r@Xu!!GZa!)qx*p=~*(TE^P0Nn;6l(O=<-!+mpcAhq^W5CYDwV zoBMz13T^H{oHOl}owB|gW=oB&|6)}hWx^VC!K`}M@8y?hsqDQ*G=kl?%}mr|x4dh8 z7G*E1b6nT{z5vI(5^HbL>|eu)mNh;zHjxf=L1KdL6Ja-{UR!;Itterr2|yvA+yMm^ zlWRJVG4xr1fRxp5dj&6CSck#miIXQ=0wyUCs~Z1YOw2FJ6X?Zob6hSg{-WN~h%M&i$2pr3@6jl0&8cEQ^u0klvN9!& z6bGo!U=+O;#DuM!8R|0Hoo67(D(Evqn+nS@8kf98eBUZ8th2Ki@vGH4FGfb97EOns ztINajj7;#1tqafHk}|)zw9yZAGOk&>&bysB5jn#g)f{z7CX92Un=8W1@&ASLF6<-~ zRzmahQ}A}^Q^x9O6x?Dgw$Icw_-}b%O>=b`l7g#A zN%k!;{6jxS_pYf>g_G0w+hJn#54C@xudD2{6DFtl@$+-TXYkuZ<|}NNhO-6OTz28O zfW&2LY3?ut2~Aa{XlKkiApFSK$8qkD0(g+Vl`{1+ul1CU=D=YbU8d32_qump;A3g_07d)5Ob-iIkL; z#l%~SEA^zaGsJtWu)u!KrxwfcID6=D|-(QMvm6* zZpLIT4>&WtE!HPH+0%K1q#e)1Vfs-zyyY9bkfF!(tDFt%?bs_NkH`jH4MOExroCry zKs55`MyBCzzVzjbb&Zecfa`%EPmX23V;(J8yrWp4!Ec+5HlrMS?$71ENt?SqHV zrD)PUki(tia;iji@ovs8%-5S_DuWE(XK8l}TLX85#<4O7s;nATL3w%B@K-yeWq4dZ zLyfgaafoT(GxO~nbXka?+QZs;I}e**0@Hf~iC~uD%c4Ym{PDZ(5D6s%jj0@G)u!2S zS>O}6*|_)V=MdxZcT>34gV#!Z-7VVsw9oeoAloO!#$qNDm2I4Z&a@k&kF2utW*^q) z$36($%^pzp`Wb$M)3)2Vv3O@>vH#+Zr`y%lZ%pjL}NBqpD$MFx@K{PR=97% zTq$1l%*CT57AmvtNK2Z|>{X9xkO6z_WpRX_fdNV;VoZ17hW$CA&!3*WFQ8`OIIYR} zB&U4jE}zh0N3-%pMp479)v=RpcPOzUoFAw!8y{&+Q@~9b+p{p3yDc7>1rwM2EvN>G z)|H{s9GI3OvSk@I0aXZo(c0I?<4;c&Y`ZInO3*E#F}lY=S5xm^J8`98HVx|@(PHfu zynCYOVo@?aZ{8(t>22Gd_4L4(=T71E!l-5NZC+dYxES@-4%lj>sr+Hs_T_c zrvQ^cUX-C0hN>!Tv%kPN93mO$eiZ!GsF(p!l$|`in%}=GKg^u@u)5jJ^th-Yv)0M7 z9KNfE93>_MYXv($gho$@lgm0=UgcIKUePI{!^F2K@4#m7nS?Gk8Kiv??ljRWOyeZp z%{Obko`r2x?^y_6X9%%o-6fY>XF}uW=U0DH#7BqGjq%HH+p~A$4`Q}iZ2o$|TEj=j zKj``jtaxbym%n&a50IaAZ|q6#gq=|(!UkGFYM?(J z!=>RuzlEfBwjkZ{mu1k;gfV~?sqBanrCH{`*k0=F@|&Lj10F0w62+V zheprmIJRt6SAF!T=4$8`K`En+-20vhCdfA_1phLW@xMr7IMeI*pHCgm{S#5WLyuHe zQI=jYN7G4F-!OdpLPdF1Jc$&wye4=eGGu^r`qT;ETPde@I?1^YY$YY@2M7N`b^;8K z+dyTl8ktATEg1M{@ajW%cfL1U8?|DPZC@bvPweaLr0wT86QLmL-}hBnm0>GUj2>DL zcnzx~=#74UD7>ljC&CGOki~hhB9IXczcAy(N@cjsou{*AxIWRHk}jzoZv6LEE}@!y7h11%k|+#aV4d7FRi zh{u!fPgEN33pvR_R1*~R6G%ek)W|a2`t2~EYI+au=Ig&%7cAJJc^>H`#B@GQ+lbaFLY7;ItSk^Wef6?EsxN~O>;q9Q-N$XIA4e7-8 z#{^X5iKi;#!5bcH6`{bLFvZpUd|&LwfvU2y4{%>TvkFeb(qR#}JTF<`Da5~2@+^8h z5|!)Q_33rsiZ%lsa~8Xt5g}Z|6=|}r!rCT;hs19NDmB+jepGMT?R$~7n`2n8%#)XHwmgtBCQi-49ZhoG2b>%?ZVM;A)URAHqn(O)bPN+wG zcqs_Od}7vEYU=FAkDx*uecq4Q<(6;WV&TYTEun2zm8~axtUCKApWvA0$?nv!qg1GE za`Ku?=@F6V#Q{g=ipq19R*lzrzFv9L)$VqB#&#y>L_()@)PLWeiI3-7c*m=_&z{Ai zfA_BBagz4vhv}(ElIM5jTG=itF`i2z_D8OjI)_C^)BG;bg-b<=7qm&*H}8edPO#I~ z70GoPog7^Gn9?>j@HN#bM*~a{oI{5&;HpSy`O`E?WRvVfKQ{~6HPjyzgXB4}!I5hb zGmPN{RG}V3yZfZ^BH)#(wDc!PAm;k=XpTu$KE8SLIKGkAna0CwSaR58({h)g9FBUg z*A+-KlWhaA=<)+r`o>;8A63uML83I))fHDSjT>SfE)LFOz0_V@P^P-@`0nt1)b-;j z`SL2Jx%F0p`zpx+Y(y-eu(wgZ8`4W0fk+$yX}zb4ue|u39QaC%XjHbyOpHEsFI>7& z!_{4n!k5@;w$^j`IAyQ7r1YpLUKoe)8z}mBn-U)Lok@<*x7^ZJWHe z9n_3J3Ia(V=T;ow55L}i@80r9N^}VtT9VyWpJUjoO4#V={O@y?-MLxbznx+2)5M52 zDMbjxiyy$<5Yg-QAe1$nheq)i-Y@E?0jy}C0h4Sav2K5hS~0Zm{2oLfdjg081INV= z2=!oO1WHPzOUuhqU)pMH^!Y3(!`@R@IHfrLPjlZLh;`eBoxNv?tWbokJKPD`gj7~W z*@Q$95m7c}hfp#?(Lzx~R#HhqWV9$5MMDS;-|}cKPm}i{+PpoR(@tb>L~S3DpJ{XzidTK)r_?vfu~qxN_L3 zWs`gy9AP)s7em$uOlLq6bVoEVcbYk8b~3ZEz{@L-aEC_o9#WodpM=Y` zv+NIQOgp4;pA9;cpTHmycXP3B`9s#ZIOrjQW*finX9mb<4Ihxf%DZw$f2rPHLizmS z53@1dgoJqhohjF1PxC*LVXBmnkx>hrTB|Q|o*2gA{s!s$gpqT25z*yGe;FtVfYyv{ zRoeAeID`G>x5JW8oDz9 z1P|n($`O1P=Q2OZuqjaH#J%wU&-3?(G`UX$e_WyEIWU(;zxGa(0i#9Lp6 zCkE-&QE5>-Z@S2nbLyIgY9c`gVv0GmXU!78 zh+v#@M8R=vO@#+2D7w#t7KSj^);3P<91~$la(EJ(eZ&-n6zM;V)f{SEKJV`NSB zWR_c>QKZ|rp}w%FfQz4gSNO1e$%ItH&y%bNB2I;>@rIuj05jU*!J|jItA*|J)QnFY z2|+Ld8j5tb>owBBsA77=F9Z5y!jF+0``Vn$_2buKw0M zQt;wgXbBUon$6fYEgpk82@Q#6=Z*5&5-GkeN#1>Uff-PDz1KvWVa`LcDYdEsPj2uO zLvuAOI6w92jUA2v)_HtvpgzG06IXfY|QWTVBVDh{HZaj zGnMwt>C^a6E-y5&v&^1IO4_n|s1W6g2)@@C?}Zt14N))W2d|rb?~Se-amx*%z3H$Z zQSjRwv`I^qg<49CINC4wHCu2uw^nSie(wD^MtKSeH>fJpm=~%gv1x0r?Q|0;2hPyotZq|Aq3z$HzanZc2TL0UQhN^#1;+qMu;>fgBd#-Ftw@c`E{` zZ{{HL%XbkH6Y`e0D{GO=4OgY%Pfy5TEe1%@45&rfbz9Lqq@49?m1K(0T`~=O&rvTP z`QnEnSlJu6xA6%1urrD}rGNw$P#=)4I+p)cSZGl5P=0x+yT~h8aP{E1WK+Mo@r}FZ z-_aZ_@8Piz3Dcw5b(X*n`iFFYGCEu&Rq>!#wC^h>Cq~LfO^ne~da=Xre_q<(W5)!r{ONW?RzN%2r;2E<$AHOxA0t8PKgft(rol2D5{AM&A zVRM)OV(-w(>y^%;V0+8@0C7^N8gMHGG){Vb>0xTqJ@BQ6yEwuDGg!zW;-1g@ z5Fk_2#Y__sq+Xu)Gi`efbb(iOcq^-^ysC7p=~#;BwLId#e2$(Xl^!O$Hi@sYN$^>@ z@qEjiA0gSfx6p8u1O$FjgrO9 zN!5g=!H(Chy)2KsWC}g!GC8;;8b2K`80U=SCzD7N6hA;4>AZJg6F7qW^1oZrL(@Kd z_+Z{2YH63yIYa5&`7C(mE$Rg9AVj@Ed7z5(27w41I(YD+-EHLs2Ch)OjGw~GcAW(S zZga4I-M#`V`{nt+z54ydkM|N9nyj#Ut(<~8&!1mk(vrz0{r^5tCYKMK_$zU=YLu@P zX$ z#&14iuWN`_SFTwitr6NF90W=c%?m}Mt$h;ZOyKmtw6yq9ytshu=UnT{fJhj)+YW+Z z)sHOg!4h0%39PaLBVQFT3yQN>{OBM&9is0IWU^i=Gtk1-w;16H;}a93x0{QK4hX8L z+&$)%?UnSGjk6I@QF3&=9Neb8r$6_0uE_>N1XjEHwi_5wbVk%>7d@5<5_J}A3^Y1% z$iL1d`2Xg=d6@-O+>S^cX3rj2_Kk?1+%A~6Ay+5zo%zc5gQ1TEUmj_`nQm2f-TCRo zO%wfhO1`F6-^pm4zBsnq!^*>|Pl4vuaaTw#^1r&bg6(HU^`9f2}*Nw81nF>BbB+4F9xc{09f z)F&_1Cnu`Qk%*|07Zcx|8f07VdTpN>LU+_ZJ7tXXl6B$Yb^g*1v-r-;vP$1R`plW# zsMmIoO`WILPkWb!W$QenoCy!49wFO@JZNoQn0~UOaSqB>Qg*dGyga)S9L+8*0uV@M zPG1pwA45BN)j-Sh1Fl;Jb)L|Zq#Y-CdE8Z&;wVx;{t_fWoFCbDQ_I1xIWO9@OQ>~N z$w8IRyDZm?%qJc{dsaRxC|yfdQR}yPb)-wGyw#XmzAhqATygLr|Mr?CmxBX8So0|# zV9Uf!o~J*r?QI_kd?>%1q*6FB@@g}XUX{dULe7Nj>E_q3gFP;ic~zt8x_Lf@=wx2p z(^<5|^0HLq=$5<{lyQkOh95IFy*9VK-)>Y3vj0U@MT>-)F2$LjTu!rwaecDseklxX zZ$eM{W5X z&`3a;*0c9W$Hgs89`SYWNiiGpEMqayB+*6z0*DTRbgmmtD4q%@ZkL6#@ya?b8BMPO zyW7che?vnojI2|$lZ7q~+L+S*(Ec99j#d6`Oa&)@9a?YN9S+`kHxF!i8*$Hm^>45i zIfSW8Ygz0^X-}y#6WP93!+X>#DzAqft^IIaJ7dfQul^c6-{#uq*Orx5dhM>dTlP@v z@KNd$TMqm1&QEw0lcpI-zUHgLcO+n+8;tah8{scF`PG7Sbb(rJUUJTx6!j!1)s)2s zTA$u}9(uE^oS$pec1k<*zcS|VM&}}n{>B_N6NLRg7#8oqcEqJK>tBtn+>~#x7_I+UKVV|8*?OhJ-gQ?WF;=CFdvf2+ z@=eGDt`$^)vTjSt&9*Avu4zzZZF5PR>*f&&c`P%;={F>+89uv&m#paFp$xAEYJFtX zKbwM$tMS3z>eqKd=z0GKY`+Gn#)8sovu+6|_}{)Ba`M>Ec#~G1Nq*ywn|`%P^Vw%3HGC%EHdc^QMUp(w zbEl`f$%y0Ac^Sd09GwMU-97@I-~LzJ#}$6>`>{s(UDUtdI>IB3<9Z1@*~8{J03yUp zDCAx0Ye8gQ(Cn#r{^hs6--;@xMT|VClW*SJwe}y2>9ZCWxPiJrypYz?GWII!C5!w8 zn)^j;SwbE`QPmOjU>25B*Sc%+F=PUj?b%wm<)?eQGw*34^FVvCHi7IxGR-gkHx#wz z#h?j+14I{-6jM@p<&A)eaVm;!TKbxUih7iGNB=rBT`a$V+o~Q=yuYMne`}WuYa{Z^ zzsfz=S8h~O%jp(lNXgEwMa{Z)#ofsJJ$*=pI;9>_2QIrQ`=>&4oHpqqk#{}EZIBXD z2aBf!RM8Wm0u8MclYB^aEBD9N{P-@s@2zC<0(Ti0CL!h8zC zln5rkE8GhvU}H!$-GvdM+BXkYq17+Z@7NaZO(2|^nVT!1Jq-LB?PssR2?NOUMuI*F z8VQ{zLCV`X0_Gi%0%rfzLNQLYlz~wr2GySP z=)XyL39jBrG=p4NGlmXqorjPI9^3T`;OQ&oB<8K-XRS!=FZq+lF307*T)_>9HMiFl6FqF97?2-0jirIh#00J9s#Dw z%N(c=7HnZt70}$FfMR7DbU?zde*i81jR6bQ-wWlSkK6!NlGl?41$w7WojR->p5w05 zohi+47LG8~(6Tn~?&gzL$-YSqlI&cL=?Z$5lb zLp-Wl>4>r;{l~)xaY!k{jH7`uJn>>skOOrgQ#J4)YW;uhgdqyEkbTH|^?Gb>aq=v~ zVI#|L4c8xtNL2QmK36;uCq*BgY|Pu)QRu`JP7YqH8!l4B;ZbUSIX_Lv>B<$IU7Dtv z>RV$OO}FY_&U&{+I$`nIreilZx{V}0VBRqL{Oi}Y)X|q;rF`8sjBc*as`lNn&ygD7 z)V3S-p(gM7@B1EiqxE9eOx}>K62R)30u^cOpgTmx#~h<+2Qq~Tf`yzM_`O8xa;){$ zEBhOkG5`9*hTY!@3Lt9wF{{MfouhZ`+I1QeV!`M7o<5nL+M`T2W%D{qlTVwykQo9R z1a-C`wlS34Ld~{XEt}-52Y4L~SmPT4^PX->9_4(@Jirq!w1}dy(}4r_R#y7lLbOx^ zJlg2bMRRJG$-jSX18yNYX**1slQsC9QKD%F|6T3KY`jb|1-v5dC}@t{wn9gsY&nz_ zHoAph2MZZq#0=1|f`T_VdgGK!e;L=%&;Z!^iODKsd^6lF?hqkZvQ9?_6-8)6VEAJ5 z4(_F;Jw~S$-nqdR4k{|Icxe>OpMvG7EXf9a-HDMA*T^&)b17JrpsO7%?9}ryfFY}I z-5PoOwv#3{ER5W;5@kq=H7Sz=Lk&0<<2zzpj36*Pu-ZQ_L70Au4beCB3H?@(R6ANS zozV`67Bs&VnmS8Aef%tdjV%epk1m?nA$%4;I5^M)HWOdrM-g7TjChr!=rlw@0w18? z(PFh0#5wd`;{)tM$OLWX!? zou?D%xDpZyO%$QUt1LiAs#SYj?3&ZW5wQM(_WgDW_*< z?#jpYQ+mbQf_dV2;J_l9EAgZg#NW7BiGAr8uq~gd_UdpEA1;BU?Hl^=#>JgJ;h7V$e&7`Xy2C7ZqxVyAY^rK% z&;pPtqrog#L3(Ok<1c-cAb7Edg!KP5N! zI&Fp*fDBkcLowWZ&em+-k6U003{T_!q5iOrEBx{=Yg zqp3-Oho>Fj*#R0Q zPW-~CD#Qiu+@bQ_yb-Ir2ia<{nsF>Pg<u|Iv@a*0X(NsD1@#Bsy94%NtI!fJibaZ$& zK`dR$2N*@JOT#7QN0-2^owGQj-qCXSE&A9n(GS^`AB6}NmPtk#_3Xw2Ip{b@QAJC@ z6TH_kw|rH8WxrxvP3*`<+fX^y0iJsrr+_K&3+TGw5H`^!7dDunmkrG^+Q-tG1<){0 z!thFH8vKw-i$VN&;r#h7lgJR9NJ47|eGE&-?=YPgvtuYs7FzYAA|pF!zITD}2&ywN z{!peP5flW-u&ReFq{(RX(Rsxm0ME7@T1(0&K4A$>%V1cL#{-Eu&ooCPD5dIh_VEI* zoI?Xn__#PEA)SML(JP5B%s6!l=dBm}!2Ai^lCaYa_P0Xqb5sLOQ2_<#q>E;k_w0l< zDyC=EEw!2XD@Y&45rqZ?DGTUU!Dl%xTQ$J*2{ea+zP|66V_LvuN2`G0tRw;5!?;36 zOwG*TR&i++VYH}f_wx}Q01&MM>C-lEJ*o!`Y;5Y7X>MyQ$SSBxpA-ZW;TNU{F#%BT z3nT6bUxts`jCMNgOmw*sx6pT7Rk?=uH;9S8WA>xVuYl`oVPz$5_u29>D+AsR*q?80 zdm%X#1f%V@Vu-$iv`G$BDje1)CXx1dm9%o+eD5(=QXzMf?|JsHjg`<50H5*Pu3K`L z>;Y*c9D`08PIQI6c=^(9@tZC)j?|`Q2R=DS5%ZpLLnMfYDXuJsv4leeR$OM7E(sd2 z5O*26?yEq{=e7?PHvfh$JWSR83^~MY=vRS|0n)~b@^S`NR!j{)XS~JJ`RLK39e2

    p%%I{M;(AR%Rp|GEEcSNW*1?O=W$Lbk?P5K{CP;jA%S1nLCUAof9i0KK~s z*-kq=pr0GEFn$5e1p9lho}F{V?CsJHV(w2=tgG1eY@XGtarWyp_);05H9P;I<|E$7 z?}s3Dh|!1Zhs+JdlyzbrhPN0ycOQCWZ$5~cScG5=%w)vp27jCexF@dV%Mn_!9zy*p z@@g~L0wbymxGkS3`HsY=a5_1A9I?8&Utlj~BZNGXm)|I6!+5v%v^7Frr~)02ilXsk zx-fR~G{KoPFX1d#mX(z?)j^5)Juwwcgr<7`+VAihORI$D2}Zzg7SL6qA7H!$K?GNn1b@L=3rZVa5zN1j8riVw`Iks&pU+TMj)L8WP z)R(LXpqEJZ(^5Nt5%F~W5DvO*Ow8X#@)p5ZsQ2f5ebGeO};$O>oD@eT+;Z!;jwD8xtuEyFN(h{A0=PS9Wc3AyEVmwo%T8b&?5 zeIi{PaQqE4(L6h+%QTgKE~TqQVVano+~xA&d9_YqvjF1NwnvXx{2|o&12`oyhq>$p zre;i;WRb}*G4387g!sLWaU0~m)qhNzDWBk>1^fFQDhv(|gRqL@8_wd2ae-O?$qqD- zpNK4QnwQ>J&ieXbW(EeFo;9>)rFNSgZ>XR~z#t|nnsOg;q}tpdRoVKE(~$guDw;U- zxrB^>t)`W#3*N`H1{2aheLRGX_Z|(o^sww1<)Pn8!4rpmED@T#kpMidpZW1s}Y58C$A_j!05I>;&@RLp}(9i|g~oUWd9#kPh#Pl{Rk%J}$r z%oBvuq9L3Xucwh1dJP_hUk z51&eEJ2*Jte8h6BL3B4XIOvTLizsfkK$Qar4X=9*aeruQ)iL=AA$>j*dm`~h5Taw( z=-OI`J>|n7fsALg;@4!3fr(yqyXv`sHwM7;*_J!$_V3!`jVr3CIEfMSa5Z2>ncfaM zBr98r0;wN9A6BH0bs&=&-P--AKqD^x>kH6gb~|N?@ut==rXayA3)t~@IS6zA-0VHL ztp5kjhXc`%xo2NGh35onuWQ>kLpTt(Jo&&71_9w6THnt3|XU zw``!#_icI%29q||p9MkG4FHhtPWC(J&VK6SR=6vifW({-nvobRS4Uy;<cc)e3}2`E=04C zuy{hVK}cRc_1j~bPIz9SjO$yPt*orNFI%S~_FU!}&ni5XhfW2UN&;I)Ih^(}9 zLNi3HXJLab?bkkw9-C_dJUsNeE_~{I+M!6fzAY>ub?qp%S7+bw$dbc}w}KQ&akS}6 zOY6z>^tW%`Xg}Ssg*g{j3x@oOiEZPT7MF);Q37of9YEUL_m^GceF@2xaZ0;ihbUe| zLBagXgF*UxxIkG5u%UjVEJ;pE%pf4r1Shc#HW07qD5Cva zp#lH=Mf8gydqPl3#%E<07Z;h3@0cAp}khA4gB>f%+eM+@F}fUME7^WzUney{aIR zfm_OaY-<#erZr@5@@;{H&6fG7Z`QbEj>|sW%O@Klo`g)D--?vg?#}mp-$Fjp-=9zo zux*g|^L+NLz~P0yOqEOCN7}!flXFDq7A09PCV8q1k*%6c?^j$f==^3U9%TG`1$Qzq zWi1{mhsv!&grdRTy^Pc)N-{Q8%L>N9;-9{hst7J)aBwh$EypPZ|FH+FGSwkIe%0=_ zA-5bvhqX|>-@IAm{u!D`Pw>m|hnnAi{6H(vn0S)+pKWPF+s#sD(@*UgpTomZD3ZC! zSM0|-mt=qlU*Gp8B~H=*y*Oeiumq`rt6r zahwu)l{Pc=e$NS*Wu&kO6APKw^s-PT1decnbgEiX9YRI=lvkFK~plp5%F2zMfQ4#RhMGzqgg&UNw`ysUL zPESQleF*P@V3XD}9Pj!s?J7V`BJU$g2f6Ia)D$8VKPUs{?`R)vTk0%-oJopEoTB`5 zCQpDZgJw#ZjNCU5S~RYxF|baKubO_vanGD3{+8z19O-Z^HRevU`{=zMoSYB^3Uj4$)m6E#MVKd4(>V6r;yT*bJeP>^z@w=aKl~- z^$w_qAtKe{n6M}@-2>~5K0}0=p@`G=RD#u%Rjxo#fZuk}@JjOH(#od|EU_JA+sH;bqC2O)gmQCFE&1K41=F z*xLGLyx@I%_Xd9bU@J`djD7y`v7c1Oz9LRf!FUZc)0qb0zI8}>D_L4vX4XepP#>nj ztoLJpg#b^i#(YRP&l1MqhN6U`3m2dd5cThM0b2yZ=$FPlS5}T)PV`bS9X;`A(IK%s zrF>wwdT*VUqI*wcO+%}d_@9W1Y zXaCq$aqp>N1MD;kB^@-i4Kc*(Z~E@r67oUu=6k8mjH7$#edl#-uAg<@Jr?%CT;(dX zShBK8jP3Rs(Sw>9w_|8s=(&{CuMa*D4SAE3wg$&DGJ0V;h3615K_9h|15iU~WLN^% ziWTgemVbRLid*mdw)F-mzJ6&Tf4m?gn%UM79yM|BPD{(Z#N6+VI;}0UF&`7&E3Mkk zAsBHyl15=>T}oO~J$G;R3OUlOdb!_)(lnqqP`YqHZ03@Y-Bb@a6XVB_N2Xu-_E`5J zP%{IX>KIGDh#1;vh+GbZu>ke0EB$q`5`x z#_G~tj2qqG_b%khGTN_3j2GbJ!*R6U;A~Tp_*^9kU30F;M_^n3JP0RJJcvT?gnrH@-)I?!m48-mAN(23 zIjRD0In+EoA=PRYE>_}k>J*tQ;qZEnBs;(DEr1lHa9*CCxDkX3f$MCKrG4Px!yPjf zu3)CZX5<&V)m#*0W~}pK#?&zMtDGxn`)ztc_rLK5-xqDB*O_wwK`Njd2C^oFOc-XD zArq47_HD}184ZkeIdw}LR_W{Ywd;LCO4M!ppiWs9%ao!MlvGr33wJr9t|dkbig(X8 z$QtB{2~}+S<^jlJ04sGua}nx|nkL!>tkrMmil=IxziS zJbX~M>X0xcSSpAh3UV8JsaBKE8(%dWpL|#3f7XzNOgnR%e{;U{3tQ{^l7mor!EzgJ zp-BoHcnExH)@r3B}W%`R{DDV{gEl$YrvYyX|Y zh5j^h+cX(t%30>0L}Bw9(N-3bKtoF_nMS5PrKfhBA}*ZJThzLEyxuL+nmuS)zeo)N zY~Vto&p^TajOO+CS8kq?wP!ula9iId?3MXD#t{(~_uN3gOqxDQB2X4+5q51jm>;se zdpY7RAj2VQn~keZ?u&NpeTJ-9letGYlTMnE3P5zKCrQLxbERj z7NaWB7^yD@XHTr+E=V{*0jZpD?qEo=jZuo?I7fBiFf(!l1bhv66=IoRnE(bK)d^5{ zZ-1fz>tmfR<6G0$05GB%A>p$;oUwvr+h|irF)5$KdVSe$A|=VYqtu;D0Ti8J=#%Tb zetx+-7I+2GB=DhsDRa?yyqMUv?1N{l1EWi;Q<#TG_7riJ0f1|0N>T>I+W@K2Jo3EV!#QY5n^`9)w--;S^mI!O;>p%CX}vKed?MXxNc$ovd_ovQt8W7?$3r_q}iK36uXxoXeW3% z`z8so``p}N<%bcG~2#y^!8sRe2u`?oPP&ZYp2w)^Hj>Gpm5SW9nSyCGs-y3hTl zkMBJ?wsG4BwI@AjBl#-0EV!WdIKwDPP|9z>eYk9tmfluXv(W&-AdGMS({-0TmbRCf z#4g#~GTpAL_L^(EV=X3JB^3&3RoC4R8%y1|BB)ffG~{27<2AF=(eHCZZ`7BstJHiW zqQCHd>NA~|x81JSEpK+4%MX5HNa=_W5Bq-Sr0CYXdAyq9s?a%U&*PjXj;qY$%-1*- z8uqyEWC@T?-1pD#Z_~})&O!e*SiR>w!I$kS-@8YqwY z9ct^|F%0lH37N+x+#ax@ek1TQ=j>sMYE~O_^R%d_yQuIO2(U{5bBt=SSv$<)U4t|_ zWfEFs#pHkwHrFoQsD8I=iudXDUip6+8Xww<%F1nn3TR5EeXRR-Rm*dtXGDbOqn^n9DGP+Jda^6q0i2rx<)khUDIO8=@-zzd zkokGu^h?lekn6vU`TURK>tEHm%N58Zi`&CV@2=S7CYZQ6K=MO&_YFb|S4e2tJ6WqT zjmqQ(c!0 zwR1JJ%}4EoYU3h=*$%vOSObaJuC6H@EXK)$DYSg49x^vb(!JNY3;uJH;yYfJQXRUg zcQ0?dp5e;OUj#ZgplE;+By4wnS|NwD zZ%SIiUibgUl9-ib{GWI94ZSWT3n^#2G~|V?W@r>WVp+WT5Y<3Sb4x7eeRX$dXPmhh zW$5-;)XpiN%&yh#DfEoj0U`$%7PY?2Y;#R@wWe#~>(^e`w3&aHIp>*n-8VYb`mHT! zr-dbINX>hO+LY#PaO6+C7|^xcl#LD_@D~{DlkH6p8H~uLNw| z9QW)kR1G8_*8eE6_54f{ni;q~=NLBpAfrJmC%Kv>1 zAL2}YU=u;XTjzvBp>{5)Uqb6t-Lv9=HzAQBNPOr|2GZ2nqM&f$>B(N#%|}T8jxogB zLmf6vDp#DzR@j-{+oU%uZ>p(CrM2GuQqW{}(bf#DkTQNB<62jFVFiV5BL;VrZC}LO zxooVwq;luB0+<*tyPITc-)=K7;8+N=q21dHR8c>x5|&H1orB}6_KTW+7)D5E@34_MJZFtER`jDn1r2p6h1Ri3IPzweLx zAAd)UjB)bakl_`UjUGXMm8W|mbu3C9e;n$c9`L>@xWB{V`Od)V;Q0-Kz4UumY{;%h3vw*c`c4@@WfwX54?`3vE1x`g~tT z-LdJuVt;{Wo0L=_Jx)h_>FkA%8AGEYOHbqJJbX*Isb@`(Oyw#rE}BEzb5sr9g{mvU zfs*rf0#sf6YPIq}dXM_f-d;0tHtk8%Ao>iR@C1pUk8}&(X8reDeQ9;XiH$zj*z!w& zTFt4Mo-=KihdgF*jNLsq4w^Y?nCQxU7njpr;6JmY=YZt#gc6ye81Lg@eVJ|ld9iJw zZ?%XMW=ckH@NLL4Jny%u!l-dhczLN|9{ zOBeR~I4V9JEzJK(i?Y>^9j(54Qqm2yU!)C&L{=-oN5#_G+IrEns1=#&4vSGdyIKDC z@Gc0)*-)q|DyGYv3f=X?thP>&!pq2_mc)0*X02}ZhJU78=HiyOqXLTL*%P48j1h!g zJ6`S6j!2M5d$s-anKL($gH%;n372<^4HYD*iP)<#zVh5ZP+>4RbH{M4#bV*pUXa)x z#BX$UW^B`aC;kt-02PiY%_|AVd&_oLA1p#*g@V=!&aGaY;0g&V!Pp6Jz?{YP>(@J4 z=IJ=i?C=QL95qe6a4b{Xj^R(i=xxLU3fKKutd9e-u8ZhSK}`jxByeEwN@lrk%)WuwVJ#-{1)!V;kVv z{ihU^hOdYX13PKuKUegVO#U74w^F`Uo&vm|s}hiyXrb^oR@M}y+eZV!>K}ZsmF|bv zgrY4MF;_#(5IW$9UfGTw@Qnf4yDsUIOR8ZVww0((U2Cutm9kD)UAo3}98vKc?@ z>+91$4z)FCkd7Oc@?wG)XkAY_Evf&rTH1Zi9c~EV>we5WgIqDvh)-t-%H7GMu}Q%I z$2>}Rt{2+l+(8u|g=mc-1zDHYFd*S`yGk>WxHW!mcycl=jXHq(AE4Su5nC=hCZ2F{ z>29&-_|KN7^|lzM#jbgKjnp$@s*wu?HkWTuHVy542A0QNuEJZUeCBa;_jg)8DD3cb z);lMfk4U(?Q?gaCY(V*<7jS#lfO1UU@iFGAyv-21wMQ)&<1n?n6dyg>8Q0O$_mA>c zuyG~n*s(>7=ynVM0QE}^7@iqP=~V=FK;(g>$(rY7yF!T6r3Qs^UWh53oPhc-YM@mF z@%EAhbnjQR`=ZG_;Lst_XHLyzRN*!pzJ0~|dh~?hA@HsK3h+CT9~v0n5oXvT$j7(O z%ZsIsrU-C+VVYJ%LgVK%Sy_a5qeIV9*^tYG!IWSRJ)L|FqVNJC;Y< zw0v1?Il2XJbP%J`ygi9}N(kkD-uFfFN-nNF7!`yB z;L@DhXWxpv)Dtk}8Q~SIQyXFcfD6Jee2P)_B(oc>sHg zo`lMzwmR66Ci?2ZEQ|X}t`@SMQJ~<1@|s+K5h(WmG+&xMEh}1At*D?SW72Yi91iw5 zMZMtd8 zdkYK~&K1bu*hXe>8dCGRg(d7tVD|0DwMId7C6d4|Vs-n@)q}<-Rui%?9Tt<9e6$b^ zoe@f^dZxKfNN|jmeMgLhDU-I&RTs@29g^4(^f^#)=2MTLe2>k=^(A-CpDqTC_+N%| z7av0F)9?nEg4T8(@-ET$L6yL#?#4_YRF^SV&fX*XlxZ#@OhERl`~@8L6n;ATdD~mC z4)UZkS03N@fiatQR|?}=kwf|?EWMnUJ(rkPC#DZ^lf`Cg_c}Y9CQT!(VUO`BRHN}} zj5=qp3dVW;w+}TgyAAW3+3eqCmW-I%8VHbk2*&!2Kc!vq)!hSDDDE6T&d}EJ$(|U5 zpo4N9+p}MJ%Pzy<4astMl{al-u-_Us&2!s07gQyd>8p6rh5CHdeCs77&~{M*-eXFB zhChufJ13_TrVPM4uPr!t>dffx=Ch_if)}$_5^5W|4%37;boMctu$nh5inF!>8t0H zK;uT^4h8@m3ZKNWWl)TgAcG{>(gLcPBI+LyKbPYy*&tc1(uFb)U;zk!e{C~g|~UQE*ShzvJj-_5`i^#HPi?~P~|$U zwGWL09oP13HKjYh2tK}6%9SgV=%aBUnmP*U&(GuWw0-F4@Y#mK-wm_?EQAKtfqDh1L2XNkf+)ypn6zNqV@4( z42F`gHmV0P8so1!41?=+@&S<+8wV2R%|oUqU2CE2?l$xPge97-E!`N4y=SVELy4~K z)kW@4YlqR_lF$A8H;9=bBd+dIgCY)56H(IY@YZ+A50**|QZQ;ZYsauQ)nhwyOv ze{MFqhMa`Z?LqU;m!)=>Pg4>NC;z%(@IXf<2NZ*xbdond#G8Wu)v8zKp!!pU%nvpe zFFn36(`)}&Bl*M{@XC(v6^Ul~^U2hj>^f9`;xP{Vf0jSDL5H1MQ=#E+q5-=mJ9X!> z|KI+YUoDuYWeBn87$xyEv;^}_YMC#EZ37blR$^oit_Cp}46^kL40wc;RfJ}-qM|g$ zab2Jzm}z~>UUH%;yGocoTxg1FsS7HHM~SF19S7F(jbEEu+n5+L>zJ9? zwlTrRuP=T`#MYpl!T zSD3v-SK^y72?~x!XPeE$iRe3PcV^p8mYOw_OFA9!@+v!U&IKvP-utQR#h~-R+adHl zi*G<6#q+rFkaJJzadDmen03_%E-`=lqah-%%e)jXdrH$rAW5`twLp;HHD zG49Sq?e93!-)=MyiLVgIJa7^V89ewt#!dA4bKE<=X@PIrt2Sx(>*!U88R|D@nzT`t&5Lhh(%?ZZo*!x3_Lwm!@sb+Zle&>Ai@+GemAKAq(^cB_G{v|&O==xX zlFFMao$5c+o9F{3!$i{hgskHX7PEgKxKG>m_==eu&({j+3*bNTV@l;2kuacU@~(e{ zsUq)|zvz5LnqHcw+ZxCIZBhR{!;;vC%{tg-YhJVlmTRdRg~}t!qk-{;`5}=npWdx^ zBDtl$Y{pWTA{32X!B$JCOv}1Hqc`j=+;+;-$~lfx+p6JG=v~sjSWD__y)Ly>z(#uA zEGoN)f#_j^ojLZ$0OV#1nQv7kZdLK&?+E6Ukp$fE-%4MsABp`kh>Tov=A0BUwN)0m z+Gtpj`Kse{h!#m%B_ZeFgQk1-!Hyx~niofXm&gO$2^i9^b6&IcYa8;eC5jso(q66R zvHww-$4zutzDFPT4g3CiAxh2cKK>w)m=1-$=qwD3cNk)V&lT+lmZGm|NU5Hl+H_-< zxG`%BN`@)ix3TsYZzq2-R_DykQeG3*Lqi-A$K7*A%4 zj$jOop=)P9Rxr~>A7_whEjCyqS^u`aa z!t3l`qo3H_ed?G`h=FnE%5Y(AUEKr&7WxHm9}=#3taBLbzD(+cV`u+Xg~Gsq&xTjw zdhoHuL>L$=+jVK_=}kN_9LN(=o8Ik`L17=xVlHj@ba-^@vAS>t*ElMZ{PmNhTnmU zzC*sR+uWL0sKnrBBw6G@a`~Gz9;z3)cD*XQACz1c_LTmY^o9T2*d2Pr>Dt!qr>*q! zP7HqbIhB80ll{WyCfHkv4>13|kxQql=co`=N}b6e8vZ*Lb-t*SpqdMQ8ZA`Ema%-8 zEad0@b7l8{hzOn<+tjUF*=~_UyAS8m5)=P?_Z_JdPCMnLIN37#G3>8-II++&+S)3; zzsl>dk$7|3+S(c)%k44xv0=5UP$Syu>FMs+B!#xIx+K}SFZA<+DCRXh1qWH0?}xU< zJe}0SoX*b9t`zZJSXdCo=iue#WoOTyUhUl5+Y|C49RKs-Y_-iER?nwU|tN4JtM@ zDKby0*oUvH%T_DA6t1nH*P{yc?s|1~^#{sXiQC=3YtKoRYn-n05$(a6{Bnzxs5zoz zuowO&Gda{;Utj<07bOQrcXf5VL>Tk^`}ZF>{r>vs+_`fa`EC5CPVL{GQ&UqvsIXT{ zH^9Dro$$fSXZJ%wLV_=}q-SKPtEt_6V(ab7G!%b)xT|miVTXf@%fiAE%j=L^SXhWc z9q(_>s^)uoV)66yi)SPx+``A->XPAKpCY|^^Lb<1_28706k6$r#YE_U-aYU7tH0l& zIqvq=1k0nU@RHv8`JAIsUWlR}cR7m@yR4j?6&pl)dZ))cmVZ*^$at*p#f3xU*Ld7A zv`LYPO822}C$>|(ZG(f6e>__y1KITSroVo@ z9kVezJ$?1!`KM1&nq{_0DJhc|KmN0kYh2f{u~jdpPq>B(FtT3l45L(G+aLC#*jnh$ zKzq2Dj#PFaeOFiG9){}r;Q&#p_S58h2`|fDweX;Px$Q^u5;SpXSxRPFT3ab!kl42$j+Ir8 z@mb>Ar7bMHRh#TglHjh*DJn|w*k0^4GBDtE+LIkX6&p_MtxpDP98KLnoFA>^KUJ$C zdNeK}F0P%|l`PfO+neGM6-A1bV#1#BLS4N~CYJAL`ZMz9KbIauuGk2s6NJ@1{2AMZ z3J&S4eA+|RhSDwEoydvr&QM{brzapHQmCd^NEWRRGtd70TXIE?_}9R|Ktsb^_b?+P zqgQp>^&HpxCqp>s!v|?$4Ds#fGRl^$pXs$?0xeI@?#G<^i3O8Yjz6{rL1ijpVjj7< ztYX(OUDj)fwo7{<@6pX{&3E-1J2;f2r!UNPBxntzOh+rE2BG(J6@6d#}a>gNYIWzjq~Z+BOQ zk5&lC$fUZ6iHV0)Fd?g)9o#C{#+DYc`G*Uei~SSAHuw0GP|25!OjlR<^=enTN8&0X z2Glx_k^N6R89VR?UzXf%kss`}gM}Y1}q;c9fNrlCD68Ub46&(^^|w zd;VuEi-}mP`G@~(;~t5Uk`mR8^|V-V(GZoj&z@UG{5AS?hYx?at?jMr$j8=gN4Cl6 z>FLSI-8@!#=prU2Ht8-6OL|sQx|_tLqzJIw(uk-pcg9qjJ`Y>be7xSds^f1tZ#Kz2 zaGktvWD%VN{_gI%iumJw4L!w+<*MMCKMr?c%US%lkX(X7 z(q-6{9NHwBhr6p_1~&}wyyuF+UTpiLmxQ| zrhXKs*+{wVvf3Y+zaNaT#xrCD8S|Gr_KV|-f7cDeK4 zEX*UwBg?~DiCow1%onS9Lo4}pZKZ6Lp*Z}X`(2CpPu<|;?CI-!DIsCBG1cft&Y!$i zT>SXWn_1~-p816ZX4TwJURtWE#Ds)BMP^zA1O(2`&f;|Ah=70qLPEmc@0yd1Q;k8i z`6I1RI95lZtLgcAH8SJltJ~VL;gs<3@H~J1od0<1*0q!?p`oFyTyfvNRY5Mql1Yn? zkEf%epb$`3SJ%{Zh9VUc6EmbQfBgE@s~@j^o>xqQ=Z5ut$2Eyal!}Om(3QJJ#7xR< zsas~d{FQ3|;Na4wOEk2!Wo2awV=a+f+$stEX$mRHNl6{kkJ;E1hETSvBT^FK{_DB| zjbg*)C=~8pUOGGvgN~#9&3+0jD!2Gf_s^dpG1b@9{4j6os;w28p=nQV%)ue!$v5g{ zW*~5z`lm`f#S)W|ndQuT(-uR8sP`imQNn@^0O(||vjVvc)1+R(~8#)c}DA6Ou79TMo4K@Cr`W?Z5t zbCe<(j(14p;o;$_cpVZ71kMAdvvUgnTk9zf3kf0U?~Hr#xj_elnSKh2DtpU-W=DQt zU|>l}$!|$4EG!u!6(HY;0^G_rf350RSyl%V$+!zpS*BGv4%@@l#%2 zSeCwlMpR8~I2@*bPE;-G&!0c>2?^O+m3N7W0UX~UB(&XGQr(CPXM2;JlJbO`yTkg` zt9xEDE-&(QrD>(3`XJ=rzD+OgpPHIV&Bz$+?^jY(T+?NBKCq4`C@chcZoN8!GK@If zX>V@!I`YtG(JZxI_>(qVW|wE)B&hGI$-%(^Fzhofd4=uroh%_0m7?Vl?`p*)?H_Vc-fPkBZH^Myw13TeFsV3OS$jEf_G#JnbvIgPzrS!fcjIe#_#+}JPcJXb^XD)-FNp`=fCLAK7Gvb-NxgcJ z>G9ex+zBsn35os}lp7@S#OusrVli}|jQUzH$k2E{Meg|DCwpxEjQ2-wZf7U~K+%wrk+}(slRUuaoiw7vVtf0C?)|eL*7Ncn zZA1~F@$nRp*VN<~pV*4{-PQc@>f9p5#m)==6ftZXK0btguf|bF^{-zqUc6BMg6vkm z?NJ?sZ29^qLCp3V?#-Jwmlx>h=nVAgSL(@KKmCPF?|POH95xN=H9_J5<{snDQ(1EQ z?6ub@&FEe6V)iChlvWoKKR*n#WvMMv31C%-;&VPQFf{G0*FP-Zr~62yqrT^M2B&rv1DWeA0NNCq$D6(_VMC{(3fSlOw;$QRCt{af-TXA z)bH-o)K>r?qL5m=Z?Fh6hMoK@hfa~T~$5Z75fC?{uU$O}P1L2y#j3dekE~FR&nBLLBVYx5o<68x4>Lj)|t$(v`;K#oZy;(iMntk23UUx>r%z=)( zzX}otU0Z%WJE3U$)WigZl}fu>L($RkF)r!jS2{Ysd|2rzD}EGRYwF(d*U4R<55 zL*Kq+d|Fz6-WwS_mW_1BMFBH2GuD`mjg5EjFc@%W*|R45exl0`#3ZBZtSCMqp}dJm zH*E%fS_QA;mcg>tuUFYGb3SCS=rNZfcfZ3KCK3N)zczNRJNFiiI&iT?B$oo zEkSIqa*aAm%gY2yy(cHfhg1lKWXacgfWM%Z>|C*#Z6#xnJUuz44&1D?3RcCNrA;s<_8m~Ub~7d71Z>QDAVq9xlsLo5VKkq5;D-g318Nv$obILW0tVHyBog(;(4C- z*@Ragv_=o!+YMC3a~RCH0-4&lm!PL3LxqKjiHY-z{o><)1CnPrBRyT53eRS-hw1U- z$22rEN<)lnY(dF7Iyxo4v$C>$yuGOy^c{?*(kdM+XIK~lf`fHmzkdFH=mL`iDRi3g z%Oj}BQ52*Mx`ByWFOn$)tHcJw3Wwv?oUOdm!F)>A%)dLZXr2AyGmacK5jlAqYAcSX zz+!tB+5iK`gROaExwAHaf&P5P*Tb#(UzNfh1{3HIN9=09hw}kpdo&ys8WNHQbvNc| zWJ_ppaJyRKuvb%NVxq38Df2P{&n@hvRW6=tqp%2(YTVS+6c-oAbvjY)b}g7`koJEf z0qz58zdSaV)y(g$Eo)j@+6bKM*NrufrJ(FWIJa}~@bkwO)Jltq#jVZF87TV&jy9+# z2(o(+G&YB)@c!R2AgZDgh6+sBZd&~Dw&u&t{7`@pt3xGS4Gp3Qb>s%Enqci?i;0>F z=R-iTdW11nEDqG;{fN3hX$sq0TQ8Be7Rui>#8#+pt}HBwzfTm*8vA#_GHh6?ySfw# za5g?d4v=?)y1{w*@@0Tn>*9}CSp!=(9-yN(FE1}J5D)XMkr5Qb7&mBlu3bEjl~}4g zawjRlBU=>F$~%33lK8Rtz4Qc1ex**m?-Sc4=+?)E zB%GKMF@tENw7C_OGuy6sR7(_x{SI6+X3+s2B7f^(dl7FMe%r>{I{1pDv~+UAVo#P4 z=6}OF4|y{wDQU?9Q}w)3Jod7;;s*d(3N)Q2gHTC|agXhL=`-|GK9<@H(vec@I#HE6NC%o@gS&!kh?1dEvQ`} zJ#tXHo_?=@gZfLf{ViVbUW~s$>FjT3g=0i}cc9Yslm`RD;NE2%(!US{Isl9+tN)*< zLxX=bePOjs-V?#T=7aUXLZ zTs(g+|H5CWUDSvATjdCPzrd;hdtla+scOv0$LG=!FXV$j=Fz}I@e%({mWmt^-W3-Y zA5f?Vm^WBpL+YP)XMx6>pEp!G^NUjnU z1R~}`z2=Bv!r0AouwJ|8zqOPQc?i6G`Eshw-7{4*-xgq+LmFgP{c{F7oZ&qzG{+Sy-{G) z+u74N#6-bU{5| z0UBj?X=x};fmTyXcyH=EcNPr$!e3t z0ZU4nj#s-;iufiPL=k_Hc(<2dRK%s!rzpC?jTZoXS+W#+3j^}Qr)T$W%+1e35Hdb} zs)=BrU}q0j7WWnH0=jDI9PDeLw6yIUx)vA7{%k<^QGx-6Z4DYvijn{D5|e12~3{^8;1!m!^m`e`)^j|#Ni zvx<>oZ|Kb0ny+0x+jtj=L)@O5G^O?E~nB`!XTv`1oM^A#=3-sdCKO*w~=Exux=5Bj5(+ zdXdY9e2%g<)Ssky8X6jT(%dBX3M;C%dnr`=ldiK3iBnJ~G#cKWyP%<|Ng`L&VVcOq z@$lijGM_JB#$xapIxRDP{P4HMFADEW(oUQ64;ZnKxk$2r&~V?_;cfdTe9=zg2m;b&Z~U^uO0DPfQhnvi zjUusp&U8l^*%k3?!NK_9JCrO0lXX5&Q}KTSX1uwK3T4rfHZ=6&gsQKp*)oa1qoKmb z0$@mOdAMFrJ{l08nkwpu0EzqPoDr1L1_@r1(4y86n|rY zu*qtwA>e5B+;mBpJ^C?D|9uRl$dC}BkZCCBwHII=sbe@*)zwLei8%&P0LkcQ5=8u_ zN{ATig6S2sPbnTf3fRBp2KXNUeLvO-~_x5z7HeQv>0PcLjxTnDjcPJ%){;CF<>*0bMfNjE$Z6I$0p+L&#v^0rlBi__e06tsAE|WJ3TT)x+S=Mu%=##4vDBBN_ycHuu`qFpPuC-H zunt2%U`eLc97gVeJVO5|UkqV+GD-d4=NzSDVWG_#yA#3&+2{dT>Xjj#KsayRhxbI{ ze=5ky1qhBNPGLc+fpwe|fZAG9`7Aix^Rma(#<#~BvEMzZWW>ZAplFihqq5;p(<85l zRES<)kzt-e|)i~-+_77vZ`<4)0;spd` zHUA}QL5w_W`^OO2;{Ydc$@!cVj7G~HHevs@WYT+osc1P9+_>@3<;cEAN61JI1eeCf zMjz3yXYfOznCN>v!~&+m0U~x$W|Rkf7j?e&AH#O6WbYX6sO_sjv64izU2!cjOD= zP2?{WKD~$i`08k-jD9)r%=%1sqwm5+;C{C@Hnb^R<~ynXw%kp_5(r#Oym6n!hG)D= zQe;?l_*(cRBpGpW_eZubxGMYf^*M6M4#ea4lh*o3>8~bZ4+nX!hNh;{sYO#no3d{y z%IRLDJrQUc%&#K|v0@QYrj@hb`0-t{j5D>@8>plYA3j_v33GG9+)b3y*2qqN8cT3` zuKJAYOtxb=gDSYCO(Y~FMuvt`F}(Zhll2;pHO>D@ce3ieh6o2LVfZX&IblA1h1d19Ue>oK}0 zoAZ)uq-h`!=60dm4{K{6^S&ZI!UTU-L!<`nbdLY}Ob~XTM-tk&{P@M*Y_2~jJUqN& zU$1F0oD*kivw-rh7Y88op`mumG(vF_SPuD+JoEAD07{Wgf>`d0*H-)UXf?k83Euj> z^}hh>S}9O+KoP#A0S+d~v3YRt5GuhGPw>@@sYJH*?QPf?XlnFd5LhJi%Sxs%fBpHG zho_SQ3Qg|!5JnZ-rM`gfU@CdVa0`M9S-$Bv2AJ_Uux5qXKxj;wO0-}nBPErzxxO1E zdA7I=uZW1k9EZK$SW$6CN!0%FoDFasMZUNjg?V)Lh|_#w1o%lzkeG; z9x^_Fo!7A2S9Ax+)qWE7S5Borg0rmAB9&)-Cow5WjygI#Tx^=?%0)*s-4$+nLV9#4K0@J;@_Fm(rL(LO(E)gCq1OEg z)dMD`w9tv~wZL+WF&|hb&BSm&1xa*4BE8UPQCOBxOVF-UvHwdMQJBYLH#av$a@pZJ zf{*`KDYfq@4e#kJvs)b~?Rfv#2%;V*EBKFR7p5iOcd5SixEJ(AH8p~szp_5O(b@M( z7j0&mZwYAdNs5RNjiQmjVBWg;4<#3a#dq^ zX)i#BFMj>4syY|x!V`IX0s^thV+}NJ{34C9QWI*M4LPopTTH}cZS3ceSoJCZu#n$E zyeT56S^l$@*?@T$9aY(U(Pm9E*7#T`L?8ZAv zL)Y~*zS#M&5LAxecF*w9if$B(n%CQ(yZlCTf3C;$2?*HHH;xvrPwE zuZa~sQ`1(Ir}k6XwK5`;Ct1PrVvAmT3S7+GZ6%7?$ed@mxVS)R$2g0ERsi&uRn{Ni zQ4E+mQ<5NN+mbmr^Zl-i7wFXEym;{oggf91x&FD;<-a|+=Y*Ovja_)9^0q#zOz^RuTEZiadvh#FL`=toBa7UU5lE!x&rn{MV%KaZ*D~;U}E>FbJQG>?*ujGs|r_BZ6ZaYecLJVB!s ziU+;JjP4KUx!+_c8l3eBOeZBLZ#}w~uV0nRmz<&{M zei6t^;Z0C&Zc+-jt0`wAP*$_jl$4YXMHfBsPoTwNKiuxsVq``@Sk~3m<^E}edoTl12jT(2QSaW|-h=&&lLn-Bz0;|K=+ z^q`8piEBHreu2v+H@-nvap`Acn3ju}(d@_@IWl3PX`V-6=w-yddbQ)vpWu@Ev$W8e zmii&3Ag^vlr_MWIZUAlRNxG3vG)+AlvnXoDC-Yc6z}odPqjILdIm<>I@Yf3W46W7F z?npTut=Hq}z3S%PXY5@v>`WBPpQZQTAz8$TFD`z0?}qG^F1_`CRuzd&`q)3K`uA^d zV!YFU_@KD|Ar8N>eJ%;BX;n;I%il%A?5%dMd_H#eEw~a^T?&PV-|HW5yBXA;m_(QV z`spe-#T01gC>s0fuUytY$~{tQBN0%xi6#mQYPvcd05w~y&hk9)PtMN|ek$>8AUOA} zfl4?P^FN6CP8TFB`o4L+7hK9W5f)a6n+}mIWYT$5gr2zG3i9%u?bZGtBw|T|{mNNx zEj|rPjLWP+_9!JLdkzB4vNA-e9t{6jDhj(dDLSI3QkT! z6*-V#zWvmF^9Bxgw#o7X&C-08Yy_;u3-{|5mX;CV?y9UjjTiD#&QdEN#Ats8L|;%y z$o9sxgoeO4*c$Fd0@E%X$+-+!5Y&RJSFZwT#y*(g3r?^la)QH#e{+8&Kh7`vtVgf*sG*^;9WC zS?nVE9gF-n*<{d|CJtwS#MPN~;T+n|@$7hMs6=68*4Tay6MdNw2h;1fA67LtUlSom z+cmzOgECdu-OX|D-nY!m>&Oc$)P6)Ph#_c|*2aH9oWS9|160#4)lx$M<>PZ_H@7eg z20B~n`VSGpgArmCr-F(+6}kM>|<+#^b-2?`ASBrpyfZMzgu00a)}6GA{^ ze*S#`kUXsB!lkv%s!(c= z(I4pTZEbG;Z1)x%F%0`ddsuk^fe$`DXy=~cohKJpwhOC-$(veR|E@xn`U?c&u4))i zq!qfKkSHIpAhus6B_MG7`o`i8b_YVA=0)OvCoi1q&MqoxSIAXJ_Zd^UtAOQ&J)TH9LbNAUe9`K=|jO z$l2>xRz^^Z@MmgD@#V`esB^n-LqMWzI15jVBEqw$2{PAVh5e5&Q!G|loB{p@SSbPz z!8w<+Ei-e61%pP@yYb5ITLtJ6h)GDgT$ixWA79Rgb?sWc56SG*)Tc`g=GmML&TXMTpe#VV2Dj?*5vx=dR(Iq%3&nHcTLIDzOhe#cyV{s)z8BNO&OQ*7)-!6lsRrQFy;RE@s-Q$E>Y~1 zF*pzLMa0C?U>~%c)-g93Km-pp2PY5M-acN!j$Z>-3p^~T>FK#5+MR|*Z{MPIod|HG z9RrWr)Z9EcaKb`Q4-(+>%`@Q+J0L7fB+R8;*LZTJc5l*;U(^qrNMf~n3IPe=2ot-g ztf=^dHktqQh>dnVcosTFm&0YQn0$CV6V(INO%`uHbSUS$K=wSkJjq>neeUvYkl66C zs4Ga&ZnOT4V93&yG9;y>K&xtxA%dd8xAhTnD2PXA*{W(# zL|;F-puk2{6t)6$=Mp%Rm>`#S90!)KUjlLWTss~;J-vmUot>p+AeSOJhIw|Vq@f`+ zW=4=qg~`#SS&au8HaR&t>#lOURfI;txuL~nH4$A;u#9(p*pWoV=`TJ-7 zp`q>)Z10c-;s6)~xm4g9LNCt4p&Y{wijHQ&$6BYRgjXFKO6Qob{rzP#?}-U*xc^du z3gj*``UwkezTCZKaDw(bmn;8U%K*c`Zd9QL?pT+>MkK_?uWf#YQyD>4`Uk9<*Dii| z_wF57-Is1)?7ofUbv+sC?d@%8!5)@Dm;V;g*RSJ(g1U+=CfCrnaE{{s{htE^caCX) z!K+d-s;d1E@Ew{A@X}Ri>gjG=5v`sQ+8h5&&S~7|A0F;dSg-~MXrdV2Z-6LXkq4}k z!v&izIvUxy=rR#$R$IAV~l|DDURo6_=F!)82js2dC~iJWzYhpPru15JftC{WovWi%leZapyix?{Q7h zsLSAY%_o5&%7x*8)Bu;)MT)@kOF5k0AtHKXVnRkja(J|FwREHXlc+T&?KonN?mL03 zhKA&>v3j9#+&pllfyjVwIh8 z6#Db*Pe=&i4t7V+w^GJK#U0hv0#Z`TN<+;sFQcyhgoC3X$z&MtE}+CgdoLtBgwHGh z2q;_tD7MH^iXUg(TiH7w>}+|JsJOWBN!`A4M|(D(wa{$zdqxHc@a}V@0AGM>1cpOx zAQ`M`9$18AWZ01Y*>9)sKt%@EkykS3*!B%_^3e>OPL>0iH{XB?mKu9+v^WWLKX`Z& zgnh8CTrtp?>>yl3e1h->vnaZXV?gkNv2l59%zWlI@e=kL&-`G~DiE_$l9Hk&p!1p- z8!t^vd>HOz820)-4-zRBE-oCv^wiWn=-yQ_U%rM@o0cZ_d8D^DEdCf0EI5_HSphll zmSzCRFS@0@V8j%&1DOpp*d9>x&t15LuCGF%+C=B&SpoO?#CmQFbh_1%r_7f_8K|ji z!F(ekG7Ck}73dsj3m|P2HBW$$MVH<(qDYV*DX%I6Ixs{l|G*;Tf8qVz+Uk4VPx<-yEn4Z|A6()B zryT6;qRr?6-nFx{0}`I1I~1`WUpGAOM_=$d1!pm2^1^A~3OL|&;XPdda2B2kR!T2bMSeieaahl_14>)+2Q&d?QC3-*W;+}> zCa!11nDV61q;}WIP4O;K>)VUrU*kz zV63#lSExtSVs(wc7X_H@ca?ryOpDg_n4Oc#qm64>MqurLD_4!aqI}(DlNcX=9(f_3 zG&Py(*f9j>O4Z;rf>tI*x6}&cVj#8P&Y^Dt(B+BQv~)>w0QGX#92Qap%=(6$tgM!> z#!H%1Zh(0slLw2;+9na#ORptmP%uHe;kds+E%RuvvVdw(K}ku^i~*Q{a=zABettL^ zS8vf!(b5*Ben6M1?U|Vw+x-naQkwSjjQW-=9&usM8EvyiT@G8Cnmp%QAyb3MC|U`y z0JH)6AFzF3$pOhZQG$?5!!I8xmk*HH@Ajh)D2k(#!&M*=#JeCxsFvGXfT=oMz+yN@ z{OhfdpPikSV0^MJ+1c9C^;tYs*nJ4WEUo`&Z+H>VNujVUQ|#^vP1-ejRdt;DFcrErz=tqyn+wmmd${Hx%|xk4H~)c)@oh z@ZtrSyrm@o9VS`5@)h#>)7>3@-j{@H1-x%(PQ}lkKU+Vdvh;t)`~!}}lnLx7f_$qB zPV@ChM8R7nps(fy)-E-_Ao_rAdPTF;i*Q;D_WDb#Xony5o^PiC#T6Y$h&<#Ym*eeT zP(UonX(1EeAt3?&L&dW)r-zlNhcJgG;bi$zPVT48sN?C0^T~G&*Tdza z&QAI8QQA(-sLI=&?Z+epOQ0E`@8vQ&(uR%Y2wL^CHOuOF@TSBBitM&tKm{`eK5K4g z5vpfgvli^lsKabD^t>t$+MpxU)YOFRNHfBH-@hI{O77gp!ZUZ+7o=EFWTX+`YCCV< zwt019@?D4xCIVyVa?h?e>by&KJe8Z5*KcfN!_i{-bi1(zdMqI!x2-SVIjl2!3yf4q zNFp;cGr`FS;!{xv^=mCwd1c_D?4eyfKelYivNPs6%!3{_@P6oeas-L6=(ojV5W(I; zTI%_ZGG|%SFScK&&{UO<R$coa9TKrcM{-RtV&UCDJOHvj<2~!%VUoW-r%&r0V3ud{@1Qp15EzQkgERY!MP&51>!lRg&Bb!iA z96`x<6S$9Htwu#e)qK3nWMb_8MR-p{$ZYS(D|pqEyuyxudk2-pU6R+EnP+90oP@-s z(GmHH+G}iWO>S0`l>FU)Nnk>#w+?O1-(Fr)uTGUqFwg-TpPImHIQ6H^ER|KLXBm3^ zxq3i0gED#owNu3V_W0OXRW*zqO)V}mK0RJo5lR*!qS>LQJT2nISm~CH;d5S?UNti` zDr23#u^(Dq+5Oq~B`*2O{G!BqPS+S>;}uyy7Y@u~LfhNb!nEjro*f?>+Xn`k;cAOh zuBW@MU>OG=%A6oAImK0-acF^8Iubr_<-57nLREdd3!|x~{z#aEfvF8CASq!Qvu__5 zFCrE$TtB&6G)rajHI#^@)jX0>ZmF1~ks91@TIMVcpuV^3p*v?Su27JhOZ7p2UR@+? zo9{|7lrRiZZ?GyxFGZ`F^6>}cd#>Nm#`g^|eFwS@=AHm~4rT0rU0Icx5R#{kQ}w+Y zBW`p1_AU{w49eMWtGU^Z#+GbIg2u;amHIjOIb`W1MMbNqGvd%f#fujSrKMm&efIHw zm#2rvBTi0VZ|}@nG!Zs4{z}|4DJ$zYE#m2Qq!kP61Pdb2{(!^2_-T@oITL8!C*{7- zVZ&GnZW-B1(v`MY{@w4BfW?Z=C-q%mKf+mwYI->{?7@ zaLb&9_%EPe>CT**nZY4@B%ojRy?>GGWL|7x;rPJ=1MT2L-TB7?Z@{m(GNk5Wo4KB=`iRwAVmB2O?uFiSg4%$7cnuh@37PH@HkSYesr>iTDLLs8Gye52Kqod zwtRY^F-K0o)P-{Qi+vWhdQQ1#^7u`MU=aePyVoCKWA)+VqGmJD!!Iw}vui3Su)V6n zfboJtu+_AUj>fKV^#P(Z78JY~$xKK0O$f5hGK^#JzOKG_AO{n${qKc&uwz~CGbtI`N!XOyBsA~#g}Yp{t;^~49h8X<_)^G0+gm67 za#anED!qf4*i|W@o1>l2)e{EXFEATDfk6c09MQtNt^bS0|eiy71w5C_DUDL@UcUn7_72J{=M+qg*q53K?ZE8f3cln%( z!AKcKKyVMV2azM6vR<$b<(x+PW0P>AcX&;r4u+fM-2^$`t;hp$9E->uq3Von%cYx9 zC;xqQL#sedNy;bLWE82zlT5MFogjkiDI6gbE*Z-geJwjJZN4ujAvTsg@~O=NzL4nt z;$S0`Ja4imp;G9YmOmFH!#95QjdL2<*o$~dZ5Ck$u11doww}}!cuyVBU7+UNdFJ9$ zafV~j?kO~(D)e;s&e9y+u$FCot7hkl(`frFLgNK8;x4PMC?tvgW|4`e5XSs3NYVlz zE+dY?G-_}Fk^*}RDi-YB{4Ft0?4%KorP?C4-<0Kl`SOL@)naYz`FtiClfmhOb|voG z3lVPLh2vg~ghGL`F^5e$(hJ@&&n=5zia?L;m6moETmT_q`w}rz28xI{ME^66^>XrQ zsk{4DZ<>)xvKC2YL#V;39%E(-D$M@H;nb9F#LQi5D2RUgl_v*A5fyf;F(oAq(2exR zvsCPTAk@>>&+P}z0lEY@icQy2=84(#+v8!E#qpm}T($QaV&taQ`_giQ_vr#jy5Sh_!R8r=2T22&#T`)unkK+spSUu31AFHvC`AhhG8NQ*Di(|*IUwYzJUN2&1>^-ch-c0oQd8Pwli==KpUc>T*=&6*dOaCyjspZ!Py)5lyR zdek)#7}P9)GhC6eYDoq_lLH^CMH-m9;cztHl0E{d6k5f%Hd0-4l_e$IZlbj3z+EqzNOSya_;sdE z=f2|Ib#2$QQ%Q1uhx269g=tWEWck5p2JAc?vy)E(%m5~ydvkLr<0^UzQQxSHnL}zQ z^`ec>M1hTU=SryM`yQMG`X8ud!rmz(&4HWZhYQ%I#WPw`=as4wt%vM_$4snQ%qoe| zUzC9t@!v1XpsI#1%7}W{-!eK%jvjVM-Hf;!9((IT)aPsgm}B&bmYuQp<#ml6-jk-o zD_BqFgxX`Co%m5qnNt~0rkv0eG4$(O3QUF|DFz4o=(b};sA62OiLht6@58r2$jizC zPw_j(9c@)h-2_@?c07{m;ls6KT)unJ^0MXfW}{Y{YX*^i#AAq-1$6xPytpipzkcvg z*L_Q+NNiRfKF;L$L7j5X$3Eb!)l^k2Mv~Lh;Uu{hHk^G+#}CdA_@=L4-w(hgQUxU) z*i56IOvq_}9L!nXZT?taorlybd=O%t^)i4KL4`0Wbif|UP#s?Miehme82m!g{e}p~ z@U0Q6iDR49(u9e`&~Zv?T83B|(J{BLMWDeu`;#LF&=J5PP*Ynw48}2D?muXPR&bA8xo>fCIV<98w^BPjBV;@@wX`5E(NT8|#Jv^0)q4X` z2kWDE^_<6k4=qk^^*L5Lct5?v1tSN{=sp0Z?Bo)J8`U)vhP`xsJ@GZT{GBv3qJY@| z&k4}?VGmTRYj@#btgZFs>Un{Z@B#B0%;LhNO@4kp7>w}<2x^5gQd8G9Hxr)ywG8%< zN>RXU@3+>E$Z=ldmLH}yzpATKc^PhdDxf-H+tu}0~V?5v9@zvGrxHyX=7O3K9{(>fP$ehg*~mE8r97G#`5g?ypk(ynxI;iC_O3$JB7A`URx88JMQvW({Ulks?M!PrT~D4p-qtdxIm$0 zV)AjZ0sqLWEI&{KVC;8taZ#c&pT^AZI@&(f?l~+`it3&7kY0*YT*@hSFWfDKA!+I; zPLn%+NRIEQuszBP0iu7P5r#QuP|oh|QUH-iciEFouL++pFeIc_U+470Q{+eFd;RQ9 zQQ7m!hl4nGY}?s9oFqoH7XEzvHA>JL#go_QraxF{0@beqyq?gI6+g4G+60l$A`g^9 z08)BgXsM>7qXg=xhld!{QJ@w3Q`j@hVC;}wyiB(-5Gurv!oSXv;kG70dIID|^HFkF^QQU#=V={{tp_u0Guqxj!HsdQj>txi{2zKuW@!79_ zr1_JbBoWq0?*fz>wEeEY1`M(39+X&SFM9x`)XtKandwa!@X4eAFU-|Mq5>>cq4uahxhCvYNWAiblh0(=l zF5*Zj?4F^K;s3|hm&a4RwqGX=goHAdqKt(iV=_h|88Ridd5VxZyGS9DA_)m)Y$dECm-nGwpp5Hrs-t*VevK>mV7#$SS0l19|oArN7MI^ z*gq|m*9qUXYnQ^FcA%>KkMr}LK}f!ct)n8Ss^5TzBeyj_2jazg7i^l_#3=G0+xJ!2 zMs!>4n4Cw~*@8GtZbBHdP)d9}(qel@$M+6zf=UXk&ZJgE`2Sf<+N~si7uDVR&kclX zu)dx~;I?D7z%>u)G&0x#pVoHN0U<&>)Er06H&yPNeC&feRu;f?C#lhFOl{S1ZqM(r zoFzvs30o(pHr>eEC|p`PJMRmntT7Jwfml+xGc^g3obw52G^;$ zb&HZ`Y>2EU@Yu*m)0+(O?pAufM83ch!YN>EWFJ}z(~(Bc;iM@o^lvz>$%V}7*`R6pV$K-I37}ti}Hh~y+iNp!e zTsvW$G`u7(?ZMQso^hZVJda0x98*xm0e$6h*ZIc-JM!$VK695?cxTvTg>a-C8!hLi^V?MxBpmZMlnK(KB+(`=}^R(?h&Mtr5)9(`8 zV05}mAe8UouMWZCDno|6iYf7-y~`O?XDWjfN*nhbu>2Nh1;uQo@sDliPP51wDZ- zXOX%6V(Ac%?n~0SpNV%l_o?_(DF2Rit6bXOprrfvinc8I;@sA`)9>R?190RRhM^L_+$Au0~WF03nk?0_;Cg0c8DE6YP~NL z^jh^VBfI8mD=O7AG|xR3h@2}V`BFS|2UztbCZ{r=CDq@a1-FWvlDEZmm z(`>Blg$w7Lf(N#A#^3(uJ=J@1Zut4g*&@t;oAazPq@kGYQ5rh@uex+u60-+p|MdTA#eSM4V^`03S8%wm1$oIIcY`N2brMY?CHrdR76QDhl-@XCixbmIm za}Xt2Pg74)pq#2M46@LfQ<3;UGPrLlE#i~76nbWvTVqY|W3%MzU%a9AAcjG8j*jpQ zS^0>Z5~qH4cGhDDlGBoMXAcIqT#$#!l1s!>r8CKAW}yM+KXmfs6G#`sJ+EAGh#*4e z3lS$ehj6FKrD24l0pk%t&L={+`G@LUfBbh@o>KgCPR>j-gnJbnYe-1@wTki#(ARy4 z?|5jbsk2r;-@6&M`|8M{4Y@OseY(F3B2r^sk_cMF0yGC@g8FYHeo{rd2zY?Q5AS?^I$KEBl?i+H{vJs@-`3U!J)V}-CYLOt#ql2Ay^on@x3U|2MHC#^x$lvzP!_|i zXUpNZE_MGgx8G}5)PKM{!UOtR(0DmWw@E{=mnthPe5x{T+*FbY0-r6k6@bz~_P)RG z1n=VYs5Tb;u6O-+eBAP%%c6SmB8x}P_N=7em7LAH?S`mds#{ruOh9XmWY3m0o1oL#|c+ktPlz$sbB&aWT+0HT{ka z3IC?1@wADar?<84RP+IAm^=&iRrHy|B76Ulkp(n$UxjA$iG(NnWM5C^$h^nutCI`d z3vNk=h(q~!kd@q&!g~agFB0&gqU()^rL#{7d_adLZCZXoWo9|eCqONAeRWPmNMF=U zZ=r%ktK+vy5IF}g%IN`Z?*04speNbO96efyROQ|bAQv0l_IG|I|ae0VSKi=YD@clAmBGP!@Zj zqI~L)*ynqLFrBcUWT=2Y)%&JOLt9&3&E}>ix1X>}K*_ImW>06BAhfnoVnfsI<*QIf zLil%$+`lVbL`y^lxi)^oV+k>_iD8fbdMHf1g20VzmGIeg|D9 zc0&%Jx9LtU47xIo`%C?!*vBR;?#Rh={AF{Z%`3IN<=bnW)1>=_&W0LaMp_ahD_8dC zG}G=^*0|dAT~I(Ed50)C(qGI>DqI!OD(TS;cP#+#^z9OeO9LrCez;}-G;$uFi}xYu zsZ~E3H)tgP`0%9LWP1f215HgjYUW?vWKFb(t4*ROEm+uU(Ba@>rcUMV$jh;SMk{ z2++;9t!j3OWS3ta1=i`{P%(duD_$au&o^5AQ_- zX9TBO#u}+u@KiNwxhRz@`%b*RHgafDMW0lV_UUsQx)pRpDq6U?k%TXYRTu<0V=#=(;v!m+Ezd%x*=0A5P;fu%hTmbmg)14AGZ9DyPAjN z8|K$D)l~+Ur1U1Q7&?BY4}_wmg5a0>tNu~k6e=^YI z4mvMH5}=k=`$eW1{}&9{1&$9>1q+86TF?Ifk?)r#*#2MNKpUw3;ne#!hf6lgw}f2Q zKw;4qtOKs)AR{Fe+ctw7gpU2AzAcxHSEJCeE=LqBfITTUlaa`eYi_S(1J z+ElKv3IohO?~&`xwz!S45QoOkco2k+?af}Q$oa8NiRAYA&M6W3@q*tz!CKc*?SaLP zRy;I3XRdtmeAa%et=_`X#`Daf8i%{!QMAmMvyuJqTtyOYZyK#Mv>MW=PO^Z*=$<{% z`~B9E4g9|LFsh|Cn?_6Snu7e4=Z`~W;QBm$lJ7(lotwy=Q8*-otPn)E-_DC3VM~=# zO4d#}q3|y}^YSVc{4yMdTG17FK=u*MSiIz*7|H6bKdg|Mds{`9Ic};!{u-Xg5ZsK$ zUyRw8%`Xxs>n)&61}E3~n>31bR%ANszZW|%{@@9%Whs)>fZI%45}79b7S?${EwAM~ zdcJrm?k2a~Y<6{kcG5{A*d(vZ9v5s7<@;qDGIU?o-`akD0Len;A(LBq!S`kbk4ZV@ z{k~W6>M-w}{p{?>8^b@r_B6*J@55W!BNxk$aC49AyUqXj@!_rRK>6j17cQ`!<3iq+ z*ZKc(E;Bf6_ps-0^YG8Q9-lvd{TaBe7Ly``jFVj5T*o6q$DO!)uW=vWo-7ndrD=Ta zhh1~2jpM~ecH@IIDp3y8R%?M5>}eQUM~u$*+BufU*Y;KUy{P@_{%7dPxeWJN_oUV7 zch8!y=l`nuYr48zGu$~{RUrT2MvBWv{p&QzP@9AeT{4e0UNoORacN=vm5_1i8Wd?r z#`>PSjKB`+fv2{ZtEb_0$qTPfFi5^f5y~(YCQ@@?g_~LfcTJ`m*(I&CwEJ6>o}u9c zZKj2`FC!6L3Bng^@~3E|>Fxy~b-Tp4OzL!ewefZKOXlGno`%apfjdI3xVrWOdjFMm zjJ~|%+0OlPcNg7HE-9KLw{xqk?i%eeUH)jzGk0p}ET}_WiLwd(Vb*GB6gKdJaeqT| zM^K7f#+$abMm0oie*I9=U8XmRC7Oemg>v34&jDR#p~=>O_7QbW#HpbA1WHn)*dck%`n2dUeW$fU;cG3@uzk zbA1K-FJ7Q2e*PSK)Qnxucm03LMtwt>fX)%Ai3e5=-MJS^P|=Eg5)N2h6}=BnJ4Lsb z&vy@f4WeQ32_Zl5&XY(6z9~Fl|AQOocb4&9*~Eu&`$+)U}I@HE;(|Iawq7pbN9cVl&o z9d&;WC)McU!oo570h(|UJWCrI8YV9mUdc;tB%}uGBXdSU^VzNPEU$7Tow4Oui$7un zf6esI`gZ`RIe@+(*M0awqLmO_Fp<8m^4ze_FQskyhck-U_pxY>==(U=h2%`1f1>)~ z*Uz8zl7-SQ=&Da9lGcSUFSRcoNy^aTe|#=M%EJ5;SS&D8AsZc-v;aKl&Y14Ly13kC zs$?s|Sj3_hlAU{@M?)~$mq>hem$>vTa-A?^*{`=hC^(pxhsOd({+8T{54=Q&f(Z#& z!!3Kt%KiMrBq{kEeLwY+t!-Jv(-n&ln!0HUNVx(^n#t&}qBAkf|KV@=jB@{x3&p9B zH9;&h+m%Ms$HIz?ehht7spQ+Yo8jSPBy~|xSX?}su6vxFqpdRA6adnbCr{QD#KMQA zW#&vq+NY~MPP!!8{gl0KTx!oSO8wj$Ahq&1)V8Hg0}rN0DCzHTnD5`aoM&!tKHC*@ zdCN-zXtZ0-HWCgc(|it5PjmD13@Ulu*4F)0xR-SsZ$rLsd1hrr#i;R6^XbR!_1gwC zi2I&nZ)AJd2Q)w$y??N`vMr&?d*(Tz}L#VF-+h z5DpFFvu6{KgpdN;y;r#P8xJ zDFCiaS|62bH>2S)fX$55;5J=Cf;^G+!HcydQ>q!BoemYW$)Wh+)#$C&6JT2-du5ZF zXk2b$IAP}2v-Q(WVD<*SwLcwiDRO6 z3%3g}b-iqLRyV5@^swL(!&~{6;OQg1mt*(tR8rX24mvxLsG;hP&x>RWuRP=N*igr} zx>G{)-nUoF|bu2aib06SK^!{z!I~ zT;u$^y%`iY@9!U$L-`VMG_uMJ&m;PwM1dYY=!NFFb6+}*w|x;#wBuV5P1YVe&8a%3 zfS)Yphq7YQi8boXp`o)(sx;1LUo5jKsA8YrAqg%QOl(WKeUnyh&!5DgZx?OPeLNu; z{RX-r7z5n~IsbBRF5B0AS081HxtdBZ_k4@cxN=58foztD+_*_dPZU0Tc(*xvf=0Wh zi`(VS|0s;PYEU-u;rR`!%O6VX9Y8MeM|1`WElcl>`&U`Xg6sc1$sR!YQRh@Iz^r33 z{-()A8s;N)L7UzWJ>jUhnOrmUYH_BKkgg9FhNUGpF5Xh5vI69@NGab_ovysQxhj#b zPcoZf?D*^KJZ$cs5$%`UTjcal7I$FfSu81KmSzT+#*pg+(QIf!r_bkJ-f<_>$~S*a z!)Kw+5viWveDTmuVObfO$G>)dMmN?r+}p#$1SXa=hPBGUB48=ZWZ-Ge&qZ%FvWWUH zA&2tUwj<&7|NR`Lfb?-465usemqNtbdllSV;lSmM z&4J0~8OKE5No8qeWeYvFj_waT#l0eW4x}8bk&`O9pzgMa>|Tlz2K!Jp-BafC~)Tvh=d?R6k}9QA~mTf9}kg zwXgDjL#x4MwPB8hq_y{=i;lE8WBrLb3w=XFCSqjni=A9Ct#DKl@}%TX{wCCaQ&db0 zt--01*biWkk9FC$#f|~r*FESo`W4!bT<7amh+C?sPR0Jb^QC$SjXop|e{DFFns!oC zFDx&AF8-_`LJF*g!BJ(ED)zhMHy2$Ao;2OKCr>nIREiCF`1o3_MWe2rJ+#6tp4s*O z{jHlfyZ3>dsROdj^XJb!#UG9{AdkD!i9+4>1^>moo`h#cu0kfq4jfQeQnoX4uYp>0KePr>vW%aLOHnu`{yhcxRjY2-WAyO7GVSJ)nM=HS zm8&y;!2Lk<4Mq0(4{sr~Yly0 zARLJU5L#JScqjQn0C$emo6b%MwsyL;fQqiu++(D1YR!xTt`bHkx39jYxUI&llE<`> zneiYl-r|PI6iwvkPoJL7N49=Ox-)+8XtlGfsh1a2cLFU3AleZW+%Y)^6@lztR#vLD z^le9(-V6@DfY&j;cdJqvZQ8A;GQ4;=k98-1fB%ZhdV9c{Op1$RV_@LQW005^la{{F zlH}%URY#++Ex!LQO)b3C@bvAyKh^jg;^HpUKb{&1u6P(Qas2CT!$qp@pv`oZyDKGS zW%ttW+)cTk?5-g!e9y*wOV?hRbT_+PeH_$7_A08XJLszM*4bM&o7^y5`SD}3se{-K zjzKhl?7!#`J-40?Qet3cPXCyMc^k~%tj(^if^}<9_;DUa;)P>A$+1iw8LE~d5300z6od?Tqp%TB z)btuB?kMS#sLs;O>TYK8;SXQdo4Bvsi`~hpOOYISS#(}#!{Zy zq1t?+xXeLGlOL5nN8Got{#L;~3=9F|TCok)p(H00*Qyz!rH4o9)~{=M8RjMx{@pLH z`id60T(-?mzgS+&;;oao-A?W6_&BV6EYE8yDhOLskFp#%0-@0O`wgRKj7&^AgIp*x z&+*TpDSoeJOE@+O zj26u!LA<}>(FYr7S8wmHajqenUN(_}5oupmby_i{RsSA5azcyH#8C?^wmrOX`SL$?ASdrI*(FMssr{?PXeLS2rzwA zB^lP{SU@p^OlZIHtLA2_0!`1K<2n#&U@TAS}A^<9t6xM;JFWO z;d=_kqe2x-g)t%Wg3&QChj-tB#fwA#K3RC1=d461m%RQxEj_j6$b6F5od9)Gb#?CZ z95YG*yei0dc`2>=1V1y}ZT)+r^;K0)KWP*S5%c`9wZn37crh0YWp zDnQSxi;L&~R)=I)N_h1@PCm9te?NsUVq$6!{9%QG-etiWVe0}=+|SsaIGESRvOAY2^I2!z*>;GJ+w$e zOSZY;uE1m^hTB^eoHWmzna__bqd)6F1sdG?+8QpiBa`#mr56~m1fgA8g>hBDXPqv6 zXoIj6k~U}V!_lzUJfmQRBk&_d7o08vy=2Q<5XHE~@(@=LMz&XzMa(h!>V+%T?RCIJU zjy(gT+ZptTn>TL;J+ssshmQL;O|q)+E@fri(Q_cHAAdQ}SaQ5Jb4&%fm|!amx_MsfXsvx+o42^F}Z_s`n}S4U%n&i5sWlVZ$o7##BsE@NevO9nX-JiiO){xp}9)1t;(sxXX|AxQr#+tda2H4 z>D}>UK5i*u5fD?e^(-z--re(XpVZ-vLh;|Vd+;pY%9&k*w)JB961BJ^GxY?gu06{av+FRLFnMZVXYVw;*KzJV*Dh?wWX4wpw|7eh2t=zp`(d{{ zc)g{Bfe9O$T6^aF*5V6Dx0fs5Ijh{DY;9>dpe%L^&Z>x;$kC{3&vHv}Z9RCj$bg)7 zY;0_VViC59#GU2ko#$R*{AYNQOi2Ie0f7cbxn3$lucLj+WWQkMA)9^Fbr$3C)NER0 zcl8p-rDgqj_+(x`6dxN+AR*F2c z*5isa<7<_lu}gXL`4Fe;T$UmwH)GKIyv~8@lPys6xU@9eXMv+PYmTz#!}oKIi{VC0 zEG?Zg)XU<0e7AqtHBhH*xny6*GW~tq)WpQWbavjNm<#o-%x_pM3xd=0QGR_&D=a)} zyfgD0tlGBc-LWmKilv3a)cyHZ*)8eX{F{!!O~k-^5%vX^>oaF&YDt)vTns!WD0t@)Wp)nAb&6a|b;(FJ_J#sv%5QS$gnYPNT;?!7VmiAz`q875rT6xw zM6~q5+Qz`0Kt5f;Xy5=v%p9mpPsdpv6e2Vd=uVqD%{D?poFY8ov@7fOUu*l#U#(t> zEK+U35QZbs>SR9)do`$z% z$~`Pan6lx0oTgipR-jVr>`WPYeU`ts<;9j-6d`92&fa^ zbmHtoruLz}p6p{Zl~#`-2HWV^fyRnGWCVvyu>~E@g+=)4-kuvSvf8fX!3kGfSa27j zl$DW|CKC(#!|K9JZuaEBjX+p7yo3v-2C>2nP?pC@~$_pzvyB8;?ph^mPl`khFtQ( zP731W3$4OF_s)~e+~Oy4P*~ zsMEMxWIm^IRXH=n`9@7o6YpdPY{9Cj^fjD}vq&Bj6ed zPiE5QjE=_TT_%%qQ(!hJq_nsej!+i!gn_N>=jwM-}l4O@aG+rHid! zGxnNkJ|WfJ!#Pn_BOhd3d{W;qmT0!~alWF|HHba`{#mWP@)C8u{I#`RW0?3hjeZ_5 z)}?*FVEq-)qwci;Hz%tOB`uz#% z6+o!VlRVg$?DHvH(v5`QsGiQ++h>M_Y3S+gF7u3Jdyw3tj|K*G0D)%AyN_<&b$2TK z)z@U?{}JkG1|O57`dhc~)R+io)JruI*7ZzG_HuG|G|}l4jBV3BckW(ZcxZ{Z@~vk! z%KTKdM-JbJQA(zwp()9&tp9GjY`LeAu*~Qf9ORysdSInX&2)yw3Kq}eVG;@b*^1>7 zIboOCja^*}b+dM_QW@lE`})d!YrdIu05!!MeM^yxyW{8X~c`Ip3tgpw-kYa56|x-D zYGV6yobQB(FT+{VMeP$~EVTRBoc&XMxbn{-&%;=^0k@3(Q%2Nb%HnWQh-*`nLI-e* zU%k%b4CXuI!0Mhf61Z6iVrQS29H|VH|LZ)BmP$ByCPyr6@m%jrC>sg>y?09^URxVX zU4JFW`USGy1wz|fw!;vv95`^JU*q?vN)r2Pp2Bir@Dg@y`n-J+ytZLbMtQGtuUHBS z3Gw`9w3VhlK}SdTd5)FrGl14OoToa&qvPWTaUFTiuH!g|l5#n#H}!Q_TTBR31X204 zzIw%jxgECe%R*4{X6`sOqq1frWSR4QthQs80vA3pci0yQv1*R~g!o4xApSK{Qug|w~GigR%5|RZRHL5Jmo6IjP zjByAMd$^q(B+0FfQdX~b%KbWf@b|O(a*tt1bnBKfZd*U7$t^_=pSQQ?4=|*x3@{yGlEdJmk)=1D)|Jr|>`D!NEt*e1VMPHi#*gTIVz<=m z8bax(6Jz5E8rkk4?81k;8ws+OIT{Rp)a9I*;kP5^&7Jd1#fHck;9}Ncsz5^10Cs0U zH0XTb2(*3Mwk{7%x=)P1fB#kuXMa_W0X85ktN}vYk#SdHgEmM?Cq`kfU|p+I)Halk zn`-%=QyGAFge(DlOI~Y{hh6BTuFGj5E8o8THmo|Bh!-e)w)TX`iAzLitRWBJ5Wn;f zTA73$c8h_`8~%M7y%n-0A!aL~wwo`{}UkxZ)en z%o2a6&e(qKmG#cwcO?5Uw>K#NgPe|M7IcL6oi+%jqxQ}VP4xxS8 zaosZF_SEsBn5SFkG)8;g3XcuC)CL{1hA=D%e)V;oh)_TF_kgsEcreiem%wLVy3;i| zd_Gfd-w7w8bmTY7{&Ogf&|Wn^p#OMl3apRdEze%7I-_q0>w@HMDm{E$zXnkJZF*0f zBQIe-w=5JpU&52JU!%e@iJiKd{R7WldB439UQ6F}ga;Pf zF{z-exDO5IziSipPMwd%a{vs&eEfHbt-!Ipe-M?}u6N#$P7$VHw^C40(A8z+L7u`u zF0@)dA7{C1zKjEdc}Crs$Ke>6O;1EG=Ubdz;=8XE7}Ry;3qB1Mk`8XT`I;M7HWvhY zQ5RAey~J4?=!ATJ+%8YE-JF~=6n#f`cLmC{%MAwMwj$arQ_3h!>J)vwZ)P(C9*8&P zi|=neWa%l$&T-giMX8d6@qoK)ap_?t*k{NCJEo^$`|<*9m=t!e&u{iH|AFoNOP0|( zwJ2V=46TD}GNXV@0lFDT^fnWbD)$sDLrZ<|C6dSxQlQc6Z9W0_vfN2*CYxm)(PYLH zir0RevOc?luZ+Fi>RxQ9s7T?&`Q>p`lvQi%<{jrP5NOB7mI%n#1f;C`rN&~+2Wb9U zd{N-hc0=CPGk`uQ0pYz#7_oUCIBJQjs_`b#-`=jSo1%&$AP3qt~3CImS`vNk5dqUWm#|I z_M#qoXo~dmQ+H4P(L-8Q_M*s#k=ogvIgg%Xmw%9dvA>TgK2yRPq5kV{O0@ zJqJi3wh#dUxzb2wi)b+I-+$j8Dj`(csjw0aznN%U-T0lc|Dow|o$Pr}c;>J_z-PZz z(ox8Xrb-~O>Y-Ojzq(TUyY$G4pwBEFc1oE4v0E zS)GpHQkH>Z3(QB+tg_^I0UtW?6o>tAoaP;6@dE{AqVw_Apl*>JwIeuGsP5wWTQ>te z0oNp1n&Z_JBa#4}$%P+3QeGd-Rq`?8*X_y4IE1=)kLFXMvnyT9Q&zAf17^hk8njVc z^IK_3$>w`1afQ)|f!Gq3#T({*4TLjm+n4SMX}k z^K|z)><*b8fcN`r{Fc7GgV?BBA_`u73uti19<|t96eC@y!5vAqoA+V~*HHMrohRKy z`1Ep6cAh~7&tE>#5G)7ziA7`6ARicP>?ZFew1xErdwlC@u70F7gi?`;ipmK7 zi0|xt7O!SmOl;b8`ls3{MZI>(thJI5bl4nz_*#mLg)CD7LVTKfG^77)hH55a07%aG zr?0XP)jjf=C*4c2X@FbPPbTNIpuF?J|2971b9ty@0gCYG)Y`3`rk!HeHa737w|!xe z-8-d(>m?oOI^#X0pIF%}@RfoXSxs)r%(Hls)$j{7SiE$1k*QDMyMF1{IPntr$Q9F} z8*Cp)7!mLe!I&@6XB?$R`Ab6X{g|@nK8hG?$vc0Es{T~gmg5eD-GxBN(D*ECD9DX6ZNefR^p3b)TAD6X0K!~^XGwA^>t zq@jz5KthhA<~h?XDdY3(DRu?&js`cj3Qso_pf-vfi#eL4moT&Sx!_H$@J3{b++u3~ zeC;TTAX-tub_V-BGs|}EZ3Njlnl&4nnPq5ukd*OCNUWF{P4SGCIFxvlhmoJG9pjnNTJ%NHauEqGy}FZ^xSkg2Cgf zOFTOJ`oo0Ul*S{azusbyBa$Z!$iGBKB2oYXlZtR-t6p|{l^K<#vnI}tGb-m!UGqi6 zX>TC(#$WZ|#UD?b{at7IEM{3??1`%mxYdh_isLYEMY@Iw#Q@!8te|EJuuP%&&LeO49-^ z=F*q{5j0sc{hVxXiLU~g5<#JdjXdZL4|sm$E#DJ{ODEChMB@L?mxvLgKZ#To^TKPcDdD<*Cxw`@oz1?sOHy`PGiiAkvC*lRsGPV@M&we!)U&nwT5}(Xvvsp2 zYzssQk!zQWp3hOusO*iB_XCIg6!&CTS}TZ5;$D~<>xQfh#|&nWm9YAwp{1pTPB~$H zn|~W}7Yt~{`^8#nP4JueqWS>$?DLywr-HH)mb12tz*<-Qm ztA9K=j`5=dXDQ;w-AGU^iHQ)?QZDMF-$Oq<^!NbV=rPw2r3z-bAia<9Q@pRMbEdNVS&(MOYW#l+anq=hC9q&a`!-3GK< zZe!`ZH7_vueV5S=sxU#;50C+D)R&uKQbeIU#UXp_f;)TuO%3c;)d~JWV^DoCA8Qya z@YFUOPGoQJoCI&^8Qsm7b_IC?uQ#@>ytmW-!Ju5oawT(!Z-sF?F_MXEMf5Q#FzG6L zAjx@{wEVJk6a9r+@z>Kn3D<{K=qNu?MvFx+d#|9pl9lZ8a(nyfoz)(JX5Fj9TYqV6 zbS567@DtgxrTc4mu2B(YH7)`Ro9)dT1aNc=9!6kyLhihn6Vz;Q)~AEmMn(DLB)682#mx|*=HeM~ zyN(1Mt37AzzBi6s<-UA={mZ9k0#gB*%$sU$J03d>HGl^J`&2NtK7w=GqA+vN99MUl z74m8p?-N(XPc@!){)Ja^c-f=$>;2aq5>O~3n&oUi7kgCkdUzMC>DdAf6ha*mKowwr zLoCN!B(`ZSl!;a{Q)l9|{M=vJN^X>|Hvio)W!9WbCFBiL7w_YA*{_N5Lhzv&l>a?{%eNE=6O8@=u04UB3N-N$`H;Q9((>=Elr`n%PPWoNlJQ;2^nD6G zC&rg`i}?Qdq{hdWfovA+<7;qQDeLg!+O_gn;-FE6;=)_8`NQ_>yAzu!IyRq#+)#Wt z?5cV~mDhb#{x(-b|9uG|Wfudt4z%78y&pO--JVCyS?tH&kvM`UlV9_HavhE|9FvR} znd%OSHt-y2C7{f})pKP~!rr>fVNB#?dfG$(IogY_bBEF z&cOMr`RCX6`0f7plTekKL8%7OH$w%&8j|TQAY>?*_T_whm&j*}6q5W9IK*&wy9+Gw zhyRHW@OgsI=j;L6w}ZfzHxabtH#}fOc#e^cO~B}Hc0D}yzJKG3Vpr^>+(utl^no5) zt_6rvuWbJ?IJgQ0YO)4f^*)e0%PDGFj6G#A>I>HIPPCk|v20mDZ!pg8=;MBkYcn>2 ze4EM2+E1S=cQsxJG!K8NJ7c4=#ZrAm@P!#K+i3DaP|q%{P8na~&UJY^2uX^|ROiP- z=v~_VFt9s*>UFy-b!)Mqm)FXugV317~Gx@nUNf90!Hk73=j<8yu z_g~(4K==0PS1h{tG4wM&lNXaL0(&P6wZg+nM_V6uCzJaMcJS#Hh7${=|@ zaL~aBEDaJcB`nQesY1xC%4+JNyO8AOe#srzT%nOu5_2^CC1~5GY%pcO{Y2 z|DbAkx7W%XX_fOH{GYSlpRa#4Mcd6b{5Ga=H&NwCXl#kB-oZ$_BXkx8$_t%eE9*2T zw{`m2&T_c`=+iAFqWiH(;fvx7hu*$1GJ zBACd-#g+WWHpeBVhU0yR79Mg%G>_?BGl9K;j2@9W^LL5AJl`08_?r7ZtxPE8kE)L0 z;V){;%dTOCF)CDne>Z-l#tIBLBKQroeqsMQx$xZD^H5BZPvTH>vmK1HhdQxY0SM6f zks&s8?OMEm*Fd1)v+#-qGNR?bS1NLyaAvjSep(}dnO*(7CtOaL?mD$bQ6E(j1L9EE znNN{S*9JHSO8Ek6nJj-Nw%_`6OHl2RRl)qLG4^fxeDS{0z65(Ces7F!VLWl-#MAq7 zQak@K7rpeMH0xj1cZKPZLGbnW8O%2_X+gEL*)H-YFgi$!ePJWAY%h~{>wA~2$aMpE z)Zcq=IzonL0cSi^!tZPgaPc2{d3(QK%g;gp6UCPg$T@qWNS!j&($suaRKe`%^?4+1 zuF2>c8drhi!EYFeaS^1m)2F&Y41Pg?eTbWA@yQ=;m=#a!|EtW_XZc#nVnVQ)agqwF z-ELK*z#8Iv2Zl$MB8$61#^z%7%btBrxRn&`C`D{IdGe2h|BqP|XqT@4Kyk*M`t<3I z>D61goo|+qX?st0*&sy$BzR=}!2Mz=ARs<|KH?SOWB{$XIew85pPG?>&PkPNS)Tr? z{E)=8c_bab3n&@1t(iP8M8MjMm7wMOi0)43{3@j6~3w+5L06zf3pz|CVi957>nt(V`yRvVqi|5 z8}={`OzTHO)^hFF=k4_8i&{GKX&t`I%IEk%auaVSK7gW~{ zkT7z3skhYO{5_H@A36rx%P;lp&}uxnS)NF77$H3DJDhkdS^5ODzY24@+u8`ne-2zH zifu5T{2aI9 z;bY263ZgRlCTBe5enK$ws z#d{e-So6L+dk*_}EyR{|1Z-|30LOhV!$7yv6+_oe(K7$s#XR_{d=kEQWjU zNq`#d882MNHlLIFFV#Lo z!m=@By^!TUyLt$1tbx1J2a(?g#=kR%0DQ;8J-9b5%#^q)jPlj??@X7Qd1ciB!a_SC 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 YT&8+6s0IUpEAZc8D82lveEiD)0kLfUy8r+H diff --git a/docs/build/html/_plantuml/60/60c95188891b5d1267db67bb61a17e9fd7c08060.png.newa1v5axm0 b/docs/build/html/_plantuml/60/60c95188891b5d1267db67bb61a17e9fd7c08060.png.newa1v5axm0 deleted file mode 100644 index e69de29..0000000 diff --git a/docs/build/html/_plantuml/60/60c95188891b5d1267db67bb61a17e9fd7c08060.png.newlpv3pfrv b/docs/build/html/_plantuml/60/60c95188891b5d1267db67bb61a17e9fd7c08060.png.newlpv3pfrv deleted file mode 100644 index e69de29..0000000 diff --git a/docs/build/html/_plantuml/60/60c95188891b5d1267db67bb61a17e9fd7c08060.png.newv2qg6lg_ b/docs/build/html/_plantuml/60/60c95188891b5d1267db67bb61a17e9fd7c08060.png.newv2qg6lg_ deleted file mode 100644 index e69de29..0000000 diff --git a/docs/build/html/_plantuml/a8/a8a77cea7a1f2555dbb1cb6cea10dc21777c76bf.png b/docs/build/html/_plantuml/a8/a8a77cea7a1f2555dbb1cb6cea10dc21777c76bf.png deleted file mode 100644 index 96c3652f2f68b17c53b2a06c14961333e42022a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63731 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 K$$pVG4gMd=Cmn78 literal 12911 zcma)@1yogix9$M}2~m&+r5ov1S{kIJq@+6qq(h`T1q49>5eey#mJTJQ8wtTJC2m^o zw#yyU~*zCpHYp?Z>IiKe@r;+Na@_0BDI4CG6c!~-#nkXo!tng!kg$74# zO2}N{h0R@7&)wYF#oNKs${j`C(#i6Psk@~GjhQ!%jk~*x+g&a$7Y9=(cMnGgPIG6+ zr-S{}a0w1uEj{;tA4frj>v&~ZswvyIOX9cel#xAAx~}9`!`N(Nu8)nGAGuIx^)=K& z(7|f#WT(-dAcP9@>ALTBrM2x;ZEU@m%s%aLFs8KQ>+WQ_7|ENqFG~1-m(eNWDam04 z$6#9W*C^aVry6#AM-jq5D?TdDLGY3$$hnJj!vo{YG=E|GQ{U*`b|zkBh4IS%#lRfn zc&F-CmCwX0J-YFh`YC}Vug4Cil5SP6V&3h!^JIsZYuF68=wD@&L599=h9I~x0lqa+He9}y4|ei419ewJvG_YuLr*sJzy zB-4y#q~6MfrISK!R1lFbZ^V9=xx8#ap397V(_w8IgEmsD5yj0zk2L^wu{2Ek&y}Q6 z6cp|rMHwkAubH2(ytTCCPY%C@oz}Al*9YNVtCu4nBzzE)M}8>4Bp2HqDLhgVoJ+Hf z6(uE0vl1NKTmK9QyTjQObmO5vlFQX5xEbdTe zZOztg>4^RIE6OhN{dhicp-!Yt;uFpEnx#@+!y-QSe|XXTnKriS1efZPD zLW@D2)7U$;#Y#(MV`Hk=`$(2#mV5VnNAnetKC3G$m9F2qB`(gA!{~gqY`2y^Jy%s# zMTTPkTCTDlvf-?h&mb0k^X7i|pS>Pxev0WlrJ|mAYWnPIuBaEBMoNu|Vnz8U%i+|B z=)&u_?^;+`47*#zvyJ34Bl)7)xVX6V;}IHNli6avi0HS6i-9>4^uAhqYs<@~j}6a} zv(Ef9(|J+v)g;cVrw~Tda2A+qYxUQQNA2-G0HuvE7N)XDou5&$U@%C zlOq*!cq@1H1{J^f{w+~2?wq$wzFO~D1qCO_&g5dqJ_Y77`f9Nbq+h)9|GhJa43#nORbDvi5YxUP1!?%Ls%9lSV**xL0&klxBIISr<;e$WEeIf5_I{M?UW8 z`1rIbgT|*EH?Lp6&VPM6Po?ndSFHpqdwblo1pFl_R#w)3juw9~YDBBmDb>f`x^?^Z z{M?*zYrunn1hM{V99&%c`G%U`lz0^U5si1?2EwcLOJBWug>s`Rr@2`yZup;LEob}6 zl$4a^LM}^^o}Qi*AqWjCO*=cg#-~5qjN_@q>IbBeELBQ~dY80NgvPp#o*voMH%{DX zzU1xsMp9zp8ndpbwShFQ;<ez01Mz z)3Zp@)zy_B4Sko6o_=HS6@0HUQt2VrC+_wERS`o}TwLwcX~2sCV_0@p zR!q&|Y>_C&@PO0oFVD`;H}7io)%YDhsnq2!HT;+qa6eIOz*4Pv+_=S01RiF(%DVe7 z9PTfYkXdP=jLW!*#akqrluO)e_jQXiwU|#e48cgA{OQRFN#5@2>Z;P+z)sq;)hH1M5>rC{GqC<>Yo2e^-=n(SB_pWp02Lg z*RI`>MV8b3oNqk*wK4Rdf1x*#Ug8wNxB0Cvnb~=<#nEs1`1ttty{9n|5!{r@Pwr8= zNoyF$Ap6ss-8KfBe@_@>3OZ_@Kb3S95UgxLQ)HVbzklS-q;VSE zw3L&TjYKbyF@K4F>z1g^FpYUhewm*Cem$OmeJvrwO^ZS4Gc6K>FK$Ou{~Qi zBxzizoW@D*e=q`{MPbghj1-f_aGI+hd8bD0MO73Vn&a0k*n%B?gF5Wc+*ZFZ^?rElOPY}sd>b#ZZVxFmP* zsb{NgtL(?*Oq+KlT zy^p>*HKk`E8gN#Bgu_D>=6%K6?a7lOt@m_}qY6Cl>@dXt9DU%f4pra%8{KT@n1+%>Oyg*5zxVM(dvwc5_v?s&EzzBgTT;Z(yk_CytN4 zRpv2r-}?Gq_0`>zspJV?$Jtt9F*Z4!a3Sdu8xzY2RI)RyBLbqntHBlKJu6$7`%cr9 zviQ+$=!!&()$<6ZaN_-(slk0rE6L$r7JWHBSVl`N zu(T&FZ!`y&$*=^Ys4T3Fp8Jeb%{O{-HBh_0=DC*}AwqzQ9WKWo8Ut}9ZKZFyBb;)b zWFrrIl#FZYVX0)|)I$!`H2b;wirnibB^IK-C;A-I)9G;uI6~cFPmnaRa(w39*9=$I zzhuH{I?WJqN_QCi1#|L z6%g-V1hK9;2cBmBKkjH>IZvfL+!Vvw%#7LB%JN3R#r^;n&+%87<$&{(rCsWaqj0^W zkM;F!ZwR(jvPH@LpZ~rQCodzzZ!?UdfuowR_)t1tiB?@x^QN@GwYLy^K79BPwj++3 z?z!MCpU<<*@4Rq}T!R|2!LlCa{>jOS4#zNaj$g2kk}pRCv3faks;vcKwzz+k_wS9I zKpic~oK&soaZiqM9p$GGCOE6>Z;ZwhYl7mpohBb*Ybn27I)<2eg0x}Ld`;8ZC z`dB=@#v>uUAs6>$Qq>Q)=P&aq#CH5*#6olC!u?bk$VQVNjOcx3NfybaQq^H=9qj~O zC?lgv9%KqC3VmWJDpXQdHmI_S?P{o#tvWpUZGSxP7R8n%Dk}QtSI$L3vl-5>?1OYJ zS@N=oh=}}r24&>WC%dXgg@r6+iGwoaW#&C`q2b{M_2y~ui_(wkoaPhh<-cpDBrYAF zo*MkwdG;c65hXe{77qu9cU=UtX!KI@(9oE`&91e-9T?l$vE_dWxh*_2)Y8)O{B-f6 zpjab`mzQ^m(th$osB;QwAZK9fz0>`*f%NorZ48{kgPRws`WcL(%aCLAOKbhSc>|rB z{csT@SZi7qpr!sw6S}`D>92$V`2s1PO-N`G#g`&BjET-SMUjY*FgYu$q@OA-JS60= zeA)l?>yv@Idv$R0?;n%&U%cUBOexXPxZKJL3JFuQwT_hkRjW)CX|pedqqo^lS2EuG z552-^)PN#*@7}#L46mQFb)If+Rc9A^dA-ITbzNM_QPjS7+>lrWd6D;-wp54RdI;3# z-1$|IVEx4fDj9TbKPJm^8XNE7fhgf)6%eR_c`_;UJ=~tNr1edC#Q4)Ab-VcLbTt^<%h1S3vgmx516iolfCWpL!Dany`?R42_MIB^a$Sw_y7=r;= z;(f-Usd9ObU|HUtH=7I~Bkwcr`daWHlS(2$g{w}FcAvqQSRLfiHEirRfd-Yid3o^h z2S~P;ASFLMZdJXg-8~JU6mo*o9u(`8=DHcQoSmKZ8p}SEl$5mGorlOsEfJ6fsuVY= zwY7DxE|c?dOAHDzcGaD7!Y%rK^l zV-R9qyCyT$wgPrv%WG?$MshK3CNrxE#y=NyocTICd+$7!pW?w@|3}|Lr>9SAWh;by zkqB7fNn(}O3h6uu1VS}OoI|`lGC4Up`llNwC+D+g&$_D)$J8WPuQxO__;`6$U&@f# z+Ba|Bte9wNY2}Ff8#j5;io@spx92|6&A77;gWOpSb>CU=pKtJBDFUqvquP~-OUiiw z67=cMnM?f=8Oh`FF_uyYxiwy_ktcTr^P1OA^WknPw}O?`I&1}4H;b?yH($JWLc;hP z=9+eddHk68srMSp4T$%5Uq8BS;9n|*M~Cc3)DyH$PEIaTexkle2N1zajYnP^gSTC; zi!Mx0lRMpooDL?Yv9VFN%(z)GnF%yH?AWn1=)k)&z9 z#h;RqnTaW?M@pSWRq_OKrA>QhBq1@6HRv1)ej9G=OO^;>B!@vQ zzth~&=GZ&T311U6Dv`$@pJ2%TTx_M@1ib?DMErv%Qmkvug#W7&5!%cZG_*f|4qJ2X zdMLdnGky&d$6?$wCFw}+meedg)q%ZBHh%Rn3g$XqqFjCG*i#TP-*M?rUQ0b+wWe## z%lj6Lft%noRuJoM-r>UO&%@m04Y8Zf=&cel&t&9$^a~CHvp=X-OVhi?xaHFg9>oWH zyUQJgimIw{M-fLZBe}9CoL4iik@KQcO9^+sdi|P4Wd_Sfqg^<|Wlqwuk7}AdL~L0z zokVLoIXm)`66QORCIU1KSHI2Cw|Ze7e-%vwVsk*7#g{Hy%j*}|5`6adkv-i#n|d~1 zEQ+`B>2d0W8boq9?Ck6%n7@s#%TeBSFANsDC668999!~JXwlF7Y=ZrASJ5iTpoDo1 zar;8#3f-XHPRc>Kw&bXH5izA{rq)ns$Jxc$)YSB$X#`XZo);g#-;s-ozo4MtXhC!$ zLJXwbr`^khtbFHDCHjMI-Vy}_NbA{|nK)_*ad!3}Aih})T?)%;v0^mFVdb0WGWlAl z8G&vod{o7>j#^JjVrydidutpAxxc@^w1-9UX)8}Y9$oc_gd7%hR3D)e8;QC9De^X- zRg8=9xFP2D&iQV~jrMPch-rH7s7UU`nyKyCVW&)& zo8BjikS)TRLA@pc{(4AaFyXuj)bljuc-;C?@dF6e!n8tCtrUR5NmQ+fOL zZD?3nQZr8R(vr!hD_ei=>hkj5);N2muIcZ8l!QgUG!Zee$KFbp(ppsNUh`Lq*zTU5 za9oLjO9Ro~(ZQZctuwl4juMc5PUfc{yz=ea^Wb2%fsBIb)>&n zSbce^^qbSJ^6=uPUvL}Pu-)255f9L)Ie~x3tyAjVvRa0{*v10DS+ zjs1~}MX;2P6kO4}Y5W&fy!OPxS8P5)OX{0HVh+Mr!>jv|-;71_A*3!otGC!ayb7Xg+)>r4JeU8TCz+GRuJ%3i0VAKY7@4N7768W_=)6>tIL4y1PGptglT$lgR8kg5A?=d2&ls{K{ z`t+%cOeZ*Xz*7zF2m5<_sJ=(`VfM$wETW=Kysh&Qh(}rY`;OCWVB@ zWTd5qOKto)KXt!SY3<}VRlYn`VV-){HQE+mMLo?|jQlxEN=-c^q+*V|zpEHX<7<@! zilNTw_NU~DfK;Rqac}m=8h{C~uafU7Mu=__TMVuG9Pe8yC}4Rfv){e@^6uq&;Y6~&pAPCjE#mSC?67`^$5bYW(I%`y`(^gbEB`1 zPc|5Og}Qa6Iwy9WlGm5#_Af5Bs>}QBE`6%D9kcsdXzJ)VpDT;Yz@(OKxYZT@k-QtA0AfLQtk0P0D$NM z+eL+2kD7f1U=gl`UGfOig{da*s%>3TPQ&lBbzFWk|3U_c@nX_Z08I|VuTiZSI-f!6 z1~8E!5!jMKuu-C4v(aRpq=W{wy{%l{hYl^Onr52<6Y2LN`X1oLkSC z-e6>ra2dzA1+l2=eD=_60A>C+$3A)b)VS6mBhiB}KNcc$zU2G&??Hp7N+4a(&I}Ge zr9o1^C2?uUVa|I%i()%SQruL_7X5^6KT#re(j7~wkR#$ICv6Y9lTOTaMMfpN2w`bu zMK?M4>K=jIO10E;O!7xUQu^W7Z=aB|@bV_XL+tlZtwV#8>ayu3UssYzd{gYNam06v!(5@gi+8QBk5E zKqX6u;G9XR8{Ic~{f>6c$`6k>a&Axxs-!l<{-T?NU=^h=1XIh_E4~qeO=ve!5*Z1R z^l|Yx69YqA%)T8_4Vzkiah-qyWm^&)0DgxST6#F&Ft+@K@q;MOiN3% z2EVLM7$fF$pg=4=-he&o=kFirPmkW#Am2+hUFD8!YlAgcMB3ZmUj&0}HhbllCJ6Up zt@pv-wzs#3awO6g3kVU*w<4S2VU=t?HZ)9pFrxHc47~8KxJuvJ%KSDtDGA?kh2N0$ zQA}Cp${(ttH^Ov3--Be;73BT%kwk@vl*?Gl;h@!P@6z#yZQvV4+T!u0y5Aov=Y9Zo zEO#Pys3t)y`bADo&T-BQ{y!7mk8B}^AK+D5>qBhi5EGmKoEk6~?f)dW>> zk;b1m^&MmH%@#>XO%3f$?!|`WValDW zn;^z#dw%j;Zxvs(x1;0Rc(JZKcBM5_bHKR|d?Pv+FYi7W>VvD5);hNQ6eVtKzuLJN z87(31AD~z2V)`8I(pt6lllwthxr%|YXD!rc{0K8g@02`Xp(q&pp}&a<&7$lBw!o^`)EtkQ&TjFNlDV*E@}74kH;4{Q;@KuTTzAv2S0f3ES%}yg{)%; zsE)+#l{)x|zt-^IiK5J?@#)zl6`Z07!$r8{v9mBgKmQ67d}Kz-%a?2gEwIPjE}{2- z$`ddF&&9SYweBLHxVh!!<>`Jf+>}pEB;ho~Lhhy&un=-Qs$}5jubz@Xdw2_Z{g!Z0 zFJrsC{hd$6TRJ;WCb}8n}xE-8_<2l%iG(#8kobM*r?a9UyoYcc*A5Z8pSKO zx3|~b#J$LZMD8pO2~Yu)fQZ{gi5bW2S@x-YXw5=CQuJvt^PiO&qU8C0qdnMp~!PgWHuDKi1@J}M#2{+nDHN~C*SknOExFeh4Qw?yBJ}SEzb!P zc2sDoRZ~P>T5RANP{%+bky27pPnb10lyG`ADDI-Aestfw8Rw3e+5>aFG7G14b#{Jd zX8&{(E)T!wxW{ zs3Myin0=seudxz~%D=%7;5QCti%}NS+_|mo#ya&}KKE9N3+#wJVo?t;)&ICY;SAxa z1`qpN7u$_H2?2X6p<7bvWTgIJ`)}U7$t{;Vl_}(`L|Up_MkPH5)s!H|lKi#bi=JjIrkRwzs31!g_!B zee1@%mbV+Ah3V0eXg6N;bME6qzv#H2_u9Ch`pATM@`E`)JHJzXHR{2^x-zUQHgBdq zt7nCHLsj^KpNf6zdAt%Iw(9e7{5Uf#a(t(x6|}I>e=d$ z#KkSbG|}1=edb4-#bqrwZN20qC4=miaR@iprN3zWydQpjIhU*n2nWZ|hoK}0Ik)e+ zf1hs@a$q@Uf87*TM6UhgY_*T@^Nl>Y*b}In5EFPfINZSz0X-ue@e!AaxAK@e@NAFt zu^+Af*PiTLeBmn}>TSoEWNr5g6vcAOd>XonYAZfZb<_v@n3HigMbpS#hbjRLTO5~B z1JM=A+{(KiTi+|+aiwL6sode_!Q26{RjZB!aG?ENY9!Z{x6hoRyw2l?j`l;E?)!4+ z%fNrS@1Sx?QOMz6$wx&pu+wgjdx&cjzF(KVCTKg#aBV0e+|A8xEtIU>0?K?XH-DfR zUDf_lSTOoF-@@Wotc99JL_M9fzxmXduGo0P=0A5UYFuNd zeJA5uRk$q1OXh+AMH|dHqk1MZN)cbWtcPFTHY{{V<1T;VYCWTCkv?F=`WSG2cQBFr zA%>=_xKd19xX>?vs$P)7|x0^aX$WRalrsCnuhp zB90D?%6ojIX9<-6S5Nj1=gG}Qx=XQPO8=SovZTRmK8{<~H7YBR#^$RI`AXva;Gyjg zVn!2$e7Ug}au~vW_$jE|RH0EbHPVR_U_NRa#756`J2i&B0JMv;EWl~)rZ)?0_N{(?kE!|5hBHgVs z;|S*s#fMO;=?e3!Evc2HsbVqq+`K;MuDtq1@nTw(8Y{ETt*?@jg3HO3#Y64;+#u{Y zRTMeiQAQ3A!j9GE!VgoEk*AAZ`Geigjn1*_e2EgG=xCXLY?y;$@e`J!FO{eto%&BQwd!eL6^bF6h$v-*Sj`{Yxe=KsRCqAO`TI-UJfBFW5?4P zkk$G5xvr)qv%S4N#ha39zvKO-rKN)d_dg3hmPAu|1Z?v=r4Rq70!gJj@%^aBdphOs zMr>^8KsL(o@bL8Y^%WtOy})ZfkhyG&k&vKndM1hCyHXR8bqLHsT0}$ywW_mICbAjI z=Jd-;OOlszHRP`6_ALc_@Cuhgw#IH8Co(04=u+Yqq~_((dsP7;d!hi<@A`%YieqPU zXlaS!0y4F0Wo>P3L=*H6s>rynUkZ&V6DP6wfh$;FE+L2w)Me2`t*tl6`K*R%0Inp1 zWMM84CnY7_u7vL`dE)L)6b%CQ@^^6lS9~w)CS7xUOUjRH%5?BP*9MN6nIHDw^xRD^)-0>fZ7DlX2t1y zUeYseZtmgqy81L{B$c>dz0F82q|K)ymKss<@k0AX+iOW;K^s4Re%XwxRDqg$NO-ue zBog1wtef5|g^~TQqalvHEHd$Z&A;=Qii%3szp+uaDhzPG+x~%d>n_t9v8L6E zsia_>bn!u3Oqs`PuE~OgfC4h{vu5yNdzg2%<5FNDKvguVEjuTNx-psUv3{k6qO1wj z*xK9$|H{^o>4whFX;t{(&%h-3fEfUmVi1tbW2%LYggy{lM>~M@3rVaJ5{n9y0**8M z3=EwPMw&4Lj6n3|1Z;*)Adp|ZeydzB9Bg}r-47)vi(Ns>ej;}EVql{a?;l#jrs!f} zxO2y0y3(@i!~MicT{`3?{mAL<1uyL!si2!{8 zmQ|@BRYAg@B7bVy)<}b~mFrM@bvLw@8gw-)>wB-zwjjp$&-bR;NqxcYybuTd9|)Bl zI%r=ShiHqNlP+NYqN>UbGBq#-W@*xo1|Z!C&e=vmr$$FcYJ6GQ-ZqA(WP0!tOyC^2 z1H^O{nD9cQMr07`6%c26h3P96hEB)(Yxl#h*#f2lyp|&o$f?Sw9$~Tr4I7uF0&^2; zEBU7fn{KPU1g_WZB5umejE|3ZbXDBy~+GQVuCj{L||4b=YHn&hdo(k|gD?NQ4Y~&TelEl&%%9DfpiZ|R|eV{a~cX& z@ZcP@V}tu9WNM+N)9pq&F^E9*^}=3m(CZ@O+&2w(Gy_{mmIBq-%d6h*1)v=urshPQ z6qs%fP<{aE7L`c$A&)YdMYVfvDdkc_`bpN(pQ)w#I*R83T|X?FP*j z!NXelu1!#RI>M2YJb^%6bQKka^JKwy2a1U%!O|5%&I>7MUi^WBSt2F|rf1NEr;^T% zicNO4rd>WC9OrC}J+n~3-!Vw~VE8fE5Mt2&a~m`osUfPn?l#bsN5;fJ;VEju+o zIOqgkBFgpa$cXEwV2tkacbOP=V+CJeF?Y5_;?k0eUh(IH&YSrLMds)M|KH=fba*>N zvkGCj1PEGsOfU5cfMtCh2NiWL%hEgowDfXxd=A2Je=g@w zf})$Qs)45krQ}Q=>k%_mtlEy4a47=L=oW&jPzZ}s$3wkoMn*q9_Jz*#4o||pro_xl zgEt7pwEHp)O~Wp6J$EtS)bR}hES|Ef;UP`%eWH7+1we!&n;~Tv&4`GJ z-TnxRV6xuT{PSoz*{BUs!SxQrX01N0_C4idOhc`T?t6Ym+}D-jk8-D=n~S_Wh*K2v z4ob%g`_YX_UkFw7)FF(aLk85r| z2eU1k5VcaM;IbZ?=r3-32 zX1BGkAtB>9IyzP;0DVLg33{+E-GTTdQ=bL({88X@Vxtks9^~xR<4-oLs{96RM{+~; z#LOOfA*OiTdDo4-xqVvw|&%b&o?%pu}1xgte71G^6V2GyG^h-G#k7 zFXoF>$Yzc!rh=v_VJ03gjx#E^wDhMTJa|n#mraKCSwV#FXk+Oc4i95&YZzcg&{ZXc zDdJ{wpUeCn&V^~n6%pp-(D^Mu(k?7u))~=yw#HSD@Aa?-1?B!Rnt4p*_Y}zF-v^8# zw9jwobF)XGH$7_C+(vIWT+^;H5l-2*jCA9th<(O^e%yz-W%U|=d_y$9f!JUg%GBiK z-7#xj^|VeZ#jywqDVlY;5X@16&${UmF@Y)V4kSSBv<3A)KCzTFQ4^AR!%}H|9SMB} zqhn*!ue7`g%&hpD`1@`ln*ENGF77F((*Im&hNcso{lN%mx_}~N$Sb8(+%K>0)vYv@ z$>xnH49PuAVf=Bl_if!a14o|LBS&zI^HHS* z`OIR$Ep7BUfjz{*9;U6 zS~Z~M<_ogmN)$r-DIT@BVbCO?qW=(nnwpxOUpH1)J1?tR8QMTvRxV3j{gP%qp?|x9 z|D63A0&@qT#-=lZ06Gg-F6E^DcL(X>I8mIe!>}MIDAuAsr_g+aO4Bd_T)k9g20(=9RdG0UuCTZ?Ni5dSmKFk z_j2F?;@XBF*{#W=7(=2)jDIbAEV0Ba;SGMP#2S0zl#>j=Mduae1ASl?$E(u_6bC^NWR@)(hkB zePy=PfzX`}@*+jdD}QMu6H4t?$a mdV!Mg<-32q6mg$ONYq7O7UcIE!2kR}QIu7c`52-JlXmBMs6G(%lLI3eq4A(hbrLcP`X@ z&bPn&|Gnoq&%>5jzqQ_XzH^Q_#+d7!gqXlpG<-A^6qKui&v~U#P|n>)K{*?9=`4Il zb&y2~zED~5DOhQlncExd=vtu&=$PtQXjtiJ6KmQN>swiwTe8s6nHy`ET3MSIKhQEW zv1w~2f=k>qkWsMu`+bx%a2>l39@0am_>ZnT@5uYw2?a8|R_&5W&wS6F>CJu9nnx{@ zKVW4J7Rh=(V2WwmZEemgrTs)8UeTL&;n?%%E>hQ6{X9TlNO0#;(Wm zR+v`*^V+jc8MG_{MLE_Vg3_*N1Ub47Mv>05U8b@rGRmooei(@F-WlsZq;vm_;`XDp zSYkfz{XWsg`EPcD@(K>6rb`CT#JL9$&#u`G8Kj#>rPHq=oY$%QsYs}-nZF{`}*Pgt# zilVJKUV~RW4Lv5&)xNjg@!>5FZmYP$!f3DP&*94EWD2h~jhM`)X}<7(D7>L=xrV;BjL#45Os)d*Vn=!h(W4!^PD&)!xvPHW@*odmQgB1sR40? zJI3F)9(TOnKJ)bUt%+jg_0T0czE-*hpQoy^C@5|yg1paU?9`S{rBPNVawGIkvm2!!`~IAA@WeTg7PQGk^gYBxn6>N z^}b$*17EmqaQ7pTPQiUiIgFZ;az0@80Sn81XOe)EJbe2*Ze19ux3{-pSMs}Fbg2Yx z55ZtEcBkFIRrq5!X72t1COka6l9G~QqrUBpjmdUa>}tQ;jN2Rr6OpqLmFJ-xmZVO*CB@Cf$L;1S-t(>~UybH7O{ zl$@5fae7Oa;FfN9W_w`}iN&xKyBzJO2#1#x7T#tuCl;-;T^)UUgJjfh(l1=yrQBqw zM6d0G2D+t2mU5}-RebtOSFXTq>`>=cNtK$8$Y#lPZXO>UbXz$(9t`_UIh`EsWGk1t z>~B(5-oAZXczO5WfEpd{HiF2V)`#SZ@|e>`>q(7SPxHb?JLhUoMz>y^Ge71$ooIr7 z!_1Ey)#&N_4~+9Gr(445zp`g5AxL!iz@6x}%zMe=q-5e@?!n^r_+47?m z(WPth1J#bU{%REyD=u5T@>Zn+0fbhp#Kdl<(%cvqZ5^y0B z1UQXNMk;!R1da}vS#4LeG0U?mEjGKbD=W3Xy}vVp%Tl%8Ol@VmKK0FN2R1BZT!GbO zut<_I@z>^Na{0S=?@q(6(Cu^ue*}|@N6{N_W444)KCzhk8u>);8Uf4Ze0LhHa!K+# zShCd0?lke$u9TJnofeBL?zBqZdwaJa%1gSOcOybVzRVo|s>h%)&Q`DGuzl11TuiJa zKmVn<`A-0b zZsvL5-0;`QeKwDy%8cP~uHb!l6PsGD%JqbUQ=F8YJq9QGp~hLxb0{dEHt!lM-f6A> z0hg@Zo4LIm;C+XYkuhp|cDAX#qZHFSiqs`PqVT9b2gUuD%`bukGE#gaY`4LJsA+pG)=R@X(+LY$}`?QbPj zg+@hX=2XEV&0Jh#-el9-s-gL$Kb<{FYYxo+IRQA7^xor`c~3A?&`K5#$o zlkg7|G;sxO_&tB~JMa&#@yk9mNH+0@#XzB8(+J{&=c#*%{GtarO#!kMOc3lS@xR>p za5P#bE;S)o0V_7|>pfVwaVGeOTOH>AlMgE>ciLMgT4y%@`3b^(w+2>XYM)2u&%-@$ z=|U1A2O7gp^=Gwa9~$Z{p)CrHRE178^|-!tz}@ zx=Z!v(Wh=;WAlv+m0OZ?@?6u<(CDdt`}WdlG`#w=rd)*YZRx0~vn-~Yp`=VB2jo_| z=I@1@x@*7l_1AcPODOfu&(G(Ozf)k-z((Sz?jJ1i}{p^)d|;hBHl`j4 zg(Q$9^S?iIGVXQ(QY_LAWeT(fD@;sGVj#M|C(dt{Lao5crtpRpvY7btPBfY!<=vRe zL3YKBt@nh4gjSVODME^hibbD-NCf6qcGo5c)|1t$9hL`+rB{$hc$=vJl^gY@|2g|P zTk(jTvP!6HHI6$g@M*Ai&uyVRWqfzoXl2B_d9xpna$5Zo1_29ip|OccuU~q2mCF&! z0nP!yg{~1Im)%z@Y86)RXvOc`xuY*+VNviH(l%GE_cXDwBJns=pqI;z`+Rf9KlOvM zFzkV9vu=>(Y?~h;dj%9>Sli;Rm@iU{iE8hy7JA;1*)0B`rKQb=S4B9dGl z8ymau4${N;X4Ze*e7oI$*OC1~DJdy6*CXpFZVjWKpI+^2_*6D?Ky4wD`lq%8Iy^AQ zsTVzuf+C#yKO(2G`)@r7e|%a`c6P>G`_wIdd{mUHz_>HNJy58p7gD`bq-aa}_qP_y74I`M55W0^8jYmHFrojkn)pyN zLLFNx6DoN;uTaWnhJ>y}?Lf&Ge-C@E?y{$ouh~Fx*N=b|Sy=j=>YdSUb*X&oMY$-o zG%*63-l`g#<-y)8`G7d+o&NjU0!-_OLtvi_9v$cXBI=JV&578?OuWyl*C81(Se zj0Fn+`)L*Mo5g3_z`!vI*_@o3qPLt8A&>Du$94|tdtpU>Jj_{QAY*xDK? zGU(3NYU=9l-g{%p^1m)D7;kRAIoBB)PpYbnl2YgYeg9lH_7-z% z>+0%0eE6WEs%pE`{}L)%&Dl46iA8`04xy6dDivowuT|py_hHaqgu~*vy`&+p$tNJN z5sE`BFD2CljYw5h6@%$8U}zqf``A(ce&UX1sK)(xJ|mU3dfM8*Qm{X{!Tvee*_BmR zl9Q3GCuLs$UpF}(!|6KO(4fbO(U!$WL%`RNHz{1Sj@a4-dl8;>f>u)sR z$TSQLL>k_&sV68Zu-}-$d!qY+#oC+5Wbc0k7TOH35dfATvYvfE+p43joflVC<+$^J zbA4Up-w%$(<>Ykei}&P#O4%n|L6l{cN}JYi-{w0Kcn)`4ZvQ(S2C7Fhm?+ga?ZE@@ z4W<*w%gYN02)IxwB!Bw!32LDW*37GauhG|V;5t0Lyf(HZjN)AO=e>wrzKWxs<2YC< zl*?9HlWzT5Vls60?AhJ?U9-~%|IT0>!}L<~_;7D!WyRFgbThR{)GM{a%0&_#num2H zEeF~HlD>QQt`jNES&z%gGPo|sdwMRJiqUWw`}4K-GTQmZ18fMD<3noo+6i5F@l%jP zqh+eGxIW#2m8shrg-{elMf59kY01eSl}r7dc^=Vz%QeRPdpg%CAQT&Y@rHf!?&7f= z%ADK8ZIkbxkXs!t->6)z$%;C0-7M978`RKK=u4yfp&)VX0k(^>y`pfLuX!Rjd+9HM zAqn(-{oSLZow36*`qOo9a;p0QIdo)XgmPnMT3yw2w2IkwMa5gC=;2skIp&{J^fjrY zqeH97e~qrjVNP`|{@EKUxsUorMy#4&-fnJMMeXj*#$gb$DJXi5vh`)juYQkwvN6-T z*pX1*LRWjZkd-SIMK7qxMNpD{3*$C}??{c^+P&;Dt9dCKdDks<*CPbq1LTfxaM)h@ zhJ$JI?#YW!ZiMU(P*ec!r-?*99;vXFu6g3ynpk=Sc!h}3^iF8>Bdx{`lR=@$Mn6W= z;dJ`t&d0xFuB_I3JZ*E7Wx*rZr`bkgQmv@-bQc~$pilm90H#>nI z2qo?9S6Uc?zM{x_P-kJGu;rL&(C0EHSx=^H3y@z*#fC+b#)%24m<-WPNzQW}2|J^X zW>a5-jL)zL0k4pdecSMJV3I&Uj%sBXQMjjpth4)agkV1llnlSlLl@3bxLJZbcdp%G z`oyUB{mZ5Pd{W`CDvN0}WzTi#U^3CU z#!s)#d0ivGzka==*htm#op`ZpFVcj)Yl-{XP3uG`t|u{Kf+`c;?wJMJu(7}2W^7< zO>6<@vN;>5pcHdg@E%VMnboG?K$hNGnmFNcd{&rVzjPZ1DMDoUgHJUI?KubOQS`CV zf~*{S(j|MuxVg`c;FP@hvNTY*_tGE&IjjE6?z9d|13Xd>kB^T5R5&Hg2t)e?Z6XSB z!1~RSo0ymxHBwJ?Y$?elXX0;f5=N+9?4J*YE-qZnLGZH3cj$KX&t#S@nG)8AaaXhK zNWyiZ>_RQ7UmrZt+nkb<0#k56ZTg)7^7zRRN(0O(E9n}hd8I2^Y> zI>|fRRVA|O-=r@2Q8XNLPCO7^x3P$ z53Lt^^upTM$;_&^!W>1TIFp&#?cprb1MQw&b*9} zG~kgkfJM|>;IL4F;`HJ>1q_x)~$}z(V$F2#?g{%?@kQB;+XMzaCkJoC>@^zsWV+l8_-RlqqlN%t>+FeCtMkMFL$Pg3!Wke0S_Dw|T@bz37I zK}@o6aKsuuq~($}9jh5h6^#}OrGnPJ85kppnTJ>?WZb#iy{){IDjsKgxvvHN?r4M?IFN`HAStMUpIJRxf%n{g#wc$8|UCiV$|;_+YhLQm4;bQddg%CGD+e z^{c?b|5E_m>%%H554INj_L7t@$>*wB+t|!7YT5jgt4!Nt*%uyD_N0ju-M$_Da@^A2;8cGzWRxUM+Hxao)u{MEok}WgK)|284oj0_-%8(kM4oCra zku{vBqi;?1&B_rny3n&nU8JZcYboJsiPqvDm>$`$Yd7O9jZOE{SYKQ0&rizE&W?^A zf`Ay9UIt!8w~!*E0|@~s{`|tiq@g0oBmOH}ACy1N)!`s?YHQ-L06+f&)e8ED4m*w?CgFY35kft(j`eMMEBfib(4kBl*-^7 zhXm{685u1iTzYD1f#O1&_5w%qQb)o$S{~srT4fvH9-2RfgoNB6;ioqn{cyGk`UD?r zY6hKVECwGV-hNBdM>r*OZiSUSx?2mqp*TG~Mj2*>GQ0z8aeS6QJuL%5NFwYyi)bLF zrS0?;MxIfvEuEt!CbvzV@43Cdhx;_gX}a14ecxtvRP^#IBA*j}1ei6+)Z_5YL(*Hj zSk^(o8-4VR7GZLryLCH6>ljxziL-`MKiL$}t?uF(3;kK1G(N~lGPYNpF=v2K-xXx> zluMfqE&6h6^}WRm+1 z6;O_ILHCBJq*KTP@-CX_?LW5@#`4Ul1^AG$2>ZV%|7%k1@jfKA2?!M{$CKkDKp)b=2!F$G=VQX6pNZPfk zSZg%gwbDXYLN0-9r`@2ROlZ%R$6hifs}7@)ScwMP;|wDkRK+x*5k{vFGB# z<;9y@eya}@G9lg9t~K6y#Ue`05DiqFAonue<*t|0sTN<|Io{#|*j+E-yH_%~0TZi@ldWmajXi{A_`G|1bZaE1593RgY z(gQt9rX6AU1BLe_%kS|iOO`xWPUDaeR|roxYh(FXx-iG@$a}!&C~)xHQRtwB=rsx1>uaQ-=N0Z)Gn0#X*a!|`+Fk`AdC8SmZGguV&-+h!Oh*#k;gJ?faYV!|d>J55(stFpVqD!i-AZEP%f!ajTtJhn zo5B-7f7j6=K}Sb7os5O*qtg=R;pIidVnsno`Hsjbo=0G&o%3Y4%6gnwp?)I789J3K8(b?}cy%z|#ll5U6VcR+~Fa=0B&t1p|7lbUAXs zUw|GeQ#$Qh1C6%|5C}adgBy=uf({RB7e8xYXGT6+OM{@O)`#fSN8=KKSn5>)P5ANK_eQBQ?&^MA{O>R`bpXtm#^9lJAx!FJ}f%>@-;LHDO>@8i`)QHyc@qroDvdk-moW$^R4t>}_ z)08*UaBc;w16C!?gI3qx-d=J!O`9vA4f2I~%yF#)D2`B;6O)oCFW5UeLNUt+UJQF?mSiGO*H6%m!gW z0e1A{s-Hk8%sxn=`p(F8oW*%^XxWu480EUpa{!zlgODoZ=w$9Z(-9UY-1KjPf`SQ> zLaVRSf3`(DdNYawfy(Z@AL5!9M|a99NMBXnv=B6_+P#?9kuJJX!@|+@i7BwjXPK}! z_UF$R4mZ+Dj{){DSxjAOQ;kf4q6ca4LqT|28o8{Ix8|WlU_bIb)e0;E0)m@2xho%n zBZ0$tzsO{0d%1MXWih+dJzUCQcXiF4S2>xH{7@!a(%wHH00Rw8Q~pPH)(%vP0Em&? zvH3T%#LUe0a2!I`mzS5Jg`5il+eQ3q>fVg2fA2M%P95=U5Vdn}tgR*BlDTNj@If4` z9aaj+YCt0g^~c7_D*3GMVh&9!#`r0c3g zeY(1qi)#G*jZiZC$!|dG@`;p~i$@bu*QS3H^C>C$P$nzgSD^emP}00FC~y7Pmosi`TT zE<117*xJe`Vza-yM?wOo1`5lfuC!AcrcT2ra}qeGU4feGsbVpi-<~GCN7xT6>m5Q4 zr(5{=EYAB@W@f9qyLK+uQRXC25??>Vj^ao6!*jVcjTw3f!u#q-B_k74gkcvnm%wA} ztu+z#Wk}D$#+we6n8a~7g95^(^?nqES3m$rY{ghiW8E3p7GT3eFu1w7=LlF?FY>!m z-lKs=4oD5xiu>nxU$l7rKm92c)V4 z6sWwsheE1_Rv`f-^A~#Y9khYoe8y9E*mX-M1M<=!EB*%ngxd4Lq*N@|AR5(xr2|;3 zKV~*swO5y`O?U4U4y6*5Jb&?mxWUln=M*M;rQAn_&x|IiNU4spU4;$ZG!0dwo0Aj+ zL6*qTjSUjdHuM1L+Z_rOc54&RuR*u>b9R;yP(G3CVLqfC=ntjTh4?1@u+w0}@U0Ky z&j)i4OneI_4@rjl^G!^=E84P|XemjMG?>!W;6+DLEtD7n76Jb|%rQPh3Q8?sze7MEd=D|=2pZBMQJM<&Ud90-C9=V=B@*9Y7j1ZL@#^hcY<^3zXwzW{pQ}Y zaJ@}3UFduM&=v_AJAlUKbb{1`z&X>%xqz}K5R?Vn5)?F(-ppRezR*;PW1$R%+oF9tNh8v&j>1<*mCA`cGfpY$QUMtv6Vy)e7a&FB+ zjs588RC_o4^rSJn!%35$?L=31$qi4N2Fc#=ZX6*MvZ6}XW`LVEGu^Wa;we6`*>`nz z1~uN|TtfMz{g=FI?o_2)otT(dTy)%+5j{?k#Gsv=oa9+OM>Fnihsak+zea=w1tTA6 zU8s(mB(g>kT^=ZG`uzFK3E`y|glOu{w=`I1FiRqUl>kYz9Y}X5yPNmERx@>BMTvz* zXod~A#)aJl(JO%4#teEz(5ZI`FWPay7EG_K)Ii>LAwKJtL8-kZd1>fTZ(e9n&<%Y2 zg;bvLciz;cTq-KV!{wHgb{U-Cx3{)>Pr~mhh1cO3c@H{qsOM~)YWis1)zIhQ9M_V1 zw}Gm24w&2wd!AKH;Ni>x(#~#=_~zu~K$CDNbA12=miMH>yW^Ko$Wk8m3W)am&wFG8 z2x4Mp-rL=UHG1#dZEI+_kXw7Klo#h2UrZ(*`|)rcgOA?K%&b|h2-`){@-C3T6y`hW zgK&OUBk?IB;fhGLkBf>N0P<0@92$V`JPjWF(FIh1{?EI!t$@a8I7^z%C!C2(?bgn5 z@DWUAhcYq1VQki8a89K~;ghhYX9E-hZ`sD1nW?m z*DnQ#4aC~fdnKL}9u?pO$svmy6jsSgNwn)(ksQCJchD>mVd*G1+z|3?e~|&^2?b8u z;ob%$8a)@oySLDkLkxgBY&?#10`#9-y^T-s3gARRIX#EL3ZU9N#~o9lU=n`cerOt% zvw*E`rw?((Bp18GYC}`mx}0n8PP=strx@BSx~G#~4VQR~GSY4vvaMn=H-_J6!xrmd z)N1sta~)wrsk&abAdOOIBSLK4>4VEhG5PuVGAtULB1`z+%a<>ECn0EIF~B!Phsp#S zW9e`P8%oEm1;XiUsB3ayqXS{%~&qIxrmWE1dfxmp(2B=vyq9#Opx36p(yp6I1F*ICVn_P zSam&Nb=v*)eYmar>d}#ohH#m>VO_oETzWyJandG(=VP77$2t@|Zaq*3~sLyyzi&6xb#<*4H(=fr}DWRw*&Y8zFpZh}F9VT>+dzM#G+T zXjVXT!kY2@D3*{6a#hg}1n3@ZD;pX@^J$C|YL2D=$E_O#7{C!?h3mIU05tHt`WYh&cH<=3B!9H>EIm|GeI=wD3?B{1eBq!Jncen4fAy-$wrSPbP z`g?4d#yG_)6;=ig*P+K0KX~pVc~dqO2#Q4j{NlF_KJ1Gm1m2_EVqjwG|H`|y$Lzr5 zjY~HQ{2D$pR_4d-Y_O(g)9C8!d9>n>PfdNnP(gW!%AYA-b7?4u#aKsAPdtv}sDX^u za~-ET<7q%UrU&Hp#!3PEEHDYmT2bItK?^Sv0a?G9^MwOKl`Bd2>e*7JLZb5=N&VIN zQLzx7_~786`>~AlfYnx$A-`N2izq1@J$;C&bZmTE;c-Vxan=(k<=3lg)0QTBC0K$zbH9X0Vrt+B^tAMWT&T7FpNB(#QMsyKbHiKGn>Az zygC=#V^{@Fd3n)V;N=O<59;VV;$fvW{&C5j76ntMYJVywk07J|2ULTN<9Q89pLg%p z*4D-=cPH{bX?%lBwmluLE=7@{SV(r&==hAI98f)eE=pN7*HUoM44a1`XG+n;qq11d z#f!*zVUT2HZ6GN}|IzmN2=Ef~zycHweEiO)Uf9q<))VvX>(>ZIGc`o!xR=+>S6AEv znJMEOy*}Vx@w=X;9Tm6_RBqAh2X<*po}MB8Yr?6olA`vETio}xw6u6$y^l6cUZa#w z?V!O&dGO#tv#rJ@aw-#kUfvFsEkTLF0fZ=2rja%~-Ffgha>}3igmsBW>J02Wqp@U$ zLX8viiO@DTty)#Y!o@L3X+(Q`I9d&UZpp1|*{mNxP1PK%RPy`bgFOF0v0zF)cK{9W zy>6xL>PoQikz-WI{D3X>74W1*re7oCmt&MkgXHnN6qiQfldjGTIl|Nj{?G}R%^=`# zDg!@gQG-aQ(mt5m4&qJ@y==Ut3^XZE&LS%f(T>+>f#VM0BDqO!S$Cj;PC6`t2b}X zo#?Y8sdo5oZlF-*5}nFDEY?=+WCS zcfzqxCx={>)UT~=O=7)|*q4ioV*uF0!O7T=^P~$*D=$J{?8~*awKW4FmX;ZKc!u!D zq+389?$>#sgW-Wu9`QR_2tC*Wik&!@CvK+H`8}8RbRXf%E9yJ&w+mg)Ti#eB`YLW_f91mt9yRj z+|n|sFAO-6E<#}SqFNsp6?#TtC*CO2sJ~#U4QTM8jPts1zkjlZ5isFPL*t~p#lfpN zf(U1NsnQm72HP>`aG}T3m$$5*5)lz8`MMU#Q1EQ7j>QSF7K=B;#`FSeQ3gRKL_D10 z4hU&s&a-w-PHe0gn;9!wtm6yG;1Qx#Dtb|>7$awK^J!a6LJ=5eq4=Z-h2Hd}RXTEg z^|iTqaIgYS7XgcvgzGbeI}FJU0RP4UDB}GMgUw3bdmFRVMvscXuSg2fSGSU*Sm=oZ z7J$S8w~CG7WBdWSr{fxrEM%TofAiGT1OSw6RXLok%vd6@K>N6^krJhPqm8wPL-ZrC zM__JAfaO6HUM*qeqOPN?Gu2+J#Qb&Esp@N9;dor zQfET_d-C}Fd}M5Fo9&<#5=5Jo;o)Y1df*%ZyM)XrW`^wbDOudSU!1KWa^KBEXrZmx7)Lvj5(IgS($Jd9S*=hW0&jX68uE z=@>SZg`C|!U4tHbJG-f)S!xt6?)~1h7w*enZM?`v zQ>5**Ly>W^J!D2M9y>+E99R#+{#9q9YJ-GF{3L#(&XG-wzs@L>)yWg__xt;5w2X|z zxXK29M+D~IAMQmq($d_#zO$3|>Wj<83tY

    (x`Ex*V&Riryi69fr6!(8+qkTmg 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 NqOPs>Q1$f1{|4K1prHT& literal 47538 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 diff --git a/docs/build/html/_sources/development.rst.txt b/docs/build/html/_sources/development.rst.txt index 02a00f3..4d0d096 100644 --- a/docs/build/html/_sources/development.rst.txt +++ b/docs/build/html/_sources/development.rst.txt @@ -19,141 +19,17 @@ Any changes must be reflected (manually) by revising the lark version of the EBN The test cases present a more challenging problem. -A tool, ``pb2g.py``, converts the test cases from Protobuf messages to Gherkin scenarios. +A tool, ``gherkinize.py``, converts the test cases from Protobuf messages to Gherkin scenarios. -.. uml:: +The ``gherkinize.py`` Tool +========================== - @startuml +.. automodule:: gherkinize + :no-members: - file source as "source protobuf test cases" - file features as "Gherkin feature files" - source --> [pb2g.py] - [pb2g.py] --> [Docker] : "Uses" - [Docker] ..> [mkgherkin.go] : "Runs" - [pb2g.py] --> features - @enduml - - -The pb2g Tool -============== - -The ``pb2g.py`` Python application converts a protobuf test case collection into a Gherkin Feature file. -These can be used to update the ``features`` directory. - -SYNOPSIS ---------- - -.. program:: python tools/pb2g.py [-g docker|local] [-o output] [-sv] source - -.. option:: -g , --gherkinizer , --output - - Where to write the feature file. - Generally, it's helpful to have the ``.textproto`` and ``.feature`` stems match. - The ``Makefile`` assures this. - -.. option:: -s, --silent - - No console output is produced - -.. option:: -v, --verbose - - Verbose debugging output on the console. - -.. option:: source - - A source ``.textproto`` file. - This is often the path to a file in a local download of https://github.com/google/cel-spec/tree/master/tests/simple/testdata. - - A URL for the source is **not** supported. - - -DESCRIPTION ------------ - -Convert one ``.textproto`` file to a Gherkin ``.feature`` file. -There are two steps to the conversion: - -1. Rewrite the ``.textproto`` into JSON. - This relies on common Go libraries, and is little more than a syntactic conversion. - -2. Rewrite the JSON copy of the ``.textproto`` into Gherkin. - This a little more fraught with special cases and exceptions. - The ``.textproto`` semantics can be confusing. - -FILES ------ - -:source: - A ``.textproto`` test case file from the CEL-spec repository. - -:output: - A ``.feature`` file with the same stem as the source file is written to the output directory. - ``basic.textproto`` will create ``basic.feature``. - -:interim: - An interim JSON-format file is created and deleted. - These are only visible in the event of a fatal error creating the Gherkin output. - -EXAMPLES --------- - -The ``basic.textproto`` starts like this: - -.. code-block:: protobuf - - name: "basic" - description: "Basic conformance tests that all implementations should pass." - section { - name: "self_eval_zeroish" - description: "Simple self-evaluating forms to zero-ish values." - test { - name: "self_eval_int_zero" - expr: "0" - value: { int64_value: 0 } - } - test { - name: "self_eval_uint_zero" - expr: "0u" - value: { uint64_value: 0 } - } - -The Feature file created looks like this: - -.. code-block:: gherkin - - Feature: basic - Basic conformance tests that all implementations should pass. - - # self_eval_zeroish -- Simple self-evaluating forms to zero-ish values. - - Scenario: self_eval_int_zero - - When CEL expression "0" is evaluated - # int64_value:0 - Then value is IntType(source=0) - - - Scenario: self_eval_uint_zero - - When CEL expression "0u" is evaluated - # uint64_value:0 - Then value is UintType(source=0) - -The source files have a "section" heading which doesn't have a precise parallel in the Gherkin language. -The sections become comments in the Feature file. +The ``features/steps`` Directory +================================ The ``features/steps`` directory has step definition modules that implement the ``Given``, ``When``, and ``Then`` clauses. @@ -168,62 +44,18 @@ The ``features/steps`` directory has step definition modules that implement the .. py:module:: features.steps.integration_binding - Provides step definitions for the features generated by the ``pb2g.py`` tool. + Provides step definitions for the features generated by the ``gherkinize.py`` tool. The ``features/Makefile`` ========================= This Makefile has the following targets: -:%.textproto: - This copies textproto files from the source directory - to the ``features`` directory. - The source is defined by the :envvar:`CEL_SIMPLE_TESTDATA` environment variable. - This will overwrite out-of-date files in the ``features`` directory. - - It's important to use **git** wisely and start with a clean branch of the project so changes can be rolled back. - -:%.feature: - This creates the ``.feature`` file from the ``.textproto`` file. - -:scan: - This phony target reads **all** of the ``.textproto`` files to be sure they can be converted to Gherkin. - If it concludes with the output ``"All files scanned successfully"``, then there are no surprising or unexpected features in the ``.textproto`` files. - -:clean-broken: - This phony target removes empty ``.feature`` files that may be left over when the conversion process crashes with a fatal error. - -:clean-features: - This phony target removes all of the ``.textproto``\ -based ``.feature`` files. - Manually created ``.feature`` files are left intact. - -:clean: - This phony target removes all ``.textproto`` and ``.feature`` files that are built from the CEL specification. - Manually created ``.feature`` files are left intact. +.. program-output:: make -C ../../features help Currently, the following feature files are built from the CEL specification. -.. code-block:: bash - - basic.feature - comparisons.feature - conversions.feature - dynamic.feature - enums.feature - fields.feature - fp_math.feature - integer_math.feature - lists.feature - logic.feature - macros.feature - namespace.feature - parse.feature - plumbing.feature - proto2.feature - proto3.feature - string.feature - timestamps.feature - unknowns.feature +.. program-output:: make -C ../../features conformance-feature-list The ``docs/Makefile`` ===================== @@ -231,58 +63,11 @@ The ``docs/Makefile`` This is a Sphinx ``Makefile`` to build documentation. For more information, see https://www.sphinx-doc.org/en/master/index.html +.. program-output:: make -C ../ help + The Project ``Makefile`` -========================= +======================== A top-level Makefile has a number of phony targets: -:build: - Runs ``uv build`` to create a distribution kit. - -:install-tools: - Pulls a ``golang`` Docker image and builds the ``mkgherkin`` image. - -:test: - Runs the Python 3.12 test environment to execute a quick test. - -:test-all: - Update the ``features`` files and run the full test suite. - -:test-wip: - Update the ``features`` files and run the WIP test environment -- these are tests flagged with @WIP markers. - -:test-tools: - Run a test of only the tools, then scan the ``features`` files to be sure they're still valid after the tool change. - -:docs: - Build the HTML documentation. - -:lint: - Runs the ``lint`` test environment to get code coverage, type hint checking, and other lint checks. - -:coverage: - Reproduce the most recent coverage report. - -:clean: - Remove a number of directories and their files: - - - ``.tox`` - - - ``.Python`` - - - ``bin`` - - - ``include`` - - - ``lib`` - - - ``pip-selfcheck`` - - - ``.json`` - -:benchmarks: - Run the applications in the ``benches`` directory to gather performance benchmark data. - - - ``large_resource_set.py`` - - - ``complex_expression.py`` +.. program-output:: make -C ../../ help diff --git a/docs/build/html/_static/basic.css b/docs/build/html/_static/basic.css index 0028826..d9846da 100644 --- a/docs/build/html/_static/basic.css +++ b/docs/build/html/_static/basic.css @@ -741,6 +741,14 @@ abbr, acronym { cursor: help; } +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + /* -- code displays --------------------------------------------------------- */ pre { diff --git a/docs/build/html/_static/searchtools.js b/docs/build/html/_static/searchtools.js index 91f4be5..2c774d1 100644 --- a/docs/build/html/_static/searchtools.js +++ b/docs/build/html/_static/searchtools.js @@ -513,11 +513,9 @@ const Search = { // perform the search on the required terms searchTerms.forEach((word) => { const files = []; - // find documents, if any, containing the query word in their text/title term indices - // use Object.hasOwnProperty to avoid mismatching against prototype properties const arr = [ - { files: terms.hasOwnProperty(word) ? terms[word] : undefined, score: Scorer.term }, - { files: titleTerms.hasOwnProperty(word) ? titleTerms[word] : undefined, score: Scorer.title }, + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, ]; // add support for partial matches if (word.length > 2) { @@ -549,9 +547,8 @@ const Search = { // set score for the word in each file recordFiles.forEach((file) => { - if (!scoreMap.has(file)) scoreMap.set(file, new Map()); - const fileScores = scoreMap.get(file); - fileScores.set(word, record.score); + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; }); }); @@ -590,7 +587,7 @@ const Search = { break; // select one (max) score for the file. - const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w))); + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); // add result to the result list results.push([ docNames[file], diff --git a/docs/build/html/api.html b/docs/build/html/api.html index 23893af..0adc30d 100644 --- a/docs/build/html/api.html +++ b/docs/build/html/api.html @@ -7,7 +7,7 @@ API Reference — CEL in Python documentation - + @@ -73,7 +73,7 @@
    -class celpy.__init__.Runner(environment: Environment, ast: Tree, functions: Dict[str, Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | None = None)[source]ΒΆ
    +class celpy.__init__.Runner(environment: Environment, ast: Tree, functions: Dict[str, Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | None = None)[source]ΒΆ

    Abstract runner for a compiled CEL program.

    The Environment creates Runner objects to permit saving a ready-tp-evaluate, compiled CEL expression. @@ -117,7 +117,7 @@

    -abstractmethod evaluate(activation: Mapping[str, BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType] | NameContainer | CELFunction]) BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType[source]ΒΆ
    +abstract evaluate(activation: Mapping[str, BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType] | NameContainer | CELFunction]) BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType[source]ΒΆ

    Given variable definitions in the celpy.evaluation.Context, evaluate the given AST and return the resulting value.

    Generally, this should raise an celpy.evaluation.CELEvalError for most kinds of ordinary problems. It may raise an celpy.evaluation.CELUnsupportedError for future features that aren’t fully implemented. @@ -144,7 +144,7 @@

    -class celpy.__init__.InterpretedRunner(environment: Environment, ast: Tree, functions: Dict[str, Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | None = None)[source]ΒΆ
    +class celpy.__init__.InterpretedRunner(environment: Environment, ast: Tree, functions: Dict[str, Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | None = None)[source]ΒΆ

    An Adapter for the celpy.evaluation.Evaluator class.

    @@ -175,7 +175,7 @@
    -class celpy.__init__.CompiledRunner(environment: Environment, ast: TranspilerTree, functions: Dict[str, Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | None = None)[source]ΒΆ
    +class celpy.__init__.CompiledRunner(environment: Environment, ast: TranspilerTree, functions: Dict[str, Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | None = None)[source]ΒΆ

    An Adapter for the celpy.evaluation.Transpiler class.

    A celpy.evaluation.Transpiler instance transforms the AST into Python. It uses compile() to create a code object. @@ -209,11 +209,11 @@

    -class celpy.__init__.Int32Value(value: Any = 0)[source]ΒΆ
    +class celpy.__init__.Int32Value(value: Any = 0)[source]ΒΆ

    A wrapper for int32 values.

    -static __new__(cls: Type[Int32Value], value: Any = 0) Int32Value[source]ΒΆ
    +static __new__(cls: Type[Int32Value], value: Any = 0) Int32Value[source]ΒΆ

    TODO: Check range. This seems to matter for protobuf.

    @@ -221,7 +221,7 @@
    -class celpy.__init__.Environment(package: str | None = None, annotations: Dict[str, TypeType | Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType] | Type[FunctionType]] | None = None, runner_class: Type[Runner] | None = None)[source]ΒΆ
    +class celpy.__init__.Environment(package: str | None = None, annotations: Dict[str, TypeType | Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType] | Type[FunctionType]] | None = None, runner_class: Type[Runner] | None = None)[source]ΒΆ

    Contains the current evaluation context.

    CEL integration starts by creating an Environment object. This can be initialized with three optional values:

    @@ -365,7 +365,7 @@
    -class celpy.__main__.CEL_REPL(completekey='tab', stdin=None, stdout=None)[source]ΒΆ
    +class celpy.__main__.CEL_REPL(completekey='tab', stdin=None, stdout=None)[source]ΒΆ
    prompt = 'CEL> 'ΒΆ
    @@ -475,14 +475,14 @@ additional types or extensions to celpy.celtypes.

    -class celpy.adapter.CELJSONEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)[source]ΒΆ
    +class celpy.adapter.CELJSONEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)[source]ΒΆ

    An Encoder to export CEL objects as JSON text.

    This is not a reversible transformation. Some things are coerced to strings without any more detailed type marker. Specifically timestamps, durations, and bytes.

    -static to_python(cel_object: BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType) BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | List[Any] | Dict[Any, Any] | bool[source]ΒΆ
    +static to_python(cel_object: BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType) BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | List[Any] | Dict[Any, Any] | bool[source]ΒΆ

    Recursive walk through the CEL object, replacing BoolType with native bool instances. This lets the json module correctly represent the obects with JSON true and false.

    @@ -513,7 +513,7 @@ else: return list(iterable) # Let the base class default method raise the TypeError - return super().default(o) + return JSONEncoder.default(self, o)

    pj5fZNR6mu}ON~(~V&_e6!{cjFEyH|W4*{P_XoNXw?bxhe^lY729Pc9l%3Vq}$ zg;_rKRtWb4nUAvkaw%XJI@;ywNRX#F+69VNdrkbj+xT#e*F@M^;|ExJej;krtkvT` zCzg+10>LpxT>YHbTau23dAZ<>JQ_w^rjCY@@16-q!#vdfXqeXReLw1BccI**L)>L7 zqX%hs{;c(_&3Tb$)Tjn?>YteNY1~~zbR34aPlVq4CHUfxKyfqunc`tH)SCG;rSmSh z^a8?sL9IrkS^tYB0WHi^t}-`Y03Q3wPX`K&Yh1N4wHdpUgQ_@u30prbony0MdL+#pO1d105{`+-*c5eTjHXS#hxsE06m z2K9k^cA6lA{KN<7e-wb}eHb8%{9Q2O%MSvPJ}$z`>v&|B9~lu{eHw`5@`GRmmmh>8 zxBLu<*shVyQ=}F}#c20K7M`ySg-kD5jS0`lIZ_R3n-Mh!Os=9IWsB zIf|<{TKFh>t}4<}qlQ?1am*ZJT(W>0!bld{)F>WIF*C(^@S*~ z-uN1T(J#Wj9F-V11xnbhD5UHOJB~uawUkWQ;GrChu?-YiZ;TD%=oe-0Kt;xlfl~G! z6jJt-eJ2VD*HSWN`H>uqv>!&X^+sBbq+hgs3>6wT2ujolb%Q=GmsJyrtP_n)Og_J#6-;P4UwUkWO zh{HkNi(-P9YV2c7X}3?8H2q6dSlj?8O}~gj%ATfAqL6ScCDSx`Cy5P`DE%Vt5Gplp5|p?X zp^&mC?$szHTuaHs^^fIXoE<}P^~PBrMZf5JEh;c>2$Zh3p^&nt>kJAB*HSWFmj?^R z_?YXDQEa_Y_IPyyge{7$mp|=5fS{GXIQX zg7|BU#L_)cMi0mgYP2c)`7tUpPK{(c_~jL>`bs7 zj2i;2J2?@Bg!`zWr8adZr=pOu*U~vCBwS0$9uyJDHldgx@0p#EY!sClr$(|J0);m$ zlue<)AY&MzEC8clvFsL9V%!vHEPE3Q3HMSomfep+%3ez!Kq28;O7@|MSoR2t338v= z8Oy$m%8XMZ*$%;yEEdeZi6VonVFa@vj($b6AE6@S#z3RloXf!M823{&njM5f%3e#y zp^$JbC3{gsG+T>eg8XN8Mzam5%s4fY?Z9jGSUkHF#Rl2Kh-Vy0zarWQDl~2oG@?~d zNVu<}5p6FDDSIv5g+ju$l z#RPfJ?2Kf0pfcmsNVbDl0nP&1Jt!>56h&kD-vV z*V0!}NVt}g{bz}L`V+4ydK$$AIgk;{4sJ|O(HZG^4@_o`)TS=ur>NXGMGV%qfwbUq zFhTAe(tJ80*gbAb9jGfmVIlUg0}pF%n_3R550KiNFO$z65*nD#LLsFcaw0b4yd1^U zTewMgGmhcVZD{%$R9M`hQBIUmNH`}9Eww2*x(mp|?yMsQ9rvJ^dh?uF zQ9SuxRA!tS$#w|tk7AwT$53RDHH>jb5JzSiQ=4e^MO0+m7-%$m5`~2ODH_ebheFC; zOFu;+;aW=eqKIg=;0iF;h5W}DcFc-sb`&ZzPK{(cg!av`fc63u9Apq9poO6HE2a&h zQsX8;W7PGBiZLrNZD)Y?@>s&mXbXvB9i?xiV5(uq^QKDjv_ii9&u&jX$I@uAzVx?w&h`9!W_5BdOmoU;cCa9rV=jmGq*YR({m$=jny2D zdn{C-)riKN;yrWb+^L&9%xg0Ia9^h?9>2A5!JIkrxw=n1FlWx1n`Um9$vM{%f|jai za`Z!rlW7}Ke|0}unw!?1Bw2mI0td2Fyc744(PH(+`oZd`pVa*;djnOr%W6TF1N8MUP z*Njz*GtQ6biOO1-F~S%vjQ5;VgZb|j&z0AxbIxwj!XA3DohS=CMTEl7`j)q@R*>}4dUIG=v~X`RfCe;KI818D_h6L3Y%LqqXm5It~qlijtIJf68BZ? z(RB0>)|;rsNNb%#?i=``wf3s1u|mVP3YBU4uTpKu6AkOuo>F7NDij;dLfKMJmkkxf zB0ppkw_i)c)wDidO45)%Ug?JhrH`+$dtff2o8B+1CxaVTZt!-Snxh7v6#sLrc~jHm z47bKHY2tF{hXQ2fUb>CA%&B_srs&Ed z4Vw$4x;x2d&4 zV|AVGMR`DJOl1RJGLTc-W45J??&MNkbP@>I%WE`AfgHY3hjkV2R)`t zoaU4=dADnuGPROYrkVgLQzmhlN}1%l6jP=k)YMa^54BI3yeJ1GD<9y=%2=t`81@`F zSFcXm!{W0c>qfoL@O=7f8|6`h){RCEwb>rGYn0|~xArD{J4kV*G2yp(rM;_ZSBkc1 zb^97?-G+qUx(;b3QK$JyR9y^3ig*UKNd1sUjXM~-dr6<(7}ru6Q@C z)?NKf#W^KaLLQk!9TdJYm`a7eWKr^6A%Q(dim^;D2~}9R&O61;y@cxUP-a*=@Gj{4 z*wG;{YXV^WI1u!D_r2f7386NYdTqGZsD3W+IkU}QfVM%VH2<91rhe9#t{vjg<___Y z@K-1#V7gXALWgEwMrhC5OLxSGC0;OR0r@2;F339#S{xmlW%gcA8|SOu)SBv==VQubP!Mj_!^N)ECyE_FMKYqq;o-0Z?hlnfRk`w2bAu#zrNvkEHfh-)ZH z0Zw=p(_dwNSar(beD-iP5M={UH}%Uo;e=;_xZ3?%&j`tnSa5gkVzX8+?Y3!+a(8KmtSh3$$wt+hEKG^R4(o#!)rHh)X_DR*XysBb zRMztYTPAE;cr4WDx3sRwWT;!YYR%eMY?OAZQl&NCTBOS64&;ql&R9w#60lXe**Imd zh%wG&C1PxSm@U2r3Tw8-l6m@HRMgI_R}-^gGDmUWQHEv@nb zp;5wJPp#6L1sEbiKyGdICDXrLvvCva|O^&Y8~_q`hwpUpdd4O}Eyqvo==9 zO=uB|7SqJ?eZjh{FeOfM7__4j67N%HzV%nf zaH9*|`{~Fawc2?)63)Y4aCM>Fv~_LZSapv~E=psftS`zLRd3trkC^o5q$s_pQd6`! zn_BHEp!u{B3QUDIUGV=Jk9j<04&lZ%nGPD+xo&Dm!tRs(t_dTUU2!sV?j4I_Oqlcps3iwt0QB~PBYs?$08G)oiQ1+i zm9eDTrts;VC?sI|Swlh>l0J+=0v3`qr0_!0(g+hLPXI3vzu-Ci=TO|xTk1n^h;D$Sp9MN2ppN> z8j8}sv6A2~`@cc*G%j8yHx{#a6z<5J*9)zBy~tA!uqnM(W{XEFuSsFRFgq5Hjv-O7 zJl!z4zj)NfKK)ocIx;2!Y`1O{7R5^d4DWb2i*=*(1;gaJ(WUgxST_n}mF|*JXw$uy zWf`kQ0iRJrwQE^uqRgc8)uKHY(zY`>Boz}!*66g}ttR&Q%0X*mqE>D0n6N5#y+OO+ z+@&Hh3tkf&<1BaYWqv>p*kx;K@LQ~HEETsXMsdHqo%Q2euc4zt zNOC&XqFN)i(CoC{0_&+`KrB5+=yrnEr)f8BV^7r@qftPqQfydutyZnohXw{t$y>CE zwr-clw@uiEvF)^#cA_9?J2G;KJ$-?=j6U)<_KT_VJrgBr&fm0K6`OX6>SFXcC=JH! zTc4;l%VX9~+n(|RV}8J*|6Q<~w(8L-9keC5)S&QIF6)3;5L?Bx~f?{aEh z0HhO~E+B4bkg`STcKVK^HsPKkT8&vG(fF!L)v7m(6SQzYIZAFwdyVyC{*ZOOeQlo3 zcByYWdHeHfH>?^MI5nh}yyT!(4mG4GDHi?(BS%JDBhVGfEW$+eO@Pc|U6eE|oL+n* zTTp7am=stmRO(Zt*D>n~d4>epag0_?rDE5vRT8aTYlUT^P1AOrB1Q;x3hc*R&Mtn>ME}DqMIT_IU&Rk1 z@yZO00)(vtbV^ZQ0#&*}Dy0DB89bDDY+d@Sn*2EKYAI)&uW%5jl6#>FaRYvL$fwLc zmZD?$NU~@=;;+3cd-!B^sm$J0J6O3G$rKPhaB{c@t zzgyy)9oKWB%+H;oUJjPNlyX)5Ng%!#Ey`im@!J?FvJf!?$i9?6&E#T zU&9OH+D=Wx%fVq@JAdj_H-GYJK0q7r$A(-pi&Plp?Y<~Qy*x-rROAbq{#D@-D#hY7 z#;8U}kEKr%!@Rg`QYdLl9mOkU_VrpN^4sSEJzOfd(1?QX-E=F1wXq?AJ_6?i)xETzPy%Z$v z3*Bp$*;O8J6+R1U9xbG~`!G5`JKI<+^-oF{HxYwJ!LPT$r)MZISnw z_lJz+t$-rELhK^9Q6%H;vi89ATqyH)5`gkDqt2>Lq0C26xq(Uz4Jp|kp<~CHmwpBX z7gc8wYZRkoW~Fid3kyNL9|99+BQLnAxuNhOFkeH}0NW_07mhqW!*FuHBBG6x_oE^r zR45SaD%$L&4GZH%1VdRL&7vmar^4v6CgQjB&ZvoCU7K4K5jveeAgoar5eUC3-P_AZ zMv)}0F2We8U--(BP3wMg1&cY1+%HRuesWQ~A=V8=N+DPEiZxpv=x>deX}YUStCgWe z-n1HJ@nq2}V}_zgkmn2I*9*0&ZcOQMKD$R(6GeX7%#A`>x_7&_N7UY%lsX?TK+4ov zT&7ZI`7XWGnL$mxfc_Kh(`V0Lfg@_SGXCakcD-8OZOfCUbGn*mNNf(HLubWt)Pr&d znf#>V!(_wR>+;}Dyqrs}5%8}VlTTwT3yh~?nA}VLx;}KT)*byEmvD7?31m2dU72hy zSJ62qTw6~EHOZ66gLd|>4i{)I)>pe%=*1oPQ)aW5hxF(XG{$Dg@uC+}+fmtHn=1RQ zC?p`W(2&q7`*9Q!P-U+ng^f7id$eoEoRgfjn&sWsqPTm@RnsZ&ZYbKIHfo`=0yff+ zjB!kxBLLruLIRlFrIsEmp|CTYY&1U`ylf>>${b5nYRm@WFIs;iY2c~VGz>!q((X&#R38yKbC=cm#PPL z*I3M^n{cx0Y!vkJ(#!+4>E_e}%aSZlY|AHdr=y_jPcgNzPd}!Zj)@;Mw%d0Tmc|j~TN}0q0S(BZDkhC(JULXSHp-Qa&0= zZH}Qwa#HO&Rb|UJdbnjxQE7DPTB})Ul*-l~I#0sguS0WFl^vlOrWD#^z4b&I9?K?| zX5T_tWMe1#{9X115|BaQO&4Z zi(NU5hCMk&d#VP-HUPOThmP?Jos%;A;WDD_Vd`%`_Y*mb&xq#i7EQ`dZhnl3JFeeu zT}HOZlYwbtMNYfyIPLFQRahlV;JWH6x@y%+yBQOFJ%B zcD#e`5udk3^}U)Hy0XP5hHmgy2AX_7bbes#;*FgczbDgQl-4b{*|$VB8)Nh?P5w@% zy_8*dsWSQfshM0i*w*Bmb8-_`d3ucq?8$yFrpR%k~e z?(`Q5%MreoCB0U}y?c{P3-uj!xzP7$a1wpCn-0)G(ebw5;EFY>78^# zJ1c1`d})W+DovT;$OyHt!)}a>c-q#Fb6wkc^StBz*Er=EyN6aVT-@4$vw4{6e-PJt z+%iu>FYNEL5txbnGCx_t6x6M31HNXtV2hN(dAq;OT&nQVqp?;(qE1|ztLt=mtci#& zPrr=L1{aSoRyrBf8=HyC>ZAu5Pew-A41gdojZ8)1gIn=Hi7&B#V2I9*o){Vl)Mbp& zerPIy94*`OJaHPa*2p_lfYRev^;_K(-CsSyR3yy8p>|XYW${z`Q-(hEG-SEwm_k%d zv_UP>{$e_2mteU&?$vkYLZI$Kd)0}ZNX)r$#I~3jO~aoKHB`l^msAY4GVU%t`IW%# z`qfc!cI#B!&{S~i@Cbu@0*7|=Ij0Kwg3l3M5#R~Utgs++I;f1C^XQ%QDD!z!(=)Bb zQ`74N5oe;G(5_v^4?QPK6(L&Yl~uvHYG(sA)>=&SG=h*btpyT@EPkXd{N+-y)R?(b ze!r(stIXW#e1%{;Vs^^;s(82j40`v35QP;$Y0Mv@FId8GnChv5Mt{6sOA#!$o*1= zF!`)@@u@A&PpDd6)mO#dqa&(xxkhc;D(s-sQT#|&utuwmMs;#sbBdCN>P~8$3dP0? zyXiCwc_TNI5I6EN1Jyr%+7m`Tq5T;s4kO5`KwpREdyb6B<@)oegi4B{`ezgGq*f^` z9Jog%tZ}`74pF&6%}G;vXe z_d}+(H7Oe0_qG>MtKECs+3sO8;=s6)I`K?)e>9X3C&!UjjaO-7xL7rllO@7&&eLZh z2D-q|(An=?!+DW^x(ypF`yVrvZA?*RejmAkTE$k?f@5Gc3STCinh$x^ka#|w!8aqX z*Yj}Bd2~CzKk$y$(y8g8$?90MOl5?!cw-5DKnKLtiAZ9Q92gO+BxXorRs*D{eqDSY z8Oqg9PVB_CJU+#@7@GQM^)f9q9*4V&K;TEgSnNGTs57Mvx&Y=!DB-QCM5rzV@gEby z=Mw_!m|e8$?{?zFLG4@3IadqgzddQEle|LibP|`Tolf#ydOMxGqOH_-IejvlT~04z zF*skOsT5o9%5Sp+R)<`35B@^gh&!UuQAT~n;_-VyZ|!B@(z`?VYTeY&eM?$FvdCsG z4XeW&mQvqw9~R&Fn9zrJ|EC_{2h5z%<^TrIwy{06%ny@h@IN0ii03#+L=5(%6ShB< z>>T**+@B?Rur$EfP2d-{wlP;f3R@44h!gE9TEk*^Ha2>ON3y7B{h^?ktZ4lSy)!CW zb(nHXS>-6sOGe#5IHPl?$HW0VM+DtQWl|3?8j~x>?v(EQ7Xx^S*3G- zQeU`eJ1Ix@h2k>R7s_|fgud|8ne>HQkDwErIL)cnAXlM5irm68NCl_kg=V=iWSQ}C zvz}4VyMe8<<)+}^PGIUzMN(hSZ=qN5A6@F6Y;qng5Q~YyZQJts{PscX+-kL~FFAL* zVb}Hh^Q%p|$o->9g^^TMtN*;X($Mcj^@M(_pBw9f+Dj!EV(M9cyQM^rylfOE<->aE znyctx*W#<~0c7HD_dFg?f(vPp$Gx?^ zf_S@Vkp%)b;W3ll`4l4DZ&j)*KVgaPaU#|(77vIVpqD`Wj>&a;Npz12-K({)pNXzi zj+bVJ)7-Oq39YWu&0YKHZMr-yq)ab?i7_0qOMgAJP5A=4>2f0q3D|V0A)%WtFGnE( zn=Un^R5x7~P`pt^d7TeE(%E#mUD72r-WeHq!ZMOEQ1Q1tpCnNk+n!JG5~b+0$oJi_ zVHfLPx>u->>V3+>>aD09fvu@GDZx9zk`D>QjUq7g5h1&4*s0IKVYDfmt+nllS1PTdYdY4-IHVO&XQu2IP#2Fj^ zg<^uZo7EW`$^dbF1Rh3FzAt+XmM}YjC3Vco-NUCm=br6GDb?lB->kDa8ijN^-Jpdzc_ zSag;;OI^cftADu0MYXC;S2zx0iF>VT@b8JJ{ zSD}!yC+q|Y3D;6`N;lw_3~&}({`~gvf_;W5elm}#(E(7 zMb&Ymt-q`A+=oekjM+L?WfyUO&D5UJ^I)XyN zwbUlI>g5&A)(Q%%H?}TzLG+8PuSMm>&47~ijVPq-$@;%gNVt}g$r`bU{yr2F#8hJj zT_NZfO+SqaiyHu?>6cJQ+0*nNQAoI!l4&~NuevyO2O3MqRny%U9mYbn`- z7Kp+s?mZtyF+tvAB-P6r(^KMMLlQ`44%DXp<1tiboEph?SRO3>|dggvZw49QAoI!k}1o}PZ(*R zM6vZoT8^Y&wEcHfXxtzuZGVkI%AU3ZMKHO>wUkU-uLgxN_9zrqZ;bUo^oy*6sJyrt zP_ho8kg_N1MJOa(OUY#QOHdeFuSRk8##SFizv$|q0^^22>3S^+DSNu!hC;%%luTEz z28FS828GodTRjl{BI|>wyto-qvVIhWls#ELheE=&luXu$LYTitF+of<=Ir}h2=iT3 zSlj?8O@E9+%ATh4#`>JE1`AMFSUm(q29ecR&&} zN7hjF31jUh6kKnt4MFJ_aYs?9ag(62b_#`*J#lYDA>mp|CazzC!Z_PParMSoA4R|D zdOs>KZU~gFA3z~xPuE8X(%sAE%$+0tha9?$oFS)o$0zf4dGH8wUiR?UsNQTZ$csA;SZ(j{U{_{OUXTCprVNJ^#drd-uN1T(XW*5 zGpNM4DNw?G8HJQRVZVt&!nKr4*kC~sW9$!5WW6yqh@)SWoih&RvA8i%${vJ5%AT^v zp^$JbB~zA{6EV`RMX~ipT8^Y&wB3LTjT;1|?WHKB>}mTd6cVnbWZHT)MU1f%D6HNX z>w)MOS@)vy;$}d}dKU^Qd$Qh(Lc+C_Ojf_7h_UtED6Zbv>Z9lvT|a>ej2i-_>laW+ z+0*rFC?s4<$#nHlaOsTUc>vK>@xR#R18d2D^ z>i@HMCSY<@<@%p&Buv6C0c0zK$^?=bMHGz$2mzEWAViD~xk=AVCDTn$_s~ni00|%n z1m*(bfS|bI3NC;f?tlocsECT-%5~rFy}07~KegAXQ+;ZFQ(aT-{fFnF)6-R5{eIu~ ze((9tsdMU3Oo*w<2ztH~n_fVT13YHJJy4QufspQudU+jzZ#I(o;4vn@D2qn<=<-tc^g)i@0}Dt9eK$aqpp!vM26C z6cYE6p18r3B8ju#qqx#>Hb9XVUH^v~%mYE``cDced%7+dhD9~^lAf-b`Akoz*wRt9 zL+3N~QZMibQ63*jA!X0wlPDzaB|VR09t*XGVnX~?dSV^%Sg10!nNvd_hhTbz)cl=K zaiLf!9gP4*yP7{GM-!g^bPY9_2ZGM1xP?OEIjVRmVcyAY6jJtHx|>4cUeae!jFLS- zF`?|~OeK4a+RUk;k3(qUjU;8ipukWt6e$bA$VzjmK1yxo)X>L4o~tM6+5Hq7iie_SGLpO$?NMqp z4+vGXpHWCWSE-`?fkMjOOEXKESF!p`icz#(DJGObovCQgq&9PE=;Pqe<&?ziFbWHW zLJ>0`L|!^}0=1Wif$G?53MqRX8=#P~_tGeZ#J!}?pBNq6N-?42=}aBFp4!Z*p^rl_ z%U2Szw^Cdv7K)GsDDqOW4^xAAAgGevMMlp8+lj+0GOe3WXwMK8U<@Y!S7Whk@$Yb0{R9p;X6?qL8xp(kT=Y z_mVz;T0CFoRTLLWAVteM=J_%eYB#5d!rFxA%Un49kS6ndnX9HBR?_ojZpr~t!t-U` zl|3XX%pazZ+ATRTi*fFwn9|8jdl%y<37s(I=-bp-t}&DoKcSE~CloIwOgVazLdxDt zU1eD8axdu{>zGc*&JtHOZr@j(X?MtOelpqQ`7!QZRXU_ z$6=ne>ASiE{elr#!J}9xau%S-OUVpsFb@P(vR(>_=O|UOBPpcpy>t?V#J!}?pco}v zLouQ3=}aXnQ=2(8^l=DQh)adp`4kt5g{ovPFIF11p5~=w*HD9bAgGevLLu=SrAl@i zg_OOQ?xv8qm-HDFqht?IOelLgQ^_8qHgjs|<1qj9!r(cDjWK1}FDNt=4n@o)AbIK8 z->JP$U*DYcnXLm!9vr<(P8 zte%}kp`mc7dKLzfm!6fV%{&~6cqH6tJuiDmRAMiukhpj#UP`#pIzb`vz)>%~okHSX z(x>)Ls|q9L%4(%iC|1mxynWmq6kNLGjzDQsdYh%oW_5LKndm89F8&pHbfxo89M;nQ zSBlO24iGQR(skmr(qp%ZmrJd8d#{x%hSDL{2P@6`5zzOv1V>)6lxpI#>DtO>qe?W&9YhVv-i~N3-;8T7@s4~D-KPJ?tKhn-r?kns!e;SemSWwu;i9gt z@m-_4|4o!E{VpwdzHroq))l^O@o9_o?g!%Ccr@O#EDNrfC|xAZ7~exNu4nOt8GiNR4x%$ii=85=@=2?(2?<%zPxS@83SWRqgJTYM~h|g*I;$XG#XVy zz%r~Y4b8f-p;jF+3WkKusBSRMFgKVrv(l*dPI!UeD&pV9%SuBcKWj%~y3RaWcw%_r z_(gqZRm;s0LAcXv)si{bsP}CwHinx6y@S<}zQJ;}Ika@JS#MN_iiL_r%B7=Yjp1sg zuU;EeINCcpwoI_F-l!ET8!i7tsnIKW(59}NOHL&JOEOSI@|5OGDPFy+hl_P%s48Mo zsW$8o75peHF^cv_brC8%a6wceaWDPZ`XM(}?TFC}OL2Khf<3&@&#wZ|0Vyt}KUkNv zWoDM+nm>vUngdg~;K{;;B5RZjD!%^f6>@G2*uEC-E*PWLYOOrBba1#@H!DU(G#xJ% zpH`Y917^*NbImLl8X|QX;+{m^IOLE*xqQeWM#Z!~sv5(EO{O?q>w7>en@aD!NA}TN*U_?@W(nuZSA15hD^7t;?-3XrFIhN+Uu@G4 znoO*v$hEXmX_7SUcB_<`6U0$%vmG&m0|_D81t~t(xiK(@LjW45-{Be!@DfRQ2DD zig(*e=i09|`?YSrHtg4?{kq9|bzOb0Xo7=;a{ym|gq1FS>Xok9Ced_CHPKwrsMd;R zeL|E{pR;Nb=l6$?34StwA)2wv@@&S|t*e=%wRP(zyt1lvpKw#C%E%_*|l%l=O1J__Yg(dT9>|iF?TzmVsfH(#oKHy zOQR(7-fooMDPYAlO46xbqx3FuvfLgJ}ikk|JVztt9$P%Ma5jQ*Szv|13t!_u?)WWFMA#(acTb(dWnamWbQCwN|dk*DlK}<*xV2<4-wW-1$7dR;$*cc6)FYhxkEJ zjszi64}}7z9CX8{eC`EPIpBsi{CSi`R#d{r?N|m3P!36aP>;H_RSvYIO=!lo@}M7fo?_KYrqU5HahIP>jT%ZA>b0we95V zK=Rr8RTh%jznwQi%`KWXoY6d6F2V_+9Q^-TwA6NQ)LCG%%(^u!+$gn))&TX;x@u*a z5mXQIIiX?EXqWS_{v!`+nCCT?83zxR3-$WJM=ddq95U;J>*`|cyDom$TxR&E7zZD9 zl(;kRjfC4hojLaR|=-`hR= zZf{CMb;b7jU-X}Qw|73R+s1aGnOEm?d;M?r2VLOpqBYq;i+0!lUXj;R+9xsta>gOv zu~Lt`cxF6w$gcCn-%|PXbXY!>4i`TVKjGRPaz5Cf3%yWWn@yflZrAVaPs-fgzL;YA zqtfWAG^%QehV{SbMRnFdkCj5UqIm;Y)*n%}coFR>9TB*1^NyjAz->hr61}asib4Xn6&*>jE<~wCGJkKM#8yo zd3Fo#Cp4!9#tznGmhn2K7Om7a55*o@Qvxh`Q`6LRd z?Q-MI5Rfa_H53<;8>M!d=cCA@Wh_%;c@PwxNoX0*r;xbxQL0`^A#pG1TgDyz87wka zZ=}G|aWw=Z53=4yt>s~$WWAe0%ATwbP)OWMda`y0n#%)0 z>G~%MDSNukuER=~dr42%1>qaDGGTY8*wPVJMv@0*pG^(s!Jw2qoI=W;vd2y`(4VJa0a`%+zZru5?TdP~<_? zw^L(z5GYmeppdes>Srh-qjoHz-y8&xx#8PF1Jb6ds$qtLtftUlRq1^eDqDv^G>?yj8LgHT1Q#8C)tR$x| zrN|Ibm9f<@jyx3gY-%nK1f^?J*ycWsYpvXme3TlSJuiMnA#q+P zUP`#3_6G_ndoRsw!h)51NuND2+ZydkF`>*+is(si2R_+aTA@Y4e2!;QdpRxiF<20u zF)b(dVH6vRg;FQ(8=0&o0n08ieB|HoD!xR!&Z8XI- zANNs6+)F1!)?_){@*Y`lFUyJ{{MRY4Gg_|98sDSd938FJ8tdvKg<9j>W>q{fYQo(W zV)%AvDTCv`R&t`Oy4N0)W9sA(;M$p{JnOm-cRP`6mc(*lWOqozbOg-XogqFUn8Hu|HB)#X6sc z9>rvT5Pk%c{Xt|Eqy5>Gms|%6fTHW0W?SL*4m({k=ObyzA|Ks|pdt{wN(%Y@}= zf2NQ?v+P2mf<9+cc3mJBQY3t99ux_?JyoscnIbiv9Qk)mRWAvrwn%R;%DuP-Bd0}r zdkE}t3Xss-J(QXZ6u^a~uY%RxVqQccp(rSw-1Lj|TDd-9?ZK(kPVRatzWo#us1ql} zhG5pe)N~dpu5^?LP^22GuAShkuZiXG6 z?CH8Eg~Yw2r>i{UUn1;56k9sN%1H8{>=D#p9t=v^<0+)@$KQd@ZlC{Zt^kg_N0Ybhk|B|TAtS^pAK-$HSvV`_jR52}8M8q0$~sd_Jk zls#3yMj>%8>8a{Z`;&4?THIzG_Qgk_mls!dHrjWRo^b`%x`IqGMl@u8wsxsUj#*v4jj!<)X zAShigppdes>oy9Bdr42%$b^51v9G7#(lIsyB@fcxPA%r)prrjcg_J#MAEc1Dm-M6! zX8lWi{T9WQj;{dJk$j#DCkycN9;19jOjA%jQHWaUS&)>w;fWt9djiXa7tg zWzX3;V>y?u3&PXF#9m^tv0f zYUO1V6XLGY{c7K;6<2K)X-k;LV^VuLE%Y%6=1fR!U!CGYaZq{}0g86Wg%X5>wIEke zV|fthWRe>wB%Yg!mlD>3+)5#3@1;8_B<>}B_QWXIXDKF>Ii06q-=y|(TIgdCnn@!` z*pDeN6bMDaLNM~sus>33c^IgM%{o8x8kuU?ZWL1XUOJFMng$J9N-?3-={yZvLG9(V z&}&$Dew8F*r%_}m5{ih0apa+5gVbCe2&!V|Qb;^Msft}hA!YBS|D=$(m-HDFQ;EHi zVnVsoc`EinYA>gSJ_honJ4werO|hX^C^{x1$wSG$K@H}?pi1^b3W?_^RkGhwNZEVo zZxj;ul0J)Klx)WfU?q*Rr}LC-e`+tMg+2!UgiJ}q4yCYA7!(onLFA!dM^jsQ2&jIY zN+I#gr25rQA!YBSB89}gq|cog{n|`1p~UGt{kodk%W0vHK`>2M60n;oE))kvzycI` zDA@a{u{;P=!9GbL@!X^e_C*RQdoO*5LgHT1XHSfR{gh%tnbUa+_7t_3(?TBufBLp0 zU~@0bvJh4T%m4!9#jb|^NeppEx&%QPXNC^*rc}wI6Ny`F+Y!BB)O0woVEyPaCh!$Gy|;}jClQmSPS zQb^f*>01;M_mV!3VzlhPC?=FXou_4gruK4L=wmR?dXBO6zr3Vv&ekj|V@1XS6nQAv zKGawq1gc;MQ%F2Fse(P9LdxDtD=8%IC4Kh9DA>y=rhjt*sT;&_FlS^LgHT1XHSfReU@TEnbUbS*f*)Y zoEG{R%nxn9B9~!5rqEC*6cLkvteGKM@wv3W>>@*4ug+kS_FpxZSY>?W^LqT=yTndS2DAlox zD5UJY^q&+G_mVz`c3M>!F;`YAjY6?v*5oXDBL$Z(iy~0kkw=uYAEXxZa8S~InnKE+ zv|px>xR>;#oi83h zVNIRAm-eENxR>-f6f>#oSrijW9;JY7+oY~m+s5*JI%#`xH1!yWqPr<3-R1aH3JL6T zJjJa;`za*urK#<5T%^EK?sDw-uN7V6vWf38TIR|0Dnyd=!G|fB5gX_3>H@eYsd~^ly(=yZ{_-gm194nc5>I#*6|M%5@;PK z#fBCORcBrT$72vBl!1o!E>vwrkA%!zNNwiyP=>`4AU$*XAx&nX>S5ClD`}zXF*!g= zkegN6L!xqXHigu7x$(vh(E3#_}L2I+HN`K29NV>7!nH z1BJxBq_2}gPZO8A{qLc`(s4BeBh~GzDU$V5)LI?}O4ct?NZFJ1Q3{EBNl(`BQ==ue z{){3^$JQ{8Jm~sYYAz21rR%&`!%{kXx-O)UxR>;Fl^+f)5%!rBTROtZNb;cU3#q|8 z7?iRnP)ONRb~S~>y`-nC|0r0AtpgNRI=1>C@*wIaYAX)`CF*4qQuai>oQtSgQ_2<#_}Lgs@_K-Wlz~;O5K)z})i91c6tzOl<$<7dy^uo6o~~C>NZd<$x<(#TBr*0T3N9UE zBT(`n?fa<3JRFp?pP-PkC+!y~B<>|WXoZgoR+_p<#cb*77h=4V(R%%xh$-VY^dE*?Y;L zkfuSydMPH9I-RFs$5MMaE%X`|o>nD^*y$7*ii9F!VH|m=*bp_B2ZE|tjY8u2NmcA( z3MqRpT|*&pFX=NVrV_h_VnVsoc`9}XwU^UE9|L)=oup%*q1aF?6djY1ety6QubadQApfN`rL`puk$D-lsKKIU*ptXP78eu zg4wx}fW3j@LUB+8EI^Tmf_;D*%Y#4_>{ApH&rPaeU!st*_tK*j68DlmdtwyqXA~34 zoX%6QzfyZSE%Y()XKhOYHt&io3t>gTd=Po)*M8Ji9s;Ughfqj7GpT;PkV4AdOD9lB z+)Mi0Y4OaL)f87c4eN+!z6?{FIXx7{CQSL*H2sh!^URmarXN<)GheRH0aC&7uHVd~J=si9n7C?9@6A#pw^UP_oc^cxB(doTT! zLgHT1H_|bkjCogPS>1MCCu2WqFQ_6}yVs%W0vHL1cZKBxE;Ha3~mxkVT;6 zp=Ix*7V~gWE&Bw8#IuxY*%v6J?7j4D3W-qyc+BgYA>gSJ_hqoFASbj*celWJwc(NP$(iM0m(zh{zUENp`bc8 z`zlxo^9-drwmXHCy_XCMiF-+(LoqtmOEID3={y}fmfFi{p^w4*Q_XrkR>w}K&`>B; z9SZ}=L&t`wy*w0(Xe8V?t#uxxi?fGB)&3d^iR+jWxP*JTw@^r&OVmrZQApfNdZn3d z?Q1AMgz0XIDV@YP2r|)@gy~FQp@wok=$+qUw%cPA7YcyV+;+rlx8G5lc`OvUNTA2x zrytT}X1jG?4a?{@cq*Yq+&c$I3A5dvojoL~^@meP?biC>QB~6T-mw%Hk{hL@3{bQ~ z^Jx&yqQ>$dC_0l+mJCryJfW$VY7`RplD=gOJ(5V`>ctdTIG~rIDSNv9jzZ#I($iIb!iYrJ zzf)}K2rDDWgR;Ah!(y5TgHrYY3MqTaE}@XPm-LkNpC=))bs2?~j;%h3JczoA+R8&f ziF!7Lls!>P6cYE6o~Xfd10<%NM{%WNYJegSs*Y1*c@QX7-#{T{Pu2HONZd<$s`@L$ zC8mCq!b-Iu|b9tf(at0|=H={i6maWCl= zHL})8V(cgdmyWR!D0z_fGHNjo2PN(G6jJu2eJh2;y`(2?i`nTPpt#cUH9(OERqvz5 z@*q&Eew{+fo~l2fkhquhRMqTo_8W>V9bG$chqJD0IC775NM~oLLu?o zRJ@chhvY&EDSIznMImu7>9Z$B!EU0MQ08==g1wL0%W0vHL1+SvBw?SRz)&C*2@Ao< zL&F}T*77h=4f`I2#IuuX*smz0?7j3C3WgSJ_g}w zRg#GHP-G|)iim}ADyK$w=~$wA-k`JQ!5c z?xv7-qybA1L zYA>gSJ_i2uZArj>L}8&YC<5k#$V0#WKyBqAp!zlQwXgu@nMw6)R|+Y6FC9Q3aWCm} zr^UlxmQY+Mc@z!nh=;!%Lv7~tP#Bx=@RwE74{0(Fe>r>lVI^&KR>}cV!oy$A%N`OH z<;y9gcFRr7Dw+w3DV@}`ZxxM_%n5Ud-a`%L`a=2eQ3{FkLGe<;9HRRvr0l))Fondu zq;I5SIvGErn9^lU?z15OK<(wU(8nOWs7dN)%)A~Jx+oG#KO>AIkFLf-YAz21Rk3GM zNIXBOiXBEFW$&e9C?xJBeFnv-*eZ$%<&M(L$X&$-sJ)yP`WQqOx=BJdO2MIEC_)y2 zl82UEMlI&ypjvi4g~YRzYS~*Ur0l))0SbwGNuNhCTJ|Z538hcxY1!AQy_^>M7zCS) zNiy~WiVMX-k+A?p9t!p(HI@f~Dp=R+U_H!plPcKG6jJtH+K)owUeaezjDj6PF`>-q zJOw+7+RJI7k3q1ETT-x7C@vHSRl#!I>TEqVmIr|#wUy;ODI{zGcbyruR6bG_dx=x%@IzXIIy3~5N_2M~Q&4Ch);%(Gp zAc`)eo*TQm7GE-9S$DobIzD6hMCk&@K4(?ya(Pwj-4xQ{;s>-|I#`^L%1aMWNZd;& zM7-p1OL9~U;UA&E&S>eY@jdFz(a~zHv93N+s5Q=QRvTu0Vw*#>;oHOhYem;MqL%i* z(&DLjaVfjEPubniwJE!g_#n)Wr;j?DJ})!sjhb0ang{^Dd-l5W9nb zd+zEf=^KGr;w!Q%_ocYwSUbLB&D=0l9Vrwm6T{~CT=7?9Y}A}6DP^V&AXPVcF9CQ8 z%H2op1o3epDJ)K?QkGLlfW=ev(#aGO_mZBVF{1rSiU~0^iz>x&ek zDm04K%4DmRdES@3X3i;Bf{&$o<)hSnAR+G(*PcSXazBLxl-`9zHR53k39#RV6s=cw zQzGxhGpTIp4!$W@FF&DH#Ibqu)k_#hsv_n`4v%Qi{zABIYCt2^29?l<_qb68F;7ikJ-) zSjr;C@n0*t#${7t5i_-ml?KI_kvk4l+T9<$`PQhclchgeAFP<&)pha=QBj!kc-HU{ z-cVNjNN1cqb~Dx})Ha%piSd2bjZ}x4WwYKlXqHFE`piv*a?>ulCdTK8?s;)&qO^k; zP#WLC?zs<6l%AaFk2wtqFwOv06!j__@v7#4;+rpTu|^f0f!LnXChH2D#fup`99!CO zkr>(B)rQs^f@Y5w2-`2TzHY%QZL!`>SX{FHynLc`k$1=)AA8`cuCC#QVQ)IfAC~+r zJba1xVrbmV_i#_?7%|!wIx_y6RfQ3=E=I^qV{@@FY-}pjiiLr)X$%xAL&eI*x>2YM z8P))YQ4wbvJ&OvJO0{8ochO@1tlsVwLqkQY&MlP7V@r(2uxX4|t7W6Q!PwBOh$^^R z2`(kx)l6g9teH!ULb+b;^=c!h*4;)iJ#q0Z0jei1epCB!NyYZfG|l6f>xS}Z5r^T0 z|RZHezqu#esgrPamJ6Ij*8!T6wLrVvn^+t85Sg2U^UOGC~7_L_O z>a{_I?Y*O8%Z93hV%SRr&hmVebG@O`(oIK)KsQR32?9Oz!Z{L6c0HxI!L+HcvRY}F zm4+NK^|0i)_ehr?Ug&35p~cM&jpM#5ki~%(dGT)RXKa<3BTR@g{e3Gc;qF+mZVcAU zLc<&~2F8SC#_^R+#agv8B8;;Q9TbL&F}}LZ<$zxG?j9>63WhtXY^TLyV?(VvBF-!{ z!q@3F&T`YqVSKq-7!to%tTd|DRl5s8?{Gu4W(498Nr-rm1#|0-LPfL{g1|MiUM+7jjpC5VnBs<_S*!PU_pBZkejO={ z83UFBE2cRl+U2@2RIE3OPBUO9m(@NrHdl?oa-m)~MJiUC<)J0Us975>jMkS}-xdNW z+8}eNcd@56Jx=qmPfNgZfBE57-Yp#_Dv@v_xSL|B_mj>q?j-p^{*}jC{mK-y?YRP% z6EzFFAhLZEbaP&Am$=%}n@V-$-k{cKxRS^VCdt+6>S43)R3dfZmBDgz$n;AVp|N$5 zz~!>_uV1m$jiwlkGc0`_tyLS@u%E z!=IN~^<*nnDctQ2aLc6K!7)d^?q6G7Hx*kgv>sc#L*A1J)Y7DO5NMYc1XAjlmBT{I zM0wP=N;C-KU)g87Du*Q#c7MGnFy>k}t-I~=E%Q2N_n5})%AgGsx+w}5LG2NtwS$&r zM!jm3tAnDbwoB~6VRP^ti~Yq~y&-CJzus`ZX*G(*rlQ->c`ctP)t5N6kyS=EYK2O@ zXca~Fb%Sj4lfzM|&VeO`%xGiC6xrIN1?!@v=d(o{S{LnPO;mlNd9>8VE-ei6yiw7N z)`iEHbuWv|12||BUy_r%H%nU=wy^cL&zK>#rTed6zo`GPCC1@Pj2Eo!9Vv|V2sTxW zKI5>(i`K7~(=Fj#Cy>tX9w}_A4-l17hCF^FkV?ITeOj0l4d3Z@QM0*PJEv}Ei&fXy z)nurCw>!`4*H=XAF;Hz zl{R9I4NUg^jEa126c>u(Q6qFnv7?p{CgKOd6k^nDVzjt&>^Pb{ zdKbQrRk~PQESQKhKF2{~-?S16TP_Y38xz~?6E+uWm5FVoZwlbfNZTXUJA3r)Tb3~) z-?)(P6dy~fvA@F`D_$P67lcDEJGEt4+d*L$iZXf=(d0Ex6MKc!n*-|ty^`)sFE{FD zc|&h-wAazM(D^-!yR8dYBNWRFpFd*io&8PkP>=j0!FSe;ifMyI>$@w(_@Fhu*x!Ga z7^F4VE)hc{*1y)J+#l$5Pwwe9#D9&NX|59`&N^>oQVcG79|g_l;_lIAeYi&qcv)3% zz4sK+-&}2#^Hu}oUD!h*`kB?yp2ds(j-_3}Z1<8AU)4+DcK8-S`*yd(2To3j*US|( z7CkW0Q?pCa;`w5dg~dp_&*lu~iLzHT&YO*pL&3=;W5g5#wst*WVHNi!#K?y*VxuSp zDxm_<`ps?!d{x{c8EgctWpKKe1JMd%w&fOCcy1GcitVc?)xp!^{OLC*_7KFbQHRUF zbyut3BKod05tap>!tUY@)_U=kf4{Y@k$czU3qz3#5yQ7O+IT)-Sr%?QLwzV2!xx|r zQnjA<+pZzr)wG@ui;K0V^$a_wRrC2QC)vZn-6JM1W#>*lz_2*_RW!b#0zfK7e>0uo z{Y5*&`=_>rH{=@--REL8ooej&4JEfP=B^C4%E3F%iVvxrtq1~v) zogkU<0?4)4Zj&3EN!>O*G-kN*<*yL8#LgSFDyQ}9FIZIQ6}P4rEi(>3Y>OD`5Q7{} z-Q|slRJ_>)^<~cK;?xTk4cM>l*S3f+M(daE;78WDV;>fFuYNf|?uPL%#b;1R)*?^n5%8wnyinB`<~|+HEUv#6}=%bkw~mIvx;$1#}|j}8~>q^ z9%mT*#VIZ&duCG`W1);(_qOm%WaMD{q7idsK#W_v|1A^u(28OS;F#St_dYem+;;c8 zMZJrR6OTK7)oP=EQO_cy-|C^4MPGcav1sw4wcXwB*Zs@&i!ZFzd_yL2?r6e2;mbsP z+T9a=PK&TaN2K3y;>Jo-%KU+mL;ChZ_3B*vY9Pi+YV8EehZF9rK88u0Z$~B z8GZfh3QNylvGi4Iy*JNU`l7Xm^vO}2{MW+Ccvl9=_`(*3Mw4-wRp>c2l65D~npiX} z5~*y@^fIb7>%N~zqOw`p*ck3LUMi+N9xNs*437oL;ciGNAu#|vX0^zoJr?hU7L}`&jn=JfaWi#8@jSP`>Cfb<)_NDo9P21#VH!V_ z0gaDr5w0kWuRpaaTxh#ptgaX1_0ELg_3Q0CUcX*62Td_E(yIXMsRz<|y`rw~ULkm1 zuqFMPC4j=pK$?>K2V$2M5L>Q7o-HC4l5Vf7l00~7o!(;& z)-4D#BTG}}-OR>kbbaQaD;EybQ7Jhsb@5xqu^lb-(JeCn8gWZAH2u+E9RMa{kIxk| zf@-2joDff>`I@yH!s-4F9~1YRp&8$$`@|ZCxF7E+Jt!YpGd!=WD;T5iUAIn5+-j^_ z*K>$iG~lm65aSG6#VtP}IK8J9My-GQ#r*dr##U$UyMIH_x*2HwFS;t;`N6Ho-rinu zBl1|WUco)(*fH^d6Zidb)uy;#>HX2H*&{jbpC?xAyNu$Z-VI0bR^V_C+m9!?&^Xhc zkneuBT1+z*vN__N<2@I4Z3vllYJb#%6WnDK*1@&b*`bG@EU~6#wQ@zic3EaA>kz~Y zC~K7U_*zZeXbU1@+wH+s9O4H>ITD0OJroL+u;&dUfsg%1v|uJFwfZy>c`A zw~H1Rt#(&#UNzQJiasND#v$IZlJd-(;E+87N1Q5EZzo17s>Jnu;F&kai)*vFTuSK| zJRWz2eKE!KN2PHwX*|qoZLR->u0}^Jya5++$RA=6?*o=we}sA@;?FjZd)cLcH}qir z5oL=PQT5@z^Ftpl3Cv*?`vz|<3 zE%b6$zB!Ln3eEg<2L7*Z!T)~GElzUI=$FmDm6{Fs??Q?!1qkkX*iC`@u;@D}Boqn$ zu;^6oUlMWu650Kqr?ztUQ~CKOg#_ehQj7@p9F-c6A5&cEXt7s|`&ezuR2r8*Qu}#a zl*TjR+2XU_0Pp!`&)(fAB<>}>p3U>BJUP)1q__}!mF8s^w|Viw5=nr7l|7vZw926cYE6p0;z{`x`Q2FQTy0 zG1do>7g=9N?d4&hWPKZjls#ELNFi}A>B&0Jo2@Lf_0tqrI<^KV@}lcEsKGoCl&(Ld zkg})iZz&}1B|TlO+g{c!UYV_bqp;Gk)d!ImS$DYwmh3zXl&t$xNZFJ1Pzs5ANl(_8 z9Xek`F(IZZBj^r-yl8qVHI@f}(zKsK%ATf03W;l-AP({B(wG-6kIyiMxf+H+%HnAc}OU6ze6EqPu!nU zNZd<$;?DDCsLP!FJ;jxdvjK{B(N*C_!cEz^Z-NzU_T1Q$LgL&|yp(X`?H~#%doMkg zLgHT1XV7f5`*$?OgtA8|s^`1YQfwfZB~Zfrk29&woErK#EC|oImes64v7vYqH~ zNp2Fb%;J+Ea82q19v?+b5+GfgJtTS?|FsknR};lc37Y#B3W*1fdg=WX68Dlm*JB1U zK1ng599J~AtpgdYo{qy8YS2i2i+T-2(p?pytXf(w&)J)?To&v9qL9FTAs-Vp|O7@jue?8E+n3KFhkquSOp7V-;Kd9w_UP z7tROXla~BXf>|!XN1@ec{)eH5_t;nRZiD$JxHlTCzrFd#{r%3Pp1g80!UF3X{s&%H(ElK^gxkJ+`1utA%H$uq<7K_N=xw$YZtt+OpvL(~n#sHOn_&+P zsOQtfwZ)U`l%_dhncK4|B+xXwkf@*^P9XuQav?>QxvhCnB<%K74JXpSZK`@nIJL!o zCs6LiH5fTA_B*zP3MBM=Uq#IZD&RuWSHtRJzhMdqMMCND+5l2_Y+JcMVeP_&)K>0( zD#BM$NI--q#fV_lfYgNEL~*5~MS!AR+@OJYA2pZm77)M@| z?V%>~U{K1wfI`Zivd2+K+)H}O$}0vW(w;%Fr6aA3Brn=-phok6P}(*qr0i+?Y6^*a zNl#mU*?`2@>nN;rjP*g}Mb>vvdwCcrS?{8dvM1|36cYE6o~*&D0g0^-QC#WR8lcFF zu1`>dc_1iV|A#`#p059-khquhboG}FNNip3R#;r8W2+A$FR~icULFQY)?NxJd$Jx$ zA#pG1$r^LZ|0IeDF*U1O{_X%C9m@I-YAg=`rD>T$%ATg@Q%KxPdYXpU3`nwiB}InF zstn18apa|}w@{OLFeqhjqmZ(v?A;U+_mZBnkp%-1YagKC(y=xIB`@MWMy=){p~U?K zg_J#U|3o2iFX@RJtQwFwJNs?ZTEGS<@}leB)LI4Fzsi8+RUk;k3%rMLTdirPH~}FC>@OeMZ20mB}WsMk$jXI%mYC?>-SSgJVzBT zCCoc{m_o|lOFyEJxR>-96r*InqnJ?kbf%Kcd^;?dIW_cg2u-|^q-<9T3rWrtBnJWHvT9YY~y@1<1~68DlmhhntsY>Ek`PiJb`D7BeWLm!9mlq^Zi zwo+s$8j6^Oapa|D*He@2VB9dHOROjn|CQoA;BL{==kFUk#m?qiDK?(4RMtK~A#v_f z@&6Qs#J!|Xrx;oL62%lpqscEb>4?te52($Y8u~cMllCNG`whj0;-Ltej3h5<>$)}b znwjS6&J+^QRjO$FQAnJ&)Jum@NZd>MOo~yo7g9_pgF3TNJB8ZJsiBX9KdDm^vsY1A zC=`mA`5^Mru?n@9hk<73g%lFcP^x2BQApW)=_U$^dr6-^F*^1xiU}o8XX@A|sLh-j z`ZxsBeI+6L0>y=5p$J)kA}=NT9yOQ;f-2dsC?uYvRLTBAA!YBS9o_*;Y3?O`2E{1Z z(BVW2v;hC<>QN_A`lg_OOQ z8Wa-ul0JW0Y?AwGiVG!>qGj#hBzKAvG;XAJbBZXeO_($Cj_HRqnN4!I*HoMsi7~L!V9IOe#aV$3`IlfcZ6}| z)%7S-lX)sWm*#c0~@6cb9J z&eXJLQ=2(8^l_MHRmy6$d^p90Vxh=cfFds?dnq-T2ZAcuSrk(CN;X6xW$&dLg~Yw2 z&!8A3yO?4^+0&UyHbHIX)X>KvSSl_RW^bpsP%Km>^Y(dY+d^NZ+DI5R`zSS-2ZAcu z{S*?FMqh=3NNZEVoM-&qGl0JiClRI-`xhP5%LhCUASLtDehgP6Ng zXebDl$vW*!czXK$sDc&1W4`v8TMy_Y^kA#pG1^Jph& zKR7v)zC^*L%cKaDcI6T!?hmNdJS3F3zoC$_C+=S|Wap#MNb9wtT%e0;M9$0Iq zqpbv_U8GeQlF&ilkJ_9)Lk^*kI71XKC3MhVNFinKr4uM5?j?O5#Y_lWO);SaQVQC( zP6%tY)h*v!l(ric>NOBacOy@_GxLQM64;q}irbxDMImu7O>Jl9n<%i9J2N}}Yem<% zjN&^ppFgXsYeTa#*eF&j^<{>%=WBFJVsB?;u|@E)-k!+feXtv{^+#wQWbvoF1G0GM z?R_lXx?8D=ch)Ay;-6r9WATTyv9b8u8`&0b!w=iE&J_0$|9{`Ed9AgvbGcY=^ly(= zy7CWe4tMeaH zafqwHCjShoof~7L#mdHBR~*vcxPQEbOed^g`#m)q$g~Sd-@R0~I-l|0X&s(v&sOKH z+@G)lZBJ?|cRy_<52BDjD>*4fv{>}|T#74Qg0_FrYb%N*Wa#nKZcY(pm@EO(nbQwx zGK*dd(+?|Y(Q7paNC}d&C3{Fza;~P3+AcZX;D&so;AV;oNse--xQ!3qceREF;{DWM z9tcHi5{BeINg;9hqh9(Vg~Yw2ubD!RHJ63~zC(ef<7)^;>f2gVB}h)`g~Yw2r>+0^S&6Z)rLfX5)(4RnS>H+Rwi&$c_1iV|Cd6_p059*khquhboC!3 zDY12@+hK8?j;%h3yvX_tYA+81C2Jprls#FOQ%KxPda}k$+dG+JLQKtS+TIjL2G&ty zc>pL)M<}H1X?g*L#J!}aY4{;olB{l{$PihTvDYw;yp;7#)MOqEO4-{fr0gmCaSDlh zNl)3xV~`})K1ji(V{HUVUc`NzTFpa3iTg_mDSP7nnL^@T(i6AE!z$*yZ(0l307YJO z-G>^?13~F}Fol#oU7t@OaWCoVx*$B^TfQ;7l446Iv-=O4<6}Byi}%&whM*CbCoLE{uC0YE%nl&6cYE6K9gb;?L`z5%An3vv{R|goErK# z_;WcWG3%$WP$(2J^FidLV^wM|4+G86Eff;ZP^x2BQ%Ko+>1GOvdr6-^F*^2ciU}o8 zXX@A|sm+`k`Zxr$d?g|KBE^Mbp$J)kA}=NTJ~fyJf-2dsDI}hwRLP#Akh1sE+z-N1 zntMr~K`~0UC&h%ar!$poF}0afLmvl!2Dl_-M^IQO6pE1fAo9|&lc~Kt3{=NnNg?qJ zr8>5eLdxDtO$v#7NuNJ0o-cDL#f1_`(Xx(tzRc^X-JBu{YZIO?^UmpqG@0kid}#V% zB|Tr}-W(t$JYVK(*+Zhj{Cx_k-I5ct80Xg%Q#!e6(=)VN&HYN4a`Z21EY}#yiJk7q zyqs2KFJa2jz7$gSURq2cwLNpxZDNn0n9^lVM@*hPncB>$p)Z=k>!YN8$15o^6b+@{ z5yp{M*JFg5%!5JI>;ejj=P6aQZ4^@WUV1%+#J!}?qL?9+cT!9!f0S-VN2uAysm+`k z`Zz?^%}IjxAO(j4q6k_9N?w}wIJKIGglgI^DI}h)RMY-UA!YBSId^7W$Lez_M$`77 zm{1CJrluWCZRXU_$6=mTDXZ1;^C>PA3q{TX6nQDxiPT^o2&!bSppddxGLu5e-b-}~ ziF-+(K`}~p3B`o6r!$r825K{>hCU9#3UR40yOrWXu~3!F+j=Uyy%`cl%|1pA=7FF} z_IV14=P0eozDXfv@1-A8NZd>M42n^*|E8Ew_H?F_&AJQL#+(}ZILtr2FnCU3V@z4L z8-<3#p@^9TB(KWsS=4484ytF*qmX!}QaxKiA!YBS(e;!} zW=;)#9Oj>D*6Xo)b`gb!!lCL}7)V}v_Bv`a4~HTi2_@s(IuFtZvxh`g|I-u_*E1z> z3HN@#Od)YDQ7?U$LgHT1tIcd{4@UXHPd}%a(#ed2ATxbQm^qUnc~G*j*+IY3I7Dfja1AyLgAq>$RJ z`N89{q_MwqDJ~>AN_iQeXqWcWK)i+;%mbllO+tzCItq!)ANA7PC?xJBeG3_S1d_zp z4^m+1_!@$d7hyj~E#{%1g#8AEls#d8NFi}A=?NQt%#Fm@-%@1h7#qfs7iDLB7}l{o z7?iTRP)ONRc7F(vxe_GG=8LgHT1lQnoQfyCB#Q(WoT8lcFFuAig^ z^FUC#evv}Tp03}akhquhboE!COKklqg_Vx2K8U=?`V_U7hk=rH?nhurojqCiq>#9m z^kj`${CN*oc*MCt++0%8WkHVswdr41M%}#9lQf%oc z+o3zL^-(YI2vHs{r;xJe@yQet_mZB+G1G`&NiiY*Dm}4|Sbjf3ZRXU_$03+rA(d z6cfsx&Q!9;sm+`k`Z$Cp-bhmRO9~7HLy@u&jJ&k$AJk$V3aVxEKbCpjOtowu3MqRp z9ZVrjgO)v?VnXTDnOb%twV6{xuVvvWS(2E&f+9oFP{b^ZBQG^OhnmcTLDg)GLgIN! z)$9riDSI#7Kp}B2>9Z)NGP{*xLiy8~YW6W|GpB|=4)R<*NzXn{v7vYuOVPed zjphNNiuQ8~iRUU+v_Dcv*?Vc$-I-Uh`b>&ZwB0BsltG=TXwRZHb86`0;Lqih#O!$# z77B$TWgk7-^q`rWbAXiapqY1P4~Yu%M<}FrOHRzHoX=5A z>Ex!pt8$ctPMCZ29cnDs7|MyCQb?Q=ikA}R9{rv|%HB&eJ^_ne?j?O=9n<^Rg}B7R9L97K#bwkJ9bv2sL{xwV6{xABV^SI!VypLcyVcD1sJ&l9#4^h+54jV~aR@d;ljLltPr?cw#X^y@ z07YI(_6%w;4+K@RJ_?EFC{?oM6jJtHI+;S^Ueae!jFP>QVnW%|nMyW7ZRXU_$01lM zE-Bds6c>txs${uu$#yL@m}B2E{1ZgA^0Wp3YRV z$EnSn8u~a$JE2Kp_Dc#4g+mcD2}oX***~bwJRDTd=6?!S$2?Q1p6x>+W$&efDJ1SC zeICW=+4CtTlt7)SXD3pdIW_cgXuT!dD=0J+4pq-OVN14isLebaig+a4XdUZ3NLOSJ ziK_k$6cX1nC2$G%es86aIG3oG?xc{om-K2AGi&0r6cdseMfKY{Yr-sDCZ?Tkndm89 zF8&pXe5Lcxp;vcx6-seH-6^XFh!dPCtM7l0n8!L$qLKVA^%{tz3#sSEuCB$GOjy>P zFU%UBv3#O*fn(oR_iw5G{W*nnxcC9Bmkt&ur1H`qDJ1Tt6Cz%6_$4_ihV-*O4U5z> zTKZ~yk9u=-v|4MdtB(|FjdPpThFPE3<`8Z8_OSn2(KU{!rTwoI&OboBxRl-7r|gQG zZOZN=J_z&U>7&kO)ys@}qh?%atg2Q_W4Zm0N1UG0fsrrGb-(1DQL?G!e<~4dKk77) zhI@-^i!@X;ewhqx#xi+7$wMe4pz$swsthlrkO1dhNYNm62Lboo)lJ%C{`wh&GEV7ug2J@IZ;x|O&dV!Zu1EaZD@@CgW3vWEX}G~aRSgv{<%z2zQ3J%4Mft_BwDT9K_P)^Ws1uE z848JeX=>HVS17QQ)r#Z4R&@^DGGoPHqqwQiC{`fqPAXLAP_KbVx}GdECRDT^7$f34^mmr;qu z%+xMc8Wdwl?zm8CcYideSB&PA=30Y2-Qs0wSY}d33DL+*Bwx?P_;oe2y3&DGp7H?-7(Uz3bK$E5*jTbra(| z*kdV!6Qw6-`lEnD0$scrt8C7!Y7Qvud}xa`&g%?~_mnnSSJ*6G%-8|)(uRw~So5wn z*4_|Sdj!XR>O<*5>k5xqMA~A#dqTV$mkObIz71DQlr9qIjPDs^V9(+ScWCp0tD?kr zOgvOd4Ur6&h--z0JpI`8l#UU(6FM@!=gOK{XqZN!66#*`dgZ0lU1)KR)OYw*JMzUf z^JqK2$1mwSt6FZ32tu4*tCq~cM!j!iu`%2n=pC$%^bMA)&7q}(&3dCcR4i01(kvYv zYYbN_ef8R)!lB;Lv1LQmK{1+FtZX!@8;oe+dSg64;mV8S<)2F?3NJ@}dCTfy%aN68 z!=`QBDAY`&TrCWlL&k<;t={N0tTQ$hYQ@5UAi6kr$Y>0k#hUo6+_XLjzEC#@tCgW8 z_Bo^F!k{_SU91=zYSl`^f-k-%{ggOneKa^MMii~%mBNT=)Xci@pw(flM?%`!P$gzP zCAocgp`X7*<|Jm7{$gFyZaHR6GPDC$;Es0`sao>_XRNLjD)rG~*{m7Ox+x-1tQ(E0 z8~iGn8Xh@v*H4lB*lrN&vZtO%xs1){fmg+`bx($>wI zplqRT44E4W&2qzL@}S!~7^6a(gz~Hsu3jl5NT`fi^EIWXbb)N>`1}w!IV{o4@PE}4Exo#4*oun1*Ub>5$L#VmBEP_K(lht&`kj8UuKd7iOB6l#%zTGRIVlR~@> zv8@UIr;=CiY!%8>1bTl0fvn>i0=+nmTO{*Z{!l8?+&2BBS?=9Pvskl25TaQTt&^zR z3uU7a+?Eq}<~9!(2Zx=Wfana^U(;|UxDzLlCHPo!=VPtnmWnOkPGF05T*H>Pj(oFS9GL=&e~9AVDUlXW6~(!J{c80qV#cbHYrV7mOYAvS6tD0vA&-58I^k1r z&&AeYnEe=3dE6@bsy*W~N5>{gcfY39pxp3jrTy;_Y^~fRe!@DfRQ2DDig(*e=i09| z`?YSrHtg4?{kq9|b!+8&#b8@Ndk651H(H&%po?&gc%o};XAO*j&K0#wtth5KifOqI zTO*Lp?++gn{A2)Qc;Wcg+=j)(kXuDeQL}otV)(RlpKwr|@jayn zyZn0-&x!n2X9UTh(l%Hw9vu2EG;x|0*N!H=%e2z?`q zJ2{&za@lusE)wtLJ2|cZdAD(PkD8|3!wDscqw`B8>I!*nbq_}w2t2{Ng=5&t=-eF; zwP&a<-7M~#i0;ggX^t9$)zLBU4nk;v+AmU_aj$k=R7%e)BpX8wX$wh?P0!F!mKbkc zVqMY^8^@2ANx#AJ$Gvn=pvXZ9|6JVtL-)?1Q>1)KSERhz0%;d1)@e?WV!vx&krH^u zYOC8_sC+BAQ1P>K@`b{hTSVm?N}Y;XZ-}{%0g-z`!^+Eyt>SiyxSQ8|YGKs+w_n`c zTjCWJLYeKGExoJ7K)Ch4m@?^|zp_v+TQ}hP`+IwP*Df)RtyatKDaVe9MJew4)u;|!~M`+QgWejrhT{3{cLqn+{$beM!a*pXMC&;A+t{H zcN<9Gf)m_ZMApHz*4d#2E7rZFTD^rU^0mt{OKBfh9)F5;7w!03O$@075wY#|;3^LB zgQ6S>LZluF1xz{UhEMt23#M|w4Q=@ID2uG9gpb=c1q@IQNqkU`y0ldew4}}H&Z;Jx zB~jOgmMmKrl*ZG=-y$j=$?U_yf+)LA4>HoL9M!6PHzilSbDj1i=D5@}d{~n0RPJj=g*a~4Ka0KrKey|j+e9fkaol$Ovx@^;hNrB5o{067 zqN_+Bl~PeEL9Cy&{nk)y8h*e*7{Xp ztCAngi+)gCThzA7r2B-mu-~PSz@&Q@5}m63a|#JeLUtiVgL(h|17${psos}D zLXl9$?b@@Zx|RDAHmT{OwsQAV`B_dO0r{B}BZ5cwN{z?K6jwT0?B#S<{f@WQI$Hm? zEmLV+)=~R;T$IK$VfpMtnFoVX_F4)ld&<6vLgHT1 zQ+7dk#9t=u?G#%&(#lBkqU~p?(L5lOwqK=?vZw9i6cYE6p0;z{d+{=3e@S7bW2_G% zFS7oF+RMX0$vXdYu(Zyetou+%+)H}0&hsXS$ZS2B;!4NX07YJOeK9qd2ZGY|L<%W; zy1s%!;$G6z)w=Cv4`559>L!Jij;%h3yvRC6?d4&hWW9ny%ATw@P)OWMda}km#P(K- z2{Ba}L3a@3MbnQ_V|f55O+QZ|Wlz&@Qb^oOdYXoJftO_U#}pYNt1|W)#*r6g|42>d z!Jw3#b$`cIt-Dc3+)H}OM)vuZSbHD^myWd&D0vb0dDLni5=z_^6jJtDdm4qry`(2@ zi``h)Qe5dc8=z`!u&faN7{ zKcqh3@lhy~pt--z9umEc|2GPWtBK;J1kK&?^Bq@i??oYTFX?kVW+3BP6cfsEMRVIa zkfAKDcON~&7iv(xA5FamBI&M*pbxM=l|lj!u%F`Ek$wt^dueJ9urE?zDIZ|(_^%aR z<1$Kls!6bS;OCsR6_Hh6YaW@=)#a?XmX^3l!f_tOE`a8Ph&0803e^Fi! zZGWV!gLXc3=id9j5MK9epAlK_Y=72e8=&LE$fqHHg*Pg;Mx9cb*P*b^( zsGz@@LIP6dLW+cM&4VIgx2LK|CO?t>ZBsSfV!t~m_u?9i92fh&uZ0RE^nCB9W&;&) zA?d4Ob+O;W6cUPr(&25-V!u}IPguL~Giob$KNaCWP)I<8C&h?h)qr#-V&(&|E18ZK z0gBXv9 z0SYO5!j4i%+)H}GhSv;8jNM9+rDJRuM_!b@o|?>qK`HxI3MqTaet<&aUeZ%mUNIn% z_EQvFI?~EW@}lk6snI+jl(s*hkg})kZzv@0B|UBZWdjmp|4Lz{W2_G%FS73ZAS~Q@ z7${lyqmZ&E>md{p_mZBh!Kwj?tuLgw(y=u_kr!Q0p$79nP`bW~Ldu@5!xR$tlAf;q zvH^*$n<%VwZ1q9pMb@jRy*vz*tT$0e*^~8M6cYE6o~$vq{69=FA*N<^%YTYPSzn;W z@&Hhpew#wdo~A#ckhquhG!3sAkYx2qiVTre8Ilj<$V*vw_(I23txuznvZw4K3aQ7|f(jw)VCSVnRrg_OOQPNI;wm-HDFqhxC+CX_v$ zsbpnpGpB|=4xx!Rl9ZiKfuUe1QWk=dmzG^aE#{%1T6PPC#IuxY*=-b3_FlT1LgHT1 z=TMB6JwP#`^yy43dyLx5siBWUcuJNeX1}1wP&5=V3**R3&HheJ=E0z9*8L?|9rHY; zYPL6pl)aapO(AhF>9Z(C%?_uSQ2unLn!S|T%&DP|gFIJH(zCNDHWUv<&txQdDO!md z%>zOe?K}#J=PFgS%PFMny);1~aWCmJDMr!WPBEbj>P$uZD7BeWLmvl!E~g}B_fuFX z6pEPnAo9|&N2$F$3{=N{Mj`PGr8@Qp3MqRp&HQra^{YOAVsva*iU}o8XX@B9sm+`k z`Zxr$d?g_}jN(GEP=qW%k(ZL4Kn>=Bph~uyLdssr1}LQLy);T8aWCmJC`QS)QcNg& zI#bE6r#5qH=;Pqe0GEX9trQjtg(74=h`e;{!_;0L2C8HCQAj*PX+`#R3MqRp{eVK^ zUef1Ji@kAwLvf)5Qnal7d*e=VUPjkfV1>*nqOdk$s>sgM4{0)c8u#)!1JtPN6 z3D1{#VfK)yFrPpnwOevx7UQg@n9|8jo1VYfN@EhH91T-rxyDdVY@(1jCluLBm~wO( zg_OOQuBVW=m-LNwOsC_m6jQp)>4?dbAEq{QYUtw-ULPg(JMN>%P&AZ&M;J$5U5{^5 zlX)`4kKdoOi;6_&c(OZqH|QL~*XCX_!)x1%G}Y!S7YQ$rtz$htX6 z(4IrVp@1lY7J-tNrX5GE<{_b)b_RvSvz2PvdI~9fFI6Zc?j?OL#c0}v6cb9J&eXK) zsLh-j`Z&z99yf0NFE5pQGsT5sp~zW)A}=MoiyF)WL6z(t3W?_^RkDXDr0l))Jqn3? zNuNP6O7<&?31v@iN_In6mv{)h_^))qtgbFGc(YafGd`nVmX3c?<2gt40ST6hOBLFJ zhhQ0xf}%>Ax6eb{7Wyj5nlOB3P=k3OsHF8$NIY2;FC`409Z4Z&@1>I{B<>}B2E|C) z8j1;JPi~T?RkAX*nNvd_hxwtcVPug#pF%_7P{d3El2?g#4YiqvgX-BW6cW!=s%N)R zNZEVoZVHKeNuNhCdiDUtgc7JT_3SZfGpB|=4)a6XTFH9$3knT|L)Eh|ki7Kl@6=`< z4ytF}UxPI=&s3^sds9f+d+FH}68Dlmk9JyB7%^8?D~&?2V%FqLI-G(_mq`&Q?aC!e z+?P_Tc}OU6&!UjBC+-l1#J!{^?tJlZE^nV^nYJ|wEgfwoAnhWp!jOax`sLK->=`ma zA#sK%UP|boznwzL-b;5-NZd>MJc^ka_8E!^C6H3kwsmG$tF3PN-lDYKc$9h#MAF^J zlkUv?GYSdp%sj>IPX9n5aW746XXcq-hxKa8otYi~wW4cWMkVgdJhh9J25;=@+SV*x zCr02)yI(C{F16m>AvSw1&An2*>lQD=3rqJ|AFP<&)pha=vGeZZw{~?czGPy{L{I5_ zYv{gv#bBejsn94^E8d=@CB5*3zafpTKZ8ah&RH#YB~?0bVH~NO@BIb#=0Krzned6_ zo6E(&qUmtR8%VxdL ze%ffCxv5ZYIuRY8Q!_UdhbG4N3&Px6G3yO;Xk8%){P+&yw4v(YMCr+yU0p7vh6K!b zdsf+WTGbp-i2KNvuC9XXwVu)@>k6C2i&={G;D(C?0e6i)B6XrDe!^OH$F*k?5w7FO= z8v~|MH_ajO?G3f+NQ>_uT<>1LUg{LCU*GGcbdPhNZY&RAPh5O+y<4vIU(re_N{0!Z z3cGSQ#U{@r$D&BzQ_`b#t$u~1xyzF03S15^EbM{}&VA3`N!q0(ibh!6Up(4Y@A0ep z&Z?H1BOuQ%Xpj7+$#h~tOVl6Qqi)_h0`oiA%WrL`@O49G{u zyH79F#JEPotkvZ>hYv_W-YUTuUg&Gn6oOn3XdL4%5LXpV=Ydu;YB!x$$ZIlK-@wv8 zMPm^nt$(1WG)tzle?*at;|rBawPA~P-B`NRIBnEwkqc#`A?D>6LqfzWMeCEgv7uVC z6~GdTa&=IgvZ+uj76yd=htmB58SD7`(Dh}{N=GEu-rPplp6|Q%260s{f94oZT>Lsi z&LQh~xPI{i>ZIHYrsx^TvX;Lw#XNOLbG>cZ6nHn&7nf@t=S-S5$BNk7d^tsCg3+j2 ztwv$UYBV+vn-ycwYLcw1Z&dk?AQ8d`K zv2d-|7%nu7!C^6=U$^qtPSj9)>}8@`%k3mxM%K{oZ?rI5sjqfkzdrbh_3ORgaI!tz z!;;*(d#meD!L31M)f%-e1BUR3-a!(^mRFlX&RDgWlQVOL<*c9RmUBVQSnO#_&P>6O zSNLfsmv5oEX$n`p*y@|vgAa12Dfy~B<1k> zqvGAR(z*6)&3>)huMPXPX}@l=UfmGfD|&i?7&w4$ywOVKpvJgnTYM=81_s9GijG~a zXx1mh0K%hIhuHc3;bVfI3}6f|9N(5(iC;78)$%5DomW9lcpdxFeZp7qCGCUqku`r8 zBL;zl^hPh)QxWz2GDCDZ78^^CGLEfQ%hptL<3i)uv4&Z9-yc_PiUQXAqgk^HVfW7y zD-HMEDaE??_SC|t`{Al;#k$&=cAv)mY;{p|m>PuY z_xJbq_O4yh0l<{LSa=tk5OT}Le$S6?qvl_P#fzYHnulJ@_LO$A#(;MgFD-`K_P1KG1H_A~hh6@d@tVkQb(|#GL)Uvm z{JWzsExu#-Nj#;ebYSG1+16$JE7+xm^N|#edc;M3lhLZ=0XMFy;@YB1tlSk{CZn3M zOs?`Sp^(5`Q5O=umv$|M1nv^KkfPz6C7KrBPx?C-_Nh`--$wDqjbl&#mW2%<^}UKW z*>q_e??}O?-1OMn*N}6xsN(z;d9-O5_?u&6}5c2P8o+v|%94X**T zssyDO+g@K-g`iz}{9Du)dT|T32a^=;%hRiH0gBWz_n<8(CE5i2kQxk{AQzI-P$x`Z z`YnY78tN%}>2DMg_mZBjp)H^!zV7&Ni=nGl?Oj~UGWixc1S2oP?oTb|p`e64ltRj$ zurH#JxR>;V4R7-!G4>@CSvtmsapXnWerhrg2BmC~Ldu@9n<*sjB|T;3om?c+zJ_8; zM_L(4UbMZL8qEVjY5Q&pDSO&}ghJw8($m)8vqNI+=P0anjP*g}Mb__7dwCcrS$|3) zWlz@MQ%KxPda?%lGDvKl@y%&1V*?a<(REL1Fb@Q!>p>J!_H=zNg~Yw2r>p<;eTl6{ zQ&=gr)xATM{;?=i?ERie?d4&hWGzrg*^{+OA#pG1$r`i7X$!@Kn3~lRrzz6(wbWQ1 z07}!hP)OO+^!*eP_mZBb;U^1AvieDi43Sk`5EI-$&rMmsMos3ypp^YSg_J#Ie@!8A zFX<^8d3LPC+NUVEbgYd)$*X?d=@D44^N>*D?n@zMPu#^668DmxxGf&+cLc?iju1Xc#{vD%Q-3U$Co@pDkn^Qz# zZ33j%Pd}u|>=^aV>4%lHW7LOofRwOf)V*oXYZB&x{EI^3@<-{q)3-7&d-W}3Xaa`R3)zN1FC@mkk|ImT*f5T~C_6$;=E0yEdjW-%J!Q91NZd<$%F44ZB+|Z~ zVoOI_8A)EWy`37(143#0aSADW+CE4jaWCm<>rcUu82c>>D;;Bf5P6aHm(*S!21?dH zQ%Kp9b-V_XptuLdn z(y`T_jFJ~wO=>R>1J%|#g_J#6FQJgQm-J+fnFn$$#e|rujG(vaQMXf^2XZSlmIr{+ z^iB#XdzyZhLgHT1)3oJ0kgrl?h^)%kYZymf%KBq!G7ko&?0-{8*;Do(6cYE6p0bh2 z7g8}W|2wdxPRH5^l)Q+0Ahnu@gc5ftg_J#UUrZr!FX@RJ%)pR1dm_b^j3R-@ls#R?C?xJBJzW=spS2+0n7x8xOGnxLwU2?wZQke`sTX*JD39MuA!X0w zk5Ne6OL`v1?4tL1iV5*o>50v6IL~jh9^272wkp&}m^AcVYBQ&XJ`Tb33aR<~ImLxy zp>#9?6zyvMlt3hGpY%6sFb@QsQL*Erux#czs(2}3-pO7RQubbY7KOyUq|cxjC3_yl zgtDhImFy+dW=;)#96}RsBq@721%`s5NLdI*URqY97V}V0E!#{X@hqiU_8JN)doR6? zLgHT1=TMB6y^Uf*>C>57_7Q3`r-nWb;VD^?n0<~SL(x#gEQ}*BHTw=VnFoWa*-t4X zo~KmJeorA~@1+^v&AfiqXHkrr?Lsl3{OL?JJBZrMsiBX9JXcTBv*%K5C?1NQ$w=~2 zwBxDKJRnrj&ZLmCSF{3!l)aa#6cYE6K9gb;Z41SOGN>~Z?X}cqP7Qq={JETxn7xI< zLZMK^%m|P3qXDF@AzD6Ns@1^fkNZd>M{E5-AUsFsdc{)?a{zYx( z)X>KvnB^-8*-nqa${oc*5wZY9UP|^1YA_E3RkA(`iRUO)vgH&~_Fg)fLgHT1XHbli zy^>-=+0&UyHbQOY)X>Mlp8+lj*##693WXwMK8U<@>{@Cs4+GV)H&IADL#dA4P9bIQ zrH@lc+)MiWnHT?jnFlE@lt7A>b4!9#=ga(g`e7wKUuMqZ zuzYPp@DiRcvq$!js4zc+LTb0<#4N_?qnOgkO?wyPC<&b~4?db*HW7~HS}=^uaA=Y9dDw@P&AZ&M;J$5 zU5`7d$vhZT%|1&Z@jRt!_EicgdoMjsA#pG1vnWQ*en~N*{873c9ie9bpf+=A=;IJs zHzx_&{O`e%8U;iVv6^TEEG8lP~@d#|49wzfuKtEMhc1NC{?oeQb^f* z>0=ZU_mVz?VwCLj6cfsx&Q!ARQkyw7^l=DQh)YWLbBYVaLRB(vANcH6OeTz){f!#T z13{H+$M3`9nCB=}vb`vz?7j3X3W&lLLqT4=~H{BRfQ3AWwp{M6f0&;e%#Xj6kNLGK0tZgl8miQ`EHgj zo7L5|Wum8ax%gKk)|Jjbao|h)U)j}FIzYTMOV^3hN{`(tUM{uXt@(ybrc%lJV8!gN zu9Igp2TJCRU0sVWnXrE5d~y2l5v2>nKjPOW|KsC3*31o!LT#hjm>Az@-AHw)SvKo^ zwwL_o6$=Ap@%*11#92et z!HLq7GktT01j=}GR@tVkY7Qvw`p%ZFu7c~dp3)}k3Y*1?S&DVwhKsto#&?ZIcA{iS zdufMrh089quCUUg+7|2G$>QC3cVNlH_^ygAS4@;H66cQZADpHb+_QMXjoAZN3I8t) z$Hy`Gv&7p`l+Hyt7Q3c6};e|el3n1-UIcnA<9d*wN z!%I42uuyTRVR=HlFH|bkhMl0|?NDE}CVXclvKjnYG3yO;sC&?pxecne3TbJt*ULFM*L8#k-$6ge z_Ktkb&8@CE1)3}rC>&x~NJZY*K0B$6(U2J4(jAISYg)Bd44*SehHqItEQocmmH74M zK%;CLL&Xg?*9J{vz-(+bO+ob_3pN)U!_{U(PJkudA_JmlMNTmUoelrnPNqaeVG`?Y4j*6r7Z{o1r&H(9SPN$(YncWJIwg>_pmHs~8~ zoFlbi0&3}+ZIT*Hsot6^#Ija2>l30(d)%sW91O$91V0-<8D2QPt?#UAxj7EozrVM)ckL3x+djB@RV{$@|$|pojIT!@Z75$ z2#sqi$3jChYwd$hV8p8kfLZUguv-6n?Q>7*|FQQaaB@`D`jb7GkPtuu0Rklm>BMA4 z5CnrPAq0p(;6Z?B$bY7%r;_PPPuI{(!ax$ppEc0pLWBAgMR7yk^F7>gd5R0Dhzp1d zh~kR4As`|O`ak#9c5mIP+w)CzrP}`sKb`b+)l_}wobP=1+*`Nqop8Ox)u7N1Xzg~I zc%$m~1N_61_I@7J-kddy?r+VeA2EHGaOba!ozE5MuF$@xlpcxarjq;PyMdDx;dP zRIdAejzR*)e_TlD_|KnENWl1y3n?7FNhImMpY(%6{8TBb6MstWy5Ag+vxmh8HU{ls z>N7Tn%*Hh8JTr-K1_h*14-O#lxX(X0UE+#+n0H9Qr3@hL>y!AKT2zsPDZU_C1*+h@ z5@}EWl3`i0?ql@w$D|&)P14&nucZpWYaPQajn`08JGrY}_ngF;V6&KN#7&`|=mW;6?j;tvAGSp-|7${|rKp~}1*%MJnxR>;lmDfp@NV^KfmW;GA zlB{SufEtYl1f}f=3MqZsZbKpAUeeRnUlCVgYy*XrjIln5tjKyRYA+rJl&l{?A*D~& z&!LcTFX_n|ta>W3^&2RzWNZykWJTAXpa$cCK6jJ(h{Tm7i_mZBj{@RujTc`gF zEUuHW)d!IkSr0(%#lwJ-brA|FeX<^dLc+bICu_vga;Kn}Af_rK=xthBZk!_nuSbo= z1Ax+W2!)hBO*f&Ca4+d;Dz4il$?BCTGKj3oi$fxgtd#X_sL6ORP|AJ)g_J&JKaN7e zy`-mXXk{jewO>NPC1Y&}N>;@EK58`{5|p^VL?NY5+^11UxR>*qVQfDKS& zMc0?02IGN1>3T2QoNl(|^#Cf{%gW2OzY{_JHzIF<6@^xUwS>m39dI66R z%Hw_%Qu;hDqmXbf>3JNnNWm5q6U1MoC)VD@Jzcgc)Mzn}=}oB3I5qTf2&Pv^CEL4D zTu>~Ojz)l@UCo~oh!$%Bd=xbp4+J`+;)^IGJVzBTwU~GEEfiAvUivW#3HOpdgCdmd zwY}&Z=|8L2pQ`PutUe&Z3>-<*cKgLnE$IaqS&5o~THGoo zYA8@q>p>ym>57WlYfwn(d+D_(B-~5-9EuRNH7KV44@9km+Kf{}9|v)6mLz7Epva(T zCC-4A+)Mf_icqtAP)tz%bY_Y6FlsYS z4SgKsNqdr>{RYJb#Y53E8A(=(_5x}&9uQQ~x_=24$#|}!incEbDSa;;hC;%e$67Bs@b=9lIKZ zl)jgmC?woV`uvH|vG<~wpycUH9s49|GfoYC9D?b-l8}7`#RbJe5wZY9R!a6m)L=Xi zsFM8}g@orQs$_pgA*Ju7iN8v{Zq;W{gp$ocF+thWnM(FD)MlI-`Z)Mg!6hL(0)+*I zLJ=|_L{>U>3TiJN22{sZqma_qu>llP`d%7AA>m%q=TFQ+Guu#HPy#7h)-emsyalxz zr-;(}wwN<=>&}NXmW5_Mvh!iJT4?5T89-{W(9Ac|hlC3A4^c?%mYj&Ua(<0sN+vh$ zeJe*v=oWL2{)QThYYfVX>Az0BoL0QlV(!sg6jJ(LdKn6-?U}=uhLtN_6jQRy>4;gB zr=T|D)X*1A;)_yJG*+X?plB%l4iQIIU5_EuWIPzCnr%WM;dzRx*_9}y^u6>J6cX+w zeHKLwq1=jMg7Qb{c65ZAeH^tJr-nWbp%>^RLHiO44ho1OXdx(BY1;QutMQPan)XW+ z5}vK7rag^9O5aOekEdS8>T@YV(`KWXpcLv%O*m@ zVfHQ*7ZeLs$-Lce+V-NaQf;&tHTx)PFdhh0$-am}!gEydQj1ZuZ=sOV_tKA1NVu2u z85E&pzeO=Y+0&Uy_7Bu%oErK#%oH}pl9w{r?KfcA4uwMzGYLpmm6?IsjE4i&vmO)@ zo~fvwy#|GpzL#E$Lc+bI&!Y%ETZ3YP5~wrvtc2Q(Q$rtznZjm%vYuUnLW9Dg>X`^6 zD?PgbwHXhGA|5SD#&@O<36;)9Sqz^ov!bp zxRT}dK5?6awkgLG?a}uz?UNV1&u3^uJ(G6fi`r}#*lk|g?r>h;usv8W(T2j@J-sH| zyqs^H+iXmsT@s6f&Bp$kJ$svtsdN_YBHXl|roH{#eKQCB-JZky1NwV%D(-riZGUXJ z`#oEm*cCR@kC=^8*I(Av)tD1rMa$XG(VBV@Rlr-=75>IJwv~OF_{5a1Mt5LIGh*-8 zYns+&bZ%pQaGJ93ac*JLHS!+X-I%to7B)O|BKS#ZgH76>Z982vGG-^z{?fvM#QL~NpMcS|2+j_R@Z%baX?Tu{5=6uaKKVK>4Y1`u}om;8aLOYeW;d)ZW zc9RbiZ^h|)&)sYM6TxlwcKm`Yr4J0U&=u8 zy~f#T&R*mEQycdh7ooO&ukoLZVXyHkGuvytuWy4{%hzg^zP|BnGya^s&A4#2&<^9? z9&Op}I9l7a#ksPp_sP4qI3FQ-=ew7$6*?p07Uw}T-Ls0e#$IlhYqYho>F=_v?sPs= zNCST_X1{g#`3;Tu5k7XCn#;=;^qS+Pby*Rupek(KGhlK-;sm`6#DL+jyt+1Dqa!6=kYs zYx7gJsPq?$+1fm;NY*JVT(Mi5KR{K-u7bj>*7Cz6Y_13uRo-Jx`nWCJRqGMgVrD0} zr4akmwVof9+Q8o!UO95IU8jB!`)l>ku7aWs1x1T79xr6_*zE^*uEMo(Dcsw*pjc=V z^jXwkpb2szp+k~iM;V71xlI7<&kcEE!`(99dEJXw+mp7${{|ppeq1?71i; z+)H}O%F6^wq|Kw)l95(Mk`-<1sL^;pP}*LBLQ0>uZ$=^EUeeRnUl2}W?7LA|$r$T{ z$cn5VL+!=GfRgoY6jJ(R{Wb~-_mZBh!J=OhTOUPnC1Y!VA}hK+g&K?p0;TIeQAp|2 zb=L2|!W#FIp057VP7+)9M`0yns}CY8vi73(;$c9^dK?NVeX^d8Lc+bICu_vYDz8H^ zK}=Oq_o9$+FX<^8T9`m$?L#QIWULKA$%?p7pjP7{L5ceu3MqZ!PWgSt z^=r)QqkEyal5sXbkriDRpa!Q;*P~EK>C<&N3JLd;UT0&LBmFlN7erU3if#XLq;U^I zTde(QqITmHQAD-{r0ULxG?wK^x9@ydt(GHwV+N2~EJu1v`jF7+2X~;5+AcZK^FZ!G zaY2%!^hL6t2Xa4ZFdhg+Yg)XT_6Q0Imp_!QPoR)+FX>xIVFHHK3waI&mW;0gjI2t! znSV&Vwnhm%4~3LIVHco~+D%w-{)NQYqflhY7%Sq)in1$Flks4nl)V6jls;um6cX+w zy~fJ3FC@}dQEbUbD#E)Lt^ZmD6C|R^+9As z)~}-W;$c9^`XCA^eX{-xg@k)aPu5@thQ!t63LG3JLd;URxvPfow!EK}=Of(6gNf zav5qY9src4Z$KfXPt$jxkZ>>QX)4aYkYx3C6d6QTW$abNk(IK39yJ*c21?ocP)O-h z_D3ir+)H}Oh9+M~tbH5>myER`C|MEr@2J&yNKoR=coHnB(ZrC?woVdb;i=uC*Y)pkF|-C8O+o?J^L_m%|_D zROij87w`z7JiZErls=DdL?Pi`((^cCt>*Wjm>~WtJ+b!gaW>9*OrJn)#;Ku?LomHU zYW}{A;(}tKbTk4K?P~s%9Br{A@()mh@j#$6Dt?7R!gEydQj2*f&!CXf_tJzvfi*4e zC4B}(DB12PCMbJ4Q^^iNZN{mgkApDrMv}6_QD9Io6e$y6WTj;*P>b2oMT%eJDJp!DfXEqgO+GfoYC9Ka zdJ3%Gp?D~ICL_s8(O!xgjRyo(v|bbvo~x*$9fv|n-%F>XkZ>>QGbuvRUWa0WGN>~Z zZ5Xu~r-nWb{#;H;%q~S?L7`B@%m<$!C`d+#Vg@k)a zpFa^gb}xzvN}kTtu}4swacbz}5X|zGgzO0v7ZeLc$O05uDcOst!FV80C7by)SQ+Cv ziYnPW6jJ(LT7W{ry`;~e2qilT#RO$fXDZoB)MlI-`Z)MAz$GEO0EGpGLJ=|_L{>Vs z5w#Z&1FB=AC?q^XQ60Mmg_ORRZbBj9Uef1J%=$97p}3#~QnajN)|dGdYBx?1g|#i# zm-*_>hcuS;Wggu5uv)Dz^Ro;fwOC)~$@C$i!u%o%sojzj@iNZLXTYL2ncTGZWgI1; zTTD4R2sIYh7?cxBP)Il@6fd=ya&#;TDSa=kL?Pi`(l^!-osJ7oOvy5*BPLI7L~X{Y zp^t<3ew5Vj7)6mm(NOvwB95%O9&bQR#)E;X**j23c%Gtab~_3weJ_0qg@k)apG6UB z_Ei)Uls`(hqa)PpN2tv>HS}=^y*DQb+T$oVC?JZUg`i}mX@5tp#zTT?+KfMg6*8W! zsHW|MLQ3CDhoX>hFX?kBLepM}VuDhrGd1m0)MlI-`Z!Eyy9l%Y%dg6vhvI@_p~zW) zA}b{;q6XuEK$UDW3JK3qRLQPFA*Ju78&OEOm-HDFp=9qtF+thWnM(Ev)MlI-`Zxq{ zh)adpmr-0$EL0`)_JMEP`@Kqzwiq@00ctQF2vo^_g+jt}RPj=aQL|@INa=fN!n3JY zuKEm$P_o@oOi=c8rji|k+Kf{}ABUM|=L;M28zRcG!%=8ZI219HfMivftw3$Y!-4AA zxhSOc^(>D>!!6i%X1C`~LWNdB9chkCZQdig3X3n~r{-wma*7+w2yfy#Yt}g39 z`cb#uM5kE~-$p;KV4seBLN4~LQ`i^FCUVW+ zjs51085MJVEnnGS)|!oZeZ%%(y<}EW@8GSR~&3M<}NGLiktYC zJ$-%jXZc#K(%08)Or;YB?LyOfdZKU1AOVcFWEHn!ReeD5)T3Lwy7I2Sa@Hnxh0XNC zv?6`C{<5yF#+-0an-)`bYwAVhtu5>d2mOUUZDpSp(5FUsU>n{JTqxsDt@R}6?_=;2bxC`jAsa#2CbStnA+g(Hnsr{&9oCDZ8d&j&s(Q|k2h z8^y9wtK`eokz&alGz#{hY2@sRd@2Paw}73$U}1m%!k(tfhMcvHSkai~UR_SVUgnr- zjDX$rV`#1)7wZUOnTT$$2w2`NoIC6uf-T?a=(s!O0lK=*Kb){R?q>MO$=t$yvzG?@X}l$| zBi7J%uw&8~+3|r@cFiPy|=cE@9ADmJZpWP!ES618jBX?OI3T(B7B~s(C0F=&LpH(3}wytM)a@%_@fAck$p>|6O{Tt$7#;`DF-Mxd_kclIs z&BnBm(Iw1V&FCgsk?0+qn=u!TY}Msjf|n?R_AnKXP3x_6vBor3v#_U;jmaDcFWStD zM@q#)vDVzdk8jRb%FP|tg9Mwm`PTQ?CteXe#7x;=<1Md^zmra+Ha?KNDGsSwkiBf% zP2{8OWe08H!f!a=eX;e*iq-y%jy3>JJ?cLz#m*42$ zfqhPN3(1kQp2I{}7fGcepB`OvjUz^vv#v59f{^>OVrv-Hd3U-IIbJAO-@GcW+dg!b z^)lv&^4sV(>@>^vKaJ3*9o9wsXNCW)@}D*Sv(A5RVn1Cz-%TCypc!*O-+c2Fso^H5 z)(zB{3;o$~4VFwZ%e6|;tTt(k``zjy`L329 z_RjI9P0)GUYNI3Mho0s6Qi=5o)~@a8=~=h91Ar-E5!ad*kTV;p5VKg&a7;*ACx}^ID#gvknTKGnrk+zk*XM@vo#voD=enKcX4e`*=CsCa-H} z52Oxny^$Z-}+HVz%wBi68cQ2j6wpQ3AvEM;hRKlhwrD*Xh_f+ z^RV($rKnzx;*EM*AdVyqnL!tlKP`}+gm3_fp9O8eR$_8T!136%zc0hiiI{o|AQI~G(j#TrJ-&ydE=WXB%q-lrm%q(^c4sLE`IgP+(Cl%h+3F0Y+AYeF3!?4+Tot?!SV=N$C@IUlbDVB|Txq)%GRE z9_AstX+jrG5263UlOEzqwPe&40cFMArJn6$H5rcz%H7jYNa=I;d=wJyB|UfLmDMHo z4x-qSkyb{M6>Tp@jm86l()MZ;Qu?%QqL6Se>1pe)p)E1?y(p|?jP*feMb=NE_Tphc z$@&!(Qu<_l0EL8mNl(^bon(ovkD<7du{A)E6{MqFVnSYG0Jg{ z){LOW;sHQux($VtK1~}aB-~4Snu;s^NwWIyC^Cqw%BzMVj;xgRBdE!EFi^^V4uzCH zWxs(!!o8%YY-lYviM2mO!6jpD2ufDO{XJ?m9ukzee?uXqPu%H$150Y$OM2qQthh55 z#g&Y+0g9~Xx(GEG4+KirV^B!x)AbY-67HoIboHjV$y0b%qqrctDphRzcW{V%BHCiR zgdx;!oFWQqTR_^h^C6982Zt+nKCD(dIJ_kTNG*17xHWx9=sbjvppe=wIo@0-S#myy z;({bc>5F7PA>=!#!FV7Pt!XhKU3T>enH{vL&ddr99y3NtaJUdZ22V9EF@z{skk zoBj9HYipFS2cVGBC+s2=Qo9K&&cBctdkl&!8Dm8pSyA>3)MPvuC}m%dLQ0>qLntKN zOL~o!XJ1I9-GpLGMp_w3Rg_J&7e~CiEy`(2=Fatwk>(eN%WNZykWJTAhFLYcL`w|pV`gA=Q zh171k`cp6@w!Q*|m5i-Eh^)wZGHNd#22@+mK_R72)_xQc?j^mpM$7{#qnIG3DkJFG z&I9?ssIhneP@298g_J%`--SZLy`-n9IR8SD)&D?|L1b0NUPT;PDeD(elks4nl>HV8 zDSgWR7=?s;Nl)3(b`WYBe4bl(@US2$t086L&up67D5Eaf2Bc z5@&NLu4J4IP-I2d*PsUDfk5f{S`u%zr3-W{6^(eMvl%20#4NVu2uJdW7j=6xt8h`<ti9Vpk8>W=r%{`6YUtw- zOs|ldzk5(zP%M;=Mu4JS&7YE^Eq0N47&RCV1UjSQHz*`LM-?x%n0N9Q6jJ(Ln*0y2 zrp3La&!7k;+Y`kEWlv`+*wCpt0VmuV6mYt76 z!m||BvOyG5`d+G_kZ>>Qb0|W~E=Msz>C>57);V)~`d)erg@k)apG6UB_D2*Gls}!RW)uGjR>(Lt^l^~q z>PdPw2gL@(L(wxCNmh#XGSp~1AgH1pfkMJ_6;-qoQAp`~X%z|y_mV!7A{6aH6cdy| zovCOesLePv^l|X#a!O*h4TS}TLJ>0`L{>WX7Svum45*IXibBFO6xFehppeq{(&tb} zxR><#6QN_@Krund)0sN<6Vzs$8u~Z{vwS5X`#p*aiiIL%0g9}YtgCCPuvwF^w`$zV zyLcc_C7X>x!gCZ=vI9^^>3eAr3JLd;K7%5Z>=+ails%oPWM`l@p6cX+wef~_3USH+|C@v_06fNtR z^<_ST+Kp30VQq``WxlraA&q5yneXp>SgqEV`DF%>TC6Ygbo!7`VeXm$*1YYOoQRik zW}}#r$xVA-#!(Ww#gwCiQDbq9K{@dX6cWw}#Y-)w9378BO5aOoppbAc=^N{aPRHv} zOvy5*BPLIlQJZmU=;I*1A0_oWwxGzMXej*-5l2>Ck2j$v|H1%JWo+I`wtXS z`d<1B3JLd;K8qsM>}x0{D1Vf0M@OjHk5QX(YUtw-dT&k=wBMrOpnxcX7J`zMru_r8 z8V?DoX}e8Ky=q4_Z9f!J`d-SRkamKmy$ZzyrBG*T+G|mpacbx_Z93bXm;GOURc;N6 z3yOszX90?=l&pjrj0XZ$vP)1%c#fh@tK?{lQL~3pgYiJ1O7@d`3oErK#%se|^*qGlCQI;KvLW9Dgh?xW=tIF&& z)Mh*!sGgmVLP}rH22n`qd#Qp#!o8%=qX<2_9K{4BP-p5{6SWzqhCU86&orymNIiQm z3JnT}s%IjQtn}=YsLgmdlwznw$@rD@A)ylc0162g55-F@O2)@fNO<5-FZ~gPgnLP! z+Ot;Wht1`7xt1@M&5AsR^a2VlS#lq!EVm?MYg4|P)|HdGy0$iR*46YcCDyghKT+VV z`PX)JSqIXOy7eYH&3gDY`f&yObo6ubJBQXv_QkTvU0tV7s1GPNd2DM}SKhr<&f0V{ zU12l*Fs;bjuD`6St1&0+kEX>0(VBV@-DnH_abxzfLan$dUn|<>o(*QLX>DcKJz(X1ZHPP;f+adqu$VZej5| z>>h$G-)TwQo#N)yN5$H8{^5kpaW}(HPUiRDH_l5kkg=P*pJcM+UfJ@wg5|<#@_kQ8 z-2oFR=+bCVtf@-IY0}#D`3amK)+>X=bs})EWERCDOzR6*t~Y8!rootL6stzruJJ(8 zS3zqK_`oW=W)eU0 zHDl?>=+a@cHng-q;6+cxtlFhbX5XfKrI;Tmnf=C~IbxOvs|JxF_zUK3zhUlKUn~#y zF~0Tpbgw3!wLZ^aH?{|jMT_#Ks=a8D!7jmR%NZHwS$BY14)5l;@LHkDqH$ONN@uRm zs*oOA+u5C*ro@rI`I^g6yCsGGia3}tEX-MV@1Qnh;>c*TF>PdY3G-Gnx;a)P`ZCVV zmj~ z@Z+2Fm2z{3^&r9KZM^k8_K8;m4>42r*Lcfo#E{uuqJqkoZq^ z6ef$ve|@}>zi%f-{@!**{-I8a{B*C)7;Efr|Ds$`Pxl%dKeu@qJDIgW@-=@41}rk8 zTw(qYp-^RPj?&;s?M1AVwWCyURkdXydCuw~Dj(^8OO_ZTW@RWp!atU1xQ!JMWy7Wt zaX4S1^01JvSE<;n83p=!IA7i9RG_v~Um8`D9jTgrv+lH@tGyfi{PG+9JFw4*ZXr2x z(iBW|b&*sm^6Akv*EnKyIqMqpp1a(i61N!Ehr$`MqLA7q6#$4#n z`u%WVfTJ!k}erU&;F%aPz~DG?3_6Cr2KqWf91=|^zsoU)EkBKTf1V z%`4~<48H9dYrb^?^M^P1W<7G79LGsQl*7H2AZvJ2#ZQ&Ox+>)ARUZGK+E1wXhs>bV z<0E>!J5bA4Xq<({>KN98 zDSFXtOri6NgU!ZX5eeOtJ6W!n4*I$uHp363(wh7tg~3{@#(2aBXt&TOd4M)h6mOJv z?+62xp<03Ujw~#axJsEAH&m+(Y3+HAS*usd2GiJF)hw+KMq8aqBI*PwPp*{iEetXt zEOdkB)&UFIC7rBx?AtEg10%S5>7Wjfokewkf4i1-!1r`@z&jX7UI(z#oH~GiYGWNR z2B^9^D{#UCBl2U6_@s~up^xhv@FCv;>@>##{8Kv|Ffckv8q{xh5%joP1hHF6MNoC; z7D4owq+pJx?DhTsrSi5$cQgE$siZi>i*w|LeS2p(4DyG@9 zntrUKZ`=zkE03<@)sy!{TdwGp2s!J?Q2Dlp0@FL!(WZ#wk~Doml8x5Vl(YWMO7Iux z#~3TKKeF?AW%k+7y&Bn(h1X)?ns$oICb6J(zmt6St&knQFvQ4tl4>^WGwXhKbHAJm zmy_qELTH~-^Fr0DpFaW1g)DJXgQbLbg`9Oz=n_*M#NG)GYrQWexBn7!yY+IqRbHp{ z2l`d>V{~n*36yCQOJ!UWmdZmlPot24X%j9ablODMRN@CP&}#wHCR|A25E^5Te(1SK zsD}}=4$YpZNl_1z#Rm&gH$$1&2CYML?UnR+VLElz3#ELu+Fa$9QtV-ZBYLw5d=#@< zEckL5YBRvBaY8yWeMowG%<#2E&cc&WU=Tl)nRfdrO>Tfo*E=0IRaz`Bb3ST5P8C#y z22n_W2)XRlQ)M!1dt{bWP)x~KGFvVYwc{4!W`^IcI?X1njU=_0SEDB5%urg)7G!Ov z4+$mfdr?U3ChH`skmSJqHwp>js?y?h2c4Hpc={F8T$rcIIF>sF3N8`jE)*32W!!LI zzux>YuQy}*3y~#ja51Yu<96NykznArMNc6-@Ox%T9aOz8$5eQ~K?xA$?yM@jUlRCn zRCq6-HUp#|C#3FaVBZ0Uq^Cz*g|{yX4C2SmtMKCD(xTB^jGB+f1#L8!qL6?_)Af>` zDiIalX(*;-ENN?n7srei72buY$v8963eQR(5=z#KQAq73t6Je*jY5LBnqGxBPM-cd zYA(#vM1@)KK(|E|mB9mD>pN5{ws?LUM(vMCD_;3^+n(Rj*d2S*hQo6n-rmiE%+Ox# zzE3mFdB_rejYb&4cE-p)Ee)e;p3SPS(QG-{EZCKNjb4wb*+!va=4pa?!7f*e)f&y; zF-(6(4SS`gU>YTR!v^-Gho*`<^UF4v^mbRiR2nt%BQ&X)UbvwPu~!(Jf$1vED618Q z*eslpe1+zjRp|LUf4!j^noyQ46shBXFPd&q>LNdI{uGOm_`vxq(mg0>;a5S<NR>Fq*UDK%;M*#F75Y+*ZO^r z=bQnLL&k6mxo7>5gj#ssrMv<)!^b8+1DL`Q%U69g?y5)+&-Hikx)Z}ne&v&I_D~!o zBZ#*vR7N%SX4B6V&-ylo-#mDVnI=9Fi>uL}0ev9OFsA|ZCC&hP^g~6(HBWNaAl{V~ zRO~BSFVe+=c}I;Y4w6>y8E~~@?-{JJ_&WxIUxbGMGeX-paYZR^<* zelrcs*IenVVJ=^-(aZ&ToSELH^Is>WgUX|dVD6MZ?=WZGADUEf#M;*!QZp~6t1sZW zu;BQ`#%l)6YN4-M+|XAYp>}ks;h$nGIR1FQo8k(yn?q8gbPS7V)RRdIt>;gSyHcDW z0QEdW89Udx#mJnS_uuqqJRBJU+St5vr^onQai+-dSr6@=L2_QmMxWF%!ALTLBpx)Nf!B~89ihF;q`sCFCYO^goV1Vrkj;Bk%HChxeszZ&`DYiayJ(M4B0Amg!`WZ^{Sauh@ff$D zHVt~yblJJ9y`@cPz>)Qr*n4_;qdH<1itCF7LB#!WD@UNme;Fy&k7maEh6rO>aY+-E z>aMe#*Ge+)pEwaZQZg)JXmRi@=Zm@d?O7=i6y$@V7 zE4}8$`QZ`v;?y}SmYsa&ik{&?ug!FOtdrR#TEQ^#Zk)T4OiKprb*eLLZ@3xB*7@=x z>Uc5o49PQvc6cVv5cfUzmWI@qIZ9Gyt9uOgZ<_UNDprfNK6?C68myS* zT#aTmF61jDIm@4vM!V@@#Xy}72g}#E1MPGX_7ubWTc%Al_Q-?X$aj@X{<+a0H7&y6i^x`4osODq3~Z^Z5y=8gR?^35k{}^ z3S-L_dW2V}_3;*SV)yrN*}^{e_aAl``teT3bo+h2{W%KwH^kXEmv1H(q1zA-kk zrK2df>g7Rd_6OB~kV;>|XXv zb)q8QcI?JYb;2oIG;zxo`FeMyZpOsLp&|e>fiW>;!eNKWCft|02^0xNZuz#587zrH zW}Fau^Xbvl&A6&F(pZwlSTD9i(RYgyN=mP=qR(78NHZI#hhbJik}e&QfIr*DaE(dR z_lVGRLjX?VzKN{_NCgc|w8)ofenmAjRMh%($;3(B?d}Z;P1K$-vH8a&X*mslI5lTY z3Uv|QN+p&(z?Ow!t&B7E#H8h6Og1ONTkp^qso0x%Bf^$|rRpsh;xqWH|m z5WN$-HxHR*rvhYCRH$2OUThZXeBE2)EPg*~rD%;Q*Wt8~9-Tz1a`IJXsy*F)o`W8QD76F z)MM9cjD=yU(+XXDVwKZZA@aUO-D2yJAqvUcI z{Rm3teVnK-Zd=sd3$~2<`YFcoW*UMCN51YdSW~Fb?uJzGUJyd|R33ybi z7ix6!sG~f2=kI#D&o0&33T|xWYf`#$^q&NZ#TEx194+Tqx0fWazkeuS<-c$kJ>6{B zX22}joB8yzVY^~#H0`#30rVb2-LCnbDrC8`J1vf9N(W+3HB#QqoFS9hav+c zaqv0lfHU-77viw7@kWLxAILPQ{03PnZm!7uX=UrrtI&DScK}xSYj<~M^9m%qy8uJ+!;suDQ&)c z!La%xSgk5s@}NdP+(EV%sWgr%ELx6;UVav@iuod+T;!{4iFnrDkoRd7P#W>10;9kG z9CN)%gQ7KR7>d-~;P>T{22 zt^yxACOmTZKO9FzMU;0F4e{>m$nkW~LiySsjl1?Zm=FjtL+lChzab6{FP|FiQmHhG z^$tR~xPkZiFDVy|=XpkoO*M?{ikT!zop+!3xuhmz2#7UBQDemjY#rc&@zXn@Nea- zJ`i`+L@|=ACv0F8TyIi(tLSDYwFH^T>e>Suk6LT30WEqhqWZ8gxwZEip z*_<$2WdM*lMDvh21^H^zXSQ#ECeSUBcHznNvH07eGe(Tg%nohzv!ggXVpphnsu^c4 zTYk=2=Nik-Sz(-e_KM{zmz~kgcC4T`kEk76P&2A@Dm{4c26?Dg%r~@f8bQN-mciB$ zFVUVA{Nz!CKOtoOsbVE~)<;bwJp!TkZH9#xpnMT>T9*#Ow0S)@0yM%nW+_O@G3_sW_>E?R}XR`t2HmSmqVMnVMQx16r(wYisN97hqI*{(_}vM-c5t}q}sHqaJ62l z1+SyJ<7DEt2JAYldEmQX(UpTI*6u5n!$r!y@`i3__=eJz9!}G0(5!bq)OVtU_iyDadCUOv$Julvdcf`7jt}>RZgZ@6i^Xgw2G&ud)TjEH zF29}jc4-c+pE#BAXZm)7==6W8ual~FJ+}sO>Wd_08df?iv4&}}y5iitzT(gi`IhJd|{(erQ z-cOA?-*1w4@0kcW4?wxf2_1B*`DoC(XjlAFj89%<9sbSv(JJX)FprVFjZGV4Qqe^P zmM>>i@X_Bog(d5|vaXglgw9TKiwtiPB->Wg6GAq%n6AdJ#RQO*j@|U5B@}!0h$)cj?fjIIg;#JG)Q0ANS9)dj=co)rr$Hi$xOUI zF2%z8)HL=`JnmgRtYg*>*hR(VET%g?3GbKqqqv*LuvT2n0^Kw7Avqmxn$Sf=qW{LQ z3%C4|j`*6T^$WVHu&Tw_HqYem)9}qR`8zgzVGCM}oju+U?UNYHMR>K7)GS<{8XupG z@nhvdSiHM~RPhPGo4~0~2Fcfb9t?5h%m40Eh(N+cH+=K|tAv#XxMGtNk>0pRI4+|U z!EN`3CVxzxa)ut$Q{5R{vD-=wXPjE^p?@P(yhwK(p{>KW^ z_}3;lD0HvJwv3jo@crj6@ep3Bd$X&4PoK-7Vox1S&!29T%z^@AV z!GFgw#^=ah3P;ejNiLQ5rH}LAI$W4=oGe-=qmY32rCmsU0q;w@khqACCDc;N zus=@RV^&_|4_0>xr-^kqyP-!_MF@Z2w)bH9TdsWdy+(xA@Qu_)2ued(|D@rGio1)N zbrGH5>aY8vtbpEW(GQUPM`VrNGHvWT7rM6$){l~JA_%VHKWUe($8>8)ZD+vw+EMH@ zXYDBdsU2%au@*vr+4ikQ|CCOn^m<);jNiIhe84xN*5B^P<{i21T>T`r0~Kb2^atQF^c#)dg@MV!8M$JZs7lj zz0&qA{=<5z!p2MD!VkgbOF!h?iIERv0U*b{F-=lr$55#of(3v+z)@wf08rPgn2M+k zE_%VSN-1btOuBtY1hgWK-`kqNVFq5fNlPPOHnD{*8^ zsvJ>PpLY=G_C^~M8CGk_5Jh7}goB0NTR1#}RhJrjswH}>jl08E_=T53&L>moeOlWX zk9dFcYWgJgH-j4A+qe5As(H$`-2&^KKIofR8u)7*Y5Jh*((o&mJFCI7*)Gni5A@`h zuR-ptxU!kvzEz)G(2Q<2(ZzkwHoV4ro31G(;|=XdMrkOub2>Bb^FGN!3gViNMZY#} zt&2I3vj*fNjqbDa>^Tyx?G$+WS_S?BsWPiP$5Zl$Zz#L|P ztg}*)!3Kgn<|&%NpM;(=Huk4pJ9~?TJuqWSkkRu$m)_z-wM%6Ljj=4@`af-S&?UZu zK0{X}m+&FHDF%C6L>|#($Ab(P!s7hNOCs%*0vme;MFhvT&W;nh7C<8p&N zq;@XxamVz~EW-HEzFc_S-;HqifhwO+M=w(g&ridl7MK6@YDw;W@qpyO$KygU4(o%! z|H838Ht_7YCh+rF;N#7g42Zo{A_hFh4H$Xaue5D0R%v!<-dH|FZ!(>k zA7Phsc2F5Ksy0pEq*(y8Uka^97PNm@*k+99+c`%OnhlOn%DA;Sk4u$R0jZ&*fZ%o7&{~A zmR9QneSTLl^640V=B4hc;$OmR-PA{6v!siA=Q%ZQ=$NDcZvbU1$wRRnp?fv1%Icw5 z$XWh4Sa@5Emqb0n^qrg5UKj5R`NC_Hq|KTF#1PPNWd_<3ke-Y{~`(r z7)Ey?g@@4-KJIz|MI6-&%Wp&M#7keCURUv8EFk3cfC`KD$0ey#bQRw!$M`f zgGJ6)iAQde%jf;apx7-2(S@lrl03h#b1Ac*vfV<^^duf%|7(Ikxnm!}_-UqqjzLH1DL;ElA;i!oFgZWq$V zsmZUF=uGWU+>|eMxc!wU@ny)>(RLc57+4a#Rpq=Az~4&n2MnAtXk1s2vhfJ!D*tJL zP&3DAVwC#0@ppGb=&TaRiBhj*CPgW3JUy4{fcmKtjAY&p2GmcctB!p@Jv=(z8yX$= z-u9FEM?+iAdoex(b5?j5bu1(17q-y@!7$Ytx~guNiXD$+xsygYHcZ8y479Xe%AMG& zDk_JJqMyfY8AtjBoqR@!gq{3ljz`D-bZOc-{B7RQqb2`a$#K`jg<~962WfC6U3L6v zFmD;X1-seX9D|;F`YWV)og??XtEtY3^3d7a;w-Yl1Cuj_&6&L`J1mSVm~M@`_Bgy1 z3`fQz=EHK`g8fqLV*f4?>2D$%<7cgC+MIy&Ec|UD{WuH>Mz-XJMo{>1Ts0Wkl8cPi zS9M3Wexn=NdXUkIk8H8ioRKa5>0e=F>o2K{Y^@oc*wrOef+j7s>+cPmbKdKuErMwg zXSUoAJ^x|}T_AqHoEGrPlOxxz?dj=Rx7c955s!15 z0#7N2B)_Rg$s_Cv$^p;4%7L@#t=#;E=s!BsS)kjyAX_tWxwG^ky$8I-ps1YUPL)~5 z$3}g=d98su5<0soG0{8GX*R+KCAEG6Y&(*Sh5jmZug2AxjfIBX1)15Z>f89>#Wuz)K+kd#WuqELTnrOH*%Zcd=(-M z|59iJ`0t|j^DhL=kJEa7o~-fwD@EI#Zv{=~Ux-@HzX)kK|85*XR(Bbm>V(*50k5aM zFC}&EniJD4jjQZ|ry?)#au|LpG8=^iJQZ;vp-)8)Kp_E7MO;Xsry^^5u1S3g?LN?Bn)$zo@JBrqT`SAd zgtfBSC!uBo>F+|)M`IH8resKGqmZCTj8LZYFx6-u7PHoDZ~%!P48^&Bamf9PWm^YP zTXFZJ>RUk}0qQ#@MojnW5ZP6iqqvgMB0$kDZlHl^q6XuEP^M693DGsQx#W9MNa@q{ zzfnlIm-GTQ!yo>U`T9R7uw;A{U}Qzu2T+UgP@sf;426_FVgHCi!o8#?Y=D5Uhs`XLk&?j=20 zr+Z_xGFv~1;!4KW07X`G{RV0<9tf1KKSUv=PuE|gkZ>>Q>B>g&*g&Ps)<2`LlCjkX zkri2|@7Zzn>s%C4`ec0>3aQ;>jaXmi2ow{dKD^Zj2V4#$J3koTH%HE1X!o8%Y>?~m%q=TL-}os43F(x)@EYz=BNP7Qq=#3@;ln5{>VLD5jeOvI6unq7jLj0Xc% zvujaEc%Gtab~6eoeJ{Nag@k)apG6UB_E8iQls}!RX7`{rDl*CY*0KD zJ(H1SrD(rFjm86lD%xLANO-QIiZ*%gj;mt#L?Pi`(q~eHq8TVAD1$mv(T+rI#uG>% z2Y)W7BxWa}u%J*VV&;R$O2^Je?Zv}@>ewI(3C~be$0{hK^u2UB3JLd;K7S%~>;@DQ zlsuiOWA8<6#;Ku?Lomx%60-kBaY3tKknkKumFzJTQu>Q^JluZxQzT*+(L0d38ZM*?(UonA53bA)M8%7Hq>sMA_{9; zKx*uKNRw#MM|s)=|3;G7f8Y7AXzqq~F2{#5fYf4rnNOw<2`wQ4|&r?**Mo>uU zdubaA3HOpdiz3vlfntL4N9lHSgqq!o+Kf{}ABWI;bCRHa1O*2LL=m(Ql&m!EOQ_X& zNKj4t4hjj+R#ek|fq&ff0fZ}>=Z zb^wYCiiIL)0g9}Y>=mfN>F4P2C?q^bQ6)PAg_ORRUXMb;y`;~e2qharF+thWnM$?= zwHc>|J`TYf;*yeGhvI@_p(>gGwtQAf_Ab<5JP>G2_8%xDJV#L_`wR*xeJ_0tg@k)a zpFt5y_I(r+ls%oPWWPmi#;Ku?!%SfV82M@AUr}gKI219HfMlg-yUk0zL`L;&KNJ$4 zsi>aiP)ImwQ7^p;g@k)apGOgTb~1_yN}$fvvo)yAI5qTfm?>;tCF|LG6dDu`RnJ5q zS?Sp&sLgmd&`iA+g@k7+s%JN&kka?k`%p-@m-KlwOWLth&ZLi`;F4uh2uizh2_^15 zsMUB#P~v_Mg_J&Ve~v=Jy`(4ZOkrzTnYMpIp(UfO1f*T0RT$FZLGa}L(k^J@cJzif zX^gv2R1~cF*V1O)2hxwa^`=Smao_9d#}(|;U-^!Yaa%{~FJ={P?&{j%UUE@Stzy5Z*kKESPwQzfLYcpqELI@hd4))&6I6Y;BKahr#a%k|Ptc%@!PpMc07>Vin zGJ=lnWUqwuVREYz(iZ+VDQJTKhmQ8VekDbNMdfPxm-6IV=bu<7d3)c@>l?NQ>m{?= z%NNz_HQ7$4e9Q7?V@kzbUmR>U_VxFx?g{Nm-Iz+J4BCaJ^)zj(>~d+4AV%A=it}hy zeL$iAvutyB7j(|r#ICTJewbF20oMAqN?B;Yj1m z02wWXZ>Kkdj_*R3azPlo0;I&1@RC$wuNJ1Mm15eI|-`dOH>CQX)( zG}fF{EDstKGqY08myAvMN|EhqU+pngT$~>sp-)D>Vj2Z|csO4kTv95Qi3XJo^8hj|w z)^+SY;>v>HbtO+XB+za4^i;>w*S5{m?ghi1R+<$}D`nC+y68|pLSRm@t+m`v&w(g_|H23xrzOBVcyL=FpZU--RuVkeB_L&M0r08ts8bo zYUk^q1ym!`NZ2Yxv)ZJp<#|>HIQJhqF}P&_gIb6yde65@q>t6!vn#e`7HZYr4aM3} zeV~U#w6{>Q>w`-Q^=i!?EauCss#!8JS{t&DMSNgb3@s7CgGCRS2i;CTStp}HFATA#mt(jGJigF|{MLi@K zrW|z5RKE9&Rt~r>5Wn}{{93z~-aT5knEOUN&TR@jr5uv{rXF=?11SeQ_bLa3XI08E zVYpR17B<0)00m$dVI&IvZzhaCijuP?P`6)Duf|MCg?$y;fYhLKDXZU{|oO4jS$m<>xXo0GF=(03-v=MER_c+e~Ur_hI3s==%DvsQAogWt_vv~ zzDd;T`_a=6obgkosCMs9rJi4*33XXqRHFt{#y(`m0VEzQn@XVLyIU~tVk+h6aig%X z1Outxb4VP{z}w_e~60gN*n-hx8Hy>v>*OH+79RQ8nno#d@sQE2DH zdaJQlwLUUpSEx%ooUha_s@v3YY`Oy!Lw7g>1da#W+768GVlfZY!ZoY)AS*NC9;mH3 zjfM$!_1lVeIdXvDe{;W07)IIE(H|Y50lOYPCL<1ciK8L>;QwaA2pxTW@e*u;Bq{k9 zP$f@Rzyv4~7crkD z^+gm|GQJ8hvLfsr2Y@30cqmZ99)vp9tM=GKSCj;Pu9m#NVu2uWDQoIm)QC&iYpmg0~A@& zb;kUTt77*-A*D~(Ls3ZWrmMfkxWv|1qOg*&)d!IkSx-gn#lwJV>v<@o^vPO4A>m%q zYiq<3zZapHAf_s>D7R^e-*FDoT!k8o2LPq%jVPq_Y5E=%67D5EO~v(7C0YG16d6QT z<#i|#M^?)EWz=Lm7${}Gi$Y4DvOh&3;a<{HHnc*f#M(cg;F7U61SKotPB^gR>et;- zNa+)IJ_@Pb#En_U?Byt~WSk99WJT8#P=oP6pgMad3MqZMu0Qw zO_V;1+Kf{}ABSLig;cVA9mNI3Lg{D(DB2|(N{;%|UYvQ?v}coK@S~`~cp%VuC%;1> z;W?^!sl~jL=TS)MduiH1sh8RM42n>)y-`e1_H?F_Ektd`siBX9F!4sp?4wa&P%soJ z6JTVeWv8PS~$!l^tEgQ3MqXr)lo>em-IOlp=DQ~n4t9OOf7pWYBNp^eH_Fo zS(2E&A4LX5LlH9(M^Gx6cX+weL6+R+EXYdD3Ll-)}|O>sf<%Y9|w8To+NC0q1d2!D8eQq$x7N5phn{X zL38ye6cV1RsG==LA*Ju7e?uYRUeae$grfDKn4k>mOhv1rHsjRL$HAY}DT$c!W; zMa+Bn4sk8Odb0fYBNp^ zeH?=6zLJnViQ>QGblpI zjzuv++0&Uyb{1+gP7Qq={HfrQkgY>uL7`BD%mi-!Tt(92Lrc!r`n_68JE z`d)em3JLd;K7XcrtBA^&$XJWo+I`!5ty z`d<1x3JLd;K8qsM>^>9|ls`(hqa)Ppr>M<1HS}=^y+9`k+8hn4lEuOieozwHc>|J`U5_y07g2 za(8?!iVKQ`B4+`Ltdz_~4aNh3D%n;P5}u=|l3kBNO5aOwM3eC~%fMn9_mVz?B9v@z6cdy^ovCCCQJZmU=;JU`*vwEa%Z^5&LE%uuOahWs zWp+AhGae39&t8W@!ZQ`svkfSu^u1I^A>m%q=TU^7U4deP5~wrv?5(KHI5qTfm?><) zD(l(%QD{&&R6P@cWTj_!p*G{;K=tfi6cV1PsGdE9LQ3CDzd#}3Uef1L%oL=jP+U+F zDVo+XQ;?<{3f9XwMHJSyn1Zy|&WALXDM&Bf`LJ3|LF&x_Qi~}_$E6Pm73R}XNNtxK zZ*x7l-F_X43z8hA-ERLfNN6C2QG@Y7C|c8E1mjW^5-xwJmv*3#a4+dwNMVr~X%O(O zD6nLF6=1Zh%0xqP2Wl}M3Y4&Sp^(xi?7b)?+)H}GiVKNIjC}}2mW;6?j;tvA1ZpxK z43x6Zp^(z2?3Ba6su%Z?p0e^15fW+lLa`+yt&Aiq+Acti#sh-V_9zrm`m|k+Lc+bI zr>(yjfW+8;Lt!OjtPdh9vYM#9coo8G99RWTmX@P?Paspp@N+LQ0>qqbMZYOM1$NUP_TzdkqRM8EZpOvLfy~P^*FY-^y&I63JLd;p01j` zt|sNutYnqqphNe%+6VOl9wC&+hoX?u=kY61NVu2uJdT*3xeUbwNv_fp>xlQ7&qHm- zsiBWUFug)5*$OBwC>DyA1Ss0o{3$uw;?0@OsKIz3(9Zf*C?q^b6)&}zcXA^NDSa=! z2Ze-tNuNOxO7>qUCMbJ4Q^~%J+Kf{}9|vLLjU;8?MS(%VP^3(Nk(HMH3bhyy1*&Dw zppft^MYU|gLa>Qb0|W~=A)RP^yy43I~=tcr-nWb;*=~&%uYa&LD5je zOvI6unw^W9j0Xc%vpfn3&r?**Y!p)ZUfPO6!o8%=q6js+9>oOZPiLyxyHT5QYUtx2 z&()Lk>_1U#P&^bplaXYlXm_JV;{ibx?b|3MJXcXgdlZF~zL$Q7Lc+bI&!h-NdmhCE zWl(1-+N?#Xm+tyF_;WcWG20)71%*NpGap1&I@XKYn|_8KheE2)Y1 z+)MiWiO{hPC?+U*I#b6kMQz5Zp^rl_%U2Sz9Vjj+7K)GsD6&$rTTp}XK%f=b9VjF` zM^Poa3x$-vm+nO&;a<{bP=t~_gkplSr!$r83Djns8u~c+Gr%Pwdk%#Kg+dWBA4FC< zHuL4F7sjZL%|jvK8H(!I0u&NXR@6&Jp^$Jd>GLOMeVOGbE+~N%E$f)|WiCMN#wnt( zw#E7~=FW#Smi1+-J0Di7^<}na0I9|LGH*;D5-K^jppe=vIT0`8+<{_BCO7SU8AnOz z7E_MCfEtTy49bc7QAju^6fd=ya`XraDSa)Whf>ndpc9e&O>d+siBWU@P@dgWCau# z6bn_!GT-8AGiop%2sB5pLLuQfiYnQSD5Uhg^d1xv?j?N&MJU;Sp_riT=}aa2GHNqU z4SgJ>ouwo(`z{I%3Wp+Q5|FGavtOY$=_gio~fvwP3Y;k`gL~{67D5^9!2Qc zd=wLuK%J>)hod&*38arh{1#UypwOUjsCw23TU?!s+Kh)o5swxRTJxzxGOa5ob#-lR z=B%sfUxIV3^G{Sft@+n>by)|}kGl0HI?a0cHu`Y|`*inyvdUQxvM-iR?&>;yLVdt8 zZ|>?^xV_14a|xY3bhLFT{X=&f`^_6OD(3oHzOuorH5>E#hV8+6$*lGk%+kncuem8- zs^@D(yWDI{q4SD^&Bop@t01e_NxC+>MI4p;)a|Mve7$#VFY2O=hLaPwCE=2aS=6U9$)3>y43o zVPk#+yGXujY&J_J_OE}GU8&mB^w_nHNcOLQS1KjnjOKh4-`wz@K(V9ne?CY?C;T@^ z_n`2HgZ%CbOk+4dY7Cf0sW@D$nS(~nHY&DVGpYr9#9VA_9x4`w$n)kV3VYS4n)ym$ zs94@W5v|zu4MRr0R5L4OqQWM#+YgW%K4Xw_v|QvI=;>Zrrt1(-iX$buaE-C1FqAJ- zlsP@@%Ai>>?DhN?=RTnjcRX4t!0(ovKQz~um^>hdaRHtZ9biShG&1jA`f{d1T-;@` z5cw3Pi_VpEjfo?pP3uor#VO*@S=J|+Bg${1+pyCt+y68|pLSRm@t+m`v&w(g_|H23 zxrzOBq25g@XH8>`Q#bp;K_59|sziN)YTd9ylCp6%L(_=vm7-Z~QtR~sYXTe$Lnj8e z4WJ0YwZ23k1s(Nop0nNj4W7 z-j-*^7UQJRnps`VM0JaCvRx<5^?s>WxHP-Jt}NHwPiK(yx*zGH?x$6DnO)&rGPk_J z{cd%UG{2S~_RjGJ)#$u!;l{0J`HC}`87nFkl5{$u=D=o`TI<1GryTIWD@OuT)I)+{ z%0bsm<$KR)<$&t~@%!cZQi(NQYuEPl^sHNKFyDyBxlMtmltYr=)T87Pb_L~t=U(N2 zu-CS7OsJ*Vu~pPeFDL5ci)E70Ee1v96u155hgp=5;|47>mK>ikkG!TkXHB?XN|(lT zFAuy^EZ({YUrQSMO;BTV)-1Z8HJg6K6ma3%w~L+6mF8=qdo?caJ>M?XDN%aQuGp4Y zs8xG66l+8Efu4dr+*>Hw^}!{DdbMT`7V~9R!7dpYtqs}b-fE?w6tq1fqf4n=r5tCC zE46}3nyFIJ3@Y!vWH+wKleX*<5>FGA+&OudknpC3>)E)4#81(AA@==%dOJS*I;;5# zHC9R^<$NJFPW&6WQF6Wtafp8@G(!A$vGL(w2#ro$W5dsr8yWtU(zrO^3XKZ?LTpU< z7okRkf0sDsIqM)f=#6P^#C=w9;r73kbo&<}Ep1sFznpHCkL+^0wc&wuf}_(vrE60W zsEolZm4QuID(@Qm6bcC#7IGn>!`%NwAprxpE~HQp*W62)yDMSc8qLWRr%+~1$iG&? zdUVfO`q5$bPAF>(s1=X(v%Xj+lkw`eLEEqcMZZBWEnIX&pgbzQ%O=qEO0Lt4%(v=BmJ*)bn#xU>4zz zQh^rlupNq;4XA(%Ngs_#Q~}D7cqIxcYM>}K63Q4o2auZkTfBvKDrzh4epH0dLm>eo zJSIj2OHWHpXaU8Qj1~ckc5wp@#AeiBJP=CF(Bjpvt58Vk)AdFa67D6vfCYANWuHM!#)E-U zcET&bLNtBK?v6sjy`-nCyh^A<+W9E9WTcgmWJTM{=97GRFEKvLdUE+KYz)CF@ocQu<`Q9)*N^Nl(^b%|D5)Z%1(@V{3pSE4uzC zYA_xMl&+seA*D~(ucMG~FX`#(uk0qV^#>@dWNh_8WJT8Bq4wfoK*{<%3MqZEPCFbd zsc|pq$r`b+(%vX0h^fkWbDI`catH9xp{#|dv3LMbnjVcpN}r}HP)N9!^fVP$t&wE) zTof5ZR%J+D#F3Sm|3o3-UeeQ5 zv&;FcBf#o98D-Pn<$Rna?n_ZG;1NQ3+>1g=pU20ckZ>>Qc^vVI?&&Bdh`<ti4Oy zxolOa(PG+9A8IpB4SgJf=@nARHjLteVxe?20u=3P{**wpcoTLzYA_xMw6p$36cV1J zikDimnyYT3+Jg5`4hUYdtO!o8%=p$IKofMSBur!%$eSkz{m8u~bh zQ?ev6TZtlrqM?YHh$AaCTZfvA2Ln~JjVL5MPf;}+MIoi{rE5?~xR>-<6rpA}p_rij z=}a}d9km&!hCUARTs=w8K80d~;-To7j3g^XyAL%Q4+yGgKSCklxr!><<0z!`z4R;! z3HOpdlOhyt(ve^p3uRDeD%w7%%{Vpmaq#DIN@8{>3JVH_B4$2_taR+vsJ(a?P#rrJ zg@k7)s$=J&kka>30fmHnNuNIvI(89?2}+*M)Um5jn{jIB;}Fd9m4xg@6c-c=MaTja zSt;2EQG@Y7pi1@$6cV1JsFHmdg_ORRzKcS_y`;~e2qpU|iV4b|&Q!8zP@8dT=;Pqe z0GEVp!cl1!$BK~oAhOc2y-|DdFrYei2nq?$P*lebM<#6SK?tnJBJg zTGswu&c`_~BahmRQ$%5Hi>V^^&WALXUCy`ed|0h^Ilq4VkZzjMMGH~Ue>7dB;VdD3 z1OLZe=cm_S?JJI0Ef$)2`}nbq6%wk@A4DOwTYDnj%J~F}DVgrH_pKZyvs=tP`Z{VX zE;cA9et<&4IiYx|#oVJ`p^(z|(laO|+)MgaJEHe7;Znz7s@b_Hr1ZU%M|J`TY~&bSuYAHeJ>q{Lc+bI&!7k;I~~OYWlv`+Ss!XMP7Qq=f>*^QB^yR@L9tMk%-iiD zy%p12jGApn4aNh3D%l%RNO+E-N_GnhDSa>9fkMK)q|cxTCA$m71Z7WWD%t(0%{Vpm zagcTym&EK56dDu`Ma(21Syg6FqBi5GNoow56!LDbYzIemsai$cN~qIjvrw3bP)?zn<>4-^vaC4C-6Ob9y& z#RMggQqZ<_LYQe?NplFdHgne1&XhuD3wsOSTNG_KUX6MUh@`ubXYOWsAMFXpdHX*) z8)(z-QrG@e6w;A&1MLp13+M!C2UgTe=b?~rFP#$dlEW|SQil(G!`cYa7f@j5#QLhS zSG7JeVpnQ?)!}@lc2V7~nbqbFXIksf9iso@=o*z#R(RX;ef0dIu6T0;<+o*Qg?RKQiuyx79wV!QyvPqWoVp_)+m0 z`}Ugwip2H8HbPF}K-2JM)L@PuM@9kZ>>Q2`esQB{B9ND6(XX6>(%m**%wny$w7VC}j;4 zQu>tbK_TH@(okkY5?Z%|0Mm-KY?*Orjj`WF;dGPe34vLb8uu^m^x?u$Z7pR9+WklIbwh_TEg zQA`k1(;C1Z=OE2#sIhneP)$7_g_J%`2T@44m-Lz{zAh`tY6V3GkyV+mBjU(PS+7P- z#)E-UwuwSYpR(^oA>m%qQ#SNMq{Q0)M!_XxZ3s$M#Qh3tH69X_xDTL^(kJd?C?woV zdg8{sw(>_5S2E59DB48VL=Q_JrU#bJlh+ncHck2Q@zBxUljG=#1+hM=)NP`3}+KN^D+3c$Nfa0aUZ)Felop}&BYZJS|X8K`TQP8dRmvwbD=5VMU76#Q~ z4XI^Lr!K)3c7>O`hCXd&pAMi;jTycH&Bk=!gln4CWpqm8CH_(Gl4fpU(>3Xy>$y0oCdelHR-8lhH&|WH8NI?sS##lXM zR>|Jr7o;!q)6HKR^JDCDbVHRS!)r%MigrF8ptIM_OZU6N0Gm=t5;KZuM1`vhK2 zqS+F{k;V}#F0PrCa=v5~N=36=s~Ve`@e(1~F98?3eKLj}c{qG6|5AJk%sBpDa`kCx zx_XM^>XYdn^?`9D$3${GX-W_~_kznL&_vI0gx*4PQh0<)ql=Brrct$r&03Mt%Z-$6 zREs6ETriFPewu*F(qToVVpsb6gP>LEuPCPZS~p#wK+=*Q87Yk#)ghV@w4_k16zavA zQL;A_3tW{7L$=K%$SB+8C4S_IBNek+FV%vC2s5CAvF4olXbZ>eO?lp0zZ51Rjjba> z88s&y2ASlV9eju4?lBI!9Zskm#xmqYE1qGmOOFy#CdPV8sRZ1)kWuZv)T#)HGtIH< zLT=YMT%%;7d%S#WaU6ax`$gM}iZq*%=A-|U)s@cuhfWM`8Ni_O z0V6cuR1d|1L+)nn3ey1v)ln%RG}?v+zNw75ERZ zJ8OM zHU0zVPTNQrQw2p2GKHljc$49?T2xUkZ22ZbSgowju*k)|$*|^S)b4w&;;u$qd}Tvv z@OCxgw03=~S577~63P0z|8Z>?2aJ8)M0q|xlO)9}Nt5fwJ_J6h&1tcvLN97F(B`<1 z^b#JtbR)_5aVV}R4T_D0BI5yy#1BPWtI?MB-%x{rmNt$XE#AxRLm}bZK)p1KLc+bI zr>pSJjl|bWQDDjVD!|B!ux~^y#zUbL&@Bji3koTH!rp;G!o8#?toX`}#Mrw~WXTvS z;>e1!_oF7`!9Xed2ns2E%07WY!o8%Yto*`_MB3+2Y{^I~Bgu-kGmi)BQam6iZReqo z(x>eL6cX+wJ#GEBZY0JYg~Ce4SRX`IWL=5ci-!Rv>jfyJ^vP>Q$r`+LBeAuL z;!4KW07X`Gy#_TH4+Kirn@~vU)AcqK67D5EUH!LiB(~m(!b-+gA4FDU{VHlN9tM=G z52BFLC+p8pNVu2uWQ}e1!%TSZ?V4%u+778hS%C18p;a<`!Yv_F&iM1P1aLHI3f|3<+FGH=y zLxK|b4Jf4aiTe%|67D5Eaf6p`B+lNB;!4KZ07X`G{XA+g9tf1K_o0x|r|XYUNVu2u zbk$7IejLS?jI#5!GbP*h*c^Qh`FGR{c!W?M&o~jRy3^WuHKSLBUX@On{M3iuJ6cX+weGWxv*@R_a z@d~9+XKLBrsLePv^l=cUWJzLn2#O4fh9YJnj;z$|Xw+mp7^s@9Kq29IimKVUD5Uhg zlt&@qUeae#gqqnXCMbV8Q_ZeGZN{mgkApl{PtvnDqu8K$D0(I%$x6}Qj~a~!1XZ+; zp^)%gMHTIC6jJ(L`Zfv)_mV!7A{6aW6cdy|ovCO~p*G{x(8s}_%PEQ3KT%jvC=@aC zL1d+4dz}P!4e&6aI`&c&5}u)`j`gCD()ZGFC?woV`uvH|vC~mZQ1W!9j`g873iu86cX+weFjA+*vAD*doVXK(gmXgiQi~}^UqB(H@1^@uNVu2ujdet);}H~7vdrm-$&*i_HsjRL z$3c8QN@^5eM3F(!Q2HGrj?^lq7HYP~$sJczAA~}}^AuIHB`74EvZ&@Ci$cP^q|c%V zHCu^dg7Qb{c65ZAtwU|bsiBWU=)E~f&^DsrpnxcX7J`zMrd@_wjfVuy);FM#@N7jj z?Hwqj^u2UD3JLd;K9?di?NcZwD1|yx)9yoU#;Ku?!*up`4}Zf)lCvM7xS&`lau%S- zO3D6!8jJ@5RkFXMknkKum2Ad}j;mq!K_TH@(q~YFk{ya-g0iPGmF(51&3FRo;}EqDr9!@B}{o38H{XR5OGy09OXvyJEbrLE0qv!A%F*Ol$PPhq=K(^l(j7wc+$#HqyIcQuw6CecLT9UAcMsaX>h_>* zFpzu?T6UVV2QB~9zCCCqsBPbecH*{{`_TH?3he*-7TPg3NTK!ha)D8_kFhmZ&JUY? zHG893_BMennHQUtp4IHD#kBA9NTo!(e$hd92H;BCRh(~Cx@$*Rav~eS-nE&WS*?1z z#WH8CvdgA%9RG)JB)p3$yO`3$GG(n$2m7U=x^?g@NuuQWo1tS;L-<~)krFlxkJ%bD z$;QF&3f-%5RaX0hhn(f_1{&HocugPe2D(e_PujKrH{U^%r=$1GKxx5*fk5S$n8P8p z_fj=yg?FLeLu4MWErN5yyBT)}=XxhOO9P4rq{P1~l#G6n6qEQCurc)~=-N@6gtpk2 z`d$&|}h|5B7?ioj#bvk0*|b$?_I&QJ#s~4P?0sN&mDcSn665#I-0cC?3kAq5ws^0)c9q zjT#JSTO2o9ylS=;g@khh_0shyB-~4Sx(dq~OMHDh3M?641sGWo_CHaJ@lYraHd_$( zvnZtW3Hx;v67D5EVZ|kDCC2^$MV5@QB95#m`#aQRJQyftpGP63PuXdwfqfC&OM1%6 ztCC8j-5bT0jI=V6tZ2IsH5v~HO53ARNa@pd1quoGlAgBy`jZl4&qZM+W2_G%E3$4t z?Zv}@lC_RPN}sG(ppbAc>B$H0AgQu=hg8-;{> zNl#aQB{_+$-$r32W2+A$E3*CqwHFTqO4g@PNa>UHpC}~UOM0?KEaWt6C0J8KOjU*# z+q96AJ8pyy(!3Nk77qYQ(_R!(`ZPTbg@k)aPg8M~97$GBN0C8fRmNUL99b!AA8Ill z43x6ND5Uf$dnpPD_mZBnp>;?Z1+^Lv2};~MP)O+$_bwC??j=2O zW8PN37sZu~vjK{%==un1Fdhh$u1}zl(x>ZlC?woVdb(LQC z^H49~5kh&q0ELu3kB>qj;a<}7IO3JygBr{wE}akPvnPLBS>nOdy#NP|-+OMMYLk z5HN+GOrc?bp=e*~wTRpex)Jw~oV!z*5MKKi*C$00K(yZ=%7UAR7 z*U-p$Md(%g1r&)ltCFRd-{)URk<4f5MvBC%57L;qH1u`w z?ZA;d?Qsf*ilJDU4S*IjcYPh)O`VdN?Lx6oDHJnvA+qwZeQCVr zJM>_R#5mNoa{T433X3Co$NO>W-bkV9o((p zl9BzLVxdwfM&?3fafG+<5hKGC+zMuYS3CBx*U= zQ>3&lC*-c2+bL5ryGi%19HpUSwjA9@gXJDWHSs7#;+jyh6tm^%hZMyV3%zf-1Uos)}Ql+%wjzS`B-!GEKablve1N`|VTTzB|6vbyx>r6HT|)A7QqPMJ{m?;+;zUY~t~` zTfc5Yk$9H$eH7wnFQZJTf%55R`_q_t1L^A!Jzo7#iiXOe`k8MoQfBM36KKr59Ey3w zEE)UEBTzMIZu3~u-H7_AwPogJ*wCjxQcD%-k; z3{E|+e8QT~>5d$J>PAV5C(RHehudQs#pE`3_OAHa8_j6_Wu#uTM$%hD4#i)cag5@t z_8>;_r8DtOd}WUpUt92IEsF0+Qx?VF+aK46FW2>zs>5q~tZDZn_Pg{1rb)IZ+uI`+ z+ql+XM)?Q+>5|eOJ>bi8)Z%0KW8y=(u2_J+~mG|KkR?U=kwDTkEu zrvB77rBXU#JH5)k2u!V%{*iB$<}O@fhvc>EA$!=rXs4(!%`eiBj%-` zf<1*InHOx8BJnKg1?zv%jilJqDOobb`Z=khUJNSPYbla>$=*tlc$V~%m7irI ziS~1pEtzO#lB{I=Fb$d)gv$2&6v@17e?^gamh`f9pIRX)_AeAGnPOdtti(F?t+`vr z?nIHyi*-+ml(tyCClg3&eI?~erdE$4E4jXj2FwdVz4dJr$-G?qDH6|8jJG@-g!#C=*huso$-1DATXdV0i(k zOutQ$%**sA6p3d^FH`@$b_mm8YRr%$EJZRe+;>nUo+Z84M(lB~P_AT}^(eBE>pB`RF9enA zC`B?a*Y{B*o+Z6pHAC5MrfkV1YkDYKhfCahXcl;dsE)r*k<9D(yA+9MNw4FOjl{pC zOh~`Vl~}qr;5%wnq!IIgt$)y%xis{3@U~Y-OSUNs;i?GI;$#ac6Y8FPI@th?nM*@o2j9jU z$;wtyFjNf1%6u4EdD+D@VqOaBWmi)q-lf#bZlXx$v-BB?#IvODp%5>-pE9BL$)}e+ zNn_^H(AUAgB}+21pHnha4aLm-99g;9-)P9Z7}U)sp8!|Kyici{ZBLQRXK5Bi;#tyn zQHYzpf-<50$)}sWp2p0jp|69yS5NY@w^BA#55>=9lB^tUISrZ@ggRQ2BJp0Oj`mK9 zWIjvprbs+X`c4XQv=2}w)Is@lv`^8Pxis{3aQAXbX7*)@g-W5AnG2DXkNq!=mzRP1 z*wYk=cPRC-KTss|S^76c;#t!7Pl%6g@iw@oM$MB?A1lz9xis{3@OJr1M%F{QP%RWA z^C+@%vcqV=yb#pMj;BbxN2!yYLXpg8sY;P}mh>GI;$){&Ce%Iobh1ln%v>7!I=DN) zB_q3*VxdwfM&?3f_(}u^2o5i+g21qfp*j{NKi5l}^6e(@X z3Aq{Pc*>N_ZdwFcoviz5u)LwECh8Q4YeKQTm@P+VQzY|Qx|AaEEa^|yAr~FjQl?~` zlZ(xhpP(^wY3S?VzduU4?zoqdp=v1C9e$3i-0a&lWL^yFW#pi$dIN>Pc{|i~2{o?8t?i?Mh?j($Lo-aNnF{XmcnWDu`le0hFvf?GPF@FA4Ru zV<{5vR_bZ*ph)JkRG~;bOZr|4@wC$@6KbJ+dfF(BnM*@o2X6|RWM}WAT&Na`op}^l zIoZc)z`PLD$?l;@yho{%eVrni&(e1(63>#pgF>9_my`*0Pd=UOA2enz4SgNFJH#a? zn{u+rm9pw&?Wa#CpY;*-$$Z?6dNg2O2Ohhkmgd(H)Oy4a%w2dzOz3^;u(imRPSF8=Wj((O>Hut2`&h`Z%HV z3&QYFjK&vbh;eJ1!I-7#Op?9x-XFf?Vdg61ozd8ySfHu_-7oo zLVdqA^k_3{?$T6i?$WZ#dT~782rjoy-IYVc3w%Er-Tn>|&)Z3`{DQfB&UNcW9rO~XHhgKA7%L~Es^+e=;%$X(C z%JUvlm?F>r7CQH3)0gLolcb-F?s42QD~Lj0y=2dPDinwM3r%ahR9|gqRjJ+(vTpRa zi4T;ia-j9j{@GyTJf2jggCzVks#JNkbx3>M*2Gqd=812NEbE}`n}~!7Z7T;nK!O%I z4`z1mam|5Jz0mHdMxk0>St=}D+9;o1>YlxHX`xmZf3s3;{Vg)X3#|8PWw^WbG@Knm z4=g{@`2>m1m(t390Rc?)h+GDH%G=}?sC?XaL>;$-%l`pvy4xLbTC+4{wZ11`R~$hL zxY){~-vUDawbbyVDJH&U%f75_+REC6sb$SMU@&W>!j;BFLhDWOhg0hpgh7Y7O3=y4 zn>dF)+d8+OBaUB@Prp7Bh&XEZ=qAH!#w!0hFKUf3a9ri%R_TVW7Du;UR;jsP4U4ZX zs+?;7S-1ae*nc+dKS%68S6P2LnD>b_gLi6f0l#wd$s#N6NxE{WNLbiu44k}2H!BT^ zv#XdODVBemS_`Vy`wtxAy`_gC&hO`Bb$%Z#iDg26YYEw25?1aPSqjTQcjY1ZCntSs za#xqPSnwUJyJnx^=M~x$0>!|_jRPj7fs6mm119Gb9Icf5MW@Uwtg9C5D|@P?(@OQ8 zg|(HXp*e-pX~XquxnccKoJPe;wdcrYsa{-GEiKxpDQ6n1GT`&SSyNUr?BTQX?f=X! z%sptM`?TlwZd6LC(I~DcEfiNi?ynEKD-*=*WZ#)?beiuJ=B_>MwY>BbXFU^Q86SYHQ<4V7RnsqZSRTvQol`IBtEN4`rEJ3&F$Z24i?KpV*{np&BWiD!bw`c zSG0fF{-vo$k$8K~WI-;vnYPZZG+@v=4w7OpF?Ynyp-8}BI?U2Mio~;|m#goo>ylpI zM8P6|kKbP#hhBXcSqb(XG-6%~D%c7|GB4QEC=$<-UaWlJVnnItROewPN#3qoc4ONwM(wtuEbJWG1n zx{t|~6uZegHt0gug~&>*GibcL3{w9RtybM&VAEZd;#rkoI#IvLq zYsmBF?x9RbsmlE_DLrql!w+e`MT6x9pfddtMKUkb-%=!=CB01j5A%|2^&gZBiB-9q z$j_0Lvu?Q)f3KWS;mS(AkBJnKgyC}rX4x~(|fAZ;O z$J3a(H1u_l_v%T0b_!)f^-%mwCdtat>NIFx5ZbF}QzYK2)X^@bNKsk3va3tni6s8F zxcy|gUiSvC4u6k+EoI~B(zjHIwcSdYP%Gur+U}(>M`r;|dzfOOQYfzG zLS$uVKcVsRGEhVNJw@UjN)7E_6v=#+rY?nRYn~;2|AhG1PLv5XPdhLth7P zyRT$q^C%apg<@nLMOIFBEDe|!f;!ndC=%~c>SPs)WIju$Q6!!veFud&+4+ z?0qz5E)9Jh+^yh}k=;zOP$?86b0MJD$9tr8f7;B`M4H{F5aD~hzqNp|oX~u>}n%L9hJ+0k- zT%P?M$zor=;jzRf4(S=u!A%|eWq>p%fHX($qeILiQDZ)qBBgCPA$R4xgEA$vn{@BW zQ5rf%ro%K??lDvo>nIY}gp#G0y+@-I$$XaHN0E4z^e5|(i;kNqQ?ky<#V*QwXv|z1 z`a1Y;l#))0U#DcK8p?HtpTpRSDaOryL__Aqpl^2RP@Sy(toP(ohNEtsjJeM2rUCOpP$zpeMdCe5o$U1#$$XaHN|AV$^c@u9WJ@U% z>YjW$S(C=hrJ=9GG~aj#d0F;OiiXOen3)8U)ynKD8Z$2k^|KFCB;Kji&pt(w%xCG# z6p3d^-$x;S_6TJ{4U|tmdz!|~rJ=9GG~Z|&+0Xt!(NH;5Kl6iRzoccS-nXTOYtn`TRyu6A0-h)LPKpGq)Ip+F`fiE@tkgjY zSm{Y05v{qgA=}NL!)cD~hHST4cg*Q-O1ql!V);W@Y>*S<*{ZeqfFy+I5sInP_E_tYrHh8Z<8mmF)*9l6l#F zoFefo>1FFa5k*q$JrpaMVqJ)=#QH57FE0ZX>yIdsd9nVMBJnKg#p*rvLQ?BLC|5GI zdK6j7b<5>&-OdX^<@!>JWL~a&QzV`xy4aG{PRu>{Gu^vt1{=5_o5io~;|*Kx=u^^Z{|q+jJqEZv7YMExQ^W|PO4 zY0O+2`Z{>qE2JgcBa{o(Lb=fJDAGFpDLoo<`{2_wU|tA%vHk~&#Cuf9Qp~=Se^Vs$ zS=wU2_%d7HK_O1IGi5^ElTRn>p)qr5= zOGDS*&Q67N;&Xm6rO=CkxRio~;|@1zh%>!(bpgYxNUr_q?X zH1u_F_i{>Rc0R>IrBKYwg~-as-bdr*WuQKGGezPZN`36J6v=#+zCw|Bmh}A-;$z>Y zOsIMC>0`g7F>`6?>)`G3m5l7qlnd2DF*1)LD<_*$F}_5mPBw!g@gAj4_Hv5E(sxjZlN~~tQ1|51$rjR>xis{3aCd-9Mz)M%p;9PD=0arUW2BIf*koN}QCQoOAF@Qw85{B^i5<9-@9mx!X;n5`n;+VDu@ zne+Ff4UZK!=kK=}AjQo2`-gcXYRpqs!ZmN&mJ@O_&J4$UWF2zRv5Yb$>zrI{o?Jy^=F-sD!GC|0blq_- zB}3Ivt~>l3SzUTuO+)6zpl)^(MdE!*-Rv_I$$XaXr${_Y`YsA_vu{x*)IZ8)M=sp# z=QL(64SgK~_svO$_8f&n1yKwwfRdG`O|HTvGA{}BwCyPp?^fz*vnZ1JEWLsv@hs_k zDa6wbqD-iT^66=Br7?49=SXVvNW4d>lf9cF zna|P(C=$<-zJo%X>|>M(bx%H>?8`J}E)9JhygS4tCwqi)p<1X;mfoDds88l&J~exq z2FwdVo$L=3iT5aVvVT(~^I6(r5H6;9mh>GI;$%BhCe%Iobg~{AGnaS@JdQ{AEvH7k#gETfg&m1Yf8(wPs|eN|W2?Db=3j&)Z~ zpV-wkI$?f$@KkHQoA|r5*qlR=UMb$7SP3iVNafw)9V>f@7gWx%zUpv_+B}NHv-E~Q zmRkC%oFS-%i>|X07b5yMQLwj0=4y1i#>nt+t=?SH7%bMCr;gN`rN-DrtrQO2=FeZ0 zT*FEbJBPKigH`%OAP!t*TX(eUePXn0WwQ%KrKgHN24++qx4v=cq^_=`CWzUnPu(a< z@uV4>bafr(OlK4W+uXT~;%jdrqxF}Oda+rq4Oz1q#b1vcYC2yXU2e3$bOybNAKSwY z*A^Bu>*b*p&I=co2TP4+ad6oAd;8-W@$z+jrRwmSp3AG}96LA4 zzwNhgo_rMdDe~ubX@iL6Xk7AE98$^y!eu>J?#NQ(U#B}=AQKSx%Q{VNTb7lTT6)0({AI@Vrm9Xqlt zYK*vf$!+V-l~@}zUS0+&*7X$0yjU-zNIXk=v3gG?kkon||9-&-fy>WP#LiBLn=F-sD!P{OTE!j?`T&Nbx zg@#9w*6B|vguCs<*_pRk-qms*4VV{#?mM}HBJmzovJ|sl_Xdh&K1+8{B%URG2ZcD< z7bz3!o_splV>D(i4SgMa8*d~l`!NMW#Zauwhmn<+{fS1*OF_MCLf!bfnR?k)6v=#+ zcA-ccz{~cbOsIYG>17Agn7K6cUgqDDC7IbVlnhlvF*83$R&G|LA@gETH>*)3-lx>f z&ZJ1@vvdhX;#tynQOL^d8p?$FC!cP1JB^u3Lth7Zub$**U!ZKL9*UpIBw0Dyqcmt< z5b9_@q)5D1siXadBAL(9-zgH$lD?Bd9Bs1(Tv?+I%BQ2fgvQLJp|69xms2vc*%S+v zLNPNJA}b%8PvhlfpgwjKMdBSwee7h4WIjtPC=$<-zJEe|Y=knQ=EGI;$%OgOsISE z>12PUF>`6?>)`GHmyB%Frpd*zVq`8vRz5b9#>>k4UaUQS#0Y!JXYK+w#za=ikZcBop~f` z%(qdbv@Iv(W}LezQ!=}05oC3;{w58UdkodYQxu77Lb1J=El1B%B=cGND@Ed2(x0qD zE;=?HF}c#s=S9a%8Z(!Mz7GETqonJOy(k&-G3C0$&ykgzy^e;=i$UG&NQ%V!l)Bl8 z6v=#+N)(A_N#8{wZq}eosDJY5W*5+yxis{32;4U(8QPT;4i!W(v;az0o^}h3nwNxn z+FcZhcPsU@2Pu;IEIm$M)0nw5^mXv2ph=NAP)pl`BJpOWmbO1dGM}YGDH6|;zLi2O?KsNxA7E*HG-fUh zeI2}8#U)ESm2#n4sFv1#4E0!6PIev*m=}UN*%cIt_b7F;8z_?bEZsqoc$V}X6yjuG zq)e!L^0_#BjK<8Rp|6893r#Y!A5%0`4#mtQkgWXdPc&v;4(ewUR>Ng7?^Nn%TTvwQ zS=xmn@hs{4D8$e9p-iZO^66&>)0nw5^mT|H%61GzL*-EY%s1{Mv-Me##*E9+*?1ji zaMJh1yqwnHpP0cqC3$+$zya;SMdymaMb_k}^TmI~(8;sW~<}bID+> zf23M!^xDI5dcEN|W22kaOUujsW1~A9(VCc3tM?3+ngg}|CDyCPMkkA(_t*NyD$j}O zK29M0f-gJ}_lfmNq9(1g#!9t_yDO`#BdivGltL#>RhFM6KCjq1ILc?NV(G3@nj+2- zYpo-!w+eoy_0>hJ4#d@jGJyaVk4;8D` zHM0xFX0zBgQ0gxTAxK+8ii03#)4*)&9a@ab>AcTUDyp%l)NBp|3VL zTrKw%o2CAqsYebqnx$g@9N)p0j|}x$!qp@**#Mi4v25q zZ&er^X*8{WURYkPi?4=@^`gjRscr)m+DGe=hmQTnMky^3FQ@hr)|igc4sH$9`l2^b ztEIF{rT2)Q{Gd7X*;YT;^VwwCiuqmc+liSHN{2eVIl9U4nz2gP`BA+&a9rhP3v%dc z@ix}WDmC}3Ve!>Pl~e6M>-L`w`_HER=ZO91D(g=t3-^hB^9GEypkKN9WNXxzAGLDn zMN(IJ?FI~Sv(k_lAtr{f3FDk%nNf>j;1KU^J(PhNu9H>n7m&V|cHg|a@{s(K(c^sf zQtYeOmJAddwvBd|P8+UQ#dNcIg>}_pePvIxUMlr06o1Sv%sr?*vrO2Xm`zq{^te;7 z9N+J*Ob|2Kd<>&o4ob(DyD|7fNyPU`0`tWgF=M2=GToX7x25Gnhpdy; z+~GCiTr||%sP`%7uAbpF^Te5{VGo8Y)Rq^5r;DDba*TO1?6wOec4lOy+#Jsg{F5!c ze_~a%{krbT%K|T)(tct4C9UT|dEb@_^+X_ft{@`{RRQBI9}~wGXEEhUXr4?qVV?ZN zs-ICLu)cDT==I_sDH6C6a*%>$oaC=^MZZ38y;iF0#M9svZkW}Nf0*5tvfm_Mo4;sl zCp8g9oQA@eg+Z&?$+enqYN^6f=#A2hn0^^_ugb%g)}p3gj_%}4o{V(y7^!#D{91D*)m;f*N^NIdrHB<(cd2LjY;hSR z7FdDHkkD61-PD&xH#ur-E#dRFrfH>lsT8M3b1<353^bd=jd{KP_1B78ZAGHE>}DOQm&a^&r_|F$Sgpj?#d|Oplhjf<)nc^IArm7i zb%K0R;k(?JC?|LHT}Li2l-i#xh>rrSj|@a#4BMCgLtd+thx+Xg2pWae1LD&N>snrP zlCy4JUMM#T#i=VxYYOEd`v>9()<+Ue>mv&Bsl)QtM*@vCL*kQ(rZ|xJoWlA5L41rL zK7bf%mW3AT;xhzS13{^c<_XiKv}b_l3r!O9oQi&U%*?J`PXQ(6l9NNNgm z4j8AflQtEf5Qi0ZxL#}4`fAm}vXSM>OZ7%Ue1h5#r>??&1xHby{w(b+FAue)H*f0H zxdm~|mQ@z&rQwqGajTwWP6`U*-mT8_KUV`EB_Y1U-7MGG^gUX zrz{VjINan0&#NaJdr$W*?USUz_mK+wq{+fgZx#02sriv}z(-q337+TP>eVLgepZ(9 zZ%O^Vq};?Uk!^&2MEZ4e^VN zN>lvdoHt((4kIn399gvth#cBEpt3S^94+>|`AvG>+&^dMP3c@|ojl#fYoFi2DO#ML z#X8hJkNVF2joP62J*j;K<4U#qVga|+9gRq?xGYX!WlR;!kZLybA&Aol9P{%-49PAq}N3VPX^W~t%39!q-u zA4i>KzhLM8@f=<{O>DbHTtRPU{myBs{X10mx+#e0aWmyPFt zVNatQ>ioZ#$--{mD(vodVLMQY;;YU93oWGt&;Lukb7s1})OIDe<$|liC5GSGePerV z*yp{QvK~n6!A`95O5tFWD%r86lGmlC66b&sD*0qPdug3mM8=YyR>pTyQ5K<}`2Q^w zS;wDB3IFM{uW6s;P1izhixW+@#m=p^Sddy??|oBz+$Tm0J7%oKNY83at+(T@eOcyt2kBr~mgR9UWa-H=SWp zA-lE|vN|<|I0p=7ofNe4DQkDxr>#FeBmNMd-rQ;Z=Pakt3#}j6+vMb5mPwamn?~-F z3;pGhb7*e|p8V@h-)F25fpoWa-%Zl(zPrvUq`mvjdRc4to&8mMyYJjJb?Q6srp52P z8(o{#E-`C=R%>sV*dICmeSaq%EVf2_zY@2O(rs<<3*YS5-rQGMTR6S(ct(E0M1;;{48vEp+WafAi-MmXnt3(MlFw^m7jQ_s6X-r zru@(eQ~7>7Xype^3jE(cTv%{XBy!QBo}Qk?a|%{&{6Dv2@-n6TNXnb~Q;`wt2+9xI z=~aGke6eq(_-$3_KRTxMn=Jch?K6S8)pJrymHv}K>syk$e+IgHl5L%z2)tJw8uq9O zqGN-bId=%{!gi`F!Ht|#TQB!-?^8E%PO@I)9>Tr|YJE#8$2S5gat$@=(i3dnd`KKy z1WPw>evcx7&6^Gq-Msk>MFN{Q9i)^uZ~mPUhkf{z;pWZfZSABc!iZH&=-Nox&F5|2 zd_YSTmO}4f5t}!I9#y&Ds$A6O&68$`GkE(z@lNDfW6wmQ1mJj;tj6X&N#w z29@l66v@0~AEihmUu7 z7lO+542oo4t`|`xo+Z6p-EnP_THi~tlBv~&$V#lY(Rg_os95i&Nan@*5Jloy(u*}@ zTGA7g2`N>1$XiO&k~;j5=2;pnF94P4Un!D#nQpo^!e zxDii+zl?Gv)2v64m0WM60rNsoxqgx&nV0LAC=$<-UanjCcecqJroTzql1X+K<>7P^ zT2?y#Da`_}5Y_SjQ6%#^et{zKEa`O|^0@73XToJS(ywwQHm&LH2~GYCIp=~*kw(ls z>X*@&xis{3@U~Y-OSZX`3)Moo(C{eIvJIsW;u)#_4X0xKwG{B7G+;%g6AK+$X8Z(!M zz7FzUJ;~2jQ#Mo&#m{7ttQ_qU8Z<8mb+l_J67N;&Xdk6W=CgDsMdDe~cT$L>JwTaI z2jz2p_8l5CmxjI$?p{vG%zimNoa}nagt{l6PWEXUGna&(ez&iDyaQKU3O|nUa4kKK*RCo<fwxdYqv$PvU;#tynQHY!MQYO?t%4J6`-0W}~Gna9EnEseE-JwjKr9EI;E?+x@NB*J5!8FIo%p*e?WW7!MWmZ)_2br{}pT1 z3tRt*Y@}wfzM|9|8=bjiu+~3PEj4=W=jQZ!!|KLHH?5bJm;1*?x0FZjjg3wgKj^RZ zja8l#(|nv!jQs+vHRUlFfjg2*$Mux!sGC`BZ=|Q2S0uGb%CRa@6NNn+d86jt#%A;jWAI;sXN%76kqw6Hv_7bx;IPj zAyOBZ!#aA;!huquzqGtKQf(H>gTvL*U}>mn&t@z%25R-@+`e+XZ$u1To?0C0FZ30M z3gs0;wR)*gEchSrR45M>n&ME+)ip6BwppqViDRrP6&fSU=323fNq{2fjh?C2`}t}R zctPNpjlyufHe6g$Y?k^9wUK6_*s$M498T~CHY5H29f~B4MN-*(Q&pn|n-OVD9H%rE zEGU%<1I^}eV_t9XigI&cWLZyNZLoJmt+t|CvV3c9W4P4UyR2GU);m~ih@$rjcj~Pc zhgJwh^$hm!UahSt_Z6#iYr`cm@3U5Kw6{fdS6YJwt+$X*lI5t-D_c&Ix_I|_|&K?qao36TVcf3X7O^OyA+fdUIe+!8ykW&zUuQ&Q!~pJQpgI_ATtWXQ8y8 zZD-3$g?edqz1(b;h6+o?j}EqeGOw^)9JsW!XX=9TV7XeXSJ%w3f4X+9`0>)Hf7z^$ zl*GRkuW-%Dk^23aCPtiwLQ*46Oe8sSqn;ln;mVHhl^b;%C97>4Xtml_fuzgtb7|E3 zkXCV;V}>AWY1yI|r$gI?rb|VZ-+la1PPL+JsY4ELO8firkw0iWu5DG7$_V2RZtGSF zJ$cI^ZfRH0{i*yepE4fkgdX`FBjZw5!kXoJ)XHk}a5L=S(B2evd4((1!0tj$%;}Ce zvNK72if)qn<5ueJN$S?iT9ef6uhN^OE}^DAO?}I8OjAEEt7+=KWo)gZvFdM<#;Qw) z+c;l6e5Cm6H_li0M%Vj3;Bl{3)%ohvC1J_N9r&5FM*TJP?IaV|e;IhM(L6PE&PK0K zI2V452u82JAnG8NMat*#^JLjfm?xibx1vbkQ$7cY{?=j_iUdB7caTyZz1~ZS!!G*A zKbdw*aZ$6fr&%wRdKQX5lK%#OAHhGeENWGbMHsQ{3IB|87xDR5WmoZsvug83um9av zbQD!s3S&pF2hFPTH_N>?j$U6@-FVKnHWx1P{YHCnVQoPgH6MP?*8fV$dmgrQf!euD)j;OL~1T1q*ZM z@t@#)7+DGSHX1Q61r_Yw6v@0`AEHP+OM1cjpKB{A_6bUsOtF5BtR(v^4Vf2%O7^c5 z$-HDYJr7=k@hs^jD?hqa676=BEtzO#lB{IA7Y&*hgv$0+6v@1752r{xOM2P552=(C z`xc6oOtCIRR$?vDczGG9SQ`|{yja&$B%UR`SiJ`kN@~4~awSu%N0F6WZ=?b9LQuJW zk|LRx>z61J&yrrQ?&IbpwSJRgB~z;lk(F3~O5^2apkn<$iez4_FHj_&CB0Zfp7u2D ze7L4YN>z5Nr}VU^4nL%M84Z>ffXZ|(MKUkb*HI*%CB01jkJ6EB^+-yF#H#G&_j6?B ztcz*LyckrnD=CtB$*!SDJWG1X1|F6osrCX2mrS(*l&pmNei}6|2^H=w6v@1B@1jUN zOM2l(+|vFas;#>(f}_`0(|~y)=w8C}C=%~cB}*~;POhLx=CgDI zMdDe~cTk9v-9ed9_vF*b9-uLEY3S?V+jt{c*<%z86+^KyA4XPQ_6r&@F9r3oKT#y! zrPRwNTnLxT=CiaFMdDe~_fUwJ?LwJQ`{dKh_N6g%Y3S?V-;yPn*};?yRYNf|KSx$> zwt$Ari$UG2NRfD-Qa7tnB=cE1lOpjf>ANVz%`Tx#sDJY5X4li0xis{3koW3Ies()$ zL-kPnOeV?7(e9%`^MX)Edz2#aUZsxqLyBZROTVE=JWKjc3URc*Qzq0w`E<1D7a3o= z>+9g|<&@0qB@_#lLNPNJA}b&3rSY2Y(D@XJcPRC-qbQR3ES*e|c$W126XIhlC=+U) zeEQfKG-fUheI2}AzLJq$M7dBc6eIH}vU0NPXu$qLT-ntnoji72X#*)vkw@JQpC!QR;LSaCDh*JpqfGlTsy^GMWkuA@k4TTaMb zIk!=!WOkG8T{%ia$Lu}&5)GDn4AsOpDH7L&lBJlvM^8~C^I3Y9BJnKgPu3w99e<@v z$vP(&yC|n!Vtlo$uY>&B;Kdg&5oo<=CgDn zMdDe~cTtF&l_(SHALX(m7jCwO#>}OmuS4JlI?2#3pm3-lilGHivhuX|)2Mk#=nCx? zip0B>dfHtS$$XX`q)0qV`d$k0w8tqEYN333+A}m}E)9Jhyy@qXojp&vP%RWY^C+@% zvdu@0FO{j2?MRV$k5VVwgCcRc(k$&yk$9H$9TehZhf*fgJ^6I96KKp_8u~hTw~9+n z)H8?e&vv0qsDbk7XZzBac?0R|5IuwaV2Xyyq57F`+(+^WI~}gi7SNb+ITFq4@n*2c z4A#kF2K$cQuyT2fTFfx^U?|bU*r%Hq#@?_>ZVzKWLwqF-V-JjcYfojL84+lAa6G$j z*imZ|=Fg6EE2W$k#N^yX@^@yfT{~;Be_ps4LN1RYdyV`L)I*5Tw`;j zq;<|Yv`4~xK^__Uv^N#1m8i3&_XrurzStU$-q|pAF&+7cqpcDiQLl?B$zob^F)&)) z9Z1}I?26&{l9GG56nHA*%)R6~A*_9_tpmd8{{EiLmFf zS}$wOW3|6ZaUQE5HT8L{+l*r#>-jmD$7UE<{#hok!#4WuRhx6GbvF*0)h4 zo+Z6ly+;&DYVD_7$<*pmWF^RIcY!B=d3|qewhUdbzsKpOMu1A&Qkutu91X zV*MrrGS*N@YHc_FA=@1aQM z<@$As#IvNAt7a(ccPU#k$(kO@+TjxSw=@g9LR829ph)I*Jmqq@>gHL}>p0{_q8XG4 z=~uZDOZNdhj#?FI#5`bgZyGa~hQ1Eo_6ljq_8Q8CYN1?ccob=!{**$*+~R#S4VV{# z?j?LXMdCfGWGUvshyxVKe3n*GB%URG2ZcD;V+-xaj zLj99ZH*3Y+$HOZxr^@v#Fb6KbA(`q=R_W-bkV9lTw>l98Q4xlk<>Bl9S-aB4)AfM7dA{DPETTEY=S9 zWz3;*bBQRbjoB(PZ^I*vXBO+5Hau3`EY`PWfD|)}wck7vHRd`+O51WmZpJyAG9|N{ zbZ^E{8aign(HISudkodYhbR))gp#G0Ek~cANanM2FGb>6(x0qDE;=5jOvySY7n>)4 zLSyFA(AU9#f0T6H@q0>!s-awW_&Kt=^w{J|xPs-ypl-G`MdE!*-E3EiWIjuCC=$<- zzKcTKY#wDo{i9rV zdfF&OGM}aQQ6!!veJ_Q0+Rc;+wNO4i?H(F4mxjI$-V{{H&c05$P%RWY^C+@%vLDfa zc_FBi{gxu}9;Ht94~k?yOH;0b%W9q_eFud&*$m2rx+kAbwl|HLOG94=?+$Uv$zDUb zP%Ts^OK%oy)F<;XpPC&_1LlRGPWE<+#Cw!F*#Jc{pQTk4iDyaQK_O0dE@eX9lTRnR zn#Rnfp|6890#!1zn=4$ibwgOsv=U(tVYOb?8p3LSmEsUqKWgejShpX?5Z1G^8p7&!wmo}|jbA-n z8o$~;(#FB78wam;IKeGAcy&r!Q}UV1`?hpC8iS6RWZ3Gv1MfAOlLpS&nAO_?X>wO` zQL`k$nAMMpV|OrS^=^s;R`d=M{e zWZmRVMpeeF-l(MtOQCnLh%u`{pQ?Pws@%pgs~g9xZrCxa6R(CJYlW$O{DzU@6F6VA zn-Y&%-H`?iJl#Q}pE~bBk-(X+!z}Gjk$9H$pLY75Zz!!L52awq^yB$Zq zelqYsG+15$D%0;!B=a);1x4an(#zC;+q`6}f1+eatjfMUKSx&1y4m}3w`$#iBAJ)$ z?i49)$p&tWmQ=ehg-fQ|07_QEJ%UEfOG3SN0Yx$|+#*HdS<-uL#O-S}%9TvB9z|Ai zJ%o{svq!IJ%%ol0QTpId1c-t$aCEN7(!&Nt`g>s?cQKWVH zQwkAt_x5fyU|tBim#~*2@g7yO6!Xl(`4q`~mX4xGJWKix3URWNDHH0Rd^*`6jhRbB zUkBgD8_CMfpkSyNik0~=vhuRaXvDk})XT1;NW4p_m)%B@%xCFtio~;|@1YPcdx$cj z_Q|K0Jw;>Y($Lqzza>jDvu7z8s)k}_evYi%>;)P!F9vn9Y1hKlG4E6AW-}?0`7G^4 zk$9H$T@>PGucAz-fAZ;ON79(NH1u_l_v%T0b|Pg%^-%mwCdtatR??t(L8zmxp-8+} zsiR#$k<4f5N{Ym@r0=8jlTRPpgT~CIp|69t%U3e8{V5l! zg<@nLMOIGsMj9|L1a-0#D3W<6>!V2Kvvev&;#tynP>7SAMVV0dCe%O5Wk)XDYRJ;`0c29ZK$~|ph&!Jsks#?lKCvvC=$<-zNtdY?M%w_A7E~m)0nw5 z^mXtiol3rTJ>^2RP!?()MOIGsX&Nvu1a-3eC=%~c>ST{nB=cGNAw}X@(sxjZll_J= zq3+4&GVMhgGna`6?>mZFemCWo6iiXOen3)8U)ynKL8Z$2k z^|R|J67N*%XSY!#^I5u^BJnKg`zXZE9->UBf%55RPtlmUH1u_dp11leMMLFK{Vdga zs~xV-UZ64KawMA7JA*Alyw3tb&!6@AMTuPRJ8yMKwdDWX3i)r%slHd1PW8WX zNP1;?XmO#~-(R*yxK3?P!t1X5Ab{m%tPQ?S@Q-@mmKIB|v{LUTCfRt=rv!5|i`E~XHFFA|*x)L0(l;i|<@b9JEElM$W z)_Ahf$>pK`(ol2kC?}04dTDIUFB8&=8sHXoB6Oy$o#58xt>UYW4)L3y+&A$GJ+e%3 zPR*~h9Hu9N2b|D4;M`6LzZG%7y{+KgrWa~FM3|z#7oT)hB#cb_Z=UOAg;@vAn(FKUgS8^8QIJ?Z!&&u!RHVMxn1ZQtdA+D+!$~FZMNS^-_PKJk+ce8l~Z4z1S=j z220I>T7RQpeQ#xXxX>IZ6{@w`%8}t7xvXg%P)gIgO{Qs!ai(eWBl}CmYIV)Ld2+N< z+TWK;`vH^8TShSdZZ~P=G&-=VSRE-f3iCx3tIK;g*wZC2(vd2Tup1OQw zs877W`j54)X)LM@FBvKhmX-__hZi;LrBY9Su~}TaShQkeq}p6!AJX{;-Fvs*V78o+ z4fnP!nY6O;F_G~GIum(AJ01W3t;nC$Lt95AI%wAiEELUf=z@iX{#vOqv{$n*T(7Mv z_m>LA!t!ddS*Vs9%|dN?p_Q&Vg@M}Y(yCHD&^WJ^j`H-`*Np!-QonrOr1rKCPe})7 zTW?~$d~x8fK9vDm7YON}w{x*hX8vA%sNG?sW`efvloC)RJASfAF!`nIOzQ_~dp z+md7c3OZ(ziS<7ZyjOM;>)l*(_K+Uo?9<+4`F|5Fvvaii@MeX6YKvejxF3;`RzquX*Xe>yr!G} zA^%m|IF{?+Gf@YL{*LD*6bbzH!a-8X=dW%>|C#zE`?XSC=ThRZ&k)AH1vT}F^|J+k z^rsbAgk;^MtXFpu?blk4{nb`sQi%fu}o2%9$_bHoi3!37q*l%+duEiDyZFZu31VS~|g9Nx{P0dHg3h zA4cN6FCCWR78)@x1r_XF6v@0`AEZb;OM1cj9|tTc_Hjy!}pUyjahoNIXk=v3k#Ml+^kz%9Tv59z|Aiy@3YI3qj?2 z2SqY3*Dq2eo+Z6p-KX?PYW)VqN~Ts9A}g`}n8wS?K*jnyiez4_|D;GfOM0<}JS1!L z55qMzQmV4IKc$Ccb@<7^E;LwP04mdcD3W=ZzLp~KEa_$He*%$Yt8b)aNUX}84}OlU zoOKZmnHPgfwoH-COLjFy;#ty5Ht=W}Nww!uxMZpgpkyW7YiQKGBviN`rAX$5dnZNW zS<(wP;sF2;P_AT}^(eBE>vw3tybx5bzo1Cw<@zUz#IvNAt7c;TgpZh9$tsHj(-Z4E zT;lFPv%o7vb-X)8GOy!(DH6|;UdJJKSszT9kmV{@V(C7n&{3-*jhM%fFQ74VY3S?V zZLg4)Y(>h2YN2?EN0HX)Pboyq^KV9Iz`PK2FX1^9iT9|IrI>vums2G3S-PGg@hs^( zD8$Kbr%b4O^66yv(U`e3^mXuUypgQzQ3{5Np;(y@BP%ca8I72if_m8>DH88e>SZrd zB=cFCeiK~5^DOCmD8$QNLYYwei7CT}NZ)($LpI-m541*=>{!)kERHj`qZQYdETLS*G*b7{Q14AjS7N0E4kQXe~#BAL(9i4=)vN#8#qK31YksCn|~ zV{2&4TpId1c)NThBfEfdp;{p#mHQUtbA zak0`Y?N5<-mh}A-F|qzo%7q$8@v`(M)_1rs;{+Nvmx!X;n5`mx8y;yq6YEdi@K|vZ z>(9ynDQ05*yUZg|%XvRVO51WmZpOKVG9|N{bZ^E{8aign(HCj3++(OFzCn?=CX_72 zY&rTKMKYhIXDAZSlKx~Ja?$ZTWlGjLx!63p`7Op*yZSo#?~jtMJ9eaGs2a+3ho2*> zOOJhM$maX>wG@f>DRr|qQY7>^>SZmxjI$(tLQy%pRp^s2qx!Ng!FR%zj2= z=H;M%_D71uJC*v`ixkOxmZskZm()B<`aTNrvzJgN)Ij<4vtAlAmxjI$(Sz#eQ#4c# z)z4BLRNvwH>@75AT#iH|db~mPG4pgX9#rqn0*e_`AB@5s%cW##hKWJ-r&`sv2i30; zU&({&-4H?s)wh494664HHEK;#`l&Q`OiT$|f0Z;6&7JAktqg6R-+mWs^0D}zm`C6K z&Jyv37%cDpwK1}6abZx*Q!Niy%Y8*_@~S)$E#a}GWzKrqB4M`Rj7W9H4FANN1=UL1 zI_W(^CR)GFjonIxm7MlB3bXc^HMRYhB_cC{pUw@8jXvCct#TwWW_cfL;N@Hwt<&4&RQG2Lf8V8hgbe+jGO&({O;2h@LOfpZ2VE(V3 z!+f{Mcsg^KJ(HOlk?4HSVSdP@_M92uLElwQ!8jtrI>y~o#Ul~P}`(YvDD92i;F z(^nhp?W@*C`senIG@7;ka&f4)uT-5oyrwx&8|rP;`>ekXujwsW^TF-KK+o`+dHuD% zhL{9Bw8EMkZoi<%_ktr@udUU4g3AbNM58r~`u>Zf7A_CTKRM~hO}e_Gj<<0p^TwIX zDa~ZwGN@GlY9;tXY31=ebkZdAng1AguhCpJ_E8f=XXj^1^A;b2A4-7%xl_ckMX<_8 zcQI3%ccw_-0|5t#e!$sHk-$fH4pPcfn&(mCuq&eR53x*rO7p92?L^H(#v&xEDsQl| zv%d1CG*8k}g{9CtSj3d(pj%ZYT9w;4rFr9&<_$ZgxqrhNMv4#cU1~Qap3;084H$U3 zgQT4KVs2eIpCW-XUx!&5qewhU`d^m#9*-)mC_hBO!rXcMCpaHQ;$QrBSc=cmhL9vo4)`iGQtiv>3 zUIr@Gbri|GSVt)m&yrrO-ZRT2wZ4yXB~zzP+l~{jEgEAqdDjQoc`Atgg%Rkr>5IkIxr0U9zd29@k8iez50 z=Tan|CB0+=&sC6A`yL9HOtk@&tb}_LjhdH)3imS<$-Hpyr${_Ydf`Ug{rWA+l}xi9 zMOJeCISrT>g39$diez4{U3X->g4IlE-jcEm?ot{vmxjI$-u4P<$u>l}P%V@T4UZzN)1Oj^ zn1?^SlLpKSLH82An8DMG9N}(UiJqXF)s!6vVT(~-lf#bw)g~G%A3#9&J>AfN#8>uUe-;S zQ2XT5%MPS5b7|=7;NOxZnc15u8LEb2W`2&W-0Tz@GA{;ovnoa6eM;Tzbc$p?OBYfk zo+W)3g}B*OlnM1uKHcnA8Z(!Mz7FzUJ;~2LN7+z46hD(mvU0SCY0$hN)X~0Ak$A6C zNBb2;GM}ZtP$ZrueJ6!D+N4jyWi0BTd^*}rG-fUheI4AroRXRCNwH8V6f<)nvhuNc zG+tf?>SJ%BNW4R-kG+i|na@%`MdDe~_fLqA)hQEdo_zY)`7~xO4SgNFUA~f$jZrRC z3&qGhimaUMW*RUr1a-2{QY7A^)XBa=k<4f5+Z2gsN#8*sPWBVZgt{l6PWERSGna>kOv&sf-J5ZghK|{C^mQ66_ZX^)?@}bL2_;K0TaJE7k<4f5&lHJgNq@2qx#-yB z(G2vGGA{;ovo}yA-lx>f7E&bh zSz1Psc$V~C6yj#XlnM1uKHcnG8Z(!Mz7B!=<|IRV4~0VoQ4B4Bl9i|3M5E>dfNRI$$XZ+MUi-x^t}|~X+NS&sD<+BY0uG^xis{3@a7{+cGmS7ldEOL&OC~& zoNRj~_b7F;S5PGLSvrU!;VfO*)it5Z`d>xgN+FhZG==*Qu(YK#X08!^ z9lTq`B}*HkT&NbRrKLBnIqD<&n2*oiNdxAEpqBP-iiDe0oskgp@!1C`lKCusj3V(Y z={qRI$v#h+Q1|3>arOv}nM*@o2Wd*OWM)60Xs8^DnMoj7Ez$l!W9H?ce)eyQ#51PMhn7K6cb%-9<{AP-V%AxvMs^gkFT%Vmn zW5(r3G^@uO*BmogCyQ~-J4Mat8;cp*9E>G;X!A@HLz~xGHMfU0pD(_WhBgPMzO_d; z?;I7XGQin4@2E8-^!L*IHZeeK`~#d%kO$OR1DxgWED?VdW1Iuu>@TlUzd2azUtAa& zD%RJ?gPje%hqO?-lr~wIvB(3Te`jU2HCC#X=1Zja5NQt1VqG1`l9jr7fz%ad?LBL1 z;B{6u)z|eZuM-IldEFj?VbSLVjvh)OhC=Ucjg1bxHk3rXwm0Opp)}&Pdnm)Euay#) z%CKp#IL@%?*y5xy8`|u!>03>vX|r)^7!I5MoJr=*BbfiIhfRM~WIUZ=(_Rlvi%4|P z;0{Mb?q6b5RmORGxt z9{GImTIncHpMA~vk0W{h|C-d^R^cfjOD$#Cw0xcx!=~K|#15N&sczWxZ>&Vv!=|m5 zwT4aGU!^!~+K-z0u<2dKF>LzGtcFcHD;hpy`VeWxw0)S3qop^FmQHE3^rj&zZRdNE zOK$R6_CZmSLDK&YIPz#7nl@+iqi4c;RKV!o9mKIam><0tMFO8tI7svp*H=*_@L8gR zl=A%OH&WuTE70+e*GzqW^x?L4QkWmzN-tR`c_W{d`O({Gslrm|9V}vgbkL+KTU(Xe zI6r#h{OAokKl;=SYZxg$T6oZIN<2UMJQ^_YbO(w47VQd(1kQXNX6Xis#IvOT?Tzoj zt#P_|^El}WOa?ZGr?UJxqVVBZ_jO-)kkM=4h_ zwR#j;$@L2~U|t9+*Z-kN=H>bwio~;|m#h2CEJ>}upjgS&>Oy2C*1ywuc^Rl!H~So1 zQkxg+4it%JNiWurN7n34nUGSIowg}GvZljN1`eRX@&Ztq9zl`J%X9%n;#tzm)c-sX z$ySS$42f0QhwSIb%2`Kf$h;U-vgc4F^OC)sBJnKgB^!9+gQVK)DO@tu22ipR?x$(g zyd+e(_faJC!hMt?@hs_u8*w}C4=GnN&3Y7B$@PykU|t9+*B2?0dAUx%8!oDOmh^Jf z%#VHvWlJVm)AOS{T;lf9Ebt0Z9nYso=5>4&MdDe~>p0||$CD`&(ywwQmhSv$N3Du9 zVjc=SNMq*G(AUA+ULh^n&Y)bV7RrT&N0HX)Pboyq(#pgF>9_AbqoFtYNp7ih%1 z6x7S6ect%GnR?kwiex@Zdr_nf;AO9(OsIYG>19XKn7K6cUgqDDC7IcYlnhlvF*83$ zR&KVEhRlmW-E0j-;(bcp>;j5pK1)|pB%URG7lo|MZlp}8fAZ;OchQ)+H1u_l_v%T0 z_8?_L^-%mwCdtatzDI-R1)+}i3`OF-N*(Qaiex@Z6Te`56|3*05J%gFGNBI2r=#sb zW9HJ(*TLP(DVf>+6bqF?F*6q;D<69!jhB~!`q&8+$-IyCQ6%$OI+Y^vEb03v#K+E} zOsIMC>0?*Wn7K6cb?|oiN=9}A#|eHk?xHm(!TJ zH1u@{+&3o~+VvC;6+|(#07_P#_Gub5FA4Ru`zR9cR_bYwQY7DJ0W9HJ(*TI|IEZN!gd*KQm)k3i|k0L84+l>ay3qhT%mm={VrA{`VBAL(9 zQ51=1N#8*sPIfY7Lfw;3CmWDAM}0CM^QqZoG+SWhZB;KRc$!?=a=CgD+MdDe~cTk9vJw%yM_vF*bo}w{xY3S=9O>36S>{*J2%AuH< z1d`Rt>;)P#F9-FrX)*?~1zGZk#Iym&%SGDQn)2A5O>`EYZWOG3`vU&2C#mUGX z*=)V6HL}_MD#ek_e$>=QHW%VYHoL2+%KaBh3LH3~a)uD%Vj;+fm?+-eHz2+-uduFKtgq~8)=QgR<$PWiiOHyYnr8o^Y!a%BhH*d@q^coh!a@3Hst*5$f2h5)zM;(x%1^Q#bM{G zV{1d!(H1o8;+>rDEi4a~8qMNh`!(%Pbwy9Nkq#YN<9-s`U72u+l!?);gHg6Epw*1( zkEL_TODz>`cA*f^RPjgrLLtd)-<<;QHF{xI1G&|dxx+iR3#4~OxMtiW&kVeNn)7-~ zSnU^eSAvsbH??2Y{&}lX&iAD9>>o&(+YnKP2}b?)ieq;$>i1BJ1gE}YaTE!B z{^KA83pmMN--`ZIiPmeSx)v#M*okoblMquM^}E>CPHG|~Cs=PfuQKX)A1zf_3cZ6x zjQS0FR%LIia;{rEb)#&?*S9@8_oorPWFziDy2Pk#l@B%3zX$08TOk$YGw+xiey*o+ z1JCOa>2~u-F%oI7kK`r(7bsU)TaMq^QhZ#kQwVzUd6WhWPCilEh`CYYhZKp+m1gNT z6p3d^FIV5gK&3PB-ziu!z4|Z`|C+Ny!A`%AE&0iS*A4~y5{hJAu(K&r+Jf~z@KI9i z0hBD6V*MOhN%kljGB1X*B#80YlPQvU$*!PCJWG0ym7nP+iFSmtB@?Yol9g;PqCxY5 zP}#nhBAJ)%M<^1{l3up%)7vD)ewtz>Q>+V-l~^C5@$xcIu|7eO%!~DB6p3d^FIMjf zU6NY=NV$@!)uYHtuAAPUyH)IV6v@0?ccVyY%hi1jlcd&Oij_>QE<{#hJ)FkN%Rs&L zEfmSTSeH;Fo+Z7vhCBvkkTM~qDxY|!^ca*5KN(n0gXIOFGQErGqHy{U!eBSU@GF4Dl=4pA?XjQJKS_OSkz_Cx1yTV^ZW zH%XC(+-x)L4Yhiqbeh;pTXnZyIy=(+KatY+Iq9JB`(G=u>8spj9n#(*=G-WwfWL9} zCen8LoyB(gediSRn^V|-anE3JxO-?$VW@Y%*-MvBb+?EHZwr_i`ET5R64Q)&{l&u2JgbIFm%2^u+>+7m>cGE~v;Is})|Fc^wo%^Dt-pN- z$aD!uewY7?dY29gd+xtPG?b-Y9sw(aMZP+Sb?PR^*+AvUMFEtv% zMXeipt?yJz%bSJTa{KGOdiIK5)XX7=kt_F#asSh&&%V0n>9enqYgyMTZ2-^2$Z~x@BpvQRWEOC=M^3(=LvE=V-e+OM5g+ z&iy+$TDwS&4T%+J2#{Qgi>0W1OLE1RHnk&ZzeQ`sF;N63AMZU;$LpXHo+nw9ZBLpJ zo=h2I{9#QLRgi-Uo{m0jFr+jLWviCp&$n~bL7El8I|qyv{L)4Hx%v_(#F4?$P_rSP zHc;rEy;q}W>WSs%fcT5}LoD!wGu2ClqWFJvb**5ZR_i6PYA=eLt?Om$9#DHJQylU+ zn!A{<1TP0R+&kL~>t)e_3U5m%ROtkCe~OY*404;6UhYjzFU|pjdLi1bG%gbBkEZy; z`E=w3aW)Kd;oy}bc@yW*-reHzXG%Wvi#Tfc=qAH!#wst@-6{SHt916A;?~PrcZ%Cz zrFW;e`&nP=cZu&Ff0y{^CE4Cb+-UgjF(0!(`VqJGgIm_W8~hYfI^uuiUF+MmZo!rU zmCt#huaGS1U(k}0+`Im_z)SmT@$p5}ngHCszLhw(2w3^8p?l@) zd;&F3UWV;Pk-#s993=W%!(NI6erxC;rF{GPp_Dl66W#IOI>+@~xq$a|Mb93m2 zm);%c%I)jZv{Yd!^bQtr`+Cr}DpRe>{kPt}zS5{{mEVP@fBX6hTOq3F#oWGr7L6Nt zUWZ8UGLICqu_yfY_4iY*u(lk(v!!_Zx>E>x^0|Ws3{E~#+K9Qe@{1IS%avy78x)CW zNiSF5edE#^_+r}lu z?nud!Db~-Cm1Os!A@gET$-b5%nV0MvDH6|;Ub6B{u*aa>aC zW0WhIT0M%az^o+dAUw_DC1SEd*`^M)~zU3GPSx8S&4Ob8n1b=?n{x( zi}hfN#IvOL){xuRkD*LRsmdpwDc!!_;U@z{8Z0jW_0$?gGB49JDH6|;UZ(!r#wA<5 zgpwh#n!SC!L&;uGL*~VxlD(ZGnV0MrC=$<-Ub2CE#wFGM4~0vn+5k#cOM)NLsCh}K zaDPLQ%nSGL6p3d^FI?}&aY?hAeGRUwlWEqYNK3AYHezmHe+dnkYePYbxqW@Mc_jK< zt^+7i+HzHIUq6B(A*Ct{*i>&{kNWjzj8;#kA!Ds3+OOi>z8eh?l zRpIyj1b4lk5PBbbVY#>wTfS?uT3b=>D~cN}#Tcd$dt_3fyke+k4MOtnx^$+Td7JF* zt?q{2LpmW|M0+mGW~965D}T1K+S+O5+zlbUhe&fUnVsCf{$A;zzWw4+o7)JubN~AJ z(t8N-;Qj03j!oxI^1TL1)oN|8#XY6d!~m>@eIt9}p!tRUX6x={-(y_=-rXJ?ys!N> zi_d>w`);u`@}AJ!r2vy9(Yp`&7ID-h_qclka&AfgNT&yM?r~QRs1!D+$bH6fkGox7 z^)Bdf-RAz)sKhI`H*YW9=I*?ws|edCw)WlWZofb-@*`32)j_9tMYbXk9bp4_cWGTY zscS-)^}klts$WKx zN|D9*?t1@y)bSFP-lA-mKJ2b{6va61dhhz56fWAFbCf4we-xg8Te^*mAPwC*cfFr4 z)uy8{p5EP4@=8YBtmU>z?5xdh-5pfBS*f@0pt4@px`WF8D!n_XB-GUJqS`b5E-H7i zJN_G&PP%JyS66WHDaJdG^p$*fM2+YErG+EnnLUg0Hatzt>Ri`Xst&K|@s_PUhaYjY z74i}Fx>)3j7dQ_*v&MP4BSRM}KWGmSRes`)6IFlY8!oE+&>1zVe7`+-RQZ83hSdLk zZ%AEFPmdTlYRxD0|J;trn^vm)NSa-${#0bdI)d^8cf@HhOUD=cRu)%;|D$8XBL&(& zn^S0S-WEs5U^c78y-^qL6kDahS?NMZc%v|!X~arV{+kWM8m27Ie0D#BQwJ*V*t#`U zIgiO#8HoO~poCw4P3`=wjoQL*4$RTRLAD@dKZyL4&odgQTy-l=cT*axuO}xx&^q zk;_A+80kL_qQiRpfX2=1pGP&nQ?O)u^!evhqV1 zB+-6~vLzF(Op=vszekTx&bohTB| zl3ucbXD~=h*F7m*GSvo9vJ&n*8Z|Eo74DlTl6m32jUw?Z>4ob(h(Xe9KjliMS&t$s zxt>M?=7pegJ)a_(m+Kfs;#tzmbqoK!Hu5#shbUVz$?l@P-6OS~74-LzpQTyg6{0%+ z3Pm!n<8Md~hD;uU@s2GZs`7pBbvU6#~ycE>S-b0aimr^hL zAVo5trH@l2o+W(`g?QOLlnJ#@KE3Q)G-fUheI5K;vLrM65hX*_P|VEFk(HZ0M?>bt zpl;Un2wWZWKBaE9B}FoyrI%79o+W)3g}B+?lnM1uKHcmf8Z(!Mz7FzUJ;~3GrfjGl zil50OSvlHL8Z<8mb+jRh#Cw%G+FFWaK1&xD(i4SgNl zy_}MneV$^WQYdETLS*G*kI;B|8K{r_fFkh@r9Sp+iex@Zf1^k|OZxr^@v+H|!ZkH& zo_zY)&NOB&4SgNFUA~f$byF@>3&qGhimaUMKpHSF1a-1EQzYJ_)X7ewNanM&oFefo z={qRI$(oc2bx%H>>_QqdmxjI$?hbIt$gZMTs1%Bkxe!_T*sU~PUIyx8pQA{;L#dB_ zl_HtX(*IH2GFY3S?VzduSkDSnQU zp=v1C9e$3iE{k@Ye3t$~k$9H$T@>PGlOBU>UDQ9yWk)XD zY$qBsmxjI$f&1npL)(+Wp@Jxe7C_0$)8^5rc}b|Jy@?|6Zl#{~Hi~3EOZ^myXGz~n zA)Z#JOsIwO>1pTFn7K6cb(mt^W~AO~G)B2lEfhQRD6(?0n`ywj5Y)*&OObewQYZTg zMKYhIZ&M_mC4C2lIN47q6Y8FPI@zCT%v>7!I(T=8OAE72zHM@)tU6hHP@TCuCSyJ| zn?VESg`iIMa*D)zlsegd6v=#+4xvaqOZpB9ak676(|>@IEu%4WY3S=P%{S9hz6p1j zqM>pqW+s7TwK6-G#>~q>{p>vyiFYdXvky`v^I7^hMdDe~_fd$S-9wpB1LbpN_AMGS zmxjI$(|pskWIy{6MMLFK{mc)Nm7hIFW9H>h%p>NP?_H0>H8Mw{7P}=yO4~fVCvHfW z6ECG)$rS5Rq$O8ch*!{nc_9?J#{9GkatESX+?7+DE+ zh(^pyK?S>(BAFNL#T1EWNiSIco%51nuclC=$<- zUb6Dd(UNGNq-@DVE0bg;+h6}b_Ra)Oj;dVylZ7l35)dTpP!1p+NP5@=9c52gBm^!* zL}SeK%+zGM=;H3r{_Q2mFnwFemeAY*Hk_4`#$e;PF0_(hX&0HLTURXg_JyPXMGP&u6dU9wDoU; zl^FY63ad57`XJIGYlg>k<$@*~$DS5JfkwW5G(vvmj zev)reOo*w<_3-xIPeLzcJxYV+1)wzj1BH}4O`oBVc$V}u4KLQ0WOe87!|Q3qk4n0SYO3x_*X2;#tzuRb%dQ55?9RWjoZ| z#J$1y9DX5OFVx?`4Xv~}%`Z@&5E2Jsg^C_;@ zv?M^$uHjGV(I#ug`)I(t5cFjI3<`<&sFI~7>rO79kdn{R5QW6Er0<{@B`Z@*sCzn7 z$*!a^b86`85L$R6N!bJihKiwFGYP>+OUrJf5%W?|E&CLO#JiMg*_SD#>AFBt09W*ibzbJ(H27rD#{spm{;4 zqP>Yi;=M{0?VS`-@>%*Yg~YR@@1z(-`#i;jI;b<}XWynVb86`8;IHMB#Oy~D7Al1z zWsIe$O05;DOo=am=}U7S&>5GJxY~q6NQv~mad_Yc$V}X6r*G}QcS3O zI#bDRr!jMC=;mt(g-tY+peOH+W<GG+J{2oS<-h=jGARACe%O5X-7w>*-L25oErK%MDClD1ns31 z94d$+Xb~uBY1*r4)Vw5A(+U(4?^dd5mr_W{XX$DRiDyaQOEH>uJ;j7ts53R~12kq% z4SgK~TNO#pK0|S#S}1ZBph!!}zD@(?g`i6I0ENVRlq%UTDWv4H^j8XrXGz~dF-kV` zK{$y;-P4&$wik_=Q$t^e;0|#~$(~Pfp<1X)mb$r19}Sonf-2b=6cX=Is$>^XNXchu zh(h97(sxjdl9eeY)IFW4WLMIdIW_ckkUUi+F`J;!P&pJalYpc(GrNt(%*#Rb>{ApH z?^LR1U#5_f&(eJq63>#pk7D%f5sC>lP-p7dpJ~jT8u~gkHg}o+P?8g6RnI!X++`t+ znU_Nmk0xKV9-IQCChGx?N*)qb{gWu9cI#R25D;lnu!7=3nx-^SfTCS90$PXx8Za+} z(m_qWgdd}jcvI6XZK05Omh`e8deDQ!*BS-Z8ec;&(jx3TX~et~l&~MBkdi0t=P4wf zB|TxoH}gx3{TfBq8e_va(xU8-Xvn-6l(LUgNXb+7DGG^aNl#h%er<`ga~|HVb88t% zTD0Ad2F(jXX?qxjlss);NFnho>1pfVnJY2&GzzOVne{=WMb=l+czGEpSw|?OeQex{B6jy6(4N#;-*BfcTybzSGw^B&S)AbGtiDyYqSN|S6iLG~2Sgo7R>L^bQr7cm$h;Vovi%fN@{}!7NH|Mxncg+6%l>ES zxf@w3F41=rMcEpCBT&*}@Ed5#J z$1$s>j-{9of0a|Rj=0O8}4VV{#p0!^} zA@LqnveaY&%GDH7@>#l`LgHD{cTkLy-9j;;?&(Y=`wWelQ$t^e&rsUJR;c7f?vatJx5Rlzf)T6cW#pzKdei zY%9ft`lmD1Y=XwjsiCifyl79-vv*T$s2+-*$w<;tv`^8Xc|oY6eVIbyy-Me2_fbg6 zXXz0NiDyaQNimA{JBkT)P-iOI^q;_aGN*>V4*sG}Nz8Vouuv%!G4nyBrDF%vczGG9 zjvYlI@eZXrb`ph@e3n*FNIXmW{)y4CS5Zu;c{)?a#%Ro(8u~f}%Y7vw+d^@nS|~ym zph!!}-b4fDg`i6IP6~GKp4&yv1_VwCJ_6cg&6&Q!7=(U>_k^mXu; zf=fd7IE95up$M4|A}t;3dNlEgG1ajJ6cX=Hs$=_6NSv%RONUWNJWKliX<$6_LW&DD zkfLQBV?48*#?2|Bu(pZu%qzD)q{$f1jBI~c&5UQ(r2whPgJ!Ns9uk$DH&ICKmYkTo za^6WXwI(<1y(>p)=q6v&-$8@r8bdj8H-*GGp=7Da*Yw|}kdn{Rk0>ObCH-I>bJFoR z#nf8obj0GxuAe48+tt@0e4~_f-m!opL)B2uJHj~9I`!zGAt&FbM^H$-PpO)nKp`cc zrR5Y7&yv22V$|%F6cg$n<+P(C)T~Hj=G4&FA#&fGBxsu`I8+ct&>~RM(zG|wsCh}~ z4DB5h67N>3X}42I$!F{yBkbx&t1*-L56oErK% z1b2u_N_HW|g=(QHS?b0!1sX6f1XZ$2DJ0&bRLQQUkdn{R^%N4%lD>mtle(+TB;Ki1&;CjwC7-34KTCZ6 zs_&y1J==|9LJicJdiH!8GpB~W4vmdxj-k*{IaEFC1ml@AXw1AEig+~nqV<9lAT?PJ zFqAwbs`_OLiL1W8k7lkco92WxA=pYWwbnoj3c2z{*{Xn%b+Dv0CzzmN;~p}tD`s?c zZJx+jSBn3N{<+%yPh9@2{jU~}|2shZ7`NUaHnSdhkNELg`_<9^EsufLGW(5_XLfa+ zHEn#rGOzFIT6Fn@eV9wd<|D^h8^wRb(I$WJ+T5}^T+Nl&n$?Ng-fKonL*oUr(mQAt z#y0et>vDzhTs2=RPSkc1+vSHQYR_BdzF8_~2gdV-p*3Z5XnfFIGnyMLm)6*SF;SZ( zwjC-BPFPP&_k$V|SmT3Q;RLi|d_YOsAzQk-a$f2();fC+>%|Y#icRD2WnEphT^;1v z5OT}bam$<|61U0T!yR_9!>SIiCn2&tx`ikFK$$5k<7og_FB`lQx(ik_idm$imv|doL&z#zzGS z&n=fMbFfXv}8QV}DDHVGwQuB0AKB^;TARfmX{r!d9=)h3Uu&dn{l)ArPQWjhG zP2+gu2wzJwmQ$jI@w=6aGX3YGu(R!fuG?vIpW;@80=0b_Ta#!4WZt^c(q#ku&;7&Cvm~ zyk@9WT_Yv|{l;LaD8zDnu-aEowpZnu_TS36?P-)-YtI{`wyw?g4qD%*o4K7FB=SBF zYqZZP)N7$Y;bz80TCdkEH*)!~lMiLrXv*Z67RU*ekMfelgPRvFphUoi5w?SXa~lxw z88O)i$-6&6%~&&J;jb-Ob;N4BFt#>@<}lTg^G-p`QSH&&{`Ao7p^ZnN#bh^f<&K#2 zpFXXeHbIa&cB7ei1(^qGTgx*)($E|HGy6 zvf+$uWwY34RM(e`b-8jrHz3ZdovDKTP9Sj=e>$a{N^I}rJJXqw#z70sYiHQf@btkp zl2DP)U0epeuWbzSb{J(4VY^k?CT1s9@xz(36H6~tdvo3aimYts!=V#UVIqv*i zXaDqI-X*S>1m_4Y;A7^_5?Kk(7OoQsi`~ zfFZ6(Y)R{iggcjXFF=UvW7gdwL2{DVua@U4^_OSo#=JLIl#2G= z&UY@nc<-&ui>o?Sab?8&y}s5(Y_~+sZ?A(MucVY@MrFiH{8Ee|L67g!Y>dXvZs;R#z>H5#0u4kbESUwNCNkW?L~i{ws&OnZg+F%OB3(%SjIXq zve8U?BYzjpVD7#p73Aqil6+}xG_yKf93~fg#od$b1H=Yy0iG257BZ!Lf9PLJa3|K& z`s4{{_b(b;8)^gzd>!LKqF>hSMInJN>pVzG`NGw0;szD-Ro-C~aom-7=i8v6(r7MU zoER}{v+eJOgtSaJ-=Rof6}A1Vyypx2jjyj_5;mC6#PV4A0&Xv#(SLRr-H3;ADGYXI z4T@=3eQvXxzssmfS%0!S(*I8H!S_f~d*MPclGn#OG2HDKo~4< zl9k(6Fai`Uf9rp)BNZ0a^br~`&~y)yGV(RK`Fh zgHrYh3MqNYcKs5b@bE0@DJwsxT_WuQimf%$%1F|pZ4V8a7lhLG2ns2A+MYlm@hs_S z>pziOV(fAXt2M^@AkrdhKaH1{fs(aIAtg`NO%xK(lAf%=QFMe}TUTQ1y%bh!Z1q8;Mb?LCyu1vQtiPs^k|*nv6cW#p zo~$vCww(1VIHyKTRc_5|)1xh?c#&ow8Z0jWrD=vjN}i_2Qb;^YdYXox8z{-@Qi=?b zRk?97j3X^&y^w~?i$N(nOd%yt*(!y^v!thNmh?Q1c}U7jC?>>TsKUL?b}aF4<6e)L)hAttDJ7i)Wbz%nL!+oouC$ zc#kSsYO?O+ItnTIEZsyQ@hs^(C`QRXKrx~2=}aa20*#qdLtlr`!W&7-zD|LmVklA; zf{~V%JwhYqrJ!2&I|_++Db=#4DWv4H)cu>p=dSu5iqW#YC??cCovCGuY0R7&`Z|P{ zWJzMyN0FgwC}I}Ik(QdRpds^OP&IoMg_OLSSrk(8S-ONm;#tynQH+{hNim`R=}a|y z8;zM$Lth7Zt)8T3w^3}U9*UmHNYYZY&(olJL8zjAjY8tRO6O-kq>z%&($6U*o+W)J z#VFdJDJIlGovCPZ9*6T}P7Qq>{I#5tm@TBRP$?8K^FgGgV~5drc^RmVy^uoU9ZGfV zGzuyCEUl!Fc$W126Qg4T6ccKm&eXAWG-gf>eI0^TzLJn#L2;p4C_)yXNK46Xqyh6n zP$j#SLgGD2mFx}*DfukjO(F3t={qP!$-Yf7q3-ESC3}p<%&DQTgTDe?60#>KEK~|b z$b1lK>Da8_CO$EyI`&)&iFYW~u^tMEla*%a2nva3N#8$n>JOWezZO4%;zA9iXxT2} zsWJA`x_mH+HBysx8RyZsIYkuKHi6W?{UOZ|&mEH=4CTBdNo;ZZ!lklHOdF*oDfN-?!2H|@O{M``FLG`*7s%Qc2_;$8}gb3(~dlO;#@Q%K2Y z=`jk4XGuR;$DDLLK{2(~IUTWha@Ow>pY7`F5WYW38Wf*Pk)diR=N(}jiOrars9A=F zoP3`iOCj+-rE0d6LP|bM=TS&JOZqN~QL}!E3H6V1+R+heR;4j>YUt|_xo=JqwAWB@ zs33}#pmtr*Sn-mjjq0ZE_M`_HQ z8u~iSv7c~m|6jhW^#_Uz)k2Z807Y6#HuLw1PnD^X?M5N-9;HfVP)MAvG)q|uiDyaQ zK`~195{e0RPiHFGxin@@4SgMgJH(}l*{dloR0~zf>gEt_yT4cI(I)4aWg0Lq1ntqS z6cX=IB}+}Nnq5aBC7-36C?uXGeFw!T*#{^l)IFW4WM7~$b86`8FfZgIBTvh|PNAW4 zC}Ji7No!{I2#uMSgX-DuC?wvgRL`EKkdn_*_aEStnrBJhM=^S~7sZ4cs5A9!F^!p1 zLtlq^A@3_$&-y4dR1Q_o!a&l}vlTRET#lA3dL9rqIq|Mv5kDPMnDE4T<`Kidxwa3I zZ~!%{6Sck9jFyJRg_mcq^W2c>+C(O7e5+!r43)!)m7Uy`hXwT&dD<82;tjg z@1bbddb9m%op@E7>%$kgJ*T&;CalZE2DRP%&$6DY;GzjHoO^@^p)jxv*%`S7`jO-~ zCj7xJ7dwh8Nk(x%UFjafsQ>FT+&65$a$$xP{9>Dz2XEx7=4kL+X}~fE?ajx^`O#ci z*ja{M>ykNybZ)nWwo;sYcuDrWO&<BIwZh4G zd>}hm8tq+MDy=P;wze&)jG2SI1BKE+?`W=4HOsw1zj_O~;@Tl|I6FFYkQ3yRidhid zl`j?jx-F2c-L0GKSi>#X=Hp7e_KtQW)=}&6a(=?W?xlIY2+K|E+r%*%Th)=~ofBUv zMfF|1k2SCJ&;=I1vfK(m_O(J-$TrxsXY+f6&gS=Xc4i%$Uwbpx=GS@EKAT?&s?~0* z-^G)#`h88hR=@VRHWjHo9F5O}I8@MTl&NlpOwyNcCeS~xv8dmf0 z2a*)u2c@_b>)&rij#cZJM(!~C-(N)%<)3LZns@-`)t`xdPr?58Zxj+Z)AS(GD`z|X zQH*u7uNK2xxA-xM=^3~taojXz^6rRjxBuN;;BP#q!X#`k&xxHu1&+Pm zTq>~t{fWcqMy(N-!eD0&?0=(5Wj$ike~10=Kw-yFZ7*@*&W9Z)%wet z!82K<(fQ=@????r<|9u$^7-+f&iGCY0NFjldZ;DyEm_p)N($h8c+)atE zmr-DG>OA=YE(9Yj!oHbC%u7KD`z{J8dBT2#LgHD{6E^&8MTxQhNs+b2*f5T?DEl26 zGA{=G>NeOb;GV(TX83aQ;R4L{C7lGP(AGDKEo zJ!u$6TFSbNhRlmWmGyiIDS67~C?uXGy|PAb*q2yaqTpI%Z3IeM#CcVOx+#9!r$pmsEg_L}jwoyntOZpCqQL-B-Ce%Hhsbn9dF>`9@>kwLj zBT3n3DKJzFMan`j($cbT(1>{{sFpoQA@MGyTJ|dnDfuk@jY8sC()Un|mhJQxIC(|w z)0tYfH;tK7LtlsR+AK-T4yDLYH54%m<48-*UQ9#g#h_|-CWXZNl&aawDWv4HWKu{x zOZqN~QL_rgg!-p5)$A%7GpB~W4)UTsNzdLwv7ve>dL|=DOVQp>gXRUHiuP#=iT5g1 zw69P|$!F=i6cW#pzLR1U?I#oy>Y&b4w7<}pIW_ck@E3JTVm9NiNluj&G4nyBrDJ>2 zczGG9jvYcF@eZXrb~J^Qe3nk8ka(8#{S%{O=TJ=l0y;KGW9HP**CAN$D+$@f6c?(6 zB4h!Iw3O_1G+8u$Po zPH~|IQnal7KEP94mvJJEn^Qz#ZIh)UXK#Na?{?sa+HQ{vgGJ}G+3@NloOw%kT@rlEHznj^d$-@`7C{hLgHD{ z57sd!9Y3a+TI-ySSUmYB8Z)Pcz7F9VrKIzYX-~pQFRF%e-Vw%;)~UxHG-O^3s%8gK zNW4#}njJ|YC7-1eDI}gHeHX>3+1V5m>L2B_qa)NTM`PyH(AOby1DzyjB?=A|L=m(I zl(aPMwKQs85~^u$q>y;GQcb&=LP|bMAEJ}aquS4L# zE6Lfz6c?(6B4+`Lw3O_RG+lFk1+oVF*QrF|(Ro+W(;#VFY#iV1a3 zXDZq8G-gf>eI0^3#3dy=i{e7HP?fBGKEREx%s07ewuT1G3qh4^ltSV?N|kIQg_L}j zwoyntOZpCqQL-B-Ce%Hhsbn9dF>`9@>mb?hN@Dg|3JsM*5iP$V`o5swkp|8WdkjsYb+IT31hRUJp zSr|xKdiG)(GcHF)si*Mi@+(Dke8>Dhg!gP*M!t(@fN{JS|d5gJGb4l5(lnUcoPvC8KtYH_)HXm0y z4Y{@*i48n~ZS0CC@KyGk1H>t=QS*A9z)Gc_5l@7ScTJxm8!p#A*5B`0o%i?m85iWr z`J8Z9s~EZBka600(Q#|8^cj`XsA*L4qhkfru2xEI_g^f(f@6s)Fa7QM@6bKFBD3BEBDz|v+Kt65^F!u z4%T`kJJR>AzSZHWd))W_uONp!1-J3XI&&(sqvoF3CpzAqRxoaMyW{4&r`pTYMVf`- zwz9*UCD39Zj&|&q`}+f*d%I~*%bSHE!}nJ2Geo@kG^TLVU zY1>@U@u@c}7134QgQan?54#6No0+2Va#dr!d1%=*a)X2RHpR7KXO4@zv0ga9i&hu= zE|;pM!BW8(7$3I9Ky>tIZY_D<838Z0*pk1@7_hb*evw5ER|=cGy(6 z{vdO|&p0>@3wa7;hcXo==~|sIncwIVy|Mj-7-Tw zO#LVS^6Zoq$BsQ#P1~V3ySa+f<>Yq?B~lc}+hJ41dAeDjg`2q&>SpoUKL3&Wxzg9| zDuFWlZMx*`Fse&LL#@g-F+;41AKuycKgDnqcbceN@`<+j^COemtg%vDY!T;k;{U^? z@vi8aqGDfM z^asUmdpI06@)e_4sv1M)U_lVszG5LJ_u@@Y6Bj#E{qnfD&LOT>n&q+>HH)P+mGQxm zHBPGS9h7tViaDg2pO0==96r~andf#sw#2u~+QGL*m#PnR>9KLDd{btD-VQI3K*wA! zyL?jBtTSq{xR_OSSmg7?CS1j=F7CE3M-Q39x$#0(T=g!Di<8aaVADedVZ}+IxI9)6 zSHw(vUN|&9s3qFgw4uq|d(C!&V-NWaawQM{H%PT@?ZTHbvh=uwd~@3f>Fuy7AzvJu z=G>SgUSf)$b!5)GcswsiW?$YAI%uvsbokKK8qMmP`c7pMoG_&wJ-YSAVNurAkt?cMJHzwiVFZVbcQko+++3i6(cyzH;VK;^a}3O&+>LDeVDBQ?xAGkz6SH$CA{4 zHOazc+`@dRZH4i67%fbDC)VD0(sZWzl9lHyJ*Urbz6%|-+tXVr(39;k&Rn`|#Y*Q} z59e~D_+F$wGja4TI^900!LH<02lkgJjdmv$^(RRd^)R=n(e#iScvFL|*ViwC%PV`r zr#UOe2O8`-Q=2}vVZu7*%C0Wcid)q%a*p++orvO%;xP7RR>^-gCSGl`E_QyFou3uw zXVv*R?)+S5|MZ~Vb&dG*+2X4|tK0tZT5&RF9W!^9bVeqiTGxpawz%)xtt-S|*cOdf zivNn68#LcD)@BPXmGfq0LTuM-uhw!gjGPo4Hh>Zu3$42a$hd=Ntgp(STzKa6uCBN> zSZi|SwV7(!H2aJ#VqSew)_$E`DSj+6mYiUmQYsZz+EbfN#wi=b#N2zmv@|Z33eXXnPeH&>L3_TJ7H0T=l$;GPa>QQY!XV%7gZ=V;g!y3?19hH&hy|I1IPX6BG(JYQzcaWO32q ztZ714c8?@>kJujd^SgIs^KN%@yN~PJWUK=t8_l#gs(J{= zupONU>=?FJi#e%YECO3jNia5VU%?1av@8`HoTjv>roWK}3^d(?q>Ow`9*cJ~g#<>v zDQ4+I6cW#po~|M5MTxJUqrl?SdGZ5X2u50j{T7Xwmx2=ZVG1dE!v2Or;#txYHf*ma zG4}5iS!;|9<4B9L^Z&_C`z&4zO4)rWq~s~Ph(h97(oLgHD{)7JOOk{CNqVYS9sA4FPY-A3c(WuRoefkH~2tna0ec$V~J z4g8QKwtj-*YK^S{inQqZRT?la1f}cuDWv4-`cn#tXGu?2-}Odf>mMns*4XNUNQjWM0*rI-*?m51iE$#i0h7imtV!SVu7P5n0tDS4W%p^$i% z^qLxeqQ4}oqZAn;tMX+{7)M&ldN~c57lTsv^%PR_lzlse#IvNQY~-2k5^Fz5!L`QP z2$Zyl`(HF_UJ^>&Z%|0d6Zb(1iDyYq+y+n9{T0R48fOC(Y0>qcG+P3-JU){`N}k6rr;vD-^gNDv ze5pw>A^s|7V(qp4Y4k;Y6I;&>G-gf>eI0`371EULDvAr$LOIb0P_#=nlpbyJVEO-` z0rNu8btmtqka&+OS!%NG%){g~YR@@1PhZ`!2=!gLJMys zDf|^GP%Yb&LgHOYwd@cIDfuiNO(F3t>3b+f z%TA`4Q2TVImc5L|%&DQTLwHG+BxZvY8LEaNW?>v@so8oOGA{;Iv)55byici`y_rHv zK1=VSka(8#T@<5cAEB5~|8%CBeTl}*siCifyjD-rv+q!Bs2+-*$w<;tw4c$Sc|oY6 z{fR>2y-F2r+O&?F#qL5O@hs^(DMr!urnNn_>>q_2a&mQxb56DcfI3PsF( z5NYYy`7~Z$2C8E@3W;|p)v*$Vlzf&pQ%F2Z`u>U0v1=(N)I6Q3V>i>7IW_ck2v+$@ zLiQnw3)MmqvH(R|N_H0wm=}U7*|#Vp-lJ5>9;T3z&(d!wB%URG2gNAa-zg^4J)Nm! z^QR|1S=ZOWUjZ%&*}fDODup6sK8Un*te3`{e1{%SA@L5SI(8O?lzf(6K_T%h>HB9+ z{UKEHnxeH77iu6y%XSe@jj^BN<%3DAk(#W_*hu5%6j4~)1k$$c4{3&Y9+~_ICg&YV zVsF^~u%bJDRd#nf8obj0GxUK%r}hQ1Er z`=g{m@py_1RYN)N2;)d>#?(a3{*8vri$T?F4TZ$}l&aY%g_L}jHd07DOZqN~QL}9n z6Y3x3w4)=`?CmsWP7Qq>BKOTng7!fQ4i!WZv_8^6n ze3pJiA@MBfdnrcK{zfsO7V1n*n>Q2AlsPr@b(mv6sNDX)d^)~2#f562$XS3QEhSq* z1LlRGO7>z3iT5Z~vNI{9QS3dpc9eHqe+kHS~1|?huzIW>-;M zs1~Y{)lDN>e{g%FJ0_c)XZ{Bbm=}U7+50IZ-lJ5>K20GdpQW!*NIXmW4vJB-?@~;t zdpc9eenDgA)X>*qUdUfYo|gTELPO;P;4N_>R9IBp$fuyBp>uJom94%S& zJRodx;@!U@embTw;feFqBZhvqD^gYXpPAK(+TLqMg&S}|c#B1i!X|1viS6=36Sch> zI)XVK-oj06!g@mZ`gjIfL%xk-)Eme*=TdT&wS5IW7s8CS&fdd%@uPuv+VEvvUA0}K z5BhO!oh);Xcs$c4dk;6*HQ#K%x>>xc&Go~WP@Ledny@Yt8`k#mx5>(0ahXLEUU>Hi z??T}S8L~NY3pZP`M-aYYmx~?7l`3PMBy8V8pVU@*PMwDLug|mYTr(sbo;QVlv0dwe zH}X|;H2AGFU|Yk9-^a@N(Og+rQHJf{lR1QR&i6jrVsWzKCD}Dau63C6om=Qzq&P*P zqvgCUppH|}dN~c>iM2b}!YQe`h0&AgF;~V9COp$v7P%>=E^|g*dP*a93ZDokxGLLS3dpHE~ z)*|s%eFsVy;`3GZpE#k2Usi`UR>BdVZ*=w_4oSSZS-dHacAt{UHHpVgG^M5WNqd)$ z#o3HWQsV59YIUsA*Bdr&Tw5xwEtrm9V`a=7>>VhS26{(xm8x0p6`I;x$Q9QLSNH7b z&_Pa+ODbkTbhvOC_3O4k7&3;0#Ja}@7H<1CA6M%4d)tv%X9O89=O-NOUiZ%zVY!L@ zvN*>0K%)nQkV?&&WTj3y+Z5iJLx%7+9?cDwOD7sHH;tvD2gL%=@qA^(7%;2rO|xiJ zN6d;TehQaLqmm!Z3kN~NvD}WVO>D;wrMy4Xj=W1c8zOXfgET!Oe1bzv8#&ISS;m?n zbFg;y*>>70eMW1PcamS}_Ng8f+2!p#O#LVs*JpH2ec!T@{IOButwFyDYO^|Xe?C%3$BnI$W{{fUt< zYY&gE@4NV|!C)-L={IYD%lzMK7Q7}z^m&0>-sg&AOiA#S@_IXLTHa-`B@pv1Ln>;{ zsF>?SK?_E;?gws^{0aw}AJHi*YbPx{B%h}(ktmftNiyWZG&{J|)<+~+rd{1KEpA(x zyd6f%q?{pY9O|u#aJjdt;)mDj{}dV&*Xq%kJ2{BA>#g?bq+`=9pYMg{l@0cqsZAdf zCuJ|Zve9Yn$T`+|cIk>YibL3&Stb9~n0U3#y4d+yc79fzpH=7Qxbt(J{nLYampDna zX4@9y-S!U$@G)~|iLChN;MR2_VR1t`xs)*5ED9rWvoayR9y`iDhj))Za#C=}0LI9| z+7&5Vndgf`<|VF?`3fQRcZ)Q|r66N{RsQ6{)5Y}-<=TL=w~Xym-e+u)9i$f-OHMF$ z7#)j~6?>V>YH?X&i+2;1{rjpNM#r|%@igJ09im@tXLo2=u*zWWvO?yW+?{+tL{OJ8N z9L3t+-pJp@7BSe=W;$<4W!V}@l`p)F=B|eeEIHkj_yE5Qo5a3Fu*%m}eKM+PeewkE zItmF~1ot4(ud8mNkigef9weoF;p#Rq8=vWHE7kSG6mi@vc=E>03*>R7^#v{;aJbVp z5;mCa#PZmR3d>$Tqc72-ic4XzGiy*x%IY(p-TYlfwaQv=SI)U?XDh{n?~%m!!i8dl z-!WkC7_hU>1SRyHrN8nk(?l$S$Hhy6@x$#a7y*iwzia)T)07s~^v7wyK+`=)%E;H` zcFm_KBrx(#F-vo1!>cJgOZo)@p+|yCd|gO^#i?_6fO|_<*R(GC--ub8ZGZP{FMPL@ zbpjzgX)*UO8al5DW$p_pq~w`<8imBOq-SpU`Ogw{S5jonsH=hIe&yt?9@*{pF(!PmeYmKxrlC)@hD-D_#gwpm73MqNo-c2F#Ea_?MKg?BP z?6)bb))?!9NQ=74e~YGWuV$xq>z#)>m~|`XGu@i zn5Uv$Lop$yDtC3X>8WT_r0F|ou)F}2rngf_$s3W;Y)Pt))tr=&^1y%ZTDt8y(X zj3cdSz(X`-UJOdvUsFiQQ}#&;iDyYq*~mkMB-YNF3#Zhru{HuFE#mG&qvj={#LZAh z$rJZj3W;Y)PuvENeppIzwZ_>1MOt*dkOs^PLFqb7Atg`ODuu+eq^Il7r!HG=ui#r& zE|<#kIoE3_w$>=SfAr49tOPAB9$!zhz$-*~d<%t?JdZz4A@MBfc^q?p{TC@F#9!r1 zti8{rZ1jzOljqKVkH*ZYp|3-*&O(~9JxXz*S|}$P0g86XhSH<{`WN>`B=MMgDd4}- zfO#S40+gBEaN5j!RLN441t_~wNXci(ppbZ$^c@tVWLb&{bx&t1*(o$;P7Qq>LJM!C z&OVm{L&Z>}ECeGhEgPZ{^HNYPD^p0kOR1J^rI3=((sdLP&yv1}VzlfgiV3w(XKL9; zY0R7&`Z|P{WJzN71&Rz+LlLtujb^K_<;Jw;>Y)X>)hnTq?rB%lx&2?%&DQTgTDe? z60&s^7Al1zWIl+rbnF@$FE0btu^TBQ-l0^-Zl#ct&(a+f63>#pf99N;D-?1Ag~)vz zcT-%bfs|Rzs~QJb4X`nNvew zhw%MT(x7-FMTV-OoOgtABsODeqGq?#ka;nvn%zku@jj($b}xmLe3tH~ka(8#T@<5c zk5Nphf0WaXj!?5FY0R7&`Z`4Jo09}>)&e-CMg>s>EdnJiP1}b?%}YWxEkhykZl#)b zEQOSOmX=aTJWKjsiqW+5C??cGovCTVG-gf>eI4f5k0wzcPg140P%RWW3s9t`WLMLG zc_FBhT~8tL9;Hfl3x$+?mOf4)@hs^(C`QS?NHL-A=}aa29*vn(LtlsB4smH>_9(@L zYN0CG%ksslqo-*p*-z-?4V6RHvoMgf^z1$wGcHFPXw%&~i;EGuAqL59`H`1_o-w zmkCd>U89fraXl|AbIzc)C+v!EwqHFZUe)IMK}1Jl|{&#%<+gb&%yuMrOL!q(5j zQMZHl-*D{R{og$Q_D#lEIX{{!3m?p|xm_}ckk0m|?+VW};snJ@@`=J3Pb4{K=hU^6 za+Cb5)W9Oi(Nx|RB+JQWpO-zuw-)XWwpb(RZ>U?um=D+g$VqvqLPpQ39>ct3tZekG z?x}C&RU)+KjXlOH$6!8R%vUR`jh@Xta(V6zK*_Krm*M&W>P+yVOIrzF+eTi*^&Kc- zh(B3nd*V8wh+kHVU+Nnx;fT*S+8awDi8nWkH{~&A*CZ)1W0I6OyEUh9r*2CsX2BeE z1hL*$5kqpzuwxCkT$_(8^;%Cm5*zr6+t|I%3w*^7u-_bL+ywvL>#`+bAS(-t9r6*AZ`^kiZo( z4^o?5k>5`d$4$|~rjdH*y|%j|zt`bT+ep}8+CyEDD_T@>DQxPB92G08Y*%iFE3&wO zD|T4kF=o3rmf6W!6}n97FKV8mEAn@@uVA$CIl13*ni9Jr|AGb#G~I)wjC@V*5cvy* z1V+9oW@*NAgc{8j7uc+B=PFy%`2o+8{yT}#Q%I!=<#Q;oICY-<02hMM^7j!_EX5%- zVqOYL*rO?=NIXk=vIdU^lh`_UH#om;jjaKSwCK7&4VV{#()Dl(DS5iS zh(h97($m#{0F=bm(#|?yu1vQta%D4d9tpjka(8#WQ}?L%Ihd5#8hSd zXq%qDGQ}$cZ>7QV0#KU1k3veGrk|vcc$V}u4L{sMlGQI!WQeTF>e?`lw3PJ+G-O^3 zO4*-LNXb+7PZSc*lAf}W#}`PfowoaSow`P#q($64XwbmIV5FsGYiPv06jaMbDJ0&dRLeF} zNXchu8->KPr0<~^ExUnYLhaL;TJ}L2GpB~W4&fzPl9+v#B16?s#4L;>Ej9ZF4Vf2% zs@a1S67N&0X1}74lF!oLC?uXGeHX>3*-m@F2`uWL&Q!C#Y0R7&`Z~yK^&~wzlww2m zQ1nbjl9r;qmy3W@hBRkW8=NXci(q>y-)^qmx=XcdYHbx>z2+Ep}WP7Qq> z{I#5tn7xI%lQ(Twv9U3>Mh{D+Fo$}iVC6#S_Dd3nzjdxnwNxX+CdZ&?^dd5M^Z@1XX!)=iDyaQ zOEH>uHpPTms53P!M`PyH(AOcbA(rHoAqt6SN#8*+O7=O533X3rD%rPa%$yqfIs|u!OG@@I#f562Dp~u?kQ-f@Z*tY_ zk2GLj2&!byQb@c#pgJP6y5ygbMr!$r8cp5XOhQ1Dx2eBk( zXHjUV9EzApK+>9-t)VgVa!@@RrI2{1Qa#&9Atj%sZ4?sElD>~(^y~(T2{lk>>e&Zr z%$yqfI?M~1Ysf~GpQX@HIaECh14&EIzCmNgKBe8)WvW;EwL*Cndvjsoopm{w%$|$PdAr=r-(^&$tWmpi zJA9OP_$aT%sI2_-*10xTm1^& z6iyxP}UAnNXfIdOd;_s=~)}|4417G6QZoL2DMGkaG4@aCup#|0F|S?{AE^I}lSK0+ZSPubs5NIXk=%0?c6 zAhGso3a&NQMxdlc++FvFGk0DRO56h|q~wXam_p)N(i6AAjjDYVS8JRNP^3lI6*OR8 z2ujyiQAo+t)uNDimh^Ph7%E>vv9(6oqz#p)IK{2eEbt0Z9>0x3N}k8JQAj*XdLGBz z4frXF3Gr7s6Kn5Nv^=&d)M)aQ+^^A?IW_ck2-aChQ??&cT&NbxiAI2;UBjPJ2!DlY zyrJ^rG+Mp|0-N*XaQ1=X?<3W;|q)v|RIQu0~4f@3A@gETHM^fe;(bch>@f-{`7Av_ zA@MBfyC_D@x(`9@>mV=Mlk}{IVng*%^h`#QmZBX?gXRUHinf$O z;=M{0?K}!8`7HHQNIXmWPKr^qBE^I{s52GqH8f^U4SgN_MV*qEy@A3)rBKAo2a%SJ z-9qE#WuQ9taSDldDAlnqQb@^X>6;W1&yv1>Vsz{wiU~DOXX@A=Xv~}%`Z@&5eI+4# zhT=lCP=qW%k(QF}X28<|UI?mW28G0Xlqy-4LP|bMFQJflmh>GIqhv3om{9k0rjosy z#>}aquS5KL^a6#2N}&ju4w`9@>kz&_O1gk@9Yuz!p`3Swain$X@opM2F9ub!k5Wjy zPpO)HfkH|?OJApuc$V~C6r*MjP)w+Ql+%umP_y6Bm^n4{b%@+ICkfiq6dWpuB4`mP zX=&Q7Jsme|KY&8w-AXlWF@?m5OO?NmLgHD{_fm|eok2077V1n*dlikDQ$t^ez{*&X zGmGLvwNT_NK#`V`ZJ`14LeL(qQAoT;sgk{oLP|bMw^2wuOZpCqQL;}_OsIQ0Q^~$Y zW9HP**CDt=TvD^W?UkAy@SQ4|-C^S?KMa(21Y0b=DNn_^apn5h!A@NS7 zdbW;2N9{1Ulz(X#+p$vq zgLoxbDf?mEaWn!);~FAxx|dA`TV}j&-T7zhf}f&{!Nsl(}VJj4=Bpk z+}-y3(H%~6cle}3`bH*l8cKb;!4Cf-b*kXlNmt8en7^0%$>=kBvOS(dcTc9rSY@k< zEh(#wo<%*~{?@Kmg|_Yvgvt4=uklWtE$eD$h(kJt;N2na+8>I2i{m?@W*^y?HTMt2 zr>kUit9!cZdgtw1Y_m~pBi_vy^VN!oU~`Ye`wI^gPv!PQa>P~~cG5QG{$JK1Nq^ZW zA!4J9?SdZ4taxjYc+33@54`wK!^G5g;UuU2$4Y|42dmTrt+o%OBuZ?%(b+agmUwHk zcuRJVKD~_%f1;qG)Za7RCQvy0)KxNPA3V<-&N-gj`C_$XR7}B~T-7v2&FV;LNZ4zO z_b$qh**4o1Q+RZbjup&H46~3QHU>v>`C_)adu3^CNx@ua7K}dof$ZWB`})0MxZlWE zj7okqU&xj1T?HGs`|r7%4fa)w0OJwZ1zkF>BkH7=^hz2Wg5)%v=8#u+5q6h1x=H z`|(D}vm$4rwcUbtsrQp#)}zD-A7Zq1nZ4Jr2lHI-PsBW2s@>&{4&Pv;%vg5`|AgA~ zu?-W#?RmozyKyH>OEZ2RX-__0Yx8}xI2M~E$Y(@hzccGvv9sFjvN>FJOd)1EK%5JE zLb?n2!F+XMoAdelT)8;0&HAow`(U5BSl_c>*@h6-_w7*p*||4sw*4U_?OfoZw+kg0 z=u~r;h>*!SoqS236O`0bz=jolk6oy6Md!GG5iRI@?d@g@{kOWELBKytOrW6ea#GS@ z$FZEy6!arvXKg9yEH^O|pq{If9eAXUYsii%Om-Eu^tk#mr!dhS)@J61j()*J&hlo_ z$4#Hsm5VKt_2Wwffu5M&RX0ufyO<|PP2tJ1GNFi0f{QCh#F(Ei4i?6T#0Wk-UL36E zOT{IH{6%6`ksBY&d+uBPmgtXT_gV7A6Hz^#|W3D2vqAjF?@z*BEbcf zE5sCF^F+qFQv6q3SJs@#*Jg|BbLG5QnGoB(*uIwOVi-9oIBWoAWT8LAS$7MNaR<*> zUzI<(@D!nK!9_~%8eYaePv|qYh|`mcvd%ffO7X@bW624|DWy`uwx1H0{!ZCYH7nlh zrKNGtoLqdcbX=S(332m2JF{5zUM&|V`QFR3T^B2{^@>u_-rM;i(&Ae0)0O#Avr^5C zI!;&O!})o!o>!x6`vK$dvMtlsENL z@z?eqln?6ZRX#X3H+WHQZTugFzIgG!9?4kKu9cWqo9$6bmQ(*-NvsaCd(>~O5T6?i z4jF5{IGVLU{D|*+YkzzGcYyfeHE)-_y)y?tFmkNgWxW@a3gd!yz2}xomN{6h^sW`> z*5daLL#PaV?-D-Nga z^Kpf=O3zJrm!`!ywtFOpd&IV*pV7S|n|HgL+bvt)CSx5K*=VM{QT=0gGVi`6RirPH zC0}70RKz-5943A$ z50X;8aCM_+$iZ0S%)@3n+e&pEp@`$A1>w`s5i>Ytv6L@q7svxi>)+E3IoxR*3CWB_ z(UiS>Mjxd`6_>(bXV##Y0@ddjyZO6}%9M4aT{-tlEYUm0ePP4^%vBVUud!tbDv zz{oenEZt2Z@hs`-8gd?x`1)-MEKZ##Kfr}xq(#`rXvDk}l(0`wNXZkn>-p>y!{S-e z6E^&Gd5N(LD6-ZV8^)0qWqWAIycm?SM^H$~Q}zT3iDyYqS@{9t5^0xHY^{-2Mv@k7 z`)Sa;Ae6R63MqNoZlaKQmh`ms9~CVz_8JPSHOBfN(jx0SXuP}(l&rT?NXe7+P6~-< zNl(_`aljH=@1?j}V{3pSExJBL1LlRGbp17jlssLZq>y-)^mO$f`YN$?)}e56-5Ohc z5NVNh9~v(&10`#QLQ0;j$5KcNGj?7G zN>_tIN}jG+3W;Y)PuHEpOWfq;FfXClTBGd#%0eayT3S3lmu7)ii1PT=6jJg$E>K83 zOL`v1JiX&miV5*oITLH|Q*Rr6k>AAC;yM~Lr-r@`!SV`e%61dQg=(RkXap$QB^yeQ z`U_Lt6^_D0Lkjq#G+uP)IyW`VNXwvR_h6sCzn7 z$)2V$b86`85L$R6b$0h6II%^=P^2sbBP}gEfJV$qLA7i#g~Yp*YFQtJlzf)XppbZ$ z^gR@#WfxFPsC_z9%Pbl*r-r@`;U!s;m|a4Vp=u~%7RHg5n$>8?yckr?-bNwuKBa1Q z8-`9@ z>kzE+m4xhWiVM|35wZY9T1s|54VV{#D%oQc67Nx}WKU2?$!DqS@Wkh>`VNXwvIP_q z>YmP2vK|^Ur-r@`{t9qO$c~_}P$?84^FgGgV@qkgybM&w&ZCf$*Rg&IDfuiFDI}gH zegDj{AHn3j zBT4M-+aH!#yCFUHHM*AL&J-XmjzC&0_tCw{L!!cbKZVq8$%(lc=P`<@HMwc;%{WR! zH=*g1G+3@NloPWSCqA84veabB(Q_%J_<1s0&@h#)LQ3s#Nx@NG-gf> z{iG>;f0Q&Ro=1_PYAEL&VH}Cgn3|~BFb$a(gQ{7TLgIZ&)$BDCQu0}P1BJx1r0=4b zODON4m{9*HryU)kW*?_9b86`85V>zo60|Q;aHt@PphcjhrD@-zQS*{eO?#9=;@wI$ z?GF@E@>zO@LgHD{_fm|e?Ysoetx*egrluJ*W=;)#9p>0GWp%ckrMOTn6gdk}q@`r1 z(13X%sFIyaA@LriO7?0BDfuiFC?uXGeFw!T*`*W{>YmP2vg>HfoErK%1b2u_6SJEr zE>sIu$?E=7p?eb8Ro)TzRcoov7`-X0$Y9TXriBVH35T#CG|iiQ02iD=^s| z)^pAp@;wrxra-^-a(KN`5D4PPc~fOm~P;b+3}b8?M>H`#l* z-7fZK`_&!dRc)@1UpOJx-QKR6ur3o@)OPnj%+|dH7u5}E?-5pn!Zk7EXyn#tKgl*i zxEx(B_7qo@j1_fRJ^s|PY1_2t4DV>haJe+iFX@Es^Rz$WG{NJ6Ys1+wesylmJ}U(%YW9>c$_>@5cEZc-EQ{-M##p%|%RJCS314$-!B{t7uK18-nrw+HA6%m;iUBq`_r&tb*rh6nDuZQ1M>`CL*cl^wZl}+R~;ASV_R`iRt^+p zk)mfBvsAA*fs?E(BcYNv*sJFvdxp+M_9;8tj*G0lnd>6!ylS6|tS{zmcaS}yxr1zN zYg#Ut!mPer5caUH4W{t=1s=AiN*=cLJ?${DjrVO0yYniBuRARAY>T|8iS3*^r{wjX z!P}A~Kc`oS#CEc=ogXfPj!;m`YDR5HMRyQ(xU6vXu!M> zl&(LdkdmkC&nYCHB|TmJXZJ{K{WFEt8e4r3X_0l#ksUXGT}UA%Pu7Deq;``v=Fu5P zQA~)b%2MVwJvw8GR|Za_!SVu7O; zQ8sBq+bPatDKUx_bEn=zHMsql+sN! zW=;)#9fEZh(v#ltLgHD{cTtR*eVk%K{nMFhb`Oo2Q$t?| zdC{JvXWygPP(2hqlaZvQXuqUE^MX)C`zwXSdzC8M%wsxk7P}jT#IvODq!>jrC??cF zovCQY(3p7x>FeMx>XgLn6bcKKLJ>0`L|Qs_0gacJf$G>0g~U6Q>R6dVNWYM##2v3Jv$IW_ck2$uUwLiSOL3)MmqvH(R|O7>+MFfRmEvim3`-lJ5> z9-)wu&(iNGB%URG2gNAa(-afxp3YRVU0;y+WL;kee<`>mWCu`Ks1%Bj`5@BLv7>0b z$#>{U6cX=Hs$(lCq~x>oDhi2bN#8#W3~eon3pJ3UW$ib#o#MKTEi`UU5rwr)mWtH2 zKcvYR+P-c3!)j(|ds_;Sni$%CDtSnBg85|%sojzjb63uN6jN(*)84ysl!k7yFW@_ zKT109IEf-d)lkkm!Z^}8^;k(m=Eb0WIzS=uKBa0lMj<7ir7aW^&yv22V$`fgF`@oZ zPCGh6&E834=G4&FA#&fGBxoO|;7~ynL5o01OVjSAQS*{eP5U;5#JiPh+K(utwm^n4{b&z~y zB{6%FLPORESXx?8Rm00fJ#9noMy`csx8#Z-?7|v( z+D7d|YtO6a&~X3t8TK1Sre|@F^J>vyvMJpm4Yq%D>rIOv-TL`9n$7LMFov(zg7s#0`a4P3H$z6i_Z@b zKRi9{vbTTj4DsW8kz>_5rja|$?eq7MMESFc21T(B7dg(wx+Ho0Myr7+l81GmqpQdvK@>A%D6bBEif=jh3YYW>BF;K_^9=zRM26^sBy%a<)q zb)*8jeXgPb15NiJ(QBT03JHvSQ_RwO3W;Y)PuI}X^(4N&jslBQ=gALnAsA^9_N_Ex zUJ6Rs_fbg66ZVr763>#Ju;C}DNsRpxMb;W)!#L8S>+*-$(=Ig`jl3nLkaL8L|2Z_#*p87NsFrjU{+>u)F|o+Uk5W1cJUcZvxyRaqC+ zrsoPw@gmLq7sE+9F94w7BJMUCH7^Mz?hO=D^2B{Fg~YR@CvJnA zr#?Y(wZ_>1MOt+IDh-$yg3|T-6jJhZ{V9dSv!ti1#^m#l6kBVQP1@vhic{R3Uea+> z+}$apy`BWiE2JsgzfoMM z7Rrf6fTCT)pHc{ag=)OXr%40mg`jH*D-;s%Q6)=Fp15~8g_L}jUQZ$MEa^KaM#18K~h8u~hfmt;v|wuB->)lkGNj3X^IJDG;ei$T@w z914l|DOI!86jJh8x`;yJS<-h=jGAqrm{9+8rkedbjhRzJUk7=uo}_30L9wBFD0(I% zNlVc_LWAZ7p^EmO6cX=Ms%Za1Atj%s|3@M5Ea^KbM$vvjF`*9XOhx+#jhRzJUk86J zrzB=`Pe^jAtcaNpA}t-;pT^6}Ky~bJ3W;|p)v*^*NXcjEbP9=QN#8#)I`%S(>0dy{ z@-${n4SgMgRlbstt*5w9EfgUOP^6_~*V2G_A*hnQl|te@N|o$=6jJh8`Xq(Kv!w5! z7$y4>#e}-2GiPK!pfPi5=#pe;Sy49!YVb22!-F{U)DNT$izo#?2|Bu(rukk@L4dq{*0k=C(hq zW+tDd6d*M*`P`g5Br43;Qb_HVoS2(&-byjGCO7T98Aoa8CQFV!M1$oTLpkv|3W;+< z$x@RgNB>PBC7-1qP)IyW`oTKpq~m84Q)`{m5sN4PPGjcO(AOb+f0T6IG5aJq=|$C0 z&O5?5(mM6nmxj!XLDg&#g~a=ms@ZWAQu0|^Mj`Pm>ANUK&CaKoQ2!{W9UY-&YiZ1! z8u~g!?wgYYZJdHb1yKYo0wpa?+eV}2C83&j1BJx9m1^31DWv4H^a%=yXGz~nF`9N4 z#e`a@Gd1n|G-gf>eH{XOO-asvN^zlDC~_8{NK487Mg!)Bph~vW$#9O$dz32K?i5n; zS$ZCY#IvODpcp0VrI=9nbf%J>N@M2K(AOcjLtIj_f1|iiEmS3IpUG#VEAvgRnwd0U zUI?mW6$**>C{?n{DWv4H^m+=3XGz~dF-rD!iV1a3XDZppXv~}%`Z`G7nv$6P7lnq( zp@^9TB(0g*cWKPL98}MKLLu=^rF!;z3Mu(4{gXoCS+VvB~EW3JsM*)w7TxSL-I9Q=FfjOk>97Xvv}{F!^lar;~=sXUGLJWSZ8*<}(_H zZ_K6S>7*oVK67@x9h=X*cqQ3h3H2nb@B+(Ycs5 zNt`gq-k{$O+@Rc)6{TZ{l$|8}?-pG?v3Vk6T`H{aYL%5EreUr#i$=a`j#d^MgCqIE zP}wZ5I-;-dsMSWUY#R9?vslfG=*!~sVyQZkFRnGJCGlsu!g#J~X1nd3l!k_+eH6>) zsw4e<*xspTrIIfdD_PkAFckz+Auf}W)ZA(?)(5OnA!ban5Ld4p$ybcQvMCZ;F>=Oe zZfs2Cd9g8GF^7zS4MtVuxNp>~j`a19nxg||c};1+G6$>uhW%z~$gYU{=iRyDkTF&o z8!w1`iCvAAOV!fA_^{#rLDpD0K32#N+8-8kqxR86k#j}EESF1Vzd9NB894_}2A53i ze{YmeD>8=G_J|G0=f_bqC9+yK*gM`RXe%xcY_Zw9i0=uvYO}{SEV1)C5pO2xRr^Q*(5>%V#IYJX(8YDGtmt8HA?rP2XSLa7bGW);%$%sr zbbvVLCZdf*pQ zKrCjtG1zqz65(X_oOZKHs!T(MD8rTOFpN6RizX_4Q`mK2i!2X4;p8>7MLt(&i+rzL zG{+X%-psW{c3!p77TK?}fZBFj?@gBTO$IH2@7+P(!-qpq?V~fxYF?M7f^WHOy)!6r!=PU6aoShqs{=uoaLLnzS z7FVsxX0xjo8!Jjh^+4xW%i^HXKXovy%!^^Bnj2Mi?0za>$NpLUIJ(9*fs%6vc zGqx0R<%_cR>+DML!_Vp7k5=oP2@RK^kuob`H;=vBPuP)OkVlm|&EU%0x_8J{ot?kr=bv#nIu zgDB$Ixz$`Tc^WE>=JLgf5i^)dS<2;-wp$S&DDXF)2m&i&H@#%m61WF@6TQ8BbM4_`TU{VsgNa=son`t5z!Si7y!8m*S3PymU zLeBt|_$Ap@$xcIvaY3&k|*mpg~YR@Cu{IvE{UzLrMOySYk(pxy52wo z=7peieJ_QSJY7FQA@MBf>FPgzNn-0=6jp0&^+BXX*6-7Jc^N2Ke@Y=GPu4$DNIXk= zvc^39 z<;$8djDX!Ky8=y#wuHT>m^FmO%K1d-YPuE{jNIXk=x@xS5|3y_8kdo)|p%hZPc^q>e-3urt#9!r1ti8{l^4O|KT$AU^o=Ico z)X?imu)IQ=vb~(*LbXs%Gy)Xu8vc|*_{(10m2l#5wog=yjV5k_1l!aiVrDgw* zM$Ah=wd@xZlG3Gbnb9?^%l;>X{5t2BG;h)E{o+;@_kOBIV{j8u`wPXEe7a_wp7!fUf6RXds@L)B1JEsP^ASv#GE%!@%~?PU~_B5Q3| zvq1_e`7B*bA@MBfyC_D@E~A)G|8%CBy_v?$siCifyl79-vv*N!s2+-*$w<;tv`^BY zc|oY6eThQiy-H6yze6Dx2YLgHD{_fL$Dt)iGv^K_<;m1xYI z8u~f}%Y7vw+e~qxS|~ymph!!}-be%Hg`i4yGlj%^lq%VWD5T`G^f?NNXGz~dF-rE| z6cg&6&Q!98Y0R7&`a1Ya!6hO44TXhDp$M4|A}t+zmd4A=Ky_^XnQ*SoJCy3!z7$gO zSz1IP@hs{4r-3K&aTFJ7AVtgC?@8R~%b_LzI>{-%w1gbxudDqI{Od%&DQTL-AYk9OW~v!RYN)N z2;)fW)Z=+HWL^xaX1x>=?^CK~$5TkjXXz{oiDyaQMKNmj3W^E!k8;}45o$I{W9HP* z*CBEPog`=*DL7ORMbIKp($cio)2Mk#sHVN0LgL*@HSL2GQu0~)EQQ3gr0=B|P5Uav zgj%RGHSIwfGpB~W4uKo6Bxk>(xKJ$=ISWvvrDXr40rNsoC7X8^oFnrdrAoFpg_L}j z4yBNImh>GIqhv3jm{9k0rjngWW9HP**CDu7TvD=^Q(UMPs*=^8^4+@UU85`WO|F_< zL<8o9ph~uZLgGD2mFy}CDfukDg+k(4(sxjdlD&swLfzAuO7>|QGpB~W4w4nHBxYZs z&`>!PF_VC#H8cBvG-h57s%O8Tka(w3J^KrVlzf(EEKhv?s_&y1J$nwtgc_(b_3RKD zGpB~W4vjsDkEYO2IaECh*?puoKRcbqjLXrIS5M$c+{9QX4Nv0T0>fV46ioK7^lpA0 zy1st%b2JLypG(QosYy5zueGb~I1-n{E6I^K@OZ2H5r-_7>)|PG#36Sh_wMc=NCsrW zF6?pxxx#qlCGj6TD*$Bmc~OK(NJh);~)L)dOOup)N$6#gjcM7*B1 zMw}dY3^>s-$m<-_I=5I=DMC@Ks1NeUvP-Jv++fwQ*}cfz;8f&LVT~)SbZwhsVUjFL zB;F7%yE&sEyc3PmurZd)mn*jYv9Rtf=kgWXOIP^lUNUHo*?x?M_+QQ#^4)gDetmmg z_pvX9xWhiW^{vqZJ8!joXlYJ+rIeE9o`#d~V11pvOUD7sb3Inl{?t`ckJM_yf6KUd zT$n@JW?bFfXI6~<{*8y`4(&6JTx=XVApUz)?-83=L7=f1ZuogbYt|P8zg>3(Y?Rs1^OXHOj z>+XITYrS}&L#UN&Ggp>|O7)NH)^+w?YoG4!1;#o1lSAO4NPcj{7#uMNFRB>B;xGLXLyRr%;8Mwt3ghqLycl4_Zu|RPA4Bm| z_!XL!Z2cI{c(ka$zfQZUD%p?QNWnnK9u#|(ayl3Z= z?Qh$dG(}72x%9JB7?ZSPoEgZJN#cmY?lJq21N=v$02N7m-lQ4o*2Q~vX9GUVC}x}u zFK=ijtARY)v5gNz1*9$2y|6usEKR{Ra|(6;b| zfBtZ}bg5aanAOb2&5MG1&@0yGM&kF0+Gs8Zu2?S@`xaw?a>e@iI$W0!(~g(*^VJj* zxDMt)qFE|XNIXl<5ErSc)D<>#Yqq#}VRbuKF#Jk2P`>zS!8DDYJsH zjV_c~SBR6|%@Y~xO7UOuZF}?6fnea04>IY2>q6bY^&d8HXW+6oa|bTx)&GWp>!ryI zTziEFuCZJ>Ck8FEtR1r!tXUJcp{q{O52c>`n8ch=Q5&ddDm|J zR&E-q4A8=YRsU>ET(N8$oqB&1hLKHZ_sJ9~PSZV=jKMST#mH**Ie=T!oOPy?8;Qynkg!3cchoLPvmUhogS zuB*$8J;KO2)_#8Q_GWJI&Z~9=Kd@njn6LP{*Y;D#v(*vUK4ffHTX)MRAfYc0zbb!H zTTmS_*N7{O`E@z_OOs#(_V1(x}DEoMba8MQErfjhxM0z?1{A%lPk0;Hbq8ci2H-A(_DG_nu^D~gcY z3L$Mm9N8v72*C~^m{kbt%L13h#33vpEK6jrAHv0~!?H4$WqpZF*!!LOKXs~3&D+&S z)lS4?w|cs|tKRSX-tRp>_0>6iyLAOrK~DPf$U{a*q^)F#x2evzNg{K zGAj>%m4mOSr@>#u*NO@5;d&YyWj&3347fSmWnZ%zTl3v7Lu0!(zOijJ4sDxa)hDz~ z30^}ym~s<8{LPtteb%otUPC{m$rO7~qvYPeYEbyCk-Z>SD&`ug>Y9wm>kGYAJ9_X-Er=JGe@ zHiiGlSEzYC-2z>@{4h6ICp*-^|C+hsbOJL*w?`e{<(f}l%NE&X?tIkoXMt;_*+P6_ z8Z{BY+kLa0HpD;Ta6aU^lFtN8Q905Gy3Kf+UECdM98E(K-@UZqZB$irxEZ6eo?vTb zx4MEryKS&=!!A)!O`4^T+J5Z#6(gi?&R(cv(D z_T?mhz(iT-Y-cYF2@P68U&l~f2oop|z zy)d!~jAKmY@{eDv5B%d6^Ald^t&alZ6!Sx0AJqKYKQ1vp@Qp`27xCi|^LzaG!~94X zcUYhL#vA4b{&9x+K|q+z&$w}gBb^x|n3VlaK%K8x>gs*WY3mX+?*MIGWTpbFt>>VS z0ByA)q1t*83JK6w8&V*Q!{4FQ^w@SdA?@M0l?hfkIP2PZF6xw41=bz zg@=2gwYX!auGd8*dd#BNCDdjh(L02+RXrp*JtFUO>_(A61UZEFIieyHvoy>;)c!7z zC1&04htxwt8>+`qNI*kn2Tso4ey3x`-_m>z#g&Y`9*RV_S7R31 z{s{^R&mPoEKSLqmUXoMQx2rqXC7!wVkPbzCFw!9Fv8c6p7*MhzODd+)Hw@ z`Zw$5*m^#SESa+Uail@lt5I|DK%jIjppewlwT42%y(FhAzZWw{*c~XgWQ66Bq(Rv> zYA_xQl(P4tkknK55fl>cB{^l?9d|jlK8eCg##R?Z8bo~=wG|HmO4K({Na~4t5QT($ zNlsL6M^%ogAECICG1Wtn236;O5$vPmK|rZ`G73pORR>W>xR>Nqb@$BVm^y^QO2$+d zL>fe0gW8IR043^mC?xenHBd;nm*hkZ*{*I2iV0$=Fe4woUENft;n9hh7HTN&e3YVJ zM{Qw1*jIjYIX^^)6ik|DQE<_=zC+(>yq;8WoVjqq(P+ZCQ>Y+%3su!Wg;z2<5 zbsY*xJyl0gNVu2e`a0KN702Ift)keH(bZmf&i9No2Q3W_??gR-M+fEbohT&r9KHvI zgnLQO;gC%Z9!4=i+!aP$Q{EhOs)H|q7BMwY&!G0=w2;TZE0y57XfL6-pg0JF3J*m$ zg~X&wp*_mVt&LKN&o6cdy=y{BNO zqxRyokjKDRK*LGcaugU82tmSpFw)SlD^P3kFrXT?5ru?jC#qp(6q0%`Z9^g9UXtfe zh=%P!F+r)*dm8pl)Lxtx@)-EbsyGq*4vGwlgdk#m9BHW7Q>eLkAW#*15ru^3C#qtv zqma~l=^Ydj?j?B!g{atvC?+U(dQZjXu2bGYm&bswwc~W`coZ8H3qi+tBxxvF7ByIX zj-HD`!gCZ=vP)4&>b*3KLc+Zy&!P||8$~fe+0%PUwiUG(r-eKQZXG5kV!KgTP#6Re zb3vq`U;9v7@erUrv4>DdcxIyd^*9Piy_cRtA>m$<=T3-zy@Fzb5~ug{>nEtaI4$Hc z@Tzk;0s9$>3yOmvU>=Gz6l~xs<=tUa!Hz{C;kk(_*di1XPF2)PXQGgBFUhkfM8VES zF+rKrdkS_nYA;R;c?{gDZBD=nC@d%pf`GXo($KFhsI7Pi(9GP0Lc%i>)vq=RNxhfu zMIqr{lIKpu8Z(cexS-?_G^{7qn0Xep8K;N9*qD-!mk&Lp8MHVOzZ{tP2`8;@9C}#O zV(KyurT{5s&6khVLqbJ);A*g++ikfCd3fen6jL&(>E6RLLNdotbPzQZ*B6uzLntJi z4}zCsN{22+A*uJ$)hHy~OY%lKWROunF(u2I)Qcatp!VXlkjKFPEECrl?n044kr2ii zejI5GHNK9Tiw6Q#u?JB|cz&WPwjYJ0-b>G-kZ>=_GblvGUPduNxg!iSQdhCJQG0P( z$YT(AzKs*I4^VJWFa#kBKuJT(`mX`I!+1DQEnA2}!m||BvQtq=>b-OZ3JLd;JdZ-O zYz2x5N}t}-vURAvI4$Hc=w}N&v;Xstw2h#+pg0IJ=AlSK!6r~+@gSfIwiAVf=O(IP zccPHgd+8n&67D5=_JkEV@)#WH+kJ-b zhAl^-L7@;tj02K}j$MJ;i-!W$v5hDsJVQ|(E2EIqdubaA3HOpbheC904~hv&p5D{3 zZ=&|%w2;T(NZ*cGypDYbg$9K})G(i+!R`BKGKZzk)OYXnP$Ux5gM^y)enop=vws5|wgG($83RnWNj+V^i9*7?B&RF?cs)nh@1WR{5tc`i24$Z@4aS3k zQuaj@l6uO%jzYq{B&V$VFg3^4cTiZ#*y@5vgQy>)w&Ec`i8}XMuq&;esK=v_a4*S; z>OC~eF*SqYO2$+VMH*B+7c~|S0!r0OQAp~kI*dZXy(Fiq`*00U#RRcbxEs@jCzLvzhM8mP z3JLd;oTC0mKsY&l6Ga9QRk&B>$B~Aj{tPu24+Kirnd^J5m%0FjgnLO&*Fd2^$5;&o zmyEFiC~1)POw?jL94KkeMk73i_LC zX&ymcfrkkt^OGnf^<;hlg@k)aPUetexC1CAh{VG1t9uWLM%|&0S@h)~YA;R;c?`Uo z2`+;^LUBQH5Jndsif*)hLTAqsXeiV4b`-czvaP_QY0 zo|~wGU4cSU@1>0>B-~5#>weT$JOrqIJ&HoYGZWRXr%*`hz4Rgq3HOpbcOv%rc^$!}^N%P@8dj z2#k#>`S|$ILz>DyKXW&Lee^DPDyA;u_!J<;?DLaR4+$0JvrtIgmYa~LXf8xCC6k)& zJw+oVa|}g?QA6>pLHRI>Lc;kVcqyiIsDVOK@1@&NNVu2ejdaK$;|>&4vaCtH`0;+! zUYr*482BG*;>H<|qR5~~2;&Stjx>fE&!Ohxfk0L46%-PlpQwtxi9%BErT0)sxR>M^ z6ry4uqnM!F5r!G5tJs2#$~(^T7z7@4W|>?0Hx z6bDhkoTZmD;JHb1AlON=Vm$tWZ|H&F!}L?Pi+MZGkHLc+Zy&z=wkyBNg; zWlrxY*mbDAI4$Hc;I`M{M9e^;L7@;tj02KJPi#ACFCGdsLt7{$JVQ|(`#K6qy_X(D zA>m$<=TL}_?ME>|$ZYCVx`<}&8q36#X{S7cFml=)@=HtP|3HA_i3vf8+C!e zgri<#ten}`x28EFc;)i#eSJB@f|oHS*cmp{i*AHLHAZitwQlB{(6T;g1|t~RzK#8y z!82}V?~Wd!ckItyZQ~aDpw(Z~>&;Rlv$$;|er^x_ZlUos`w2t%g=rT4@30T%?51-J z&dj=#$ZAInQwX8vUl;9I5LKtuks~$U|AD z^XDt$y0&p6AzVcqSXHZ4Y8y9dl@UYFH|kkuwV{l)e#lEcqu<=IPcZw<9pCunGMrxy zopanN%acqJXIU?wUDLLBbwUzE4 zl(devnbu6@2bP(ZC;ksYP#=kM<^u#L7p^%cF&Q|S$$)VOsi^V$^i}JWyiuIlv&h7t zGOW0!NI6*68kD0f@qNjjuN3q_ZL_ZBb7ieu*{n6|^qxM{O2r#>`bDvx&ALfvg)`ad z-rVs3&+%X9BIM(El*_^dI*J8z!WVM9mzEZ8I*W1)>y^?hY zEevBTyvuq}#um0VFT1)@YK~JMb#1L;c1MXT7lDA>8oj_2~V%7*b=we56bjc3R^zEjXFLwalvGtOMUSrN!FE#c0#oE&4DVs|hfr=RY4HEl8W3ozw%bMFB zjBym(*>@hjOwoUR?oPl#{~6z67q2~in8tSBx4-M z2cWgk?|rX{^nUQ^zz+tzA2?sK22B0~9R2o#^fQ2su^**#6Rm_h2tz!!X+!*I>{%2N zFh6NSLhrM@j6wqLAlQ(EP>S)6*>-ur_X{q@Z=vYJhPPASc=-gOMezYkbmQ&~lTZ=D zh%*xz#z?kof7nDNB<}*TAM5ZwV+5mp6!&H4dsglSj&Y&w&qvJ8b-_t9>D(Qp??Mz3 zkiIq~G<{D+Apz-YLkb3T1`S)>Fv{;tnP26idKQW|S;CqC5+&vtCRMt|Ikky-k2jd~ znsiU1(jPK9yb)!h-+}IY#Zn0GV~$4GqBH{9_N&c^!)^N*3JDMg8xkrG6DTA=9BfEI zak#73c_$aFh!q8PqmG1BODJjR?ur6CBlsNi`2IfBW`NHfLV8F&Bso1I`=O7c$RL6U zg%;}ip;3{EDTI9iwZ98wiCMwmfO<%%9{&V|1n99HI5~g4?MJxQ^k*opWbE}&B_NS>2!(`uNlsPYHWM6I&qRSGn=#g@k)aPFH@_ zc#g1-pxBZTmPe8XWuHY2#)E-U_GJ{3ddj|mLc+Zyr>wh1ILFq5D6C{`bwQ*-)aiQ9 z^;_qokkk|PWE4`jiR!Hd%`tTl#g&Yy9*Q)mx&k#84+5&GYfwn)sd^m>3HMTrre2n- zvPvcX9<_nOO2*XgEIr)eT)=kJRy+hKQClb^^+f$T3JLd;oTwoSZ$5}(f>I0J=9R#`6xwyfI?DF(brH&xR>M<^{;HmHT-X*$RMH$cLw}8(rEgBj+%=H0;OyJ zDA;jUPuGPgB-~4Kx(3#-;~0A?3N9IA15nZ+?K!B$csNkfUW7tYPug`TB-~4K(nhQ} zG=kzv##awTH>fJ`BIZWx1ZphIi>L}ExPm6?L}Bj7YY;!j>V?c_Pa-N#+!AG9{gdll zvHoa|eLlYY$o-U4$Tk`Tz;}1hxjQILycdN8@WO_K-a>o?g#_q@4JlZCG}svzVr0iT zDL+nr1~o5?_mQQ?!U&|hH9=2Cuq>t~=vCBafMp#*dP_YdIXxn4g5F1wK?D(c{_1Li zq9Ws}sa2{u?Rq{zW^Yp0?~Z~LQxkNIdPt~Bo`OOGRMPg6oWK1}L&-<)bQBlF-bi_K z!6fQjMbRTh-Y!IK#^p^Oi%2cG0!0QzqxZFB6ty3Z4B8WKD2Ei)frfjNQ6~x`No-HN zvy&NlS|!0*hG4-|AKU!lecThM!wYFuD(A6kdfeK5kec3mk502cd=E?0pZ4R?^v-!8 zn%>$sKj__>N?E6Wt~3`5U^hhQk99>_iJ*}iH*b*8-_A0#^!D&m;GU<1C(b#)iATw~ z%)!C|$GyUVwYmI_xlQ3e@~t-Kc11EVPZD~yr`(9{ZZw(0QYW%AFX*d>B2hEfCe$=m zM7tc{L5&5v95y6DOk*lwpFkl2`re_Jo<||!UXphPe5I!xS6@YeCF80OMjB*&2elRt z14`BpQAp~^I(rNpYvEp!lht2&%CYqr6j?I1`f;Q|*9>Yd9tf1KXQ7bP)Ad3W67D5A zUHQ6Gj<8pt*pd;JN0J6*M^S_EV4#$3ppev4_BIp}?j<>8-QrV@t#_cXlCjkVkp@xk zM{UJJfD-jl6q0(PK7~TUy(A~9S9{7a^+gm{GNyVc(xB>_sIhnuP^!L%LQ+rFk5Ndt zm*iA+i%&VG&MktS>10fGL8L)c4Yd^y0ZP;?3Q0Xt&qX2OUXl|vqyqL*6cfZ!;Ra0? zDquUDh`9kZ6n8#K(Gm(tJw>;okZ>=_DeA90<>YiXiVPyEFt_T*k%pq~L(RnlfztIM z6q0(nK8`}dy(Fh=pzM@m>~ko%WQ+|!NrSWpP>bE2Mm>N>2jy@9g`}RtH53x=B{_#fHaFaXVuH9UjJl3&cpD0Ig{cB9VoKuL zsJ%EXQCo zQAp~&^actE_mVt&LKN&EiV4b`-czvYH-epGoEGvJ_zGw^37d}sg90H)m=8u88g?pb zEgl9`!_Gh<;n|65*a{SqdM~X(A>m$<=TC@+U58?VQm6Mctcu!;(?T8te_0hLV%t$< zP$UEq^W#WE#qLDS#RGw=*gYsDJU>wtdl-eJ-b>#@A>m$< zQtzd^QAoI#l^aDQYVo0#v_-QAl`ZqWU$8LQ?Og1_}xHl00`Jc3Hd)#RVmgpkduzQ7vlW zgP8h?yHJ~PdI*e-fpq_&hcqLb&GHK`nxAme`sksDMJt*aUz*X^NB?Z6e_Fv6&YnsE zQp^fxFRF)xit_6yq;AVi$ip-5pqP?LP4^z25t2EEq93D%;`)N}VQyJ@_gU~#OzF_^ zC?xe>%AknpsiaZ#!JYAhZERKcD_A>p}+ z_Q768A*uJ$8z>~)OY-aqQLuw3CMa`yPr;^F!G17K3waEV^eqa{Z(1@Rg$9K}5HSu& z8a=U7QG4-FpgML23JK3pRL54Jkkor=4GIbOl01h(bnH456O=r?r(;#rUYr*47#!)_ zz=GGY?I<)T6rzs#fux~hccS*fq3CSanx=6F-S;;R&^9#2m)X0oj__@t@h$ej%9(wA zUzkQaap<(k&Ei|zH@7p!R{Hwb*-rVuPWp>|x{Lm$zUgl3pU9{+aLZf zHg2I0T1SrO^0mr_@mw{txNU=eZV&x*q2H~R347RS=Io}^4A2X?`c^tasH<1dao>T~ z=huztT1~GvOO3i#8P#%Hz0$1Z^(?#Y#Gs~csn!;2CX^vMSSr>V>}$-^dOc8;lJH#I zfa^b^oDU0u?X~mBX7bwY%t;m*Ew6o#yGC;)XH1=l_NjNU(3#xlL*Tz$7?UiDXIj&% zlWk*cR}_cFE;n9fAj@~tW!Tq@iu<(%p#d2Z8M6OoMjg<5ujX(}Ed>dGv(QoYqjhsDI*RL11)AG)C{h*fac3%X5VK?^~ zhM_w@aP~Bmn|l3XZRzrq%{{!kSyf-(i@TeBZDt>}sq~-Sp~x6Nx??Z_sd_ICNOZ z@iqt)a)&Az<2XJ5t%ZK?d(E8pgW!hd1KtmuFIlC?{sSES7To0TD97iq0qiC^kIqf~ zCt?0&h{rZrC?sHXXG20~sj?^}VE)C1B!p6ocg$Xuk-Gt}K+%T{9j3lprMjKP z&ov1Z(Zb-&6o#{sakgZi+W`}mkh}}To~^_Cj1i3XQQViE?^(GUIL4)K0SzsXz8fvO z(DbdLkbv~HA))EJ1BC>nuMH^}&>1w4alm$VuI6S?@=!#lwJ-^-&a(da^!+Lc+ZyC#!!kW{#~dqR5i5)sG_$y1t2;iw6Rw>w739 z^>qChg@k)aPFH@-U5>DG>tGi<8DV)OX;4-}4aS3kQZ|c1Qcu})QAoI#D6V8o^-!ci)qSY3co0yk zK7>M2Pu0g!NVu2eRCU)(C+g2oNVu2eL=9QC zY-U4cKUJ8K@4~WW9ZpvriyDeMAEoFb6q0(1o{2)jy(Fioe_bd}PR~b?C6iM>jx-eY zYSdgj5GY*>C?xfCt)Y-`FUjc|SpA1%><$!MGR6j=q(Ry?YB3%Tl(hGvkkpg*5fl>c zB{^v$)@yhY#g&Y&9*S;IRp3R;jn^umS|tUem- zj0-Wc{#Rai9Qr=uJ zi8@zNjE#}Edr+Hk#>!(6sU;7i$e?KSzLq?L+K)#D?TNpn98y#V8tzR-ohXbXu|4t5 zPG;n3^#o^mf(283Z1acranGR+FQhd+(tQm6@N?lk`dqmCIJjJ4z1mZ5ME3!j%wee$ z*_jvg)kBe}nR|~=Q!gIva`aEA8<^RU1Tl@NfL(|}0`$E@FP(})0y<_kBso=mrKcQM z&p?4C;2>gjq93JLd;oUVM`DM#3cQEbTw%OgpHvd^Fft9i z%CYrb6jm~}x**aZYTxFb>$lEBA*mp|FxMwL2BC9gcFhp|;{7K#95sg`}RSccYMSFUg4- zQUUt_iV0$=aD%1`6|fyr^a<2Z-1#U)pGP67r|7FFB-~4Kiux;0xrYBO6d6QRVQ$rr zBaNp2L)2V65GY+|Zvi{b>gjq63JLd;oUVbgQ;xBxpx}}*HUK3J(w>D{jE4gy?S&{L z^`yN5g@k)aPFk<_l;i706jw67dMMJMY6CSE4+2Wn+fYdAsd@(r3HOqms&g+`wR#n8 z9kHrbtJL_?qHm(ulF{`fs_d;!X1yIlvK+KDIQ%H;0X#Y=ho3?rsps&EC?woVat?=V z4fQ&T3F59W>gwK>>Gt4DphZkc+QBS3JIqwT4{4G3JLd;JbOYE>{1jHlsUbpU^k%l;m$<=TC@+J&t06Qm6Mc z>;=?boEGvJ_{*v|5j%h)gCZe_m>)+PDs~Vx7Y_ugVjrQ9@ccwoY+!58^;eHYA>m$< zXHbZWEkZFtxzl?pHiX)XCyzV^e61a)V;7^?pjZex#v@5X$*w~U#)E+>nSnyWa}-sw zEhr@QUfP91!o4KVq7Wr(qnM!V={+TT5VaSlg**ms9VRDY`%zd>7z7b>L8PHyKR|88 zLxAenYbYc@TSQW(tWlrxY*iO`5 zoEGvJxK-PnfZd70g2EsOmlqZ1dM~|%Lc+Zy&z*=} z7Jr1|f|5tju4%0Jp{(alzjAU13SaXACglUNxheLqL6Se$s6gALB^dZres-@dhz1}sJ%EX{S#Jo}Z|Sy@f(j@1^%qNVu2e85E*oeK&*sTPSygVMgjIb_{ASP78Sq z0?)T`LUsxY4hn`KWC18?XxUk)#dtVSExQnfgl8$LWmlk()O%?o3JLd;JdZ-Otc+rU z(x>;d>^9V1oEGvJ^t0tc#3e)SKyg8F5M<0lk%ofZj~a^y0adU^QAl`hq6+pD3Q4_} zUPK|`UXo`|h=RS2VuCWK_Y~|s)Lxtx@)&qeZ*v{7k5ODu97F}Xs#tEAI+})pE!YkY z0q`K83Z|iu@Z3ZdEQ>-?@1=85NVu2e*%P8*m!g=U%;`M^y8*Qqr-eKQN3PA~Z_I59 z>4ue1Xiz8w5#xZQp<_Exd+|`9I<^;ugl8zKWBX7@>b>+33JLd;JcmMb>~Rzmlsvts zV=tig;4F_2a<-49YpPgL($o;HBIA=8GU`m0osPf_%eI< zk5#_oX#9eGuyST!-xsFQP8>RIa_RZ~#v6a3)cDB7MiLsOZVxR7!f9a0xZtI`O zs5Nr6O?soPomhX<`uF)Ln;M6-< z49z6q1L4117^N((XIj&%lWn84D~e2Gmm6m=kmbASGVE(c#eG+$cefiinXfhTwQjyP z%-5#*I>BCTFFZ{Q@;qvR9+{lMd4`}GdvE7>(owq3(aVimQLnctt$%}MkA-1ug?CvG z%Gkoz_GMRBO3iUf>9w_rq30X*Wt)nPvF1oNUm0JPFIAd_rTJ#PQ7II2WtR3!tCNkf zN_knmmKRhYTb&%Dw67C_@+QXDU@m5@6w|j5pX(bcWxegBzVQq>$(JOq@fqX${E^|` zCbbHlCzH!JiW9j;u~Ht=whNc__S_xRMvCRahKXFQm>VhSLmGh{WH>jll%wA^CaVNK z>uj>Re!c8$*AHsx?*Byq81_v%GaH5O{J`1dP;Tn=i?yZ8Q#SYTc4xi5-Puq1WNm#y z$VI-eGUPbd8ePJ*6!EQ5#`pzO+mGlaqL*+IYqC#fO}5pWI>^3nHYBS8*Xj*%G<$N> zXp2IhI=1Eq1(5fuc$jnQaKO;GCO%^v#kNSCM=w)!YM;BMV$i9^HSFSU7xie~u;D!Q z)edX9axHi0k};0s1JGLN_rBL|dOrwmaz5bw!1%5Z-R>U)!D^N#5swLbc>h3d|=SJ{3=7Gp{sLcSMJA^c% z9+I3Mk^RsriVPx%aO+B4KQt;bF%R7BMD6baSz?|Ey;D6TRFCgLApv@92TsmkZ$Wpi zHGLSxm5jX}ibOp#+hQ~b&!EQQK@i3jF%M$CghIlz2ldjAP)N9!@dLjx5_mZ5f{so#jwk|=DC1a}}M;dfpj+%=H0;TI} z6q0(nUW-D)y(FhAzYZ@)*fA7aGQ#pm(xB`%)L=XqC}sDckknK5ZWI#kB{^l?RaZH- zK7hhX##R?Z8bo~pwG|HmO4R33Na~6DDhdhrlANgC>Y5x=-$HREW2%QD4XS>K8jA-3 zrRwb4z>c(fsvd(v!o4J?s=JON$JA3$Sjm{`f=Gj?XQ8&@AwY?GAqq)7QLjKD;a-vx zHDoEXjVLCFrNWGS7nU;XaJs628j3p~rRZ%aB=r=%1BHZpNlsD!T2Y*weiKCo5mmS| z;Kz}MqCSe6iw6Rw>r*Hs^>lp^g@k)aPS?PSKpbOVN5LgyYye6cqPb8I%U~B8_mZ5n5oB}UQiDSRmlS=BtRwYz{&aB z?=+Nr^nQZkg4i1=Z!VZbovSFu#>m@8sLeQI<*|s=l7XFI-y4cX?`z4)sQq|k(4P39 za!64fXt*~Sb)qnm#P-BHJDHKEg%q5X3KmTDvCSXe$32faypY!UNcTzj!;gmd`lI1; zh4pGrxxUI;G?~LvC$cjy=&Oe!Q8TxiP}5iu?Q#@QV}UM*4M`Bwmm$P7<{=$w@kr93?8&IXcrZ}P4x*6M zQ+5c2gnLO&S-1FG~dYAYTBl&Ei` zkkk|P0~8YOB{@+;DqyGYQrS-xZqRh00=C16n1!gJxbsnpo{Bm$+6L%JKDkD6V9D^-!ci)t69X@gSg7 z{SgXDJyqXDA>m$NuE6+3ibes z3Cf(_Q?MscdvRLGW8kZ#;Uw&N6c`i;LBf16y3yqkvNJ}*UPrCP!+>hoJ18VPI|VPr zXxN7+B=ugJy<2%-Rh~Z~8g>kd2}+&b)36L`FHQ@24E*&~oQR!;B7-6!h?pNo8Y*@v zYAzlKRK=Ivmg z7^j6i25vznCt?dwSWp-Q5pzMLp3C~Pazs^S?srS-a6cX+wdG3Vh z*9|BpC~<_1#6?m;z2+a>|PWSo|~wGJ%U0~ z@1-YENVu2e*%P8*FQAy9%;`M^djqu>r-eKQZuvGRU&XqM}|JL?Pi`lIKpuc8fzOE+}~f4eRdGY8}>BtU+zY=^-#SrsU(g zLl0?2Hk;*FU^GABq}4d|uxM#B<4ZI8`sknS^iM0e)Y+C4AjK?owo5%ERBqZRq;AVi z$Wt`;qL`9NP4}Ln5t2EEqWe)paeYDg@GJ@m=Y!y-nA`3zqma~l=?xST?j?C69Wux` zh+;~XHK`XrPXCJX9&hX<%W2kW|YOebHJOhP<=O?OSD^N)4 zy|e~}gnLPzK_M!39f}Fc9buS}x{6g%dvRLGV-R@0jT5r%C^#q>f{+EEq@iVZq88)f zKzn5Oppft^MYZf<6q0%`eGi3%dr6*0AzJnW6cdy_y{BbALhZ$AA&)`-y2+}}{?9+s z_AZJGii03y9*Q&+tgofKTZ}5$JQNb1o2Y`Fh(f}tih5}Y3JLd;JbOYE>>LymlsUbp zV5?Dkaazb@;61&~b;PbkaY1nq73`{Fxnb&P8VXiMjm3k2=H@mO5}uo=g6%;esrS;| zC?woV^6Uvwum?~~Q0DZWf<1xSi_=0LgCp1G@;Bx-g>=K7N1;KX5JZdvl7^1Gj@pZd z0@bm1P)K-&qB`~=3Q4_}W`7mzLgQYN=TL}_9fM+mlBf4{EQ8vM(?TADBQMkI^-vu< z3xx)SLew!okTi7cQq*2J6rF8f(=_g&`~JoO+KFZ->JLLmA=`Z%_F8Y`5*zUIeiHuq!SKFjF+O6X@j8_WHl3rhC zu3@vxTf?T^npM+Bi-opvEg@*lrauameA{@Rw#uNO_fHO&#hE5qCS`f@hB zj4{E^u$f+TBMhoBdJ7dr%nvTF(>55v$o6gQ=M0{4GkbRv3o`q2SKGLSK4>i%&*f{C z4f>X1y;0v#DeIZVZ5#V@d*}=c{ob`KIiH1B3c|2pRpfC82v@TpX zrfW65-YhlhT4hwrY4u98me;es>rV`7`j%>Kv1TG0qVJRl8~Zk`WYpB_fg+XeoRS-c zZALR8EHJhc&m#|z6IU{ySroOL*x;@~P7Jzg)tX8}*Ba!n`dFpbSeh@^^37sH%U8;I zz1qkQTu^D28|D|*)tdURY3JAU+>KhLtmVqusx9n0#Y&m4o$1m!IcNPQXUNz>m)ALC z>IoO+tQq0X5>iHz%l4^vF!r1B!PD0to3LcG&YWpYuTD}Q- zwW3~clOSHlbjQLlw!*ut2W4zwYwNPBE2ZW*iQ(E>#nAJO`m#;M##nPCo3D&7%aSi1k-qi9OP3K z*YJ$-eg4SsS4iXi=g8#pjp9U(WyX-UUAUaLUGbncQY;rXOyp|C+(=0u(g@@r!$(S4 zt>j$-Tw@xDf47<5!GYsANfwMoP+|=tAYfG1>Z0_Nm;(C3j zxS#Tg+WLf$i+sx!a-3_0z6-WO8RHjBWj~^qhctb=nh>)=@Z&x7pyW&`qPfor8N zie|re8tv@pQ^nR?zwq(iV#dyao?j510TABx;-kGZPurNVW=o$)b5Mc^8NsT8H-;BN*+YxGy{3vvN0Zj7#4o zXlMZ^Ei%0gr|&r^Bp`ilNND{dcv9j z63u|FGpW*r#I(GrHZkwGjy`UbFoF0+=&;uwkh#RfkYWc=n)Px)_Codr3}J-}2^M z&+lp!STe5qV5C7-1GN?p14`B{C?xe{-GxHJy(A~Ae;I3zt!)%pGPe40q(RpQQFHM? zpmg1jLQ+rHXHiJFm*jNiS1aZS`!b3x8DV)OX;AiU)L=XqC}lrDA*rYA^gB}Sxw>o9 za%`QC!b-+g7epFFJr%W8JyFjcc1`^+f$13JLd;oTwoS zzWo5j1hG_@k?+ESZyioo{RlM_cRotdcTq^{Df)9167D5AMg1#kadO)KJ7CWlBC2p_ zz>gyhMLiKU7Y_tV*Ci+<^>jT4g@k)aPS?P?NgQJ@Lct|tYye6cq`elk7!L=_NgJ`!#ZDAgGQN5!xfL_>; zg4IWZopB*XcAS&)wcKx^=7sS-vXW64fpoVf=#2=L#nc3Sh}sOWtV2k%?*#kTI3zhe zB5Q(lsrMbe4KZs7hXlLIPCM4xF67{Z2#4 z%i9$wE{MI6^5%j`)VYdcY>d2(qBi4p)5CA(4k@yG~T5+iSSDTfr* zfrfjNQ6~x`No-HNvy&NlS~S5~m0-bCAKU!lecW@X!wYFOlyskdKm0g&uRjhhS6Hw1 zlpE1KfhKcU>O^+t1%35UBx>gN6KWbOqFs&`QDcEFhYd*()0hg_*HK7-zIW)QcTh;U zm*iCSm7a23{SXC~jH^BvX^?g9?}FnyJPasVk4GV?Cu;_UgnLO&R)6Iw$JVn@WXag- z$B_nIFGbD81A)?Y7=@&suA?X<+)Hx0@^z;iVH+s6WQ66Bq(Rx;sKIzJP|DtgLQ+rJ z`%y@^m*kXni%&VWK8nIh##R?Z8bo~#wG|HmO4L_SNa~6DCJG7nlANes?J399_fTBP znChWOgQ_#zJ=bepfI?DFRSkvIZK}G(ryNtWD6C{mbwQ*-)bmkW@erVzx)z0`o~SpV zkZ>=_H8rFHwuEAWSSsA0=|Tl;hZ8Y7P(yL&qZHkXLQ+rBeJCW{OLB_(D^EE&eF#Mc z5mlI5_2WoGQJ+N3#RGxT^#v4?db%D!A>m$<(=||b$}#pQD7a*d4M0hQv>%}s zNzUPrO||YtF+toFMqS<8Y(DD7d`wB)e$-x^7V;Q)r4n3|_biGFii0qy@KAI^E`;2S zDK&cyH5Ly7T0`s-lo^FUj*KM8meD zn4r|@Jq^1PwHK#_JO=)^_kB|8N*7!L-j zWT&H$@Ek>zY&i-^y_Z&_kZ>=_vnWK#u0=6H+0%PURz~f`X(5k+TZhSs*ftav6b3=W zTo7sK*Bz*>cnDDa`X&kq&rDRmzJo$i@1-YDNVu2exf7ya&!d>2#OXc#dL6YFr-eKQ zUUe=fVDF%~pg0Hu=AlSK!9GTf#e;w<*xb9p9y*?zsDd4jLQ?Og3ep5j5}ui;e(gpfsrS-d zC?woV^4y8oW$}I#7nD4LhIMyEwGQhm9!G7)=^-#SrsU(fLl0?2Hk;)aUNk@9r1h0U z4{KUXUB;U!K#E!6>^=36P*MIEh16}i33+&C?(c&g-DFbJy@zLnWR9Vzh8l|N3(AKq z3JK?f;H8+-p>t74>b-O+3JLd;ypawWWDKL2l4VWm#g8S_UYr*482F!M;u^!PC^9G# z!Z^c^BaNZPUesJX5U7gnLm}b$iK^H`C?xe>dK`s>dr6)_Au9G9iV4acVVIG+iXA}h z#c3grLE!l|PRM?Of`ft~2w4D18d~-dYB3%TRLcgw4)%ueEJd~KSQL_aFD*hL;a-yG zQHYkEiDH7%r}wn%V$@!o7V;SMubZsu?Em~DZC9hXpg0IJ=AlSK!3@+`JP4?QZ9yU7 zxrr*+E)PF6QW@EqL`q}={*J8kJ^jVLLLL}>20nf_AH7Eii4X;u$8annEYA+m$&UUS78h6a->oX3} zHZ;bU*}FgcD&PMwo@O7coY~j+g=w@ChfbT^EWWjUb30>frLT{jZG4ITp&=^ys# zF6+F z?_e=BlYkF||8ilJvdPq%UY%?kja^Y>8oS*1kbx}UO_yO`Gb--8D!seixXFC2nXh&8 zwPC(C&DRO`YD0aR800a<0zEQ0gYyhQHTK@l@uZ`4ouiiS zgEF?TwRzdql~Qw@QhIHzV(9rsec7gBW2`xn%~!^k+z1UKt!tGa%@ z>}=N$YU%FyMF1G~O*%6hh3@>o+15~Q>h+7YrOQ(`_wWX1J-Wf!*Jkulvr7NjeTt0n zQ$Af=pAeFguc-_<&NW28vd`bZjxBV%2@$PD#`pyj+K=cZqJwY}YpqXat+myWI>^3n zwjoCbu9dPbn!UGav@M}e7+XiU+Q<9R_c`aklLI!z`|l{W5#l_0nWF#t+>H~1{xeQu z7k4|NNAso(=ZQLp^;@}qJ3Pr4$MFGZE%bZeYb(7U1h+CD@P6QY$=YVwe}JRknIQcP zU?0)b>D<&|5@wKxcx=;#_}ilAqmY1coec?{pIVDT0%l%pNJ1#ZcpLJWfyjM;M^N-( zV}+^jQ>kuG@f%D+MKmlpGlhYyWP~l*;danOB_!_xu|wJ-e}TO+w{kd4sS%6=y#wyU$GRz`Mlj??*dt3p8OnE4++)dQ4|uO z$9CZ4{PmV?=UUSSiYpm=Jrs$0X12v>5O$-+;z1C`6)}%n-i1QKvj_Fk{U{{dOLD6E zmgnZU`X~x48CQKU(je<|sI_<)P_n*)LQ+rGH&IBqm*iyiFT>2S^*t0>GPe40q(Rr2 z-vs-~cpy-^EllS!o4J?E5F(6_68IZ z?j<>8-L+LYww6#>$=K?GNQ0<5P+Rd3phVq^LQ+rEeJCW{OLC%mYiM#zeF(*sjHw=q zG^qL{YAhZEl&UYFkknK40165BlANmUYKa_Ee}ckF##9$X8btjFwG|HmO4NaGfn8|z zL_HRTgnLO&)Q|VGOqHaOW#RGxTbr%XrJzd)~i;3;z%t(S@Z>WM^K`R}V#^W^MtYrm-U0d{?l;i3;6j(B@`e39%)-lvtJPasVCs0W0$+{DTgnLO&R)6Iw z$JRShWXag-$B_nIA3)8;1A)@@F%*(|x;}$K!o4J?D_?iY5%wh%TQb7(NYbF}Td2W! zFi^_Ak3v#U*}i+h9wP1~Ic44AQ;x0kP*};>>VimvsHdQ|;vqnZdO8Y8JyDmVkZ>=_ ziR#s!a!g%~;!4I;4@DYO-G~~C2LYvO8HJ>ts@qUVxR>Nqb&F3qrtU#uC1a`!A`PN` z6SWl&0ZP>GppeuP^$8Rb?j<=gOM=?Px6>iXUp#rwUiI~?>LviP$6nzJUq@JQ5 zqL6Se$tmiuJmutc_I+T_86v7Mx9Z1{hN2#inu`YlrE3O-q@J#4p^$Jd$>|y>JLMRA zAqp-TV*^mqAnh<}F&++-w4*2_^`vc}kZ>=_N$b^~a(ulF#g&Y&9*Q)mdKYRe9t4!C z_oI;1Q}t0467D5ARp(x?YV|7GE@D-!R;lr&MNgsFlF{`fs_d;!X1%>avK+KDIQ$Cg z0X#Y=hu=gYsps%}C?woVat?=V3iUCH3F59W>gwKR>Gt4DphZkc+=BbT&O1&Ec?`T# z39iZ0P+U+Pgh7Req8oA{1RYj5IXtUesDV45)@Zfm$^jt5oEGvJ@U?cFju|L6 zC>DZ_@kr88vhAqBcref$ZK06x97UDv>nJ4kUV0FPgnLPzMIlPIAH@V^Pwy$&4^Vq? zTF7JI)?soY_8JNc3WFeGE{HVr>s{1VJOrqI{TzjaXC|s&{SWk9e{~@W3HOpbcS7{* zR1_1GIK8J|=b-lD$s><}SDniV*hMHVC=P;vc_`9Quxn9c@gSfIHikmNa}!mt2^5lg zFYQDj;a-wwPl$ruiDH5>r}q@>0n}cc7V;RlRok3^J%+-9!XOBk3nC5udLFeE4*{xQ zucDCf%tZC;EfkV^FTIaK!o4KVorql)`~Dd0tU}2nXqdC)kh{E_k|c_$uQ&#^8K;N9 z*ceEs9C}DIve_)Z@S^z%C#|O+dRVlgnZ2w?_zGvsQ-Bn+!r5x|kWf*+7KPMpxe0lA zW(>uYOlrFK@QjemF%;c~8j9-+%7;BDB%BX|mtsnX?nWW0_tFC>B-~5#Mml7W@feCJ zS=OXp{P;X-FHQ@24E)bBagE`tC^9G#!Z^c^LrE_wM#bJi&BX(Os@R7pBs@P+6`TDa z*nd{M^6ry6MpqQZC5r!G5tJqnny*Mr8F$g^0#tGSlC^#q>f{+EEq@iWQ zsKt0VP%RrpA>mnyYFPt?q~1%np^$Jd$@3^g%kDriLFvqiHDEnW(YqbMt%@5}uo=f~`d%srS+i zC?woV^6Uvwuo8+1%ADR)upOwqI4$HcIC5<+e`9V_NH=UR3JnT{AYvSlG<57<)LuLk zXiw}B6cV1HsE$2}LQ?Og7f?vJm*hDVqGJb8Oi=Rlo{k+v?Zs&!kHL|b>GgW3j(vne zgF+$dm>)t=rrnxV(?^SiwxJP%)@=HtP|3HA_i2Y58+C!egri<#B3{!R5xjE4_P)NH4KHI% zurq9?7u^VhYK-2}*VmdKTwbSbFoKco+t|+;JmY5e?rauh_UEp)aSMIWI&wUhuT?hW zN~O%=whj8ZJ@nIsez#gC^t02<*-fVzpciuWt#pP^SFfPsz5}h#uN%{~nqF^~8g;EQ zs^zqLrCH1CS$5rtK~3LMtu59}C_{9xRIE4H*J$aYrd|(Jr6fETH{kj_%K5Mm*j_u2 zY$mVGVNSBhXnAdjyGC;)XH1=l_NjNU(3#xlL*Tz$7?UiDXIj&%lWk+mt|$(TU2d#n zAj@~tW!Tq@iu(Bj6L*LRE z(oV~la`pOY%Llb{3wk}jpdQ728)MCp zY`!wSEMKZL3rq9OdZSV(=E|&b1PkXk@FCL)1zTg@`gtfz8MV;mQNc7zMf`%Z9U=b7v~&S8sT)<>NGzYY4|0CrORV>&mr9m3c%W?$~VL?Ho# z3>y+EhTlga0b*!F3Wje6Nsb#m`Jl-BDi_tiNAZSrl%~Enp9vt*An3oCREZEWoO41a z9cfyQbp_)-6P1vCOT4~>+lO%a4ZINgn(SbF`<;`xK{mzG`MzDpO$$sJ-w#O0XM;y!kPt?PJWB!uP9oCG* zj3fRUg#-lMhJ-4`-=mNKrLZ9d!$)^a+*v6niWx($Co|b^_~!4wqsYVfI`t97JhS<8 zXVsF4#(%T;g9ht=qb38vvLOjN7Ss40^&NG6?hd_l0tyNDQVdzyd@E1Z#V96-tU{-` z3y&&V&X3Z5Tq{woUx0cHh@ve_8UF55Yue`>IkMaA&+|e2A`0nDxG0Pa8-|KidaIMy@Y2FpH-RIsv3f>I$Pj+YE8wUR=V5^%q z5q>p*j{ehhZW?=_?djj4kbsuLh9vJ5iT4El0fiJM<5Ta!$KDfQI@9W>+pE@XY`@I> zIaM22!eZGf=pQnj@7*a5=7jMSbBRMr;Ua~uiL7axS=-YJ*A=taXWE~VLxNK|ElXN{ z%c}n|rqg$LE%w=9x$N6qoQb=UWj_fDTlkCkCjSL5az!mWWJN6t$Tq8}g?-H`YBAq+ zqo{?o2|k!zZ-&OyG((>XG(*9gMq*Rs-9X|xjo!!Hv`vQj+-EFLi-{brDK3lB*{lDSDqNsn* zU&Plh6uimx?{~`j_djF6&7yVoHLHJbzWZh9-`}XFfB%Pp{{4mx#d5K+VMF?r>)O)g zW(m93c@0i_^*dmluUPZ=-p8D(&VBgMjWqfL*GhS$;rYqYB;#LYt?_39VTm2h0QbE< zP3I;p6xz6$8iCKEkbpMMhJ<#G&O;#qog*7kutvZ?{TfpmAkHg(5yhLVyVRX|#mh{( zL`-rZ^~RP*BU;6&b!5DvofAw{y-;u5M1u;X>P?oFXsUi0g#@Ik4GB%v-$5Y(scJ(C zrmE_Ca4*Rl!H{yy zKSVJ>gcUl`@%6_5O{3ZXTr*L={|D4-KqPH}LTix!3WWsJAa^L^{}qLVd#SS;%fN2swS zmV_933ysA%JcXj~R`9N%dnX{K5DFmf8OHR>$O@8k@55+hoQ+ z>l)9#W*Kk3>xS{x%9ySKcKsoOo5WU`T{1MkfoIv)d#!RNSEm&xx5uo}F{tJ8jp9VE zQLM1_GKFuibdUNPmSC%+W`WBCTvqxx12=4MMxCh(4I4w*wFNF;4FGLzNvqqTaB<83 zFJPpbWD(Iwvbbf?p~lbH#ho@yc(`-GOCP5jWpzyb2e?Lg)}Kc-%8|x&{-9@!F~LH! z%eyQ9jz`2bDvvg=hOqMpntVDd_$w~xmrTtZ&x){_ zzp3B+Npu@|_fA^w)_bINjost%9%o%;vMfRcaJnMBFJa=$yI*^>iApFtTj=iucul^O zrQ%9a1KtmuFWExrJHQ2Z91SjT7ouocCEVhQ$>=YkkbsP~A)y(4I|>O%WE)a2kq5+h z#}tP8f5FB04^Z^U68Hp3Z#CI6Qom;sstd_$`Mj&i+u6w??p(xlDN>k7H|CJcU<3BGSiSTf;)A5)$Lzt z4cfEgf>o=ve5FiFM>q40OntG|sAy}=#qG7xW|>B9bSyitZmd|>=zlqF$&!n5`CLI? zvV?w~YiOHmxoTZ&Y_4b%#d@((scH4*h`Bz4P9ImaLd85-9n01A`aoq=YuNiOm_tQ( z=MQ^>g5}A;@e^HtZ#tGOSkHDd@elm|t6V(Dhe66;>}^iNwq&sBov##h zEuSlEBf8eC>jiByZTX;W+(=tKu-zVWH4iL}IBV4Hb*{45>4JJeDC~bm%mhf0^W|$p<&N4m2Uv=s>4R|i)4VrCv znm_L`%B`7}<*yiNNyn*T{1XefIbSdS;-I^mDmRZZ_th8y7XD*{mjfXkBoQ9Dsb@W_)GSD6jT++}+nzZjuU8@(zt0i4y zJKmVvN6|KJtTEC?sg2Qd`7y1`5}36pbgGqCuCrUIx=uS#z4HwTSjf9KBhmlbv)@lA8)`ZbqBW zSn6M+&4!9}7SjQvwaU1=AyIa~4RAo}hChGUwdBeKu5~30tB=UyFk?hblbUIWGuI}O<4Dd!rGEYj+3G!6ZhhORJic3|pF zoD5@k6YS>xIywcX-*YTXgIq+&i&Jlu`t3$3&?Z9qml^#DI~%J7O>|TnswUzH3~m;zw`3gcpW!-@2rr({`ehgRJ*O z9ix1uSt_v1$k7bZqHa`2iDed zo5pEoB5z%1vpGOKtwC}?S1C_w6?SF%t8Dh`0)1D9)An4(@zHSkHsz0^Xe6|x^LRU* z3))lWo`L-N|1|3S9Z0IznljW*YdVkjIDh%6n|DlDsCXmi2V==!>pvBB-w21v{ z&H9`-#71P!V368nUE8FW+1QYD!GX%&bhGKs+(e~Vpn<2JZ?b`>790q!WP?De zZ7q|?Oz75>>SdL3uCTOJyisTS&eAk&la2Z++DN6*AkfV!0rJMOgETNM(I&KP_)25e z;wZhIR@a(kHis3Qp&IaP=M&|}QIQce=M#d{coH1Nxs<=k|A@LuBIRM&9p#yAMUcPj z)Qy{Mg`T%)`nGNS`TnQs<}KD2^7XjGvDwcZ37}Yh4WP zlv<0ELRt&W2b`J>(&)w*l_AmA-MKPJZaq*75dU?~#7nwpqR_6N91)w3X-j3_Ed}4q z@{GXEhObleWX(ZlHRqO}PIpD9&zsXGal{&DEbJkHjNbgQE{NyBL(jefBw;^^CxPr8EU7!zD5y0csnBf)C~#L ztTemUw5kKgOsAydI<58zui>0e4hv@Il>3-RRZ_Q^SY-Oc&XH<{2uoCJOSj1~BuT?@Q@!q~vSywbW2 zrIqQyIHt^OBr~p$kLa}xg-T;XuC|GU*RA5vGJ1AXmJMgD?_|ew)y%}8c@vH9VlOsl z6-}AV+2<`%{fC|_u$fKzNN*f8$2F z2WkFc-a4a3!gp?`U5J+Rzx@|yt3!Xg8CW11$cxuKQ5+UTet{EVj|I-fETNyrlZ3y{ zgHhM%AXmI;A%@-&`voE=c?eTC^;3?i0W$OU9vwn>{)$g1H~O=1e(?yW?h`5v@g*kj zi6h)2{MlbnZvQd9pt}megP6LBM{L|^OABw_Eb~+TtUpq2+Dz7Y;V%lAVhdxy6!TO5 ztnVo|<-{=Mchs2&6KP^MI#d7FYE$=-!5!V@5IR%#34?7ag4L+A&7>OiV&6*nXBt3- z_1J_N)Zo};$K~eOiEinYEq~W(a?xzX=}%TRNfU-_0Cj~vN;fph4Qj<%bD1mWsb<6+ zfNd_)4M(f3W`iwfKtyi~+R~*O%}$Q76VY2bQLbLE~IsAji4|8`1v`0yX| zSj5bc&>Ycye$No+%JzMJ=Kz216Qj|T~tSLGx-4FuR>o1d&+mq=!PY0|3cWp~kvHMjbRv6gs8_qxZOd(t%1ZJnj2 z(^Pa$8z~Y!-T4B>Ro|3=S!PM6D>V4@BCDVL+?cTr`896dA45oG$*C*6L}?c-4L z(cL6{bd-uv=OM$tX2TBW&ZjBa5za&!}k?vDrN6a3YbZZZXxK) zqmR?&%no8+w=&+DQ!zV{tS-en2N|_-<3%J1ba&g74fldN-B-52n<%M{x=9VQeNA&R zDR8Y{bLMUa8E|&3fqFBar}lTWNiDNRWf0b6K1~_1xhUpPR-nRetVd7S53@zY4@cwB zMnkHNQy!My$|YK|*;P*)Z#MP78YjG^^+0x-MLP=flb2j(eyHSzHDh*SJK?mPHp~2! zKkM&CowWnq4G&e*Qy0r&hlJ6*l~ea!zavb%>t-^w;?Ma<$~_l++$hqDZZx_>R--#< zCRqo;7aCprguzA^!5TloVz=!4@FHYD@z*q9OT~J_zM+xJ*Jz@JMi=IT zI;<@>Z(dV#WfxtWtsrZlMZTE&Rv70V8)69%JS~2gy(3jm0oX)pZ zZ(7z_6Pc?`I^|-O+JFxiUDfWZo6p|X^>G@s7xVRC>DIOCOyddvS5br)1ZaNHCwwx^ z^*fBe#@|L=qXR~Ia>S4mDa=P^y$Oc8s`zk&%1Eyvi4ZmMvoc~(861h-vWB=>x8?`S zI^AcZ`@Ffv7PqTca_k8@b|WyC9m(d|>>`_;p`Kio^<3#=s{)e7-gNVjhJ^HV zoqL%5Y=n+m4kl^CB?X!}@oYXw zWe$9;v9bMF6DyV;(dkY{u~Kt;mgZFSk|nv)=Gl1>AHN*Fy=#wRJ$BR)^O_b4p}*PD+L_8Ve%qZKWCG@Dx@6Zyg=d>u>W@ z$94->ps}6R!UfH6yJrGBClrinjrSOl%t7pj^o}3Idcy=~3(Zf47)TTO{K(cve9Oe? z99bnJTXF61U%$Xy@y5JK;$7RSAuO{sSgnOOh1(%?TbY#_y6cJa1QrtZX2L(Fu5#GqOeRGWOiTCUaH=Ix9&@{aGmc; zt*Punbb1#(wAEcWZ;;MPJ~3wqXKCztCH_VaJ03a*X#M1q;f8XdjXZ^*hLU>^z8tb> zyVwLC)d>k}ckENJS~Tkvi!9p%h2GJ@JvZm>KgVLclJ3fSAD9m$x#DC>6}x$87Kl?( znD16?F!=cPHNO!Rln&hCQQ<1f9g$RE$0bzAg8tw*5_#@K9J#`@r~{`2Inn_N_PD1- zv(I#j!drZk=~%~$Z(1mRrBf8%BAa|m;hVwjz&+mdHQ$qnKdU``eYb4-dLJ2UO<%LG zS<~0%yI+Rs>#b_0uTS>+T3NSE%1mLx`3U#hd|U4OoXh1$nez|P*4PgRuGP9NwJB$x zm)sFzaL(DcBQ|i~T^KMepj!e~RtN1jo?;Ghuixbn>VFP++a1>+5*s-cscMA!*Mu6Y z3=$mfjZkA8p2i6En6Si-8=?m7a6>6*`J{>=>i=R)GKZ-DOz-$1s!vy(G3vrF6NN#l zkNZ}3e4FDdG)O&m-R8k+4VLM})ra0d7~ zB8a;A#wj%LJer--RO1JJ$77}yk8IcCVV^J<4?#{P zV_f4=RvPnN_VO4jC^_5s_w1irYznMn2foaP6@04kwCHG<;Pu9N$@Dor!VtSRzE9R0 zU&jJz7L%~AS-o-d-7iCL{AMM+@!@x-)9zKy%up@s6q9GzBQmsC)sVKGW)GeO0YS4-0K`VYBbA zci>(x9B{x3M?6!+Lq5ZVgSMH%=Z?|B0ow)s&o7{*V%XZW>(^(q+3N?*IvoFT(&GhXOCMC(5rkhj>mX z=vWHOaR!cJ4R620eCI26HIw@>*CZHVlaQpEX*6)H6esRoXLuvKz{qm=O45_V+TqBc zkV+RG)(*2ZF(nMp4mT^0da{1OtnEFH?hGx)ha{lFqRM&ELiSGn8~;_fMxjaXYWUja}O2lao$82R%7? z1beo(QfQW_%za8lM&FJ||Mk2sOo7NBcjgRak@kkr%lvnV9oOL74_!ksMO`Fb7-ESZe?V5CLZD^ZK_P@sg( zp^(%Qwt_;!y(A~>fH#ce8GAE|EE!|{IMSl*@1Q2*!9XedEfkV^%Kj+|3HOqmvUB~D zQ#@(^1BxvfX?Y}R(e^*1M&kiNY5RYpkkr%mzoU?FFUe^;$DRn|8T(HttYnOJL8L|2 zqn-de?synbvYvoKQcu>!C?woVahUST(aDvAh&`F zipUQILGDYCOD<6q1VItSgG2d$UsYdKeazNOcV^=sK72ag?WwMQ_3G8D_pPf{&GlGS zk>WSk4pouVwG?iyG>S(9m7=wlRK=>zT5TcfWvsobWSk zD^*2O*HXB-j&Uy;6HWHJsBk@0h{csxm3ruZM|kWUl;Sf<)zYJ*H7%+0TDe%dBo1;q~AwuMk-AMn6@Ix|Qm} zLo^&IVyg(81Mc1cHh8({JSVCaSiK@tJz2A=Na}6WW3Cm}oqSGJr1-ToUsWV^Erqur zA5V6)s!U3)XJC4=m8xY{H;wRma4ozMTv?B*U`mzYab+$s>gCJMQ7y50RjB&1D^x{N zZ>6ff>?T!_;@8q0sv@atDZCB&__7C7Wm0NB1Jjqis9I)q(+IBz_mV8Znf*~!GNsz^ zI5W2#_3~yPs}@VeVkuRH$C=qe)XR^(pjuw_ zYEboKZ>Wl--a=LV*xyw}ieF2E?~Xlw4R1d_er#h^nUosO!1QA~s+L*ZG{Wn_S>-D@ zvKgv!DbRJl#tbItww^U`S zt>p}e#gji&Ewj35gx7<6f0WQE-m5B^Qf+v6hg*(%d9&wKi>zK5s^0APsv@bkQ&n&F zzN$#^Yw1%}k<_&m-imy@+1Q^e#=1)F$3r^?gg2X{T4r_A2(Jfe-<;skrmG64R3RRR zCW%rnpEg&u)aq5D>eIfcDw29@RrP7Dsv^a&r7l&G)U_1emVA8LiK;RwHKBp&)6P>Z zv$|=7*TX2<-NSbH2=44kRk@Vv!sE^yDeC3PZdEO?dPS&uvU^lTQg5TGp6m%#k>c0V z%c>%&Ybm@1`FOIoRb^6YJpZTE156%v8!IN!tZ=8{`*OS@1TOijlYLHAr1-ToUsWV^ErqurA5V6)s!aa_o@}LRnbl1rydE}keF8?D zZR}AMO{qFO&P))bUjFPH)iSGBhpIojLRBR7ma6K{Zc-H~el6XhDw4XE!rPILKYKt` zCZz^6Fe9@URm-ey8sYV@k?ZqSqCfkis%T2p;q_;3LF(ntK2|NWdUdG!v(fh{#>na| zRn?zusVY+ZTH0AvBy}x?x1+JbmqEprw7aTswY4Nkl&IR0s^K20T59zwQ8nD9sv^a2 zxJgx!)U_0DxEr}XVJn*L@v5TLX10PLQ5mhrLMkk4IZL(7$`%sveQ!hgBaJ~B`PG84 z{W^RQdR24~GOX23~I?6||*FUNXR-3)L#HiV) zS6LMwtCm>3DpU=2^e+^H`uGiYOI4B7wG?i!?&Deni``jOvf3=xEl0gfc3;&Zt5=4q z$sVdIQv4>nR8=H(Erpw`cp`^jv`JOjYBO3Iq-K$mQtIc$6A?jtdx2u*{y*^Z}_7|!m#c#DwtBRzq zCCO?fV|6y#3)cFYs$8{Mt0P6d%=Pc81y-*JRdXGD|9}f;H&zu%T}$ESYHz0&taW=; zv1+qcTZnoY>kQTMs#k-mvF@)bQvAO4a8;4iwG?iwKD!y0smi2esh-)`h;}npIYf|C zEv$M4sG8}?sv^a2re9MPNnK0fX6oK5Cb-qhR3%d~R?l3uTaJ2p)>~AItX>(aCVQ8v zNb#HOBdQ{)Ybo4hrOiNs)xMxATy0h>iBd1aeMhy_>Q$m@xF4#D6u;q)d_XazR@YLv z;RY<(-a=Kb+HBU5A|i9GY1Z^5%v|zW(+X3ZI_5=PQ=ATyJrfh2H1T;h{>4=EI{r_f zj*5wVhhFR}Z{6CJOO-NuVLJP6)pUJTB2!8f)46P4d3auLPpA6In=Q#FvW4z+M$fmH zzw3SF5%@KgOZFLm8)8rXrXZbvF&45}+J&VykD5+8Wze96DQ}apigH+ui*ESIZnUq( zyzY4U8(Vz_^`yqgTVdKKQ4XIYV>+48T%dA;Q-Z$oD7y?_=`+?MO?eCFXS;w+Q~J#5 z=Lf%v;jIbosb*fpB+WgKr0MSln*MGxPD5Tb){XhfQ%UkOP=$v0lFkXidgL|UR36gZ z(`Q_Dc8~@;k1&>yagDY}5_ZYaGw6d3G(ZYmr?`?7E7srkM9aGmZwhz|W%& zDvRk`xt_v5^8>erE9Yt!{`|1QC+xygGG2Iwq9}Y@&ro;ajdOczwutgbJzLDD^+F$7 z^{LcWxSBc-;QFRlI(6XEk#Qet$Il#_jEBTu%6l#9OceAPPAh0?Pb3p5eU^5L+|pW{ zL{qHehMJ5gqzq>++i%CBzNR=!o1Dxf3WdpYrfK`7^g^<=knU(LbSIL?+fJfQo-@Z@ zJ=0{I0=q8{XU~bthE`M6*$vKJRMnLRYlCtMTCJkc2a=RNZZ5?_-$<=Qn*ZOewy=Pb5)Ppb1xJP%v;!E4m#cOho&lZtA4x_~-q zGCn3XeS%9sUm-6|`b(f%jSK1J_Bx`$Sa9TOIpy(QHMl>T=KWbH*teAnHkKAVjl-p% z1sh~9kdp01D%fUH!FK9TJGZNGYw77tt*0HIV5My`CQ6A%@WfUEZWGo`L0>;n)R)Qv zw;v&I^wgd(ewHZL;8~*Qc~Dg(g)rU}N!5itt16O$3o}KMtI!=qS+jlNp}zYGp^o2F zmEJEH?El)fZ9TrpWwK%M|GG2L7mb3O4}b2x(#RP ztl(Mdz)Os4QOXK5M3&m_R6L4a8yO7&Cu1Ch#N!-f;)6i+=h>Wa zFl?HV$u3+S5I3xDdfE9UO&E+&g-dZ4GFD~?&{9y+KLtWn${Du zC$CtcWfNUGrRvV>1q8X%v_v+g74+@|6TDD__+7YP&=MqCKDR2J!W$9=WR~K^!+W%1 zPV2;j$hz36Yh5{{MJUvrNhk4qN=qWLE!f9(n$hKz>sdXopZX1tf?hxM$^aFKea}v0 zJhmaYqu!ZV_w1_oa)YB=u{#^VRW9Z`Ehyh0XXfWNOe3BFNx0dPv@li{!^7~_V+{-a zOQ6y`?LNf8nuXgR&8u_5K#9D$nkNaB2Zc*Mpj+~E?)x!R1;<=f>cjH%?hBeWPo7&*v zTNBA*dKDYDoXuZwpnaoh$`qbQE3zndx2#GR(#0lvq4Vk%$I2TfTRmM%S1HrPbHf#9 zaHAucpDoh4NlklCnP&HhEs0brDBbQz7m&s7kZZDFy`QPNyQd{SRr99BtzJhnCv#DY0SG9 z=s72HD`>7Tj0KRHL|0o1ok_7XQABW+rMyY8=$$t8Yg9hXs1;@oQo*{0nGUOm<)v~UJw-BR=G@zJ`7YK$@Q%!hTkv}hji~^x zqG!>2VI0&kdO4^WMz0fV;KHC9@YL?+esYSn%*PU41rgtMMbNuys%{?<#+#zVjQl>Rl5Z8^oabE0QAZfvzCOps*|a z*W5j*4x0Z-RV0N$b5kVMLGypBili`TZi*D+pn1bX0V6>{b?i4{vmOS`X}HrhXzm{E zbOz2xpfJIw11MXkN;hll=XPK$1=+nt8VBlPKamF)bg!Wvcd}aY(uH3)r6`#e` zd&FuZRV=RVmoe-XY7Bm6?5N%3Va^Jw3JR~oOhtL?z%IVhIx4v^wqN%c{OOTRV6X4O&mQZ6?OIoxYb3l!$tOd9ddBet4 z1Mcsuilh*5nsIhuP?-TqZh)SWmToSv7@HCgR;t1U*K5T{VlY#s~cQX*N;`Xil zi|Gm4T}_Aw?PmxE9Tv39s}!cp$2ey?kx8GxSMNB>dI}oG>ouJgG0^HIdl;UNTq-;# zIP&SF6NNC#*MkYmLX6WLhr+cnO?XG}5Qm>XGqZNKe~7BZoTB|YzpXR^UAZ}ouFNAL z8C{`doUSkw9bFMbjhwRd_Jgvlt21Sxsn1qg0#yxdY4)^6JG-V#qD{}t!Yoyu(G&b@ zg{xi$GTMI3O2eCw>%P!LmJ8Sm|Bm0ajzaY^1@_zO7N2armV1u81Gb zGP3hvM8mu%)JRd%lHHF4)QAex=tkaEFpbkyMN(iIrbwzx<9t<-6qtr7lFT%Qx*A@E zfRH5>YW3Ty^7{1`{pS=+fSP&3H<`IaW_O-IC}c6F6Y86tq{ACBp;Gzj&B-i)H^`pJ zSV`3t$Qx?1gvU2TOL({joqJ;b3fitm%)d==_gg9MmrG;&Yp=P-5%>R%%!v)ze+1+g z_q)1&EB4{F;(GCYFgcjtkSkY>&SH+qqzL~$J;b>jU>Ub7O^Ez9FU!W&etYAY+ zu4Q>_@l%_fmy?yvxXdjRdsQc%xO{1RkfJ?HrN#>75`(1Cc8SH@w+hNVsKfH>8cgTp z>}VjFVbd%;(<&)g6sZ5j9c|Z)Sk&RHzQkO2jlGx?Ts8*_vdlviqyL4&qDIHA#PW@@ zeh~BCFZLo1ZV}%YSQ@X>#`bjVRu8cqzG1|0T)@zNx_~@uV@`W-Zq^FjdNSRP#l7$d zS_XThGT5xufqy&juYUYAG;IYbzv6Y^OK8 zX*$oGtK7;Dl_Yrm)C>D10;O}yAS!oBP<48m{gwg3i&nFlPXWa@9vAe+np^>u!*T@^ z0`w_#EP(}&!m7;u8*;}|Mb^%Elh~DGyva7=isMZ`2pexYnd*a$H&HS^-o#LZ<4tZ+ zBOh-n_hY>2j5?1u(URtBhMErX1b>th+aXhV)|HJwg)cuH#szcFf%98JTj^75vb796 zoiDwsJaDSccg$%(&VYYcQliasf_$vPqP`oDcNODOcdCk{FfL_^q&hD3kg7-u<5H$b z^0<^dm)*a`gz{5D<9t!I6n^1R|3|Chp8nv1%=mxrtAk6@mbI#-@C&d95@|V+8CYbN>IvVfBQ5horSj8h zMbaWWJ>&CKm2r`ln_{(-xJb)&HK^S~S}G{K9;9Vrg+QPZYmtj&dwP%AUl0dt`6U?@ zV=XTL`OUJ(A%;a;CRHf7hqt&I2am^h7Ytg3w@epfB8hY$O41s4*#*QUuj71UOvi|n zW%r6tgR|_i3*#(y4nk!0njm@Q$f_S~WhQ0mW-G4<@2HWjh^hu#v0qn_t^72Mt^AXO zWNd|!akj!xglxqvYUFI?qJFTIdY?&W+aR+KHJ&ox(@L$}qGKpHnbfbDIk$zjGxl+q zj6L64x$V@#N=8fXs{8SRj;8D=VS_mBWG6|Hb}tn{l&2x@D)`7uRgo0f(<4X)qxVK)X{=OyvMAjNH5oNx(LSQvJ}0< zDEqe1$4yskJGG2gO_knN_wg!QB@T<+AjYfaNs6?&Oi%!!us87_CvlBeU0#FQ%{p{GjZs1217p0(?sF=PSILF3eZ0ruFNtHk z>V7gOHeU5OknebvU6SDODl3U+yvo%SczoR?m@hh@pig6XPuZGny@i+({==}8b*B{o zBTDw4g;Lvc4c|R2rui4NJ(K4(<|Twy&k9AVZKTPhC6g&j_ej&z!aIBz@aOEZlPX9# z)(x$3YGZ@-M=LZV{n{+i%(-@2Pfnm^Q;8wkDLlC$MYD&uy)FnJv4YG~iDU(NT8|2E z6O9zS&90A%yzTxl-u59Wg7G#=#(5h<5%M;-sFCxwEBe9P>b+!EZuZoS)K(jKS4E3? zM#tgCi5ZJbPX1AFI^&;&DXpjV2VUk<~JGn@&U1Wx4Q+%kK4&1hQ;u_tD?n%dw8C!ad4hDS}4hr^3x3k14&yaHWl>*#xS7Mh^T3<BC{1^d(XRw><1^U_h&y%52Q{-=Xn;s zv#g?Hpu>Hfqj^toX74Mums;iz|17<$?w|H_Ro{lQ`F7MV(XbUp2vk0}GYolGK{F?) ziljg@O_5Y-=1!_2DbP$)r1d~E_fjo|A0-+{G;=01un1@-uLG5y*I|YpnmH&`DnFe% znFY{H+1DALlJkp;X0C|UPU51O$JL;A56!Hg@Oscp@0U4whf{%F$|VVAmsiHYF3%=g zV(ju$1+p;%u0IjtAl7=v8x4eF8L=R9#G7{In10*2d~dRLX_RLHXLz0ijhaN1%kwOL@Xq;ND+m?|zj6w1@+-OUDqh~ytFu;9G%}c> z{kn?$>hUmsbr&gu@heKk`4vME@+-Hfk@Kso`@yfys`E)mR^wGCSciHD7SAg>hBd+x z&i&;G>!#o^ex=xEYT;Nku8tpzfg3$F1Bx^GiD0nB4!dhZp2P)mK!;8$0*jb_ZJ7)Gl?Z;22 zPG$ilOLlg~Z>f#MMY0Zz)lT9fS+hfpAzbZd9XcyCD=54kB+L6@1+!nSz_R3`*dE?v z?pMXZvO36^7|Y55`LQf3l(1-)ck8qn(a1c@)d)D5cueRyLU@*E|J@S)3X^2f>O+2` zHN|L_^G9nU-$Ao(}5soJFiKa2ES@6*7P}oQ9G7}n z09hb2kB%@jIL$?zw08d>81A)#QB@|}wGfA^q<58j2L$({D&RZyHXQPBm!wMDB!hw< zg^=tH$wS=}Rkx%PI_6MhE zg;@;^&8VFfD;6fY^trigF_F&d`KE)@$>Op?F+WW^Qg7GudbYTH3clEGradrOOs`_+ z*gE$PPjoNo>DKv^M5QSc zkhHK=cDUD0{jtV=7S`i$LqZIpbsI-hIa!ZCoQrr27xBLkcgksfC-*fOCjiQyV#|F8Q9Oy6a_HOq9V9wpc*T;T~V)Jp&V+BOgxo+2Ge8}_F~S6 zJ5@81SIydLGaLeqVF<;O;Yln*PmON8Vuj$*Y|YCxH%?4wr;}^wdeX1Eh8mpw#hSR0 zQbt}A*H)`IPfd*GHE~t78G35M%rKxP;4Z`a5nJVQ)l97Lr2U{=R}aZ`wQYz5V&y#& zOXWRKt*$+lw-K+rd#laRQ+Z~F0hPBks=&X0x0Nr~+Ezi2*iXpS^_E;+oBO>}tfxQ4 zQcrJIt5#1vjpg<9dbJsP>dDNI*ON+LX%u?VYZq}bz59QtFZA)GX0IvN=Ux93fgB50 zCioXcw5-v;3UJ?^Xl%3{%-W{SUNfA9xMHrG1m#*q-|EC-B&!vRZ5t9%i?Z~;gquiV z&59LbNyiFNiujftV=wWhUS1%I(EoytvIvD(zG1{N#60(my;vOKrb5gcGN_1@OB^t{~uSF>ZW)@gWDvmvf1Z~W_9`4So$nY?XK?wbW zxt`NASn<(UL>6__!4}KU>Z>(4!PYDWAe#8d#WZa){WW=t)?UhDtN|oGl>;$P7p7^6 zRk?I3o$WB$zcfN%HOVGpwMgj7!*(XL=)vF)@SMO@%DrjjlIAW>q zG(8n3N^G5l?a9aw#c_8^)Bf05j9swjiA z5Lz6(bqy8;Qy3Xb-dir%7@bqZ(1O5 z4!avOR_w+OYZJ(+G# zC;NKKqq}=%;iQOCM(;BwK8Q)tQMi%JBnpK-lJPH&%y{&Ai z0UfD-46yw=NU;Mhrc};C>EAH353&qDojQ~50c#y(r)RuMZ6vO>4s&9)lepG8%nCJz zaJ8Ft=q!}3pzwOEb?`a#NC*TfeF|1ClI`g|W`BJg>m5>LRBXLN2FP!{gB)U5YaV zl!dSqLc?E8v@pVz6>d%OoRCwDqIHTx2oE{lge&ZL;T>LnTb{IJbxv!~fWPMpSX7=! z<}pW)!K-X8+syv5r_wn)??-weqC8y?z(sac+-guE&0!6>ke+r>c^=wfXQGLL4B9%a zxa9lSVGQjuQUqgYl#DYphN5F=f~b+RwD0tTrG0H+ELBctQ~H`}INISstFl;*(J{0! zrYA84b@MavC!sCD0+AfSbuK z&$yeaGA?d5@mXYE>l&j#JBf>%Z40S`iF&x&J>0Br=@L&&5UGdmo}kC}S*Fu;WW+{-t2 zvH~L7u!{ez{jFN#vPO+4nbx>mVq?>S9s$`}M*NFChCh~jnAg%M+MY;CZghMFSIUvX zJJi~YnYBYoL=A(K*srTdN?r*gB^eTukrGPANeM#{k`lM5k&}{J`aw#{1A~hsWOuvtBRz+OiYp112cJ8wG@8gTwugmhgqZhnSn)Ssh%J$WZ2Ll z6CP&r^-!t&bn0Xlz)WPHXIwy485cA8TdZ~x7c==w4Qlr=lL`v22Q%3rJP4>XX(X4( zcJv;rzc~(Svek1IHPL|lsEHI`SlmPlFScjO$kj4<9Db5u&6UWBo0C`sgGWPdPI4mV ziQ3b81}h%Z#R6uEPL{ZdHQD5O6m;Z7HaFyc95+w)aFiy}Sgqp&B1bvV@fut=I}7iq zk)w!;21l`9SCOOqHjJa}PeL+|LdiHsVJJe5;ubY>j`D-b9K~*p3TNef-qSM7W1XVo z10#J8in8wt9AK$nOYw4mFG}w!pIv8)XY0xClQ)PDKxnQusxx11b8ym>F1PmgjlF~3+-t$o3V!_lSnVXP=>O+6sNEC&S5SC8 zqJQtv{#KV$VM;qq&+M!mHZeh40MaR(y<#4=dC^sKYbTD9~Z1awZ{jQ#rghRGgVM{r*y0+dD8d2SpTq zeYcs#JFK0sYT}X%ajMU|Kh4^g7Lws}a)yI>h95DbuR_A70y6xU}0$2u7Oy+8_w+HX_7YWmKx-y6xL0ijJ&HDpEyrdB!%$_QzX^# zi7Qn_QW&2wMOqKz6W>=Yg@gi7V7(~9F0vd=TtP*uh? zKJj9#b`sb4#B(*M-7`K>LE-fnpYYC3ik)?ZQ3|<4wxjo0{cUlKQhZ7_#YQPczTiJf zA;lNgScP|XQYf}(cGA@{ctD>NtT}ANLOPg4Cc0QLX&>NQaUFqX0l3CUOrCF3lGq3BqOAZp}H z<;VSCD(mVz$z~gEH7w-|o>4_RyXY9oXgg1low)7`%w)D;+b+T!5H-}oO!k%DRUTl~ zx#6&qC6XrX&MKhRRKEMZ2zgh*O4?LKQeY*fNUE%)TU8_lR$_{@9$3lgs-^IYpa&8w zIfWTmWR~iQ&#Id>T@WgjpH3^X64~Dwhf!6=#Y%3D)lTAKB{$Zfb`LA5pzwOI67N)^ z(?M5YBywqNC-1TN+v8v)zao2LjN~OCzj;$vOkuH+?LuN4dG6HJ8hD(&mtesvOk^8d zseF>u#YDs~Xa`S1fp&=J2fi-IQ#m&B9SAXv)I2|MPs-BGEnXAeQ6sky6$ox&zpf&; zcsGn&d`LnvZb8X7w_qqjZs8U+a&B?w2EZ-siTh}{g`Hi5+``UNY*eG2`vSKZ|7)0y z!usJ_xWyRhU3KRcj!v8&e}h<&Ia$)A-R(pWvF(VwtKb%Us*0q*EliPAxy4*nkrcRv zDbjl27E4u2;TH!FByRCVW?+$7swdK_j$2F&mC8@26}g4%?~EO&D&yi7Yh$&OxVXiM zHK^UgEh;E{U~mhk)2YBM@q59RE4Pc@K zs!U^osz?eihHQzk zj8lR9ScVx#SPa9v#f`@@^2~*+1#oupiqMm(u!{-o4c68!S_kFx0ra3mLj1EXik2hJ zR=n)AbY9N0gm(nHKR=5%vv&4sh)M%ruwPe^FMJTj7rsS8GQL2`IA35WLcZV@HFCai zPe1rVZ=Lyqvx}=5(r}o^pE&tN#~d1*OvMQc_YXoF`mtc&@p6dUq<57ET9s}%MB)ia zm3BW96bLDVXOAH7Du~3(sv;>62~#9hBJsAWND4&46lpyWiH}uF;nx=pBqH%IW?+$7 zswcFnjz~NZDwUs3D-sFW;TiW+RmMdmc76$&t1x-LG6mX6Tts3Lq*e>79JPChL%(AV_YRE((ZjCh}^z`ysO|C-%}Myfn%5= zsd9{;s*0q*F-(!x1IKt$wG>LRV;zpEev}zlWR~g)xT@nAmxfB^r&A}`4LGJ+c6Y`l zRF!dYjDN>!CvkC%4{A`mhhtPwcs)4A)`1;m}yI1=s~XlH>Z?sOM8TQ$0_BV=QCmP!q|Z zUzgLSZ||3KT1YFk5_yqnoaQ(Mu8FC_J8EPaqFTW;?AKLf8lQwQjYCLC#xy7yXBrGe z$TZxdM$R-I=m*oN_c6-mk%-k04ex2#W@gdxjFGl@?$uECU4dmBC)jknEaMpIU3EXN z(bkjQ^=}Y+FA9<#?G7k{&@G3&s~{PtsfwgPGE9+FNyd4qA}NpzQ>67kGOkuFgAJXC|)JtU)o z!s|gYyi0|wE~moI3%M+|i}%?3{c&)N_sN>rEXIdGejLM&CM=5K-NJ6gHS)SBS3BTw z^-{rhl^BNk4r^r;7zTav26ux#cr(@W1n9(xjA1xW;ge47o72 zkM|h-Lviqo`^lUb&v+cjk7qb>hD9{Ia~W1)J#!hZroiLtCc%7Fn8qaQCH7nf-O!pE zr}6btQ+5>tp`8QLgIY`@wn0DR86iq~R*IB2E zUssV~3=3lz?~ss;VNf#8Fc^xEVYo$&oMAlH4~9|ih5XKkU8~_3-n|)4e$lav1}9Uo zdAWZO+R%_!VLA%)fVD7<{|aph-=7+2Rl4DcyL zYaAb|oy5g8x@u6nhig<&cs;m=H~e<>(G}Q+T%2IG@n{@u;}S9`#x}kMi+fIPrLW?3vm!#Pu& zlkmLUzsU^chA5h($WT5a1-Ti@wZc1UWGJHg!BFhiRb(im!WhckBqU=fl#DYJh9YDr zZc!s=C{Ol-q11a0#F~(+hM#!nK&;%NV<)4mEJbeO+!mP0bAnx0X7{x)lc%M3)qM`c z(Ucu6Y!GuG?@Efad#nhey|<8e6};plRgn~Ui7ApQFB$b4ctZu!Z7A>(Q>694OSVxh zgO60=WKHg*SPsG7W3^FIiO7cK{ti%Z@EKcGjVOC*1 zjKtLxI3syd=s#2#$?n!m#5s^gfsn9i5$l%BNA~y6!A&_FI>K^t|0J`K6QXE{A{%+a zaU5J*tA%$2dsDv#WM=K0WhJT}Y{Y(DMK&@fjE!7CLNYc&$v7KfC_*;k7BzA<@^oc3 zVz)};zON1%H089ullz*C6NU~N)Va68w>dN!4~f5&y?ZS(>7t%bWTN8$Bh4H|3Si$A z7{CpJEyc?Ku94nV_q`Ujp6qUUgCGEROM0};Ferdg2&?`Nc~?OI9#<7ffdH5ysS<#f zR7FxC0H#RmfdIU#S_(g>KadE(Tg<>Bvs6z!RNchHk3*&M(`iKlAbUIGcB)F-(?m=F zCcK8sRp_o?nF8%3E&{MAq*jYx9JPB0Km~=@g8+E>8cbPADHeoEC zzi>(Gg856dleBpYjyTZ5&fUWoEM9Wt{Dp^_iG)86I(Eq+i|L1kleB}5IAVdBX5rEW z3|fI!lktiqhpi?v9yCrtbXd0U3ZdBID4MX@Dqe;hSo~4%J;|1}3zI2Futsmpy?TVZ zF3a76d?Lx7Z(iBKvQ{0cTb-&K5Q7^ zIuei#15h$P48Txy!vJ>Q82J#uv+)c8O!OS{(%OoH3=>^C1_BDLt(FUGG6sK57*;5c z^H0c|v;3pblJ61>#Z|Wf&83!^zB{CMmCvd3A$+pd>>&IJX>eu;hAQom8&$&jq*QF% zE(27oGUN0p^7fTLxU*d9N9_{j6%?@hwunuZ#l#O># zl#F*!48_nv1&HZuX`bG>`vEokH4A@j*uhM@*oCKLyzmS~QTVo=p)eKO3r5~Mzu@hi z>6N~1Tw#EIFV;KHT#`>@3*G6Ao^NVTBoirpmUc=~&vf^+=&KT$Qlgm7Wm}v?u6{%A zRAw&QZ^xp(rZ`KRoXjK&g~@ZKY5S%0LbA1x?r1G^Cz8n9PNGeoGY8GWnm%B@Y&d&P zbZ7ff)%gwh7^)um;Gmo$=(k8pwFo-I!|o#qT0W%?afQn;_!=;_q2WC#kl4gyDpr;9 zj@svUp|d(xDyrRz0_vp6_?SAPPjK-+Bf+EAzfk%!;DZfWt;R9*a;xL=#GvEl_92$c z`?FB64&{Q4MGS0=!=;}E8${{*Q!sh1XQ%$ObGxuxOQHFu*3*tpu+lae@lNslGd9D#xcdpAj=!raz28tq;Ml$AJgsd#zR6XT@E)9vYGUvGJIch9V@ zT&k4O5vrYuvCC1o!Mme{W{7etO3fSG4a}edT$H+Hs)S1(|F)Iw21=n)`RUThEa0%- z3NEt_Qw>HMrK~WiAWLm`Djr2Y9~n788#w7=*awNnXB7TGi2gjg&sb~yB(e)v2gD6) zPkP1MZHVU z77JRjGf~u1dNP;CE&Qcx7@sKs<#oNK;lNBGH%;r%i|m)&Dq6jf(Tch5=8V2d&#-;e zdZB>qr)h}y(j8eng`YLntP&Y*RU)5Gv}N>Z+T24Hw201j;EOA`uD6AXaYg$mrv7Hr&Gnw*)#Xt zYf8hi$vbLYdRLpCZ%yTjt%-bxhKiasd0KdT6=W z)2$a;7T^f!B|uHfxZ>>}78hYG9qgyc%qAvJnI=E%PQ%P)@|5LM8X>}DF2Wjr5gc(^ z);I$Dr}daaS0b6uwUSXf*-X1fMwq3aS1-bObyk;t|8Y5iu0n zg2JEc5k4e*$9o;lVTMDOA*o*wg3(!Uj~D%AmtkZmWELF;COT@td`g= zY_-ILBsg2nN6Gkt0fwSjFhEhJOU%dv+gB?Gw&gSGJEh!08%(P?TjUT=bWJ%$x2JFz z7mP1U;Bhs-CAj5R1-o|DWk3g5OHBQu^sWI^bsNqZhaX5vwEb>Cg{j2Te?{I^#M47w zSL0=dLOgAXq#93;R~1Pio;F329k^OExS779cs35#nuaAwUfAF z>(7T8L%7;Kv2_K7*CV#x!ncF3^j%oFAhv(^82c-6#MOB+B^Fno0OS`}^B}^Cskihk zq$i$snLm%GpBK8Zka*g=KHzigNDphDpr&DVE|*QEX(T(5$>lNIx__f|%Q{I!oB=A& zt&|ha4cVVgI22#tK22n~xYFwMC|aUv+ds)%#566HP8OFT6;?T5c?7L@ShkG1vgOmT(jvcH zQeJFt5xT(hg~C>jPknuVkV1$0E7a4{LWXQS98NTB4E@{nSMhWfEsV$AK#E{Ij*@X6 z$53=UP7pP6F8ABYT+a4&3X>Fk1BFQHF|irz)~uf?8f7h{=}zfgb=jH~rd~U!kyp{z zv^DD~so1t@1chk|0sQ00+mGhVwqtg-`cvMT^&3@@6ljhqk}A!4S5+i+EiqMiwq}vM z&hkE&TUPO%P84l=QDk(v^8rZq&LfJ zZq0I)jdw^t7PK1@9Mv+|D88g}6`H$~b_(mHwnf=^Cq>D4C&f^7os{heBJZGnU%7)C zKqFR&CKP(fg`O~72x+4mbsQ_?D>_u^HzCfONtR=;7j{`=fWNP$OKp+fHGpb$!x@L1 zFDcP(mjM-~G7fnN^7iYXD{ON)T2&;44%!q+wS(4GMN;UXO_A2aIOJ;8Quqzt45V?$ z0yD74EY%Z_gb+qg(Bq6l9vCW>pH7|30_ON-S7#hRRcXahM#OXcSI256ag9S>S%ccm zK+c)t4_COyP+pHCaNQxiv+v{Md-tN)e&c&mFKrF<@qGdAXjtg!JtKZDL*qg1RKYkx zg4zvh#P3m|Sd{~pehg6UN?GzY%2oG}@D8Z%e|g03*Fs?fEX^;dDkuPKa7y+?{*BYu>OlPQLxBU6H?krS#n|Az_H5n(4)E;TQi8Bu;fGGq4Ca6|V!8F4>_$X6Nj1sx3mL^3$o4SpcV! zU7fKxRb^b9suZi8#KozOuR-k|P8F_jkDB>xm#uMb@Tm|k|Ig5>Z$@GErX`sRDgH~Ea?`3Sgm4})$`K3KI2za@T>PFB}U1w{*1h<;8&ljilo4= zOp#Ri)z~-Gh7D9sMK(oR5BzGPYAO7SPwcuVhzeyhUv!E`BvXRy&D{UmX%^4B=|`@T+izdkp2R^~0~Eo|jKrrBQBQekG+2 z=2v1u&$N}x);PaQ_!P<*LgG?^vJwst&a3RH3ku&?-lvCasbc z>S>xPv`RE=&?@_N6=~IOVYKQJQUs$_l#J6Vh9aa@Zc!trRqy@})2c6c#+%Y993(_1 z;YG)&M%#IcWXg44;8EXGY&x~@sP9Pc`iw_a!J{6Klo%zCx)*s@!K0p06-j|dnIft3 zsNboIq%coqinJbh)ZbN0;TL=kBp&r1Gq51WqOb><*MUkO>`)&MkNR1tRDL>jG7I2Q zva2(GN>v#bkJ|oC#Zd#lG6mX6Ts&%PNF7Y7{X}%s?%`443ilYwJ8|$R{!vf&GCfyk z%%-SjqsV>~%GEnt>}k7@XhEKsav2wo{%;T*$Nvm*niqwgi^S=Ar(JT@%@yA9KTe#M z2!)M=I5`S6iIc2QPg_(WPNHFhIN7hONSyWvBTg$x5sWxdGESTrijX+DMU9*|y;qqy z*^#2c-latzFC?Au9sZps+QB}Bjv~$A&~Dn^Ztr9Fo=4i?@ zOYbW8*7@iwx3=uKLOzvr7h3vOxr%Ik%b)4loIfueMPq+%OAdkix6}%=M}wDKHpQBvl6UBUOp^BTz&F+NY+SR_<57^Q$iDcP_-0(VP9Zm>iJkt z{HG}0#|$hoOI7I%J<+eT((e3Fsr+>6WEQ|+WQS**M^$Ni8hQ89Xde$BZa2f|3GoD% zzph_v;S$t*u-3aw`NnS2C(Z^hv)w8`(qNfb*kONEBy9>l#}p~N0*0bL7Dd`rRU|*l z>VIox0>q|%JJjIkFAkPY3))4stjg-Isck#E+A1`}dYrE1J-%rX5%hL$tmRtf?HE!o6@XEzT#n=yO?=pr9XL(zEz3Qm)h(^xHNR7c6OK}Cjeed-VD4R_fNoZuOiA-Kkq_5ZpN75*AA2H0XDuU_@6uMR zpzlZ>mzwJSzER_f6)g>RM=bB%?5UefmPk#!cUlp*AYw;9@h=jlQ33<{=0n)nPzY5G>=iZ;X}tQPT&fu;0xHI;{;%ysNegBZczzly!TiXsd_ z5iow`$*>@(2}P6J(J5Y2*>%@!uDI*2!R;xl>*zzQrlhUTC(y0rohD^vz?&96#h1~Y z=7c7M-UIEFx)!IeklWG#k;`mQn|ie*8ppMQo?YJ3xasGj;~HsdN3{5%P`Q}n%|SU< zVI4O@25w*^r)A)?s;^;D)aVO;ckG29YdU^zo&7D3?9ay7{tRX<*61kHhc$|MKNVrg z9KYqR){WfFOX$)A>nREkHkupQRm{Muuu+c(Gc%Mun2M~%ZSdF8w}bm#_^rYU-|&`IcuK|#&rlSFZ|fNv>t`_j=ABrfSNfiprZBNG2j{&b zhHWb5R_a-d&}S0)l`R>44SMAzbc@ZJoWc)<$CZEjbg}(~Q_FKT8SkMnza5)-PmeOHxA5)|J1Q*@+d=+P;(QIjdu^aJr(!0vV^*gD; z>%jF@x53gF-Uus&`%50yO+jtbrJ~raF~G6bG8ZMQ&1j*Q+e5SRB+yntHf9@!Jnb{a ze1ch`m8!{*=L?3jWY+K8yv%!oZVpk@jmmL#2O@8TN1nk~i8l|PC3fnIRYg)5{WC>U zo$yJhili{%V~XUdK%s(-@ZsX&Jh4!-1yz~-I9>k-jK|AfvM+4(c-@(BhoicCX0gw7 z_boKt&#m|XD32j>%yt4AsJambga`d|iq2fl>`PmNXVrV&+U#Yd@6DEaR7n?vScBTu{@IbMFMwoNSBIaJK z`ouRpvXhIT?f6zlkG3jJ-|Mie(j0->D(KZ>B=VY21Xsm)hGH8WnZ=lE1TTu1?;nHm zt)jx6VGEMh8jU)vTFt$F>SZ3?3C0?z6OV7HOl{49+ux8nScq&cOZ1q|F+U7y|H}h^ zX%l}bH!QNhej!$o`v;+@!{2thAy@TRQB4U*!`sCWy-*X|0{!mzdY6(p zXW5vXxVxA_4Fx`2r7`jv+Kh=@MI|3^mzpZMs-dpq>?}Uz&AI;uKJrLDjVxNXeOFN2 zAwgQNqSTIQAB0@1H*L1$#9G(Jx?Jxnn4=<;o4gON@WrgQswlcs;Z*cUD!dBIJ=(Sz z(Q&#P(?=NHb45_)y_TR0)sl%Ub-$QFN+gRpn(IwxDIU@@-90Tnk-4iMU5x=PcZS23 z(^{SBg(;2N6 zgLs!M23WW`RKH)?X!UiZZ8lU-$@pkBLmR?q^*`bnt==E)w5_M87u3e9528nw^mMxd zhp30E?^0|VO-A*@)ptnmDz94a!_}-3LI$jf{+emrZpgVUIF?7H0@)lspqr{?&{|fW z@d&+~1*e1INeA4Z^=}n*qcUFj3i3voRR^vAqAHTYptUKI>Y()}sv;>2TALz8K4?Ae zPXTNo!0LVbySfcpH$eK}U9$>XsJVIrI!fO%JLAmeK#((N{cC2?DhhNm3mCMn;4tJt z>#gNMYftA>Va$58^MK$a_gTN@vXvAVJ5tp&V!cPG+4u!pP6c^JtSeMaJw~h_hXGa? zv6iK_dpl1X_#pBTYZ8x-SnFg?^rtmq-C%Xuo-u1z56NTaA5kvVjae^}#;jS8fNhy7 zL)QG6T$`aMi#AK+LnzT_FSNmxQM5sE^t#Tm8?Vq#pN5y=svw4oMyWV-Q@zee z&B@5M`jMI#2O%$tu(-}3|$iRm^zN>#D;@tesWg=Hm z$T|{+-$$-6y&lS( zvF8zRI?}YK@pt;wJpfRp1_W~)`c8lYtHPGdVMtdgxJRPWc`b_#L(ZsW7}E11(RjSC zR2qg9<1&{e2H3Yb40%AX2Xz_j1NOH6vHs2EM}AO#z}bR3apgUMMabwXs#J+ zAJVxj>Z6R|aqP1_m;J*7fX+Ox$rhUVuwzxhS?*_ick97})_IlQWIT(qmWQTOGy0?# zHqY=*+%3Jy- zOs6OrNz0RY%OdJc)KqyyAy>*LF)TU}?U|51si>dwCaGMqR7__IE$#VS zwuoJ&edQ5H(X?)%@4`Ml%~BqbD;2v-MLa_uXJL7Chn~fv7R=l9;g1wnuwbWeS2zCH zD4)v}A+6q?UenjvP~M2Yy%n!qiJu$HKTG)x{u*1%C0pAP$(8hLq0d;leDI+1rtQc9 zyJ&RRFYC%<3#gWCsjGDj7Grevtt*eC8EM%#Z#ZKhd;!96cZ8ZZQ?|CJGbju^(;UdX4z`+D4aHMl zXg!0=n^3zzjb}SxIGJ=;y4ZL4_{qkeNW9S4oyxlhm3ND7y_;p#3M+24cBuAYO{w19 zyz_2*;Cq1kut)ZyNA{*iMi&!pu*X!fv+uA`or`+Q;|o36Vq#5eCl(oHXrWPGc~~Zw z?dUTOLi%;a{`BYp^yv17j_1ey8C*KSxD83O2{SC*>8uwM83cijX-CUV9WQ|QcX%WmECgpIJmipZkE_kPdY_{FfWWB$XzE2<&h*4 z|D}ohapt9WqwchsE;pj@G1eflG4BANxpet%0++|>-u2lbgN*kHU6aJUtLQSQ9hd*; zggOY(pT8vZI9+y6o#jSnnt4!Os5eS%PcZupM3#rA3thQX-#W9?(~xoJgmSv}$+uRt zG4uefEm$OuW<{==?apJSPAXG2Elg&mG)t5YN5boW}opfMFnH&=BAh8 zGM>=cgf=6z>RMbT5c(IPtqDDG9WL7u>irQe6A3lkj!PqCd@@5)DA}2>p)Gd_u2|p(9x>J?arFqC=) z)*<|g5bF^3qWHgFcUPEa1N}%fr z4aorAMCf!vHxv4R(Dw-~$pPKQ?iGM;Cv&nL#<(m|K~>E53Sojx9y?dWn4-TOA7 zy*J0@>CJFCgzgj@oA=!a8)zC>vIW}xMSzOoz83PMlp4wNLc+1^0y zgpQpBlqU48*+3aWZyW%WBXr%tKzTy?=YdLu{(czH8bYTX0dyjvL5qP-A@tOjflebd zox)=l*xp3wOuE-!k4A~B@n|a}@Msp(2y$xH?_vbN%INlMU!n5;F^7_WmC%wr&^d%2 zC<2{N=)n@ug@kTf1#~f?*{gvrBQ$jl&^HLZN9bFGjyw_Q+l1~XbRD5soydJfQ^2>pf7p9$S|F3?{ItvV0r?}TQZ5A;t$|0VPxq5CcX`h?Kg zUkCb>&=)QQ8ge4gxIUoagnmV66rqbR0@{esmo5exM`+?DK${SHpU~!nZod?0OG0~J z2E-`aSfX)^vTgAVAV%5#j~E=IY~Li_#wgnZgcxPJ50uH+hH~j|tDwZyw2BDm4_FT0 z7U@rate?d;!F1wo6Wdd1dx@`Vgzml;X!Z|q8B3QP>E3ceZ~g?AAJb(Qx;OGppecm@ zayQU9596|&F4O4VErg~s^a#*QLgOC;+LO=)g!Un{>El43BXl95IfS$)fDR<|{4aqH zCN$|8phF2=P3Q}Re)Bxg;e;N30ca7SsV@R8CUi5QqX;#>1avH+?-4qV&}lCNwGvwL z3Q!xN$*%(GggzqFN$82+0Iei+)oVamLM^`qI-bx*zXK`~`s?dJs|juP2G9wF`Uss& zXp1+2P9=0Pp)&}j{|Iz8q5a+h>Ls-C+dySPuM;|t(2air`Z}Q#-vPRa(870tE+sVS z&p=lY`hd_k2|e@|psNX;^B&N(gjW0&=mtW&zYp{sLL;!++qi|$i-dka=;prz{gBYw z4}gA5=*WKn-AU-TgnmlsXa5AchtPlj4Rjx&Ngo3}K`B(xo&;hO_ZBs617phiMh zYz?$Cq3yN-Y9jO=p{a!K+ZL#W&_&w;%^-B82DAsE%O(NsP3V!GfMyYzy))2kLbnn+ zfY8icfaVgqj?g?pYbFEDC-j9Tpap~;BXk6zLooSZ97(7VgUH5GLe~&FhR`aETN=v< z&Bx%S@nu4f5K0glfniu9Md(`?T{Sug-GU)k!yvQ(BcDbWp(hA+6IzH7PoqF+5(fE= zRfIku)I(@FMq7=O2z>`buEttI4`VpoIGxZ=bAiqx)Os+`IzpEp0`xUP&&>lmm(cjn z16@Gqu=zlJgwFl~&?SWKJq+k_LZ2)Ex{}b|3xTd8wDt&~YX}WK66ktDB|bT^^wu|W3{y6Hr1G=ovzt2GH|_-X`=Sp^c6QdWFyytASo4bTOgV38mHm z(Qu`~4#;_n?#(#~_t<1&fBQp9Tup!2ReO}^Ol<~)iB1BsPZSRX!jRyfsq8mW+5bvt zYJ8xgwm zYe3@&os5}KV-rFLo&&Twq2cEOZAs`6Lfa5J=RBb834QT=AdS!#7Xa-@=tV-i5W4c~ zKvM`ME(DrJXy-nl>4e@UG?UQxE&|$<&}kO~?L#PW3DD;V{hrVqLhG&oI*`zwR{?$W zGhFVa%fWPSo4bK>PvdepT@Iyt=M(w@d*TiHfzTJ;16o9A#fLzP30;E|5{;t>O&V+p*sS#5_+Z?sEttTK0rF5cMbyTB((Z)pp}G%9s`smbY2_K@r1VR0xA;P zsuyTAp)IZhI)Tup_X3?vXyaFbP9-$vL!dJVjoxB790Z}CZU@v$=AWkMqxfzBiJ z5}~gXdTV!}iwJ#b51>m4y-er|Lif!9`X-^h_6NF}(02%3OK67!fNmi4&Ot!mA+-GS zK(`PYv>50Igw7=NLqaDW1@z@(a9MjaE~LR&2d+CPWO z7`og?_f`;kfY5IVJxpjxH_&5*o+I=mp_a>lo+h;0&w-vL^aDaK5IW{*pqB{U`5T~D z3GMMV&~FLt{V$;36KWnl0=+k(y9m9_(v1Rom(av9K<^Q{kkH=<^^ODj2cb7M2KqOl zd$$4ln9##5K>sCl<9jck<~*Qbgzo(k&`3i6w;HH{&<}cm#u9q-450CZ?m7o( zGeYNI0yKfpAFc-4n$Y{-1=^0#e{TnxNNB5{12q!*_x(US6WaX|pe91UdlP6Xp(p0^XS)o>CgFuZXvXQP|HG~BM5z;(2<1BX#-kH= z+zzyg(C{Av^$_~r9Y7}$YX1q)T0(^ffKDfL?}I>R5jy)Jpml_feHiF#gwB5i=v+d{ zM}aONwAW)meS}6o4s;2jsZRi1PH4=NKvxp_Goh;pJ^4$ZYY1KS6wr5mh0AKXTu=8N zBXkp?o1X!?nb6v2fxb`Zi_ZbwMyUOHpxX)U`vTBU2#xtQ&|QRHBXl>R+g=2^m(W=+ z0o_mNn3sVbA~f|CphpS)m(UZ0o_-bRDMHu$2Iv_=cf1DlJfVGl3-ltP&3^~<3ZWMX zy+-KH*MVLq)be|vHwX>+0}y?h+F+lvrjM%`?1OA{guB5`e5XTT40dMBCA5g0wwoHX z%-&$D@;9ZKPPX=|Jl0+ng85}OzxzIRmSP%uY@$@mSwHgWYWE#l$;0kq#=Wa8muVG} zZZ6%lQ;&8h!=MaJNtQPiGR6Xte36z7Y$0c2{({vxSTT{zm1rSEpMgMeP3mpu?sV&gwg|uRM;;dADK~y^!c&s}!1y5+hPbNwQ9luR3;4~DTgS{G(uU77i@1-~$#Qj=f3F6>)VJG(BgKME( zl}ix$q|tw2eZgC*5NpviHNq=rsatutxt3^fc^D0$U{S~Xh4YS}wH>tL>aYf9h1b>? znKmb`KOrk;rLKepX+}6Sn7ToF%Eg{~*4%QsXPRwMJ}|X$BkSA8cvVa0VB4SvXr~Qr2g3I2XAW`YE*4M4;}D zO2y*77?Vs5chM(>rX%U8*{dfkf!EhG?^aPmFW0W2Uq`N?J}fM^NQWk9NH1?>n;2W` zzfn4y%#>2t@sR6)sg)a2wDZHu?D)D6C+c#;-xT#GbJv!6 zIBYe6(FXd^8NO{tU-v3@YKP{uOd{J+!q^BMq>CL2Oi*kZI*~JQX7#EM3w+`eREAUR z+6rxMWONnPQGrjP*UZgj3uz3{Xo(a%A(%!FfZ1LNjXr(GZeSDGDwZm*ci=0jd2G$W zpbed-w>nqKq%^d6Y+BKX$s$H+Xge7Oa@sXKTFkYT+BI{4iDg)jhHvU8hENd= ze~z&tHg{Kqyu;DB8bd7hG^6^lcAok^oowA6(Lv3#74>Y1I9uh(mUXgqoNT!!Tc636 zQnIy^Y_TL;C&?B@vh|N_!6RGY$QClPm5XetB3qlt79+CNhithaTVKc)6tWeBZ0QYK zYr~e*uz5B%vBqY2*rW}cA7B##Y_y*Z^s_N)HZ)6PvATif8Z_qhFa8e}bkJWP@qe(; zgZ{!g4*KUq{two2;IC2%`*YG=Y;+U5hq^n{*)=V+^{~a4;!>-OUu%1`uKxs ze;nI^cwS#yd1NZXcW)V!VIAeM2j^C2Gr2^Ho-j8mmN(7i(;f6N%vSamY|l#5My1iT zMXME?6chB%w=_ zFlWUZ>{ zx&OBdX*%^j92B$wO`%eiY(={yvF9>@ukg{5XGQN?p)fhjW9vZs!%u)MpAWVYha-AK)9-q(6lRifM!av}4;5f;663>3PlwFyHt98N~Z9xjn z2QE6~$k~ZKFmGw%3?mU%KHaHyw=#G>q=!WZ&*S-NP1xL=C}oNo(z16?aXoA#9DTTi zVD33z%2EeIy-Yq=>gd$4sUD(FPpwKLtFAT3hPo-ar0kwmrEt;K?{OK@BP-LtZ>6Cjmu8h?SQ0nnp(3-*26!df{jI>KfSNkmd`iX;#Are`6U zAP-8BgXdnA)>jkpK!jr^OHBv4(NoiLvH&_?s0VEZp&8|a{r{e#A8ejW(M$``W!^4mdRLoHMT9S4;Rb#v(ODFXs%lN?cFjC(fXpgMS|U2j zg`mvrTU;V&k0$5Cb8!V8&_rJELbe)Cw8-OoGVm{!DD;Jslb2)ZMfDzVxr>zvelTJS^>u-8>0#BOvVzg|ssj((c~Rv}nY(KNTK|!LKxc z!vj3IwkYS-Y1Sc2FTtM>nm#pzZxA)3b7V*TcxuQkh>(L%4Y|@bQ+SO?CdHm1?O1=q z>~M?^m)re-Af+i8ITA}U-zS{c_&lLa4SK8N1mz-GL<~=wiTFV!X47>Ej3=$c_^^c2 z+L;Df?a<9;o1}U8na?v+M)DJmRL(0{)FilNE4A|uGS7nKyG`omP3#fK?+x^rX!Oi& z;D8~b#9T#K+(jdY@cc#I2yCm*!JFjy^Q?84M(Y$$)0%9@NxljsFby)2jnC1;SE4>}5>-)4cVyY8LE3t>4({ohrfe5$ z3(Rf{o}Sl)+$+v1NHIgZ0-8^eOi_N zuD^f%{qs7carCz9!GFe2ytDMn>fj64u?O@%7>VHw ztzWzL?Af#N)K)&8A3wRa?|@lc`}EGuTX!Gaa&Yj+G z`&N;KwuPH6B|2*};5oG&__S8-y1wf5`^Njqn~}uhaL*i4=YI8)lth7FuhZT7wjchK z3Cmr9Mj0IaV<9GdfNLzsr^aPRx=>7Avv};71~<+O$BWK6Tv4lT0809Tz&ixl$MgOD z`7`9bOXKliaC)%6&YwCdzp_AM9@sbgVt=jw8Y>jIH3Hhc8!PMvN7%99=icb1-#j@S zR)8E1(~kj1W}Kd+<_@^w&{r!_Raz77EAZm+DQ+iiUA%P5t3oR|8{*Tr zi<9}0FOAxBT9{!d2*7!kV+#l60ZN<+SVANM22N&2i*S4`E}cA+Y#y@_#6AFGn<}Fy z@~%^&ZQOXU>7?M~n0*5~P2R>Vcd+*d2N7Fyoi`s$ze?})U=AjA>_v{;$1_n!P(IGH zfMI^iL$qKk1qe3l#9iWuDe`*yXea&Yrku;r*xygr2e*Ir{s-w7v~2ttPtsQc!7sTf zn>7lvL^9NwOiza=@!NB`BGNA#htF3B@}#T|?uFfPb+Czu0I!@bPV#hggL3}TVz+ne z&yq(n#vKg?&9sG-V2tcgAG1~XGgoaldDD`LdUC@R_Z}Cl+}Mri{SOo z_28CjC>qJJug9Iy4KzN_l98AC=$q;WxcZfCxKDE*9hDiZ+vuf#rz{2vf&2h`=swk&qUxib|O9;Y60+d(SCXW;%h3KLF}yC z4ypAUYZpcg<98o-d*F8f*uA#yinh)ceu}2>=;`kBwUeW@*d8HaJ%@63#`fYy-x$yK zkPlM_`8dPYb+S!v#LNcc!n~T8r8GU?XY1C^rCOuT$eq5+Etbc2SF2xV$w|#X5W%0F zJYC=RC63d;kbEA`vGic22;P%^V`xFNtR^VsK(s(^$TZCuXTy1A%X)WbNK0HAtU{

    #k8v3RM9*TXQ%6b)}ILi737{xa0`U6GE^dE*`Z0=L@S9Gv!e19_};z|LZ!zhjva34mo zRY2mg6(xd)AfB}d5_s9@;AzOkl@4CPD2{aSXN+R21Jl&+X?vn!hP4C~R5savGo;}v z`*SdgqwF7yQEao{sDk;i5YAcw<5$7FiQ&O=$jy~3R$~-LvKYZAwz5c02)+cuuyRNZ z3SB*P8YDk{oz7e~<71EsoY;!4p{v^(sw2G(La{+hjiwY->#b-!V&(^E?u9g%h%xu2 zzl%`_A;-Cxp9KFAMsZ}y7cdIJ#dw`QY0B3j46CnpFy&@@q45SIF=N2An@!4<+e0ii zYAIK0SlQTeU&w=r8Dq=0VH85jj4hABD2{A-3PvHg7*&?EWiNzb1=bF>JPR^mBxVel zehX0f@?r?ahArhw9V{DTUIU3RQDcnxNsK~>nK9-UF^VH&eiNe*T#PzP8uL*I!z!#D zjQJd7!br>*u=sshWzE+h92>ZlHREvEm~+bBt&TJpb8d@K2thOE+ykRHGUxsnh2Ub; zTGE_{K^RtJ?O@K6ArotJM)%B>FLMxyjakZ<5mGjm9EL2Icrli|5Tg(>W-NIbMsZ}x z8!!sNg|g&lAPg(7cCh6AkO?C(W5Co*2Ia{|AQT(4lqVHbHl}m(0WC5i((#V`ISdX?bd}v;u;$ zVM`5`bg*p3OI1jOi5k;TUVu>uF*C;eFh+4?%F=N0~S#jmegCP_fw3IUyR5qqO9@1bU#+Y(BMj?dEm~u5nab(I7 zj6!fRYAk8WOCSuZuXZry#~>3%V#a`}x#h}~w?Qa2XlYZrs9yPR?I9W)x0Ekq zXxa3a`$8tJtob&KLdco1<}nzB&;ZlSoPtpZE=Hv#t=S7OAJ)}Vs< z#So2+TiTkADwsFXYhDAH5OG^~MYo`Wxw$Occvdjqp;2|wv4(Zb)j_7}nC~r$7dfe8 zezypDy^i_);#I7Ud9pNRSj~K=Moi*0&BJncq7v_{pw!YjYnq=DFOn&1n#Vs`A>NA0 z=7|sc3TLK294PlK_l5^^m65R4`8e%eb&~%H^{YEEtbyJkBU7(|{_SAnSPk^E5=lUt)bB))48Pkes-J#gV!uXwQ73&LSxG(dTjMc^-*y>(Ydj9| z+r8rT*Zl62Fs{VT5{AsbM zwOjr5tpumWHHbljwpEN)<8E22zaDlHqW*e4HWu~Q_ZG)ne17_b3B{T6m0y3|f7N3B z_2__FtiQgm-ygAM*HM-8pkteSTx~2TgLuot2@^!j_ggb5NZ4pGlWOb1ad1V}504dD zug9WR$>-;JYvRR#XL)lD^^Po;OLB#4(X}5rQp;C^*GH9ydrE#ma`A;;f?T{kcCZ%w zYH^_&zFd+U3O+opJSg{evR_6%_-tumAYZNJ2EyNj7mCF1)}*S;FIc!(4t^F^D&>m& zK}{%+<$pJf zVw-=x*nkqiYzSs8039qF1so2ExKhAz7{!qS-i=Xg6%c=>U1^{Q;jA?fhs#CqwH^oQEamxJrk;uzb8bpPJV=xP4530vT&9AqcMu3+%Lr_ zwz*F}+|~nO*u|DvVIXpag_DTF^X;0^#_}j>2HK!Z0=L@Xmqe_ zeE;u|h${tr1EV-n!1pnVtpXB{&nOZ66yjNnAc2>S4qk;^T8(|$GMnGMf?(@I5OoQF$%%Oc%LR|%E?`5*umJeZgI5OrB zFbcuNsI#OopMfx}!rH-@e}GIFi5UYHzb~t-xygPm1{x`A#^JIt=MInx6FJ75dt($r z(2O|`#3+u;c_c<5xEQsTH0KEr=5NWIeUJ$wF=N1@d*;fQ6^O*fEal4xDH}_^AF^QL z#aMC-qYyG?EctPa;>ePp#V7<9qr#Gw{2GK|<<$=TVI0`skyd)%UcO6uQni`1Z!`VSqWm@BD2-!cl*4E!FW*jgt!*=(Z&&;Y>N zHm)X{#Z_#+J+>XBz<7np$DSC4$VZ%u`S#cW7{yVud^koSxEPz|*1bt z4`jkf%os3zTAms#4M8wAY^lML4wlV$=^{vki5g?f%P|TeX2zH|ViZTlyaS^UT#PzP z8uK0q!zwH_R$33n{61vDNX!_p#8gS;&7VR%HgYL%Ch)Sc=c|wl6FbJ96Xv1;hN~+K zTVfPP_S^-dxU%Oy5QY_5JJ|D3$b^xY(VnWjxpL-W2*n01D-eneTH2Ih1*frW zO!+XR!9OAJ)}WI5MRe!u*_pxCC zb#-j10_txS6`q_FQ2&mIbiIK3W8zh;fO=4fGOU}vb>g_=<MtA~d=!^}9@m&(>3Y{^b;M0T@6UtUy>9ho;TJmgKoPsSAPCI_)&!-PsUjp6>| z6%l`v2wb%%UVl?JRaj2*kJpM?w0jo=Z%vIwO)DZk=g8sOY)@1y9?n<2{+y7WkX*G^ z8SbqOSMpwW_p)W8^lzoGs=v0pyW7ubNB{KE-SB2wqP;|-`!An$!Pt3Y9sQF=w=(Tr z?0lMrsqLvFv8To{kdnDfFqYWEJ&il6gtWGd1qp6eyn9Q()Nj}jN0GKDNxo1VWxXW% z(ejmFlH7mQVoCCP>cs)ISd#oLJ;Q}k-->};Z>78Du!o9^qVeqT@jm-rLHf+DCkr( zKw(asFUKh8R5L({MQ)QQq~;>J_3u?E{~v_cCD>F2RfnanZ}c-3?`Dec5o*fmM<+Uw z;)(Uz)%CD6?l{7}IVg2KXxP8LXHe=|*|0buV$8nwD8FjW4}nDRDYxMJNz%uawjT;=~g z7{yWkOBlsA|N0~2N&xSLVAcZA!Lm`nhaeGG3b+oVI8wl;Fp8}L;!h?k4SX5GS!*B; zmyHU(2dTJH!H+SDBNe=eQEXKZJqN1<@CS%wEr19qo7_)*YZhaG9WaWc-0zK1Y;&)k zw^YeL5JFieUqNM){kKCJuAKi)jN&N!eHg_y`_YqqD)|+NWS#s7DVyBCAF^m`D?P~2b4!!Mq#dFUW-v|v%j&pBdJ~Vy%nOc ziBEO@Q-f8LC0I78zXuW_Qort-KEZ4_^PQXVoDH{A`S-{SwsEjkv-xpE4;_{hx@)!qD^#Jr&WXL|?C_U10{9LNoI49@ljyAGJu-95E_ zV}40=TLqIK1pI*FM@o`*eF^c5cq=u1|qp(O0gm$W>N# zd%Ys{{!GaFOjhZeP2^S@zjG7(iYIKPO-q^*>_3c6YC6$HiOpe(ipPt63px_h&(h@j zanpx0J;^XUt}WxtwHaZIKW&`#Qg&&O0S+?JD8J(I) zm#}jsU#$uw%X!uElTv7hiN;&z+lA8VM8jm3d$n?8})6vivGn#A+1ww*Zw+WzsOZ7gCH z9$2hld%^y&XxnThMDm|L6G&PYiQL2}lI~>(L@5%D!0=o?58& zi#Otr=ro1Z#1!(J_*Xlt?DJ7xk1gM!B|_3@G=6NKHAfm znJ}vxZmJEOG_RQ^YpAf03WD_<)8;al9YW zi6kcHpJdp7^5?~C#8Y5vi`R<3m&(3xVf`@x<;3ENGLHWMlk-3CL@%iu0WK%!-{B{e znwgF{V-c1Ec|O&l>Y$o}9nQ!DwjC zWS`;kCX9j__<)Ns``Uzgm3|LmS*KsaYT+(j6Zt<7@^F>^BQXl<;G5ub0!FdTzdm1H z3E({t%vu0CST+i%Kq9Uba6U$Hq<{}$6k7$vXUi)MTnFK-H4ul(Mg^aRR9vaxYZ%3m z3ciO?Y*i3VnO6e%F+{Q!K!lV{?tcSWxXS(iVH8KXpLz%!Y1rmo&6roo-vL5dCtpEj zll|F{hO6w)!zhlj|8|UGoBe3Yyh{E%A(D0SBcyC{UxX}N<^F7p;wbm;$0)YBPfpGs zgD`C3Q>W!EPtI>*oO~;!;4151!YGci{w<7Rn{|D@yfXb`5RA=z>Jpv~mW}V9heTW{ z;P)8CkpecFKQ29fVzRsv!E}gcErJAIHagf7a&e`D12Bps9UP8PY+C{~V_r$%I0$7e z0R`21_L<4~J&*=-RW6QVo}53_G759;Zw*GV&3%Qp|OwKpoxf##N`Mbhf+|#f zL%fR3&o|!C4yWk98FGrx(hqNti76_F1XuUhIZOW(<1Bq|rI@uIpPgGOuPXHB#Drd1 z-!dns@_L0;gXM~x#~aP=4T@hzll;eN?@G?!hjP|^8O~uoSVpE^AornQV=*gD&5?>t z&JP?E`%HoV)D~P$*jM233HxIDZ!o2PW`Dj^D$iWrnLoQwtyTS*``)4RJ>%s4y{OIV zO@f-p|EgqAZzXnLC#u$p{JtsXa#H_q#TM(DW+i841?iEK`hT_VO~Oh2+EyyAT2l8V zCiVNF)hC^=dtUz*hsH;s+HCTFip}c}_8qp!)3vGn{#ROPw@vIbepf!JX#aT$v4uae zGBz19d2Ef_?SwPr?0#bq4YT{JXNl^><+D@+AZ9A&2OZ4rZ(_$=u^?ah zlN0?{txZl08j{v4_Rg9BZmZCSh3zZBJk*Q5fwVBum(d10j@Mla$A!IQ5`#r&ydVU@+@sV_!q`KtU$ z>YJm=!(v*s`Kw`3VqOe^j9(r*STlaUSoGq?FP7wnlAo(Oqn(|dqKNTv<-zm;o-F3l z4z5aWD&H?#S{TSzYvQRx^S9zB#xKIvrc$vuA=kS)x5~Vcw%&#~(lF5Lr{41hU5Mnj zp)NKEV?%=>+Nw^!anc(MS)jd?tE}#8%}W=j950D<7_zhZDuHIe7azge`Q6xdigsi zLxI#i#?5OZ^#)G%eyx-M`?cRuQxE-2IxK!+JTZDeL$?6M7&6mRCfh(LeIS7bP^qZ7 zd|IlBz|Dkg;O*HaP!4Jt#hjk7UDQOq079|pNzI&64`#J6V~IgDbPfBgX_ zC4l=Nn6&_Ouxu3YI3(gq0Z(HTM+$faqu44S{`iv8z@H(UwFcsF*{ERa!{NY&h+KS< zmbo8zGe&Wwf;kw4;9~3tqGy5~f#Wwfq5hj)V z5eQ|SdqaFzX!VH8K%zYU|kx)beCo8k<)@{ZIOp5!h%Ea0?J;99o&RbY;~X> zVNw#f6GB-_KtW}b{cl1VuCo6qMsbw=pJ5c+>~F45z0|J${u;trD_~bR_0z#U4(2lI z#3Qp99&CkC9LZu=jAAQ`P2_YhO%D4)7*-CcLE*IU4wpo0y-kQ;p)oHxe;8!K+@~>K zJ5jeaR4cj!La{+hjiwZo>xh{jJj_8FOvD&dmN5z;eh*FbcuNsI#Oohan8Buy!!!TF8Wvm@#1S`?AWKS3x*7a4BoX;j%I3 z?T`u+ImVoKV-!Nrj5!~~D2~ke1V$ma7`2u(=d%!o)mS^2^9{&^k(e=H(LHnJ%SlJM z7-^(@86jn3$sHjJCSHssXJQmW#*8Ho!YGa`xd5XOT#O1!TJl5)^S5NlJY>R1%os2= zlRSILF-v(eLdwRHuR|70yckPvybz5kT-`I<8lyO}yttCwl zv&?}|ti)2bTu%?P90A!dQj53C=36nxyG7Yp6kG|b3iz*81F+mJlBmmQs?fOFF^ai3 z=Sa&aOfzr^MzOU{ad-N2dHBMj^NuHJ0otuYoYEzS_Z*pMgvmi5UYnO)EpJ`SPm}jg4E%moc<#toaCJ z!o-cS=2IAjkTYY=mobVXYyJtN5L}E(OImZv+tCn%l~_Aib7#nek(e=H)3l<#nl)!Z zG&XK&YwBp(SaUvP!o)3Z8uMlOMJ=N+4Z!Ib#nv?HkrH)@VHJe37J!0kJ^M_=&Ve*s zonoxTD2|%Ut1yaf_O(YBRQhj$Sk~#+u(HYj-H?Z?{6C0M9OeHBjAEOAeTuviz_Sp{ zS^zp&HVSwH5^<$~Nynmb2Gh$ht=Tph#a03Fnb=ALyF)l@4aDKHQNclwiYpZ?z$lK| zffF%`tqP)fze)frAdVk=@DOt=YX%3{|D(eSh6h~P<7Ngi^U7wDlOn)i_V{@On=%a&W+Ps38OeN<((LX;9}HR(vpD+r+#i+HUIj1Z^0}WPV z?O@KGArnSo#(+il%#|-^K_oV2DPKlN*;sNuWWmIXvE(9*Ldcl0nv#+nmPM1u=g4=ikjQ5;!w zSB&Dyn)^Z+R$}d7&BGuQMq*}b>V>$JHJ3m%Hg0Ka>S)PXqk>hCiYpZiV-!a!xDcb*svw$FtORfwM6wn@gp^J0 zZ-Fda<^Bs8#Zm6>$0)YBSCdy&@*jav*2z~;*<}A&NW)e3e}_>VW&f`j#WwrVG)a~G zElx&b4eR7bNZI6mcgVt3?z=FGqukHOD7Lvz&i7gbVc5i{F3Y%@@5P++t$-9@&3)?9k`9)Q@2`hMTq)pojN(WEcViS=1teyaC=ome@vKFV zz{^GlPeLxPbnp^JaioJcFp8}XOm}4`EghH6UqNM){T(3ib8dJ zNN1_X^cW}F={Mn%2yx^ ztFLx2<;JI=@dhI?W5BeVP0E#9Lo7CGDOYM(+1PR~$b*R)W6QZ1g^)61%Ofy~BU>Ji zQ3x(Zl_hPt9Kx^yYX@7N0huroGX_k*1*m-aFA$6kTgsO@ST@GI0uo`O#u)P^j6#T+ zG3K2Z#gQ@Z#V7<9qt24X{4RuH71j>M{264zNX!_p_*uxN&f^5k0~5*xFWCnKb6EV&4>VB*DC@^p+s$e6L@DvaXDlEWB<;9^vmskqpM z5Q>#p%9iV?xY$*Y4I{O<2+YOBZgGnOii>^0EmDKxV)r{nF+XVZNXsZpGw>8fv9(Te zvf0ZJ#@aTnCY!}oY<|4#uaE-c6(%2BoYv~-BF@Epdu(Tn;;31kg;A`vwRB`CKc@Bi z5XM?t>*1dDBFKc1n6V$zr{$@zoesg+u%!k|I#@R2r2$BUi5g?fb1(`aX2zInF^VH& zUWHKzE=HXtPhoC>Fs#B-W2NZ=`0c_n1RNX!^8HMd-u@@5Fd z1}$yMjEjri1!*u5V@&w~Mj?dE^puZd6i23f8lwZ=`0x$(Q;(1J*d zF<`NBU&@zTLo_ySDPP9Wvgt4Pf=palb1p_9DO^#8_*Zl8n8HKUt zy%@#bnw7kMUG}>W##&-qmU5NVoi%~gxl{sXqq3htGK9+V{o9>4*3rL%kk?M)-!9_c zZsMOO{>|v$W4M3M;wigKn9#p%am}G&7hU{_eA%&R;&4y#`Yk6+n03LJ+{L8+$^BEr zW{vhYx>+T^vX-l?%Gbt5cU&=0?i()Ut6jbM($Gj({>)ryI9Dr_2ggPyiQg6a#zuEv zSpTqG>FgOUl=@aw@_oa-`4t1X-b#6e++u8WviNOZxp%Di%ZU>v$fLbZ98m0NkL&L^ zZn#I$ERKky&q=Z!#XH20i+74Yd7XIi3*wW}>HdLrY6n)7%}OzM-lPe|FUk%7Dq>&! zl6*B~+2jeMn?;8^HoASI1HNRe_+`2GJ)$2s;?^;1O!E2FMuN}YQOE_gbAm*O=zm4* zDjxlg{w3iDqw|iGQLB1>yu6jegS|4oUT(0@D-0HDg&eJ9)QDi*zqo(z(Q~^_spc!yu4<`Vt97j^)cS{e zx=Q8VTuJI>&d^A$zdYDgt@Nhk(>XLUPY9w~s}u%TdF7Q}GL4<g zXhEHJw1`vw?A*XmDIZ2D_L-u+TeGx_yUHy(7Hu2@FFtbf#3;+7v%0&N?Kj)of3|nP z^3EV%mDyflwkJNVc>8(>>{HlxfAOoS^`ldA=wP?3Z+LmAqv8SbsHC%}kM7A}Yxlqo zY$^no3EumOErxs6sgN*Klf)*o*S$&cVG%=NqaeU?D`R$#2`p3V&nv^s_qw}Fxq+U( zoF^kaPldU=JLV?YT;;v_-hOrebcld$XWpR}q9utC^+$mp-KjBdD822>2d3@+l*ImV zXk`lI5edytAKktYJEigD(W`bg*_{N|4pT6tQ3_@+6|wK`?H5f~w^yioIj?&lKhTq} ztmrG(R*3GS+v_b43V#px*5>(Pka6BbZl$pvNU$!Ru$5{mN2dh)52HBAhtoD6PHYZ? zRy9Y9ceJF^Qo2nPfB8dAlq#D?aa=ZsU~c8Gh2s2+>hSqne(sieCGUX zv@n07nJ~+qE0p&%5s{DkdVtdDFUL2zA;1$dQZak$vi+l&g}wM}ue;v(chB~M;8hB% z`lIM|ccwdlx7h6`^4PYBvOHYz{D!cSADrja&MJFn<|>6;j~J!<9fABr zdA1r164d}BQ`qUF{f$`)6T9T8TF5^%qXfM@*h=K;)#lPGH&N+rETrP4;?$?OwtoK8 zUyL^>YLwG>2l6!IZgD0d@WOM8aHJmJsAF`ap%HP;HINs>@4m74Nz-%F#Zm0|ZgEQV zynMBjeDy-~>P7KtZSf`l?=StoFZ+Lg<^TP)|MxfYuRNF+>+4at}W0u#^_?*D2bDJg3J{$k2v%aUX{>jJH z#&YtAZxKfp9<6_(GrBsHGnnu|BvOy(7!zlAP1#o$DPrQp;C^*GH9yMUxP|8Ls$e?ZMk)2W!Er#f574a!GC|`0%*$ zpxoQZ{>fSJ+0w#5zFHIKQ^EW2=9c)~np6rFELC_iN2=vbvs_5&W!^};dMZu>#i?LN@j!7cBov!$5#$Ix>^#G_s@*(L zv<8i@0CW@&mseJf5PxEAN_YiouJ}T_E80oc?(#2n9j!Co)@U0)0L8`n52x0D=wA}7 zNA4v3>rLd>VchC(RMZwlgiY5?itiCS%IO!bWJ`3S_)x^^7_q5n65^MT>!(ZNY-!>= zZFF-wMnU&o0u<)r?kbFeF75^>@wi0+EgEkxY~p{fLOBBA^&t9}Df`L;xx(OB@d^>m z(JAt}rSQ_2e*rLd8PnlK-(f#v@xdRF;&>0O6A9h3sIG_whW#ghUc5#O1J)L=6@M?4 zVp>?=R2i>$q>N+z((gOPb>XlDIBh%8wS*0@Xn!~K7qPBsLw{j*sVXI=oO<*4I8{Nl zaAW2M-$O;Fy}Jw2fJOcSlz7{1eqiDOjDp(kCb&F~QBd0*pcva|tz?x-|I-jlZ?Kwb zs5Pu?^8Y&I;VSAx3{BMm>Z1b;|Mp6QJGX%31fDV?80_H*@t`u+tMsd^v z9FI|K6%en$qcpG_!dYt|4wsDz&VW>0so-BQiX#>LD@L(ZK~(QW3E*Q8$yxvrQZ~82 z6S8oX`+G5pquhTNquAzN)fG|6{}F_;PQHT5Ci}mJG+br>e=&-q>~HoSIL@%mepJCi zC4YN}WS#s7DVyBy3t70z{o62#qud{ZQEYRcd=&o_2*V~mHDk8rNAa5&Cl??ES6M#` zqd3a?#Tdml>-uBZ%Jf%2FgEw8S-(11HopHPB;rZ|U&JVm6!1-qVyl3}!@f!ck3u|a z5hU=k(ZO?&iz^+xhEW{pVB(5#>HAF&%xwjstRoxw(=>8KXFo#d#RTRu;*}s6Gf`SUIEyg|13<1j&zIsW%rJ zy8$v`uGAW@p{v^(sw4djgkpo18civv)?3kd#OiYjJU5NR<6OuN~nT)8vEVxyLFrG}M_ zExRBOSGJswQ3xqBwp@f!i2O56%;^|~;9^u+(w3_r3@fm9u;n?B2_rFM!1P;y%9m>) z7#p^fFLkhNjCnmI!bFV`^X(Xg5Hn-UyD^F*V?Kyc2rfpQC5`z6gkcrd4#s>5GGQcU z3|RcWtg_}C5RMI8%9?SwY|J?=*Xl@vG3SmLg%C7j&Y2j+kvR{-CB3<5{yE~n6c!Q7{!q#Z^kGD7s`^K zgD|YT+QE_!KqidDi~&!7h}m@j6%qm zvE&&T#Zf=`FBpa3VpN!E-IsrbP^`pKwsg7fOA|LqZh~wWsl`QLz7=z)TNJSF%e`)q z8m#;BUB@Wq8gM^q8HH&EUce}})=5q_dmX}9+s4&ov$%@Qx5qZ?&0=)1Jw_q&5$9sQ zJ+>D{anvl&#V7<9W3!wbDIEb}thKcs?pdD#nJ~?4{rDn}3!y-^U7-rOKUJscNaa(t3w_s@wbA7h)T$*EgvW#fsl{nPFrB>qDN7P7ivJ%I= zBGmPjI35tMVk>ckwJ5`dH{O&y^7uL%VSPJMLUB$|!D*fAY%Hx;zx2ZY=7}P*VZnM) z3s1d~)$7#f9-M#l_qnJhM45_M#kdoyOu z2siS>CU&egS~kNkOYO~A9{nhYruL(A#Qs(m@})kx^hs6h@w^#fi2p+!PW*tMIsZCQ z5B~af9CYkgo_Nd^AgZ)R2Jqewo}v(v{mU*M6KLBECPz-@i^qe0ZMtPh|tIFk7rM$l+OLZvU+tpJl_jC>9sdUX}9O&D_KioOhd`YNWuJYqADDvL0eq`}wdA#*CMjQhvssEaeiNCDSaHTNj zAD0yVhzQF|VtZz3lE5IF#v<9cF_(olgYw&9lOt+)*LM+c3a8Hx3 z{1V*$tJX?zs{?AW4EKJ@ZEPv-y;60cla07s8w8f)E@xPdyM8cSN$!P)lH79p4p|p? zLs{-rmFlB5l;u_x&$ThFu`GAk@4;+j=U|eMm&Q z=@Q-lEH))ebiV_mpflqDg}DHC8b(29#sNx8CAy0cULT1zRr%FniSCtt#+oS6T@Op+ zu0K(t`#{6~b>8yl4N7z?^A+dHIBqD>onHE2L*JpTmSN~SjF)Lt)d$sGjE#>|6;un? zPCw#%h$_*2E2IJIu>>g0Rn0G96x4P%!R1>R1-0D)iZT0Ibpe(B#~_y8U^UfHYgpOj z|9Qy6RsMgEQ5@xeqg7}G$8a&`Uw?{S31B(|vlf63mW=}TghZIAF)hFW7{!qS4#z0A zEkOKXX{CYVAe^-Z;&9ohpa)WMrGg=h;z$K+Fp8}TqDOO;07fB_wE!ZdY;u1iWZ^3J zcVHApxxWXa*ydh60;-b#9SCKed{|`p7&3^Q-p-TRy{b;OV zo%{$Xo80dLS-8smJ{ZMO?*AF1*ycX@)YQ=shE05GPD9I2O*L_z^e#xjRo444ileNb ziBW8`u0JuOOn(ssV{@OHm!X4Y25myTM1V(YBfPcp*whBl*j-f>G4Txtgf&^YR zI`}Wh#gz_zfl(ak;8l!bs{_-N<_U#y>HHN`Hrf9tNW)e3XJ8aZ+20SN*k->`iS9!o zoOL5GekHn_7#^Gixw(=>H%4(Ji$RQHD~ser*K;8ZD~Hse(A86wLGt6*>CAN@J_4D* z37hB|y1K2QI?{iGP;AgrqbUW|dMg@_nEAnw&qEqa#F+ciU&knfkmFp;H3%NYD2`0| z6O2M|F2_rFMz_go9%9WcJ$7O7zVP#`W5AtAQ#@MnGqYzSN zYMeD!Y>fFKNQ8+R zW6bL?3L$33n4iKZj*R(bj6!fR>MUu@Z$lVXVeQag{unZ0BxVd){JyNR=8F)H4P45a zaky;E`G1fK6FJ75Q&*!ghO0Bo9WaU`bMB2%T$%Gg2*YZu9nAT5$b^xY(VWpebLGo- zLL@e3DPKlN*;uj&SupWpEO|CYA!N+-m+!|Yjx0HbQ3x(Zg(dsTk3$$%UhQDXFF_`Z z#Ebz`GZ~a8zXhS#prt&ipt3RL4OAJ7R@kGo;&~|u`x?|GD6D6l1D=pOuQINF2yL0EZKum99eP*qYzw- z3Nw}HUIU?6iKT4mvP5?iH%TssY#6D<+hy~um>b=qfD+wzxJ7DEqWd1lDCQE~-)R|z zX$F3XQEaV~oNV?ygt4}btI1|@6`OC5{STzTc!kNwrUR{xF5+Cwx5u`_D2|%tJu!;4 zww8_z<+bV<2S6BWZLNoU)<;7ojKqxnm_98}4VIQdFg9$d!IBP^&3LIF5@Djo81qbw zLWr3$=0zCAkufjFCBU27y6oQLUV@Xq<3t?D&wSy@?0+}!p zGX_k}Emx-eHweWBEp18{mAQ>qW6WompNBMNMD_?G2Mgti(ZYf{J(6Z?-J;;QK8)MB*j6%qnvF0Hd z#gR4Nfl&x9Mx`aKc^ZUaCDsnsEI}rW#Eb!(rqzbhE}Fd;qOoyHTT@5N#+o03Oo+Ix zyP{iAncG~JZ9FS;|C6yas$bAnROB5i{!%QzB`eNex8;NhqCl-Wz*KeaokigyC)K&{ z5aF&@=l+s-6|2szm!k|TbZ=*35UcY{e4&I{u)%Q?!B-|_pUN7^(x(8 z4L06Tr8}(U?TLcf9ex#URbpIxG)pVIohmafzIR@w`+K%&l~uZpX>GB1_F!%xKc|wf zmP^B?D&0Sk$Lpj@cM?dA0DnryL{;gQ#}!uT{;_=B6ED&U3?i#^YmrK&0iNhhlsCTB-L1;HOM4tGms;?ma{u!@A23Lul`3nnp zXBBGw!c=14m2$1zTP}G$!z-ojgm(sVL!DDk&gZ?Je5rhvw^Dqx&p!17JULvCV4r=` zcKPPt0jZROwv3YsO{5RRl#lipifaqEs?tYq7F!5qOdq{@JT>sl`PaBmf#xE4+`5a3 zOWrnNLe%VRW6(<&xvdgP(sp`KVy7^C#l-?qkKn{kZCAeRYAWeJRkOh!f|H|=StG&ef3Vv_x99Een<>9L<=C=0x#F& z4?FVGvXy*E^kHY#_avGCzkf?wJBB9SRkR*Y|J`d#^R{HI zw>`AC-z1EBa&z96n;5fMd?7&YN2IoZm$cdgUQGAkCFhy|Zp% zv7d(RMKBhKM$$dJ8eLI@KSX*PD%cTdoGm|N9RdjMhAV zK|;&8(~%>F^Fq(RlJ@-Hm*&K%MOU5H0>~IxwE)|R0FE@*0?18N3(&Z&DPAhB6c*Rk zFBkR~<0k>y8MAWD-ieV=r?*s`w2INX__wk=T=9By)qJ%x95}H*SHsa;5@EvPTC5Iv zXTjNc$Sqzj5#yOsU*kp1z9^5^$>owHkc!D&bWGIc5_w$V<&rPR*Zk#@UE`4imrDkZ zUFqe${F%AZusD0G%IhCdt36e=*DJk3)f+6=yuN&INoYi#>WOil_%N{jY=6{O85Spq z;*v_fQW4GiV0lG#xVL|W9}u~NO0H1N_oatw1DV2yn$8$i$>1?s28pWxZx#uCn9zWB zejqpbZh#lN3UC1x^Dy1B#VLBtPjQq?sfKF4HhZePoFx_x%ng@n;;LC`Sez8BR6m_5 z)FcM);-tSM&hztfRM9uwYf{1a>-&g8VZ1M+1Cf19gWzcW%`a`$GDD>P`R3FjH!-T^ zU}H#fL%!|B=&jRlAo6Dn7lZ=jIihGm^2=tfoVh&h_IdXE3Nv)5)h?bn|LT<@=F9bS z^^MMm_vUmrwYLb>Uz&@q+{75&u4Ba+wXjG1!m;1;ib1=GX}m=iahC0BI-;G;Z68Ll z+09f7wv%ntIz$Mz6C1Cq7t>lWxrvIJ#TZC7fyM#FAxn=x>iBt{fBAnvine}PRIPpM zUw-tjWQYrtVNd5fR*j4fZ?F?_3#wDzwelCyg*#GVJS6?>sPSF0kyb%>4EAxw_LlJUBYx0wS=kMBU;9^ zeviKRqF6LEyfzu!rz-wh`|Px18>}koAMu8jMdj0A8&(z#u9X^tv7~;D)c?+J+B=E| zZmdK%x@Fu2Ve6m#ST#d=*bH?P4;Onc9wGkZ^?SA9`iOJI7os`JMLQX-X1tzn-I?`O z6_3^vZbr{D@{5L9k=SIYvUS;%bu_?LA=m#(g zn&lUuFf$gf#wci(Uw{&iTNKcuaWdN`{`V@BpMvnZ_?lY0&fzMfpYSslA2b%GC)RCI4@=`7I&{&Z`p;{I{p))MtBfiG7OOIj8&(RbewF1d1{cnO;dV|$e zL#<(DlmERT4<=?z{tv_`j`DvbMnQddpfY3r^+LQ#04G2&YXRtB*(jh75^<$~3Py3H zfb%hmtpeipUX=zu1mUbT5Qob~1s{i0T&du*7{!qazJ^h3RS;DdRRZ`PM6wn@gp^J0 ze-2r=%KdLJilf~BA4ajwy{clVl0UVIh8xz&S5Vnxe>X_ORrY6N6i3;ghf!>^AJt1# z$$vXUvQB=4luhp64OzI#eG#KL%Kh0G#WwfJ!f)?~Fl^#e&u6w=_^pZaq-!AsS6ROm zqd3a?moSQL*7c%a%JkoYU~KMF&zS09+4%m4kccYRtKi?EQdoV>vljvWt07-kcO-5_h1x9*&o6vw%KpA z%IF#hXRUzoTV=F~;lbsQn=4t|h*2EL;tq^rD~n{&j(Z>sD~Hse&{bi`Ao=ktwdT^+ z--k?K@dSorrZa@u=;8TQyvPLFcLG~*wAh^DOWCrSZvf%uGFxyv1K>p!NiQQ*u=sshWz7x< z#|AEC%{W{(<~#&aVIs$v^Bow45Hw@X(=du7bFRcF1Q(;$lIE;I7*=ELV9rY+6Gmdj zfJOJrl`lUEk=U4}d>J8SW64iJ7EHVtOMV%n5He;g`E88i$dW(6C;v_TQX%IWWq?y7_exDiSlFxBC#<`c``!E#**)cESPvPmK?(W}I0%5GRwI1$SzaKJTBxVelJ}plTmc}3$8@AM7Ne9bjymTuh z!bFW}D8GbJ2r)Cp{1!%WWX#7f3c==9QiBSkiGxj_Hqd2nX;TVPBVpLnwp2tBLR%Gp9&mPEx zk(e=HYUxkq%pnNH1})`G1(l5{FM>3fh%u(T9HS6IW=we_MsZ}yJ1`2t#i+5QDer+W ztiIa8l;4L;7>OAJrskF_Q~ne}u|Z3l(#0yH#;Y;rGt5^Z4JKlYDJQ%ajV+u_z{Dty zOt}k2ab?PVAPlRob};3kkO?C(qbXzSekxxshG=ZuQof9#Wz%1FLnchz7;6q<6hh8S ze|auOab(R8U=)IjQEAEk@@fdfN~|5M`Dw_6k(e=H4OSWb3PfY$mbRu=(QqsqYd#E_ z5OG^~MYmv;QFB?g@myte2h$pzevQP2D~+myOszEfZc)6-$x5TY5h1UyH2MeeDz?&S zvNUD5+UQP=n8a5c4a?n$DwOXDN^SjpuQ>V_s9xQNK|%TTSCUiYUwy4A7hn`6 zYUL751+iR5VlfvNyHexxxpaVn#wQewT%b~;3YI5XvP3c#>$UdRYD3j|U0tih3X;P; zoxSCOu2tpos#3m7lJ*&=eS7$EtEN_3 zUF>r2^>V>tRkTgRy=qH2ygd=B{`ZEJ!AFmBK`ksv>}F>w#U~_=J6`WrZx@sYPLjG0 zJRo@w_cR_NC4{lL5XMpdCXIpQCUTL0z&3J|BZ8xhEpu{Ys;2*pjv3xEwUqRXSu?yj zbG%`(FpXcOzgnxvh0w}k-BW*M-n3qhXnB`mo{kIl6kjW#ac3Zw!oC6=siw4Y5R3l3 zO+~2nj3r_(*OOe`TeZE?UEcR<0^u zEUDES{gYt)L>%QJ;a)sy>q1kizr;3%(?vioY%Yd!6BWb8PDwBHr5Qjqrj2(X(jBe< z5sr;Rjl?(V7~N=SWNdWufZy$m#Y(*wpOb4o+$Jd2SAY1FeC4nH;J<2Z^@m{HginaY z%)-{OzHUPQcISyTzIPCpJ$DlSb`k$}6aT#BW1~~V;vJPjzB(or0WUr))>9ZgpstJ+ zVnO2k+3dOxGuOTDgTFtt>ci+6Sr)qw4yQvdm9fr+CXO*JG*J(bEMY&-TO)=Ft2^cE zPFaY3mN(~6@5pkwBv%&j&h?HQ5le#wua7DZi}lpQH^cR&GI)FJU@dsHSPV~smrHU( z!K>rSgK}>t`|WJ-+0xMX!Ta!GC{qp})qM_(5%CNVM3Ua?@qu;iguM zhz>sWjiQqNN+Xu~GN76IJS3g^A_#&0`2w-(k6f63*|N^g&gHW`85{k3pOcDI>Z@4X z(%*`R$UUUK2*aEDqRH~$v1KMU*DV+JaPbdS+xjiowvtOsd_CI9`f=T&iNbc-FEH_B zMBCK2!_^1=TWm@$F!2&bK^J%f6y{>}8yE#$;0;h(T3}+cbJ-K#rs|eETwr37IKt%V zBaz~GU#@qSi3KJe_Z882oDCM3Q1&Z6CeyfKfr)fWd(?&=M0L*EWqmPl6GQk8^D;21 zW|8VJ=8lh36;uoN8M=IrQVUER18Knf<^c+GbM6$3g4*sTxb$Ka)OH6b#(Pa#Z5);U zGa#1UzBScQYgpOj|6<6)RsOHQD30=f6GpMkzg~ky3E)l$W-S06EE@%U6B2QyfJZTk zBL(~nqu44SUg|?>;MWk&S_5&oY*aAuJT&lhrGl+6iX#>5icxG;5EYhC0@xQKSqmUS z$|m=RK^CrZzXYQ+mHR6{KS5lL6aV#38lC8c=l0^2O3gA1XDb3#$v{CBAe6NV6jU}c zI1kcrC4&!Ql%{0RIQ!RN6x-}a&&;dje-a{DCqF{UCih>3EL`ROKQW4<-2XR5vCVz* z;os*V44e4W9KDtw{%zuf=}(Y?tE^911BVulvc4@wvCX>v;HNVE9uSPpeQKVe4wjAY z-wKJiQourt;z$7}V-#BjBpxqRBFI5JYY`;yveCgXFXp zi%|##FpbQq7=_?s)LGJ)c?iQQtR0Lw0+}!pGX^YvgH~Dd5(vizE@jO)TsG$X7^K2P zjuG^27=;itW6rxUiX(GAfKdo8My(~y`8b4OHP#O1d;v0HBxVd)bn{&K@^y&B#w_K_ z2q_y&ZgxSdqYTE9+hY_$#*8KR!YGa`ITxc4T#O1!TJi`8!^*22EO`oKVr@w^lR-APpvBj43b1D1?w1Q(l2l9GUVaj6!gsOnE1SVfEDxru-&k!br>* zuxN&f^5mlsiH%vxlMzxjmV6GfVB*DC@->V?$e6L@#P?;<=Wm5k2rfp2nO2(E6+*ER zOWD%pN)t`oB-tObVWbupf%#UQC{F*C;81EV-H=KdIk z;9}HS(wK)q7*=7avC?`l=E;zWwJ{S@C6zaG5RZ*q%9{ziZ0tD}Gl+QvMOvD&d z{tlxMLS{_)SB&Dwlv`W`M;QbcqsEeb=FSj?)mJ;1vI{a{BxVelnp>_+IUho?K}(x5 zEbG)t&1~b<81otCiI4^pF~*cDFbW}L#*_mX#gQq`!6*b5qsEe^Tnk}XeYJxruZK(+ zi5UYHTl+!z@^*;E#x3Q`7+N;{<$aI|6F0`14`CES&Wtsm#3+ue`4UDUxEPg|wB{QS zhLu=5SaaINaDYLi#Tc*#D^2VO(b%}9t*Moy%Ba_z1DO!kTz6@=V5JFjeYWvjX=1z7 z`V92~r484aP=}aWXW}cOq@0s=CYFeR*VmaiMZAiwGZC*&8Ll#sUN56wBz4x9ES~!- zQAJhMoenGBiMqY_1~m--zSo#o4t1+LFsvwjPf!$4gy>zt#v7J=XtyOFR@-aADaE?6QabEJ_JUS+-+`T+5DSWx)!-#xMEcp-^L@xPYjO1R6%e|roy{JZ?8}tgb z{D4;&^m3l4BP?qw%9S8wt>Lg75BX~~+`WvZnQ*jRxIrCoW(1-L)ZlST#0QcYKSO?ZVbD@u_O{ zz6o1Bvhw(S(N0F!kMq`3>G2;&yqhjP{$FBKvh?_i7zLeL1}Mzci$7o#bjBZ`v{ZV0 z)AytEXMH@~R7G2drN=iBN0=POz|!OOu*AD{ok*he_+!2ztV)k7{}msVY1~kHd_(E+ zWlb(#VZ8jLidd)~5r1Pwf0sbEWt;z$L%U=&*wL{Azk z0qg^jtOXDuWt00uAq!WzUyM;4<^Ek5#WwfqiB^^Teh6iqd`#qpm&IBNxrU&Zkzh6lfe++4}xFBrv2O136KU8 zG3LJXdoT(i{1n7u zqn2`|hLw#izXo|QF=K4`J&Zy~nX%=MF^VHwzKBr>E=H9lZTSZX!wRe&Y&rDxM z71j>MJR34$BxVd){JyNR=KCQW8@QA;<8axS^IAxSi5w&7TQLeDXvUmh!YGc+`7Mk> za4~8vY0k$W46CtrFz54-2_rFMz@mHR%9p=~NNmhfzKoEvvE-&7Y;}~uSaLgzLdcl0 zR(SaQN>7JdGf7=_?sRG6va_%0BNl~~G_E-Q{Vag$^}$cB+xTmt04u( zD@;BC5*ajJ3Ab!#(R?KqidDi~-Z9<*C8a zs}PJ0TWYYRgJm;bn*6U>j4}QRqYz?dj5!0NI5Osb7=_?s)LGJ)he8-uVX3jwdNAfm zkcqW16H_IXH@hJo8@ZG>6L{I!vj({^v19tp_hA%5(u_Snf>9jV^WQKE!G*Htry&e0 zvUafN*C7)|V#a`}GT_RY4?`$6XennZsBBF645YzCj4|bJF$y7M#*}}-D2`0I`G?>r zgWzJ+ShCOD3Bs`YY6nwxLMDvFi~&<~%ath)flzGF(x!A#aol({#(ai(0;Iu2j4|bV zFbW}L#*`(D;>eWm#V7<9qsEe^ycEK)`f3MLUI&>l5;F!YRs&r5@>39vja$l>F|=&@ z%dbHuOxzf2eh;G%a%QagV~pa+nlEA$f{RgUNo)QA!mtu+2Ww9KFdSeIX)y+@LB;VM zAQ~IDv^BMIhOJZ_Z=%EZcZi9N)fCvDAho$JH^WN{-(xO367X zIlfp#yk2sAsdyDDIi9FX8P*)%u>p^cSkdvY)}1J*drwfk@bA0m_`9KWbrXgqioY6^ z0~8@TJ=l0d(eZXGI$pF*t1LQhOzZd-9e=Mp-f=EEel8soRdie)S6FoXZ26ifIvyBA z79BT6^0*@gy?S+KueUr{tyPA5YogM4C4a_np^~qP`r|{Da;@AmveK)K4CQBggXNm6 zPabTOt9rHmyf>p>ly^pFSdaH4C%b*-{OjsFe&+n^JIB;G`XhAk677U6Wv;@|xTDib znTIW}C}m!cr9~<8Pm1HMmomRqzVb_%`>$FoWgZ<+i>1ux3{?sPxylGz#C!%QVjk=Y zmM<@5QocMo60UIhk+H(%VMI2REZb>lg)HAP7)eDo{S_0wERZuNlLZ0J$lqyiZ5Ym9vXaW@G;_k^91-0ExaLHj5)OH6b#_Vgg6;%4m5X-uu z*08e4|Aml;tNdSvQ5@y}28?2xfBhMLC4kRBFlzzmVA&|(en`ZX0v^FAjuh||MzK{u z{84eGftMkiwFcsF*{I;Jkcul6Y;hSH-om>gP4ojhV-#BzL=Pq_0nCC()&hu-vdR5? z$ih|b7hx1fEx_p*#Wwfq0a%s%RS?QL`3fqV?4JW^xXS)ojN&N!S78*}>_?AUs^s4S zk*t#+A!U>MyCDl#xqlF&ILiGK7{xaC$!Er%g)nU5Q&T%yerBwR{_zb+!By5LU7kf> zzYRvQ&AR@)kTU)55RA=zYI=$emW}TZf<#;?U;##PU=&9>_%KGX)q!bd_w^9US^^3xo9urM(r}gi`!I^5>_3E2Y_s2}K>3pp z&RPNESD?I!;lV4An=4uT8KXFo#k4EnAjDP{$@#uJLKs#KsX?KuXG(+Q$FJ0zt76Q7 zOqeS)#%t*6wub6R4~9@|&{Cr*1=V^h8jqOy`IzG&4JKmDed*;Gg%EO_i@5^BYK-E@ zlp`30;9}HR(v+7#7*=2HV9Jj{CXB?40n=_aDOcVGvDm1kT&ZDYW6OIX4<=@eEx(IV z2q`nR{1HZRWXl&Y3cR{Oz zb6-frl`-FjQ3x?J#yke25DH)#nNu(d!NsVvq%nIT46CqqFy>j12_rFMz~c91l{GJh zaBSdG){MhtW6o|C^l#*Pb#QvOgRi`FcD)+c_Bt2gv^-oGK}KLls8}$f(vEJ z&p;SfU+rMZ`ymrXV#a_)Gfb2xAAv}0%u=3=kg~DlvycT7FUFF;!zhG|8B6{Zqd2nU z79WKp3xbPLVWtA*J3}Z|Vkuj?EKuIWO_DCihLKua1m;^Y^WCC=0_BU`A~h&be!626 zbAj?zEu%2az%WL!wN7%f*@Y0s+BU8xo5fXZzCCsoq`-KE$;T}ig~&&oi~0807ch#W zX8C@MLU1uQ%gNK1M<9%~w${Tv>t`VoMqC^JmVCi=dj160Au%v@!GhUi>73}>T ziFq50LWr3$=I$895tlBELU1waENRU75QbG)YOJ&#jCmqtVr|UCR7vH{6%db&T*{jX zylm`QgF9-|OkD0|)xVOWv1gFWwqOc;q71E#8mD`!3g zq1d3MoT;F)G3C>c1`{#Hl&@eELdc9M|BO)_nR43IaFjuCF={N?XYL4LSbepFDd#{Y zjKquqQ*+CeDG!EFY|zrCbWxz(cs0g+hIu@s!9kx*OSUXsAvuof0gGh@pU=0eCZx7MfxTUS>s6crWz2?4<31Q83 zS9A*sl$*=4jc0-KtyN*~u;^pM(&XysQl-hiEQ-iEDNVje#JXOZ{ABSeR+>DjLKzk% z-zIhJ@p9y0Wjj$r_p3pzLUTFt;=XrJm@w;tvGc|{`X}{ImZg-7`)MDIt`1`31^>tvzOMxvc^wmYUu4?-{Lpth~J1$ z3xkDPRWLYj#@Lk;CQO_l|EoLuv^R@)5i7rK5y+yfc&Df+9#9bPI^;Vo7UH8>;-hpt zVp}$f3D_YUn{XF?e8Qti#YlXyEPdq5<&mdiC4PI3|63I=@zHtWBdxCbrveT2?`YLC*@b>{G#%O!CKj?=7kb+wY)cwul1MvME!X2+3LcO ztRr8|iz4&`L#6!LUcOXV>Gk&K3WJ?fr!FlI%_-&2%$K}*LnHI#hV#0EE~MKlRK03p zpis(Hih5RoVqaA+wYY{{d!TTzA)HVIJ3|i;gYCtFFqXf&MH?{SG}_e zwSH0WURL}TzpK{rxjwmBP8>#|5e0 zo~FWkh=}QzCBhsW|^40TAz*I*Lz;c5if}p^>rCDMKT3 zq!q^UN&j9ZLjH5HpJYvC{de)fYpn9~Z^WjfQ!4qDa$ShA(M^01|Kwh@TBSm7p*FVG z|Ng98WpHe5@weiTigFZMd{w^6oi}Mh@ilpv(dbKdhYyKQl;XD(hbUtyR55*YtAy3H zaNu}vt>PUt3dwL!zBUT?ruCo1qP?m7dawSC&Fvx|?M=jfETjD+j^yaE^SrzfK-rS&EOrHJ79C#L*uE(#b0Zmofco`B|OFr>%44O=cVO!ULutS>%4^TRU7jG*t(JHyu3f!Nk;3u zggk$wx7pbPo|3UklsUW|h7vjiydxJ3bton+LTJ~3+E#Q$D} z@(~EH_j0k({uLsXYW!JD-A8b^&dYcGjKxPFM2Z{tyNPvPt}*Oi=PiF;yhilXYm3*4 zzn99v;zB`Rblb{##j9l;H>~rrVV#$8Tj%9ZH$ulhK7of!3 zZu0{YJ7W~ob~nLg7DhpBcYvZ_2#VThtwfb-sNV{)^aiV`hFZgFVJ1csFt`sosdN{6dq<|eUimd_?5BDk&%!GK>B1qt6ql1GX7gsts7Na=Q!KoO< zRtKgB8S^^3xo9vH38m_W`2}W_0{VOqwZT1_j^KvtUvsS?Pt@F~v@Zc`U&6O-3 zz$lJn@i<1Yl|}Ngsiz?fD~Hse&{b)UAo=kt_2%MYuR|vA@t*+2cnw|M)=(Yk#{Y(f z2W-$%qbUW|dMg@_nE5f|?I8^&V$6N%y)X(Piy;ptW{fSbz$k>28C%|jQ5@OwPK-iu zF{&(S%X=XVE3kI3<)e@ZBQayZ^jm<+mp_AGY}iu1)WNbb=4+4$6E((|6K_C+3s-~K ztuTrsWA2JkTp4p;2*WC@9gKMxWWq?yXw3M1S!K;75RMI8%9?SwY|NR1RG7#y<}70r zLeNaFc^*b_WX=y_6oQLUYsp^o8VJK`tR2kx8OVf@m@#0{J#*#DuR@??aRjU{h~ESPvPmb@FI5He;g`5;DdWXUHm3c0+H17(fJE1d0EsyCl+Jz*In^eR>}i@$^BY+wJ5Qls|9a{ z!czQV830l5Ulw|-7d;lW3R~QZ>fiPdL1UZOuN$sViFUwlp$E6)k$^%~DT@|9oX*?-kq zjpv|N@+U+o^w7dVF}m&KqD?!9)1XAj>(MDS}K3q0@9 zn=cKGbmq^@m4ntd}Km;RAq(ioB^Sm`;U6R$E zek&&nvCi`59O@leE|+ArWwBn>kt4NyHF$kgdAO&P58n)nMN&kFg15&G)`C}y#cDml z%O$y?;MH;ELAke+{Wc-^Y-wR2U#;Z^!rz4F%;I-zQtU+=A}K7aRLXKitu?g~v8v9h zPPwaP;o&Y%eGwjf>KjER{gp;6^<_Xa^?67-^+gZ@{qqI6QYj|_xolZyXXo(5;)0jz>x)&kJMvQfY}kccYpf6mS(ru~k6)@m{5YTOgdZ2I6qpsNil$ z#gz&k#3+tb@B~J&RYCMHsS?1m5Xo8q5mGj}e*>~`mHSDb$YKnz4Mwrey?SU-C4YAa zWu1Hll}+{!f;3!Ze*s2u4#l|^!n=Hn2Cl|yP!=;}GZAo=kt_2xDmHPkB-uuAGQC(-E`iC?Kp~y0p zu`H892GLT683LH_CLr@q3I?IbL@0U)B=yX+)Lpc?C*3^)$ylrPk0pY1c!YF#SPO&@ ztR0KmJotj%o0La9_EiM3q2mT31L}wPgPgdy|?PlH>Ypk>Ylt6Kdar- z-BsT`=X~F}x9+`lN;`)xmNi62`f~`yby{LHC7{~RqN>OA_cR=NFC2eZBJyW33WLb1 zE&6qu6ETV$QX`C9KZK@@i-Y z$7h`FBL5DfFsRIt{pA-R43}XOL72Y`E#Xj1 z>o9d)R!H;95RU7(gfvyS&WQ6jpeY>Bam1O$C=5b##978DmU_*vV-$uhTCT;#`8yDX z%dv?d&Od~fa44pAShQv?bor+ciR-h3E+eGQNb;|s6&!zYB>DFkg+XJEB>xGcSd!#V zFbcyKEyLoH{1*trrPoA|D!0jKUx? zN0b+16icG~KQRi!7A?o(qTCE&xcr(3qWl`PghMf{!=fD~LX$T@B(BdAnv9S-Bgs3U z6&!zY`pIu&6b6kslKehKu_VdA!6*z{v<%Y~mHr`w;!-RjOPfWdTUaFdF|>w5HI)SV zrI>%Vivo&DAMx#W`+wCQ{X)s7Eu-j*N*~`g3MUQpV-!>A#5bFr4PlIBV{5Y+C+c5? zCUCUEiN^+v!ia}zi+*`*3r4Y&mcNEk7`ABBa(tw81B5Z=Ru|T+?|_zYD5iCoye&@* zmc9+axNb`fmSnKbjF$!wBV|bmB=gH6(Tk`x>jKZKaN1k87D3;{;n;3;* zi9mD1#%)&ten?kvXC~5u;cVB@DlfU(qcnDy=WemS$1uxydS`jWMfAi{>S&N>`{j zmX)f~N9+x&N*_({l&aFA5M@|a`j}+v)wEpxtmrnD) z0mu8m$t>($=)YUMq!APwK5>j+zOnQ6-ZysM5&l~AR-Yk@#;)xpOCl%{?bf_TQ*l0O z|J>l<(LuGMVC=B43UFvH6((+;gzCzwJRH9gaIY7Ox4oLcCwuSwO2GcR_9_932D$B3 z13qO_Ay*tOlnS*fw;u3`i88c;LgH+&B5=7Q6@lf(@M;1tQ)&W>;}2H_))&G(T;EYD zxGeRm+N!`a1)sw7Cx0Yz+^@kL$E*x|esq$07u43J+Q920qg$>Gd^sJ;tPNbmC}?aR zpm44;wqq1DHV;tRstsI+@N$pYQprh+wSjl}5mS3|cRkhN&dROxp6Kya`jEQ+rd!k= zT>fdSHt-tF`Qtwyqc*S*pL?0-$HTRO57!1>*J4F^?S-Pa-CT4R52vG40oBIr&4a#% zShazlfo8x$5CIBjUgc$sf^v5Yw!Do|Q0@*;w9%JtYZl@E8N`wkR!fOm!s<-?d%lCN z>}kJF7gQnPG!7UiY5)1CaD5flk?ghe~7A^JTK zj2rvJ%CHR98Qt%LhS*}j(-_4P175-?rVNN}2p1%H6XF?@Acof&9()LGvBiVwe+EYw zmUwUsMlt1qZd2t#2xUwG0o9r4p8?IV75xh^ilyjZicw6XKUQtvjS$Y50qNBSZee&( zgSOeC#WygDC0g8!QA}wO-vxUogyGU5F(|ZkJ68~Vb*5f_L;8cz61Zgy&7q5B4bhQ4 z4xzYCON^!jRQp*}^_c#a_ZOiV9FK9ln%6nLouzxq{Swo%07t2^;$xe5>{tqc^ydS78(el{vCpk5Mei zvWQU_wrE)vm*sW{!zI{6kmXI#5)Q?*4wIJvg)VQ0U|hE)bSZ;%MwkykLpWaJ2=g(F z!XPt8n9pJqOTv5wqcCjI@+>aQ{Sb!Bu!$hdkD(V3NU=&N@ybz->Y|(NpF3vR&=3kRIU1$l1Vp@kqYvw|i*FYq$ z&l0+fkUAsDI<$i0FODR4V-yCBIg-2=qgayU!x)8OiFzxf&vIeU{KH=AjiFe{m$a6{9d{%;_hu!zh*{c?(8i*rH{a zt~T&p5Q9XpP;JpKkDZB8ET!e;7=>Yr zHZ8|5UsgjHV{Ua}%{mV);ZRKLFnL>^7%XjtU|hE)21_znXU0o63Pb*2@}$X=y#MlE z!G_qqy_Q&gn}E}yFj&n|=pKw>$(DyO3d0sH;o=H?0>W^qmKZd3L7^`}ONO$2#f04?EA zOqc0za@K!Dg9|RdCW0s(XbFd6T8AlRdxb9hAR5}lFPwsXf zo=v4`U#53TnP9mtWmqV9p03KPS}HiKbw{=K&IzhgX-frXq*}pW67KMe1rIo1xnSAK z)y~3!X0706)nN5AQ9tD z{7=Ebql1!h)z$f&liQjrIfYtoOSRV-$`^{mm0W4vDFXwiUg=~jIj1n3E7b~QM}@vG zm23GzX|q!+(_z`-XttK?o9UgTJUpzNqg2VQ`{n2yUKQnBwOS~bs(oQ?(XL<%XC5+j z=2T*j)|tCj=L=P5sFEY6RGqA|B|9=gzUp;GtGQukaGO&jKMicj)$#)yx8$}A<|-S? zgKlo9w$brEEDw8LZ5}=|TN-vo$|IviIv1U4q*AVx2S+zK%>(+J3r0tZg(2_DQg(}n zMuEzfoLr?+t~5QI$P*FZsO zcvx6_Jj|bwl?JuPe}y8@tUZ3F_s*|9?!RlZ_IT6n)SxzNkN1&+TdF+%MNoM>JQu1v z-qeD-pQ?O^ddg4t#FTO0l|Ea0zETD}JoDiq;D?KVuclnqY9ZItsrqn8w|Y;=rm&k9 zABaTrRgx>p-sjL6-E-+h$=PA~;?w90N;sE9C#i4gNV$DsS+m^na@p?B)GE2$fU~2R ztz6aTz3*F1FTNAp74i>fHh&m>n{m}L*522l@22^G2*2eclXblwtPMR(hce55Z^bC+ zsyjg8%phEcQP5R)fTH>>a;P%sXr@2vHmCXD3s>F>;guo4k<`Zzm$zgKrH1?a6iU(Q zyNRnxi{-y>@go-7B7n+&H{CLJ?;Gmp;--E!YR)g)?fra=^4~&w?gr0~hs%E-F8|$X zuOVL=L@E^(C4^ERPe-W&s*QQsM|};k%74EI&4A1P0Safv^bL%Ha(4^1yoXUx?ha72 z(U&S0i12>`vE+oMT%C=Vs3ok<#DDJh(U`|p{2h#9DgJ#J#Weo%9rA(zXF)Jy0?1&U zVZbVAh%E-J$0(Kx797|P;fy(;!gYoPH$hWuvEX)$Vu=O!VH8sqM7RA4 z0z3kdj0q4Sbtd-DLMv>={uPX3Dfas@ifQb{?WH34A3!MM;0vhEM1SVKPK*GK#VD4d zzX+q4MnAfdQ3U^Vh-4i62&pr%zYtnsOZjUsilx{OV-(Za$M49hKp1Y|6Z<9Fz9XxJ z>!jVxK2xqrUX>`Syc6y{-%@Hpcx#Gan_{|ViX3E zRa^A+4L-ssmPFa}XuG2h?K(|dl=C1AmtPY>luMu`9ExcjCM`AzRh|j4xL!-BQo`zt zELT7~I6mXZ@^Xw~NtStxVo8=;F$%*LEz9Dvybi)}2{sXAc^kBZLouzx$Ze0Ww6c&b00K><28;jpT;N*GIRRNmoSPYVZMn`7`AA678mCG5QfXJi6G4Be*p&= zjId}Ormo8hX&wXNxQ)ORtF_$v2=S9ExcjCU!CiO}+=AxK2xGQb2V^l+zw-cZ9(aFzxgH{MeU{KHR-hFe ze{m$a6QeL_%#q|x7{!t#Z^tMMTeOnYmH)mELUAdUkfqJ?-z_YXJO-`dP)#L)ektZz zyC|Ui_bYah#wh>2-!h86{PzcKqj1u|w7-P?zo~TMo6Y7z7-QMk+H9t>Sid~B2%5mr z3MU??V-!X_R9p1RW9MNMOKEu(Mq${ZP0R6-(s~GE%&ji0Sy!MX9ExcjCU46VgQcAi zjO(_l5#>RQ z!XPq7lpkRfOQP)gD>$}b*rMfFyr-N8VYvL72%=m9E#Xj1>oBDbx6tL85RL1%gf11d z&h(cnpd}o?ain=UMq$vIBh5TUu_Vo{7=>YrmT7TmUI$^g6q^XrybW5yp_tZTV^sa# z1JSsCOG?vH)$bO1&3(`khTq1o=oVD{)|X{Vv+DO;Q8PQLj;NN*^{Uz4PBpldf{lrq z-xpGmCo46-Um<5VYkt2$@06O~q7Y?R@ms1{9=2Ys_Z=3uqsCtpl%X28-uG$Ysr+i+ zjx*qR#j9iGzLk$eweK(MkCh90i(=pYIpnXDTHgmC>ty`|wS2o#M3embPS8%JtayIe zHML51sODF^zACrPci~A?rJAZ*dsV}!<~aG3KA?ivS*KX2)|~PtXCzywRK05AR7Jaz zEmXa-)>P8^nxWiCjVgyb^uMe#92LH%^G3DAi#otJc78Js>3`HVs2G6!ORG_GKlF~s zT*b5+mkzL_(>Qgt?N{Mt#`lLnk$?sZNYr2jv)|CFz< zqff5fxRHFaC6_Hxq47zC82SD-Jo6O13v$=~V}J26IDMsz~m~ z#;fd3mBX6_tb^j>-Vt6M@lvilTK%$L$~2QdJ1P)6ZFPCL92GeA{}BE->IpPnj5Mnh()1WrYkf$T5&{(8T(X#f379)6%uOD4h8({6T$6s>Qkv1Qr+~EVm9WZ!t3?V z1CoTk`|KDrk`Vf12x|UGv(&ih|=Awvo+z(^-v0VqX@%j_ zex>1eU~Yw^n3c_Rx6&u>0jlWk^@U6650yD%$@scUbDJm!lHw@gc!IkmJK~jR&aBH& z>gsJK!o|IPeSKFhCczeJz0TG7!cd-`!H^res_JZ_Bcp6bd9j%otA#C8oSvS>;3vD8-ZU+oJq{9L+t(?pg6==<(Vd`^ui%jDbA>AMEE#^aCjI#k3u~t z(|i=g^yXta)F)B6Z+YoqH`&{Kl)=CE-uaI*@ZYufD1+dE0DCC;gdK2DYj>Xaw2foQ znK8%KXHcJBq4d!3o*M8YdQd=pV8e#&VAUUxH4Uh4*x+QwepG>ztR%8SC0Ydkc?e3;`cIGbJ0iLEJJFFm1gV{IS*7eBh)zh#-P(=OcO_lQYT&bF?Wxn?H#m&xuRqgn1B8#+@>e1}VU(=z9O7&-l*?aQYQeOEX zMnN-00Saf<>qi)6d|QY`F-Hpicp7uPN83WgQ0_-DT|`^lU08jxI=rHogXV{dFT3mbCMxE z0Zhb4Mj1+%i|117nz{JX-a9`R`|l<|F8H*>(!eJ~f}#!%0hDjx1<7 z#r`TC%1p7BU=);M0~C%e>o5vRu}u_8v7Yw?NxY9`l8DS0AMwQUsvw3t;GH9$SHDOf zTFI+pi=>%Sw-Jysff-jsm`%6S52b7xwwki(iJk%Ulr-aP8lIqyY^{fode~BIm zxPc}K3R|=O6laDe?zWVNM~gWpp73cb{)_R?`qaadso!s^^q9SIA1zj&9Y3X?@E1-M z7a;XdC7KcDe9bpP(GQaMoa1u0^0bdq`@#k3!HLNnRR*BtHx zUQ5V1l)2(Q6E^=<)LdPTXLfbMX7_RLe43tT!Hz^s&W%_V^hxT{?LZi_$pcc>eF3%? zu5~>}hf<#6^cJsU6x3S;DB6|CnUcvO1cxA)JV0;h`6Hi44o7|KxN%?@q$ll0E}^ZJJS zNcff1afRe0nSMKHnsLV!o*>M#!Yr@*4|4vr;cP9dOZf}DmcH%H%Y4Cm=l5Cuy9to; zPi!vHWEML(*?%@cu;zg%$=9~{=ylwRS-QfKNQH~K-XX_9xUbzyU_^o~@%2pgaHMwpWPN-`|*WngCF^U&zT7l8}p&qWx# z<%(Y4H}dzsO~O-&uN1!}za@`&XGnYzx;OE~s_f8J+0FWcq#Ytx(h9)IOAm9y8(V4} z{J%3df?<)3q3y3wFVptW_O$3Eok`;tPo_LB4{5!PKi=+vaAX+%DaKOEqb9a7oE3Ju z%e?b7hqLm-Sl3=l^NNRi4O;(=cMd@(m&k`vmzVhFaIfKyBm54E-D?D?L3!@)JeiPU z&=UMqd6w-=@zYRC@<&2XS3o_%=K-&!LrK4!i#ivhpeeurg>zAN4Mss1bpeX%!NXT1^%sZ85YH9-j!~ z>DcJm7qC2PZhjz-mipjq(F7=*MDq+r zL5U_nkrU0@`$-KVz=t&uT!%Hu*W9t@4Jw3-CWZ#IGl05+O0Pn?$f*;}|0QnVXsMtQ znDcvCCog@OqxYaCaB{WBnTZqu_f>_3(m$1^0{q4{OTd}_nqgaalBN)Xr_VP0nMDU-2 zV8+3h!P1ZZE6@mA(ch0zEJgnVjA9ynwM@T=|Fox483d?s=`-M1Xof8YEW#+37;rj9 zF=aqh5MBiTJcwj0{s<}kxUYd0*oylwMzIw43Pv%FyC^y?0>2YN83$fKr62hQG{IKn z@5U&WBL4tJF^zmw+FAtuF^FUw_y{TexW51`uod^$F^Z+QAHpc6agW#M{TRY$*9AgN7)!B7Pi3u@v!MjA9ybxh|^^`v3&v#yv5?BZH-{_m$8HThYG) zqgaZ*i&0FYAFKQ+2yhL=GbTU`FMSTwp&hn3up6UT;=sKa#gqfO%6Sh%DC6)8sPrTM z3^c)3gO7yzBQcD90%CDJmQbUF z)!slxrLbO(FF_kP{^H2-O^m{zuxg85j_+d>OLCm_pWE%{wG4~PaW;hElB?TtTnMe; z&`awqc^OaW@e~Ngby-4>GFbY8yZ{=(@fb&tmtqu4g4~EvED5rNQ5d#pITjb>wGf8O zu5JtRW@rV6URr0V>#9PMcS1O>(-M+Y;nEl7gU}3)*Ephl9HTIZ%;_bc!zh+S`6@(GhIxE^0BDA<4B60nd z&|-v?z7#)(7I1vUk>bq1MdJrs>t4rV6iZTEgi%bTsJq|jbO^ygZ1<3 z55VSgbi#?nV;F@I3)L3=y!x{k#Zo$c1*0%*(RTLnkDm0>nwQ- zofsU=d=_>3T$d#VM>1IY0 z!mvflw74vvgfLu!bz7D%Ln}D+(mG2#IbA67Z3xA6SVEBkDt$421Wn+0izCLKzeB?b zTXP8WFp4EHo`6woiSbkj!{t`D#kd?=!J(I4jA6|rsoKVB2*q_+Qj8H)`eMvO6FA=D zh;b`MVGx+pGhT;LEQ#?JjKZ)*%ddFPco&4>a;w{7dp_kTK%45<+=lBFfBXNpjM2?e_Irmc=DG8^Unu)on>GgjR6qrFGUA z4`V+CqH%qel%!Ogu#vtbFMw8Xe5Q&;Kbw1LyC`aHPDX7-^#C~<+G3vg=k7P@$qYBR zyXke8_iTn`&F7}*i!QHOARgt#;VSz6qXQC! zm!X=)wWe-L{gNy)0 z+t*0-`d)%*TS{X zS+M!GB7PA@u@v#O7{xT=@?I?=_Dv9s8~4ODy$qJV-nT;|T8sW4OqxVb4x#_@N7N_l zFYk9@I7>9R6{DEaAhtb7FyS7EXUv2cUixHs1lrLW8OG+oQy9e(2VTS|rW_Du)OaR9<_$<=K+ zu7p+?%TZp>6MDP?f^l7z(4!2Nz92`S5gd#k|1|u6oxG4=4<2o%NNfj=AQN9Mv;CPKA%7Yk%L1d07Kf)-MMA`FS z;JAWei&Wg5&2rV81 zk+}X!XfZ-cUy2!Mfh{SXfl(Or6MV9t%`0f zEOykOB^;Wm1kf+3e8VmZsOWaHU8FH8y4`6RMPJeF{qCrUDIHJ$A?)lKwrJCFd}MSCgfZq-hu54l z&21|c@bP+Uy<1vmP*J2a~i8+GYgi$OBvW8I@wrDvP z7vwh}43}Mru~CNwc`LMnLocnfVp|%8ChviGT(2cG8N*9omXAO?IDX^E@+pkMpfX36 zFJcr+vU~%hFl^B>EiTLVAPkpa-InFFm*Aj+5fZJlM42_A$hi=T>#&3(1yuTCTm((9 zCC1Y+3WLBLF`kD}7?I~BmQ@&qVT+buaWSrkFkEhRTZ|QG1&3Z*XNi5^LX0~h6xU%% zF@}XOOl#F>XIk`EkPT=8$6Fi%-;Gfi1m=kG0gPfvjE`XyhAmot#l`q6gyC|l+hTkj zTEU^0)>%r8HKE5t5RL1zgdP>N^!vvt|FzxG1V@r{Fbadl97!IBQ7lQa7o#w2(XuQq z$pHw%rB}Blxe{7oE=j2nlT`Hd3W&z_SyGZRTKbY4fmSelhHIgD_0KM&5@-3(xcd5M zcTknI#s9YP^+qOtM1FdH2KD9hyg!bmH}mP=0{V9x{d2Bt_?4<^*~;cztx^BnhArjc z(PFOJKa?wuZ0pZ$%@#+qwL-bns2@?uZ7K{m+zX$aKB+#P{unL~HQWPquc+6Y+X+!= z&dPjd<>;WW!#$af%X;V;cQ5_e{SLk4YI6PN&1nqWwcsz26N8UmF&m}{cv!blXZ&O zErY|^zL~4@x!}E1s5*fknm?-L>61;Pr6I2!ze>kcM+d99np55s0Et#s>HI_GEjef7 zMrz?QisQ0MrCiy#(J2qQxuIIMui?=mlb=(6UNZNMowp|peq-ky|GG?;(#ah$A?9z1 zqC6+=8Q&q~kFjnM{8sE-*)cUm{LB9yG0sCD9i&qpDZDO5AMv&ct;99zoo@w^xnGcZ zchDFj^PzQ9A~M$(E?v6RsZ!uKWQiqPeeF7DJLg7!kUac+Fo*TiW^2imzaYHoplY)F z5g}(~35RtZ-=#0;psq%naz< z0q3+YeaY!}PMPWbD#&87820){FP7lWc&v^WIReCqvIvsD9Z=wv+5B2ni(@9 z+xR~e8h^)>Oh+qZf~mp%KJ{kw^RR!5)TZ>me$QKAia=dbgk6-QfP%e?8#8{=|Ph=)b<}zaH{lz25g7ulJ?CmYTKm=adV=+(k`t z_t20b%);XhPG(RiTq)$L4R6@+BRXk4vn4xJDR0=49myJmUB1 z{ng4)VwBW3vTcBdMOA7u4G*YWMlJBhNA7;INp(iXeOLNy?JgSpM9t2~Nn=Oiwkvy`?iSFc26%1XoGTeLJ+$>J zwOqw>#yV)~m5ZH|mv-4)sy>`-qn!D@AJn#u5Xt)d+PYzM5|wbHV#kSZMCs$?S5hJ5 z#Fs%?IE+(NrsxOe=4EEaD1itMsy6Hdl^mIWZXW&aQo>+Nzvi>>UjEs za@J>}lXNU+T|AkR*6FeXj*PNXXt?x=FgO#nwRvTz4ka`0IiA7ij%Dy^af98Hyz|k8 z9W`gU)SR_Ll+F)l$tXRr6MUFYm|4<~b;eyGxxPM6_Pgkdf}dV0|8%DKX~-J+BSD*` zkT$Rg{Qw`8+**W9 zkuT|5s$~B8L^71n4X54mei+qs!HE0VL*_7vUfj$nXZYt=nLIZ+deX7@Xys=ivtpkL zr{4^n4sEJ88_D7FofrjiIY8lX`F@OoxE!D;T%JnfQ{R7j68m2ZM?MC@joIs?7_xMq zAD|Xk+VnzOEWJyN=S7+qg6saMU8k9zu+gDh#0Mh4Z@>UUrM%_`f|d2(!zf580SZSc zpI{WElmJCh%B>SR)Y^41-MuGs{sE1Dxe`vSjoG^QWEM3qF?P`36>ku39tyFmS6fCQtrYis5@!Fmc1CoH1bk;FA@4j zA(nCIC9L#g|2(w8R_tHHD3)S>5TlsJUM?jig8vZ&GY-BCmVWeSzk-GtwxYiPqgaam z5{zOReYI+li2s=o&N%)mT>1=H0nM<*fXgw8B?ja%iYWu4IyoZvTOpEh@FS%3<9;Kw zz*gLE!zh;Gz6Yb2#$D885rKaQLKz2MK&2n~r=bb9BL5Obu@w0?F^XyAqY5A*@b5z; zBoKgKX#(8KL(>%iu*#0VjA~&IfGLm3^(YBS(vuU8MJUMbOCI>Eu~+IQ7lD# zBStZexO_Xi5PJ!NapRtt;E}=7*ZVi15w@a#Ge)r#{W~#=Y4l?^P74Cu5Alo%5W`EK z1CK*HY;oW@jADrcuVNHa4(M(~JOH7L!!MxPi@dtbsh`dL1e(B@%~hA)7;8%E0kV@A zE6QK;mc9J_Yh$e6MEfqJ1-z!^8CO{Vnh~5Soa2uE7V2K`DjW%|r-g52+qSn2@~h3& z@MG!F#KMPu)5H>tf>aTpaOQ5$#3)D=0gB?iUIX{*r^>?U6T0_@wC$Y!3^tn6yKrkcy}cwm;%#`RcPq;!@Be8 z8k)CY%PNe5`s)Bi8+mDafC&A1h-Dml2`l~BSD+2HV!sokSc?5k7{xU9^6mf;{M#Xz zaqwlZ^rQa(G{RQ&AHyh?qW>&LF^#^uH$cSy6$ob>e-$o$1{{KB*kZuP7{w9;X1<2H zVva4^+#hWa5WzndA{hriLP|gGz0d-VuQ+}F07kJC_X{zKsq)4C01@~#5Xw040xJE; zyU+w%k-r9`Sc?4h7{xU5(FOq#_y$BW4t#`^e%$Yc7TAjW!x+U<+@HiKrg4vNMR)iulhkilvB8`ERN8?egvbA@(^Cj2rjFHN6a$zTQuOM%aq} zsTjpl^v}U4rh1QU4G;ua3Gs{x5W`EK1B1{GTO1g{D3&;|1EZL7KP-OeqnsmfQ0>8g+1~kQe~kc;ZSBc=ak=zZ|;&S^?J*0~GDNh*+W!nR5w* z;yNrbauQJOWlq&w`rQjlp$Qysan@W`U=#*{Ra^9HE|+5zOJdAp6oxHYe#OPO6~b`2 z)on4}2(94IOY1CY(MYKAHi*UbSVD~wR{C zJOiUx666IKg<*@9V{t)V3Ss`W2yzp&ft4!yKe6gv=v7FR(i zuEP>q6j14laTuDw@fJsn6^z0lFsEPKiBT+x@g|JIutm$Sc)xf%gyC|l+hTkGTEU^0 z)>+Z65TV7#AQIPK2`xrQ=}YkiXaUDp94WqzQ5f{)NbwLxu_VQhF$%*LExUB3PiOuJ z4JWwtO32aHU7{^4b{q#S;m}MafPP7(*DlIb>A6wHu2426$oQ285^6!R0iuKem!hHM<<+EG%yMy7OE}!Wv;t1ilub?07hZh zqD{x~k-lvI*}t^hhSWnB?d<_So-6mpFtxy9^(jd%A2U8 zw>57t2cuXLU|Hs@-M`sX$@A7Wok zJW#$-KZ1T&7;d;r=rMxz>GTIZU%ufUpr;&r&AFWrmF6@bt}N_ue}Rt6=I3A8$hdpy z$L@FNMR}&Q`(65^J|}+1RKxY6nV;@{&pXOPcOUlNol8FU|Gd88KH?pDRP_Ak%;JXE zrh`=PEx#!83pHAdI5aL3*d?Qsno2UKcC{ovS}AJ z$=yT53*$8&#b@M7RGlwZZFuDS5uLRDOHHn9DimwEN@lT>DU_Th^_@8X7B}k2yZGe8 z8~N!gYmKbe;BQf*!p3^-UR2-Qe_1tGsrFZkw)S^OOY(7< zEX8nZ){EnSrZ%Cd0p05;&lnzXsA0Wcn>Ki2pkr&>MyR2EVKw4)>yniY#o4<5NZ4lE z{X*C+H$6Nctgebpy>hX0@>1t;;Yp&Hwt8bwUo%m>F|4+k_#&viDSs|lM~mu2F0Ux3 z{JjUfZsHc6Tu7=6Wn2GLLg-8a5>g3vDZg2oOhT{O^RQU zNum40cb#T>!bXR35g&*Ep9cdB{kqf-1S{*W!YD{70SZSc>oE$-`T>fflv^issI^^? zZd>yR^a@wPiD_3`+nS3y7U?$}Uk5FL(}*pg+|o9RHZ=Ot!CerH8=S=aZW^Nltqb+5 zq7Olq%fjk~zrUj+Ub2xT020hNB_ zGtdNEkv{{YSc?1w7{xU5(aq%|@Rvd)BoH&w7^!}YZ%2++`oZQOyeHEQ}$*E z!wq_37N)H`Wm~uwx(7DjR>U8~D3&7rI7TszxO}Ii5c_iwj2rjF1dj}szTV$}M%aq} zdli`;27!x3dmp%s^XooEh^kEcB95@T3m~udOkIO|6$~gQ2 zs=dgo%bfbz-1X1|#%!*-^u}0IQV)=w#8^@OlDF*TZ)6)|{U+L`CN1DKEzh{h0?>@$ zOyT-j^tVv=wb(c7Y2iC7x8K_p`PJrX_%(DWbJN6)7zL>!K;g{Y-iA?-DgqS6d%Xtk z*H4v)CzAHX-v`?&dmODxCx%nD7Pa>1Vyj=&dJI|u)zt#Zvu&ejL!)2RdIf@UgOeEZ zq_L=_b)h~D9)ec29w_~y*2it5aHKx-CumRtJM+L}S~~QEsZ~qxV!0fmp5Km)*LU0y~y&8+%F z9-wF=FKrJHp??fw8HZlNNANgmX3AQ5tGDfi!`L{8OY2>4w0wVA~gGk1KkC4)jd(XR_==A4d z6iabG0i&44J-#R5R0zWjdSYs>tvv}XTof&b&9|lW)fmN6#0N2oX~gAi0z&K~5R4o5 z#KpY~mcHJvgGShj{w)~AQuOb_D5lYm?GX?J*bDKD2@u0ep94=oJ8W^_d5mI-1FvBe zQx1rY0wVkeA(V0W1yuTxpLD1bz5Q&AVkz%uZ32?Ma2L` zJ1-*EDn#bI5khetmKZq+sP<%{&ROWUG297F;CPF(_;No+VGvlgMZfs652IKT(GhI!jtT5^DSqVsSl|P@{yEz8q)$zi=R9iNfycMHZ668G?g<%UzkPku_F1xxd$fuwc9C~S;r7o}vNxlf-xK2w*QiV%j zl>4C>9ItUi`2j{@5Sb&&Y43HS$DfN)7`AA67Vjk;2*c%9w?%n6w1Pt~t+S%_ZlTBX zAQIPK2|Y$g=}U19w1DF)jueM63WL5JDONCwrT%dzMq${ZWmjB^H$fOKwYn|EyP*{v zdTE^{b|45XJ^-P(4ohfJK&3CnC!q-(Z*j!<0!CpFm?Os5F^VNI9>ORLTeSR&i}7O! z!{t`D#W?5xYj>!kbyl=1L}>9ih{W|*LW>bn`cga zutm!*T@6$hLUHMpkfW{JMO#?x*a0o!&`c$Oeo3Wn7iB6vg(AF(+J7&EzuPX-Wc{MY zy_Qk*_ijGiHVUUVeiEaY$|k-!>;(v8EEyY{!&CYrHXX-DM#n)IV_tQ5&G}Sl1&3Z*XUSXWM25q?A zLnAmI!6=p_c?L#d*rH`wT#^?+7%siKEy=ae3Uf(Hg_xxA>L!TB z^;uGqGFtkQ+zzc^_zc%V^Xi{nMkUUaXEDq5&+ecqX<_}d@t%8sWF@z$maS~g)f)BB zZD>B~PC;T-K|} zk#YCZkKOOki}I9d_q+5-eGZkE9og2GqkFVQ{U^>hTrZmW>F)Quqdau?Vej1^k&pd9 zuWz`Ict_5b9|xUT-0+%pkZQl>7e%h27FL4ClTy8`eRNdJOP7Ry*Uwp<&pDM`b+lNk zI^|7H)~S|9D?_=yO@(4DSIKPcb-ZWVFLr#?0s6jJsMfq+dM(dYqotkpPb3DA{{iw! zRtFiMUqP1tmS-+KrkX6jCpb9%n9$f^?)S+plB1%NtQ;K_;q(JppE9zoQSaF_S{kZR zeYu7j&bQ`Jlpgb<^tSizFTHo~MDO;~yBpje`>zN5*Pr;W2mRM~{nta@s~5(1yfB`a zpGwWz`SU4WM4NU|liWSTz%Xj#aeYRvRI3zn)rQByAJIwc{Y}#3uA$&nH_!v&GmD)} zq2x4m;Ka$exKTeo{#jrA6pj4!m9<9JYxuXQabcsq_Ajbm)qhzvSE=?_i{)Cae{-Rh zA06y3mWQ%MPje@aY^&wVrT%JVC?UbVk!=H{IeJoUp|sf}8lxc@&qMpkP}M^j_g(3; zwf`3hEN(TcUYqJc>01e*bk$VbUK4wJegA1>9QZ@#B){XhU6E*3;QDjnj;hSf$kai z9M22qj^%~Z;$Cpy@yZJp)VQ@nl<^Oz&epSji>cEOdB$BKxxPM6_Pgkyf}bj7 z_-BfrhUAey614dQ(gqem{)i4GcBq%V10mex0qLq|*3XSE;R6)bB|Jt!m%Ras>cg0e zUF}7&zL0k>Y>GT0ZK;xO8pZH4)YSNpnGtt&s4QC)X4Z?FIpu>UO%x{2O%ADaEIwNK zS;(x|r-I9?pwppED|{!gxV#>tpedXHg~R0{MnPN-P!ujtr9rFjKRt>4uZ1IbKyW$M zEwR@}F`S&(?gvQi)EE(Mi=}soLB1H=i=@!~p}bBrJz=9mxrh%$fbWI@hJL-%4+Kjo z4`39elmLaJl*cd%Qc8fLDCO1(9cpbCq}%)aJoE}z!il+ATYI0M)v-vwEBQ@m37l(e z0p9D6q*2waB2Ca-w?eKqoD4j1zSoO#WeC#c^MJWMpMyr&ivFt@#ZvSSU=-8n zt5q{Z{6B!Wwa~N=JJGk##VD2{?qC$t zh|9NA3bFS=FmBuv6Ff3l`g%VP8evQCt1ybC=prqPexxF-lugm}gTh~cHrft}C} zTO7Cvqgdj=?HI+B1G*bw?t@Uq;TKTtMP6O9*U#oY22Ehh=Bi6?j5Q_o0NF{573D8^ z%U=GbwlUUkqAhFE0$$VdjH@gF%?QpEuAfDJ3w6JWeY2hxzO!=sy`7R@ZLWsDOouWz zO&q`|NEHDJXYTexjDl1VpeWw!HE_RvsysZAw2fruzo7Am>~XX%ofuBpTGX0O%}c~q zzo>N_v;?ZF1(e>lQM94aFKP`yFm7-XW1ch?wX`nOr@@ubs@4OgU(~vyZ4{2wU5tXH z9(YVkhn_ICN=m&3LUGA3rcxtB!+uap0KHP{&=L*-v`*7&Xg37ox^1FqXfL#i<3i4W z<BPmhHj1uw@t5| zN4Gj0-eiAxll_>R?6nC<><aANy0G4Yp!`4n{$jWi7;h zB}Orgy}Ua>1pf*MW*mGOEdA(@KqG8Le+Ndf6#Y6zF^#^uH$cRHH-s~ezY3Q=1NK5Q zY%$Bl_}EwB~$tr*2p+^@qZ zrg4vNMYsjRaD$$hk!x!!LJQ;JJ+S$rvjKeRW(vSQ`Xo9WCmoSQ@$X|<5Od~(*{ADYaQDLrSl}foHt;5|2;f$mI1==H_ z6fx^l@YAQnozN~@l(-+GSfa!}jABZOc(ul-AqDbO zYv;tp5{1Z|2Ot#JVTqBGfND=Bs<-sJ7e0X|aJSf=3^8~V$5I^ zTVgx|!f?6OZ82U1t>Dm0D@JM2NT_iw#Nv7^p+*TSeK{7P4IF=QC55@fAmkPhu1XeL4N(3mC#&3t1yuTCJOP?uON^&t6b6AgVmt?(GhIxE^0BDA;zB60nd&|-v?z7%hP7I1vUq3>N7g+X7A6!&5jOHzCk zqcCjIvP)O`^ce`nrB_0Zw(b&bVX@;iXbFdADgpFMDhKVNOzrE7o(<%`7sCI@F4AQE zqDRl98O?|3EYdv*p>?n6Z`qvJHVP*NoPbeGWfR{Vb}EE1mW++fVJd_55nm3Q&xtrE z7OOD|BNnPH`em*`jAAJrk6;vrE!uP(9~td{Fvh&<@S5{2&+Col?w#2i6Bk5McM@->XYutm$UxF8Qg7%saKW1|iWa?<2> zdw8w0Vp|%8CTBxDuGbQpjNzp(%Z1PmTe3U_qcEtyg1Vo8=OFbcyKEz{z%yd1)C z3D#{{mY@|JdTE{2<30M_fBd^p#&3(1yuTCycwFn@fN3#yc44^2+R@V{TRiP z824cmhAmot#l`qEgyC|l+hTkbTEU^0)>&fTw-Dn22*q_+QjC`sN;O~i>5K6bXadJu z95K$C0>>>30&~PTAEQ_jV+NxzY|-*7F2*w;43}Ho7UMD6sXJ_4=a z&`ayAqb|u+t4T>d1<|-ZOG;8kOJ9<&Kr0wN!zIwXvS*i3Wi#b*%yQYYJE%BXSoSPG zJwJnHgXev{k;xxRZ|2j#1@!MY`sZBP@C#JcvX#xbTBH8C4b8{hR};^iZ`6;dpYDFoJIX_MANJl&o;suX=k*Qu5%0*k@uxv&7B{@69i*~v`9+a?sFg3! zN%AM=r&6h`eRQPisZ9Qo@PqmVtMfUhlBub@f`dl~C3BapEZ1^Qjcl&w%az*6LxsxFXrbl|l}kgpky_u(^UI^9n*W2dp(Z6?Y%qMd-qQCZa=-d!TquSdcc4EiT`@ge|^_~ zJ>v&3^kt@|Igwhd6Gp~vzTN}D}Z#T(YAHX`GBWj`6GdL`q& zD}A>1cPORE$7RH0zz3Wi2?$XNyVp@3wLIWZ!+O0oZSax+9b4NrLJjQ;i!!fUhtAgh zC*wBT?$-lvx#{5nVUbyE>XnO~lb1S&>u(;ezd2_8&4r}OP`33?B~%!8EShgbC-G~r zlgPMzgyHtni;}LxI<&{r7nHfqk51Cb%ysc(N?oVRKA0uvsL*`%Lt*)vsL{IZ92xf< z&+>D}vi!8TYV8nZ_rvM3^-SMly7a@HaaTyLug{bHE;^;)r^@pM zW{RJN#F0M|v?)T`!0OI4uZ1HILU1|O zEwR@}F`Rzc?+2&_mNvc67EA9E1A8%`7fGS}!*`u#dcsDBauFYh0MD6*CJ&%eX3?R{ ztbZIvK}rcwI7;coC`c&*ilUTTCv>Q_U65{f_fqH;u7ne_&$f1V59nB=-*}&-+)%N9w_~W@|)X6;Utwi zF$zj5fycCT5JioI+wO-@#$*sshCOaz2gh5FLla<`F)hFJTfU#eD5yJW!IoDsifQDf z0y-k}2OySl=q0T5WB&=X!B*^N9RUX{mSR62qnO5CF4iJ~pMhY;!I#0(kN#QE2wTy= z2%}hv{#uM;8hy1ch=~6t2xlCB6)t@SY=>spV!$qpVu=B_ViZ#bM3pE+@b7_0#=(z} z(vSNi&;na=e+r{miu;Qg#We1s>VXLS8xYDk@B%9R$bSG$uod}f(>u}Q&&4RFk&o`N z7lC&ml5yZ8r1ax{I<&x6+|R=(mK47VqnO4$e#7v32*V9}Viu;Y8-`oB7OKGJ+lu&3 zjAAL`H(?ahh|4#O3bEe~!MJfxOz_BH>FfOgXoRikKZa2(MgLihVjBI}t%-sFuRuIw z0>tpr=fELohb<0#j8QCcVCD=sqA=xv?pB{;A(V0W1yp;HSC={Uv$?&{1jcNxy7b0a zQ&JC*oy1sC{*t%suKRTE4Sa< z75UZXYWQ+Gl(~Gi7Na0l1Sp)j+f5h+sUkp8yw_{se*IK=cp_9b+v%9yKNM0X!MI(_d+mka1vvlG#0hAF4U*NN1;`%2TH%F^-S9+ z9I3yIQIOOFk7?=96Q)*4sc%ClE*ZvDYJ_Om4{8aZSL#R55)J{hPSb0srw0vDxNe(h z8d?CY;<%7AU|G^GiaP#)1D0mbryd|jM>}A_KX<=Lx1QYK?xxpW-gseIbG#t-BFj5+ z*U;@>;a2Ij^XS%w!yD@lZ>%44W4$&3iTwd$T)PrVNG3QMUnSCyfHF+i7g4)t(9G%M z2B8V?f;B)!7~udm<2Le`ZRbA8euC19KwxYigqgaZ538R=sKek6e5a3#fXH0+?Uiuuk z8QNis19xH+OB}c#qnL6)Y!ndT-v^+`~i$&8u?l0FI%yU zN{=n8RLT`;LGD8cXB_=xQ78pJeM-za3XNuLQDQzuu|$asMlq#CyfEb%5Qa;I!~oF7 z!wrIQpgQ}iUzfcIS^*ao(d4*Ts}PxUErjAaEVX43)m!>)3`J-H$6K7mm+csZL15Ju z{o>0mjABWQw_+5AE!uhaxESw&FkEhRTa1rDD>(GhI!jtT5^8)3VsSl|P@{y^UazH6 zSTDy{pbZ>KXa$E}T4#wJ2ttcHAQabO2`vh!^u>4!G=bwS4uS8& zC=3E~#JCruSQ6u-7=>YrmS1r(J_BL6-0HR%UxQX~=%sa5v@1kt@gPLv`YWNu2q}Fj zPMY2B7=k0k*%*aEUyc+PU=&MIT!K*;wrJUxAck)%oh z{gTS%c2TDG^+iuV^4|;L=j|d<8B$$A(yf+J^!ILF*ER|#1>AyBOl1?_9CjCkF_w&t z&0#8o^$~vvHlL#tPAs0lD2!OBw&>^8pT{Vc((!8;g<*>}9mhvT2O*3xuR6TuJn0wO z?d`SBlDE)_961|;ab1=e9LZqmkB=5YBWwxs6pX?kF-MR~F^VNYuD~b^TeKXD3-WRZ z!(~@uY}8>vmY@|JdTE^%+tMgBc`d}_dM%;J7+(6aycycT@f)X~yc44^sLYY&{TRiP zEcam)hAmpA#bx<4gy9mb+p>HWTEU^0)>%E?Q||pI-3vt?fKXhAB@`*3(ih_=&;*XR zIAWYN2aa7B1m=iwK1Q)5#tcSb*rMfET#RQx7%sQEEyjzW6&!kLoh9~t3o)*RP+W&4 z#dukvRP%M8z8H(p1dg{jV%&~V7zE~saTi9hB*t4Y3d0sHzv5!N2f}c<)on380cQhH0DV11B_xxlG8rbZeOou zSzMBHAqK=O7e7w#`RfJk}_KQlDrUF!SETbh33^iyNpVl zDbHe->!000Rno%xXX8Eh{>VyhQ!QKBoU1kJpWD!UzI`?Ep!r7q2>M-NxZ$p)Cr#F; z(;xKQ`G$LdiU@hlxt$P|<}{zOEbMU4rsJ~t`ByeF?q2$_`yF~wo-*xzmp-Y_q4KgL z+xl{JkJf0mMperit{2VxboYDSQ69Scu=lP^KKB2-zTrON9XVTm9CT)J!)w+-s{NK< z6uE|4cn+N)e`0fOe znXSE!_e}f6j*mJ(-xuj~@0VW7bJb{Rr~MO&0puv;m8=djKEHx2|FUN;J*Jv0uLK9j z>pjH|bH7h+ksKABgi1JxaQcC)PZ`LRWxIQCS zs#OZPYQtmUkLaZJOp`R(VllJW$rMUXQvgn!g^L^Y`SH*CqGKER=__lEtk=|UQFFp( zdM#d5AMU@bnyXa%tHpAy*1x$>%a0EB7t2H0qNlQxN4C}Swsse3DQb2`JOz8e*^xN8s07{XC{G$5aHvVWUTZdZ z8lYoq+eWB~ePK=Fb?eaCy8mF5#gi#%oi01z z$S6C7hD)CagCCCC+8k)8B@8pv&6C0Bj%Dy^af99OdFP{klA5zzYR=jrO6P~OWa|mO z#VqN^I^(X8Twk9j`(5-!!B3T{`ZL8(L)OS23EDghX#;B-KTU@cJJhS#fe>!;fK*K2 z6^w$eVgnS`6*)#hSL6YT>cg0eUF~I?zApDiuqpBYv!%kgY1Fp=zz?IEE*NoFN4~N} zVG_N#nNyzh&#y9hZgTXbWAV|-&q8L!J{4R(ZZ4d~Ku_72PlqzO+>22Vmje_Imj^Hk z;&OnZaCs_?PksOCN$h_u9JvC5%du{Wy*`TJT*HNafLdT_(+h2}^e!=;7vp%56uLiZ z*J-9FY;-6W@qq~N2n;Y(f6)&FE9>vTC`c&*3P&k*jDnOBpeRbYbwY<)+Xd;iGT#Zk z!j*7hs@2w3=G{6L={Ffa2rYqAhb^Ey-ZqLhH2TrOa}bOhoWz`N8lwZP3-xG#@3;Utw$FbYa4fycCT&=m`s^=UL}F(!k6GVE~!J2>8Qpb4<1mX=@o{mp$C z1$8Ga*m4#|F^#-bEk<<17eOrJ&`Vh9$9_Gu!B*^x7{yZTw__C3*vpkkMDTY(Fyr9M zVChHyc4&mH=--D?EJgnjjA9ynwFriY|5FgoIQ}YJ`V4plnqi9p`!R|o27G`~Oc@ZB zT@b;ac1$XreuR{M+>eD8*oylijAAM7r(+b;xQko-Mc~haP{yhkQ0Yg04K%@4ifQDd8_GrCcS0oNz(+{w$Grh9uod^aF^Z+QKY&q8;~u{|_Av;<4SHf0rmeeU zTeuc_0XE-O#9zlKmLh%#qnJiqzB^Kg{bLBmjeBB(M+Qq@?{hwb#wfO;e;h`!6#ZU| zVjBI}eRzTZ0}#)c05QDuIj|DiVT%J-U=&Lna50K02XyzfTmzwu!!MxPi@dsIub<7W zLlYRYx$4pzV@*jtKz0&iMfpqKvX{SqZH)DsXm^^lfY-D<<0=b4GlDaP>u1s5Lf!Xa z-=Kx&J#;8@q4^Pvf>aTpaOQ5G!YD`;0gB?iUIX{*r^>?=em&Tx1?{o(!eWA3NdCLpmtK#XhmLJ7$PN8_tR`Vmlu>H0ou7Y&*@ecTh!1bD$3 zps2YJ zzzeAKBmW^Z!B*s_9}CA7mLh))Mlp?iv_U`wej!9M4t#`^e%#N17TAjW1sKIr+%Lr_ zrg4vNMc4>oxIs_M$hEZ?~7{xT=^6mg3_B$aMH|~jRdKoNz zy*~(zuoeBsF^Z+=KZj9FqaWKEAPDd(#4{#93@?2Sya(;D#eq*SiX{%r`Wzflm~ueu z4-ny>521|1FQC$od>=HyR^-pZD3&6B5k@hM{H*hrtyo5Nww6^Y<%+Zpw-&+~NB;}7 zM?$Gd)~Dd7Pl+P5%N8ZJV-!o2*o9F{DG@Kecq@eAQXw$_v{ArcJM*qzj=c|B0oM}I zoVZw`5SjB42*q_+V&o*C+LMX8PNCnu@GLZe<1Nmb%PSa#L15Ju{hG^ujABWQA7B)Q zE!s7gxEQC+M*{#Zx4JFHW1$rsdTE^{EgA_mE`nHGk0sP7VWls}0cZoqUmQ7Jh*206 z=E!jkMzJKvVT{7CMa!_b94iopORjFq@p@GFbY8ycZh5 z@fb&t4`UPti8+FN5~ElW*uVT+byaY4QgVYuw-wjh57t>Dm0>nwF$RY-Em=WPrs z5|UKm(ii1CXa>h?98sQtQ5Zz#i1Jj7Vo8+eU=)TeTAsy4xe~(sYZ2ujw1Pt~t+S%_ zZlT8!h{W|*LXQzr`ck|OTEOuYM~bb5}cQoIYJSd!vijKZ)*%dWT-AB8YnYIVDR zd>&fCp_kTKVh4iI;%g9!>#&3t1yuTCd>@*?@fJsnlNO*sgsqv?*%-x=7#Cm^TVh-S zVYuAtwiuT}D>(GhiZR+1BDA;yB60nd&|-v?z7#h?3pl>wNU?-b81&`zi`QZlOH#ZM zqcCjIvP)O`^fm~^rB_0Zw(b&bVX@S`gQY({ z`UW(D<1vmPZ^kGL5_1H3Cq}U($onx0!xk;a;)2`d^K1N~KqGeiKmKg}cC0Ms* zc^0&S6B4bndb}sO`%iNhio6IyaUGUWq<~6ajO(EZ9B*;NSi~p{0&~Q;9iv$4BX?mG zhAmot#l?6lgyC|l+hV*ATEU^0)>&fTw-Dna5Q^)tq!=$Nlxn{2(--5j&;*XRIAVMS zqc8}}5#xT0Vo8i2U=)TeT7JdFIPDivH_zo(x5aoYw1Pt~t+S3=l^wb&`N;T15RL1z zgdP>N^d&g}t>E~KBgqRf3WLTRNv^>tmLxfhQ5d#pSr(UM1;TLY)on>$53S(POY5wo zF3DA^Nl7*!8rNq@Ny=#HOY&Z51;b~!1e#a&>@uosraXCBeh~2;R2(fVdp6#a?T@VF zHr29~&AD2m{<#g!huBvW50r1zkD%Wbh8yl9^qA86bozsyFW+zv&{K}R=G;z*N^_bI zR~B}-chGU!{QN5$8Fw%J*!>Q@D9@C3ze}Ig=fv-rYPeoB^V8k$c}IEZ?!(@@zb7C2 ze_l^*@{T+zdj4}}al>oVL8|wbUljR;ns*l+oj)-@m1<<|qeEgYx+MI&e)j5o&Z*?8 zqs3a)DQ|MJPPIH*8Orr#i^a^=UdMZO{bI+*8=x%Ds?dbgk6-QfP%e?8#8{=|Ph=)b<}zaH{ly#T)B z1(3o;&D#0%DPAm_c2SeuJw&`PUgJ@GMy^z=6mr#uN4_7?N$X2iSF)w*NTHaktghs8 zPG+c>tyY~v$%)f%aiji=@z46yqZ|3@D{GCc*WzzctHRcL4PVrhfxDkT)z)U*ccstj zH>;=23}+s)fxP zuF7q@x?C9^aL)Q-Eq6_Az&Xix;YmxE_B!HM)sgH_PWp{Q-#3@0GVZ^~r#`|zIxHm} z{3R4H(?O$K_Xx@m**Kv;r1MiOrqiL!ns~=z6f`bqqNqZV8x$70e81VKDG^e=(0^Gq zSE=?_i{)Cae{-RhA06y3mWQ%MFA1MKvaOacm-?%fp+rvZ8`(BMNtj4dC~fxg&p459 z1dpj-NZty`SpQVwpfCuUZ$v;&jtporT+J;Rw~sK~etJ=oL+FL$=?e;t@PgaxosSY0 zMe209d9zhrgl&s|EE@K!<239XuVLqo)v(i0!z5e<38!!qQ-v=n1Yn3e+1?f0IQT*20Gr|821ebF{ zOSM7Uc_#SR`~ayEWkhuRY!*DZ{wx0Z)hE|45#3hQU4>ngs_C#lP<-AK9v<>ld>}ac z$I#W#!ar;_nZwyX!zhTe0Sbq+e~D2LX9E<)e-6{>+H13(@L;Jx!Vh5kxU^1O%!ZrA zB1FTBv%k~DQ@@StEoce6I15m;PCLS9x8$*(LL9Eg5|^@b;$yx>doJUUbH?#-_=U)+ z4UB$A&u1_S5?X-5vE_>xg<*>}{9}(uei;H9^I+VolJ;n!W=8#XvSrXRhLY4ChLNz< z17zQYLrc&l9oxL_NnY$|2TR_M!_H@#|A**!hOpu2xi%ZQ>ApBP)TwX3$-el_2~1l5A%ehlq} z6bVqSlx8pMlg|$G6ulEk>Yp)6fliT_Gr6KU3D|-yM=UfR8U!fU%Cik^-otvM@Gt(+J@?uY^C;FqvaY+0{T;nUy}`0qb&1H+pFN8kMVpG{aiOJ)4ME$uGHP`zyn5g&POY`&L)DKMv{m*EwS~EYN zX>-o^6mR;2W_sfl+0?61CtIWWw87C@j%I#O80W`*%^8*W^zZpGo{m5L`)Rci!Ffpq z8Fe}gPT{PJ!KxSh8J9Kn^_$U2>ZOj&Oa}Hg=l_%`=Vds9OwBwB4d_tH|FsLKHbmwKO6ccOuEtYrTi&mYY-ZkzD_-xwg@?0OvqY-N8(^ z;FDYM4Dw?vj&?7l56!cU-#C9|u&$L*GXve{SrorOt2edu+s)NO_uKRvDJg|*rKGgl zYxbCnhV#DO$mEZu?uu46<(PQq3YOHu6NIZl!g^^r?Z_za=+@KzoZ8S_PkYpR=dY*v z?@ZUz{1g?gPPMm|c6vBf*II5JFA?{Jr%f)ewVq!;8_Tca+{qj(W*UQGi1N7EI@$5v1JWLG1X4ILl(((7y=q|p{*HH9yL@& z(TJdVAxk%43+t|d)-e>Njvr)qgqN$q*h};;?vK3u7aw~)OCMSpdyUz>HpgGLkj2UI zm*`f*G1%|Z@1!wU*k&4oJr|^J%J!O#TZ}PSc!IFMR(+UhZfU|}us^2OHOFB0c<=l% znE!49jKNOZu%S>Y)HZC$EFOOpMw8k3@-SWAjynVk&uU``_D8WHSa|O4Z*_7`Uh408 z3I;98{*#`tnW2=$2SU+*L45G{sRaXSqru?!qmy)UFeuDx4hH{!y~pLn$i>>BCR(<6 zo(^R$+q{8MP^TQAa60ApFbe9F0~BT1CYon)wd35_)Wnn%5aHz>2@P=*gSB?2CO+|l zq^b|j**86*_62h5!~Qf_RD8Bc0%glpC-%84g6@VEE~G=5ygePGAl?Qj9NwOXQ4ntf z6ot3e_qnWw?UTuYsGaK7+bUg5^;d6sXbl`|1}NHekhpr=3URnzOC*HW_PUHSL=Oz& zkn~1q4!nBP21kGOb{j@Pf@{H+Js1TE4pCt2tG9T42Nvz0wBd9@)Dt{pneYyF% z8Qt0OMl_db;vb9I-Pw!KV3E14YG!nj`Zb+f>W`bMS@54iH_LmgRGBdbdFpuR_{a?H z3@YmAzCed2E&|RDr`466tNj=SjqL&y{eV@qHzAdyv)$^WUiU%&Q1K>VV+9V~| z;V$sb5nre~f8_EVyr;hEA-q76>~6D?k} zD^eSpxps^9&d;^}I~%!n?D$H%zrsDO(1_rMcjabj*RQ0oJu={HkpccYQv;fn6q@pF zb4TqWk$kD602LHI4?2cqFW|SZrRoXmL_;#!DitFbuLwe~lcm}fTeDvM3f-^IjlK=D zqp~Ztdxa2gBNE6dCbrmt3L!M;&@r#&)zr8LqoCB-L>XHd;kY;0qHuGBRL^y!U$j{S z;m@PS>v}_G5d`4@cb|8@W*@CALeCWR4*N^_Bhdl<=W!au+5xU_kg_oR>y||pj6jry zwNLvP!g8-pOYl2o@@*>pF7%53Uby4GL3hB3jDMs<6QdRV2F7L=ry%W=yZB6ta^}!T*^ZH7!BMvsMA4$!PUy(C7 zFn%fvR)_y<4(a9Di_ zMnS9&P!v|rjJa6PX!%#dts7udjMzG{)l_~&EH@aa2` z6z8$rza`m?Ib|i9lbEvl9XihZnkuYE=b<;Rnr@?@_>Bo~bMwBEE{wv?oi2=im%bVE z!YGp$b?AOK>i(P>RirzA*$QW&(@r)E7_5%Q@gtCY%Np^wQ|L&jt=_c_8fg&c81ITmm~RXHCLTU z1*K|1l{9~x+^lPtp{w4d?KMlfV!k6LI`@+QLz)YoDGUfx;`F9P(kZ?bJB2C>S+`y= zR?zt=0v_(@Aepkvj%P#~iCZ+bil{kWt-el z%9fnLoHJU@4Les;aWZG)#-Z{SuX0{y@y3l#wlqwiPyxCj?@vLIUuxluQZOHj1v7t3 zv@meA0vz(;$fz;WS)PiW1yUmad*l@l*XP3#zD3fxK#OJy!^7rGZ+b#H{$=yFOzxA; z6K}`3ymJ4-L(W`$gc5Z3$G;>5)~uVDaSv%e`>FIz#X!UCJDeLT(|2B0 zZDKa16Q)y=QXsLb^SMgS87Whf2aCBr&ni!F*KRWP#4&J780#yd|m_**CKput?}@&pzx?@?aYt^&Lum;M$(Uo{T&xrKz5bdQB)L z@L3x-3JQmrq$m7HI>(&YImS=l9;%>tm4Y)A-4xQ}LmWH)R!5Fkh(fe;c1fq)Po62k86 zOmB8Nvop&aNfrZwC=eM$aX~;t@Kq6hh$jkoyx#W(f+$`Hf{3CBDu>7W|2}neRUcDZ zGuyja{FBco&-Qe8)$`O-Pd)Xmr>d)jV})}Z)K5W1>vN7bWV>8X#PM7~^M zPhGupSs|BWE(u#Di`{9-<(A4Yl3r}T3(vSTmy=#N#^I8;w)L`vZn3c}?dYF@3wLs< z-mXll)WqCjZ>ryEL1y$fUnsW{dU0uIW=N8Wc*N>QUn`Q!7W3K>See|)dQ6UOU@gGQ zj%WbO?OPaGX?-nhMxccmTfX-U2Q3mo%LyF~M}J^t#>E!l{cY6mqf1T~D!B|9U8wenDc5*lncq4=D*7MxH(Wb;Wt-a}tVroM##$(tYnD}gF2z^c& ztqxrB{Z4^6<5!*`iV$j&y;pUw+Jb71F&nBj&6&>#mPZ8^iOLFP7j&|@O)?I0%yK+sIzq| zjJN{S%NiAKZ{14Qot?91(_cOSJ#G=9VhPC65xC9Oa83k;4dmkr?&>jQRe1KM}7#zv|m6| zJsV~GOvHM6`s9u3&G2tLkkIbPn6ZlpAK*g@N0}6}DTE}PzG7ihHUlq;voYY>Iy=?$ z1-V>$SH_cX*=cnM&g#hEcw;MM4dEvh$- zT2Yy#6caz95fL?~&>X68&D#TO=}MP29zTsWHL&c(P}*@p7T7(v9ZL z&aaBG*44@8FY7z$Y?ZS)wJw{{oXvqy@yYeo3MGlHm4}w{7^;)U>SOXq1Oa>9-Y&P; zktvira6}axjz9h7w7BgX+6f2pciMYXeg4r*ot<<#Q$P2{DUoj$6K8HJLoo>4VtZg< zIF+mLAZ=$Syj(uYhO!X@xJ-YZ&3VA-b#@{k&VI1CFPx*6xAcb*H}>FvT@iivw{x^; zTC>lD3`}!wJIe}Gl`IW@MzHp^{BoiE%szpf97({O+|E%G(lRy(y1NuKWNA{`U1ID| z%lVSVMLw)i1N#Q24-&*Pq zHZIr%>h83x%z}va?hC?xYpFlexFGw)IVkBwG!|h2tvk1;39`>L3O79+d#bOtdItIhLrmoTtmP9HyMc>)IJgfq`{yAeXm zm*MouyQXm7nV7lToJAy=AxFHZa3d}=&b)aJq5wUV5iaR@sZ>a3SsXz0?5qk2vK?$C ziBtTQpN3e zQmAB#U-DU8Y4(6s^jKI3txUo2fWOqwSFcdyG+XrNI>~NO^O#2HmEnHGba*aB7eSYl z)0KsR_yZfV7H#ap);1u^;9LG`8WM5tT}2{@BA@&eTh_anKZY-@%a&2Ng%#qeEwd)_k;N(a_M$=V}=cp$Q+y4>cP;O zEf`>Hxv=63>jC7}u5B2spvbg}K#bopVOA_`U{*>23L5_4M?-&{EB=ss?S<$I)R+n1jAAVdtzQu<5!oylGhWt-GjoT(E);Tz zq47B^a_lTT)PzVq`DuPUFU6Pq*<=EA>G) z;KDO0u|lbWPDt=%Bi#_MW8}cHjRYrNO{GdYjlQP4f?mkMgcFajVLVF%Wl|_j%+Yj7 zB#O4S@AXPRt&eOa#Cf5?h7!v|E!N!p$O|oH%@mOKcg`qiTWoT37+aU-+^FEXbJGwx z+`VXo0)JH}vfo`?P;^DLY+l?EF)K}WL&>K|7a$8hfjokiHrsf)18Y*lGFW#l zi(s>hna!G2u5~SxM0G8-In^AHQs1PFQxtyr9&n@dpEM}Y(7Zg@UG^djThf|%>W$c( z2pq0heZ>4YbunH2O{G2;W6m6WG3$Lg-b^vgi!qY*K`9Gx;${Da1ZsRmNZutUpDOmt zY3xF=Ns|j)1+HV?1eDxf46(9lar8WmZO?|=ql0jx;~Vb z*)quM5qE~Y)G)3zTzXZ=KV0V8rWhJ1FRf*OZ&?lNDDj9!-bEl8vka+n56ZFvaKzn` zqV>%b=}xtGwWlc_LZexr0XnFGZu7Mf7~~*24gim}&;Dad)`jPMZJhR;EE3OTIzd4sRyre;>W6dMopsA(uYFVq*n-&Oj^sQ;34m1U(-su@n^=syM92>Bd(Hete6fUG#+J?Hzp6 zkfFSIc&eK=_)*P%!WwYY>UaDhK~NR=in6*>M7i8Z{DHPNoznANb*Aw026jo=F_e9< z)wg)RLM8J3_$T-E&!cJ#ZlXkPmE8X{_H$*MMg{h%n8c;`O;7w( zN>!*<~&EM0JE3UF~`jR*FDz1qyh^ld-q zf?Ka&wUS=Lvm-1BLL?zLVcdl>!E*II0kVA}QL_edJ)5&W6YvHFtq zSIk^YJ%Zq3(<4l73%ci^85w&w!6mTUOL%9ZM)ok;(=BGUN$NUXAOk zPHQ&5USlsK)nR#0kbmUxe@MHPU!O?jG_YIwAhq!Bm|D`*RE4C4Pl z^v3ACqo-Z!`$L_yjD6L}LWYU~Ur~^!y-xT}7m?r~CJ1QZK_!p%MA#~YhXOI&N-RI+ zj=pDY@f6pi{gCn_GpJW69_<=R|F#emN{{Z5Gx*jEO=tMqrpwW=eoHCj@p=>@w_o@b zC7Rtc2R?`(oxV#B|FFxjkW9RwCOr4S_<~l)QrMSlgyPp?qc0g1_IA+r;i($7*!*W* zrJ2Sz!gvXZSX^|XLrYV&*d#sC2k@}TS@B{jg@)7A_VwJtW_f>O{DXat?(OKk0!-qs zTuy%(Q$&-;ru=<^Nuf&-YF9Vdic-Igu@*<+X13}H^TZ$g;)51JQL zl(8_L(7S^~@p`8xA-%WPSsEo|1P^w1Rx!LX}Q5P~_>_b}Emn1fBB zZ9lstf-w83zO&uW7;+lU1)l1^C%wIPM>U1ZLhUMO;+6sLi~UThg^}qSwZd`G8;G39 zBO`ihox3g3;&LANQSy7&Qc)7X(YN|4iHnNpzT7m(NghYv47tK%b6py#8G)nYH8Y$z zde=BpAE*hWm4Fc-y#+;01W11!8F3)}eOv{BwAQF3lHM(@1ejnZ_%A}^(#p^iT!buZ zhQ@U$y~mo(g?Vh}Qy&bm<;FfXuKj{)?hgxY(t`(^yKV>)>~5C^4ZS?5^s))_3G$@XPn6pb`ojsVK)}~8z>xmOxN-#HV@&TE%Ac@1|C(( z{}C6ilA-6Vlr^@UTe!8&$&ycivi@D4vM7mCR&7w@{RB4UJxt^gnys4T{gkdB1)*kI zp?k^(@j;KQzrm20KuWSz%Q6Qg85}7c2%T}HbP!!Jq{Oa90aBVT*9KVwrGrdBN#>RS zPFnjc>P_>$GV2yvR*2nKagYiII9PMkei~n!xDHz+wK*r?GmbU%J<(R@gnn$nB(6^^ zRItB@{87PHO$bGZpDXiaadm38BrlPvxVf4ZO>K3~!ZL{b261mq7HcTWSSl%gpN)1a zE~AIRU?c72SXQ;XSi}O$t-jdw{yHh{`p5$*eB_BLO7xLdu*gGE%*cIN=*R=10{#9n ze2z#PwX9p$-rl~x%^}_B&smw2rXr65dW$}VMkt5K1F7D~gERQPjIoJM<6CCPXSCXM z8DFuAB`;fPDf0>ul3LHex2y_0+YXi^mTd%9xJ;2YFHyg`p*-?pqer#`{YU$mj8s5O z6)lSS*Pex@|9Uf*9xGz?C%)dynd4{PrjBOLnvthZHLm>*)>ZnJHo7{JP`AMfD}5B1 z1izto6YNf~d*HW1_QGyz-2wZpcLVH(=KgEBefD0^-LqQ}H_z{C?w#Gx-8#Dwa_8(` zz4hDT1tvEqi`tbg)c>tK=o;Vo#SQO`Q^RKVr#4?tZCVNLGnT+cPd3i!n`SO1=VYplDY9483iPm%Rl`-HSPi{iY&7wbz1UTBrybf^h#G+g`6O?kCU;lveRq7}?lX zeDX_m#AwWBoOH9X2uaoYN6lOks`byBxinhqO)BQB)&19v%xvpE5{A*4jZC}$nXw>A zS-{g~E(uw{-^^SZwSeh?DF)35#vL{+-F}GQ$k@Sd#6^gDG+j zNi%`tjjS5>1B%ti)czV{F_NnNE;E;eYQN9SrP12oL7yYlEZ`C&yM`@b-^kLZ0RNFO zi|dSKOUf*6GjmDEEbcLLY1Awxghm5jFtV{VhX^Q~CZ@C)x1m>lFj5;opY>y7No?k6 zVq@rPT0_l>|JumPR%sD5rC24cvGxAk#(K>aykIPbjmB&+`*1kqVqg-MviH(WHHcD->NwvyTjl68N7HO3luaRk%oyKz5=**^B=FMCz zOgZS3l3e%?mRl9t^$jnx4 zk#?yw8<~drLt{Z~v}V&Ve`)4oVazrS^I0>Ogc|0{W-b!wWXw0Tj&Ng$gFl3uXd4!ouLXGkSGZ%}p#M)T6QJ!IB^IB?@8DmLo zOe|Jm{t6S-CW}T+wmOTnNuSfmG|4NBrLfVLO_LljbFnaEnL1OIncpOGZ|ZA!BK5Of6^x@mwBHmdkj2P%kGi*tK#1 ze@>Ru*!YQ(eiwg_0#nT<@t{HU=YHd?cBl%F+ou`p(vhWT|fmxLPTLuM`(Wr?-3aKn7u$i~*f zB3NlVG|aylOJZYUu?h<zaT+YIp=ndZ5hu`D*avuU0OnYmb)v`zC| zVCIrg^E}?n#iA^+))sD_tBq`IjchbD&n{z0Y)mXxVN+~rfGH>OJbupo2HpJbFnaIoBndE znM*=V^Bra`7G;UGv~YiUqmhlRiH(M)dAG47HYOIUuxZ+^fLhahz{t&3Z_%cya~qka z`9ot#Z1iT+G=FL4VqwlUP4ihZmxP+;%VsVXWr?-4>4ANNHCvnX1{30F*w#Y)hHh;( zcCeSREJ>lK7BiQG>|mjpOQUu$P1`S8vw{Vv z*fuqoK-ZN#xI~;0dMfs(Gaa%(uh%$LQEhDPt)gA-Vorm(L~b9rT{r%Ybw282IW;WY zYOE(+i>CcKBYm7=H3W0p0@<(~u8qrim$4W|mm|0YjXHix@K!Sylgp{2EO(o^m|TwF z5?lM)M_H=+A29N2xcW6-BUArBG?pW&`v0YwOG5SkteH!r^{;>YqYU6>BeRALKxZ~G z7O=z7CIFR`1?*+!l8^bP_18J=F(`b>kAE4qt6+c+17nz%&#*W znRb7vu^>rVz&p)c60(3>%v>6^fY5R_WdwH_`88|=A$}uc2VXLlB`G`jzL`rxcJP>) zOQUuWw z&Y`kBJrn2fw$K$j^p;&Eap-MrE7MAF&Fmn?3?>rC_D)RaQl-*>tG6BRDH8igzW@vU z0p=B@@V)kM`sjJROxlBc#`_XK1I9s#TfFDAd)0;EOk28B=~TwWLA??F zO7d3r(OZl6qMp@?b;oAhQo5s*-O#bo?cZD|W)?Ze9>|aVox_ScXUUQ_N4-_*OQpfd zf5*XdKF`(Sy`pC=DqI|mEqc<9n*Kh>c|ZJj*0XcqUq=3D za;GDy<>W`o%*E7Ya4tbx)&-JNXD@J}R{5N&8|R;0a*L(;rCgz0p1&bm?x}Rm&lS?C z+gX{7<=LqZOzb^G@9y8 z5i^h>k2ST z^2aysVZ@T&6%e*MspxjYEe?3kLPMmfTY$6zz9s@4S0G*E(6MKdcQ05l?%rqVYV5JV zRwT?71Kxe|5sC6Aa{se^Uk9m9##_|0#UjF%p3|hOS-T@jbE2Cr6jNo_!FlgazJSiy z*^CauDHl`uQeQUbW}Guvf8nI@u+7=r;}%_~uTUywaXNf^(+Zq)U+O6o%k$FNV!Dzo zJB20+TIlck*IbdQ_fh)mrrX}7P8E~nYamYkw{VI^C1Gi^;Nrraif#!Asm)2{Gfv6vOEJMqWr*L4`z0quq7@69vKeql zm5^D67Y}@#a>40ALS$X;ah=`*-c1+4Dw{_7jFSe=D)A5VTY6?z-#@~NdE(MrBC2`f z()ZU;jWwRzZTsgTYxJM8RS zolLD3L{dwIuAFZu@ z6I|$$B}<&{VxiZmb|#ZL24&RnPEaOV)` z@YZJb2%Zdp9glc#js=KkusbcS>~Xp1Qab)tJNwhZa}&?|@HC8RTZnN>7ra_WDqYTQ zN|Cc&%o!~8Z?v?w@;o|_MY*qiQ?`^Xw-7_cx?P!C(;VsD+j}dy7M>d@wts>16zB4_ z9M#(9_X6#yOs3X*hvU5(SsV_z<_ObzUCDj@?Zc;J-a=sGC&AoHUBNc$y$Wj&;66Fr zdJYe?h5-m7n#;_9!~4rw1$5rN!vne~ruqadAb=3W4!OdHY?}A)0uneW-c^?heLdMy zS#;L!7B^iXgKlqH!vM+VEZ|F*8-p)O&24}edCHq4??WbC{mcP(cEZ6{a^;p*K$PxE9&Ji@w!a$Lg2&;95&*<76<%}l zXNR18u%l2q@;eH7OUq+@D372K#(@yx$~uZBP4~*#hlR3s_B(4f9Wdk$7#ct+bF&N7 zAPaS$DF8H=$()#@>@F00nX~1cg6fFzya0190qeSX^aKd6D6><&^aNt0>829Wji%pS z2r1q z)Y=eZu19usWYLp%bhNZ0+DZ|!c9*;ctJFvU%;|LzPRk(pI(N`_+hxwtD6B+_G92j* z8ihS6+~fPX+l6DDc}pC2rXod1Tf9JoY>E;T4*?z34OMM-8I7pLvxK7s zud4wOARJXOxUcw1i3@}pV{l(&?bHh{nO`J*!q`Qc6Znytizx;txY)$ter4ujioppk ziN)alViZMpFC!C!qnM5sgJaW(!^|cyk>?m zLRsCjWBQcV;>ay%t|DKJ%n?dW0Lp!>4~Qw2Yh?W6xyV^IMCBsH5tNrP*ZDJ(djxhqep zMp~L;1BhS(y(j?=|Dn|S4qqd6BdIHp6veSYQa75pn2?mw|-aGWu#5!F0c>qW5*;L+OfPNp>|fEU5$xP5tk<=0n7R+2sa8PiufrA&DxtQRf;1bZ>cxjOF z;DJ3>ioDjyTz9N>0YAoN2;lB&R!Mb$JFbbKo7SZdfx9=w}}A;?**oz-+JDKDstIQ({KI+3_fFBH-*d$cP8bevhj-aHe$y5}@r< zyEH+NCXEijW*M@t88Xur2v(0cgDJ|OZ^S*a=Cg^dZO&E@<%q%3WcczQs7*)>k}%cSKp@i=Z6b}FZ}fW((g3p;}; zMq^_TcB-#GDd96<fMeUWe8RHS z?xjKvU_2@&wgD8GohfUdH_s{cx#?^-mers=I617X&0&%62K?QCzwU)?Fmea4(aKu6 z{-v|Ct5C?fseFqpe0z6mXJ=EPtCX&=4@ck+vPI?|l#QPh;{C*>@3CS|@9Eq%1uYFJ zS~L3HYX~XpZI_rLXgRM8Ku>G9(+7Xxf+L}eIq#(<YYpn~Jz{TJLQ~pEQ_1le&#&S%0nV(5@d+0Yh9NpeC7`ONese8zJBa&JU zS?@A)F%4M-7n>pLeP%AEA*q1oP_1;5@jTz+DyDsE!iBwSX>q4Hl(2_RJjn~X@j&oDu$6`eaCC{VmBD5oj-hVM zQU4av0`&|gBnlW8Vm!O9`MBoLt>#6|?3)^_s^Y!hvcdAeitOX)3$9?+xVwn%QtI^@ z;+zY8)HhRcF%_1NcISx1mNOMnO#p>FlLkQHQmRQdQ*i=aF;K{^h6oCMfrbbQ7X{Q_ zCpzTc#hX_Bwg<8|!o>cOgoz=s?C|31NGl6u!#)QZd<};YI8G1bDBDozuIiP~H?{^# zD7n_pq`F<}VDw?ilCPP%F=YWsEivU~W-ca7DY)2R%4^MBOqfz|NgPw&ZWKv}Qlkb_ zzMoZV9hj2q&Kgs0jLBbDgaK2kX6$*S*aR@;_Y$d~IJ~RzS)~2C6$9yR=?#xrU0y!R3GaQU=|F z-h9a@#d2z?6o5;fNdw?=56H{G<(_oKz$LpHBDnMg8X~wnMynH4Rh{Va(7|Jm!TgQz z@}lhoFPVwj;mgxaUW4?PKxA@8SY>>a7QU_8#Noy^VF@wk`$#AiYIxkf~&ifXr5uIuVfhZDhnj z=8tg|2QtH5jzpOU3{tKj%#>ybnArwKHZXI3unP{FzVgnf$o4J@E zqu`P_WIWv{lJ0Rw4P;!!sx{a(7$GCqoi$|KGbVps5eCSpTCleVDK-Jf*q=xRB@Y=Z z7FyCEW4vaD6Ea4(K=A!s&AnTdlo7Bv2IWlzEPenPajR=>HjBbG-%Mt{L z(&zvX$0PHa0I|h8V`in3LW1K>y4O9^GM_m&^V3~ zapd_aT%yO=wA&Ca)lVf6WkZ2hXqptYy-h2lxOI(o zt9qDU!M4>VOWZ(8RoI`^Q`nvs?-t0siVFOQDljS&wHWLm!gYTYSJOjCHQ1}m17sy?;5V*N3icj)l}`ePhb5qg}>H%kk8K@}h@Ax53YV$f+QBE7LV@JghZ zcx6fOjj*uvMlh2|aq-IH;46_Lt6onW-g|& zv*2Pgc21kQn8wb6OX6eaicusT5R96!^M$NhgV4x0cILXP-Ivf{nEDg3ec*91`Rj@> zjGa{r_Lh)h6Bs*xAdw16e(d}{3oU75=XlMG?AY1&b2Z1#O3KLCc{a+M$k_QC$cT@f ze}Jplv9m8|?Xk0bB{+7LMh6hpip*<|owY?gi)B^>X7LZBWO=6p7Z~9BKTDOa^$zyO zFK7AbBHCQb5OYyI=_5jJd*s+cDfrm;A-~XC0gv(Jr{Yint(`n*#YM0x}{(~Nx3GcyCy_RFqxm~vM=@&lrr_E3B}rQlHf zbH0)^D84yVQY!wUQ1PASxy?aFGz?G*uI-SuVSqGR3h`2lNFM%maZi5I9e9AMuf5(gI5v?`HVDHb`+2Q)YNvdfY+tH}0YkrcqG2N0%> zq{4$x9Q$L97JvY(DnM;dM0F~@zm*jU0L!(|0D%2E_2>!)E$q00ZA=!?1U9Yv~0q$f{P7~-Pz2=gkuGl#BuCFMv-**HfnIJ1ChfE zS&icvuDja3M+nFMnVC%xC+mtZ;8@juz30eo6Tq>n6RDu&aqKBEwGh^lhGXM3Gn_a! zx_6#%;WdG*k}(2gA3<#<0%Xfj8wavmaTNz-W!EB+Z1m#}(W?cZtTZqo;M=*VyiH3Yc%vKq0LxX8P^HR0i6se5DmyucqTf3(q3 zz`lR5Y7N3NBkbe4vxa?NkI7$GgaP)cHtcm7yW)zbLTaopOP~I{q9DMCIbCVf$BK)I}=xN&`dag)Y}Chpfo)I zoO{R$Ye7Ignt6ayjtB(u8%}e3v$OKV<*V1oF7V)5Zz9~+jyRxrTlJ3TSzE9`Xxp{_ zgVN3w0;BIZ?)kC)SFvl0n8sa$6P`Ldxe9Q$Q96~U({ob!ey7ll)1fw{a3)ll{osJO zw5X|R9yHq7xf+K>E-U2ADV(%aY&kKTF0aE$b8XIcgr~WsQfhB~KZOnVa*FJDRJ)2@@nc}=Xa0m1Pu9;9-m0@9z+k5qYNlR;_lgtpc}nxZ=g zujHEwo7`fqkjfxMsp3LU<;|{}#~Z1##+nipD3x}PNyxs7F3E#))No}130YqqFxzcG z@O=WM)xJCI4cVr4a!!+CAx&S7$dqkYLg|COlJ1?!w&{Ev;>ga&ImpI%45HTV&*VU- zhlFccH4$91oa@Hc%LXnUXz7{AzkY7%>616Ab1W^C>q6DWY`b(k*>#egcLT}B7XmZ~ z3@o-~Xll5T62ha|EixjF53sVEYle1X66%_aB=53FQV1rwh9%Jyx?^W&pc#i1HzW8w ztf0?PIk|$GR6d#_?xz>(QpCL$rP35J6^i(zMG{RBlq8}Ev{ke33TtNnK@x;j^)sca zy$zf+-91*f?tW^a2u*j>pooVol4!c4BoW>1301_q^sv(QsP$%8Tdyc>?HZT2rlx<^ zt)`bO%B-nrI?DW_MG{R-l!U9PwgdF8LQm~&10h%F1skexh023{{d^!uu_4zu!d?omJqVq5oXTai7|<{1fvM$glH{;KEyyQSi+*}IVZA{ zSb?qc?q(c4S>|WV^YKQTGbfKh#GF?D^iC&J0G!U2+MLv;LN=4lZxEP0gzK3>w)8Ca z`Ak?-$P|1tWj~ZYs&(o3SQO_fO5r1@UGya;-aF_SfDFO!mFD6-ap{dzKp6O-Mbr%H z=8(AcIkwwFsRws##E&_)DbleSgfSWhTcRUi=Pp8x`W`#g3E9lyM-Q-|gI9!|r1TMm zw~1yEp5?uqw*)`5DhSw^Q3$zSMurL`uns0_sgCRG$Bwgnpg7q|NG&;vwomD8KY?o!%G7&I`7GG zW5!gEQ85de!>V&)!{&QWJ|%`AI^}Pg+!*2S3`26+t)Gec-ZPL-5|b-4f>k1YQTVp< zO20EURLe=0$NfyUb3Kf{^)>(WRa5sw%S%XVIngq8We|l1-K}SuXc1hR#w$-y9qUNL z!IiR=-OXG~6D@*E;u9^cMv(&kYiiN$&J=nPC>-$KgVI(f<3<^=zX9)h`bp2ra5HXs zpgNrAYaR@d!y$g-L<`qlu;b86Cg%ji#wjl{vk6*2_;v558Dqw5^KJ&c3h2vQ4h5iZ zQ|;J$f$TPciI%exsi5R1T27Ctg|L=LGh(78UNgfv(Gv5$XP~#Jy-&T8H8R=q7-}_< z$(DYok59H-hO4;AmT;FNCtPB__Y9OP_`RnzLm20;$RcefU5*I$f&Ri9HR<9sw=_HJ z=#0!qyFjv zYc?00?i_|C#S+#NrP4)A7+?gOFXZR3Up%glF@eRK%CWz~|C zfvS0F8(8gg59H;b_~UfNKry=-8Yor*4RN*4(ZYzb`HZ`zPFUP-z21lAZUn_!w!?}S zA(b5@KCRa5E7x2C3(I%Vt3slh;7!#IzGG|$mSFfBekRrJssGUjg&+47Q#Ta;C6Zb~ z;Xj+Xn4qxWVgrT$W#(dn!h%cUPt#UNb%b)+S@ig^K8SDg)&?!{?N>xoLP<7?#Nqa@Tb>3RWx)X( zc_t0O#lu|?un&=rG?>}rUx(HCfluyK*72foIsPTXj5sC*!MBXAti1IKSmFg50okxMU^%P*mV<`W34Ev1|TIS6dxdJ0P@WUopxv49M(l- z%OwO)FZO|?jJ!q?0Xx2#g-i8>xOs69P%gK&aS14I6s-#-J3%Bi8KVX$r6K?*c_s}2 z%JZrA7@%BFR}4_Ht04kPU!WlZ$|J;Aqjf^b*1=4StGW$$K?N1VB15v_zfJ}*;=0|V9h}tDOBN>*HbwC zn9dVa0pYEUV^H#D;+W3km_CACklsbmtKyhWQXO)pV>-DJ)b58Ul{ltTq@rUw_qO0A zj_K4=?LlnW2+b^|SWh7xMxzUi%V5XHFcrFDV;FWdv@wi8|3h0~yeQDl>Kw&b1jGZ` zkDh>dNUTN!;(=@u35W-Blx}T$@UCjv*9t?HmKii>%YoI^ekLOu5Dykgz`;=!5dVm; znYxEpA4F2i;nio%Tuj3&!Nq2H^;I($)9^}gNql(quu&wv%NRAos~@v!4K_1lK%DEY zcDE*Dw_;`StuguQiZBeXR5SM8Pl`=oc=ew|Dk%Bk)vFd-(uP;@niF1q0&J1_9Ep5@r-T;L-x(A@q)b zxW9*sVL9>90U>A|2BO|-KNq`o#796A)?+62_1l$HD6}z@?=X?rGAu6DfuRG>q=B&b zDyl;k7C)7)7^GxZLxYq`pdp6E7y6Y_C!{=N@W8mAwGmEMMlwdMiDU;QPl-e={4A1y zkyHKLB!txNDEQcIw0cYU*yU$Z-EKM`eJgP<_O((sbnHh`OXzsDnTrWJ3NAL#@g_4D z6Lb_@5{Hie&nS|Pm_`kByn|J19ng{M&Kf#aV)EA&VStXR343KyYy!~nkwhvedFc3{ zg_bnv7_XV(gpSd8w({jQVWSc=0vpdqffIp^|3pT79mV+7@vu?rVH=?n%J_wp6PWAPeXl)c`5kyirPQ2X$98p>230K9<2>3IHxP zTD>IzJlfA>WC5Tmkm#^RRqSw$ua&w1;2B722>`pyTucB^aIpb^eP%8u04TU54glY3 z6iLTDqXqz8!m70n0LXP`4FFG#$zNB50RXBd?5!fjCIA5MPNag82Y?^7(2@oK<25s~ z08lx)ngCFV83BNYqriy(z=x0#2Y`>^DlTrQ^)a;ppkJC`yinR50N_Go&!=b2UtqQR zSxErM_IozO3J(ZyT0B@~?LXEL&f7)u?GzBu3^zDDYXfpd`55(XY^=3;_@ zf{P6dJju+(1Oo+^#9`o@j3VjIb=1JXvstwUdjaDVGS{6o3_LI zgn!X>#=JiZ#QvnM0s2ixwl>gjHVoyF;EDsLmK z8`0CpbeZh1UG&s9l}8dWzb2KP4EpJ}lhD2l$;UJ z_gmCxBB1Y5sE&iat8f(u`t)u_BERU4QmQ<`$e%Plz`x&-6bi0#`%;)c5rZIWNC!VAqg-z zMP??Upt_-e;8%_IZV3dx&<|8C}D zf`Nid;xKUX8%-!%_qd}529Afw;jY051G(<3Vc>(zY#M@rss(#Lrn*i51|F731tkvy z=f%{5ZZ07h7_XV(gn@h3>=kP7Mz5rdfWZ4upNW9LbD=m60y}UO2Le?GBOzcE(#lRL z2mqzg0YrUX_!>AscoN; zJ0*#XjZknzw+!+HvO|K=?U|&i5}5X#>6S3?dOwqq-Ah6i=lb8g zG=}{X-Pfp!3Vy;@PTg?uZX~sYgI_XpF~LE>#Rd+3-^|4X2L+eJ;oz^0BI!PN)WE^V zShWV>nh_3i-C4uIkH+M$E5Z;JR4v)NgA|(p9Gr4y5_mm%I5+`vnY!o@9E{h@aKgdp z{HgSJHA8|*$Osy|7S)*u8f=H&I2v4tt2i|1cRLacM!#zjB?)3dX>q_%*OBpA1OpEg z8OhmTU_shI6L+KAXC4xH7r>A2o2lN%tZM0Rj68W@y0 zBoY{unfZZ1|As<@eMWn?M1(m%laUP!`sEpoNbpKuDRm>k%aPO)30`mJVnTv~iwzR| zA2Syd5)@n#M}qenMbZJ#s6m3CWYt;+66CtGMuKmN$zNB50ST%W>|H{NO#li0CXotC z9tr-!LQB+1iyb@TH8Y$@Fd7*2{aj5bsHBWQ!ETf{5hytEEC~gt<0=jcPVohmSTGtG zl&=KApfoywsI0J?!2*K^$ejGZAl-0Un%nsNaO+&z?;Tv@O`yLvc_I(qR-NK3l#lRe z{IV&%Nl6gcLqem`K>nRYVoMMxiwh9QGid+>wo%P65IB#n7zkunLj-}oKtlw9N2#6a z>x6+8O9oZmMj$w%O9pkB?4V$D$)L(32{72CvXjk1zol&dB%|$H0>Wi}CL_CKP%k9! z!bVka@B&{gbwk4Qkkk?q=FD77kWg^3frJ;CxtJiK;F35btQtkq-S((~gjca@tpgHr z-C0Azb7Jz>6=8scsttQ*lVTHqgr7~Mf|7@XpR&-B1_|ReGn|kx3ZpbnR}&N}IU}HO zF-n{WDEuWd;_<=X;VKRk>fMZlh0!I0sysnpC`}K*>Uc1)i4q>E@)Ao1#mB;n#KJ)a z5rg*>SX^2oHNfH`2^JlELd>Bf&qaS00Fr+aBHIJW<0u6Ol7H~a8}tu)`_-a}Qau2Y zJd*~1biAo|n2pNqg${dma zkW*x45y=YcS3$bKO}($9XaN>xwWyN7aJ8Hd1T?(D9l? zDkypAxXnUK8gz`;%y2@-Xf)CHb2WjZk}?7ucSU&<0gj(WMjSYP9#?U|QFSm9Hb!Bv zEK3kHN}~g4+#Q+QfX2gRPQhqma{x240HeI6AmefIX?0Yn5F^V&e-r?WUlZcm1IFDb z1qX~@_RAXd3VN&60Hah503*+&0l@eeSn|l@FX)N^Ms_tsz~~D!M8J52IAEzxylAl$ z(LcFqI1X);QYW!0&=*v!3Y5PUYWth8n|PzML~YOenT+hJKv^8o$&9La-?Xz$aM;*c zPexKp(6* zfHu{Dy>X=21VCFlkqSy4v~^f$Nds;1ni)>e7F`S|-CRw~ri6@Owm-r(CxY3wL2n$h zy&G3?m~FC@Q$n`rVnFdm5V1*%17dqlbR@C!zk?py*ekMEO9anexq3~B3zJ7dK*Xx#h3Yh^{ z*NXSl%rRrU7r>4WW?rN#Hke^oLmSL+e>}v2%&{FE*yA7t;oV}Xqr+(#^uu{4RW28^ zU6r!iI#4}y(AV383`}8gQJ`nWjTzH=*}%mEEj<%^CXu&m@t)J}Rrim4;TYz@(i|~f zHV!uQ(4>7zXZlU7?U=?&U5EDUGb(w$1DGVUVh zk_dk#xpag9|F~k^u^G3N?kHt9bZm6{Hy4VTMb5DYmfbDoMa~>n)HzF*v^nanQeP?! zPX0R%p2MtJU-XLZdPRi`94~$;Z*l|bTK6U)Upo=qS}JUBFLQr#9g@P=+IYbanYoy} zAm>uM0fd~~JAF>ojl4j$fokO2CV zdN=?N;1ZP{y!$9W-YExA%FM9+O6j5xlyKh~M7ZNgxTUp(JKQ8(AnJLLOl0i8x@!ul*8AaDRRJ7B1GMOGDYZ^J*W_+=M^jg{bMHt?(`2kpE4tmKJ~y51 z&ZY;pRj2m#FX}C1Dmiz+oA!@!W2#edgLjLo2^0JP#X$?23{k^_P>XsW+*66OlOJJb z67;va0t`{k_{Kequ{`fP5VmI2PKm=EmQsPY4e1)kls%KYduPC(5O;NA)dYnt+Bv?rE#FcurqX36mG5`bJ#KoVo9S@3q}{%9wvcz+O{rWZ z#V$+bRN3uy^W~CL?n#xMjGHbLaSOj(2P4}Ou8OYP-n2AVDzrHp+%kJo*yI*dxtvoj z^v%n;o7^1R`p+$ukbRp2IF{XzcQbhGFe^>voK2}>Hr17L+ni;~Pi>d3WAqEE8v07> zhK|~!(?>?WyM~Rd5K_Wj|9RawzZY5i61tQnOO`m@#X_%B$!E)Dw^VNLEu=R(+1|cF zvFx0N>n8t|zP@5MUzX4KFZQ%ls1(z#v)GxluDQp}NsQRnP)9O6S=M~jTWs)= zYhbmlEF-dCWW)1oXMb9FA;j~(!|<3Phr^VQZ6S5Ebfrpe2O3g#6KgJl;ZpxbOKU67 zqyt%$`wna0lr3e;OhlRa0-3pnts2UFK_qitD=p=|1?{RGbLMT%=4__ivv|Rg3tOAk z%{kENb$h$qVh0_^m?~~?P*IEKv^6=+?v{?j4(-T6$Xu$oE0c0mX%`9AL(Ap6|jXCp{Fiazc?16B_ z6eTEM1g35%*!gB7?6jOn+3aUB{A>5)Yl25>MpZ!MI$tSqQ7PlV_?<{<84$V6%*7NC z5nOBnBKMfNm;xe#OJV_$FB?VC;{hWR5TOCK77$@$Z7nGB1w5`RD8lunA_Cz_80kAj zP~;sk`RhtB1VvP<^|p~xc^f)s9~GObPN4A;^DXf)EB;)0lV>R(ZBC$eu*Ot54J`c{ zq!ymG&=OUe*!?43Gs74zs`B;vvA(Tl6iG=Li6RwI-o~RyJbc6gNi)~VK++z#5|fXb zm;+VSsmR4&e7(N*lIqg}$AU?t0|F=uyMfb-*%r7~w@)=D<|AbWvgZx9pTQS_v{E_Q zUK(@hicLnct48PY7!*imF7Gh)Xt@``{Z$XY*~`{ z+;IXIgTp2MLpiq-VHvfZnX@-gyQoPa74~O4WM!U@@l8zKiJ@WMk@3QA*MEBhCKz09!e+kKInnN0- zvwl0P)*y5+!ey?zpv%`w7J^J?#pEA;-Ma~MCEL84L9e22W;vgSRjt=MlN6f(WcqX> z6_h+=`nZLbG{_XMnc;*?vtoOJ+NUTe2_tZ65z3kfT>3dO;`465#Z??!;+=|wO1sCF zA-G6h8X92IVq|JHLw5}IV{$P({vy_1$Y-(?ol4~jMa-QX*BrVfKX8=s-0HHy^1$be z$I;#x!L0R<9M@|z_kR$wON16|-+KFlRnh#GcPynq3q!%5_6x2}L!P@7Q-sm!$5Odi zNtY`KsynHo>!h4=r7!2MTjTcjv^yw>h}G-dDh| z<*&T+ON}aJd_XC+U7rS#rSbThZQ#St8E=v>c}KcpFqvHq4JM1KhCoA%`dO}**2X3_ z>!r2VF_b}=-(Qez!q42x48AIkua`FQNMOBm3#x0#*!3Vkli^=4ZPEwtbpz`G>sv2< zj9-vg%xS`DMe&1vn`7P7@*Er#r()vB7%wn*_)j1b{SMt zzcuJg&uVj_l89bR52=ZVF+z70__$pdwY13~BD0KVyx-4cyQqHj#WU{n6%yOGT!4XO zU@nv#&KvpY@-s*p>09F0!G6=s#niV5E;fD3!)7j~zD00JJf88iQ6zmBF>2x&Pq1nY zwk~5lgX=EXMd&4y-L9Ad`b13r;n!=#GgRyKK2C~FAf7SvydZiAmRpz0R6)tdGj@Pn z;fXk18mUw<1r)0pRVChgp{_)*%zoy6VSq!KLm_<}lnFU^8CT%z4RwGN=o*3n23hmK zIX9CL)WSLX65vr7U^v>^@MM7DCSmd@_(GAm()HgJU^uB!rBHxDDMcB6csg1OFi7J; zfPrhafdIn=ke7qp4!U9>mt74Fu49>2+#7~BPShWUGpAqeH-PP`4Brp?b_o|ru zbw$wYHPEhVz223i*aXn-Gl^7C@@V&W7FwdNTcF)o&8RBz3dk-Iv>Od}hx|B)yHnQ1 z!`-lZmw5Mp!Frs)!XsJv@Lxqye{e+6g-4?t@a_a9>2ca%o73Bb1iTkgX<_v!_zaQw zzYXy2->6au@G7M!+cyASX*>YDT(b=T-i45t1Ky+PiUD4BHAKMc3p7-~8~m~>dB7XY z|Gx$B21}I);0IS?SB((&*o6KBHfLCy_ z0laTBb1?y4!6k9PdxKFVy-yo8fcH99t-;RM2za^fYWFZ9z}p#mbD@ z0C>NgNChPic)wtwB@OV#YDQIwcM`H2CcqnV*c|Xa4t{a*-5H^`YXjcki@^x5tb9P6 zQ$+o}76I=cgzWJXmU^3zfOjRO;DGmOzu^B}5#E;?RSH`|<|{?nz5(z`;{o91nr#5^ z&NyEJ-W}cqN-48DxP&-%3qb5Dtkvi$-jfpDk# zxk+%V-BGx<6~b1~ss z!6k8An>UK2cU_|f*Ltj4>%g^KceOi`5UzbgO#Zqe47gUcUhgPUYy!CU#zZP8d0abS zp(PF1#%e}YiMKzpO9a>Q9sc#1OXa;eq`eQU;vlW&)FqnT$I!6^BDb=(0c4v+g}oMm z>{o>B_CWRkO2L8bm;8eNcLCWSHL4T>vPvn+*bP8d8V`Uh*K7ko_G!q=Be%b&D+XlQ z)ewQKFVGNy>`~gLU9Gitj@KHn+5@F+a3rhpHbGeqB?ey`dq$-FtNiOhmO1PoMql>u zPk36qz;-B2Do=?o^;-&Hj#-}o!2FkQ&DBjK`5m=hNZu_5Hbt3jxAcN3D7a7Tt~_Pv zGf%#MasVz(pckcv`46Sr-Hp06hRt?CQcIY5u$hYqW(qDgF!OLT7Zc1BTmpIvf5S_v zjo)=6{H9Xxa-&E(x*9bwb1AFVI$$Q(U2QiXf|)zUu`R79o^_f>wRi&TchOU@IV#N zdkLLp5~CCE8_+r*h5P_laib8u>zBijeN8YVFbB?S$+) z-C2ByO?wq%KhXB}c6@j&HcF;Vjp>Dwdtt@RV<+4~w|ZD=Yr^tLr|9DI<~+}+EKhjI z;5+P$>u-HrliL%Qene$BWNykKJYqC-y{U@e{C34fsJMrOz=0Jo)7NY+U@u>6UknBN zpWcM-szU#+-a>m%Qi_&U69NKwo3sNc#Gy((eZC96Xbtwk?k$wcY#VH6a|&O!V=L`$ zw^*cIu>B9)$u?5CqMOR}J6U>%@44IFw6cu-dhxM*7kv&74~yM&$*!0o7K*)2XD4mc zdw%8+eFNF%&d&BG?)y*kMd{yeqA*EX@Ud#=aEqYzKd*%9x92)v6MNKBn(Qujjnk=? z_t*z94S%7!i(HiiYEXptKX*|@aB|apS*jR_&smK}CO&pm8Eo!`4 zG#Q3efW<>9z;xlvxLFuv(wgiJev^guNVQH8&9qs|!GIUD|VW0m8zo%Ys$Kj zPDSSXvsyD&aF5nVDT!*NwK;h|L9gRIOym&|oE`B~x_%UdBFYuIr@Bea2~@gjXG$r> zo_rD+$tY(q(cpXXZAGzpfbC+sVgWXGHM9U*7fh`d-lnWc(JiZ6YrHUKd zbM6*&0&D0N`v6EB4Te|wDFJ8shXHUz;3aW_)Q3<%ra5J+6QpkQGpVMAG2|!p&!Z86 z5a%TMjDPtre=0ZhX2GS^j8d%}hE^|!~l+Xky_UkF;qhxhSn9L6w~cQ5L^X0%F)6UGhR z`;e~jXq7ywi@5Vp)oLh;2_uf`s!rkVJh+xqx?DiB_amv**ZQlL^CP)v_)jq>5dsiL z)YBm~eTW@UQ~+mcrf?Py#f8!cB;cg3lygQu&PK?KM1FuN(L9w|udz038AckRz83m^ zqmV5SG1`dWN^h#4h9m5Vv#v@uSDpt<)!9kM^t7~MpxT?=(1Q?6p}5iM#_o%yLNAN! zm3y+KHV0>QH&G;}kS-%6C@TP47v|@bF_^#>h5gPZcDNbWJ&h~(sKrzp#H2%-)CNLL zN;cW8PU6C9={JVb2c53&V5lZ&5JVi==yFw~C4S=4n<8aawh=B-ZLcnD!|S3lw5*~P z0;=-7KOCZl+42bUKgZmAQM*@dI>X=hPwGs+rKH?ekKVi&zys1aB$_!o5$KR14lUjE?41`t}WgUTH@*;;OW-7gq?<*A?(da#OisX^Teg^aWtEu zCpwOXsqRP)M;B6QD*X0f^*PIXFXL>qL~k4yk~BKlK=nDU{L9&^-k>Hh`Ai;om-X-e zRz>AAL0{y%KGQ&R}aYRuqfu3V%ltAd*tAuWF z7+~>=P;+1xGH(;^c+cXe2 ztGA-;Joq!0u2}GgU5$d+$sE{TS3gd;95i|&(6n}5pG=xW{Ny;9Sqt;8wh@#QNOU?) zku`~yL;@(wjHYUN1ov@%Ce`%t22fb-$s@=EAr!*g;wf*&>V|5VXZnH;A&jC*>%Eck z+s9%Gq|W9$r)T82?JnYoz4D1wVk80BqdE~YSw;4;K8$_+*VbnIN$;5@M~%5|*9 zg8hj_6$jn8UW`x}r86e~@ar|gDDllA5JuTE97YLxwD>5>RP~Z-$X_0wdfEd{L=U1U z)(yr`zF?tG>bS*Hpm-e)XAETx1gsfDQQ|~mD2tG8=rI)H&SNOg(G~raF_b3h&x27E z>2U#Vj>X$nQIs=6Q54oqIQ0clc$z|&=cdbkC?)xfm4&}3N+*$6u+8gjQjD2LuIq*F zpI5pc-a+}4R2@)S4$3D|BFk}El7sSn>k?KB%J)Q~_(3^6u^*I&->&WRxxvixc4M54 zh9w8(q|w2K5Moe1j=h@5p#0>J0?eX{LHTk@WLfzWS+kZSOz}&#!8g^zpAF2ynI4vXLSQA@%BF!}7!G8kTFh$!gMbGz`mSS0`&VXbLvN@{gkId{}-b zU9n*~yGmkMuEc5aKJxc*W4sFD5w0vxwMh-5p|Ab0-r89|Ku+kWo>@Ida}UQNsKT^en87&t?uos9`T8+z01GSEr}?vTC)?0Q=qUuPMWuAr|8`7E`NxV$uYi zc!!@L)6v!6k;l<60~Zf?50H%go>i zPA-eHT~}A9l-zO|b3dhl>Q0$Lx>C;OO6}dnLcWaE$~aEz911O$2HrEk<7w4Ng-W@v zQXW{{bL{Hs)D3RlEv68cLrzmOm@vXh=H5R1m{u$l$`IA<&Tbj-R$e}COm!NUp#zLJ z;*BQpvr^3A*Yt8B-O-gwZ=|QC0q>hX#gTJ6cOw(5dvmoXS5>E%p!j^Hw_^)tQ+fxk zs?MMZt-g+Qp|=-BEg`qP`5iasvO67{v*n(SbS_mYp(tP`68JZED7t-xV!0#dZgQc_ zan+`tRL=i7vAUDH1&4{#D(y;1zBI8qG2?bsHXy$ln^VO+bci=FW7CT}Q&Aadm&!x( zW%JNj2bL-pXqIiDI<->np7(}%r7W)Z2|nz=s@_7eqX!dmIkyP?lc;GNxwj+NyOzsD zmdikO-_Vm#7TzCVjMW)DUnPS~y-)B#C~wGl>Vb-KC=(h=E|uRC zbMph$U5akHP|S2>Tw3K0Hgp{O>gpuy@7RrELL=FXG>4u^)fuTuxzM3*RmY)GRHtVu zy?q_NK|-WWO5OdkyYm?kg>tKOeVC?R{)2w!Ki?Fn^#ri{4}c;LQ%X3>+u&;{LpY4?P0M2^kC*QN3)*;)d{%*nf?x?-V_?zg%z~w5)`!y`^|rL0y z9!$8UQGL9oXHoL+*~(z zXxpme-TbBjd`VoL!o3NaFDx;OnRT>{atA*I``=W6fv z`!SDjE0KMFfg8W|Dt{O|#+!spy}f<~vOAH@zX2%|+59+N5n1tDkYz;fdIIDQA|HMd z>WaN_bvY4lACL`1-c974jO>f6tBI`G4`dmUPm-VnDk{~f zR2Z%a^rEadSFzG;V_Burz~os zkKd~kvn8zK9H8?`ds=&DSI?<4hTefDhEA>nUS<(m67@U$I}skul8;%~97vYr6mgTM zuvFOlGm$=;MmnCz-w$LBkv->u>__ASL_S31 zy;!&I-9qHBlR*{|`5cii5V`nlkhc=~Bay!n`Cba-K_cS{Ad`t)MdTVHxAcL0kVsb% zWCM}bH-r4>B9KLNbsUkiF9%sivF7JWJdk{J1eIQeaJV@kGBImsyq?5>fw}O0;$b%mM`6-c=w}GrC@)aWA zBy#laAWMk!eh8#QeI4X>BICXdGKI){e*kg|k?M~?t|Q_+2r`=p^PbKxaK*gmhv|xW&wYPI zSC4~SM9!3X&x`0M^PVezi!0_mKSs`U1(Ma)8$BIdZ)eu2H{KuBP@Cwigx08hLTjIS z65`%Z1ROxMC2XMfxL^zp??8cNF?(-h)3kc zzk=LK?#d6p>9` zAlIcpuBWS;iLA|ltS6G|0r~L;kgMtHT|}l8Kni(~xpXz3$eIesFUue$y6Pv=x)r3I z$k*NivYyBjM1D_X>*XN35qTex+lU-_CCHDi09iv1qyhRCY_1$iTp9lr)Li^%QY1i6FA;ok*0n#kvV0P+PQ13w43iO5UOfc%TdA!E@X zwh$`36{NODqNjsWB#DV@IVJgAcAq4v@JshU3!%S6z4h|K#J$O0mNC-N$hFa8_kt3=-ZACPwtIqm;I&LlEx3{df2 zM1Do&2_hdJ3vw5c-f z$g@N~HU;EUL@HB3E+VqH3FHJK6Q_YR5%~d;hlpIi1IW!p)=vlNB69Eykhw&jBk}@~ zdv^qRfXKx&LEcJa`A#6G5ShL+$j(F_A@U0%ckcr7Nh0N4LHdcjN@NU;G}!p!QMzK| zi{I^zD>lB^M#Bv@zUZYv1{+@t&=nhByqks_|3Y&!%zFIwIFPAOl2pX#;uk5Re6Qbrg{=9|7_%BEKQ>6p`;O0{JnK!igZq5qT$( z_YisCa**4IOgjl=CnE16as!cBCxh%wNd8SAWg=&s2XZ!%6V3-YiAeDRkS#=BBJyt{TRTABN@Q#&$YdfvBl2q^ zA5VeYOXP|!kSdY&X^=FLIT?_7ME*l$f(!BpkzWwGyBp+FL@wU|vW>`jJs_P#4$6Ye zCGt-qV?B_Ei2RJmof|; zkRK3vxeW3jA{SRcE+;Y$8yR?0h+IkJ8X^~L2FVaPatp{YM0V&0*_p_bME*eJV;6yZ zn#kMU4Dt>l>$ZZVh%C4mow8^{}oe2&N$iM;deAOl3)D?m09Ird7B6Nv0`708}Mo+a`;k*{n6`6iLS zS3zDS(t8a^k;qd-o+YyJogjTgKJ;#oJBjQx0J1xg8;IOOr1yG|5|I;c06B%o-tPrD zfXJNpfy^Va;1-ahh;)AdWFwJZ6M2%zIk$nVBl1fkzhysf$5o2Rf)9ecfymVV0hvMM zS|S5PcKZm(-bBXS2{MVu+lgFF zauJcw{4dD;L|*(d$jd|)d==y!OoB7gY?$lr*xe+%SrBE8=RDH6H+ zJ0PDV^2&EX{zK%dAAnp#WXumiCKA~~6b0Cw6%zP1K7Lgl>ypPC*e*@V>q(X>{KHv4yFN16#Li2C6dog-CcrSKd zo!Csx@6`Zj>IK=8$&Ze){P0I4_9H|Nd=;dH$hH3h86fh~e?b04q%vka?1so+#)ABf z$mR(kTZ#N;63A0TGLu0(BF9VtIiAQTiF}qw|5T7mh%Cj5L~jL=snbAa5P6WuPl?>L z1IVpJQqw`YiL}lDX(#emBL5(A|BfJEB68VGkSmC++zDhgk)3u1*^S80iTs+#?Yn^7 zL1fFWAeRtXKMSOb$dg3=K;)V|L9QdRWIvE)M5Y`I@}pxw=Fn9ek;_g8>G=QJyZe}` z>Nt+$ie4Ws5?&L{RJ&b!2=xSX{Z z=3+WaGau3=toQ4Yg3PSImLq2Sp21d?Gy1=~H1bIiatt z@MDX(3wnJn`oLj04iis{sjv(7!dKsjZEzF1ToEhaW%wQbgz9faEnJVY=+7eD7%MuD z6V*@)BeTV5s4Ein5dVZofPOA92zo!qCNx45BrO-IFrY>x!aAsjH7i9OTzgTp!e?v6 zDLC6GF2Mesq8WA{U=z-t6qn%K58@)6zAnCi*x!T=uEccH^%XwsC5}Que=!hJlSCRk zG*V>3oN?lD7(YQwhNY9l3vmB@F$xBji6of6NGyO4mWhvGf30YSeQU)b7`2Jb*F+6p zy#z&D#Dh=?Rgk$uWWlt3Vg}?K5#7ND`LGS%g`r2qaA<-Zkp8h41M%lX0=T~uUO4%a zI0Kno)bPlH*KMK^ZVnMKc2Srt=0XdchTTKOez2qpE3AP!C>kk>;RKw5s&ug&#%74| zko~a8g@%b@D>yTS8>UPW*|2P~sDZ*Mq8LU@6%RnCM?^PB%@S!4`>3!%EBp*+9upT} zd$!mK2d0Tta2_r}bB;I$_0z>>sK^zSP@5;#!2B7a1jgix@nD@Pdc$S73j1b>L$J0$ zY=E*t;eyN}kp+Eci+kZ3v_h9Tq6e&oSDNukAfmMUQw{-Bf zZt4H3LdT-6(2-~>WHjp;!TQ8UQJ?sZ`WTm@uFu7G)h98E`XqML$G8!7eSU3MebS<+ zPg+NPjDC)2uRwR}8Btwf(BdX85j`|pRQP(G@UG?c7u8%X;5?P;OZ3gPY5!I)^Lh!ymp+s+R z%xw;#mK{H|I*+Jx*AbBb*7$@ zJCAA0{@qU`BE=sV+**Re**pAVhR!ej@8_pf>B6e?QEi{u%71uf)$KboV~;)#4vq}% o;gehFiw#xP%)-VxpLMvrrDSiP)<0T4YblxWK)jk?3U5iqUnkgKYXATM diff --git a/docs/build/doctrees/c7n_functions.doctree b/docs/build/doctrees/c7n_functions.doctree index d159268bfb6d8e986e58e2666bd329451597236a..7e828d691eb1cbb197e6d2934e9eb365fe55ede4 100644 GIT binary patch literal 1085064 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

    @@ -522,14 +522,14 @@
    -class celpy.adapter.CELJSONDecoder(*, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None)[source]ΒΆ
    +class celpy.adapter.CELJSONDecoder(*, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None)[source]ΒΆ

    An Encoder to import CEL objects from JSON to the extent possible.

    This does not handle non-JSON types in any form. Coercion from string to TimestampType or DurationType or BytesType is handled by celtype constructors.

    -decode(source: str, _w: Any = None) Any[source]ΒΆ
    +decode(source: str, _w: Any | None = None) Any[source]ΒΆ

    Return the Python representation of s (a str instance containing a JSON document).

    @@ -842,7 +842,7 @@

    Name Resolution
    -class celpy.c7nlib.C7NContext(filter: Any)[source]ΒΆ
    +class celpy.c7nlib.C7NContext(filter: Any)[source]ΒΆ

    Saves current C7N filter for use by functions in this module.

    This is essential for making C7N filter available to some of these functions.

    with C7NContext(filter):
    @@ -936,7 +936,7 @@ 

    Name Resolution
    -class celpy.c7nlib.IPv4Network(address, strict=True)[source]ΒΆ
    +class celpy.c7nlib.IPv4Network(address, strict=True)[source]ΒΆ
    __contains__(other)[source]ΒΆ
    @@ -965,7 +965,7 @@

    Name Resolution
    -class celpy.c7nlib.ComparableVersion(version: str)[source]ΒΆ
    +class celpy.c7nlib.ComparableVersion(version: str)[source]ΒΆ

    The old LooseVersion could fail on comparing present strings, used in the value as shorthand for certain options.

    The new Version doesn’t fail as easily.

    @@ -1465,7 +1465,7 @@

    Name Resolution
    -class celpy.c7nlib.C7N_Interpreted_Runner(environment: Environment, ast: Tree, functions: Dict[str, Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | None = None)[source]ΒΆ
    +class celpy.c7nlib.C7N_Interpreted_Runner(environment: Environment, ast: Tree, functions: Dict[str, Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | None = None)[source]ΒΆ

    Extends the Evaluation to introduce the C7N CELFilter instance into the evaluation.

    The variable is global to allow the functions to have the simple-looking argument values that CEL expects. This allows a function in this module to reach outside CEL for @@ -1514,7 +1514,7 @@

    Name Resolution>>> p = CELParser() >>> text2 = 'type(null)' >>> ast2 = p.parse(text2) ->>> print(ast2.pretty().replace(" "," ")) +>>> print(ast2.pretty().replace(" "," ")) expr conditionalor conditionaland @@ -1541,7 +1541,7 @@

    Name Resolution
    -exception celpy.celparser.CELParseError(*args: Any, line: int | None = None, column: int | None = None)[source]ΒΆ
    +exception celpy.celparser.CELParseError(*args: Any, line: int | None = None, column: int | None = None)[source]ΒΆ

    A syntax error in the CEL expression.

    @@ -1552,7 +1552,7 @@

    Name Resolution
    -class celpy.celparser.CELParser(tree_class: type = <class 'lark.tree.Tree'>)[source]ΒΆ
    +class celpy.celparser.CELParser(tree_class: type = <class 'lark.tree.Tree'>)[source]ΒΆ

    Creates a Lark parser with the required options.

    Important

    @@ -1580,7 +1580,7 @@

    Name Resolution
    -static ambiguous_literals(t: Token) Token[source]ΒΆ
    +static ambiguous_literals(t: Token) Token[source]ΒΆ

    Resolve a grammar ambiguity between identifiers and literals

    @@ -1598,11 +1598,11 @@

    Name Resolution
    -class celpy.celparser.DumpAST[source]ΒΆ
    +class celpy.celparser.DumpAST[source]ΒΆ

    Dump a CEL AST creating a close approximation to the original source.

    -classmethod display(ast: Tree) str[source]ΒΆ
    +classmethod display(ast: Tree) str[source]ΒΆ
    @@ -2011,12 +2011,12 @@

    Timzone Details
    -class celpy.celtypes.BoolType(source: Any)[source]ΒΆ
    +class celpy.celtypes.BoolType(source: Any)[source]ΒΆ

    Native Python permits all unary operators to work on bool objects.

    For CEL, we need to prevent the CEL expression -false from working.

    -static __new__(cls: Type[BoolType], source: Any) BoolType[source]ΒΆ
    +static __new__(cls: Type[BoolType], source: Any) BoolType[source]ΒΆ
    @@ -2047,11 +2047,11 @@

    Timzone Details
    -class celpy.celtypes.BytesType(source: str | bytes | Iterable[int] | BytesType | StringType, *args: Any, **kwargs: Any)[source]ΒΆ
    +class celpy.celtypes.BytesType(source: str | bytes | Iterable[int] | BytesType | StringType, *args: Any, **kwargs: Any)[source]ΒΆ

    Python’s bytes semantics are close to CEL.

    -static __new__(cls: Type[BytesType], source: str | bytes | Iterable[int] | BytesType | StringType, *args: Any, **kwargs: Any) BytesType[source]ΒΆ
    +static __new__(cls: Type[BytesType], source: str | bytes | Iterable[int] | BytesType | StringType, *args: Any, **kwargs: Any) BytesType[source]ΒΆ
    @@ -2060,17 +2060,22 @@

    Timzone Details +
    +contains(item: BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType) BoolType[source]ΒΆ
    +

    +

    -class celpy.celtypes.DoubleType(source: Any)[source]ΒΆ
    +class celpy.celtypes.DoubleType(source: Any)[source]ΒΆ

    Native Python permits mixed type comparisons, doing conversions as needed.

    For CEL, we need to prevent mixed-type comparisons from working.

    TODO: Conversions from string? IntType? UintType? DoubleType?

    -static __new__(cls: Type[DoubleType], source: Any) DoubleType[source]ΒΆ
    +static __new__(cls: Type[DoubleType], source: Any) DoubleType[source]ΒΆ
    @@ -2143,7 +2148,7 @@

    Timzone Details
    -class celpy.celtypes.IntType(source: Any, *args: Any, **kwargs: Any)[source]ΒΆ
    +class celpy.celtypes.IntType(source: Any, *args: Any, **kwargs: Any)[source]ΒΆ

    A version of int with overflow errors outside int64 range.

    features/integer_math.feature:277 β€œint64_overflow_positive”

    >>> IntType(9223372036854775807) + IntType(1)
    @@ -2171,7 +2176,7 @@ 

    Timzone Details
    -static __new__(cls: Type[IntType], source: Any, *args: Any, **kwargs: Any) IntType[source]ΒΆ
    +static __new__(cls: Type[IntType], source: Any, *args: Any, **kwargs: Any) IntType[source]ΒΆ

    @@ -2316,7 +2321,7 @@

    Timzone Details
    -class celpy.celtypes.UintType(source: Any, *args: Any, **kwargs: Any)[source]ΒΆ
    +class celpy.celtypes.UintType(source: Any, *args: Any, **kwargs: Any)[source]ΒΆ

    A version of int with overflow errors outside uint64 range.

    Alternatives:

    @@ -2353,7 +2358,7 @@

    Timzone Details
    -static __new__(cls: Type[UintType], source: Any, *args: Any, **kwargs: Any) UintType[source]ΒΆ
    +static __new__(cls: Type[UintType], source: Any, *args: Any, **kwargs: Any) UintType[source]ΒΆ

    @@ -2468,7 +2473,7 @@

    Timzone Details
    -class celpy.celtypes.ListType(iterable=(), /)[source]ΒΆ
    +class celpy.celtypes.ListType(iterable=(), /)[source]ΒΆ

    Native Python implements comparison operations between list objects.

    For CEL, we prevent list comparison operators from working.

    We provide an __eq__() and __ne__() that @@ -2541,7 +2546,7 @@

    Timzone Details
    -class celpy.celtypes.MapType(items: Mapping[Any, Any] | Sequence[Tuple[Any, Any]] | None = None)[source]ΒΆ
    +class celpy.celtypes.MapType(items: Mapping[Any, Any] | Sequence[Tuple[Any, Any]] | None = None)[source]ΒΆ

    Native Python allows mapping updates and any hashable type as a kay.

    CEL prevents mapping updates and has a limited domain of key types.

    int, uint, bool, or string keys

    @@ -2565,7 +2570,7 @@

    Timzone Details
    __getitem__(key: Any) Any[source]ΒΆ
    -

    Return self[key].

    +

    x.__getitem__(y) <==> x[y]

    @@ -2588,7 +2593,7 @@

    Timzone Details
    -static valid_key_type(key: Any) bool[source]ΒΆ
    +static valid_key_type(key: Any) bool[source]ΒΆ

    Valid CEL key types. Plus native str for tokens in the source when evaluating e.f

    @@ -2616,7 +2621,7 @@

    Timzone Details
    -class celpy.celtypes.NullType[source]ΒΆ
    +class celpy.celtypes.NullType[source]ΒΆ

    Python’s None semantics aren’t quite right for CEL.

    @@ -2639,12 +2644,12 @@

    Timzone Details
    -class celpy.celtypes.StringType(source: str | bytes | BytesType | StringType, *args: Any, **kwargs: Any)[source]ΒΆ
    +class celpy.celtypes.StringType(source: str | bytes | BytesType | StringType, *args: Any, **kwargs: Any)[source]ΒΆ

    Python’s str semantics are very, very close to CEL.

    We rely on the overlap between "/u270c" and "/U0001f431" in CEL and Python.

    -static __new__(cls: Type[StringType], source: str | bytes | BytesType | StringType, *args: Any, **kwargs: Any) StringType[source]ΒΆ
    +static __new__(cls: Type[StringType], source: str | bytes | BytesType | StringType, *args: Any, **kwargs: Any) StringType[source]ΒΆ
    @@ -2680,7 +2685,7 @@

    Timzone Details
    -class celpy.celtypes.TimestampType(source: int | str | datetime, *args: Any, **kwargs: Any)[source]ΒΆ
    +class celpy.celtypes.TimestampType(source: int | str | datetime, *args: Any, **kwargs: Any)[source]ΒΆ

    Implements google.protobuf.Timestamp

    See https://developers.google.com/protocol-buffers/docs/reference/google.protobuf

    Also see https://www.ietf.org/rfc/rfc3339.txt.

    @@ -2728,7 +2733,7 @@

    Timzone Details
    -static __new__(cls: Type[TimestampType], source: int | str | datetime, *args: Any, **kwargs: Any) TimestampType[source]ΒΆ
    +static __new__(cls: Type[TimestampType], source: int | str | datetime, *args: Any, **kwargs: Any) TimestampType[source]ΒΆ

    @@ -2765,18 +2770,18 @@

    Timzone Details
    -classmethod tz_name_lookup(tz_name: str) tzinfo | None[source]ΒΆ
    +classmethod tz_name_lookup(tz_name: str) tzinfo | None[source]ΒΆ

    The pendulum parsing may be extended with additional aliases.

    -classmethod tz_offset_parse(tz_name: str) tzinfo | None[source]ΒΆ
    +classmethod tz_offset_parse(tz_name: str) tzinfo | None[source]ΒΆ
    -static tz_parse(tz_name: str | None) tzinfo | None[source]ΒΆ
    +static tz_parse(tz_name: str | None) tzinfo | None[source]ΒΆ
    @@ -2833,7 +2838,7 @@

    Timzone Details
    -class celpy.celtypes.DurationType(seconds: Any, nanos: int = 0, **kwargs: Any)[source]ΒΆ
    +class celpy.celtypes.DurationType(seconds: Any, nanos: int = 0, **kwargs: Any)[source]ΒΆ

    Implements google.protobuf.Duration

    https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration

    The protobuf implementation is an ordered pair of int64 seconds and int32 nanos. @@ -2877,7 +2882,7 @@

    Timzone Details
    -static __new__(cls: Type[DurationType], seconds: Any, nanos: int = 0, **kwargs: Any) DurationType[source]ΒΆ
    +static __new__(cls: Type[DurationType], seconds: Any, nanos: int = 0, **kwargs: Any) DurationType[source]ΒΆ

    @@ -2932,7 +2937,7 @@

    Timzone Details
    -class celpy.celtypes.FunctionType[source]ΒΆ
    +class celpy.celtypes.FunctionType[source]ΒΆ

    We need a concrete Annotation object to describe callables to celpy. We need to describe functions as well as callable objects. The description would tend to shadow typing.Callable.

    @@ -2954,7 +2959,7 @@

    Timzone Details
    -class celpy.celtypes.PackageType(items: Mapping[Any, Any] | Sequence[Tuple[Any, Any]] | None = None)[source]ΒΆ
    +class celpy.celtypes.PackageType(items: Mapping[Any, Any] | Sequence[Tuple[Any, Any]] | None = None)[source]ΒΆ

    A package of message types, usually protobuf.

    TODO: This may not be needed.

    @@ -2966,7 +2971,7 @@

    Timzone Details
    -class celpy.celtypes.MessageType(*args: BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType, **fields: BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType)[source]ΒΆ
    +class celpy.celtypes.MessageType(*args: BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType, **fields: BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType)[source]ΒΆ

    An individual protobuf message definition. A mapping from field name to field value.

    See Scenario: β€œmessage_literal” in the parse.feature. This is a very deeply-nested message (30? levels), but the navigation to β€œpayload” field seems to create a default @@ -2985,12 +2990,12 @@

    Timzone Details
    -class celpy.celtypes.TypeType(instance: Any)[source]ΒΆ
    +class celpy.celtypes.TypeType(instance: Any)[source]ΒΆ

    This is primarily used as a function to extract type from an object or a type. For consistence, we define it as a type so other types can extend it.

    -static __new__(typ, instance: Any) type[source]ΒΆ
    +static __new__(typ, instance: Any) type[source]ΒΆ

    @@ -3026,15 +3031,9 @@

    Timzone DetailsCEL_TRACE is set, then detailed tracing of methods is made available. To see the trace, set the logging level for celpy.Evaluator to logging.DEBUG.

    -
    -
    -celpy.evaluation.function_matches(text: str, pattern: str) Result[source]ΒΆ
    -

    Implementation of the match() function using re2

    -
    -
    -exception celpy.evaluation.CELSyntaxError(arg: Any, line: int | None = None, column: int | None = None)[source]ΒΆ
    +exception celpy.evaluation.CELSyntaxError(arg: Any, line: int | None = None, column: int | None = None)[source]ΒΆ

    CEL Syntax error – the AST did not have the expected structure.

    @@ -3045,7 +3044,7 @@

    Timzone Details
    -exception celpy.evaluation.CELUnsupportedError(arg: Any, line: int, column: int)[source]ΒΆ
    +exception celpy.evaluation.CELUnsupportedError(arg: Any, line: int, column: int)[source]ΒΆ

    Feature unsupported by this implementation of CEL.

    @@ -3056,7 +3055,7 @@

    Timzone Details
    -exception celpy.evaluation.CELEvalError(*args: Any, tree: Tree | None = None, token: Token | None = None)[source]ΒΆ
    +exception celpy.evaluation.CELEvalError(*args: Any, tree: Tree | None = None, token: Token | None = None)[source]ΒΆ

    CEL evaluation problem. This can be saved as a temporary value for later use. This is politely ignored by logic operators to provide commutative short-circuit.

    We provide operator-like special methods so an instance of an error @@ -3267,6 +3266,12 @@

    Timzone Detailscelpy.evaluation.function_endsWith(string: StringType, fragment: StringType) BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType][source]ΒΆ

    +
    +
    +celpy.evaluation.function_matches(text: str, pattern: str) BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType][source]ΒΆ
    +

    Implementation of the match() function using re2

    +
    +
    celpy.evaluation.function_getDate(ts: TimestampType, tz_name: StringType | None = None) BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType][source]ΒΆ
    @@ -3349,7 +3354,7 @@

    Timzone Details
    -class celpy.evaluation.Referent(ref_to: TypeType | Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType] | Type[FunctionType] | None = None)[source]ΒΆ
    +class celpy.evaluation.Referent(ref_to: TypeType | Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType] | Type[FunctionType] | None = None)[source]ΒΆ

    A Name can refer to any of the following things:

    -static dict_find_name(some_dict: Dict[str, Referent] | Referent, path: Sequence[str]) Referent[source]ΒΆ
    +static dict_find_name(some_dict: Dict[str, Referent] | Referent, path: Sequence[str]) Referent[source]ΒΆ

    Recursive navigation into mappings, messages, and packages. These are not NameContainers (or Activations).

    @@ -3699,7 +3704,7 @@

    Timzone Details
    -class celpy.evaluation.Activation(*, annotations: Mapping[str, TypeType | Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType] | Type[FunctionType]] | None = None, vars: Mapping[str, BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType] | NameContainer | CELFunction] | None = None, functions: Mapping[str, Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | list[Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | None = None, package: str | None = None, based_on: Activation | None = None)[source]ΒΆ
    +class celpy.evaluation.Activation(*, annotations: Mapping[str, TypeType | Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType] | Type[FunctionType]] | None = None, vars: Mapping[str, BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType] | NameContainer | CELFunction] | None = None, functions: Mapping[str, Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | list[Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | None = None, package: str | None = None, based_on: Activation | None = None)[source]ΒΆ

    Namespace with variable bindings and type name (β€œannotation”) bindings. Additionally, the pool of functions and types are here, also.

    Life and Content

    @@ -3753,7 +3758,7 @@

    Timzone Details. changes the search order from most local first to root first.

    -__init__(*, annotations: Mapping[str, TypeType | Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType] | Type[FunctionType]] | None = None, vars: Mapping[str, BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType] | NameContainer | CELFunction] | None = None, functions: Mapping[str, Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | list[Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | None = None, package: str | None = None, based_on: Activation | None = None) None[source]ΒΆ
    +__init__(*, annotations: Mapping[str, TypeType | Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType] | Type[FunctionType]] | None = None, vars: Mapping[str, BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType] | NameContainer | CELFunction] | None = None, functions: Mapping[str, Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | list[Callable[[...], BoolType | BytesType | DoubleType | DurationType | IntType | ListType | MapType | None | StringType | TimestampType | UintType | CELEvalError | Type[BoolType] | Type[BytesType] | Type[DoubleType] | Type[DurationType] | Type[IntType] | Type[ListType] | Type[MapType] | Callable[[...], None] | Type[StringType] | Type[TimestampType] | Type[TypeType] | Type[UintType] | Type[PackageType] | Type[MessageType]]] | None = None, package: str | None = None, based_on: Activation | None = None) None[source]ΒΆ

    Create an Activation.

    The annotations are loaded first. The variables and their values are loaded second, and placed in front of the annotations in the chain of name resolutions.

    @@ -3853,7 +3858,7 @@

    Timzone Details
    -class celpy.evaluation.Evaluator(ast: Tree, activation: Activation)[source]ΒΆ
    +class celpy.evaluation.Evaluator(ast: Tree, activation: Activation)[source]ΒΆ

    Evaluate an AST in the context of a specific Activation.

    See https://github.com/google/cel-go/blob/master/examples/README.md

    General Evaluation.

    @@ -4387,7 +4392,7 @@

    Timzone Details
    -class celpy.evaluation.TranspilerTree(data: str, children: Sequence[Token | TranspilerTree], meta: Meta | None = None)[source]ΒΆ
    +class celpy.evaluation.TranspilerTree(data: str, children: Sequence[Token | TranspilerTree], meta: Meta | None = None)[source]ΒΆ
    data: strΒΆ
    @@ -4412,7 +4417,7 @@

    Timzone Details
    -class celpy.evaluation.Transpiler(ast: TranspilerTree, activation: Activation)[source]ΒΆ
    +class celpy.evaluation.Transpiler(ast: TranspilerTree, activation: Activation)[source]ΒΆ

    Transpile the CEL construct(s) to Python functions. This is a Facade that wraps two visitor subclasses to do two phases of transpilation.

    @@ -4508,7 +4513,7 @@

    Timzone Details
    -class celpy.evaluation.Phase1Transpiler(facade: Transpiler)[source]ΒΆ
    +class celpy.evaluation.Phase1Transpiler(facade: Transpiler)[source]ΒΆ

    Decorate all nodes with transpiled Python code, where possible. For short-circuit operators or macros, where a β€œchecked exception” is required, a simple ex_{n} name is present, and separate statements are provided as @@ -4746,7 +4751,7 @@

    Timzone Details
    -class celpy.evaluation.Phase2Transpiler(facade: Transpiler)[source]ΒΆ
    +class celpy.evaluation.Phase2Transpiler(facade: Transpiler)[source]ΒΆ

    Extract any checked_exception evaluation statements that decorate the parse tree. Also, get the overall top-level expression, assigned to special variable, CEL.

    >>> from unittest.mock import Mock
    @@ -4933,7 +4938,7 @@ 

    Related Topics

    ©2020, CapitalOne. | - Powered by Sphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0 | diff --git a/docs/build/html/c7n_functions.html b/docs/build/html/c7n_functions.html index 73d7d37..34535fa 100644 --- a/docs/build/html/c7n_functions.html +++ b/docs/build/html/c7n_functions.html @@ -7,7 +7,7 @@ C7N Functions Required — CEL in Python documentation - + @@ -10004,7 +10004,7 @@

    Related Topics

    ©2020, CapitalOne. | - Powered by Sphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0 | diff --git a/docs/build/html/cli.html b/docs/build/html/cli.html index 6fe7704..1b14300 100644 --- a/docs/build/html/cli.html +++ b/docs/build/html/cli.html @@ -7,7 +7,7 @@ CLI Use of CEL-Python — CEL in Python documentation - + @@ -372,7 +372,7 @@

    Related Topics

    ©2020, CapitalOne. | - Powered by Sphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0 | diff --git a/docs/build/html/configuration.html b/docs/build/html/configuration.html index bb586dd..f0cb5ed 100644 --- a/docs/build/html/configuration.html +++ b/docs/build/html/configuration.html @@ -7,7 +7,7 @@ Configuration — CEL in Python documentation - + @@ -143,7 +143,7 @@

    Related Topics

    ©2020, CapitalOne. | - Powered by Sphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0 | diff --git a/docs/build/html/development.html b/docs/build/html/development.html index 6834ffd..b6d79c9 100644 --- a/docs/build/html/development.html +++ b/docs/build/html/development.html @@ -7,7 +7,7 @@ Development Tools — CEL in Python documentation - + @@ -45,60 +45,36 @@

    Development Toolspb2g.py, converts the test cases from Protobuf messages to Gherkin scenarios.

    -

    -@startuml
-
-file source as "source protobuf test cases"
-file features as "Gherkin feature files"
-
-source --> [pb2g.py]
-[pb2g.py] --> [Docker] : "Uses"
-[Docker] ..> [mkgherkin.go] : "Runs"
-[pb2g.py] --> features
-@enduml -

    -
    -

    The pb2g ToolΒΆ

    -

    The pb2g.py Python application converts a protobuf test case collection into a Gherkin Feature file. -These can be used to update the features directory.

    +

    A tool, gherkinize.py, converts the test cases from Protobuf messages to Gherkin scenarios.

    +
    +

    The gherkinize.py ToolΒΆ

    +

    The gherkinize.py tool converts a .textproto test case collection into a Gherkin .feature file. +This can be used to update the conformance tests in the features directory.

    -

    SYNOPSISΒΆ

    +

    SynopsisΒΆ

    -
    --g <docker | local>, --gherkinizer <docker | localΒΆ
    -

    Sets the method for converting the Protobuf messages to interim JSON documents. -Either a local Go binary can be run, -or a Docker image, using the tools/Dockerfile can be run. -Using -g docker requires installing Docker (https://www.docker.com)

    -

    Using -g local requires a local version compiled for your platform. -Install the Go tools (https://go.dev/learn/) and compile tools/mkgherkin.go.

    -

    Docker is the default.

    -
    - -
    -
    --o <output>, --output <output>ΒΆ
    +
    +-o <output>, --output <output>ΒΆ

    Where to write the feature file. Generally, it’s helpful to have the .textproto and .feature stems match. The Makefile assures this.

    -
    --s, --silentΒΆ
    +
    +-s, --silentΒΆ

    No console output is produced

    -
    --v, --verboseΒΆ
    +
    +-v, --verboseΒΆ

    Verbose debugging output on the console.

    -
    -sourceΒΆ
    +
    +sourceΒΆ

    A source .textproto file. This is often the path to a file in a local download of https://github.com/google/cel-spec/tree/master/tests/simple/testdata.

    A URL for the source is not supported.

    @@ -106,35 +82,23 @@

    SYNOPSIS

    -

    DESCRIPTIONΒΆ

    -

    Convert one .textproto file to a Gherkin .feature file. -There are two steps to the conversion:

    -
      -
    1. Rewrite the .textproto into JSON. -This relies on common Go libraries, and is little more than a syntactic conversion.

    2. -
    3. Rewrite the JSON copy of the .textproto into Gherkin. -This a little more fraught with special cases and exceptions. -The .textproto semantics can be confusing.

    4. -
    +

    DescriptionΒΆ

    +

    Convert one .textproto file to a Gherkin .feature file.

    -

    FILESΒΆ

    +

    FilesΒΆ

    source:
    -

    A .textproto test case file from the CEL-spec repository.

    +

    A .textproto test case file from the cel-spec repository.

    output:

    A .feature file with the same stem as the source file is written to the output directory. basic.textproto will create basic.feature.

    -
    interim:
    -

    An interim JSON-format file is created and deleted. -These are only visible in the event of a fatal error creating the Gherkin output.

    -
    -

    EXAMPLESΒΆ

    +

    ExamplesΒΆ

    The basic.textproto starts like this:

    name: "basic"
     description: "Basic conformance tests that all implementations should pass."
    @@ -153,70 +117,55 @@ 

    EXAMPLES }

    -

    The Feature file created looks like this:

    -
    Feature: basic
    -         Basic conformance tests that all implementations should pass.
    +

    The basic.feature file created looks like this:

    +
    @conformance
    +Feature: basic
    +        Basic conformance tests that all implementations should pass.
     
    -# self_eval_zeroish -- Simple self-evaluating forms to zero-ish values.
     
    -Scenario: self_eval_int_zero
    +# self_eval_zeroish -- Simple self-evaluating forms to zero-ish values.
     
    -    When CEL expression "0" is evaluated
    -    #    int64_value:0
    -    Then value is IntType(source=0)
    +Scenario: self_eval_zeroish/self_eval_int_zero
     
    +    When CEL expression '0' is evaluated
    +    Then value is celpy.celtypes.IntType(source=0)
     
    -Scenario: self_eval_uint_zero
    +Scenario: self_eval_zeroish/self_eval_uint_zero
     
    -    When CEL expression "0u" is evaluated
    -    #    uint64_value:0
    -    Then value is UintType(source=0)
    +    When CEL expression '0u' is evaluated
    +    Then value is celpy.celtypes.UintType(source=0)
     
    -

    The source files have a β€œsection” heading which doesn’t have a precise parallel in the Gherkin language. -The sections become comments in the Feature file.

    +

    The source .textproto files have a β€œsection” heading which doesn’t have a precise parallel in the Gherkin language. +The sections become comments in the .feature file, and the section name is used to prefix each feature name.

    +
    +
    +
    +

    The features/steps DirectoryΒΆ

    The features/steps directory has step definition modules that implement the Given, When, and Then clauses.

    Provides step definitions for the c7n_interface.feature. This is not part of the CEL language specification.

    Provides step definitions for the expr_test_bc.feature, json_query.feature, neither of which are part of the CEL language specificaiton.

    -

    Provides step definitions for the features generated by the pb2g.py tool.

    -
    +

    Provides step definitions for the features generated by the gherkinize.py tool.

    The features/MakefileΒΆ

    This Makefile has the following targets:

    -
    -
    %.textproto:
    -

    This copies textproto files from the source directory -to the features directory. -The source is defined by the CEL_SIMPLE_TESTDATA environment variable. -This will overwrite out-of-date files in the features directory.

    -

    It’s important to use git wisely and start with a clean branch of the project so changes can be rolled back.

    -
    -
    %.feature:
    -

    This creates the .feature file from the .textproto file.

    -
    -
    scan:
    -

    This phony target reads all of the .textproto files to be sure they can be converted to Gherkin. -If it concludes with the output "All files scanned successfully", then there are no surprising or unexpected features in the .textproto files.

    -
    -
    clean-broken:
    -

    This phony target removes empty .feature files that may be left over when the conversion process crashes with a fatal error.

    -
    -
    clean-features:
    -

    This phony target removes all of the .textproto-based .feature files. -Manually created .feature files are left intact.

    -
    -
    clean:
    -

    This phony target removes all .textproto and .feature files that are built from the CEL specification. -Manually created .feature files are left intact.

    -
    -
    +
     Available commands:
    +   %.textproto   copies the .textproto from the cel-spec directory
    +   %.feature     generates Gherkin feature from %.textproto source
    +   clean         cleans generated feature files
    +   clean         cleans generated feature files and textproto sources
    +
    +

    Currently, the following feature files are built from the CEL specification.

    -
    basic.feature
    +
    basic.feature
    +bindings_ext.feature
    +block_ext.feature
     comparisons.feature
     conversions.feature
     dynamic.feature
    +encoders_ext.feature
     enums.feature
     fields.feature
     fp_math.feature
    @@ -224,14 +173,21 @@ 

    The features/Ma lists.feature logic.feature macros.feature +macros2.feature +math_ext.feature namespace.feature +optionals.feature parse.feature plumbing.feature proto2.feature +proto2_ext.feature proto3.feature string.feature +string_ext.feature timestamps.feature +type_deduction.feature unknowns.feature +wrappers.feature

    @@ -239,58 +195,80 @@

    The features/Ma

    The docs/MakefileΒΆ

    This is a Sphinx Makefile to build documentation. For more information, see https://www.sphinx-doc.org/en/master/index.html

    +
    Sphinx v8.1.3
    +Please use `make target' where target is one of
    +  html        to make standalone HTML files
    +  dirhtml     to make HTML files named index.html in directories
    +  singlehtml  to make a single large HTML file
    +  pickle      to make pickle files
    +  json        to make JSON files
    +  htmlhelp    to make HTML files and an HTML help project
    +  qthelp      to make HTML files and a qthelp project
    +  devhelp     to make HTML files and a Devhelp project
    +  epub        to make an epub
    +  latex       to make LaTeX files, you can set PAPER=a4 or PAPER=letter
    +  latexpdf    to make LaTeX and PDF files (default pdflatex)
    +  latexpdfja  to make LaTeX files and run them through platex/dvipdfmx
    +  text        to make text files
    +  man         to make manual pages
    +  texinfo     to make Texinfo files
    +  info        to make Texinfo files and run them through makeinfo
    +  gettext     to make PO message catalogs
    +  changes     to make an overview of all changed/added/deprecated items
    +  xml         to make Docutils-native XML files
    +  pseudoxml   to make pseudoxml-XML files for display purposes
    +  linkcheck   to check all external links for integrity
    +  doctest     to run all doctests embedded in the documentation (if enabled)
    +  coverage    to run coverage check of the documentation (if enabled)
    +  clean       to remove everything in the build directory
    +
    +

    The Project MakefileΒΆ

    A top-level Makefile has a number of phony targets:

    -
    -
    build:
    -

    Runs uv build to create a distribution kit.

    -
    -
    install-tools:
    -

    Pulls a golang Docker image and builds the mkgherkin image.

    -
    -
    test:
    -

    Runs the Python 3.12 test environment to execute a quick test.

    -
    -
    test-all:
    -

    Update the features files and run the full test suite.

    -
    -
    test-wip:
    -

    Update the features files and run the WIP test environment – these are tests flagged with @WIP markers.

    -
    -
    test-tools:
    -

    Run a test of only the tools, then scan the features files to be sure they’re still valid after the tool change.

    -
    -
    docs:
    -

    Build the HTML documentation.

    -
    -
    lint:
    -

    Runs the lint test environment to get code coverage, type hint checking, and other lint checks.

    -
    -
    coverage:
    -

    Reproduce the most recent coverage report.

    -
    -
    clean:
    -

    Remove a number of directories and their files:

    -
      -
    • .tox

    • -
    • .Python

    • -
    • bin

    • -
    • include

    • -
    • lib

    • -
    • pip-selfcheck

    • -
    • .json

    • -
    -
    -
    benchmarks:
    -

    Run the applications in the benches directory to gather performance benchmark data.

    -
      -
    • large_resource_set.py

    • -
    • complex_expression.py

    • -
    -
    -
    +
     Available commands:
    +   build         runs uv build to create a distribution kit
    +   build-all     alias of build, conformance, and docs
    + 
    +   test          runs the Python 3.12 test environment to execute a quick test
    +   test-all      runs the full test suite
    +   test-<env>    runs tests for any of the available tox environments:
    + 
    +     default environments:
    +     py39                     -> test suite
    +     py310                    -> test suite
    +     py311                    -> test suite
    +     py312                    -> test suite
    +     py313                    -> test suite
    +     lint                     -> check types, formatting, and best practices
    +     tools                    -> conformance suite conversion tools
    +     
    +     additional environments:
    +     wip                      -> work-in-progress test suite
    +     conformance              -> test suite
    +     conformance-compiled     -> compiled runner
    +     conformance-wip          -> work in progress
    +     conformance-wip-compiled -> work in progress + compiled runner
    +     coverage                 -> generate coverage reports
    + 
    +   conformance   generates conformance tests
    +   conf-clean    cleans generated conformance tests
    + 
    +   docs          generates HTML documentation
    +   docs-clean    lints documentation sources
    +   docs-clean    cleans generated HTML documentation
    + 
    +   lint          runs code coverage, type hint checking, and other lint checks
    +                 (alias of test-lint)
    + 
    +   format        runs code formatting
    +   coverage      generates code coverage reports
    +   clean         cleans all content ignored by git
    +   clean-all     alias of clean, conformance-clean, and docs-clean
    +   benchmarks    runs performance benchmarks
    +
    +
    @@ -329,7 +307,8 @@

    CEL in Python

  • Architecture and Design
  • API Reference
  • Development Tools @@ -175,13 +168,6 @@

    Symbols

  • -
  • - -g - -
  • @@ -202,7 +188,7 @@

    Symbols

    -o
  • @@ -218,14 +204,14 @@

    Symbols

  • -v
  • @@ -717,8 +703,6 @@

    C

  • CEL_PARSER (celpy.celparser.CELParser attribute)
  • CEL_REPL (class in celpy.__main__) -
  • -
  • CEL_SIMPLE_TESTDATA
  • CEL_TRACE, [1]
  • @@ -869,6 +853,8 @@

    C

  • contains() (celpy.c7nlib.IPv4Network method) @@ -1597,7 +1586,7 @@

    S

    source
  • @@ -1783,7 +1772,7 @@

    Related Topics

    ©2020, CapitalOne. | - Powered by Sphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0 diff --git a/docs/build/html/index.html b/docs/build/html/index.html index b850f08..4988ea5 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -7,7 +7,7 @@ Pure Python Google Common Expression Language (CEL) — CEL in Python documentation - + @@ -89,7 +89,8 @@

    Pure Python Google Common Expression Language (CEL)
  • Development Tools diff --git a/docs/build/html/_sources/development.rst.txt b/docs/build/html/_sources/development.rst.txt index 4d0d096..a4c89fd 100644 --- a/docs/build/html/_sources/development.rst.txt +++ b/docs/build/html/_sources/development.rst.txt @@ -26,6 +26,7 @@ The ``gherkinize.py`` Tool .. automodule:: gherkinize :no-members: + :members: Config The ``features/steps`` Directory diff --git a/docs/build/html/development.html b/docs/build/html/development.html index b6d79c9..cf06065 100644 --- a/docs/build/html/development.html +++ b/docs/build/html/development.html @@ -139,6 +139,53 @@

    Examples

    The source .textproto files have a β€œsection” heading which doesn’t have a precise parallel in the Gherkin language. The sections become comments in the .feature file, and the section name is used to prefix each feature name.

    +
    +
    +class gherkinize.Config(path: str)[source]ΒΆ
    +

    This class reads in optional configuration for conformance tests. Each scenario +is within a feature and a section.

    + + + + + + + + + + + + + + + +

    feature

    section

    scenario

    example

    string_ext

    ascii_casing

    lowerascii_unicode

    +

    The value for each scenario can be a string tag (which must begin with +@), an array of tags (each of which must begin with @) or a dictionary +with a tags key containing an array of tags (each of which… y’know).

    +

    For example, each of the following are valid:

    +
    [bindings_ext.bind]
    +bind_nested = "@wip"
    +boolean_literal = [ "@wip" ]
    +
    +[bindings_ext.bind.macro_exists]
    +tags = [ "@wip" ]
    +
    +
    +

    In the future, dictionaries with additional features may be supported.

    +
    +
    +__init__(path: str) None[source]ΒΆ
    +
    + +
    +
    +tags_for(feature: str, section: str, scenario: str) list[str][source]ΒΆ
    +

    Get a list of tags for a given scenario.

    +
    + +
    +

    The features/steps DirectoryΒΆ

    diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index b902275..417ca96 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -368,6 +368,8 @@

    _

  • (celpy.evaluation.Transpiler method)
  • (celpy.evaluation.TranspilerTree method) +
  • +
  • (gherkinize.Config method)
  • __le__() (celpy.celtypes.IntType method) @@ -850,6 +852,8 @@

    C

  • (celpy.evaluation.Phase2Transpiler method)
  • +
  • Config (class in gherkinize) +
  • contains() (celpy.c7nlib.IPv4Network method)
      @@ -1609,6 +1613,8 @@

      S

      T

        +
      • tags_for() (gherkinize.Config method) +
      • text_from() (in module celpy.c7nlib)
      • the_activation (in module celpy.evaluation) diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv index 921ab93f3b54ac7c71bace9cbc91c7f18cbc477e..f6b60efaa0f28c4e8015db2abef49b553556a4db 100644 GIT binary patch delta 600 zcmV-e0;m1D9n&4KhYWupk;QHG$%ruS8-Sz4c*GaUI+ojHbujl$IrrYP6(B~SZ_TqoMNjnv7#ElJYGNq0{%02b7+II`cQGSM0PAu)SIQ_6^cMXLEr$lQj~}i zsDQV!G(|jWJCu>ydr4~Oj8wfVQpXUa-k?a;UyvHzQrfFp42y3ulg}#xaM`nNEi$`( zxS#!C`An~7w|9RJ^QY<)l2^UYul2a_4~;^2X@u;I(|`rL+o!$n^;@CJv~pQ}{&2l! zecE}D_Qt?u+{ZTHz53rPMtilU?)}fJ zE?J`sq1z2FRgQMnYVhgfq&h-`H!zuAI^ASDldP%`S>%m!e6ecZ|F%msQ&PJ zn}2uZDvU6C)ZudD(u(de!hQG00e`sXV+ClqQySp=M=A|EWBZ4?2%qZUp{~B*uNSbU z9*<~$ZSH)V{WXXH0RI16&vog*uKo-|-IxmVnfLQ)bAc?H z9OfDZ9j#DgR>(0|^ll}ynnl=lbtYV2ZB}z9qD!eJ6C%>HG#3qY%if3rWlX delta 575 zcmV-F0>J l9N`hYWv2Ay6qZ>$30sm*wVN9nEf@?q^NpopPTF8n68_j88AwlFN|z z3VzJHG=1JzZ`%?!%&+%{I_KMOA7>vAX+QHXr7%1jkvJ4#DDo9tns=#BNmjjPKKC<5 zFPLsJ-99yhmTZ*Ti}Nb^oE^H`eBOpD(eN^WSN?+oE}mTlZ1sN~h-z5ycmWXz_>arY zp$*FF^S{v&*|9`XZ$XY%C;|lq?ig;RC=n%40dHk#ig?s^C?mD^lGM-{sd`tWjv+|B zL6NGzAT_$Bv{$vn6yIVdpH~FnvS-~|WOn;-Kl{P*nO@Cq?;hq))rT3cdLK3Gap4~t zh49h{*%_w+3;utnPkWE%HyD*^*X!(GTIb-1ZuMpZ|GIng zpERjHNAbW^UV8KKXK01LTvcDDlX6h~;q^BE?#fl@w|jro;d0~Bif(cKzWd{VKiu=N z0yNwy4e+QVl?I)${X<=ZPqj;~t1tNL1+1yZBidh^JKtu1?HvCC;Q!C{T$c{)>d)}o zZhxNFpM(LESzjKEr9p(yjj1r7c|V^v7s#T?VXk4&(Mo289CJnQRx(R2*_NB7w*2=i z+Ll^0{RcN}Nc#tD!tEcg?dt#ie&zB`u*qY7WjO;kapYI3YqfoOuK)f7rugdMTS8mf NcS0wf&TpAD)Eq7(F**PM diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 084ceec..4f91488 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"API Reference": [[0, null]], "Additional Functions": [[0, "additional-functions"]], "Application Integration": [[7, null]], "Architecture and Design": [[8, null]], "Arguments, Types, and Namespaces": [[2, "arguments-types-and-namespaces"]], "Baseline C7N Example": [[7, "baseline-c7n-example"]], "Bulk Filter Example": [[7, "bulk-filter-example"]], "C7N Cache": [[1, "c7n-cache"]], "C7N Context Object": [[0, "c7n-context-object"], [1, "c7n-context-object"]], "C7N Filter and Resource Types": [[7, "c7n-filter-and-resource-types"]], "C7N Functions Required": [[1, null]], "CEL Types": [[8, "cel-types"]], "CELFilter Design": [[1, "celfilter-design"]], "CLI Use of CEL-Python": [[2, null]], "CONFIGURATION": [[2, "configuration"]], "Cloud Custodian (C7N) Integration": [[7, "cloud-custodian-c7n-integration"]], "Common C7N Constructs": [[1, "common-c7n-constructs"]], "Common/Boolean Filters": [[1, "common-boolean-filters"]], "Common/Non-Bool Filters": [[1, "common-non-bool-filters"]], "Compile-Time": [[8, "compile-time"]], "Components": [[8, "components"]], "Configuration": [[3, null]], "Container": [[8, "container"]], "Contents": [[1, "contents"]], "Context": [[8, "context"]], "Custom function in Go": [[7, "custom-function-in-go"]], "DESCRIPTION": [[2, "description"]], "Define custom global function": [[7, "define-custom-global-function"]], "Description": [[4, "description"]], "Design Principles": [[1, "design-principles"]], "Development Tools": [[4, null]], "Documentation Content:": [[5, null]], "ENVIRONMENT VARIABLES": [[2, "environment-variables"]], "EXAMPLES": [[2, "examples"]], "EXIT STATUS": [[2, "exit-status"]], "Evaluation-Time": [[8, "evaluation-time"]], "Examples": [[4, "examples"]], "Exceptions and Errors": [[7, "exceptions-and-errors"]], "External API": [[7, "external-api"]], "FILES": [[2, "files"]], "Files": [[4, "files"]], "Function Bindings": [[7, "function-bindings"]], "Indices and tables": [[5, "indices-and-tables"]], "Installation": [[6, null]], "Integration Essentials": [[7, "integration-essentials"]], "Integration Overview": [[5, "integration-overview"]], "More Examples from the Go implementation": [[7, "more-examples-from-the-go-implementation"]], "Name Resolution": [[0, "name-resolution"]], "Numeric Details": [[0, "numeric-details"]], "Pure Python Google Common Expression Language (CEL)": [[5, null]], "SYNOPSIS": [[2, "synopsis"]], "Simple example using builtin types": [[7, "simple-example-using-builtin-types"]], "Singleton/Boolean Filters": [[1, "singleton-boolean-filters"]], "Singleton/Non-Bool Filters": [[1, "singleton-non-bool-filters"]], "Summary": [[1, "summary"]], "Synopsis": [[4, "synopsis"]], "The API": [[0, "the-api"]], "The Member-Dot Production": [[8, "the-member-dot-production"]], "The Project Makefile": [[4, "the-project-makefile"]], "The docs/Makefile": [[4, "the-docs-makefile"]], "The features/Makefile": [[4, "the-features-makefile"]], "The features/steps Directory": [[4, "the-features-steps-directory"]], "The gherkinize.py Tool": [[4, "module-gherkinize"]], "The type: value Features": [[0, "the-type-value-features"]], "The type: value_from features": [[0, "the-type-value-from-features"]], "Timzone Details": [[0, "timzone-details"]], "Todo": [[0, "id2"], [0, "id3"], [0, "id4"], [0, "id5"], [0, "id6"], [0, "id7"], [0, "id8"], [0, "id9"], [0, "id10"], [0, "id11"], [0, "id12"], [0, "id13"], [0, "id14"], [0, "id15"], [0, "id16"], [0, "id17"], [0, "id18"], [0, "id19"], [0, "id20"], [0, "id21"], [0, "id22"], [0, "id23"], [0, "id24"], [0, "id25"], [0, "id26"], [0, "id27"], [0, "id28"], [0, "id29"], [0, "id30"], [0, "id31"], [0, "id32"], [0, "id33"], [0, "id34"], [0, "id35"], [0, "id36"], [0, "id37"], [0, "id38"], [0, "id39"], [0, "id40"], [0, "id41"]], "Transpiler Missing Names": [[8, "transpiler-missing-names"]], "Type Adapter": [[0, "type-adapter"]], "Type Provider": [[0, "type-provider"]], "Types": [[0, "types"]], "__main__": [[0, "module-celpy.__main__"]], "access-key": [[1, "access-key"]], "adapter": [[0, "module-celpy.adapter"]], "age": [[1, "age"]], "bucket-encryption (no examples)": [[1, "bucket-encryption-no-examples"]], "bucket-notification (no examples)": [[1, "bucket-notification-no-examples"]], "c7nlib": [[0, "module-celpy.c7nlib"]], "capacity-delta": [[1, "capacity-delta"]], "celparser": [[0, "module-celpy.celparser"]], "celpy": [[0, "module-celpy.__init__"]], "celtypes": [[0, "module-celpy.celtypes"]], "check-cloudtrail": [[1, "check-cloudtrail"]], "check-config": [[1, "check-config"]], "config-compliance (no examples)": [[1, "config-compliance-no-examples"]], "credential": [[1, "credential"]], "cross-account": [[1, "cross-account"]], "data-events (no examples)": [[1, "data-events-no-examples"]], "db-parameter (no examples)": [[1, "db-parameter-no-examples"]], "default-vpc (no examples)": [[1, "default-vpc-no-examples"]], "dhcp-options (no examples)": [[1, "dhcp-options-no-examples"]], "diff (no examples)": [[1, "diff-no-examples"]], "ebs": [[1, "ebs"]], "egress": [[1, "egress"]], "ephemeral (no examples)": [[1, "ephemeral-no-examples"]], "evaluation": [[0, "module-celpy.evaluation"]], "event": [[1, "event"]], "event-source (no examples)": [[1, "event-source-no-examples"]], "fault-tolerant (no examples)": [[1, "fault-tolerant-no-examples"]], "finding (no examples)": [[1, "finding-no-examples"]], "flow-logs": [[1, "flow-logs"]], "global-grants": [[1, "global-grants"]], "grant-count": [[1, "grant-count"]], "group (no examples)": [[1, "group-no-examples"]], "has-allow-all (no examples)": [[1, "has-allow-all-no-examples"]], "has-inline-policy (no examples)": [[1, "has-inline-policy-no-examples"]], "has-specific-managed-policy (no examples)": [[1, "has-specific-managed-policy-no-examples"]], "has-statement": [[1, "has-statement"]], "has-users (no examples)": [[1, "has-users-no-examples"]], "has-virtual-mfa (no examples)": [[1, "has-virtual-mfa-no-examples"]], "health-event": [[1, "health-event"]], "healthcheck-protocol-mismatch (no examples)": [[1, "healthcheck-protocol-mismatch-no-examples"]], "iam-summary (no examples)": [[1, "iam-summary-no-examples"]], "image": [[1, "image"]], "image-age": [[1, "image-age"]], "ingress": [[1, "ingress"]], "instance (no examples)": [[1, "instance-no-examples"]], "instance-age": [[1, "instance-age"]], "instance-attribute (no examples)": [[1, "instance-attribute-no-examples"]], "instance-uptime": [[1, "instance-uptime"]], "invalid": [[1, "invalid"]], "inventory (no examples)": [[1, "inventory-no-examples"]], "is-log-target": [[1, "is-log-target"]], "is-logging": [[1, "is-logging"]], "is-not-logging": [[1, "is-not-logging"]], "is-shadow (no examples)": [[1, "is-shadow-no-examples"]], "is-ssl (no examples)": [[1, "is-ssl-no-examples"]], "key-rotation-status": [[1, "key-rotation-status"]], "kms-alias": [[1, "kms-alias"]], "kms-key": [[1, "kms-key"]], "last-write": [[1, "last-write"]], "latest": [[1, "latest"]], "launch-config": [[1, "launch-config"]], "lifecycle-rule (no examples)": [[1, "lifecycle-rule-no-examples"]], "listener": [[1, "listener"]], "locked (no examples)": [[1, "locked-no-examples"]], "marked-for-op": [[1, "marked-for-op"]], "metrics": [[1, "metrics"]], "mfa-device": [[1, "mfa-device"]], "mismatch-s3-origin": [[1, "mismatch-s3-origin"]], "missing": [[1, "missing"]], "missing-policy-statement": [[1, "missing-policy-statement"]], "missing-route (no examples)": [[1, "missing-route-no-examples"]], "modifyable (no examples)": [[1, "modifyable-no-examples"]], "network-location": [[1, "network-location"]], "no-encryption-statement (no examples)": [[1, "no-encryption-statement-no-examples"]], "no-specific-managed-policy (no examples)": [[1, "no-specific-managed-policy-no-examples"]], "not-encrypted": [[1, "not-encrypted"]], "offhour": [[1, "offhour"]], "onhour": [[1, "onhour"]], "op Implementations": [[1, "op-implementations"]], "param (no examples)": [[1, "param-no-examples"]], "password-policy": [[1, "password-policy"]], "policy": [[1, "policy"]], "progagated-tags (no examples)": [[1, "progagated-tags-no-examples"]], "query-logging-enabled (no examples)": [[1, "query-logging-enabled-no-examples"]], "reserved-concurrency": [[1, "reserved-concurrency"]], "rest-integration (no examples)": [[1, "rest-integration-no-examples"]], "rest-method (no examples)": [[1, "rest-method-no-examples"]], "route (no examples)": [[1, "route-no-examples"]], "s3-cidr (no examples)": [[1, "s3-cidr-no-examples"]], "s3-public-block (no examples)": [[1, "s3-public-block-no-examples"]], "security-group": [[1, "security-group"]], "service-limit": [[1, "service-limit"]], "shield-enabled": [[1, "shield-enabled"]], "shield-metrics (no examples)": [[1, "shield-metrics-no-examples"]], "singleton (no examples)": [[1, "singleton-no-examples"]], "skip-ami-snapshots": [[1, "skip-ami-snapshots"]], "ssl-policy": [[1, "ssl-policy"]], "ssm (no examples)": [[1, "ssm-no-examples"]], "stale (no examples)": [[1, "stale-no-examples"]], "state-age": [[1, "state-age"]], "status (no examples)": [[1, "status-no-examples"]], "subnet": [[1, "subnet"]], "tag-count": [[1, "tag-count"]], "target-group (no examples)": [[1, "target-group-no-examples"]], "task-definition (no examples)": [[1, "task-definition-no-examples"]], "termination-protected (no examples)": [[1, "termination-protected-no-examples"]], "unused": [[1, "unused"]], "upgrade-available (no examples)": [[1, "upgrade-available-no-examples"]], "used": [[1, "used"]], "user-data (no examples)": [[1, "user-data-no-examples"]], "valid": [[1, "valid"]], "value": [[1, "value"]], "value_from External Data": [[1, "value-from-external-data"]], "value_type Conversions": [[1, "value-type-conversions"]], "vpc": [[1, "vpc"]], "vpc-attributes (no examples)": [[1, "vpc-attributes-no-examples"]], "vpc-id": [[1, "vpc-id"]], "waf-enabled": [[1, "waf-enabled"]], "xray-encrypt-key (no examples)": [[1, "xray-encrypt-key-no-examples"]]}, "docnames": ["api", "c7n_functions", "cli", "configuration", "development", "index", "installation", "integration", "structure"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1}, "filenames": ["api.rst", "c7n_functions.rst", "cli.rst", "configuration.rst", "development.rst", "index.rst", "installation.rst", "integration.rst", "structure.rst"], "indexentries": {"--arg": [[2, "cmdoption-celpy-a", false]], "--boolean": [[2, "cmdoption-celpy-b", false]], "--format": [[2, "cmdoption-celpy-f", false]], "--interactive": [[2, "cmdoption-celpy-i", false]], "--json-document": [[2, "cmdoption-celpy-d", false]], "--json-package": [[2, "cmdoption-celpy-p", false]], "--null-input": [[2, "cmdoption-celpy-n", false]], "--output": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-o", false]], "--silent": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-s", false]], "--slurp": [[2, "cmdoption-celpy-s", false]], "--verbose": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-v", false]], "-a": [[2, "cmdoption-celpy-a", false]], "-b": [[2, "cmdoption-celpy-b", false]], "-d": [[2, "cmdoption-celpy-d", false]], "-f": [[2, "cmdoption-celpy-f", false]], "-i": [[2, "cmdoption-celpy-i", false]], "-n": [[2, "cmdoption-celpy-n", false]], "-o": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-o", false]], "-p": [[2, "cmdoption-celpy-p", false]], "-s": [[2, "cmdoption-celpy-s", false], [4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-s", false]], "-v": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-v", false]], "__abstractmethods__ (celpy.__init__.compiledrunner attribute)": [[0, "celpy.__init__.CompiledRunner.__abstractmethods__", false]], "__abstractmethods__ (celpy.__init__.interpretedrunner attribute)": [[0, "celpy.__init__.InterpretedRunner.__abstractmethods__", false]], "__abstractmethods__ (celpy.__init__.runner attribute)": [[0, "celpy.__init__.Runner.__abstractmethods__", false]], "__abstractmethods__ (celpy.c7nlib.c7n_interpreted_runner attribute)": [[0, "celpy.c7nlib.C7N_Interpreted_Runner.__abstractmethods__", false]], "__abstractmethods__ (celpy.evaluation.evaluator attribute)": [[0, "celpy.evaluation.Evaluator.__abstractmethods__", false]], "__add__() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.__add__", false]], "__add__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__add__", false]], "__add__() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.__add__", false]], "__add__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__add__", false]], "__add__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__add__", false]], "__call__() (celpy.celtypes.functiontype method)": [[0, "celpy.celtypes.FunctionType.__call__", false]], "__call__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__call__", false]], "__contains__() (celpy.c7nlib.ipv4network method)": [[0, "celpy.c7nlib.IPv4Network.__contains__", false]], "__enter__() (celpy.c7nlib.c7ncontext method)": [[0, "celpy.c7nlib.C7NContext.__enter__", false]], "__eq__() (celpy.c7nlib.comparableversion method)": [[0, "celpy.c7nlib.ComparableVersion.__eq__", false]], "__eq__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__eq__", false]], "__eq__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__eq__", false]], "__eq__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__eq__", false]], "__eq__() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.__eq__", false]], "__eq__() (celpy.celtypes.nulltype method)": [[0, "celpy.celtypes.NullType.__eq__", false]], "__eq__() (celpy.celtypes.stringtype method)": [[0, "celpy.celtypes.StringType.__eq__", false]], "__eq__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__eq__", false]], "__eq__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__eq__", false]], "__eq__() (celpy.evaluation.referent method)": [[0, "celpy.evaluation.Referent.__eq__", false]], "__exit__() (celpy.c7nlib.c7ncontext method)": [[0, "celpy.c7nlib.C7NContext.__exit__", false]], "__floordiv__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__floordiv__", false]], "__floordiv__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__floordiv__", false]], "__floordiv__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__floordiv__", false]], "__ge__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__ge__", false]], "__ge__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__ge__", false]], "__getattr__() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.__getattr__", false]], "__getitem__() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.__getitem__", false]], "__gt__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__gt__", false]], "__gt__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__gt__", false]], "__hash__ (celpy.c7nlib.comparableversion attribute)": [[0, "celpy.c7nlib.ComparableVersion.__hash__", false]], "__hash__ (celpy.celtypes.listtype attribute)": [[0, "celpy.celtypes.ListType.__hash__", false]], "__hash__ (celpy.celtypes.maptype attribute)": [[0, "celpy.celtypes.MapType.__hash__", false]], "__hash__ (celpy.celtypes.nulltype attribute)": [[0, "celpy.celtypes.NullType.__hash__", false]], "__hash__ (celpy.evaluation.celevalerror attribute)": [[0, "celpy.evaluation.CELEvalError.__hash__", false]], "__hash__ (celpy.evaluation.referent attribute)": [[0, "celpy.evaluation.Referent.__hash__", false]], "__hash__() (celpy.celtypes.booltype method)": [[0, "celpy.celtypes.BoolType.__hash__", false]], "__hash__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__hash__", false]], "__hash__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__hash__", false]], "__hash__() (celpy.celtypes.stringtype method)": [[0, "celpy.celtypes.StringType.__hash__", false]], "__hash__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__hash__", false]], "__init__() (celpy.__init__.compiledrunner method)": [[0, "celpy.__init__.CompiledRunner.__init__", false]], "__init__() (celpy.__init__.environment method)": [[0, "celpy.__init__.Environment.__init__", false]], "__init__() (celpy.__init__.runner method)": [[0, "celpy.__init__.Runner.__init__", false]], "__init__() (celpy.c7nlib.c7ncontext method)": [[0, "celpy.c7nlib.C7NContext.__init__", false]], "__init__() (celpy.celparser.celparseerror method)": [[0, "celpy.celparser.CELParseError.__init__", false]], "__init__() (celpy.celparser.celparser method)": [[0, "celpy.celparser.CELParser.__init__", false]], "__init__() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.__init__", false]], "__init__() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.__init__", false]], "__init__() (celpy.celtypes.messagetype method)": [[0, "celpy.celtypes.MessageType.__init__", false]], "__init__() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.__init__", false]], "__init__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__init__", false]], "__init__() (celpy.evaluation.celsyntaxerror method)": [[0, "celpy.evaluation.CELSyntaxError.__init__", false]], "__init__() (celpy.evaluation.celunsupportederror method)": [[0, "celpy.evaluation.CELUnsupportedError.__init__", false]], "__init__() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.__init__", false]], "__init__() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.__init__", false]], "__init__() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.__init__", false]], "__init__() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.__init__", false]], "__init__() (celpy.evaluation.referent method)": [[0, "celpy.evaluation.Referent.__init__", false]], "__init__() (celpy.evaluation.transpiler method)": [[0, "celpy.evaluation.Transpiler.__init__", false]], "__init__() (celpy.evaluation.transpilertree method)": [[0, "celpy.evaluation.TranspilerTree.__init__", false]], "__le__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__le__", false]], "__le__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__le__", false]], "__lt__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__lt__", false]], "__lt__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__lt__", false]], "__mod__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__mod__", false]], "__mod__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__mod__", false]], "__mod__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__mod__", false]], "__mod__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__mod__", false]], "__mul__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__mul__", false]], "__mul__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__mul__", false]], "__mul__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__mul__", false]], "__ne__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__ne__", false]], "__ne__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__ne__", false]], "__ne__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__ne__", false]], "__ne__() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.__ne__", false]], "__ne__() (celpy.celtypes.nulltype method)": [[0, "celpy.celtypes.NullType.__ne__", false]], "__ne__() (celpy.celtypes.stringtype method)": [[0, "celpy.celtypes.StringType.__ne__", false]], "__ne__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__ne__", false]], "__neg__() (celpy.celtypes.booltype method)": [[0, "celpy.celtypes.BoolType.__neg__", false]], "__neg__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__neg__", false]], "__neg__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__neg__", false]], "__neg__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__neg__", false]], "__neg__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__neg__", false]], "__new__() (celpy.__init__.int32value static method)": [[0, "celpy.__init__.Int32Value.__new__", false]], "__new__() (celpy.celtypes.booltype static method)": [[0, "celpy.celtypes.BoolType.__new__", false]], "__new__() (celpy.celtypes.bytestype static method)": [[0, "celpy.celtypes.BytesType.__new__", false]], "__new__() (celpy.celtypes.doubletype static method)": [[0, "celpy.celtypes.DoubleType.__new__", false]], "__new__() (celpy.celtypes.durationtype static method)": [[0, "celpy.celtypes.DurationType.__new__", false]], "__new__() (celpy.celtypes.inttype static method)": [[0, "celpy.celtypes.IntType.__new__", false]], "__new__() (celpy.celtypes.stringtype static method)": [[0, "celpy.celtypes.StringType.__new__", false]], "__new__() (celpy.celtypes.timestamptype static method)": [[0, "celpy.celtypes.TimestampType.__new__", false]], "__new__() (celpy.celtypes.typetype static method)": [[0, "celpy.celtypes.TypeType.__new__", false]], "__new__() (celpy.celtypes.uinttype static method)": [[0, "celpy.celtypes.UintType.__new__", false]], "__orig_bases__ (celpy.celtypes.listtype attribute)": [[0, "celpy.celtypes.ListType.__orig_bases__", false]], "__orig_bases__ (celpy.celtypes.maptype attribute)": [[0, "celpy.celtypes.MapType.__orig_bases__", false]], "__orig_bases__ (celpy.evaluation.namecontainer attribute)": [[0, "celpy.evaluation.NameContainer.__orig_bases__", false]], "__parameters__ (celpy.celparser.dumpast attribute)": [[0, "celpy.celparser.DumpAST.__parameters__", false]], "__parameters__ (celpy.celtypes.listtype attribute)": [[0, "celpy.celtypes.ListType.__parameters__", false]], "__parameters__ (celpy.celtypes.maptype attribute)": [[0, "celpy.celtypes.MapType.__parameters__", false]], "__parameters__ (celpy.celtypes.messagetype attribute)": [[0, "celpy.celtypes.MessageType.__parameters__", false]], "__parameters__ (celpy.celtypes.packagetype attribute)": [[0, "celpy.celtypes.PackageType.__parameters__", false]], "__parameters__ (celpy.evaluation.evaluator attribute)": [[0, "celpy.evaluation.Evaluator.__parameters__", false]], "__parameters__ (celpy.evaluation.namecontainer attribute)": [[0, "celpy.evaluation.NameContainer.__parameters__", false]], "__parameters__ (celpy.evaluation.phase1transpiler attribute)": [[0, "celpy.evaluation.Phase1Transpiler.__parameters__", false]], "__parameters__ (celpy.evaluation.phase2transpiler attribute)": [[0, "celpy.evaluation.Phase2Transpiler.__parameters__", false]], "__parameters__ (celpy.evaluation.transpilertree attribute)": [[0, "celpy.evaluation.TranspilerTree.__parameters__", false]], "__pow__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__pow__", false]], "__radd__() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.__radd__", false]], "__radd__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__radd__", false]], "__radd__() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.__radd__", false]], "__radd__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__radd__", false]], "__radd__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__radd__", false]], "__repr__() (celpy.__init__.environment method)": [[0, "celpy.__init__.Environment.__repr__", false]], "__repr__() (celpy.__init__.runner method)": [[0, "celpy.__init__.Runner.__repr__", false]], "__repr__() (celpy.c7nlib.c7ncontext method)": [[0, "celpy.c7nlib.C7NContext.__repr__", false]], "__repr__() (celpy.celtypes.booltype method)": [[0, "celpy.celtypes.BoolType.__repr__", false]], "__repr__() (celpy.celtypes.bytestype method)": [[0, "celpy.celtypes.BytesType.__repr__", false]], "__repr__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__repr__", false]], "__repr__() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.__repr__", false]], "__repr__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__repr__", false]], "__repr__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__repr__", false]], "__repr__() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.__repr__", false]], "__repr__() (celpy.celtypes.stringtype method)": [[0, "celpy.celtypes.StringType.__repr__", false]], "__repr__() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.__repr__", false]], "__repr__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__repr__", false]], "__repr__() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.__repr__", false]], "__repr__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__repr__", false]], "__repr__() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.__repr__", false]], "__repr__() (celpy.evaluation.referent method)": [[0, "celpy.evaluation.Referent.__repr__", false]], "__rfloordiv__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__rfloordiv__", false]], "__rfloordiv__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__rfloordiv__", false]], "__rfloordiv__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__rfloordiv__", false]], "__rmod__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__rmod__", false]], "__rmod__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__rmod__", false]], "__rmod__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__rmod__", false]], "__rmod__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__rmod__", false]], "__rmul__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__rmul__", false]], "__rmul__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__rmul__", false]], "__rmul__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__rmul__", false]], "__rpow__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__rpow__", false]], "__rsub__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__rsub__", false]], "__rsub__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__rsub__", false]], "__rsub__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__rsub__", false]], "__rtruediv__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__rtruediv__", false]], "__rtruediv__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__rtruediv__", false]], "__rtruediv__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__rtruediv__", false]], "__rtruediv__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__rtruediv__", false]], "__str__() (celpy.celtypes.booltype method)": [[0, "celpy.celtypes.BoolType.__str__", false]], "__str__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__str__", false]], "__str__() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.__str__", false]], "__str__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__str__", false]], "__str__() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.__str__", false]], "__str__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__str__", false]], "__sub__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__sub__", false]], "__sub__() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.__sub__", false]], "__sub__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__sub__", false]], "__sub__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__sub__", false]], "__truediv__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__truediv__", false]], "__truediv__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__truediv__", false]], "__truediv__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__truediv__", false]], "__truediv__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__truediv__", false]], "absent() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.absent", false]], "activation (class in celpy.evaluation)": [[0, "celpy.evaluation.Activation", false]], "addition() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.addition", false]], "addition() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.addition", false]], "addition() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.addition", false]], "addition_add() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.addition_add", false]], "addition_sub() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.addition_sub", false]], "all_dbsubenet_groups() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_dbsubenet_groups", false]], "all_images() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_images", false]], "all_instance_profiles() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_instance_profiles", false]], "all_launch_configuration_names() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_launch_configuration_names", false]], "all_scan_groups() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_scan_groups", false]], "all_service_roles() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_service_roles", false]], "all_snapshots() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_snapshots", false]], "ambiguous_literals() (celpy.celparser.celparser static method)": [[0, "celpy.celparser.CELParser.ambiguous_literals", false]], "arg_type_value() (in module celpy.__main__)": [[0, "celpy.__main__.arg_type_value", false]], "arn_split() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.arn_split", false]], "bool_eq() (in module celpy.evaluation)": [[0, "celpy.evaluation.bool_eq", false]], "bool_ge() (in module celpy.evaluation)": [[0, "celpy.evaluation.bool_ge", false]], "bool_gt() (in module celpy.evaluation)": [[0, "celpy.evaluation.bool_gt", false]], "bool_le() (in module celpy.evaluation)": [[0, "celpy.evaluation.bool_le", false]], "bool_lt() (in module celpy.evaluation)": [[0, "celpy.evaluation.bool_lt", false]], "bool_ne() (in module celpy.evaluation)": [[0, "celpy.evaluation.bool_ne", false]], "boolean() (in module celpy.evaluation)": [[0, "celpy.evaluation.boolean", false]], "booltype (class in celpy.celtypes)": [[0, "celpy.celtypes.BoolType", false]], "build_macro_eval() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.build_macro_eval", false]], "build_reduce_macro_eval() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.build_reduce_macro_eval", false]], "build_ss_macro_eval() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.build_ss_macro_eval", false]], "bytestype (class in celpy.celtypes)": [[0, "celpy.celtypes.BytesType", false]], "c7n_interpreted_runner (class in celpy.c7nlib)": [[0, "celpy.c7nlib.C7N_Interpreted_Runner", false]], "c7ncontext (class in celpy.c7nlib)": [[0, "celpy.c7nlib.C7NContext", false]], "cel_eval() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.cel_eval", false]], "cel_parser (celpy.celparser.celparser attribute)": [[0, "celpy.celparser.CELParser.CEL_PARSER", false]], "cel_repl (class in celpy.__main__)": [[0, "celpy.__main__.CEL_REPL", false]], "cel_trace": [[0, "index-0", false], [2, "index-2", false]], "celbytes() (in module celpy.evaluation)": [[0, "celpy.evaluation.celbytes", false]], "celevalerror": [[0, "celpy.evaluation.CELEvalError", false]], "celjsondecoder (class in celpy.adapter)": [[0, "celpy.adapter.CELJSONDecoder", false]], "celjsonencoder (class in celpy.adapter)": [[0, "celpy.adapter.CELJSONEncoder", false]], "celparseerror": [[0, "celpy.celparser.CELParseError", false]], "celparser (class in celpy.celparser)": [[0, "celpy.celparser.CELParser", false]], "celpy command line option": [[2, "cmdoption-celpy-a", false], [2, "cmdoption-celpy-arg-expr", false], [2, "cmdoption-celpy-b", false], [2, "cmdoption-celpy-d", false], [2, "cmdoption-celpy-f", false], [2, "cmdoption-celpy-i", false], [2, "cmdoption-celpy-n", false], [2, "cmdoption-celpy-p", false], [2, "cmdoption-celpy-s", false]], "celpy.__init__": [[0, "module-celpy.__init__", false]], "celpy.__main__": [[0, "module-celpy.__main__", false]], "celpy.adapter": [[0, "module-celpy.adapter", false]], "celpy.c7nlib": [[0, "module-celpy.c7nlib", false]], "celpy.celparser": [[0, "module-celpy.celparser", false]], "celpy.celtypes": [[0, "module-celpy.celtypes", false]], "celpy.evaluation": [[0, "module-celpy.evaluation", false]], "celstr() (in module celpy.evaluation)": [[0, "celpy.evaluation.celstr", false]], "celsyntaxerror": [[0, "celpy.evaluation.CELSyntaxError", false]], "celunsupportederror": [[0, "celpy.evaluation.CELUnsupportedError", false]], "children (celpy.evaluation.transpilertree attribute)": [[0, "celpy.evaluation.TranspilerTree.children", false]], "clone() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.clone", false]], "clone() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.clone", false]], "clone() (celpy.evaluation.referent method)": [[0, "celpy.evaluation.Referent.clone", false]], "comparableversion (class in celpy.c7nlib)": [[0, "celpy.c7nlib.ComparableVersion", false]], "compile() (celpy.__init__.environment method)": [[0, "celpy.__init__.Environment.compile", false]], "compiledrunner (class in celpy.__init__)": [[0, "celpy.__init__.CompiledRunner", false]], "conditionaland() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.conditionaland", false]], "conditionaland() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.conditionaland", false]], "conditionaland() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.conditionaland", false]], "conditionaland() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.conditionaland", false]], "conditionalor() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.conditionalor", false]], "conditionalor() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.conditionalor", false]], "conditionalor() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.conditionalor", false]], "conditionalor() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.conditionalor", false]], "contains() (celpy.c7nlib.ipv4network method)": [[0, "celpy.c7nlib.IPv4Network.contains", false]], "contains() (celpy.celtypes.bytestype method)": [[0, "celpy.celtypes.BytesType.contains", false]], "contains() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.contains", false]], "contains() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.contains", false]], "contains() (celpy.celtypes.stringtype method)": [[0, "celpy.celtypes.StringType.contains", false]], "credentials() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.credentials", false]], "data (celpy.evaluation.transpilertree attribute)": [[0, "celpy.evaluation.TranspilerTree.data", false]], "decode() (celpy.adapter.celjsondecoder method)": [[0, "celpy.adapter.CELJSONDecoder.decode", false]], "default() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.default", false]], "default() (celpy.adapter.celjsonencoder method)": [[0, "celpy.adapter.CELJSONEncoder.default", false]], "describe_db_snapshot_attributes() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.describe_db_snapshot_attributes", false]], "describe_subscription_filters() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.describe_subscription_filters", false]], "dict_find_name() (celpy.evaluation.namecontainer static method)": [[0, "celpy.evaluation.NameContainer.dict_find_name", false]], "difference() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.difference", false]], "display() (celpy.celparser.dumpast class method)": [[0, "celpy.celparser.DumpAST.display", false]], "do_bye() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.do_bye", false]], "do_eof() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.do_EOF", false]], "do_exit() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.do_exit", false]], "do_quit() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.do_quit", false]], "do_set() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.do_set", false]], "do_show() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.do_show", false]], "dot_ident() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.dot_ident", false]], "dot_ident() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.dot_ident", false]], "dot_ident_arg() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.dot_ident_arg", false]], "dot_ident_arg() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.dot_ident_arg", false]], "doubletype (class in celpy.celtypes)": [[0, "celpy.celtypes.DoubleType", false]], "dumpast (class in celpy.celparser)": [[0, "celpy.celparser.DumpAST", false]], "durationtype (class in celpy.celtypes)": [[0, "celpy.celtypes.DurationType", false]], "encode() (celpy.adapter.celjsonencoder method)": [[0, "celpy.adapter.CELJSONEncoder.encode", false]], "environment (class in celpy.__init__)": [[0, "celpy.__init__.Environment", false]], "environment variable": [[0, "index-0", false], [2, "index-0", false], [2, "index-1", false], [2, "index-2", false]], "error_text() (celpy.celparser.celparser method)": [[0, "celpy.celparser.CELParser.error_text", false]], "eval_error() (in module celpy.evaluation)": [[0, "celpy.evaluation.eval_error", false]], "evaluate() (celpy.__init__.compiledrunner method)": [[0, "celpy.__init__.CompiledRunner.evaluate", false]], "evaluate() (celpy.__init__.interpretedrunner method)": [[0, "celpy.__init__.InterpretedRunner.evaluate", false]], "evaluate() (celpy.__init__.runner method)": [[0, "celpy.__init__.Runner.evaluate", false]], "evaluate() (celpy.c7nlib.c7n_interpreted_runner method)": [[0, "celpy.c7nlib.C7N_Interpreted_Runner.evaluate", false]], "evaluate() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.evaluate", false]], "evaluate() (celpy.evaluation.transpiler method)": [[0, "celpy.evaluation.Transpiler.evaluate", false]], "evaluator (class in celpy.evaluation)": [[0, "celpy.evaluation.Evaluator", false]], "expr": [[2, "cmdoption-celpy-arg-expr", false]], "expr() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.expr", false]], "expr() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.expr", false]], "expr() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.expr", false]], "expr() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.expr", false]], "exprlist() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.exprlist", false]], "exprlist() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.exprlist", false]], "exprlist() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.exprlist", false]], "extended_name_path (celpy.evaluation.namecontainer attribute)": [[0, "celpy.evaluation.NameContainer.extended_name_path", false]], "features.steps.c7n_integration": [[4, "module-features.steps.c7n_integration", false]], "features.steps.cli_binding": [[4, "module-features.steps.cli_binding", false]], "features.steps.integration_binding": [[4, "module-features.steps.integration_binding", false]], "fieldinits() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.fieldinits", false]], "fieldinits() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.fieldinits", false]], "fieldinits() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.fieldinits", false]], "find_name() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.find_name", false]], "flow_logs() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.flow_logs", false]], "func_name() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.func_name", false]], "function_contains() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_contains", false]], "function_endswith() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_endsWith", false]], "function_eval() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.function_eval", false]], "function_getdate() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getDate", false]], "function_getdayofmonth() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getDayOfMonth", false]], "function_getdayofweek() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getDayOfWeek", false]], "function_getdayofyear() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getDayOfYear", false]], "function_getfullyear() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getFullYear", false]], "function_gethours() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getHours", false]], "function_getmilliseconds() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getMilliseconds", false]], "function_getminutes() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getMinutes", false]], "function_getmonth() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getMonth", false]], "function_getseconds() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getSeconds", false]], "function_matches() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_matches", false]], "function_size() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_size", false]], "function_startswith() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_startsWith", false]], "functiontype (class in celpy.celtypes)": [[0, "celpy.celtypes.FunctionType", false]], "get() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.get", false]], "get() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.get", false]], "get() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.get", false]], "get_access_log() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_access_log", false]], "get_accounts() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_accounts", false]], "get_endpoints() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_endpoints", false]], "get_health_events() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_health_events", false]], "get_key_policy() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_key_policy", false]], "get_load_balancer() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_load_balancer", false]], "get_metrics() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_metrics", false]], "get_options() (in module celpy.__main__)": [[0, "celpy.__main__.get_options", false]], "get_orgids() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_orgids", false]], "get_protocols() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_protocols", false]], "get_raw_health_events() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_raw_health_events", false]], "get_raw_metrics() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_raw_metrics", false]], "get_related_ids() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_ids", false]], "get_related_igws() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_igws", false]], "get_related_kms_keys() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_kms_keys", false]], "get_related_nat_gateways() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_nat_gateways", false]], "get_related_security_configs() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_security_configs", false]], "get_related_sgs() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_sgs", false]], "get_related_subnets() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_subnets", false]], "get_related_vpc() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_vpc", false]], "get_resource_policy() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_resource_policy", false]], "get_vpces() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_vpces", false]], "get_vpcs() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_vpcs", false]], "getdate() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getDate", false]], "getdayofmonth() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getDayOfMonth", false]], "getdayofweek() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getDayOfWeek", false]], "getdayofyear() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getDayOfYear", false]], "getfullyear() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getFullYear", false]], "gethours() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.getHours", false]], "gethours() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getHours", false]], "getmilliseconds() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.getMilliseconds", false]], "getmilliseconds() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getMilliseconds", false]], "getminutes() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.getMinutes", false]], "getminutes() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getMinutes", false]], "getmonth() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getMonth", false]], "getseconds() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.getSeconds", false]], "getseconds() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getSeconds", false]], "gherkinize": [[4, "module-gherkinize", false]], "glob() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.glob", false]], "home": [[2, "index-0", false], [2, "index-1", false]], "ident() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.ident", false]], "ident() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.ident", false]], "ident_arg() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.ident_arg", false]], "ident_arg() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.ident_arg", false]], "ident_arg() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.ident_arg", false]], "ident_pat (celpy.evaluation.namecontainer attribute)": [[0, "celpy.evaluation.NameContainer.ident_pat", false]], "ident_value() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.ident_value", false]], "image() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.image", false]], "int32value (class in celpy.__init__)": [[0, "celpy.__init__.Int32Value", false]], "int64() (in module celpy.celtypes)": [[0, "celpy.celtypes.int64", false]], "interpretedrunner (class in celpy.__init__)": [[0, "celpy.__init__.InterpretedRunner", false]], "intersect() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.intersect", false]], "intro (celpy.__main__.cel_repl attribute)": [[0, "celpy.__main__.CEL_REPL.intro", false]], "inttype (class in celpy.celtypes)": [[0, "celpy.celtypes.IntType", false]], "ipv4network (class in celpy.c7nlib)": [[0, "celpy.c7nlib.IPv4Network", false]], "jmes_path() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.jmes_path", false]], "jmes_path_map() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.jmes_path_map", false]], "json_to_cel() (in module celpy.adapter)": [[0, "celpy.adapter.json_to_cel", false]], "key() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.key", false]], "kms_alias() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.kms_alias", false]], "kms_key() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.kms_key", false]], "list_lit() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.list_lit", false]], "list_lit() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.list_lit", false]], "listtype (class in celpy.celtypes)": [[0, "celpy.celtypes.ListType", false]], "literal() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.literal", false]], "literal() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.literal", false]], "literal() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.literal", false]], "load_annotations() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.load_annotations", false]], "load_values() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.load_values", false]], "logger (celpy.__main__.cel_repl attribute)": [[0, "celpy.__main__.CEL_REPL.logger", false]], "logger (celpy.evaluation.evaluator attribute)": [[0, "celpy.evaluation.Evaluator.logger", false]], "logger (celpy.evaluation.namecontainer attribute)": [[0, "celpy.evaluation.NameContainer.logger", false]], "logger (celpy.evaluation.transpiler attribute)": [[0, "celpy.evaluation.Transpiler.logger", false]], "logical_and() (in module celpy.celtypes)": [[0, "celpy.celtypes.logical_and", false]], "logical_condition() (in module celpy.celtypes)": [[0, "celpy.celtypes.logical_condition", false]], "logical_not() (in module celpy.celtypes)": [[0, "celpy.celtypes.logical_not", false]], "logical_or() (in module celpy.celtypes)": [[0, "celpy.celtypes.logical_or", false]], "macro_all() (in module celpy.evaluation)": [[0, "celpy.evaluation.macro_all", false]], "macro_exists() (in module celpy.evaluation)": [[0, "celpy.evaluation.macro_exists", false]], "macro_exists_one() (in module celpy.evaluation)": [[0, "celpy.evaluation.macro_exists_one", false]], "macro_filter() (in module celpy.evaluation)": [[0, "celpy.evaluation.macro_filter", false]], "macro_has_eval() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.macro_has_eval", false]], "macro_map() (in module celpy.evaluation)": [[0, "celpy.evaluation.macro_map", false]], "main() (in module celpy.__main__)": [[0, "celpy.__main__.main", false]], "map_lit() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.map_lit", false]], "map_lit() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.map_lit", false]], "mapinits() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.mapinits", false]], "mapinits() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.mapinits", false]], "mapinits() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.mapinits", false]], "maptype (class in celpy.celtypes)": [[0, "celpy.celtypes.MapType", false]], "marked_key() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.marked_key", false]], "maxseconds (celpy.celtypes.durationtype attribute)": [[0, "celpy.celtypes.DurationType.MaxSeconds", false]], "member() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.member", false]], "member() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.member", false]], "member_dot() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.member_dot", false]], "member_dot() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.member_dot", false]], "member_dot() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.member_dot", false]], "member_dot_arg() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.member_dot_arg", false]], "member_dot_arg() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.member_dot_arg", false]], "member_dot_arg() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.member_dot_arg", false]], "member_dot_arg() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.member_dot_arg", false]], "member_index() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.member_index", false]], "member_index() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.member_index", false]], "member_index() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.member_index", false]], "member_object() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.member_object", false]], "member_object() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.member_object", false]], "member_object() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.member_object", false]], "messagetype (class in celpy.celtypes)": [[0, "celpy.celtypes.MessageType", false]], "method_eval() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.method_eval", false]], "minseconds (celpy.celtypes.durationtype attribute)": [[0, "celpy.celtypes.DurationType.MinSeconds", false]], "module": [[0, "module-celpy.__init__", false], [0, "module-celpy.__main__", false], [0, "module-celpy.adapter", false], [0, "module-celpy.c7nlib", false], [0, "module-celpy.celparser", false], [0, "module-celpy.celtypes", false], [0, "module-celpy.evaluation", false], [4, "module-features.steps.c7n_integration", false], [4, "module-features.steps.cli_binding", false], [4, "module-features.steps.integration_binding", false], [4, "module-gherkinize", false]], "multiplication() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.multiplication", false]], "multiplication() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.multiplication", false]], "multiplication() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.multiplication", false]], "multiplication_div() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.multiplication_div", false]], "multiplication_mod() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.multiplication_mod", false]], "multiplication_mul() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.multiplication_mul", false]], "namecontainer (class in celpy.evaluation)": [[0, "celpy.evaluation.NameContainer", false]], "namecontainer.notfound": [[0, "celpy.evaluation.NameContainer.NotFound", false]], "nanosecondspersecond (celpy.celtypes.durationtype attribute)": [[0, "celpy.celtypes.DurationType.NanosecondsPerSecond", false]], "nested_activation() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.nested_activation", false]], "new_activation() (celpy.__init__.runner method)": [[0, "celpy.__init__.Runner.new_activation", false]], "normalize() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.normalize", false]], "nulltype (class in celpy.celtypes)": [[0, "celpy.celtypes.NullType", false]], "operator_in() (in module celpy.evaluation)": [[0, "celpy.evaluation.operator_in", false]], "packagetype (class in celpy.celtypes)": [[0, "celpy.celtypes.PackageType", false]], "paren_expr() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.paren_expr", false]], "paren_expr() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.paren_expr", false]], "parent_iter() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.parent_iter", false]], "parse() (celpy.celparser.celparser method)": [[0, "celpy.celparser.CELParser.parse", false]], "parse_cidr() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.parse_cidr", false]], "parse_text() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.parse_text", false]], "phase1transpiler (class in celpy.evaluation)": [[0, "celpy.evaluation.Phase1Transpiler", false]], "phase2transpiler (class in celpy.evaluation)": [[0, "celpy.evaluation.Phase2Transpiler", false]], "preloop() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.preloop", false]], "present() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.present", false]], "primary() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.primary", false]], "primary() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.primary", false]], "process_json_doc() (in module celpy.__main__)": [[0, "celpy.__main__.process_json_doc", false]], "program() (celpy.__init__.environment method)": [[0, "celpy.__init__.Environment.program", false]], "prompt (celpy.__main__.cel_repl attribute)": [[0, "celpy.__main__.CEL_REPL.prompt", false]], "python-tools/gherkinize.py-[-o-output]-[-sv]-source command line option": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-arg-source", false], [4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-o", false], [4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-s", false], [4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-v", false]], "referent (class in celpy.evaluation)": [[0, "celpy.evaluation.Referent", false]], "relation() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation", false]], "relation() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.relation", false]], "relation() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.relation", false]], "relation_eq() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_eq", false]], "relation_ge() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_ge", false]], "relation_gt() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_gt", false]], "relation_in() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_in", false]], "relation_le() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_le", false]], "relation_lt() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_lt", false]], "relation_ne() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_ne", false]], "resolve_function() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.resolve_function", false]], "resolve_name() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.resolve_name", false]], "resolve_variable() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.resolve_variable", false]], "resource_schedule() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.resource_schedule", false]], "result() (in module celpy.evaluation)": [[0, "celpy.evaluation.result", false]], "runner (class in celpy.__init__)": [[0, "celpy.__init__.Runner", false]], "scale (celpy.celtypes.durationtype attribute)": [[0, "celpy.celtypes.DurationType.scale", false]], "security_group() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.security_group", false]], "set_activation() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.set_activation", false]], "shield_protection() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.shield_protection", false]], "shield_subscription() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.shield_subscription", false]], "size_parse_cidr() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.size_parse_cidr", false]], "source": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-arg-source", false]], "stat() (in module celpy.__main__)": [[0, "celpy.__main__.stat", false]], "statements() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.statements", false]], "stringtype (class in celpy.celtypes)": [[0, "celpy.celtypes.StringType", false]], "sub_evaluator() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.sub_evaluator", false]], "subnet() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.subnet", false]], "subst() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.subst", false]], "text_from() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.text_from", false]], "the_activation (in module celpy.evaluation)": [[0, "celpy.evaluation.the_activation", false]], "timestamptype (class in celpy.celtypes)": [[0, "celpy.celtypes.TimestampType", false]], "to_python() (celpy.adapter.celjsonencoder static method)": [[0, "celpy.adapter.CELJSONEncoder.to_python", false]], "trace() (in module celpy.evaluation)": [[0, "celpy.evaluation.trace", false]], "transpile() (celpy.evaluation.transpiler method)": [[0, "celpy.evaluation.Transpiler.transpile", false]], "transpiler (class in celpy.evaluation)": [[0, "celpy.evaluation.Transpiler", false]], "transpilertree (class in celpy.evaluation)": [[0, "celpy.evaluation.TranspilerTree", false]], "tree_dump() (in module celpy.celparser)": [[0, "celpy.celparser.tree_dump", false]], "tree_node_class (celpy.__init__.compiledrunner attribute)": [[0, "celpy.__init__.CompiledRunner.tree_node_class", false]], "tree_node_class (celpy.__init__.runner attribute)": [[0, "celpy.__init__.Runner.tree_node_class", false]], "type_matched() (in module celpy.celtypes)": [[0, "celpy.celtypes.type_matched", false]], "typetype (class in celpy.celtypes)": [[0, "celpy.celtypes.TypeType", false]], "tz_aliases (celpy.celtypes.timestamptype attribute)": [[0, "celpy.celtypes.TimestampType.TZ_ALIASES", false]], "tz_name_lookup() (celpy.celtypes.timestamptype class method)": [[0, "celpy.celtypes.TimestampType.tz_name_lookup", false]], "tz_offset_parse() (celpy.celtypes.timestamptype class method)": [[0, "celpy.celtypes.TimestampType.tz_offset_parse", false]], "tz_parse() (celpy.celtypes.timestamptype static method)": [[0, "celpy.celtypes.TimestampType.tz_parse", false]], "uint64() (in module celpy.celtypes)": [[0, "celpy.celtypes.uint64", false]], "uinttype (class in celpy.celtypes)": [[0, "celpy.celtypes.UintType", false]], "unary() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.unary", false]], "unary() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.unary", false]], "unary() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.unary", false]], "unary_neg() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.unary_neg", false]], "unary_not() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.unary_not", false]], "unique_size() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.unique_size", false]], "valid_key_type() (celpy.celtypes.maptype static method)": [[0, "celpy.celtypes.MapType.valid_key_type", false]], "value (celpy.evaluation.referent property)": [[0, "celpy.evaluation.Referent.value", false]], "value_from() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.value_from", false]], "version() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.version", false]], "visit() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.visit", false]], "visit_children() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.visit_children", false]], "vpc() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.vpc", false]], "web_acls() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.web_acls", false]], "with_traceback() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.with_traceback", false]]}, "objects": {"": [[4, 0, 0, "-", "gherkinize"]], "celpy": [[0, 0, 0, "-", "__init__"], [0, 0, 0, "-", "__main__"], [0, 0, 0, "-", "adapter"], [0, 0, 0, "-", "c7nlib"], [0, 0, 0, "-", "celparser"], [0, 0, 0, "-", "celtypes"], [0, 0, 0, "-", "evaluation"], [2, 8, 1, "cmdoption-celpy-a", "--arg"], [2, 8, 1, "cmdoption-celpy-b", "--boolean"], [2, 8, 1, "cmdoption-celpy-f", "--format"], [2, 8, 1, "cmdoption-celpy-i", "--interactive"], [2, 8, 1, "cmdoption-celpy-d", "--json-document"], [2, 8, 1, "cmdoption-celpy-p", "--json-package"], [2, 8, 1, "cmdoption-celpy-n", "--null-input"], [2, 8, 1, "cmdoption-celpy-s", "--slurp"], [2, 8, 1, "cmdoption-celpy-a", "-a"], [2, 8, 1, "cmdoption-celpy-b", "-b"], [2, 8, 1, "cmdoption-celpy-d", "-d"], [2, 8, 1, "cmdoption-celpy-f", "-f"], [2, 8, 1, "cmdoption-celpy-i", "-i"], [2, 8, 1, "cmdoption-celpy-n", "-n"], [2, 8, 1, "cmdoption-celpy-p", "-p"], [2, 8, 1, "cmdoption-celpy-s", "-s"], [2, 8, 1, "cmdoption-celpy-arg-expr", "expr"]], "celpy.__init__": [[0, 1, 1, "", "CompiledRunner"], [0, 1, 1, "", "Environment"], [0, 1, 1, "", "Int32Value"], [0, 1, 1, "", "InterpretedRunner"], [0, 1, 1, "", "Runner"]], "celpy.__init__.CompiledRunner": [[0, 2, 1, "", "__abstractmethods__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "evaluate"], [0, 2, 1, "", "tree_node_class"]], "celpy.__init__.Environment": [[0, 3, 1, "", "__init__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "compile"], [0, 3, 1, "", "program"]], "celpy.__init__.Int32Value": [[0, 3, 1, "", "__new__"]], "celpy.__init__.InterpretedRunner": [[0, 2, 1, "", "__abstractmethods__"], [0, 3, 1, "", "evaluate"]], "celpy.__init__.Runner": [[0, 2, 1, "", "__abstractmethods__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "evaluate"], [0, 3, 1, "", "new_activation"], [0, 2, 1, "", "tree_node_class"]], "celpy.__main__": [[0, 1, 1, "", "CEL_REPL"], [0, 4, 1, "", "arg_type_value"], [0, 4, 1, "", "get_options"], [0, 4, 1, "", "main"], [0, 4, 1, "", "process_json_doc"], [0, 4, 1, "", "stat"]], "celpy.__main__.CEL_REPL": [[0, 3, 1, "", "cel_eval"], [0, 3, 1, "", "default"], [0, 3, 1, "", "do_EOF"], [0, 3, 1, "", "do_bye"], [0, 3, 1, "", "do_exit"], [0, 3, 1, "", "do_quit"], [0, 3, 1, "", "do_set"], [0, 3, 1, "", "do_show"], [0, 2, 1, "", "intro"], [0, 2, 1, "", "logger"], [0, 3, 1, "", "preloop"], [0, 2, 1, "", "prompt"]], "celpy.adapter": [[0, 1, 1, "", "CELJSONDecoder"], [0, 1, 1, "", "CELJSONEncoder"], [0, 4, 1, "", "json_to_cel"]], "celpy.adapter.CELJSONDecoder": [[0, 3, 1, "", "decode"]], "celpy.adapter.CELJSONEncoder": [[0, 3, 1, "", "default"], [0, 3, 1, "", "encode"], [0, 3, 1, "", "to_python"]], "celpy.c7nlib": [[0, 1, 1, "", "C7NContext"], [0, 1, 1, "", "C7N_Interpreted_Runner"], [0, 1, 1, "", "ComparableVersion"], [0, 1, 1, "", "IPv4Network"], [0, 4, 1, "", "absent"], [0, 4, 1, "", "all_dbsubenet_groups"], [0, 4, 1, "", "all_images"], [0, 4, 1, "", "all_instance_profiles"], [0, 4, 1, "", "all_launch_configuration_names"], [0, 4, 1, "", "all_scan_groups"], [0, 4, 1, "", "all_service_roles"], [0, 4, 1, "", "all_snapshots"], [0, 4, 1, "", "arn_split"], [0, 4, 1, "", "credentials"], [0, 4, 1, "", "describe_db_snapshot_attributes"], [0, 4, 1, "", "describe_subscription_filters"], [0, 4, 1, "", "difference"], [0, 4, 1, "", "flow_logs"], [0, 4, 1, "", "get_access_log"], [0, 4, 1, "", "get_accounts"], [0, 4, 1, "", "get_endpoints"], [0, 4, 1, "", "get_health_events"], [0, 4, 1, "", "get_key_policy"], [0, 4, 1, "", "get_load_balancer"], [0, 4, 1, "", "get_metrics"], [0, 4, 1, "", "get_orgids"], [0, 4, 1, "", "get_protocols"], [0, 4, 1, "", "get_raw_health_events"], [0, 4, 1, "", "get_raw_metrics"], [0, 4, 1, "", "get_related_ids"], [0, 4, 1, "", "get_related_igws"], [0, 4, 1, "", "get_related_kms_keys"], [0, 4, 1, "", "get_related_nat_gateways"], [0, 4, 1, "", "get_related_security_configs"], [0, 4, 1, "", "get_related_sgs"], [0, 4, 1, "", "get_related_subnets"], [0, 4, 1, "", "get_related_vpc"], [0, 4, 1, "", "get_resource_policy"], [0, 4, 1, "", "get_vpces"], [0, 4, 1, "", "get_vpcs"], [0, 4, 1, "", "glob"], [0, 4, 1, "", "image"], [0, 4, 1, "", "intersect"], [0, 4, 1, "", "jmes_path"], [0, 4, 1, "", "jmes_path_map"], [0, 4, 1, "", "key"], [0, 4, 1, "", "kms_alias"], [0, 4, 1, "", "kms_key"], [0, 4, 1, "", "marked_key"], [0, 4, 1, "", "normalize"], [0, 4, 1, "", "parse_cidr"], [0, 4, 1, "", "parse_text"], [0, 4, 1, "", "present"], [0, 4, 1, "", "resource_schedule"], [0, 4, 1, "", "security_group"], [0, 4, 1, "", "shield_protection"], [0, 4, 1, "", "shield_subscription"], [0, 4, 1, "", "size_parse_cidr"], [0, 4, 1, "", "subnet"], [0, 4, 1, "", "subst"], [0, 4, 1, "", "text_from"], [0, 4, 1, "", "unique_size"], [0, 4, 1, "", "value_from"], [0, 4, 1, "", "version"], [0, 4, 1, "", "vpc"], [0, 4, 1, "", "web_acls"]], "celpy.c7nlib.C7NContext": [[0, 3, 1, "", "__enter__"], [0, 3, 1, "", "__exit__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "__repr__"]], "celpy.c7nlib.C7N_Interpreted_Runner": [[0, 2, 1, "", "__abstractmethods__"], [0, 3, 1, "", "evaluate"]], "celpy.c7nlib.ComparableVersion": [[0, 3, 1, "", "__eq__"], [0, 2, 1, "", "__hash__"]], "celpy.c7nlib.IPv4Network": [[0, 3, 1, "", "__contains__"], [0, 3, 1, "", "contains"]], "celpy.celparser": [[0, 5, 1, "", "CELParseError"], [0, 1, 1, "", "CELParser"], [0, 1, 1, "", "DumpAST"], [0, 4, 1, "", "tree_dump"]], "celpy.celparser.CELParseError": [[0, 3, 1, "", "__init__"]], "celpy.celparser.CELParser": [[0, 2, 1, "", "CEL_PARSER"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "ambiguous_literals"], [0, 3, 1, "", "error_text"], [0, 3, 1, "", "parse"]], "celpy.celparser.DumpAST": [[0, 3, 1, "", "__init__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "addition"], [0, 3, 1, "", "addition_add"], [0, 3, 1, "", "addition_sub"], [0, 3, 1, "", "conditionaland"], [0, 3, 1, "", "conditionalor"], [0, 3, 1, "", "display"], [0, 3, 1, "", "dot_ident"], [0, 3, 1, "", "dot_ident_arg"], [0, 3, 1, "", "expr"], [0, 3, 1, "", "exprlist"], [0, 3, 1, "", "fieldinits"], [0, 3, 1, "", "ident"], [0, 3, 1, "", "ident_arg"], [0, 3, 1, "", "list_lit"], [0, 3, 1, "", "literal"], [0, 3, 1, "", "map_lit"], [0, 3, 1, "", "mapinits"], [0, 3, 1, "", "member_dot"], [0, 3, 1, "", "member_dot_arg"], [0, 3, 1, "", "member_index"], [0, 3, 1, "", "member_object"], [0, 3, 1, "", "multiplication"], [0, 3, 1, "", "multiplication_div"], [0, 3, 1, "", "multiplication_mod"], [0, 3, 1, "", "multiplication_mul"], [0, 3, 1, "", "paren_expr"], [0, 3, 1, "", "relation"], [0, 3, 1, "", "relation_eq"], [0, 3, 1, "", "relation_ge"], [0, 3, 1, "", "relation_gt"], [0, 3, 1, "", "relation_in"], [0, 3, 1, "", "relation_le"], [0, 3, 1, "", "relation_lt"], [0, 3, 1, "", "relation_ne"], [0, 3, 1, "", "unary"], [0, 3, 1, "", "unary_neg"], [0, 3, 1, "", "unary_not"]], "celpy.celtypes": [[0, 1, 1, "", "BoolType"], [0, 1, 1, "", "BytesType"], [0, 1, 1, "", "DoubleType"], [0, 1, 1, "", "DurationType"], [0, 1, 1, "", "FunctionType"], [0, 1, 1, "", "IntType"], [0, 1, 1, "", "ListType"], [0, 1, 1, "", "MapType"], [0, 1, 1, "", "MessageType"], [0, 1, 1, "", "NullType"], [0, 1, 1, "", "PackageType"], [0, 1, 1, "", "StringType"], [0, 1, 1, "", "TimestampType"], [0, 1, 1, "", "TypeType"], [0, 1, 1, "", "UintType"], [0, 4, 1, "", "int64"], [0, 4, 1, "", "logical_and"], [0, 4, 1, "", "logical_condition"], [0, 4, 1, "", "logical_not"], [0, 4, 1, "", "logical_or"], [0, 4, 1, "", "type_matched"], [0, 4, 1, "", "uint64"]], "celpy.celtypes.BoolType": [[0, 3, 1, "", "__hash__"], [0, 3, 1, "", "__neg__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__str__"]], "celpy.celtypes.BytesType": [[0, 3, 1, "", "__new__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "contains"]], "celpy.celtypes.DoubleType": [[0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__hash__"], [0, 3, 1, "", "__mod__"], [0, 3, 1, "", "__ne__"], [0, 3, 1, "", "__neg__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__rmod__"], [0, 3, 1, "", "__rtruediv__"], [0, 3, 1, "", "__str__"], [0, 3, 1, "", "__truediv__"]], "celpy.celtypes.DurationType": [[0, 2, 1, "", "MaxSeconds"], [0, 2, 1, "", "MinSeconds"], [0, 2, 1, "", "NanosecondsPerSecond"], [0, 3, 1, "", "__add__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__radd__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__str__"], [0, 3, 1, "", "getHours"], [0, 3, 1, "", "getMilliseconds"], [0, 3, 1, "", "getMinutes"], [0, 3, 1, "", "getSeconds"], [0, 2, 1, "", "scale"]], "celpy.celtypes.FunctionType": [[0, 3, 1, "", "__call__"]], "celpy.celtypes.IntType": [[0, 3, 1, "", "__add__"], [0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__floordiv__"], [0, 3, 1, "", "__ge__"], [0, 3, 1, "", "__gt__"], [0, 3, 1, "", "__hash__"], [0, 3, 1, "", "__le__"], [0, 3, 1, "", "__lt__"], [0, 3, 1, "", "__mod__"], [0, 3, 1, "", "__mul__"], [0, 3, 1, "", "__ne__"], [0, 3, 1, "", "__neg__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__radd__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__rfloordiv__"], [0, 3, 1, "", "__rmod__"], [0, 3, 1, "", "__rmul__"], [0, 3, 1, "", "__rsub__"], [0, 3, 1, "", "__rtruediv__"], [0, 3, 1, "", "__str__"], [0, 3, 1, "", "__sub__"], [0, 3, 1, "", "__truediv__"]], "celpy.celtypes.ListType": [[0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__ge__"], [0, 3, 1, "", "__gt__"], [0, 2, 1, "", "__hash__"], [0, 3, 1, "", "__le__"], [0, 3, 1, "", "__lt__"], [0, 3, 1, "", "__ne__"], [0, 2, 1, "", "__orig_bases__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "contains"]], "celpy.celtypes.MapType": [[0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__getitem__"], [0, 2, 1, "", "__hash__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "__ne__"], [0, 2, 1, "", "__orig_bases__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "contains"], [0, 3, 1, "", "get"], [0, 3, 1, "", "valid_key_type"]], "celpy.celtypes.MessageType": [[0, 3, 1, "", "__init__"], [0, 2, 1, "", "__parameters__"]], "celpy.celtypes.NullType": [[0, 3, 1, "", "__eq__"], [0, 2, 1, "", "__hash__"], [0, 3, 1, "", "__ne__"]], "celpy.celtypes.PackageType": [[0, 2, 1, "", "__parameters__"]], "celpy.celtypes.StringType": [[0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__hash__"], [0, 3, 1, "", "__ne__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "contains"]], "celpy.celtypes.TimestampType": [[0, 2, 1, "", "TZ_ALIASES"], [0, 3, 1, "", "__add__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__radd__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__str__"], [0, 3, 1, "", "__sub__"], [0, 3, 1, "", "getDate"], [0, 3, 1, "", "getDayOfMonth"], [0, 3, 1, "", "getDayOfWeek"], [0, 3, 1, "", "getDayOfYear"], [0, 3, 1, "", "getFullYear"], [0, 3, 1, "", "getHours"], [0, 3, 1, "", "getMilliseconds"], [0, 3, 1, "", "getMinutes"], [0, 3, 1, "", "getMonth"], [0, 3, 1, "", "getSeconds"], [0, 3, 1, "", "tz_name_lookup"], [0, 3, 1, "", "tz_offset_parse"], [0, 3, 1, "", "tz_parse"]], "celpy.celtypes.TypeType": [[0, 3, 1, "", "__new__"]], "celpy.celtypes.UintType": [[0, 3, 1, "", "__add__"], [0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__floordiv__"], [0, 3, 1, "", "__hash__"], [0, 3, 1, "", "__mod__"], [0, 3, 1, "", "__mul__"], [0, 3, 1, "", "__ne__"], [0, 3, 1, "", "__neg__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__radd__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__rfloordiv__"], [0, 3, 1, "", "__rmod__"], [0, 3, 1, "", "__rmul__"], [0, 3, 1, "", "__rsub__"], [0, 3, 1, "", "__rtruediv__"], [0, 3, 1, "", "__str__"], [0, 3, 1, "", "__sub__"], [0, 3, 1, "", "__truediv__"]], "celpy.evaluation": [[0, 1, 1, "", "Activation"], [0, 5, 1, "", "CELEvalError"], [0, 5, 1, "", "CELSyntaxError"], [0, 5, 1, "", "CELUnsupportedError"], [0, 1, 1, "", "Evaluator"], [0, 1, 1, "", "NameContainer"], [0, 1, 1, "", "Phase1Transpiler"], [0, 1, 1, "", "Phase2Transpiler"], [0, 1, 1, "", "Referent"], [0, 1, 1, "", "Transpiler"], [0, 1, 1, "", "TranspilerTree"], [0, 4, 1, "", "bool_eq"], [0, 4, 1, "", "bool_ge"], [0, 4, 1, "", "bool_gt"], [0, 4, 1, "", "bool_le"], [0, 4, 1, "", "bool_lt"], [0, 4, 1, "", "bool_ne"], [0, 4, 1, "", "boolean"], [0, 4, 1, "", "celbytes"], [0, 4, 1, "", "celstr"], [0, 4, 1, "", "eval_error"], [0, 4, 1, "", "function_contains"], [0, 4, 1, "", "function_endsWith"], [0, 4, 1, "", "function_getDate"], [0, 4, 1, "", "function_getDayOfMonth"], [0, 4, 1, "", "function_getDayOfWeek"], [0, 4, 1, "", "function_getDayOfYear"], [0, 4, 1, "", "function_getFullYear"], [0, 4, 1, "", "function_getHours"], [0, 4, 1, "", "function_getMilliseconds"], [0, 4, 1, "", "function_getMinutes"], [0, 4, 1, "", "function_getMonth"], [0, 4, 1, "", "function_getSeconds"], [0, 4, 1, "", "function_matches"], [0, 4, 1, "", "function_size"], [0, 4, 1, "", "function_startsWith"], [0, 4, 1, "", "macro_all"], [0, 4, 1, "", "macro_exists"], [0, 4, 1, "", "macro_exists_one"], [0, 4, 1, "", "macro_filter"], [0, 4, 1, "", "macro_map"], [0, 4, 1, "", "operator_in"], [0, 4, 1, "", "result"], [0, 7, 1, "", "the_activation"], [0, 4, 1, "", "trace"]], "celpy.evaluation.Activation": [[0, 3, 1, "", "__getattr__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "clone"], [0, 3, 1, "", "get"], [0, 3, 1, "", "nested_activation"], [0, 3, 1, "", "resolve_function"], [0, 3, 1, "", "resolve_variable"]], "celpy.evaluation.CELEvalError": [[0, 3, 1, "", "__add__"], [0, 3, 1, "", "__call__"], [0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__floordiv__"], [0, 2, 1, "", "__hash__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "__mod__"], [0, 3, 1, "", "__mul__"], [0, 3, 1, "", "__neg__"], [0, 3, 1, "", "__pow__"], [0, 3, 1, "", "__radd__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__rfloordiv__"], [0, 3, 1, "", "__rmod__"], [0, 3, 1, "", "__rmul__"], [0, 3, 1, "", "__rpow__"], [0, 3, 1, "", "__rsub__"], [0, 3, 1, "", "__rtruediv__"], [0, 3, 1, "", "__sub__"], [0, 3, 1, "", "__truediv__"], [0, 3, 1, "", "with_traceback"]], "celpy.evaluation.CELSyntaxError": [[0, 3, 1, "", "__init__"]], "celpy.evaluation.CELUnsupportedError": [[0, 3, 1, "", "__init__"]], "celpy.evaluation.Evaluator": [[0, 2, 1, "", "__abstractmethods__"], [0, 3, 1, "", "__init__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "addition"], [0, 3, 1, "", "build_macro_eval"], [0, 3, 1, "", "build_reduce_macro_eval"], [0, 3, 1, "", "build_ss_macro_eval"], [0, 3, 1, "", "conditionaland"], [0, 3, 1, "", "conditionalor"], [0, 3, 1, "", "evaluate"], [0, 3, 1, "", "expr"], [0, 3, 1, "", "exprlist"], [0, 3, 1, "", "fieldinits"], [0, 3, 1, "", "function_eval"], [0, 3, 1, "", "ident_value"], [0, 3, 1, "", "literal"], [0, 2, 1, "", "logger"], [0, 3, 1, "", "macro_has_eval"], [0, 3, 1, "", "mapinits"], [0, 3, 1, "", "member"], [0, 3, 1, "", "member_dot"], [0, 3, 1, "", "member_dot_arg"], [0, 3, 1, "", "member_index"], [0, 3, 1, "", "member_object"], [0, 3, 1, "", "method_eval"], [0, 3, 1, "", "multiplication"], [0, 3, 1, "", "primary"], [0, 3, 1, "", "relation"], [0, 3, 1, "", "set_activation"], [0, 3, 1, "", "sub_evaluator"], [0, 3, 1, "", "unary"], [0, 3, 1, "", "visit_children"]], "celpy.evaluation.NameContainer": [[0, 5, 1, "", "NotFound"], [0, 3, 1, "", "__init__"], [0, 2, 1, "", "__orig_bases__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "clone"], [0, 3, 1, "", "dict_find_name"], [0, 2, 1, "", "extended_name_path"], [0, 3, 1, "", "find_name"], [0, 3, 1, "", "get"], [0, 2, 1, "", "ident_pat"], [0, 3, 1, "", "load_annotations"], [0, 3, 1, "", "load_values"], [0, 2, 1, "", "logger"], [0, 3, 1, "", "parent_iter"], [0, 3, 1, "", "resolve_name"]], "celpy.evaluation.Phase1Transpiler": [[0, 3, 1, "", "__init__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "addition"], [0, 3, 1, "", "conditionaland"], [0, 3, 1, "", "conditionalor"], [0, 3, 1, "", "dot_ident"], [0, 3, 1, "", "dot_ident_arg"], [0, 3, 1, "", "expr"], [0, 3, 1, "", "exprlist"], [0, 3, 1, "", "fieldinits"], [0, 3, 1, "", "func_name"], [0, 3, 1, "", "ident"], [0, 3, 1, "", "ident_arg"], [0, 3, 1, "", "list_lit"], [0, 3, 1, "", "literal"], [0, 3, 1, "", "map_lit"], [0, 3, 1, "", "mapinits"], [0, 3, 1, "", "member"], [0, 3, 1, "", "member_dot"], [0, 3, 1, "", "member_dot_arg"], [0, 3, 1, "", "member_index"], [0, 3, 1, "", "member_object"], [0, 3, 1, "", "multiplication"], [0, 3, 1, "", "paren_expr"], [0, 3, 1, "", "primary"], [0, 3, 1, "", "relation"], [0, 3, 1, "", "unary"], [0, 3, 1, "", "visit"]], "celpy.evaluation.Phase2Transpiler": [[0, 3, 1, "", "__init__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "conditionaland"], [0, 3, 1, "", "conditionalor"], [0, 3, 1, "", "expr"], [0, 3, 1, "", "ident_arg"], [0, 3, 1, "", "member_dot_arg"], [0, 3, 1, "", "statements"]], "celpy.evaluation.Referent": [[0, 3, 1, "", "__eq__"], [0, 2, 1, "", "__hash__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "clone"], [0, 6, 1, "", "value"]], "celpy.evaluation.Transpiler": [[0, 3, 1, "", "__init__"], [0, 3, 1, "", "evaluate"], [0, 2, 1, "", "logger"], [0, 3, 1, "", "transpile"]], "celpy.evaluation.TranspilerTree": [[0, 3, 1, "", "__init__"], [0, 2, 1, "", "__parameters__"], [0, 2, 1, "", "children"], [0, 2, 1, "", "data"]], "features.steps": [[4, 0, 0, "-", "c7n_integration"], [4, 0, 0, "-", "cli_binding"], [4, 0, 0, "-", "integration_binding"]], "python-tools/gherkinize.py-[-o-output]-[-sv]-source": [[4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-o", "--output"], [4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-s", "--silent"], [4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-v", "--verbose"], [4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-o", "-o"], [4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-s", "-s"], [4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-v", "-v"], [4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-arg-source", "source"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"], "5": ["py", "exception", "Python exception"], "6": ["py", "property", "Python property"], "7": ["py", "data", "Python data"], "8": ["std", "cmdoption", "program option"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:method", "4": "py:function", "5": "py:exception", "6": "py:property", "7": "py:data", "8": "std:cmdoption"}, "terms": {"": [0, 1, 2, 3, 4, 7, 8], "0": [0, 1, 2, 4, 7], "00": 7, "001": 0, "002": 1, "01": 1, "011": 1, "01ab23cd": 1, "02": [0, 1], "03": 1, "03t16": 7, "03z": [2, 7], "04": [1, 7], "05": 1, "06": 0, "06t05": 7, "06t20": 2, "07": [1, 2, 7], "08": [1, 7], "084": 1, "09": 0, "0u": 4, "1": [0, 1, 2, 3, 4, 7], "10": [0, 1], "100": [1, 2], "1000": 1, "10000": 1, "1000000000": 0, "1004": 1, "101": 1, "1021": 1, "1023": 1, "10240": 1, "1026": 1, "103": 1, "1034": 1, "104": 1, "1041": 1, "1045": 1, "105": 1, "1057": 1, "106": 1, "1066": 1, "108": 1, "1080": 1, "10am": 1, "11": [1, 2], "111": 1, "1124": 1, "113": 2, "1144": 1, "115": 1, "116": 1, "117": 1, "1178": 1, "1180": 1, "1191": 1, "12": [1, 4], "121": 1, "1211": 1, "122": 1, "123": [0, 1, 7], "1232": 1, "1234567890": 0, "123u": 0, "125": 1, "127": [0, 1], "128": 1, "1295": 1, "12ab34cd": 1, "13": [2, 6], "131": 1, "132": 1, "1333": 1, "134": 1, "135": 2, "136": 1, "138": 0, "13t23": 0, "14": [0, 1], "140": 7, "1410": 1, "1415929203539825": 2, "1437": 1, "145": 1, "147": 1, "1474": 1, "149": 0, "1493": 1, "15": [1, 7], "1505": 1, "1513": 1, "154": 1, "1584": 1, "16": 1, "161": 1, "1613": 1, "162": 1, "167": 1, "16777234": 2, "1686": 1, "17": 1, "1704": 1, "171": 1, "1728": 1, "173": 1, "1779": 1, "178": 1, "1787": 1, "179": 1, "1793": 1, "1799": 1, "18": [0, 1], "182": 1, "183": 1, "184": 1, "18446744073709551615": 0, "185": 1, "189": 1, "19": 1, "190": 1, "194": 1, "1954": 1, "196": 1, "197": 1, "198": 1, "1e": 0, "1st": 1, "1u": 0, "2": [0, 1, 2], "20": 1, "2006": 2, "2009": 0, "2012": 1, "2016": 1, "2017": 1, "2018": 7, "2019": 1, "2020": 1, "2021": 1, "2025": 2, "203": 1, "2048": 1, "205": 1, "206": 1, "20z": 2, "21": [0, 1, 7], "212": 1, "21d": 1, "21z": 2, "22": 1, "223": 1, "2242": 1, "228": 1, "2292": 1, "23": [1, 7], "232": 1, "237": 1, "238": 1, "24": 1, "24h": 7, "24x5": 1, "25": 1, "250": 1, "2500000": 1, "256": 0, "257": 1, "26": 1, "262": 1, "268": 1, "27": [1, 2, 7], "273": 1, "277": [0, 1], "2788": 1, "27t18": 2, "28": 1, "285": 0, "29": 1, "293": 1, "299": 1, "2h45m": 0, "3": [0, 1, 2, 4, 6, 7], "30": [0, 1, 2], "300m": 0, "301": 1, "305": 1, "30z": 0, "31": [0, 2], "313": 1, "314": 1, "315576000000": 0, "317": 1, "318": 1, "32": 1, "325": 1, "329": 1, "34": 1, "341": 1, "341035": 2, "345": 1, "348": 1, "35": 1, "355": [0, 2], "35dai": 1, "36": 1, "3600": 0, "364": 1, "37": 1, "372": 1, "373": 1, "390": 1, "3a": 1, "4": [0, 1], "40": [1, 7], "400": 1, "402": 1, "408": 1, "409": 1, "4096": 2, "41": [1, 2], "412": 1, "413": 1, "42": [0, 1, 2, 8], "424": 1, "429": 1, "42u": 0, "43": 1, "431": 1, "4320": 2, "432u": 0, "436": 1, "438": 1, "443": 1, "448": 1, "45": 1, "453": 1, "455": 1, "456": 0, "47": [1, 7], "48": 1, "485": 1, "490": 1, "493": 1, "4d": 0, "5": [0, 1], "50": 1, "500": 7, "5000": 1, "505": 1, "5103": 1, "512": 1, "5120": 1, "514": 1, "516": 1, "52": 1, "54": 1, "548": 1, "549": 1, "55": 1, "556": 1, "562": 1, "563": 1, "567": 1, "569": 1, "57": 1, "575": 1, "5759": 7, "58": 1, "592": 1, "597": 1, "5h": 0, "6": [0, 1, 2], "60": [0, 1], "600": 7, "604": 1, "608": 1, "610": 1, "612000": 1, "615": 1, "619": 1, "622": 1, "628": 1, "63": 0, "64": [1, 7, 8], "643": 1, "644": 1, "65": 1, "656": 1, "659": 1, "66": 1, "662": 1, "666": 1, "667": 1, "676": 1, "69": 1, "692": 1, "6am": 1, "6f": 2, "6hr": 1, "6pm": 1, "7": [0, 1, 2], "70": 0, "711": 1, "720": 1, "729": 1, "739": 1, "74": 1, "744": 1, "748": 1, "758": 1, "767": 1, "78": 1, "786": 1, "791": 1, "7am": 1, "7pm": 1, "8": [1, 7], "80": 1, "806": 1, "8098": 1, "81": 1, "812": 1, "826": 1, "829": 1, "830985915492956": 2, "842": 1, "845": 1, "86": 1, "86400": [0, 1], "87": 1, "88": 1, "8x5": 1, "9": [0, 1], "90": 1, "92": 1, "9223372036854775807": 0, "9223372036854775808": 0, "93": 1, "932": 1, "934": 1, "94": 1, "97": 1, "98": 1, "987": 1, "988": 1, "99": 1, "9pm": 1, "A": [0, 1, 2, 4, 7, 8], "AND": 0, "And": [0, 2], "As": [0, 2, 7, 8], "At": [0, 8], "But": 0, "By": [0, 2], "For": [0, 1, 2, 4, 6, 7, 8], "If": [0, 1, 2, 3, 7, 8], "In": [0, 1, 2, 3, 6, 7, 8], "It": [0, 1, 2, 7, 8], "NOT": [0, 1], "No": [0, 1, 4, 7, 8], "Not": [0, 1], "Of": 1, "On": [1, 7], "One": [0, 1], "Or": 0, "Such": 8, "THe": 2, "That": 0, "The": [1, 2, 3, 5, 6, 7], "Then": [0, 1, 4], "There": [0, 1, 2, 5, 7, 8], "These": [0, 1, 7, 8], "To": [0, 3, 7], "With": [0, 1], "_": [0, 7], "__abstractmethods__": 0, "__add__": 0, "__call__": [0, 7], "__contains__": 0, "__enter__": 0, "__eq__": 0, "__exit__": 0, "__floordiv__": 0, "__ge__": 0, "__getattr__": 0, "__getitem__": 0, "__gt__": 0, "__hash__": 0, "__init__": [0, 1, 7, 8], "__isinstance__": 0, "__le__": 0, "__lt__": 0, "__main__": [5, 8], "__mod__": 0, "__mul__": 0, "__ne__": 0, "__neg__": 0, "__new__": 0, "__orig_bases__": 0, "__parameters__": 0, "__pow__": 0, "__radd__": 0, "__repr__": 0, "__rfloordiv__": 0, "__rmod__": 0, "__rmul__": 0, "__rpow__": 0, "__rsub__": 0, "__rtruediv__": 0, "__str__": 0, "__sub__": 0, "__traceback__": 0, "__truediv__": 0, "_a": 0, "_oper": 0, "_pull_ami_snapshot": [0, 1], "_pull_asg_imag": [0, 1], "_pull_asg_snapshot": [0, 1], "_pull_ec2_imag": [0, 1], "_w": 0, "a4": 4, "ab": 0, "abandond": 1, "abc": [0, 1], "abil": 2, "abl": [0, 1], "about": [1, 5, 7], "abov": [0, 1, 7], "absenc": 1, "absent": [0, 1], "absolut": 0, "abstract": [0, 7], "accept": [0, 1], "access": 0, "access_kei": 1, "accesskeysperuserquota": 1, "accesslog": 1, "account": [0, 7], "account_id": [0, 1], "account_shield_subscript": [0, 1], "accountaccesskeyspres": 1, "accountcredentialreport": 1, "accountmfaen": 1, "accountnumb": 1, "accountpasswordpolici": 1, "accounts_url": 1, "accountsigningcertificatespres": 1, "achiev": 2, "acl": 1, "aclawss3cidr": 1, "aclsubnetfilt": 1, "acm": [1, 7], "acquir": 1, "across": [1, 5], "act": 1, "action": [0, 1, 7], "action_d": [0, 1], "activ": [0, 1, 2, 7, 8], "actual": [0, 7], "ad": [0, 1, 4], "adapt": [5, 7, 8], "add": [0, 1, 3, 6, 8], "addit": [1, 4, 7, 8], "addition": [0, 1, 2, 7, 8], "addition_add": 0, "addition_sub": 0, "additionalproperti": 1, "addr": 1, "address": [0, 1], "adher": 1, "admin": 1, "administratoraccess": 1, "advanc": 1, "advantag": 2, "advisor": 1, "aes128": 1, "aes256": 1, "after": [0, 1], "ag": 7, "again": [0, 7], "against": [0, 1], "agefilt": 1, "agre": 0, "ahom": 2, "akward": 0, "alarm": 1, "alb": 1, "alblog": 1, "alert": 1, "alia": [0, 4], "alias": [0, 1], "aliasnam": 1, "all": [0, 2, 3, 4, 7, 8], "all_dbsubenet_group": [0, 1], "all_imag": [0, 1], "all_instance_profil": [0, 1], "all_launch_configuration_nam": [0, 1], "all_scan_group": [0, 1], "all_service_rol": [0, 1], "all_snapshot": [0, 1], "all_valu": 1, "alloc": 1, "allocatedstorag": 1, "allow": [0, 2, 7, 8], "allow_nan": 0, "allow_websit": 1, "allowalliampolici": 1, "almost": 0, "alon": [1, 8], "along": [0, 1], "alreadi": 0, "also": [0, 1, 2, 7, 8], "altern": [0, 1], "alwai": [0, 1, 8], "amazon": 1, "amazonaw": 1, "amazons3": 1, "ambigu": 0, "ambiguous_liter": 0, "america": 1, "ami": 0, "amicrossaccountfilt": 1, "among": [0, 1], "amort": 8, "an": [0, 1, 2, 4, 5, 7, 8], "analysi": 1, "analyt": 1, "analyz": 0, "ancient": 1, "ani": [0, 1, 2, 3, 4, 7, 8], "annot": [0, 1, 7, 8], "anoth": [0, 1, 2, 5, 7, 8], "anyof": 1, "ap": 1, "api": [1, 5, 8], "apigw": 1, "apikeyrequir": 1, "app": [1, 8], "appear": [0, 1], "appelb": [0, 1], "appelbdefaultvpcfilt": 1, "appelbhealthcheckprotocolmismatchfilt": 1, "appelblistenerfilt": 1, "appelbmetr": 1, "appelbtargetgroup": 1, "appelbtargetgroupdefaultvpcfilt": 1, "appelbtargetgroupfilt": 1, "append": 0, "appid": 1, "appli": [0, 1, 7], "applic": [0, 1, 2, 3, 5, 8], "applicationnam": 1, "approach": [7, 8], "appropri": [0, 7], "approxim": 0, "ar": [0, 1, 2, 4, 5, 7, 8], "arbitrari": 0, "architectur": [5, 6], "aren": [0, 1, 7], "arg": [0, 2, 7], "arg_name_arg": 7, "arg_type_valu": 0, "argument": [0, 7], "argv": 0, "arithmet": 2, "arithmetic_oper": 0, "arm64": 6, "arn": [0, 1], "arn_split": [0, 1], "around": [0, 1], "arrai": [0, 1], "arriv": [1, 7], "asg": [0, 1], "asid": 0, "assert": [0, 1, 7], "assign": [0, 1], "assoc": 1, "associ": [0, 1, 2, 7], "associatepublicipaddress": 1, "assum": [0, 1, 8], "assumerolepolicysizequota": 1, "assumpt": 1, "assur": [0, 4], "ast": [0, 2, 7, 8], "ast2": 0, "asv": 1, "asvredact": 1, "atm": 1, "atom": [0, 7], "atot": 2, "attach": [0, 1], "attachedinstancefilt": 1, "attachedpoliciespergroupquota": 1, "attachedpoliciesperrolequota": 1, "attachedpoliciesperuserquota": 1, "attachedvolum": 1, "attachmentcount": 1, "attack": 1, "attempt": [0, 1], "attr": 1, "attribit": 1, "attribut": [0, 2, 7], "attributesfilt": 1, "atyp": 7, "audit": 1, "augment": 1, "aurora": 1, "auth": 7, "author": 7, "auto": 1, "automat": 1, "autosc": 1, "autoscal": 1, "avail": [0, 2, 4], "aval": 1, "averag": [0, 1], "avoid": [0, 1, 2], "aw": [0, 1], "awar": 2, "aws_ebs_degraded_ebs_volume_perform": 1, "aws_ebs_volume_lost": 1, "awsec2": 1, "awslambda": 1, "ax": 2, "az1": 1, "azr": 1, "azur": 1, "b": [0, 2, 7], "ba": 1, "back": [0, 1], "backoff": 1, "backup": 1, "bad1": 7, "bad2": 7, "balanc": [1, 7], "base": [0, 1, 2, 5, 7, 8], "base_activ": 0, "base_funct": 0, "based_on": 0, "baseexcept": 0, "baselin": 1, "bash": 2, "basi": 1, "basic": [1, 4], "batch": 1, "baz": 0, "bc": 2, "beast": 0, "becaus": [0, 1, 2, 5, 7, 8], "becom": [0, 1, 2, 4, 8], "been": [0, 1, 8], "befor": [1, 2], "behav": [0, 7], "behavior": [0, 1, 2], "being": [0, 1], "below": 0, "benchmark": [0, 4], "best": [0, 4], "better": [0, 1, 7], "between": [0, 1, 2, 7, 8], "binari": [0, 7], "bind": [0, 2, 5, 8], "bind_vari": 0, "bindings_ext": 4, "bit": [1, 2, 5, 8], "blacklist": 1, "blob": [0, 1, 4, 7], "block": [0, 2], "block_ext": 4, "blockdevicemap": 1, "bn": 2, "bool": [0, 5, 7, 8], "bool_eq": 0, "bool_g": 0, "bool_gt": 0, "bool_l": 0, "bool_lit": 0, "bool_lt": 0, "bool_n": 0, "bool_valu": 0, "boolean": [0, 2, 5, 7], "boolean_to_statu": 0, "booleangroupfilt": 7, "booltyp": [0, 7, 8], "boolvalu": 0, "both": [0, 1], "boto3": 1, "bottl": 0, "bottom": [0, 8], "bound": [0, 2, 7], "bracket": 1, "break": 0, "breakdown": 7, "bring": 1, "broken": 1, "broker": 1, "bucket": 0, "bucketencrypt": 1, "bucketnotificationfilt": 1, "buffer": 0, "build": [0, 1, 4, 7, 8], "build_macro_ev": 0, "build_reduce_macro_ev": 0, "build_ss_macro_ev": 0, "buildsecuritygroupfilt": 1, "buildsubnetfilt": 1, "buildvpcfilt": 1, "built": [0, 1, 2, 4, 7, 8], "bulki": 1, "bunch": 1, "burden": 2, "bye": 2, "byol": 1, "byt": 0, "byte": [0, 8], "bytes_lit": 0, "bytes_valu": 0, "bytestyp": [0, 8], "bytesvalu": 0, "c": [0, 2, 7], "c4": 8, "c7n": [5, 8], "c7n_interfac": 4, "c7n_interpreted_runn": [0, 1], "c7n_s3_policy_requir": 1, "c7ncontext": [0, 1], "c7nlib": [1, 3, 5, 7, 8], "cach": [0, 5, 8], "calcul": 2, "call": [0, 1], "callabl": [0, 8], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8], "cannot": [0, 1], "capabl": [0, 1, 2], "capacitydelta": 1, "capitalon": 1, "capon": 1, "captur": 0, "cardda_tagcompli": 1, "cardin": 1, "case": [0, 1, 2, 4, 6, 7, 8], "catalog": 4, "categori": [1, 7], "caught": 0, "caus": 0, "causesresourc": 1, "cbhfqv": 1, "cbr": 1, "cde": 1, "ce": 7, "cel": [0, 1, 4, 6, 7], "cel_activ": [0, 1], "cel_ast": [0, 1], "cel_env": [0, 1], "cel_ev": 0, "cel_expr": 0, "cel_funct": 7, "cel_gen": 0, "cel_object": 0, "cel_pars": 0, "cel_prgm": 0, "cel_program": 7, "cel_repl": 0, "cel_sourc": 7, "cel_test": 7, "cel_trac": [0, 2, 3], "celbyt": 0, "celevalerror": [0, 7, 8], "celfilt": [0, 5, 7], "celfilter_inst": 0, "celfunct": [0, 8], "celjsondecod": 0, "celjsonencod": 0, "celpars": [5, 8], "celparseerror": 0, "celpi": [1, 2, 3, 4, 5, 7, 8], "celstr": 0, "celsyntaxerror": [0, 7], "celtyp": [1, 2, 3, 4, 5, 7, 8], "celunsupportederror": 0, "central": [0, 7], "cert": 1, "certain": [0, 1], "certif": 1, "cet": 0, "cf": 1, "cfn": 1, "chain": [0, 8], "chainmap": [0, 8], "challeng": 4, "chang": [0, 1, 4, 7], "char": 7, "charact": [0, 2], "character": 0, "check": [0, 4, 7], "check_circular": 0, "check_custom_origin": 1, "checked_except": 0, "checker": 7, "child": 0, "childnr": 0, "children": 0, "choic": [0, 8], "choos": 0, "chosen": 0, "chunk": 1, "ci": 1, "cidr": 0, "cidr_contain": 0, "cidr_siz": [0, 1], "cidrblock": 1, "cipher": 1, "circuit": [0, 7], "cl": 0, "claim": 7, "class": [0, 1, 3, 7, 8], "classic": 1, "classmethod": 0, "claus": [1, 4, 7], "clean": [1, 4], "clear": [1, 2], "cli": [0, 5, 8], "client": [0, 1], "clock": 1, "clone": 0, "close": [0, 1, 2, 7], "closur": 0, "cloud": [0, 1, 5, 8], "cloudform": 1, "cloudfront": [0, 1], "cloudhsm": 1, "cloudsearch": 1, "cloudtrailen": 1, "cloudwatch": [0, 1], "cluster": 1, "cm": 1, "cm6aws11": 1, "cmdbenviron": 1, "cmdloop": 0, "cml": 1, "co": 7, "code": [0, 1, 2, 4, 7, 8], "codebuild": 1, "codebuildproject": 1, "codecommit": 1, "codepipelin": 1, "coerc": 0, "coercion": [0, 7], "collabor": 0, "collect": [0, 1, 4, 8], "collis": [0, 1], "color": 1, "column": [0, 1], "com": [0, 1, 2, 4, 7], "combin": [0, 1, 5, 7], "come": [0, 1, 2], "command": [0, 2, 4, 6, 8], "comment": [1, 4], "common": [0, 7, 8], "commonli": 0, "commun": 1, "commut": 0, "compar": [0, 1, 2], "comparablevers": [0, 1], "comparison": [0, 1, 2, 4, 7], "compat": 0, "compil": [0, 1, 4, 6, 7], "compiledrunn": [0, 8], "complement": 1, "complet": [0, 7], "completekei": 0, "complex": [0, 1, 2, 5, 7, 8], "compli": 1, "compliant": [1, 7], "complic": [0, 7], "compon": [1, 3, 5, 7], "compos": [1, 7], "composit": 1, "compromis": 7, "comput": [0, 1, 2, 7, 8], "computeenviron": 1, "computesgfilt": 1, "computesubnetfilt": 1, "conceal": 1, "concept": [0, 7], "conceptu": 8, "concern": [0, 2], "concret": 0, "condit": [0, 1, 8], "conditionaland": 0, "conditionalor": 0, "conf": 4, "configen": 1, "configrul": 1, "configur": [1, 5, 6], "conform": 4, "confus": 0, "connect": 1, "connectionsecuritygroupfilt": 1, "connectionsubnetfilt": 1, "consequ": 8, "consid": [0, 1, 8], "consider": 1, "consist": 0, "consol": [3, 4], "constant": 0, "constraint": 8, "construct": [0, 5, 7], "constructor": 0, "contain": [0, 1, 3, 5, 7], "containerdefinit": 1, "content": [0, 4], "context": [2, 5, 7], "continu": 7, "control": 1, "convers": [0, 2, 4, 7, 8], "convert": [0, 1, 4, 7], "copi": [0, 1, 4], "core": [0, 1], "correct": 1, "correctli": 0, "cost": 8, "could": [0, 2, 7], "count": [0, 7], "countnumb": 1, "cours": 0, "cover": [0, 7], "coverag": 4, "cpp": 0, "cpu": 1, "cpuutil": [0, 1], "crash": 7, "creat": [0, 1, 4, 7, 8], "created": 1, "createdtim": 1, "creation": [0, 1], "creationd": 1, "creationtimestamp": 7, "credenti": 0, "credentialreport": [0, 1], "credentialreportmixin": [0, 1], "crossaccountaccess": 1, "crossaccountaccessfilt": [0, 1], "crossaccountaccessmixin": [0, 1], "crossaccountfilt": 1, "crossaccountp": 1, "crossregiontransf": 1, "crypto": 1, "csv": 1, "csv2dict": 1, "ct": 1, "ctl": 1, "current": [0, 1, 2, 4, 5, 7, 8], "custodian": [1, 5, 8], "custodian_asv": 1, "custodian_cleanup": 1, "custodian_downtim": 1, "custodian_invalid": 1, "custodian_invalid_asg": 1, "custodian_rds_offhours_ct": 1, "custodian_rds_offhours_et": 1, "custodian_rds_offhours_pt": 1, "custodian_res": 1, "custodian_s3_ns_templ": 1, "custodian_snapshot": 1, "custodian_statu": 1, "custodian_stop": 1, "custodian_tag": 1, "custom": 1, "cut": 0, "cw": 1, "d": [0, 1, 2, 3, 7], "dai": [0, 1], "daili": 1, "darwin": 6, "data": [0, 2, 5, 7, 8], "databas": [0, 1], "databaseconnect": 1, "dataev": 1, "datapipelin": 1, "datapoint": 1, "date": [0, 1], "datetim": [0, 1, 7, 8], "dateutil": 0, "dax": 1, "daxsecuritygroupfilt": 1, "daxsubnetfilt": 1, "daylight": 1, "dbclusteridentifi": 1, "dbsubnetgroup": 1, "dbsubnetgroupnam": 1, "dd": 1, "deal": 0, "debug": [0, 3, 4], "decid": 7, "decim": [0, 2], "decis": 1, "decl": [0, 1, 7], "declar": [0, 1, 7], "decod": 0, "decompos": 0, "decomposit": 0, "decor": [0, 3, 7], "deduc": 0, "deep": 0, "deepli": 0, "def": [0, 1, 7], "default": [0, 2, 4, 7, 8], "default_tz": 1, "default_vpc": 1, "defaultvpc": 1, "defer": 0, "defin": [0, 1, 2, 8], "definit": [0, 2, 4, 7, 8], "deleg": 0, "delet": [1, 7, 8], "deleteprotect": 7, "delimit": [1, 2], "deliv": 1, "demand": 1, "deni": 1, "denial": 1, "denot": 8, "depend": [0, 1, 2, 4, 5, 6, 7, 8], "deprec": [1, 4, 8], "deriv": 0, "descend": 0, "describ": [0, 1, 7, 8], "describe_db_snapshot_attribut": [0, 1], "describe_subscription_filt": [0, 1], "descript": [0, 1, 5, 7], "design": [0, 5], "desir": 1, "desk": 2, "destin": 1, "detail": [1, 2, 3, 7, 8], "detect": 1, "determin": [1, 2, 7], "dev": [1, 7], "develop": [0, 5], "devhelp": 4, "dfunction": 0, "dhcpoptionsfilt": 1, "dhe": 1, "dict": [0, 1, 8], "dict_find_nam": 0, "dictionari": [0, 1], "did": 0, "didn": 7, "differ": [0, 1, 2, 5, 7], "difficult": [0, 1], "digest": 1, "digit": 0, "dimens": [0, 1], "direct": 0, "directconnect": 1, "directli": [0, 1, 2], "directori": [1, 2, 3, 5], "directorysecuritygroupfilt": 1, "directorysubnetfilt": 1, "directoryvpcfilt": 1, "dirhtml": 4, "disabl": [0, 1, 7], "disableapitermin": 1, "discard": 0, "discern": 8, "discov": 0, "displai": [0, 4], "displaynam": 1, "distinct": [0, 7, 8], "distinguish": [0, 7], "distribut": [1, 4], "disutil": 0, "diverg": 1, "divid": 0, "dividebyzeroerror": 7, "divis": 0, "dlm": 1, "dm": 1, "dn": 1, "dnshostnam": 1, "dnsname": 1, "dnssupport": 1, "do": [0, 1, 2, 3, 7, 8], "do_by": 0, "do_eof": 0, "do_exit": 0, "do_quit": 0, "do_set": 0, "do_show": 0, "doc": [0, 1, 5], "doctest": 4, "document": [0, 1, 2, 4, 7, 8], "docutil": 4, "doe": [0, 1, 2, 7, 8], "doesn": [0, 1, 4, 7, 8], "doin": 0, "domain": [0, 1, 8], "don": [0, 1, 2, 7], "done": [0, 1, 3, 8], "dot": 5, "dot_id": [0, 8], "dot_ident_arg": [0, 8], "doubl": 2, "double_valu": 0, "doubletyp": [0, 2, 8], "doublevalu": 0, "down": [0, 1], "download": 4, "dpb": 0, "dsl": [1, 2, 5, 7, 8], "duck": 7, "due": 1, "dump": 0, "dumpast": 0, "duplic": 0, "durat": [0, 1, 7], "durationtyp": [0, 1, 8], "dure": [0, 1, 2, 6], "dvipdfmx": 4, "dyn": 0, "dynam": 4, "dynamodb": 1, "dynamodbacceler": 1, "e": [0, 1, 2], "e1": 0, "e2": 0, "each": [0, 1, 2, 4, 7, 8], "easi": 0, "easier": [1, 7], "easili": [0, 5], "east": [0, 1], "east1": 7, "eastern": 1, "eb": 0, "ebnf": 4, "ebsoptim": 1, "ec": 1, "ec2": [0, 1, 7], "ec2_userdata_stop": 1, "ecdh": 1, "ecdsa": 1, "echo": 2, "ecr": 1, "ecrcrossaccountaccessfilt": 1, "ecsclust": 1, "ecsmetr": 1, "ef": 1, "effect": [0, 1, 2], "effort": 4, "egress_viol": 1, "eip": 1, "either": [0, 1], "ek": 1, "ekssgfilt": 1, "ekssubnetfilt": 1, "eksvpcfilt": 1, "elast": 1, "elasticach": 1, "elasticachesnapshot": 1, "elasticachesnapshotag": 1, "elasticbeanstalk": 1, "elasticfilesystem": 0, "elasticfilesystemmounttarget": 1, "elasticmapreduc": 1, "elasticsearch": 1, "elasticsearchdomain": 1, "elb": [0, 1], "elblog": 1, "elbsecuritypolici": 1, "elem": 0, "element": [1, 7], "elif": 0, "els": 0, "email": [1, 7], "email_verifi": 7, "emb": 2, "embed": [4, 5, 7], "emmo": 1, "emphat": 7, "empti": [0, 1, 3], "emr": 1, "emrclust": 1, "emrmetr": 1, "en": [4, 7], "enabl": [0, 3, 4, 5, 7], "enasupport": 1, "encod": 0, "encoders_ext": 4, "encount": 0, "encounterd": 0, "encryptionenabledfilt": 1, "end": [0, 1, 8], "endpoint": 1, "endpointcrossaccountfilt": 1, "endpointsecuritygroupfilt": 1, "endpointsubnetfilt": 1, "endpointvpcfilt": 1, "endtim": 0, "engin": [0, 1], "enhanc": 2, "eni": 1, "ensur": [1, 7], "ensure_ascii": 0, "ent": 1, "enter": [0, 2], "enterpris": 1, "entir": 0, "entri": 8, "enum": [0, 1, 4], "enumtyp": 0, "env": [1, 4, 7], "environ": [0, 1, 3, 4, 5, 6, 7, 8], "eof": 2, "ephemeralinstancefilt": 1, "epub": 4, "eq": [0, 1], "eq_test": 0, "equal": [0, 1], "equival": 0, "err": 7, "erron": 0, "error": [0, 2, 3, 5, 8], "error_text": 0, "escap": 0, "eschew": 1, "essenc": 7, "essenti": [0, 1, 5, 8], "est": 1, "establish": 0, "et": 1, "etc": [0, 1], "eu": 1, "europ": 0, "eustac": 0, "eval": [0, 2, 7, 8], "eval_error": 0, "eval_filt": 1, "evalu": [1, 2, 3, 4, 5, 7], "even": [0, 1], "event": 0, "eventrul": 1, "eventrulemetr": 1, "eventruletarget": 1, "eventstatuscod": 0, "eventu": [0, 7], "ever": 7, "everi": [0, 1], "everydai": 1, "everyone_onli": 1, "everyth": [2, 4], "ex": [0, 7], "ex_": 0, "ex_10": 0, "ex_10_l": 0, "ex_10_x": 0, "exact": 1, "exactli": 7, "examin": [0, 1, 2, 7], "exampl": [0, 5, 8], "exc_class": 0, "exc_typ": 0, "exc_valu": 0, "exceed": 1, "except": [0, 1, 2, 5, 8], "exceptionmanualsnapshot": 1, "exclud": 1, "exclude_imag": 1, "exec": [0, 8], "execut": [0, 1, 2, 4, 7, 8], "exempt": [0, 1], "exist": [0, 1, 3], "exists_on": 0, "exit": 5, "expand": 0, "expans": 0, "expect": [0, 1, 2, 7], "experiment": 8, "expir": 1, "explicit": [0, 1, 8], "explicitli": [0, 1], "explict": 2, "explor": 8, "export": 0, "expos": [0, 1, 7, 8], "expr": [0, 1, 2, 4, 7, 8], "expr_test_bc": 4, "express": [0, 1, 2, 4, 6, 7, 8], "exprlist": 0, "exprpb": 7, "extant": 1, "extend": [0, 1, 2, 7, 8], "extended_name_path": 0, "extens": [0, 1, 7, 8], "extent": [0, 1, 7], "extern": [0, 4, 5], "extra": 1, "extract": [0, 1], "f": [0, 1, 2, 7, 8], "f1": 2, "f2": 2, "facad": [0, 8], "factfind": 1, "factori": 0, "fail": [0, 1], "failur": [0, 1, 2], "fairli": 0, "fall": 0, "fallback": 0, "fals": [0, 1, 2, 7], "far": 0, "fargat": 1, "fatal": 3, "fatalf": 7, "fatalln": 7, "faulttolerantsnapshot": 1, "favor": 0, "featur": [1, 5, 7, 8], "fetch": 1, "few": [0, 1, 7], "ffffffff": 1, "field": [0, 1, 4, 7, 8], "fieldinit": [0, 8], "fifo": 2, "file": [0, 1, 3, 5], "filesystem": 2, "filter": [0, 5, 8], "filter_inst": 7, "filter_registri": 1, "filter_resource_statist": 1, "filterrestintegr": 1, "filterrestmethod": 1, "final": [0, 1, 2, 7, 8], "find": [0, 2], "find_nam": 0, "firehos": 1, "first": [0, 7, 8], "fit": [0, 1, 7], "fiter": 0, "five": 7, "fix": [0, 1, 7], "fixedint": 0, "fixedtz": 0, "fixtur": 0, "fklter": 1, "flag": 1, "flat": 0, "flavor": 0, "fleet": 1, "float": [0, 2, 8], "float_lit": 0, "floatvalu": 0, "flow": 0, "flow_log": [0, 1], "flowlogfilt": 1, "fmt": 7, "fnmatch": [0, 1], "focus": 1, "follow": [0, 1, 2, 3, 4, 7, 8], "foo": 1, "foobar": 1, "forbidden": 1, "form": [0, 1, 4, 7, 8], "formal": [0, 7], "format": [0, 1, 2, 3, 4, 7], "formatt": 3, "formerli": 0, "forwardref": 0, "found": [0, 1, 8], "foundat": 0, "four": [0, 1, 7, 8], "fp_math": 4, "fraction": 0, "fragment": 0, "frame": 0, "framework": [7, 8], "fri": 1, "friendli": [0, 2], "from": [0, 1, 2, 4, 5, 8], "fromport": 1, "front": 0, "frozenset": 0, "fs_analytical_dev": 1, "fs_analytical_qa": 1, "fs_core_cas_qa": 1, "fs_custodian_tag": 1, "fs_manual_ebs_snapshot_expir": 1, "fs_manual_rds_snapshot_expir": 1, "fsx": 1, "fulfil": 0, "full": [0, 4], "full_control": 1, "fulli": 0, "func": [0, 7], "func_nam": 0, "function": [2, 5, 8], "function_contain": 0, "function_endswith": 0, "function_ev": 0, "function_getd": 0, "function_getdayofmonth": 0, "function_getdayofweek": 0, "function_getdayofyear": 0, "function_getfullyear": 0, "function_gethour": 0, "function_getmillisecond": 0, "function_getminut": 0, "function_getmonth": 0, "function_getsecond": 0, "function_match": 0, "function_s": 0, "function_startswith": 0, "functiontyp": [0, 7], "functool": 7, "fundament": 8, "further": 0, "futur": 0, "g": [0, 1, 2], "g4": 0, "gamelift": 1, "gatewai": 1, "gather": [1, 7], "gb": 1, "gc": 1, "gcm": 1, "ge": [0, 1], "gen": 0, "gener": [0, 1, 4, 7, 8], "geograph": 1, "get": [0, 1, 2, 8], "get_access_log": [0, 1], "get_account": [0, 1], "get_credential_report": [0, 1], "get_dbsubnet_group_us": [0, 1], "get_endpoint": [0, 1], "get_flow_log": 1, "get_health_ev": [0, 1], "get_instance_imag": [0, 1], "get_key_polici": [0, 1], "get_launch_configuration_nam": [0, 1], "get_load_balanc": [0, 1], "get_matching_alias": [0, 1], "get_metr": [0, 1], "get_metric_statist": 1, "get_model": 1, "get_nam": 0, "get_opt": 0, "get_orgid": [0, 1], "get_protocol": [0, 1], "get_raw_health_ev": [0, 1], "get_raw_metr": [0, 1], "get_rel": [0, 1], "get_related_id": [0, 1], "get_related_igw": 0, "get_related_kms_kei": 0, "get_related_nat_gatewai": 0, "get_related_security_config": 0, "get_related_sg": 0, "get_related_subnet": 0, "get_related_vpc": 0, "get_resource_polici": [0, 1], "get_resource_statist": [0, 1], "get_resource_valu": 1, "get_type_protect": [0, 1], "get_valu": [0, 8], "get_vpc": [0, 1], "getdat": [0, 1], "getdayofmonth": 0, "getdayofweek": [0, 1], "getdayofyear": 0, "getfullyear": 0, "gethour": [0, 1], "getmillisecond": 0, "getminut": 0, "getmonth": 0, "getsecond": 0, "gettext": 4, "gettz": 0, "gherkin": 5, "gib": 1, "git": 4, "github": [0, 1, 2, 4, 7], "give": 7, "given": [0, 1, 2, 4, 7, 8], "gl": 1, "glacier": 1, "glaciercrossaccountaccessfilt": 1, "glob": [0, 1], "global": 0, "globalgrantsfilt": 1, "glue": 1, "glueconnect": 1, "go": [0, 1, 5], "go_mod": 0, "goal": 0, "golang": 0, "goo": 1, "good": [1, 7], "googl": [0, 1, 2, 4, 7], "gracefulli": 0, "grai": 1, "grammar": [0, 4], "grantcount": 1, "greater": 1, "greet": 7, "greetfunc": 7, "group": [0, 7], "group_access": 2, "groupid": 1, "groupmembership": 1, "groupnam": 1, "grouppolicysizequota": 1, "groupset": 1, "groupsperuserquota": 1, "groupsquota": 1, "gt": [0, 1], "gte": 1, "h": [0, 1, 2], "ha": [0, 2, 4, 5, 7, 8], "had": 1, "hand": 7, "handl": [0, 1, 2, 7, 8], "handler": 3, "hapg": 1, "happen": 0, "hard": 0, "hash": 0, "hashabl": 0, "hasn": 8, "hasstatementfilt": 1, "hasvirtualmfa": 1, "have": [0, 1, 2, 3, 4, 5, 7, 8], "haven": 1, "head": [0, 1, 4], "header": 1, "healtch": 1, "health": 0, "health_ev": 1, "healthcheckprotocolmismatch": 1, "healthev": 1, "healtheventfilt": 1, "healthfilt": 1, "heavi": 1, "hello": [0, 7], "help": [0, 1, 2, 4, 7, 8], "here": [0, 1, 2, 7, 8], "heredoc": 2, "hh": 0, "hidden": 0, "higher": 1, "highli": 1, "hint": [0, 4, 8], "hit": 1, "holidai": 1, "home": [1, 2, 3], "hook": 0, "host": [0, 1], "hostedzon": 1, "hostnam": 1, "hour": [0, 1], "hourli": 1, "housekeep_unused_sg": 1, "how": [0, 1, 7], "howev": [0, 1, 7, 8], "hsm": 1, "html": [0, 1, 4, 7], "htmlhelp": 4, "http": [0, 1, 2, 4, 5, 7], "hybrid": 0, "i": [0, 2, 4, 5, 6, 7, 8], "iam": 0, "iamaccessfilt": [0, 1], "iamgroupinlinepolici": 1, "iamgroupus": 1, "iaminstanceprofil": [0, 1], "iamroleinlinepolici": 1, "iamroleusag": [0, 1], "iamroleusagemixin": [0, 1], "iamsummari": 1, "iamuserinlinepolici": 1, "iana": [0, 1], "id": 0, "idea": [0, 7], "ideal": 0, "ident": [0, 1, 8], "ident_arg": [0, 8], "ident_pat": 0, "ident_valu": 0, "identifi": [0, 1, 8], "ie": 1, "ietf": 0, "ifi": 2, "ignor": [0, 1, 2, 4, 7], "ii": 0, "imag": 0, "imageag": 1, "imageagefilt": 1, "imagefilt": 1, "imageid": [0, 1], "imagenam": 1, "imagesunusedmixin": [0, 1], "imageunusedfilt": [0, 1], "immedi": 1, "implement": [0, 2, 4, 5, 8], "implent": 1, "impli": [0, 1], "implicit": 1, "implicitli": 1, "import": [0, 1, 2, 5, 7, 8], "improt": 8, "includ": [0, 1, 3, 5, 7, 8], "incomplet": 0, "incorrect": 1, "incorrectlambda": 1, "increas": 0, "indent": 0, "independ": 0, "index": [0, 4, 5], "indexerror": 0, "indic": [0, 2], "individu": [0, 1], "infer": 1, "infin": 0, "info": [1, 3, 4], "inform": [0, 1, 4, 7, 8], "infrastructur": 5, "init": 0, "initi": 0, "inject": 0, "input": [0, 2, 7, 8], "insid": [0, 8], "instal": 5, "instanc": [0, 7, 8], "instance_profile_usag": [0, 1], "instanceagefilt": 1, "instanceattribut": 1, "instancecreatetim": 1, "instanceid": 0, "instanceimag": 1, "instanceimagebas": [0, 1], "instanceimagemixin": [0, 1], "instanceinitiatedshutdownbehavior": 1, "instanceoffhour": 1, "instanceonhour": 1, "instanceprofil": 1, "instanceprofilenam": 1, "instanceprofilesquota": 1, "instances": 7, "instancestorag": 1, "instancetyp": 1, "instead": [0, 1, 2, 7], "insufficient_data": 1, "int": [0, 1, 2, 8], "int32": 0, "int32valu": 0, "int64": 0, "int64_overflow_neg": 0, "int64_overflow_posit": 0, "int64_valu": [0, 4], "int64valu": 0, "int_lit": 0, "intact": 0, "integ": [0, 1, 2], "integer_math": [0, 4], "integr": [0, 2, 3, 4, 8], "intend": 0, "intent": [1, 2, 5], "interact": [0, 2, 8], "interect": 0, "interest": [5, 7, 8], "interfac": [0, 1, 7, 8], "interfacesecuritygroupfilt": 1, "interfacesubnetfilt": 1, "interfacevpcfilt": 1, "intermedi": [0, 7], "intern": [0, 1, 7, 8], "internet": 1, "interoper": 5, "interpret": 0, "interpretedrunn": [0, 8], "interrog": 0, "intersect": [0, 1], "intoper": 0, "intro": 0, "introduc": [0, 7, 8], "inttyp": [0, 2, 4, 8], "invalid": 2, "invalidconfigfilt": 1, "invers": 1, "invis": 1, "involv": [0, 2, 5, 8], "io": [0, 7], "iop": 1, "iot": 1, "ip": 1, "ipaddress": 0, "ippermiss": 1, "ippermissionegress": 1, "ipv4address": 0, "ipv4network": 0, "ish": 4, "islog": 1, "isloggingfilt": [0, 1], "isn": [0, 1, 8], "isnotloggingfilt": [0, 1], "isqueryloggingen": 1, "isrm": 1, "iss": 7, "isshadow": 1, "isshieldprotect": [0, 1], "isshieldprotectedmixin": [0, 1], "issslfilt": 1, "issu": [0, 1, 7, 8], "iswafen": [0, 1], "item": [0, 1, 2, 4, 7], "iter": [0, 1], "its": [0, 1, 7], "itself": 0, "iunjpz": 1, "jme": 0, "jmes_path": [0, 1], "jmes_path_map": [0, 1], "jmespath": [0, 1], "job": [0, 1], "joda": 0, "jq": [0, 2, 8], "json": [0, 1, 2, 4, 7, 8], "json_queri": 4, "json_to_cel": [0, 1, 7], "jsonencod": 0, "jsonl": 0, "jsonlin": 2, "just": 1, "kai": 0, "keep": [0, 1], "kei": [0, 5, 7, 8], "kernel": 1, "key_id": 0, "key_valu": 1, "keyalia": 1, "keyerror": 0, "keyid": 1, "keynam": 1, "keyrotationen": 1, "keyrotationstatu": 1, "kind": [0, 1, 2, 7, 8], "kinesi": 1, "kit": 4, "km": 0, "kms_alia": [0, 1], "kms_kei": [0, 1], "kmsfilter": 1, "kmskeyalia": 1, "known": [0, 2, 7], "kwarg": 0, "l": 2, "label": 0, "lambda": [0, 1], "lambdacrossaccountaccessfilt": 1, "lambdaeventsourc": 1, "lambdalayervers": 1, "langdef": [0, 1, 4], "languag": [0, 1, 2, 4, 7, 8], "larg": [1, 4, 7], "large_instance_typ": 1, "lark": [0, 4, 7, 8], "last": 0, "last_rot": 1, "last_used_d": 1, "last_used_region": 1, "last_used_servic": 1, "lastrot": 1, "lastupdatedtim": 1, "lastwritedai": 1, "later": [0, 1], "latest": [0, 7], "latestsnapshot": 1, "latex": 4, "latexpdf": 4, "latexpdfja": 4, "launchconfig": 1, "launchconfigag": 1, "launchconfigfilt": 1, "launchconfigurationnam": 1, "launchtyp": 1, "layer": [0, 1, 8], "layercrossaccount": 1, "lc_userdata": 1, "le": [0, 1], "lead": [0, 1], "least": [0, 1], "leav": 1, "left": [0, 1], "legaci": [0, 1], "len": [0, 1], "length": 0, "less": [0, 1, 7], "let": 0, "letter": [2, 4], "level": [0, 1, 3, 4, 8], "levelnam": 3, "leverag": [0, 8], "lexic": 0, "lh": 7, "librari": [0, 1, 7, 8], "licens": 1, "life": [0, 1], "lifecyclerul": 1, "like": [0, 1, 2, 3, 4, 7], "likewis": 1, "limit": 0, "line": [0, 1, 2, 8], "lineno": 3, "link": [2, 4], "linkag": 1, "linkcheck": 4, "lint": 4, "linux": 2, "list": [0, 1, 4, 7, 8], "list_lit": [0, 8], "listtyp": [0, 8], "listvalu": 0, "liter": [0, 1, 2, 8], "littl": [0, 2], "ll": [0, 7, 8], "load": [0, 1], "load_annot": 0, "load_valu": 0, "local": [0, 1, 3, 4, 8], "localized_ev": 0, "locat": 0, "log": [0, 2, 3, 7], "logcrossaccountfilt": 1, "logg": 1, "logger": [0, 3], "loggroup": 1, "logic": [0, 2, 4, 7], "logical_and": 0, "logical_condit": 0, "logical_not": 0, "logical_or": 0, "logtarget": 1, "long": [0, 1], "longer": [1, 2], "longest": 0, "longtz": 0, "look": [0, 1, 4, 7], "lookup": 0, "loosevers": 0, "los_angel": 1, "loss": 1, "lower": [0, 1], "lowercas": 0, "lt": [0, 1], "lte": 1, "m": [0, 1, 2, 6, 7], "m1": 7, "m3": 1, "machin": 1, "macro": [0, 1, 4, 8], "macro_": 0, "macro_al": 0, "macro_exist": 0, "macro_exists_on": 0, "macro_filt": 0, "macro_has_ev": 0, "macro_map": 0, "macros2": 4, "made": [0, 1], "magnet": 1, "magnitud": 0, "mai": [0, 1, 6, 7, 8], "maid": 1, "maid_offhour": [0, 1], "maid_statu": 1, "main": [0, 8], "major": 1, "make": [0, 1, 2, 4, 7, 8], "makefil": 5, "makeinfo": 4, "man": 4, "manag": 0, "mani": [0, 1, 2], "manual": [1, 4], "map": [0, 1, 2, 7, 8], "map_lit": [0, 8], "mapinit": 0, "mapkeytyp": 8, "mappubliciponlaunch": 1, "maptyp": [0, 1, 7, 8], "march": 0, "marked_kei": [0, 1], "markedforop": 1, "marker": 0, "mask": [0, 7], "master": [0, 1, 4, 7], "match": [0, 1, 4, 6, 7, 8], "matchabl": 1, "materi": 0, "math": [0, 2], "math_ext": 4, "matter": 0, "max": 1, "maximum": 1, "maxproperti": 1, "maxsecond": 0, "mayb": 0, "mccarthi": 0, "md": [0, 1, 4, 7], "me": 7, "mean": [0, 1, 2, 7, 8], "meaning": 0, "medium": 1, "meet": 7, "member": [0, 1, 5], "member_dot": [0, 8], "member_dot_arg": [0, 8], "member_index": 0, "member_item": [0, 8], "member_object": [0, 8], "mental": 2, "mere": 0, "messag": [0, 1, 3, 4, 7], "message_liter": 0, "messagebrok": 1, "messagetyp": [0, 8], "meta": 0, "meth": 0, "method": [0, 3, 7, 8], "method_ev": 0, "method_id": 0, "metric": 0, "metricnam": 0, "metricsaccess": 0, "metricsfilt": 1, "mfa_act": 1, "mfadevic": 1, "mfadevicesinus": 1, "mi": 1, "middl": 0, "might": [0, 7], "mimic": 2, "min": 1, "mini": 2, "minim": [0, 3, 5], "minimum": [0, 1], "minimumpasswordlength": 1, "minproperti": 1, "minsecond": 0, "minut": [0, 1], "mismatch": 0, "mismatchs3origin": 1, "miss": [0, 5], "missingrout": 1, "mistak": 1, "mix": 0, "mixin": [0, 1], "ml": 1, "mlstring_lit": 0, "mm": [0, 1], "mock": [0, 1], "mod": [0, 1], "mode": [0, 2], "model": [0, 1, 7], "modern": 1, "modif": [1, 2], "modifi": [0, 1], "modifyablevolum": 1, "modul": [0, 1, 3, 4, 5, 7, 8], "modulo": 0, "modulu": 0, "moment": 1, "mon": 1, "monad": 0, "monitor": 1, "monthli": 1, "more": [0, 1, 2, 3, 4, 5, 8], "morn": 1, "most": [0, 1, 2, 7, 8], "mount": 1, "mq": 1, "mqmetric": 1, "mqsgfilter": 1, "mqsubnetfilt": 1, "mssage": 1, "much": [0, 2], "mul": 0, "multi": 1, "multilin": 2, "multipl": [0, 1, 2, 7, 8], "multipli": 1, "multiplication_div": 0, "multiplication_mod": 0, "multiplication_mul": 0, "must": [0, 1, 2, 3, 4, 7, 8], "my": 1, "my_extens": 7, "mydata": 1, "n": [0, 2, 7], "nacl": 1, "name": [1, 2, 3, 4, 5, 7], "name1": 0, "name2": 0, "name_arg": 7, "name_token": 0, "namecontain": [0, 3, 8], "nameerror": [0, 8], "namespac": [0, 1, 4], "nano": 0, "nanosecondspersecond": 0, "narrowli": 1, "nat": 1, "nativ": [0, 1, 4, 7], "navig": 0, "nc": [0, 1], "nc1": 0, "nc2": 0, "ndjson": [0, 2], "ne": [0, 1], "necessari": 0, "necessarili": 0, "need": [0, 1, 3, 5, 7, 8], "needless": 0, "neg": 0, "neither": [4, 8], "nest": [0, 7, 8], "nested_activ": 0, "net": [0, 1], "networkacl": 1, "networkin": 1, "networkinterfac": 1, "networkloc": 1, "networkout": 1, "new": [0, 1, 7], "new_activ": 0, "new_text": 0, "newenv": 7, "newer": 7, "newfunct": 7, "newinstanceoverload": 7, "newli": 1, "newlin": 2, "newvar": 7, "next": [0, 1, 8], "ni": 1, "nice": [0, 7], "nightli": 1, "nil": 7, "nljson": [0, 2], "no_such_field": 0, "node": 0, "nodesnaphot": 1, "nomin": 0, "non": [0, 3, 5, 7], "non_compli": 1, "none": [0, 1, 7], "nonetyp": 0, "nonpubl": 1, "nor": 8, "noreturn": 0, "normal": [0, 1, 2], "nospecificiamrolemanagedpolici": 1, "not_": 0, "not_applic": 1, "not_nul": 1, "notabl": 2, "notact": 1, "note": [0, 1, 2, 7, 8], "notebook": 1, "notebookinst": 1, "notebooksecuritygroupfilt": 1, "notebooksubnetfilt": 1, "notencryptedfilt": 1, "notfound": 0, "noth": [0, 1], "notifi": 1, "notimplementederror": 7, "notion": 0, "notprincip": 1, "notresourc": 1, "notsetsentinel": 0, "nov": 1, "now": [0, 1, 7], "nsj7vg": 1, "ntp": 1, "nuanc": [0, 8], "null": [0, 1, 2], "null_lit": 0, "null_valu": 0, "nulltyp": [0, 8], "nullvalu": 0, "number": [0, 1, 2, 4, 7, 8], "number_valu": 0, "numer": 7, "o": [0, 1, 4], "obect": 0, "object": [2, 5, 7, 8], "object_hook": 0, "object_pairs_hook": 0, "objecthook": 0, "obscur": [0, 1], "obsolet": 0, "obvers": 1, "obviou": 7, "occur": [1, 7], "octal": 0, "odd": 0, "off": [0, 1], "offer": [0, 1, 8], "offhour": 0, "offhours_except": 1, "offset": [0, 1], "often": [0, 4, 5, 7], "ok": 1, "old": [0, 1], "older": 1, "omit": [1, 2, 7], "onc": [0, 1], "one": [0, 1, 2, 4, 5, 7, 8], "oneof": [0, 1], "onli": [0, 1, 2, 3, 7], "onlin": 1, "onlyport": 1, "onto": 0, "oop": [0, 7], "op": [0, 7], "op_name_map": 0, "opa": 1, "opaqu": 0, "open": [0, 1], "openpolicyag": [0, 1], "opensourc": 5, "oper": [0, 1, 2, 7, 8], "operand": [0, 1], "operator_in": 0, "opswork": 1, "opt": 1, "optim": [0, 1, 7], "option": [0, 2, 3, 4, 6], "order": [0, 1], "ordinari": 0, "oreo": 1, "org": [0, 1, 2, 4], "organ": [1, 5], "organi": 8, "organiz": 1, "orgid": 0, "origin": [0, 7], "other": [0, 1, 2, 3, 4, 6, 7, 8], "otherwis": 0, "out": [0, 1, 7], "outlin": [1, 7], "output": [0, 2, 3, 4, 7], "outsid": [0, 1, 7, 8], "over": [0, 1, 2, 7, 8], "overal": [0, 7, 8], "overdraftlimit": 7, "overdraftprotect": 7, "overflow": 0, "overhead": [0, 8], "overlap": 0, "overload": [0, 7, 8], "overloadd": 0, "overrid": [0, 1, 8], "overridden": 0, "overview": 4, "overwhelm": 1, "own": [0, 1, 7], "owner": [1, 7], "ownercontact": 1, "ownereid": 1, "p": [0, 2], "pacif": 1, "packag": [0, 2, 3, 5, 6, 7, 8], "packagetyp": 0, "page": [4, 5], "pair": [0, 1], "paper": 4, "paragraph": 3, "parallel": [0, 2, 4], "paramet": [0, 3, 7], "parameterfilt": 1, "paren_expr": [0, 8], "parent": [0, 1], "parent_it": 0, "pari": 0, "pars": [0, 1, 4, 8], "parse_cidr": [0, 1], "parse_const": 0, "parse_d": 1, "parse_float": 0, "parse_int": 0, "parse_text": [0, 1], "parser": [0, 1, 2, 7, 8], "part": [0, 1, 4, 5, 7, 8], "partial": [0, 7], "particular": [0, 1, 2], "particularli": 1, "partit": 0, "partivular": 0, "pass": [0, 1, 4, 7], "password_en": 1, "password_last_chang": 1, "password_last_us": 1, "password_next_rot": 1, "passwordpolicyconfigur": 1, "past": 1, "patch": 1, "path": [0, 1, 4], "path_sourc": 0, "pattern": [0, 1, 2], "payload": 0, "pdf": 4, "pdflatex": 4, "peer": 1, "peeringconnect": 1, "pend": 0, "pendulum": [0, 1], "per": 1, "percent": 1, "perfectli": 1, "perform": [0, 1, 4, 8], "perhap": 0, "period": [0, 1], "permiss": [1, 2], "permissionsboundaryusagecount": 1, "permit": [0, 1, 3, 7, 8], "persist": 0, "person": 8, "perspect": 7, "pg": 1, "pgm": [0, 1], "phase": 0, "phase1transpil": 0, "phase2transpil": 0, "phd": 1, "phoni": 4, "pick": 2, "pickl": 4, "piec": [1, 2], "pingstatu": 1, "pip": 6, "pipe": 2, "place": [0, 1, 2], "plan": [0, 1], "platex": 4, "platform": [1, 5, 6], "platformnam": 1, "platformvers": 1, "pleas": [1, 4], "pleasant": 0, "plu": [0, 1], "pluck": 0, "plumb": 4, "pm": 1, "po": 4, "poetri": 6, "point": [0, 1, 2, 7, 8], "polici": [0, 5, 7], "policiesquota": 1, "policyassign": 1, "policynam": 1, "policysizequota": 1, "policyversionsinus": 1, "policyversionsinusequota": 1, "polit": 0, "pollut": 3, "pool": [0, 1], "poorli": 0, "pop": 0, "popul": 0, "popular": 1, "port": 1, "posit": [0, 7], "possibl": [0, 1, 2, 8], "possibli": [0, 1], "post": 1, "power": 2, "pprint": 0, "practic": 4, "pragmat": [0, 7], "prcess": 1, "precis": 4, "predefin": 8, "prefer": 0, "prefetch_instance_imag": 0, "prefix": [0, 1, 4], "prefixlen": [0, 1], "preloop": 0, "prepar": [0, 1, 8], "prepare_queri": [0, 1], "presenc": [0, 1, 7], "present": [0, 1, 4], "preserv": 1, "presum": 2, "pretti": 0, "prevent": [0, 1, 7], "previou": [0, 1, 7], "previous": 1, "prg": 7, "prgm": [0, 7], "primari": [0, 2, 8], "primarili": 0, "primit": [1, 2], "princip": 1, "principl": [0, 5], "print": 0, "println": 7, "prior": [0, 7], "probabl": 1, "problem": [0, 1, 4, 8], "process": [0, 1, 2, 7], "process_json_doc": 0, "process_resource_set": 1, "process_value_typ": 1, "prod": 7, "prodlog": 1, "produc": [0, 4, 7], "product": [0, 5], "productcod": 1, "profil": 1, "program": [0, 1, 2, 5, 7, 8], "programopt": 7, "progress": [0, 4], "project": [0, 1, 5, 7], "promot": 1, "prompt": [0, 2], "propag": [0, 1], "proper": [0, 1], "properli": 6, "properti": [0, 1, 7], "propog": 0, "propos": 1, "proto": [0, 7], "proto2": 4, "proto2_ext": 4, "proto3": 4, "proto3pb": 0, "protobuf": [0, 1, 2, 4, 7], "protobuf_messag": 8, "protobuf_typ": 0, "protobyf": 0, "protocol": [0, 5], "provid": [1, 2, 3, 4, 7, 8], "provis": [0, 1], "proxi": 1, "pseudoxml": 4, "pst": 1, "pt": [0, 1], "pubfac": 1, "public": 0, "pull": 1, "purchas": 1, "pure": 0, "purpos": [1, 4], "push": 0, "put": 1, "py": [0, 1, 5], "py310": 4, "py311": 4, "py312": 4, "py313": 4, "py39": 4, "pypi": 0, "python": [0, 1, 4, 6, 7, 8], "pythontranspil": 0, "qa": 1, "qthelp": 4, "qualifi": 0, "qualified_identifier_resolution_uncheck": 0, "queri": 0, "question": 0, "queue": 1, "quick": 4, "quickli": 5, "quietli": 0, "quit": [0, 2, 7, 8], "quot": 2, "quota": 1, "quux": 0, "r": [0, 2, 7], "r53domain": 1, "radisti": 1, "raft": 1, "rais": [0, 2, 3, 7, 8], "ramdisk": 1, "rang": [0, 8], "rank": 1, "rare": [0, 1], "rather": 7, "raw": [0, 1], "rd": [0, 1], "rdscluster": 1, "rdsclustersnapshot": 1, "rdsoffhour": 1, "rdsonhour": 1, "rdssnapshot": 1, "rdssnapshotag": 1, "rdssnapshotonhour": 1, "rdssubnetgroup": 1, "rdt": 1, "re": [0, 1], "re2": [0, 6], "reach": [0, 1], "read": [0, 1, 2, 7], "read_acp": 1, "readi": [0, 7], "readm": [0, 7], "readonli": 1, "readonlyrootfilesystem": 1, "readreplicadbinstanceidentifi": 1, "readreplicasourcedbinstanceidentifi": 1, "readthedoc": 7, "real": 0, "realli": [0, 2], "reason": [1, 5], "receiv": 7, "recent": [0, 1], "recogn": 0, "recommend": 1, "recov": 1, "recurs": 0, "redact": 1, "redshift": 1, "redshiftsnapshot": 1, "redshiftsnapshotag": 1, "redshiftsnapshotcrossaccount": 1, "reduc": [0, 1], "reduct": 0, "ref": [0, 1, 7], "ref_to": 0, "refactirubg": 1, "refactor": [0, 1], "refer": [1, 2, 5, 7, 8], "referenc": 1, "reflect": [0, 4, 7], "refresh_period": 1, "refus": 0, "regex": [0, 1], "region": [0, 1], "regist": [0, 1], "registri": [0, 1], "regular": [1, 2, 6], "rehydr": [0, 1], "reject": 1, "rel": 0, "relat": [0, 1, 7, 8], "relatedresourcefilt": [0, 1], "relatedresourcemixin": [0, 1], "relation_eq": 0, "relation_g": 0, "relation_gt": 0, "relation_in": 0, "relation_l": 0, "relation_lt": 0, "relation_n": 0, "relationshiup": 1, "releas": 1, "reli": [0, 1, 2, 7], "remain": 1, "remaind": 0, "remot": 0, "remov": [0, 1, 4, 7], "renam": [0, 1, 8], "reorder": 1, "repeat": 0, "repeatedli": [0, 1], "repl": [0, 2, 3], "replac": [0, 1, 7, 8], "replicationinst": 1, "report": [1, 4], "report_delai": 1, "report_gener": 1, "report_max_ag": 1, "repositori": 4, "repr": 0, "repres": [0, 1], "represent": [0, 1], "request": [0, 1, 7], "requir": [0, 2, 5, 7, 8], "require_ssl": 1, "requiredencryptedputobject": 1, "requireencryptedputobject": 1, "requirelowercasecharact": 1, "requirenumb": 1, "requiresslaccessrdt": 1, "requiresymbol": 1, "requireuppercasecharact": 1, "rerefer": 0, "reservedconcurr": 1, "resili": 1, "resiz": 1, "resize_config": 1, "resolut": [7, 8], "resolv": [0, 7], "resolve_funct": 0, "resolve_nam": [0, 8], "resolve_vari": 0, "resourc": [0, 1], "resource_count": [0, 1], "resource_list": 7, "resource_schedul": [0, 1], "resource_typ": [1, 7], "resourcekmskeyalia": [0, 1], "resourcekmskeyaliasmixin": [0, 1], "respect": 0, "rest": 2, "restapi": 1, "restapicrossaccount": 1, "restor": [0, 1], "restresourc": 1, "restrict": 1, "result": [0, 1, 2, 7, 8], "result_funct": 0, "result_valu": 0, "resum": 1, "retriev": 2, "return": [0, 1, 2, 7, 8], "reus": [0, 1], "revers": [0, 1], "review": 7, "revis": [1, 4], "rework": 1, "rewrit": 7, "rewritten": 0, "rfc": 0, "rfc3339": 0, "rh": 7, "rhymjmbbe2": 1, "rich": 0, "right": [0, 8], "role": [0, 1], "rolecrossaccountaccess": 1, "rolenam": 1, "rolepolicysizequota": 1, "rolesquota": 1, "root": [0, 1, 3], "root_scop": 0, "rootdevicenam": 1, "route53": 1, "routet": 1, "rrset": 1, "rsa": 1, "rule": [0, 7], "rulestatu": 1, "run": [0, 1, 4, 5, 7, 8], "runnabl": 0, "runner": [0, 3, 4, 7, 8], "runner_class": [0, 1], "runtim": 0, "s3": 0, "s3bucketnam": 1, "s3crossaccountfilt": 1, "s3metric": 1, "s3publicblock": 1, "sagemak": 1, "sai": [0, 1], "said": 0, "same": [0, 1, 2, 4, 7, 8], "samplecount": 1, "save": [0, 1, 2], "sc": 1, "scale": [0, 1], "scan": 1, "scan_group": [0, 1], "scatter": 1, "scenario": [0, 4], "schedul": 1, "schedulepars": [0, 1], "schema": [1, 7], "scope": 0, "script": 8, "se": 1, "search": [0, 1, 5], "searchabl": 0, "second": [0, 1], "secondari": 1, "secondarili": 0, "secret": [1, 7], "secretsmanag": [0, 1], "section": [1, 4, 8], "secur": [0, 2, 5], "securetransport": 1, "security_group": [0, 1], "security_group_id": 0, "securitygroup": 1, "securitygroupdifffilt": 1, "securitygroupfilt": 1, "securitygrouplockedfilt": 1, "see": [0, 1, 2, 3, 4, 7, 8], "seed": 0, "seem": [0, 1, 8], "select": [0, 1], "selector": 1, "selector_valu": 1, "self": [0, 1, 4, 7], "self_eval_int_zero": 4, "self_eval_uint_zero": 4, "self_eval_zeroish": 4, "selfrefer": 1, "semant": [0, 1, 2, 5, 8], "semicolon": 1, "send": 1, "sens": 8, "sensibl": [0, 1], "sentinel": [0, 1], "separ": [0, 1, 2, 7, 8], "seper": 1, "sequenc": [0, 1, 7, 8], "serial": [2, 8], "serializ": 0, "seriou": 0, "serv": 0, "server": [0, 1], "servercertif": 1, "servercertificatesquota": 1, "servic": [0, 8], "service_role_usag": [0, 1], "servicelimit": 1, "servicemetr": 1, "servicetaskdefinitionfilt": 1, "sessioncontext": 1, "sessionissu": 1, "set": [0, 1, 2, 3, 4], "set_activ": 0, "set_annot": 1, "setgid": 2, "setuid": 2, "setup": 1, "sever": [0, 1, 2, 4, 8], "sg": 1, "sg_unus": 1, "sgdefaultvpc": 1, "sgusag": [0, 1], "sgusagemixin": [0, 1], "sha256": 1, "sha384": 1, "shadow": 0, "shake": 7, "shake_hand": 7, "share": 1, "shell": [2, 8], "shield": 0, "shield_protect": [0, 1], "shield_subscript": [0, 1], "shielden": [0, 1], "shieldenabledmixin": [0, 1], "shop": 1, "short": [0, 7], "shorthand": [0, 1], "should": [0, 1, 4, 8], "show": [0, 2, 3, 7], "shown": 0, "shrink": 1, "si": 1, "sid": 1, "sign": [0, 8], "signatur": 7, "signifi": 1, "significantli": 6, "signingcertificatesperuserquota": 1, "silenc": [0, 1], "silent": [0, 4, 7], "similar": [0, 1, 2, 7], "similarli": [0, 1], "simpl": [0, 4, 8], "simpledb": 1, "simpler": [0, 1], "simpli": [0, 7], "simplifi": 0, "sinc": [0, 1, 2], "singl": [0, 1, 2, 4, 7], "single_bool": 0, "single_byt": 0, "single_doubl": 0, "single_dur": 0, "single_fixed32": 0, "single_fixed64": 0, "single_float": 0, "single_int32": 0, "single_int64": 0, "single_sfixed32": 0, "single_sfixed64": 0, "single_sint32": 0, "single_sint64": 0, "single_str": 0, "single_timestamp": 0, "single_uint32": 0, "single_uint32_wrapp": 0, "single_uint64": 0, "singledispatch": 7, "singlehtml": 4, "singleton": [0, 5, 7], "singletonfilt": 1, "singular": 0, "situat": 1, "size": [0, 1, 7], "size_parse_cidr": [0, 1], "skew": 1, "skew_hour": 1, "skier": 1, "skip": 0, "skipkei": 0, "slight": [1, 7], "slightli": [0, 1, 7, 8], "slighyli": 7, "slower": 1, "slowli": 4, "slurp": [0, 2], "sm": 1, "small": 7, "smaller": 0, "smarter": 8, "smi": 1, "sn": [0, 1], "snapshot": 0, "snapshotag": 1, "snapshotcreatetim": 1, "snapshotcrossaccountaccess": 1, "snapshotid": 1, "snapshotskipamisnapshot": 1, "snapshottyp": 1, "snapshotunusedfilt": [0, 1], "snapshotunusedmixin": [0, 1], "snowbal": 1, "snscrossaccount": [0, 1], "snscrossaccountmixin": [0, 1], "so": [0, 7], "socket": 2, "some": [0, 1, 2, 3, 7, 8], "some_activ": 0, "some_dict": 0, "some_str": 0, "someparam": 1, "someth": [0, 1], "sometim": [0, 7], "somev": 1, "somewhat": [0, 7, 8], "sophist": [0, 7], "sort": 7, "sort_kei": 0, "sourc": [0, 4, 7], "source_data": 0, "source_text": 0, "sourcedestcheck": 1, "sourceforg": 0, "span": 1, "sparingli": 1, "spawn": 1, "spec": [0, 1, 2, 4], "special": [0, 1, 7], "specif": [0, 3, 4, 5, 7, 8], "specifi": 1, "specificaiton": 4, "specificiamrolemanagedpolici": 1, "speed": 6, "spell": 1, "sphinx": 4, "spin": 1, "spite": 7, "spread": [0, 2], "sprintf": 7, "sq": 1, "sql": 1, "sqlserveraudit": 1, "sqscrossaccount": 1, "squar": 1, "src": 4, "sriovnetsupport": 1, "ssd": 1, "ssh": 1, "sslnegot": 1, "sslpolici": 1, "sslpolicyfilt": 1, "sslv2": 1, "sslv3": 1, "ssmstatu": 1, "st": 1, "st_atim": 2, "st_birthtim": 2, "st_blksize": 2, "st_block": 2, "st_ctime": 2, "st_dev": 2, "st_flag": 2, "st_gen": 2, "st_ino": 2, "st_mtime": 2, "st_nlink": 2, "st_rdev": 2, "st_size": 2, "stack": [0, 1], "stage": 1, "stand": [0, 1, 8], "standalon": 4, "standard": [0, 1, 2, 7], "start": [0, 1, 3, 4, 7, 8], "startswith": 7, "starttim": [0, 1], "stat": [0, 2], "state": [0, 7], "statement": [0, 7, 8], "statement_id": 1, "statetransitionag": 1, "stati": 2, "static": 0, "statist": [0, 1], "statu": [0, 5], "status": [0, 1], "stdin": [0, 2], "stdout": 0, "stem": 4, "step": [0, 1, 5, 7], "sticki": 2, "still": [0, 2], "stop": 1, "storag": 1, "store": 1, "str": [0, 1, 8], "stream": [0, 1], "streamhandl": 3, "strict": 0, "strictli": 0, "string": [0, 1, 2, 4, 7], "string_ext": 4, "string_greet_str": 7, "string_lit": 0, "string_valu": 0, "stringtyp": [0, 7, 8], "stringvalu": 0, "strip": 1, "strong": 1, "strongli": 1, "struct": 0, "structpb": 0, "structur": [0, 1, 7, 8], "studi": 1, "stuff": 7, "sub": [0, 1, 7], "sub_activ": 0, "sub_ev": 0, "sub_eval_parti": 0, "sub_evalu": 0, "subclass": [0, 1, 7, 8], "subclss": 0, "sublanguag": 1, "subnet": 0, "subnet_id": 0, "subnetfilt": 1, "subnetid": 1, "subnetrout": 1, "subscript": 1, "subsequ": [0, 1], "subset": [0, 8], "subsidiari": 0, "subst": [0, 1], "substanti": 7, "substitut": 0, "subtl": 0, "succesfulli": 1, "success": [0, 1, 7], "successfulli": 0, "suffic": 1, "suffix": [0, 1], "sugar": 0, "suggest": 1, "suit": [1, 4], "suitabl": 1, "sum": 1, "summari": 5, "sun": 1, "super": [0, 1], "superclass": [0, 1], "supertyp": 8, "supplement": 0, "suppli": [0, 2], "support": [0, 1, 2, 4, 8], "sure": 1, "survei": 1, "suspend": 1, "suspendedprocess": 1, "swallow": 0, "swap": 1, "symbol": 2, "synopsi": 5, "syntact": 0, "syntax": [0, 1, 2, 7, 8], "system": [0, 5], "t": [0, 1, 2, 4, 7, 8], "tab": 0, "tabl": 1, "tag": [0, 7], "tag_polici": 7, "tag_policy_filt": 7, "tag_valu": 0, "tagstatu": 1, "tailor": 0, "take": [0, 1], "take_act": 7, "taken": [1, 7], "tangl": 8, "target": [0, 4], "target_engin": 1, "targetfunc": 0, "targetgroup": 1, "tasktaskdefinitionfilt": 1, "tb": 0, "tbd": 0, "team_nam": 1, "tech": 1, "temp": 1, "templat": [0, 1], "temporari": [0, 8], "ten": 8, "tend": 0, "ters": 1, "tertiari": 0, "test": [0, 1, 2, 4, 7, 8], "test_all_typ": 0, "test_c7nlib": 0, "testabl": 1, "testalltyp": 0, "testdata": 4, "texinfo": 4, "text": [0, 1, 2, 4, 8], "text2": 0, "text_from": [0, 1], "textproto": 4, "than": [0, 1, 2, 5, 7], "the_activ": 0, "the_filt": [0, 1], "thei": [0, 1, 7, 8], "them": [0, 1, 2, 4], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8], "thing": [0, 1, 8], "think": 0, "thirti": 1, "those": [0, 1, 3, 7], "three": [0, 1, 5, 7, 8], "threshold": 1, "through": [0, 1, 4], "tidi": 8, "tidyup": 1, "time": [0, 1, 2, 7], "timedelta": [0, 1, 8], "timestamp": [0, 1, 4, 7], "timestamptyp": [0, 1, 7, 8], "timezon": [0, 1, 7], "tini": 2, "titl": 1, "titlecas": 0, "tl": 1, "tlq9fr": 1, "tls12": 1, "tlsv1": 1, "to_python": 0, "todo": 1, "token": 0, "toler": 0, "toml": [2, 3], "too": [0, 8], "tool": [5, 6], "top": [0, 1, 4, 8], "topic": [1, 2, 5], "tot": 2, "total": [1, 2], "toward": 0, "tox": 4, "tp": 0, "tp1": 0, "tp2": 0, "tpb": 0, "trace": [0, 2, 3], "traceback": [0, 7], "tracebacktyp": 0, "track": [0, 7], "tradit": [0, 2], "traffic": 1, "trail": 1, "transact": 7, "transform": [0, 1, 4, 7], "transient": [0, 8], "transit": 1, "translat": [0, 1], "transpar": 0, "transpil": [0, 3, 5], "transpilertre": 0, "travers": 1, "treat": [0, 2], "tree": [0, 4, 7, 8], "tree_class": 0, "tree_dump": 0, "tree_for_express": 0, "tree_for_vari": 0, "tree_node_class": 0, "tri": 1, "trigger": 1, "trim": [0, 1], "tripl": 0, "trivial": [0, 1], "troublingli": 1, "true": [0, 1, 2, 3, 7], "truncat": 0, "trust": 1, "truthi": 0, "try": [0, 7], "tupl": 0, "turn": [0, 1], "tweet": 7, "two": [0, 1, 2, 7, 8], "txt": [0, 1], "typ": 0, "type": [1, 4, 5], "type_deduct": 4, "type_match": 0, "type_nam": 0, "type_schema": 1, "typeerror": 0, "typetyp": [0, 8], "tz": [0, 1, 7], "tz_alias": [0, 1], "tz_name": 0, "tz_name_lookup": 0, "tz_offset_pars": 0, "tz_pars": 0, "tzinfo": [0, 1], "tzutc": 1, "u": [0, 1, 7], "u0001f431": 0, "u270c": 0, "ubuntu": 1, "uint": 0, "uint32": 0, "uint32valu": 0, "uint64": 0, "uint64_overflow_neg": 0, "uint64_overflow_posit": 0, "uint64_valu": [0, 4], "uint64valu": 0, "uint_lit": 0, "uinttyp": [0, 4, 7, 8], "uk": 1, "unari": 0, "unary_minus_no_overload": 0, "unary_neg": 0, "unary_not": 0, "unchosen": 0, "uncomput": 7, "undecid": 0, "undeclar": 0, "under": 1, "underli": 8, "understand": 8, "underutil": 1, "unencrypt": 1, "unifi": [0, 1], "uniform": 2, "union": [0, 1, 8], "uniqu": [0, 1, 8], "unique_s": [0, 1], "unit": 0, "unittest": 0, "unknown": 4, "unless": 1, "unlik": 0, "unmark": 1, "unmodifi": 1, "unoptim": 1, "unsign": [0, 8], "unsupport": 0, "untag": 1, "until": 0, "unus": 0, "unusediampolici": 1, "unusediamrol": [0, 1], "unusedinstanceprofil": [0, 1], "unusedlaunchconfig": [0, 1], "unusedrdssubnetgroup": [0, 1], "unusedsecuritygroup": [0, 1], "unusu": 1, "unwieldi": 1, "up": [0, 1, 6], "upcom": [0, 1], "updat": [0, 1, 4], "upgradeavail": 1, "upper": 0, "uptimefilt": 1, "uri": 0, "url": [0, 1, 4], "us": [0, 3, 4, 5, 6, 8], "usabl": [0, 8], "usag": [1, 2], "usediampolici": 1, "usediamrol": 1, "usedinstanceprofil": 1, "usedsecuritygroup": 1, "user": 3, "user_access": 2, "user_creation_tim": 1, "useraccesskei": 1, "userag": 1, "usercredentialreport": 1, "userdata": 1, "userdatafilt": 1, "userguid": 1, "userid": 2, "userident": 1, "usermfadevic": 1, "usernam": 1, "userpolici": 1, "userpolicysizequota": 1, "usersquota": 1, "usual": 0, "utc": [0, 7], "utcnow": [0, 1], "util": 1, "uv": [4, 6], "v": [0, 2, 4], "v8": 4, "val": 7, "valid": 0, "valid_key_typ": 0, "validconfigfilt": 1, "valu": [2, 3, 4, 7, 8], "value_typ": 0, "valueerror": 0, "valuefilt": 1, "valuekv": 1, "values_from": 1, "valuesfrom": 0, "var": [0, 7], "vari": 1, "variabl": [0, 1, 3, 5, 7, 8], "variant": [0, 1, 7], "variat": 1, "varieti": [0, 8], "variou": [0, 1, 2, 8], "vault": 1, "ve": [2, 7], "verbos": 4, "veri": [0, 1, 3, 4, 8], "verifi": 1, "version": [0, 1, 3, 4, 7], "versionsperpolicyquota": 1, "via": [0, 1, 7, 8], "viabl": 0, "view": 8, "virtual": 6, "visibl": 0, "visit": [0, 8], "visit_children": 0, "visitor": 0, "visual": 7, "vm": 1, "vol": 1, "volum": 1, "volumeid": 1, "volumin": 2, "vpc": 0, "vpc_id": 0, "vpcconfig": 1, "vpce": 0, "vpcendpoint": 1, "vpcfilter": [0, 1], "vpcid": 1, "vpcidfilt": 1, "vpclink": 1, "vpcsecuritygroupfilt": [0, 1], "vpcsubnetfilt": 0, "vpn": 1, "w": [1, 2], "wa": [0, 1, 7], "wafen": 1, "wai": [0, 1, 2, 7], "wait": 1, "walk": [0, 8], "want": [0, 1, 2, 7], "warn": [0, 1, 3], "watch": 1, "we": [0, 1, 2, 7, 8], "web": 1, "web_acl": [0, 1], "webacl": 1, "week": 1, "weekdai": 1, "weekend": 1, "weekli": 1, "well": [0, 1, 2, 7, 8], "west": 1, "what": [0, 2, 7], "when": [0, 1, 2, 4, 6, 7, 8], "where": [0, 1, 2, 4, 6, 8], "wherea": 8, "whether": [0, 1, 7], "which": [0, 1, 4, 7, 8], "while": [0, 1, 2, 7, 8], "whitelist": 1, "whitelist_condit": 1, "whitelist_endpoint": 1, "whitelist_endpoints_from": 1, "whitelist_from": 1, "whitelist_orgid": 1, "whitelist_orgids_from": 1, "whitelist_protocol": 1, "whitelist_protocols_from": 1, "whitelist_vpc": 1, "whitelist_vpc_from": 1, "whitelist_vpce_from": 1, "who": 1, "whole": [5, 7, 8], "whose": 1, "why": [0, 2], "wide": [1, 8], "width": 0, "win": 1, "window": [1, 7], "wip": 4, "wire": 1, "with_traceback": 0, "withdraw": 7, "within": [0, 1, 7], "without": [0, 1, 2, 3, 7, 8], "won": 0, "work": [0, 1, 4, 7, 8], "workabl": 1, "worker": 1, "workflow": 1, "world": [0, 7], "woth": 8, "would": [0, 1, 7], "wrap": [0, 7, 8], "wrapper": [0, 4], "wrapperspb": 0, "wrire": 0, "write": [2, 4], "write_acp": 1, "writen": 1, "written": 4, "wrt": 1, "www": [0, 1, 4], "x": [0, 1, 2], "x_sign": 0, "xml": 4, "xrayencrypt": 1, "xyz": 1, "y": [0, 1], "yaml": 7, "ye": [1, 2], "yeah": 0, "yet": 8, "yield": [0, 1], "you": [0, 1, 2, 4, 7], "your": [1, 7], "yyyi": 1, "z": [0, 1], "z0": 0, "za": [0, 1], "zero": [0, 2, 4], "zerodivisionerror": 0, "zone": [0, 1, 7], "\u00b5": 0}, "titles": ["API Reference", "C7N Functions Required", "CLI Use of CEL-Python", "Configuration", "Development Tools", "Pure Python Google Common Expression Language (CEL)", "Installation", "Application Integration", "Architecture and Design"], "titleterms": {"The": [0, 4, 8], "__main__": 0, "access": 1, "account": 1, "adapt": 0, "addit": 0, "ag": 1, "alia": 1, "all": 1, "allow": 1, "ami": 1, "api": [0, 7], "applic": 7, "architectur": 8, "argument": 2, "attribut": 1, "avail": 1, "baselin": 7, "bind": 7, "block": 1, "bool": 1, "boolean": 1, "bucket": 1, "builtin": 7, "bulk": 7, "c7n": [0, 1, 7], "c7nlib": 0, "cach": 1, "capac": 1, "cel": [2, 5, 8], "celfilt": 1, "celpars": 0, "celpi": 0, "celtyp": 0, "check": 1, "cidr": 1, "cli": 2, "cloud": 7, "cloudtrail": 1, "common": [1, 5], "compil": 8, "complianc": 1, "compon": 8, "concurr": 1, "config": 1, "configur": [2, 3], "construct": 1, "contain": 8, "content": [1, 5], "context": [0, 1, 8], "convers": 1, "count": 1, "credenti": 1, "cross": 1, "custodian": 7, "custom": 7, "data": 1, "db": 1, "default": 1, "defin": 7, "definit": 1, "delta": 1, "descript": [2, 4], "design": [1, 8], "detail": 0, "develop": 4, "devic": 1, "dhcp": 1, "diff": 1, "directori": 4, "doc": 4, "document": 5, "dot": 8, "eb": 1, "egress": 1, "enabl": 1, "encrypt": 1, "environ": 2, "ephemer": 1, "error": 7, "essenti": 7, "evalu": [0, 8], "event": 1, "exampl": [1, 2, 4, 7], "except": 7, "exit": 2, "express": 5, "extern": [1, 7], "fault": 1, "featur": [0, 4], "file": [2, 4], "filter": [1, 7], "find": 1, "flow": 1, "from": 7, "function": [0, 1, 7], "gherkin": 4, "global": [1, 7], "go": 7, "googl": 5, "grant": 1, "group": 1, "ha": 1, "health": 1, "healthcheck": 1, "i": 1, "iam": 1, "id": 1, "imag": 1, "implement": [1, 7], "indic": 5, "ingress": 1, "inlin": 1, "instal": 6, "instanc": 1, "integr": [1, 5, 7], "invalid": 1, "inventori": 1, "kei": 1, "km": 1, "languag": 5, "last": 1, "latest": 1, "launch": 1, "lifecycl": 1, "limit": 1, "listen": 1, "locat": 1, "lock": 1, "log": 1, "makefil": 4, "manag": 1, "mark": 1, "member": 8, "method": 1, "metric": 1, "mfa": 1, "mismatch": 1, "miss": [1, 8], "modify": 1, "more": 7, "name": [0, 8], "namespac": 2, "network": 1, "non": 1, "notif": 1, "numer": 0, "object": [0, 1], "offhour": 1, "onhour": 1, "op": 1, "option": 1, "origin": 1, "overview": 5, "param": 1, "paramet": 1, "password": 1, "polici": 1, "principl": 1, "product": 8, "progag": 1, "project": 4, "protect": 1, "protocol": 1, "provid": 0, "public": 1, "pure": 5, "py": 4, "python": [2, 5], "queri": 1, "refer": 0, "requir": 1, "reserv": 1, "resolut": 0, "resourc": 7, "rest": 1, "rotat": 1, "rout": 1, "rule": 1, "s3": 1, "secur": 1, "servic": 1, "shadow": 1, "shield": 1, "simpl": 7, "singleton": 1, "skip": 1, "snapshot": 1, "sourc": 1, "specif": 1, "ssl": 1, "ssm": 1, "stale": 1, "state": 1, "statement": 1, "statu": [1, 2], "step": 4, "subnet": 1, "summari": 1, "synopsi": [2, 4], "tabl": 5, "tag": 1, "target": 1, "task": 1, "termin": 1, "time": 8, "timzon": 0, "todo": 0, "toler": 1, "tool": 4, "transpil": 8, "type": [0, 2, 7, 8], "unus": 1, "upgrad": 1, "uptim": 1, "us": [1, 2, 7], "user": 1, "valid": 1, "valu": [0, 1], "value_from": [0, 1], "value_typ": 1, "variabl": 2, "virtual": 1, "vpc": 1, "waf": 1, "write": 1, "xrai": 1}}) \ No newline at end of file +Search.setIndex({"alltitles": {"API Reference": [[0, null]], "Additional Functions": [[0, "additional-functions"]], "Application Integration": [[7, null]], "Architecture and Design": [[8, null]], "Arguments, Types, and Namespaces": [[2, "arguments-types-and-namespaces"]], "Baseline C7N Example": [[7, "baseline-c7n-example"]], "Bulk Filter Example": [[7, "bulk-filter-example"]], "C7N Cache": [[1, "c7n-cache"]], "C7N Context Object": [[0, "c7n-context-object"], [1, "c7n-context-object"]], "C7N Filter and Resource Types": [[7, "c7n-filter-and-resource-types"]], "C7N Functions Required": [[1, null]], "CEL Types": [[8, "cel-types"]], "CELFilter Design": [[1, "celfilter-design"]], "CLI Use of CEL-Python": [[2, null]], "CONFIGURATION": [[2, "configuration"]], "Cloud Custodian (C7N) Integration": [[7, "cloud-custodian-c7n-integration"]], "Common C7N Constructs": [[1, "common-c7n-constructs"]], "Common/Boolean Filters": [[1, "common-boolean-filters"]], "Common/Non-Bool Filters": [[1, "common-non-bool-filters"]], "Compile-Time": [[8, "compile-time"]], "Components": [[8, "components"]], "Configuration": [[3, null]], "Container": [[8, "container"]], "Contents": [[1, "contents"]], "Context": [[8, "context"]], "Custom function in Go": [[7, "custom-function-in-go"]], "DESCRIPTION": [[2, "description"]], "Define custom global function": [[7, "define-custom-global-function"]], "Description": [[4, "description"]], "Design Principles": [[1, "design-principles"]], "Development Tools": [[4, null]], "Documentation Content:": [[5, null]], "ENVIRONMENT VARIABLES": [[2, "environment-variables"]], "EXAMPLES": [[2, "examples"]], "EXIT STATUS": [[2, "exit-status"]], "Evaluation-Time": [[8, "evaluation-time"]], "Examples": [[4, "examples"]], "Exceptions and Errors": [[7, "exceptions-and-errors"]], "External API": [[7, "external-api"]], "FILES": [[2, "files"]], "Files": [[4, "files"]], "Function Bindings": [[7, "function-bindings"]], "Indices and tables": [[5, "indices-and-tables"]], "Installation": [[6, null]], "Integration Essentials": [[7, "integration-essentials"]], "Integration Overview": [[5, "integration-overview"]], "More Examples from the Go implementation": [[7, "more-examples-from-the-go-implementation"]], "Name Resolution": [[0, "name-resolution"]], "Numeric Details": [[0, "numeric-details"]], "Pure Python Google Common Expression Language (CEL)": [[5, null]], "SYNOPSIS": [[2, "synopsis"]], "Simple example using builtin types": [[7, "simple-example-using-builtin-types"]], "Singleton/Boolean Filters": [[1, "singleton-boolean-filters"]], "Singleton/Non-Bool Filters": [[1, "singleton-non-bool-filters"]], "Summary": [[1, "summary"]], "Synopsis": [[4, "synopsis"]], "The API": [[0, "the-api"]], "The Member-Dot Production": [[8, "the-member-dot-production"]], "The Project Makefile": [[4, "the-project-makefile"]], "The docs/Makefile": [[4, "the-docs-makefile"]], "The features/Makefile": [[4, "the-features-makefile"]], "The features/steps Directory": [[4, "the-features-steps-directory"]], "The gherkinize.py Tool": [[4, "module-gherkinize"]], "The type: value Features": [[0, "the-type-value-features"]], "The type: value_from features": [[0, "the-type-value-from-features"]], "Timzone Details": [[0, "timzone-details"]], "Todo": [[0, "id2"], [0, "id3"], [0, "id4"], [0, "id5"], [0, "id6"], [0, "id7"], [0, "id8"], [0, "id9"], [0, "id10"], [0, "id11"], [0, "id12"], [0, "id13"], [0, "id14"], [0, "id15"], [0, "id16"], [0, "id17"], [0, "id18"], [0, "id19"], [0, "id20"], [0, "id21"], [0, "id22"], [0, "id23"], [0, "id24"], [0, "id25"], [0, "id26"], [0, "id27"], [0, "id28"], [0, "id29"], [0, "id30"], [0, "id31"], [0, "id32"], [0, "id33"], [0, "id34"], [0, "id35"], [0, "id36"], [0, "id37"], [0, "id38"], [0, "id39"], [0, "id40"], [0, "id41"]], "Transpiler Missing Names": [[8, "transpiler-missing-names"]], "Type Adapter": [[0, "type-adapter"]], "Type Provider": [[0, "type-provider"]], "Types": [[0, "types"]], "__main__": [[0, "module-celpy.__main__"]], "access-key": [[1, "access-key"]], "adapter": [[0, "module-celpy.adapter"]], "age": [[1, "age"]], "bucket-encryption (no examples)": [[1, "bucket-encryption-no-examples"]], "bucket-notification (no examples)": [[1, "bucket-notification-no-examples"]], "c7nlib": [[0, "module-celpy.c7nlib"]], "capacity-delta": [[1, "capacity-delta"]], "celparser": [[0, "module-celpy.celparser"]], "celpy": [[0, "module-celpy.__init__"]], "celtypes": [[0, "module-celpy.celtypes"]], "check-cloudtrail": [[1, "check-cloudtrail"]], "check-config": [[1, "check-config"]], "config-compliance (no examples)": [[1, "config-compliance-no-examples"]], "credential": [[1, "credential"]], "cross-account": [[1, "cross-account"]], "data-events (no examples)": [[1, "data-events-no-examples"]], "db-parameter (no examples)": [[1, "db-parameter-no-examples"]], "default-vpc (no examples)": [[1, "default-vpc-no-examples"]], "dhcp-options (no examples)": [[1, "dhcp-options-no-examples"]], "diff (no examples)": [[1, "diff-no-examples"]], "ebs": [[1, "ebs"]], "egress": [[1, "egress"]], "ephemeral (no examples)": [[1, "ephemeral-no-examples"]], "evaluation": [[0, "module-celpy.evaluation"]], "event": [[1, "event"]], "event-source (no examples)": [[1, "event-source-no-examples"]], "fault-tolerant (no examples)": [[1, "fault-tolerant-no-examples"]], "finding (no examples)": [[1, "finding-no-examples"]], "flow-logs": [[1, "flow-logs"]], "global-grants": [[1, "global-grants"]], "grant-count": [[1, "grant-count"]], "group (no examples)": [[1, "group-no-examples"]], "has-allow-all (no examples)": [[1, "has-allow-all-no-examples"]], "has-inline-policy (no examples)": [[1, "has-inline-policy-no-examples"]], "has-specific-managed-policy (no examples)": [[1, "has-specific-managed-policy-no-examples"]], "has-statement": [[1, "has-statement"]], "has-users (no examples)": [[1, "has-users-no-examples"]], "has-virtual-mfa (no examples)": [[1, "has-virtual-mfa-no-examples"]], "health-event": [[1, "health-event"]], "healthcheck-protocol-mismatch (no examples)": [[1, "healthcheck-protocol-mismatch-no-examples"]], "iam-summary (no examples)": [[1, "iam-summary-no-examples"]], "image": [[1, "image"]], "image-age": [[1, "image-age"]], "ingress": [[1, "ingress"]], "instance (no examples)": [[1, "instance-no-examples"]], "instance-age": [[1, "instance-age"]], "instance-attribute (no examples)": [[1, "instance-attribute-no-examples"]], "instance-uptime": [[1, "instance-uptime"]], "invalid": [[1, "invalid"]], "inventory (no examples)": [[1, "inventory-no-examples"]], "is-log-target": [[1, "is-log-target"]], "is-logging": [[1, "is-logging"]], "is-not-logging": [[1, "is-not-logging"]], "is-shadow (no examples)": [[1, "is-shadow-no-examples"]], "is-ssl (no examples)": [[1, "is-ssl-no-examples"]], "key-rotation-status": [[1, "key-rotation-status"]], "kms-alias": [[1, "kms-alias"]], "kms-key": [[1, "kms-key"]], "last-write": [[1, "last-write"]], "latest": [[1, "latest"]], "launch-config": [[1, "launch-config"]], "lifecycle-rule (no examples)": [[1, "lifecycle-rule-no-examples"]], "listener": [[1, "listener"]], "locked (no examples)": [[1, "locked-no-examples"]], "marked-for-op": [[1, "marked-for-op"]], "metrics": [[1, "metrics"]], "mfa-device": [[1, "mfa-device"]], "mismatch-s3-origin": [[1, "mismatch-s3-origin"]], "missing": [[1, "missing"]], "missing-policy-statement": [[1, "missing-policy-statement"]], "missing-route (no examples)": [[1, "missing-route-no-examples"]], "modifyable (no examples)": [[1, "modifyable-no-examples"]], "network-location": [[1, "network-location"]], "no-encryption-statement (no examples)": [[1, "no-encryption-statement-no-examples"]], "no-specific-managed-policy (no examples)": [[1, "no-specific-managed-policy-no-examples"]], "not-encrypted": [[1, "not-encrypted"]], "offhour": [[1, "offhour"]], "onhour": [[1, "onhour"]], "op Implementations": [[1, "op-implementations"]], "param (no examples)": [[1, "param-no-examples"]], "password-policy": [[1, "password-policy"]], "policy": [[1, "policy"]], "progagated-tags (no examples)": [[1, "progagated-tags-no-examples"]], "query-logging-enabled (no examples)": [[1, "query-logging-enabled-no-examples"]], "reserved-concurrency": [[1, "reserved-concurrency"]], "rest-integration (no examples)": [[1, "rest-integration-no-examples"]], "rest-method (no examples)": [[1, "rest-method-no-examples"]], "route (no examples)": [[1, "route-no-examples"]], "s3-cidr (no examples)": [[1, "s3-cidr-no-examples"]], "s3-public-block (no examples)": [[1, "s3-public-block-no-examples"]], "security-group": [[1, "security-group"]], "service-limit": [[1, "service-limit"]], "shield-enabled": [[1, "shield-enabled"]], "shield-metrics (no examples)": [[1, "shield-metrics-no-examples"]], "singleton (no examples)": [[1, "singleton-no-examples"]], "skip-ami-snapshots": [[1, "skip-ami-snapshots"]], "ssl-policy": [[1, "ssl-policy"]], "ssm (no examples)": [[1, "ssm-no-examples"]], "stale (no examples)": [[1, "stale-no-examples"]], "state-age": [[1, "state-age"]], "status (no examples)": [[1, "status-no-examples"]], "subnet": [[1, "subnet"]], "tag-count": [[1, "tag-count"]], "target-group (no examples)": [[1, "target-group-no-examples"]], "task-definition (no examples)": [[1, "task-definition-no-examples"]], "termination-protected (no examples)": [[1, "termination-protected-no-examples"]], "unused": [[1, "unused"]], "upgrade-available (no examples)": [[1, "upgrade-available-no-examples"]], "used": [[1, "used"]], "user-data (no examples)": [[1, "user-data-no-examples"]], "valid": [[1, "valid"]], "value": [[1, "value"]], "value_from External Data": [[1, "value-from-external-data"]], "value_type Conversions": [[1, "value-type-conversions"]], "vpc": [[1, "vpc"]], "vpc-attributes (no examples)": [[1, "vpc-attributes-no-examples"]], "vpc-id": [[1, "vpc-id"]], "waf-enabled": [[1, "waf-enabled"]], "xray-encrypt-key (no examples)": [[1, "xray-encrypt-key-no-examples"]]}, "docnames": ["api", "c7n_functions", "cli", "configuration", "development", "index", "installation", "integration", "structure"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1}, "filenames": ["api.rst", "c7n_functions.rst", "cli.rst", "configuration.rst", "development.rst", "index.rst", "installation.rst", "integration.rst", "structure.rst"], "indexentries": {"--arg": [[2, "cmdoption-celpy-a", false]], "--boolean": [[2, "cmdoption-celpy-b", false]], "--format": [[2, "cmdoption-celpy-f", false]], "--interactive": [[2, "cmdoption-celpy-i", false]], "--json-document": [[2, "cmdoption-celpy-d", false]], "--json-package": [[2, "cmdoption-celpy-p", false]], "--null-input": [[2, "cmdoption-celpy-n", false]], "--output": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-o", false]], "--silent": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-s", false]], "--slurp": [[2, "cmdoption-celpy-s", false]], "--verbose": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-v", false]], "-a": [[2, "cmdoption-celpy-a", false]], "-b": [[2, "cmdoption-celpy-b", false]], "-d": [[2, "cmdoption-celpy-d", false]], "-f": [[2, "cmdoption-celpy-f", false]], "-i": [[2, "cmdoption-celpy-i", false]], "-n": [[2, "cmdoption-celpy-n", false]], "-o": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-o", false]], "-p": [[2, "cmdoption-celpy-p", false]], "-s": [[2, "cmdoption-celpy-s", false], [4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-s", false]], "-v": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-v", false]], "__abstractmethods__ (celpy.__init__.compiledrunner attribute)": [[0, "celpy.__init__.CompiledRunner.__abstractmethods__", false]], "__abstractmethods__ (celpy.__init__.interpretedrunner attribute)": [[0, "celpy.__init__.InterpretedRunner.__abstractmethods__", false]], "__abstractmethods__ (celpy.__init__.runner attribute)": [[0, "celpy.__init__.Runner.__abstractmethods__", false]], "__abstractmethods__ (celpy.c7nlib.c7n_interpreted_runner attribute)": [[0, "celpy.c7nlib.C7N_Interpreted_Runner.__abstractmethods__", false]], "__abstractmethods__ (celpy.evaluation.evaluator attribute)": [[0, "celpy.evaluation.Evaluator.__abstractmethods__", false]], "__add__() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.__add__", false]], "__add__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__add__", false]], "__add__() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.__add__", false]], "__add__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__add__", false]], "__add__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__add__", false]], "__call__() (celpy.celtypes.functiontype method)": [[0, "celpy.celtypes.FunctionType.__call__", false]], "__call__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__call__", false]], "__contains__() (celpy.c7nlib.ipv4network method)": [[0, "celpy.c7nlib.IPv4Network.__contains__", false]], "__enter__() (celpy.c7nlib.c7ncontext method)": [[0, "celpy.c7nlib.C7NContext.__enter__", false]], "__eq__() (celpy.c7nlib.comparableversion method)": [[0, "celpy.c7nlib.ComparableVersion.__eq__", false]], "__eq__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__eq__", false]], "__eq__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__eq__", false]], "__eq__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__eq__", false]], "__eq__() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.__eq__", false]], "__eq__() (celpy.celtypes.nulltype method)": [[0, "celpy.celtypes.NullType.__eq__", false]], "__eq__() (celpy.celtypes.stringtype method)": [[0, "celpy.celtypes.StringType.__eq__", false]], "__eq__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__eq__", false]], "__eq__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__eq__", false]], "__eq__() (celpy.evaluation.referent method)": [[0, "celpy.evaluation.Referent.__eq__", false]], "__exit__() (celpy.c7nlib.c7ncontext method)": [[0, "celpy.c7nlib.C7NContext.__exit__", false]], "__floordiv__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__floordiv__", false]], "__floordiv__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__floordiv__", false]], "__floordiv__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__floordiv__", false]], "__ge__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__ge__", false]], "__ge__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__ge__", false]], "__getattr__() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.__getattr__", false]], "__getitem__() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.__getitem__", false]], "__gt__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__gt__", false]], "__gt__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__gt__", false]], "__hash__ (celpy.c7nlib.comparableversion attribute)": [[0, "celpy.c7nlib.ComparableVersion.__hash__", false]], "__hash__ (celpy.celtypes.listtype attribute)": [[0, "celpy.celtypes.ListType.__hash__", false]], "__hash__ (celpy.celtypes.maptype attribute)": [[0, "celpy.celtypes.MapType.__hash__", false]], "__hash__ (celpy.celtypes.nulltype attribute)": [[0, "celpy.celtypes.NullType.__hash__", false]], "__hash__ (celpy.evaluation.celevalerror attribute)": [[0, "celpy.evaluation.CELEvalError.__hash__", false]], "__hash__ (celpy.evaluation.referent attribute)": [[0, "celpy.evaluation.Referent.__hash__", false]], "__hash__() (celpy.celtypes.booltype method)": [[0, "celpy.celtypes.BoolType.__hash__", false]], "__hash__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__hash__", false]], "__hash__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__hash__", false]], "__hash__() (celpy.celtypes.stringtype method)": [[0, "celpy.celtypes.StringType.__hash__", false]], "__hash__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__hash__", false]], "__init__() (celpy.__init__.compiledrunner method)": [[0, "celpy.__init__.CompiledRunner.__init__", false]], "__init__() (celpy.__init__.environment method)": [[0, "celpy.__init__.Environment.__init__", false]], "__init__() (celpy.__init__.runner method)": [[0, "celpy.__init__.Runner.__init__", false]], "__init__() (celpy.c7nlib.c7ncontext method)": [[0, "celpy.c7nlib.C7NContext.__init__", false]], "__init__() (celpy.celparser.celparseerror method)": [[0, "celpy.celparser.CELParseError.__init__", false]], "__init__() (celpy.celparser.celparser method)": [[0, "celpy.celparser.CELParser.__init__", false]], "__init__() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.__init__", false]], "__init__() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.__init__", false]], "__init__() (celpy.celtypes.messagetype method)": [[0, "celpy.celtypes.MessageType.__init__", false]], "__init__() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.__init__", false]], "__init__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__init__", false]], "__init__() (celpy.evaluation.celsyntaxerror method)": [[0, "celpy.evaluation.CELSyntaxError.__init__", false]], "__init__() (celpy.evaluation.celunsupportederror method)": [[0, "celpy.evaluation.CELUnsupportedError.__init__", false]], "__init__() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.__init__", false]], "__init__() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.__init__", false]], "__init__() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.__init__", false]], "__init__() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.__init__", false]], "__init__() (celpy.evaluation.referent method)": [[0, "celpy.evaluation.Referent.__init__", false]], "__init__() (celpy.evaluation.transpiler method)": [[0, "celpy.evaluation.Transpiler.__init__", false]], "__init__() (celpy.evaluation.transpilertree method)": [[0, "celpy.evaluation.TranspilerTree.__init__", false]], "__init__() (gherkinize.config method)": [[4, "gherkinize.Config.__init__", false]], "__le__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__le__", false]], "__le__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__le__", false]], "__lt__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__lt__", false]], "__lt__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__lt__", false]], "__mod__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__mod__", false]], "__mod__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__mod__", false]], "__mod__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__mod__", false]], "__mod__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__mod__", false]], "__mul__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__mul__", false]], "__mul__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__mul__", false]], "__mul__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__mul__", false]], "__ne__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__ne__", false]], "__ne__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__ne__", false]], "__ne__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__ne__", false]], "__ne__() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.__ne__", false]], "__ne__() (celpy.celtypes.nulltype method)": [[0, "celpy.celtypes.NullType.__ne__", false]], "__ne__() (celpy.celtypes.stringtype method)": [[0, "celpy.celtypes.StringType.__ne__", false]], "__ne__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__ne__", false]], "__neg__() (celpy.celtypes.booltype method)": [[0, "celpy.celtypes.BoolType.__neg__", false]], "__neg__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__neg__", false]], "__neg__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__neg__", false]], "__neg__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__neg__", false]], "__neg__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__neg__", false]], "__new__() (celpy.__init__.int32value static method)": [[0, "celpy.__init__.Int32Value.__new__", false]], "__new__() (celpy.celtypes.booltype static method)": [[0, "celpy.celtypes.BoolType.__new__", false]], "__new__() (celpy.celtypes.bytestype static method)": [[0, "celpy.celtypes.BytesType.__new__", false]], "__new__() (celpy.celtypes.doubletype static method)": [[0, "celpy.celtypes.DoubleType.__new__", false]], "__new__() (celpy.celtypes.durationtype static method)": [[0, "celpy.celtypes.DurationType.__new__", false]], "__new__() (celpy.celtypes.inttype static method)": [[0, "celpy.celtypes.IntType.__new__", false]], "__new__() (celpy.celtypes.stringtype static method)": [[0, "celpy.celtypes.StringType.__new__", false]], "__new__() (celpy.celtypes.timestamptype static method)": [[0, "celpy.celtypes.TimestampType.__new__", false]], "__new__() (celpy.celtypes.typetype static method)": [[0, "celpy.celtypes.TypeType.__new__", false]], "__new__() (celpy.celtypes.uinttype static method)": [[0, "celpy.celtypes.UintType.__new__", false]], "__orig_bases__ (celpy.celtypes.listtype attribute)": [[0, "celpy.celtypes.ListType.__orig_bases__", false]], "__orig_bases__ (celpy.celtypes.maptype attribute)": [[0, "celpy.celtypes.MapType.__orig_bases__", false]], "__orig_bases__ (celpy.evaluation.namecontainer attribute)": [[0, "celpy.evaluation.NameContainer.__orig_bases__", false]], "__parameters__ (celpy.celparser.dumpast attribute)": [[0, "celpy.celparser.DumpAST.__parameters__", false]], "__parameters__ (celpy.celtypes.listtype attribute)": [[0, "celpy.celtypes.ListType.__parameters__", false]], "__parameters__ (celpy.celtypes.maptype attribute)": [[0, "celpy.celtypes.MapType.__parameters__", false]], "__parameters__ (celpy.celtypes.messagetype attribute)": [[0, "celpy.celtypes.MessageType.__parameters__", false]], "__parameters__ (celpy.celtypes.packagetype attribute)": [[0, "celpy.celtypes.PackageType.__parameters__", false]], "__parameters__ (celpy.evaluation.evaluator attribute)": [[0, "celpy.evaluation.Evaluator.__parameters__", false]], "__parameters__ (celpy.evaluation.namecontainer attribute)": [[0, "celpy.evaluation.NameContainer.__parameters__", false]], "__parameters__ (celpy.evaluation.phase1transpiler attribute)": [[0, "celpy.evaluation.Phase1Transpiler.__parameters__", false]], "__parameters__ (celpy.evaluation.phase2transpiler attribute)": [[0, "celpy.evaluation.Phase2Transpiler.__parameters__", false]], "__parameters__ (celpy.evaluation.transpilertree attribute)": [[0, "celpy.evaluation.TranspilerTree.__parameters__", false]], "__pow__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__pow__", false]], "__radd__() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.__radd__", false]], "__radd__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__radd__", false]], "__radd__() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.__radd__", false]], "__radd__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__radd__", false]], "__radd__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__radd__", false]], "__repr__() (celpy.__init__.environment method)": [[0, "celpy.__init__.Environment.__repr__", false]], "__repr__() (celpy.__init__.runner method)": [[0, "celpy.__init__.Runner.__repr__", false]], "__repr__() (celpy.c7nlib.c7ncontext method)": [[0, "celpy.c7nlib.C7NContext.__repr__", false]], "__repr__() (celpy.celtypes.booltype method)": [[0, "celpy.celtypes.BoolType.__repr__", false]], "__repr__() (celpy.celtypes.bytestype method)": [[0, "celpy.celtypes.BytesType.__repr__", false]], "__repr__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__repr__", false]], "__repr__() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.__repr__", false]], "__repr__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__repr__", false]], "__repr__() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.__repr__", false]], "__repr__() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.__repr__", false]], "__repr__() (celpy.celtypes.stringtype method)": [[0, "celpy.celtypes.StringType.__repr__", false]], "__repr__() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.__repr__", false]], "__repr__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__repr__", false]], "__repr__() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.__repr__", false]], "__repr__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__repr__", false]], "__repr__() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.__repr__", false]], "__repr__() (celpy.evaluation.referent method)": [[0, "celpy.evaluation.Referent.__repr__", false]], "__rfloordiv__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__rfloordiv__", false]], "__rfloordiv__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__rfloordiv__", false]], "__rfloordiv__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__rfloordiv__", false]], "__rmod__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__rmod__", false]], "__rmod__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__rmod__", false]], "__rmod__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__rmod__", false]], "__rmod__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__rmod__", false]], "__rmul__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__rmul__", false]], "__rmul__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__rmul__", false]], "__rmul__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__rmul__", false]], "__rpow__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__rpow__", false]], "__rsub__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__rsub__", false]], "__rsub__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__rsub__", false]], "__rsub__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__rsub__", false]], "__rtruediv__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__rtruediv__", false]], "__rtruediv__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__rtruediv__", false]], "__rtruediv__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__rtruediv__", false]], "__rtruediv__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__rtruediv__", false]], "__str__() (celpy.celtypes.booltype method)": [[0, "celpy.celtypes.BoolType.__str__", false]], "__str__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__str__", false]], "__str__() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.__str__", false]], "__str__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__str__", false]], "__str__() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.__str__", false]], "__str__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__str__", false]], "__sub__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__sub__", false]], "__sub__() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.__sub__", false]], "__sub__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__sub__", false]], "__sub__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__sub__", false]], "__truediv__() (celpy.celtypes.doubletype method)": [[0, "celpy.celtypes.DoubleType.__truediv__", false]], "__truediv__() (celpy.celtypes.inttype method)": [[0, "celpy.celtypes.IntType.__truediv__", false]], "__truediv__() (celpy.celtypes.uinttype method)": [[0, "celpy.celtypes.UintType.__truediv__", false]], "__truediv__() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.__truediv__", false]], "absent() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.absent", false]], "activation (class in celpy.evaluation)": [[0, "celpy.evaluation.Activation", false]], "addition() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.addition", false]], "addition() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.addition", false]], "addition() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.addition", false]], "addition_add() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.addition_add", false]], "addition_sub() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.addition_sub", false]], "all_dbsubenet_groups() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_dbsubenet_groups", false]], "all_images() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_images", false]], "all_instance_profiles() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_instance_profiles", false]], "all_launch_configuration_names() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_launch_configuration_names", false]], "all_scan_groups() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_scan_groups", false]], "all_service_roles() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_service_roles", false]], "all_snapshots() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.all_snapshots", false]], "ambiguous_literals() (celpy.celparser.celparser static method)": [[0, "celpy.celparser.CELParser.ambiguous_literals", false]], "arg_type_value() (in module celpy.__main__)": [[0, "celpy.__main__.arg_type_value", false]], "arn_split() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.arn_split", false]], "bool_eq() (in module celpy.evaluation)": [[0, "celpy.evaluation.bool_eq", false]], "bool_ge() (in module celpy.evaluation)": [[0, "celpy.evaluation.bool_ge", false]], "bool_gt() (in module celpy.evaluation)": [[0, "celpy.evaluation.bool_gt", false]], "bool_le() (in module celpy.evaluation)": [[0, "celpy.evaluation.bool_le", false]], "bool_lt() (in module celpy.evaluation)": [[0, "celpy.evaluation.bool_lt", false]], "bool_ne() (in module celpy.evaluation)": [[0, "celpy.evaluation.bool_ne", false]], "boolean() (in module celpy.evaluation)": [[0, "celpy.evaluation.boolean", false]], "booltype (class in celpy.celtypes)": [[0, "celpy.celtypes.BoolType", false]], "build_macro_eval() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.build_macro_eval", false]], "build_reduce_macro_eval() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.build_reduce_macro_eval", false]], "build_ss_macro_eval() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.build_ss_macro_eval", false]], "bytestype (class in celpy.celtypes)": [[0, "celpy.celtypes.BytesType", false]], "c7n_interpreted_runner (class in celpy.c7nlib)": [[0, "celpy.c7nlib.C7N_Interpreted_Runner", false]], "c7ncontext (class in celpy.c7nlib)": [[0, "celpy.c7nlib.C7NContext", false]], "cel_eval() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.cel_eval", false]], "cel_parser (celpy.celparser.celparser attribute)": [[0, "celpy.celparser.CELParser.CEL_PARSER", false]], "cel_repl (class in celpy.__main__)": [[0, "celpy.__main__.CEL_REPL", false]], "cel_trace": [[0, "index-0", false], [2, "index-2", false]], "celbytes() (in module celpy.evaluation)": [[0, "celpy.evaluation.celbytes", false]], "celevalerror": [[0, "celpy.evaluation.CELEvalError", false]], "celjsondecoder (class in celpy.adapter)": [[0, "celpy.adapter.CELJSONDecoder", false]], "celjsonencoder (class in celpy.adapter)": [[0, "celpy.adapter.CELJSONEncoder", false]], "celparseerror": [[0, "celpy.celparser.CELParseError", false]], "celparser (class in celpy.celparser)": [[0, "celpy.celparser.CELParser", false]], "celpy command line option": [[2, "cmdoption-celpy-a", false], [2, "cmdoption-celpy-arg-expr", false], [2, "cmdoption-celpy-b", false], [2, "cmdoption-celpy-d", false], [2, "cmdoption-celpy-f", false], [2, "cmdoption-celpy-i", false], [2, "cmdoption-celpy-n", false], [2, "cmdoption-celpy-p", false], [2, "cmdoption-celpy-s", false]], "celpy.__init__": [[0, "module-celpy.__init__", false]], "celpy.__main__": [[0, "module-celpy.__main__", false]], "celpy.adapter": [[0, "module-celpy.adapter", false]], "celpy.c7nlib": [[0, "module-celpy.c7nlib", false]], "celpy.celparser": [[0, "module-celpy.celparser", false]], "celpy.celtypes": [[0, "module-celpy.celtypes", false]], "celpy.evaluation": [[0, "module-celpy.evaluation", false]], "celstr() (in module celpy.evaluation)": [[0, "celpy.evaluation.celstr", false]], "celsyntaxerror": [[0, "celpy.evaluation.CELSyntaxError", false]], "celunsupportederror": [[0, "celpy.evaluation.CELUnsupportedError", false]], "children (celpy.evaluation.transpilertree attribute)": [[0, "celpy.evaluation.TranspilerTree.children", false]], "clone() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.clone", false]], "clone() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.clone", false]], "clone() (celpy.evaluation.referent method)": [[0, "celpy.evaluation.Referent.clone", false]], "comparableversion (class in celpy.c7nlib)": [[0, "celpy.c7nlib.ComparableVersion", false]], "compile() (celpy.__init__.environment method)": [[0, "celpy.__init__.Environment.compile", false]], "compiledrunner (class in celpy.__init__)": [[0, "celpy.__init__.CompiledRunner", false]], "conditionaland() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.conditionaland", false]], "conditionaland() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.conditionaland", false]], "conditionaland() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.conditionaland", false]], "conditionaland() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.conditionaland", false]], "conditionalor() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.conditionalor", false]], "conditionalor() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.conditionalor", false]], "conditionalor() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.conditionalor", false]], "conditionalor() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.conditionalor", false]], "config (class in gherkinize)": [[4, "gherkinize.Config", false]], "contains() (celpy.c7nlib.ipv4network method)": [[0, "celpy.c7nlib.IPv4Network.contains", false]], "contains() (celpy.celtypes.bytestype method)": [[0, "celpy.celtypes.BytesType.contains", false]], "contains() (celpy.celtypes.listtype method)": [[0, "celpy.celtypes.ListType.contains", false]], "contains() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.contains", false]], "contains() (celpy.celtypes.stringtype method)": [[0, "celpy.celtypes.StringType.contains", false]], "credentials() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.credentials", false]], "data (celpy.evaluation.transpilertree attribute)": [[0, "celpy.evaluation.TranspilerTree.data", false]], "decode() (celpy.adapter.celjsondecoder method)": [[0, "celpy.adapter.CELJSONDecoder.decode", false]], "default() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.default", false]], "default() (celpy.adapter.celjsonencoder method)": [[0, "celpy.adapter.CELJSONEncoder.default", false]], "describe_db_snapshot_attributes() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.describe_db_snapshot_attributes", false]], "describe_subscription_filters() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.describe_subscription_filters", false]], "dict_find_name() (celpy.evaluation.namecontainer static method)": [[0, "celpy.evaluation.NameContainer.dict_find_name", false]], "difference() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.difference", false]], "display() (celpy.celparser.dumpast class method)": [[0, "celpy.celparser.DumpAST.display", false]], "do_bye() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.do_bye", false]], "do_eof() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.do_EOF", false]], "do_exit() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.do_exit", false]], "do_quit() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.do_quit", false]], "do_set() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.do_set", false]], "do_show() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.do_show", false]], "dot_ident() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.dot_ident", false]], "dot_ident() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.dot_ident", false]], "dot_ident_arg() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.dot_ident_arg", false]], "dot_ident_arg() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.dot_ident_arg", false]], "doubletype (class in celpy.celtypes)": [[0, "celpy.celtypes.DoubleType", false]], "dumpast (class in celpy.celparser)": [[0, "celpy.celparser.DumpAST", false]], "durationtype (class in celpy.celtypes)": [[0, "celpy.celtypes.DurationType", false]], "encode() (celpy.adapter.celjsonencoder method)": [[0, "celpy.adapter.CELJSONEncoder.encode", false]], "environment (class in celpy.__init__)": [[0, "celpy.__init__.Environment", false]], "environment variable": [[0, "index-0", false], [2, "index-0", false], [2, "index-1", false], [2, "index-2", false]], "error_text() (celpy.celparser.celparser method)": [[0, "celpy.celparser.CELParser.error_text", false]], "eval_error() (in module celpy.evaluation)": [[0, "celpy.evaluation.eval_error", false]], "evaluate() (celpy.__init__.compiledrunner method)": [[0, "celpy.__init__.CompiledRunner.evaluate", false]], "evaluate() (celpy.__init__.interpretedrunner method)": [[0, "celpy.__init__.InterpretedRunner.evaluate", false]], "evaluate() (celpy.__init__.runner method)": [[0, "celpy.__init__.Runner.evaluate", false]], "evaluate() (celpy.c7nlib.c7n_interpreted_runner method)": [[0, "celpy.c7nlib.C7N_Interpreted_Runner.evaluate", false]], "evaluate() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.evaluate", false]], "evaluate() (celpy.evaluation.transpiler method)": [[0, "celpy.evaluation.Transpiler.evaluate", false]], "evaluator (class in celpy.evaluation)": [[0, "celpy.evaluation.Evaluator", false]], "expr": [[2, "cmdoption-celpy-arg-expr", false]], "expr() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.expr", false]], "expr() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.expr", false]], "expr() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.expr", false]], "expr() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.expr", false]], "exprlist() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.exprlist", false]], "exprlist() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.exprlist", false]], "exprlist() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.exprlist", false]], "extended_name_path (celpy.evaluation.namecontainer attribute)": [[0, "celpy.evaluation.NameContainer.extended_name_path", false]], "features.steps.c7n_integration": [[4, "module-features.steps.c7n_integration", false]], "features.steps.cli_binding": [[4, "module-features.steps.cli_binding", false]], "features.steps.integration_binding": [[4, "module-features.steps.integration_binding", false]], "fieldinits() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.fieldinits", false]], "fieldinits() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.fieldinits", false]], "fieldinits() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.fieldinits", false]], "find_name() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.find_name", false]], "flow_logs() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.flow_logs", false]], "func_name() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.func_name", false]], "function_contains() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_contains", false]], "function_endswith() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_endsWith", false]], "function_eval() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.function_eval", false]], "function_getdate() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getDate", false]], "function_getdayofmonth() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getDayOfMonth", false]], "function_getdayofweek() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getDayOfWeek", false]], "function_getdayofyear() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getDayOfYear", false]], "function_getfullyear() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getFullYear", false]], "function_gethours() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getHours", false]], "function_getmilliseconds() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getMilliseconds", false]], "function_getminutes() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getMinutes", false]], "function_getmonth() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getMonth", false]], "function_getseconds() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_getSeconds", false]], "function_matches() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_matches", false]], "function_size() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_size", false]], "function_startswith() (in module celpy.evaluation)": [[0, "celpy.evaluation.function_startsWith", false]], "functiontype (class in celpy.celtypes)": [[0, "celpy.celtypes.FunctionType", false]], "get() (celpy.celtypes.maptype method)": [[0, "celpy.celtypes.MapType.get", false]], "get() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.get", false]], "get() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.get", false]], "get_access_log() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_access_log", false]], "get_accounts() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_accounts", false]], "get_endpoints() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_endpoints", false]], "get_health_events() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_health_events", false]], "get_key_policy() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_key_policy", false]], "get_load_balancer() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_load_balancer", false]], "get_metrics() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_metrics", false]], "get_options() (in module celpy.__main__)": [[0, "celpy.__main__.get_options", false]], "get_orgids() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_orgids", false]], "get_protocols() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_protocols", false]], "get_raw_health_events() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_raw_health_events", false]], "get_raw_metrics() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_raw_metrics", false]], "get_related_ids() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_ids", false]], "get_related_igws() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_igws", false]], "get_related_kms_keys() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_kms_keys", false]], "get_related_nat_gateways() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_nat_gateways", false]], "get_related_security_configs() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_security_configs", false]], "get_related_sgs() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_sgs", false]], "get_related_subnets() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_subnets", false]], "get_related_vpc() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_related_vpc", false]], "get_resource_policy() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_resource_policy", false]], "get_vpces() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_vpces", false]], "get_vpcs() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.get_vpcs", false]], "getdate() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getDate", false]], "getdayofmonth() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getDayOfMonth", false]], "getdayofweek() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getDayOfWeek", false]], "getdayofyear() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getDayOfYear", false]], "getfullyear() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getFullYear", false]], "gethours() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.getHours", false]], "gethours() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getHours", false]], "getmilliseconds() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.getMilliseconds", false]], "getmilliseconds() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getMilliseconds", false]], "getminutes() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.getMinutes", false]], "getminutes() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getMinutes", false]], "getmonth() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getMonth", false]], "getseconds() (celpy.celtypes.durationtype method)": [[0, "celpy.celtypes.DurationType.getSeconds", false]], "getseconds() (celpy.celtypes.timestamptype method)": [[0, "celpy.celtypes.TimestampType.getSeconds", false]], "gherkinize": [[4, "module-gherkinize", false]], "glob() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.glob", false]], "home": [[2, "index-0", false], [2, "index-1", false]], "ident() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.ident", false]], "ident() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.ident", false]], "ident_arg() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.ident_arg", false]], "ident_arg() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.ident_arg", false]], "ident_arg() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.ident_arg", false]], "ident_pat (celpy.evaluation.namecontainer attribute)": [[0, "celpy.evaluation.NameContainer.ident_pat", false]], "ident_value() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.ident_value", false]], "image() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.image", false]], "int32value (class in celpy.__init__)": [[0, "celpy.__init__.Int32Value", false]], "int64() (in module celpy.celtypes)": [[0, "celpy.celtypes.int64", false]], "interpretedrunner (class in celpy.__init__)": [[0, "celpy.__init__.InterpretedRunner", false]], "intersect() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.intersect", false]], "intro (celpy.__main__.cel_repl attribute)": [[0, "celpy.__main__.CEL_REPL.intro", false]], "inttype (class in celpy.celtypes)": [[0, "celpy.celtypes.IntType", false]], "ipv4network (class in celpy.c7nlib)": [[0, "celpy.c7nlib.IPv4Network", false]], "jmes_path() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.jmes_path", false]], "jmes_path_map() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.jmes_path_map", false]], "json_to_cel() (in module celpy.adapter)": [[0, "celpy.adapter.json_to_cel", false]], "key() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.key", false]], "kms_alias() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.kms_alias", false]], "kms_key() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.kms_key", false]], "list_lit() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.list_lit", false]], "list_lit() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.list_lit", false]], "listtype (class in celpy.celtypes)": [[0, "celpy.celtypes.ListType", false]], "literal() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.literal", false]], "literal() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.literal", false]], "literal() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.literal", false]], "load_annotations() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.load_annotations", false]], "load_values() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.load_values", false]], "logger (celpy.__main__.cel_repl attribute)": [[0, "celpy.__main__.CEL_REPL.logger", false]], "logger (celpy.evaluation.evaluator attribute)": [[0, "celpy.evaluation.Evaluator.logger", false]], "logger (celpy.evaluation.namecontainer attribute)": [[0, "celpy.evaluation.NameContainer.logger", false]], "logger (celpy.evaluation.transpiler attribute)": [[0, "celpy.evaluation.Transpiler.logger", false]], "logical_and() (in module celpy.celtypes)": [[0, "celpy.celtypes.logical_and", false]], "logical_condition() (in module celpy.celtypes)": [[0, "celpy.celtypes.logical_condition", false]], "logical_not() (in module celpy.celtypes)": [[0, "celpy.celtypes.logical_not", false]], "logical_or() (in module celpy.celtypes)": [[0, "celpy.celtypes.logical_or", false]], "macro_all() (in module celpy.evaluation)": [[0, "celpy.evaluation.macro_all", false]], "macro_exists() (in module celpy.evaluation)": [[0, "celpy.evaluation.macro_exists", false]], "macro_exists_one() (in module celpy.evaluation)": [[0, "celpy.evaluation.macro_exists_one", false]], "macro_filter() (in module celpy.evaluation)": [[0, "celpy.evaluation.macro_filter", false]], "macro_has_eval() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.macro_has_eval", false]], "macro_map() (in module celpy.evaluation)": [[0, "celpy.evaluation.macro_map", false]], "main() (in module celpy.__main__)": [[0, "celpy.__main__.main", false]], "map_lit() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.map_lit", false]], "map_lit() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.map_lit", false]], "mapinits() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.mapinits", false]], "mapinits() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.mapinits", false]], "mapinits() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.mapinits", false]], "maptype (class in celpy.celtypes)": [[0, "celpy.celtypes.MapType", false]], "marked_key() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.marked_key", false]], "maxseconds (celpy.celtypes.durationtype attribute)": [[0, "celpy.celtypes.DurationType.MaxSeconds", false]], "member() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.member", false]], "member() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.member", false]], "member_dot() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.member_dot", false]], "member_dot() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.member_dot", false]], "member_dot() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.member_dot", false]], "member_dot_arg() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.member_dot_arg", false]], "member_dot_arg() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.member_dot_arg", false]], "member_dot_arg() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.member_dot_arg", false]], "member_dot_arg() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.member_dot_arg", false]], "member_index() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.member_index", false]], "member_index() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.member_index", false]], "member_index() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.member_index", false]], "member_object() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.member_object", false]], "member_object() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.member_object", false]], "member_object() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.member_object", false]], "messagetype (class in celpy.celtypes)": [[0, "celpy.celtypes.MessageType", false]], "method_eval() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.method_eval", false]], "minseconds (celpy.celtypes.durationtype attribute)": [[0, "celpy.celtypes.DurationType.MinSeconds", false]], "module": [[0, "module-celpy.__init__", false], [0, "module-celpy.__main__", false], [0, "module-celpy.adapter", false], [0, "module-celpy.c7nlib", false], [0, "module-celpy.celparser", false], [0, "module-celpy.celtypes", false], [0, "module-celpy.evaluation", false], [4, "module-features.steps.c7n_integration", false], [4, "module-features.steps.cli_binding", false], [4, "module-features.steps.integration_binding", false], [4, "module-gherkinize", false]], "multiplication() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.multiplication", false]], "multiplication() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.multiplication", false]], "multiplication() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.multiplication", false]], "multiplication_div() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.multiplication_div", false]], "multiplication_mod() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.multiplication_mod", false]], "multiplication_mul() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.multiplication_mul", false]], "namecontainer (class in celpy.evaluation)": [[0, "celpy.evaluation.NameContainer", false]], "namecontainer.notfound": [[0, "celpy.evaluation.NameContainer.NotFound", false]], "nanosecondspersecond (celpy.celtypes.durationtype attribute)": [[0, "celpy.celtypes.DurationType.NanosecondsPerSecond", false]], "nested_activation() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.nested_activation", false]], "new_activation() (celpy.__init__.runner method)": [[0, "celpy.__init__.Runner.new_activation", false]], "normalize() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.normalize", false]], "nulltype (class in celpy.celtypes)": [[0, "celpy.celtypes.NullType", false]], "operator_in() (in module celpy.evaluation)": [[0, "celpy.evaluation.operator_in", false]], "packagetype (class in celpy.celtypes)": [[0, "celpy.celtypes.PackageType", false]], "paren_expr() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.paren_expr", false]], "paren_expr() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.paren_expr", false]], "parent_iter() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.parent_iter", false]], "parse() (celpy.celparser.celparser method)": [[0, "celpy.celparser.CELParser.parse", false]], "parse_cidr() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.parse_cidr", false]], "parse_text() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.parse_text", false]], "phase1transpiler (class in celpy.evaluation)": [[0, "celpy.evaluation.Phase1Transpiler", false]], "phase2transpiler (class in celpy.evaluation)": [[0, "celpy.evaluation.Phase2Transpiler", false]], "preloop() (celpy.__main__.cel_repl method)": [[0, "celpy.__main__.CEL_REPL.preloop", false]], "present() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.present", false]], "primary() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.primary", false]], "primary() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.primary", false]], "process_json_doc() (in module celpy.__main__)": [[0, "celpy.__main__.process_json_doc", false]], "program() (celpy.__init__.environment method)": [[0, "celpy.__init__.Environment.program", false]], "prompt (celpy.__main__.cel_repl attribute)": [[0, "celpy.__main__.CEL_REPL.prompt", false]], "python-tools/gherkinize.py-[-o-output]-[-sv]-source command line option": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-arg-source", false], [4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-o", false], [4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-s", false], [4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-v", false]], "referent (class in celpy.evaluation)": [[0, "celpy.evaluation.Referent", false]], "relation() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation", false]], "relation() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.relation", false]], "relation() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.relation", false]], "relation_eq() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_eq", false]], "relation_ge() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_ge", false]], "relation_gt() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_gt", false]], "relation_in() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_in", false]], "relation_le() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_le", false]], "relation_lt() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_lt", false]], "relation_ne() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.relation_ne", false]], "resolve_function() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.resolve_function", false]], "resolve_name() (celpy.evaluation.namecontainer method)": [[0, "celpy.evaluation.NameContainer.resolve_name", false]], "resolve_variable() (celpy.evaluation.activation method)": [[0, "celpy.evaluation.Activation.resolve_variable", false]], "resource_schedule() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.resource_schedule", false]], "result() (in module celpy.evaluation)": [[0, "celpy.evaluation.result", false]], "runner (class in celpy.__init__)": [[0, "celpy.__init__.Runner", false]], "scale (celpy.celtypes.durationtype attribute)": [[0, "celpy.celtypes.DurationType.scale", false]], "security_group() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.security_group", false]], "set_activation() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.set_activation", false]], "shield_protection() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.shield_protection", false]], "shield_subscription() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.shield_subscription", false]], "size_parse_cidr() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.size_parse_cidr", false]], "source": [[4, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-arg-source", false]], "stat() (in module celpy.__main__)": [[0, "celpy.__main__.stat", false]], "statements() (celpy.evaluation.phase2transpiler method)": [[0, "celpy.evaluation.Phase2Transpiler.statements", false]], "stringtype (class in celpy.celtypes)": [[0, "celpy.celtypes.StringType", false]], "sub_evaluator() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.sub_evaluator", false]], "subnet() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.subnet", false]], "subst() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.subst", false]], "tags_for() (gherkinize.config method)": [[4, "gherkinize.Config.tags_for", false]], "text_from() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.text_from", false]], "the_activation (in module celpy.evaluation)": [[0, "celpy.evaluation.the_activation", false]], "timestamptype (class in celpy.celtypes)": [[0, "celpy.celtypes.TimestampType", false]], "to_python() (celpy.adapter.celjsonencoder static method)": [[0, "celpy.adapter.CELJSONEncoder.to_python", false]], "trace() (in module celpy.evaluation)": [[0, "celpy.evaluation.trace", false]], "transpile() (celpy.evaluation.transpiler method)": [[0, "celpy.evaluation.Transpiler.transpile", false]], "transpiler (class in celpy.evaluation)": [[0, "celpy.evaluation.Transpiler", false]], "transpilertree (class in celpy.evaluation)": [[0, "celpy.evaluation.TranspilerTree", false]], "tree_dump() (in module celpy.celparser)": [[0, "celpy.celparser.tree_dump", false]], "tree_node_class (celpy.__init__.compiledrunner attribute)": [[0, "celpy.__init__.CompiledRunner.tree_node_class", false]], "tree_node_class (celpy.__init__.runner attribute)": [[0, "celpy.__init__.Runner.tree_node_class", false]], "type_matched() (in module celpy.celtypes)": [[0, "celpy.celtypes.type_matched", false]], "typetype (class in celpy.celtypes)": [[0, "celpy.celtypes.TypeType", false]], "tz_aliases (celpy.celtypes.timestamptype attribute)": [[0, "celpy.celtypes.TimestampType.TZ_ALIASES", false]], "tz_name_lookup() (celpy.celtypes.timestamptype class method)": [[0, "celpy.celtypes.TimestampType.tz_name_lookup", false]], "tz_offset_parse() (celpy.celtypes.timestamptype class method)": [[0, "celpy.celtypes.TimestampType.tz_offset_parse", false]], "tz_parse() (celpy.celtypes.timestamptype static method)": [[0, "celpy.celtypes.TimestampType.tz_parse", false]], "uint64() (in module celpy.celtypes)": [[0, "celpy.celtypes.uint64", false]], "uinttype (class in celpy.celtypes)": [[0, "celpy.celtypes.UintType", false]], "unary() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.unary", false]], "unary() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.unary", false]], "unary() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.unary", false]], "unary_neg() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.unary_neg", false]], "unary_not() (celpy.celparser.dumpast method)": [[0, "celpy.celparser.DumpAST.unary_not", false]], "unique_size() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.unique_size", false]], "valid_key_type() (celpy.celtypes.maptype static method)": [[0, "celpy.celtypes.MapType.valid_key_type", false]], "value (celpy.evaluation.referent property)": [[0, "celpy.evaluation.Referent.value", false]], "value_from() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.value_from", false]], "version() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.version", false]], "visit() (celpy.evaluation.phase1transpiler method)": [[0, "celpy.evaluation.Phase1Transpiler.visit", false]], "visit_children() (celpy.evaluation.evaluator method)": [[0, "celpy.evaluation.Evaluator.visit_children", false]], "vpc() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.vpc", false]], "web_acls() (in module celpy.c7nlib)": [[0, "celpy.c7nlib.web_acls", false]], "with_traceback() (celpy.evaluation.celevalerror method)": [[0, "celpy.evaluation.CELEvalError.with_traceback", false]]}, "objects": {"": [[4, 0, 0, "-", "gherkinize"]], "celpy": [[0, 0, 0, "-", "__init__"], [0, 0, 0, "-", "__main__"], [0, 0, 0, "-", "adapter"], [0, 0, 0, "-", "c7nlib"], [0, 0, 0, "-", "celparser"], [0, 0, 0, "-", "celtypes"], [0, 0, 0, "-", "evaluation"], [2, 8, 1, "cmdoption-celpy-a", "--arg"], [2, 8, 1, "cmdoption-celpy-b", "--boolean"], [2, 8, 1, "cmdoption-celpy-f", "--format"], [2, 8, 1, "cmdoption-celpy-i", "--interactive"], [2, 8, 1, "cmdoption-celpy-d", "--json-document"], [2, 8, 1, "cmdoption-celpy-p", "--json-package"], [2, 8, 1, "cmdoption-celpy-n", "--null-input"], [2, 8, 1, "cmdoption-celpy-s", "--slurp"], [2, 8, 1, "cmdoption-celpy-a", "-a"], [2, 8, 1, "cmdoption-celpy-b", "-b"], [2, 8, 1, "cmdoption-celpy-d", "-d"], [2, 8, 1, "cmdoption-celpy-f", "-f"], [2, 8, 1, "cmdoption-celpy-i", "-i"], [2, 8, 1, "cmdoption-celpy-n", "-n"], [2, 8, 1, "cmdoption-celpy-p", "-p"], [2, 8, 1, "cmdoption-celpy-s", "-s"], [2, 8, 1, "cmdoption-celpy-arg-expr", "expr"]], "celpy.__init__": [[0, 1, 1, "", "CompiledRunner"], [0, 1, 1, "", "Environment"], [0, 1, 1, "", "Int32Value"], [0, 1, 1, "", "InterpretedRunner"], [0, 1, 1, "", "Runner"]], "celpy.__init__.CompiledRunner": [[0, 2, 1, "", "__abstractmethods__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "evaluate"], [0, 2, 1, "", "tree_node_class"]], "celpy.__init__.Environment": [[0, 3, 1, "", "__init__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "compile"], [0, 3, 1, "", "program"]], "celpy.__init__.Int32Value": [[0, 3, 1, "", "__new__"]], "celpy.__init__.InterpretedRunner": [[0, 2, 1, "", "__abstractmethods__"], [0, 3, 1, "", "evaluate"]], "celpy.__init__.Runner": [[0, 2, 1, "", "__abstractmethods__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "evaluate"], [0, 3, 1, "", "new_activation"], [0, 2, 1, "", "tree_node_class"]], "celpy.__main__": [[0, 1, 1, "", "CEL_REPL"], [0, 4, 1, "", "arg_type_value"], [0, 4, 1, "", "get_options"], [0, 4, 1, "", "main"], [0, 4, 1, "", "process_json_doc"], [0, 4, 1, "", "stat"]], "celpy.__main__.CEL_REPL": [[0, 3, 1, "", "cel_eval"], [0, 3, 1, "", "default"], [0, 3, 1, "", "do_EOF"], [0, 3, 1, "", "do_bye"], [0, 3, 1, "", "do_exit"], [0, 3, 1, "", "do_quit"], [0, 3, 1, "", "do_set"], [0, 3, 1, "", "do_show"], [0, 2, 1, "", "intro"], [0, 2, 1, "", "logger"], [0, 3, 1, "", "preloop"], [0, 2, 1, "", "prompt"]], "celpy.adapter": [[0, 1, 1, "", "CELJSONDecoder"], [0, 1, 1, "", "CELJSONEncoder"], [0, 4, 1, "", "json_to_cel"]], "celpy.adapter.CELJSONDecoder": [[0, 3, 1, "", "decode"]], "celpy.adapter.CELJSONEncoder": [[0, 3, 1, "", "default"], [0, 3, 1, "", "encode"], [0, 3, 1, "", "to_python"]], "celpy.c7nlib": [[0, 1, 1, "", "C7NContext"], [0, 1, 1, "", "C7N_Interpreted_Runner"], [0, 1, 1, "", "ComparableVersion"], [0, 1, 1, "", "IPv4Network"], [0, 4, 1, "", "absent"], [0, 4, 1, "", "all_dbsubenet_groups"], [0, 4, 1, "", "all_images"], [0, 4, 1, "", "all_instance_profiles"], [0, 4, 1, "", "all_launch_configuration_names"], [0, 4, 1, "", "all_scan_groups"], [0, 4, 1, "", "all_service_roles"], [0, 4, 1, "", "all_snapshots"], [0, 4, 1, "", "arn_split"], [0, 4, 1, "", "credentials"], [0, 4, 1, "", "describe_db_snapshot_attributes"], [0, 4, 1, "", "describe_subscription_filters"], [0, 4, 1, "", "difference"], [0, 4, 1, "", "flow_logs"], [0, 4, 1, "", "get_access_log"], [0, 4, 1, "", "get_accounts"], [0, 4, 1, "", "get_endpoints"], [0, 4, 1, "", "get_health_events"], [0, 4, 1, "", "get_key_policy"], [0, 4, 1, "", "get_load_balancer"], [0, 4, 1, "", "get_metrics"], [0, 4, 1, "", "get_orgids"], [0, 4, 1, "", "get_protocols"], [0, 4, 1, "", "get_raw_health_events"], [0, 4, 1, "", "get_raw_metrics"], [0, 4, 1, "", "get_related_ids"], [0, 4, 1, "", "get_related_igws"], [0, 4, 1, "", "get_related_kms_keys"], [0, 4, 1, "", "get_related_nat_gateways"], [0, 4, 1, "", "get_related_security_configs"], [0, 4, 1, "", "get_related_sgs"], [0, 4, 1, "", "get_related_subnets"], [0, 4, 1, "", "get_related_vpc"], [0, 4, 1, "", "get_resource_policy"], [0, 4, 1, "", "get_vpces"], [0, 4, 1, "", "get_vpcs"], [0, 4, 1, "", "glob"], [0, 4, 1, "", "image"], [0, 4, 1, "", "intersect"], [0, 4, 1, "", "jmes_path"], [0, 4, 1, "", "jmes_path_map"], [0, 4, 1, "", "key"], [0, 4, 1, "", "kms_alias"], [0, 4, 1, "", "kms_key"], [0, 4, 1, "", "marked_key"], [0, 4, 1, "", "normalize"], [0, 4, 1, "", "parse_cidr"], [0, 4, 1, "", "parse_text"], [0, 4, 1, "", "present"], [0, 4, 1, "", "resource_schedule"], [0, 4, 1, "", "security_group"], [0, 4, 1, "", "shield_protection"], [0, 4, 1, "", "shield_subscription"], [0, 4, 1, "", "size_parse_cidr"], [0, 4, 1, "", "subnet"], [0, 4, 1, "", "subst"], [0, 4, 1, "", "text_from"], [0, 4, 1, "", "unique_size"], [0, 4, 1, "", "value_from"], [0, 4, 1, "", "version"], [0, 4, 1, "", "vpc"], [0, 4, 1, "", "web_acls"]], "celpy.c7nlib.C7NContext": [[0, 3, 1, "", "__enter__"], [0, 3, 1, "", "__exit__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "__repr__"]], "celpy.c7nlib.C7N_Interpreted_Runner": [[0, 2, 1, "", "__abstractmethods__"], [0, 3, 1, "", "evaluate"]], "celpy.c7nlib.ComparableVersion": [[0, 3, 1, "", "__eq__"], [0, 2, 1, "", "__hash__"]], "celpy.c7nlib.IPv4Network": [[0, 3, 1, "", "__contains__"], [0, 3, 1, "", "contains"]], "celpy.celparser": [[0, 5, 1, "", "CELParseError"], [0, 1, 1, "", "CELParser"], [0, 1, 1, "", "DumpAST"], [0, 4, 1, "", "tree_dump"]], "celpy.celparser.CELParseError": [[0, 3, 1, "", "__init__"]], "celpy.celparser.CELParser": [[0, 2, 1, "", "CEL_PARSER"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "ambiguous_literals"], [0, 3, 1, "", "error_text"], [0, 3, 1, "", "parse"]], "celpy.celparser.DumpAST": [[0, 3, 1, "", "__init__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "addition"], [0, 3, 1, "", "addition_add"], [0, 3, 1, "", "addition_sub"], [0, 3, 1, "", "conditionaland"], [0, 3, 1, "", "conditionalor"], [0, 3, 1, "", "display"], [0, 3, 1, "", "dot_ident"], [0, 3, 1, "", "dot_ident_arg"], [0, 3, 1, "", "expr"], [0, 3, 1, "", "exprlist"], [0, 3, 1, "", "fieldinits"], [0, 3, 1, "", "ident"], [0, 3, 1, "", "ident_arg"], [0, 3, 1, "", "list_lit"], [0, 3, 1, "", "literal"], [0, 3, 1, "", "map_lit"], [0, 3, 1, "", "mapinits"], [0, 3, 1, "", "member_dot"], [0, 3, 1, "", "member_dot_arg"], [0, 3, 1, "", "member_index"], [0, 3, 1, "", "member_object"], [0, 3, 1, "", "multiplication"], [0, 3, 1, "", "multiplication_div"], [0, 3, 1, "", "multiplication_mod"], [0, 3, 1, "", "multiplication_mul"], [0, 3, 1, "", "paren_expr"], [0, 3, 1, "", "relation"], [0, 3, 1, "", "relation_eq"], [0, 3, 1, "", "relation_ge"], [0, 3, 1, "", "relation_gt"], [0, 3, 1, "", "relation_in"], [0, 3, 1, "", "relation_le"], [0, 3, 1, "", "relation_lt"], [0, 3, 1, "", "relation_ne"], [0, 3, 1, "", "unary"], [0, 3, 1, "", "unary_neg"], [0, 3, 1, "", "unary_not"]], "celpy.celtypes": [[0, 1, 1, "", "BoolType"], [0, 1, 1, "", "BytesType"], [0, 1, 1, "", "DoubleType"], [0, 1, 1, "", "DurationType"], [0, 1, 1, "", "FunctionType"], [0, 1, 1, "", "IntType"], [0, 1, 1, "", "ListType"], [0, 1, 1, "", "MapType"], [0, 1, 1, "", "MessageType"], [0, 1, 1, "", "NullType"], [0, 1, 1, "", "PackageType"], [0, 1, 1, "", "StringType"], [0, 1, 1, "", "TimestampType"], [0, 1, 1, "", "TypeType"], [0, 1, 1, "", "UintType"], [0, 4, 1, "", "int64"], [0, 4, 1, "", "logical_and"], [0, 4, 1, "", "logical_condition"], [0, 4, 1, "", "logical_not"], [0, 4, 1, "", "logical_or"], [0, 4, 1, "", "type_matched"], [0, 4, 1, "", "uint64"]], "celpy.celtypes.BoolType": [[0, 3, 1, "", "__hash__"], [0, 3, 1, "", "__neg__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__str__"]], "celpy.celtypes.BytesType": [[0, 3, 1, "", "__new__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "contains"]], "celpy.celtypes.DoubleType": [[0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__hash__"], [0, 3, 1, "", "__mod__"], [0, 3, 1, "", "__ne__"], [0, 3, 1, "", "__neg__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__rmod__"], [0, 3, 1, "", "__rtruediv__"], [0, 3, 1, "", "__str__"], [0, 3, 1, "", "__truediv__"]], "celpy.celtypes.DurationType": [[0, 2, 1, "", "MaxSeconds"], [0, 2, 1, "", "MinSeconds"], [0, 2, 1, "", "NanosecondsPerSecond"], [0, 3, 1, "", "__add__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__radd__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__str__"], [0, 3, 1, "", "getHours"], [0, 3, 1, "", "getMilliseconds"], [0, 3, 1, "", "getMinutes"], [0, 3, 1, "", "getSeconds"], [0, 2, 1, "", "scale"]], "celpy.celtypes.FunctionType": [[0, 3, 1, "", "__call__"]], "celpy.celtypes.IntType": [[0, 3, 1, "", "__add__"], [0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__floordiv__"], [0, 3, 1, "", "__ge__"], [0, 3, 1, "", "__gt__"], [0, 3, 1, "", "__hash__"], [0, 3, 1, "", "__le__"], [0, 3, 1, "", "__lt__"], [0, 3, 1, "", "__mod__"], [0, 3, 1, "", "__mul__"], [0, 3, 1, "", "__ne__"], [0, 3, 1, "", "__neg__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__radd__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__rfloordiv__"], [0, 3, 1, "", "__rmod__"], [0, 3, 1, "", "__rmul__"], [0, 3, 1, "", "__rsub__"], [0, 3, 1, "", "__rtruediv__"], [0, 3, 1, "", "__str__"], [0, 3, 1, "", "__sub__"], [0, 3, 1, "", "__truediv__"]], "celpy.celtypes.ListType": [[0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__ge__"], [0, 3, 1, "", "__gt__"], [0, 2, 1, "", "__hash__"], [0, 3, 1, "", "__le__"], [0, 3, 1, "", "__lt__"], [0, 3, 1, "", "__ne__"], [0, 2, 1, "", "__orig_bases__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "contains"]], "celpy.celtypes.MapType": [[0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__getitem__"], [0, 2, 1, "", "__hash__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "__ne__"], [0, 2, 1, "", "__orig_bases__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "contains"], [0, 3, 1, "", "get"], [0, 3, 1, "", "valid_key_type"]], "celpy.celtypes.MessageType": [[0, 3, 1, "", "__init__"], [0, 2, 1, "", "__parameters__"]], "celpy.celtypes.NullType": [[0, 3, 1, "", "__eq__"], [0, 2, 1, "", "__hash__"], [0, 3, 1, "", "__ne__"]], "celpy.celtypes.PackageType": [[0, 2, 1, "", "__parameters__"]], "celpy.celtypes.StringType": [[0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__hash__"], [0, 3, 1, "", "__ne__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "contains"]], "celpy.celtypes.TimestampType": [[0, 2, 1, "", "TZ_ALIASES"], [0, 3, 1, "", "__add__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__radd__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__str__"], [0, 3, 1, "", "__sub__"], [0, 3, 1, "", "getDate"], [0, 3, 1, "", "getDayOfMonth"], [0, 3, 1, "", "getDayOfWeek"], [0, 3, 1, "", "getDayOfYear"], [0, 3, 1, "", "getFullYear"], [0, 3, 1, "", "getHours"], [0, 3, 1, "", "getMilliseconds"], [0, 3, 1, "", "getMinutes"], [0, 3, 1, "", "getMonth"], [0, 3, 1, "", "getSeconds"], [0, 3, 1, "", "tz_name_lookup"], [0, 3, 1, "", "tz_offset_parse"], [0, 3, 1, "", "tz_parse"]], "celpy.celtypes.TypeType": [[0, 3, 1, "", "__new__"]], "celpy.celtypes.UintType": [[0, 3, 1, "", "__add__"], [0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__floordiv__"], [0, 3, 1, "", "__hash__"], [0, 3, 1, "", "__mod__"], [0, 3, 1, "", "__mul__"], [0, 3, 1, "", "__ne__"], [0, 3, 1, "", "__neg__"], [0, 3, 1, "", "__new__"], [0, 3, 1, "", "__radd__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__rfloordiv__"], [0, 3, 1, "", "__rmod__"], [0, 3, 1, "", "__rmul__"], [0, 3, 1, "", "__rsub__"], [0, 3, 1, "", "__rtruediv__"], [0, 3, 1, "", "__str__"], [0, 3, 1, "", "__sub__"], [0, 3, 1, "", "__truediv__"]], "celpy.evaluation": [[0, 1, 1, "", "Activation"], [0, 5, 1, "", "CELEvalError"], [0, 5, 1, "", "CELSyntaxError"], [0, 5, 1, "", "CELUnsupportedError"], [0, 1, 1, "", "Evaluator"], [0, 1, 1, "", "NameContainer"], [0, 1, 1, "", "Phase1Transpiler"], [0, 1, 1, "", "Phase2Transpiler"], [0, 1, 1, "", "Referent"], [0, 1, 1, "", "Transpiler"], [0, 1, 1, "", "TranspilerTree"], [0, 4, 1, "", "bool_eq"], [0, 4, 1, "", "bool_ge"], [0, 4, 1, "", "bool_gt"], [0, 4, 1, "", "bool_le"], [0, 4, 1, "", "bool_lt"], [0, 4, 1, "", "bool_ne"], [0, 4, 1, "", "boolean"], [0, 4, 1, "", "celbytes"], [0, 4, 1, "", "celstr"], [0, 4, 1, "", "eval_error"], [0, 4, 1, "", "function_contains"], [0, 4, 1, "", "function_endsWith"], [0, 4, 1, "", "function_getDate"], [0, 4, 1, "", "function_getDayOfMonth"], [0, 4, 1, "", "function_getDayOfWeek"], [0, 4, 1, "", "function_getDayOfYear"], [0, 4, 1, "", "function_getFullYear"], [0, 4, 1, "", "function_getHours"], [0, 4, 1, "", "function_getMilliseconds"], [0, 4, 1, "", "function_getMinutes"], [0, 4, 1, "", "function_getMonth"], [0, 4, 1, "", "function_getSeconds"], [0, 4, 1, "", "function_matches"], [0, 4, 1, "", "function_size"], [0, 4, 1, "", "function_startsWith"], [0, 4, 1, "", "macro_all"], [0, 4, 1, "", "macro_exists"], [0, 4, 1, "", "macro_exists_one"], [0, 4, 1, "", "macro_filter"], [0, 4, 1, "", "macro_map"], [0, 4, 1, "", "operator_in"], [0, 4, 1, "", "result"], [0, 7, 1, "", "the_activation"], [0, 4, 1, "", "trace"]], "celpy.evaluation.Activation": [[0, 3, 1, "", "__getattr__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "clone"], [0, 3, 1, "", "get"], [0, 3, 1, "", "nested_activation"], [0, 3, 1, "", "resolve_function"], [0, 3, 1, "", "resolve_variable"]], "celpy.evaluation.CELEvalError": [[0, 3, 1, "", "__add__"], [0, 3, 1, "", "__call__"], [0, 3, 1, "", "__eq__"], [0, 3, 1, "", "__floordiv__"], [0, 2, 1, "", "__hash__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "__mod__"], [0, 3, 1, "", "__mul__"], [0, 3, 1, "", "__neg__"], [0, 3, 1, "", "__pow__"], [0, 3, 1, "", "__radd__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "__rfloordiv__"], [0, 3, 1, "", "__rmod__"], [0, 3, 1, "", "__rmul__"], [0, 3, 1, "", "__rpow__"], [0, 3, 1, "", "__rsub__"], [0, 3, 1, "", "__rtruediv__"], [0, 3, 1, "", "__sub__"], [0, 3, 1, "", "__truediv__"], [0, 3, 1, "", "with_traceback"]], "celpy.evaluation.CELSyntaxError": [[0, 3, 1, "", "__init__"]], "celpy.evaluation.CELUnsupportedError": [[0, 3, 1, "", "__init__"]], "celpy.evaluation.Evaluator": [[0, 2, 1, "", "__abstractmethods__"], [0, 3, 1, "", "__init__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "addition"], [0, 3, 1, "", "build_macro_eval"], [0, 3, 1, "", "build_reduce_macro_eval"], [0, 3, 1, "", "build_ss_macro_eval"], [0, 3, 1, "", "conditionaland"], [0, 3, 1, "", "conditionalor"], [0, 3, 1, "", "evaluate"], [0, 3, 1, "", "expr"], [0, 3, 1, "", "exprlist"], [0, 3, 1, "", "fieldinits"], [0, 3, 1, "", "function_eval"], [0, 3, 1, "", "ident_value"], [0, 3, 1, "", "literal"], [0, 2, 1, "", "logger"], [0, 3, 1, "", "macro_has_eval"], [0, 3, 1, "", "mapinits"], [0, 3, 1, "", "member"], [0, 3, 1, "", "member_dot"], [0, 3, 1, "", "member_dot_arg"], [0, 3, 1, "", "member_index"], [0, 3, 1, "", "member_object"], [0, 3, 1, "", "method_eval"], [0, 3, 1, "", "multiplication"], [0, 3, 1, "", "primary"], [0, 3, 1, "", "relation"], [0, 3, 1, "", "set_activation"], [0, 3, 1, "", "sub_evaluator"], [0, 3, 1, "", "unary"], [0, 3, 1, "", "visit_children"]], "celpy.evaluation.NameContainer": [[0, 5, 1, "", "NotFound"], [0, 3, 1, "", "__init__"], [0, 2, 1, "", "__orig_bases__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "clone"], [0, 3, 1, "", "dict_find_name"], [0, 2, 1, "", "extended_name_path"], [0, 3, 1, "", "find_name"], [0, 3, 1, "", "get"], [0, 2, 1, "", "ident_pat"], [0, 3, 1, "", "load_annotations"], [0, 3, 1, "", "load_values"], [0, 2, 1, "", "logger"], [0, 3, 1, "", "parent_iter"], [0, 3, 1, "", "resolve_name"]], "celpy.evaluation.Phase1Transpiler": [[0, 3, 1, "", "__init__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "addition"], [0, 3, 1, "", "conditionaland"], [0, 3, 1, "", "conditionalor"], [0, 3, 1, "", "dot_ident"], [0, 3, 1, "", "dot_ident_arg"], [0, 3, 1, "", "expr"], [0, 3, 1, "", "exprlist"], [0, 3, 1, "", "fieldinits"], [0, 3, 1, "", "func_name"], [0, 3, 1, "", "ident"], [0, 3, 1, "", "ident_arg"], [0, 3, 1, "", "list_lit"], [0, 3, 1, "", "literal"], [0, 3, 1, "", "map_lit"], [0, 3, 1, "", "mapinits"], [0, 3, 1, "", "member"], [0, 3, 1, "", "member_dot"], [0, 3, 1, "", "member_dot_arg"], [0, 3, 1, "", "member_index"], [0, 3, 1, "", "member_object"], [0, 3, 1, "", "multiplication"], [0, 3, 1, "", "paren_expr"], [0, 3, 1, "", "primary"], [0, 3, 1, "", "relation"], [0, 3, 1, "", "unary"], [0, 3, 1, "", "visit"]], "celpy.evaluation.Phase2Transpiler": [[0, 3, 1, "", "__init__"], [0, 2, 1, "", "__parameters__"], [0, 3, 1, "", "conditionaland"], [0, 3, 1, "", "conditionalor"], [0, 3, 1, "", "expr"], [0, 3, 1, "", "ident_arg"], [0, 3, 1, "", "member_dot_arg"], [0, 3, 1, "", "statements"]], "celpy.evaluation.Referent": [[0, 3, 1, "", "__eq__"], [0, 2, 1, "", "__hash__"], [0, 3, 1, "", "__init__"], [0, 3, 1, "", "__repr__"], [0, 3, 1, "", "clone"], [0, 6, 1, "", "value"]], "celpy.evaluation.Transpiler": [[0, 3, 1, "", "__init__"], [0, 3, 1, "", "evaluate"], [0, 2, 1, "", "logger"], [0, 3, 1, "", "transpile"]], "celpy.evaluation.TranspilerTree": [[0, 3, 1, "", "__init__"], [0, 2, 1, "", "__parameters__"], [0, 2, 1, "", "children"], [0, 2, 1, "", "data"]], "features.steps": [[4, 0, 0, "-", "c7n_integration"], [4, 0, 0, "-", "cli_binding"], [4, 0, 0, "-", "integration_binding"]], "gherkinize": [[4, 1, 1, "", "Config"]], "gherkinize.Config": [[4, 3, 1, "", "__init__"], [4, 3, 1, "", "tags_for"]], "python-tools/gherkinize.py-[-o-output]-[-sv]-source": [[4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-o", "--output"], [4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-s", "--silent"], [4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-v", "--verbose"], [4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-o", "-o"], [4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-s", "-s"], [4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-v", "-v"], [4, 8, 1, "cmdoption-python-tools-gherkinize.py-o-output-sv-source-arg-source", "source"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"], "5": ["py", "exception", "Python exception"], "6": ["py", "property", "Python property"], "7": ["py", "data", "Python data"], "8": ["std", "cmdoption", "program option"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:method", "4": "py:function", "5": "py:exception", "6": "py:property", "7": "py:data", "8": "std:cmdoption"}, "terms": {"": [0, 1, 2, 3, 4, 7, 8], "0": [0, 1, 2, 4, 7], "00": 7, "001": 0, "002": 1, "01": 1, "011": 1, "01ab23cd": 1, "02": [0, 1], "03": 1, "03t16": 7, "03z": [2, 7], "04": [1, 7], "05": 1, "06": 0, "06t05": 7, "06t20": 2, "07": [1, 2, 7], "08": [1, 7], "084": 1, "09": 0, "0u": 4, "1": [0, 1, 2, 3, 4, 7], "10": [0, 1], "100": [1, 2], "1000": 1, "10000": 1, "1000000000": 0, "1004": 1, "101": 1, "1021": 1, "1023": 1, "10240": 1, "1026": 1, "103": 1, "1034": 1, "104": 1, "1041": 1, "1045": 1, "105": 1, "1057": 1, "106": 1, "1066": 1, "108": 1, "1080": 1, "10am": 1, "11": [1, 2], "111": 1, "1124": 1, "113": 2, "1144": 1, "115": 1, "116": 1, "117": 1, "1178": 1, "1180": 1, "1191": 1, "12": [1, 4], "121": 1, "1211": 1, "122": 1, "123": [0, 1, 7], "1232": 1, "1234567890": 0, "123u": 0, "125": 1, "127": [0, 1], "128": 1, "1295": 1, "12ab34cd": 1, "13": [2, 6], "131": 1, "132": 1, "1333": 1, "134": 1, "135": 2, "136": 1, "138": 0, "13t23": 0, "14": [0, 1], "140": 7, "1410": 1, "1415929203539825": 2, "1437": 1, "145": 1, "147": 1, "1474": 1, "149": 0, "1493": 1, "15": [1, 7], "1505": 1, "1513": 1, "154": 1, "1584": 1, "16": 1, "161": 1, "1613": 1, "162": 1, "167": 1, "16777234": 2, "1686": 1, "17": 1, "1704": 1, "171": 1, "1728": 1, "173": 1, "1779": 1, "178": 1, "1787": 1, "179": 1, "1793": 1, "1799": 1, "18": [0, 1], "182": 1, "183": 1, "184": 1, "18446744073709551615": 0, "185": 1, "189": 1, "19": 1, "190": 1, "194": 1, "1954": 1, "196": 1, "197": 1, "198": 1, "1e": 0, "1st": 1, "1u": 0, "2": [0, 1, 2], "20": 1, "2006": 2, "2009": 0, "2012": 1, "2016": 1, "2017": 1, "2018": 7, "2019": 1, "2020": 1, "2021": 1, "2025": 2, "203": 1, "2048": 1, "205": 1, "206": 1, "20z": 2, "21": [0, 1, 7], "212": 1, "21d": 1, "21z": 2, "22": 1, "223": 1, "2242": 1, "228": 1, "2292": 1, "23": [1, 7], "232": 1, "237": 1, "238": 1, "24": 1, "24h": 7, "24x5": 1, "25": 1, "250": 1, "2500000": 1, "256": 0, "257": 1, "26": 1, "262": 1, "268": 1, "27": [1, 2, 7], "273": 1, "277": [0, 1], "2788": 1, "27t18": 2, "28": 1, "285": 0, "29": 1, "293": 1, "299": 1, "2h45m": 0, "3": [0, 1, 2, 4, 6, 7], "30": [0, 1, 2], "300m": 0, "301": 1, "305": 1, "30z": 0, "31": [0, 2], "313": 1, "314": 1, "315576000000": 0, "317": 1, "318": 1, "32": 1, "325": 1, "329": 1, "34": 1, "341": 1, "341035": 2, "345": 1, "348": 1, "35": 1, "355": [0, 2], "35dai": 1, "36": 1, "3600": 0, "364": 1, "37": 1, "372": 1, "373": 1, "390": 1, "3a": 1, "4": [0, 1], "40": [1, 7], "400": 1, "402": 1, "408": 1, "409": 1, "4096": 2, "41": [1, 2], "412": 1, "413": 1, "42": [0, 1, 2, 8], "424": 1, "429": 1, "42u": 0, "43": 1, "431": 1, "4320": 2, "432u": 0, "436": 1, "438": 1, "443": 1, "448": 1, "45": 1, "453": 1, "455": 1, "456": 0, "47": [1, 7], "48": 1, "485": 1, "490": 1, "493": 1, "4d": 0, "5": [0, 1], "50": 1, "500": 7, "5000": 1, "505": 1, "5103": 1, "512": 1, "5120": 1, "514": 1, "516": 1, "52": 1, "54": 1, "548": 1, "549": 1, "55": 1, "556": 1, "562": 1, "563": 1, "567": 1, "569": 1, "57": 1, "575": 1, "5759": 7, "58": 1, "592": 1, "597": 1, "5h": 0, "6": [0, 1, 2], "60": [0, 1], "600": 7, "604": 1, "608": 1, "610": 1, "612000": 1, "615": 1, "619": 1, "622": 1, "628": 1, "63": 0, "64": [1, 7, 8], "643": 1, "644": 1, "65": 1, "656": 1, "659": 1, "66": 1, "662": 1, "666": 1, "667": 1, "676": 1, "69": 1, "692": 1, "6am": 1, "6f": 2, "6hr": 1, "6pm": 1, "7": [0, 1, 2], "70": 0, "711": 1, "720": 1, "729": 1, "739": 1, "74": 1, "744": 1, "748": 1, "758": 1, "767": 1, "78": 1, "786": 1, "791": 1, "7am": 1, "7pm": 1, "8": [1, 7], "80": 1, "806": 1, "8098": 1, "81": 1, "812": 1, "826": 1, "829": 1, "830985915492956": 2, "842": 1, "845": 1, "86": 1, "86400": [0, 1], "87": 1, "88": 1, "8x5": 1, "9": [0, 1], "90": 1, "92": 1, "9223372036854775807": 0, "9223372036854775808": 0, "93": 1, "932": 1, "934": 1, "94": 1, "97": 1, "98": 1, "987": 1, "988": 1, "99": 1, "9pm": 1, "A": [0, 1, 2, 4, 7, 8], "AND": 0, "And": [0, 2], "As": [0, 2, 7, 8], "At": [0, 8], "But": 0, "By": [0, 2], "For": [0, 1, 2, 4, 6, 7, 8], "If": [0, 1, 2, 3, 7, 8], "In": [0, 1, 2, 3, 4, 6, 7, 8], "It": [0, 1, 2, 7, 8], "NOT": [0, 1], "No": [0, 1, 4, 7, 8], "Not": [0, 1], "Of": 1, "On": [1, 7], "One": [0, 1], "Or": 0, "Such": 8, "THe": 2, "That": 0, "The": [1, 2, 3, 5, 6, 7], "Then": [0, 1, 4], "There": [0, 1, 2, 5, 7, 8], "These": [0, 1, 7, 8], "To": [0, 3, 7], "With": [0, 1], "_": [0, 7], "__abstractmethods__": 0, "__add__": 0, "__call__": [0, 7], "__contains__": 0, "__enter__": 0, "__eq__": 0, "__exit__": 0, "__floordiv__": 0, "__ge__": 0, "__getattr__": 0, "__getitem__": 0, "__gt__": 0, "__hash__": 0, "__init__": [0, 1, 4, 7, 8], "__isinstance__": 0, "__le__": 0, "__lt__": 0, "__main__": [5, 8], "__mod__": 0, "__mul__": 0, "__ne__": 0, "__neg__": 0, "__new__": 0, "__orig_bases__": 0, "__parameters__": 0, "__pow__": 0, "__radd__": 0, "__repr__": 0, "__rfloordiv__": 0, "__rmod__": 0, "__rmul__": 0, "__rpow__": 0, "__rsub__": 0, "__rtruediv__": 0, "__str__": 0, "__sub__": 0, "__traceback__": 0, "__truediv__": 0, "_a": 0, "_oper": 0, "_pull_ami_snapshot": [0, 1], "_pull_asg_imag": [0, 1], "_pull_asg_snapshot": [0, 1], "_pull_ec2_imag": [0, 1], "_w": 0, "a4": 4, "ab": 0, "abandond": 1, "abc": [0, 1], "abil": 2, "abl": [0, 1], "about": [1, 5, 7], "abov": [0, 1, 7], "absenc": 1, "absent": [0, 1], "absolut": 0, "abstract": [0, 7], "accept": [0, 1], "access": 0, "access_kei": 1, "accesskeysperuserquota": 1, "accesslog": 1, "account": [0, 7], "account_id": [0, 1], "account_shield_subscript": [0, 1], "accountaccesskeyspres": 1, "accountcredentialreport": 1, "accountmfaen": 1, "accountnumb": 1, "accountpasswordpolici": 1, "accounts_url": 1, "accountsigningcertificatespres": 1, "achiev": 2, "acl": 1, "aclawss3cidr": 1, "aclsubnetfilt": 1, "acm": [1, 7], "acquir": 1, "across": [1, 5], "act": 1, "action": [0, 1, 7], "action_d": [0, 1], "activ": [0, 1, 2, 7, 8], "actual": [0, 7], "ad": [0, 1, 4], "adapt": [5, 7, 8], "add": [0, 1, 3, 6, 8], "addit": [1, 4, 7, 8], "addition": [0, 1, 2, 7, 8], "addition_add": 0, "addition_sub": 0, "additionalproperti": 1, "addr": 1, "address": [0, 1], "adher": 1, "admin": 1, "administratoraccess": 1, "advanc": 1, "advantag": 2, "advisor": 1, "aes128": 1, "aes256": 1, "after": [0, 1], "ag": 7, "again": [0, 7], "against": [0, 1], "agefilt": 1, "agre": 0, "ahom": 2, "akward": 0, "alarm": 1, "alb": 1, "alblog": 1, "alert": 1, "alia": [0, 4], "alias": [0, 1], "aliasnam": 1, "all": [0, 2, 3, 4, 7, 8], "all_dbsubenet_group": [0, 1], "all_imag": [0, 1], "all_instance_profil": [0, 1], "all_launch_configuration_nam": [0, 1], "all_scan_group": [0, 1], "all_service_rol": [0, 1], "all_snapshot": [0, 1], "all_valu": 1, "alloc": 1, "allocatedstorag": 1, "allow": [0, 2, 7, 8], "allow_nan": 0, "allow_websit": 1, "allowalliampolici": 1, "almost": 0, "alon": [1, 8], "along": [0, 1], "alreadi": 0, "also": [0, 1, 2, 7, 8], "altern": [0, 1], "alwai": [0, 1, 8], "amazon": 1, "amazonaw": 1, "amazons3": 1, "ambigu": 0, "ambiguous_liter": 0, "america": 1, "ami": 0, "amicrossaccountfilt": 1, "among": [0, 1], "amort": 8, "an": [0, 1, 2, 4, 5, 7, 8], "analysi": 1, "analyt": 1, "analyz": 0, "ancient": 1, "ani": [0, 1, 2, 3, 4, 7, 8], "annot": [0, 1, 7, 8], "anoth": [0, 1, 2, 5, 7, 8], "anyof": 1, "ap": 1, "api": [1, 5, 8], "apigw": 1, "apikeyrequir": 1, "app": [1, 8], "appear": [0, 1], "appelb": [0, 1], "appelbdefaultvpcfilt": 1, "appelbhealthcheckprotocolmismatchfilt": 1, "appelblistenerfilt": 1, "appelbmetr": 1, "appelbtargetgroup": 1, "appelbtargetgroupdefaultvpcfilt": 1, "appelbtargetgroupfilt": 1, "append": 0, "appid": 1, "appli": [0, 1, 7], "applic": [0, 1, 2, 3, 5, 8], "applicationnam": 1, "approach": [7, 8], "appropri": [0, 7], "approxim": 0, "ar": [0, 1, 2, 4, 5, 7, 8], "arbitrari": 0, "architectur": [5, 6], "aren": [0, 1, 7], "arg": [0, 2, 7], "arg_name_arg": 7, "arg_type_valu": 0, "argument": [0, 7], "argv": 0, "arithmet": 2, "arithmetic_oper": 0, "arm64": 6, "arn": [0, 1], "arn_split": [0, 1], "around": [0, 1], "arrai": [0, 1, 4], "arriv": [1, 7], "ascii_cas": 4, "asg": [0, 1], "asid": 0, "assert": [0, 1, 7], "assign": [0, 1], "assoc": 1, "associ": [0, 1, 2, 7], "associatepublicipaddress": 1, "assum": [0, 1, 8], "assumerolepolicysizequota": 1, "assumpt": 1, "assur": [0, 4], "ast": [0, 2, 7, 8], "ast2": 0, "asv": 1, "asvredact": 1, "atm": 1, "atom": [0, 7], "atot": 2, "attach": [0, 1], "attachedinstancefilt": 1, "attachedpoliciespergroupquota": 1, "attachedpoliciesperrolequota": 1, "attachedpoliciesperuserquota": 1, "attachedvolum": 1, "attachmentcount": 1, "attack": 1, "attempt": [0, 1], "attr": 1, "attribit": 1, "attribut": [0, 2, 7], "attributesfilt": 1, "atyp": 7, "audit": 1, "augment": 1, "aurora": 1, "auth": 7, "author": 7, "auto": 1, "automat": 1, "autosc": 1, "autoscal": 1, "avail": [0, 2, 4], "aval": 1, "averag": [0, 1], "avoid": [0, 1, 2], "aw": [0, 1], "awar": 2, "aws_ebs_degraded_ebs_volume_perform": 1, "aws_ebs_volume_lost": 1, "awsec2": 1, "awslambda": 1, "ax": 2, "az1": 1, "azr": 1, "azur": 1, "b": [0, 2, 7], "ba": 1, "back": [0, 1], "backoff": 1, "backup": 1, "bad1": 7, "bad2": 7, "balanc": [1, 7], "base": [0, 1, 2, 5, 7, 8], "base_activ": 0, "base_funct": 0, "based_on": 0, "baseexcept": 0, "baselin": 1, "bash": 2, "basi": 1, "basic": [1, 4], "batch": 1, "baz": 0, "bc": 2, "beast": 0, "becaus": [0, 1, 2, 5, 7, 8], "becom": [0, 1, 2, 4, 8], "been": [0, 1, 8], "befor": [1, 2], "begin": 4, "behav": [0, 7], "behavior": [0, 1, 2], "being": [0, 1], "below": 0, "benchmark": [0, 4], "best": [0, 4], "better": [0, 1, 7], "between": [0, 1, 2, 7, 8], "binari": [0, 7], "bind": [0, 2, 4, 5, 8], "bind_nest": 4, "bind_vari": 0, "bindings_ext": 4, "bit": [1, 2, 5, 8], "blacklist": 1, "blob": [0, 1, 4, 7], "block": [0, 2], "block_ext": 4, "blockdevicemap": 1, "bn": 2, "bool": [0, 5, 7, 8], "bool_eq": 0, "bool_g": 0, "bool_gt": 0, "bool_l": 0, "bool_lit": 0, "bool_lt": 0, "bool_n": 0, "bool_valu": 0, "boolean": [0, 2, 5, 7], "boolean_liter": 4, "boolean_to_statu": 0, "booleangroupfilt": 7, "booltyp": [0, 7, 8], "boolvalu": 0, "both": [0, 1], "boto3": 1, "bottl": 0, "bottom": [0, 8], "bound": [0, 2, 7], "bracket": 1, "break": 0, "breakdown": 7, "bring": 1, "broken": 1, "broker": 1, "bucket": 0, "bucketencrypt": 1, "bucketnotificationfilt": 1, "buffer": 0, "build": [0, 1, 4, 7, 8], "build_macro_ev": 0, "build_reduce_macro_ev": 0, "build_ss_macro_ev": 0, "buildsecuritygroupfilt": 1, "buildsubnetfilt": 1, "buildvpcfilt": 1, "built": [0, 1, 2, 4, 7, 8], "bulki": 1, "bunch": 1, "burden": 2, "bye": 2, "byol": 1, "byt": 0, "byte": [0, 8], "bytes_lit": 0, "bytes_valu": 0, "bytestyp": [0, 8], "bytesvalu": 0, "c": [0, 2, 7], "c4": 8, "c7n": [5, 8], "c7n_interfac": 4, "c7n_interpreted_runn": [0, 1], "c7n_s3_policy_requir": 1, "c7ncontext": [0, 1], "c7nlib": [1, 3, 5, 7, 8], "cach": [0, 5, 8], "calcul": 2, "call": [0, 1], "callabl": [0, 8], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8], "cannot": [0, 1], "capabl": [0, 1, 2], "capacitydelta": 1, "capitalon": 1, "capon": 1, "captur": 0, "cardda_tagcompli": 1, "cardin": 1, "case": [0, 1, 2, 4, 6, 7, 8], "catalog": 4, "categori": [1, 7], "caught": 0, "caus": 0, "causesresourc": 1, "cbhfqv": 1, "cbr": 1, "cde": 1, "ce": 7, "cel": [0, 1, 4, 6, 7], "cel_activ": [0, 1], "cel_ast": [0, 1], "cel_env": [0, 1], "cel_ev": 0, "cel_expr": 0, "cel_funct": 7, "cel_gen": 0, "cel_object": 0, "cel_pars": 0, "cel_prgm": 0, "cel_program": 7, "cel_repl": 0, "cel_sourc": 7, "cel_test": 7, "cel_trac": [0, 2, 3], "celbyt": 0, "celevalerror": [0, 7, 8], "celfilt": [0, 5, 7], "celfilter_inst": 0, "celfunct": [0, 8], "celjsondecod": 0, "celjsonencod": 0, "celpars": [5, 8], "celparseerror": 0, "celpi": [1, 2, 3, 4, 5, 7, 8], "celstr": 0, "celsyntaxerror": [0, 7], "celtyp": [1, 2, 3, 4, 5, 7, 8], "celunsupportederror": 0, "central": [0, 7], "cert": 1, "certain": [0, 1], "certif": 1, "cet": 0, "cf": 1, "cfn": 1, "chain": [0, 8], "chainmap": [0, 8], "challeng": 4, "chang": [0, 1, 4, 7], "char": 7, "charact": [0, 2], "character": 0, "check": [0, 4, 7], "check_circular": 0, "check_custom_origin": 1, "checked_except": 0, "checker": 7, "child": 0, "childnr": 0, "children": 0, "choic": [0, 8], "choos": 0, "chosen": 0, "chunk": 1, "ci": 1, "cidr": 0, "cidr_contain": 0, "cidr_siz": [0, 1], "cidrblock": 1, "cipher": 1, "circuit": [0, 7], "cl": 0, "claim": 7, "class": [0, 1, 3, 4, 7, 8], "classic": 1, "classmethod": 0, "claus": [1, 4, 7], "clean": [1, 4], "clear": [1, 2], "cli": [0, 5, 8], "client": [0, 1], "clock": 1, "clone": 0, "close": [0, 1, 2, 7], "closur": 0, "cloud": [0, 1, 5, 8], "cloudform": 1, "cloudfront": [0, 1], "cloudhsm": 1, "cloudsearch": 1, "cloudtrailen": 1, "cloudwatch": [0, 1], "cluster": 1, "cm": 1, "cm6aws11": 1, "cmdbenviron": 1, "cmdloop": 0, "cml": 1, "co": 7, "code": [0, 1, 2, 4, 7, 8], "codebuild": 1, "codebuildproject": 1, "codecommit": 1, "codepipelin": 1, "coerc": 0, "coercion": [0, 7], "collabor": 0, "collect": [0, 1, 4, 8], "collis": [0, 1], "color": 1, "column": [0, 1], "com": [0, 1, 2, 4, 7], "combin": [0, 1, 5, 7], "come": [0, 1, 2], "command": [0, 2, 4, 6, 8], "comment": [1, 4], "common": [0, 7, 8], "commonli": 0, "commun": 1, "commut": 0, "compar": [0, 1, 2], "comparablevers": [0, 1], "comparison": [0, 1, 2, 4, 7], "compat": 0, "compil": [0, 1, 4, 6, 7], "compiledrunn": [0, 8], "complement": 1, "complet": [0, 7], "completekei": 0, "complex": [0, 1, 2, 5, 7, 8], "compli": 1, "compliant": [1, 7], "complic": [0, 7], "compon": [1, 3, 5, 7], "compos": [1, 7], "composit": 1, "compromis": 7, "comput": [0, 1, 2, 7, 8], "computeenviron": 1, "computesgfilt": 1, "computesubnetfilt": 1, "conceal": 1, "concept": [0, 7], "conceptu": 8, "concern": [0, 2], "concret": 0, "condit": [0, 1, 8], "conditionaland": 0, "conditionalor": 0, "conf": 4, "config": 4, "configen": 1, "configrul": 1, "configur": [1, 4, 5, 6], "conform": 4, "confus": 0, "connect": 1, "connectionsecuritygroupfilt": 1, "connectionsubnetfilt": 1, "consequ": 8, "consid": [0, 1, 8], "consider": 1, "consist": 0, "consol": [3, 4], "constant": 0, "constraint": 8, "construct": [0, 5, 7], "constructor": 0, "contain": [0, 1, 3, 4, 5, 7], "containerdefinit": 1, "content": [0, 4], "context": [2, 5, 7], "continu": 7, "control": 1, "convers": [0, 2, 4, 7, 8], "convert": [0, 1, 4, 7], "copi": [0, 1, 4], "core": [0, 1], "correct": 1, "correctli": 0, "cost": 8, "could": [0, 2, 7], "count": [0, 7], "countnumb": 1, "cours": 0, "cover": [0, 7], "coverag": 4, "cpp": 0, "cpu": 1, "cpuutil": [0, 1], "crash": 7, "creat": [0, 1, 4, 7, 8], "created": 1, "createdtim": 1, "creation": [0, 1], "creationd": 1, "creationtimestamp": 7, "credenti": 0, "credentialreport": [0, 1], "credentialreportmixin": [0, 1], "crossaccountaccess": 1, "crossaccountaccessfilt": [0, 1], "crossaccountaccessmixin": [0, 1], "crossaccountfilt": 1, "crossaccountp": 1, "crossregiontransf": 1, "crypto": 1, "csv": 1, "csv2dict": 1, "ct": 1, "ctl": 1, "current": [0, 1, 2, 4, 5, 7, 8], "custodian": [1, 5, 8], "custodian_asv": 1, "custodian_cleanup": 1, "custodian_downtim": 1, "custodian_invalid": 1, "custodian_invalid_asg": 1, "custodian_rds_offhours_ct": 1, "custodian_rds_offhours_et": 1, "custodian_rds_offhours_pt": 1, "custodian_res": 1, "custodian_s3_ns_templ": 1, "custodian_snapshot": 1, "custodian_statu": 1, "custodian_stop": 1, "custodian_tag": 1, "custom": 1, "cut": 0, "cw": 1, "d": [0, 1, 2, 3, 7], "dai": [0, 1], "daili": 1, "darwin": 6, "data": [0, 2, 5, 7, 8], "databas": [0, 1], "databaseconnect": 1, "dataev": 1, "datapipelin": 1, "datapoint": 1, "date": [0, 1], "datetim": [0, 1, 7, 8], "dateutil": 0, "dax": 1, "daxsecuritygroupfilt": 1, "daxsubnetfilt": 1, "daylight": 1, "dbclusteridentifi": 1, "dbsubnetgroup": 1, "dbsubnetgroupnam": 1, "dd": 1, "deal": 0, "debug": [0, 3, 4], "decid": 7, "decim": [0, 2], "decis": 1, "decl": [0, 1, 7], "declar": [0, 1, 7], "decod": 0, "decompos": 0, "decomposit": 0, "decor": [0, 3, 7], "deduc": 0, "deep": 0, "deepli": 0, "def": [0, 1, 7], "default": [0, 2, 4, 7, 8], "default_tz": 1, "default_vpc": 1, "defaultvpc": 1, "defer": 0, "defin": [0, 1, 2, 8], "definit": [0, 2, 4, 7, 8], "deleg": 0, "delet": [1, 7, 8], "deleteprotect": 7, "delimit": [1, 2], "deliv": 1, "demand": 1, "deni": 1, "denial": 1, "denot": 8, "depend": [0, 1, 2, 4, 5, 6, 7, 8], "deprec": [1, 4, 8], "deriv": 0, "descend": 0, "describ": [0, 1, 7, 8], "describe_db_snapshot_attribut": [0, 1], "describe_subscription_filt": [0, 1], "descript": [0, 1, 5, 7], "design": [0, 5], "desir": 1, "desk": 2, "destin": 1, "detail": [1, 2, 3, 7, 8], "detect": 1, "determin": [1, 2, 7], "dev": [1, 7], "develop": [0, 5], "devhelp": 4, "dfunction": 0, "dhcpoptionsfilt": 1, "dhe": 1, "dict": [0, 1, 8], "dict_find_nam": 0, "dictionari": [0, 1, 4], "did": 0, "didn": 7, "differ": [0, 1, 2, 5, 7], "difficult": [0, 1], "digest": 1, "digit": 0, "dimens": [0, 1], "direct": 0, "directconnect": 1, "directli": [0, 1, 2], "directori": [1, 2, 3, 5], "directorysecuritygroupfilt": 1, "directorysubnetfilt": 1, "directoryvpcfilt": 1, "dirhtml": 4, "disabl": [0, 1, 7], "disableapitermin": 1, "discard": 0, "discern": 8, "discov": 0, "displai": [0, 4], "displaynam": 1, "distinct": [0, 7, 8], "distinguish": [0, 7], "distribut": [1, 4], "disutil": 0, "diverg": 1, "divid": 0, "dividebyzeroerror": 7, "divis": 0, "dlm": 1, "dm": 1, "dn": 1, "dnshostnam": 1, "dnsname": 1, "dnssupport": 1, "do": [0, 1, 2, 3, 7, 8], "do_by": 0, "do_eof": 0, "do_exit": 0, "do_quit": 0, "do_set": 0, "do_show": 0, "doc": [0, 1, 5], "doctest": 4, "document": [0, 1, 2, 4, 7, 8], "docutil": 4, "doe": [0, 1, 2, 7, 8], "doesn": [0, 1, 4, 7, 8], "doin": 0, "domain": [0, 1, 8], "don": [0, 1, 2, 7], "done": [0, 1, 3, 8], "dot": 5, "dot_id": [0, 8], "dot_ident_arg": [0, 8], "doubl": 2, "double_valu": 0, "doubletyp": [0, 2, 8], "doublevalu": 0, "down": [0, 1], "download": 4, "dpb": 0, "dsl": [1, 2, 5, 7, 8], "duck": 7, "due": 1, "dump": 0, "dumpast": 0, "duplic": 0, "durat": [0, 1, 7], "durationtyp": [0, 1, 8], "dure": [0, 1, 2, 6], "dvipdfmx": 4, "dyn": 0, "dynam": 4, "dynamodb": 1, "dynamodbacceler": 1, "e": [0, 1, 2], "e1": 0, "e2": 0, "each": [0, 1, 2, 4, 7, 8], "easi": 0, "easier": [1, 7], "easili": [0, 5], "east": [0, 1], "east1": 7, "eastern": 1, "eb": 0, "ebnf": 4, "ebsoptim": 1, "ec": 1, "ec2": [0, 1, 7], "ec2_userdata_stop": 1, "ecdh": 1, "ecdsa": 1, "echo": 2, "ecr": 1, "ecrcrossaccountaccessfilt": 1, "ecsclust": 1, "ecsmetr": 1, "ef": 1, "effect": [0, 1, 2], "effort": 4, "egress_viol": 1, "eip": 1, "either": [0, 1], "ek": 1, "ekssgfilt": 1, "ekssubnetfilt": 1, "eksvpcfilt": 1, "elast": 1, "elasticach": 1, "elasticachesnapshot": 1, "elasticachesnapshotag": 1, "elasticbeanstalk": 1, "elasticfilesystem": 0, "elasticfilesystemmounttarget": 1, "elasticmapreduc": 1, "elasticsearch": 1, "elasticsearchdomain": 1, "elb": [0, 1], "elblog": 1, "elbsecuritypolici": 1, "elem": 0, "element": [1, 7], "elif": 0, "els": 0, "email": [1, 7], "email_verifi": 7, "emb": 2, "embed": [4, 5, 7], "emmo": 1, "emphat": 7, "empti": [0, 1, 3], "emr": 1, "emrclust": 1, "emrmetr": 1, "en": [4, 7], "enabl": [0, 3, 4, 5, 7], "enasupport": 1, "encod": 0, "encoders_ext": 4, "encount": 0, "encounterd": 0, "encryptionenabledfilt": 1, "end": [0, 1, 8], "endpoint": 1, "endpointcrossaccountfilt": 1, "endpointsecuritygroupfilt": 1, "endpointsubnetfilt": 1, "endpointvpcfilt": 1, "endtim": 0, "engin": [0, 1], "enhanc": 2, "eni": 1, "ensur": [1, 7], "ensure_ascii": 0, "ent": 1, "enter": [0, 2], "enterpris": 1, "entir": 0, "entri": 8, "enum": [0, 1, 4], "enumtyp": 0, "env": [1, 4, 7], "environ": [0, 1, 3, 4, 5, 6, 7, 8], "eof": 2, "ephemeralinstancefilt": 1, "epub": 4, "eq": [0, 1], "eq_test": 0, "equal": [0, 1], "equival": 0, "err": 7, "erron": 0, "error": [0, 2, 3, 5, 8], "error_text": 0, "escap": 0, "eschew": 1, "essenc": 7, "essenti": [0, 1, 5, 8], "est": 1, "establish": 0, "et": 1, "etc": [0, 1], "eu": 1, "europ": 0, "eustac": 0, "eval": [0, 2, 7, 8], "eval_error": 0, "eval_filt": 1, "evalu": [1, 2, 3, 4, 5, 7], "even": [0, 1], "event": 0, "eventrul": 1, "eventrulemetr": 1, "eventruletarget": 1, "eventstatuscod": 0, "eventu": [0, 7], "ever": 7, "everi": [0, 1], "everydai": 1, "everyone_onli": 1, "everyth": [2, 4], "ex": [0, 7], "ex_": 0, "ex_10": 0, "ex_10_l": 0, "ex_10_x": 0, "exact": 1, "exactli": 7, "examin": [0, 1, 2, 7], "exampl": [0, 5, 8], "exc_class": 0, "exc_typ": 0, "exc_valu": 0, "exceed": 1, "except": [0, 1, 2, 5, 8], "exceptionmanualsnapshot": 1, "exclud": 1, "exclude_imag": 1, "exec": [0, 8], "execut": [0, 1, 2, 4, 7, 8], "exempt": [0, 1], "exist": [0, 1, 3], "exists_on": 0, "exit": 5, "expand": 0, "expans": 0, "expect": [0, 1, 2, 7], "experiment": 8, "expir": 1, "explicit": [0, 1, 8], "explicitli": [0, 1], "explict": 2, "explor": 8, "export": 0, "expos": [0, 1, 7, 8], "expr": [0, 1, 2, 4, 7, 8], "expr_test_bc": 4, "express": [0, 1, 2, 4, 6, 7, 8], "exprlist": 0, "exprpb": 7, "extant": 1, "extend": [0, 1, 2, 7, 8], "extended_name_path": 0, "extens": [0, 1, 7, 8], "extent": [0, 1, 7], "extern": [0, 4, 5], "extra": 1, "extract": [0, 1], "f": [0, 1, 2, 7, 8], "f1": 2, "f2": 2, "facad": [0, 8], "factfind": 1, "factori": 0, "fail": [0, 1], "failur": [0, 1, 2], "fairli": 0, "fall": 0, "fallback": 0, "fals": [0, 1, 2, 7], "far": 0, "fargat": 1, "fatal": 3, "fatalf": 7, "fatalln": 7, "faulttolerantsnapshot": 1, "favor": 0, "featur": [1, 5, 7, 8], "fetch": 1, "few": [0, 1, 7], "ffffffff": 1, "field": [0, 1, 4, 7, 8], "fieldinit": [0, 8], "fifo": 2, "file": [0, 1, 3, 5], "filesystem": 2, "filter": [0, 5, 8], "filter_inst": 7, "filter_registri": 1, "filter_resource_statist": 1, "filterrestintegr": 1, "filterrestmethod": 1, "final": [0, 1, 2, 7, 8], "find": [0, 2], "find_nam": 0, "firehos": 1, "first": [0, 7, 8], "fit": [0, 1, 7], "fiter": 0, "five": 7, "fix": [0, 1, 7], "fixedint": 0, "fixedtz": 0, "fixtur": 0, "fklter": 1, "flag": 1, "flat": 0, "flavor": 0, "fleet": 1, "float": [0, 2, 8], "float_lit": 0, "floatvalu": 0, "flow": 0, "flow_log": [0, 1], "flowlogfilt": 1, "fmt": 7, "fnmatch": [0, 1], "focus": 1, "follow": [0, 1, 2, 3, 4, 7, 8], "foo": 1, "foobar": 1, "forbidden": 1, "form": [0, 1, 4, 7, 8], "formal": [0, 7], "format": [0, 1, 2, 3, 4, 7], "formatt": 3, "formerli": 0, "forwardref": 0, "found": [0, 1, 8], "foundat": 0, "four": [0, 1, 7, 8], "fp_math": 4, "fraction": 0, "fragment": 0, "frame": 0, "framework": [7, 8], "fri": 1, "friendli": [0, 2], "from": [0, 1, 2, 4, 5, 8], "fromport": 1, "front": 0, "frozenset": 0, "fs_analytical_dev": 1, "fs_analytical_qa": 1, "fs_core_cas_qa": 1, "fs_custodian_tag": 1, "fs_manual_ebs_snapshot_expir": 1, "fs_manual_rds_snapshot_expir": 1, "fsx": 1, "fulfil": 0, "full": [0, 4], "full_control": 1, "fulli": 0, "func": [0, 7], "func_nam": 0, "function": [2, 5, 8], "function_contain": 0, "function_endswith": 0, "function_ev": 0, "function_getd": 0, "function_getdayofmonth": 0, "function_getdayofweek": 0, "function_getdayofyear": 0, "function_getfullyear": 0, "function_gethour": 0, "function_getmillisecond": 0, "function_getminut": 0, "function_getmonth": 0, "function_getsecond": 0, "function_match": 0, "function_s": 0, "function_startswith": 0, "functiontyp": [0, 7], "functool": 7, "fundament": 8, "further": 0, "futur": [0, 4], "g": [0, 1, 2], "g4": 0, "gamelift": 1, "gatewai": 1, "gather": [1, 7], "gb": 1, "gc": 1, "gcm": 1, "ge": [0, 1], "gen": 0, "gener": [0, 1, 4, 7, 8], "geograph": 1, "get": [0, 1, 2, 4, 8], "get_access_log": [0, 1], "get_account": [0, 1], "get_credential_report": [0, 1], "get_dbsubnet_group_us": [0, 1], "get_endpoint": [0, 1], "get_flow_log": 1, "get_health_ev": [0, 1], "get_instance_imag": [0, 1], "get_key_polici": [0, 1], "get_launch_configuration_nam": [0, 1], "get_load_balanc": [0, 1], "get_matching_alias": [0, 1], "get_metr": [0, 1], "get_metric_statist": 1, "get_model": 1, "get_nam": 0, "get_opt": 0, "get_orgid": [0, 1], "get_protocol": [0, 1], "get_raw_health_ev": [0, 1], "get_raw_metr": [0, 1], "get_rel": [0, 1], "get_related_id": [0, 1], "get_related_igw": 0, "get_related_kms_kei": 0, "get_related_nat_gatewai": 0, "get_related_security_config": 0, "get_related_sg": 0, "get_related_subnet": 0, "get_related_vpc": 0, "get_resource_polici": [0, 1], "get_resource_statist": [0, 1], "get_resource_valu": 1, "get_type_protect": [0, 1], "get_valu": [0, 8], "get_vpc": [0, 1], "getdat": [0, 1], "getdayofmonth": 0, "getdayofweek": [0, 1], "getdayofyear": 0, "getfullyear": 0, "gethour": [0, 1], "getmillisecond": 0, "getminut": 0, "getmonth": 0, "getsecond": 0, "gettext": 4, "gettz": 0, "gherkin": 5, "gib": 1, "git": 4, "github": [0, 1, 2, 4, 7], "give": 7, "given": [0, 1, 2, 4, 7, 8], "gl": 1, "glacier": 1, "glaciercrossaccountaccessfilt": 1, "glob": [0, 1], "global": 0, "globalgrantsfilt": 1, "glue": 1, "glueconnect": 1, "go": [0, 1, 5], "go_mod": 0, "goal": 0, "golang": 0, "goo": 1, "good": [1, 7], "googl": [0, 1, 2, 4, 7], "gracefulli": 0, "grai": 1, "grammar": [0, 4], "grantcount": 1, "greater": 1, "greet": 7, "greetfunc": 7, "group": [0, 7], "group_access": 2, "groupid": 1, "groupmembership": 1, "groupnam": 1, "grouppolicysizequota": 1, "groupset": 1, "groupsperuserquota": 1, "groupsquota": 1, "gt": [0, 1], "gte": 1, "h": [0, 1, 2], "ha": [0, 2, 4, 5, 7, 8], "had": 1, "hand": 7, "handl": [0, 1, 2, 7, 8], "handler": 3, "hapg": 1, "happen": 0, "hard": 0, "hash": 0, "hashabl": 0, "hasn": 8, "hasstatementfilt": 1, "hasvirtualmfa": 1, "have": [0, 1, 2, 3, 4, 5, 7, 8], "haven": 1, "head": [0, 1, 4], "header": 1, "healtch": 1, "health": 0, "health_ev": 1, "healthcheckprotocolmismatch": 1, "healthev": 1, "healtheventfilt": 1, "healthfilt": 1, "heavi": 1, "hello": [0, 7], "help": [0, 1, 2, 4, 7, 8], "here": [0, 1, 2, 7, 8], "heredoc": 2, "hh": 0, "hidden": 0, "higher": 1, "highli": 1, "hint": [0, 4, 8], "hit": 1, "holidai": 1, "home": [1, 2, 3], "hook": 0, "host": [0, 1], "hostedzon": 1, "hostnam": 1, "hour": [0, 1], "hourli": 1, "housekeep_unused_sg": 1, "how": [0, 1, 7], "howev": [0, 1, 7, 8], "hsm": 1, "html": [0, 1, 4, 7], "htmlhelp": 4, "http": [0, 1, 2, 4, 5, 7], "hybrid": 0, "i": [0, 2, 4, 5, 6, 7, 8], "iam": 0, "iamaccessfilt": [0, 1], "iamgroupinlinepolici": 1, "iamgroupus": 1, "iaminstanceprofil": [0, 1], "iamroleinlinepolici": 1, "iamroleusag": [0, 1], "iamroleusagemixin": [0, 1], "iamsummari": 1, "iamuserinlinepolici": 1, "iana": [0, 1], "id": 0, "idea": [0, 7], "ideal": 0, "ident": [0, 1, 8], "ident_arg": [0, 8], "ident_pat": 0, "ident_valu": 0, "identifi": [0, 1, 8], "ie": 1, "ietf": 0, "ifi": 2, "ignor": [0, 1, 2, 4, 7], "ii": 0, "imag": 0, "imageag": 1, "imageagefilt": 1, "imagefilt": 1, "imageid": [0, 1], "imagenam": 1, "imagesunusedmixin": [0, 1], "imageunusedfilt": [0, 1], "immedi": 1, "implement": [0, 2, 4, 5, 8], "implent": 1, "impli": [0, 1], "implicit": 1, "implicitli": 1, "import": [0, 1, 2, 5, 7, 8], "improt": 8, "includ": [0, 1, 3, 5, 7, 8], "incomplet": 0, "incorrect": 1, "incorrectlambda": 1, "increas": 0, "indent": 0, "independ": 0, "index": [0, 4, 5], "indexerror": 0, "indic": [0, 2], "individu": [0, 1], "infer": 1, "infin": 0, "info": [1, 3, 4], "inform": [0, 1, 4, 7, 8], "infrastructur": 5, "init": 0, "initi": 0, "inject": 0, "input": [0, 2, 7, 8], "insid": [0, 8], "instal": 5, "instanc": [0, 7, 8], "instance_profile_usag": [0, 1], "instanceagefilt": 1, "instanceattribut": 1, "instancecreatetim": 1, "instanceid": 0, "instanceimag": 1, "instanceimagebas": [0, 1], "instanceimagemixin": [0, 1], "instanceinitiatedshutdownbehavior": 1, "instanceoffhour": 1, "instanceonhour": 1, "instanceprofil": 1, "instanceprofilenam": 1, "instanceprofilesquota": 1, "instances": 7, "instancestorag": 1, "instancetyp": 1, "instead": [0, 1, 2, 7], "insufficient_data": 1, "int": [0, 1, 2, 8], "int32": 0, "int32valu": 0, "int64": 0, "int64_overflow_neg": 0, "int64_overflow_posit": 0, "int64_valu": [0, 4], "int64valu": 0, "int_lit": 0, "intact": 0, "integ": [0, 1, 2], "integer_math": [0, 4], "integr": [0, 2, 3, 4, 8], "intend": 0, "intent": [1, 2, 5], "interact": [0, 2, 8], "interect": 0, "interest": [5, 7, 8], "interfac": [0, 1, 7, 8], "interfacesecuritygroupfilt": 1, "interfacesubnetfilt": 1, "interfacevpcfilt": 1, "intermedi": [0, 7], "intern": [0, 1, 7, 8], "internet": 1, "interoper": 5, "interpret": 0, "interpretedrunn": [0, 8], "interrog": 0, "intersect": [0, 1], "intoper": 0, "intro": 0, "introduc": [0, 7, 8], "inttyp": [0, 2, 4, 8], "invalid": 2, "invalidconfigfilt": 1, "invers": 1, "invis": 1, "involv": [0, 2, 5, 8], "io": [0, 7], "iop": 1, "iot": 1, "ip": 1, "ipaddress": 0, "ippermiss": 1, "ippermissionegress": 1, "ipv4address": 0, "ipv4network": 0, "ish": 4, "islog": 1, "isloggingfilt": [0, 1], "isn": [0, 1, 8], "isnotloggingfilt": [0, 1], "isqueryloggingen": 1, "isrm": 1, "iss": 7, "isshadow": 1, "isshieldprotect": [0, 1], "isshieldprotectedmixin": [0, 1], "issslfilt": 1, "issu": [0, 1, 7, 8], "iswafen": [0, 1], "item": [0, 1, 2, 4, 7], "iter": [0, 1], "its": [0, 1, 7], "itself": 0, "iunjpz": 1, "jme": 0, "jmes_path": [0, 1], "jmes_path_map": [0, 1], "jmespath": [0, 1], "job": [0, 1], "joda": 0, "jq": [0, 2, 8], "json": [0, 1, 2, 4, 7, 8], "json_queri": 4, "json_to_cel": [0, 1, 7], "jsonencod": 0, "jsonl": 0, "jsonlin": 2, "just": 1, "kai": 0, "keep": [0, 1], "kei": [0, 4, 5, 7, 8], "kernel": 1, "key_id": 0, "key_valu": 1, "keyalia": 1, "keyerror": 0, "keyid": 1, "keynam": 1, "keyrotationen": 1, "keyrotationstatu": 1, "kind": [0, 1, 2, 7, 8], "kinesi": 1, "kit": 4, "km": 0, "kms_alia": [0, 1], "kms_kei": [0, 1], "kmsfilter": 1, "kmskeyalia": 1, "know": 4, "known": [0, 2, 7], "kwarg": 0, "l": 2, "label": 0, "lambda": [0, 1], "lambdacrossaccountaccessfilt": 1, "lambdaeventsourc": 1, "lambdalayervers": 1, "langdef": [0, 1, 4], "languag": [0, 1, 2, 4, 7, 8], "larg": [1, 4, 7], "large_instance_typ": 1, "lark": [0, 4, 7, 8], "last": 0, "last_rot": 1, "last_used_d": 1, "last_used_region": 1, "last_used_servic": 1, "lastrot": 1, "lastupdatedtim": 1, "lastwritedai": 1, "later": [0, 1], "latest": [0, 7], "latestsnapshot": 1, "latex": 4, "latexpdf": 4, "latexpdfja": 4, "launchconfig": 1, "launchconfigag": 1, "launchconfigfilt": 1, "launchconfigurationnam": 1, "launchtyp": 1, "layer": [0, 1, 8], "layercrossaccount": 1, "lc_userdata": 1, "le": [0, 1], "lead": [0, 1], "least": [0, 1], "leav": 1, "left": [0, 1], "legaci": [0, 1], "len": [0, 1], "length": 0, "less": [0, 1, 7], "let": 0, "letter": [2, 4], "level": [0, 1, 3, 4, 8], "levelnam": 3, "leverag": [0, 8], "lexic": 0, "lh": 7, "librari": [0, 1, 7, 8], "licens": 1, "life": [0, 1], "lifecyclerul": 1, "like": [0, 1, 2, 3, 4, 7], "likewis": 1, "limit": 0, "line": [0, 1, 2, 8], "lineno": 3, "link": [2, 4], "linkag": 1, "linkcheck": 4, "lint": 4, "linux": 2, "list": [0, 1, 4, 7, 8], "list_lit": [0, 8], "listtyp": [0, 8], "listvalu": 0, "liter": [0, 1, 2, 8], "littl": [0, 2], "ll": [0, 7, 8], "load": [0, 1], "load_annot": 0, "load_valu": 0, "local": [0, 1, 3, 4, 8], "localized_ev": 0, "locat": 0, "log": [0, 2, 3, 7], "logcrossaccountfilt": 1, "logg": 1, "logger": [0, 3], "loggroup": 1, "logic": [0, 2, 4, 7], "logical_and": 0, "logical_condit": 0, "logical_not": 0, "logical_or": 0, "logtarget": 1, "long": [0, 1], "longer": [1, 2], "longest": 0, "longtz": 0, "look": [0, 1, 4, 7], "lookup": 0, "loosevers": 0, "los_angel": 1, "loss": 1, "lower": [0, 1], "lowerascii_unicod": 4, "lowercas": 0, "lt": [0, 1], "lte": 1, "m": [0, 1, 2, 6, 7], "m1": 7, "m3": 1, "machin": 1, "macro": [0, 1, 4, 8], "macro_": 0, "macro_al": 0, "macro_exist": [0, 4], "macro_exists_on": 0, "macro_filt": 0, "macro_has_ev": 0, "macro_map": 0, "macros2": 4, "made": [0, 1], "magnet": 1, "magnitud": 0, "mai": [0, 1, 4, 6, 7, 8], "maid": 1, "maid_offhour": [0, 1], "maid_statu": 1, "main": [0, 8], "major": 1, "make": [0, 1, 2, 4, 7, 8], "makefil": 5, "makeinfo": 4, "man": 4, "manag": 0, "mani": [0, 1, 2], "manual": [1, 4], "map": [0, 1, 2, 7, 8], "map_lit": [0, 8], "mapinit": 0, "mapkeytyp": 8, "mappubliciponlaunch": 1, "maptyp": [0, 1, 7, 8], "march": 0, "marked_kei": [0, 1], "markedforop": 1, "marker": 0, "mask": [0, 7], "master": [0, 1, 4, 7], "match": [0, 1, 4, 6, 7, 8], "matchabl": 1, "materi": 0, "math": [0, 2], "math_ext": 4, "matter": 0, "max": 1, "maximum": 1, "maxproperti": 1, "maxsecond": 0, "mayb": 0, "mccarthi": 0, "md": [0, 1, 4, 7], "me": 7, "mean": [0, 1, 2, 7, 8], "meaning": 0, "medium": 1, "meet": 7, "member": [0, 1, 5], "member_dot": [0, 8], "member_dot_arg": [0, 8], "member_index": 0, "member_item": [0, 8], "member_object": [0, 8], "mental": 2, "mere": 0, "messag": [0, 1, 3, 4, 7], "message_liter": 0, "messagebrok": 1, "messagetyp": [0, 8], "meta": 0, "meth": 0, "method": [0, 3, 7, 8], "method_ev": 0, "method_id": 0, "metric": 0, "metricnam": 0, "metricsaccess": 0, "metricsfilt": 1, "mfa_act": 1, "mfadevic": 1, "mfadevicesinus": 1, "mi": 1, "middl": 0, "might": [0, 7], "mimic": 2, "min": 1, "mini": 2, "minim": [0, 3, 5], "minimum": [0, 1], "minimumpasswordlength": 1, "minproperti": 1, "minsecond": 0, "minut": [0, 1], "mismatch": 0, "mismatchs3origin": 1, "miss": [0, 5], "missingrout": 1, "mistak": 1, "mix": 0, "mixin": [0, 1], "ml": 1, "mlstring_lit": 0, "mm": [0, 1], "mock": [0, 1], "mod": [0, 1], "mode": [0, 2], "model": [0, 1, 7], "modern": 1, "modif": [1, 2], "modifi": [0, 1], "modifyablevolum": 1, "modul": [0, 1, 3, 4, 5, 7, 8], "modulo": 0, "modulu": 0, "moment": 1, "mon": 1, "monad": 0, "monitor": 1, "monthli": 1, "more": [0, 1, 2, 3, 4, 5, 8], "morn": 1, "most": [0, 1, 2, 7, 8], "mount": 1, "mq": 1, "mqmetric": 1, "mqsgfilter": 1, "mqsubnetfilt": 1, "mssage": 1, "much": [0, 2], "mul": 0, "multi": 1, "multilin": 2, "multipl": [0, 1, 2, 7, 8], "multipli": 1, "multiplication_div": 0, "multiplication_mod": 0, "multiplication_mul": 0, "must": [0, 1, 2, 3, 4, 7, 8], "my": 1, "my_extens": 7, "mydata": 1, "n": [0, 2, 7], "nacl": 1, "name": [1, 2, 3, 4, 5, 7], "name1": 0, "name2": 0, "name_arg": 7, "name_token": 0, "namecontain": [0, 3, 8], "nameerror": [0, 8], "namespac": [0, 1, 4], "nano": 0, "nanosecondspersecond": 0, "narrowli": 1, "nat": 1, "nativ": [0, 1, 4, 7], "navig": 0, "nc": [0, 1], "nc1": 0, "nc2": 0, "ndjson": [0, 2], "ne": [0, 1], "necessari": 0, "necessarili": 0, "need": [0, 1, 3, 5, 7, 8], "needless": 0, "neg": 0, "neither": [4, 8], "nest": [0, 7, 8], "nested_activ": 0, "net": [0, 1], "networkacl": 1, "networkin": 1, "networkinterfac": 1, "networkloc": 1, "networkout": 1, "new": [0, 1, 7], "new_activ": 0, "new_text": 0, "newenv": 7, "newer": 7, "newfunct": 7, "newinstanceoverload": 7, "newli": 1, "newlin": 2, "newvar": 7, "next": [0, 1, 8], "ni": 1, "nice": [0, 7], "nightli": 1, "nil": 7, "nljson": [0, 2], "no_such_field": 0, "node": 0, "nodesnaphot": 1, "nomin": 0, "non": [0, 3, 5, 7], "non_compli": 1, "none": [0, 1, 4, 7], "nonetyp": 0, "nonpubl": 1, "nor": 8, "noreturn": 0, "normal": [0, 1, 2], "nospecificiamrolemanagedpolici": 1, "not_": 0, "not_applic": 1, "not_nul": 1, "notabl": 2, "notact": 1, "note": [0, 1, 2, 7, 8], "notebook": 1, "notebookinst": 1, "notebooksecuritygroupfilt": 1, "notebooksubnetfilt": 1, "notencryptedfilt": 1, "notfound": 0, "noth": [0, 1], "notifi": 1, "notimplementederror": 7, "notion": 0, "notprincip": 1, "notresourc": 1, "notsetsentinel": 0, "nov": 1, "now": [0, 1, 7], "nsj7vg": 1, "ntp": 1, "nuanc": [0, 8], "null": [0, 1, 2], "null_lit": 0, "null_valu": 0, "nulltyp": [0, 8], "nullvalu": 0, "number": [0, 1, 2, 4, 7, 8], "number_valu": 0, "numer": 7, "o": [0, 1, 4], "obect": 0, "object": [2, 5, 7, 8], "object_hook": 0, "object_pairs_hook": 0, "objecthook": 0, "obscur": [0, 1], "obsolet": 0, "obvers": 1, "obviou": 7, "occur": [1, 7], "octal": 0, "odd": 0, "off": [0, 1], "offer": [0, 1, 8], "offhour": 0, "offhours_except": 1, "offset": [0, 1], "often": [0, 4, 5, 7], "ok": 1, "old": [0, 1], "older": 1, "omit": [1, 2, 7], "onc": [0, 1], "one": [0, 1, 2, 4, 5, 7, 8], "oneof": [0, 1], "onli": [0, 1, 2, 3, 7], "onlin": 1, "onlyport": 1, "onto": 0, "oop": [0, 7], "op": [0, 7], "op_name_map": 0, "opa": 1, "opaqu": 0, "open": [0, 1], "openpolicyag": [0, 1], "opensourc": 5, "oper": [0, 1, 2, 7, 8], "operand": [0, 1], "operator_in": 0, "opswork": 1, "opt": 1, "optim": [0, 1, 7], "option": [0, 2, 3, 4, 6], "order": [0, 1], "ordinari": 0, "oreo": 1, "org": [0, 1, 2, 4], "organ": [1, 5], "organi": 8, "organiz": 1, "orgid": 0, "origin": [0, 7], "other": [0, 1, 2, 3, 4, 6, 7, 8], "otherwis": 0, "out": [0, 1, 7], "outlin": [1, 7], "output": [0, 2, 3, 4, 7], "outsid": [0, 1, 7, 8], "over": [0, 1, 2, 7, 8], "overal": [0, 7, 8], "overdraftlimit": 7, "overdraftprotect": 7, "overflow": 0, "overhead": [0, 8], "overlap": 0, "overload": [0, 7, 8], "overloadd": 0, "overrid": [0, 1, 8], "overridden": 0, "overview": 4, "overwhelm": 1, "own": [0, 1, 7], "owner": [1, 7], "ownercontact": 1, "ownereid": 1, "p": [0, 2], "pacif": 1, "packag": [0, 2, 3, 5, 6, 7, 8], "packagetyp": 0, "page": [4, 5], "pair": [0, 1], "paper": 4, "paragraph": 3, "parallel": [0, 2, 4], "paramet": [0, 3, 7], "parameterfilt": 1, "paren_expr": [0, 8], "parent": [0, 1], "parent_it": 0, "pari": 0, "pars": [0, 1, 4, 8], "parse_cidr": [0, 1], "parse_const": 0, "parse_d": 1, "parse_float": 0, "parse_int": 0, "parse_text": [0, 1], "parser": [0, 1, 2, 7, 8], "part": [0, 1, 4, 5, 7, 8], "partial": [0, 7], "particular": [0, 1, 2], "particularli": 1, "partit": 0, "partivular": 0, "pass": [0, 1, 4, 7], "password_en": 1, "password_last_chang": 1, "password_last_us": 1, "password_next_rot": 1, "passwordpolicyconfigur": 1, "past": 1, "patch": 1, "path": [0, 1, 4], "path_sourc": 0, "pattern": [0, 1, 2], "payload": 0, "pdf": 4, "pdflatex": 4, "peer": 1, "peeringconnect": 1, "pend": 0, "pendulum": [0, 1], "per": 1, "percent": 1, "perfectli": 1, "perform": [0, 1, 4, 8], "perhap": 0, "period": [0, 1], "permiss": [1, 2], "permissionsboundaryusagecount": 1, "permit": [0, 1, 3, 7, 8], "persist": 0, "person": 8, "perspect": 7, "pg": 1, "pgm": [0, 1], "phase": 0, "phase1transpil": 0, "phase2transpil": 0, "phd": 1, "phoni": 4, "pick": 2, "pickl": 4, "piec": [1, 2], "pingstatu": 1, "pip": 6, "pipe": 2, "place": [0, 1, 2], "plan": [0, 1], "platex": 4, "platform": [1, 5, 6], "platformnam": 1, "platformvers": 1, "pleas": [1, 4], "pleasant": 0, "plu": [0, 1], "pluck": 0, "plumb": 4, "pm": 1, "po": 4, "poetri": 6, "point": [0, 1, 2, 7, 8], "polici": [0, 5, 7], "policiesquota": 1, "policyassign": 1, "policynam": 1, "policysizequota": 1, "policyversionsinus": 1, "policyversionsinusequota": 1, "polit": 0, "pollut": 3, "pool": [0, 1], "poorli": 0, "pop": 0, "popul": 0, "popular": 1, "port": 1, "posit": [0, 7], "possibl": [0, 1, 2, 8], "possibli": [0, 1], "post": 1, "power": 2, "pprint": 0, "practic": 4, "pragmat": [0, 7], "prcess": 1, "precis": 4, "predefin": 8, "prefer": 0, "prefetch_instance_imag": 0, "prefix": [0, 1, 4], "prefixlen": [0, 1], "preloop": 0, "prepar": [0, 1, 8], "prepare_queri": [0, 1], "presenc": [0, 1, 7], "present": [0, 1, 4], "preserv": 1, "presum": 2, "pretti": 0, "prevent": [0, 1, 7], "previou": [0, 1, 7], "previous": 1, "prg": 7, "prgm": [0, 7], "primari": [0, 2, 8], "primarili": 0, "primit": [1, 2], "princip": 1, "principl": [0, 5], "print": 0, "println": 7, "prior": [0, 7], "probabl": 1, "problem": [0, 1, 4, 8], "process": [0, 1, 2, 7], "process_json_doc": 0, "process_resource_set": 1, "process_value_typ": 1, "prod": 7, "prodlog": 1, "produc": [0, 4, 7], "product": [0, 5], "productcod": 1, "profil": 1, "program": [0, 1, 2, 5, 7, 8], "programopt": 7, "progress": [0, 4], "project": [0, 1, 5, 7], "promot": 1, "prompt": [0, 2], "propag": [0, 1], "proper": [0, 1], "properli": 6, "properti": [0, 1, 7], "propog": 0, "propos": 1, "proto": [0, 7], "proto2": 4, "proto2_ext": 4, "proto3": 4, "proto3pb": 0, "protobuf": [0, 1, 2, 4, 7], "protobuf_messag": 8, "protobuf_typ": 0, "protobyf": 0, "protocol": [0, 5], "provid": [1, 2, 3, 4, 7, 8], "provis": [0, 1], "proxi": 1, "pseudoxml": 4, "pst": 1, "pt": [0, 1], "pubfac": 1, "public": 0, "pull": 1, "purchas": 1, "pure": 0, "purpos": [1, 4], "push": 0, "put": 1, "py": [0, 1, 5], "py310": 4, "py311": 4, "py312": 4, "py313": 4, "py39": 4, "pypi": 0, "python": [0, 1, 4, 6, 7, 8], "pythontranspil": 0, "qa": 1, "qthelp": 4, "qualifi": 0, "qualified_identifier_resolution_uncheck": 0, "queri": 0, "question": 0, "queue": 1, "quick": 4, "quickli": 5, "quietli": 0, "quit": [0, 2, 7, 8], "quot": 2, "quota": 1, "quux": 0, "r": [0, 2, 7], "r53domain": 1, "radisti": 1, "raft": 1, "rais": [0, 2, 3, 7, 8], "ramdisk": 1, "rang": [0, 8], "rank": 1, "rare": [0, 1], "rather": 7, "raw": [0, 1], "rd": [0, 1], "rdscluster": 1, "rdsclustersnapshot": 1, "rdsoffhour": 1, "rdsonhour": 1, "rdssnapshot": 1, "rdssnapshotag": 1, "rdssnapshotonhour": 1, "rdssubnetgroup": 1, "rdt": 1, "re": [0, 1], "re2": [0, 6], "reach": [0, 1], "read": [0, 1, 2, 4, 7], "read_acp": 1, "readi": [0, 7], "readm": [0, 7], "readonli": 1, "readonlyrootfilesystem": 1, "readreplicadbinstanceidentifi": 1, "readreplicasourcedbinstanceidentifi": 1, "readthedoc": 7, "real": 0, "realli": [0, 2], "reason": [1, 5], "receiv": 7, "recent": [0, 1], "recogn": 0, "recommend": 1, "recov": 1, "recurs": 0, "redact": 1, "redshift": 1, "redshiftsnapshot": 1, "redshiftsnapshotag": 1, "redshiftsnapshotcrossaccount": 1, "reduc": [0, 1], "reduct": 0, "ref": [0, 1, 7], "ref_to": 0, "refactirubg": 1, "refactor": [0, 1], "refer": [1, 2, 5, 7, 8], "referenc": 1, "reflect": [0, 4, 7], "refresh_period": 1, "refus": 0, "regex": [0, 1], "region": [0, 1], "regist": [0, 1], "registri": [0, 1], "regular": [1, 2, 6], "rehydr": [0, 1], "reject": 1, "rel": 0, "relat": [0, 1, 7, 8], "relatedresourcefilt": [0, 1], "relatedresourcemixin": [0, 1], "relation_eq": 0, "relation_g": 0, "relation_gt": 0, "relation_in": 0, "relation_l": 0, "relation_lt": 0, "relation_n": 0, "relationshiup": 1, "releas": 1, "reli": [0, 1, 2, 7], "remain": 1, "remaind": 0, "remot": 0, "remov": [0, 1, 4, 7], "renam": [0, 1, 8], "reorder": 1, "repeat": 0, "repeatedli": [0, 1], "repl": [0, 2, 3], "replac": [0, 1, 7, 8], "replicationinst": 1, "report": [1, 4], "report_delai": 1, "report_gener": 1, "report_max_ag": 1, "repositori": 4, "repr": 0, "repres": [0, 1], "represent": [0, 1], "request": [0, 1, 7], "requir": [0, 2, 5, 7, 8], "require_ssl": 1, "requiredencryptedputobject": 1, "requireencryptedputobject": 1, "requirelowercasecharact": 1, "requirenumb": 1, "requiresslaccessrdt": 1, "requiresymbol": 1, "requireuppercasecharact": 1, "rerefer": 0, "reservedconcurr": 1, "resili": 1, "resiz": 1, "resize_config": 1, "resolut": [7, 8], "resolv": [0, 7], "resolve_funct": 0, "resolve_nam": [0, 8], "resolve_vari": 0, "resourc": [0, 1], "resource_count": [0, 1], "resource_list": 7, "resource_schedul": [0, 1], "resource_typ": [1, 7], "resourcekmskeyalia": [0, 1], "resourcekmskeyaliasmixin": [0, 1], "respect": 0, "rest": 2, "restapi": 1, "restapicrossaccount": 1, "restor": [0, 1], "restresourc": 1, "restrict": 1, "result": [0, 1, 2, 7, 8], "result_funct": 0, "result_valu": 0, "resum": 1, "retriev": 2, "return": [0, 1, 2, 7, 8], "reus": [0, 1], "revers": [0, 1], "review": 7, "revis": [1, 4], "rework": 1, "rewrit": 7, "rewritten": 0, "rfc": 0, "rfc3339": 0, "rh": 7, "rhymjmbbe2": 1, "rich": 0, "right": [0, 8], "role": [0, 1], "rolecrossaccountaccess": 1, "rolenam": 1, "rolepolicysizequota": 1, "rolesquota": 1, "root": [0, 1, 3], "root_scop": 0, "rootdevicenam": 1, "route53": 1, "routet": 1, "rrset": 1, "rsa": 1, "rule": [0, 7], "rulestatu": 1, "run": [0, 1, 4, 5, 7, 8], "runnabl": 0, "runner": [0, 3, 4, 7, 8], "runner_class": [0, 1], "runtim": 0, "s3": 0, "s3bucketnam": 1, "s3crossaccountfilt": 1, "s3metric": 1, "s3publicblock": 1, "sagemak": 1, "sai": [0, 1], "said": 0, "same": [0, 1, 2, 4, 7, 8], "samplecount": 1, "save": [0, 1, 2], "sc": 1, "scale": [0, 1], "scan": 1, "scan_group": [0, 1], "scatter": 1, "scenario": [0, 4], "schedul": 1, "schedulepars": [0, 1], "schema": [1, 7], "scope": 0, "script": 8, "se": 1, "search": [0, 1, 5], "searchabl": 0, "second": [0, 1], "secondari": 1, "secondarili": 0, "secret": [1, 7], "secretsmanag": [0, 1], "section": [1, 4, 8], "secur": [0, 2, 5], "securetransport": 1, "security_group": [0, 1], "security_group_id": 0, "securitygroup": 1, "securitygroupdifffilt": 1, "securitygroupfilt": 1, "securitygrouplockedfilt": 1, "see": [0, 1, 2, 3, 4, 7, 8], "seed": 0, "seem": [0, 1, 8], "select": [0, 1], "selector": 1, "selector_valu": 1, "self": [0, 1, 4, 7], "self_eval_int_zero": 4, "self_eval_uint_zero": 4, "self_eval_zeroish": 4, "selfrefer": 1, "semant": [0, 1, 2, 5, 8], "semicolon": 1, "send": 1, "sens": 8, "sensibl": [0, 1], "sentinel": [0, 1], "separ": [0, 1, 2, 7, 8], "seper": 1, "sequenc": [0, 1, 7, 8], "serial": [2, 8], "serializ": 0, "seriou": 0, "serv": 0, "server": [0, 1], "servercertif": 1, "servercertificatesquota": 1, "servic": [0, 8], "service_role_usag": [0, 1], "servicelimit": 1, "servicemetr": 1, "servicetaskdefinitionfilt": 1, "sessioncontext": 1, "sessionissu": 1, "set": [0, 1, 2, 3, 4], "set_activ": 0, "set_annot": 1, "setgid": 2, "setuid": 2, "setup": 1, "sever": [0, 1, 2, 4, 8], "sg": 1, "sg_unus": 1, "sgdefaultvpc": 1, "sgusag": [0, 1], "sgusagemixin": [0, 1], "sha256": 1, "sha384": 1, "shadow": 0, "shake": 7, "shake_hand": 7, "share": 1, "shell": [2, 8], "shield": 0, "shield_protect": [0, 1], "shield_subscript": [0, 1], "shielden": [0, 1], "shieldenabledmixin": [0, 1], "shop": 1, "short": [0, 7], "shorthand": [0, 1], "should": [0, 1, 4, 8], "show": [0, 2, 3, 7], "shown": 0, "shrink": 1, "si": 1, "sid": 1, "sign": [0, 8], "signatur": 7, "signifi": 1, "significantli": 6, "signingcertificatesperuserquota": 1, "silenc": [0, 1], "silent": [0, 4, 7], "similar": [0, 1, 2, 7], "similarli": [0, 1], "simpl": [0, 4, 8], "simpledb": 1, "simpler": [0, 1], "simpli": [0, 7], "simplifi": 0, "sinc": [0, 1, 2], "singl": [0, 1, 2, 4, 7], "single_bool": 0, "single_byt": 0, "single_doubl": 0, "single_dur": 0, "single_fixed32": 0, "single_fixed64": 0, "single_float": 0, "single_int32": 0, "single_int64": 0, "single_sfixed32": 0, "single_sfixed64": 0, "single_sint32": 0, "single_sint64": 0, "single_str": 0, "single_timestamp": 0, "single_uint32": 0, "single_uint32_wrapp": 0, "single_uint64": 0, "singledispatch": 7, "singlehtml": 4, "singleton": [0, 5, 7], "singletonfilt": 1, "singular": 0, "situat": 1, "size": [0, 1, 7], "size_parse_cidr": [0, 1], "skew": 1, "skew_hour": 1, "skier": 1, "skip": 0, "skipkei": 0, "slight": [1, 7], "slightli": [0, 1, 7, 8], "slighyli": 7, "slower": 1, "slowli": 4, "slurp": [0, 2], "sm": 1, "small": 7, "smaller": 0, "smarter": 8, "smi": 1, "sn": [0, 1], "snapshot": 0, "snapshotag": 1, "snapshotcreatetim": 1, "snapshotcrossaccountaccess": 1, "snapshotid": 1, "snapshotskipamisnapshot": 1, "snapshottyp": 1, "snapshotunusedfilt": [0, 1], "snapshotunusedmixin": [0, 1], "snowbal": 1, "snscrossaccount": [0, 1], "snscrossaccountmixin": [0, 1], "so": [0, 7], "socket": 2, "some": [0, 1, 2, 3, 7, 8], "some_activ": 0, "some_dict": 0, "some_str": 0, "someparam": 1, "someth": [0, 1], "sometim": [0, 7], "somev": 1, "somewhat": [0, 7, 8], "sophist": [0, 7], "sort": 7, "sort_kei": 0, "sourc": [0, 4, 7], "source_data": 0, "source_text": 0, "sourcedestcheck": 1, "sourceforg": 0, "span": 1, "sparingli": 1, "spawn": 1, "spec": [0, 1, 2, 4], "special": [0, 1, 7], "specif": [0, 3, 4, 5, 7, 8], "specifi": 1, "specificaiton": 4, "specificiamrolemanagedpolici": 1, "speed": 6, "spell": 1, "sphinx": 4, "spin": 1, "spite": 7, "spread": [0, 2], "sprintf": 7, "sq": 1, "sql": 1, "sqlserveraudit": 1, "sqscrossaccount": 1, "squar": 1, "src": 4, "sriovnetsupport": 1, "ssd": 1, "ssh": 1, "sslnegot": 1, "sslpolici": 1, "sslpolicyfilt": 1, "sslv2": 1, "sslv3": 1, "ssmstatu": 1, "st": 1, "st_atim": 2, "st_birthtim": 2, "st_blksize": 2, "st_block": 2, "st_ctime": 2, "st_dev": 2, "st_flag": 2, "st_gen": 2, "st_ino": 2, "st_mtime": 2, "st_nlink": 2, "st_rdev": 2, "st_size": 2, "stack": [0, 1], "stage": 1, "stand": [0, 1, 8], "standalon": 4, "standard": [0, 1, 2, 7], "start": [0, 1, 3, 4, 7, 8], "startswith": 7, "starttim": [0, 1], "stat": [0, 2], "state": [0, 7], "statement": [0, 7, 8], "statement_id": 1, "statetransitionag": 1, "stati": 2, "static": 0, "statist": [0, 1], "statu": [0, 5], "status": [0, 1], "stdin": [0, 2], "stdout": 0, "stem": 4, "step": [0, 1, 5, 7], "sticki": 2, "still": [0, 2], "stop": 1, "storag": 1, "store": 1, "str": [0, 1, 4, 8], "stream": [0, 1], "streamhandl": 3, "strict": 0, "strictli": 0, "string": [0, 1, 2, 4, 7], "string_ext": 4, "string_greet_str": 7, "string_lit": 0, "string_valu": 0, "stringtyp": [0, 7, 8], "stringvalu": 0, "strip": 1, "strong": 1, "strongli": 1, "struct": 0, "structpb": 0, "structur": [0, 1, 7, 8], "studi": 1, "stuff": 7, "sub": [0, 1, 7], "sub_activ": 0, "sub_ev": 0, "sub_eval_parti": 0, "sub_evalu": 0, "subclass": [0, 1, 7, 8], "subclss": 0, "sublanguag": 1, "subnet": 0, "subnet_id": 0, "subnetfilt": 1, "subnetid": 1, "subnetrout": 1, "subscript": 1, "subsequ": [0, 1], "subset": [0, 8], "subsidiari": 0, "subst": [0, 1], "substanti": 7, "substitut": 0, "subtl": 0, "succesfulli": 1, "success": [0, 1, 7], "successfulli": 0, "suffic": 1, "suffix": [0, 1], "sugar": 0, "suggest": 1, "suit": [1, 4], "suitabl": 1, "sum": 1, "summari": 5, "sun": 1, "super": [0, 1], "superclass": [0, 1], "supertyp": 8, "supplement": 0, "suppli": [0, 2], "support": [0, 1, 2, 4, 8], "sure": 1, "survei": 1, "suspend": 1, "suspendedprocess": 1, "swallow": 0, "swap": 1, "symbol": 2, "synopsi": 5, "syntact": 0, "syntax": [0, 1, 2, 7, 8], "system": [0, 5], "t": [0, 1, 2, 4, 7, 8], "tab": 0, "tabl": 1, "tag": [0, 4, 7], "tag_polici": 7, "tag_policy_filt": 7, "tag_valu": 0, "tags_for": 4, "tagstatu": 1, "tailor": 0, "take": [0, 1], "take_act": 7, "taken": [1, 7], "tangl": 8, "target": [0, 4], "target_engin": 1, "targetfunc": 0, "targetgroup": 1, "tasktaskdefinitionfilt": 1, "tb": 0, "tbd": 0, "team_nam": 1, "tech": 1, "temp": 1, "templat": [0, 1], "temporari": [0, 8], "ten": 8, "tend": 0, "ters": 1, "tertiari": 0, "test": [0, 1, 2, 4, 7, 8], "test_all_typ": 0, "test_c7nlib": 0, "testabl": 1, "testalltyp": 0, "testdata": 4, "texinfo": 4, "text": [0, 1, 2, 4, 8], "text2": 0, "text_from": [0, 1], "textproto": 4, "than": [0, 1, 2, 5, 7], "the_activ": 0, "the_filt": [0, 1], "thei": [0, 1, 7, 8], "them": [0, 1, 2, 4], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8], "thing": [0, 1, 8], "think": 0, "thirti": 1, "those": [0, 1, 3, 7], "three": [0, 1, 5, 7, 8], "threshold": 1, "through": [0, 1, 4], "tidi": 8, "tidyup": 1, "time": [0, 1, 2, 7], "timedelta": [0, 1, 8], "timestamp": [0, 1, 4, 7], "timestamptyp": [0, 1, 7, 8], "timezon": [0, 1, 7], "tini": 2, "titl": 1, "titlecas": 0, "tl": 1, "tlq9fr": 1, "tls12": 1, "tlsv1": 1, "to_python": 0, "todo": 1, "token": 0, "toler": 0, "toml": [2, 3], "too": [0, 8], "tool": [5, 6], "top": [0, 1, 4, 8], "topic": [1, 2, 5], "tot": 2, "total": [1, 2], "toward": 0, "tox": 4, "tp": 0, "tp1": 0, "tp2": 0, "tpb": 0, "trace": [0, 2, 3], "traceback": [0, 7], "tracebacktyp": 0, "track": [0, 7], "tradit": [0, 2], "traffic": 1, "trail": 1, "transact": 7, "transform": [0, 1, 4, 7], "transient": [0, 8], "transit": 1, "translat": [0, 1], "transpar": 0, "transpil": [0, 3, 5], "transpilertre": 0, "travers": 1, "treat": [0, 2], "tree": [0, 4, 7, 8], "tree_class": 0, "tree_dump": 0, "tree_for_express": 0, "tree_for_vari": 0, "tree_node_class": 0, "tri": 1, "trigger": 1, "trim": [0, 1], "tripl": 0, "trivial": [0, 1], "troublingli": 1, "true": [0, 1, 2, 3, 7], "truncat": 0, "trust": 1, "truthi": 0, "try": [0, 7], "tupl": 0, "turn": [0, 1], "tweet": 7, "two": [0, 1, 2, 7, 8], "txt": [0, 1], "typ": 0, "type": [1, 4, 5], "type_deduct": 4, "type_match": 0, "type_nam": 0, "type_schema": 1, "typeerror": 0, "typetyp": [0, 8], "tz": [0, 1, 7], "tz_alias": [0, 1], "tz_name": 0, "tz_name_lookup": 0, "tz_offset_pars": 0, "tz_pars": 0, "tzinfo": [0, 1], "tzutc": 1, "u": [0, 1, 7], "u0001f431": 0, "u270c": 0, "ubuntu": 1, "uint": 0, "uint32": 0, "uint32valu": 0, "uint64": 0, "uint64_overflow_neg": 0, "uint64_overflow_posit": 0, "uint64_valu": [0, 4], "uint64valu": 0, "uint_lit": 0, "uinttyp": [0, 4, 7, 8], "uk": 1, "unari": 0, "unary_minus_no_overload": 0, "unary_neg": 0, "unary_not": 0, "unchosen": 0, "uncomput": 7, "undecid": 0, "undeclar": 0, "under": 1, "underli": 8, "understand": 8, "underutil": 1, "unencrypt": 1, "unifi": [0, 1], "uniform": 2, "union": [0, 1, 8], "uniqu": [0, 1, 8], "unique_s": [0, 1], "unit": 0, "unittest": 0, "unknown": 4, "unless": 1, "unlik": 0, "unmark": 1, "unmodifi": 1, "unoptim": 1, "unsign": [0, 8], "unsupport": 0, "untag": 1, "until": 0, "unus": 0, "unusediampolici": 1, "unusediamrol": [0, 1], "unusedinstanceprofil": [0, 1], "unusedlaunchconfig": [0, 1], "unusedrdssubnetgroup": [0, 1], "unusedsecuritygroup": [0, 1], "unusu": 1, "unwieldi": 1, "up": [0, 1, 6], "upcom": [0, 1], "updat": [0, 1, 4], "upgradeavail": 1, "upper": 0, "uptimefilt": 1, "uri": 0, "url": [0, 1, 4], "us": [0, 3, 4, 5, 6, 8], "usabl": [0, 8], "usag": [1, 2], "usediampolici": 1, "usediamrol": 1, "usedinstanceprofil": 1, "usedsecuritygroup": 1, "user": 3, "user_access": 2, "user_creation_tim": 1, "useraccesskei": 1, "userag": 1, "usercredentialreport": 1, "userdata": 1, "userdatafilt": 1, "userguid": 1, "userid": 2, "userident": 1, "usermfadevic": 1, "usernam": 1, "userpolici": 1, "userpolicysizequota": 1, "usersquota": 1, "usual": 0, "utc": [0, 7], "utcnow": [0, 1], "util": 1, "uv": [4, 6], "v": [0, 2, 4], "v8": 4, "val": 7, "valid": [0, 4], "valid_key_typ": 0, "validconfigfilt": 1, "valu": [2, 3, 4, 7, 8], "value_typ": 0, "valueerror": 0, "valuefilt": 1, "valuekv": 1, "values_from": 1, "valuesfrom": 0, "var": [0, 7], "vari": 1, "variabl": [0, 1, 3, 5, 7, 8], "variant": [0, 1, 7], "variat": 1, "varieti": [0, 8], "variou": [0, 1, 2, 8], "vault": 1, "ve": [2, 7], "verbos": 4, "veri": [0, 1, 3, 4, 8], "verifi": 1, "version": [0, 1, 3, 4, 7], "versionsperpolicyquota": 1, "via": [0, 1, 7, 8], "viabl": 0, "view": 8, "virtual": 6, "visibl": 0, "visit": [0, 8], "visit_children": 0, "visitor": 0, "visual": 7, "vm": 1, "vol": 1, "volum": 1, "volumeid": 1, "volumin": 2, "vpc": 0, "vpc_id": 0, "vpcconfig": 1, "vpce": 0, "vpcendpoint": 1, "vpcfilter": [0, 1], "vpcid": 1, "vpcidfilt": 1, "vpclink": 1, "vpcsecuritygroupfilt": [0, 1], "vpcsubnetfilt": 0, "vpn": 1, "w": [1, 2], "wa": [0, 1, 7], "wafen": 1, "wai": [0, 1, 2, 7], "wait": 1, "walk": [0, 8], "want": [0, 1, 2, 7], "warn": [0, 1, 3], "watch": 1, "we": [0, 1, 2, 7, 8], "web": 1, "web_acl": [0, 1], "webacl": 1, "week": 1, "weekdai": 1, "weekend": 1, "weekli": 1, "well": [0, 1, 2, 7, 8], "west": 1, "what": [0, 2, 7], "when": [0, 1, 2, 4, 6, 7, 8], "where": [0, 1, 2, 4, 6, 8], "wherea": 8, "whether": [0, 1, 7], "which": [0, 1, 4, 7, 8], "while": [0, 1, 2, 7, 8], "whitelist": 1, "whitelist_condit": 1, "whitelist_endpoint": 1, "whitelist_endpoints_from": 1, "whitelist_from": 1, "whitelist_orgid": 1, "whitelist_orgids_from": 1, "whitelist_protocol": 1, "whitelist_protocols_from": 1, "whitelist_vpc": 1, "whitelist_vpc_from": 1, "whitelist_vpce_from": 1, "who": 1, "whole": [5, 7, 8], "whose": 1, "why": [0, 2], "wide": [1, 8], "width": 0, "win": 1, "window": [1, 7], "wip": 4, "wire": 1, "with_traceback": 0, "withdraw": 7, "within": [0, 1, 4, 7], "without": [0, 1, 2, 3, 7, 8], "won": 0, "work": [0, 1, 4, 7, 8], "workabl": 1, "worker": 1, "workflow": 1, "world": [0, 7], "woth": 8, "would": [0, 1, 7], "wrap": [0, 7, 8], "wrapper": [0, 4], "wrapperspb": 0, "wrire": 0, "write": [2, 4], "write_acp": 1, "writen": 1, "written": 4, "wrt": 1, "www": [0, 1, 4], "x": [0, 1, 2], "x_sign": 0, "xml": 4, "xrayencrypt": 1, "xyz": 1, "y": [0, 1, 4], "yaml": 7, "ye": [1, 2], "yeah": 0, "yet": 8, "yield": [0, 1], "you": [0, 1, 2, 4, 7], "your": [1, 7], "yyyi": 1, "z": [0, 1], "z0": 0, "za": [0, 1], "zero": [0, 2, 4], "zerodivisionerror": 0, "zone": [0, 1, 7], "\u00b5": 0}, "titles": ["API Reference", "C7N Functions Required", "CLI Use of CEL-Python", "Configuration", "Development Tools", "Pure Python Google Common Expression Language (CEL)", "Installation", "Application Integration", "Architecture and Design"], "titleterms": {"The": [0, 4, 8], "__main__": 0, "access": 1, "account": 1, "adapt": 0, "addit": 0, "ag": 1, "alia": 1, "all": 1, "allow": 1, "ami": 1, "api": [0, 7], "applic": 7, "architectur": 8, "argument": 2, "attribut": 1, "avail": 1, "baselin": 7, "bind": 7, "block": 1, "bool": 1, "boolean": 1, "bucket": 1, "builtin": 7, "bulk": 7, "c7n": [0, 1, 7], "c7nlib": 0, "cach": 1, "capac": 1, "cel": [2, 5, 8], "celfilt": 1, "celpars": 0, "celpi": 0, "celtyp": 0, "check": 1, "cidr": 1, "cli": 2, "cloud": 7, "cloudtrail": 1, "common": [1, 5], "compil": 8, "complianc": 1, "compon": 8, "concurr": 1, "config": 1, "configur": [2, 3], "construct": 1, "contain": 8, "content": [1, 5], "context": [0, 1, 8], "convers": 1, "count": 1, "credenti": 1, "cross": 1, "custodian": 7, "custom": 7, "data": 1, "db": 1, "default": 1, "defin": 7, "definit": 1, "delta": 1, "descript": [2, 4], "design": [1, 8], "detail": 0, "develop": 4, "devic": 1, "dhcp": 1, "diff": 1, "directori": 4, "doc": 4, "document": 5, "dot": 8, "eb": 1, "egress": 1, "enabl": 1, "encrypt": 1, "environ": 2, "ephemer": 1, "error": 7, "essenti": 7, "evalu": [0, 8], "event": 1, "exampl": [1, 2, 4, 7], "except": 7, "exit": 2, "express": 5, "extern": [1, 7], "fault": 1, "featur": [0, 4], "file": [2, 4], "filter": [1, 7], "find": 1, "flow": 1, "from": 7, "function": [0, 1, 7], "gherkin": 4, "global": [1, 7], "go": 7, "googl": 5, "grant": 1, "group": 1, "ha": 1, "health": 1, "healthcheck": 1, "i": 1, "iam": 1, "id": 1, "imag": 1, "implement": [1, 7], "indic": 5, "ingress": 1, "inlin": 1, "instal": 6, "instanc": 1, "integr": [1, 5, 7], "invalid": 1, "inventori": 1, "kei": 1, "km": 1, "languag": 5, "last": 1, "latest": 1, "launch": 1, "lifecycl": 1, "limit": 1, "listen": 1, "locat": 1, "lock": 1, "log": 1, "makefil": 4, "manag": 1, "mark": 1, "member": 8, "method": 1, "metric": 1, "mfa": 1, "mismatch": 1, "miss": [1, 8], "modify": 1, "more": 7, "name": [0, 8], "namespac": 2, "network": 1, "non": 1, "notif": 1, "numer": 0, "object": [0, 1], "offhour": 1, "onhour": 1, "op": 1, "option": 1, "origin": 1, "overview": 5, "param": 1, "paramet": 1, "password": 1, "polici": 1, "principl": 1, "product": 8, "progag": 1, "project": 4, "protect": 1, "protocol": 1, "provid": 0, "public": 1, "pure": 5, "py": 4, "python": [2, 5], "queri": 1, "refer": 0, "requir": 1, "reserv": 1, "resolut": 0, "resourc": 7, "rest": 1, "rotat": 1, "rout": 1, "rule": 1, "s3": 1, "secur": 1, "servic": 1, "shadow": 1, "shield": 1, "simpl": 7, "singleton": 1, "skip": 1, "snapshot": 1, "sourc": 1, "specif": 1, "ssl": 1, "ssm": 1, "stale": 1, "state": 1, "statement": 1, "statu": [1, 2], "step": 4, "subnet": 1, "summari": 1, "synopsi": [2, 4], "tabl": 5, "tag": 1, "target": 1, "task": 1, "termin": 1, "time": 8, "timzon": 0, "todo": 0, "toler": 1, "tool": 4, "transpil": 8, "type": [0, 2, 7, 8], "unus": 1, "upgrad": 1, "uptim": 1, "us": [1, 2, 7], "user": 1, "valid": 1, "valu": [0, 1], "value_from": [0, 1], "value_typ": 1, "variabl": 2, "virtual": 1, "vpc": 1, "waf": 1, "write": 1, "xrai": 1}}) \ No newline at end of file diff --git a/docs/source/development.rst b/docs/source/development.rst index 4d0d096..a4c89fd 100644 --- a/docs/source/development.rst +++ b/docs/source/development.rst @@ -26,6 +26,7 @@ The ``gherkinize.py`` Tool .. automodule:: gherkinize :no-members: + :members: Config The ``features/steps`` Directory diff --git a/tools/gherkinize.py b/tools/gherkinize.py index 126fc08..8e13365 100644 --- a/tools/gherkinize.py +++ b/tools/gherkinize.py @@ -154,16 +154,43 @@ class Config: + """ + This class reads in optional configuration for conformance tests. Each scenario + is within a feature and a section. + + .. csv-table:: + :header: , feature, section, scenario + + **example**, string_ext, ascii_casing, lowerascii_unicode + + The value for each scenario can be a string tag (which must begin with + ``@``), an array of tags (each of which must begin with ``@``) or a dictionary + with a ``tags`` key containing an array of tags (each of which... y'know). + + For example, each of the following are valid: + + :: + + [bindings_ext.bind] + bind_nested = "@wip" + boolean_literal = [ "@wip" ] + + [bindings_ext.bind.macro_exists] + tags = [ "@wip" ] + + In the future, dictionaries with additional features may be supported. + """ + # We tolerate some variation in the structure of the configuration for each # scenario, but we need to canonicalize it as we load it. - ScenarioInput = Union[str, list[str], dict[Literal["tags"], list[str]]] - SectionInput = dict[str, "Config.ScenarioInput"] - FeatureInput = dict[str, "Config.SectionInput"] + _ScenarioInput = Union[str, list[str], dict[Literal["tags"], list[str]]] + _SectionInput = dict[str, "Config._ScenarioInput"] + _FeatureInput = dict[str, "Config._SectionInput"] # These are the canonical forms - Scenario = dict[Literal["tags"], list[str]] - Section = dict[str, "Config.Scenario"] - Feature = dict[str, "Config.Section"] + _Scenario = dict[Literal["tags"], list[str]] + _Section = dict[str, "Config._Scenario"] + _Feature = dict[str, "Config._Section"] def __init__(self, path: str) -> None: logger.debug(f"Reading from {repr(path)}...") @@ -174,14 +201,14 @@ def __init__(self, path: str) -> None: return None features = [(k, Config._load_feature(k, v)) for k, v in input.items()] - self.features: dict[str, "Config.Feature"] = { + self.features: dict[str, "Config._Feature"] = { k: v for k, v in features if v is not None } @staticmethod def _load_feature( - context: str, input: "Config.FeatureInput" - ) -> "Config.Feature | None": + context: str, input: "Config._FeatureInput" + ) -> "Config._Feature | None": if not isinstance(input, dict): logger.error(f"[{context}]: Skipping invalid feature: {repr(input)}") return None @@ -193,8 +220,8 @@ def _load_feature( @staticmethod def _load_section( - context: str, input: "Config.SectionInput" - ) -> "Config.Section | None": + context: str, input: "Config._SectionInput" + ) -> "Config._Section | None": if not isinstance(input, dict): logger.error(f"[{context}]: Skipping invalid section: {repr(input)}") return None @@ -206,8 +233,8 @@ def _load_section( @staticmethod def _load_scenario( - context: str, input: "Config.ScenarioInput" - ) -> "Config.Scenario | None": + context: str, input: "Config._ScenarioInput" + ) -> "Config._Scenario | None": tags = None if isinstance(input, str): tag = Config._load_tag(context, input) @@ -224,7 +251,7 @@ def _load_scenario( return {"tags": tags} @staticmethod - def _load_tag_list(context: str, input: Any) -> "list[str] | None": + def _load_tag_list(context: str, input: Any) -> Union[list[str], None]: if not isinstance(input, list): logger.error( f"[{context}]: Skipping invalid tags (must be a list): {repr(input)}" @@ -237,7 +264,7 @@ def _load_tag_list(context: str, input: Any) -> "list[str] | None": return [t for t in tags_and_nones if t is not None] @staticmethod - def _load_tag(context: str, input: Any) -> "str | None": + def _load_tag(context: str, input: Any) -> Union[str, None]: if not isinstance(input, str): logger.error( f"[{context}]: Skipping invalid tag (must be a string): {repr(input)}" @@ -253,6 +280,9 @@ def _load_tag(context: str, input: Any) -> "str | None": return input def tags_for(self, feature: str, section: str, scenario: str) -> list[str]: + """ + Get a list of tags for a given scenario. + """ if ( feature in self.features and section in self.features[feature] diff --git a/tools/wip.toml b/tools/wip.toml index dcd4a5e..b2b0709 100644 --- a/tools/wip.toml +++ b/tools/wip.toml @@ -1,25 +1,6 @@ -################################################################################ -# Each scenario is within a feature and a section; for example: # -# # -# feature section scenario # -# ---------- ------------ ------------------ # -# string_ext . ascii_casing . lowerascii_unicode # -# # -# The value for each scenario can be a string tag (which must begin with `@`), # -# an array of tags (each of which must begin with `@`) or a dictionary with a # -# `tags` key containing an array of tags (each of which... y'know). # -# # -# For example, each of the following are valid: # -# # -# [bindings_ext.bind] # -# bind_nested = "@wip" # -# boolean_literal = [ "@wip" ] # -# # -# [bindings_ext.bind.macro_exists] # -# tags = [ "@wip" ] # -# # -# In the future, dictionaries with additional features may be supported. # -################################################################################ +# The value for each scenario can be a string tag, an array of tags or a +# dictionary with a `tags` key containing an array of tags. For additional +# documentation, see the Config class in gherkinize.py. [bindings_ext.bind] bind_nested = "@wip" diff --git a/type_check/lineprecision.txt b/type_check/lineprecision.txt index a2aa003..932e4e4 100644 --- a/type_check/lineprecision.txt +++ b/type_check/lineprecision.txt @@ -7,7 +7,7 @@ celpy.c7nlib 1663 344 16 152 1151 0 celpy.celparser 411 136 68 23 184 0 celpy.celtypes 1483 386 15 235 810 37 celpy.evaluation 3859 1127 252 242 2222 16 -gherkinize 1114 533 14 96 451 20 +gherkinize 1144 533 14 96 481 20 test_gherkinize 5581 5014 135 4 428 0 xlate 0 0 0 0 0 0 xlate.c7n_to_cel 1755 387 103 144 1115 6 From 52a739a356ed96fcfff304d69438b73180ffbbb4 Mon Sep 17 00:00:00 2001 From: Dan Hudlow Date: Tue, 30 Sep 2025 17:02:33 -0500 Subject: [PATCH 13/13] Clean up unidiomatic loop over tags --- tools/gherkin.feature.jinja | 5 ++++- tools/gherkinize.py | 4 +--- type_check/lineprecision.txt | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/gherkin.feature.jinja b/tools/gherkin.feature.jinja index c12dc07..ab60011 100644 --- a/tools/gherkin.feature.jinja +++ b/tools/gherkin.feature.jinja @@ -7,7 +7,10 @@ Feature: {{ feature.name }} # {{ section.name }} -- {{ section.description }} {% for scenario in section.scenarios %} -{{ scenario.tag }}Scenario: {{ section.name }}/{{ scenario.name }} +{% for tag in scenario.tags -%} +{{ tag }} +{% endfor -%} +Scenario: {{ section.name }}/{{ scenario.name }} {{ " " + (scenario.description | wordwrap(width=70,wrapstring="\n ")) + "\n" if scenario.description else "" }} {% for step in scenario.steps %} {{ step }} diff --git a/tools/gherkinize.py b/tools/gherkinize.py index 8e13365..2159f50 100644 --- a/tools/gherkinize.py +++ b/tools/gherkinize.py @@ -998,9 +998,7 @@ def __init__( logger.debug(f"Scenario {source.name}") self.name = source.name self.description = source.description - self.tag = "" - for tag in config.tags_for(feature.name, section.name, source.name): - self.tag += f"{tag}\n" + self.tags = config.tags_for(feature.name, section.name, source.name) self.preconditions: list[str] = [] self.events: list[str] = [] self.outcomes: list[str] = [] diff --git a/type_check/lineprecision.txt b/type_check/lineprecision.txt index 932e4e4..2b1f945 100644 --- a/type_check/lineprecision.txt +++ b/type_check/lineprecision.txt @@ -7,7 +7,7 @@ celpy.c7nlib 1663 344 16 152 1151 0 celpy.celparser 411 136 68 23 184 0 celpy.celtypes 1483 386 15 235 810 37 celpy.evaluation 3859 1127 252 242 2222 16 -gherkinize 1144 533 14 96 481 20 +gherkinize 1142 531 14 96 481 20 test_gherkinize 5581 5014 135 4 428 0 xlate 0 0 0 0 0 0 xlate.c7n_to_cel 1755 387 103 144 1115 6