From bb36fc65ee0b161229169505f4840c436c5ca2b9 Mon Sep 17 00:00:00 2001 From: Clear1nsight <22630354+Clear1nsight@users.noreply.github.com> Date: Wed, 11 Nov 2026 14:22:27 +1100 Subject: [PATCH 1/3] Reuse #7147 selected replay navigation for onboarding This is the exact documentation prerequisite retained by #7156. It points the onboarding check to the selected #7000/#7001 review. Credit to Rohan Arun and the source authors. --- docs/ci-verification.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/docs/ci-verification.md b/docs/ci-verification.md index 63ba3e9aa8..52b62d0481 100644 --- a/docs/ci-verification.md +++ b/docs/ci-verification.md @@ -1,8 +1,25 @@ # CI verification -## Current selected-family replay: #6030 +## Current selected-family replay: #7000 with #7001 The [selected record](../certificates/selected-result.json) binds conditional +κ = 0.00363005817 to the [application review](research/pr-intake-evidence/pr7000-application/PROOF-REVIEW.md), +[validation receipts](research/pr-intake-evidence/pr7000-application/VALIDATION.json), +and [explicit source closure](../certificates/frontier7000-source.json). +`make frontier7000-verify` follows that exact-source selected replay. The review +reuses eleven authenticated preceding executions and records seven fresh serial +application, scalar and complete native-catalogue executions. The earlier +monolithic timeout is retained separately and is not completed coverage. +Consult the receipts for exact commands, source heads and limits. + +The five inherited framework assumptions remain. No complete uniform word, +literal multiplier execution, independent human proof or formal-kernel proof +is asserted. Routine research submissions do not need to rerun this +selected-family replay. The sections below preserve historical checkpoints. + +## Historical selected-family replay: #6030 + +The [historical checkpoint](../certificates/checkpoints/frontier6030.json) binds conditional κ = 0.003125804 to the [proof review](research/pr-intake-evidence/pr6030-audit/PROOF-REVIEW.md), [validation receipts](research/pr-intake-evidence/pr6030-audit/VALIDATION.json), and [explicit source closure](../certificates/frontier6030-source.json). From d2e54af81f9dda6487636b79d4964a2385d89b2b Mon Sep 17 00:00:00 2001 From: Clear1nsight <22630354+Clear1nsight@users.noreply.github.com> Date: Wed, 11 Nov 2026 21:53:51 +1100 Subject: [PATCH 2/3] Replay the historical selected check at its inspected commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The PR #6292 rejection census and package plan are statements about 2485805. Load its exact sources and planner in a private sparse checkout, keeping all source hashes, 19 expected rejections, nine package selections and the empty-plan control. Subsequent edits to the live Makefile and CI guide no longer invalidate this historical check. The original audit is by unpaidmoon, building on Dennis’s historical replay gate. The pinned repository view follows the precedent of Matarener’s PR #5434. Repair prepared with substantial OpenAI Codex assistance. --- .../historical-selected-replay-gap/README.md | 6 +- .../SOURCES.json | 60 +++++++++--------- .../VERIFY.json | 31 +-------- .../historical-selected-replay-gap/verify.py | 63 ++++++++++++++----- 4 files changed, 82 insertions(+), 78 deletions(-) diff --git a/research/historical-selected-replay-gap/README.md b/research/historical-selected-replay-gap/README.md index 55d8cc3b49..36d9a873ca 100644 --- a/research/historical-selected-replay-gap/README.md +++ b/research/historical-selected-replay-gap/README.md @@ -69,7 +69,11 @@ python3 -B scripts/research_package.py --package research/historical-selected-re The direct command prints `PASS_HISTORICAL_SELECTED_REPLAY_GAP`. A registered replay prints `PASS_REGISTERED_RESEARCH_PACKAGE`. Both require Git history -containing the two inspected commits. +containing the two inspected commits and the source and manifest objects at +`2485805a6d47f36ea83ddde6327d453ac82d44dc`. The verifier uses a temporary +sparse checkout of that commit, checks the declared source digests there, and +uses its planner and manifest inventory. The recorded rejections and selection +therefore remain reproducible after later changes to the live Makefile or CI guide. ## Open next questions diff --git a/research/historical-selected-replay-gap/SOURCES.json b/research/historical-selected-replay-gap/SOURCES.json index c1010eec95..62bb8b3950 100644 --- a/research/historical-selected-replay-gap/SOURCES.json +++ b/research/historical-selected-replay-gap/SOURCES.json @@ -4,13 +4,13 @@ "files": [ { "path": "Makefile", - "usage": "input", + "usage": "provenance", "git_blob": "0d683a06b9e7ee162496108ce9a7c5d2ee94fccf", "sha256": "4f2d4f2dcd15139ec82658a975f85ed300897385f85799218539f4c8d60567da" }, { "path": "certificates/partial-swap-network.json", - "usage": "input", + "usage": "provenance", "git_blob": "eccafa830c16170c36faf93045ddf1f638f7bcd4", "sha256": "4c0b9d37e1034b2076e30a70f8e514416298c462d9ee98bc87fe6556b14df786" }, @@ -22,7 +22,7 @@ }, { "path": "docs/ci-verification.md", - "usage": "input", + "usage": "provenance", "git_blob": "63ba3e9aa8bdc5e942b56e34244b92b16f854085", "sha256": "c7d3027e9ad8bcbff68f07aa9576b30fb2f3c76c44d876d40c7fdbf4a3e2228a" }, @@ -34,163 +34,163 @@ }, { "path": "research/clifford-state-performance/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "6f98a0061a5104dfab82c9e806f819b41811f684", "sha256": "396d0f08df24952248140d5c65c51b8c902ef1c580892ff7ea182890530f67ee" }, { "path": "research/community-batch1047-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "5e0f92af463ec12c5e1dcc3effd44081a88af647", "sha256": "07a9daeaf2bda308a92e9a4684f13d5fc766c7772d74801fceb7f4599fdab226" }, { "path": "research/community-batch1099-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "9e13266bf85e627f1b7dc225e9530ea69fd2c7f0", "sha256": "421e1211fb1897c45621dc6801c276e53f2e6f335583c9c9049e535f87c0a3b1" }, { "path": "research/community-batch932-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "cc4d03eb59b9ab3f952735f7e88ff18c2d15d7af", "sha256": "184629cac91a5cfaca50330a88596008b824221433867dcf8117539c913c284a" }, { "path": "research/community-batch970-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "8b9f4111badf7de5d97684799560b55110e9da79", "sha256": "23188ed920e38a54006cb883e181585620821c63bf7e8b5e05d32719417cc37e" }, { "path": "research/community-frontier741-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "a5300d4e7a5381a3f443fc54c768ca6f0f236d68", "sha256": "3c820fb30e1b4d9bcfc6a7ab524375e5b2abd66b940af2c509146104f0bcd79c" }, { "path": "research/community-frontier890-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "d7ff6d777b01d69b6ce84caf25d3b7e4a4d2f211", "sha256": "6b185a9902652f893f3ebd8ada92d2f11b6de6533a9a4d11718a8a4496101128" }, { "path": "research/community-hyperplane599-audit/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "546f37d326d10a99910ae8f908e71ef768524d98", "sha256": "65099d764bfcc39bda5e4d9966783611b094c3522dbdd1435cd498d657a8ef8e" }, { "path": "research/community-k492-audit/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "e538481e4cb16ed936d3195f2dfb5b5a9ca0a76b", "sha256": "2c0f4fa5bc150d05658af2e7c54c4d2c337dd52b7efd3d69530ae73bcbdf452a" }, { "path": "research/community-reconciliation92-audit/MANIFEST.json", - "usage": "input", + "usage": "provenance", "git_blob": "2a2e93685173d5f13cbb5abe740f5d90352e0228", "sha256": "5f501f3c118131e7d069f30ad77186eb2ad6961f9680a0ef105f4514ed41808a" }, { "path": "research/partial-swap-digest/baseline.py", - "usage": "input", + "usage": "provenance", "git_blob": "a2f0190704db83bd8ef48e46e723c49b925804fe", "sha256": "81e9af92cdf38243a540cdcff2062778e449467848d444da37a9553c12ca4c34" }, { "path": "research/r420-two-sided-basis/SOURCES.json", - "usage": "input", + "usage": "provenance", "git_blob": "5d718e11e62f4bcadecf1e02d6b61f87dbe190b0", "sha256": "d9810b0d139c5a1211fd2c1f0d142187cc1fca30026e1e7bc4f9ecfacf1596d1" }, { "path": "research/skip-clones/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "8d1bb3b9c8189e35e5d8bfdfa632d7473e8be0d5", "sha256": "0b68e63e35a97ce6b0cdb6e291b88ebaa8f2dd4afb70b2498f10ee89428258dc" }, { "path": "research/split-skip/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "2ab610b6ea2edd2865fda793ef2168b0c76afb4f", "sha256": "7c2b4646a3ecfef6f881da5c43e4bd0fa9a4d1b00548b8ab458d897e16735134" }, { "path": "scripts/historical-ci-inputs/Makefile", - "usage": "input", + "usage": "provenance", "git_blob": "aff68409021c9d401a6f8013b9dfd7dbcc30f2a8", "sha256": "ea8830dd79da493e2d75baf753d733ff7efbcf2b4794afe41fae0ac8f3055646" }, { "path": "scripts/historical-ci-inputs/ledger-batch932-run_isolated_tests.py", - "usage": "input", + "usage": "provenance", "git_blob": "65db599ab0b1dea0312c4ca048e0bd0f44c3736f", "sha256": "96ea543e6c707424afe247e77bd86c82152f90fc76a0773c4232145da5cdf8d1" }, { "path": "scripts/historical-ci-inputs/ledger-batch932-test_isolated_test_runner.py", - "usage": "input", + "usage": "provenance", "git_blob": "34820a8f24678f918f4d0e7a35380d8013fc3495", "sha256": "628391b6abfbc8674ceec1751867a4392f2cc0b5b66886243e139af86cf355ac" }, { "path": "scripts/historical-ci-inputs/ledger-batch970-verify_selected_result.py", - "usage": "input", + "usage": "provenance", "git_blob": "c755b76e0d44ba4917aa94440ebe54daefce5b2a", "sha256": "d7fd929726b326aeeaf0a3996475adec88eee9aac09ae0bebeeaa0bc1fc8f199" }, { "path": "scripts/historical-ci-inputs/ledger-frontier741-ci-verification.md", - "usage": "input", + "usage": "provenance", "git_blob": "7f3c012504187917a728b9fe87043f0fc8cd006a", "sha256": "a854022e0e1d5d4db4d60e586be3ea56005013ef14a1fc06d02bc06e8529c4b0" }, { "path": "scripts/historical-ci-inputs/partial-swap-context.json", - "usage": "input", + "usage": "provenance", "git_blob": "ad65114886bf34a4fd27e79f3be502389e689faa", "sha256": "833a9642f33aeab2ffea17ec9c6b82e0a953f90192b2c82e10bef21538dccba9" }, { "path": "scripts/historical-ci-inputs/partial-swap-network.json", - "usage": "input", + "usage": "provenance", "git_blob": "52075f2463f60af5e16571347f24274fce73a1ea", "sha256": "f3c4be597b2f2136da4ae2cc80c7454f63c90aa01f84e5b8131cee4dd55de815" }, { "path": "scripts/partial_swap/shared.py", - "usage": "input", + "usage": "provenance", "git_blob": "44a0e454c70f9c4b98e258b8443612e6a119904b", "sha256": "5a0646a50b9f3e8ea55168620a78e8853b0ab810517cefc8cfb8696aedee278a" }, { "path": "scripts/replay_historical_check.py", - "usage": "input", + "usage": "provenance", "git_blob": "1e92fff2782970ef71378f594f2350d245a4db26", "sha256": "5467619c78183d3adc82b0cb55af28e5c1a01fca2b0588677816244b53e2bafd" }, { "path": "scripts/research_package.py", - "usage": "input", + "usage": "provenance", "git_blob": "091b4c8f58bac9a9580d76025b887dc5c873d05f", "sha256": "e1256016e7f51827d04fa2179255989f639ae1d97afaa9c16265f85a0c6abd70" }, { "path": "scripts/run_isolated_tests.py", - "usage": "input", + "usage": "provenance", "git_blob": "a96ab35b315ce492e7fbbfd6c5ae211aa066b541", "sha256": "49eb56dd0fc0d8d8ffdb209970a7adf2176223580646f575d5c22e59543b381c" }, { "path": "scripts/verify_selected_result.py", - "usage": "input", + "usage": "provenance", "git_blob": "6882a4700e410dec569b51ae2eaf1a19cc019195", "sha256": "d6b305eac5b9bdb8172c469ad30a1655a60fa0aceac8b1bf610e1b73f51babd8" }, { "path": "tests/test_isolated_test_runner.py", - "usage": "input", + "usage": "provenance", "git_blob": "343b24abf6719b81805eba5a84c74e57634c8288", "sha256": "3a5470d0b139828b90e19bf9583ddeafcd69f8e34f2824664eb3a2958a52e34d" } diff --git a/research/historical-selected-replay-gap/VERIFY.json b/research/historical-selected-replay-gap/VERIFY.json index 98553e72ed..ab7efa3471 100644 --- a/research/historical-selected-replay-gap/VERIFY.json +++ b/research/historical-selected-replay-gap/VERIFY.json @@ -4,36 +4,7 @@ "python": "3.12", "requirements": [], "inputs": [ - "Makefile", - "certificates/partial-swap-network.json", - "docs/ci-verification.md", - "research/clifford-state-performance/SOURCE.json", - "research/community-batch1047-audit/CONTENT-COVERAGE.json", - "research/community-batch1099-audit/CONTENT-COVERAGE.json", - "research/community-batch932-audit/CONTENT-COVERAGE.json", - "research/community-batch970-audit/CONTENT-COVERAGE.json", - "research/community-frontier741-audit/CONTENT-COVERAGE.json", - "research/community-frontier890-audit/CONTENT-COVERAGE.json", - "research/community-hyperplane599-audit/SOURCE.json", - "research/community-k492-audit/SOURCE.json", - "research/community-reconciliation92-audit/MANIFEST.json", - "research/partial-swap-digest/baseline.py", - "research/r420-two-sided-basis/SOURCES.json", - "research/skip-clones/SOURCE.json", - "research/split-skip/SOURCE.json", - "scripts/historical-ci-inputs/Makefile", - "scripts/historical-ci-inputs/ledger-batch932-run_isolated_tests.py", - "scripts/historical-ci-inputs/ledger-batch932-test_isolated_test_runner.py", - "scripts/historical-ci-inputs/ledger-batch970-verify_selected_result.py", - "scripts/historical-ci-inputs/ledger-frontier741-ci-verification.md", - "scripts/historical-ci-inputs/partial-swap-context.json", - "scripts/historical-ci-inputs/partial-swap-network.json", - "scripts/partial_swap/shared.py", - "scripts/replay_historical_check.py", - "scripts/research_package.py", - "scripts/run_isolated_tests.py", - "scripts/verify_selected_result.py", - "tests/test_isolated_test_runner.py" + "scripts/research_package.py" ], "commands": [ { diff --git a/research/historical-selected-replay-gap/verify.py b/research/historical-selected-replay-gap/verify.py index 83b995941a..9d266c5a4e 100644 --- a/research/historical-selected-replay-gap/verify.py +++ b/research/historical-selected-replay-gap/verify.py @@ -6,8 +6,10 @@ """ import hashlib import importlib.util +import json import subprocess import sys +import tempfile from pathlib import Path ROOT = Path(__file__).resolve().parents[2] @@ -61,31 +63,47 @@ def require(ok, message): raise SystemExit(message) -def load_checker(): - path = ROOT / "scripts/replay_historical_check.py" - spec = importlib.util.spec_from_file_location("historical_selected_replay_gap_checker", path) +def load_module(path): + spec = importlib.util.spec_from_file_location(path.stem, path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) return module +def checkout_snapshot(snapshot, sources, runner, env): + paths = [runner.canonical_relative_path(row["path"]) for row in sources["files"]] + git = ["git", "-c", "maintenance.auto=false", "-c", "gc.auto=0", + "-c", "core.autocrlf=false"] + subprocess.run([*git, "clone", "--quiet", "--shared", "--no-tags", "--no-checkout", + "--", str(ROOT), str(snapshot)], cwd=ROOT, env=env, check=True) + subprocess.run([*git, "update-ref", "--no-deref", "HEAD", INSPECTED], + cwd=snapshot, env=env, check=True) + # The pinned planner reads omitted manifests from the sparse HEAD/index. + patterns = "".join(f"/{path.as_posix()}\n" for path in paths) + subprocess.run([*git, "sparse-checkout", "set", "--no-cone", "--stdin"], + cwd=snapshot, env=env, input=patterns.encode("utf-8"), check=True) + subprocess.run([*git, "read-tree", "-mu", "HEAD"], cwd=snapshot, env=env, check=True) + for path, row in zip(paths, sources["files"], strict=True): + require(hashlib.sha256((snapshot / path).read_bytes()).hexdigest() == row["sha256"], + "historical checkout source digest changed: " + path.as_posix()) + + def entries(checker): for name, config in checker.CONFIG.items(): for entry in [config, *config.get("additional_inputs", [])]: yield name, entry -def reject(checker, entry): +def reject(root, checker, entry): try: - checker.authenticated_input(ROOT, entry) + checker.authenticated_input(root, entry) except ValueError as exc: return str(exc) raise SystemExit("historical input was admitted: " + entry["path"]) -def main(): - require(not sys.flags.optimize, "assertions must stay enabled") - checker = load_checker() +def check_snapshot(root, env): + checker = load_module(root / "scripts/replay_historical_check.py") selected = [entry for name, entry in entries(checker) if name == "tooling-ledger" and entry["path"] == SELECTED_PATH] require(len(selected) == 1, "selected-result checker overlay is not unique") @@ -94,7 +112,7 @@ def main(): require(entry["accepted_live_sha256"] == [SELECTED_ACCEPTED], "accepted selected-checker successors changed") frozen = (checker.INPUTS / entry["input"]).read_bytes() - live = (ROOT / SELECTED_PATH).read_bytes() + live = (root / SELECTED_PATH).read_bytes() require(hashlib.sha256(frozen).hexdigest() == SELECTED_PIN, "frozen selected checker bytes changed") require(hashlib.sha256(live).hexdigest() == SELECTED_LIVE, "live selected checker digest changed") require(SELECTED_LIVE not in (SELECTED_PIN, SELECTED_ACCEPTED), "live checker was already admitted") @@ -102,7 +120,7 @@ def main(): # live successor, not a broken comparison. require(SELECTED_PIN in (SELECTED_PIN, *entry["accepted_live_sha256"]), "pin membership control failed") - require(reject(checker, entry) == REJECTIONS[SELECTED_PATH][1], + require(reject(root, checker, entry) == REJECTIONS[SELECTED_PATH][1], "selected checker rejection text changed") counts = {path: 0 for path in REJECTIONS} @@ -110,7 +128,7 @@ def main(): for _name, item in entries(checker): if item["path"] not in REJECTIONS: continue - message = reject(checker, item) + message = reject(root, checker, item) counts[item["path"]] += 1 messages.setdefault(item["path"], message) for path, (count, message) in REJECTIONS.items(): @@ -118,20 +136,31 @@ def main(): require(messages[path] == message, "rejection text changed for " + path) require(sum(counts.values()) == 19, "rejection total changed") ci = [item for _name, item in entries(checker) if item["path"] == CI_PATH] - require(len(ci) == 1 and hashlib.sha256((ROOT / CI_PATH).read_bytes()).hexdigest() == CI_LIVE, + require(len(ci) == 1 and hashlib.sha256((root / CI_PATH).read_bytes()).hexdigest() == CI_LIVE, "selected CI note digest changed") diff = subprocess.check_output( - ["git", "diff", "--name-only", PARENT, INSPECTED], cwd=ROOT, text=True) + ["git", "diff", "--name-only", PARENT, INSPECTED], cwd=root, env=env, text=True) changed = sorted(name for name in diff.splitlines() if name) require(changed == CHANGED, "inspected commit diff changed") - sys.path.insert(0, str(ROOT / "scripts")) - from research_package import plan_details - details = plan_details(ROOT, set(changed)) + planner = load_module(root / "scripts/research_package.py") + details = planner.plan_details(root, set(changed)) require([row["package"] for row in details] == PLAN_PACKAGES, "helper plan selection changed") matched = {name for row in details for names in row["causes"].values() for name in names} require(sorted(set(changed) - matched) == UNMATCHED, "unmatched plan paths changed") - require(plan_details(ROOT, set()) == [], "empty change set selected a package") + require(planner.plan_details(root, set()) == [], "empty change set selected a package") + + +def main(): + require(not sys.flags.optimize, "assertions must stay enabled") + sources = json.loads(Path(__file__).with_name("SOURCES.json").read_bytes()) + require(sources["base_commit"] == INSPECTED, "historical checkout base changed") + runner = load_module(ROOT / "scripts/research_package.py") + env = runner.git_source_env() + with tempfile.TemporaryDirectory(prefix="historical-selected-replay-") as temporary: + snapshot = Path(temporary) / "snapshot" + checkout_snapshot(snapshot, sources, runner, env) + check_snapshot(snapshot, env) print("PASS_HISTORICAL_SELECTED_REPLAY_GAP") print("selected_checker_live=" + SELECTED_LIVE) print("rejections=19 distinct_paths=7 plan_packages=9") From cf5ddbb4d49a98aacb150b2d0d2f5f45f673d84f Mon Sep 17 00:00:00 2001 From: ToikY <27568617+ToikY@users.noreply.github.com> Date: Wed, 11 Nov 2026 21:30:21 -0800 Subject: [PATCH 3/3] Exclude shared P104 banks funded by two paid subdivisions --- .../LOCAL-PINS.json | 24 ++ .../NOTICE | 8 + .../PROOF.md | 81 ++++ .../PROVENANCE.json | 65 ++++ .../README.md | 86 +++++ .../SOURCES.json | 18 + .../TASK.json | 117 ++++++ .../VERIFICATION.md | 23 ++ .../VERIFY.json | 19 + .../engines/r120/check.py | 146 +++++++ .../engines/r120/compare.py | 63 ++++ .../engines/r120/freeze.py | 97 +++++ .../engines/r120/prefix.py | 184 +++++++++ .../engines/r99/geometry.py | 229 +++++++++++ .../engines/r99/modular.py | 81 ++++ .../engines/r99/quote.py | 95 +++++ .../engines/r99/select.py | 46 +++ .../inputs/7334-WORD.json.gz | Bin 0 -> 393282 bytes .../inputs/BENCHMARK.json | 67 ++++ .../inputs/PR7362-SHA256.json | 11 + .../inputs/R92-GEOMETRY.json.gz | Bin 0 -> 2599 bytes .../inputs/R92-PRICE.json.gz | Bin 0 -> 11680 bytes .../inputs/READBACK.json | 188 +++++++++ .../inputs/donor_span.py | 169 +++++++++ .../inputs/paired_support.py | 356 ++++++++++++++++++ .../inputs/pricing.py | 82 ++++ .../inputs/second_prime.py | 339 +++++++++++++++++ .../receipts/AGREEMENT.json | 29 ++ .../receipts/SHA256.json | 10 + .../replay.py | 178 +++++++++ 30 files changed, 2811 insertions(+) create mode 100644 research/p104-two-paid-subdivision-bank-bound/LOCAL-PINS.json create mode 100644 research/p104-two-paid-subdivision-bank-bound/NOTICE create mode 100644 research/p104-two-paid-subdivision-bank-bound/PROOF.md create mode 100644 research/p104-two-paid-subdivision-bank-bound/PROVENANCE.json create mode 100644 research/p104-two-paid-subdivision-bank-bound/README.md create mode 100644 research/p104-two-paid-subdivision-bank-bound/SOURCES.json create mode 100644 research/p104-two-paid-subdivision-bank-bound/TASK.json create mode 100644 research/p104-two-paid-subdivision-bank-bound/VERIFICATION.md create mode 100644 research/p104-two-paid-subdivision-bank-bound/VERIFY.json create mode 100644 research/p104-two-paid-subdivision-bank-bound/engines/r120/check.py create mode 100644 research/p104-two-paid-subdivision-bank-bound/engines/r120/compare.py create mode 100644 research/p104-two-paid-subdivision-bank-bound/engines/r120/freeze.py create mode 100644 research/p104-two-paid-subdivision-bank-bound/engines/r120/prefix.py create mode 100644 research/p104-two-paid-subdivision-bank-bound/engines/r99/geometry.py create mode 100644 research/p104-two-paid-subdivision-bank-bound/engines/r99/modular.py create mode 100644 research/p104-two-paid-subdivision-bank-bound/engines/r99/quote.py create mode 100644 research/p104-two-paid-subdivision-bank-bound/engines/r99/select.py create mode 100644 research/p104-two-paid-subdivision-bank-bound/inputs/7334-WORD.json.gz create mode 100644 research/p104-two-paid-subdivision-bank-bound/inputs/BENCHMARK.json create mode 100644 research/p104-two-paid-subdivision-bank-bound/inputs/PR7362-SHA256.json create mode 100644 research/p104-two-paid-subdivision-bank-bound/inputs/R92-GEOMETRY.json.gz create mode 100644 research/p104-two-paid-subdivision-bank-bound/inputs/R92-PRICE.json.gz create mode 100644 research/p104-two-paid-subdivision-bank-bound/inputs/READBACK.json create mode 100644 research/p104-two-paid-subdivision-bank-bound/inputs/donor_span.py create mode 100644 research/p104-two-paid-subdivision-bank-bound/inputs/paired_support.py create mode 100644 research/p104-two-paid-subdivision-bank-bound/inputs/pricing.py create mode 100644 research/p104-two-paid-subdivision-bank-bound/inputs/second_prime.py create mode 100644 research/p104-two-paid-subdivision-bank-bound/receipts/AGREEMENT.json create mode 100644 research/p104-two-paid-subdivision-bank-bound/receipts/SHA256.json create mode 100644 research/p104-two-paid-subdivision-bank-bound/replay.py diff --git a/research/p104-two-paid-subdivision-bank-bound/LOCAL-PINS.json b/research/p104-two-paid-subdivision-bank-bound/LOCAL-PINS.json new file mode 100644 index 0000000000..d9b6b19bb5 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/LOCAL-PINS.json @@ -0,0 +1,24 @@ +{ + "PROVENANCE.json": "bb83bf52f9cbb33823341e120f8364197e037fb2dd4a77d6e649ce8b36cd209b", + "engines/r120/check.py": "22f26e7b3268fb927b99ebac9f04dd02cd73e2b8ac300b2156f9bb79304b4759", + "engines/r120/compare.py": "d1424905c06d39bedc741893a2ba4749226164a6402ae1d234daf74bffa35fc0", + "engines/r120/freeze.py": "4cb413c43904775c20998d5c3a08bc54abbf8b55f970b24d8b3e1bb13de04b86", + "engines/r120/prefix.py": "11445aaa594e34c360a869051af63bb85a7cc433b777e0ac1c0c525de73fa8bf", + "engines/r99/geometry.py": "cd8d0d042ec0fab012cb5c8c167913878301def765c8a924b157d7c542cf7397", + "engines/r99/modular.py": "9cb67eb5f600953a76660eed198346b7124fc10e82a996a33314acae057de572", + "engines/r99/quote.py": "3f1faf8acbb680dc7878678b12f995193751b149f8cf89c6f683d4250be5abed", + "engines/r99/select.py": "2472f9acd4fe8f80000ab853aa78300bdb3ed333227e1b8722c70f9ca722153e", + "inputs/7334-WORD.json.gz": "4b9fd1187b34ed97c3ac0c760d73531735a5d0ebc5b4d4ab4377160b20d9bb2a", + "inputs/BENCHMARK.json": "004331cff6ca8644489d7b7084e5c67439d74a2d283e4d64a9fdb9f88679253d", + "inputs/PR7362-SHA256.json": "2c90ca39b0f075cc4b3ec9e90c66fde473465e7bb50cf1db9a820d3a29556c0b", + "inputs/R92-GEOMETRY.json.gz": "37f15e69eff20041c2e40683d53fd19f75c3c2a951432e4ab4510f3afda80633", + "inputs/R92-PRICE.json.gz": "857b2776d4fb18844a08c82bb9387ddb3332d025bc7ecef2e606e6666705acf2", + "inputs/READBACK.json": "337668788fb39ec9575887f9c5faf438a880471f78d936357dabf7deeac5de82", + "inputs/donor_span.py": "4d5306e2c0b7e91c79d22c82e8e760aed2c311979298c558e631975d4d1ae5b1", + "inputs/paired_support.py": "38c796cbe1a73f386177faf88cd53294d4b911f6cde7fd47cd9fcef3b558373f", + "inputs/pricing.py": "f4d0b6c9314b838d882d6d06020f24881c19a3fda97a7c00df87b1e920785182", + "inputs/second_prime.py": "21dbd96192e1f60c00ceddba01a7e8d0ddd7d6ad7da4ad3ed22ef2e47cc589c4", + "receipts/AGREEMENT.json": "a85277d8bb97dbe1d4880032f3058604532de5fa5bb96b33977095b54b02d8c6", + "receipts/SHA256.json": "73b857d2ef0b6555e9df0179d3d3dda9f033076d8d701f83ee3bf45a1720748e", + "replay.py": "0b136fe9b8e30e3b86702c3a87e8a25cf8a4a720f995ea7ba9afb56ac9e1833c" +} diff --git a/research/p104-two-paid-subdivision-bank-bound/NOTICE b/research/p104-two-paid-subdivision-bank-bound/NOTICE new file mode 100644 index 0000000000..d4f16de5c7 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/NOTICE @@ -0,0 +1,8 @@ +Apache-2.0. + +#7334 and #7113 supply the exact word and signed caller. #7338 +and #7298 supply the signed invoice readback and directed tariff. +#7362 and #7364 supply the exact singleton stock and retimed +occupancy method. #7148, #7117 and #5751 supply constructive paid +subdivision precedents. #7355 and #7339 supply reused rational +support engines. OpenAI Codex and subagents materially assisted. diff --git a/research/p104-two-paid-subdivision-bank-bound/PROOF.md b/research/p104-two-paid-subdivision-bank-bound/PROOF.md new file mode 100644 index 0000000000..5808839d5a --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/PROOF.md @@ -0,0 +1,81 @@ +# Exact exterior prefix obstruction + +Fix the exact #7334 word, original public and owned role bindings and the +615-role productive cohort with endpoints 3→127. At each typed cut, +two existing public MOVEs may each be split into two paid rank-one +MOVEs through the same strict binary subspace. Their incident-free +windows must overlap. The original chronology and all other roles +are fixed. A rank-four or rank-five chart with the same span may already +have a literal label. A span without a label is virtual. A permitted +bank has no owned occupant. The 102 surviving geometric representatives +all contain precisely their two moved public roles. + +In the normalized chart coordinates of the exact word, a paid MOVE +changes the physical chart and acts as identity on its public row. +The original rows of each mover are constant throughout its incident-free +window, including across its paid MOVE. The substitution preserves +those normalized rows. Group the representatives by their two +anchor clocks and mover roles. Within a group the incident-free +windows agree, the row roles are the same, and their exterior prefix +matrix is constant. This gives 17 support forms. The alias argument +concerns normalized prefix support. Distinct binary spans and signed +physical chart descriptors remain distinct. + +For the two normalized rows `r_1,r_2`, let `π_ext` retain precisely +the initial-coordinate axes outside the productive cohort. A split +requires a nonzero prefix combination supported on the cohort, so +some `(a,b) ≠ (0,0)` must satisfy +`a π_ext(r_1) + b π_ext(r_2) = 0`. A nonzero 2×2 minor of these two +exterior rows makes that equation impossible. For the first 16 +forms, the replay checks denominators are units at 65537 and computes +a nonzero minor at each form. Nonzero reduction of a minor over this +prime field implies a nonzero rational minor. + +The final form is representative `[42958,22]`, with anchors +`[42958,1255]` and `[43050,572]`. Both paid MOVEs ascend from chart +762 to 869. The three strict intermediate rank-five spans indexed +22, 33 and 44 have no existing chart label. The nearest literal +contacts of both operands delimit the common pre-event cuts +42958, 42959 and 42960, inclusive. The original event at 42960 +itself is outside the prefix. At 42958 role 1255 executes its paid +MOVE, which leaves its normalized row unchanged. At 42959 role +1074 moves and neither tested row is touched. The exact rational +row walk therefore checks the same exterior minor on axes [0, 890] +at all three cuts. + +```text +[ 1/2 0 ] +[ 0 -1 ] determinant = -1/2 +``` + +The independent row walk certifies the same minor modulo 65537 with +determinant 32768 and also finds nonzero determinant 16384 on axes +[172, 971]. This excludes the nine raw residual keys, including all +six geometric representatives. No suffix, exact unit-pairing or signed +physical prototype is required to reach this prefix exclusion. Those +checks were skipped. The result does not decide a different bank with +additional roles, an unequal-span meeting, or a changed chronology. + +## Directed complete price + +Let `H_r = r^(1−κ)`. Across 17 native invocations the paid histogram +changes by P1 +68 and P2 −34, while the productive histogram changes +by T4 +17, T5 +17 and T9 −17. No old rank-two debit is reused or +credited twice. Paid positions would rise from 110,519 to 110,553 and +productive positions from 22,461 to 22,478. The signed rank surplus +remains 1,424 and empty-root credits remain zero. + +The new minus old complete margin is +`17(H4 + H5 − H9 − 4H1 + 2H2)`. The exact directed net upper is +0.209047826097918 raw to the shown precision at the incumbent +crossing upper `0.00364665195644044790699554028334162`. The +complete probe at crossing upper plus 10⁻⁹ has a certified +lower margin of about 0.208660307681836, before any ancillary +changes. The fixed target `0.0040075385047236` still has +complete margin upper about −139.5374450214273. One additional +paid rank-one position also makes the complete incumbent margin +negative. The charge is an optimistic price for a proposed +literal change. The prefix obstruction leaves no admissible +edit in scope, so no new signed frame, setup or recovery work +can enter an improved construction here. The five framework +premises and retained BIT supplier are inherited. diff --git a/research/p104-two-paid-subdivision-bank-bound/PROVENANCE.json b/research/p104-two-paid-subdivision-bank-bound/PROVENANCE.json new file mode 100644 index 0000000000..6ff4128dd0 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/PROVENANCE.json @@ -0,0 +1,65 @@ +{ + "caller": { + "commit": "07a76c5e2738882c0cb322278e56f6cae3c9885d", + "scope": "Retained signed caller and pricing premises; no caller replay in this package.", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/7113" + }, + "chronology": { + "scope": "Recorded 16 completed support forms and one capped form; replay reconstructs all outputs.", + "source": "https://github.com/CrocSwap/integer-mult-bounds/discussions/7111#discussioncomment-19555656" + }, + "files": { + "inputs/7334-WORD.json.gz": { + "commit": "aaeec8c0acf01e99a5f331ef363a698d9c084ace", + "git_blob": "73f43007192eb5a38eb5abb591b871df3e52c7cd", + "path": "research/p104-helper-319-fused-return/WORD.json.gz", + "sha256": "4b9fd1187b34ed97c3ac0c760d73531735a5d0ebc5b4d4ab4377160b20d9bb2a", + "source": "https://github.com/Clear1nsight/integer-mult-bounds/blob/aaeec8c0acf01e99a5f331ef363a698d9c084ace/research/p104-helper-319-fused-return/WORD.json.gz", + "uncompress": false + }, + "inputs/PR7362-SHA256.json": { + "commit": "5eec7ed633dcf9b9bbc95552aa653da296f863fb", + "git_blob": "b1486e0b5cfe4535f381ed26f7bce4aee21d8a43", + "path": "research/p104-rank-two-virtual-cut-bound/receipts/SHA256.json", + "sha256": "2c90ca39b0f075cc4b3ec9e90c66fde473465e7bb50cf1db9a820d3a29556c0b", + "source": "https://github.com/CrocSwap/integer-mult-bounds/blob/5eec7ed633dcf9b9bbc95552aa653da296f863fb/research/p104-rank-two-virtual-cut-bound/receipts/SHA256.json", + "uncompress": false + }, + "inputs/READBACK.json": { + "commit": "349996445176e934ffb3c76813adcd230ca8f783", + "git_blob": "625b508eead24b4428253bd257620b7e775800c1", + "path": "research/p104-compensated-fusion-readout-bound/price/READBACK.json", + "sha256": "337668788fb39ec9575887f9c5faf438a880471f78d936357dabf7deeac5de82", + "source": "https://github.com/CrocSwap/integer-mult-bounds/blob/349996445176e934ffb3c76813adcd230ca8f783/research/p104-compensated-fusion-readout-bound/price/READBACK.json", + "uncompress": false + }, + "inputs/donor_span.py": { + "commit": "403e0d388c35e83b15eab5bba67be563b33d5a8a", + "git_blob": "46e4621b69bba513f327de53153298e7f4ca0645", + "path": "research/p104-owned-add-source-span-bound/engines/forward.py", + "sha256": "4d5306e2c0b7e91c79d22c82e8e760aed2c311979298c558e631975d4d1ae5b1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/blob/403e0d388c35e83b15eab5bba67be563b33d5a8a/research/p104-owned-add-source-span-bound/engines/forward.py" + }, + "inputs/pricing.py": { + "commit": "c522451caf287bb3c16eaece72be4c263315dca4", + "git_blob": "40ec194017bda1d524bba4f07b188c53281419d0", + "path": "research/adjacent-owned-add-exchange-bound/pricing.py", + "sha256": "f4d0b6c9314b838d882d6d06020f24881c19a3fda97a7c00df87b1e920785182", + "source": "https://github.com/CrocSwap/integer-mult-bounds/blob/c522451caf287bb3c16eaece72be4c263315dca4/research/adjacent-owned-add-exchange-bound/pricing.py", + "uncompress": false + } + }, + "generated": { + "inputs/R92-GEOMETRY.json.gz": { + "manifest": "inputs/PR7362-SHA256.json", + "payload_key": "R92-GEOMETRY.json", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/7362" + }, + "inputs/R92-PRICE.json.gz": { + "manifest": "inputs/PR7362-SHA256.json", + "payload_key": "R92-PRICE.json", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/7362" + } + }, + "schema_version": 1 +} diff --git a/research/p104-two-paid-subdivision-bank-bound/README.md b/research/p104-two-paid-subdivision-bank-bound/README.md new file mode 100644 index 0000000000..2846b5b5e3 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/README.md @@ -0,0 +1,86 @@ +# Shared P104 banks funded by two paid subdivisions + +**NO VERIFIED GAIN.** Exact Δκ = 0 relative to independently reproduced +conditional κ = `0.00364665195644` on +[#7334](https://github.com/CrocSwap/integer-mult-bounds/pull/7334) +`aaeec8c0acf01e99a5f331ef363a698d9c084ace`, with the signed +[#7113 caller](https://github.com/CrocSwap/integer-mult-bounds/pull/7113) +`07a76c5e2738882c0cb322278e56f6cae3c9885d`. + +Subdivide two existing paid rank-two public MOVEs to form a common +rank-four or rank-five bank at a shared incident-free cut. Charge both +subdivisions to one productive rank-nine 4+5 split. The bounded stock has +285 quotient lines, 108 pair comparisons and 38,967 typed cuts. Its 102 +geometric representatives reduce to 17 distinct normalized support forms. +The original modular screen excludes 16. The residual form uses roles 572 +and 1255 on the 762→869 ascent. Its three fresh binary spans and three +pre-event cuts give nine raw keys and six geometric representatives. An +exact rational 2×2 exterior prefix minor is nonzero at every cut, and an +independent modular walk checks both its own minor and the original axes. +All 17 forms are excluded, with zero unresolved within this scope. +[Agreement on the residual](receipts/AGREEMENT.json). + +The directed one-edit upper is 0.209047826097918 raw at the incumbent +crossing after charging all four new paid rank-one calls and removing the +two rank-two calls. [Proof and complete price](PROOF.md). + +## Replay + +From a clean checkout, run on POSIX with CPython 3.12 and assertions. + +```sh +python3.12 -I -B research/p104-two-paid-subdivision-bank-bound/replay.py +``` + +The standard-library replay authenticates the word, signed price readback, +directed tariff, and [#7362](https://github.com/CrocSwap/integer-mult-bounds/pull/7362) +predecessor manifest. It regenerates the original price, geometry, +selection and all 16 modular minors. It then regenerates the residual +price, exact and independent rank checks and agreement. A changed +cohort input and a changed residual price both reject. Use +`--out fresh-directory` to retain all eight output files. The replay +needs no Git metadata, network, external dependency root or prior +temporary state. [Provenance](PROVENANCE.json) · +[Path-keyed pins](LOCAL-PINS.json) · [Receipt hashes](receipts/SHA256.json). + +## Open next questions + +Unequal midpoints, shared cuts with additional public occupants, and +changed scalar chronology are outside this closure. To test a distinct +source of savings, start from the two signed chart-32 exchange windows +on role pairs (319, 35) and (1081, 807), with mover anchors +(31303, 38665) and (31360, 37214). Preprice both role itineraries +together, then inspect the peer's nearest source and destination contacts +and exact frame nesting at charts 3 and 355. A positive, legal +joint reframe could remove a paid child while preserving the external +role bindings and productive fields. + +## Credit + +[#7334](https://github.com/CrocSwap/integer-mult-bounds/pull/7334) +and [#7113](https://github.com/CrocSwap/integer-mult-bounds/pull/7113) +supply the exact native word and signed caller. +[#7338](https://github.com/CrocSwap/integer-mult-bounds/pull/7338) +supplies the signed invoice readback and +[#7298](https://github.com/CrocSwap/integer-mult-bounds/pull/7298) +the directed rational tariff. +[#7362](https://github.com/CrocSwap/integer-mult-bounds/pull/7362) +at `5eec7ed633dcf9b9bbc95552aa653da296f863fb` supplies the exact +95 anchors and 285 quotient lines. +[#7364](https://github.com/CrocSwap/integer-mult-bounds/pull/7364) +supplies the retimed singleton occupancy method and +[#7148](https://github.com/CrocSwap/integer-mult-bounds/pull/7148) +a constructive single-subdivision precedent. +[#7117](https://github.com/CrocSwap/integer-mult-bounds/pull/7117) +supplies a prior two-subdivision construction with different movers +and an additional neutral retime. +[#5751](https://github.com/CrocSwap/integer-mult-bounds/pull/5751) +supplies an earlier charged common meeting. +[#7355](https://github.com/CrocSwap/integer-mult-bounds/pull/7355) +supplies the reused rational row walk and +[#7339](https://github.com/CrocSwap/integer-mult-bounds/pull/7339) +the paired-support helper retained for the conditional suffix branch. +The [original capped result](https://github.com/CrocSwap/integer-mult-bounds/discussions/7111#discussioncomment-19555656) +records the first 16 forms and the residual. OpenAI Codex and +subagents materially assisted proof, implementation, independent +verification and packaging. diff --git a/research/p104-two-paid-subdivision-bank-bound/SOURCES.json b/research/p104-two-paid-subdivision-bank-bound/SOURCES.json new file mode 100644 index 0000000000..e8c2f265cd --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/SOURCES.json @@ -0,0 +1,18 @@ +{ + "base_commit": "e54523517d0f03e58352e647c403a5af3e525a57", + "files": [ + { + "git_blob": "75d77b328ea02ded535e7f23aee5b1e55d0bb1a8", + "path": "certificates/selected-result.json", + "sha256": "154c3d30455d778fd3343b6b4851f0fa4665f0f7625b0adb3675e2bafbbf6bf1", + "usage": "provenance" + }, + { + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "path": "docs/research/agent-task-catalog.json", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81", + "usage": "provenance" + } + ], + "schema_version": 1 +} diff --git a/research/p104-two-paid-subdivision-bank-bound/TASK.json b/research/p104-two-paid-subdivision-bank-bound/TASK.json new file mode 100644 index 0000000000..5a012181b1 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/TASK.json @@ -0,0 +1,117 @@ +{ + "actual_scope": "On exact #7334, the common rank-four or rank-five banks formed by subdividing two pre-existing paid rank-two public MOVEs in their fixed incident-free chronology, charging both subdivisions and one productive rank-nine 4+5 split.", + "ai_assistance": "OpenAI Codex and subagents materially assisted proof, implementation, independent verification and packaging.", + "author": "P104 two-paid-subdivision bank research", + "base_commit": "e54523517d0f03e58352e647c403a5af3e525a57", + "bottleneck_link": "A productive split may improve the binding complex bill only if an intermediate public bank supplies a pure cohort prefix and suffix with exact unit pairing.", + "budget_minutes": 10, + "evidence": "Replays 108 comparisons and 38,967 typed cuts into 17 normalized support forms. The 16 earlier modular forms and one residual exact and independently checked form all fail exterior prefix rank.", + "open_questions": [ + { + "blocked_by": "The simultaneous equal-span two-subdivision bank has no pure prefix in the frozen stock.", + "first_step": "Reprice one exact paid chronology exchange that changes both public itineraries, then freeze the two role-pair windows and compute the incident chart compatibility before any build.", + "question": "Can a two-role change to paid chronology remove a child while preserving both original public output bindings?", + "why_it_matters": "A paid debit can improve the binding complex invoice without requiring a new productive split bank." + } + ], + "original_card": { + "acceptance_gate": "An exact arbitrary-input identity, source/target frame availability and restoration at the chosen cut, plus the complete channel+correction+idle/hosting bill or an explicit favorable bound. The native channel alone is not a supplier. A scoped local result may be retained without a complete supplier. Expanding it into further construction rounds requires the family-level budget and obligation gate in research-family-status.md; an optimistic passing relaxation alone is not acceptance.", + "allowed_variations": [ + "One exact source head, helper/cut region or quantified proposition and changed hypothesis; check live handoffs first. Different seeds are not different scopes." + ], + "bottleneck_link": "Judge the actual current supplier contract and complete signed target/paid bill; frozen-profile ceilings require an applicability proof.", + "existing_checks": [ + { + "evidence": "research/p104-literal-slot-defect/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "scope": "PR #4133: literal-slot defect", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "source_commit": "88666f1dee93fbd85b31fd5d6f91a219e111b5f4", + "status": "author-checked" + }, + { + "evidence": "research/p104-uniform-commutation-gap/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "scope": "PR #4136: uniform commutation gap", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "source_commit": "281ce601a8be9db470de630759179c23e1dfaa88", + "status": "author-checked" + }, + { + "evidence": "research/p104-uniform-encoding-gap/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "scope": "PR #4140: uniform encoding gap", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "source_commit": "de25c6525aa866962309df5d107b32d55e6e5628", + "status": "author-checked" + }, + { + "evidence": "research/p104-source-chart-shortcut/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "scope": "PR #4153: source-chart shortcut exhausts its optimistic allowance", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "source_commit": "9123241fea53df77e51ffe30d9aca1625d4bf3a8", + "status": "author-checked" + }, + { + "evidence": "research/p104-fiber-tag-seam/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "scope": "PR #4154: fiber-tag seam mismatch", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "source_commit": "4ffcdaee5d6255a9cea1fe53a5424435068089d0", + "status": "author-checked" + }, + { + "evidence": "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md", + "remaining": "The next experiment must identify uncovered source-specific work. Successor archive intake does not transfer this admission.", + "scope": "Selected PR5599: complete helper-subspace construction and independent caller replay; five framework assumptions remain.", + "selected_record_sha256": "2a0220e866417774606e0f991e41b9c1d26b1f43b97857238cf478dbc7d330b5", + "source_commit": "09dd0965711ca7eeb169057a420abab1c9052137", + "status": "reviewed" + } + ], + "first_experiment": "Start with the selected #5599 emitted word and review pending #5718 distinct input/output bases plus #5717/#5719 coverage before claiming work. Pick one uncovered source word, helper group and cut region. Prove the arbitrary-input relation and legal entry/exit corrections, then compare full target and paid profiles. Reject if completion, owned lifetimes or consumer costs repay the gain. A static pairing rank alone is not a physical split.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_selected_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read revision 8, the selected review and live exact-source handoffs. Then follow this card's bounded first_experiment.", + "scope": "Source-bound orientation only, not a supplier replay or theorem proof." + }, + "id": "p104-side-correction", + "methods": [ + "Construct and independently check one source-bound instance of the stated first experiment.", + "Seek an exact counterexample or target-specific complete-budget obstruction to that same proposed change." + ], + "overlap_terms": [ + "P104", + "helper basis", + "helper split", + "5718", + "dyadic capacity" + ], + "question": "Can joint helper bases and a legal causal split improve the complete P104 productive/paid invoice?", + "scope_change_triggers": [ + "Changing source head, helper/cut domain, operation alphabet or caller boundary without recording the new scope.", + "Treating an archived proposal or local numerical pass as complete supplier admission." + ], + "starting_points": [ + "docs/research/current-priorities.md", + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md", + "research/p104-helper-subspace-splits/README.md", + "research/dyadic-helper-channel-capacity/README.md" + ] + }, + "outcome": "negative-result", + "priority_revision": 8, + "schema_version": 1, + "scope_change_reason": "Creates a bank with two simultaneous paid subdivisions. Earlier #7362 and #7364 tests use a single moved role against original bank stock.", + "scope_status": "changed", + "stop_rule": "Replay the frozen 285 quotient lines and 16 original support forms within their historical limits. Test only the residual nine typed cuts (one form) at exact rational and 65537, at most 76,466 events and 25 seconds per check; skip suffix and construction on full prefix rank.", + "task_id": "p104-side-correction" +} diff --git a/research/p104-two-paid-subdivision-bank-bound/VERIFICATION.md b/research/p104-two-paid-subdivision-bank-bound/VERIFICATION.md new file mode 100644 index 0000000000..bdc7a0f0b9 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/VERIFICATION.md @@ -0,0 +1,23 @@ +# Verification + +Direct CPython 3.12.14 replay exited 0 in 6.07 seconds. A +relocated Git-free copy with an empty inherited environment +exited 0 in 5.89 seconds and matched all eight regenerated +receipts byte for byte. Both deliberately altered inputs +returned exit 1 before generating output. The residual price +control runs without the native word present. + +The original stock replay checks 285 quotient lines, 108 pair +comparisons and 38,967 typed cuts. Its modular screen excludes +all 16 selected forms and preserves the capped key. The exact +and independent residual checks exhaust three cuts and nine +raw keys. They agree on the original axes [0, 890] and the +nonzero determinant, with zero unresolved forms in the +17-form scope. Each run verifies the applicable arithmetic +and ownership controls. Suffix, signed construction, whole +caller replay and a fresh frontier claim are outside this +prefix certificate. + +The [receipt hashes](receipts/SHA256.json) bind the exact +outputs. See [README.md](README.md) for the checkout-relative +command and [PROVENANCE.json](PROVENANCE.json) for source pins. diff --git a/research/p104-two-paid-subdivision-bank-bound/VERIFY.json b/research/p104-two-paid-subdivision-bank-bound/VERIFY.json new file mode 100644 index 0000000000..a3822114df --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/VERIFY.json @@ -0,0 +1,19 @@ +{ + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-B", + "{package}/replay.py" + ], + "checks": "Authenticate the exact signed quote and #7362 geometry. Reproduce all 17 support-form exclusions, compare exact residual minor at 65537, and reject mutated dependencies.", + "timeout_seconds": 125 + } + ], + "inputs": [], + "python": "3.12", + "requirements": [], + "schema_version": 1, + "status": "ready" +} diff --git a/research/p104-two-paid-subdivision-bank-bound/engines/r120/check.py b/research/p104-two-paid-subdivision-bank-bound/engines/r120/check.py new file mode 100644 index 0000000000..d0ede1b1c1 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/engines/r120/check.py @@ -0,0 +1,146 @@ +"""Check exact support of the frozen virtual two-paid-subdivision bank.""" +from collections import defaultdict +from fractions import Fraction +from gzip import decompress +from hashlib import sha256 +from json import dumps, loads +from pathlib import Path +from runpy import run_path +from signal import SIGALRM, alarm, signal +from time import monotonic + +ROOT = Path(__file__).resolve().parents[1] +PINS = { + "plan/PRICE.json": "b29ff21d96485317003db5d06d3332f71e7158de4fafbbc6b300a45fc5d5e3c6", + "inputs/7334-WORD.json.gz": "4b9fd1187b34ed97c3ac0c760d73531735a5d0ebc5b4d4ab4377160b20d9bb2a", + "inputs/R92-PRICE.json": "05d7a5ebdd2eeedd6c8f534e8e2eeac22484daf9f387f4a6b88cc9eed22a6b8f", + "inputs/donor_span.py": "4d5306e2c0b7e91c79d22c82e8e760aed2c311979298c558e631975d4d1ae5b1", + "inputs/paired_support.py": "38c796cbe1a73f386177faf88cd53294d4b911f6cde7fd47cd9fcef3b558373f", +} +PAYLOAD = "9aa8d6b054ba7eb2289d052c1079b16be518d2f0fbfb244569fa18e3733acdac" + + +def checked(rel): + data = (ROOT / rel).read_bytes() + if sha256(data).hexdigest() != PINS[rel]: + raise ValueError(f"changed dependency {rel}") + return data + + +def unique(items): + doc = dict(items) + if len(doc) != len(items): + raise ValueError("duplicate JSON key") + return doc + + +def span(basis): + out = {0} + for row in basis: + assert row not in out + out |= {row ^ item for item in out} + return out + + +def contacts(event, role): + return role in event[1:3] if event[0] in ("ADD", "COPY") else event[1] == role + + +def geometry(word, price): + program = word["program"] + assert (len(program), word["public"], word["owned_fields"]) == (76466, 1501, 68) + moves, claims = {}, {} + for record in price["intervals"]: + assert record["chart"] is None and [record["first"], record["last"]] == [42958, 42960] + midway = span(record["basis"]) + assert len(midway) == 32 and all(midway != span(frame) for frame in word["frames"]) + claims[record["pair"]] = sorted(midway) + for clock, role, first, last, low, high in (record["left"], record["right"]): + assert program[clock] == ["MOVE", role, low, high, False] + a, c = (span(word["frames"][index]) for index in (low, high)) + assert (len(a), len(c)) == (16, 64) and a < midway < c + assert not any(contacts(event, role) for event in program[first:clock]) + assert not any(contacts(event, role) for event in program[clock + 1:last]) + assert contacts(program[first - 1], role) and contacts(program[last], role) + assert [word["initial"][role], word["final"][role]] == [3, 127] + moves[role] = [clock, program[clock], first, last] + assert sorted(claims) == [22, 33, 44] and len({tuple(v) for v in claims.values()}) == 3 + return moves, claims + + +def witness(rows, cohort): + a, b = ({i: v for i, v in row.items() if i not in cohort} for row in rows) + axes = sorted(a.keys() | b.keys()) + if not axes: + return None + i = axes[0] + for j in axes[1:]: + sub = [[a.get(i, 0), a.get(j, 0)], [b.get(i, 0), b.get(j, 0)]] + det = sub[0][0] * sub[1][1] - sub[0][1] * sub[1][0] + if det: + return {"axes": [i, j], "matrix": [list(map(str, row)) for row in sub], + "determinant": str(det)} + return None + + +def stop(*_): + raise TimeoutError("hard 25-second gate") + + +def main(): + assert __debug__ + assert witness([{1: Fraction(1, 2)}, {2: Fraction(-3)}], set())["determinant"] == "-3/2" + assert witness([{1: Fraction(1, 2)}, {1: Fraction(-3)}], set()) is None + signal(SIGALRM, stop) + alarm(25) + deadline = monotonic() + 23 + price = loads(checked("plan/PRICE.json"), object_pairs_hook=unique) + raw = decompress(checked("inputs/7334-WORD.json.gz")) + assert sha256(raw).hexdigest() == PAYLOAD + word = loads(raw, object_pairs_hook=unique) + prior = loads(checked("inputs/R92-PRICE.json"), object_pairs_hook=unique) + cohort = set(prior["endpoint_cohort"]) + assert len(cohort) == 615 + checked("inputs/donor_span.py") + checked("inputs/paired_support.py") + snapshot = run_path(str(ROOT / "inputs/donor_span.py"))["snapshot"] + roles = price["row"]["bank"]["public"] + cuts = sorted({key[0] for key in price["raw_keys"]}) + assert roles == [572, 1255] and cuts == [42958, 42959, 42960] + moves, spans = geometry(word, price) + bank_requests = defaultdict(set) + _, rows = snapshot(word, bank_requests, {t: set(roles) for t in cuts}, deadline) + by_cut = {t: [rows[t, r] for r in roles] for t in cuts if all((t, r) in rows for r in roles)} + assert not by_cut or all(v == next(iter(by_cut.values())) for v in by_cut.values()) + first = by_cut.get(cuts[0]) + proof = witness(first, cohort) if first is not None else None + unresolved = [key for key in price["raw_keys"] if proof is None or key[0] not in by_cut] + status = "prefix exclusion" if proof and not unresolved else "prefix rank drop" if first and not proof else "capped" + if status == "prefix rank drop": + pair = run_path(str(ROOT / "inputs/paired_support.py")) + # Only literal prefix rows are transported into the virtual bank. The + # two paid subpaths act as identities in normalized row coordinates. + prefix_bank = dict(zip(roles, first, strict=True)) + _, in_basis = pair["pure_kernel"](prefix_bank, cohort, deadline) + suffixes, _ = pair["suffix_rows"](word, {cuts[0]: prefix_bank}, deadline) + if cuts[0] in suffixes: + _, out_basis = pair["pure_kernel"](suffixes[cuts[0]], cohort, deadline) + exact = pair["paired"](in_basis, out_basis, deadline) + if exact is None and len(by_cut) == len(cuts): + status, unresolved = "no rational unit pairing", [] + elif exact: + status = "exact support survivor" + proof = {name: {i: str(v) for i, v in row.items()} for name, row in exact.items()} + alarm(0) + print(dumps({ + "head": price["head"], "caller": price["caller"], "pins": PINS, + "status": status, "moves": moves, "fresh_spans": spans, + "cut_count": len(by_cut), "prefix_events": max(by_cut, default=0), + "raw_keys": price["raw_keys"], "representative_keys": price["representative_keys"], + "support_forms": 1, "rows_nnz": list(map(len, first)) if first else None, + "proof": proof, "unresolved": unresolved, + }, indent=2, sort_keys=True)) + + +if __name__ == "__main__": + main() diff --git a/research/p104-two-paid-subdivision-bank-bound/engines/r120/compare.py b/research/p104-two-paid-subdivision-bank-bound/engines/r120/compare.py new file mode 100644 index 0000000000..921ce51960 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/engines/r120/compare.py @@ -0,0 +1,63 @@ +"""Check the exact primary minor on all three independent modular prefixes.""" +from fractions import Fraction +from hashlib import sha256 +from json import dumps, loads +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +PINS = { + "lead/RESULT.json": "3fd4f688b25bcd213ff3bccdedbfeb4d254d125be90456f8bef686ef06fae664", + "independent/RESULT.json": "94c051452dd777b23913f5dda60f170ae82ae8b3d989bef9ba9687acfccad1fb", + "plan/PRICE.json": "b29ff21d96485317003db5d06d3332f71e7158de4fafbbc6b300a45fc5d5e3c6", +} +PRIME = 65537 + + +def checked(name): + raw = (ROOT / name).read_bytes() + if sha256(raw).hexdigest() != PINS[name]: + raise ValueError("changed dependency " + name) + return loads(raw) + + +def residue(value): + q = Fraction(value) + return q.numerator * pow(q.denominator, -1, PRIME) % PRIME + + +def main(): + assert __debug__ + lead, independent, price = map(checked, PINS) + assert lead["head"] == independent["head"] == price["head"] + assert independent["prime"] == PRIME + assert lead["raw_keys"] == independent["raw_excluded"] == price["raw_keys"] + assert not lead["unresolved"] and not independent["unresolved"] + assert independent["alias"]["shared_normalized_prefix"] + for role, (previous, at, following) in independent["alias"]["nearest_contacts"].items(): + assert lead["moves"][role][0] == at + assert lead["moves"][role][2:] == [previous + 1, following] + for interval in price["intervals"]: + span = {0} + for v in interval["basis"]: + assert v not in span + span |= {v ^ u for u in span} + assert sorted(span) == lead["fresh_spans"][str(interval["pair"])] + axes = lead["proof"]["axes"] + expected_matrix = [[residue(v) for v in row] for row in lead["proof"]["matrix"]] + expected_determinant = residue(lead["proof"]["determinant"]) + cuts = [] + for row in independent["rows"]: + assert row["rank"] == 2 and len(axes) == len(set(axes)) == 2 + actual = [[vector.get(str(j), 0) for j in axes] for vector in row["exterior"]] + determinant = (actual[0][0] * actual[1][1] - actual[0][1] * actual[1][0]) % PRIME + assert actual == expected_matrix and determinant == expected_determinant != 0 + cuts.append(row["cut"]) + assert len(cuts) == 3 + print(dumps(dict(pins=PINS, cut_agreement=cuts, raw_keys_agreement=len(price["raw_keys"]), + primary_exact_axis=axes, primary_axes_matrix_mod_65537=expected_matrix, + primary_axes_det_mod_65537=expected_determinant, unresolved=0), + indent=2, sort_keys=True)) + + +if __name__ == "__main__": + main() diff --git a/research/p104-two-paid-subdivision-bank-bound/engines/r120/freeze.py b/research/p104-two-paid-subdivision-bank-bound/engines/r120/freeze.py new file mode 100644 index 0000000000..2ba37e1c43 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/engines/r120/freeze.py @@ -0,0 +1,97 @@ +"""Authenticate and price the one unvisited two-paid subdivision support bank.""" +from collections import Counter +from fractions import Fraction +from hashlib import sha256 +from json import dumps, loads +from pathlib import Path +from runpy import run_path + +ROOT = Path(__file__).resolve().parents[1] +PINS = { + "inputs/BENCHMARK.json": "004331cff6ca8644489d7b7084e5c67439d74a2d283e4d64a9fdb9f88679253d", + "inputs/R92-PRICE.json": "05d7a5ebdd2eeedd6c8f534e8e2eeac22484daf9f387f4a6b88cc9eed22a6b8f", + "inputs/R99-PRICE.json": "0eba831b917331f7a84f4d8a5da726577ed516f04c5f1b94671e031dd2c0b3b4", + "inputs/R99-GEOMETRY.json": "c89976cd5f808c29ab13770e262b2d216f56b4e1703ef836c3438d60f40eb11b", + "inputs/R99-SELECTION.json": "3a6f588eb597e56abfbfe568319fc81294d16d37f03f8b6159ba5b133dc2f416", + "inputs/R99-MODULAR.json": "4d24d44be888a52ac93e589bf7a15978317395b0d3ddc6d96dd2e6d14bde5b44", + "inputs/pricing.py": "f4d0b6c9314b838d882d6d06020f24881c19a3fda97a7c00df87b1e920785182", +} + + +def unique(items): + doc = dict(items) + if len(doc) != len(items): + raise ValueError("duplicate JSON key") + return doc + + +def hist(data): + return Counter({int(rank): count for rank, count in data.items()}) + + +def main(): + docs = [] + for path, expected in PINS.items(): + raw = (ROOT / path).read_bytes() + if sha256(raw).hexdigest() != expected: + raise ValueError(f"changed dependency {path}") + if path.endswith(".json"): + docs.append(loads(raw, object_pairs_hook=unique)) + bench, prior, old_price, geo, select, modular = docs + assert len({d["head"] for d in docs}) == 1 + assert select["geometry_sha256"] == PINS["inputs/R99-GEOMETRY.json"] + assert geo["stage"] == "complete" and geo["timeout"] is None and geo["visited_cuts"] == 38967 + assert modular["counts"] == {"prefix exclusion": 16} + assert len(select["unselected"]) == 1 and select["unselected"] == modular["unvisited"] + row, = select["unselected"] + assert row["anchors"] == [[42958, 1255], [43050, 572]] + assert row["bank"]["key"] == [42958, 22] and row["chart"] is None + intervals = [geo["pair_intervals"][i] for i in (22, 33, 44)] + assert all(w["chart"] is None and w["first"] == 42958 and w["last"] == 42960 for w in intervals) + representatives = [row["bank"]["key"], *row["aliases"]] + raw_keys = [[t, w["pair"]] for t in range(42958, 42961) for w in intervals] + assert representatives == raw_keys[:6] + assert row["bank"]["public"] == row["bank"]["pivots"] == [572, 1255] + assert row["bank"]["owned"] == [] + assert all(r in prior["endpoint_cohort"] for r in (572, 1255)) + assert len(prior["endpoint_cohort"]) == 615 + + paid, target = hist(prior["old_paid"]), hist(prior["old_targets"]) + old = target.copy() + old.subtract(paid) + paid.update({1: 68, 2: -34}) + target.update({4: 17, 5: 17, 9: -17}) + assert paid == hist(old_price["new_paid"]) and target == hist(old_price["new_targets"]) + new = target.copy() + new.subtract(paid) + assert sum(r * n for r, n in old.items()) == sum(r * n for r, n in new.items()) == 1424 + change = new.copy() + change.subtract(old) + cost = run_path(str(ROOT / "inputs/pricing.py"))["cost"] + at, probe, fixed = map(Fraction, (old_price["old_crossing_upper"], old_price["probe"], old_price["moonshot"])) + assert at == Fraction(bench["crossing"][1]) + assert at < probe < Fraction(old_price["retained_bit_premise"]) + net = cost(change, at) + candidate = cost(new, probe) + assert list(map(str, net)) == old_price["one_net_at_crossing"] + assert list(map(str, candidate)) == old_price["complete_probe"] and candidate[0] > 0 + extra = cost(new, at)[1] - 1 + assert extra < 0 + print(dumps({ + "pins": PINS, "head": bench["head"], "caller": old_price["caller_head"], + "word_sha256": old_price["word_sha256"], "row": row, "intervals": intervals, + "representative_keys": representatives, "raw_keys": raw_keys, + "paid_delta": old_price["paid_delta"], "productive_delta": old_price["target_delta"], + "paid": sum(paid.values()), "productive": sum(target.values()), "rank_surplus": 1424, + "old_crossing_upper": str(at), "probe": str(probe), "probe_complete_margin": list(map(str, candidate)), + "one_compatible_edit_net": list(map(str, net)), "extra_rank_one_upper": str(extra), + "fixed_target": str(fixed), "fixed_target_complete_upper": str(cost(new, fixed)[1]), + "caps": {"raw_keys": 9, "support_forms": 1, "events_per_direction": 76466, + "runner_seconds": 25, "exact_pairs": 1, "exact_seconds": 35, "prototype_seconds": 120}, + "scope": "One shared fresh rank-five bank, two fully charged rank-two subdivisions, one productive 4+5 split.", + }, sort_keys=True, indent=2)) + + +if __name__ == "__main__": + assert __debug__ + main() diff --git a/research/p104-two-paid-subdivision-bank-bound/engines/r120/prefix.py b/research/p104-two-paid-subdivision-bank-bound/engines/r120/prefix.py new file mode 100644 index 0000000000..014c5b32de --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/engines/r120/prefix.py @@ -0,0 +1,184 @@ +"""Independent second-prime exterior prefix and alias check for the last R99 bank.""" +from argparse import ArgumentParser +from bisect import bisect_left +from collections import Counter +from functools import cache +from gzip import decompress +from hashlib import sha256 +from json import dumps, loads +from pathlib import Path +from runpy import run_path +from signal import SIGALRM, alarm, signal +from time import monotonic + +ROOT = Path(__file__).resolve().parents[1] +HEAD = "aaeec8c0acf01e99a5f331ef363a698d9c084ace" +CALLER = "07a76c5e2738882c0cb322278e56f6cae3c9885d" +WORD = "4b9fd1187b34ed97c3ac0c760d73531735a5d0ebc5b4d4ab4377160b20d9bb2a" +PAYLOAD = "9aa8d6b054ba7eb2289d052c1079b16be518d2f0fbfb244569fa18e3733acdac" +PINS = { + "plan/PRICE.json": "b29ff21d96485317003db5d06d3332f71e7158de4fafbbc6b300a45fc5d5e3c6", + "inputs/R92-PRICE.json": "05d7a5ebdd2eeedd6c8f534e8e2eeac22484daf9f387f4a6b88cc9eed22a6b8f", + "inputs/second_prime.py": "21dbd96192e1f60c00ceddba01a7e8d0ddd7d6ad7da4ad3ed22ef2e47cc589c4", + "inputs/7334-WORD.json.gz": WORD, +} +MOVERS = [572, 1255] +ANCHORS = {572: 43050, 1255: 42958} +LOW, HIGH = 762, 869 +CUTS, PAIRS = (42958, 42959, 42960), (22, 33, 44) +EVENTS, SECONDS, PRIME = 76466, 25, 65537 + + +def checked(root, rel): + data = (root / rel).read_bytes() + if sha256(data).hexdigest() != PINS[rel]: + raise ValueError("changed dependency " + rel) + return data + + +def freeze(root, engine): + load = lambda name: loads(checked(root, name), object_pairs_hook=engine["unique"]) + price = load("plan/PRICE.json") + cohort_data = load("inputs/R92-PRICE.json") + cohort = set(cohort_data["endpoint_cohort"]) + assert price["head"] == cohort_data["head"] == HEAD and price["caller"] == CALLER + assert price["pins"]["inputs/R92-PRICE.json"] == PINS["inputs/R92-PRICE.json"] + assert price["word_sha256"] == WORD and len(cohort) == 615 and set(MOVERS) <= cohort + caps = price["caps"] + assert (caps["events_per_direction"], caps["raw_keys"], caps["support_forms"], caps["runner_seconds"]) == (EVENTS, 9, 1, SECONDS) + assert price["raw_keys"] == [[t, i] for t in CUTS for i in PAIRS] + assert price["row"]["bank"]["public"] == price["row"]["bank"]["pivots"] == MOVERS + assert not price["row"]["bank"]["owned"] and price["row"]["chart"] is None + assert sorted(price["row"]["anchors"]) == sorted([t, r] for r, t in ANCHORS.items()) + return price, cohort + + +def geometry(word, price, engine, span): + frames = word["frames"] + low, high = span(LOW), span(HIGH) + assert len(low) == 16 and len(high) == 64 and low < high + spans = set() + for interval in price["intervals"]: + key, basis = interval["pair"], interval["basis"] + assert key in PAIRS and interval["chart"] is None + assert [interval["first"], interval["last"]] == [CUTS[0], CUTS[-1]] + assert len(basis) == 5 + mid = frozenset(engine["span"](basis)) + assert len(mid) == 32 and low < mid < high + spans.add(mid) + assert len(spans) == 3 + # A fresh chart has no pre-existing physical occupant or matching old label. + catalogue = {span(chart) for chart, frame in enumerate(frames) if len(frame) == 5} + assert spans.isdisjoint(catalogue) + for r, at in ANCHORS.items(): + assert word["program"][at] == ["MOVE", r, LOW, HIGH, False] + assert (word["initial"][r], word["final"][r]) == (3, 127) + return len(catalogue) + + +def sweep(word, price, cohort, engine, deadline, progress, rows, denoms): + n, owned, tape = word["public"], word["owned_fields"], word["program"] + assert (n, owned, len(tape)) == (1501, 68, EVENTS) + + @cache + def span(chart): + return frozenset(engine["span"](word["frames"][chart])) + + catalogue = geometry(word, price, engine, span) + state = word["initial"] + [None] * owned + vectors = [{j: 1} for j in range(n)] + [None] * owned + fresh, incidents = set(), {r: [] for r in MOVERS} + for t in range(EVENTS + 1): + progress["first_unvisited_cut"] = t + if (t % 128 == 0 or t in CUTS) and monotonic() >= deadline: + raise TimeoutError("literal prefix cap") + if t in CUTS: + assert [state[r] for r in MOVERS] == [LOW, LOW if t == CUTS[0] else HIGH] + proof = engine["classify"](MOVERS, vectors, cohort) + exterior = [{j: a for j, a in sorted(vectors[r].items()) if j not in cohort} for r in MOVERS] + minor = None + if proof["rank"] == 2: + axes = proof["minor_axes"] + matrix = [[v.get(j, 0) for j in axes] for v in exterior] + det = (matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]) % PRIME + assert det == proof["determinant"] != 0 and set(axes).isdisjoint(cohort) + minor = {"axes": axes, "matrix": matrix, "determinant": det} + rows[t] = dict(cut=t, old_charts=[state[r] for r in MOVERS], + full_rows=[dict(vectors[r]) for r in MOVERS], exterior=exterior, + rank=proof["rank"], minor=minor) + if t == EVENTS: + assert state == word["final"] + [None] * owned and not fresh + progress["first_unvisited_cut"] = None + break + event = tape[t] + op, d, *args = event + touched = (d, args[0]) if op in ("ADD", "COPY") else (d,) + for r in touched: + if r in incidents: + incidents[r].append(t) + if op == "MOVE": + a, b, is_owned = args + assert span(a) < span(b) or is_owned and span(b) < span(a) + engine["apply"](event, state, vectors, fresh, n, denoms, False) + progress["events"] += 1 + + neighbors = {} + for r, times in incidents.items(): + i = bisect_left(times, ANCHORS[r]) + assert 0 < i < len(times) - 1 and times[i] == ANCHORS[r] + neighbors[r] = [times[i - 1], times[i], times[i + 1]] + assert neighbors == {572: [42955, 43050, 43051], 1255: [42957, 42958, 42960]} + assert [max(row[0] + 1 for row in neighbors.values()), min(row[2] for row in neighbors.values())] == [CUTS[0], CUTS[-1]] + assert [t for t in range(CUTS[0], CUTS[-1]) if any(t in xs for xs in incidents.values())] == [42958] + # The only incident event inside the half-open alias corridor is a normalized MOVE. + assert tape[42958] == ["MOVE", 1255, LOW, HIGH, False] + assert all(rows[t]["full_rows"] == rows[CUTS[0]]["full_rows"] for t in CUTS) + return dict(nearest_contacts=neighbors, transition_events=[[t, tape[t]] for t in range(CUTS[0], CUTS[-1])], + distinct_fresh_rank_five_spaces=3, existing_distinct_rank_five_spaces=catalogue, + shared_normalized_prefix=True) + + +def main(): + parser = ArgumentParser() + parser.add_argument("--root", type=Path, default=ROOT) + parser.add_argument("--controls-only", action="store_true") + args = parser.parse_args() + assert __debug__ + name = "inputs/second_prime.py" + checked(args.root, name) + engine = run_path(str(args.root / name)) + controls = engine["controls"]() + assert engine["PRIME"] == PRIME + price, cohort = freeze(args.root, engine) + if args.controls_only: + print(dumps(dict(controls=controls, raw_keys=price["raw_keys"]), indent=2)) + return 0 + + def stop(*_): + raise TimeoutError("hard 25-second cap") + + signal(SIGALRM, stop) + alarm(SECONDS) + progress = {"events": 0, "first_unvisited_cut": 0} + rows, denoms, alias, timeout = {}, set(), None, None + try: + payload = decompress(checked(args.root, "inputs/7334-WORD.json.gz")) + assert sha256(payload).hexdigest() == PAYLOAD + word = loads(payload, object_pairs_hook=engine["unique"]) + alias = sweep(word, price, cohort, engine, monotonic() + 23, progress, rows, denoms) + except TimeoutError as exc: + timeout = str(exc) + finally: + alarm(0) + proven = [key for key in price["raw_keys"] if alias is not None and rows[key[0]]["rank"] == 2] + unresolved = [key for key in price["raw_keys"] if key not in proven] + print(dumps(dict(head=HEAD, caller=CALLER, pins=PINS, price_caps=price["caps"], controls=controls, + prime=PRIME, public=MOVERS, projection_cohort_size=len(cohort), rows=list(rows.values()), + progress=progress, denominator_units=sorted(denoms), alias=alias, timeout=timeout, + counts=Counter("full prefix rank" if r["rank"] == 2 else "prefix drop" for r in rows.values()), + raw_excluded=proven, unresolved=unresolved), indent=2, sort_keys=True)) + return 2 if timeout else 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/research/p104-two-paid-subdivision-bank-bound/engines/r99/geometry.py b/research/p104-two-paid-subdivision-bank-bound/engines/r99/geometry.py new file mode 100644 index 0000000000..4b304b1d39 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/engines/r99/geometry.py @@ -0,0 +1,229 @@ +"""Find simultaneous mover-disjoint paid subdivisions with one common span.""" +from bisect import bisect_left +from collections import defaultdict +from gzip import decompress +from hashlib import sha256 +from itertools import combinations +import json +from pathlib import Path +from signal import SIGALRM, alarm, signal +from time import monotonic + +ROOT = Path(__file__).resolve().parents[1] +PINS = { + "lead/PRICE.json": "0eba831b917331f7a84f4d8a5da726577ed516f04c5f1b94671e031dd2c0b3b4", + "inputs/R92-GEOMETRY.json": "e9f93f3271855012b2de705c70f186f78c31a369d28110e92c5f2ffadae209b3", + "inputs/R92-PRICE.json": "05d7a5ebdd2eeedd6c8f534e8e2eeac22484daf9f387f4a6b88cc9eed22a6b8f", + "inputs/7334-WORD.json.gz": "4b9fd1187b34ed97c3ac0c760d73531735a5d0ebc5b4d4ab4377160b20d9bb2a", +} +PAYLOAD = "9aa8d6b054ba7eb2289d052c1079b16be518d2f0fbfb244569fa18e3733acdac" + + +def unique(pairs): + result = dict(pairs) + if len(result) != len(pairs): + raise ValueError("duplicate JSON key") + return result + + +def checked(name): + value = (ROOT/name).read_bytes() + if sha256(value).hexdigest() != PINS[name]: + raise ValueError(f"changed dependency {name}") + if name.endswith(".gz"): + value = decompress(value) + assert sha256(value).hexdigest() == PAYLOAD + return json.loads(value,object_pairs_hook=unique) + + +def space(basis): + values = {0} + for v in basis: + assert v not in values + values.update(v^w for w in tuple(values)) + return frozenset(values) + + +def basis_of(span): + values = {0} + basis = [] + for v in span: + if v not in values: + values.update(v^w for w in tuple(values)) + basis.append(v) + assert values == set(span) + return basis + + +def incident(event): + op,d,*args = event + return (d,args[0]) if op in ("ADD","COPY") else (d,) + + +def window(clocks,at,end): + i = bisect_left(clocks,at) + assert clocks[i] == at + return (clocks[i-1]+1 if i else 0, clocks[i+1] if i+1 < len(clocks) else end) + + +def controls(): + assert incident(["COPY",5,2,"-3/2",3]) == (5,2) + assert window([0,3,5],3,7) == (1,5) + assert basis_of((0,1,4,5)) == [1,4] + assert space([1,4]) == frozenset((0,1,4,5)) + assert space([4,5]) == space([1,4]) + return ["source contact", "inclusive pre-event windows", "canonical span", "basis-invariant equality"] + + +def stopped(*_): + raise TimeoutError("hard runner limit") + + +def cap(condition,label): + if condition: + raise TimeoutError(label) + + +def main(): + assert __debug__ + price = checked("lead/PRICE.json") + limits = price["limits"] + signal(SIGALRM,stopped) + alarm(limits["geometry_seconds"]) + deadline = monotonic()+18 + out = {"stage":"authenticate","visited_placements":0,"pair_comparisons":0,"scheduled_cuts":0, + "visited_cuts":0,"owned_rejections":0,"representatives":[],"pair_intervals":[], + "outside_window":[],"first_unvisited_event":None,"current_pair":None} + reason = None + try: + previous = checked("inputs/R92-GEOMETRY.json") + prior_price = checked("inputs/R92-PRICE.json") + word = checked("inputs/7334-WORD.json.gz") + cohort = set(prior_price["endpoint_cohort"]) + program = word["program"] + n = word["public"] + size = len(program) + assert (n,word["owned_fields"],size) == (1501,68,limits["events_each"]) + out["stage"] = "mover contacts" + clocks = defaultdict(list) + for t,event in enumerate(program): + if t % 128 == 0: + out["first_unvisited_event"] = t + cap(monotonic()>=deadline,"mover contacts deadline") + for role in incident(event): + clocks[role].append(t) + frames = word["frames"] + spaces = [space(f) for f in frames] + labels = defaultdict(list) + for chart,span in enumerate(spaces): + if len(frames[chart]) in (4,5): + labels[tuple(sorted(span))].append(chart) + groups = defaultdict(list) + out["stage"] = "group frozen quotient lines" + for p in previous["raw_placements"]: + at,role,rank,v = (p["move_clock"],p["mover"],p["rank"],p["quotient_representative"]) + op,d,a,c,owned = program[at] + assert op == "MOVE" and d == role and d in cohort and not owned + lo,hi = spaces[a],spaces[c] + mid = lo | {x^v for x in lo} + assert lo < mid < hi and len(mid) == 2**rank + span = tuple(sorted(mid)) + assert [r["chart"] for r in p["labels"]] == labels[span] + first,last = window(clocks[role],at,size) + groups[span].append((at,role,first,last,a,c)) + out["visited_placements"] += 1 + assert out["visited_placements"] == limits["placement_count"] + out["distinct_spans"] = len(groups) + out["pair_stock"] = sum(len(entries)*(len(entries)-1)//2 for entries in groups.values()) + out["stage"] = "pair windows" + tasks = defaultdict(list) + for span,rows in sorted(groups.items()): + for left,right in combinations(sorted(rows),2): + out["current_pair"] = [left[0],right[0],list(span)] + cap(out["pair_comparisons"]>=limits["pair_comparisons"] or monotonic()>=deadline,"pair cap") + out["pair_comparisons"] += 1 + assert left[0] != right[0] and left[1] != right[1] + first,last = max(left[2],right[2]),min(left[3],right[3]) + if first > last: + out["outside_window"].append(out["current_pair"]) + continue + for chart in labels[span] or [None]: + pair_id = len(out["pair_intervals"]) + out["pair_intervals"].append({"pair":pair_id,"chart":chart,"basis":basis_of(span), + "left":left,"right":right,"first":first,"last":last}) + for t in range(first,last+1): + cap(out["scheduled_cuts"]>=limits["raw_pair_cuts"],"scheduled pair cut cap") + tasks[t].append(pair_id) + out["scheduled_cuts"] += 1 + assert out["pair_stock"] == out["pair_comparisons"] + out["current_pair"] = None + + out["stage"] = "public bank snapshots" + chart_of = word["initial"][:] + [None] * word["owned_fields"] + banks = defaultdict(set) + last_contact = {} + previous_class = {} + for t in range(size+1): + if t % 128 == 0: + out["first_unvisited_event"] = t + cap(monotonic()>=deadline,"bank replay deadline") + if t == 0: + for r,c in enumerate(word["initial"]): + banks[c].add(r) + for pair_id in tasks.get(t,()): + out["visited_cuts"] += 1 + row = out["pair_intervals"][pair_id] + chart = row["chart"] + a,d,*_ = row["left"] + b,e,*_ = row["right"] + current = banks[chart] if chart is not None else set() + assert not {d,e} & current + if any(r >= n for r in current): + out["owned_rejections"] += 1 + continue + token = (last_contact.get(chart),t>a,t>b) + if previous_class.get(pair_id) == token: + continue + previous_class[pair_id] = token + public = sorted(current|{d,e}) + out["representatives"].append({"key":[t,pair_id],"public":public,"owned":[], + "pivots":sorted(set(public)&cohort),"previous_chart_contact":token[0]}) + if t == size: + break + op,d,*args = program[t] + src = chart_of[d] + if src is not None: + last_contact[src] = t + if op in ("MOVE","INIT"): + dest = args[1] if op == "MOVE" else args[0] + if op == "MOVE": + assert src == args[0] and args[2] == (d>=n) + banks[src].remove(d) + else: + assert src is None and d>=n + banks[dest].add(d) + chart_of[d] = dest + last_contact[dest] = t + elif op == "CLEAR": + assert src == args[0] and d>=n + banks[src].remove(d) + chart_of[d] = None + else: + assert op in ("ADD","COPY","SCALE") and src == args[-1] + if op in ("ADD","COPY"): + assert chart_of[args[0]] == src + assert chart_of == word["final"] + [None] * word["owned_fields"] + assert out["scheduled_cuts"] == out["visited_cuts"] + out.update(stage="complete",first_unvisited_event=None) + except TimeoutError as exc: + reason = str(exc) + finally: + alarm(0) + print(json.dumps(dict(head=price["head"],pins=PINS,limits=limits,controls=controls(),timeout=reason,**out), + indent=2,sort_keys=True)) + if reason: + raise SystemExit(2) + + +if __name__ == "__main__": + main() diff --git a/research/p104-two-paid-subdivision-bank-bound/engines/r99/modular.py b/research/p104-two-paid-subdivision-bank-bound/engines/r99/modular.py new file mode 100644 index 0000000000..f5e1212a95 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/engines/r99/modular.py @@ -0,0 +1,81 @@ +"""Two-sided exterior minors on frozen virtual two-mover banks.""" +from collections import Counter +from gzip import decompress +from hashlib import sha256 +import json +from pathlib import Path +from runpy import run_path +from time import monotonic + +ROOT = Path(__file__).resolve().parents[1] +PINS = { + "lead/SELECTION.json": "3a6f588eb597e56abfbfe568319fc81294d16d37f03f8b6159ba5b133dc2f416", + "inputs/R92-PRICE.json": "05d7a5ebdd2eeedd6c8f534e8e2eeac22484daf9f387f4a6b88cc9eed22a6b8f", + "inputs/7334-WORD.json.gz": "4b9fd1187b34ed97c3ac0c760d73531735a5d0ebc5b4d4ab4377160b20d9bb2a", + "inputs/second_prime.py": "21dbd96192e1f60c00ceddba01a7e8d0ddd7d6ad7da4ad3ed22ef2e47cc589c4", +} + + +def side(word,banks,cohort,deadline,engine,back): + n = word["public"] + owned = word["owned_fields"] + tape = word["program"] + start = "final" if back else "initial" + active = word[start][:]+[None]*owned + vectors = [{i:1} for i in range(n)]+[None]*owned + cuts = range(len(tape),-1,-1) if back else range(len(tape)+1) + out = {} + fresh,denom = set(),set() + for t in cuts: + if (t%128==0 or t in banks) and monotonic()>=deadline: + break + if t in banks: + out[t] = engine["classify"](banks[t],vectors,cohort) + if t == (0 if back else len(tape)): + assert active == word["initial" if back else "final"]+[None]*owned + break + engine["apply"](tape[t-1 if back else t],active,vectors,fresh,n,denom,back) + return out,sorted(denom) + + +def main(): + assert __debug__ + documents = {} + for path,digest in PINS.items(): + raw = (ROOT/path).read_bytes() + if sha256(raw).hexdigest() != digest: + raise ValueError(f"changed dependency {path}") + documents[path] = raw + engine = run_path(str(ROOT/"inputs/second_prime.py")) + unique = engine["unique"] + word = json.loads(decompress(documents["inputs/7334-WORD.json.gz"]),object_pairs_hook=unique) + selection = json.loads(documents["lead/SELECTION.json"],object_pairs_hook=unique) + cohort = set(json.loads(documents["inputs/R92-PRICE.json"],object_pairs_hook=unique)["endpoint_cohort"]) + assert len(word["program"])==76466 and len(cohort)==615 + controls = engine["controls"]() + rows = selection["selected"] + banks = {r["bank"]["key"][0]:r["bank"]["public"] for r in rows} + assert len(banks)==len(rows)==selection["case_cap"]==16 + deadline = monotonic()+22 + f,df = side(word,banks,cohort,deadline,engine,False) + open_banks = {t:v for t,v in banks.items() if t in f and f[t]["rank"]<2} + s,ds = side(word,open_banks,cohort,deadline,engine,True) if open_banks else ({},[]) + results = [] + for row in rows: + t = row["bank"]["key"][0] + p,q = f.get(t),s.get(t) + if p and p["rank"] == 2: + status = "prefix exclusion" + elif q: + status = "suffix exclusion" if q["rank"]==2 else "dual drop" + else: + status = "capped" + results.append(row|dict(status=status,prefix=p,suffix=q)) + print(json.dumps(dict(head=selection["head"],pins=PINS,cap=16,runner_seconds=25, + prime=engine["PRIME"],controls=controls,denominator_units={"prefix":df,"suffix":ds}, + results=results,counts=Counter(r["status"] for r in results),unvisited=selection["unselected"]), + indent=2,sort_keys=True)) + + +if __name__=="__main__": + main() diff --git a/research/p104-two-paid-subdivision-bank-bound/engines/r99/quote.py b/research/p104-two-paid-subdivision-bank-bound/engines/r99/quote.py new file mode 100644 index 0000000000..fef95bf2e9 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/engines/r99/quote.py @@ -0,0 +1,95 @@ +"""Directed price for two paid rank-two subdivisions funding one 4+5 split.""" +from collections import Counter +from fractions import Fraction as Q +from hashlib import sha256 +import json +from pathlib import Path +from runpy import run_path + +ROOT = Path(__file__).resolve().parents[1] +PINS = { + "inputs/BENCHMARK.json": "004331cff6ca8644489d7b7084e5c67439d74a2d283e4d64a9fdb9f88679253d", + "inputs/R92-GEOMETRY.json": "e9f93f3271855012b2de705c70f186f78c31a369d28110e92c5f2ffadae209b3", + "inputs/R92-PRICE.json": "05d7a5ebdd2eeedd6c8f534e8e2eeac22484daf9f387f4a6b88cc9eed22a6b8f", + "inputs/pricing.py": "f4d0b6c9314b838d882d6d06020f24881c19a3fda97a7c00df87b1e920785182", +} + + +def unique(pairs): + result = dict(pairs) + if len(result) != len(pairs): + raise ValueError("duplicate JSON key") + return result + + +def hist(document): + return Counter({int(key): value for key, value in document.items()}) + + +def main(): + docs = [] + for path,pin in PINS.items(): + raw = (ROOT/path).read_bytes() + if sha256(raw).hexdigest() != pin: + raise ValueError(f"changed dependency {path}") + if path.endswith(".json"): + docs.append(json.loads(raw,object_pairs_hook=unique)) + bench,geo,prior = docs + assert bench["head"] == geo["head"] == prior["head"] == "aaeec8c0acf01e99a5f331ef363a698d9c084ace" + assert geo["word_sha256"] == prior["word_sha256"] + assert geo["price_sha256"] == PINS["inputs/R92-PRICE.json"] + placement = geo["raw_placements"] + anchors = {r["move_clock"] for r in placement} + roles = {r["mover"] for r in placement} + assert len(anchors) == 95 and len(placement) == 285 + stock = min(len(anchors),len(roles))//2 + paid = hist(prior["old_paid"]) + target = hist(prior["old_targets"]) + assert sum(paid.values()) == 110519 and sum(target.values()) == 22461 + old = target.copy() + old.subtract(paid) + assert sum(r*n for r,n in old.items()) == 1424 + new_paid = paid.copy() + paid_delta = {1:68, 2:-34} + new_paid.update(paid_delta) + new_target = target.copy() + target_delta = {4:17,5:17,9:-17} + new_target.update(target_delta) + new = new_target.copy() + new.subtract(new_paid) + assert sum(r*n for r,n in new.items()) == 1424 + assert sum(new_paid.values()) == 110553 and sum(new_target.values()) == 22478 + change = new.copy() + change.subtract(old) + cost = run_path(str(ROOT/"inputs/pricing.py"))["cost"] + at = Q(prior["old_crossing_upper"]) + probe = Q(prior["probe"]) + bit = Q(prior["retained_bit_premise"]) + moon = Q(prior["moonshot"]) + assert at == Q(bench["crossing"][1]) and at < probe < bit < moon + net = cost(change,at) + complete_probe = cost(new,probe) + extra_child = cost(new,at)[1]-1 + moon_net = cost(change,moon) + moon_complete = cost(old,moon)[1] + stock * max(Q(0),moon_net[1]) + assert complete_probe[0] > 0 and extra_child < 0 and moon_complete < 0 + data = { + "head": bench["head"],"caller_head":prior["caller_head"],"word_sha256":prior["word_sha256"], + "pins":PINS,"kappa":bench["kappa"],"old_crossing_upper":str(at),"probe":str(probe), + "moonshot":str(moon),"retained_bit_premise":str(bit),"anchors":len(anchors),"roles":len(roles), + "compatibility_cap_before_geometry":stock,"paid_delta":paid_delta,"target_delta":target_delta, + "new_paid":new_paid,"new_targets":new_target,"one_net_at_crossing":list(map(str,net)), + "whole_net_upper":str(stock*net[1]),"complete_probe":list(map(str,complete_probe)), + "complete_upper_with_one_added_rank_one":str(extra_child), + "one_moonshot_net_upper":str(moon_net[1]),"whole_moonshot_complete_upper":str(moon_complete), + "limits":{"event_passes":2,"events_each":76466,"placement_count":285,"pair_comparisons":2000, + "raw_pair_cuts":40000,"geometry_seconds":20,"modular_cases":16,"modular_seconds":25, + "exact_cases":4,"exact_seconds":35,"candidate_builds":1}, + "scope":"Two distinct unprotected cohort roles and two distinct paid rank-two anchors. Each MOVE is replaced by two rank-one MOVEs; one 4+5 target split. Distinct anchors and roles consumed once. Zero ancillary and zero chart-synthesis overhead gives an optimistic upper; no ordinary, routing, ownership or precision/tape credit.", + } + print(json.dumps(data,indent=2,sort_keys=True)) + + +if __name__ == "__main__": + assert __debug__ + main() diff --git a/research/p104-two-paid-subdivision-bank-bound/engines/r99/select.py b/research/p104-two-paid-subdivision-bank-bound/engines/r99/select.py new file mode 100644 index 0000000000..fa3fbc3ee2 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/engines/r99/select.py @@ -0,0 +1,46 @@ +"""Freeze at most 16 distinct two-mover normalized support forms.""" +from collections import defaultdict +from hashlib import sha256 +import json +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +PIN = "c89976cd5f808c29ab13770e262b2d216f56b4e1703ef836c3438d60f40eb11b" + + +def main(): + raw = (ROOT/"lead/GEOMETRY.json").read_bytes() + assert sha256(raw).hexdigest() == PIN + geometry = json.loads(raw) + assert geometry["stage"] == "complete" and not geometry["timeout"] + groups = defaultdict(list) + for row in geometry["representatives"]: + t,i = row["key"] + window = geometry["pair_intervals"][i] + a,d,*_ = window["left"] + b,e,*_ = window["right"] + group = tuple(sorted(((a,d),(b,e)))) + assert not row["owned"] and row["public"] == row["pivots"] == sorted((d,e)) + assert window["first"] <= t <= window["last"] + groups[group].append((row,window)) + entries = [] + for key,rows in groups.items(): + # Original rank/phase normalized rows and columns stay fixed on both + # movers. Their only incident events inside any window are their own + # MOVEs, which are identity in normalized coordinates. + windows = {(w["first"],w["last"]) for _,w in rows} + assert len(windows) == 1 + rows.sort(key=lambda rw:(rw[1]["chart"] is None,rw[0]["key"])) + chosen,w = rows[0] + entries.append({"bank":chosen,"anchors":key,"chart":w["chart"], + "aliases":sorted(row["key"] for row,_ in rows[1:])}) + entries.sort(key=lambda r:(r["chart"] is None,r["bank"]["key"])) + count = geometry["limits"]["modular_cases"] + assert len(entries) == 17 and len({r["bank"]["key"][0] for r in entries}) == len(entries) + print(json.dumps({"head":geometry["head"],"geometry_sha256":PIN, + "case_cap":count,"selected":entries[:count],"unselected":entries[count:]}, + indent=2,sort_keys=True)) + + +if __name__ == "__main__": + main() diff --git a/research/p104-two-paid-subdivision-bank-bound/inputs/7334-WORD.json.gz b/research/p104-two-paid-subdivision-bank-bound/inputs/7334-WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..73f43007192eb5a38eb5abb591b871df3e52c7cd GIT binary patch literal 393282 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%0D>(h9A<5KmxPj0RM7Ow%Cdd&-_N z2`p5TBdh}(=JrAGP{pG3p0lljN7NA(9aT0rINoh2JgJNazLus#5$T8Q>R_y}jt;Ix zA6R62&QvJ8mp+s+I=q#M;}4S3Yt3@o$&qJYfxH-JO~+GkP?j%dva?FU%J}}7Lk4XB zCeH5VDvYxB&>5D&weg|h=;uVqAWi(OMJ#CK~V#3T1+jhKG+Ww0qB<`fpvV#Ow)-#y(DUU98qmu*-6G6Xjy;lE#+&S99fDW69o| zw<-w(rQ|u)jji?AOfaD3E4pZVj`Kl%Ru)zErlaR<*ApHz=&0-~_uwQmvyJ5gg(2;O zz!DvBvcH+u>E%>IkF^W0IJ&=zC6qlcpo(i+I~qf__a-6U?g)u0rjj3QtnFBFZm_X7 ziA=b`#wrGtPui88*j~I)T&?B1eP%z^lfJdG!tmul72=OJtWen?qOT=r5@Po@xnZ&@ zeBs!7RUA=o)GSo(z{Ezh&+D>#T59vmiOSZFqk1cQs75+ec0hgoQj_Qx=QU&rkiP6| z5~i@~yh`}g7(bQIQasMS0;_hJ=bXjd2?^t1;0a(49KT#@dpt1#^BgjpGtp}&ir4w1 zNj>hTxx7;3xF$J5v#{>MBNLMmJ4IH9=IHyv;Z0{$j%>#2`3~jydG4%4el;)Oo2AoN z%@$Lbg3hv~SR@yYx)u9)LSea;MzkhG5l79@@}&xgM#sA>e7ItXvy^w@Eai$XSztau zvvur1c>`WvjE3by@TSW=zG?S)BpX$fG=k#f2;_X3 za9Utw_E)@TEb<97cwU2~7Z@7M;>agQzvL4_4W4Ap>`&ACRTjytW=ipV2FyfXy@S+h zp1Xe%0IWJmqE3v%o!BzpFMKN?%ZN#5!{n8!8sS2wo%ZpR>_#M}Jg#Xc}|#@O?!P_vvbl}w-r@fsQB&(YkI|U&h#@X!@4W} z?@DOe0}{l%9*c%eELEp%t@1=qV(Paq2bk$5myy!z3nuJ6i!t&}#X69jSMjqKEb0l{ ztF#xh^|7EBDF)qLhiZn~y>&TXM#Upxy9cN{dMa#nP3RX~x@` zs*icoTT+Gy>F!-M>`eEas!p1w#|UcCm9ahL6PxLEd;0=rH=>>e)}7O)H6unT{oE^d zk+-tp&Ce&c^#@dLt;jQSKJL|SJ!6ZR803{)C6Z< z31F%mizr9bj*5EU=bX~C2)f{ULjIdv5`%Mb)uaRXakv(G{F&a(N+8X5#^qik0z zmEHL?98sUwg3|E4@@X~IBC7DRymfKG2fQ}P>7_}xd$9n+xwEmU)ER{d)k6yrT5`H0 zjk#_GIW5)|5Ia1oOm~Rxq+YKk{RPLEGUzwKWK_S&FlpaFmjGG>4KiQjFw!sg8v0s4S7Vrt-Q-ql}W+m_vSU^?hkf(OQywIzQ2X z6?1;FAM4=mni=K3rmzcByA>AKeBKz~!4~Oi{z!b!Qhi^lOaT-FAacuQ-`15!^EG1{ zWZi}|-%?rah!wo4ktT@QaCKtFawb9d1@*0gz&8W+MV#FkT^bBd8~P4`x>dSCxYcH{ z8-#o}^~dRHBn0VaDhUuAOKKApF_nYV^;H4~2kQc!H~#uyfj(5%^|PpIa|Ii=Dl=>psY6ujS1#rw;6(}gTArv z*bD<%vL)N{>ge$W$&TEnY|5U7GYV#8_z*O_7@|K*vfJn{2BYlsT3~*}OINwRKrmTt z528M*THL|OHhUQ)G`A}ZZn-TmZuNq$wnx{DJwo%FU^HqEt|`6m;q^z7>8kYGrlf7% zd4#ksjX41CCKv(s9W49iB&mlKM;kW8gU4K3ec%lNC+}!O119KshnM&r%2j28q2VS9 zeff) z_uAXYUL>48dfC=#l#@hE-@T;X@so!pD+@o-NsVXi*^Dko$*tw&TzR6;&tnZ(wwJIb zhykrOVsxTu^o32T(&ogiv)Ocvy@7WW^ohtAf*_4O`U+>GpnM+Q`Qe=XY8-WX7NaHw zj0icWYV@6Z!fjdcYLnr0=mI~SWRLXvMzFheB;Xl+MSoU|KCekcHSrtc`uwvoUgoII zlhX8s%{BGVoBh~lsv4*#Z(B|phwBLjKztkQ&`-)tBKzY8+q6kijz%IV!Mgbg6lU_fjN^K zI-7H-GDX3pSh9CjEYI=26M44pfFedi$xg=cWD&XKh&g^7;hWAoZ^!UI-nkV3KJuw{ zBe%ys>!-dLodEOBQRs7>qC3n%3X6c0QgIYEeSh;(=%zh0YAwTlsd-`PQW;f5s%xq*XYScLBLhWeS>#J@_tY;6s@oZilW4KQS+!mbq zRN6dB0VvE%4M}XMftYi$3hB)Op|6ze6wsyLtb*M?`{voFQt(qg?w3}VFrrVA>E`(x z+|VaizroxPhiZRoUBkI^*tRs>=Ng!NN_4*3m#QeAXK`VgL>s^mQ$56jK7k#yi)lNG zeU^}(Sy=tI?p?Y}tTKsM^_&ZDc8?B2by*TolYVWUrw*n@aNnOeJ2HpE@bod<&5mPC z_g-|WA~gpPl>3qd+xCE;oV{xpY(Rrc2e9GYc1x_@2hgvVkDStjG0ip|VozG?+?3WpfXH(L16E_)nHJFuVMBQn~{RCCEt>X2;bsA>V z+AkW5F$2;wcuJ^C5ChoDQ2=7~CwjF-zfHj`RYS(_Aejk_@5z)cjHN!zXA@2UqQOeN zbWnQ!f~OFplbYR*fl=r(m})N2Si38U1wmyN?>b{T3U=7<&^FQEKoP^aRz*)}>;X!4 zc%_Mo>)^t9Mpohw8EjH_-%5(}1RR`e_FWjJ;MeEfcR0RLW>MBSz-jf;YnvD;Tin92<|1L*ouP-_ovGlCRULge^oC=!| z23UsEeRrgn!wt>aRCF4+x(K1W?-Vc=0iEIH^OGFg1MTTP6@{;RZ1oU|bGa1n&uv`N zYZj_8lM#5%HrO3cbPs4OI6^NTOQU#UWqbf+yCpU>Nl$=WW{&fa2d^!}=x}qB@SU$* zBb!m4QQJ5!;D^iU6_JG-3gzq8CrsB;w%_DV;%tC{*E|Ab3$Vbxc<;8g{PZ~N1ljWW zTBiwibJ+0tf~GEhBoNtx^Z17>kv{lpHjiT?124bW??`fBx5Iy~<%j3nn~SqMJ28CL z$4w1&q;ptgg7)-03GaXt_@VbnHf@LD`CDfT({Ll_^hn9JoL~p4BLMig3v3oII8G0h zEEKfdT^l>bZx40orIM{GCb&8NVv%Y==1WRq&n5hRh`y*N0gD%KV5h~t93tmf z19;!jJ(aarF2i|iWn70AVYn~gh4D?ap7PPQ)Xbi>P0y)(gBkH_J8Xxe_^KEO6KK{u zV&w%!AW7#MMeWx)E{YcWQKrcrSsAr@bKqdfHnRM8U$$)PhNk)n4LH|PIau=M_|_9F zd2xKJ1Wew%+A50k%}fma;g;%?WLBNAf;XSt7b^tK8E-e36JI$P-0p;f!zRa?Mm7XN z0w(pQVILByRT$7cD52MCn0rATdQTAswg4(BF#DZRCNwXi7wUBiWS=gptbm($JCh!@ zS%PbuKIRtnIT*!&o93c&e6g0?mu2|yl6J>1F`r$QoZIkUBw_2PRsV~WGDD0BJ0~Mm zLKiNA=-Hfw0*ne91+Yb?PO{2VdzUP16xfPS+bu2u4x{oF^~TA19R@Hv$^A+K~xDP<lQ0d){*v)Ee{Vu7Bip$|QeIY^ zBvC-oSK~x~L#li^M&D>moW=RvHMwM?Sq@1k+1p1b8M;>oSwvoHr8(BeLB^5a_Y*BJT*PON2t&k_%e@4kd|L%mdl%zIRc}toxgN10Mxw0pl}9}sKwe){b0EuJb3wsh z$iBAW%-Fk;wjt&QG!{D_U)tr>9eUsXa0cK@9(Gduj)&LA+?QI#?TvWpeyP)->Q4!+ zVw9oHDNg2FC>wx!s7`19=t7}8Bj*a@0@zzwyIjkQRU91gy&+x$=fdtP_BoFYGJ~Y) zNofSo-4chCF^xxG^PzIOabhTjE}S^y_9bg(IM;%?14%zG?_KW!arP|&cUIbsSF_^zq~i11w@wI97cfgr94h+i-;u(2D)95K{g zbkA{eg^1CtX5hO6`a-q=_T9LqA4!cIxZ{a$&6%cQH|-co*08o<89!~0hvN#IcF*7x z>jh)J+nTSL5$3ur5I!)b#>70gJ>6mZ%zHj_csRrqw$*XZdM%hHwg)vhz!Wip;h_`8 zEHpUErbn}w&ixj<(4Kiu2Zr!;zn$@yEWu!o6#)}PxD{-ZDF`J>98>+)jfOZIJ&0}K zOp9$6JUP?g#XJ3l56?ylKcB1*jFBy-E0xYsK zZz9+fm?N%RZhXFQb`s|G1Vdu>t#}2-w(U1UEqG5F^Da%tQFzFFshZ*?iwN*Gn%Stx zd^F0BsIURcukbI5^a3s@rH>3g)h8+eEC#Z%k3@Gb-oDiR|UL-8Sg+jP%4 zXMAW$p)s4f0z4erRuA#zdwbN0U zhHqr1X_QT5nboXJ!kF3W7ti+NX`-Dr+Rf?`$-;~2jLV{y@$4c0r%8rpm((L9^SBBC_)Xhjlc!fcAi=ay~n%n+1oYlxt+3QZnqqJzkj*Vm^T zvp#+c#^h*-jIT!iV`j@jS25em;=fq+8Cmv!HN2{zfxJO87=?}bD0_R01r{-1Fo)Xe zoX9$1M)M(Ta+DXXPHTWfvB)spP7Rv{@z&hJ1d%-_Xla1F)Kc-3#WHs0O~Y(?)B2cs z4vtw>eA%sGJwZs)&GwY&&|FU^F?V2=tr?KHBUXIy&3@~Kg}o;lMZ?5>xk3-kmSwTJ zAhH_ib!5vnF|vFzi)9sK6?J5Tl#EK4k+CxTc@p!=(L6=MxdFnUs$ z>G2NZPVp0%Mz#dDI#COCOKCv_Zn9ku5j@G*2AD^&O+eF5WO2qPPc@zbOX6fGG_WA` z?2RA>t0P(h3rV~Hq*2>g4U)}ZXbc0mFXRwdMAp!pWD^#VlQPV7w<7Hl(2|~$n7Md$ zOo7B;tEBW5l&NeTw!m(&sVchPxmuA!16wevcPb{4Vky=C3(-c9f*E3m+g1JjctKkV1J%-PnXANa* zs9Ps|@~-Es31$lFd$LqGWgW$GBOZ{h>0+Y165K<)B%i)V5S1}(ihF0rfdrRYY8P`C zB*@d|=`5Oxwo33?7CTRNyE_XGumLb5Osk=uZ_%zBA5PU;s53WyRs0r{^EsKdE#y9F z{PrM*-;c*y8dH$hX=5@OS(AJdcdS{@wMqCVHsgOZQKr!U6C@tGy973*XM>mpX(L;TLEl6I9%mzGRCs)}v%gKD& zWm8a(nlLN-husSPDp7aG8mnx7c;kr==K?uS1+w`GU;|?GSsk?JW3L;%S=sk9{9aFl zKMf_+s{{yrRZ>OBqS3F-^2)mJWv3IfCZ#$*LBfCeh91d%_U5H>=((~7qNLkcQckKH^yk1}6<*&;@Z3AU8u;EfVZLk{toRhMx@d^Ox% zPRPnmMgmSCb#<>SaGH%h;A={|&!|(T3x}bW0DOWZkT?xV7xt5~k&Q+Cr1h~E1#Bv6N2Y#KoU9#)yAjtiB~kE2D6;Ip&^kpaL>m% zG|R#sXhbLwOSUpJE9NY*N^{_q*;^p%!TF-gyGtM^-BHt776-aoC6PJOh!+}+yv*Xu z_VxUpf{LohmKgDUo~?d5UiQ&;uN+6?V_MG{rzx}*jQgF~UXEE?w{l`UOIsQI&k==W zJ>x8$u%D6DNe)p|NGpkznnMrP!%IwZ&9Xq|P$02^YGj5SPg_Wp)8As^yQvCW zm1-Fh^BG^sF3A}LehE?|Mgs3z;>dX=5QmANjJH-%d=1R^Hz(jM`S8x6T?HFmLA&tm z@#!N8{!GTQ;+hT#fMTaS4gK_f<5$pC&L)-H6hx^V1h*Rp86`rj*2a&ew^}^ zv)C*ElY^Z4^lY?Ke`WgF1q7Syv&!kgW;;Nr=AG?TPRXuLeM;4L<`bKTp71(<%Bytx zr$jqbPU&l=l(NXopp+4o?G{qvmnr2mE7N)D=A$B5+T2cTiaZwQo#t!TPagx)Ir1$M z>`waP_urfM`ZQ|2n3MgaMX3vDvi36rY&O4J9=X1~kFv`3)9IKU;q`=P?mQ)ZyQGg- zP+^ccIZp45(#z`c9Pp(L9??lQ_zL= zhevbN9VN@&n~Mwn;Ap(LgQJ<`4uJ-eKdaQ<*dn$1(pgO}fbt>~UKZY4_^i)+P^`F< zy@rFCMYb4=Rv$m3GRy=NgSts2A66rYsczel&?p{TE(uty+_=_Zjg@bWM8^$CIuE4HcJ*vq>Z`DHrg&Zl4&1aA>JGa^sLlLXGEV^%p{ zFiKASY`zn;%h8G-(;EUw#w#}0wx~G1$+>myNMAHt5b~6U1MpdPc}kWG>3eJ*#b7>! zxj_SfN%v2jVpoJrbDtDT_jM#Q%l`jU_9x4>q&yb@_AVaRiI1LS=x})Encx3ij6{<= zwHEx>lT){ZV3RaLy--Y5@Tjc?!_5suW1je-l1v25A^=czu%7J5V^#u|@E zj+6prsG_S-62YlpKEpsC9#%F-;f`?*8ioba8|ncFtJ;3xxZ4_@1<v)j!@lFB}gMT-p# zamw>HGE3|~(%d_H()!HK^+}qhi$#nnLP|OSBFqtjILl-fGp60e%?5tmt-)h;59#e@ z@1$C4=v_vu&r)L~z|6$%tD}e55_H$tF==KqQ+2(LT{LT<(ag5BG;)+w zSuf2oM%*loCX?0{bJc`#ES^laBb5=QV%yhAZNXQHFptAuu9_$c5K>4HO}#KXMrR5C62JN*^cWI*UqM=Y91@-J(u@H2g1JSxe!7U)=ht0 z@@)LDZfbM6R)#RApR|rV3o#o@_mChYjWN^1kyB)Q^O<(}MSqS@ zhQ^x>0yG`QO#Acv%p5jLnZvxWI@+Mlq<%Ru1BbbK+a!S3}1R8`_;UERno=74GQZ9WwIpu{dzjn#xBp| zbL9lW%+?FlnmUPMXTRtj#@($4jIjlNamZQoV*$#SPHAbS2}X{6hFIV!n&8tXRi zEnX3~IsTf-cQ4}18^c=kgmm4##5)9JV%(y@gh0AYT!UTgxX;&+VDM{~l<-FwLyd=9 zECjYL>iUF0&q&zQ>Rclxig25}hEdc62bg>PJlPSp(k)d3V`|+JAUb10=I)pDU(>X&(r$!8uKCMGB4(g>n$}r zZ?F+eYne;9o%UQ_a;O#EVD>rPHh;;!jErlL-WZ$HhP*`MF!XY!akCS6p!1TL^-Z)p zvRJ2Nj=(mBL<#k@pRz8H?X@IffY;09xA@Cj_w0=W+~(Y3l|ojyo0|h`$P45j1uiVu zw$l`cF@c*d@h36wCm=-!s+qjS=Etm1*oq5&v_f1jX#wUVFL|0Ub9ots7|Gd+;^gr} zE@?Pa9CRsqo0PhNj`LHZjc3a*|Mie=FBAVjm_dFuxNyKzJ8KKldN*OwQsXB-Enzw} z$;@NNd$vGJCh}|sF%%+Lrmc2lGu;Zq(hn94y$EB7xK$cMIDWTadcL$+sSvAGZKbV9 z6r~J|oA<)vg!219!;6%bd59dyw4_j99X2i*RO}EC{&zmfDeYUw8n@EX;hrtYl1(+e zdMa#OG_W;1TU#SYJ6_DR>6J&xT;oMgleQj^Ha@q;IU$TA+{CO@(#>7I!{2^z(sIWFF2}SjT3Bnsq1TP} z1(g=Dyn3DxP}3M+1rvGk<2K!vmXK$UOLz)sqKmKoJb-R>J5OYy1&`}Ocw#h&OWqo6 zlZ}(y@)i|+wo^reGZ@!VVoIavw}RR?AjWYk5}sH+S>ji$_K6u$G(>R-T`2^j>DW#W zIXj>qVZA}riV~KLp(S-~+Y%JKlpq`;`S*w4Bh9$fup~aFK?&i%&wb@R_m%h4oBgj4I2}cO*$J4`mr%HPn_E9a z{~xO_F~G#j(@$4(GRMF_iNvxDxFcSCemReWPoWm3}&oldn~OZ=BDldd1Mu z3)4?uZ+1k6S2qFY!^u&nZU)XIy2DSOZnB{2(@jp`@ZBck_`@M*1t11ILL`KrUf5(5 z$3M$q;DMix)&vY?Hae7hRD14G?UzTj1s`0G{ct@d>oUqIfYb0Sq=x8;edzQUCZi{M z*_gwypAN$WOuux+@mfb+zoT%i=dC~Z*!tmP%is@RG*Z88c*m;4c_A)0gTd3Cticmo z!}N|-SMyTH04kw)Wi5ymdvJ1ou&txay&d1THGcNQ`DD1qYKc?gk2&09_46K7X-xlE z9lTRU(%sGOAwI-QV>rmp>Yr%)9R9K6<03JP4F_4TsXI;{vZJ;q>${fSXB5+>i>wUo z)RaQ}Sl7PPOiZN1M^;Qk4Lm}Un*s*COl+4SKgD}(38JT+@vpXL(k8K#@8 zZdzrdm)Yz~LTkY3Kw_EXb{Bk;PE^7s=+*ExJC8Pi!!Cs{cem3X8KFWIrR53{xoFIhb|oF0UA;rq`M zf)dt+?=PpP{-U9NmzQA7FA#rzvcX}Uz9hy`ySBcpTjf028$TCMZjj9wH2q|C@=k39 zrghQE;E7LIShS=>kLtYXC+pQafNZLp-#m;I(7J9!Yp7S4ezIO`M6=Fw+ENaH_*E_< z_1Bo!>z;$KUqI4X4Kze_{j=J@n~b8j~Fr^!}*5$L~8f3#|}ZQl=Df5RMcpRVicpPHFFU)^j)-`Bz%n9F*ZTVa02 zWo@k_f3t0i!bNci1y9(pR-W(+!%uc>TP9xke!U(n;Ki?(<4-KM0YSnNaCE-C@W0Y~j|M)0CUYh6NC42HDxW)G7DEvOU$ZfLiQ#`rFjvJoIV>$d{Wlw1D zP1k*M#6{XIs_q-}T3ke#u{Cb<%#1L(MQ&4K3tpaI#soY#OTL^Hw}@>`8Iy}n$5?$~ zi7{om#VRY`m^1KZwL42p{bDzphczYEF-*mgn>+ks_2$xFPHSRG!iSjKVcImUNyd6~ zd@YNuLgW2(iyhNrd!6Ebz*+0M`KgicNcU3mRGEMFqQ;C^x)|Tu`VdL&HIC*b)tV=TeD(({z8; zmz`K*+9t-)AN*hCtDoTTQEy8&_^X~d&xZBY9{ow$mhl|fjkY$U_rfFE_7~~1N!?#{ za(RdegPi0IZr1XgDudo1e(5?c*^R_dOuJ_q`o|DYAEg0Mer(Gu!i@ml9O7H zoYh5(a;={1RDCZ!G7@!Pc$Lu1$YG0EkI;X^0M&Ibru+w9x$A7F40Qs^I(l^EvJRJz z4nMf8UFbYMyt8HT08eNQ?s8dA_|UyT>yjQ)E2QsMJ@nW5;QTsBC$cUj{qQ{%4_;Ys z0$~Qr(g;m;A2`k~_B|!ycucSlm??m9cTlvEt@W9Q||IqLUst@Sfdg zhN>g;;=i~uayY-rXE9Y|-m)+|>$$v?u%8>UDvNuwYnjvSNGvIrlJ?;f>tB@-{OA&b zmF=@0gNx9m{*oS?V)Za0SCu!{M7?59jAmZU6rIkNYI*C{HQEK-;%=&%o7nE#=CatE zpSQ_{2uOJwT>68~9bM0FU*6PS1756m?N-b3(-O8xf+#=ol7$&_mX{TWQW3wI%8cQ~ zd0TjV!gn)o`%b5AIP!X(BzouDu-WD06(nw2~?9VWFa6K(>+PV(fy0|te)B}y- zGTrn;KMqc=dYVw0Nn6v$yWY&LX_GZJ;ds-$q|mOd&$V^QyV>eZ(k5uCDYqvgxZBtG z>yIvyRUQnqPcO+L-sal`MTU*r8bg*aZq*oVTr5mReMH>+6zjQ-4TmQ=Zl)?0s1&j| zr`A97;PR@>C9(o>vpylSG$=9uoC*A-ZH0{)Wq`N@CKcyxWBL)Pp*F~32P9w`-A~u` zhyjyE#3g18zQ{VnhW(>N-r0^41@-H3AE(|GkId2&|MmNf3$fJ)?P1}3aldA@Z!^3t z!{t>ruxZIya5dca!B&yy3TWb?JYzaY1+y>8kP>}BJ^M^`*ux<(>$bQrXwplZ zov?!xt|>mrXKMCL@HLc%3|lw6@+7}}j!>Ct_~c1rc_i~oEvE3bdgN*6QAqdOD2!B# z!}9J)^D~+|pC=W`AN$*Wb`Qai;-jYd*`qfoi8Q?NG;Mw~)*N-j(-u|TLq|6|{xzGj zLw)eHsk1JfyfynpBCD;{Fw<2ByfIxnA$_>C>2X+|TD|Y2wMHB>u8y)=xP8Sf)ituj>e!BT4jdaPrLG=#x`yP)=+iXD z&6qr}xb->x;`ZkSdgrwo{VWTixBI8=c6u^Oe+q1UX0Oh6I&ml2J+OP4`0^3uWp^>mnCj^lz(QS2EXJam##uFM!-F)4IOAzl|l6!RMaH zy@V~1+e6G1F;X7woiPLj0`j>mo+Dn7A(Jq%v59oq@#wN23$X&zp5`ZgDM@YRD(mm$#C$fteP zimUjs>$Uh(vIm{tErJsp7vGd^73ASOr;|$LlEnF?EsCEc-taiLPI4M!=d{QJS>W}8 zcuQ3F(;)zDK$5>?&NMA@Ad~^GKv)+fV8rKemecQyH8s2dA?&e%y!!Rv^rIUIm*6+! zS@Biy`$_S&HIJ9aFDj|Lk7-+H)V|?{;Z+S;_kCvG%(U=-9LZV_YKaS`Jxa=Kk1 zwk5{Jp)I)FzYu z5l?hW3f-c1IYPzM;RZLJyKD)I%Uh%>$^e+wIbo&Uuo`);hAf6X5ou8eQ5!`(q3ZuO zNNL0?rQUDzGFLqQZnNE;S=!1acL6@U@2VO)QjbPe5C~3_{ENUIK=V2 z820BjHB3o7jo{KP4qJE~5A@J2df49wN3LwxN4aWF2bi<}xq8IcZJySMTkqHUM@A|( zv8=Ebn^uNL+|xxMG8mgGX03{B8rL04Pe5i;9o?1?3ft~pHspz(9M{F4=LTo0EqZE> zMQeMR`WA?7w3vSLb_LlWbH>%bZGI|B>TOF`(r9|_^>5LxOs4Qv6qqZ;3*zk0$Xs>{>ORH3b7UWKT-p!!gd>+N z=Ske&_o$V3?F-7icP}q;Ap>@b>4ulUA7P6E~8 z<(D~PIz07J8}AL(;pNRcvE!SU5ZNzHBWse=bz7IPNa(P-q7CVZUG$t@<#B=MJ8#-l znmwucl`>O?ha;!WPa{W{UlxY_=n@8b<6<}3BZ+@unHMKR-q*afjn+AC$%~;knfshJ z$&)WnP}c9T1*yI^6+4YZy0XS>eVVq+)}LDtanzAauds+PU(;K8dEjRCHEC0ek^H*SRgF8&yAAe|5oRC0W zmNw0apg&4JpSCu(=dehzm1D~$I2q;fswsbK31&m7{F2=^^+wzKIHcvtBVe{OY{nz~Jenx^*epcjBgW-Oc(XdKkOFe|439l&!bZTKeDP^pc zVO+vi0=B1SyLn;19B7&drsh6{fqkJE0|GOFh;IvRt~xKL5{{iu*72M-zO2 zMuTP#dCYBiip;a0Rk2Ft0G)%ZT$+d23yv9!X<~GCqJ#(0waM# zw!j6ibTKq9Ao~QG7jQMn31EY1VQcp5-to^M)!8@`L+&kzQ|hCpN}<&M;}>p(R-3pJ5u~1zWVy%Oe>aERnGWy~AjD&vpz3L&zz>b17(;u4-=JFhHxmF0)9Dw+- zgWw{#Had9f4-rAvG=gmDhod2W)vVNwaLqo8;EMi=3did1liC$KjBq&G2DWE$*BUKQ zn@i~Lp;ISnvlBG=)d_~{?9ylf*S}7k`45Rt%HfB^v*gs2-mkT0>u~&BF-ERl*3QzO z2|htFGp>)aoziiU#QJq=(hX$mC&nKBRbn>bGZ*v3{vp%k-C+)5cA#G?>VMv_CvC?P z4Lt24I_pCh-wt0R8skGtX{YZLedM82I88ycExW}^A(8Koh!}h{;pX`agyTN795*hM z)4>-;`7m4#r@x;~CLS5AO+`K4&C{1VFD?z?gGr+egkx4XWgGJ3-jEy1 zlYc`lJ5LVIv(HpUjs1Q`lgn(0{In>eM)B3DpZzwbZC(u#S&RH1N!&c)lDQe-Babq| z2Y-dXEA|`u%_EU=B&TceShP>#Kb`|U*vjs(9U6iyf-C19drQJ-3~iW953uW*=0Y9~ zrxo$|6_a7f=vgHW6Amc@Qr^ z{>dGBXqh|Qz`%mVpV@j>8o6Z1Izm3;i1{O*yhB=xL) zFbgUwNT7T``|feAUAsR100;282J_+uGo;_ELu{=>q7KF>w5hszC)0 zc?%{w1Pt=U^!B@=X0rbWo?&?ifWsEnY1n>%i`FJRWYz*b+oTrHp-JQQ+o6qEF_eRA zBEr#W49<%;2?^mX5m~?0qAG^~(t$RPr`OS?Qd`wwBKpmVezTUy%7-SIOQpZ2rLqFX zT(=RaMpx0Ryha;{5lkC|=6Q%1pKamLNmcn$|CaUA^?m5_jsjhUx2c}y)TYbJ*D1Ku zt_-%a@oq{E`9>>6>>tV7-1*xF`^kTBl@*6@`s%ryBOIt~*&Ul?USGT(V6;F3m`H){1>azeFK7#~p2#Gz?;fS)>60SPNIl&azH`cgE?_3W#9>OZG&1s4Kd|3!Sr%Dm__T^gS9Jf-O`IWpDGKU~r z8B)hJD9^hPI#)PIA+MA6*H67{85t(Mn-2L=-iz%YcG8F0Vf;X8k>30e*OCSamt@yA z#IPJ~q5ZzmGzHC%h*kxfbaW4tC8L&i-tl`+m}O4QpLvs)^mUun%$! zj-PeEDMbx|Z=YXNd0Oy%khQp>e+Zwee+js3BJT4`(fZ@c7Jt*UNYd!IO?OIVSIVuW zk|z4|cY-Jhan=tok{&j}Ox0Dg7k-n?$R0Sq38&9MRsAN5=hx3SzYoLH*PomzadrJ& z1l%S6tW9V|Hld$ji?ENbWQ@oUI}UzR;N%%~@|y(5Dz6hk*qhO5XyP+{X>@F4L;T}@ z7Stv%82(M;X5=OtMwaU(@}Wfb6SeI1WM@LO32TnEA1FpIe0^zSXA3A9_V0@k@nrh< zwdf3MZFEQKUab`6OX;ud8``Ofyq#o8%FF!J+{iuh<)v*Uum{+eO|_(?CY|nn-)hM0 zvXpo8dwYL_O!NAZr?KAq;rok9#R>su1 zcGCL}*Zz=u`k?!?j#~))^6qyy)yS@0dS?J#_lhg80QV{GHEn^M(fEFV@Lbq^uWI!2 znf7-?;5BUIFF`W;eWOs0FOcq)Mm5Z@yQd8p#cW?*uk z__-`F?vKFZ`Yh;)4KMXBxlk6xz2vbyl^^_<_VpFyqxj#8X;^Ky<)PYHay$tB72cmr zC$I^mK4W&FUNI;LZ_|H2!zOPUnI1@}eO0Lth_o?$lPJRORvc5vuAb>E5`pO7;;OsKjm!D3VG;ivciKJCGOWE(8 zqc26>Bq>CpNw85heqIv%fR`??V^ZI%Z#m++ubO3e>%K!%+=acVuZk2pzxU&*WKqg1 zX}bs5@UnNzlSjF{%E$h;HRR9A%Qe8QDD~Ca)x<7tdBwEgi0-hIyjRQ)p5G=j=lw3J zcxmrh*-uKQt?Ld>uH8V~n?-TN9u4qHi@;)9QdFIW}4UyKabAAQ) z8XXai@;+LBCv|Wx@5Q3ZV99(mCvi{(=O4v&$czujTXyekfRiT{?tb2aG^P9bM~?p9 z1j&H3Sk|IXCyu=(?WEQP{DSoAOXX>`35~W49#bagJ-_Pi!MfuNHV-xsa0ag&e8hO! z$j)C=rBZ%5Hp(L8*Ax~LQlh-c`l0ul!EqDAR@sXTXD{HEawA%|vj3q7<{E6nS}eeP z<^A4-N@UmkvUWJ^d!%48{@mn_1G<-JV%z!#P6S*z9q;$y6UNfMU3v3-s(!+8-?vBA zN7(<>Dtu?0+Di}{AwKD46&n#Y)7EY)Lu_^}ZD~IEw+>u{k26rl*{~ z>U|<)T6VqCN55>Ih*W>r6O%Hk9^bQ6e|RNxm{R>1PGJ#VQ`A~y3IG<^k6Bp zYwL4uU6ZPW9;H`sQ0oe|yUQo}>ksc&LUo*$(53xOBx0RU+Zw8-19NKpe)sH*USSdK z2Jt1J8Eud8m8NOy*0G7v7%p!7^0H=kWBpNyhi}VE5e`CFeCbt)gbRqT!1FvF7Aw~G zLHX`&+|)?c*sRq{X{4qTo7SsR^oa;@@o3$N`BmXJrdp3@`%ZjiZR*GnU#gJhk+kPI zrf?j3GmZTZG2Fy`^%FB^yaE7`&n|^>otZx$V!Ii=>HQoLqW9Juk#W9;>&LI zg)VZPS`6NFKY3+^_a0|*1VVk;b)uvR^}I&qM-E_Lw6CMM*d!vATOG@^LtgmIQCeGCX?@oiyC!v3cc2 zOBx(68&Fn>&D^UiwQ(yLEu|fnT*FWTJ18R#g?^F5{8_)Z_D0gtJ`#_>The)bG|G>E zQ92!>5%H2t!Qs``2W)ie8oc1WtE5eXtNH`a=Aq#(A<-sx*e8En3k_(KgzmJP#yqr4 zJ8B(XaMfLrfv5G5n@y+aj+^h?X}dI}CV_YR3OD@gEIk=;#M7`z%zzrUwj-Q|cB&^b zHp6V5hmEJ96+%T=M~$VS$8dzC)6dEyLWQkUK2Cmw_eOBu-|>-$CZ~mK8flV%cKTBq z(at|gga7$gX>X+8q7 zmKrsbAP0@MILdTrTha9ljQO^79J5)sIb*vJ||zEU(W{C70*73rY?Wd=UO z$uv0t#BU8{%J>;6&w|lgLmyh08h*u)l@Z7XjnC>?oRo%wur0rOkF?Mbfaaffbd1T` zog?v4n;~JNuUWtu52k_ToNxrS)|=RWg34zaLN9KOc{WEbPydqmPRh_5mh`F!)br2($CQ*9yn>>$izd zvZC(1p z#~1$(umgeW7X$SB344Ip5UOiqe~M>L{coyT{|84&=k`S}UfoA=7`f3dVXj*BxUV)Z zqKu)bDooPZR44d5NI&xm{z8RW!IZ%2pN3%d(o{tZ35{TInfFMt^1a&4{TDo34RM`% z;2sI0AF1X(U|~iRBwrR%jmQE@4=${j3^S(ZeHgSu#5W33^A4y<@YR2dfHk^9bJv-z zS3{vHt4zbF;Y4yG&RXgfGec_tpDMA;GDw|-M7iS*I2R7 z-l^f1OEIAYRJQJ6V4LXZQpS*sK1zNoQL`4orkQBJKiWpVIGbIrlggRZP)V3{7 zF9H*r-76V>)i?1Y?3y+C`L(B1;?MarQR~LoHbWk5ILN!41w^qKrlS04MHj*!DdIcX z=`A$GQE|n9sxPaFzWnKVH90k)swZu^#3q*9B1t2%LCk0MQrl~1OZ&}utD?>X zxIEKOOZ6Jj9FMluI~hu<%@C}yJl<|e-23IBXN~b^VXfn3y{!5Qz?-dBqK>cFksG)w zZlNVK>&#oW8lnG!_0224KS_PB#xL5o_#Cg@E5H9e4GzzifaFwKNjtn+D6`KqF6xz* z521r=Y2m?HC)O_P^psUO`CF8=ey_-$D6M8PZWDReFnDznP&kiqH;H1;j5@vAbgC#p|EN`QUH2}sR5NXl zs|yPn*;lz>i@}EHe9nKArm;wIR|pi`%lp^R3pKq8W_#{JJ^yO+KXjsDv~76br-~}? z>6=C$%T4$DhQpr5m#~5Irf%g6&er`Zmf`YshM$xK@Lj@U;4Z2RuwisN|ARH|MAmDN z(pWWpsMgT%C{$|bb4CiCbgEELXCi7-1gk_xz;1$3Mq^{BQxvk*@-Q}%D_&K64MrE` z9707_YWO+zVPMr;5^V8GY^11;3|=hbuisM$hcAM~$}J6Y{%D9+vhe?ratW#=^){cq zu2&=ige*)%K}4lUkXnS+0#voch+EhQx`v3`8l8l!ESs~uP3j`{Ef^w?C;`j!iP_nQ zMix$lavQM6%ApVcvM>FV6b!7?l{nH!w5r7~UPDdI@Dgv6D}W^~P9hvp0v)-0q0-TW z8@Z=ZblnL=7pZY(Q^mnE=1Gq$d+--5ywyNAsqFRj9MwfZP*~1WmWvxc5r)~ESyfRd zqF{4k1g6dq2D)4%zThr8A+l&_5ULqT#u(pOi&K09tc3x(v8ev}7buX?S>R-pI4N{8=q&FlcDA%7YTGydykL4y9uE66ppHSTZ3 zG-R)_m{`urwq=varq_>wm;%%9QRB(a7)!VkpRqMqS3GpxSuLFuF z*TTQXbX&{CzpF0E=FO?|+lrn`%A^&!=@$p zu^pq*VP!?5w>)nG?@M8-mHNBocKga}(MOYZ&c8ovm+GBz!?@~|A8nsB^Sk*>VcbjA ziSJ5I<#cs&`lu$XelGvW$0qlMyZqqFu|_H7%&#^UAJ6Z~ttJ$PotX5iOtPnK6Vu{Q zZ}B?#*n6>(vGKJ{@p2f_OSCX`-+oIXq>c&CX@PPm=Yt!5=knz;-j)`Ln~2-P_GM*T zww_oa5cw6=@%=gx+*}0NDu{hYLn4eDy6XE!5kF&^auW_V zi($|9@DpX#vcwtm5FBSkYox46P&uR=LoI5C0#+r))`js4zl$h+Cbt5{9PP53G&83x$$P z0|ku!Y3dIS+N_6_?NT@`Ri`Z>&{gV1wcQb8Wu;Wfr>q|BsfUxqTYjZD?)szShZGiK6jFe+HRF} z#!py*Bh1aigZm7b0)M0f_518tU5Lo^NO`xy(`=WYvVgY5|MwK^p&W{PP~#~uqLNBt zf^Y@x0s@PkxU@LQUN-#+p{bl*4OOgllN)~$+>>XZ;xAYriIi&A#H7LvK||*CZUr6*agYR}!PAZD6Ds6N zsl|m>MOG;3A|QHrwSldM>e7_F0+`a0(SYw}Nw3Y&w8U9W?fXE8T>>341x(BgqPZhr zRY7Qow9!mB&6fqPimE@bW7Nr0SQT!EhXVIhOsbh#!NdcHHmGuekqxqcGApwHX94do*v*(sGx;`e0en>*4R+DGz>+HIprTB|!o)R? zXX871b|VTER?aKk4H5(_Mg2u_bz}b5zwj~T%5Z~s6T+j}C z0AFH+?pO$XAoqkNE}(F(82> zlS{`@Jc|-(hYL5t64^ALGITcvnzl;x+aTt7vXkoBpEy2Wg*vOX8sD(FX+JmNb_#Lm>w zOC-5HiNIdwH3#|fp4#9OG!+g_-iEa%SoP1JuVL>rj2B47KNz=B|!9qxXap- zpA@z&P-#Td>M;)TnWV^o3s(?^sCgHeYVD|V<2|BgjiACIx zKQugZ;muO6P+klXDiO$^rqUSRY&KCwTTy%8@jDHCh-aqS8yrU53dsbaY}gt|Fx1EZ z0X}!9z}?~L4(KDEmy9CUb!wwcgLJ5{Ito`a9m4gi>^SM6n>bQSII^135Q(>&#y&8j zCJiy*r!7}Ps~{34yh5~`!u<(OX#2>tfMIvST(m$mQ=&H}0p*%mA(G>)uDy|jy{hqq zZJLBaCUo1>oCCR_6-2xV^)ylYu@vrO$Xt z2OKo`3MYq6zz+$CRVq&g_tP+B;KOx?tY&Yh4Tsm8g%RPyfJQzlRZd}~Ax3z0cG3ak zFn+6`}Lp>}}j{U6vkDkEj>EogB zfG0%#gYfxtn=06G^uq%1LjsQ&GVg{poQ&`0d;DFs9Hu;I&}GXV99a#NBau*|0BlI> z)Le!yjRfNno~`v)zN#?tjUMZusTcl$BPW+dG@8yHR^jh54pNpb;tQ>eQkE`>l?=01 zt5!sgY*@RB-G~Xc3tkQZC~DC{flJ)GGBQQeXB93%e~A)d4QpW!l!j3fk{25zG8(T* zm=cY904{zWH@u~OE07!s&9~+pCgVuN$e}4J2$xB-elS8Q3v4%$ayS)#KB2(Kr@kJ0L4uO}ZfmcKk7>IO|wT=(5 zg)y+~Vg%Me+_zAbP#S}(@Q10KL?1N4sBj)pf8brTG>?X*;MQA$F$(^mG88lf&B#AFKIbCe#{Miq;u|P0vgskxGFPsEc^6M-NPpEGov6 z2VorvN2ZRiXslPmlE+Zy##8(B-(-4qq5Cws&%=B&Vx!1~gT?zk!ZWCa6V9Odaugd$~7ghhi@2ekl;wF z`$|M!vB^@SgQ^lqpt6iZoTjN`)-_$$Vbumnp2wScX|w5o9j=;09~qew<% zGKv<3rSRtf=d;l&t_&`b$2cAJ#DerZYD$*4V0bL^1f!pxcffDyZNlU#!(E&Bkcfqo z!HehcP?+*j*xdn!+JhONo`)uSQ3pFTtks7iyN7wf>ghtTNI7I4$(_E1C7e+|KLVHN zNbY-4SHc$HcU>8VF0kLYj!XMW)DN?Tn7OoXEKJtM z8&j-}$V4U+yA^~7%#m70(U2&5Ad+h=SLzQToCsr6HHiZV^ux;H&|73!LGTa^y9RpL zNqPwq3=+J?6u@n)^OWMoB4eXEHdp}p7NUKYL&}uW&9g-;R8<}6$RqBXFvbs~&EudW zx2U-a$@WiIZ(Kmp<=_>K`;?-PLQbzTl4RF3tuHajDBJ-*K3GYdyk@Z`dm*|Dc>Gkg z%rc1ibur*kAYheFaX0jFLMytm?hhug&P=zWd^B;JD1l$xl-U7LFwJ1@nQqA^&xpU= zAAHT?^lY*O#H}mHf@!Ddf=V_>a)eO{yj3sESYE>kpgc*Wsq=Y9gG>un&yJD4#-3Wmyl#C!vHYhGuXumbQj`lU{S4 z5Ko=P!0P3U8z(#+iWj0Uc7!MHOHO>|gk(UpnkbwYawpP(J<;-$xc3kD&(!P`q7)LR?z{Om;+8@ z2yrimfR;i78QsGhWV;KdB@%r&#TR>5Au-VXNER9}lcx0p1Du8ciB@H5=+NyV9paKi z38g6NI%a-ZbD*l49-g#<`2<`e&^W5BfEz@fMWyXb#E+9V^dF@SQgf32h6Wa}E)r%^ zJ!akM@{X3k{w`+!q{vrY(Y{d?MjjJ?1bi62!kCa*q3$!BgO73qM4cdOewfot^}N0wI$zp#cp zybDP_lK3)ore$Q2q49NjZkIiSVZt#8*8N8^(r6T{BPp7M0YY^3+#}%a?#t#6S#W&Z zewILB0-w(OU>a)|BJZPFz~Q71Mi#-!m||q>&>a(a;`mb#23OSWxoU;dm0ZT&uRYEm zSv*fDNBePWwae=HU?Yn#YtRbCv_VrakpmVrG=hcozuHvmx-ybof<&ZDKMiwrI$xj| zQ}|{<;X|Yb`unN`&3$3#C0qM#;|Wzl0itTcra2`_r%Dw zh(Tyi*OR%D(5dQa2F&?wG?$+g+H{PuY|GXUqQ`5zH#FKs-X$Kpq}TtzH2kP+=yOB* z^p@p^VE53S1{=qoHjS5`PeI>R^uACS340$g9uH5#7miJBH`zXsdanzdP_==NQfJht zu7_vhV_td+4y*>P0M+jkpe&29dzNdU5hQyHrYqG)nHRoQ*NsL>kcv?2@cGpkYtN{k zU%@%%^>zR8EG}jFTA^fqZh81%BS$Q0i1|5;r4;GZ^rTahdW_PX5_PB;;f;xEQKMr; z_a7BSW{U?Zuk&JgWds;eT{jG_q|lDQP_>>tb$!y&3mi6qV7|4H=$(rQi|Q~qO`CT- zJi{~yDT7Xxs51Ak90q2V5O~D06P=&{BV^F{9iM3#L>elsy?QfA2&S<ZK1lPu8PlhCD>mt3TFo9X9yI58aYcPP}0>_Qh1s)WRYm!r{ptfxmDS z)FHOu(QakJ?ZT>iGRu`b{E!PSp%&d_4b!6=ufs4aqjadNN|sOeh_Rspqy~EZ1rkY8 z8-=SgqNh3b9^N6nAuNX9dVOS2L!y9j zdLH^{Ns1_sMa%uNx`QF`n3bgxr`+fdnXg9b2zCL+FObtVia^rA+EjU5gJq&0&R%%chr1-VT9nm<6y-Uz%(!|Moe-%KPB{)yE5M?Z z8R|wJJgpH)B04m88;iQhE6F@k{s1bTc@&twMz<L!u?6NO)8^nFrL? zKYEx~$5Z$aRs!WoM&U5V$mrn>pmq9*Nc@rkt-V)q_tbfuWznBSrr0|*YHC+*ukpi& z4s?@lN10l=Pg~ffl5D-i+$?1aR`xL4qs$f{TQ2ast}5!tj5*ua#M*Mgp+z^Iwv^%N zLN$(UWZ5Gcyk|ta@=G0gQJ4;`=mbafk=y0KOd3D3Yu?rjk=Ou&?5wC3uJB2zoG~9>J?B#N4gt&0Vl`e7q%suNAw7x zlmaQp$(@n=dq7e<)Peo?&*+$rENlHc!k=Ey9m${7X0Efpe?}jwNvpaGTTk)N9Rg%_ z3M14DU)3{ufYccR2`Ka5kU?k-dEnY1j>r+>hvGAE?GPvA3^COL2_$Ogh#X>MG8kuZLm$PhFl@gS|9;K-fzed6(C-2=y7&N4iQpI z#58d2EY8Si+^PfD4sk+GkcUPf625+aaPVN=h@o@8lP(@=oJbwl@f ziHFS3a>L&`paE1Mp4|HjdV*Ud5a!%`L{9MP2qfW^yC5gnGby5kPt*+=4xc7b!wo(o z133^#!jQ@fGB}Y6Bq8lMBYR|uMwKWGyttvOTZ}z^;u1pmsCx&NCRzL`J5$;r zNNQdoN#}0pKx7n@@SVA#)9lrL;lm|7cc_qcL?8p(4s%40aIXYXJ=~x(a)vb*NW@Ec zMoz$h3M7+^N=IZ*0^tOdkYBx_51pl9f6}1>!>vPx>Rh=VRH8R@cu^FTF~a_#jc&9GcdqhaqECKuW6>jSMJ_{CUFnTM)vO=5=b>kr6AND-p~W7 zOd=^>Q3$%BlZ0D-#0awzA(svrq6Y=S@_gOU9gt}SWk(XxoYALG`4_GpJ^;s(cib@LJu_y(bkb#J7cLiS8X7$=g483RaNh(!qfYrl5fj>vQg)b(_uZ z=7|l%9ML`2Wbm3c1?kQOeVCifxfgR2Ps@Dk0FS+b2EM&nw+v&fkfn1F36C^R3H%_^fR)07TaSW^^P#{ z#SI-xd1#njAXnjnF4aHa;hA+p{{9(VOP2t=Oni8$ZXNJsJI$d+Hu}~9lSK<;VB29X z=%lzxq)D!C=(LQ=#)n7d(&6L~=~xkwTL-ay!qfare7H~N4#bI43qd7bsfnWp*g}Dj z`buZy2%L{V0`B%1850BvBqEb^K?c53AS9#11sPpiQyI9HM4gbqJRqh7^lCk!ddwfC zAhaZ0kf&$(_dvQZ@hy3}b#PFnWVnDZ*PeR^oareE&;QXOBgGlTlE{p%9ndm9LL)K@ zojP~Wkc{ss*K{q!lzv9fpr01VjQ039C=MDk0`i^i4qAfb22TYIuOkB&e zoRBLNJQGMjP23rI1k0OaDwWExw&@L>Y4Y4Wuk5=ypLbP$G$su4-?oHKgFLTh#6{{16z0qMWB6}=r zr=Wx^@D&{dyQGpDE7x;GkH8fRB%u^|Mvh>y5=cb$`GO37MjFh4#;r55#_-yUS>1mm zQsjybg5?O*CYgKB=ou=U2_&KvdPXM2q7{@eUHJ{YiyC;FJg@Y8?I4*~EQ=l{Hb^%o z^Z;2q1){i?qdy`8br49vWR+)RA2P-T{;TYZ6=J1g{+muu__`lV#LBqgT*qSB+mmCgX_QX(+0G{lxzJXY>s3 zbsh>VqA5P27g%$FWPIMw$ld`hS5U$2xuG{u1vXXekxa#B^anHukCq_-f^bF-02RoC zDu**NScJuTi~}4|vFJ`7n1BClCoP|ea?TMMs|D|hzJLFSjHy%w67bHSks}No7w+FbB4eRt zfkd3e85#L5fdo{Wo{>9QL$=sI{}C4LhK@zm1v0RKj-Jpn=(CRN8|({r2@&QXFMa5@@EQ4 z7=e02CkZ$eH1NTwd+va`!=VWzG5u$B)MN^Ts2Oj_K$_%rAw}Vi$PxVZ1QJMjx+8J~ zq9Bln4t{6k453s4iAX=r$Q4db)nH^4n>kv>%ABm`lly~cp;YAV1N(A@M=;&=Npo|aD4gCR0^wE@5 z#5MbZ?$NhdKo5$pH}w7o$(ROb6IbZ}qXP<2!$wQ!-lanXM+JclY#8Q*9zp*tkcfT_ zH)OaV9THJhenzg~l_`)&%Dx|wGjNy!sp!IaMowVc7f42S^o;ENgL~CM30(nh=$;g{ z9BE4*vbom|Amu8^d!n(wcR(w$S4Tb+jqe=-&NPf4CddEMp}G@a>Rp zMjq)>%`Q5>s-68aI@l(vMjDYbdq&4Pm1!l@vy|n8oWSKrAfyt)4H-0E9g@&H=!_g- zsY95!c8C*lz-r-Qcf(ydBS+xv1QJMj@*{Ev#!es+*}yY$0SR0n8F|1na)KxeffN+g z&&Y)Q%VUAz7-wXU{v+ZILf(lpvd3s#EiXb`O)lsSVi5!~uz?>rp*P^Rwd@^+E?kg7 zQPi}E9o*M5GD>#>X{c2?BPXbSBM>46o{>E!^iWX3a@99VEL@lkM{Xdy2n2boBdW(_X9{X4=G@Q=SapiJtrC&of{y+P3Myy_x}lTO z<}!2Q&TvB~HKNt>!^FQcdIO87*6-qZrH|+lvoHv#p$YYlZmCt%YSkoZ!v)>rq6?@Y zYjs2K3@!5e8mLcp>DD1Y3|i0v0q81qLq~m@m{2fa?Tnm&s}=~0Z9gMBkmnSXkOjY? zYm$2l*FtloI>NmJ>MNb*;zn1G|D!`Ch0Yef9q85pVnn=#lvFaGBYN_XOVG!GYj5Nc zIid%mfRe}5gBSFf2K)Wq$KZ`{9sMF#trK*%)C z$eoy?keep9eFM(uK47rBW-AXQdD*Q)f_RUl(HkT>{*0c0APXd6Xvi5^E91d!Zv)#7 zaz^(K$*9xxE9A&sJ9rS96*TbeK(`JU>#Ztll(R4B0XR>AcoG(VMn=tRp178kIw4oE z5(&f;CG8m*UH>|yqCx458~`d1PrL-r$PUP!f&vb5L-zsGB?c|IiFESXp@N#IYPAiL zUGa<_A?KVxDr%L^$PwN*fkaGBcR>aLM<5X&!W%MZyy`P>tRQ+-ATw>E(URJos#Gbm>S643+hjO;y1ivr51%ekR@kL;L$20n1Kmkz8ftd@~v z)vazF9JncKO>V9Et$WG7U77TVV$$qpdosd z6EYSy5(p_wbw>8+T&kdgYMC2)f{bbc@x&kXf*yg`L`@oqYU(pG96NzTq)TVySqAMp zXFsv6q;f{b%9&Y+kzF7ab7`KD8=PN(G_=Q`kw-mxOFt*J z9psEY>lhn){!DzJ&$kX>#Z}P2hZp10!C_#+C}EAJ-~XcnJopM4_%P6|1M2!`!E-XB zONRi`M^I^nm@h`=f(kmw-_S`u&zvW=<&}@<$fpT}rT#o3 zXE;RyAuQb)xeI$p`8p`$k-MTpa>YE7F%mL)Mi0mw2`FPG#v6Kt#G+LbsuND?j9$Ux zOCS~Vke-o=uXv3E*A8()_81Z&E~dohaz=J&0C#H7CQjTJbcb1!oYoE__VQ~7)ZHp* z;KM-Y4h4MQOIg^k%|~>PahU=t=qi6h_YU1!U0nE76SBjiRDNW|CVjGRFN6iCE0if7~u?&<=`C@h|ly+~h4jyfke)xTmC;!qRfPN{Aumj?> ze?(6Z;VF=S%BVB4$BcyvN*EA&L$AP+SIw76j?5W7fkIy(75Vowa%TbX)fNYC)c@bm zD|oTikwAky@<;Rx+A@Jubb37_C&=z8kc_IeGcr1)sDlY60zD&Vun7o+_^zChy@RB> z3d(3exS52#coOnNNVj1dPK#nfEv<)8~Ous^`j18 zM2~wx_qgZ+dQc3%q4z&X@j{&Vps=}hz>LsdOFojqHn$E9i(9mX4Yc-%?yxeJfEuZW zaY0YOLnq~kNg1s(dV&{MAPL#+GqT6JB??OTJm1hOJSqb5q|nI?-Q%k*po(wM4ZZ(C zBZo#zkVpR3AwiP%q*YikXySsNL7){#!kq4B~g{SW#x2$3SXn`?&xZg>J2*f7iyodn{BfotBR5@&Mn@BwQT zt>JO_zwi&EOHv5pmMa!I1dBHe7R1srBe=NY{eks>Wdv53S-{{`SstQ>7x4-8(29%s z>b2?>af=T`Zy?l`gbm2=VczyUYByn&qnluO-rkM*o`q4z5i^}?B_>pn4Hq)<+Byc0 zS_2da|Cl|Y@M9Rv1zog031$jY-6Vdkq7y%tN6pIk3_Yr|0KZMuKrx?%wi?J<61dZh z=$Oh%4lYZrA{p;I+%3_psN2E^D(48H8hg&b{mM?)hyU4@Hd_MBMd~Jfp^__P_&1wj zVx0|UlrZmsL2rSNlUk)6a+;2!__guD$xAVM(RCSUBTx}g2mfbg(qY4A`8$Zn_zw)- z%2a)t<&u)96+d5`472jr->=jXt;A2WA4v6ZHB$-G@AU%?-f{3VeQNE_^*tT=oWAfX zu3;H>qJ{y7Bk(-aL~FmbO(#No2K+2u@P!LSrEtm6soWHNmx8~yqt70pS{0;3Hu(4Ii-j7Yzb$;B6Crd$U!n&l^N% zN7GlusX`t4`1v~F3~E>pml;i6d*tad9fnX$2{(nS7eaf`! zyBGd2nBE!Mus{8~M;d6}@EA@WYDk!D`$oP3+eyh4+7_LDBXPL9b;uxL2xMS`+VhBx zc4P%*BGp{b8S%SYS#2_daLp-=BviF+a6yFoC3^e9Nx_5}^H>7GFPoAJ#hX5BtAOqVz%tv&v z6^UvQZ_p7H5=aRIO-g4}U|j?fa81w18SaumB62wwWH3_+B;&O^BV+O$fkd=uosm6B zQXn9bY3GJsz#w0?#0Brx2|Yk?qCg5-@6X5?9%q3Bq(Nuo&WfY;q=PcPh?!uELJ~C&odV5fE>WwEf7-G z{*3G~&yJtCmXSUo6NylbPDJuMA*)%%T+I3(6CRJq3B;bH+#uf8BXWVvXaY&dXP%Kg zx=|~rU?Q~}dY61Kx5l&Z?IFE&a9BLTDdUgH;jSGroZ+k`@ixZLjtCsIwNODnJ~2eEHe0jj9w`M$(UW?jGSPf zQk}S#_c$TM}dM8lII(`C%*c_x1Z!Ay?4MGE9!s4 z-23kxu(-Q`20jdQ?vNpxIcsb(sRe&V&#-I)$r$*2Mh=h{UmzLR_l!)OToe>AiT(|} ziyP=7uP+pHmbr9D@D?R~y2uN7LC3to9g^_jIwMne8?l~|B*PbU%owTp9~B#3zY}@{ zDNZ0Hx#Sr+!sZJkqPTZKhTsx`L_8-KWN;-CNW@5#3o@)w)Q`qloRLBJ6G+76JR@iD zp%q9(Iq{5)^)&>N(cSip>`|Up5GlrSLvL_m)G31q;5T%KF$Ydl&7jKlf?k197s$Z2 z*Z+tfAu3BC6}kE|a)#t|0*M&Dbw>6cy$uDF(Ld^jp1|KSX>rm537T3BifE5dI2A1fmCGK&d32w`T{BF27N{j;8-A# zfY$#DGAPUi63`3bjNG4g3cYN!pqp=T&eB#?m(D*6+8f*UE2j8%-z z$o(>)?YzW+Z6EeCdIn8X){3#jt^I-?P?sT~jH;;{dKZ;3iB((pcB5|{9H@E}H1I(_ zKX=HWS`o;=2Kk(!iybh7w}e25)sQ2HBz6<ktHmsKsF|U_(-Hsj_xIj0Htot zna3iX8FEy|9+aZ~V}%hZa_#iC!W9rmMdHknRi;8cx6nf(A#r527bBw*|D*Y~DY9ho z11Dh(WFk5LD01t!uz_Q)KpI|Ij=V#o&Cfmmu@dlSWHjv@La`}w(Fk=+jVPdk2D=-& z5183RKm#9mGuol3B!pF^1XNJCxuN%afYTX-nPfpfbWo=cW@=Rqm^q2?4$m-&;5Z%h zpatcCehQF(v;|m2hTQtKZt$!Mq@f9hBX^-is0PYm0@6m5axNVLsS_94#D{^-9SUTQ zDHcZ$0e+m{uh*un{m}Cpu!NV4gl9?#KoBKLd^52-*oP z)#CsfEMX_`iGJ8W|8cxuzwf@`#%t7vjo^HS-)ey^^vF7H7toPGo5(e=fDV7COFQhB zA{%p1SGxh}8=AX+?5Q}{_*8%vY-ot+69RIyUJ}&S{_;22gwU;XP z0Wt6qC!ueCvS*CU;2VYb-g~m^L&t9h&Fp;4yqmDUp3#Ws!Rs^<2f-E3>?~ID0nJfb z8jwUbU&$5*az#hni~al>=%q<)TZe%jeyk808HSr6tY8gn;Nisq)LT>LJoaP+dOW|X z`F#%b$iPkiD2NucvMrl6S?of@ht1*Z=Ca?lMiwp7`xwUo!G(zI$?D>TBg>ZQVz!U* zeXV=u->j}nX5oXQxfYztSDRQaW-XT40-enD1nX z?A8T(gdcXjOr3;%Hy8(2$hRejcYfFt$S)N}a>wPgSL>Uh@qOzEh56=dUSFUwiE!sL zK^-c8EI5;>x*;4D;j zoLXay-gI>)#E>ygl+*h4$I10hx2r69I_sFxiiwKsQ7z!7g-Mir;j8bHz+*m@sz7cUv)s?UX zjdadLT3xYH~$r; zl$a3K0v^o}=ui3Zur&-!cz783kA?2dC=~!?hpPx4KDD8^2b#=wS8XG35Xm=uW7Ze- zcVribtblVuSv*DdA|yfxrydvf%Ta1v_-h#`kqh+DJA7zjB@=6mZT|*ry$k~rf>jDO zzod$IJOhEOU|`qYv6*^y4LgBlq%3f1%*24=88J?d3R-@I%Yde5a%1Ks#Y9+u=m;<~ znYB|t{wll74k!~lo<!`W*rD67 zh|Q{8GE+`_**^_g3Xre{8Do?{$0V=WvHX6LAkiwIrscY5%4qYgC9+j~M!kD$t{Ew( zf3N>qnw0|rrlUE)J;`sWRfk!N{xRXSacA1!w9cq77i@o{C_FKck*$ zMH(08=~F&EpgrI)B&f9S1ePL&h5r$TnmZvdh($PUj1#TcL%v->F_G+|;vz|oVN^WFI)I`Q4`B9r4 zDK?|S4`qQEaSucX zR8Q&B!_=LD((%GPj~Y1#fw8xpCt_?$WPG4!_QB?;?um1O{em!T=NOrB^w3AD8-2J# zn2%hU91qNIV2o!%h21DIhrUw8Wh7)KMzJHx?Ey?ANmP2F<^WF|mDEIOdna<{eW8z| z4@`UZu%8d?#KuDJzDoy^fU7#y5{Rp631FEYH_JE;FJU_;(ei3>Z${CI8Pp|agD69z2_{L8 z${x@C-V&3e)#DmhCsK!5;#$kzrN)?nZz+*|o#^q3oUNluTF>o$ml}0c zLBGKbcZIp}CdLI&*NVX09B001P#G`@2&b0zcS# zsT)S#7kp#6E#&ZUde`V{baIqvgkU|C3_9vm(3sPGUro*zaL?a|PB{k7HBqlLANUo} z`f+Sun5y8L_;bIZ+^RsGCLW^l;%dU@p+{iomVn(&+}VeTo`GrZxeerDn?D|08=cgM z^W;o?Nmv~26;JiUqqGldvzayO@zgRpgg00-7UxsBvu0*fD?}uX)GbmU(m?COOE*SC8kk~RM$ax!OkiZhBQ;BcF)Z$u~IpTsT&&gJ!|CJ zS1#yB>gM2SEDm*3>*tM~LXxLx1fWBuR4Ie$(erC$#wJBCM&(x4@Py^&WPFFTg6XML zYMxEdGA2Mf{S;+2Q}AO7UwpAnB~r9jc^}@e+|vxWFBYkKEa3kiYhRKq%dR80ml~gI zk3AVfnM^ayYX5st0w5Vlxbyt`Of|>}8Ogo@0f)ovw@122sTfaLQpy7#%kpB$5~boH zgCL0w>y)H+F81jkKc?U5QHWHE#6Xf{A)C%Z#6$TKo(Ts_f@71w+%hO6hO!v6undbd z3vrkQu{Z53X9ES-LNR`VW|%mzGhHG}B}kS>CS4b;u}KmgeM-26YM)(=B%Q{mYd1>IVM*m;9Y^Nqn|uy;MwVfK0xAj z0oQ;`e#g|$4TBw&CouLzQ;{=NlCe5L*%4|b(M2Z84ADruKIMQQr*fI%kek{*`2@g{ z$dsCe8Gbu`U}l;+9+VR^kqsW^To6^mkC+-NqEUB_L{UMXmBu{U2WeJe(m_J$AScR* zK;{33`T3_xpo)V!$Y@-7uNaGL^b=z_D2@3#1ST)^hbqOH9F-{c!7dWC#!&5Gb&buRLbzA>YUkY%^|6>!0WfhXD_b|)buSsCeXX4%l}PJ(9Z+9hWUr{ zM6aRFLRi71%S#|3E=v`~V z9|LvuIv$H6uU&BNyrtRlqbFLu*)z8Z+H?7fyp!h!JUiD{y4&kM}xt zt80zXQM}OEY3k!|0XoO>RI!X>)XG|mXVc|awyz&IUuAE3l8j7R9cOY` zisH{=cf#0qH$IhLbyktxAH*qQsVE~XVf%}pzg2-75E)ydjkIVYqDplON}NJ$*nQOk z#lFAyub7JKJnFD^5l9wL1oXKG|)15?lIgI-wZMM_zSvg9rnZBH*9(5fKTh$IS z_iAftj~|S`ziG5f=C5{&MDGAHstq8jnE7M0BIc}=g`O0da9Ysw~41R^V}9#@lyM3!FMF(yjR zxmM2fSZRCZ?z3?xQi%Pb``r=OwAV9rZ{$-3442jWcH+ERp1BfI_0t{qN`O&c-E+5N z50@h^rgvGPATsxU{HM7V?Be1nDvUL{FpOc&?C{-R>*~)riX*YH-NrEAjj_%WBJ9i+ za(v$htu?M4lia##YiFF&NLz~oB=6P!$M^T`!?~F1S~l6uw@5Zt$$2A-W`G*CR93M= z%)ft1yseydbi=VT2PzY(Voim6M%Qgsb;tC+5}W%&=Sxr!a(MHJSV88ltsWG#7thj5 zbvsy8fA$~umo-fOmAh|ynALqkowKw=4Sbn3wk}&>r>u}-Y3eBwExE@va_w9H%-S?3 zkIP8!y>h<0*P1`&^1e3g=SuKzCVqVD^T?J&tM16J`z~sJcIsOAZW==>PNepERKvJ0vB^u?BA-vH8ECE=bvu!SMRK1xIr}$lZ!^!Wq@uxnyIy2Y z8djV@_v^bntNv5f_pHi^24}Vk6f&!|pafZM@)iWuyjo86Vn}?8J1eTY>rQleT7TIOw# zF6zYMZ8x7ZOLr%M06wCZp;d@ai5NFTqi*G#k2P7m>K_YmlF6y%iV-6T!{3vGIb?FPacBTt+N&ywquz>E~geDK; z6+9T)6 zX`?-Sh(&43Yp9=*z)=&yh!-T<%y0kuEoIo@Q%*IU2?ZX2Sw<#x3OqZ3wNNcF3}hji zJOuGctdmjz%_T{^|0P^{s<#Ze7mR+;UkiqY1M|FDynG|KmC#oyy7GVrqU~tfoto{#ywNnC;Rggi{RukB@Ax4=N@ZK6@yNmjqYF&1zO9b$r z_bL29`naT*+o7YlCSt0VP<+_sZF=_7*gROg-b4%{#$)2XuY8>-poI2VGN`zx;jAez zYu+5FUj9jNXviC(g3Pq-g9NP~NEB(&58G~W;^js`pxDWSwmuBKs>uZFs-Wf5Gi?cq zX>Kt0hi6#C8lPOJY=Pbb2J8b&f1u~41|dl#0;Zy?5hC@Xt}&gdWyN8xlh4c8LJ)|h z9fKTis$7QkMtai)ErPIu!e_i3nOsJ>Wb|k8`=Gq3u7@sNfj8hIpm9qw1_Tv6lVR1J zq?z}D;;&ZUFSRLjoy}WDv;k${siOBM ziC(xI1l-qhb&{Evh_K`w8_caqeL?W}k#``&=0|qu$qbM<*zzqofaTa>ODED~k)2=~ zRo29hMZd(7SB+<*OJE<%BP|WsW-{L<3Ldjq0^4FQBIjIAb@>LLw|isBuW=fn&m>s{ z`-*REF+ewn04hVR8wM6a$NNKeI)1E52SC?~vT%?&H02@`J$0cZQhlW-TDsh1B{rU( zx1@Wnl1nk2E1t@iGV$CZk*D{{s;ygNdM2Cv2&J^lOPA>+#WY@N54>~*5y#*suqc`p zk~QfnLs;NNaw#z}sNcZOZSV|HRB^uYiR1R~jBc#lP9*Ns!7MeZ{}gS+LAo=KqC7oK zKqWw57&*`h*TaF~m<1hya3y_c!SnV-QaI5htYg3%7oN$R>&~9Ih)4WeCzCgp;8rlz zlvn6w81q_tfJ5F(+ofNg{_(kJs^s}>8P4>RX>!fH-ndOK{@L>IKcvhnkVmeOU6Qx; z%^7#pxrIPC^Kn!DyX55|0Zy%feJ_}zwV|n_3f7>a zJM*c~H#u`j*iINu^lJu!f@uq3u2gsUsHFgdod5aWLS#$+an_41pi|Ix4*$E)O_dH_5utJQ z;r$Oq-c_JY{&H9F1@S*fFbL+wtQO}1^7!p@@u9UKIj2Zee&QL<@wd+<7~3VpIPqum zA8(Ey$`X<}yTbP&xyU3aA9A3Cv7B9r2MA>hZD-t=?Z5baX1orN)P$r`p8ApkS|g;H zwSiQSdp^AyF4kYnN01=J*bl6F0spKY_k#ainvY-})<{diU6zVAV*6 zSSb=Txq8%VrNxBZkKql(B4*NAnc7RT<`mpIb6onW{yFPtw^=j`0W2-uHFV_7WKYL8 zy(^-4H*9q8pkN_J2IIM(hB4)gXR!&8QbV>hAD);q7$9 z1H8RG|FZVQpU3@Smo>5nmX5t@{TLV|0rpwj+u1kk-T$DVqU|-ANdEyq-?-PBZ`ON? zxqIq8D*b{sjkYcI6SvaB&hUcbss_N8dzd4jG4>L50Ks>V-MyIk_wCt339rvt&{=V* zyn+%h{maj7t?skW4}ARIo8ZC1mV`aSblD@g{jwqKNk=w>fl&Aaf{|$)eUN4u&3$xjv!nP)Y_K_53Lhv6SLNB4)BVzZI(0>>4_wrhv4DPJZ zeHRc-sStX!hY6~uB(#ewx*9_y3V<2$2j)LP;AjHj^u(NB2V^DZql%!_4qK;EVXvsy z?f6WcI26#kk<`m#5zGpXmuOz~5ly`Lrm7EpKX^uH&m>g`9i~D%3xP?9%x7v$FFl6N zY$7u2Bw2UDq8q`>4rxWw%PMlL2PJX|ghEDpaD*~@4=hcG8hcW+L?1>mG6*YkA0<%dKO_pP&gh{o(Sn_6Vd}<(LTK<&ZTSgVBQF*7~_uC>HP`; zH#rr9s+WyF_p8ZA899ogWjRlrS(1OWDZE*w0PoZ@YXIlaC1akm*yiU<_hJ(XAOk=VC<-=e8vWCRVEOSo%n1?kP%`esU2frDtXMQk5ZGz>957S%%=qF^$4|3vKe?T6<=0_zy zGT5>c=EyNG#5tv);SnXPwTtMt=H$8b)!gd6*!A&?b5t7}ana$<5qAxm-2(^Wv{nEi z0(h4{Dz~gO@3*>^LG+pzwYlqG&g3>&d*!y$WOs+HIUsJ&g7wy2B&%coD9)XYj$Wm6?EN&Z$pUZe zGDkGIWxbBK=91T{Mx{DkrGua7^7ypvbgcDf?`2e)<#mDqcR*Z|CR@$<3-V@(4rXr= zbZ*^;fa8IDrYqW6nwkwFBkxn7m*#-tPJPkhq+jx`vUTQxW_UFKa65TtcyHMHw#|E_ zFFL?K-u9+;xs~NS;uW4j+Msr>BTV?b+r9?ptR(NzbY7>so1W-R{M^^bxO?&)Xs>I1 z8|-iP9(L2*71}Os&U*>KIr%kd4wMlu{aikT4HW%puNyBainq=h{?pXAXVcqE)NVn0 zQ@3xWUuaK%XMos-*r26&U1?%znv>%cO>vLr*~>jJo_h^PBjDEL~bKAhyu|>scnJY1LC&_4jLN_jeuJ6aTq_SoY*MvKY#JD z8Y((KV|&*eFegHB-~?A_Li=IMRziH)lTLr&cp#Q#s(68vp@ z)r5=xLI(xca=Ji0yV1UTafP|8i1rg#c`sA%kkVgJJmlgZMNJzA5UkSkK86;u4( zrVcBJ#}i#TAs)?rwg=Qd?CY`M>h7*DnRZGkKL$~+<~hoqennR|Eh*0aqUInGnoc=L z$Z00;{Y1!Am9u0J;bM2-P{^1&j}%kM)7shtR9^8Rvm&o+OZEIux@&P_###@E;7XJr zR34Q!aA!l;M7pm>=H|s zX|4TT=w6$%7O1azwcqO-%9nz}>xLv^vYGga8O|~uBxRe_PJW;^qsXDE z7h!)^4)WaO0`t)bo|RMmOE@mxog;ZHI-cszNO@6MjwiQ!W(HVI$~#tG+?!Yk_ncWs zi&OIKV}0%p6A=(?^v>_sJa|C1$gtL)ekPYSdYSKAGy)Kf;r#Wv+V}TWRdUvt_HZKTGZuam%Y5Ca~>`)_BBASL@c=!h=iIEbLD; zzY1koGVgy}X{BGL`)f?WfKzr&pj3XX6s`^Bsyu&wavnsp!nZa9$q*XlT4Jzjuz|Q&xEED*dBf@U_tt|n8`X`Tf!Yf>I_vB zQ3E{$RRK0owe*o$`pogB7Qu)#LdhtmRR+TQtjS7zceDA_5U#rxdB*Z$BSb^x@(+W0 zN8EU#@d*@VXl_fuuwq^*tbgX0qSU8g{fn!tf~%bt*47`;(`gaA{&D7&{SRWV3>9If zLA}4Km*GwAb)V3ndo2rnV-!>{9OUbO1ccjkQSO)_1ZEbxJ^WU9M z(9D#bQWcKPr@!E<4*?JB(1SOkwgZj9vEdavA`)nqTlU5k0V&cBD zyj;Zf1#umevUE^%o@*Vht^I%ofc)b2g(lDbyC*_mi>j>C$_I#BJfWY>3$o7~ch~`K zHwyf~;u0?+V9eS+j}er$_qq=g!dGy7i#iXPz;=iLsOT9U_r(v`#OEQGfx;fx(G&N< zcg|iNH?(D!7>lIJOO1nbfa_Dr_CF*mg$@l|P!k0Ot%D3Q zQod#Em~W6i6|4Rqk@1GB0}L5K9gjx4vF}Eooca1ND-3PZjx^Z!l@3V4V+Xn4;%m!6DT9iGMHYe`P%Q>B=BAbuVivOR##MD6qqM?oSf zu&MkUVvW!&$`hI`>h^hUtIN@u8u<CSRSI~3GC|_}eU(}jIkA0FF!xL%j z99T`8P|*$9=R#5EzcW?L#TXvPXkUGgHZ0G(omDc?NsxqH4B z*OE-5o=cQl2AJJwEd+6iw255!%FR6&?`h;(@5e5%BYKX4tVBxlAjDCvnPpDAyI+@=-3-VD-5YTx=Er=agNIq~F$ zGCfl@dKC0VpES5KB$*7A+?N>*CzUe*$lXE?qPm`arw)BN5hH$;6uoJ(!6r;9yf7=~ zo-}9+fk#Yg3ui>5G~TkC2?d0a4-%&ZCBd0okxqe}7IzJ}XU&muH}|5&b;tSQ7a>oh z9|;F>gBcS#ITprBhOCpoCP93wl$!&{VB#K7*MqLN5?Q|mh)E@-;X>sfPnK2&+5d&q z)qk#zXDZuz>riB;<8PmH?(DSbF8}Hes$Bu*h`wFQ{7SoiUcm&Y>IEEK{;|=Wb|gnt zco&lP|MI!*1ed;f7_M7~+z-U_!VrGixA&BR-xd@c^AXsmw#K2yj2Kt}b#@zjYiOLkc3QZuep!hW zRq{JdPBoaGIlWH7s!stDQblfkk{(~$X8(+fUorZe?W&PmUP`xA=VZ$Swr%5ctq;rI z;xzAdVc;@iaF*sadV0@g#Q=QlvWT4M=)6Q7uUNXk<^*pw<(B~ljIhl&9;6j7TH~^9 zM@RCqc?-@d3V9rJ&crQWTQb7DBREGY^#ZW=8skU= zQUmkk$M=b8sgOoV8BGH6JPBJyfYQb6s&QdGLPHpQR>0WP!VzZ%Lw>D)kVUbwoK2^6ZG8=U&5ilq9vnx+S5*L9!^D1;&wvZPu9c4BDgzZpSF$ED|3X z8L_5&#L=Q~PkwGMeCkHpDTH^7(G>trkHP!-UFdoJ( z<%M;-l#(x`un4m1jG4&TNLuOmycc9)Cz>5m1r5Z@jW`+K{b8ujN0d|_%EMSYeQUNA zQk3{-lJ8Xm#F8^h-T_O`d$CNF;va9eGM{DdDIHm|hPsqwXFF75MFx|Y3^{6MRAHSx zUQM@52DI8IMNnnV4y}&9RJkUJl$ug`I}%1_>nnDNQy!10?*rIToEZQBkf42O(wCjh zRf;}FY?k}_4-hHnO~OjExGnY{=LnZB)!1HPjn)Tvq7-VkYGnEvNtfAfw2nf(dgbNZ zNOX#_xZc2d6td{R3EEI5l0|q;+02`lhpUckMH2 z@qn#(?6Cz2Wp>?L^H%_rL)cOJ8a*{VZALJwA7M&VB15OQiUuzNOlw-i1E8H5jFLc2 z4wda0m4Q?dbJ7-#Y0&{cg3qGSi~);ge(!;4akBLmKb`Y?xX9*X6s}M?BvzZyU3)PC zpTgE^R`zST><%9N798ZP!wac;Q)|!Ni{Z(uB&Xv_fw%V!xa<-8WfgU)HJiFCF7v(qPl2OZ0QtS^9aL)-|_Br(5U8g`AC+ ze$t+{y=)OYv?>7PXfaJ^UpH>k$g?%;gDt^4jm#e7)6fBLqzo!zx%@Cyo$55yo!_TQw_`!@&h$PQ6O24G zNHPz5Ypge7SMeTVVN=+grL6B^&FA$8P!n2uCx#pQgLhlaZyip+?w7LiF3VAL@?L1X zB1`udReS#dIC|#hZT9lS+(9Srb|WsN`jBV*ij%;i5ZTV?QVKiy!{sj)OoeE0G+v5@ z@g|;E8ClfTQ9i)+DVhO=tR(+6F%yewJtDlvSQ{}}IS5|Xmu*@2qXt>Z0z+G(B z60vRe3?8UtZ1VtJ#*2++h@!zq=9ls?6n3m)f&oE@JMsAKy=bn?^`|Vb(9`s zVS?PITez=7sjq|;tr7N=+DYjac>^AmWnmnFYDFX?`vW>5mQ@zGUeAqnihgO2b8|iq zjTa>6x21z)e9o+MX|30D;V+aaaTsA|l`@0rBvSE))X>(3Lq-oh0KC%YS-=#e9|;p= zfu0HGYwFKinI14xD~C-2u~-)zM3vpKW|6JklHKf1RHkc2WMSDstOp! z8qt3u2_EtduRv&C#PCj{0%XuUSxcI6UITB;S2R;7p5~lWwLle=m{gXsu-)NIuj>zI za;N zYqMW)Nm_G!OoJR&>7d-6E%JN{c@}jxM|Hae&R7jps^t@3Wh?$z49{xkDcgoM_|VF@ zR)gb|Uz6wplomFL#$aKylFs?E=rB;w+$;qH7piZ*O{5pIW)0q#HqV^LU9f2_p@y## z>jUuHtv=v(*B$^g8z&&H31A+)bKALNBds0a*Ou}?&$$PAM>EcQdaR*#BJC>XPXfo< z`8~=ywnF`bXUwL0Kg+&`)EyFi4Tke6++zpY5T&2cKD!%v@O9MY=gz}$tvY{O?)3{9 znHC?{Dd9rptfBKvc9;IvHTO;+ihS6Vdd8ZG;Rb<|2akE6OqwYiJ$nN^_LcXrPMaQbS~<0Sb#pP<-Ubpwst?1cB# zH+Co84j!-*=xnQkL6@*IEH2kOPimjjgxmVb6K6dLbEK-d#$BZc;5acl-eY zMp3C@bV)PH27)_C>W7dRR$8OeCSuc3jKlz6K%l<^b%;(L*~N-JwgH2ph<2hBOpFHT zf~j5PGPnRN*n1+BKFX<`5NPp*aCK|A?UEddkUJ!WEww_7iA^`{2Ixj{RQ4o$ZNWzt zw;jiQdK|91FTm>A&=y&`#kC*EUcT%%PT@IN>bBaPZuZP`o+hMyEtwgv6{ zxV_qNhrQ1<3hQ8nx5B!kqeMC{9@XNj0(Ht(m~a-O znNe5Pr7Jo`%bP!TTyCgNR%E5ro|yNMGG^1l$E{Xbq{JgMF6T*~yu6;gTK=KwWviVK z>xq3e7G74o((SU0mp0Tt-3I-GDn1jqma1+$!9vscCj)(Mx1*G^V|D7tk(f89mP=eh zHMENYxdCQNlFRGa?L`BFt`^V~rM5DNM`tAI8i**N;ykaHp*K1#3GEz(C06^ploe5? z80qEC-bf)T)y&WRl`~k&m12!_D6Z#}zi$fZkTMRgx0kC{Y#W)_&P6H{Tai15%?1YS zbVdP93^B&iOaS?2xC&rp+X0Qe+2GkBkR5DB2Iwhpxr;~q=haDg@x++M!=(p(u1g@= z4BfMIf>aB{nw2ahd!vXnE_>-CGEhCa{fBIvsiX5}!FB+1yLg5+cHGf*raI9vv#-r# zK?F{erMhyhy6_Fk6q-S88I_P!9qNH@Q#n5i#{Slzkr_gl=n^C8ZHFFeFg6xm$jxP4 z>A)7&7CWJ*|7`m|1Z6dIoN~cL$VNbvCTn5Ko;S7b;kD-h>xd!a?LUmFhBv|9 z>-%q>dam+Gvnx~obeNOotIwZ2brWOy>t&30xw_|Oz74_T7em=GN3?GmB8e zU3bl{igGn$S4{yymPf6(fMBuT)`xOP)A4`fj(LMYT|?0Q%`Xzzs~Q5Hx>RKTLspT4Pjxy0MjvGL5EaJl)Z9zMfwYXtmd;w-Q|)h~ z=Up3&p4q0_bFA(?;!7Lt(gKxl<^c(?D86&_i9gwN{h#!%(X3NBZh)jMFB*X_Nn) z_y@aGD{=9Eo;A>pd3~gJZqAIi4gj-Enq?2zwfkAKTww22iN8Ac%IE|KJ&W>(O?=(~ zrkC_wHU2`3d#QQ8Si7gSeSnjhf9dBWw_Q&;&4YP0E_;Sl3ukBlad_#@Gwi0;F~G1f zYv4{Rn_ZqZ0BD|^OAO@Fvhz-Y-@KW&|0Hh$*iA!B^SeHd{_mkVPdhbu+RAk0?6q+$ z%<+bUWR_4H6#wXbR&$fz)~8; zUxyJuir1WjX!3O$WoOQO*RV4aj(3Bh33sj`eusMh@fnyjR#cTw(XyT^_OSHAD!XUBor{4VzUv??SOS9-l6ecY$qOiH`~vEiE{Rr^FH49k)u-nx{lxpGS-w4 z`C9)1A%gnbf8WPd7VtvTD&C%-6V~~foX-KtcvvvDImzenzPAvZUSAW5S*xbvE$DBU z2E_5L(p<*v%#Hh2OQ+I(j|>>t-(w8+HW}fsLjstl*ZjI})c0UJtEgKBa(~#}c8jjQ zZFP44{^odje;)^K8tu(vr_TA0ebbzp#LCy)zWROndp!Jwvd0PT>USG}<44~8ND!Ft z9m&t-P?2=`h8;8*Zu`k$%3F$oOe*Zagr*H(5HOa{NX z*xcjnOB4aj#q+hAysl;qLh^c&HT)g}Sl_Ll5vyUl>g;LW=NM-hu`KtWSLAahr8f}G znf|uQYXaUua|4t1u0~77x|006S@|u{QBEPYCCN{t`i?OIjk#&tW1a#fmf;JN) zlO8;er`^2)2!e8)JuJ4B!u%ri#ZY09^+gXHHQ$h|%NU1R=LEZSGt@9-_tuE`^o54O z+VwG>83nD-i<43q=%^;Eo%_T4g!ZqZq3S3g z4Xc&bu-!0SYGi$GHmqPERHJFfL&NSWf>+w~Fcg*q_15w}XuKjd&_8TbD&a_Juvto{ zQ@q_jfnK{_R+sRgE_>#gu@}Xe9F%mC7?1O-YXq#en?Uwr?x2| z$)vqcamY}5Im*N>hcGU7f6OqIFdA}6DRF_P5EowM?7OTs1~PQhrQOe^ zIW8qwEUIQ!91|udOiqn$f){QKno1_TMa82Ge7$l% z6VP*;$Z98rLYO2Xb&I5unDct4v$!=D zy8K~`9Xg(o2zi?((Mv>|ZxNUzHs|04V+p=B`j8QQ_^In`V8J9fq+@Pv_3gKc2OXMxZRdF5JwHa|z7TVlouax`jVrF*+hnvsR7 zuUR(>D4iE|l>>57x+hgQF1oxER3V|k&>}1``WhRE&r8TC4aovCgzRZr9}i_w7L#^S zY1S9>Ij=ieazgP@2m@46?mO@3C<`JtB+ilZRMVZhJ0|+McrdVZvCwEb__z*Bcjg`m zIg<-n&Wq;NSwBR%H3O5t&Wkh0b7~2t0~#Kcn@3-UfGG?q2!F%3%yXr4LXDk)wtSk$Tj{Pu<0hBQ@fibU+A>J3D`H_{n4+{zNOtZgo5{>33O zo>_$t2dy#nruo-{RT{5cF5s1M9wB{=pqo>{gJ=fOySCX6j9*>H>Y)!>Q1&Q#au{V} znho$cwa8YXI(eyS2$5(sJ)}$eEC*an(q0NcfXUK(7_@@8TZA{j8uaK!x2-Mq#~XP^ zrt2{6orlExN^)d9JWrgppCCRr?M9#71Ban?NB~#F8d+dw+lvhh!K>dGu=pvgu`RE; zaOV3xwk$d~J?-LJ>3xcO_1jSpzSe;I%a&KJOx=GFgPNHLu4-S+0VIRAci0h3nyfioU}8)P zL67?3QL{l;;2>vC*tK|AdfQdF%Jrm28h^dsths)?l)Zozrh2W44>+YFq<`2wcbMd7 zrhjA<$It#%x63J)E-K}rWYm97SiA{mLm^YZ@wW&XlxWWBB-SfmM5(S`5`R9c7rLM7v;O16sy)cV|EaGb`y7M+#1j|P zbE0iXYyN>=JiRN%<;208mcp|)h0ht6#lOcG*}~TjgQ!YhP3w!*b_mF|OC0!jZETSDTk4kqi{+LPD(}0X5a&uK0+JR5(G_A?n*gP! z)p>9howY+r^AFiW9ow_Ja^Bi)-5uG_Nm$z=MWBcc{c;W0%F^pvD?+yAWRu)^%cdmt z$$7A!?;68!YO{XdX3-a=!g!{Fs8zCeAXm*YM(6p`I)j1!RT%k|xmU+eq420Y?q zGt#wQPVXAj;e`V62F0_Q6_`%7;RgU-W!S|S8QAh__zHs$i9!xC?MYt&Jbn6Y@rNGi zA_(odK!25NmyJ~$bAY`e&HNFeC>zC!1bMaJ8Y>71+9)}?IvJ^4=vq)y7K43#Sy#`Z z#1pq>ScXqZpC2Aj=D5lB>DUjqQ`i<(mq4t6y|$lcu+hj5g+z#6hKF%xC$G7?5saN` zD@g=bwU_en#y2Q+J;?1QkWMxP!jWx;6`vswkc8!Y zF0l^0Sv6E%`YSp?I^D!#T#^@|J93`NH%0kk>u@=r{iWBuzYkWB$MfUBr%6-*W^9Cv z&h}jCbOOzfnw2jwVRCAeZCfJAY#crtw`ORLy0Nlg@_F2(7g6&<*tWE7T4!pYVu-{J zVT&ORb{-{l=n8(O?CD7gkzhn9kI54)6L$qYxbSEcTWBGdj>OMt1O>WdyI{;0R%?51 zqnm#yab#2uJSN!GwE0q9#)4J=VpaAnN(OmYG*L)RgNR^@_sJLX8T`y}B>buo*RcYK zXXO?xEYhk#o(sxSj}5XHz?TT*83>ylP!Pg&tx6)TBQ`Uyo64h@_QpBWV`ZhA`*9%R zr;68uU_wWy?THE+!3aMpMRx>`Z5R`LUg)q1dcyXVPZxLt!JPJF>0YcBbQ+9jNIR1`}=OOH1Z5B&0d=fQG;(+@KE7n6Zq{4oEno zU^wh-WMI?2j8&&xR@s=VZUCU>nu-t6}J4)LWC^3`z2xSyV#dH*l=iY zz5?f3O?2KX9n!KfB2N72WSG?a(V@b!ZF642AzKT$1Dx zJesrw!Cawu7YaG6l%N%xVaYI{Lf}NMmAsAhE_umgXR@q=?8hU&kNH#TYIFirpMuGf zgvXHrR7lZ6Is_nBMN$#~dg4~)v{64U`Lkmxuny}@7-2{xy;f++XKJV1?Zr8Ew-0&- z^@o(KG#U}+ATB{4QgKx)BoeD@fwoQkPH-uh+X*_t)XvJTbxDEe3E8cO7_FVPBtEP& zTU!aK7+O&S5GXbhpjoO`Aadcwt;%#ui2F8dETkL0dw>|C9&CWsmsA7)`ITl5T3Bkh zCp92&0i^T8&OT$)A$Q|LB~CemJI z;NqjbA0U-U7qaz;k3uVapd=V}!3~v298ZxXYr@pP_Ijl!yzH?&crtT-n1kn1nY^K? zxWv>Ng(9B#5Dt`j0+T8g){pa@A6lR8I*h$8$^h)2m}GDx=0aafnN3uhD;kcF3gVk8 zV8{xU^M-5+LDyG8Y#(j}*TF)_lGwP)jHqW91OqEm?sp2L$>dM87-mrbl|p0w{Nf15 zj2ugoNRaY{y~sCpH+laNpA7S(ApR|4YM`!sN*|GkPhjHTD=9gMU`^rY=s6bI6HVN) zZHz%AASN4$F-#nKE7R!h;C%jI8stqOCk?yp>i8k4J29$6bC=I2yRU|WzbS&@qzI;S-zO??s(wl{2V64M5Jz;G$@t2 zjN6R@AkQ)X1Fj(}P`bk(cD8B6YEU8xlq9lLkJM)WIpiuK22p0vNVquUI;$-DLLO|G zH5v|i+SYlPAE|=UD-SUrh2wcbl49$#@qVV)S^nCZ~!)RL) zpLHla$y`-bZ>yMuPgKDNSMp-~%mE&}YM(~d4bi+}>qOT@Z0lu*!aA4aXJZb0HyMT} z;5aFxB%btBPl9R-;~T?wi_#Sm|MOrZo{T*s@r+<$8vNWDopQfO#DSb@)@M++nQEC> zMa(t*%JV_gGD-l3T2dp&!UN1Gb6G}TZrN^^32Q?lrWAc;G`<^XhL|lgHDkps1Dz8p zq0q>BHU{ua9ylv1aDw&K5XUEmSF-i<3VKbfuH8$SrcH$?Ir$-}%7YK7x(^{$&P)~P zT$}Y{O3svKgdk$RCZr{@2nb1*ikC>ZqA2JqRk z>Rh}mQ_Y}HOL_nap?(>>f=K}3mL88{sQO5fF7t||h?t;G*luN%&z^w=Bb$ImRIIAy zC9AzoS`v61VXA71F*QY!D!M`PHWc+UsZOpq`jYICQtl}}fs~_S1=32YvJ!d2)YIr; zj|@=>28JV%n4e@#> zppTUYk8&@@*(o?IIa`iYfZuC-n2xtSL@6aZj--Cpp2_0p7%ZHtYhj$qNrK27gceyA z>mc^I$*06=mXI9DaNmSOZvw*ot!(US0m>;Wq%)p@6PAp)YpEdNTU>coGrI^C`H}`> zGt66}^k~l;)98#@k;xi*)2$!Pl&Bp8}MpZaCV`LywwvoRx9jW-BE^9Q5 zeOt9a{mGzbnDgv_<=!N-V%(E-(KaD7dE#&JMfd21k=E_~%Wjjc%p&Q7=r^Mx4hhn1 zY;=IH;+b9{c##=38#L;Zm@C{7^K#Wg)QpS{A?uZd6MLSs-HgSG6->vc6U^S>wA!x>;_f zOCwK&Gu^bY#Ns81s35D#ZVazSk@%5NZ$Boe`x+G<4BQ*RSz#(;xwDn(OD=v`R~Ic) zrm!p{7>z`3odl*N@Oel#U9?t1b4I#Uqe_mcFak-N>jm`YN`&1%t}xC1`5mV^AFHTS zAOjOLQRi;U^i8o$gu}@FH7nEXXtDxUNIM^ORpB|6#jB8vj-FU^nKV56Mc_$H`O_{L zsz;&!kfUQsNaU4z%Tia_4APsLG6=D+q*u_c+UJbHS(w|{64ZZOp45@Ooh?cqJvlYl z50e0mLO&DPU&F{nVxBV0G~YF9PNbtKh#)2!8#gyWE&cij^GI~*aemK0HMc(yR&Z4l z5)#>8|4@L8T%jQ|c*Wm-P6&5ZUx8xD<#Smsx*?q{DKQhy{bPRi%$@#sA0x@Cq>vZ& z{o@Q$nxv2u@cuEsJ&A?({&5433Q3tNlE3?y7;Wbf4~6{pxiVLRS?Jl9$iMjmdi2QI zp9$CcT7X~v zP{E*BztF^g`*}t)XtZxVZshi{*(6htR+J7#6&w z6g-0NA2+bdOG?F^asQZ^wk4^dCG_^W8Au7%N@EpVEUn}ZLP1i%c}Y?l8qMz?Pf_zc zOvOCVF>(O^JP9%cZa~FBqBZ{hF=EOkg&2YF9~ZDQDq1+8!_W0&3{xN}1*H%Eag2gl z5_=-xBC2J=j^uxMv6*gagk1ow>$lG(b}TM6MVH_y!#~!CHsD;F61b3nA(ziTXLAAP zBS~p^kn@i}_l&A^QOm8b1A@!={SR=T&nS#E*2(=34dm`ax1TPnv zN{|0Rob(EMG;RMqf2CAY^-+`y^DO@L4@9M=k^D$_ir@cmy_*Qc{`WuNKwks(@IPq4 zPKhb+Pw=o9-v9dZh-aRGoilMl|LqS6y#p;UA@RnbpO?=rPoQp>l!8YB|9CndB{?}iItAFtaFtKS8hqduP6gAZ$U{8_? zI;LGdx46e0$L*8UQ0DmUbM;t&^t>!W|Kbk`)%F%d4@Hmv@P~lIAL{%bcE$Y<30`MO z-&zFz$Uj$lF?fNfLYgh+>&GaPjrlEs`=UUmj`UuLmXt}o_n$vr!Eteaylhv0_Xjby z(}-}Q|BPg&fBVA&PoPI1G{ilSe_j=a+Hhen_eKBkzkgo9>rzsd_4RK*#}gnWB=AY8sCc-4Y|w(E$-*v(zC8DjiT{y$+Y;aT z+s7#8tI$q#{P&OX;N9$LfBA8Q5i%AtTw?TN!5kn2LQ*pBZI^))oY>kI_Wb=>54-p5%35ZZn(T`uenxEyWd0wvn<#Q!% zg!KNi;Bf!q4=5xXkrkSyZhsK>l?Gy|q!7{@{;?1m5vfhq1PRs4KMpGM;|U!skSfu8 z{rU$Cy=w?u7W4eqKOoXolI(j>$^7;QJjskZk(^k+|A7!%hW^8W!oU83=v5VANsgM! zAF2SUz$_st6`$SwV@2u@2q|tJ1?azX`Mk9DGvKajBn|KafI7N~uVFK|hw*EQXRl`&}$*%b&me zIHI$Eq;BDtk43|S53cP$?Zq{Rw+HwBF5rj@vr#R2KAg~${$r91k;43?w0e8b{B9$o!#DAN-0=GYU-Dw@dIEslpoXf`{#~rc2Q|->xP&;QbyfT;c}C#brQO$3ZBu(mGwBYTNRq zmWOU9eL!Qfm@tYToJ31_0&8ugyPwWkCQI%_g6wrf7kw{uyuO{CR{@vgSO50E+*Zi;s8NF>ux@d(hop>$c=jL*T=}IL@((8+BI$J+FZ>IX> zV|$d<7O9=uwv@VJ)b)^szUPM2a<4i_DN`+Mkj4(J#t*nq z=%SjaF+2~+%iX}fu-+4WL$$_^y=mIQH!hR=OCjTUM$+1glZ-?S^hICsJT$*DXcOB* zr%UB~oRO>MBnx}rg_n5a|5d8G@rvwd{wO~)0v6KyHn7N>Oa`;ajnvq>b znSc0`Jqg}J-fME0GlG*ViJydCUKvNl>O*^+R{Mcx-oU=0weJk~v`H6k$fvG}_}vrQy@2P`Iw?~VovL|y$N zyl~vFIjYJGjABcCKpAzV%{v5dx4{jR>oQHT*q`hx-Ki%vrUHI1d-ci41^5z^QtG`6 zW$AL8JL{J6NwRj#VjGj8EvEr%UYv2^(_orbPIjwZI#QU-p-kAt3)VV-<@=2}hc6oc zwvz`GCr+-gMfy#)H^z|CXex~3St!dHG5ZsyQP=P6wA~&2zLv-=1ytoPg$XQ3Jyl7L zL@To^#>sps?8DJZD4$l5z4bZ`I6eLIlNb%0#E>QFVuDBy>d{kJAY^tO2$=BVZS4x`X|rYVcx6mXo0q#%+yEEf|yY!jV|aod{tX za{@Wd1-qh;-t0%{b3FIX7{Jy4l!n0i%tJyvvaXkhyk|tjMoL~O!TckD-*NDa=a!z9 z^MucsF}>LYQ%j}_(HJLAY=!uwR4?h&IfefxgS1p8Et7k4Ohy^pHjHsGKeQNu5@0E1 zJhV<;hTcM?DPz(AWxw<{JrKS~DaGoz#8s2qOf%RH=8@P$?C6J?+NutdLf%Wo&qYKM zO5;WD%2Y4-q?i^!j6S!NFPh_I;m{keW?HUTj=D5co=o*JP7puD9-?eUR5;}WVDC0g zAR2ECQ2KQ)a;m=u>(4J*ATy)~GS70#>BHT<>ar2dp2~%>qO6^zml;Fo4+tO2gb61> znqUyP*JEQA`J}!pENq8Nd&M1qNKP+Wvq&235AnJDK|?Q-PAk1QYm%}U^M53o zK2}>nKCOE~ox-5ae}E*?+sbf7m3rYB&x85*mNgprOrE2C9s)J;jwuxzd!EaJp&4=+ zt_-K!k#nZwyvbuD8V#H~#WiRh3J^tuzIGNo=F{hju|CF3hBKxwKUvs6;fL|y+hc&u zfvmCV%IK96ab}#WK8^)mC!(lX1L5G~f$LObMUwjrJiu^AlI}Gz#ggG9Or4fvywXsu z#bUX!OvFN-F4s8sSdJ~IfLDiJ)&VX*U1=I3*$p+W5zFm7l?7CX$TRo4oRxdvgjh-)RJco?x(bK&L+#bFf-0xDjga5M=PCY z%)WpOHPviPRub-nO3hE7i?32Mld!w;oGc1>)w{YAuBytAoYPS?aP%c<_{YW%-daFC z|LMF6Uibpis3qU%hFSIaq>|WT8qNnoCB6Iv_@>t6t~#8cD?2lApb~ z+?iACbn_F_vKa|Lfn9&D#1ywbG@$=8ge);L+&?d1q?eQ{T?aTWMjEF~lRENbUp_ZF zXKw(Mlq>i1|18nkhQ3gT4+?@iUnwtuhyijac!mR4E{G+LVGD!l-n$Dg4a+eOfjm3gNaaf46g7|C#Me1{r@kIBH)$_G(KeE7K`0G`AUp^4#Yk7%qf zbQIyB)EmTw?|4%QI<67$lfCv~{KBDId9hZ^1<&1D-w-rttc4f#J~V|uE{*h$gOJIJ zW7Yz7^akv-zM@&IPBn279<2b2VZRN@*}|#m*{GsgvtGVWR#uZ)?8Q_PAp2xFYXi&^E1=Wbre@JsE~(cKs$2>Y4yo0 zRjjg^FnlU^B+#eizLG(;t0H*B=mRP-YC0;8EZylD^bIi|iq1GtcC-h7id8ddV<_Un zLLI9G7LPaioH!;)^bX?R)IO7f{S`bt3)?NB-Dvz*d4Lfv_E=t+kw4$kLtb*vCB3(9 zhEaE>WJ`6kqHal&K78xBO|f5ajn`0%@?t7%95l)t$oFHWdTq_rIJqNk8!XRtqk#lf z_3mL=0$xu{%RWo;@JO*VO<*H7pVlpB40A`T)9CuA`%AF%sx=-78VX9{M%w&b%2#|I z!x86|j^al`Ui6xIF*ai)yr5dHxMOVFXi+j2#QOTFJ0%jF^mE^Kh|?-h`pzh?s-i7P z52mB8A0Oc>MjiAenw;q335+)EP=9CHI}j-7P%F=97Ym!J?*Z>3S6X9$nxquwgsJy) zXn3FbJq(RSt)EYQ!h4^8Dm5PFytR9{LYJn_ZGo>Gr;}QYYD7y)(k*l(35xycL?xRn zZjIN`9_8F;STVH&1n^$?Vrlm(Ce`OKrCv!~L(@iNR8;b6?3FB1s;GGj!Pf|44TFdpT^L~kUdU$z zK9|Wo;g4aG+E}VQEDS$$Vxd0*8nWfah3xnJFMZIHr?2>th|wUiBDIgR7?^AFJr7SA z7bd}t$@D$&P5{rvi$Py*2yG~Vcu1trXqCcVMMAh;&^1{$1}3Y3UK+GfqjSRNx`qlW zv1KVD;ipOMtd06yC}^J4E4Y!s!;MF4?_t3wIjWx8CRvDZxqTREy4XdSTx|zsef%2! zc3+1B1)sL+Uqhmg@+fO!5GT)L!D2NOKsDA7;Q%NhDTeTLC%#Z z6VXKM0hlV5GNO7HSsOnV_(exYd|7%uqJ8X1hL%EmLa#q7Tm(T6C+F#p^hd3D1 z)Pb&oBx{Vu1YR|@o40uKBZ|!CQlF+~H!z#n+_kR-Qg&Rae$umw-yTi)SSk)*X2(!W zmT_tXWYJqPj9?;_D)BUtXrGzvj?mahvLJ|Pl?nh~Ie`4(t=tu(4uZ5(0QZ*Mf;*%u z9b#d>k>vB$X_4P_Ed7I2){N%(m!TY_np3^mGLdPN?XRildQvr`IbylxRM`0M)|{r; zF)o8yA3BS9sf?;uLBCP4&K!}Gb`Gw?8FLTlk>y>qO2-`!5+G~xDcd-#-|Du zJ+z*%GtN0Jim73>DEgWXz}WSJKU#Zu%Szf!uCO+5gQ;QO0@14VOZVe-W<>qYyIJ$N z=B#?Wq-=cuywxK9uhxO{@};=+?5vVKUL^41>br8mba0u_ci{d!fJ(e<1B>t*5Oi7h zQpa;bMPoI$X8*>Doka-H5zzGR&!`zuAa;-nXE{#d&&yF5WH;tlJYmt)f4JXr%BsTa zpEpkwsJNf^FK+v9|7Gr4vlMzB+p)R>=Cn&;=2VQqY@WC%X1ztJ4*u@%f&XJG3b1aO zT=qmyk*0GlD0y#Y3>75rDyB7;4res1Nw-KTilyr0H7n3UWREs+m~mk#EJ-ttbUQLT z)qa_x2|Y4v`MCrdeJ&XWuVNW1W~n=?`sYqW=532q&pn4rd9z$U()Ks@SE*i$mjc7J zK#kPJe20y2jFvZc)4eOc`2*A9;+NAi+(Fy387Ll}UEJwCIo=F^Yux<5mAss~Nyp3! zGq`Z_=bW7WgT##x8w18-5KTXMrECsKe^$n4r4vQGu}=C{Cbc5bSFj`Jd}U#Zr0avl z0NQxGKloxH$)5wKC;u=J+pnqlL1ZA>e^E?ovS;>K#savFXCY`nCY9P&O~lpvn-s!X z*mmGI^g-Y}5_TIB9tm~Wp=Ie7W~7PFX1H*>-Y%obJ#pI3)U_!vht=?K>c=nA9lsAP zlJqnzpo_#bv7oPtdb<*-_jz;NDW;4(>`y6uQ+3}0}X@sJ1H zYL{cI5vhYWxm_Bjj@~RIjZ20~wrun@&O7Z&y)9UCHPEu$W!v860wdf8(OE0&TkP=X|>~B>L`&<<^qy|VZ7|67Eodmxu_#VYU+tt zbXxWG!Zz8B`PVV#n`+GAb5V{Z#$T-&@HpJ>Gem@v(CeD&%^>Q_had-au4Y3o3M`D@ z^+ft+dlqW|;tvTztFjRAwJuk=b0rn_@sh2N)aRu>0_n%-@Q^KO1|&Lf#1Ya=&aixE zykGWmj2&$?Bk#v4fkDvo^+GnS?n)Oy;aNv=ir{{w{$zgvu{Z5Mxg+xe?@1%8SJWGaDiJ$*6orFx25$F=>54>6saR$%o4ybdOZR zBq7L8#Y&<(w92LgKxtiP&(@@?fjwNCN{9FsRS(P<6Urf37d(>un9v@nsxYm;6l}2P z$X!|KheeWKs6&++>|HWu$y5DzNl<`60XEc-;v>Bn%kTt1cEU23DXM zc276tI_V3f#rJ?^`SE*6z|NyL&~$x^bJ8%qTUhPpD@uA&%L^ZKM(lE{#oS0Mp^%fZ zFo>g((Gg!q)mC3(Td2wsDe{!OgQTxY@R(NWJf>l^c$UPmC2%&S&9cNczcS=eD5U3M zwz9Nt2(eI1?~^<*^$K2M&bwjl)GsoolC z^K{cZ#G~`m2}YZz{-PKuRExog^QwewmAb;qA1V|iT;AqYf68acB4K%b;#kS}V6P11 zBG%yA2srt(dn&`r2u_q0q&mw6I43b^(ej1Ln*mYfaYvFBCrQ#bjVf|fYO-SiE$Ryd zxDiPe!m?9&9ipY;DPNJ@Oj!p9>TI9Lk`*C`rVhi?0f0rJeHX2!5Mz1w-9r3yMFU+3 zgSWWM!159wl?;@Ka@c0Xn+fO+Qk93d!@MZ(SNDht)y-uh@GESb_<@{dzJZQ!?WPQCa92OZ(9to-vtoiGOlh9U)>&M*Q6Z8ZyQ2n16xSgpwZ; z2~w3$Ru!{Sa>mt3n2Z@x85o1ES9hKeJdXfX^%PMB1sA1lh%6z zBXv#s^5$Q`#*c@Ay;dO?FLYmLsM9yw4MLjqWpwO~!0g;7i|_3GT&$pws(M)bRu%n( zGOcG$nU+`~vXur|i=EQVoSf1|e0Om>5;Y}({_;4-5dByK# zm+%3jE_PT(&zB}H-#g+Ni-qUaA%K=g7fEUhM3g*J1frP%1I)fx&0J=VBr(wp!9KGJ zlr@!nuRN$MJ%me(o>_sD0H4V-curtvsZoO>@|P2F)zQEc3B7ms!wFu1ss~|E*pwF5 z193Q?yM4kvn6iiZ5J^uu`u>{F7PC_uGG;K#cG@wU{H-6U3yhXx7uC?P|))HaOK3!V{;z8ea@#p zlEs<7c)3!+sgYxoD{X&jT(q;;hYaQ_ejF8MObrLT=7mQ0-dN!RycQx}j14J!{2^;j zX#?2(TZ!MO2=vT-rzPtXUZ3VkK;%e8GeSCdR~1WFN>IMsd6l4;p6#jWb;!#w20RPt zhZ60{NoTU+z;v}lct*Rx&~woo8%X(a0(AbIC}9oo$;@9LNr$2H=$Db1s}(Y znQgp>$AxXcSDpoX6ST)`CQOf z`j{axi8nsptL@e~;q(||cG(LY+u49jW8%G}yA8G_BI;U5}_zn`1gVaVNEi1@kVYZEXGEoZ&)eez2sj|vv{7N<*p$8aWq z5fh)zv zK7I%Z{){%oNIJgUi++Pzx+5y=Zk*e{G`3Y_Zx)ErpoE=MXR~9u1uO1}gsNeokj~^sm_iig1$^~`sq#b($8}Iqui-&o z;`-!|V9?vjMfCZlY+wicE#Sf!fQG7XXlJ>&qt1zmE<)M5*7IqshRN`1f=>oDo9^2fr{?n(!3WUul-YiloGjVhAK?eliJSC~j6H%v zKX5Tc?F3ksI+H}l^ zWckhgjNhJvcX9;#Z^J=7zRNuy_bz_C`#5|%?7ZB=w97W~NQ;~b>qtBT^Q}>PSbgVK z*u>P#kyx+U&;efc1_fV{N}3#BNuP9$BuKq)$^u4tof@zwg188%%>qsPqxk?~f2i|mMG9slYpI;=Bqw`z}S@0Bey9!Aysj1N&a@ z0misvroGA#q5R5@Y0#Qwswmx~M13d3U>fubl+7A!zJLx>1X*O5wCGb%hRWQHna+%1 z&VsqRl0s$miegEV-6KA(^3O5uyjnREEdxfTvjDp?G#we4rMDdgeNmEhguR5BT3`UI zjFU-Fnumpmq6Hgb7%bTK@}b><0Q*_DBYSEN=H(}EXcD+Ru6G4G#zgYHjKLsE7}*S$ zmVTaCgLoGz?rbpaw>%_P25_0=o#lbCm6s-vKwg^IoB3Y^)=GOL%ao0-TriBmudKSk zt0C_iyrGLpNoreT739mXi%wu>xNRv)O*Vs~jpU<|ZcR;vufeHO>Fl~PKfi8_R{md! zOWZ2?l1o&<&@??<3Q|xXv*BuxGj>m#^v)TP(h}^cA`y;OQ<6(Muv@AB&;XlaT2BYi zAH-F)gEOj=FIKIdjG-WaHLqaKfGgHye5Pe?AYEek#c7!#FLc26{$|bc?oe)tt5pq|%4^b1LjUyo;=0ZLs&7$qp6Vq_v|Y5GM|nC(f1W2@ ztI=R!#EPSw3-xLaCI%j5rDW;$yrA(~3^PS^gQgc?@Gp(r%)w-4dO`%21!*J%r?zmc z7CfY^5&%o9|0DTN3Y#3sN!n?!Kj^u(I)aQrj5O&5(y^n^dWdV1(k~fUjfK8Y^&?s_ zW}_tC`Cpi06gLg&T4902b~?;^W&cppp@2jH)(>?2dT%VYu-NNZ6tO6%Hu^r;k9%iP zh)j%@wZxL&`y36WL`Y9dad1-{-6RY^6BMRi)-k6lsI;y@XC2Vk8gSMtzsS5}o#8{* zsK$Qs{CHn~K|{Fa`1qH7@Umu5>@tY7Y52fGc@!tR*(Y8gx*?96dhFYk!D zTOAYoi~mEUe=u!0p(V(bw^r|Yl3_BZR^VMt0LWz|Vp~2PVdTE{53K-2K)S!hP8-xk7S&ObCMO|=%Rt&8_H1PB z<{!_C_#*7wj2z?-UlvW+6$MRex6dW~S_DIxoL_`~fPSn3w~En_9)4WZ%3uGWW}b_6 zsUn{9@_EflAAo+!24DR8d|4q5*w*iM1sao)niWdoHi0u3-;RmcNwF;6XFLPueA`CQ zhH+XocL~SX?0}ujq>x#p#c;;odz%|rW%b*WZI3tsTFi%ZhePel*hU}m1W01y1r5ZW z=((boVqz4Sc6tbJCXs20DEQ@Xe=gRv(knc&()E=ik$y-hf_F#YdCtC5oSq5-cJO3 zJ%PA{`=-ov7FOkiBg&!=AQahkI0Q1wf8D z6v0CTO_&V;HB6ZoqcRY){^eCX9S6L-RWU*Bi-WgF6&56Y&KYTHNctz&BE$bs{X$s0 z4-gOIQw3p!kiqN3dq%p@A(+jS21RkkL|XC)`g(YyNVML>yc-WcQ#CL&Na1CNgTo_3 z_ZC}A2}u;JgL;vKbE!ry8O3$|;sZxBvVUM)z+sx00p=?y8RkKW02pX|!+@y4Zsx#f z3$iXSlT1{yKuV)LRt`#*29t8HQQPa1Ulb_b%X*Blw*ialF(!Ttmkk1cRrfbDF&9;A0-{!#B6f~{t}HA!`= za1JI0M>NoNAtv|N_Xa5NZn1%;PFb_OGQm{GEN+k_Ho&+4$2iDnL~aa5I<+;7Dpaw~ z%m7eHxVpxX(Pm>8A83zpP$WP`M|pKn!dJ>?HZi=lR$2f*KN8_?5rd{h;sxLV#n-Bh z2K`>s3Yg`YNLUyxjr0|$@99v@Bl$j3mbC?GMXh5S~ zFayROx-BUdKh{0iK`4+U!gV8jeVTl}LQ-RNITrOneJ$Me)XFN{yD~=>E_oLOEuY1o zcb0@)CVKu7hGqCmQGi{1|1H9`usl>eO;Iv>Aa_lP0tS2<`MnK|m$no8x7)eA6;+5G&~LS(E?^nSdm@`u@upo51LK={-9v!(CbG zf%`zLDaG_90+dju0(2|W3oa3HWvmK(cq$ek@|QFXHF9Es{yZKIL!rl>A9qjQal zM%kMmZ+urT>k{&{?7zUOA=T>hiqI>?m$?d?8NnfGs<0uwhu2Np_h7pd6Gq`~7zflq z)~OwHhPG_Uxb9E&)+%M(GH#mB%pumVUj?&Tvxl0}R-tlvNz8XrSHwTXzW?MzNEKXB zQysGA!2_6nUe(L)0$IngyL?_mWsLlfacGXej{V1nrWX=Xrj|!U=B}($C+fwYc&e7y z@=GLH7_e#S%I%xT)B9Vc?F|ys^uR3-)Yw}HeoP;AEay>}7K43`tU-GiL?$a$FGw0M zf3I)XX6f}hzW7}3-eh)1@MqNK;u|cd&0LSVzr3~mPG6`jcAQ8;+^GPkDK|uVF5Z9K z`D%G(Q43}cq`{MKu)Awm{p9Tr4*6w#b#ka-YgZNi5S;0VuALe2jHEfa_24h_vgj_9 zW;KdF*!v>3w$9?71xrWgOnm?l)_`!0y*t)l+}748D!?!@EupZ9wdMe{;p(0lI4QkR zP7}RBUi>IdHJt2xBq3@RSrya%lgm!E|NLAg5}NvWO%aWRkz{|-h-6GinPm9(moxaP z;-n(sPs{3?$|Rn+$j`mxnBNvVS@x~o4Q{?P*rKPx^Qr3nSqYLwVCVq6n~Z^^ z5Ez(ZYtW3WVd5Zq~q7aI*iKQ#grO;)0x}Z;|Nb+Zpr*RRRX`YQl z-SmL!LCg=0(69(d=`(a4tyRxVcgJBFGaZ~%G(x82JU%1OjEGSa%FJ@F?Y`5!DpaKE znG<0AEXQ#?#r=Q_#I^)I)*DjzkaSFolzh1^$@PgLBqnijpK`)##j zlZ|ivu){{717IQSaOY`sC%V5(!EH;D1+1TE!l}INk=LTnSGLDYCH{aMRwA8y729mG zD5DAXyyo4()81Eh#RPF^=UROH=(atIPC9%Kwg_TwzU<*NcE)*x?R6iW=+iPU>75am zk@pHBu7T@p^BjDuRbG;Q-h&mu^5d2j(kjjqUGj4(?V?!dvN`tkTq=sAd5j4MMWIW^k@CSUlE@L|6uggH%^TgUR#+N{^6Kb2pj(gZ4%gQt< z9a@28Y|M0TeGze;I8td;&VhFMnE_T0)p4fIVl(LV*dPB7YZ9hUi=hc}PW(~pb@PT8 zlcdCX08G@q&m0#8JnNm=$kRzTycq7mMptKshiF)wHkM<8oaXow(nOQO%%XkexYG1l zpc&maZT;iq7FX`Dg4S9S{xqZ0>sPZpGAfMStg|QkFBqS_T>2XRd2cWjG69Z&l`v^Q)ImYUJ+nsC<9dE znwprUkC{$R9sJ(3%Gs-m#2mty*k3|(Cs74U_Q&Z*`d6#Uae2w1W40DI_rge<5VBZi zGT6*9)!e(ajMK(wHtYyXLEPT0EzWsr#kF=jM0!c8ZHWZO7V~`fdcH)Yd?`Yu8_^CM&UlOIUPJkvA;K8Mw#O#l{Cs^@soNhmHJAQZc zVG}|fg+DZRwPU85~ophUF1JACL;gOipS`!b~Ntd zs@{KJ-*}9!_{xi~ym)C&BW#UIVo?DGBYkQB-r1aSum^9(+P3-PQL{9ynx{ft#al){uzsH>`DmhWB3+RSkpjldhE4}Hym zTU9m4grj?>I}6EfD_Tx0{d}>%L*%ZNQdtjLT^&1HvxmsZJiS*w$NG}QDM))D{MRPt(^d}AKL&)6 z&0vTGU#4;uy8ju?ucSl2RpMf{CquaRi0w5*IY2pdCkEm#`0OgcBoNz=b1$+bYqb9$ z@ff2nE$Xd>y_Z)HnePD2G8Zm3E-G-Ynw)s`)lm<9%e-}}qnQ~e<Ci#8bIUZt)>QyQP6+8zkUA|h;8lGyoOV7oUY5zvj6hn8LYa3Hh63no{Q<&8 zhRZ+7jy#GU6uTDxP-&}KfPo+TFK#z|{!xbsbO0lXJeLX2nzSVop0yq2$6+Kg3qPYnR@g3)04T*vf67}<+;E<5 z$q@G;Kg`Z45iga4@q``M$@1=0d6O#;T?Ldl2;NJ^XE4Z1#E1s$KlI2Stg%5^h0%-5 zq8H)bln`s3;6Cb127IP)^MHGtQU9POPviM?2-qia&M@ zoB`at1oX_PXrKYr`P<*m9fqHGVBnMmIqCOGC*73e`{PKVgF zyT_ecA6ZB*)kh~hXSAq5KpMKXnZ%)HeTEe@sXvjR=2i)|>ho;Z*y8A&uP%}x%}pPC zBnmPby&Jbu#NZ?b2xl}aoK3}W?i8N15b7`*il*k#k`*}(WUIzjOai`1+Jbj^m87Z- zK!vG+4I{XQYd}Tvxjx<-^SU$LP@+^d0&|T-`~JDW^&LgjD@v(L5Vk>MfRXF51QL={ z4k}DlFE>aPHG4(pvgsqwuxHdhhBEJIH_(xypBOaD@?UDtq9 zfh>5%@djMj=5$SnUP7cgAX%hT*Q1e;AYDe56(j4aA}gbY_`QT4ZoFQ>Y?Fevg4TcE zE6p%<4t2pbr9&srVbjF$Kh>S(2yu)!f=rQJx(IKN^HoMkA@R93`AWziEM@_|@AMCZ zm_n@X1N|`Nfmgu~T*C}vD6AbJ3v}3)dUKs*iugq0qm<{CQC5bVn7A?=+Wiw^Cu{hAh!f8+rbRI{ID7J!n{Gj^oK%BRw|1oxoo0#%x>o&31oe4o zb)}ymb;B)2boV#7S$J6A6;-HN9-{ZGXEp|y)CIKrbx&)Sk8Gob$R15C4}_{Kk%yx&YVpupB!Y}BNNPy-EhAtf;Tj#r&6JZ z{6&>s{4XM`*FxaK>SIo=yz!Q$T29UJx-|{@N&jPEa2qiUhjwehvkC+7VOoXZx_{EH z2V+~Z1~j7^Co6v>o-v8YS@5OZOHZ~{z6Qoyy~@gRXJJjZ(KJbr=A_*nr$&7)4M?r+ zZhFz=mnnAd#9`RuZhr?v)-aA9zI?rSgMK2%w&mer5mIGSrR4+NQ zg{+B>*yknjVa%1(sV_$M`5J(;$`~&6SSv8(xy@FrI;XOFKG!orcITOlUhHk=0Bm{v z1)&zC20<6ma-v2zW;y*%zz2Ct{@G z<%Bg%?n=@NN!YKZ_lg!AQW9(0oF6Vh*VQeq|xW2ezD{|;?c;=b+zZWY3Qm2GW)_n){Lf`f%aNyjW2a?u%d^5Fe>08&qKbzI-+4{cOwmXV=YcngW5xL&?{_YZYRn^S{&#z); z+9opq)?h^tNdQ%ex9RI8!$orsIfISfYIy6d2FBK@zhlG{l`jwb!VyfXF{`p20d%HX zFP*T+xeg)R5QxyATOy`NQ)V$!=ujY% znOjq_qJElK9LP8E!?i}Xi`nFdyz$5MC-e|zk0EIyZPqnPN)$?_+ljQCUiYt#=k0n^ zj;`FXFKnOH!7oVdFgYKHjX$arbYFC5>ZU0QEMET%RuGIwh9D=pLf*K^BR5$etEW(4 z3YT>hBGrJ~vYrqY+pXnJCw~1QoEO|><-3mcXf|Fv<5$=YUPe=rQ zUM@8ZP^tB=>hCaw;Ylke;(PRB3@8o54kE8jM=aNdX-lMA7@j$c0b)>Z2^dklfHs+| z<#0S%K~nAy{R|v_RuaR)$7(=!KNo)#9QaWD!7&Sw}`gFWDt*l zRc6V*SGbbY52){h<6d!R-Tx^1Ct%Z&4G`kJe!(})96o3DsxZ77zEDtCp539*Ma^Q> znOP3GT63y&?P5NWI2ED2HkI>OF0cQc(3qkk;p*OF6EYD-dIz6E*)330etP5kyE)uH z{q+rmN7YN>9d9p%$Rs4EHIC=~PT}S~^lY>(?p}ETbm*+r84alG>&LW>Hg<#XDV|X* zN-qVEn19pn0rAYCQiNsL2n`BF8{kb%9B)WZ-=!#Ivi$(LYSp8SI9*xiVOGz=IuHAJ zuIe|yao^}}S>W=`nHVJ&LZL|LDM(^%%3zI>rqWXb1%-r+QIiuB5UaBnh^7T4@ghGB;H|YiEj%RXNTp`Mhu78V_BuVDx2-PCn)>gu; zUhS7hB#Mr&U}5hffy?CAfwANg%Et|&JQ+!KTlBNAgudude2w}6I)x@l&LhhsQJawA z(x~rsIZ}wq%ib|hT(IGVRf+J?t{kzfawHrzU7)sD#V^RLI z0ghR7mkZ3mhs0rK6u>%y1UFIU@|=cN-K5U6LSG|gSKUrI;pY<0al^_bSfzRIF!it4 zZb_Y9)05$NQrXTcPcZl(ZwfN}CFiqPrsm&zQQp5b`4RVf8(Y4;)PC5-?)1*RSOSZV zVz&q0x*}QWeRoBA{j<85t@K`tF5=p~Uc;|EFOw8W6MrsuZRn+*uLlZBNM%gllFZt0kwK3(N#2G zSNZpvxgFm$F1sMg+o30Okg5jPE#-B)*1s>>FCk6asUGG*yVUA-GLTBswdfaVzvGFV zugh6UW00k@)_$rqaMWADdf+}v^P^pd1FqVgNZq8I!HCG0fnH};>mbd~Q^iZ#y>!s# zS6^LESSS{G{8xM*hSN(D8EoO1;^&%+ln`<1IHcHMI*G+*>2MtA2T|?fiU46^WYaSC zSxehZ8F2*4k5%Zqbv)uJh{>i?IEM%3?edML3uXrStYh(GxNNL#w&ab~AR#XM((GXtWg>b%MHFzp)Sk=OT-I z6=T6tiBnjIMcw8AbS`u+$kxl!ESE@8HvK97z%4LXLM@7`V2{bKO3b^poTJXuVIvnE zg-?lo(Vcd~Ady;$Gw++S^*#%s$q4|P8*dPn0LwIn^QBTD)m`5L%&a4hU6ZRt(D&<5 z!DWzrF~Vd|Myj3;AIGgQGGDLBEfk(&xx}5#N?hY=)xqlUT=On!AYH!)f4rr{HbS#ClW4T=EBS=9#v z5}Ki(EfkyQi?eq7b!gDG#uMfDUM{jgP$3w422U=tD9fJGJiJpnyi>aM6PyfFJOM{g z68KU{PYW-g2UmbxTuk9^vZp>LvAtiJuqTU7h8r(EQ?xW5#>fkp_0GX^SjDjd;k#N0 z9%?YW;9m$*RA9-ZOrT&#qpce%1NJJ+Phs+{@m|WMnsEc;vU4 z&$#8mnYvSZUR=(bsT+e2a^_=qI=Gt{(5^05228#(72$SN-na`nsI#zfImD2_l=lK( z!{NdUf3ru-eWdvoQZv5t`huts-&?m$SKLsakJkr>#)EQ4RPXmz6Tf2TE2S^eU*2l5 z>18&8_LqlQh;On*{v1u;8}80=59Uvqn{A+vf`(x6HL6k`rY*CfU~Y!@njcX?A(WLP5{XfsL{?mG>2 z6c`D#iNA6BbH{B44&r{P>c*iX&Y6YP$3ttkq>I%RJAV{F^JaUYgMB)kOeE344>0T= z6$m6rN=(y~O}u~)*XLy>k#glg+U z7qr!pi~*A+&|LW0_y|)(;@DETRBQ<{CWfFK$0{0A4AXpWK|=s`_UBidJZy^3EodkY zms@M-@E%~BWz#&6MQ^@TT7Z|Z_!wia%yqsVIn6s{0A%XrHhuv`$}_aQfhJgm{pQV} z`)$w`t#I(zZ${v+W^iA!kHvZ+_z<&S1VyH4&MGb`za?L-p&c5y-7d=$($qUu0WJY+?@nCs}7c!oW;PW_Tc>0k&dcrsi;&Mr1tVHC z+>{|+PwtbhxBm4)ZMxT%GfcQv$2c)DgabYwp zvdL7IP?x)+4#sVi@9UemSEgL-65fKnNN(HhR5H_{#N#++@T2n!44IE@JOYw>20>Mc z?PuPi3wsN&>Ua|3>oqac96(n_-&kBuYH_MLFE9nHPm7%4IClRg3{2;|FU$+?^bA7o zB)|NFosw2Xb?T0au0NdPS6nQrk~@Kgh}Z3xWuFK=)Jbqu)PP;25+|DUzgmRBFf?SL z(;{TeVEw))6oSx2QdoWluU|q7fMuhr2xfEnCEiUJtA(&j7_0RqTouNetqOqKGdQWx z`7wD*G`G!7G4TL-U>9 zWD_GDktK`amP?!oK^3I^c(w(ceoHQ=qD8`?TV1D@&MzM`FFvMYPL5Bn_?znjBvSW_ zCel0*8K>$)Usv@pOJsdaH+lN$2ZSk`63cc{gF*=05awjU9CT z-O=uJY)~{4mjxoq78W%rm%-_`U-yCTtIgAx%wu2uIF5Hc3|DPxP|Tlm=&BtCxW3Wo zTGw{ebUp$u5q#m?9*X*F?vCQ+ap<1vb$Y4NbythHlppS!N$32bzY)RtOq3;df=lG@ z7kOP=gI^r?crI#mjC??rLWXdwYNg}6slt1R&nF3d;hVT*&=wYGk>Ov{3nIb|G6D-9 zQo#6PvE^t8n4^1jPU!q&KQ!E`o2+jTb*lSoSO5N|>k=P zm7{}KE0i5zB-*Mve!f?aD4EGeN6`x(cOmhyxo6dmTk$RG z!-yd|Hy>=FyAgg0_hCS!g}uZ>NHO!o^DH-lDjQlNOAQZDbaAQYrJ*XftH@|fOJ!1{ zXSroWXXn1XxQ-kRQRW~H;gsyx!W#SrZC`zN@;$8b&}fKGi^!OTt_q9zdqW$NIpzj= zts?fX)zdf9q9^gI%p~WXFn+cDF3KSvP4#10Ui>m`4>FB|fuPzG)Rj^KMmC87+4e|( zK8$bqa@eZ;VxCMV1_)YB7SqH|2?FGV6~0}3`rCkB9%Vz_#eREzGO6qHlp z=`Z}NHZ+*>EoeNydqc8B&K?94blPly4_DdoG7JTgkZG}l2yjHem~fni!%2$x4Inl0 zfrjjWy6`K$S(t!fk-!$f@$?cppL7GmRgw4+hCt#d5ns)6UR%yupDHk@yrk|9(3^^K z{No!G;rBN@Hx&>k7|oEE25X>d(vLAXL^mkQm*^KC^p3~gvX zm{J@-Wmkrx9>LY5$aD`_V68;hJH->As;MX7bSRwO0?(U#E)spb;IllCHND=3uqZ|M z4SJ3cw<3R&T~zr;rTs3HjJ(Gn2JMx37|nNh2uc4^KNtG9esY#_IIqR~+id1!Z5;4L zpki8W_7vl4QV0SCUWsCcwxEGz7Y9JZYt{Z=4yRppdD#5n)?D@Dv4ElMrPSybpZ_6RzPNq`_R)|JqZI=Iz8h$6yVcWwH=`=QGiG_i6vm;S7PX%A=#8d3*ClE zEBJtX5Cl>AqK<4ASDreX)52qKhfR`@6`m1Ds@qN!BvLl*KP0L|-SHUs}qM3w8gNTYr)?HIz2NBS{XvE_3?#Y_rkuR$?f7&F#?A@d##(myy zz>jyT(xuLb=;~W=24E>(Jfn)zEF8^V9jkQ(f`lQ1zmP()fs4>M)&Qca0BN8QNRF@T z;At`UNTsB^H_)5o`Pp0mX=bpfYCO*pt70}Wt8u|sUjqTNVykd?4;4J--Y)hz7@l~*v@>apR`@3-b0$>-e`1DU+HQHJj|SY?dgJ?^6-ebc12F3 z#T@;QRk;wgWd#rAj%TqLC1_?)RZ)h1Ikbnn_hj^@XhY$ zYOEP5G!tp$NzD1@fWH$V*BBLA+^=go1gq3%YE>CJZVs@<%eWX63-1R7OoQww2IzNJ zFezmoVi2rAOjIDolv^yR0;h)fZ3xXR0-Dh8M9e0=Az)%R4bBerT);>vXA0b8N!DUzV&Q$Ey z#;hwRn-U5%R?h`^BQa&4GruJ9p{}xxx;&Vd2oc1s_Ts4ax~qRTg`z4$)WkDQE+(=0 ztHisQ*Z)#3VC?g%0Di~DF9cC$<`AqjB?ihqS;rAq!qR*=WPvRln2By#h(e zZrbANi~>)!WHE0**!grX&+t}${o1ts+y+Ou!W(8&C8Yr(b%f)_p?p7(OB=ZtNZ_dF zu2WU8_f9#XtV?B8ce(68?^|tOQ$UA4D$Gf#K((G-QVzcbhcQCh&@rMgwJKa? z;Nf3tL}3fN)MM}0lMzqvDYiKCi;5)%xpXu_E_E}@g;fuz2l>*GxTB)aDl>*2_f`o= z`~0veDQH0Etun*<$w3Bg5t$=<^3sRipCJ3AJnz+k$!hCt*e>95QooXz;U3Pfk4azGEk_FIVDEeM4B|^}TM);K20# zoQ@2FHh~wxC{**&J11ET2C!I4ltMCF9H-l;koj0Q3uIL9Ex?T##ab^*{Qc!1CZpJF z5S+8r`H@+AZB^krMp#>nj|F`|K?xhru?X;nQBUTdBq?_^56)Y5hv;C(MQeWqLc7tX zWdW$XmaWEP6mqXmtGP`H48M{`IXeQgP{|#IP;_LeUJAX~Q@yyS@xD=r3-)bCz-`Fw zX!NpuIP}BjR1k+rE%octOC8WI9HM~9Fl89@3vbCzM%MRE9O*1Y;CJEk%QB)^eDB!8@FEyQi>mvE z-dYe|Jnj(Z;P$w%X-=6(Wac{oVmiBvAIh z2vS*{#Pd{$7XmiNV${FnapoF~vk2cXB57&Ua|U7Bz@N2#DftVw8qTrHqteJVC^@KX z{VKF^`1Dl#hNA|Fa~KOD3ne-42#(PIRh4`}#qw#jp?%qJa}#?3Vq4&A4Ig{Kh}e9*OT!Xdko1 zLtLxau5Ynk5ssJazV`*teLA>_OU;3S1kn8tFF&5)L*A{O6_t-vpOWgRHB?nbw9ZaQ zA@(OD(M!x&@Vx2GceJ(l)8XexTr4+=+OCka+eVk7Q`F)_PI%@DcGI0a8jurvlDL`r zI9>Aklo*vAS5SeYV0c4=-R_1rL~>v&bp@vjtt1H!MI(GqU94VvFaccyj-V4lbvL(z z;(FMm5#QAUV(nn>W#!0LiM~=G0va!1vqe@V%+lZ+(H)M4u-{iB! za(%rZ&cLyZaq(AGX`~zFjYT7!x-p<+xo#y!$Fi5#m&huKtbg4Hd6kbv1p)3Y3gtBX#6)oo^-PyR3faGUr-2zTNbVf!(aCI*zKRvE1jk<2W1<9a;) z`}Mk&!dEL&j_8>tlHFx(q)o`qYZIL~xRk&RpZZlSbz0np`svM8b=*NjCu#rus6#zc z1*}-4N9i)F6)`9{-)a`W2veNph7f#1Vjal{v`hK3~wstl7;XiB3kEl}9P6?IrDo98XQe%-flu>b`nmvhh4o3=W9 zO~ro3x+y59K%%I9Bw%L+a8@5xM%ef<4hNtdF;Xp+O8B;pdB zvz2lmEGkw-G`$S99Bk0Z9Ao$o!fy$qMOP#6#^;kixbDFH@I}TZ08%ZCHH;VgWIDM(TcK91EZjHEn5Zvt{YB2bYGXqKBL%5eK@YI^T2dpJH zZsv;A3UAt8wy{8J^zvSp_>)ui8+wWm0M*ARXkg|ZAj{7pb&sd=pG4UuHp;^LQGaVc zrc>W%%P%9e7&j_wVtI?doxqGE)cg8}NvAAfR2|WIWu$V?d~MnxZKPO=n6{TJh_3vX zvwDBUFv1MduZ*UfEiKbLvHZNu5hTenT;s>p0ArRv%u3!|(%A9s*5V+BH9Jwy2v*JX za$Ow_l%WAPGc?ngZMo{EOS=OOQ3RAN|rv9 z{Ayj_k26-T!&kFPvNCSIvXkqNqD;hqv$)*4c6|ekg9gxC9`8Q=k6`^nvfJ`qg^i(U z`7qs$ExgaU$&(WbDh1@jk1X=1z_&ixH#&ub(Pp=}cl0bOTec7TD7T}N>K@YA6xk;- z|E@TL4Rw+M<1GoBDz`hU%7A|??CU|#!j1sSLOLSw165^2L}qd%0+fWM0DvK><>O># zO1QepzO=vwiu*ESP7!#H7=Jnj9IunY5w5wfIdM-YV!J_#0PQxGqbeK_h<~84G|RB% z4a8v41V!NsA;inGFo%!<5pkMbRnmLut^5PobdHqZB6yIej4LTwirY|eB|}A<6d5{V zYeG>6%F07mo-!83;mJrRX)0L9tRXCJ`~Dk-4tG>>5%7qLp)?H-qW$!Zz&%QrZT(Gl z`~1Xb4b@B8gW4mfuFJil{o)B)6Z=q}euWrZvz48=@aBjZEypEfb@cfLl?i?AlFwXD zh$f{S!G4Uuq}|b$;q~t7(VaAXMJT8P7SIf-mylxmR^|aV1V{eWw_u?AOJ$|5DpvaGSIIG(NS8$nWhLHT``PTKyOp#aq*F?VI>?|Hh(PFhOX*PjqBvND z*uIq7QpU=D_>LT2TIek<7hcO|PDdK(BBIG(D4CBGOg&9Su9fYqO+=1OI$Ia0(ewy8c+ zdI8+yp~^7r2Y~-tRTnRgJddbw+iXZ-K8l3c(!Lm@7LXJaIaAGEyh=_ z%+b(IHj8>TMU2m&h~UaIOwIY>cH7C%Q*Y7;t!p2s4Q$X$4<8Cd*Q;DGgbJv)^gCi_0m(S>T11K*j$|wIEqtj-wagiUQS5ykl9J2aLu`ar? zNK>-zEdyNa-twqKbc`iHax}dAI~5JAXMBkk>E5s>pNTYfeiiAzdBtGFf;Tur=;*Rw z(f{yW%Q&mV7UfA?f@`X_Lj#KtF02k;Q_6Rsj0hR&moCW0kjB9~Mjoglm2MpaG_%Ji zuhlVDJ=C|fO5sm%9>AeOor(uS(L}eD8u|b>uf&d-Z3`6VpY!msZ@~$W znQbc>EO8;Yb&J5~ARprxXA0UyudA~fBxCJdp<`j%Vk=8b7w?Z1=aTW*io@F8hmLle zh@$%XxvJoeUl)p(EHG|4;bq<=%B(3M&{?E#85ua;z?xwhlh|G1iIqDGv^OXpCBG>w z&WGrrX(r)`UJvF6`1|vgf*mWdtH9R0ln*TjSj_?&i?N%-LwUX}rlo5zKQOGWO1@r{ z*RbUraI&lIW=ifX;w1OA!Saezm|4gD_0>J`mU5qNioD$Ft1KGZYdEX#o_`j0ZQQ;s zdq*tp?D0dqtykf#at3-av7DD(!c9DXME$Pc^9@jo>a~``%q{Et3Sc}c*dCQ zWWz))?5xXt+cMf;uI?yP0_4UpZdm2D#7eGS4{}_!RX3JLDC+mJgN(m&%THmZ3Cpe^ zu`8Ha#BCyWtca@-@Qo(ps8|ptncQusF5-?4!@UYuH5S{#>J2I@`C@~WP{5bv4GV%{ z%&Q_YSW#CNm};nU#gmi|??(iP9U|>5AE1!S$b3UGVBD?|g(Jl*QB}xov9jE#c}4%W z&8p|x_8|)pBPj}eiSf~BOGe6)n!PGF`2)uG&gOIq9w>A~C@5atF`3`^n zDQqzX;LRqvMY4xb*>F`+981|WYStlLuEHzoK|jW(s3?+><^Axb2Or<%;f~r@d{r3K zWOrTOn~IwiNQHv8OQF+aqv?{S9)4-Tb-GgEgVY{M{Hkt35esQUq>9lLnR)QUCY5zH zb`*$zfH-)@6zlf~wGbx5g-ihfq5BNN9TSmS+7|uro9-o6wY3gvu8Qv) zT6M+x*MC5F3j63%TvVWq)g>1Ft&8mP<0Xu$;|`zj3k^_D=<*9Xk4w6v`H6kn9WpA3 z&g|D0x)X97eF1Q<36I zp;S+W3;*l}mgN;UyJua^Tj3_(S`HWIE%E;FWCh<1wQyF!tLUL$;uL{!N``|u3CxQL#ke8@8u_WPlJ zhUHR8i2lts7=|wiDI`fLpYzY%70=bPq6GH_!kx_PA9mp(q=>=uZ~~fJJ*!<|q#czI zc7?pd6=Jy8ACV*rSfqcX1&8zLIpn$^iop)w`Jw}3Lswi|$j_4L!uF#S&zHx{=#qNr z&eD!diN{ycImxh@sQS=xL>K|nOr?^P+=zq(KH(f5#Hj{`*t@GS0urY;?lm)h>1;i# zko%^f2`reD?rZ))wIFNJ{dlCVKpOY3+wX@!+&D=s1WYPA%VTGo-lHq!I*hqA9?pdq~0^ z`!bnEp*Ky>V;^1-Oj>}nqQ`9kR@j+CYzXoI zy7++Gv$4MWL^}>y8EXaN>xTx zFsLPQs~c~&@c-eF6Ns_?T=G2Ov5Zyanaj#6kKIr)`hozQ@}lwL_2PGNxiSVJZ(cAs z5KgYEOF7PSO%HiuIqXfnjiCpq`i4Gq zD`Yo?6<~zb6i8yk^GxvIhy?=s47Ym`AqY}!W^C(A8V3gN*W>USTmVVU9O$q!G#>>M z05d?$za?sN_%_UXg(#72m`I8NIkEdTmAsf;{?!uffl6oh`f=B@uOQ+Cn?*E=y%T5< zE*I}=dFM^N5Z10W0vDUumjNXp3EO4kMHSkRk(M(&4a+^4Rpk)MiXh&ziU40#bf zBVjp!q2kTNx+f`46_y&<)~#;L`0%%|+aowZHSnkM#_zCGf>r)nIB>Lw3Mp2K@>>{z zhAgnz%(fnYcQxTLyB1#x9ova%;vrIiVPkA@=p4i%OpF5aYHliAq)bhWVn3=X08upH zdp8D0CC<-F(A?Vxm(KV{3s(hgBh2wK5h2rNl^0tV242D9>FO~2tm^TqTaDCNm_d@d z(ZZFXLUk5t9N*^^}GfH2P`uLK0|i+~)@1rxe3wgY*jB#zJaj^u zt@BP9j9Sassf4U58YVgs5p9ygsQq6Gx$t^{Oj+K9lh)*7E<0Sc2(X0vUWLaY=x=2< z#!ozVZevu(Pfa{lLp0f=AwH>P1{0a;k}E6lrj=yv+|noo4_+VA7;o8_GI7@mI2Q_X z<22^SPH7pj5)~QYPsn06^>>n&|&mhXFuEzB2yI=UCHkxV)rQhh?n zbPDKLV3_J6;MxlW`icc^i%9jRBfwE0Tn_6uh#^@yvUDIpl(b^*InYDJj1-v!?b)y@ zDfRZ;dGQPjW@hB1)mc~8cz7e_24D+E6qF{DjA0SG#gi@8Pm!o%Y*mi8$@$y86h}fX z@|`vdwAc#EA^6=}P*yMAK8sI{_+%18qFC&%?eyi*zhwp)-trhwc%aq02^R#CNnsJF zI|=6Whn673bm+b`eqn>2he5ADRu464uc3>w#xFCun&w$T7(py@F-W8B1 zzsdAsZ`2wb(hs1xEE5yjTlq>OoBx&BzLLDvEfD^PG5rAyTi+oc-Wt`GNEZbDX zWTPj(Ntsw=-l3Z*0|9)HlJciG&V{lPIcMLcqR_G-6_6GMa4(ljZNeb_zZzuvk;AF? zO2R#`NNseZe(W#*g@2$sR3W*!trF2_?xOhO_YS=LY7dtpQbq0OkH`(br8;9KP&Ol* zDxPEnc5)bmQ}pez=>8+w|14#1p(+G()V&cPc)p}l$$cM6@^xzC@C{kmUYaMfsgHGQ zw6}Z3g0cL$SSSqTTkB_@L&pi#uD6N2X{)dJdGCd-&Obl~2HO*4xbk{gx#)lFGKV4& zpYE^|6b$I#7z!w71w@L$Dk@IObPj1tS^KY?rk2g3iY!~uHf_3`dJ>8B@M0qn2^tGQ z<9JU>B7ttfJ}3j+?oSuZW6>zbA_ICL-;mSK54j{UJTk=Cz$9djpC#q+?rynKs$jns z&lwF(3b9-j%^+U%@EbIUGD2=*+3$~NX^F!II%IW2_gM%a!jNYrWO3}ep!SVQ@}2jk zpB`b_Q_|P-`+yK(&>@QS+D>!w5pS#x;V4h0D)Xl4*dbDv7&>ih6$qF(<9=>}V6PoK z&dFj-P7l{%!_A|i#k(GiM9xPf46KL&TU|h`x?4#c)iIlDV>yGQ3H{BQE zjXroj%>?uQv(9R~SfKy2xl zNyS;*zayRsM0`lL#Uh~Jy`#bx4LAI$(9{KRaFJ8gQ8F&^``|2;lz(PBRwRLLxj2&q z%97j;&-b5cMPWux@WPjrXM;smd3xnO z(T+MSnqU`gxf}{wl~3>E)(w0+RR#Cq*}l&fno5x`FT7+`ue>ET6U~aCEP&?weBC?KQ>4>b9Ltz!~^hhyuThsNl8aO-SK1=qeEr zy_WsW8F6X1h=U5uH*VnXs)D_*T|jEbc2z00L_@AO^GY7?i+AkOkU{aP?>2tz` zzMd<5>$V=5`r9pAR-p8zqg;7v`&J`F+(unRO21|KLJegfk3WJp-u$95$_I!7n;G1b z0cB3H4dwjj6wgrVvB=+785A8jTLv!Ab}DjcH66YDXM0AYYhoMK>BDckVt9NRy21Ls z!e~?u4Mvj%uFO$hwTaXjU`k72T$=i_lCw5Zq>B!wA4y|ws$UToy4jXI=q2^VlB8$I z77O=MJYiUUx`%-D#O2=|0T#U;#jE4)dH3T zVHvCj0`>b;-EImuTN!M37Yy0|YS1srfw`_fGW_G8)p@QxqRvk1e^-y6-k{tBChI?{ z3#Kl>7ct!Vx$?6+a}-ToBw(=ru6C$A4F-<`R3Fh~49b62rvSxiky#=s;~&)v zWA{TeIq>VB)hPgS+8HmX-_F%1MT^cITNy`1R(|$|Nde-JOx{U!Wh9p~@j4^|4eDIE z6SFfUg1h}(Ic0VbL(~Pf??0;h)i}!URiAdEa|7lbuHKEX>>jIUGFL-VxsP*YCI*Kj zbKvQ@a-sMLND4!N>&njEP1x|&g7*b0(Ybo169^JP0RE546d46c<-_V9l?g-FbMyHS zKUZcV+q5tX;tx4hZp2vwNoAtDb7hY*2|m6)j=0fWJzLH!aTFs)oMZR@QJK)`ArUS} zUD+dVIEJVGQN%LG%ALM;H+CHnWuYq9dnK-hAJVLZ)~l)v*dq&RjSC3TfxHti7$xnVlMU<82b1fTmYC$qH?WDRgAelSq6p#q=Rb4rml|C_zv*BkY zrkOr9$d-)56ygvm;(&itHx~y@zwt+NMgF4!!r-EE)>dtrv8p@*^7{+hWqC7?R1WP*=7HfEC#H zmEYx$rh3&4VDl?9iy#qk4gadl_u}bwV;85&nJz4l6h@f(S7q8YQ}enp{^L}+kZ}!? z!bD=a@-RN-xS}8#eCO1a&#-n$kkZJ?r7aAkuN0RC2Bkh%ZWJK{N#W~=u58v`bK%Er z0ABsVn#KR60q4`Xw?`0c|FZ$}fSJha$2ZaqEbY82QrFJkNLQW!^dH1!`AAR_Hvw50 zz=D<1Eg=z*gSs+o=y#1%5R#kWug;a73^DAYNHeY6$v>)BGSESym=^z0otX|TPPX!W zO;(=Ic0FkdLNYmCQ&)zY&X763j{^`3W54Ojma6~!;nW~Qi;zrnvH>{XCuuy82sU_K zxmvoN;8!*1KAvd0`VCto-Q^&;nNwF+ws_W>$y9(}F2m)|)fF$xBdR>Gr|O=`M^~wx zPbOyUKO3lAzP9R9NB?TTG=RTk!Pt>*Fu~J7Y&nojW|!5K+oRq#QWPL*iiA&9wy=F8 z^p5hEkPpEvnGR`2Adf}}I7!@06MkmEsoZElPITD{RqII?m6qqc;Eisd8fd+<8ESEn8Pd8qXjbBqSoiM^^>~&+IhWL2kqffv#*( z6wC#UIAdXkmX(njI!MuY(J%h@A1gbwN!V(BkQ@KCy5fgdn_H#IUVLb9`w|7-Qk)V2_1o;Qc;vu$e7&l~joFFZZ z6EsZL;+}l0Z22PJwStH|<4 zZp!R!8C_A0ovOpZI4Q3gk|f-b|Eit^`z&@fMm;-JhrUzT1P%mW){b;#gB~U|5E8+h ztSejYW#QBQue{7p->{ug1T7?)9b~$)<-j>n(dUa@_n(zA_g||QIyoUxpt{G(odP`! zNuQ5dUD@&3$>8xw3cGR7l{2jvNL2o>tPFIYL5K~IB!SW)E6@A6;}ZKaB$M4HhsvWq z+cNL!#Y$*RsLBO90vY8XDZIpW<(UA!8n-b>CYyY9Wn?}!jza9oO5$NAD;rRca`0RR zBFt)q!G&ykT2hc$5&tk%9U$n zIeP=wJoc#S$}@w9oo4+bne1cJm3uNcXx=a%QD=kEzpAH{1+L^+_2Uk!8z2X+(C>t# z2nz`q{wT-_62akisEjyY)?{H$;WQOp*?=B8dAlL8B97xw)sa(flqO*>Hh-ybm#WI; z(JS~W0ZtJ{kJpta5^>0=2+8E((3KIS&Ebd^z9{kwWo63=?&PtAB#CH)Q*~$p?6&|f zJ*y46ao zz4B0fUdW20dx>3xcpI0MYdye90wj`8ePDl9I`tuG91x@{-yHxc{1qTVS@cDos)HJb z!crmGP&NOdI^h2j$FL%Vm9xMOl^;#6vtQdFI{sGj{(t}P|JVQb|MUOstgDx*V~M{O zxFw8arn`&u$pPOz1US(p9v`h@*Zm;1?We&KRO6%iP`wsWv;KvSv4kEi5r6A9`fT?& zgz)QDSi*UUU$m@@@lnBh`y0S1f7SiD62E;+{$=CCTD^z041SmeaKx{DHSwStm7V|3>6^C%3t9!lS;%p8aEs>a&Y^**`d= z?<5f4)glLJTHo?pf5V60PyNLK`OOzOIWO@G>aCXMO;g|-aQMD!RkKR(0$&EVSL#T0 z@oDC$kF&6ef%Vv29)VjuEOHy|r>Qsd)0;Z}z-jENQ*JtDYZE<)&ya?Ev8uL?EPruP z6D&_LVxHwFb{_Gp@;9aD`vYoW;Z?+=x_l|QALb9i!IHWSk9Gnv6E`r*h@YT~_rJtW zAbwNF-HMKlB-ZShaurqeoiaasC4o~_al~5Ye|-0*2Gk5&^pVv}FI8Yx|p0@m&T|qsj6(!+{vbwX1=3 z&@-`QIx+u2l$*}c`&sc#%3epz*Dc&I-ekUTD>ALfAE z&x%xx9m0kc7%^oxTmvs$@p%^NP~4Ed;XLmSE{35bseO#0^sR3W_U=Kc%z5g~=W22+ z33mJ4g~jc$W~oHXp$0oL97;695y zNfVz8Rb7#`i7vi=Q<_LuT9g~r=w#|j;k0D$+>|%%b9>eLab3VQFChi;C=}KCCjrn0+`7Yvt$kA?s`9W}p#E`s2Y~GNbdHyRuSXOO@u3 zA#4ucG~@SNkam+HPTPe$#_MDVqfk%cmvv$Ov#2au{$fi|rZ-P`h^tYo(1jSo_7+wO zEOH^fIEF5K&mpX?>0m_qAdn#kC&1vj9yck z>XU%shk?rJf7`bJ>>!&L_{*^lRnkgE`9CFe*1RO8=P|8+ni-p?pH!3D&0SR9-xp&d z@>TxN^S^Jqz5^`EZ+i~07qk5zU=P!~m}zdt-@?VSZ=-BT}jJZ?py2bGs*Jf!I5bjg;WdkFrSe^JW ztGQ(XP5&Z;#hR`6x0OvFFX}WsOg?F9c=Zx7qVsOS{6fDNobN-r3iPvVghtr;0CVKJ zNIPhPFJgxfM(FDytM^As;m(n0k~zNsqRv63?NRbOqf#M+#>C}s@hmRP@rQRNK0+9; zcN~6W)tzMZb{%eK@zNzJu>t?lZ?SF7Dz~`w_bbL(0Sl`7N&Q;lu!&Tp7*z3FpJTX$ z+wls8xef*Q+y&nm@aWZ@LYfTMyKt`fKdPT_vL$9XSB9~pQT#9@2Q)dZjKQizNC-*g zAW*9Ox6y@t?o%ieRjIM|TJeM^OBE!Vkb4)@II)&I?kdPKc7&Jjn3fXUw;@6+?v4_OI%iHZ5{-r&zf z3NW{^C;sw!YJzZ80gC{>2i4UNzFPhahQYSkZNXS{WCC{e;;fRtaJD~RV}dA_;TMc{ zT*=Y3$us{liTQnV!iBxdf)4+_%nLyN{W?FW@$hr;_Fiy*C(Lcxyw+1xVI2uUp`5=D z|NaOI>b}IsDc9U73*Toz=s6;v6S|k??!y*eX(TTo-5$75-XiFdb9I#x-xH=UNvcG50}uf)n*~JFghZ6Sd0}$J;H%&oRHE=i(Kutdj8H7yl(hFqXcn zfBQimMaB8S3A1IE85n+J%Ilspc}&HSwpl`5}*2&Gj# z-ayblt3luMt{rqeJW}X-BmI=d@Wr1=Ufj=l(OUU8*i4W+){K0#QFqbr#hF%`JZg<4 zs%5dW7`?SBvD7@>#*QidAW(|wBHKn*f8j#j+TlrmH3`o#J|nk?hLV1*5`Kd=bt5|^ zg0{L3gQ82Eh(N`M8#Pru4~{PKw^l%1xvYga zFfJhGlofywU!dtm&3;W8YErGZhiF9E;Sk@q9h=)n@C$kj4F5VIH;(#XUfnaStP-9_ zcRCg2e(dip5i6q{8l`+}ggfZfxXClNQtoRhC!YKOthsJ}y4iyqhb-zT#%q^`o|9fO zu8WH<{y-Ha13+i=}o^`d71?oq!C!oPv_`T#UbV3e6Xc zsBWlQcEQV zG44ewZDrbaPbR3Ej59gh`)h9^ISCbe2wC&$&v`Bj@Wif8AH2H4f5idEVoRaAm^Brm z<%te@HMRvX+5}Gk2H6Y3rckz=_mRAd!u82%>YX+xsu#V<#~{!^zL)c|s;4Al6R?uF z3zWBs*c`+&oJDf|NM59(FK2hu!(s<4x4=@Aue)ZT?9BO5)r-~gj&a3+rtO0wE`R!k zF2YE+Bxq0T81lQ#xrv0MrZ9JXUas>nnXcL7L!7`|+GOpV^`gP^$>t?ZsIK4m-VY&b zjFTKsvg%l3-u{(gHoU*_yN>D-e-A@&eiosk;oEk;8NkmYs&|7!nM$>B&T}h@zND9) zI)0~mpL)wbw(BZQ+g298?#rtkw=ic$x7ha@hsEVpym1Xm)cWEz40-i05ygHqNx1>$ z3cK><3G9V;?Y87!eWh$Mb!5K&MziS!Z4jRM7FEU-ynx$7YTx>E6^x){=9gzamH32R zAiV!xH2M0lTcw-!!n!-WIhw&^*`r;}UoNV;ro^pei@5Ru5$Q$hBuO;x-q+1G5aVg{ z+}{|ku;gI@{HPek^~gfW3va6)AI0a!U5-b}UnOF}+;L&}HhEX2F^*Ldr-bY%Z35oV zPoCE%=8Yp*R>1yuDmn*myzcyHg15_7kqDm=WI*yr_ql!uwWXK3M&Ui;PXrLEp%I=&YpJE^_vw2lZtB*@^n!+lqZT z6wpahf4Tkf!u6Jf&sPoN!b(2FVJ113f98$ZWtKd6L3>#x!Q;Fipxj6LrE=P@%MQf4 zO77U(wI3ftEb_JA;QLFAD|Y>o?`Y+Gc;!(K18i7HvdKLUKQi6*@FU-kMeF9B6S1WC z(;$!cSJGL~PosR*Uw7XF&rm$PNqDvUH<%p1rC!Z<%1UllU!tkUL))l;R$`m58_5!% ztws9mlZ6PWScQZyAf{ehCE_BT#OC0>3SDB6YpP^{C{K0RI<|6jQ^4zm+X`u1&0#@_E^2yI>S5o8F?>; zn00fX2qsx7#GrfLOYs~-YEtuXh0qBw+z+@~jaA;M6i9Q)!%HX@pH!l92yb-NsP2S)B z8|CIe{(ks*2%*EeSMe;E&3X=Dj@DbMh~)1| z9+@SvLJI*qE^&|Z44!@wk%uJmL!e%1>SgYO@A^lG8X_Nd{9@?8C{H)qtIEk=<|}PK zA3b}~8+q&eCtWl>irwLxh-$V=l~0`SPu)QS-|2^C$0)i;o6KjGUIohYyAaX3U@_8JZ|jM$BrZi2lRVxq7z=X>LChOg5(P7xyUbHLrpd=4vCRPcnG zCdUjtk4SwsgN0Qfyjd>i`_aGjX7>mMR~%;NH=Sxt^Ri)0$OOJ7d35z=U0_G;9gkWh zi`l9mEjJHVU$CaL(q3>;i0}daYwPVxCg_N5t_2oPz48Kzg@WM)bOt?g0dS7A0HsV} zZ&y9j>xEW}AF2 zHr%!LW5GNWK%FXwP-!a&&wf6AWAy-=LKEr%O#GkJ&sS+^U0D}F|2yM!h9s-%KcsPO zro6;#Hz6+$NY;i&iuw4DpSO@Tk779b8?|i|vch}!-`5)JZ3(M^K>*s{E zv0p5XfqMgr2%oe&<(`V6O@7;`z{DTD{pfL_5-5d-wgVO!?`U>$@ z>Js_WalDvElCht??z^7rf*A@=%(0V+~fz_czC{ z3q3}!%@qbFRf7`2uDCo=Rg>_8a8*ZolD6aTfhv zJH-L2<$b%a?oi*^I^xjfx4Rl=@^9>-C3^p)5I^zT8=?ZVzg!Gg$ocm(MOZ}P{JeK7 z2~+C#VPf`t`OTV`+7ziNf* z*tDXp;d=L=uT!s${F}dD>;K)}K^otJ-6YdUTx0**PTJACJ4J2lJ}sg49&o`=h49Sv z3Y41Ge{EvPbt-ue-?;U(zfQ}zO0M@M;`!0urJusAZ12jaq?_ML`Sz86TX!saryZT- zOH1XbBX<=S_PMMOo1&caX}m?;>iQLlV2~^jFS6~KFkggV9$R7g78|oaCM&-gc(!hK zURma`BU@n#5*8 zooaTs+Y3sxVsvd7@==iJ5?SFtcuc)F2x`D;L9Y92)u%K2*$ZZ&3oiWA6l{Zv|Dv;r zfF8|Fc=4kohqcA*mkQ%}Mg;LU?-NtltRV5aknYzyLSB2- z0I0vuPU5O?xc=BpD~m0|Q*A|ov!)2WI`?rX@#}6DDn_=DjVvywy&RtJXHepO(Rbf3 zAo*W9Zi=z49+{we^86K9V%i-;S*)m1(ZUr~YY~pC{kH!Lifvl*{5dX>S=BfuvswJ3 z$-_@DT@VG~#IbvF;t)X370O9`zvZS+Du%yUxYfmx4wuCs(h=hMhu$ED;`mJfML~C- zefPyl-0$PRad&oUy;MZDUv(*e1CcfP;!`zS2Ki(g9^5gqz`>fPOtwa3VGlYHpp9AgaqEEtnGPXQ=-&{_4LTPy+#WxXJH-=dH zCSl-M4<`M6H3+w`OZhBu*;22+YttO*MK-|5Yp-kR%7=wg?_tgiDfmzS3ySx%9iVd&>zo;&lzjlzVs& zjMpqAGFo(Pix$mdVVVlFqB&BRgusA}D-CSX77m&cz>-F<_Kj9Q?F> zcODghc95^9hP;TfdlzfLOYZM9Olt_DA#r!~y@$C;t}~u4qSm+{Qx?UqH7lwWM5oG> zzc#<45c;V}bW`3hLML&{Uc#w{%{lYf#^Hfv!Pa#>N~E}yJR4zc!Ym5+suj?g(xtpU z)3w%^MPUd9WpL8AX$*v)h!e4W_)yj$SU!S^>oORcy;9>P_uYV_w*|T`!}dMfu5rDx zc-;WM2B}98trv4kL#-b%F2{mk1_k$6k^&)&LQ)1FX2q%58I=OEDuIdb>)raIO4Sx) zVw59*hz4N+UW(YqtNMqG{XFvAZt-9QQqkaJ7krPzPl=;D{!RAa+Xevhii&)LYq^o` z1W}t5cG-+pm#<0o2@1y-B4)o)h?CvU?n9)un9t4fC&XvLNVc0bSIE?8BJ{X1H917G z|7NHKgMY6F1SJmYLW=d5x?+j*+66wn;A-AukQsJ`T2w6Jl81GL$SetuQt_?m%Q_b` zuPw}O`CBb?ehm-pRhfR2dGM6D=-QVOV=kFATE=f*xC-N;3Y=!!1Oxl$-tF#H5ang9 z9}cUQ@^rr|F>EqZKEML^MT2T{ISvFQHPaS`S!3Idj%U^}=;3)8TdacG&MQVXT-={& zR;1bTIc%(i3$ktk%ViBrF21cj>rHiq=&D-8{R{T!s_>O-c?-VB`qcGdikAh5ptJ%4 z+eupxUP7M|DEXn?`jh&y!jRl6wx9Qt)qI^2Bc_b{OpXvf%mj zeX(E1biy*dAiQSXWZBWgfvKW8!q)5^#Rptkp7$eKoGI60Di8IOi^DHgQf!@~uKg&^ zttiQ<7UOcfT}%`C`JIV&{RI16O){nU@&fTiQYXVC=v276{mw+&jtycGIobG~l>o}| zd$?~K*~AwQD0fwXpQj<;1xr71dbA&(oGz4#<*-#mw@l=0LLoia4rM?YP*1 z)Z286C|7$f;t6Cyo2P=qFGg6REU?@zU2=L~4|SKI!REtq+VSs~v$MWQ$C|f+QS@^y z_mpwvGBGrW#i&d16uQZJO67nq3m5VNGK1kUB^urR{vcxe>~<(Z#)^Z+`{o^ddn;X@ zfq(L9B0(ptB!taaxVCIkcR|<(-1yZc+;W<4XW;}Kzc&kZ2t+8$7byAn9QLq#iLhkr zHV&++-`c)0jtKIgrd7b!ECJEx@EN35I64WQ`;CV4*v(2`!~-|^%I6{I@kZ?Ka8dhe z`>|iK?tI~8{1GwB9_~mzd8nhfh~HBU!(Dc5X~@hXDA2JrVn>eAAtKD07@f5HAjiXe z$000~Hgx|UALHSZ(IVc}iyA%#6pRo@+?F_+0qy#jlo7V90uG_al=GsPd$3TPRDZ?< zWsMjx*W}+Eke21|Nc(k}R$$2+MGynIq z+gE^|sB#Ps{haAK4j!6t8=p)GqXYtd!1^Ge6_*z`GH~2=R_g$S9 z_^$=I42OIv&)JYoEHgvRY0s$=E3G#DjQm?_IovDf@e`N({7rr%Kv59AsL5vsv6$Hw z(q{6`Xu!pCF zkeytS`>=&CAxCt zz#1(bIAx)m(`mDE?(7w0ibZ@}UX9aO@H^K!4Ez-^1 z7bia?eNZxwu57B4AJlOLjipybyU9Nq+?1UJ$<_n@Lv;ruW1m;C1D$-8r|Q`v{Mc6u zk%Kl9SetI($Ox2Im>d`(v8Rk1y!7&)vE1zNJ+W{DQRmnL1$FpMNYK_`%3PU$zv-Eo zU;8o-eF50znx9lZJ_g<^N# zlDOiM>yx3miqd96&{lnh(* zI=9Jh8&>=z!1!g4IRIvRfeLQ55~<%+y`ek>B7M9LmkZ71@~+}`2~*)s>7t&ud8-i~ zmN`gg$9=mvLNq>4kU(<73vzrJuTCiY#sHZA5PZZMZ$bWIpDvN%!>aQI$tJF1IkDh$ z1zEo8Qxp_tlW1UTvc$OWUs_g(jeKfOg{OzQvcPr%^gq87;yP4EQ0x@3oo+QV-LAxM znO8x)F(dHk;t)n0B8h`&%U@n~j-c=&5#hP*p>Z$WI$I3jOG_Sq_SiZe2X#p0&v{+M z6Ff0o^n{y{i1}HBIh0pq$*?YuyU+YHhD_!&PP(kn2jKv{rij8b#cmgcy2ANSVk1=yeKf{6T z`S+P@qsV+#!Hb{8E4H3W+ZGWt0{A5u-b*lvhw|Qy^;w zfq_~y!{zk;NKmbud22a3m2p4o>l6xOx4loiPi)^)xNnzqEXvyf6qD@op-K6d58`4+qo)+5gWu`n}g91GFphVdScI+DvoW)oEg@ZV(A4 z>s#h#=UH@@L;XBeefYHG>*Lb=Qjy0I+C{uw8i&KVQB{qc?OGu70z3Z_0MS6YVNjUf z|1dwTGhI`F;Q|)XT#K9MnS-c`jLdZccG2cX8cmC#0!$|Y6d0}zNgXF-*}cMWw}U~< z>#L_+({@YR2Caa>xi8KZE$mSsA!FWj%qe1A}&k%bm%gc`}GWzzXEbv`h{D!s} z4Ji+0iP@6rq<;K0`zlfA%Z%>g)sf)lw&bcjcqrhMw1lxZMEDE}a=>v0#d@pr#W`cW zB@1>_gMvwfT5c|KRez!BC}4DOlXd4fB$pj38d5!~aDMuFNrxx`^(Ei5j zvOMjyCvFcsso}5dI=XtzbuA2mQ2eYQhSy~!w$vcgYPyD7vR?L*S_Srz>lm-x6c zW=KWS>%fPs-Z(0xxKuf2k}PqU+fxZsi}*1rm-T)zm702NlO6a`WPUkpr#h2o)+Gxt zTO@fo8sqWk&tkq^^&meyd=Di(eSvkencu-RMNi3fd|6U;iK`Oor{vg1%6WWiOeH1*Tc1Tuejfo@(hemHJ(v&o%OQP5lk6X#kL5YE{H?DvvqWx_6_lkM z`;JE;s8O0RzeSAz_E{k|hf2F?SHx!2m?INON}Zz;kUOUs(ZJqPg_p>(_J|kdUjeWdod#w*vdS448?M4vek6 zisP~Q>$0}yQFT%7^d2IhWDN)Fu0FCP$3ok0#D}tYA;T}ZnEnW;6)d*TVDd1>##CZN z7p`7}j$kDWboB!>{*LJNf)C4EnQAlryk!m5;l1UpGyRZ}!;X6>NT;VeU15obM{|w` zl^oO$J#ElxaaXmZ5&nf&)4%+x^B})ZkFNFbyZhlwEqYUiL9poQOFY~WjtF_yB0Yv7$KbE_Z81^{*iKgENVrHPTjr`YqgG8F{kUS4%oPqV29|V=aqL zkhg)CX;2(Qii6N@=Y?&RwpZ$o?BZS$+fV%2v>zkZ!{q_5`FR2dOF^qF7mtP^v6{_} zewa5AcWpb}l_l8-j_ERwNdRE3a8#y^$t!m7AMS4~IX3cpmKZ*#*3fOzx#%jVqWpV_ zP;k}Ld-r>71@TsOFS*{Nq+(!LbFz^sTk0|C^q6dycaf)VSI!|mfK3`RnMJq%*mTVyI5}y# zd6zZ`srre+`RemeIAyE3U>I>B|8jhIw(R7ecr=$)6udTzMVv2(&M_-eRWIdrK-V%d z(sF_XijA|^Q3K0gl20fl%bpxtQG{4tRX;hs1#(+aCB~W;S!#h$#8r{4>T@uuCJT)iftWF~Y&QD+M~tW=F};pT&2%Hdz61g`-5A320E;7&>Lp7BU5+>WoA1d+3S3Dv-o z1Scb>8S>~xSr0$2=T*d;PC7MOgT)UrRtYNzcT%H_R^CwC^xDyqECJ~7(Z?nClBNq_ zNz*N!9dQ+Kn%lTUG@8$#CW07Dy%7bjjx-grW#T#vl-pamAE)=xzuL}~#P8%&w6WG|S8Nfcf|QB#b+=%jl^yUbU!P7y``gEpe8Rqk%BZA!m#En9w@nP=vUnv0 z=;?S5vZSpNeR;0r_FR2QREc&fF^jf^o(dC~6{w}7TzdA68%Hg;aYewAIYp+@ES(&W zz9e7;%||QfXDz&oHd)kmdAv*85bBqL8(M6!Fsce;tN%RZQeLcPvdBEtiY~d%LxKC> zMTvXOnULMT6obmGQ<@w2?L<9$(Ts`fUfX11e5uQ;Bs_c`8mz}>afTHG{F!PXH_vm> zT%L=yB~cN=eKwjt_5&u%wPiG!CPD)ZLrb`3jp2^muRm(pxWZm)NP#o2BK&?t!JjGq zvOES0#ZcnEX&JRCK!gzfsE~t$D9cBiRYpDf#}yea1YM6%{t;`&L-a6oKW@hFdG$W| z`+%u`*N@3DbpMjs21{Pj-Mlo7VNYuM=id59^&cB9P0ysLO8+8mj!A z|1OMnTJcR!xV%BSqJcnRbQNDMoKWR~Z$$)gyNV?u3SA@QNG#X2RXn<%HnK$bwaD9~ zW3lQIHxy=N==azURn#nmFRMI%7sp??tMegPSBZ4h$R_Pna@oSl>Z~;*ZjPt3bEjvH zY4f95oQ(!$#2r}>tjoXE?{iUi{3@TpFgClv?F`vE_pffsl+l>x(+!u3|XP~ zzUgsd1T0fa&NBP{BFd#0h<=qR&258{@!)YTY$vw|s zg&DDQbhcEZwV@zDu$$B-JXrH(8~kjmS2EZ_r4e1^fT)i`qFf@~vq3}*`uGFvLAsBw zyqIq{z)2$HZAgSc!)f|r&lX@P@W{Z3S}AA1!x71(hQPGinCc{411M7^ z&I^`hBV;1dGJX86qeTAr4c)`C-b=PN2|Ov?}2m z*V_Hlzd7vXPyoWXHN2cyFYdbrji%<^c3Fgm1A2$<5AYT!iH_I0r&3chZe5UyZM|B%WgEnU?_jG5k#H ziR_E%eR$9`?H4K^F&6nHw;B9)ab)47xA3o z{htDH=DJ)S_ceUjG1Vqj4+RF0F?lNFXYMTd7r84}S>K#^V=$bNPlO?{a39@$3`Owt zToH!in1te{;XGituoCqf1(<<@fh;sU4^a18R%2p1YdtbPA^5=jWNbMV)&DKdD$ z0_aQkgqVjzNxS7Ue2%CBe5iZ!;>TN=JWh2e%U%$%avxpc?vnVd{<*U}+@B%2vqG!x z^-%DvCEXVe06jp$zX{m{XZWokS1h9C&dR|5>=&ybKIG|3out-)5K|Fnee07Hze99{ zqkYLE>G`d@0-)c0@tg(`$F0srXij~>5k+9x+e-rEoVkBxi*oA%OcLD!KH#ikI?C_@ zf_Ce=0jw}hp#|N;<@^K?Q^CL-?*ur08%Mn(c}Tob1(Df|$n%bRD6V&gE~v2D4KE5M zA$WHf5F_`5^>ye8Rt$mcYEQ60ojAQg56L7G#z3XO+3b~6B#zPc5<5}_{bb?g5-l)tUJ#er%<`o=K0@aW=Sow{OLlp@S~Vqhc%&${ zc}P;kij>Az-bW8|ailz`Z$VJbn(7A*FxiiN-zN4SImM+Eu>Y~Zx=3xUSfpd_$!*lY;Rx9y z-O_$;^rC1nOprtRTVb{w(t&<^LHxY+*wei!d??IkE0aTH;07Bfp6p%AqwWBx@B5BoD4em3&a(-jGe%uzG;NbBz@};qf<#TS|S<~ zLY)X+AW;47z1@)Q>BN_o1m`Kybb~S&oWeGs+qc7uZZTahi1Z zmhvxYWBXA#8f(f31ME?aau$%fzSv>Z%c^nj<)v;BzP+Y?IeYcUDShywbm90_2^X<(|`Sb-ISMPO-g{d+Y zcHHl6KmL@q-RE(%7S1?DsN{`5F6Na)wZdkq(mT=(H@W!f(5R-uAVHAoWULEh)J#4T z)6YpBfAlI4!vVLnUTM`!n!q-{>d{f0cwrF`T56JVTyM9hFplro&c*memJg9zv_nCyhXS~c zWDq5e!=Yj*{e@)=Bl?m$!s`}Pd&*F$(zr_Lf=Bfq64%n4U2@a35;?^1pz0D_^O?HP zHehq-i5BHh;*M9z>^3*=|@!`+bk4ygf8V+Iz^?2yHQ2%C$P?F zJjaH6i(H2WiY>p?^HN3abT~3}K^X_=CX1WZC5A1nk)WP^s3eUvdbt%sP2nu(5K8VT zwbS9|0CkOUyHV?rTqTSf#r6DkKBz8Hd^2M6=nzF zWi@I>Db{4^qiQ{mk(|v6! z&(inoso*?G&E?T+msj<8)=yD=q+L6Sw}kvlk^Y>dCjO4WwJNJ!NWBX-A(Qj2BEp| zd~J7l)SUXCu5vR9C>HNS6bbZGVMVT9Kvq*^lgNVm(A5vFj8fWmK7&+)67Luu$$sEC zOif-wA6=u%Ysa&Lc11vBZd92}fDNt<8DO7v0WKwNNJY8Z4ODlmy?q&WC@>n(WsnZ6iOR|M%95#Y>06&~hiCA(7 ztWuPcz~@(?mcQ%J30HuS2rOSyByYip-bLz89mc4{0|Lhl8vqRX?U1#EC=oVx8I+-Y z-T0aEt8sISDKdFXUN~V5VwK)k>kgFWg5z(loexvkLgZ}~8m}N5NN%^57ECMB3&eO7 zqfrpI!y9a(|mWv~K$UxwL3TS`!JNy~E48;bva&P^_s*`{m-#sYO1v1=7k z$;%JLjq-Ug^E?@z&5j~RAg@4hRp8flf|Rq81A@|un&kq!46>NDJcC+H!gh!JpqqKq zY(=9wNB6?6BT$f+{hc(~b{{)2#nd>~9bq4ktrVJv?JC3>q^`8g*RT zh)J7jdNVw@K%1kUf?K+pQKBtFC{fo$OEV_$QxhH59(*3sqlE&Au zaH#G6DLGs-fXu4MZ%|MrBPG&x)uEoWH2_#h?%QR##E5Y4q$_U3hJv3i(a|+e#;cd} zJ8bE;dCGw@+!cDZ#WOv<@dkaZ_`E2tFKMwT(VLK!=$}zfU+*a?lsxSB<|82OVR1S% zxSDR)J|J|X14aX~0OdOT|5Ntv$`)hU`NjU|5a84 zq?U+o9nS=N2cQ;3@d*Nr1`71fZ6#_=TP9<*KU;xlv!`y7YzUS(V+aa=Pcy4&a+JJ( zJa66}MGFp#sk)yV2u1-WEW_-j*KSje>T+jt|2JhMH~f<#Ps zk({lwNb%K-{NeYu5;?*skZw~ik;y_V^hqpx6tq)XJMI#_xp+!5=>kBJL~d9?|NKe+ zm>gQwa_}hMK*uz*#d!~Vz+f)XF|i0-zvW^PyC-nuoe2aWE+P{lozHl$Ags3R!3dV>6sU{p(k#0E1Ki19l<6VzMwgqd}Gb>Ulx>k|=P%tv6 zL&yr6YH<#7(VJ!gN6cSN;#IHm`+5zVxDZy<4hfeP!-YB|~x^TZ#5U_3KM5 zx=ZBwje^?6QPnSbaW&dDNv756V&IBX00!5o{BComFSk#$ik*Kl%SrB^2Vwql2KkSq zwd@IV5V`1t{1-0qy+cJ}Dg;b?oLh_aY5#P~X52;6?5<-kEXl#4k1aEi9n9f+Sneuu zoFVXB;M=ef7}oo;TJ=|ig?&kkrY87K9g8d zK{G1&$`>=oAXJt3bILgwQOS>#WIfgMme7mqSkH%E^8^a?f?~|~6d=>nM>WO@D(mmB zbTPpQbbXe5yrrbB8tW9`%3slk>^(~lpho9vvR5s$vXHm(^$E^n&TsZyJUsm6qx;h5 z8|IeEb)9F^Q>HB9e5%UR90(#>+%PFuxBK5Xg*SW{r(kZ!7Ire7so6=%l34OkuSDxa zC4iTyXumep(;n|44<1>ytVamhtHDq?M z!$Jc2>xLNxMY=-gLFNg0R4F$Oa*fwZ55_Na#>0&qZwr^aIa(e8eGBaEscQSU=L$+{ zzHHMNpZ82~@=BO1ZYm!o*ci0M0PFOlq<@xtS==!fbegmDqw}V^{(BOQ_9s24)TPu< z{Ax#lVKpC~Z1q6#&&GYf z`|&SEb2D<#2i6(wDU2mu$AMy%40cvQ?HdZ@Y8#^Rl0xepMK6Y?L4me0DgPv{QZjlH zmr@B58AidYzdU^a@?bF-+RkulliILoM7C=VBY&0m-|_+W0@>(CNzEGcXCyW!;Y~m~ z^x@t(J{=z`^o&hv(ub9+LKR{!Q-0Un6)t9&e_fd)kJJ67@mwt0$=N51i%K;uT{ZyE zY0seDZbgaTafFx0)Jz#jX^Q5_W{Ue4(pLgQleW&L$>+kKr^J@8Q)(zhVLr{&^kw9g z@)b8E=7g#~JrtL!>!eZk@VtQnl3}{I_K)?I`9z(gGx8-YQb6dmMgDHI3>fh#=i<+VLPbi0%CqdM)2FrC7G?+)}j#}*Wr_toR#5DpEsTPhO1A1rXcov&V&Eo61GDb~aVM$^5zf`t$<3?ehuVuawL21xSKOl;hD@mxBkU2Jjmq_Q^ z&UI?>1C1oTj~^dJO2KoZblUS8`r_Kw6*!2q6esz#8RdoeI+yp7HY_2BXsAusk^#ur zr2A|+`AP!|mJoybMAYKl8`s$|iW;4KtIQjEoCAlJ=lT3z|JSw83e=0oI^d+QNSOw} z1g^AyTl@09V2int9owkdSo}B(X~JHs{;07Eak3mR{4{)5^va%Ft&B&s5PSn z-HstqtX$Z3K4?H}4-_!rzF^(q*i(-Wix*R`y&V5X1A}gp&}eLIg(D-eu@&W5m5&=z zkRQLs5Kj-|@c&{j85GoJQ(Pj2pCnS@`H#>hPnRSdYS%>B1#y;QvlY-jSPo~Mq3tLy zy_!_9nN}&fATg7fb`hRQ7MtITq{G;BzB(Xt)B?;hS%j&a3p%~m-eo+fw}mgNtu3x8 z((8rXl5DXUB1wT{b|4XzHY|!w9US=wCI}s$XTqt_4NuniI6s;{9|vmaYLa?Pc~MqVNQSgnSmqTOhIM&7rAW&w<&KS$#xF}I#Eau- z`u1X-yNu4Vab%H!EbaQ4mTKp6x}# zIy0)vaAQtWDya`O>f$)wLi)KB)`o-5RFucbFR?=9~LIeR)>)0I3% z5F43)tfcB&d#|T{=}JW+K^G7uE!l?#l_giVKt87@K56<`(@Wx0`Zh&snMKy)dF$Rp`?+7GVi z59**b%e-kdOTNtqk1@R|AOzxgJ>9)3k?f|(I+PWh6mms--7L^X+)f)(C5Yn?rpS~# zol1}^w$g?qTI}?04xtuDgfZetpJ6lmmg)|(CCYv}|7xP$&0e8QZV07oqAwcUi>!P= zUa#n9g4D)&KUG(v_5iwUMLNA9Z;CV8Q}(D8eD7Dzb+tc!xUv@RQ2ohYM+IuXcG5UC z;p)_yLi5Wh>w!EIa}RQ`^U>6h3+Rgbok|Ug9BHH=}HYH(9wtV3Sbr!Du zjiu>>)EoAmmbfW)OFBXOhfzs(lge;;a4zHf5%DoSW*?cT=prAy`xREK(h&$bOo#jhuk=} zUqptYKsiIRk&BUOeCCG`aA&~fOA^XAz^hr9Il&@Yg@eGL`X6T0CJ5`UCw&!dIWx~q zP)5dtk3{+6aNouEw@%jRApfWy7%vfqoMti}<>wU?r^c4Vk3Y;1(d1_!+9q6ti*O{0 zlWLA3A1k8YT?(D4-Uq?+rfL;zePsOvXVy#DVPvKknp)tn z_5CV5ozyCVLQrY?)LS|8&24}97Ku9SesLsfNj2+1Tq(F*h^Yfm;M}eEuc>}6g@?1~ z?0jD?RTa2eF=*MtRCvEET|K>M4cOzZf|!9V%Vg;D1TBZm8*ZkDDiSrG1|m`=bK_;s zF3Y(glkymR`!flFgy|vuv#!m~4^7>8Z|+Upf}9_(Gb$9Do36^^jC7GjsUJ}l9mbWT z(9!^Lh#QjIxrMn9tiy^%4Oc3hhEX9soGMY6eG!jE%AxZs9S3g?x4aI%sz7bw2%@~m zmBOSy)mlhvmx>GfzSJB7-{K((>Skvfm_Sn;A8I+AbSjBpg*K3g1j<7XNymg(g5<40 zI01|@T#}L@z^W_a$*22MtSAdqxy$*^itt%CVv<-{TCrCOb+TT+eBfN5uH04TBdGWM z&LY6PJ`n`LFf^1E5LrxxEy40YwoZE{*w<_46a{#cGdn_Ble$_NX}Ji#hfLKES!HuR z4jy4MgE%v*WbKE5?4!%s;EBBKXC^6v`W1q()@jaA1x1n9)ml6Sdvp~bAw2^XAUfqL zsrjo(_sG_G*T=qFN$-H93dQ!# z^3X@k7?LWxtRM-!Sgie%Evv(?hZ^V~l2%n-lV zF|*0Xhlh5wRgj-5yF@)sZwyHVo}?b#-%3)&ij2mbj4blh_D!fs<|R~by(guB!PR>a zS2i_uu%MDL=$O*IEf6tfDvU;gNY(N`4T6dwM2Cq~AhJ4wbW*g&hmp&I=YQ^5Whuf@ zn_Hazo*G$H(hlt>LO~Je9nXyH&f_7>Lq{9xbZ&O=>eR;ugpJ$Zf) zJ6_r<*@rF7!QUHysD~jcBHMIsW9Z-+>}48x#8&zw3M$HE8$7 z;Id5uqLXY~kT&I`EVo|O8V&Dx%`|%SR=Dxm9?*@+p$STY<`so~>Ri=tZNb(fm`^^Q zzD4Y?fV7D0KIN=4q>>8KzZ7&@JmoyT#Ol_7M^$^0k%e*qCNf+}JaH+yz^pvVTrwGJ zgGob4VbRd03-#}dJK5%5G`v8rUY5n_mB zHP{Yi0XDdgg5#s0d{l)%KqEG!dxT9%wn)|GL!(`eABL!?P0PAp$&=fEsY9EFO_^VT zD3Bm63JX#0ZR}J!o25n;3K8VxpmWN^0u2F9KP|tGys5*yr{M+1#|z9MEWNvF73>YlS`0fp-Gp6CS`#(_WzcfD+G=i< zOoACK{iup~@d9z{^8#@N^-QK;Rf*fb%T=R#cOM=_m}W~CNN$Pi>l?1GZ|MFD>ZUXe zi2Kv!Pi97dMsP265mY;lnTjN;EPyYY%2lE`xjgzP?(xsjJ%fEP69FHdV`=Iumr3Z$ z@uz6_v8`*Oev^6|_q2*98IHk+Q=Db$56b3 zxm0Zxj^&e|duX^RP>orD@N-*<#i-y56=)^uS`L#}7Iz7=HK|l|ZiG_Da?2lc)C$xt z4?_oGbs_n9bMge*w15w@bj4~8?NhQFLyPcRXoRYAq-4)kP)Y%FrJgrSl9;4sN>Vtd zu8n$b)>4LE%Og(nZW)dCwAv75!ExuKsBBE?V?7l)FUZ_o92$PAhtqmkIHLcAi$5EK zj~c&R{;Kdjm|V_3L)~ISJ@$brfKEq3DPP-=a8!?C^KM5x6+k$-gr>+=v?9F(0TV@{8U@Kq3H#g&n4lN z7-EYA{fgyv19RZ_&v5(Ma%<$r$_E zG#4Ly?25JJ3EQHAEXmxQotk|6kPML-vkVzxYc@88La{5$Nz8_2#i-fbaQS!aPKl+oU}tqWWgWRe!JtlWX5 zD)4TM~M4Ea&nuCvwphJ2$P+u*)5rd4S(K&1f!xNN zKEN>UNtxq}mfi~Z02XF9lchw_upY=jPb0=nc)Acm*R!JKsX81U1s`j&ATa{#lT-N& zwcsXbkWi|oJ>;?^zZ6Cme5}mgRIt@F2HMuNsDFa|a6UE`U#vTO3Yo-ce;`wt-Ud(4 z75GLZJ`7>U z{5V+SSlXT@@}>Elq}qF1n(iCp8&%(GJdd^JQX5n(7OPB|RK*(Z7wFG2*W z=J;Fb&8eUer=^LrNL-A0RRs}fM&zt$5AcN?3hTUBZnF(?grAAjM9y2OWB(?7l#t8% z)e&HFv7MV(zqN^7$Td27V9HAcEL1l9!^MO1;ONm8MHz>#v888XLQ#8eAXMI(ozb+?i?#>#OXi9H=; zm#V-hM-GB6SjbUTpJh1`S+yINr9$NVi~v;56wu)du8#r>PxvSpbOeKY+>s335`%DG0jf$6IHcGtJz`hSS`OE4C9L91dB_2t+?*Y&{eDxa^9=1A+MvJu|;QprJcs-Mpy&T=-B37kjO4hLh+=XyGrBbnS{ zw3%Zs`r-48-P#^DmUO0(Eh-P5vE;G-YALTt42j^k@1T*cOu&wd9(^G$>Vu|vjQ=_kg#fQB7jh-cEdeZ^j#xhC)$Ik6WCm2MEw;T>4%?>TuYKIYV^9nty(!z&k zB1iIw%5%rIG$n^2xiT+-Z6Yc@J?UHD)%0cX)Q=k{xOyIO?ktChsmOh~Ro%g2Q@~bD zUkb?(?9ce3Drl!IsTdD+Px7EldF3DrpMR+vku#$662d9WpLy7VlUuG%p8?^hM4o&m z&5J$ebxWMUiFYBBRVKbL8gRui1^x+@e5yb4cxtAsf3XO&Y3?<}n+s>l5QGo?p&{d1 z602~=iOe$+%i~Z+k*29%!6zZ)$wLBO81D@_2T!D+xKkxGAa7 zKD;Zb^zyyNZj88aDewu*{qv&pWc-A)_YV`#Ha z@jzVIt7WfX`B|rFO>81bsj_3r#eOY+05rKkFj!(NF}$XRCNZ;cCJSCbvqmQ|k|tN% zX>+5bP;>9ER_?9iqu|UR1$`B$W%hA9l0Sg!Ti8R5$U|8#?qj_v<7OT%->1rbrZ>Jh zPfcC95G>8HR7b&BL}PC+5cvT;@IZJTi)H3zjUo>z$M&Si*?>S2j8U`tkBwBPZ>~DG z@;$LG_cw@pq3}Z-pu7^E6i+F`a!`wl$K5Nau25jfQVs#k6wQqbXux2aHn0kkUX6^i zgH>}=56D*wmN%7bCMB6Are}A%hj19k-B3(oc)z2K3dF`U{O5`VR?Ys>k<@Jtq9GD# z!@Y6QwDAN8Y|KMKc($(^{~Zzi;SQ%#V<9SvbY)~E;(SG5y_hWQ+b3R!65}>3#1M&` zL@=z-&I$(yr-HI%ARK3iI~toNF3TevJL9spNpqk$0L`>X*L~01LA$=gwP?qgD6Tj? zJQpWzqn;sy+m~iTSbTDqrio(Sr3S-h4H9x;tV6PcM&ahCsaRZz$q&BKoc(kZeH0si zdh9_+6fDRj*y+QfIZdEq>}<3idF@ z<@A+4IqYYL+!mZ=RRAHf=qX5=0D2n6U5HN??{y?Vxan+zn5d^Mkeud|vAQyf7XBb6 z8%OSikB42ODlv$qFPi`DTdtIKuvNm?ICf+ zs|+5@sxonS0g;^_i`_UjU61@Rqlm&`zL+M180pOf;ojBNq6AkRt9FnUQVxp&ZW*3{ zTaueYN&v4J{}tgDz<$-3*3L+=Xqz?eF;NA8_`KY)fC(yN{9>ZnW~`x4M`|ACS1Pp% z?F)`gp<9CnOBkE6Tar)0!iPjI+T<)OQGF<$IA@a%B}}l^SHZKNm4ylcsKS|bFVW7f zplWoh>>@DN0b?AhLwB-q#YP_2Bx2idMF7^! zLb|-AKvlfUu$Or{i=CIo^IQ}Ur;R1oM~QK3fO_gbYWRYsC^qUH6NktBGSOq3pyMS! zMR!Z3Vc}i%IQD`(3sMz7z+`CR`4ZY`6QL*m;BH>Q>E#V2ra6_^)MS<>yLOilAnLge ztZ1+5IF@{bu{-kgG4AFS^OIE?1&C%iL>Ra87nQJ=U@02Jo=adhISgw@)8m(eAvD0~ z3H>076X!DW)9~qLsB}h#eIg)P{oJJYPQ?6Q*6b3OM)RT)Dm&&&T0|>f&)dUGQhHt= za3HH;;U{p5`Y&QwFnn$E7yH}I(5~JNuD1CdTLIKy^@H-OXn#Y0eMWdU;A6%B8RkiG zOefKP_j4tQUd-t`bOTkScrLU$;3OG**q2%ysv5;J8@dov=9TntnueKg z>1j#jMWQE}iLFc&a8xiZW0)3^{g*#aHuEu-|B{(e9QLjDe))^T;2W$p!eu+ujKH%) z<=(LZ!PivJg_ELydI_I`Y$)yp+nm(Z$Tl?J3!+YUE9G5~(VBgGh%5(rLUi^s%KDqA z@UHZM^MY)sEEp>qSbc*J#32&8j3p-vi}}r%f&XwU5POxNo(iauMeAh|o}Mj4LGfc) ziK3&({m{e{ULv_jocrydgb{`=_KZYPmntjZgSZ>=$3#yS?J7zvbdu2k$vR6#@meB2 z{qjEf_M*HgKL3T;Qt^l9a@@yP+ZPZag)u5V7lT?A(eK5M2=3iH=BhUB$0Q<1k2S5gK@-}HuOzkMW=N~WOG0H61TVyc7!YS7bamPHYmjQW1L(Lw^iJ$-j zGjRHU1aXo|3xIKEeA=b3ZdJOQxR~_zABRGukOkGG&~CcTo{O?~`2~xPY`3Q?o_CZ; zUTz$uqBAYi>KUh?NsqYXo3mi^!2l$;QfrWxo_rWiN>lsbne0IVXwj;p8aHR05le z5H~mi1+NL{qF4-($~k8aPt_W@E1RPJGgqU^c;+cXME0GWKeDvg2Q&KAQ+m+V5oa4? zT_7ps$VSMdlD3(mBwUk$g;Ym^(Sxf)#8`3lv3*P{q0mbhV&P#93?*^2v&t4byg?Km za%efuA&x!9zOUjke^!(Tply!8QD&ON`F`P{C(I)>s>Tpk%aTNq_3#1;EDgj0$AL69 z!aolpQg)SFMjFxti-pK@7edZBSqok!fCD6r^IN6g)4VMfnKcxvRr~-lR!DX3r>T-JZ{aM3Qa0(8EO2&yO45u&v@q~gzJ&e$3VSGjW zh7iMcCZZ{kyi+_~n|vj5K6BikrC0X{j0!;vJj z-59EFSTn0gfixtd&JzpJc8RP4Jf*<2Mo8vlHcAeP9a+NHhs^(A5yo^b8E-cS?E}U| zJCQN0h|fNk!HLC8)CKpDh}i^ZzhH^HHxTZPbI$4@J#IafwTbgkvF&~Qsr0v9c99Gr zF)3q~0QqF{5hL%XuIQ6TGql(Ol$kg5J}}j&!ts9b!(H-uw5IEjR6}OC=7g2l#TbST zQ#L)eVhoPoSs|4>|g2VRG0Wy~)A3YUl(~|E9bxF_A zEQc^>)f-t-<2fG-!zHsyyI}O!LTQ!obQ6oS1FRZ~-J+^S15T{i(Td^(Ns^dj6a@+g z#*@z^Lw-_}FNCBU+k#L$j1v=C;tjUUg|!1<#*-z6pl$OyxjTJf7t92JaT=RUiEEvO zrF|p}Y0NL@Y{CpvcoBbwdYay~>>8_bcDsvTHpx(XnUaZItB;}yFwc5+lipEe-W`j# z5eCV6zp%>mr7Kl$jsuglg}0c_s*Za>eG7mV2hFV{H*_jn%@VQ56mBq9G1G=+x-=u! z2)IBvbh;QR%g`wFHsoj2$pBRfrhMwuOc}YwRSLy^E$~#3|3Fy5@{%0M9KlnTmQU5x zvVOBAEE6q7%0&U`!M-jIfuS7}W98S9`I=O^Jan{bKNJeX!-^%HR8CprwIypd3`ZB! z1K2X5@bPQNtM8EW6+m=-Prj1s0L(K%ws-3%-7%)or2N;bz}7=G;AD0HYlwZiEc{$- z%&j!EO9H#>HZDWA*~d1D`xQdnWqwjrNG`z`iI9E4ZeXIJf=gj}Q{>^6I7J+G%#jI#@yeNXB@oUKo(G53!Nw|x`w=Rv9`|J-3)-nF z%7)E5#KpwY2puZ5nPUM&EHTjYgCi@A^=i3vBYA&aQ8#A{$2nz0iXAhnvT$drhmLN+ zbXIkNlSEflR*(?27(QkB8yvB^!R@QTmOeSKi9TkndB>++GHw!vqn#l8m8r~+n zW_a#WZq_`RsW0lecgm?nN{R_Z~yIAo6to^0H!kngU)IGTK9^x+e zq~S4AI9H%W8k?mt9Zehn7ultx?+w8dEcTM`$9^Nl8a9zSD4MM#SVT^L_-fC*8g7;u*g zcJS6DC&Wlf?5GYUw@5XSW$Bm*tgZ4|R~XX%&P%dZz>liLO^F@KKcevjU`-B_w6ElQ zD6+^FrXB-2tS}oR*!l{e%!W`@RR6$kDfvAe1c(YD2rOgU@SdpNWE-Ek*1g)Q;xEU>LNo~Gw{LfER2eG1wn95 zzOJz0ZhJ}iyDQmD91p*yPy^59aEpuF0}_ttnC+e}c~EHoF$v@1wf&k*)g{)#>_E6N zxHI(>W8T@AHv51#GE;`@&*i@v_3~G?E{wl^QfYTt|a5Y{D18 zVq=~odja_0st8=Fn0PAUtUwo5nzMzw6O{;p#D&e#U@k{`G5ERtHNh~Ps9r+VQSGAC=I$DN~ED4z zn8uTyd_P7ldPFR4kUFd2qh^60g1-fh@QZgKa~Wr0@^nHrVI{26n~Oj+2Ebtqg|tnG zZBW{}j4h~->oy+TN_{5Y-6To~~l;jdt6Y6X{8QLre?V~Xr`!X?CY?EFagW^0twy^WET7=VGCgbIxO)R_~X z7$zZ$IC*#g+y_$jeaRD2C>A7xP&mkD|B2^glbke%G2f_+uSOU{7d{X3<$E9;St{tH zTc89TQpbX5u)eCG8=loh@RHoG?MWdh?kVI@kA1cvme9nJpl%3cox7U^IPG3~U6=vK zBJl_WpyRUi9npt?bA;zDc1e*L$cSV(Oat*niL>mWayW~k_IS9rIbQ88)`MDTAJn}q zVLpLwG;wY)3+duq2Syi7cu4yqMaqG_vx{KhZjt=sk60Otoh+HnQf9-KW}|b$YuNO4 zP0I`ELytiwOq~ajLv?jaUP21p0^V>=j&%KL?xBvbW-lrG5Iw=MM5&M_iYHuJ%>E*6 zY}Zpj(coFv<)6ZFMn#E%#+3fm(Ldx1OBl`2xW8PIrFc;^5Xy9D*9VPl(|(|K|XPJiMa z4+a!$NiDsy1}ZKgFJa?|O-PZ&+4Dk*E0jaNvKY;wQ@dEISdor=<^d#Ir?H)ohst(O zW3&l#>;9&TXhhtIF6s0<;|j-);HoN=`+FAZdgcX)H%ic~$e&=Q4;3Xc%KQOC7n?$m z_W1>DbhEvcR?X#$Gu|uA5l^W`kdZ~uu%Bi{6jz)ff#smK=LKxU>H>;+83D4stJ;CN z;ZP=}w{6D}0rtzEvRif$agJS%_@iNRP)f$Uz2WWr3)cYSLAbJFi`#NucC*O&{`f8< zCZPX0RbdE}%4r6b#GFB?*rEWLY*n;T4y@-EX2b|X|k@OUUTBw(_IU(!r33T8Y_8bbT5 zW)Ks5WVK0Npi5!LCcpK?exB-9JK;I$1TIBvNVp< zznNz*N-S_^|G}A7 zf=Jlzo8K}RNqA^HO!`b(C2p{7NVmhiwRH}-hbuj^66t~CtYJ8|OYfay5fl;{?wlt$ z9o2riQhoso%5V#lz-$hyqkYzR-!{aEg&XV6WZYfx+$AeJF3b2T0yB{h?H1SG7KU%?bn>~m==y1wqU)r_vZ zi*~X9K?}0rG$6<1kG56SIR-EBzoJRBr{atZ~T zlVgnz4*hL*nhT}Z_gYQi47_|-_5w3ZOQe=XSLxbn|G)|wU{rXqbC)WM8~w$%w4^t^ z=Q2aijQhy5(~wlX%k4>|>s@Q1)F`)%sp0895lLiZSe+C;%qB+`?vExTKmEd>t{5h# z$Q6sH<;>@<;$TXSea{)DT+mje3^3D=$|?>ZdbA_t=MajDLgtI#%vN?+eQsal*P^I+ zV}YO3$3p>g$I|hlks6zH67FgvRMg5qc1>Fc@n6;uIfGG)r9` z-gqb-Ni_J<{LUvrcf(h3b@El^Wi`Gx?(N^|AGp37(Z?N{rqxwu* zUY3iI3bHOZ>}tjy7_-iZJc?j+R=ZgpT3of>kn5kyBkZta=01hXldErthgaE%i_}(d z#bA6GVr<02waYs4rNv$D@e`MU@eUrB?#bSxLjS|4#uPC3Qar29wK8GIEHBDrFtct* zwsXt6AyXkZ?}Nf2`A51@kc-OauPk%T`C$M-K)%0@I#do7nBmlk1EYE6>_$B|ff<4h z)H(MK?yoD4Aen14ACl8r6v3!u;4_|S!qbctR-R%-g|_iVa%t@ z(CXV&5m_-Mw`>NPzoE5 zWD{&Fhg2ziVk$GX`3Fv7>9Rw{wfQ(j9u0&y0^6oIX@~FNQf)SZ1F<5_mG||doIZ=v z%K91QSzM~Y>0ddw)r2f@BE3^{f5Y#gZw2nhQSPJOWcnIh1X*MYAY zB47;@F51yWT*D6wO_|E_Lo^g7*Mw4rA9|*FnRPlV!`6yEadZ(o8^|yS zDW%Ok)B%e-K$Q@nJpQDMU?x=M-4)D9tWTh z0x(*+>lgszKIK>fqpTYO&u3wpMM3NCO(og9Al!g?VzRQFU9)>ARk8O@P^|KAvyO_@ z`Ee=$*YUB%8iG!cN=|+;bzbZrzDLIelowd*MGlel^y=iAbWw(3ij18$pnCc>MSu0abLEW>nsSr!8_;7_}i$Y5XE z^$aM*m#^6&zBMnqax?QnSJI z(h8g#Bvq96sqQUi1J+u^<&z^=c5PiTO0St|Mfrh>v}i%iGRLm)DP)E&SIy0YV&ZaAjoTcXm{}S$i-$+F&w6jcBJxh1DYWQ@%(rVKhr^CQ4ywaJch{KqgafUfuktzSAXtn#=7xQ1lTIAPrpox z$yYwTzNXU2EgH#P*RizwhQ`RcL5Zdu5VEcJ-ULVK8 z$iLwV2gZ0-Ir;yvvI<-G^4CP_rG1n*ub*=MT)zpsxA>4ZoH5R4Yu{R%(+4A`TdR`@ zcL8CWX3IQ}hbc5h3mKuT3RUb~&%cJ8A!^1NROCZfhn=3&mI0|=1SOj>x_)iET#xZ* z5#IyiiyC)03<*UTZdQz3u&*acOnM$a_R%Buc_X%B!jVtw)K;sEp^fSCY$fpKXHnT?j}s(qWv1M z^#a9B#;tk&kGro4sAYCm3HGbY4>Jrf{w5bP2XrrG>Nm!Sm9I=E9>@CFo5VO8sNiC{+N(KZ=<||@gT$ht~v@(wtLWoW4Gg zpU6a2{$#|m!2%1JK@5b&ifAh-wZkHTS0ZRlEIwKGcoFf@cuUn^U;LlF$Em z7@cysEyaMmjS5^sfFST&}vi4(EP{ZAz%flr;+0_^FtmXHGC=Pe8t&qHdu9@-+^ChaTO!Z>0S z5piv*g8*&fbv4PjgzK-Aj{!wJf7T3Kz@iZ&440G-GXOW?fBP^0!~gU@{)eU|grX*uj!Q-|j{DphB7h#boQ80oV%`aPvlt?A zcQig~;ah;so_7_e$YUs9sZtC_E{o4YWw&$PP27bu@?Hp(D`>4MhlD~@*>nQ$apmNb zo+nc$w*>xtJLwA)pY~QVTgMdNLG{J9EN>R z=Bu<4nI;Hu)zQ^e2TWt0osf%+O6rh^^n3JA1*A1TaHUoo-uDn1J!WN-uq@neTGc56 z?;gu4Y7}{8q*D(U1lcgyo<>!`BowF?oB3LhgFt@C?y~$vr*!$Eq)0p?ZUn;Y=BbT} zYH+!H)^J2{s-E|Wf@zCpe{L&J6b*0o=lS;K)kLN268WYaL(B<z<6cP?Vo zsIK=V52@%pODKi5{s?0t((dRIql@LtQ6p`|lEhl-?XM*FU+i%fd5R;eKNtld-_LHq3dPfq$!*Z`Z6?BiLR8gx22Da%1oa?`nAjCr z%i=;jgwW_U^*!vPDi3uXANi@VjueeN^go?)`Ue4uGXgmU$nEfo4d$~*2b#GmCfJuI zwxWs4iCa~a8>y-d*gRF4ffa@T#BW3lR#QgNyfW^J>PhT;xk=eFO)9)XR#Or=c8uRC z333Qy#gqvUyH2-i-<%%AWWs+6^dLAws| zd0vyqO@LPm{+0RN3g7^Il^_ws7Mz$K)0tt1)M}xi>LOV6xH3boC1#Mc)~ZAY_H`mN zo_!prjj(&5@Fmq$e>*{>cS*B|yhfKUaJ0VMR*vUApMQe-T?6r3)dH$;Y^zjRtC+t5WaSdX`JB?p=vPFDUOcGRX9si=> zJJ@tx8ewC%9xUMY$kE9G92VZrOjFilq)gke3NAYvk4Cl`?-!xiSQqGm<^?3LAM)-? zEKY>#Vl@xMSokq9{)4Si_1rpr#}TAG5RkR z3kde2Dp()~6e*??>SmlFROHpsYRzOgM6~k_!l5~w?Q(SmY z4!ObD!sY!4rfwxSY-}a}vt^Com_`#bJJLNZjJvK!X=WNBh^pefu&j?sPL^|hDjA>d zOD^T4NJVeS_g!q}wGO6V<7WPj*A|yR;*9X@fSOgL7;y`k(H9X3t5fYUy9={p6KFrD zsU^e4lj4S2WU0*Q)2_wAsWk1*wkSM1LbcYKCSJ$_{!*BasW@1-xT%mqFY}q7cF7h*9uE+@agxl3t!nwa1nCauJz zXZK~+5wE1N`QWV9kr{~18LZ`ud6MqZ>m#8kXf5pV-C*9ks05PLloC{udmC2~D&LHi zVtx-y8(LTJ5RQv-_*@fF5iaKUs3p3tr=?o5_~2;``Nbn-X%{I8!f6bMf*qhMy`tNW zLOW1@#f0qnVXw;*JM5=2zWs`;-K2Ds8r9+Pk^WKmd)&jpIp3k`^HJ(BKu!=})CHrN zKb<3oEe|DEUEm5Mqj7msU~J-iiQYzjXCd*z>IIr2@j4%hj-y;%; zH)lu{Ew9NfaA40f@x&AC%h%{hsq<#4M8Tw2+)x%y*DILMoJ=_#`ZdgnzG}sOu8KNHa5;{*pBDOUxdlU@bj;goL?=F?y#x zUz)%q_B>nr52?K(E!8h8Xxw+Tb3H%VKSRf!%hw#EypJv~eaF|O&&E3orly$+MijsZ z#G1HSvNGWz9p}ZM?Bvc387k7(1)EaDOcDuly$uyI;CBOomn@4!NZk38CIv+fc!qDx zB=(%VB5#P?Yt@knXSYdX0E=bUJebGBawAI4Zcm1wZ_RZfuf#Vu!6IcBB4*$8 z9DRcK4Kext8DVXX^tUJs$erHUB-7_P#b=!&te#m06@tp&%Q;=7)nz3OQpmU`(}D!^ zsmh>i%T!usM?9mF4~4ObjGtZcy~1oHSV7(4z&O`?-Dl1&iNLPH#0M7d#i>4_)G5^q z!3jK6rLC=PTm_z#Cfz2)1R5^MXF;1vDE{fAU!4c>2w zl22ABtfJKm=%mUbft&fdqzN0S-6oDzLwFGL?6`H|YY++-(TvO!mEcG28oCS*v)Fln z1iUz%kkc^=l!&3plFBEV9_zn?MI0g-v(fP9gOvRywal4}SGb)`Lle)JAFbN9vaW6& z7@O0km~9(={SNkOg9XT}d!?+RI6P%yga|;6Xu&KZ9@7^_&_YqQL#JQMi_4y-;*gJE zGZ-3jhFd_Ftfxj2Ux=8;rdi@d;4^oekmpCsW#gSP>K&)9Xwqwl>@UqMB@t2I*WF;- z6h2T^<0B!n4bMV9$1BV5MI`tM#*?Y&5`&#pTsA)MRE~E4?yNkZK;YWK4zKyTSlAB~ zm631rq;XHYof{%6PeF;MML1Ow{=3sIC@N(t%$=6PuZ%U4;rS^5u3TKGLN(X>TUOR-atkASauT{m|+*ScuQ!mC}Ah4Y6(%q_v zdovVgmR5t0vUR5Bg(?k;dod!#u|WHT4h#~YOVA=3{}dkx2yGa|N^fCkgyTVc#K?@m z`+^?gRD0YTg4 zrY#xRJwGj42);bXb|iCy#Lx{1yKglx{D%4zGy2z9Y6%kS|%{C5>D+fvKE6Cca z&ewC5h#T3^CX@VOK8Bo${hapX65-a_0;uVHLPU%3rDYwvYOLYP8+6zHahly1S2bb0 zK%$TF5?wOEzF+V8xZqE!bG11P50(^)Ey_aR%RT->u%G53)C5T95h^MX7v}TRK4Hz5 zMNdv->Wy};YjB_zOzVCeZB9?Flh;K8QNh;qCI|eg5HOOkb&O1CF)D#Z+DPuywsg5pm*O&(+mLKYX@9{)L&Q_hoA|C zf;ysgY%FP5^Poi~+y-3#gOql#Y7V}#v@$sZ_Aji5ME-SUM}!sSqVOL`20;QGg~-hq zz`BuEc54XtcMI#8C9UV6ACLhT$`Wln!QyF%29x~4%1@pj#EVpAP($#Cn3=A0Yf?Jc zoFzFqK31e-aagc&hvEmE>uSoyMGO@k;uLcIonhXXb~@ZTf!0mZ6OJ@KN(@$^tAo%% zc+s>rX0UrWjcVuL!5O3{<$u~Y4bb^5pyV*A%6r+ZI0 zV$>|`^5&WA*IO)knSyL1xWIGH?LV-g7Tnfnl5)R(i6{Y-|~Hzbkl!;_$}2i(?z zN;TlBuRuAZ{{fjFGXeP5}Au$FtDcj9P%_#IlKn?|E#-@n)9g z{jNW`hIaA>W4aWv0IQOaYBSj{*zcn;4Z8LTL3$fh=H)}x?M~5+*nT~&IQpFJO_{}< zJx(0jfWI?lb#b?b)|^ewUATdz{5VB5AiTQVlC_zXCa*C0qCAwD4AJR_&gLzW*Dk>e0-h24J|8V755A=zG%3_tXG=w$kwXV?W(V_zL`%B*%hth_uc8zZ2> zJd`Qn4>p2J@f+u^IL`7q+amJwT-UUCPbf25V{gpWp67)JT)GmStcZs;uUVoUgLDvE zI)yCE=U|xMjovFz{t|3;fKTsd^Yb*@3tI7q|KXp$%k@p;c$oaj4y`Ic+USK>*)Ub z#MY^j)dykv-@Byh1K>%u3ldHf=IG;o{$lG6{ijPT4W7 zfUmqr;x&jk7fi^5F^_<}C-$y@_LSEgsMO@HI#xn9I`rz)WmwFSu(k_`{APxw<9NY5 zZ@s}`aPfs7pCii-^(qzx<3Q18qu)*5I%hzvs zC zitih0|DijmOSvZ?`>cibc(28m!ydV5)N&%O0KAj#3X0%QOH&wim-9YDPjXN|S`V3a z_(-k>@wM#Man02u3j}>}tyS;C50WvO`GnN4iOTcj4oMk_W1ut1QkX!rl|<&Ow0_42ETsAAH3Hs6r<;t|fnQ*3 zn0d#KL6Wu3O!qbSIu=1?^`yCs_oKs|r0NVw{yX^-6~2?&M>vM1=uJ$6)K90AX9lV< zZ>jrOr!H;O>t-fj{ShGwnSe9Rs;ZXjyx0#PHBB9J!Zn5dt~y>1L~)tE+u5@}p_vrV z1jSJmAh@lGyHI+}E&=;^~%Km>%B(#sJHBJ^_e!m4{{PEU*mYoJPD zc3*{@9w?EO%_N3A64%#qF@r*($f6aW|CKNAWXp|5h!kZO1lI<8o#r)>)h@RHDARFq zgeyC+&i*mYZ7J#NHzG#mF;Vl^h5h)vP1o%3p6J@T=1aKjKUK!?i}*s}a;@OL(yq@vDwNE@N@iMH!w z9H1%)HmEZzIvqz@s2#g~%uBRIO-thwr6lE$R<^(#&X~tL_1(%WBMiq=5T8#n2FCNw zlgo7GFHZy@G82-B8PDc>7B(dR0r%SzqEGMj(<2f9z_~Ba33E(~Z?;>X(80W=@?f#8 zItzk7!(Wl(W8JBE(X=Al3jIXIGn^JvO;^afi*O_pH)l3u3magDcITK?;UrT)Y0e-N z1Kp|>MHA6wB|OV-VPku{W1bZ_6ImKKum&Q=7$c0Jif}XwFW{E~YdQom9{QyToDT|e z-BJoJA7CbJvD~xC1AoY2n0Lkf5fj?2Ab}d^VS{cGs-E)ZwM6-S%omlW&=Yydf>ReX zSaMH7)k8I4FU>?XO z&1KI)D(0{kVgScDj>O&jECyo!5;~o~R25kLw1{zfFiqOLSPKBfEcs9;^SpJ3v$Qsq z!U9)okxs$#)eBv~tRf7RbIJmqY-U^$P8svUR^f@XUld`wJztC&p-)#5^vSC$S zp)KVR>50{luVMhsHnoSCIH1o&^lIx$MBY&x1f!zC&h>)Opi93P36RA#AU78WT|CX} z2&vrdUkXTL$#i{rwMAYT(jR9A$D@UfI3^}V8Px9E2mR0g>;GXFqg(I!yQ}`c|Ih#D z|NXySPv7GCaC)Dh{W)U7Ig)&*jI#hKl$o9l8JET3QZ1VoGh#SES>AQ3t@IxA4=%z` z)&UG0pjkoBLw+2xF^eHge|#9(qawLeelG0%^n0eRF}Zb1?9MbOFavoX-=*)R`M0di zZ~625Kfi+YhU?=Ev!>TCo*VQo-rp?VkU!p#|K%H=4e4EkE5i9UN6a@Ae?yLMFrKs3 z8#zq%WVp@e7r&}d(N^?Y2lIqK^Y)VRN~wD0(6AFI-xObzEV@1IMXy%R^>h6`9vYI= z4&cD6moP9{#&MO39KtM!9W2zGBL6L)5*bEKDuO7kpJSiWBXMXY>`s|))c&vt*+0Y6 z-kInYq&f>dS&tusU;lml1-}_rf^QU+SnnROlIAKUZK9^>+(Si`AUA|P+>ZCtNk2Wm z{&{>I)oX{NrdQMxXA;CyNo#3;x+Sxmg-K~$(DxFa17)9j?<8F1y()+Lwldyq276~z zx8~iCP`iL(+e=>Unj1nHzmdOZ@$ymbc7t-L2cj*O5*rlmJ-c3#@xMzw4X z!4Pu>HFs^XU27A4*Ct+1V?(BW(mMOtOI|h2g?XlZg!9kZcW$pKvfFR5?)IMvImgzX zXzoeP%~t|WEAI-BpJ%Vco_$o*`6I8sSDl$EuTcM> zGgr$1D5P|&L-su;_Ax0bRc>jMoAGdfy z_v7(*xBh-(RZm0Q#nX2BcRsGJzj-k9L$|&xZ=bW zm*V+A;!VO&cHWPz;zrvNEL2`~dr!&sN9M~_(V;6k_KMc_ozxMEE5SU4{Rmz2Y+d8G zgEficc4526M-!{(rj3e3w!@^;q{z>aeiv@dd|kr(d%oE11v@>xq|8@rMX#IpI&tMHM3r-JI)?u-63%)nDev0jGhPw%9@M&QFjnVMe^6pGuq$~eTUMBvi`RcoHYyB@Y zaw{?AkTzj6RjBDz_vtm;-!&POn}c3hp>vX~`+lejS@$S{@Ptt<8 zZR2-qdHu-kPAO5ta4``k2ACJhRA{G(;n~W{GKRd31?9^kk$lS{jnerY@?P}p-K(;@ zbZ^tk0@=?nddMq%UfjdUr}##8atAA>{c_wpgdkg2L+BoggLcb(L1`}EJxto)hf z)U}_g_G-povRIjTE{ClPyY1ujxZODCmmabDV#e3FTOH`!t>AfcUdFp)|EyXp&Meea zJ?wZd`hD|U)$IuDx;#ebcTqmxYkO}2@?RZ(ZQze-hTe-h6@Ih6CjC?@zy3E;KJDzm zA#!nlxn<;v{e_<_!^m}P&*R~b-FOnTY)1>uk1OxL_*vUw_vOl7PKfu$4%s4Xn)11N z9yiLaizhE29sP*%t(x%o)0qFH=W`a1m%oS1d4Fq(jeo1oO>_fFmI-Ws!_?6E?y*0< znyGA4W|2Fn^37?vSMzX7$a=n>kKJI;Cv|fwQ8)Qr_mb#Ppj;{=x$+^anb1X*A)f52?F7&$)mk>@oG#`jWNS^dNt;2 zKYffyvvanl=OPX@@O+F|GrB6M4y%3TV~VW}JPcE)1h@FuyH(a8U@pIoyALqOF)k@rc6I+?@+wufUz17B#OrtY}#r`yWr|fNA zHUASHzPh<{sd-&Dum3%{nA3Y~0B1I6=zk~W8(tp@gY-t%}OZQdTt z--!L@eE)SvdznJU5P+Xm?>}7eNqwg)PM7W?%#h(W>}VJ`430y)G=8y~_}Wa-Q!gA? zzTSO%ID&?OXctDa5K;rbSa~epz|U&|vmEe~_IH@Sukg~t+AzB-eabj~VYlVlCr&d1 zRH$o!LTxX2=G62@*SCSl{N=@nf8wTNJMdO8YpQDw-G$qzUcasRRpNL$$|~5cP0#Z$ z^9>dSgJH8J<)9tmG@mf-T4_93$h3_#6qpfL9K>lVkE89~Z1&y8C+1b1E~(L(X?w%$ zq4qvBk3%&T;xwqKMnC??4xL*(sbczge^}8UR^*3e-ye8dH-(8ShwQatse_(_Cf08# zIzAW=TRB?^k8i14_vG<&gqH2d#Qw=H8PElIA8ihqcIu~3^|ZCe9KB>P!$(^wZ}jaq z)pyNn=)oLnFpZ;^;TF(v=3d`7T)^7B`)kpSA)y)fw<3!1U==@?5 z$lErOeP*-!5ur2ZUh?dndF7NU`6cgG_N?2yzsBI-eC*g9f#01D9(&O>JEy+K)^y8G ziuNs@;copst85aAr^o)ZzY|&mXNJkO-ha$RgcL8CJ#ct*%l@*KId-qXsH*#@_E8(h z_R8An__JnvisCpg0M0u0lIKgyge%t<9Kl#)@2%&8~QZfL4p0JAT#iH}5gMy=uO@`4X;b#0~BwTC3gYvqZ;! z!#&BjulH91bD?^;sUF5B?tQZE04tne>yxzi)bHz&@`VvD9lTF_!P7CbqP*!tcOwDo zW`xxI*h~Par_)f^x%cub+0(nIXCK2^vNfRj+kqhGZ^4IbCC{7I$6Q;tV1sLPJGjNu z9M!gkfom4EMJcXSzt1YO+;SbVcRaxi^4g^JZ3d7MIqhC54Sz z*MlIh>8&jThOS2J+(+#9^!;pReEl4TOm?|vIBja5+qliq_o=;2x)CPbTF-SVeeK$Y zT296MXL=>66WyxL6i8;jm?qX&99f^ku-cjTkH#10i;h723Y=3H4Qu?eB%%w1;t;}_co)!`Qp#P z&j6_vyZiNf(Z0Wzu=Jn({lW5WXWq6UtQIAGx~2Ve`#p`*fYG!_+I#E;Peo~U(hClK zSjp2z$3EiTM;z~k6Z$;%qSu&DSK0Ljo=p1WUk=>WcP*T|Pv1>rb9#l=AhCx!jf<}( zYN%xq+zXz~YgTj@{(2)V9o2i|4aF)SV7uC=;5U_hBJqs@d*@m9qTgh$YyJIJxrNA+ zBhWdf%_kj@bX5Tc5i`x?r8BIZAb`Lwh^LJbni#x68+NK>><0Ct$ERl?26Z3J<6TI8 zExG=D5j4~FFOF)p5&S3_Mw_(nmS;6MmtMO!-YOo4c=<1`t@i$1dl$7=U3*ovR|{et z^t7cB@FR6>m0P%KJO}-r?Bn!11uvU2tG`}HAkdK5$KoDYjkISj(WAcBv$L4z)%FEv zdZm8cKB|n5`bVt)>6=+sT{Zot!sKC3^pc_>fJH$7y{5aD-jP+?XZTmVgR88wPx+HN z;a&6jcVk@-yJB5-tE+LxFu?1aLwOrcZ&ashnyjWfx#CmJZz|%O-`dDFpy@vg5Sec` z;X~5+uE;+P_H)rFXKvhLDDan{qwwG z?Jh;_F3EQA^4eY2SFOGoFaMHdl@eQ#-RQ~OZQ|)be7D3Rj`(Sd3*e_=cdT}1l7`gq zJzL4s1*@5N>He)hI)quYJ|U?_8T>ZA8ug6%!u*G(qBWINem}0fo_%Gc{hO!tsyY9C zuu`2fhlU@LZ@m>ZB(pVACs{;4_QA@Ikp2tludl91%R0#pp%WWwhL!L2hZS zq?==6z#CYpzb!0iR<+HU;wWtTKHqs^DaYXU^;T*o%4CF9Ni?@zg(VFMU=pn>UU>03CwOx@B zuQt60`q{yg7WqELUh?QlE25+wn?=?Z3%99Egu#Di>ZZkJ5n457tH>5(YD3;jNMmou z=C~~8*Hc|p)7z0gX=RC4i8jOC-KxweJ-w3p_`FMoW0V!Z9NsFv6&b_hsv z5z0U&HoHxgHBOsL=&}t`^~m+06W-qeSsr4diy!`=H%gaflB`H)Rtly zdPlMb{mXK6m+~Z)gEf-qF(X1!`wZ3s)>;#IxYK4NYh?9NY+8yhFJi*Sm9vZEp7HQ1 zsb5_0eeX3HlI-+82V9t6jyXd~z5azwwYUHEiW}M9Rz4o$C;T=(>u&buBmBvNnaG{* zag(#hU+#R-sgZBos^~Wr=DpwMq#I-if8fWVq5}vE4trFd? zXQhNs=dB}MZ+PMM3cSHG4yZSj^WC>^RW$KOKL@n>X0gS|E*e3VcJaDP(>NC~%=WZw z_)ilG&&TmvwQsd7hkVo2K5eJ=Sr@-p_0LV_ej&z~z|(8KS#}_t?&~$n^znX6RZTU( zhq;*ea*6qCZeF@v*8I5s^NYjKUa}4FYh7$($UR zNy<-T^l0pSPVOhNxpBR1k#lmynfKUhxDyZSCGisTZv7nW*Jgy#1L6(`@h#oy+|;L( zpWFRq&{^a0PaF{V6_NWx*EC~qLtC@jbIrRPKX1PL*{EsFe+;kOA+r;_8;ap2Z zGME5@7HoZZnp4l+<7vrlIypyAODN-%<{`&xo(0UK--;S-_#5Ux(JUC}Npi&QOnG>7 zbveBlfHF}LUMhc(^Yu~F0rX!LiL;S-XJA24t`}rH8!FKfrrSpe(&P>9^pxA_uMfl5 z2W}Q4kiI12>}cZq;Jv^~YI_fsy9W!i=EFKOR~QXMNrFuub*mqoaOAmsAGv(V=i71m zDk-7y_PP(7^yukHUq~ozCs@Fg=D|je*n8& z=3z#D;gC}I_i3K5f??&Y%n(xM(CZ#|ijRA#ZygpV;jsf2W1QmU7Nm-oi;m3`cF9z! z#}6Tz-aXr&JvPh&V6sj@u7$<=(Xcv$FvzZs@Ccrz!}n*_91y)ewgK%!(N!#-)RvkV=tKlyS_NT5DkxZxV;q- zD$DEkdKe8UMdVP#Nf+|5zoupCsyWR9Vf}LQeuqVTZts|i-^w!ce!7FYNwFm!@^L7) z>*!Urhqg4t!*Ir<@vNu);j}-zdcdR2RS#s{NFcCe9;|W3k6peX3lQg5WIc{X;ikKx z9AZdP{pjRNx5xH_bgFMQtaql)10A-m3LEyVeXH(k`r|r}@zdWAbI{)woQXTN@hBvav|S^@dHwm5 zyA&GxX!N*+wyK3{*A9CAH-)JExQL&EVd|?vGeZ=yfgO5Ez-}|HA}6Vs)AvQ>xx328 zx&7^&HY%v-iodd@v2PHkjC7NH3d6D{W?Ea+RaD4Tr zUAx59+g5=5h2P*f#}$6j#ldtSIP$+^iXK;5H$m=HRsRVF2LOgY#wmt{ zx&Lwgxl`{!=`dgi2h0A}JP)&7KHr(2pC-xY2ai;s^Ko>LTS{%eqUUqgKilJyqP}faH}uIqi93`8pDrXwa5C#J9qqU<;3PWm{TV=2(I;c?dNu z8>boNA#Zp6MJE0nUZ70C@(0I(s7Y3zU=c4eLtJUnx`}U2o)@ac=QI4=Ww(;nWheh< zxALZ?&XH7QX@^1ZRChAqa#NO>qMux$!MX!tLe9eD*_TgBj*{=0er7&T;4t7kp~#5c zGA(nwuxDjByq98UE6~|b7sqLWq!c-e0mjp3<+RSQrk6_@ms9mr86ov0RLCk`op5>g zcXPxQN*Y_2ZACrp-Ob1aB_ocGi?2*Na)Qxbnx*<&IB{NIP@idha<_W{f1UX#Xg=0%k(wsoj=Vw$*~V`umD?ra(N9|#*Kl(NQ~ zq36t2Z^2L}<6COcUwhfOL@PLwnh6TK^G#tlD>%G@XTm=SqlFQ8(ZS(LyFKjUo}~Dh zq#>P0|+IG z=pK+DzZh9O8dDuzr{nD#VZ-pzlaKK(eXXCHtJ*OMv& zLN`gh|JSsA1sWX|W%8@WQAgs^Jhp>fk@&tQzG7}Lssx~c+|=Q7oaN(3hv_9*xfgwp zQPn|@NtuGT-LslAA1mfr^|u5y3KxGq{%{Lf@7|TP_IE0AHLzej6^4>x58^72h)TUN zW#^}$FFHP)$j2}zGMyxcsU>{S!8%ttiC(rqzsz2EOO$)4^y%g@P5Gqc@1|7SlA*?) z`Kc^Si(|chUk%8BOvfZr1qp+p?Em<%NNE5oG6~ph4@#^*+fajzd zzjP?T49~cPl&F+mKcJx2=_Wna#sC{Ke6VNSB&l|+78 zTjc8Md3<#M3YzLO;5FQaM+J6;(!a62Or1WkYBqTy!+u%iE{7Y?kN!KB6s46PwzAbB z2lUV>Ut=gSH3B#o+a(qDT--3DOAgV~NBaC4Y}$vqjE_$ z8nk90Q94R$o|{p8{7Q2s?N7T~pK6CHo>fOVLRs{>BivO1b}waeG4#GJsB0e#S9CD_ ziBxc4F=FRX?w1xHQrxvzB z1Do_53?NCf#aXNGK|vPViCr($8tc=lF62#hj5`n6(Ca5gVjJFd7)m0lZ$^H}Ps7kv z>fjR(x_)c)+S6QJowX9&TWTY-#4#^SVPOHs#I14b4O>m%78z{RhZmu-odz~6A@-ih zbom7)Bb6#lcQrfKiz@2NOd3}j?t6)?lE{zhX4UXGPIgXJh+Dd_c~;~h&1}l;W&-EE zE33BLPuBT(>@|35L<0Afo;N;ziO0=+c<^Q5-VTUZ%W~&hbK(W3uYE6Sg%iEIFTmlJ z>?kfuY`3mknh+z`s0*js*P@ZiUWkl&!EA7Of{4|aSBM8JjhJ}5 zvI*7c3U~JB4OzXx&n|WzV{GrSnjh(A3@|{8XP6E6)jla$2tGR}{GEineh|4DUTR4mlK-y@y`o z`%GFnd0y|id$qln^;6IIm);of-dH1tPNj(p*t<^`2TxGI{s%di`dN#)I#+O_iZ`+~he=7srXEZR3yQ=fLCNB}rR z2U*p|B^att<5~-ZhLXF}@9D~~byqVe_st0n-tjhjD>3$wT7vcy3dnf{^tFj`wSh*7X3{0IPT`9dE2nw+oFV+nhx=~_&U!PLl~_vtN1CaSty|2 zNMi*~ol{M|>A#}*3O}?jyFKw>!g#(HDc!C1cOE&I@3l?Diwh6~ z4%WOFBe7*aHORoOsCyeke=q%Y&YiaZ>}!-Bz0`lz3UZeX5CCcV!!BlF5aJ2eo?qY`q#3)^hn0hN)>&Q5i;%OJWsncAc>bDp7SM_`U zUqo$PDL@dfIG+*fh=y2`l6m(0g^2F1uX{)9NwnkC?Knj{;9YH%E}tOpk%Lgrp%*x! z0mOa@aXM&At|tiR$PPV;;Kjr0`^`|)c~!a{UD$r0?`)=`XKy-`Vq@~_fw7)@Mg2o3 zJjCONY^N(u>IXo@i65AjWexIz*Duh`ya=Y4BP_?Vgwx)X?aZ%&Mg0Hc?9GvF*>xph$ zg{qyevFqM()b*;4Ad7eyC1U>c9=~$Ho)zt^hfU^Lli6Selobg>eHuHy11clNsxfwc zAWNL}h=Bkz!&#%`6p7@rz&#%W~E24tWz29d%>Lsyb=Z1nMEg3iiKZxLcqp zYWzXOjYTcgGJ1}uq2qSxiTCvNBc?nfWhRBsPvki`><4drHK?g>q537EPs-5)FW&}#Ub>6nx^$C7Fv8RU(M4YLdrTI$Ro*7n2}?&S*I=he!02490gr&+|m zr=VVL_JMuhJNf=)RsZ^4MD@TyoBAbw#6277+ETq>5G)Yq0}@{2T!4!*-yc9!vSJ8? z6^9uSSnYSKYGG3o=QPW zs$G`kj58S^03>TXo^iG437Ay1BNV@PdYsXd+_%tU>BY$gfC3eu;oMqdky7!G(L5qRp~z zT6R#1EBlt{@SX6PdD+jqkI_58K(1)X7Z_)0Gu~Ta7t?lckGKv!q8%2fs!V3?601gT z0XPKhNQi}q+Eof%h>W9h(b=V_9YiD`0Ax%wFa9einh#T|PW&A-&mbIPKDmHyFU?h6 z7gEikX5T&=*Y9;-ZwI`_>}C6hlIK*3ndFWto>VG}24z94+d3OQVYR)4d6GaZ{c`6s zM$`5hQOz|uoupnBL7^FLRlgd-O)PjuF#%QL&Ez=BGOQKw zB1_{jjd=_KbGPLno9d}O4u94f=~|X8+g|GN z`Gbx3rK+bul^;?Ryj|aFK9nEB&|`N|d=>hEtyWQ@-DtodU)#G5R+HrD9ra~u=a$Io zwhUf3_}bsG^F?)R%ucBfjTLHPG$hwtU$2l1!jdNBWG4K8h(2&iQuLy=dBc=;I9jmK4G8+K%=g&lB} zfz4T2t&4_53eFB z-=H{zeJNkb%UTS~GJErCwrTw0CPyqJ17iDFmJhXvn9>CV=g~|<`~uUH^{vjpl2k|3 zsZdGlp}>B+QhBC@2FRw>GU4_V%hHem_i1LpgG<~l945mn6e;A!w)Gi^NsAEfjNa*z z%pCBv9K4q_8XKxJ42P9Do=GTUk!~eOe$GB(bQT8Mchk+{;?HkC7 z*6c++7-ccUj>_t%7Y(tgZ0%$;;Y;e7ji$lo`2~7Yi4zw9_fau=Bp(1{2uT#3^cez|33En}1q;#M?OiV~|00WVfq>fYSWSSSW<9REl z`S|d!nVT3C$;YH{`<$&0wOD9GR47bd3}{uL0gVOC4b;O@^>q@gO})%EJ;d!`ejyn1 zIh>khO1rl#!aI1>#@VX=BckvOx?z2&+$Uu;tN%>K^P%qhJAUxD@_BmWWgoeuS(eN1 zkK}PHlu%)+|~LU}Rg%z%lhw z;`>FPE%mJVzR9+z3e6y>_cAuYDZ#c!39xir8VxXe=8Pe5k&QsUQ0+Lfc2H=GS;`44`<%Mi~*jMsX2nr$HF|j z@N4nRB2kfS1#F)K5a$t9VJquyhRJhE@h5cIIcc)I#5V$mq0o*+iD-P>!n2iGZxYr@ z>+zq+O1j|Wonw4_s}4UO-}>&WR{@WT6f}07-+a2iOQvlvv^~mOKKCyhhg&x|E9;&c zb}y>rI#^YBnbk~srwkHtDx91XdK9R5Kuch4Ck~Qx)U0@?B{gPs~Wemi}sNW zmieyJxLi{&gBij_F4{4MK8Jv!B>;kZW^NwN$H#*HPmI?j=+K?W@MRqzGNXcqJv6j? z1ro`wKzyOzcxwbIfy6lL*~Z^@^-fb6?qVI}folC1_Ji6WpUmjwayqL)S=2=2kE_EU zS$OomPL^@0H{8Q(#|^}A-wj37W}a=bDmLE5*E2Ffv)Ia0EYwI~>U#Ugp{SxvizD0N zwQ4&W6(@Qs0;VINNCYr5IV6f~+ax@XyR-(;LF4colK#=RMCau)}C z{If_=AAOeQTaMtD6Ya8izmqQLs5U;T8Yl;X7xnzLi!A0qM1aDzJfIVy`V8w~MMlYN zwwNla=C563(w|V+*?E6$3o~+H;I!6#et@cFM?z8M=jJeIB^=?;tzqL!o}v6gHB%E3 zlxgj6>_t@RH0q*OFQ6LDkwD@6dCzN1fX@kG=bExnk;KZ=4D=RIiPCXRuc7)_?J8hp z*3h3@$_#cG`!VluvP0U;!|oY8o-g(>WiJ?0 z=?vZ1!ra}I&9SE&sp9E}hMV+lB5#MeQqO_-`8<;?5sF8M~@nG52cTjOTDpB z3AA3xgS1^U2VKkSOyd3 z`YlN%0^<98h<<16iB1#)!uXi_!aZuT`+h2!5%x;HGk9rG+K87<*tpOC_#glAKmQT5 z%BQQ>CMgup5B9PW%c1}Vyjq#Wt^m9@10J1C+^aBDpTN922R@G%d`N>rM(uBI({u2Y zLko;NlS7NXG6MjzMpVI6!E+|57D$NTZeJg!qsmBhRP5;Wfx*zmG0u>rW1j>+YO@M3 zTfGLx4O?oYiotx-7(Pin6Htqx_zyft(!#sL!qgt*h8D{cCe9$SvG;9CFJg|bpBHoJ z^v;BG~m!Vp~$RslpuEX+W$c-nXQ4*U76mH@qr! z%0y$QPMOYC)V8bkU!>%XL>N;mr-QP_Y$%K#;0PLBmZj@AhZ;lu*A4x=2CY*$XVmtcaX=IaBh#cUipNj&kNH zEuQncrMg)h1oEXizi&m#S2tSQ$agVgSDuAkhNb;+vB;abgc)AS<%mDbv`g;RBb?H> zGDZ`1o&WsTfByIXK3nx+WTWTL-jCVgc)2gl%nF^4^~*Bw2Tu11JE_P4s#?^O2cNwd z^{V~3>xDdt%33GBY0-&|tiTo(^%9&FBwb4!2a0o8xLj8kH2Lp2*vgS`2M6?_paES8 zZwdL*D)9Z&Eql>`wz5iealueZxCX~UtTEOmDeV|yjqp&0g^S}Y?uQFv43ID+ZNkbN zd4?eD6R7RlO@(KhIol)YykT}xQd0wK8RL`;O|U>1PKgRatCwgYym~bXsc71wl~0>n z7|Jk$4f?B0I}@lOiQaOF0FX#6^$Nt@*n*t2;oNw59A5&rMhxboH5xuQ4;UWp=~~Nq zk>=W0C%3~oZ@j(9xB2|GYb3zq)w)V;{xTo%VsIoH7tYR-RE_NSnv_-cD9~%?r~0w; z8ym?h>Jg*H*ys0RF2+Lb=wMxOT?I#;4#PH=SshJ-GeZFv8wqqKgP%99;S)!p#tK#!>IU_GG?G|iN^Vw(Y_+dSbSvCw<7WH%jf2UY z`Y}+Gv@PWPQI!oDI}g%lRWihWQB8ha9GP=ix$=GHLIHqgNlSQnWUS{;?dg{>(7?AbpwQj2WbD7jvH*)pfpF0F*0Y#~A>kyR zJqh}io|dQJ&8jraSU|D8l!3|9(14h2sqz9R;W@_(wfGZDYT_tl>BPcX$B~02Yi!}p zNVkj{3{WjJWt% z(}`#<(Os$mMoEr7!)Xynifo!FclIgT3YubyK-J85-S@(r29%!LC3qz7>8%0KRCoa3d$F} zK}F$pP@_SRGROCRN+d!@W*~8zhYD#;8Job|UADHGNt^>J7Ya39s%3oNoZMK#QS*y` z1Uv}^bCA#pIv&YFhDZ3GxL&pQdslwaJbv~?@*Nv~KQK`I2WtU~!aDeBMm5158Sz8Kjv9miIWzhF6pGfl@aOjneD~?#e?E zI#UBdsMCis$Ku4JI#CB%5 z>0Bz#0-CcLV1VC}V#a}~CONdTFXHE9`RMoPWF+1M4Of*xL4f{9T1es-YcfW~73|a$ zNxYs|nAg50lRC=}5jES#{ezcp{&3Bc7>jU{F_W9v&lZr+0HU1RPPd{N&N$#1l!m3$H2{=AB(4V}Q`mx9jpT-l_|XSbpid+VNgT&2b7WsG_yLNvuoU}NHe_tBt4_RP72D* z30G>)Odu-$?S&jdcT(gXa-FD+cm&yn08&S;mYdH-&lWt#mYG;$22DR-krMJ29C>fC z=IVYob%~Bh+9H9gZYV?e@XxOyoQI~ew^rtFvmtZA8*0SS`VgUzJn9d8C2+FTwCT%v zvZ`{_AT&ZyoH}AImA#YI+#Iqz;k3`PY6A((BZSgOVEFuuKD1I=802B_4-^uZQ=(Oi z=HbIv0K7Ir&_I8T#}|X0QsLBX7WS5&TVY(yaMT4W$*+oL0uf-1)HV@1t%9Z-)%e4d z5g{P2%&e3(UEhC19h|GZ&f&VM)(xND=0hGAJbmJc?s5=Lu-dS=wR8F>0)ii+FypTI zWmIMcC?5SXWCcagkI4bS;M(Wg&ef={egIY>qD%Da7_S}pTKz9!57nHEWpUqj{T}b@ z8R78sMZ50F$^bXk(Tt!7M>`L#F~}FEx~I5lg;mx<0a(H5wMx9;&ktJ7P4Qp{$sdW}t#yjo(K@DT{FN zqA&g{EKdd~?p~RWMe`&XP&!CUEC-w_VoyJ>Y z(K!`nC84+NxX@_BRD_q9|E%8Q?Dkaxtw$z=fK6%)dN{o0OFeO1gG&2st6p}@=1yJ{ zg_(sLygCa?8Jmt6w4FslqX6xZ}&OiPRoZL){T3_xILhnSscF)xjch(oTvr1+pWtU>^x^7IfSOB5VsZ)N@iE4?>3U-T z=1(G2-kqR6U-Jq)4(Qv=>6qdq>Z1x}zSlS)+ycvH(C#cVTGxZXzaItJ0@0W4$nb3! z2Z@GKtn^GtVi$#cOPUe{iXIeaa;Vxf z%LO89eY%jAZw}QDfyJR>a3Nm4-e7kjF{sk@!8lnKh9g)aV}u6G9y!W&A18KA%8^5v zR=XA0*;3|1&Kj@wAgpfugV(~5MWFoCgVKvOwM?|`;2bVNivsE-rEeLUwwLh-wP z%6JcxoZ@y@ffUbB8s}mpb}E6AR@~V8z)c?`-IUk!M!V@&l3xvR;*#R~Ru%h*W^4wj zXfz{{X>TSS(z}cs@at+RxTH0#Al=`}SkTZP&s?aik8vYn4|suiw`%kzCN;mVqHB=HCAQeT;mUOE zbino+YJzCGS6EMyetPw-B_4=jLKT5VB5``AF3ijPq!GBltqgHRDY1{Ak=8!^?cyRjwPx&VgfzEC>FWO|i4}5U=P^>+FTn@DtyG|kEteG}7 zt9QQEZ0%ejt;Pr+sk2jm7r_cqWPNF9f+@5d{rJB2dv?sf=I5;Z4e=Z~r3vz4-#n*| zW@)P)vK#H2X3^1mzjxF8M-38pnkglvnhKRzyY56PvC&F0M1I{!t5~KnVs9QdmiezE zy`yFmbI>$s^F{EnALgX&Ff{WV5cDe9kA6wFmkHMs*X0Qs`YnRju%0X7B>AIA7jb)+ zhgdW}%Ol~s-`)bYzPDUvZb#HiD%+tl7IC^DP6YyDGHs;}Nn3e%j|8C(vK#`$ePaNK zBD-kmo(ZeBoY*((wD~OJrK@jC0&6c8f%!%>h`7wi9Xs*#pa8!msj;KrLN%KHKoxc& zG1ZDBCRBJE!YDj(@`Ms~$3mW}U(f#vv_;B@&R2&z)(@A-5&`z2p z2PQ+kiyB_pFx@s3n`dFv2w*rWNVz*o0>pS=AX$;`k$shk53Kzn@h8pKavBfB-ua_M zELDh&f)TjF+l1xBfJxk|3awrBQzZ7QMwBMOp*06lEm;O?)03FG%mh@tO==;Hz^a3A zp%DK$Z3=h@Z(2ntXG-$e`JiM}w1uHo00CV1s6@@oDx!o*j^_~c`1f6H5|+_v-E&BE zlc$G1hjPoav1Rk57o)vhXR^u>Sd{{gjJS_ec^?@fI=3qkF7D2*-1R6%E^6(yFkGq zmLWEjEOw71rr@~&Ng=$F&ctDYFc7RH{kc*-#J4051}g4f8`tSqn52hm!a+FXoJx*S zvkktW_0ziH@)|*tVqRol={puSwG9qBWorB#;>Ca6tQ50UKJ;i~AY@X05E=bR9zLZz zivM%$ROeDU$MdG6zpcrQ-43_y0~DdJGjRX<@?VdExzCxkj;ifvVNJXm?`gATc6L?p zXog>z@2Na%n}1MC@<6U?`-A#9AIN1Yax;1osNT7=NG+EH7*P#@hi)q}?g@l?$zQ|!< zjY{Q)HtVolC+ThTJXgyu1vy!J%|^Hgp}JY0kZ!4ki=C8(WNT4+Fj>l(^XO*j2ba#dg~%RyC{_ zu4_HUNkQi0zGiYO=+e+<+iILbpKE!XzF(_;0c_4kE053DxZP~r1_)ohVc=xzmkivd zXzxp6{cVw*wp|(BHe|bY;I15%-t65B$Lf?PU2h)gpg%&l4*Fwv8k60ZtYRA{s-F4KE&tOR>78SGnLhvTgfBg6wrhBV`QEk0Y6w6wNlpF4q^fQcMx_W@w0I=bK=?qRy)2!s26 zEhRi>wZC~KdEof9uz%gy*V>Z(>&fYf9WM<)wPt+#KC0duN)f4$FXiRVdPi(V8AlB& z<@(f&@l`F>zIEj}d^atbe}XjxEB8s(tRLPW}}LU@?yk4jA*nAi8Y&PII2bIzlR z24K!5IW(MeiBgeN-r-LCXZTw<39HK!)-go4@C$ixQ- z?abOp3a9f9Ylv=OMR5}WqgJO?WIYj9y)#q)=d!hjljZyTtVf%bn}=M2$&u!ULIMTq8_3iTVX)yfkuZ9d$5Q#WH~Eb zC+WnKp)#0`s@CGfN?o{95?8z^dT)7=&QiRPiZfEBNdS+#7a>ud-S(3IS_Ci{ccuUgRlEwATu9st^ zj&|5tqQF%FLsmz9_7|*CKs2~a4RKCH1)_d6k{Mobp+ADP5g|Ub6UfB-N*cGW)s(aj%YC)R$x^x4NDgA1yJ87 zZXi2nGNk*f_#WzTGM|F%8i5(tt~?z)NN@d9Y7uvSyp8#Gl@wVt6+)U6(GO}Vbq_ys zsj(<{j%ws+l!ZkV!!{TrF&HpTt0iA}1eKOZ(**aGXa4m7IQlaT9vuHf z0J4+5Q&c@h~uYOVQO{akY25lz@+%tcbR# zZs`LsX%5HsZob2SJNEE5&#Npa3`}Q>3;PyMeqpa4up&{iF!Z8oN~db3K68c&pI@5B|jLyZnVv#brAHV3=m zj_{osCHB%I@!Ro^HUi3LZP_0WRtgwtW-%&cg)}XQmV&NnI$n0PK+E^Roda;Y0a$J< zH}8HY+P!$QDvfPL6Bf1KN4c`dGVjCK<{g%2P;!UURU$iHC*d8j(Vl*}8W1{3iV2JR zJ#*BFrGjmedNbUi=A}8Jg&ht%*;oD^i?T^2por_A?9nrQor}{k4NQ+<>T9{$=Nt73CihywE-uLQz`7>D48uuU%HA?@W4{212qmjkGJcjth00?WnNqCy7l0mRm>1DX|b+Xb)S0R-Tlb3`TWzZV-_sdy{IIQD|cI(7oS%XLPjg{m&9wt{k=0L5Y_j1Ol-kJ1S zA*Ca@blx^Z(Uq=m_bZTQ-gyJK-YO7H(vNu{9tG)j*gpzdo9(E&Ds%NwbtO6El_nl@ zypDQ|#vG%4L?<`S7RzlVxQ{Iqu)hp#rvA8ZbqHK5#$_1BvEsG`D`k8Pk{M;R>OO<( z^V4c$@$1+d0}_LnEoqLPxd0wrsyjc8B#Ex!De|ywyNCE}(W{?wUx$d$X}UaKk;=JM z>UM(C*19^>r<^Dw_1zIjhV`8F6MT~{h)EN{SiRpPa{o5kk%zq{U*GH4@mrxaF7|Fj z>@9-oH~<>%!`3BzSjNmaKw;lXah{}``c2^TSa$@AVmGuHQi%aX?*qpu0Qo5VKEDqb zQ{=Nd?dG;4H?tk7fn7bK;Rcpio-^eDjD7VkDvgK7fiPV4B#gE!1C)n&jQFOO*eRlv zyjLi{qw;Jz z*yvWx{s3$9G3 zRdwNjH)|Uv|7KVW8svso@xst!g^MJxPDUBwwY%}+}3QJIN;6OP&6$iCW0%F zv>y>|@7wB1Oy|upqaYmV@cFVfN%*w|u;FrG)AV73RMUBxB9&F~CT~kVUbLhL&6-8E zqokMPOA!QxvI=7+<%>!FTvDz{W^TutRQ#~+2ggmbEMw5UwQBLlCP)Mg8F6N?nE66u zg~+j(8@c#o7qUOMcmV!w|8}Z0dB382qucrn;Vl6yX)<_W{iitf`6CArIsoV(r*!WUY6s zcWtzUJxKiA5p~I7OSm68blu{{2y0KWjl`O{M!|JUm^ccfzDgSSExyl@T(tb0od?Lr zZX!)(x2!bi>);Bkm@@D1ztGNhmjBz`-o83j)&tB9j|9xRcUZl>c+z-&Vui`}20ts5 z>*|%c7q7AWTqaO$X@lE_4NvQp_hA67iUPepYs+)rPx4sI?R`j8^`b?VLBD=p5*^;k zYQE_xtAaEi;~Tn*nt|qbmG8hW!i=G>l_-(WCbJX)tfKzw5+DIQ00bEXQ>AQ7wdf*{ zEX_m1WBFJc0w0rDW}<@WH?eC~`1^wD5k;sKk14OBQ~%}Z9C#lOsAQfQ|M-&Bz6CH) zG`+7N=DWQ;>Ed$yd$HlIQMCN|p_0R|DBZ8s|fC04usb z>e%jKY}e4LN0fgVcHLmpZ*j9R8RmY8l%%!;!S8{lKy*{~6uK)Z5QqM#j?Snv)UXM} zzfWL3X$BQMAby(p^dAMyKBzZb28f(E!SqxcdZIIQ zIi+o2@skzqctd$@m!C{Iu^SPIh)bnBxSJo-QRa(JxEY5RGirxCnm&yg+Ac?#Xsmx6 zCFQ7*70<;XDGB2jm405}BekBX^OjO;au7606i3@> z`*TSis3`HkXKL(gfmfY8?#{8M#oWcMG|fsE+YEP9H-5K;;lt-RhG;Q?J%cg*V1bc{zwl@gc{GdE!epviK4B#^ zz0JUZ#!9?gS_TedupUSlz5t0y@iqAyyT)><#(09)yxno0+#BJd!D=LgvW84%dG16H zO>^!=CtmShOAOQ@RhMB&(hKu+YJCPN*FigAW@KHVCskKuqt%OYCcDLbJ(cCD;BK$9GEE;6WnMe00#8_!EgTnVRH!&XBy z+_npC@C?>Zb*k@{jT-v$#gf`hsIxi(pv|>b9oL(D2h~#`xMhv75wcupwPF@6EYC~Y zw=8eRmeFQs@*CfBZ?mH8n!K0ve`2g|@`AjOdH=qo(SLKt=zaxdeSpnS1$$|lny075 zPRQ3F_$*pjz5-;?mgRS|@3aw=O$<){IVCaqqFqsKBI6qFlWUkaOreNNf}=RWtHUuJ z3rTZ_SWFr_gFr8i;F55VC@&P0!vro{gE*a}#XrqTQr?X*ma#A>J~h+2bgOIFVPU)t zpIpYEMN~A(cv9Y>on0(D6SL4R?K0k1kH9LVh_6Y*ynL#upb*yX2&Z0wQ4jqcnYtl% z>G1^Dv;-u@K%-5d0+M-YpOJU_jA7~_4eE&e;W5x$fEy8> zJo@ns7F|+~f+kSx1!iWhW)2yhq7B=DxRYzWz&8t)1nF0h*}5?(p9O`5OJCq2NTm|= zm_S4rL z{U)V%X^lUNT8r=K?q`b(;{jzd+o)b`a97uD?)q+OdSBn)U+nwFzL(@arF-35HXfdY zYit^Ry+^^^(xoL@x=wfBt;PCJb^iO-&aQ^fKM|qvWHhgn@J`HvUf)pWBvI$r?wfKx z1cp@cczIu4Np8`~n=Ch6g}rNQB0f#5-zQ}|l_pwyJvftRrEfRRfBcXC_@Bav=j;3~ z-5kfuKx^SKlc{gLx#h&e1t}&=*V-*IJ1t`nncWmK) zyx6P=-X_=($~eh+QW1Rl9q#G|M9V55iBkSkSjGafD9JQ&!^;+=M1XyY2Y-^3On_V! zW?ULuP>CtxMPW$`XfZGIOtPx`F;rT$AF4QnQ$z@s4SlpSx!(e+uHop&$u({aw7M>V zY+vR>{1=JTq0RY-o2Vd<_s*X;efqzZBXu#vB{bv!rd7)EaWC#;>y#LJT)P#^HU;9E zi(oZk3&&a`QbknK&W`?d?U9Pjy22ST<{>l0mr^lhb!8&pxwhj`L6b8)xiz6^-#6`9 zv*C|^^legH4+iieYWRz`k(57Qv)fqgd#%wnElB&l?txB27D^&hGYi?$HwmpGYGA#^ z&+@i!)V~5Tx5=6cr1-VvXdU6B22=^B$Sf_`f)U$Qf=!TR8>N`_xxf{!RKYs|jZ z*2Q+XjsDH1_nK;Ze|P3FJ}@yiO#D|JtFe50ypofnP2xv-1Mit}o4qp=@_tg-HDo~r zAz;UBe(;|^&zT#o>{!vCqj_JyR>?=Ku|fE%LYioy5)XELo2mW8XjziXB3bKBSAJ&u#TNlac!6U}W3r zyy)H;HxKd8D&BR*S0K%#UQW0bwNb2tZ5ZwQ$tF{pXA!K& zzi@jn4wT(c^h&R!^u6UJL0|J1;d|Hy*XMF{ea30P;ZzCx94 zAe?_vjp5!TWy&9-U5O}LhQUhNBN3*l4lKJ>UY%E>yP}_u(KuyV{ao${oPf8%`?pxT zQ-^nE5u@>wusS-WOWnoHQ{yQIEF+!WbjEuySY?tm<{*f@B$tGI#UNKto>6_?6fIrg zJ+Fum4l3a$(O}d#ji94wH)sY$ti~8Pmd>n!lD6v0=m%x`PkKiL9{rTS3-vOKQAz1h zP*jl?2+YKqngxEbbQ0!TVU*oo>ox+$(@rz@wOs=5C(J>A?^ zl^7Ia>xL4{^mGK{FiALJ%>{N|!TbS1fH}gO7QbKQ`hC%+@ z8b5)Ho8bhbz!YOOMfGp=avKrR(z2~LVD%wVgb-06rjhV8u)LG&E|g}sO0SElv1CfM zj`IY*)w=qE*jf_olLW!I6~7*0;fd1kzR9s=(T(xgx)j_R1Ia5I_O-{J-Il14G`@-eK)w z|6c3^zz4XgespqS4hbiONMi5lWTqc~ay1PVKBN8|2iK+Hqrh;egt3k^LvcC8r3Hn? z(l-Ge23BNfbm!T8a1uRpuW4;=Q|t<;MruDP`(9ZCR@t^N)mmm-z)1D%kn|>ExF%~v zJxQystr17$Ee$1EK?kZ~1!f@6`ZhbIHlWIJa2hK~OL+s<)x%UuEu=flv<9o424DS{ zX$=7i^6s8yJWu5!cQ9i`#V5>#Mji#oh$g-g*JKqo%!sU!LHo@*uI5-!l%}_ZArj6u zSy}#p`oD5&|JoX1FyF}5 zsT6Ouq92@K$^_`O8Q{w_{X6fFHlH{*`Tk#hJ|{bPc-D{_EK6>y!Vom?8XgoS|XD zIu=>|wYP6$4)fL3+4xI5l=)uT)~isW3Ao%6P|MwTQdVJYg`c<%enBE`2X!5Q1(mZw z1Nq`+jJ#Q3XlMT|Cd>fNIV#H*cpxAKlE!wbCux@0x0y+1TRw(DY@D9*66^+vn=Wz! zu;`R5eZ3JkSCDY^GCZH$3YO3Na+%%plr*z&!}?%S4Ct$PM%I%w#Wwk8b9US##EaLM zh@B!#l-T_X@Lz;!f3oytP85$>T9)cIOMM%lpcw~c%avv5IBVYPWb>Udl^VX$j>bL5 z-qBl;x#&WuN<7*;t(q_6xRH4)<5{(FZ`-9e?1xY5;TegT`d-y#biGc}d0$`PDLT*C z=N2!ALxw&zXwdEum8mS?-l3%^Ri21vanjyI{TXk=e&eOx(;J?Yb_Ttf4jUS9iCA-4 zv@eq%9_Cr<$022vvsuZa`ofZxwfyot$C_29j2TL${AF@wVFd%h3X@GOr$a@sFd3Di z5SZwknr+Oq0rda{Q}IARo1Bn!28b!1XtwggHK==d-ew!UVf;O5f;6mwlc;Unak8~D z+THWwt;kM9<+s2rRg#Ax-x0_B%2tXqXi(o4D5SiyA74laH{ssnR8MT5OWM(rQDrQ| z;8jxXR=@U7GyOF0pIU>JNpD_ECOXV~2x@1+orwe_d3Z1Y0+0Xo8Ad%spw+hil-`nrBl1|}bpc3H810AVmiX2dMX!>)ced5)2qR7*1ZIwfi# z9Zh(-z8?W?)>bLVk_+Mho+m>UwH%*H-i2L3J;YEb& z0E;7H*eM1q+1z#Tm}v@<%%Zi+`LpYy-_ys72j7#X5xJq}7?Ss0YA7v@FPC&QSd6(b zz`GuzQa1*ZkxMe2l=s{n(uaq79Dth)Xm6KRK2gW^qbX}?D@XBz;>4BjG=h-x9hVV3 zY-feVl$cuRCW)^`W<)e#mH8d08ppdNtV3@qp-u*|KMysGJ3f^#v+pn|MG=;v{-z5R zj9xX*ysYZM8^w=>s`^LzwzDH3qOVyGR=eLO>m-ady9Ix-Kq9FQ*lGmXw?m-fs#|x; zL)<1X>LkLlj(U(pG_lr2r-O@ZVSE>Mb*zw;hJg)q^MsT1o?0^)Ox;l}Ws?>I8OKxH z78h>#zK-#_3uA=E4i^Zp*{J((iE*Ov3cCillMcFcz}G7jg{B zUr%^m0rHf)Nl0HkKvc;1)f2fl3+qb$XtPEF$+*k9ZQ-w)WXG0$4NTs{PuqL)L{+_f zHM~uJ(zV+T2QmevkwG;$#bmOH(_{tZ28DJ-lp2hVOrg8W zpn+yCP>}aJlF4f|Dp1$Q2rrAHpi^s3RJZn1d-8c$^Hd|SR&Q^>r$C1t^WgdSY z&BdOKIl*Sh_K)l|F+>c409!z$zm2IZXk)ch5#%!?ijM~CGs2g&`d-)(_i`c7zqlli z?%;_8m&wM8lvGtNdwZ`y<5s^X_AF`jfh~6%j{B?Iij`C+Ik-4@r{{36rPe;?=xfMzQpqm+9&?4!zX;b^8XLj?i|II9OxB^uQ!DVE zb48OGTsw{2^bru{R+D*QCecj9rpVe%s!^#L8%#w_*Xn(^jJ0pEew77jD3anctqY6o zc3;}D+kGv%FqTy}8BMZgh07(EPie5m_CppYYo6Bp!2B)=GPFF|H5kP?B7`)zDy!Zf ze7@a~<@=smjtC2odz^xH}GlB`ETY{FK6ziR6N=88XyrToinz`2q z4${ed??>%aM+;9@8!n~&h8`m!yRK`9X8+`R3K`(XqpZ1Xx>>*@N-Pi zI^N2C7ENun|9ge~T03p;HrW-LB~{co(7AR(xn9pv@2!z7i^~y$np{B)YFjloX{~yO z^D6Gu!@rTW_{J7n7jI~nws&}!!1w9Gg2Y!R6Wk{0#}uXb?-jej8`Y{RpO{M}3oXA` zja^x*ScHUO3hZ{B45pb_As=}Yo^7o7oX!6QX}JoA#L?8V;TM-g%xkl;fCp`>Y}x!h zAM9r)w;Ymm!hA?{_jcVl)C$gwSFNU#tG1a-Ox?wkyCQV&(-z8Y_3GCei+G#>D<&>Qewzv*6)dGc$bIS{YLz) zA^JU~NaCpJ-_BCs2|JF8&$0w*bmHF}=73j^=tA(mWMB=yZz)*%+grxim$A0DimuZ) zX{-%V|U!!b4LTjdS9o67+Q-_(nCLJ z;{v~aUN3=%z7?n!2KrTN`iQ!-J60R$LsP#{V%SzHmeBHc*hwFx*rl@j8%jsPR zDwQ6_1p#~{%UHkL`!Ih536UB4h~_H3or%<->G!?YF*V0>X~~N8dgJG$9#|0%bqnyN-svP+ZzNM(7CFxc zTdQ;Z*w{kR$RzK!9&aGw*7b&fS5SSgqWvV0OD*4E&mckroir3!Xk^cLlI-xhY~_uv zq}?1S@|!cLyD;Tlgf+IV_&KY?HsK$CrpQTaS)geTrOxr%{Vjz(rf2WGL_ULB5jw(XBXkRRrqKh}V9(WUX zWXmB}Dm#c}fyuHH!KQ!xC)*VV>Ai5~`{yCQ?UHw#9@9=Be%UisS>_|dEnzcv9shc< z3xG&EJ}k^J+FB_BSa>{08Cx^Y!UEz@Yw~GvFz2*dD+8=`S?47K10^fBsAaC_h3u`_ zXQT4D*iEID7iB9g=g&UA#U0DqhENypAyU$XRbt;4=^SRGlj zrDs#s)mgJ;$0u8+q!Ot!lL;?|e0=9S#n+ia3o6n@88X0w^$Ql00-wibZ0O|RQ-qMb zkI>d+J-u$%Psy^HJiLeA!oYiG>14p=W|j78Qifm6d=%f*e@W7<0e`$Vl=##vIFbXq zx+aCNL+R0zcmUN|>OId+$NdoxoL6N6emjH9{F!!$ZI9oUMc+lfm-LeN?=@Ncd-4Q} zIedJAu=}T0cM$Txdv~{=j?%N!TEuA=Co>uHgZ2)tIiXn-@;OyJmrmAlbviRWy^-#d zOboeKbblCNsf|fCIwNd=(fWuB!+f0@gm-tOVFmG0d> z^_shqKevV9IItteMmFIKVW7-)lCUrLwIE>}110Z!o+W%`DXq{flD-4axJ=y7T+%-? z1@nL;{^T)5Y~Cb=HEJiPHla93mS|+3M_ZSd!SP8dUnCtnR-DcQBZS&ms74X+T?9xi zDJ~kpZ44rS3O5t88HEU~#ImlVem`3(Ea3S$_|sk1R;XB>C;?+51z|my6s=Ub1*ma7yY=8+qn%4ADM{Dn z?&>m?{97jBDf7xR`X=88!h}AAR@r8j4Ct+6=`2c+z%1OzFsQc*`mc-GLAmgFk@SFz zUrLE6>XM{T;guq+D+Y9tWSL4A2PNNQu3(*X_PvO*NhuQ5LJ!#N3qO;`U0H8BfvWtC zuSnsT_L6xf(*#XlnPb*tToGrZCq1cogatgSsevyp$x(*&+EG-Fb#5F&$unLNwk(fu zSvy60lZOG%PSCM2!e5ssiPovX#bC*Pb)+6G6}*OpP|;vKsTv)_5{emSss2<`+pQQW zw|VtNI)s9tpv))x^)T3N6 zMGX)g8oMHt5<)@Ns|dGXN)gw~UKhdNXi2T+!PQ|TgA?zvqd&W0P>{5O_`G>9)(v@v zixAJxcu{8qaWv&Tx%`z9=y5OiLrDRbdz{t4sAOf& zF^9$*VKX>Oa_dK-!4tV{^(sq-n9L}johKHx=A!L#OrvX?^mL{+xwq3^hDbauIP86F z4FRZ?A`&jBLf`5NiUsmTF|ILOx^qj+*dc%5YsPLWyPffvxKsw5sk&YEd||3%Ta*~K zQ0s<=wr+*V)I(8YRp7#ty+Rb%>eI>;d}>$&VR39j*hYcV=98i(FPXuno6`csY*F|k z*zqk1BZ(m!uko=z_;1Fu+Ym9ale!q-%t^4X!d#|=P}#%wd2EmLjOpyw7LSViWCXDr!CO&FO(E<~B9F#N^4D?naV#WM< zW~j9T5w{F4Ad*Enm2u4Y;T5k9B2&oxbz8+GEhm4326fHF{UB)}Ve$1dxhA&Vo+Vi` z7{os*^m8HTOuHBU$NblPsp!I=!B4V%kFw)uL|F*%J}JQZ)WN~|XX>S)dcBlY1SX!# z75=aUWCArVdjj!?)>$y9Y7ki9pnDVTn3O^oV71oCgwbv4N|G^Dj6DYkvtxVA~+MhDzgBb{t33vWmtG3g#8x_mz}89F}8 zWLt=4%4L;@%ptvI%Kg!TdUdWE5&}wjjnfN}y@oH1OTmJRJo8x5WT7@SJ_h@PE6sGK zuBsQ&v<)ZT;5+cuQr(M`6jm<3BBo=p|2|kI;%F`us+Syv;p*;v$P+M&l88V-Da`?P z+R1VSPB0Y0H`?G%NrU1DSy>B0xYJir!xfvhxLCuG(4I|?ES(y{lTDxF#{neCXkTJ4 z5wfX!`y!}S9@$TNXyc=1q_dKWQD4Gz#Zn_EFkNqJzSY5@966%e(}Vp;+^WdCZ>~bI zLKTucf}ii@=SYi}Y5`%VBOo9;4Hlzhdxzlp;LRp2 zfLw1+p)zB=#o%UWYDQ^m42Ea{2{xXN5VCl5tdR!N9H4`s0+>h{wt-rJ?<9#qm+#xV z4oC=J6g^6^xaQ!;>Q3!$Us23a=27K@kvy16U1+e5dDN!}d*vz1&3GS`ckHo%<_;?s zk-_f6IC&~!1mT|x0SSDaMR&wNLX^cAk! zI&gd~K1=cVdXy4>#>4hZE?nMQs~l0l4G*@zFKL3#R9}>> zn=-xLbgH(}G&Ps$=e`ldA2QD|+bLRD9`>5hvivGE51M#aQb}wa1W+|R)#JlKl2JY( zsqrFel4pxm+y?Osii&s( z@@*;*2*hDSzfM085#&ivqbR*Ob|ApJnkgr$qar5^OIu>FZ|3FXbu30>^86rhIRZiv zPSPk%amSb4&H)3W4~)9>RXY%fj3ys}thB*$TyD@5RuLS{wI*p>LLeOTj(FR*-Nw21 zAC^bb<2~kchtH8>@`4UIyu&YfWj;51k9_c?mV-9uB5tjFKG?QZxUj^@9fiRj9XX`U zydI^5byJR9wnqdLWOUZ2YxDM&&Fz*3iBaNuQEn7T40%~M4br<26Kk4!Q!rVuYN`^x zdzu0Pqz*#jq+ws6AhDV&sKOSss}Lcm`Y^H+R@uv;L{yIkL0v@*{swFhKn*?%DO*H_#YNZ(Weii4IJ272?s_WYgy=oeID+G+LBot+1 zb}^^4#C<;6(=EfqQake8A9-%e6I_O;p}ZC)d{v{}`^a^#TyKYL@}A^5x;|ZN`ykvv z2x7nb4lyJ3gS6OpNq5asEsW3bPP|gmUzi*{oykC}6IknR*xtbzJ;egA_B{_mgh4O@ z4%;A*VN=3%`}c&8k#6~Oq+6bDyNq&u=DEmN4@x5x9ktXlTT?pRN`ukX*|Tg3vdNsM zmiPY7H8M)ezJ0ZSwA|WPJIy7-_gY(H`zl>`on%@N9A&2bKmYIl_rFF;YZq=G(TJ6W zu?Zedg#ahkmU@$kOvb?Y(0 zap4_)7o%+)!^V6>!H6TRmg>VvnhZ$XThI=r(qwaNj80lHzQqJIzTq)wkU-ju=4ks{ z>utxb2{oJoM6-C(=lz?G$h6NK*4{-Jk;YC!$Z=nUK;m^PX}&u4Fxx6lh{T8|bbGsdLQm9sSqzRVx|8=r zO_U|A9#*A`=QK=ez;4p_eVeQ9aEETiXL(t{G5~#co#TDeDvG{$+Cn(k^GMHlv#wwA zgpWL7KziOS{FkNRjVY*G&pLi|O z>dTX%v%ct3>AtA=LD33;w0fDpdYLWLA6DS9sV5_<0{|Tjv!geqN3esNgn$#ZtQDEeYqF(tIf)(Zog>ScdeeE`-@UrSx?eVj$IXy@zzqXiU zvBQv-b#a2uTD{6Ag)FuKL{;z_4vK>g)_|=U$>j1ovmgqiNbYmPc&}b1(sTNmp{B$E zZO@^RFCyen7`$ov6#Kcf8oPj%eMvu{tLpLISesoXrDiGV2RPWS4mDv^elV&*BVrI8 znnZq@0Tjw1d{_gu>B&Z$5^Iyj2!R37^gfruIUr#^;$!y%co4?R^b!E`pL`*!EqxXY z{R>{ETG||uhrSi}bVabPE~0aMW?UlmTzpFAddQbsTYZK3aHMP_Fi6q0T$-H&A_7T~ z(uRz@!Rx=M4LO%n*0l^$0u`%IAGUg|eg#5&AB)kj_A^K@zi7UzxpU zMc3QsOL|9VRxfte2BFM>8(HQ{y3d#NE3S~Vv{d`#!G?wQk_m_7>6ScT~tnid5*^~Pe(!3QwTesAy_WLbV#cjun=lR6Gp4r!E}WC zmmD|Cp{75@8+~_mm|FoH4zq4qQlFz6K1NsI*)C$#@-#}~5L|>U=v$kg5B3Fdk7*ef zrtgrL3k7oci^}vqNq#!*47=F$SY_dI&6l?4KrSwI+`CTN(ScRndDn(tY*^>;o>s5v z+e&tt86DrN%pZ1U-My;sqnq`zXoAFT;AxT?d!gGv-F+^f59py`_hxm?(?}D{1S+Xf zB`%f?Pg2U;7t8BJZgq9ndTDwtPFMg2+6J zN?9*r0GE>VVc9y?&bw60G}iX3${N)p-xg9!2NQ-dcyY<0w?!eHffDDvc877V?HPn6 zqtyt-#^&#v$tdFCGx-5euo-ZKkkzbX&JB>}z#WB^+lb3*syFA~w&q=qi^Pb%6li91jr-T?{()aV9PngOx71`^aVtYyj50b!XEg{z>^KRDQ^*2KDjug$2UZk=MYBxQ zRb1`D2m+cF2BxF~;BB`go2yTas9=z~-d1V7N%kCBrABa>-`!~cO!tSQmhzovzRUI; z3c@GT4|>-Bo7Vb@pY$P3s*W8Ox(q z)<9WgJqNy?gM2FvuI_#m&1OCctDxx)8|%^Xw%pVQ<=ry_ zSLsF3%XzwEUHpsfRCE{#r$YKiSQGW2P~Jn*}=AqhZcN{ThS-=?KVepNBIn z+eS&50i?d5-{%$;91@06DA1mOXrQSGMJZZXdPvJz3b>|H^ z{A7Zh%-JgZj4kIGJHHm=AKcXKXMDSVTIr{C|J07Eb=Mpxg5DHxNj}NdHbf1+0e}9D zV&$fh?EwPUXLFp%>t>oeqZ~zF@4hJKaO(DhhlRF0oRo7lXeAvda#rI;M@q^Vve9~x zAx4{I89hmRXkSqbdf){ufxySelZoL%OJYV?5Rq&{s({sSXqrCu8{ugg5|#qX5RmQx zc!Kdd4WNfWK&Yywqp6$l#sq~y)7vcnG?o<7mTbqE0Ye;wS%Yp8czreXhF?m`txZ`& zF5e(TlH+)CGxwo$(H%>~13G#$#?AST)2kbTKX#RJPWzj7a1;X2D$%z5YyaM6=st6# zUl1{t-_n~y2T@{ip(}?W44tHH;O8(t^t1aqg|@fa?&D#>;n664t=ip8QUYe|h#c=q z8wgJOY-A0uu+QEsdZLD&bEkL>=%6C$eF-s7mB`vCn@U7wn^0j zo}{g`xeW3icvw=kT?42gZUYkdfCReKBzZ6-`#Q@edBm@8`gNp>Qj&)O!X1yIDXh|%vyKKpW zvewmHv=4P-4YQ%8P1Kw7&d{)f64wh%?CkEbJUe{Pb6RKv$dQxmJ{;d~i!3da%boUK zamiN_tz9=t(ro2x_@I1>WThfOQ6ZVe`qy9$dG`!ndn0cJy4^7vzE>uPaaN!Z;Ao^% z)(i|N*57L{-`k!@11oPoiMFdpL1^$8wrw=>9NR_I2Q-V2{&~OOH(q~dXy2`URFj|* zYZslN^fg0CTlFzRiOxbp`d2B}9Ou`e+8|cqG$QZaw6q6%#G+s7A4- z6wwFwyl6stI!U9nxBv|EaqJ2R)ujPM$hNn_0A(w`+x|ZGDfWNO={$4pUCmH&Nx$24 zqFlM_(5e7cL0*M{wYp?lrR~8QLsM)J0q=wfGsvWaG)ilRz@?YT-CYYrAdh+Cd4lh` zbeQjQ=2`$&nbf1zG*XRx9%##wP72SF%@o*m<<>>?kz*~S?$Ya?z8u_d*YS0Ek0EV1Lif)? zOTFF$qb0G>8G&jy#F=D5DEWL(*3U`0N@UohF{^xaf0r)NXZuCKy8N*B962)CMK`?D zp%AFSBCAv;ictwS>1hNHwZhwWTAXvJUnhyLf$^ z|2ZgXQ~V@1xn5#AL`ydl7(YkH6rlBeF{kN***A%acpwwua@9u$2#cTOA$DoINLOR@ zkgsq0wZ42|swJxN5H!@&7$@wrKLj)36luNfP$4TYtk1`~RzSR}ajAwJDV_b-lHfwU zi%En*`d62fK5rf{G8gsbsy2%B_fu|+2AtB}e6HFk61N0~lQJCEVpLMZCFITNP$pC@3s@Bq z#G9}k#gp|F-6to9gpK^_PW<+N1(Cy!JMS)os)msqa5~Awt^)@1`(&9bDD^YL^KnEY zOcQ2Cu)&lyI`l5d4T+v(sAT9r10{Rp7$VyRhLCq8iGCz*HTu+1Ze#^S{PZsSx7+$k z@uSgmeH|s$?%J}gE`j#PlH{CX9lguZ(0B8sN{V?1uM_4u@ImiY)`#H7_+4Rji=voWdRvprhrusf_B_+%uZEatpdS+NRJDd7B7@tdp%mNTzj)HIdj~uHL zq^-x1@P9iL;cLDBACA$OO*$5V_pH-lJ?&2DX8TygbRuRbK(~ANZcEmph!aifotkjI zm3?oYwE47!#r1oqaOd+u>vWW7`RVJZfabGij>eM#c4zx>;bCJIZ^!2KK^F$-#Yi5kgFFW{z=7ugABIW-FdwA(k{oW(4{f`U1avetnqdZP zIWkCl1WB1?c-wmTTP=XixZCETQOqh!61 z|LZ^h`+uJ~+)h}n>F4xGLYPok$9+G))l1)%|MXJH8;?1KK}7*r{$_Yws=#D_T#8)2 z47iq^qQEZzth}&rof%^pHX%Ohi+XEaClKhe^b_qXSm|`NFPS!m@h~*L6no2126Hx3VKKXniZ{x=y-}&}_ap@zuC1bB5pjU_*nki@ zkcEdOq8)iY+P3_Y-2<|yb17D@=}Wbk&e<;uP~(h-Txq*By%jhUw5etJ+#N_bD(!ko z>Va*Lq76Q1yKrqTqvr!Z35k`cFLGbmI|-xdqqO%u{?4{1*(3ldsM>M}>L}4h97qz& zE#F|oqmhg9eje@VC`g@Q+|N`AbxNbSTM*Rii1Ie?Q1$MD%dSZ%kZXE(?f0D|3e^+d z94mcRq0WO)#nvcag`p&ECWf;lGiX6)-D`Yrt{3}-_j?~)Q@a?MKTDiQh_CWIyz@!2 z%0o1&4ec%8)|i!1kN3#(?5H2y;NQ!e>?VY?2n` za+0>vR`j8|IW|eEw#x>zR^NLO#x_=$6d6w1TjU!6=K0{wCTiV8CPC8UjF*%8Ip0FW zxhV<}iPdX*9LB%x=;;XJ1Ff=9HX<*@=fGGw{iMAmzALBi8%#O_x#oKzVrBOHluV=P zecQ&87Vp>D$C0*}Yda~3DtFEUCC0Up`gx93vF8Czwx&P*9k<`T!_PLoolwbiW@|NqR1rcNZ12n12NPkFeSA7m`IW`cl;40l< zr=ca9=~|)o(jHw(ba_`@p*Pb}Sy5SNLQ`AKCp9IowjJa9*0yW;)vOfrNP3)C=We4b z#pG!}dKC36mfLKO1KIG}x^~j$KDf8m_3iaN5KstsSR8{us!C!q>02>2NKxuPZ#9#_ zY{QowTPLJB5d8=tqD95C#gZ29f?W}U_Vgd$M^QT)1-dUJUUx7h_FrGUU^6!&Y@zPe^#bCg!Q8>3yCO{kZCux7`*hV|cb5 zgw<39!vW7?wR)Opv1O0N^^~P=R1)4qq9N9kwAH@=><`PUC$+!9I(l<$Q)C5VLM)~w zCxuSq9&1SRY;h#}?I&5TPGWeZ(<%EF&+8GJa+&Jx8ohM0Wn<{=_U1fZsFAuD#@)qm zij@L&U#v>`$FGPq`N_UJw}zjIS8<(9_7gZ}9Vh+m&G1Iprd8Uq#gpD=)w)FHG(B%V zKig{%(hQ8gO{k=${Q9r%^Qn3Klx_3kXZo#Zo(%V4_Fn_Ttw#sK&IUiVAw{>H9!)I5V6qXAS-AFtm4Z(t< z8;iQW`1f5R5Y0*+VxvfUj{ESx8@EKZ$BMobSm32n_?%Bzf zwZRANE%7}8o)6q2^tlE}EW~_e?;;#cAEhk^db2GasrI$-vpF7>FM^G~BLp@3S~CNr zIRj_i!EEXNy6O$4`amJKbVaFN*hBkVs=+gNzE$feB3B41y#vW-uW$I~(|}0JB5s~t z1wk`TVLeU2sK2bHw|nVXjvby4H`?(G>_Av;O24!zVVk5Z?_|1_}0rM1LrXheKxjX^|q!p&lb_ z?akMT$de8DjxbO0QplSNxu*j$`T1aHIh%EK!0YTQOVKq}q@|Hr>c9!)PpRdt*>5(8!}oTI2AG>7{m4^L{h(sccmg~OJTU%Dx2=sDWa zP)^#uRc1%aj;bV`fm~BKow2gP+PzIbO4A4kv<(^xWDMNMvaAsDxN>%NZ?>x)Xcr#$?%)t{RoCVixw75#11Z|8lHQ_m5oQ} zuc+iHVn1Sk2^vt-sKi)RF>w2-88Le0BL6atBlbk{w{lCn<|@6FJ7)Nr#JMDG0q?lHY~qnQZw zP(L&SzXG*MGuk-dj~v1}CU`4fbEWA}9V1oSFRg0WD(RuBMTxla`Ch=Pz>CyIWtNt5 zI~Ti-uPuz+T>nKiOn}L>qt{9DyGrZYVa6_v0keV+r4sx=JS|U^tionhC43T(%{r^w zAGui`ZY z+XruMx3a?;OADaH74^7}D|O2tz30^^Wy!3{hN>*7@s3CJi?EK-oe%`r^qm_Z%{kZ! zQR8cdrQs+i+_O@4!W=ghegVd7R~*cFP47^yT|*&0Z6{~BMo~LSW8Ys!9lLlx%jMPb z8lxN>>Gg2=w*(g=p2bhoK`6P#OUo0B^&*2L5?*r3rhTB& zd2Zf{g9fnGO6V)n*>#@HQ{X<*Z2$!_$5WP~Lb+^sa)`U|HFX<1Mxzxb>P!~yCz;w5 zaWL+mSKa>5x86Ld+MA&^Jq|)uUz^D*)>Wn12WgJawY5FfeZ3f}-dZpRRH>Q@$Z6P! z*1OkX>x^3Op7!e6t8=w@V5fLw9FdCtfeS*?<8Z%8dyE@dBYC2N9P30)14+9yeMa1D z{Tzd`u=-l}y=(%*OcZ#@R(Am@dqxeYw2*g@w95ysts<@8v40irLbVO@;I!w0g8;((vJHjmX+^SJwW4|`?qkD}~& zt!=gTEX}O!1~%Y9P{Gw=;WvsFmaiMKXv^~T$`Gy-d;Pjun?qF09f??s{SU)V|9)pR zifu$(G06vM_P_X|Mw83Pqp!4kUt5A!P>27)PRL>aKf&L3iWZiKxi_>dU(3*O(BA$x z)@BWADUBw01RC#BGxTkg(+q_9_a)8#XJ6E4avpiCGrN^#csI#GP@(4BCp$$8%OfTY zv@E}t>hbXQA6fpo?g;QzykOrosT@QoQP(7fs*yAavjXN&6767_(Zoah9yPiR=23!G z^5%IdL4uF`<0w*(5&rBojp2$vwSaI(lBIeuP!Tml%SdZym?;A)3Q98 zT#tH;@Q2o91Ips^g?Bt(W~c(n0KGd*ryA}?z-)@DT3(K82Q*U*k>*iCF0b=i z_YKHbJWE`48R^LP_VikrcKJY5)nMu%1}Omu^FA(091O;FQbL--RacE(a{%(6#Kv$1 z->Ca6NRB0W-Y6`~%XnQ!hAB@epOu%ZVBP5+gg^hfiZ{mxNm7+gtNAKVW%UEf@49#6 z3$b#~Z>p{TU|;`Xgd~!W2<2G%pXhREvKE#}mb#wPdzQC6NnJoyj+h70;wm1rRu>IB)xs(j=13tq zS@T0tm3uX?Eu`l9S*R+X0_}v+BI|<$J|O^|z9BwrR#5eknCy{8Z2~Wnr>)sTn^eQ)z*&0^L7C$5GdfrzEoP zbi*nUj%eHHv`jr8EEo1q50*)UlO?2CCN}0;rTQ}E@H2`pFbC59-;daBQrW7HUjz9| zwxUm&1pKt7$rTS$@1oYq2Vq>xA`KtT )p`f7wfFJ;xD;q5C(yNi0mCa{0f9A&w$ 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î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 literal 0 HcmV?d00001 diff --git a/research/p104-two-paid-subdivision-bank-bound/inputs/BENCHMARK.json b/research/p104-two-paid-subdivision-bank-bound/inputs/BENCHMARK.json new file mode 100644 index 0000000000..3cadb16667 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/inputs/BENCHMARK.json @@ -0,0 +1,67 @@ +{ + "admission_sha256": "c95300e9bca27e44a25c82d794f88cbf70757c142806b0e4c590ea29feb81a13", + "assumptions": [ + "native_all_columns", + "owned_erasure", + "compiler", + "precision_tape", + "analytic_recovery" + ], + "checks": { + "caller": "PASS_HELPER_319_FUSED_CALLER 91166298911/25000000000000", + "early": "PASS_HELPER_319_EXACT_NATIVE_AND_SIGNED_PRICE 0.00364665195644", + "frontier": "PASS_HELPER_319_FUSED_FRONTIER_PROPOSAL 91166298911/25000000000000", + "native": "PASS_HELPER_319_FUSED_NATIVE 3646017316711/1000000000000000" + }, + "crossing": [ + "0.00364665195644044790699554028334161", + "0.00364665195644044790699554028334162" + ], + "head": "aaeec8c0acf01e99a5f331ef363a698d9c084ace", + "kappa": "0.00364665195644", + "main": "e54523517d0f03e58352e647c403a5af3e525a57", + "package_sha256": { + "research/p104-helper-319-fused-return/EARLY-RESULT.json": "ad1ca9b2e2febbf80d9bf8b6ceef14ff90fcc29ef9358310e551628eb1706649", + "research/p104-helper-319-fused-return/ENVIRONMENT.json": "1a4a755aa63e3c25c09a493550a0d13a58e23f8b50083d3f81ce3716581d8ad3", + "research/p104-helper-319-fused-return/INPUTS.json": "abedac59097a1c35c27d91cbdb07207bc562a64743bc406d13c94a8bc970592d", + "research/p104-helper-319-fused-return/NATIVE-RESULT.json": "c6d1b00a83185ab0062397b363258b1f3f6685d755e9c1d4f7d3e7e511240812", + "research/p104-helper-319-fused-return/NOTICE": "fd84c06a1c3343a1802808741c0863ffcec031f5c98eb78ddc350a747d3e2ddc", + "research/p104-helper-319-fused-return/PROOF.md": "560de573bfd4563c16ca3c7308fa729b4188fabe802d8830f343c3873f75b59d", + "research/p104-helper-319-fused-return/PROPOSED-CLAIM.json": "6e31241944c123d2bd4aa8bc94d833b44b3d889bd6d9aafc579108f416b45f03", + "research/p104-helper-319-fused-return/README.md": "b4db0eb83ab6a2f7151bed2da955a487f4816ec9d1976eccc21e54c2725490b0", + "research/p104-helper-319-fused-return/REFERENCE.json": "3e66e054b803551f18b8670da0b2990a7d0eeb689dfc45b56dbcba295551da70", + "research/p104-helper-319-fused-return/REPLAY.txt": "230984f4b8206ae4d0c0f18fbba86ff43a1a9623f8ed337cf1285360f9a67c0c", + "research/p104-helper-319-fused-return/RESULT.json": "7f2d587c59f063b01f1e8b320084a7f0943f2f05d65e3e0f5e80448c6c8e8194", + "research/p104-helper-319-fused-return/SOURCES.json": "ac7b4473035af648d6073e78b6c39675e706e8194b346bb55ed62a0adc81d593", + "research/p104-helper-319-fused-return/TASK.json": "cceea066802e1175b1a78f65e8bff4677ce09e87fd7686265d63ee7236b32b1a", + "research/p104-helper-319-fused-return/VERIFY.json": "ede7dd2dd3733b9a73f72af9dd7edfe819b49b859c5c76e227ec82cb9c220513", + "research/p104-helper-319-fused-return/WORD.json.gz": "4b9fd1187b34ed97c3ac0c760d73531735a5d0ebc5b4d4ab4377160b20d9bb2a", + "research/p104-helper-319-fused-return/adapt.py": "a9237d6dff55ce13c1e1d10159f592f35a0a79eb0a3c054063ba39665ba96296", + "research/p104-helper-319-fused-return/construct.py": "ecb39578063d7f09153a85370a3b9bb7cbf8b36ff9891033a1cce7a2fe7f7fda", + "research/p104-helper-319-fused-return/derive_grid.py": "ceb7a44ef19d72a16db7b43c65c85910d965499d1715436011de32af5d39dbb0", + "research/p104-helper-319-fused-return/frontier.py": "c5f5e4e1f1f2d189f4816291764f1966c8165a7090d8624f72828199400333c2", + "research/p104-helper-319-fused-return/inputs/pr7314.tar.gz": "0589953b3886d96eacf3bda3d38d8d574bb739fba1056af7f32f56047b6061e2", + "research/p104-helper-319-fused-return/packing_reference.py": "c977cf46a9498d013145f74186081ec67674d11473295df399bca61f8a4e7382", + "research/p104-helper-319-fused-return/price.py": "6ec0f568b3491f3713ffabb2a8cc7b467339da175c8dcaa76369fbc3a9881029", + "research/p104-helper-319-fused-return/source.py": "a2be5bb28c7a9c9d528b8bae0d9ef99636bb8fabf80d66b7f8d3084de68358aa", + "research/p104-helper-319-fused-return/verify_caller.py": "6ef60923041d97f77f8291f568f2e81492af09021f4e1065054cf5376cbff861", + "research/p104-helper-319-fused-return/verify_early.py": "94e0e8bac205eed91f9f1f0ada110479a067ee7a3cd73d38d231947a0d46c0f9", + "research/p104-helper-319-fused-return/verify_native.py": "592729b40642957a4d2766c386d73925a1044d2b4eedce5176d988b8cef3b134" + }, + "receipt_sha256": { + "peer-prep/IDENTITIES.json": "f4d3f6ca2d87f8cd68c01ac9f77b69bd5a796f92bd567cea8afe3ac7c72e8e4b", + "peer-prep/STATIC.json": "500cc563b7dac8b1de1faf1dee9b820e73152dfddc15a650cd1191edd39e8c79", + "peer-price/RANK-STOCK.json": "4a7841699dd17688f6aada5c902a2a91e94558b2b1b4460c46b0e55aa95b3f9f", + "peer-price/READBACK.json": "337668788fb39ec9575887f9c5faf438a880471f78d936357dabf7deeac5de82", + "peer/COMMAND.txt": "714bfab024155d8216f3ef99f3ee7627ddc35ab341c486ac6bd53c476b757130", + "peer/COMMIT.stdout": "597470d8132a3812deb3624a859546c0c13d52b094fd6fc61e7416941130bd70", + "peer/END-UTC.txt": "9c46923c616c14da5b8ed503e1652021d7bd409a10ec91a78a03263013fba08a", + "peer/METADATA.stdout": "5873404cb4424dca918a00d503569f3c29a3190fd029a007e1afb2006399f647", + "peer/RUN.exit": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa", + "peer/RUN.stderr": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "peer/RUN.stdout": "d589626c7581fbb9928bc615364cfee49deb62dfc0a39a903417ca62be89cf8c", + "peer/START-UTC.txt": "5b78fd6d42a2b42206891318c08e6014de57d7ca46b0201cd11a166f452210f7" + }, + "source_tree": "fa98712a459b20c10240450097c87de433f8a750", + "status": "exact-complete-receipt-reused" +} diff --git a/research/p104-two-paid-subdivision-bank-bound/inputs/PR7362-SHA256.json b/research/p104-two-paid-subdivision-bank-bound/inputs/PR7362-SHA256.json new file mode 100644 index 0000000000..b1486e0b5c --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/inputs/PR7362-SHA256.json @@ -0,0 +1,11 @@ +{ + "R92-COMPARE.json": "92bd567e3203a2cbc2e0c508bf921966c59ead267c1f373f7534a4a50cb208ac", + "R92-GEOMETRY.json": "e9f93f3271855012b2de705c70f186f78c31a369d28110e92c5f2ffadae209b3", + "R92-GUARDS.json": "c23e9c74b3479e4af6c452eeb73e000878148ec385560a0642433a1c5bac4a07", + "R92-PRICE.json": "05d7a5ebdd2eeedd6c8f534e8e2eeac22484daf9f387f4a6b88cc9eed22a6b8f", + "R92-REVERSE.json": "f8e56b109352e07dfb8203bdbe42a10cb94374246b4cd419421e4f52e2730c4a", + "R93-COMPARE.json": "8a1f52179e5d457aa729714b0b79577894c1e22ab74a8b2f700838f471ffceb1", + "R93-MODULAR.json": "01ad2a656e69699b80b56d63cdf82448e424cd1c6e67636d53c079a6f03f55a5", + "R93-PRICE.json": "c108a061c6c03306a99a6fbafe919208954a7479ae28fb8a8fbf45d9832e6144", + "R93-RATIONAL.json": "2800af56efe23f7420a12f0713a659cd4fa4a3fb7c58449749ef697097ccccbf" +} diff --git a/research/p104-two-paid-subdivision-bank-bound/inputs/R92-GEOMETRY.json.gz b/research/p104-two-paid-subdivision-bank-bound/inputs/R92-GEOMETRY.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..bae032baa6eb1d9824f9de067f3565b8c826f9f2 GIT binary patch literal 2599 zcmV+?3fT1@iwFP!00002|K*+AlG`{AK;QEfDL?0d_sjgs)|N_^>27b_mRGVnlbXuE zFV${e5@XUTLWanlmo7`9-3KH{f&fVU_388HMbqvMUAyfUe|-K|ypDIediS+Dd~2)! z9^1nv><-m)-B*X_E`;i3v+DPC6Z*xMQ{k8PHFQ;de0qrm`>JW1=ej$DRs8hac87DZ z_S-JrTMob6h5v*mmN-A!wN-m~jz4nxMipVgwNNbc?=L6LWBdn^@~_j^&ZW<=P1pAQ zX7@A{@%sAP;m=Kfi1({Eu=r4D_2m~q_s8XS(^P{j!`GcUmpJa)raA66k-hDzr(@l% zBGVtAC6CX4ym5u?=4rFshN1pWq~Ud_v!>q1Th=IJu6O$=*nV4ofBTW^v-PIy57lw^ zy6HDV-My8KC3eT{_N~BEXkWsi`(7P3FQGmD^z1p*!>=vsI)uhGtZvqf2k&dWmXe3H zG_p3{t$f3ricR-c?~7f1*t~{nUvE~`bF88EsjFYEwaep2#Ta|92Qk!&mhV?`xDx*T zN)2@?&d>BvJL+8jCSLJ#W!mB5{EIGL=u0J@X-@6%J1FVhPf(YpIzic6sLMY)LCISv z`7zYHRt{=YZR=$?^^sE>@4HPCs{Xkadic2o(<@u+uw1P~2w}A{jazG}f(!AwZiG-y zt?IR3OJ~=rHcRK4#>bLE3>WKDqjdGRDyl~lUalG>v=sLbuif=jH}Ux|h?m}3HQToN zI@EyVR{r#;8(P`v%e_m7k6PM=K7M*@m!XRIrO?o8hI+c(=wqql@Q;D+_EzS{7eZ2_ zN+GrSA*AnjuFp=x<@@NT-KBos?%xbw>w4RV%d;QvpZ-p8$CsRq-*kS`6vUH>X7XsH2LhIx0f)$92??q?eOPZy@Pi zuESJ1uD8@ZD!pczpP@@x?mtrB*6T%|1w}{+^X9h*eCc1zDip8`KnC zRZP}Z(H(z0#+2vsUiH1VDdS$QpvDwK>WN7eU`ewZ{NKzahIEL=p|WyV zEp@%#*f=+i#8E?4F{HAbN>!Q`RWJxujPd+wUJNQ1z8qHTW(oS}X>3X_JY-Buou}gq zgG+2xVoIsl}e|z#HMOGsaLZEywp?*<)Dzf%yf)O zrzMU{BS?wE(vkGuNWYCN_W!~P~zNf3@Ndv*8wTR-i!PiKOL01@e!nRB=*~h+$V~~`3>+J z*)08W7+P9?9EQ{@T2f)agejR~N@PpQ?HqZHj!)D}F_O>FO^v=cq{OJGxuw;pbWmf8 zA@#JRmO(kV!soU$L6LGh!>sSF4hrOWf{}dGqHNmn#7hIX`b>7-4h$*nA_7BdX-PR_ z0*D@@?di&uly<#?A*D@gQ(Q36DI>DWY{a3;f>^bnX7zWh*7Mx_9T-qk3aBLpwLtbA zSA4dm#0M4{n$O24qpVv>|>JDzU$hD+3r*CcB-S z7*JITsHFyl!p6quw>-t5N>L1|qDJ-i)|9p;Kl?Nt)RY2B-1oHvlF&v4jYTP-#5-iAC*hVps7lp|&s~(|?K_%~27*=W(upF{e-g(`-0o^w_wO7!4X0gGNGvpmKHLrd*RN++e=g`l`&_o^>^ zn(9;JI8C%O7$dm#^s1ju>kPF*3BZ^#;-8>V$&$~bQpvdFIt7_$OlN5GAV^Iyq{O}i z2c!;(QCq_wG@v|y6iCP*$ru(>jeY5oD?P*52SxgrGFj?WGHUrsl`i@mTIKn@A4#h0 zjzq+O0^V7Y!`011Dus|-syQ?YIJoI{`*%hvl}uW`PNj?fK&7I}NAgwxncX_mbfk1z zY9CTMDRnZExA(@MwEq7-X);~zS#l;ZxU`$P1mjRbhR$xij{p^=fJ$Oe0l203sHLP5 z#h_AWIiOfAb*EBbF5akUtSkmq`eIPYI~K72Tw0M`jspUeI>iBls;QgbLYit_hO=rq zDVHU&QY)*!4|huE@=I|?kdn85GAZ@&&*lA4rI^TY`cEgNp8eBFAJqCZuhWczL#a4C z&sVf!Xo(YtF!jnjH7an@s#e*ZIE4T$`@kuT;BJOaYJp^|am!QUK|dYT6hmr>NrAm$ zYScba%}XIA_f8>DE%A~cI>|(h+kI<_A(iEzQadLEaCEB@Il8CQNy+;^0+rf1EhMm4 z#PR$BDe0i96i`bIDgjWDpWT-ZDoOz*?@Yh|#K&-uxuw68iHNCE3~)bVA$ z6j1ucPbDR9d<`5A!EA=1h;&lwP((T@xeX1xkXcxk<7y8<%8Eg?~r{$x;I zOqB}iq2B;riBWngO93Ts{B%;{4kb14ex^|_NoqAsC#61V2ZKs{(2kHs0Xy#VJ7o_6 zYDxhm_VXxUGpm+qZ@VOU)hnAQ44W?a49CGBXcci>-)ZQ8F)QdFWJmlVdt70+l+S6@g0aLv%oL3+G&B zS*yvY@xnl7ZDnW!AV@_qq>`Ex3U>JnT}kPrT(V+NHFd3OXs*&aKMN2+ zN_=K729?_D>FvGaOKP6s{GU!rKK&z5$!C9H=cRTg!v#P(DZQqqk`kN$l5qySUm`!Z zHv*J+^^YM{#H8|GO(o~qS0L`k=EAKiF<8COQ)UA^5nX6(@~zO9q_Vr`Wip8DiB>C$*)J z68pKNaX_wghFfG1pbu*N4~_x79+-g~O%Q^Q+PggMXkwwG7EFGxeL#RJUJR)rCWVGQ zo?mbW0ZN^Uf14@oF!QF$Nj$T4zXAt-pig=9dVX<-SnGSxH^~l8opm;Uwmu3_~^M7+6-K3 z>DMdHon1;5R^B$UZdhXtTUn_kkAG^tVqw|nrCOED5jI4M|lHX6_PdIl##aj9?|d6@CowS$$+ z9vsRg@d|!^mBNt5m8eq^Rc2&td%w1i2sfhDWUNZ>e9Jh|Iw`kkol1uP-kkEuD**wW z8XrF#+1s5wIa$72o!UJF=I3{HRqfKbNQ3HHUAMS?TA+PtbK=t7HE#xy^tJ~2K`Bkw zpU$CA70s)8d9ddA)sx*Dc)@p9T(G~_19T6X5$tvapE~IkM*yMsI}E{sPlS&{Ar}6R zE+O|Wevf~mFYocF!CTGn>J{cXF`T_i$mbw-6qt_h8zC7R+yN>_&bAmlr+iz;usyCo zaUDMc1&?1qV@et*-*Ly1o|!^;d2C!xO~Ab^->YtK>`h&6Z>&vS+6w;%5PrjH(K}~| zXI}5>Qg_h*0LVozVuLFO;`%M!f=aJ(C!}_LJG%b#dzBjIha5;S52_^qHPDxI)>PN#Wk(|Z2%m+Sm<*!1i*~gtV~FFA?H{a!|Uk4iE6Ux(6jN1{T|V6&#L0LHZ3 z*7I3;KYl#3rL}<8wA|6Z6RT|KZyd`CK?}_({{OeB+HXzRxQyZ`z*wj{XAKE=L>8cU zZ)p+j*!4bdZ0bABGARSaXG@D@N32wkWD~D~z^n29hbdX0nr8z^cg#-(aW`Ga3V4rw z$65YO`#e(VxjB(Z!pHc$(Aib#R#aHVtR62pyPUzu*jLh4qS6TSbd3b0ILTV`iVu$a z@h5@bra0PiMt0=B!CBjYBbHL%R9S9MM@Ye>U|ox?qdn%Njq2Oe#f~O&LY;sCd$wZo z2OYw}#R%7Tmo;);i|R)$}HOxn@#9Vdk^C=uEWe6uHJyy{gr%xZ+H)zR%~l-N8V{}UpF<+DBh0e!UaWy_G!KQ_sSjQj)D`Kb|M_k8-%f1+Gi zDYvxjKj^IHmsh+Bnt#JReWUt!c30S>&|%yoT~z)V_~cnVbgUA!_Nph|H2k>95H=|& zT@aq&w=(|6N(D95F7i1w_8vU~8+B8fD@Kxe8%|fbE-E?LW&LSoOQ2vs!UFSnFF+%ipUvR&({!9_flB&wBdb zv~snNE7C@uNBM66pxsiI@I;xp={`$Z;YOGBW0?)`aCu4i^7(SCtN(fx2IbMWKWn$= znY0V9m;E;*^1HO}@c%6J|58Kpq7@nyd)yBc5sG(a_Mdr#KZ#UcYwvw1P#2KT?!jY1 z{pU}>c!dA;N?RF9hnUUXd&WE*;$O`(?p3J&P_M`?GT{ZTnFm8h9@%Jj2 zf2iwb7xnP~3(SH=1|F}&9}Zt#&ExJ>tWK)?WEDMe0Vz#_{d=zY<#RlNy{5rk;K%Eb zheM>R`KC5?~-3t0ib@j|5Dh{Bro`3E}0l#p8Zm@sDwWSMxuTHRk z)uX4b%)*#pr~3Rz^`h+kY+Kf(js|dawvq zpg(L`bi)q*_wdBVPJHT2jrAR82v9Wy=oA73g#hcGlRz;qvByzYJ=0#lhs)!eJ?Jw` zt=+(HrfRyIrxxM2x7XBB7y&eJ+^6M-+oL^i*u4*Ko}WF=&6IU_uPuqQhuiLB+ns9P z+^JK8d2HU?suehSZr#X{`pwZ&g9*43*bNJ&Kl;^eBqrk^g z#QIu~`Efkg=ig4ShY_X)Cne}FSD?8AO9m+YY7Let8o@7jJtW zKuHxFVq}O7!-o?v90r6#sP|F!4M>1&bu*dE|V_Gk{w;WYz7} zK?MC3$(V(WO(JVtzv%k9gl{0GL!M3$(0T9^1UOAL_qC1TW{#V?oXVh^EpKX<$<&iX zz-+$NLh<{BpU~YtE3r?CZ%V#kUg0!E2kajb1$=tKML_P(5~wXW%XP2=sbC)|m<%fx zYl2f61aw*3R2{;TpQ?`-JQ+GooLgM7R!{cmOq~sVT^^U(mq?Zxo*uiGfV}rQU7q{9 zCGtf-4Hv|1uO`bk&0Tc~Y^O}``(kyo@=OG820JHfK2F~#5x_Z>+Y9WE!5|OB7|CB>pj6@EKvUIIdc#rYE_w*@uYrR1!)P42~**Ret~r*0duQ@bL^B!kKiIV z;%eR8#EHAj$0u*K=qFdh*=d8Ram<1#I53919F^D;Y7c`f_x|dlEE4AnU4o>0RfH9( z>=ntuwN(X+n1Yv7;Q7|s?$Av2tt$Jbzb%*Td&weBP`fUFwfCl;Q#)f-`$-kLclB2v7K5gwQvI%l?PjflDoSw==yCi*BASz8aaT1xv zD`Aj6YW=7mUpRkL9NT%mJ41P z1_blp+Xu*X=;of`wDpB_t3tONJwk4^%>j#%*NiP)Wu<5YUkv?~pe*C*nXe~HHdt~e z-u1bFVryVo>*@nrr)_8@oFfhmxIi1$y6RNB*Z%yeo7b5o?2l%d}_|kxKrklCXr$S zDtEwbRf!Fs(R{t~w-3g)VY-(j*zR+7x-ywZOtkvdjSYA9h-`LTFo`gD~X@03)aDTNu zwWI8Xf;q_VVQ>2h+OUfINlV`kx9ut#;b^V}UwiRYJP5w`SiWu>x^#hYhTiV{`aap& zX@a&)@~yJFLc3iB&X$1YQ?k=uqhIpz8OE)s-!7uJvvXs8DnB_|_TXyr?`mBeIkHve z+3{8TIKzgEGj%ZHcJ<6MBcXTzG9U881$XR8o2eJRcj#haPscF+cfFg&dWdAZi$*;& z8IQ%Cap{zyUTH3%{Sh#8lY@L@CeHm+ji<9imXG%+FrvI>dK;P_KJziQPlkssf5}p9 zG06952zFi{7-&OM{kr&W)HGdLb-PLLb3pu7K{S1C)9$Ew~7-=zsZ(K@_(?wGk)5s`(1haG0CnAlN~lL$kNYg64VoWl}qEr z`p5Qvj89ap7LGBu>hnd<586FDy<%j>5yoHg=(mOlTsM%IMELP)UWfinDYckT^T1Gjd^}q$!#z znc3q~o-WeO*TnpkveUAw(spV~|BeZ6u6%fS4aZ99Z3ghsrb$GtCp#r`sg@k>H77We z-Q^l#sz|vQV?Sj7Hwe@-38D z+?PZk3>@3uI@ug}m9kpb@7L}jNXs(VtS7XT>cguq(bv-{2J0P6ThK1@NF`tzu&wnF z=2p{-c;Z1zDVmkyL}`w%>1o5E61@Utw$aGeIiD=_%810P@1CpQ1ry7nR>~D7r}Q>c z7`+giu}(`hl^evv+?iVE;@S~8Trny?>l+zC_)I5*ABX-zKAOyd-hBM)>@#J1cw^cx z+#8Zs@kW!}F?55;oy;l9xR#2JV+T@$#E3GLy!%KUxL02K{Qa96Hlm zJ~$@H+(Y>1gHm+}^e@ac1OO=o4nk_DZ^zL*K65a2PfuUO=X;J&i4{z=1u+!_TbKdE z8N;7X>XNRkRAl?0P_TsGA~-5`CUUaW)Ea7`zSYczt}Jbt^tZugK$6>Q<9(bSBK3zV zl=hQ5^^Z$9>3fAD;@N_-H(bHRomogk8u(7H&yqE@qzU5qP|_j z=tNmSua<SlggGfY06+XY01Jgz4hsQxgZ)x znyxZsbeAY8*W75x+gvoCpv*u3GJ&%>e!<_8u^5`yV8%yPKH!B2`m52cZ;VmLKEJ}$ z1=}#ykr0eGR(C$Qzis#$u4LaHA^7+r@Rc0;-dI}zK>&trf?rWMS}|OT!iphaj^w{16{Sm&{YaCc z;6leoXZHgyKw)LcBilZJPb^G{Qp)wz!y6CFq%?g9N&nZRG-r{3m3mU7fF&sJUZ*dX%9G~zbgK6^=ke9gAn_hTb6TBZ!2dtWY?t0^ST(%J_oF7fq{7D|0 zs{0GoAj3TohJyb23sZ?0hFveSMJ!CP{O0_c$jOT-Yn81^Dw9-a13vhmA3{BuLLRU_ z$-nA;PvuvN$Syha$vZ@ho{m=uPE3`RUgMs!J{__tx`bF%OD!BUigf5B5euoFnUoP; zU(?Qb&3n9mkOT`wq(endio9o^-cmiVk|5RZGc}uLcElK3SM?iHR_Rds09BS}1BSg( z&N89FtsYH0lzLi?(pX$GV+{GuYS>lt<@cp72I052_eehlh z(vz^B3H4;13kzS#ZAr08jvqSiKP6J(g3%pNwf4*&n;=z zD5PRzLtnCSFACI;K~qM;M8e3vz3eCTcR*)SX-Mg!W2gtuo%LzqgqE4p%S&VBMTO-1 z#zGz~tE>{p4we4U4>_15rM@WcowNRwDEK%^@SUKXmN3V0OdBaz8>>h;Ehd7*o?X4= zg^%`t@VY#MLPtf~t8k0j6dDb=E|r&TA(B9e^_S@Prmv8PJ!F1FSkdy40T|vZ@4vkK ze$$nhtj@r}q%7Rom3;gz784~;%xrVOmG5Pq+70avQ!l-Ai@C27w-WxF_oT%m$+nO% zUp`-S384}RMgQz`q)Ux1Lmq{RSfiK`mgZD>hAldUoMAb@F0)jLbqY^q*_Rn0xz;G1 zrXN}#LR++0t9}{Hqg?K`oBx}_0DbEC>`WNL=(6WQS)Z+P4^0NYB6jT(UDelbMVk32 z456)W?==vccnUZ1;h{yW$Cq{GC=o9eLmia*a|s&1qKKZQhc>#_a=yZ5x=QK}l=fe7hPq!MZ3=73t4+7`?Pl39g=rVRzUM8;hu%T{7A zj4ni&fo3iZ?YmMf?dw25hD13>jAm)^V)As!p~Dckb3t#_O8gLa2~6_}E&3-K+Wp1| z1RWTMD@JpL9x{nT+?Tp|E0N3_ulRB)>-CFc0n_OlOq7>BECLF*o6+e8uYQBZ2!qda z8`BlZlXKX%7`FAsZgWa7eC5QbK=|iqa%v&^35q{`nZ z#oiL{L~MleJNj%UGWiTlyBY;zovN7w^gl-4Y2IvLjO(R{EU4U<&4Q;eb5fP!^iTC7 zIbyUO*t!W1KAfb>|N2sFLzXzHB2~swMkh7$QnFSF4XpuHvQ}D%9jJaWD$V?YA<)pu z@`dHx`Wt{>QKjcX^fh^0#E4P<8Dw&9dr4_lS2gwz=+`*oEKZ!W+!C>TMFQSMFK}Ty zlRFu6hOp0fxd*vE(Q+7N{jMcqR!ZzN$!$9|cJQS#BXwtRM~$Ui2mWxJ{=%_>XbM64 zlq@+)9qzF6TI6S9$y55v6$wWD^NRUEB$Jv^B0pdrcQnKSu5R-p*kc^YOj4kjnYe6E z6#1=c6ONA!;fJ}caE=VMuZ4Kk+3)@WrK*BDA2#IIHD3iB=I;eZ4Sghki_eh2Hd#4fzLoS8m0F6e?`r{BflCjtU+CBfPm5 zp(3J9Cl*w7N%AL6Ovm*i9xJYtg9jrdDm;0T?`qZ}`2gy&Q%N=~; zE9WEQ-z}v1mXp&975Rt;Qws`Bxj3VSihvt2Q^9paNLBBbp9s_kkrcOU#Ax{HdRo~0 z)_GUEc0|6#(fIn7#q~?LGdZ|sC}AgECEF^FI=c^b%-DN!>AYSvr@rC33d4YqU?Cl6 zV%$$Yh0M)Ho_-i7Li#|VfM*g-HJo!jHZEx$ntZ`xSQX5=tNd%zFcu|=Z#N8irA&XO zk90lHUyJ3F*FedI z)Rc5g$X|UeK|Wq06>%St$O;PKk7MV6JV(}^d0-BDGc8}eSq7vXa9dfuNgU5M;{QZ>Hg_T%F>DG zQwq`F4p*&LAF0td2JMZ8vXONt3s57i+$BocU!!9f zG(v0S-`LNqv`5wo6Mg!8?E) zI7a?1l~$(!*$q1mfKIKP7L+i)&b(44YX3vrHy`-z0Wyk=QapO%n_3^_3NZn>5$&i?IgZtI}9s%I7q%f4TL9!WZgSY+jMxK#H# z2pCfT?nj*|PfD-hRaFu(n^kd~#CHri^6s62)qpg}?lOBUSa<30_k0X5CoIt|A_@B` z^xYXt$&G<>z+!%aa~3UXz;I^GLB``yil`D&Yilxrm`o4<)7ZW03!AyKI8Z256}ru6C+ z=$`J9Nt2!mSK|VT`CYsQ-wv|GUDtW^hehFMKaRRUSp&bsw!3FeF=p$U+C1?_Qr$@> zaw4gyJ{taCYi*xW8`fzQ1?5XLDO8oFl*^%ZW zJO;$~1IF`%5z4>qpDg7JP-XnBUDi*<#`JjE{P5?{HcI=5Bms7o4#)q1DF5oW_^bb{hdHPtkgD&$G&{P z{|5U^X9S|oREPU!INnp6o!W+rv)6O8V@$4zxUs-mSASFgAc4j;YoLI)E6dLhrSt_l zajB;6h+$<=hBo*0+(9X3XxW=XRLJeqguxxcp&I5hIS2dYiXcBV9fD8u z{wcauy)YbtJ9LC#-yzrr;m-Q?reqo&=(&p5itJX@cY{ zkkZvpV%ckE)88iu51V*T)T9gcs^EHmbh2p~FRiC<(K0cqc@)Zt5ig=GW_0R4D%Z<* zKB!kFUx(8&$_QzJjbs4~GPoWIK7MvU5LKMy zWw-S1ZJ^X0p-1^#cyY)ZR|tYpc4pMe6uw>}yYWIeRg{x0 zz7s|y>;X_pt8 zSQkPjR29CYrmTfVBm=7&iigIg`g9xevsaM&7zLYONla8t!Uc+ouu%> z^R-_komxj*hgq@-HOTzkjF8iDW1rP2C#Sty$IoGf+4FEGvx{qT*}Zxb%nEnsEebf8XQUwXA;)0Gn`5qN zc#yd+f(f!8_piAqpBPKU>}VzvOL0;ZkK?~f0~um!)Qw#`RcWlqeO(HRTL!YhXM8|Z zQ5jB~CT;`)5rJ~=IZyA)8p?T+JvCA-^~Uaeb>b>AK;B=3E;&%{l$rZX6&~XUiFbtE zLM%b33a1Zc4G2Q5%2~xJx2w19c7Jzj40HEp6;HOM4i!T1H2jbq-D}i2K4DJ@lEXCU z@^MmsKUA?G2tm|+t;#|3$lxdcsA-7L@AaVM7+QJ`4J^W^|PI`u=|D zW1j>2Mr+2|TZdhk86MuVjvhh!pS7XPzR^-#8^U>EsQmbg0BrMN`_Am7=sEk03R@xo zw+^4_XWgIRVaH4=J^r%oC&$(+1xyQ( zxx=W4XVwtf)`%Wq9g1lo{WB2Bw8IcIpD00YZsy#HHKBQ`Bn>5)?2yU44UTl+Vtj2t zM%>skkSe>5n~c&c{}U*NTRB1bmxBEyWj*+thq420NDKuvo7&>X$J6*nE0<6ObvjZX zO>9jF$%J|&RshvutO52Hj-zvmuTyi6JH~ryPp)uG^HA4=PZIstuahwUeEiZymHgn_ z7jQhN8yilI#%EnknQ2;(_PcN)#`pH7h*M&kK(oW5dY^}xcKyp&#^IW z73?NS*S~V);&jvA1`VL9dlIjO&#xSv^$Q^WbMJZ#;U}9g+{s*|+6*KI#(o3za}{>L zb|L!zMB_)~M}IcJV2L-_;ms$|i(0qPeR9;804Aj8>>WmAq}nM{6y-IV`uk z`yYK!Ae9gSUNqS5lk2rQ(~u5~G};jLFP^Eg43z?HR9oZKiCXjQE&MklQZT>EPYC(G z06F37y2{U;ia>`_5hCk0n?mXYZ5!BQe5yD)LXmRNX@q#zhBNlHECtXj^g;GdS2LfXC zHQbsYXih2TSKdPDOo+105OHNjR8JFzB{pn#0vr_<-ML1!U|RK7=6Q{E|I5i36~3#7 zr5*m}>*H?P_!DJ%ycfk-cbJiM+QVml6bvuH>YpOmaffPc*HjPF`J8hU9N!ztpmx{f ze1+)FmM-5=4|NI7S{FF3WR-__#|matmFq_};DztU>_pHOe_U9VW%Nva1s zlw`p)d#_T^CR@VTf?NmW`s4g92J`?$VK;KR)0Bchyy=vAPwAHx+cjTe3;7Q{zm7N3 z!&hW2Z>_Ewh;q19FDnv>8q_M%0i(2jI|SF_ig)qjEDbUL=Msw^d}8Qv(fyJ)_zOp1 z3%%DeWW6N70X0}Dn=mSl{x0>$Ix=rp8_ytoMv?Rm2Ou*XPgBU0(Nt_cVP>1GO3g;% zOp=P53hc_Dj=51RSyIaZEUs}0j-}!0rTEXYr4j|v%S0v`9zB$Z)-9;mOERs?#d81A zwF}Itto%ADs^$nMmgO>)U47n4lS9jQPS3ZJ0@#X)K;4j`U0_*KqPUNiyN@>?pkBI7 zoGPB^n58P;$#(ZzxD~1CHTV3xx(P@rtzHjk9zY(jnXVvc|2BIjfbTUIy ztbIdgfRA9iE#B{Wn}sw?^abDRonX$d-dM*@NJ^D}uq2K{ zRSI0zr%-;kj;ND%3N$&b+P1B^S)@fU(8#=RNJ{+QN<{LzIpOLg8TrS{n| z_+hCXJ?L<*s}v*xFbxJ8>g|1+ zu`AibMD2~A&p%FsZF#GLQhM`kUCB)s+Tw$tE!$xd$e@L&qTU&?IxRWbH+90|wotXz66(6btO@-7o^L zm<%?iMz2!WpC!jsyqW4QSGA~6KjU&XNis#Op4_?zxOsGn`2__8eG}{K>J&>60zPlV zxLJeW)BuY_$KujZ_1&5}yYXr_uRx{lb=nU#Iu9W*U(oi5~jF=VM_60iU>}J^}I6zN|CXY3HK**ZO z(;e>=>4}WN;f{OHLzz(aqPm;j=O`Kh7Y`+gsQ>7rs9C-lns=IJssx%Q$5vJR z-GVCriKfT;qJQWhPydn2oC9JoDCc0{mc^_!zT0n=v~V|1?c&TmecHF70O55KIn&LW z^Su%MdScZ;;^wi%W$%{NBD$^ArrPJZdKDj7$Th!bgt=Mr{c4j7_TcwB|7p(!{D6Re L+QSyp0U-T=deadline: + return None + r=vector.copy() + w={role:Q(1)} + reduce_row(r,basis,w,-1) + if r: + k=min(r) + d=r[k] + basis[k]=({i:a/d for i,a in r.items()},{i:a/d for i,a in w.items()}) + residual=target.copy() + weights={} + reduce_row(residual,basis,weights,1) + rebuilt={} + for role,a in weights.items(): + axpy(rebuilt,bank[role],a) + axpy(rebuilt,residual,Q(1)) + assert rebuilt==target + return dict(rank=len(basis), residual={i:str(v) for i,v in residual.items()}, + matching_coefficients={i:str(v) for i,v in weights.items()} if not residual else None) + + +def snapshot(word,requested,targets,deadline): + public=word["public"] + active=word["initial"]+[None]*word["owned_fields"] + rows=[{i:Q(1)} for i in range(public)]+[None]*word["owned_fields"] + banks,values={},{} + stop=max(requested.keys()|targets.keys()) + for t,e in enumerate(word["program"]): + if t%64==0 and monotonic()>=deadline: + break + for chart,r in requested.get(t,()): + banks[t,chart,r]={i:rows[i].copy() for i in range(len(active)) if i!=r and active[i]==chart and rows[i]} + for s in targets.get(t,()): + assert active[s] is not None + values[t,s]=rows[s].copy() + if t==stop: + break + op,r,*args=e + if op=="MOVE": + assert active[r]==args[0] and args[2]==(r>=public) + active[r]=args[1] + elif op=="INIT": + assert active[r] is None and rows[r] is None and r>=public + active[r]=args[0] + rows[r]={} + elif op=="CLEAR": + assert active[r]==args[0] and rows[r] is not None and r>=public + active[r]=rows[r]=None + elif op=="SCALE": + assert active[r]==args[1] and scalar(args[0]) + rows[r]={i:v*scalar(args[0]) for i,v in rows[r].items()} + else: + s,k,chart=args + assert active[r]==active[s]==chart and r!=s and op in ("ADD","COPY") + if op=="COPY": + assert r>=public and not rows[r] + axpy(rows[r],rows[s],scalar(k)) + return banks,values + + +def controls(): + d=monotonic()+1 + a,b={0:Q(1),1:Q(1)},{1:Q(2)} + assert solve({0:Q(3)}, {7:a,8:b},d)["matching_coefficients"]=={7:"3",8:"-3/2"} + assert solve({2:Q(1)}, {7:a,8:b},d)["residual"]=={2:"1"} + assert solve({0:Q(3)}, {7:{0:Q(1),2:Q(1)},8:b},d)["residual"]=={2:"-3"} + assert solve({}, {7:a},d)["matching_coefficients"]=={} + return ["two-donor span","separating coordinate","changed donor row","zero source"] + + +def main(): + root=Path(sys.argv[1]) + price=checked(root/"price/PRICE.json",PRICE) + word=checked(root/"inputs/7334-WORD.json.gz",WORD,True) + assert price["head"]==HEAD and price["word_sha256"]==WORD + moves=word["program"] + req,targets=defaultdict(set),defaultdict(set) + bykey={} + for p in price["candidates"]: + r,s=p["owner"],p["peer"] + f,g=p["move_clocks"] + a,b,c=p["chart_path"] + t,add=p["literal_ADD"] + assert add[:2]==[r,s] and moves[t]==["ADD",*add] and f=deadline or (t,s) not in values or (cut,chart,r) not in banks: + pending.append(key) + continue + bank=banks[cut,chart,r] + source=values[t,s] + result=solve(source,bank,deadline) + if result is None: + pending.append(key) + continue + output.append(dict(key=key,source=[t,s],target_chart=chart,bank_roles=sorted(bank), + source_nnz=len(source),**result, + decision="exact span survivor" if result["matching_coefficients"] is not None else "outside donor span")) + print(json.dumps(dict(head=HEAD,price_sha256=PRICE,word_sha256=WORD,status="CAPPED" if pending else "EXHAUSTED", + case_cap=33,seconds_cap=18,controls=checks,counts=Counter(x["decision"] for x in output), + decisions=output,unvisited=pending,survivors=[x["key"] for x in output if x["matching_coefficients"] is not None]), + indent=2,sort_keys=True)) + + +if __name__=="__main__": + main() diff --git a/research/p104-two-paid-subdivision-bank-bound/inputs/paired_support.py b/research/p104-two-paid-subdivision-bank-bound/inputs/paired_support.py new file mode 100644 index 0000000000..46180f7b49 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/inputs/paired_support.py @@ -0,0 +1,356 @@ +"""Exact pure prefix/suffix and unit pairing for the #7334 chart-207 split.""" +from argparse import ArgumentParser +from collections import defaultdict +from fractions import Fraction as Q +from functools import cache +from gzip import decompress +from hashlib import sha256 +from json import dumps, loads +from pathlib import Path +from signal import SIGALRM, alarm, signal +from time import monotonic + +HEAD = 'aaeec8c0acf01e99a5f331ef363a698d9c084ace' +WORD = '4b9fd1187b34ed97c3ac0c760d73531735a5d0ebc5b4d4ab4377160b20d9bb2a' +ADMISSION = 'c95300e9bca27e44a25c82d794f88cbf70757c142806b0e4c590ea29feb81a13' +PROTECTED = {319,863,1355,1568} +CAP = 128 + + +class Capped(Exception): + pass + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def check_time(deadline): + if monotonic() >= deadline: + raise Capped + + +def pinned(path, digest): + raw = path.read_bytes() + need(sha256(raw).hexdigest() == digest, f'Changed input {path.name}') + return raw + + +def unique(pairs): + doc = dict(pairs) + need(len(doc) == len(pairs), 'Duplicate receipt key') + return doc + + +def read(raw): + return loads(raw,object_pairs_hook=unique) + + +@cache +def rational(value): + return Q(value) + + +def axpy(dst, src, factor): + for j,v in src.items(): + value = dst.get(j,0) + factor*v + if value: + dst[j] = value + else: + dst.pop(j,None) + + +def dot(a,b): + return sum(v*b.get(j,0) for j,v in a.items()) + + +def compose(weights, rows): + vector = {} + for role, coefficient in weights.items(): + axpy(vector,rows[role],coefficient) + return vector + + +def pure_kernel(rows, allowed, deadline): + pivots, pure = {}, [] + for role,row in rows.items(): + check_time(deadline) + exterior = {j:v for j,v in row.items() if j not in allowed} + coeff = {role:Q(1)} + while exterior: + j = min(exterior) + if j not in pivots: + lead = exterior[j] + pivots[j] = ({k:v/lead for k,v in exterior.items()}, + {k:v/lead for k,v in coeff.items()}) + break + other, op = pivots[j] + factor = -exterior[j] + axpy(exterior,other,factor) + axpy(coeff,op,factor) + else: + projection = compose(coeff,rows) + assert projection.keys() <= allowed + pure.append((coeff,projection)) + assert len(pivots)+len(pure) == len(rows) + return sorted(pivots), pure + + +def solve_bilinear(B,D,deadline): + """Find x,y with xBy=1 and xDy=0, or prove no such rational pair.""" + n = len(B) + def trial(x): + bx,dx = compose(x,B),compose(x,D) + if not bx: + return None + if not dx: + j = min(bx) + return x,{j:1/bx[j]} + pivot = min(dx) + for j in sorted(bx.keys() | dx.keys()): + value = bx.get(j,0)*dx[pivot]-bx.get(pivot,0)*dx.get(j,0) + if value: + y = {j:dx[pivot]/value} + if dx.get(j,0): + y[pivot] = -dx[j]/value + assert dot(bx,y) == 1 and dot(dx,y) == 0 + return x,y + return None + for i in range(n): + check_time(deadline) + hit = trial({i:Q(1)}) + if hit: + return hit + # Each wedge coordinate is a homogeneous quadratic in x. Basis vectors + # and pair sums determine all coefficients over Q. + for i in range(n): + check_time(deadline) + for j in range(i+1,n): + hit = trial({i:Q(1),j:Q(1)}) + if hit: + return hit + # All wedges vanish. Only xD=0 but xB!=0 can give a pair. + _, kernel = pure_kernel(dict(enumerate(D)),set(),deadline) + for x,_ in kernel: + hit = trial(x) + if hit: + return hit + return None + + +def paired(prefix,suffix,deadline): + B,D = [],[] + for a,c in prefix: + check_time(deadline) + dot_boundary = {j:v for j,(_,d) in enumerate(suffix) if (v:=dot(c,d))} + dot_difference = {j:v for j,(b,_) in enumerate(suffix) if (v:=dot(a,b)-dot_boundary.get(j,0))} + B.append(dot_boundary); D.append(dot_difference) + hit = solve_bilinear(B,D,deadline) + if hit is None: + return None + x,y = hit + a,c = (compose(x,[pair[i] for pair in prefix]) for i in (0,1)) + b,d = (compose(y,[pair[i] for pair in suffix]) for i in (0,1)) + assert dot(a,b)==dot(c,d)==1 + return dict(a=a,b=b,c=c,d=d) + + +def initial_groups(word): + n = word['public'] + main = set(word['live']) | {r+112 for r in word['live']} + main.update(word['hosted']['X2']); main.update(word['hosted']['Y2']) + cohort = {r for r in range(n) if r not in main and (word['initial'][r],word['final'][r])==(3,127)} + return cohort-PROTECTED,cohort-PROTECTED + + +def prefix_rows(word, cuts, deadline): + n = word['public']; rows = [{r:Q(1)} for r in range(n)]+[None]*word['owned_fields'] + charts = word['initial']+[None]*word['owned_fields'] + banks, seen = {}, 0 + try: + for clock,event in enumerate(word['program']): + if clock%64 == 0 or clock in cuts: + check_time(deadline) + if clock in cuts: + banks[clock] = {r:rows[r].copy() for r in range(n) if charts[r]==207} + if clock >= max(cuts): + break + op,dst,*args = event + if op == 'MOVE': + old,new,owned = args + assert charts[dst] == old and owned==(dst>=n) + charts[dst]=new + elif op == 'INIT': + assert dst>=n and rows[dst] is None + rows[dst],charts[dst]={},args[0] + elif op == 'CLEAR': + assert dst>=n and charts[dst]==args[0] + rows[dst]=charts[dst]=None + elif op == 'SCALE': + assert charts[dst]==args[1] + rows[dst]={j:rational(args[0])*v for j,v in rows[dst].items()} + else: + src,q,chart=args + assert charts[dst]==charts[src]==chart and src!=dst and op in {'ADD','COPY'} + if op=='COPY': + assert dst>=n and not rows[dst], 'Dirty COPY' + axpy(rows[dst],rows[src],rational(q)) + seen=clock+1 + except Capped: + pass + return banks,seen + + +def suffix_rows(word,banks,deadline): + n=word['public']; cols=[{r:Q(1)} for r in range(n)]+[{} for _ in range(word['owned_fields'])] + snapshots,seen={},0 + try: + for clock in range(len(word['program']),min(banks)-1,-1): + if clock%64==0 or clock in banks: + check_time(deadline) + if clock in banks: + snapshots[clock]={r:cols[r].copy() for r in banks[clock]} + if clock==min(banks): + break + op,dst,*args=word['program'][clock-1] + if op in {'ADD','COPY'}: + src,q,_=args + axpy(cols[src],cols[dst],rational(q)) + if op=='COPY': + cols[dst]={} + elif op=='SCALE': + cols[dst]={j:rational(args[0])*v for j,v in cols[dst].items()} + elif op in {'INIT','CLEAR'}: + cols[dst]={} + else: + assert op=='MOVE' + seen+=1 + except Capped: + pass + return snapshots,seen + + +def geometry_keys(geometry): + if 'representative_keys' in geometry: + raw=geometry['representative_keys'] + elif 'keys' in geometry: + raw=geometry['keys'] + else: + raw=[(row['cut'],row['chart'],pivot) for row in geometry['segments'] for pivot in row['pivots']] + result=[tuple(row) if not isinstance(row,dict) else (row['cut'],row['chart'],row['pivot']) for row in raw] + need(len(result)==len(set(result)) and all(len(row)==3 and row[1]==207 and 44588<=row[0]<=44628 for row in result),'Wrong geometry key inventory') + return result + + +def audit(word,geometry,deadline): + all_keys=geometry_keys(geometry) + if not all_keys: + return dict(status='empty_geometry',selected=0,decisions=[],unresolved=[]) + keys=all_keys[:CAP] + cohort,pivots=initial_groups(word) + if 'endpoint_cohort' in geometry: + assert sorted(cohort)==geometry['endpoint_cohort'] + overflow=[tuple(key) for key in geometry.get('unvisited_keys',())] + assert len(overflow)==len(set(overflow)) and not set(overflow).intersection(all_keys) + bank_plan=defaultdict(list) + for cut,chart,pivot in keys: + need(pivot in pivots,'Protected or non-helper pivot') + bank_plan[cut].append(pivot) + banks,forward=prefix_rows(word,bank_plan,deadline) + decisions,opens={}, {} + try: + for cut,bank in banks.items(): + need(set(bank_plan[cut])<=bank.keys(),'Pivot absent from literal chart bank') + exterior,pure=pure_kernel(bank,cohort,deadline) + if any(c for _,c in pure): + opens[cut]=(exterior,pure) + else: + decisions[cut]=dict(status='no_nonzero_pure_prefix',public_bank=list(bank), + prefix_exterior_pivots=exterior,prefix_nullity=len(pure)) + except Capped: + pass + backward=0 + if opens: + snapshots,backward=suffix_rows(word,{c:banks[c] for c in opens},deadline) + try: + for cut,bank in snapshots.items(): + exterior,pure=pure_kernel(bank,cohort,deadline) + pre_rank,pre=opens[cut] + row=dict(public_bank=list(bank),prefix_exterior_pivots=pre_rank, + suffix_exterior_pivots=exterior,prefix_nullity=len(pre),suffix_nullity=len(pure)) + if not any(d for _,d in pure): + decisions[cut]=row|dict(status='no_nonzero_pure_suffix') + continue + witness=paired(pre,pure,deadline) + if witness is None: + decisions[cut]=row|dict(status='no_unit_pairing') + continue + assert compose(witness['a'],banks[cut])==witness['c'] + assert compose(witness['b'],bank)==witness['d'] + decisions[cut]=row|dict(status='exact_support_only',witness={k:{j:str(v) for j,v in value.items()} for k,value in witness.items()}) + except Capped: + pass + rows=[dict(key=key,**decisions[key[0]]) for key in keys if key[0] in decisions] + unresolved=[key for key in all_keys if key[0] not in decisions or key not in keys] + overflow + return dict(status='CAPPED' if unresolved else 'EXHAUSTED',selected=len(keys), + eligible_cohort=sorted(cohort),prefix_events=forward,suffix_events=backward, + decisions=rows,unresolved=unresolved,support_only=[row['key'] for row in rows if row['status']=='exact_support_only']) + + +def controls(): + inf=float('inf') + _,a=pure_kernel({4:{0:Q(1),2:Q(1)},5:{2:Q(1)}},{0},inf) + _,b=pure_kernel({4:{0:Q(1)},5:{3:Q(1)}},{0},inf) + hit=paired(a,b,inf) + assert hit and hit['a'][4] == -hit['a'][5] != 0 + assert dot(hit['a'],hit['b']) == dot(hit['c'],hit['d']) == 1 + _,wrong=pure_kernel({4:{0:Q(1),3:Q(1)},5:{3:Q(1)}},{0},inf) + assert paired(a,wrong,inf) is None + assert solve_bilinear([{0:Q(1)},{1:Q(1)}],[{0:Q(1)},{1:Q(2)}],inf)[0]=={0:Q(1),1:Q(1)} + assert solve_bilinear([{0:Q(1)},{0:Q(2)}],[{0:Q(1)},{0:Q(1)}],inf) is not None + return ['signed_unit_pair','unequal_pairing_rejected','quadratic_cross_term','left_kernel_D'] + + +def main(): + p=ArgumentParser(description=__doc__) + p.add_argument('--controls-only',action='store_true') + for key in ('word','price','geometry','admission'): + p.add_argument('--'+key,type=Path) + p.add_argument('--price-sha'); p.add_argument('--geometry-sha') + a=p.parse_args() + assert __debug__ + checks=controls() + if a.controls_only: + print(dumps(dict(controls=checks),indent=2,sort_keys=True)); return + need(all((a.word,a.price,a.geometry,a.admission,a.price_sha,a.geometry_sha)),'Sealed geometry and price are required') + price=read(pinned(a.price,a.price_sha)); geom=read(pinned(a.geometry,a.geometry_sha)) + admission=read(pinned(a.admission,ADMISSION)) + assert price['head']==admission['head']==HEAD and admission['exit']==0 + assert price['productive_delta']=={'1':17,'8':17,'9':-17} and not price['paid_delta'] + assert admission['inputs']['WORD.json.gz']==WORD + if 'price_sha256' in geom: + assert geom['price_sha256']==a.price_sha + if 'word_sha256' in geom: + assert geom['word_sha256']==WORD + keys=geometry_keys(geom) + if keys: + def watchdog(*_): + raise TimeoutError('hard support watchdog') + signal(SIGALRM,watchdog) + alarm(35) + try: + deadline=monotonic()+32 + result=audit(read(decompress(pinned(a.word,WORD))),geom,deadline) + finally: + alarm(0) + else: + result=dict(status='empty_geometry',selected=0,decisions=[],unresolved=[]) + result.update(head=HEAD,word_sha256=WORD,admission_sha256=ADMISSION,price_sha256=a.price_sha, + geometry_sha256=a.geometry_sha,cap=CAP,seconds_cap=35,controls=checks, + unvisited_credit_upper=price['one_edit_optimistic_credit'][1]) + print(dumps(result,indent=2,sort_keys=True)) + + +if __name__=='__main__': + main() diff --git a/research/p104-two-paid-subdivision-bank-bound/inputs/pricing.py b/research/p104-two-paid-subdivision-bank-bound/inputs/pricing.py new file mode 100644 index 0000000000..40ec194017 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/inputs/pricing.py @@ -0,0 +1,82 @@ +"""Directed interval arithmetic and the retained signed BIT invoice.""" +from collections import Counter +from fractions import Fraction +from functools import cache + +TARGET = "10018846261809/2500000000000000" +SCALE = 10**49 + + +def rounded(x, upper): + scaled = SCALE*x + if upper: + return Fraction(-((-scaled.numerator) // scaled.denominator), SCALE) + return Fraction(scaled.numerator // scaled.denominator, SCALE) + + +@cache +def log_bounds(x): + z = (x-1)/(x+1) + terms = 60 + exact_partial = 2*sum(z**(2*i+1)/(2*i+1) for i in range(terms)) + tail = 2*z**(2*terms+1)/((2*terms+1)*(1-z*z)) + return rounded(exact_partial, False), rounded(exact_partial+tail, True) + + +@cache +def power_bounds(rank, k): + binary = 2**(rank.bit_length()-1) + shift = binary.bit_length()-1 + l2, u2 = log_bounds(Fraction(2)) + lo, hi = log_bounds(Fraction(rank, binary)) + lo, hi = k*(lo+shift*l2), k*(hi+shift*u2) + assert 0 <= lo <= hi < 1 + + def exponential(z, terms): + total = term = Fraction(1) + for i in range(1, terms+1): + term *= -z/i + total += term + return total + + return rounded(rank*exponential(hi, 35), False), rounded(rank*exponential(lo, 34), True) + + +def cost(hist, k): + lower = upper = Fraction(0) + for r, n in hist.items(): + a, b = (n*x for x in power_bounds(r, k)) + lower += min(a, b) + upper += max(a, b) + return lower, upper + + +def profile(invoice, native, word, ranks): + copies = invoice["native_calls"] + assert copies == len(invoice["native_instances"]) == 36 + assert {tuple((r["stage"], r["copy"])) for r in invoice["native_instances"]} == { + (stage, which) for stage in range(1, 19) for which in (0, 1) + } + assert all(r["ports"] == 111 for r in invoice["native_instances"]) + assert native == Counter({int(r): n for r, n in invoice["native_paid"].items()}) + assert sum(native.values()) == 2871 + caller_paid = {1: 444, **{r: 444 for r in range(7, 57, 7)}} + assert invoice["event_counts"]["QUERY"]*111 == caller_paid[1] + assert invoice["event_counts"]["IDLE_ONE"]*111 == 8*444 + full_paid = Counter({r: copies*n for r, n in native.items()}) + full_paid.update(caller_paid) + + helpers = Counter(ranks[word["final"][j]]-ranks[word["start"][j]] + for j in range(222, word["public"])) + assert helpers == Counter({int(r): n for r, n in invoice["native_helpers"].items()}) + caller_targets = {**{r: 444 for r in range(8, 65, 7)}, 127: 222} + full_targets = Counter({r: copies*n for r, n in helpers.items()}) + full_targets.update(caller_targets) + assert full_paid == Counter({int(r): n for r, n in invoice["paid"].items()}) + assert full_targets == Counter({int(r): n for r, n in invoice["targets"].items()}) + assert sum(full_paid.values()) == invoice["paid_jobs"] + assert sum(full_targets.values()) == invoice["productive_fields"] + signed = full_targets.copy() + signed.subtract(full_paid) + assert sum(r*n for r, n in signed.items()) == invoice["rank_surplus"] + return signed, copies diff --git a/research/p104-two-paid-subdivision-bank-bound/inputs/second_prime.py b/research/p104-two-paid-subdivision-bank-bound/inputs/second_prime.py new file mode 100644 index 0000000000..0be5407fe6 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/inputs/second_prime.py @@ -0,0 +1,339 @@ +"""Independently verify R97's 310 frozen R96 bank keys modulo 65537.""" + +from argparse import ArgumentParser +from collections import Counter, defaultdict +from fractions import Fraction +from functools import cache +from gzip import decompress +from hashlib import sha256 +from json import dumps, loads +from math import isqrt +from pathlib import Path +from signal import SIGALRM, alarm, signal +from time import monotonic +import sys + +ROOT = Path(__file__).resolve().parent +HEAD = "aaeec8c0acf01e99a5f331ef363a698d9c084ace" +CALLER = "07a76c5e2738882c0cb322278e56f6cae3c9885d" +WORD = "4b9fd1187b34ed97c3ac0c760d73531735a5d0ebc5b4d4ab4377160b20d9bb2a" +PAYLOAD = "9aa8d6b054ba7eb2289d052c1079b16be518d2f0fbfb244569fa18e3733acdac" +PINS = { + "inputs/PRICE.json": "a78be64c3e3ae8a0e532237c4dd3541aa9ad3fcbbc3c25d79c8a03fb7e07c525", + "inputs/GEOMETRY.json": "c6f9f018df8b58fcdf4f44356bd59bcac6d411b7845104ff4ad372ed4a95cfbd", + "inputs/REMAINING.json": "3597499663a57702856945e91214a65e1d0f94db8643b93c0234c2bbf9291b1a", + "inputs/7334-WORD.json.gz": WORD, +} +PRIME = 65537 +CASES = 310 +SECONDS = 25 +EVENTS = 76466 + + +def unique(items): + data = dict(items) + if len(items) != len(data): + raise ValueError("duplicate JSON key") + return data + + +def authenticate(root): + raw = {} + for rel, expected in PINS.items(): + data = (root / rel).read_bytes() + if sha256(data).hexdigest() != expected: + raise ValueError(f"changed dependency: {rel}") + raw[rel] = data + return raw + + +@cache +def coefficient(value): + q = Fraction(value) + if not q or q.denominator % PRIME == 0: + raise ValueError("zero scalar or denominator divisible by modulus") + return q.numerator * pow(q.denominator, -1, PRIME) % PRIME, q.denominator + + +def axpy(target, source, scale): + if scale: + for role, old in source.items(): + current = (target.get(role, 0) + scale * old) % PRIME + if current: + target[role] = current + else: + target.pop(role, None) + + +def scaled(vector, scale): + return {i: y for i, x in vector.items() if (y := x * scale % PRIME)} + + +def verify_minor(vectors, columns): + """Independently recompute a minor on the original projected rows.""" + matrix = [[row.get(c, 0) for c in columns] for row in vectors] + determinant = 1 + for c in range(len(matrix)): + pivot = next((r for r in range(c, len(matrix)) if matrix[r][c]), None) + if pivot is None: + return 0 + if pivot != c: + matrix[c], matrix[pivot] = matrix[pivot], matrix[c] + determinant = -determinant + diag = matrix[c][c] + determinant = determinant * diag % PRIME + inverse = pow(diag, -1, PRIME) + for r in range(c + 1, len(matrix)): + factor = matrix[r][c] * inverse % PRIME + if factor: + for k in range(c + 1, len(matrix)): + matrix[r][k] = (matrix[r][k] - factor * matrix[c][k]) % PRIME + matrix[r][c] = 0 + return determinant % PRIME + + +def classify(bank, vectors, cohort): + full_rows = [vectors[r] for r in bank] + exterior = [{i: x for i, x in row.items() if i not in cohort} for row in full_rows] + basis, kernel = [], [] + determinant = 1 + for index, vector in enumerate(exterior): + work = vector.copy() + combination = {index: 1} + for col, known, combo in basis: + factor = -work.get(col, 0) + axpy(work, known, factor) + axpy(combination, combo, factor) + if not work: + image = {} + for i, factor in combination.items(): + axpy(image, full_rows[i], factor) + assert image.keys() <= cohort + kernel.append(dict(cut={bank[i]: x for i, x in combination.items()}, endpoint=image)) + continue + col = max(work) + pivot = work[col] + determinant = determinant * pivot % PRIME + inverse = pow(pivot, -1, PRIME) + basis.append((col, scaled(work, inverse), scaled(combination, inverse))) + rank = len(basis) + assert rank + len(kernel) == len(bank) + columns = [col for col, _, _ in basis] + if kernel: + return dict(rank=rank, kernel=kernel, minor_axes=None, determinant=None) + assert columns and verify_minor(exterior, columns) == determinant != 0 + return dict(rank=rank, kernel=[], minor_axes=columns, determinant=determinant) + + +def apply(event, state, vectors, fresh, n, denominators, backward): + op, r, *args = event + current = state[r] + if op == "MOVE": + old, new, owned = args + assert owned == (r >= n) + assert current == (new if backward else old) + state[r] = old if backward else new + fresh.discard(r) + return + if op in ("INIT", "CLEAR"): + assert r >= n + c, = args + entering = (op == "CLEAR") if backward else (op == "INIT") + if entering: + assert current is None and vectors[r] is None + state[r], vectors[r] = c, {} + if not backward: + fresh.add(r) + else: + assert current == c and vectors[r] is not None + state[r] = vectors[r] = None + fresh.discard(r) + return + assert op in ("SCALE", "ADD", "COPY") and current == args[-1] and vectors[r] is not None + factor, denominator = coefficient(args[-2]) + denominators.add(denominator) + if op == "SCALE": + vectors[r] = scaled(vectors[r], factor) + else: + src = args[0] + assert src != r and state[src] == current and vectors[src] is not None + if backward: + axpy(vectors[src], vectors[r], factor) + if op == "COPY": + assert r >= n + vectors[r] = {} + elif op == "COPY": + assert r >= n and r in fresh and not vectors[r] + vectors[r] = scaled(vectors[src], factor) + else: + axpy(vectors[r], vectors[src], factor) + fresh.discard(r) + + +def controls(): + assert all(PRIME % i for i in range(2, isqrt(PRIME) + 1)) + witness = classify([0, 1], [{3: 2, 8: 1}, {3: 3, 8: 4}], set()) + assert witness["minor_axes"] == [8, 3] and witness["determinant"] == PRIME - 5 + dropped = classify([0, 1], [{0: 1, 8: 1}, {1: 1, 8: 1}], {0, 1}) + assert dropped["kernel"] == [dict(cut={0: PRIME - 1, 1: 1}, endpoint={0: PRIME - 1, 1: 1})] + tape = [("ADD", 1, 0, "-3/2", 4), ("SCALE", 0, "2", 4), ("INIT", 2, 4), + ("COPY", 2, 1, "1", 4), ("ADD", 0, 2, "5", 4), ("CLEAR", 2, 4)] + result = [] + for backward in (False, True): + state, vectors, fresh, denoms = [4, 4, None], [{0: 1}, {1: 1}, None], set(), set() + for event in reversed(tape) if backward else tape: + apply(event, state, vectors, fresh, 2, denoms, backward) + assert state == [4, 4, None] and not fresh and denoms == {1, 2} + result.append(vectors) + assert result[0] == [{0: coefficient("-11/2")[0], 1: 5}, {0: coefficient("-3/2")[0], 1: 1}, None] + assert result[1] == [{0: coefficient("-11/2")[0], 1: coefficient("-3/2")[0]}, {0: 5, 1: 1}, None] + try: + coefficient("1/65537") + except ValueError: + pass + else: + raise AssertionError("nonunit denominator admitted") + return ["prime and signed nonzero minor", "planted pure kernel", "owned COPY forward and adjoint", + "nonunit denominator rejection"] + + +def span(frame): + vectors = {0} + for v in frame: + assert v not in vectors + vectors |= {v ^ w for w in vectors} + return vectors + + +def sweep(word, keys, cohort, deadline, result, progress, backward, previous=None): + tape, n, owned = (word[k] for k in ("program", "public", "owned_fields")) + assert (len(tape), n, owned) == (EVENTS, 1501, 68) + origin, target = ("final", "initial") if backward else ("initial", "final") + state = word[origin] + [None] * owned + vectors = [{r: 1} for r in range(n)] + [None] * owned + fresh, denoms = set(), set() + request = defaultdict(list) + frames = word["frames"] + low, high = span(frames[3]), span(frames[245]) + for cut, chart in keys: + assert 0 <= cut <= EVENTS and len(frames[chart]) == 4 and low < span(frames[chart]) < high + request[cut].append(chart) + boundaries = range(EVENTS, -1, -1) if backward else range(EVENTS + 1) + progress.update(events=0, first_unvisited_cut=boundaries.start, denominator_units=[]) + for cut in boundaries: + progress["first_unvisited_cut"] = cut + if (cut % 128 == 0 or cut in request) and monotonic() >= deadline: + break + for chart in request.get(cut, []): + key = (cut, chart) + public_bank = [r for r in range(n) if state[r] == chart] + owned_bank = [r for r in range(n, n + owned) if state[r] == chart] + pivots = sorted(set(public_bank) & cohort) + assert public_bank and pivots + if cut: + event = tape[cut - 1] + assert chart in (event[2:4] if event[0] == "MOVE" else event[-1:]) + bank = dict(public=public_bank, owned=owned_bank, pivots=pivots) + if previous is not None: + assert bank == previous[key]["bank"] + result[key] = dict(bank=bank, **classify(public_bank, vectors, cohort)) + if cut == (0 if backward else EVENTS): + assert state == word[target] + [None] * owned and not fresh + assert set(result) == set(keys) + progress["first_unvisited_cut"] = None + break + apply(tape[cut - 1 if backward else cut], state, vectors, fresh, n, denoms, backward) + progress["events"] += 1 + progress["denominator_units"] = sorted(denoms) + + +def pairing(prefix, suffix): + def dot(left, right): + return sum(v * right.get(i, 0) for i, v in left.items()) % PRIME + + return [[dict(cut=dot(a["cut"], b["cut"]), endpoint=dot(a["endpoint"], b["endpoint"])) + for b in suffix["kernel"]] for a in prefix["kernel"]] + + +def main(): + parser = ArgumentParser(description=__doc__) + parser.add_argument("--root", type=Path, default=ROOT) + parser.add_argument("--controls-only", action="store_true") + args = parser.parse_args() + assert __debug__ and sys.version_info[:2] == (3, 12) + checks = controls() + if args.controls_only: + print(dumps(checks)) + return + + def stop(*_): + raise TimeoutError("hard 25-second cap") + + start = monotonic() + signal(SIGALRM, stop) + alarm(SECONDS) + timeout = None + keys, prior, prefix, suffix = [], [], {}, {} + prefix_progress, suffix_progress = {}, {} + try: + raw = authenticate(args.root) + price, geom, remaining = [loads(raw[f"inputs/{name}.json"], object_pairs_hook=unique) + for name in ("PRICE", "GEOMETRY", "REMAINING")] + assert price["head"] == geom["head"] == remaining["head"] == HEAD and price["caller"] == CALLER + assert price["word_sha256"] == geom["word_sha256"] == WORD + assert geom["price_sha256"] == PINS["inputs/PRICE.json"] + assert remaining["input_sha256"]["lead/GEOMETRY.json"] == PINS["inputs/GEOMETRY.json"] + assert geom["status"] == "EXHAUSTED" and geom["visited_events"] == EVENTS + keys = list(map(tuple, remaining["unvisited_prefix"])) + prior = remaining["dual_drops_requiring_rational"] + assert len(keys) == len(set(keys)) == remaining["next_modular_cases"] == CASES + assert remaining["next_modular_runner_seconds"] == SECONDS + assert keys == list(map(tuple, geom["unvisited_keys"])) + selected = {tuple(row["key"]) for row in geom["selected"]} + assert len(selected) == 16 and not set(keys) & selected and set(map(tuple, prior)) <= selected + assert set(keys) | selected == set(map(tuple, geom["all_representative_keys"])) + assert prior == [[41740, 242], [45266, 242]] + payload = decompress(raw["inputs/7334-WORD.json.gz"]) + assert sha256(payload).hexdigest() == PAYLOAD + word = loads(payload, object_pairs_hook=unique) + cohort = set(price["cohort"]) + assert len(cohort) == 15 and all((word["initial"][r], word["final"][r]) == (3, 245) for r in cohort) + deadline = start + SECONDS - 2 + sweep(word, keys, cohort, deadline, prefix, prefix_progress, False) + candidates = [key for key in keys if key in prefix and prefix[key]["kernel"]] + if candidates: + sweep(word, candidates, cohort, deadline, suffix, suffix_progress, True, prefix) + else: + suffix_progress.update(events=0, first_unvisited_cut=None, denominator_units=[]) + except TimeoutError as error: + timeout = str(error) + finally: + alarm(0) + + results = [] + for key in keys: + left, right = prefix.get(key), suffix.get(key) + pair = None + if left and not left["kernel"]: + status = "prefix_exclusion" + elif right and not right["kernel"]: + status = "suffix_exclusion" + elif right: + status = "dual_drop" + pair = pairing(left, right) + else: + status = "unvisited" + results.append(dict(key=key, status=status, prefix=left, suffix=right, modular_pairings=pair)) + complete = (timeout is None and prefix_progress.get("first_unvisited_cut", 0) is None + and suffix_progress.get("first_unvisited_cut", 0) is None) + print(dumps(dict(head=HEAD, caller=CALLER, pins=PINS, modulus=PRIME, controls=checks, + cap_cases=CASES, cap_seconds=SECONDS, prefix_progress=prefix_progress, suffix_progress=suffix_progress, + timeout=timeout, complete=complete, results=results, + counts=Counter(row["status"] for row in results), previously_frozen_exact_keys=prior), + indent=2, sort_keys=True)) + if not complete: + raise SystemExit(2) + + +if __name__ == "__main__": + main() diff --git a/research/p104-two-paid-subdivision-bank-bound/receipts/AGREEMENT.json b/research/p104-two-paid-subdivision-bank-bound/receipts/AGREEMENT.json new file mode 100644 index 0000000000..5e1f0091d6 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/receipts/AGREEMENT.json @@ -0,0 +1,29 @@ +{ + "cut_agreement": [ + 42958, + 42959, + 42960 + ], + "pins": { + "independent/RESULT.json": "94c051452dd777b23913f5dda60f170ae82ae8b3d989bef9ba9687acfccad1fb", + "lead/RESULT.json": "3fd4f688b25bcd213ff3bccdedbfeb4d254d125be90456f8bef686ef06fae664", + "plan/PRICE.json": "b29ff21d96485317003db5d06d3332f71e7158de4fafbbc6b300a45fc5d5e3c6" + }, + "primary_axes_det_mod_65537": 32768, + "primary_axes_matrix_mod_65537": [ + [ + 32769, + 0 + ], + [ + 0, + 65536 + ] + ], + "primary_exact_axis": [ + 0, + 890 + ], + "raw_keys_agreement": 9, + "unresolved": 0 +} diff --git a/research/p104-two-paid-subdivision-bank-bound/receipts/SHA256.json b/research/p104-two-paid-subdivision-bank-bound/receipts/SHA256.json new file mode 100644 index 0000000000..7d430555ee --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/receipts/SHA256.json @@ -0,0 +1,10 @@ +{ + "r120/AGREEMENT.json": "a85277d8bb97dbe1d4880032f3058604532de5fa5bb96b33977095b54b02d8c6", + "r120/EXACT.json": "3fd4f688b25bcd213ff3bccdedbfeb4d254d125be90456f8bef686ef06fae664", + "r120/PRICE.json": "b29ff21d96485317003db5d06d3332f71e7158de4fafbbc6b300a45fc5d5e3c6", + "r120/SECOND.json": "94c051452dd777b23913f5dda60f170ae82ae8b3d989bef9ba9687acfccad1fb", + "r99/GEOMETRY.json": "c89976cd5f808c29ab13770e262b2d216f56b4e1703ef836c3438d60f40eb11b", + "r99/MODULAR.json": "4d24d44be888a52ac93e589bf7a15978317395b0d3ddc6d96dd2e6d14bde5b44", + "r99/PRICE.json": "0eba831b917331f7a84f4d8a5da726577ed516f04c5f1b94671e031dd2c0b3b4", + "r99/SELECTION.json": "3a6f588eb597e56abfbfe568319fc81294d16d37f03f8b6159ba5b133dc2f416" +} diff --git a/research/p104-two-paid-subdivision-bank-bound/replay.py b/research/p104-two-paid-subdivision-bank-bound/replay.py new file mode 100644 index 0000000000..2b4b810e54 --- /dev/null +++ b/research/p104-two-paid-subdivision-bank-bound/replay.py @@ -0,0 +1,178 @@ +"""Reproduce the 17 frozen same-span banks for two paid rank-two subdivisions.""" +from argparse import ArgumentParser +from fractions import Fraction +from gzip import decompress +from hashlib import sha1, sha256 +from json import loads +from pathlib import Path, PurePosixPath +from shutil import copyfile +from subprocess import run +import sys +from tempfile import TemporaryDirectory + +ROOT = Path(__file__).resolve().parent +HEAD = "aaeec8c0acf01e99a5f331ef363a698d9c084ace" +CALLER = "07a76c5e2738882c0cb322278e56f6cae3c9885d" +SHARED = ("7334-WORD.json.gz", "BENCHMARK.json", "pricing.py", "second_prime.py") + + +def unique(items): + result = dict(items) + if len(result) != len(items): + raise ValueError("duplicate JSON key") + return result + + +def decode(raw): + return loads(raw, object_pairs_hook=unique) + + +def digest(raw): + return sha256(raw).hexdigest() + + +def relative(name): + path = PurePosixPath(name) + if path.is_absolute() or path.as_posix() != name or ".." in path.parts: + raise ValueError(f"invalid relative path: {name}") + return path + + +def authenticate(): + pins = decode((ROOT / "LOCAL-PINS.json").read_bytes()) + for name, expected in pins.items(): + if digest((ROOT / relative(name)).read_bytes()) != expected: + raise ValueError(f"changed package dependency: {name}") + provenance = decode((ROOT / "PROVENANCE.json").read_bytes()) + for name, record in provenance["files"].items(): + raw = (ROOT / relative(name)).read_bytes() + assert digest(raw) == record["sha256"] == pins[name] + assert sha1(f"blob {len(raw)}\0".encode() + raw).hexdigest() == record["git_blob"] + published = decode((ROOT / "inputs/PR7362-SHA256.json").read_bytes()) + inputs = {} + for name in ("R92-GEOMETRY.json", "R92-PRICE.json"): + raw = decompress((ROOT / "inputs" / (name + ".gz")).read_bytes()) + assert digest(raw) == published[name] + inputs[name] = raw + readback = decode((ROOT / "inputs/READBACK.json").read_bytes()) + price = decode(inputs["R92-PRICE.json"]) + bench = decode((ROOT / "inputs/BENCHMARK.json").read_bytes()) + assert readback["head"] == price["head"] == bench["head"] == HEAD + assert readback["caller_head"] == price["caller_head"] == CALLER + assert readback["copies"] == 17 and readback["empty_root_credits"] == 0 + assert (readback["paid_positions"], readback["productive_fields"], readback["rank_surplus"]) == (110519, 22461, 1424) + assert readback["paid"] == price["old_paid"] and readback["targets"] == price["old_targets"] + assert bench["receipt_sha256"]["peer-price/READBACK.json"] == pins["inputs/READBACK.json"] + return inputs + + +def command(root, script, *, timeout=25, check=True): + result = run([sys.executable, "-I", "-B", str(root / script)], + capture_output=True, timeout=timeout) + if check and result.returncode: + sys.stderr.write(result.stderr.decode(errors="replace")) + result.check_returncode() + return result + + +def seed(root, stage, scripts, shared, extra, inputs): + for folder in ("inputs", *sorted({Path(name).parent.as_posix() for name in scripts})): + (root / folder).mkdir(parents=True, exist_ok=True) + for name in (*shared, *extra): + copyfile(ROOT / "inputs" / name, root / "inputs" / name) + for path in scripts: + copyfile(ROOT / "engines" / stage / Path(path).name, root / path) + for name, raw in inputs.items(): + (root / "inputs" / name).write_bytes(raw) + + +def reject(root, path, script): + victim = root / path + raw = victim.read_bytes() + victim.write_bytes(raw + b"\n") + result = command(root, script, check=False) + assert result.returncode == 1 and not result.stdout + assert b"changed dependency" in result.stderr and victim.name.encode() in result.stderr + victim.write_bytes(raw) + + +def replay(root, out): + prior_inputs = authenticate() + expected = decode((ROOT / "receipts/SHA256.json").read_bytes()) + receipts = {} + + def record(stage, name, run_root, script, target=None): + key = f"{stage}/{name}.json" + raw = command(run_root, script).stdout + assert digest(raw) == expected[key], ("changed receipt", key) + receipts[key] = raw + if target is not None: + (run_root / target).write_bytes(raw) + return decode(raw) + + first = root / "r99" + seed(first, "r99", ("lead/quote.py", "lead/geometry.py", "lead/select.py", "lead/modular.py"), + SHARED, (), prior_inputs) + record("r99", "PRICE", first, "lead/quote.py", "lead/PRICE.json") + geometry = record("r99", "GEOMETRY", first, "lead/geometry.py", "lead/GEOMETRY.json") + selection = record("r99", "SELECTION", first, "lead/select.py", "lead/SELECTION.json") + original = record("r99", "MODULAR", first, "lead/modular.py", "lead/MODULAR.json") + assert geometry["stage"] == "complete" and geometry["timeout"] is None + assert (geometry["visited_placements"], geometry["pair_comparisons"], geometry["visited_cuts"]) == (285, 108, 38967) + assert len(geometry["representatives"]) == 102 and not geometry["owned_rejections"] + assert len(selection["selected"]) == 16 and len(selection["unselected"]) == 1 + assert original["counts"] == {"prefix exclusion": 16} and original["prime"] == 65537 + assert all(row["prefix"]["rank"] == 2 and row["suffix"] is None for row in original["results"]) + assert original["unvisited"] == selection["unselected"] + reject(first, "inputs/R92-PRICE.json", "lead/modular.py") + + second = root / "r120" + inputs = {"R92-PRICE.json": prior_inputs["R92-PRICE.json"]} + inputs.update({f"R99-{name}.json": receipts[f"r99/{name}.json"] + for name in ("PRICE", "GEOMETRY", "SELECTION", "MODULAR")}) + seed(second, "r120", ("plan/freeze.py", "lead/check.py", "independent/prefix.py", "independent/compare.py"), + SHARED, ("donor_span.py", "paired_support.py"), inputs) + price = record("r120", "PRICE", second, "plan/freeze.py", "plan/PRICE.json") + exact = record("r120", "EXACT", second, "lead/check.py", "lead/RESULT.json") + other = record("r120", "SECOND", second, "independent/prefix.py", "independent/RESULT.json") + agreement = record("r120", "AGREEMENT", second, "independent/compare.py") + assert receipts["r120/AGREEMENT.json"] == (ROOT / "receipts/AGREEMENT.json").read_bytes() + assert price["head"] == exact["head"] == other["head"] == HEAD + assert price["caller"] == exact["caller"] == other["caller"] == CALLER + assert price["row"] == selection["unselected"][0] + assert price["paid_delta"] == {"1": 68, "2": -34} and price["productive_delta"] == {"4": 17, "5": 17, "9": -17} + assert (price["paid"], price["productive"], price["rank_surplus"]) == (110553, 22478, 1424) + assert Fraction(price["probe_complete_margin"][0]) > 0 > Fraction(price["extra_rank_one_upper"]) + assert Fraction(price["fixed_target_complete_upper"]) < 0 + assert exact["status"] == "prefix exclusion" and exact["proof"]["axes"] == [0, 890] + assert exact["proof"]["determinant"] == "-1/2" + assert len(exact["raw_keys"]) == len(other["raw_excluded"]) == agreement["raw_keys_agreement"] == 9 + assert len(exact["representative_keys"]) == 6 + assert not exact["unresolved"] and not other["unresolved"] and agreement["unresolved"] == 0 + assert other["progress"] == {"events": 76466, "first_unvisited_cut": None} + assert all(row["rank"] == 2 for row in other["rows"]) + assert agreement["primary_axes_det_mod_65537"] == 32768 + (second / "inputs/7334-WORD.json.gz").unlink() + reject(second, "plan/PRICE.json", "independent/prefix.py") + + assert set(receipts) == set(expected) + if out is not None: + out.mkdir(parents=True) + for name, raw in receipts.items(): + path = out / relative(name) + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(raw) + print("PASS_TWO_PAID_SUBDIVISION_BANK_BOUND forms=17 previous=16 residual=1 raw_residual=9 unresolved=0") + + +def main(): + assert __debug__ and sys.version_info[:2] == (3, 12) + parser = ArgumentParser(description=__doc__) + parser.add_argument("--out", type=Path, help="new directory for all eight regenerated receipts") + args = parser.parse_args() + with TemporaryDirectory() as tmp: + replay(Path(tmp), args.out) + + +if __name__ == "__main__": + main()