From 7f5ac1c764268d1339466d525e99ddc755a52df2 Mon Sep 17 00:00:00 2001 From: Ludwitt Date: Tue, 27 Oct 2026 09:05:12 -0400 Subject: [PATCH 1/3] orgsci: review the Stage 1 package and fold the irreducibility prototype into the lab STAGE1_REVIEW.md audits the Google Doc against the CFP, the prototype and the lab: CFP compliance, narrative, every repository reference and number re-derived from the scripts, every citation checked against a database record, and the attribution of each claim about the literature. Eleven items block submission; the first is that irreducibility-pipeline (tag v0.1-stage1) had no git remote. The prototype now lives at irreducibility-pipeline/ with its layout intact, so one fork of the lab carries both artifacts. From the lab root `python irreducibility-pipeline/reproduce.py` passes 17/17 and `pytest` 19/19; the lab check irreducibility-pipeline-reproduce (slow) registers the pass line. The README's programs list names it. Found on the way and not changed: wageman-ti-verdict fails on this branch (manifest expects rho(W,Phi)=0.883, script prints 0.867). Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01H7Xkmog7WCpaqLVPe22mKa (cherry picked from commit f2ef5de9558bf4a826cd08583dbb919d2dac3570) --- README.md | 5 + ci/reproduce.json | 17 + irreducibility-pipeline/.gitignore | 7 + irreducibility-pipeline/APPENDIX.md | 118 ++++ irreducibility-pipeline/CITATION.cff | 18 + irreducibility-pipeline/LICENSE | 21 + irreducibility-pipeline/README.md | 202 ++++++ .../encode/PROMPT_adversary.md | 42 ++ .../encode/PROMPT_drafter.md | 44 ++ irreducibility-pipeline/encode/SCHEMA.json | 189 ++++++ .../01_gig_dispatch/ai_adversary_raw.json | 148 ++++ .../examples/01_gig_dispatch/ai_draft.json | 131 ++++ .../ai_draft_plus_adversary.json | 275 ++++++++ .../examples/01_gig_dispatch/encodings.json | 415 ++++++++++++ .../examples/01_gig_dispatch/prose.md | 24 + .../examples/02_insurance_claim/ai_draft.json | 239 +++++++ .../02_insurance_claim/encodings.json | 259 +++++++ .../examples/02_insurance_claim/prose.md | 24 + .../03_code_review_gate/encodings.json | 119 ++++ .../examples/03_code_review_gate/prose.md | 17 + .../04_dealer_vs_clearinghouse/encodings.json | 132 ++++ .../04_dealer_vs_clearinghouse/prose.md | 13 + .../irreducibility/__init__.py | 10 + .../irreducibility/analyze.py | 199 ++++++ .../irreducibility/contingency.py | 112 ++++ .../irreducibility/core.py | 233 +++++++ .../irreducibility/encode_check.py | 69 ++ .../irreducibility/encoding.py | 86 +++ .../irreducibility/regime.py | 54 ++ .../irreducibility/rule_to_phi.py | 187 ++++++ .../irreducibility/rules.py | 63 ++ .../irreducibility/spread.py | 180 +++++ .../irreducibility/validate.py | 92 +++ irreducibility-pipeline/protocol/PROTOCOL.md | 111 +++ .../protocol/coding_scheme.md | 65 ++ irreducibility-pipeline/protocol/ethics.md | 43 ++ .../protocol/interview_guide.md | 59 ++ .../protocol/predictions_fixed_in_advance.md | 51 ++ irreducibility-pipeline/pyproject.toml | 22 + irreducibility-pipeline/reproduce.json | 175 +++++ irreducibility-pipeline/reproduce.py | 49 ++ irreducibility-pipeline/requirements.txt | 6 + irreducibility-pipeline/studies/__init__.py | 0 .../studies/adversarial_coding.py | 199 ++++++ .../studies/breadth_forms.py | 72 ++ irreducibility-pipeline/studies/census.py | 125 ++++ .../studies/contingent_irreducibility.py | 92 +++ .../studies/design_operations.py | 63 ++ .../studies/design_operations_forms.py | 39 ++ .../studies/enricher_regime.py | 126 ++++ .../studies/field_mocks.py | 92 +++ .../studies/forms_library.py | 125 ++++ .../studies/mediator_in_core.py | 106 +++ irreducibility-pipeline/studies/mocks.py | 166 +++++ .../studies/phiid_measure.py | 70 ++ .../studies/proxy_bridge.py | 63 ++ irreducibility-pipeline/studies/proxy_run.py | 91 +++ .../studies/thompson_ordering.py | 130 ++++ .../tests/test_pipeline.py | 110 +++ .../proposals/orgsci_ai_2026/README.md | 13 +- .../proposals/orgsci_ai_2026/STAGE1_REVIEW.md | 634 ++++++++++++++++++ 61 files changed, 6640 insertions(+), 1 deletion(-) create mode 100644 irreducibility-pipeline/.gitignore create mode 100644 irreducibility-pipeline/APPENDIX.md create mode 100644 irreducibility-pipeline/CITATION.cff create mode 100644 irreducibility-pipeline/LICENSE create mode 100644 irreducibility-pipeline/README.md create mode 100644 irreducibility-pipeline/encode/PROMPT_adversary.md create mode 100644 irreducibility-pipeline/encode/PROMPT_drafter.md create mode 100644 irreducibility-pipeline/encode/SCHEMA.json create mode 100644 irreducibility-pipeline/examples/01_gig_dispatch/ai_adversary_raw.json create mode 100644 irreducibility-pipeline/examples/01_gig_dispatch/ai_draft.json create mode 100644 irreducibility-pipeline/examples/01_gig_dispatch/ai_draft_plus_adversary.json create mode 100644 irreducibility-pipeline/examples/01_gig_dispatch/encodings.json create mode 100644 irreducibility-pipeline/examples/01_gig_dispatch/prose.md create mode 100644 irreducibility-pipeline/examples/02_insurance_claim/ai_draft.json create mode 100644 irreducibility-pipeline/examples/02_insurance_claim/encodings.json create mode 100644 irreducibility-pipeline/examples/02_insurance_claim/prose.md create mode 100644 irreducibility-pipeline/examples/03_code_review_gate/encodings.json create mode 100644 irreducibility-pipeline/examples/03_code_review_gate/prose.md create mode 100644 irreducibility-pipeline/examples/04_dealer_vs_clearinghouse/encodings.json create mode 100644 irreducibility-pipeline/examples/04_dealer_vs_clearinghouse/prose.md create mode 100644 irreducibility-pipeline/irreducibility/__init__.py create mode 100644 irreducibility-pipeline/irreducibility/analyze.py create mode 100644 irreducibility-pipeline/irreducibility/contingency.py create mode 100644 irreducibility-pipeline/irreducibility/core.py create mode 100644 irreducibility-pipeline/irreducibility/encode_check.py create mode 100644 irreducibility-pipeline/irreducibility/encoding.py create mode 100644 irreducibility-pipeline/irreducibility/regime.py create mode 100644 irreducibility-pipeline/irreducibility/rule_to_phi.py create mode 100644 irreducibility-pipeline/irreducibility/rules.py create mode 100644 irreducibility-pipeline/irreducibility/spread.py create mode 100644 irreducibility-pipeline/irreducibility/validate.py create mode 100644 irreducibility-pipeline/protocol/PROTOCOL.md create mode 100644 irreducibility-pipeline/protocol/coding_scheme.md create mode 100644 irreducibility-pipeline/protocol/ethics.md create mode 100644 irreducibility-pipeline/protocol/interview_guide.md create mode 100644 irreducibility-pipeline/protocol/predictions_fixed_in_advance.md create mode 100644 irreducibility-pipeline/pyproject.toml create mode 100644 irreducibility-pipeline/reproduce.json create mode 100644 irreducibility-pipeline/reproduce.py create mode 100644 irreducibility-pipeline/requirements.txt create mode 100644 irreducibility-pipeline/studies/__init__.py create mode 100644 irreducibility-pipeline/studies/adversarial_coding.py create mode 100644 irreducibility-pipeline/studies/breadth_forms.py create mode 100644 irreducibility-pipeline/studies/census.py create mode 100644 irreducibility-pipeline/studies/contingent_irreducibility.py create mode 100644 irreducibility-pipeline/studies/design_operations.py create mode 100644 irreducibility-pipeline/studies/design_operations_forms.py create mode 100644 irreducibility-pipeline/studies/enricher_regime.py create mode 100644 irreducibility-pipeline/studies/field_mocks.py create mode 100644 irreducibility-pipeline/studies/forms_library.py create mode 100644 irreducibility-pipeline/studies/mediator_in_core.py create mode 100644 irreducibility-pipeline/studies/mocks.py create mode 100644 irreducibility-pipeline/studies/phiid_measure.py create mode 100644 irreducibility-pipeline/studies/proxy_bridge.py create mode 100644 irreducibility-pipeline/studies/proxy_run.py create mode 100644 irreducibility-pipeline/studies/thompson_ordering.py create mode 100644 irreducibility-pipeline/tests/test_pipeline.py create mode 100644 submissions/proposals/orgsci_ai_2026/STAGE1_REVIEW.md diff --git a/README.md b/README.md index c00a39bef..e8839f9a3 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,11 @@ theory. Each is a different lens on the same coordination arrangement. the cognitive theories of coordination. Each theory of mind models a channel between two parties and has nowhere to put an opaque, interested third; the major complex holds that third as a member of the irreducible core, and each failure point becomes a computable Φ prediction. +- **The irreducibility pipeline** in [`irreducibility-pipeline/`](irreducibility-pipeline/) is the + self-contained prototype behind the *Organization Science* Stage 1 package: rival Boolean encodings of a + coordination arrangement, drafted by a model and gated on verbatim evidence, then computed to exact Φ(MIP), + the major complex and the mediator's position. `python irreducibility-pipeline/reproduce.py` re-derives + its 17 reference results. Four readings meet on one arrangement: structure, fieldwork, behavior, and measurement. The field protocol turns real evidence into the structural reading, and the cognition program ties that structure back to the diff --git a/ci/reproduce.json b/ci/reproduce.json index 47c3278da..833320b40 100644 --- a/ci/reproduce.json +++ b/ci/reproduce.json @@ -7047,6 +7047,23 @@ "timeout": 1500, "slow": true, "source": "org_frontier/probes/PROBES.md (#116); the scaling-law probe in START_HERE.md" + }, + { + "name": "irreducibility-pipeline-reproduce", + "cmd": "python irreducibility-pipeline/reproduce.py", + "expect": [ + "PASS instrument-controls", + "PASS example-gig-dispatch", + "PASS ai-draft-gig", + "PASS census", + "PASS adversarial-coding", + "PASS proxies", + "17/17 checks passed." + ], + "timeout": 900, + "slow": true, + "what": "the irreducibility-pipeline prototype: 17 reference results (controls, four worked examples, logged AI runs, census, regimes, adversarial coding, proxies)", + "source": "irreducibility-pipeline/README.md" } ] } diff --git a/irreducibility-pipeline/.gitignore b/irreducibility-pipeline/.gitignore new file mode 100644 index 000000000..ec0a27b98 --- /dev/null +++ b/irreducibility-pipeline/.gitignore @@ -0,0 +1,7 @@ +__pycache__/ +*.pyc +.pytest_cache/ +.venv/ +studies/results/ +__pyphi_cache__/ +pyphi.log diff --git a/irreducibility-pipeline/APPENDIX.md b/irreducibility-pipeline/APPENDIX.md new file mode 100644 index 000000000..7b0c7dcc3 --- /dev/null +++ b/irreducibility-pipeline/APPENDIX.md @@ -0,0 +1,118 @@ +# Technical Appendix: Computing the Triad + + +## A. Encoding a coordinative structure + +A structure with *n* parties is a deterministic Boolean network on *n* nodes. Node *i* holds party *i*'s state, and a rule sets its next state from the current states of the parties it reads. Rules are written as expressions over party labels using `and`, `or`, `not`, `xor`, `0` and `1` (`irreducibility/rules.py`). The parser rejects anything else, so an encoding cannot execute code. + +An encodings file (`encode/SCHEMA.json`) holds one structure and several encodings. Each encoding gives: +- **role:** `rival` for a competing reading of the same arrangement, `design` for a deliberate change to it; +- **rules:** one per party; +- **evidence:** for every rule, a source, a locator and a verbatim quotation; +- **alternative:** for the mediator's rule, the reading the evidence does not rule out, and why; +- **predicted:** the verdict and core, with a reason, fixed before computing; +- **bypass (optional):** a direct tie for the contingency test. + +Strict mediation, for example: + +| Party | Rule | Reading | +|---|---|---| +| Driver D | D′ = P | acts on the platform's signal | +| Platform P | P′ = D and R | commits only when both parties are in | +| Rider R | R′ = P | responds to what the platform shows | + +## B. The computation (`irreducibility/core.py`) + +1. **Transition matrix.** `tpm_from_rules` builds the 2ⁿ × n state-by-node matrix, little-endian (index 0 = first party), as PyPhi expects. `cm_from_rules` builds the connectivity matrix by a flip test: cm[i, j] = 1 iff flipping node *i* can change node *j*'s next state. +2. **Reachable states.** These are states with at least one predecessor under the dynamics; PyPhi analyzes only these. +3. **Φ over the MIP.** For each reachable state, `pyphi.new_big_phi.sia` returns system integrated information over the minimum-information partition (Albantakis et al., 2023), together with the partition itself. +4. **Verdict.** The structure is **triadic** iff Φ > 10⁻⁹ in at least one reachable state, read at the most-integrated state; otherwise it is **dyadic**. The test uses the MIP, not the complete cut. The complete cut severs any coupled pair and would call every coupled dyad a triad. +5. **Major complex.** `pyphi.new_big_phi.maximal_complex` is maximized over reachable states. It names the parties bound into the irreducible core. +6. **Interpretation.** Only the binary verdict and core membership are interpreted. Φ magnitude depends on the encoding and is at most ordinal. + +**Environment.** PyPhi is pinned to commit `b78d0e342` of its IIT-4.0 line (`requirements.txt`), with Python 3.10 or later; the code is tested on 3.12. + +## C. Controls (`python -m irreducibility.validate`; every script refuses to run if they fail) + +| Control or form | Rules (W, S, C) | Expected | Observed | +|---|---|---|---| +| Factoring control | S, W, C | dyadic | dyadic, Φ = 0.000 | +| Irreducible control | S or C, W and C, W xor S | triadic | triadic, Φ = 0.830 | +| Strict-mediation triad | S, W and C, S | triadic | triadic, Φ = 2.000 | +| Chat dyad; dyadic gig model; feedback that breaks liveness | (see code) | dyadic | dyadic, Φ = 0.000 each | +| Gig "false dyad" | not S, W and C, C and not S | triadic | triadic, Φ = 2.000 | + +## D. Structural readings + +- **Mediator position** (`irreducibility/regime.py`): + - *dyadic*: the structure factors. + - *BYPASSED*: triadic, but the mediator is outside the core. + - *CAPTURE*: the mediator is in the core and some party is not. + - *BOTTLENECK*: all parties are in the core, and freezing the mediator at 0 or 1 leaves the others unable to coordinate. + - *ENRICHER*: all parties are in the core, and the others still coordinate with the mediator frozen. +- **Intrinsic or contingent** (`irreducibility/contingency.py`). Restore the forbidden direct tie (the downstream party reads the upstream party) and recompute the core. + - *Contingent*: the intermediary leaves the core. + - *Intrinsic*: it stays, with no loss of Φ. + - *Partial*: it stays, but Φ falls. + - *Reducible*: it was never in the core. +- **Spread across rival encodings** (`irreducibility/spread.py`, `analyze.py`): verdict agreement, the Φ gap, and the Jaccard overlap of the cores. For every pair of rival encodings with different verdicts, the analysis names each single rule whose swap flips the verdict. + +## E. The AI step + +| Component | File | Function | +|---|---|---| +| Schema | `encode/SCHEMA.json` | the format a drafter must produce | +| Drafter | `encode/PROMPT_drafter.md` | rival encodings with verbatim evidence, an alternative and a fixed prediction; commit, convey or store decided from evidence; pools encoded with `or` | +| Adversary | `encode/PROMPT_adversary.md` | the most different readings the evidence still permits on three forces (commit vs convey, substitutability, spectators and outside options), or a statement of which passage rules each one out | +| Gate | `irreducibility/encode_check.py` | rejects a missing rule, a rule with no evidence, a quotation not found verbatim in the source, a mediator rule with no alternative, or a missing prediction; never computes Φ | + +**Logged runs.** Claude Sonnet 5.5 ran on 26 Oct 2026 with the committed prompts and the case description only, with no tools and no access to the human encodings. + +| Run | Output | Result | +|---|---|---| +| Gig dispatch, drafter | `examples/01_gig_dispatch/ai_draft.json` | admissible; two rival encodings identical to the human encodings A and B; both predictions held; the driver pool was missed | +| Gig dispatch, adversary | `examples/01_gig_dispatch/ai_draft_plus_adversary.json` | added the driver pool (computed dyadic, core {P,R}; predicted triadic, so the prediction **failed**) and the substitute direct tie (computed triadic, core {D,R}, platform bypassed; predicted dyadic, so it **failed**); declined a complementary tie as unsupported | +| Insurance claim, drafter | `examples/02_insurance_claim/ai_draft.json` | left rules unwritten for four of five designs and stated the missing evidence; the gate **rejected** the file (9 problems) | + +## F. Worked examples (`examples/`; stipulated descriptions, not field data) + +The lab's results for these structures were known when the examples were written, so their predictions record the naive reading, not a blind test. + +| Example | Encodings | Results | +|---|---|---| +| 01 Gig dispatch | 3 rival, 5 design | Platform commits: triadic, Φ = 2.0, core {D,P,R}, bottleneck, intrinsic. Driver's relay: dyadic. Pooled drivers: dyadic, core {P,R}. Flip rule: P: `D and R` → `D`. Outside options O1–O5: bottleneck, enricher, capture {D,P}, capture {P,R}, bypassed {D,R}. | +| 02 Insurance claim | 5 design | Pipe: triadic, core {C,E,A}. Threshold auto-approval: core {C,E}, capture. Fraud loop with learning: core {E,A}. Loop without learning: core {C,A}, engine bypassed. Frozen claimant: dyadic. 2 of 5 naive predictions held. | +| 03 Code-review gate | 2 rival | Maintainers wait for CI: triadic, Φ = 1.0, core {A,M}, gate bypassed. Maintainers approve on the diff alone: core {A,G,M}, gate enricher. | +| 04 Dealer vs clearinghouse | 2 design | Dealer under a ban on direct sales: core {U,I,V}, contingent (Φ lost when bypassed: 2.0). Clearinghouse: intrinsic (Φ lost: 0.0). | + +## G. Reference results (`studies/`) + +| Check | Result | +|---|---| +| `census` | 256 strict-mediation structures (4 worker rules × 16 mediator rules × 4 counterpart rules). 24 are triadic; 24/160 where the mediator reads both parties and 0/96 otherwise. | +| `field-mocks` | Ten invented organizations: the verdict matched the reading fixed before computing in 9/10 (support-ticket triage read triadic against a dyadic prediction). 4 flip under a second defensible encoding. | +| `mediator-in-core`, `enricher-regime` | Over 500 random mediated forms: dyadic 44.4%, bypassed 18.8%, capture 28.2%, bottleneck 2.6%, enricher 6.0%. A platform's core is itself plus the parties without an outside option (60/60). | +| `contingent-irreducibility` | The bypass test realizes the intrinsic / contingent / partial / reducible taxonomy. | +| `design-operations` | Three levers (binding, liveness, requirement), each with a build operation and an exact inverse break. | +| `thompson-ordering` | Pooled Φ = 0, sequential Φ = 2.0, reciprocal Φ = 2.0: the top step of Thompson's ordering collapses. | +| `adversarial-coding` | An adversary limited to evidence-permitted readings flips the point verdict on 101/101 contested accounts; a coder-agreement interval brackets the adversarial reading in only 22. | +| `proxies` | ΦID Φ_R and whole-minus-sum Φ from simulated trajectories separate dyadic from triadic at rank-AUC 0.563 and 0.629. | + +## H. Planned specifications (Stage 2) + +- **Encoding module.** + - Input: transcripts, documents and logs, with locators. + - Process: drafter and adversary on an open-weight and a commercial model; a researcher's approval recorded per encoding. + - Agreement: AI drafter against two human coders, Krippendorff's α per rule and per bit, target ≥ 0.80. +- **Strategic model.** + - Rows: structural position (verdict, core, regime, intrinsic or contingent), indexed by actor (platform, worker, counterpart, regulator). + - Columns: design levers (add or remove binding; break or restore liveness; require all parties or allow substitutes; open or close a bypass; change an outside option). + - Cells: the computed consequence (who stays bound, who is freed, whether the mediator survives). + - Scope: structural only, with no claims about economic value. +- **Validation.** 10–15 published platform and algorithmic-management cases encoded from their own text. For each case, the verdict under every defensible encoding and the detail that would decide between them. The gig-dispatch interview packet (`protocol/`) will be fielded under ethics approval. + +## References + +Albantakis, L., et al. (2023). Integrated information theory (IIT) 4.0: Formulating the properties of phenomenal existence in physical terms. *PLOS Computational Biology*, 19(10), e1011465. https://doi.org/10.1371/journal.pcbi.1011465 + +Mayner, W. G. P., Marshall, W., Albantakis, L., Findlay, G., Marchman, R., & Tononi, G. (2018). PyPhi: A toolbox for integrated information theory. *PLOS Computational Biology*, 14(7), e1006343. https://doi.org/10.1371/journal.pcbi.1006343 diff --git a/irreducibility-pipeline/CITATION.cff b/irreducibility-pipeline/CITATION.cff new file mode 100644 index 000000000..dbe62a01b --- /dev/null +++ b/irreducibility-pipeline/CITATION.cff @@ -0,0 +1,18 @@ +cff-version: 1.2.0 +message: "If you use this software, please cite it as below." +title: "irreducibility-pipeline: exact irreducibility analysis of coordinative structures with PyPhi" +authors: + - family-names: Hunt + given-names: Roger + orcid: "https://orcid.org/0009-0000-7262-1779" +version: 0.1.0 +date-released: "2026-10-31" +license: MIT +keywords: + - integrated information theory + - PyPhi + - organization theory + - coordination + - platforms + - triads + - AI-assisted research diff --git a/irreducibility-pipeline/LICENSE b/irreducibility-pipeline/LICENSE new file mode 100644 index 000000000..e4d55e768 --- /dev/null +++ b/irreducibility-pipeline/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Roger Hunt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/irreducibility-pipeline/README.md b/irreducibility-pipeline/README.md new file mode 100644 index 000000000..657ff5482 --- /dev/null +++ b/irreducibility-pipeline/README.md @@ -0,0 +1,202 @@ +# irreducibility-pipeline + +Organizations increasingly coordinate through a third thing that sits between the parties: a dispatch +system that matches a driver to a rider, an engine that screens a claim before an adjuster sees it, a CI +gate between an author and a maintainer, an AI agent that negotiates for one side. Whether such an +arrangement is **irreducibly three-party**, or factors into two-party relations that happen to share a +platform, decides who is bound to whom and what a redesign would change. Platform research usually settles +the question by description. This repository settles it by computation. + +The pipeline takes a coordinative structure as it is encountered (a description, interview excerpts, +documents) and returns an exact irreducibility analysis: + +1. **Encode (AI drafts, a researcher approves).** Rival Boolean models of the arrangement, one per + defensible reading, with every rule tied to a verbatim quote from the evidence and a prediction fixed + before anything is computed. A checker rejects any rule whose quote is not in the source. +2. **Compute (PyPhi).** For each encoding, the rules become a transition matrix. PyPhi's IIT-4.0 + implementation returns integrated information Φ over the minimum-information partition in every + reachable state, and the major complex. **Triadic** means no cut along party lines leaves the structure + intact (Φ > 0); **dyadic** means some cut does (Φ = 0). +3. **Read (structural position).** Who is bound (the major complex); the mediator's position (bottleneck, + enricher, capture, bypassed); whether its place is intrinsic or held by a constraint on bypassing it; + and, across rival encodings, which single rule the verdict turns on. + +The repository is the prototype for a proposal to *Organization Science*, "AI-Enabled Frontiers in +Organizational Science." It analyzes structures; the strategic model that maps a structural position to +a decision is the next stage of the work and is not here yet. + +## Install + +```bash +python -m venv .venv && source .venv/bin/activate # Python 3.10+; tested on 3.12 +pip install -r requirements.txt +python -m irreducibility.validate # must end "Instrument validated." +``` + +`validate` runs two controls before anything else: a structure with a decoupled party must read dyadic +(Φ = 0), and a fully coupled three-node network must read triadic (Φ = 0.830). Five reference forms +follow. Every analysis script refuses to run if the controls fail. + +## A walk-through: gig dispatch + +**The structure** ([`examples/01_gig_dispatch/prose.md`](examples/01_gig_dispatch/prose.md), a stipulated +description, not field data). A driver, a dispatch platform, a rider; the recurring act is one match. The +platform's manual says "The system assigns a trip only when an eligible driver is available and a rider +has confirmed the request." A driver says "It's a suggestion, it follows what I do." The manual also says +"Any eligible driver in range may be assigned," and some riders "just text my regular driver." + +**Encode.** [`encodings.json`](examples/01_gig_dispatch/encodings.json) holds three rival readings and +five design scenarios. Each party's rule is a Boolean expression; each rule cites its passage: + +```json +"rules": {"D": "P", "P": "D and R", "R": "P"}, +"evidence": {"P": [{"source": "prose.md", "locator": "¶2", + "quote": "The system assigns a trip only when an eligible driver is available and a rider has confirmed the request"}]}, +"alternative": {"P": {"rule": "D", "why": "Drivers describe dispatch as a suggestion that follows the driver (¶3)"}}, +"predicted": {"structure": "triadic", "core": ["D", "P", "R"], "reason": "..."} +``` + +```bash +python -m irreducibility.encode_check examples/01_gig_dispatch/encodings.json +# ADMISSIBLE: 8 encoding(s); every rule has evidence found verbatim in its source; every encoding carries a prediction. +``` + +**Compute.** + +```bash +python -m irreducibility.analyze examples/01_gig_dispatch/encodings.json +``` + +``` +[A] platform's account: dispatch commits a binding match (rival) + D' = P + P' = D and R + R' = P + PyPhi input: TPM 8x3 (state-by-node), connectivity [[0, 1, 0], [1, 0, 1], [0, 1, 0]] + Φ_MIP by reachable state: 000:0.000, 010:0.000, 101:0.000, 111:2.000 + verdict: TRIADIC max Φ_MIP = 2.000 (1/4 states irreducible) + MIP at state 111: 2 parts: {D,PR} + major complex (who is bound): {D, P, R} + mediator (P) position: BOTTLENECK + bypass test on P: intrinsic (Φ lost when the bypass opens: 0.000; core {D,P,R} -> {D,P}) + predicted before computing: triadic, core {D,P,R} -> HELD + +[B] driver's account: dispatch relays a suggestion (rival) + verdict: DYADIC max Φ_MIP = 0.000 ... major complex: {D, P} + +[C] pooled drivers: any eligible driver will do (rival) + verdict: DYADIC ... major complex: {P, R} <- the driver drops out of the core +``` + +**Read.** The three readings disagree, and the report says on what: + +``` +A vs B: verdicts triadic/dyadic, Φ gap 2.000, core overlap 0.667 + single rule that flips it: P: 'D and R' -> 'D' +CONTESTED: the verdict depends on which encoding the evidence supports +``` + +The whole question is whether dispatch *commits* a match that needs both parties or *relays* the driver's +choice. That is the fact a field study must settle. Pooling drivers (reading C) removes the individual +driver from the irreducible core: the platform and the rider remain bound, the driver does not. + +The five design scenarios hold the platform's rule fixed and vary the parties' outside options: + +| Scenario | Driver | Rider | Position of the platform | Core | +|---|---|---|---|---| +| O1 both captive | `P` | `P` | BOTTLENECK | {D, P, R} | +| O2 complementary direct tie | `P and R` | `P and D` | ENRICHER | {D, P, R} | +| O3 captive driver, mobile rider | `P` | `P or D` | CAPTURE | {D, P} | +| O4 mobile driver, captive rider | `P or R` | `P` | CAPTURE | {P, R} | +| O5 both mobile | `P or R` | `P or D` | BYPASSED | {D, R} | + +Giving only the driver an outside option does not free the platform; it moves the lock-in to the rider +(O3 → O4). Only symmetric options remove the platform from the core (O5). These are readings of a model; +what a platform, a drivers' collective or a regulator should *do* given them is the strategic model still +to be built. + +## Where AI enters, and what it did + +[`encode/`](encode/) holds the AI step: a JSON schema, a **drafter** prompt (rival encodings with verbatim +evidence and a prediction) and an **adversary** prompt (the most different readings the evidence still +permits: commit vs convey, substitutability, outside options). Both are model-agnostic. The checker +[`irreducibility/encode_check.py`](irreducibility/encode_check.py) rejects a rule with no evidence, a quote +not found verbatim in the source, a mediator rule with no alternative, or an encoding with no prediction. + +Logged runs (Claude Sonnet 5.5, 26 Oct 2026, prompts as committed, case prose only, no tools): + +- **Gig dispatch, drafter** ([`ai_draft.json`](examples/01_gig_dispatch/ai_draft.json)): two rival + encodings, identical to the human encodings A and B; all quotes verbatim; both predictions held. It did + not encode the driver pool. +- **Gig dispatch, adversary** ([`ai_draft_plus_adversary.json`](examples/01_gig_dispatch/ai_draft_plus_adversary.json)): + found the driver pool and the substitute direct tie, and declined a complement tie as unsupported by ¶6. + **Both of its predictions failed** when computed: it expected the pooled structure to stay triadic (it + is dyadic, core {P, R}) and the direct-tie structure to be dyadic (it is triadic with the platform + bypassed, core {D, R}). The model found the readings; PyPhi decided them. +- **Insurance claim, drafter** ([`ai_draft.json`](examples/02_insurance_claim/ai_draft.json)): for four of + five designs it declined to write rules the prose does not specify and said what evidence was missing. + The checker rejects the file (9 problems), which is the gate doing its job. + +Nothing yet reads interview transcripts or documents at scale; that, and agreement between the AI drafter +and two human coders, is the next stage. + +## Run it on your own structure + +1. Write the case material to a file and number its paragraphs or give each excerpt a locator. +2. Copy an `encodings.json`, set the `parties` and the `mediator`, and write each party's rule as a + Boolean expression over party labels (`and`, `or`, `not`, `xor`, `0`, `1`). Cite a verbatim quote for + every rule and fix the prediction. Or paste the case into [`encode/PROMPT_drafter.md`](encode/PROMPT_drafter.md), + then [`PROMPT_adversary.md`](encode/PROMPT_adversary.md), with any model. +3. `python -m irreducibility.encode_check your.json` +4. `python -m irreducibility.analyze your.json --json report.json` + +The field protocol for real arrangements (bounding the act, coding the bits, eliciting rules from +evidence, inter-rater reliability, ethics) is in [`protocol/`](protocol/). + +## Reproduce every number + +```bash +python reproduce.py # 17 checks, about 2 minutes on a laptop +pytest -q # 19 tests +``` + +| Check | What it reproduces | +|---|---| +| `instrument-controls` | the controls and five reference forms | +| `example-*` | the four worked examples (gig dispatch, insurance claim, code-review gate, dealer vs clearinghouse) | +| `ai-draft-gig`, `ai-draft-insurance-rejected` | the logged AI runs, checked and computed | +| `census` | 24 of 256 strict-mediation structures are triadic; 24/160 where the mediator reads both parties, 0/96 otherwise | +| `field-mocks` | ten mock organizations: 9/10 match the reading fixed before computing; 4 flip under a second defensible encoding | +| `mediator-in-core`, `enricher-regime` | regime frequencies over 500 random forms; the outside-option law (60/60) | +| `contingent-irreducibility` | the bypass test separates intrinsic from contingent intermediation | +| `design-operations` | three design levers (binding, liveness, requirement), each with a build and an inverse break | +| `thompson-ordering` | Thompson's pooled < sequential < reciprocal ordering collapses at the top step | +| `adversarial-coding` | an evidence-limited adversary flips the point verdict on 101/101 contested accounts | +| `proxies` | two time-series proxies separate dyadic from triadic at rank-AUC 0.563 and 0.629 (0.5 is chance) | + +## Scope + +- Verdicts are exact **for the stated encoding**. The same arrangement can be encoded more than one + defensible way, which is why the pipeline reports every encoding and the rule the verdict turns on. +- A verdict on a model is evidence about the model. It is not, by itself, evidence that real workers + experience an arrangement as irreducible; that needs fieldwork. +- Exact Φ is practical up to about ten binary nodes. Coordination units of three to five parties compute in + seconds. +- The examples are stipulated descriptions written to demonstrate the method, and the lab's results for + them were known when they were written; their predictions record the naive reading, not a blind test. + +## Layout + +``` +irreducibility/ core.py (PyPhi wrapper) · validate.py · regime.py · contingency.py · spread.py + rule_to_phi.py · rules.py · encoding.py · encode_check.py · analyze.py +encode/ SCHEMA.json · PROMPT_drafter.md · PROMPT_adversary.md +examples/ 01_gig_dispatch · 02_insurance_claim · 03_code_review_gate · 04_dealer_vs_clearinghouse +studies/ the scripts behind the reference results (census, mocks, regimes, design operations, ...) +protocol/ field protocol, coding scheme, interview guide, ethics, predictions fixed in advance +tests/ pytest suite +reproduce.py one command for every number +``` + +MIT licensed. PyPhi is developed by the Tononi lab (Mayner et al., 2018, *PLOS Computational Biology*); IIT +4.0 is specified in Albantakis et al. (2023, *PLOS Computational Biology*). diff --git a/irreducibility-pipeline/encode/PROMPT_adversary.md b/irreducibility-pipeline/encode/PROMPT_adversary.md new file mode 100644 index 000000000..b3fcf1159 --- /dev/null +++ b/irreducibility-pipeline/encode/PROMPT_adversary.md @@ -0,0 +1,42 @@ +# Prompt: search for the defensible encodings that would change the answer + +Run this after the drafter, on the same case material and the drafter's JSON. The adversary's job +is to stop a single convenient reading from standing as "the" verdict. A sampled sensitivity check +is not enough: in the lab's tests, an adversary limited to evidence-permitted readings could flip +the verdict on every contested account it was given. + +--- + +You are given a coordinative structure's case material and a set of drafted encodings. Your task is to +find the **most different readings the evidence still permits**. You do not compute anything. + +**Case material** + +``` +<> +``` + +**Drafted encodings** + +``` +<> +``` + +For each of the three forces below, write at most one new encoding with role `"rival"`, each with +verbatim evidence for every rule. Write it only if the evidence actually permits the reading; if it does +not, say which passage rules it out. + +1. **Commit versus convey.** If the drafts have the mediator committing on a joint condition, find the + strongest evidence that it only relays one party's signal, or only stores inputs for a human. If + the drafts have it relaying, find the strongest evidence that it commits. +2. **Substitutability.** If a party could be one of several interchangeable parties (drivers in a pool, + sellers of the same item, reviewers on a rota), encode the pool with `or` and separate labels for + the pool members. +3. **Spectators and outside options.** If a party watches but does not act, add it as a node. If a + party can reach another without the mediator, encode the direct tie as a complement (`and`) or a + substitute (`or`), according to what the evidence says about whether they need the mediator as + well. + +For each new encoding, state its prediction and reason before anything is computed, as the drafter did. + +**Output:** the drafter's JSON with your encodings appended to `encodings`. No prose outside the JSON. diff --git a/irreducibility-pipeline/encode/PROMPT_drafter.md b/irreducibility-pipeline/encode/PROMPT_drafter.md new file mode 100644 index 000000000..8d7597618 --- /dev/null +++ b/irreducibility-pipeline/encode/PROMPT_drafter.md @@ -0,0 +1,44 @@ +# Prompt: draft rival encodings of a coordinative structure + +Model-agnostic. Paste the case material where marked. The output must validate against +`encode/SCHEMA.json` and pass `python -m irreducibility.encode_check `, which rejects any rule +that lacks evidence, any mediator rule without an alternative, and any encoding without a +prediction. + +--- + +You are encoding one coordinative structure as a small Boolean model so that its irreducibility can be +computed exactly. You draft; a researcher approves. Do not compute anything and do not guess what the +computation will return. + +**Case material** + +``` +<> +``` + +**Steps** + +1. **Parties.** Use the party list you are given. For each party, state what its bit = 1 means and what + that binary collapses. +2. **Who reads whom.** A party reads another only if the evidence shows its action depends on the + other's state. An edge needs a documented process, a log, or agreement among the parties. Record a + single unsupported claim as an alternative, not an edge. +3. **The function.** Write each party's next state as a Boolean expression over the parties it reads, + using `and`, `or`, `not`, `xor`, `0`, `1` and party labels only. For the mediating system, decide + whether the evidence shows it **commits** on a joint condition (e.g. `D and R`), **conveys** a + signal one party sets (e.g. `D`), or **stores** inputs for someone else to decide. Treat a pool of + interchangeable parties as `or` over the pool. +4. **Evidence.** For every rule, quote the passage it rests on verbatim, with its source and locator. + If no passage supports a rule, do not write the rule; say what evidence is missing. +5. **The alternative.** For the mediator's rule, and for any rule the evidence leaves open, give the + alternative rule the evidence does not rule out and say why. +6. **Rival encodings.** Where the parties' accounts conflict (for example, the platform says it + commits and the workers say it suggests), do not resolve the conflict by majority. Write one + encoding per account, with role `"rival"`, and name whose account each one is. +7. **Prediction.** For each encoding, state the verdict you expect (`dyadic` or `triadic`), the parties + you expect in the core, and a one-sentence structural reason. This prediction is fixed before + anything is computed and is scored afterwards. + +**Output:** one JSON object in the format of `encode/SCHEMA.json`. No prose outside the JSON. diff --git a/irreducibility-pipeline/encode/SCHEMA.json b/irreducibility-pipeline/encode/SCHEMA.json new file mode 100644 index 000000000..cdebbe9a4 --- /dev/null +++ b/irreducibility-pipeline/encode/SCHEMA.json @@ -0,0 +1,189 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Encodings of one coordinative structure", + "description": "One coordinative structure, several rival encodings. Each encoding is a Boolean model of who reads whom and what each party commits, with the evidence behind every rule and the prediction fixed before computing. irreducibility.encoding.validate enforces the evidence, alternative and prediction rules.", + "type": "object", + "required": [ + "structure", + "parties", + "encodings" + ], + "properties": { + "structure": { + "type": "string", + "description": "the bounded recurring act, e.g. 'Gig dispatch: one match'" + }, + "source": { + "type": "string" + }, + "parties": { + "type": "array", + "minItems": 2, + "items": { + "type": "object", + "required": [ + "label", + "name", + "active" + ], + "properties": { + "label": { + "type": "string", + "pattern": "^[A-Za-z][A-Za-z0-9_]*$" + }, + "name": { + "type": "string" + }, + "active": { + "type": "string", + "description": "what the party's bit = 1 means; say what it collapses" + } + } + } + }, + "mediator": { + "type": "string", + "description": "label of the mediating system, if any" + }, + "encodings": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "id", + "rules", + "evidence", + "predicted" + ], + "properties": { + "id": { + "type": "string" + }, + "account": { + "type": "string", + "description": "whose account or which design this encoding represents" + }, + "role": { + "enum": [ + "rival", + "design" + ], + "description": "rival = a competing reading of the same arrangement; design = a deliberate change to it" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "override the party list (e.g. pooled drivers)" + }, + "rules": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "party -> Boolean expression over party labels using and, or, not, xor, 0, 1" + }, + "evidence": { + "type": "object", + "additionalProperties": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "source", + "locator", + "quote" + ], + "properties": { + "source": { + "type": "string", + "description": "file or document the passage comes from" + }, + "locator": { + "type": "string", + "description": "paragraph, page, timestamp or line" + }, + "quote": { + "type": "string", + "minLength": 1, + "description": "the passage, verbatim" + } + } + } + } + }, + "alternative": { + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "rule", + "why" + ], + "properties": { + "rule": { + "type": "string" + }, + "why": { + "type": "string" + } + } + } + }, + "predicted": { + "type": "object", + "required": [ + "structure", + "reason" + ], + "properties": { + "structure": { + "enum": [ + "dyadic", + "triadic" + ] + }, + "core": { + "type": "array", + "items": { + "type": "string" + } + }, + "reason": { + "type": "string" + } + } + }, + "bypass": { + "type": "object", + "required": [ + "party", + "downstream", + "upstream" + ], + "properties": { + "party": { + "type": "string" + }, + "downstream": { + "type": "string" + }, + "upstream": { + "type": "string" + }, + "mode": { + "enum": [ + "replace", + "add" + ] + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/irreducibility-pipeline/examples/01_gig_dispatch/ai_adversary_raw.json b/irreducibility-pipeline/examples/01_gig_dispatch/ai_adversary_raw.json new file mode 100644 index 000000000..3c0d74aaa --- /dev/null +++ b/irreducibility-pipeline/examples/01_gig_dispatch/ai_adversary_raw.json @@ -0,0 +1,148 @@ +{ + "new_encodings": [ + { + "id": "driver_pool", + "account": "Several idle drivers in one zone are interchangeable candidates, and the platform commits when any one eligible driver and a confirmed rider are present. Each driver acts when a trip is shown, and the rider acts when told a driver is assigned.", + "role": "rival", + "labels": [ + "D1", + "D2", + "P", + "R" + ], + "rules": { + "P": "(D1 or D2) and R", + "D1": "P", + "D2": "P", + "R": "P" + }, + "evidence": { + "P": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The system assigns a trip only when an eligible driver is available and a rider has confirmed the request" + }, + { + "source": "prose.md", + "locator": "¶5", + "quote": "Any eligible driver in range may be assigned." + } + ], + "D1": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + } + ], + "D2": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + }, + { + "source": "prose.md", + "locator": "¶5", + "quote": "In dense hours several drivers are idle in the same zone." + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "Once it says a driver is assigned, I wait at the curb." + } + ] + }, + "alternative": { + "P": { + "rule": "D1 or D2", + "why": "Under the drivers' account in ¶3, the platform only relays whichever driver is nearby: \"The app just pings me with whatever is nearby.\" That reading drops the rider's confirmation from the platform's rule." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "D1", + "D2", + "P", + "R" + ], + "reason": "P is active only when some driver and the rider are both active, so neither side reaches the other without P. The driver pool adds substitutes on the driver side but leaves the platform in the middle. The two drivers should enter the core together as interchangeable members, with P and R." + } + }, + { + "id": "direct_contact_substitute", + "account": "Drivers and riders who have each other's numbers can arrange a trip directly. The platform is one route to a match, and the direct tie replaces it when the app fails. Where off-app contact is banned, this tie does not exist, so this reading holds only for the cities with contact.", + "role": "rival", + "rules": { + "P": "D and R", + "D": "P or R", + "R": "P or D" + }, + "evidence": { + "P": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "the assignment is binding on both and sets the fare" + } + ], + "D": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "Some drivers and riders exchange numbers and arrange repeat trips directly." + }, + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "If the app is slow I just text my regular driver." + }, + { + "source": "prose.md", + "locator": "¶4", + "quote": "Once it says a driver is assigned, I wait at the curb." + } + ] + }, + "alternative": { + "P": { + "rule": "D", + "why": "The drivers' account in ¶3 treats the platform as following the driver: \"It's a suggestion, it follows what I do.\"" + } + }, + "predicted": { + "structure": "dyadic", + "core": [ + "D", + "R" + ], + "reason": "The direct tie lets D and R each be active without P, and each stays active if the other is. The pair D-R sustains itself, so P drops out of the core. The match no longer depends on the mediator." + } + } + ], + "not_permitted": [ + { + "reading": "Third commit-versus-convey reading", + "why": "The drafts already hold the two readings the text supports, which are the manual's commit in ¶2 and the driver's suggestion in ¶3. No passage supports a third, such as the platform following the rider alone." + }, + { + "reading": "Direct tie as a complement (D or R needs both P and the other party)", + "why": "¶6 says \"If the app is slow I just text my regular driver\". The rider goes around the app instead of needing it as well, so the tie is a substitute. No passage says the parties need the mediator in addition to the direct contact." + }, + { + "reading": "Direct tie present for all drivers and riders", + "why": "¶6 says \"Other cities ban off-app arrangements and drivers there have no way to reach riders except through the platform.\" In those cities the direct tie is absent, so the substitute encoding cannot be applied across all cities." + } + ] +} \ No newline at end of file diff --git a/irreducibility-pipeline/examples/01_gig_dispatch/ai_draft.json b/irreducibility-pipeline/examples/01_gig_dispatch/ai_draft.json new file mode 100644 index 000000000..fce94c2ba --- /dev/null +++ b/irreducibility-pipeline/examples/01_gig_dispatch/ai_draft.json @@ -0,0 +1,131 @@ +{ + "structure": "Gig dispatch: one match between a driver, the dispatch platform and a rider", + "source": "prose.md", + "parties": [ + { + "label": "D", + "name": "driver", + "active": "1 = the driver is available in the zone and goes when a trip is shown; 0 = waiting. This collapses location, eligibility and the accept decision into one bit." + }, + { + "label": "P", + "name": "dispatch platform", + "active": "1 = a trip is assigned and shown to the parties; 0 = no assignment. This collapses matching, pricing and notification into one bit." + }, + { + "label": "R", + "name": "rider", + "active": "1 = the rider has requested and confirmed a ride, then waits at the curb; 0 = no live request. This collapses opening the app, requesting, confirming and waiting into one bit." + } + ], + "mediator": "P", + "encodings": [ + { + "id": "platform_commits", + "account": "The platform's operations manual: the system commits on a joint condition of driver availability and rider confirmation.", + "role": "rival", + "rules": { + "P": "D and R", + "D": "P", + "R": "P" + }, + "evidence": { + "P": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The system assigns a trip only when an eligible driver is available and a rider has confirmed the request; the assignment is binding on both and sets the fare." + } + ], + "D": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "Once it says a driver is assigned, I wait at the curb." + } + ] + }, + "alternative": { + "P": { + "rule": "D", + "why": "The drivers' account in ¶3 says the app only conveys what the driver sets. The evidence does not settle which account is right, so it is encoded as a separate rival." + }, + "R": { + "rule": "P or D", + "why": "One rider in ¶6 texts a regular driver when the app is slow. This is a single unsupported claim, and other cities ban off-app arrangements. It is recorded as an alternative, not an edge." + }, + "D": { + "rule": "P or R", + "why": "The same ¶6 off-app contact would let a driver act on a rider directly. Only some drivers and riders do this, and no log or agreement among the parties documents it." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "D", + "P", + "R" + ], + "reason": "The platform's rule is an AND of driver and rider that neither party can compute alone, and both parties then read the platform's output, so the loop through the mediator should not reduce to pairwise links." + } + }, + { + "id": "drivers_suggestion", + "account": "The drivers' account: the app conveys a signal the driver sets and follows what the driver does.", + "role": "rival", + "rules": { + "P": "D", + "D": "P", + "R": "P" + }, + "evidence": { + "P": [ + { + "source": "prose.md", + "locator": "¶3", + "quote": "The app just pings me with whatever is nearby. I decide. It's a suggestion, it follows what I do." + } + ], + "D": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "Once it says a driver is assigned, I wait at the curb." + } + ] + }, + "alternative": { + "P": { + "rule": "D and R", + "why": "The manual in ¶2 says assignment requires rider confirmation and is binding. A single driver's description does not rule this out, and it is encoded as the other rival." + }, + "R": { + "rule": "P or D", + "why": "One rider in ¶6 texts a regular driver when the app is slow. This is a single unsupported claim, not an edge." + } + }, + "predicted": { + "structure": "dyadic", + "core": [ + "D", + "P" + ], + "reason": "If the platform only relays the driver's state, the driver and platform form a two-party loop, and the rider only reads the platform's output without feeding back into anyone." + } + } + ] +} \ No newline at end of file diff --git a/irreducibility-pipeline/examples/01_gig_dispatch/ai_draft_plus_adversary.json b/irreducibility-pipeline/examples/01_gig_dispatch/ai_draft_plus_adversary.json new file mode 100644 index 000000000..998db4b95 --- /dev/null +++ b/irreducibility-pipeline/examples/01_gig_dispatch/ai_draft_plus_adversary.json @@ -0,0 +1,275 @@ +{ + "structure": "Gig dispatch: one match between a driver, the dispatch platform and a rider", + "source": "prose.md", + "parties": [ + { + "label": "D", + "name": "driver", + "active": "1 = the driver is available in the zone and goes when a trip is shown; 0 = waiting. This collapses location, eligibility and the accept decision into one bit." + }, + { + "label": "P", + "name": "dispatch platform", + "active": "1 = a trip is assigned and shown to the parties; 0 = no assignment. This collapses matching, pricing and notification into one bit." + }, + { + "label": "R", + "name": "rider", + "active": "1 = the rider has requested and confirmed a ride, then waits at the curb; 0 = no live request. This collapses opening the app, requesting, confirming and waiting into one bit." + } + ], + "mediator": "P", + "encodings": [ + { + "id": "platform_commits", + "account": "The platform's operations manual: the system commits on a joint condition of driver availability and rider confirmation.", + "role": "rival", + "rules": { + "P": "D and R", + "D": "P", + "R": "P" + }, + "evidence": { + "P": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The system assigns a trip only when an eligible driver is available and a rider has confirmed the request; the assignment is binding on both and sets the fare." + } + ], + "D": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "Once it says a driver is assigned, I wait at the curb." + } + ] + }, + "alternative": { + "P": { + "rule": "D", + "why": "The drivers' account in ¶3 says the app only conveys what the driver sets. The evidence does not settle which account is right, so it is encoded as a separate rival." + }, + "R": { + "rule": "P or D", + "why": "One rider in ¶6 texts a regular driver when the app is slow. This is a single unsupported claim, and other cities ban off-app arrangements. It is recorded as an alternative, not an edge." + }, + "D": { + "rule": "P or R", + "why": "The same ¶6 off-app contact would let a driver act on a rider directly. Only some drivers and riders do this, and no log or agreement among the parties documents it." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "D", + "P", + "R" + ], + "reason": "The platform's rule is an AND of driver and rider that neither party can compute alone, and both parties then read the platform's output, so the loop through the mediator should not reduce to pairwise links." + } + }, + { + "id": "drivers_suggestion", + "account": "The drivers' account: the app conveys a signal the driver sets and follows what the driver does.", + "role": "rival", + "rules": { + "P": "D", + "D": "P", + "R": "P" + }, + "evidence": { + "P": [ + { + "source": "prose.md", + "locator": "¶3", + "quote": "The app just pings me with whatever is nearby. I decide. It's a suggestion, it follows what I do." + } + ], + "D": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "Once it says a driver is assigned, I wait at the curb." + } + ] + }, + "alternative": { + "P": { + "rule": "D and R", + "why": "The manual in ¶2 says assignment requires rider confirmation and is binding. A single driver's description does not rule this out, and it is encoded as the other rival." + }, + "R": { + "rule": "P or D", + "why": "One rider in ¶6 texts a regular driver when the app is slow. This is a single unsupported claim, not an edge." + } + }, + "predicted": { + "structure": "dyadic", + "core": [ + "D", + "P" + ], + "reason": "If the platform only relays the driver's state, the driver and platform form a two-party loop, and the rider only reads the platform's output without feeding back into anyone." + } + }, + { + "id": "driver_pool", + "account": "Several idle drivers in one zone are interchangeable candidates, and the platform commits when any one eligible driver and a confirmed rider are present. Each driver acts when a trip is shown, and the rider acts when told a driver is assigned.", + "role": "rival", + "labels": [ + "D1", + "D2", + "P", + "R" + ], + "rules": { + "P": "(D1 or D2) and R", + "D1": "P", + "D2": "P", + "R": "P" + }, + "evidence": { + "P": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The system assigns a trip only when an eligible driver is available and a rider has confirmed the request" + }, + { + "source": "prose.md", + "locator": "¶5", + "quote": "Any eligible driver in range may be assigned." + } + ], + "D1": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + } + ], + "D2": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + }, + { + "source": "prose.md", + "locator": "¶5", + "quote": "In dense hours several drivers are idle in the same zone." + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "Once it says a driver is assigned, I wait at the curb." + } + ] + }, + "alternative": { + "P": { + "rule": "D1 or D2", + "why": "Under the drivers' account in ¶3, the platform only relays whichever driver is nearby: \"The app just pings me with whatever is nearby.\" That reading drops the rider's confirmation from the platform's rule." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "D1", + "D2", + "P", + "R" + ], + "reason": "P is active only when some driver and the rider are both active, so neither side reaches the other without P. The driver pool adds substitutes on the driver side but leaves the platform in the middle. The two drivers should enter the core together as interchangeable members, with P and R." + } + }, + { + "id": "direct_contact_substitute", + "account": "Drivers and riders who have each other's numbers can arrange a trip directly. The platform is one route to a match, and the direct tie replaces it when the app fails. Where off-app contact is banned, this tie does not exist, so this reading holds only for the cities with contact.", + "role": "rival", + "rules": { + "P": "D and R", + "D": "P or R", + "R": "P or D" + }, + "evidence": { + "P": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "the assignment is binding on both and sets the fare" + } + ], + "D": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "Some drivers and riders exchange numbers and arrange repeat trips directly." + }, + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "If the app is slow I just text my regular driver." + }, + { + "source": "prose.md", + "locator": "¶4", + "quote": "Once it says a driver is assigned, I wait at the curb." + } + ] + }, + "alternative": { + "P": { + "rule": "D", + "why": "The drivers' account in ¶3 treats the platform as following the driver: \"It's a suggestion, it follows what I do.\"" + } + }, + "predicted": { + "structure": "dyadic", + "core": [ + "D", + "R" + ], + "reason": "The direct tie lets D and R each be active without P, and each stays active if the other is. The pair D-R sustains itself, so P drops out of the core. The match no longer depends on the mediator." + } + } + ], + "not_permitted": [ + { + "reading": "Third commit-versus-convey reading", + "why": "The drafts already hold the two readings the text supports, which are the manual's commit in ¶2 and the driver's suggestion in ¶3. No passage supports a third, such as the platform following the rider alone." + }, + { + "reading": "Direct tie as a complement (D or R needs both P and the other party)", + "why": "¶6 says \"If the app is slow I just text my regular driver\". The rider goes around the app instead of needing it as well, so the tie is a substitute. No passage says the parties need the mediator in addition to the direct contact." + }, + { + "reading": "Direct tie present for all drivers and riders", + "why": "¶6 says \"Other cities ban off-app arrangements and drivers there have no way to reach riders except through the platform.\" In those cities the direct tie is absent, so the substitute encoding cannot be applied across all cities." + } + ] +} \ No newline at end of file diff --git a/irreducibility-pipeline/examples/01_gig_dispatch/encodings.json b/irreducibility-pipeline/examples/01_gig_dispatch/encodings.json new file mode 100644 index 000000000..1b19f805b --- /dev/null +++ b/irreducibility-pipeline/examples/01_gig_dispatch/encodings.json @@ -0,0 +1,415 @@ +{ + "structure": "Gig dispatch: one match (stipulated description)", + "source": "prose.md", + "parties": [ + { + "label": "D", + "name": "driver", + "active": "available and accepting this match" + }, + { + "label": "P", + "name": "dispatch platform", + "active": "commits this match" + }, + { + "label": "R", + "name": "rider", + "active": "requesting and accepting this match" + } + ], + "mediator": "P", + "encodings": [ + { + "id": "A", + "account": "platform's account: dispatch commits a binding match", + "role": "rival", + "rules": { + "D": "P", + "P": "D and R", + "R": "P" + }, + "evidence": { + "D": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + } + ], + "P": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The system assigns a trip only when an eligible driver is available and a rider has confirmed the request" + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "Once it says a driver is assigned, I wait at the curb." + } + ] + }, + "alternative": { + "P": { + "rule": "D", + "why": "Drivers describe dispatch as a suggestion that follows the driver (¶3); the evidence does not rule out a relay." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "D", + "P", + "R" + ], + "reason": "The platform commits a match neither party sets alone, and both act on it." + }, + "bypass": { + "party": "P", + "downstream": "R", + "upstream": "D", + "mode": "replace" + } + }, + { + "id": "B", + "account": "driver's account: dispatch relays a suggestion", + "role": "rival", + "rules": { + "D": "P", + "P": "D", + "R": "P" + }, + "evidence": { + "D": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + } + ], + "P": [ + { + "source": "prose.md", + "locator": "¶3", + "quote": "It's a suggestion, it follows what I do." + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "Once it says a driver is assigned, I wait at the curb." + } + ] + }, + "alternative": { + "P": { + "rule": "D and R", + "why": "The manual describes a binding assignment that needs both driver and rider (¶2)." + } + }, + "predicted": { + "structure": "dyadic", + "reason": "A relay that only follows the driver commits nothing of its own; the rider is downstream." + } + }, + { + "id": "C", + "account": "pooled drivers: any eligible driver will do", + "role": "rival", + "labels": [ + "D1", + "D2", + "P", + "R" + ], + "rules": { + "D1": "P", + "D2": "P", + "P": "(D1 or D2) and R", + "R": "P" + }, + "evidence": { + "D1": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + } + ], + "D2": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "When the trip comes up I go. If nothing comes up I wait." + } + ], + "P": [ + { + "source": "prose.md", + "locator": "¶5", + "quote": "Any eligible driver in range may be assigned." + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "Once it says a driver is assigned, I wait at the curb." + } + ] + }, + "alternative": { + "P": { + "rule": "D1 and R", + "why": "Outside dense hours one driver is in range and the match needs that driver (¶1)." + } + }, + "predicted": { + "structure": "dyadic", + "reason": "Interchangeable drivers make no single driver pivotal, so the structure factors." + } + }, + { + "id": "O1", + "account": "outside options: both captive (off-app contact banned)", + "role": "design", + "rules": { + "D": "P", + "P": "D and R", + "R": "P" + }, + "evidence": { + "D": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "drivers there have no way to reach riders except through the platform" + } + ], + "P": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The system assigns a trip only when an eligible driver is available and a rider has confirmed the request" + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "drivers there have no way to reach riders except through the platform" + } + ] + }, + "alternative": { + "P": { + "rule": "D", + "why": "Drivers describe dispatch as a suggestion that follows the driver (¶3); the evidence does not rule out a relay." + } + }, + "predicted": { + "structure": "triadic", + "reason": "The platform's core is itself plus the parties with no outside option.", + "core": [ + "D", + "P", + "R" + ] + } + }, + { + "id": "O2", + "account": "outside options: complementary direct tie (repeat trips need app and contact)", + "role": "design", + "rules": { + "D": "P and R", + "P": "D and R", + "R": "P and D" + }, + "evidence": { + "D": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "If the app is slow I just text my regular driver." + } + ], + "P": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The system assigns a trip only when an eligible driver is available and a rider has confirmed the request" + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "If the app is slow I just text my regular driver." + } + ] + }, + "alternative": { + "P": { + "rule": "D", + "why": "Drivers describe dispatch as a suggestion that follows the driver (¶3); the evidence does not rule out a relay." + } + }, + "predicted": { + "structure": "triadic", + "reason": "The platform's core is itself plus the parties with no outside option.", + "core": [ + "D", + "P", + "R" + ] + } + }, + { + "id": "O3", + "account": "outside options: captive driver, mobile rider", + "role": "design", + "rules": { + "D": "P", + "P": "D and R", + "R": "P or D" + }, + "evidence": { + "D": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "drivers there have no way to reach riders except through the platform" + } + ], + "P": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The system assigns a trip only when an eligible driver is available and a rider has confirmed the request" + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "If the app is slow I just text my regular driver." + } + ] + }, + "alternative": { + "P": { + "rule": "D", + "why": "Drivers describe dispatch as a suggestion that follows the driver (¶3); the evidence does not rule out a relay." + } + }, + "predicted": { + "structure": "triadic", + "reason": "The platform's core is itself plus the parties with no outside option.", + "core": [ + "D", + "P" + ] + } + }, + { + "id": "O4", + "account": "outside options: mobile driver, captive rider", + "role": "design", + "rules": { + "D": "P or R", + "P": "D and R", + "R": "P" + }, + "evidence": { + "D": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "If the app is slow I just text my regular driver." + } + ], + "P": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The system assigns a trip only when an eligible driver is available and a rider has confirmed the request" + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "drivers there have no way to reach riders except through the platform" + } + ] + }, + "alternative": { + "P": { + "rule": "D", + "why": "Drivers describe dispatch as a suggestion that follows the driver (¶3); the evidence does not rule out a relay." + } + }, + "predicted": { + "structure": "triadic", + "reason": "The platform's core is itself plus the parties with no outside option.", + "core": [ + "P", + "R" + ] + } + }, + { + "id": "O5", + "account": "outside options: both mobile (substitute direct tie)", + "role": "design", + "rules": { + "D": "P or R", + "P": "D and R", + "R": "P or D" + }, + "evidence": { + "D": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "If the app is slow I just text my regular driver." + } + ], + "P": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The system assigns a trip only when an eligible driver is available and a rider has confirmed the request" + } + ], + "R": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "If the app is slow I just text my regular driver." + } + ] + }, + "alternative": { + "P": { + "rule": "D", + "why": "Drivers describe dispatch as a suggestion that follows the driver (¶3); the evidence does not rule out a relay." + } + }, + "predicted": { + "structure": "triadic", + "reason": "The platform's core is itself plus the parties with no outside option.", + "core": [ + "D", + "R" + ] + } + } + ] +} \ No newline at end of file diff --git a/irreducibility-pipeline/examples/01_gig_dispatch/prose.md b/irreducibility-pipeline/examples/01_gig_dispatch/prose.md new file mode 100644 index 000000000..a96e6037e --- /dev/null +++ b/irreducibility-pipeline/examples/01_gig_dispatch/prose.md @@ -0,0 +1,24 @@ +# Gig dispatch: one match + +A stipulated description, written to demonstrate the pipeline. It is not field data. Paragraph numbers +are the locators the encodings cite. + +**¶1.** The recurring act is a single match. A driver waits near a pickup zone, a rider opens the app and +requests a ride, and the dispatch system decides whether to pair this driver with this rider. + +**¶2.** The platform's operations manual describes dispatch this way: "The system assigns a trip only +when an eligible driver is available and a rider has confirmed the request; the assignment is binding +on both and sets the fare." + +**¶3.** Drivers describe it differently. One driver said: "The app just pings me with whatever is nearby. +I decide. It's a suggestion, it follows what I do." + +**¶4.** Drivers act on what the system shows them: "When the trip comes up I go. If nothing comes up I +wait." Riders do the same: "Once it says a driver is assigned, I wait at the curb." + +**¶5.** In dense hours several drivers are idle in the same zone. The manual says: "Any eligible driver +in range may be assigned." + +**¶6.** Outside the app, contact varies. Some drivers and riders exchange numbers and arrange repeat +trips directly. One rider said: "If the app is slow I just text my regular driver." Other cities ban +off-app arrangements and drivers there have no way to reach riders except through the platform. diff --git a/irreducibility-pipeline/examples/02_insurance_claim/ai_draft.json b/irreducibility-pipeline/examples/02_insurance_claim/ai_draft.json new file mode 100644 index 000000000..84991b399 --- /dev/null +++ b/irreducibility-pipeline/examples/02_insurance_claim/ai_draft.json @@ -0,0 +1,239 @@ +{ + "structure": "Insurance claim adjudication: who decides a claim? Five stipulated routing designs (claimant C, auto-adjudication engine E, human adjuster A)", + "source": "prose.md", + "parties": [ + { + "label": "C", + "name": "Claimant", + "active": "1 = paid, 0 = still pursuing. This collapses the whole claim lifecycle (filed, under review, partly paid, denied, appealed, closed) into paid or not paid." + }, + { + "label": "E", + "name": "Auto-adjudication engine", + "active": "1 = approves, 0 = flags. This collapses the engine's screening score, the claim's size and type, and the reason for a flag into a single approve/flag bit." + }, + { + "label": "A", + "name": "Human adjuster", + "active": "1 = acts on the claim, 0 = does not. This collapses approve, deny, adjust, request information and override into one 'acts' bit." + } + ], + "mediator": "E", + "encodings": [ + { + "id": "design1_pipe", + "account": "Stipulated Design 1 (the pipe). The prose names all three edges but does not state the polarity of the engine and adjuster bits, so the NOT in A is my reading, not the source's. No conflicting accounts, so there are no rival encodings.", + "role": "design", + "rules": { + "E": "C", + "A": "not E", + "C": "A" + }, + "evidence": { + "E": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The engine reads the claimant, the adjuster reads the engine, and the claimant reads the adjuster." + }, + { + "source": "prose.md", + "locator": "¶2", + "quote": "The engine forwards every claim to the adjuster; the adjuster's decision goes back to the claimant." + } + ], + "A": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The engine reads the claimant, the adjuster reads the engine, and the claimant reads the adjuster." + }, + { + "source": "prose.md", + "locator": "¶2", + "quote": "The engine forwards every claim to the adjuster; the adjuster's decision goes back to the claimant." + } + ], + "C": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The engine reads the claimant, the adjuster reads the engine, and the claimant reads the adjuster." + }, + { + "source": "prose.md", + "locator": "¶2", + "quote": "The engine forwards every claim to the adjuster; the adjuster's decision goes back to the claimant." + } + ] + }, + "alternative": { + "E": { + "rule": "not C", + "why": "The engine is the mediator. The evidence shows it conveys the claimant's state ('forwards every claim'), but it gives no polarity. A reversed mapping between the claimant bit and the flag is not ruled out. Neither is a rule that also commits on a second condition, since ¶1 says the engine 'screens' the claim." + }, + "A": { + "rule": "E", + "why": "The prose gives the edge (the adjuster reads the engine) but not the polarity. I took a forwarded claim to mean flagged (E = 0) and the adjuster acting (A = 1). A plain copy is not ruled out." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "C", + "E", + "A" + ], + "reason": "Each party reads exactly one other and the three form a single cycle, so no pair of parties is closed under its own inputs and the mediator carries the loop." + } + }, + { + "id": "design2_threshold_auto_approval", + "account": "Stipulated Design 2 (threshold auto-approval). The engine's rule is not written: the prose says small claims are approved, which depends on claim size, and names no party state as its input. The alternative below records this gap. The researcher must supply the engine's input before this encoding can be computed.", + "role": "design", + "rules": { + "C": "E and not A", + "A": "not E and not C" + }, + "evidence": { + "C": [ + { + "source": "prose.md", + "locator": "¶3", + "quote": "The claimant is paid when the engine approves and the adjuster has not intervened; the adjuster acts when the engine flags a claim the claimant is pursuing." + } + ], + "A": [ + { + "source": "prose.md", + "locator": "¶3", + "quote": "The claimant is paid when the engine approves and the adjuster has not intervened; the adjuster acts when the engine flags a claim the claimant is pursuing." + }, + { + "source": "prose.md", + "locator": "¶3", + "quote": "Small claims are approved automatically; the adjuster reviews only claims the engine flags." + } + ] + }, + "alternative": { + "E": { + "rule": "C", + "why": "Missing evidence: no passage says which party's state the engine reads in this design. 'Small claims are approved automatically' points to claim size, which is not a party bit, so the engine may be exogenous here. If the engine screens the claim the claimant filed, it could read C, but the prose does not say so." + } + }, + "predicted": { + "structure": "dyadic", + "core": [ + "C", + "A" + ], + "reason": "The documented edges give C and A a mutual loop while the engine has no documented input from either, so it acts as an external gate and not as a joint constraint." + } + }, + { + "id": "design3_fraud_flag_loop_learning", + "account": "Stipulated Design 3 (fraud-flag loop with override learning). The prose states that the engine's flag reads both the claim and the adjuster, but not the function. The adjuster's reading of the flag is the only other documented edge. The engine's rule and the claimant's rule are therefore not written, and the researcher must supply them.", + "role": "design", + "rules": { + "A": "not E" + }, + "evidence": { + "A": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "The engine flags claims for the adjuster and retrains on the adjuster's overrides." + } + ] + }, + "alternative": { + "E": { + "rule": "C and not A", + "why": "The prose says only 'The engine's flag reads both the claim and the adjuster.' So E depends on C and A, but the function is open. One commit-style reading is that the engine approves only a paid claim the adjuster has not overridden. Other joint functions (xor, or) are not ruled out." + }, + "C": { + "rule": "A", + "why": "Missing evidence: ¶4 says nothing about the claimant's rule. The pipe's rule (the claimant reads the adjuster's decision) would be the natural carry-over, but this paragraph does not state it." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "C", + "E", + "A" + ], + "reason": "The engine reads both the claim and the adjuster while the adjuster reads the engine, so the mediator joins two parties in a feedback loop. This prediction is provisional because the claimant's own rule is undocumented." + } + }, + { + "id": "design4_loop_without_learning", + "account": "Stipulated Design 4: the Design 3 loop with the engine no longer retraining on overrides. I read this as removing the engine's edge from the adjuster. That removal is my inference, since ¶5 does not name the edge. The engine's remaining rule and the claimant's rule are not documented, so neither is written.", + "role": "design", + "rules": { + "A": "not E" + }, + "evidence": { + "A": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "The engine flags claims for the adjuster and retrains on the adjuster's overrides." + }, + { + "source": "prose.md", + "locator": "¶5", + "quote": "The engine no longer retrains on overrides." + } + ] + }, + "alternative": { + "E": { + "rule": "C", + "why": "With the adjuster's input removed, the engine's flag still reads the claim (¶4), so a dependence on C alone is not ruled out. The prose gives no function, and the engine may read nothing from the parties." + }, + "C": { + "rule": "A", + "why": "Missing evidence: no passage states the claimant's rule in this design. The pipe's copy of the adjuster's decision is the likeliest, but it is not documented." + } + }, + "predicted": { + "structure": "dyadic", + "core": [], + "reason": "Without the engine's edge from the adjuster, influence runs from the engine to the adjuster only, so the engine is not part of any joint loop and no triad closes." + } + }, + { + "id": "design5_frozen_claimant", + "account": "Stipulated Design 5: the claimant's state no longer reads the decision. Only this one edge is documented and the prose does not say which other design it modifies. No rule is written for any party. The researcher must choose the base design and the claimant's replacement rule.", + "role": "design", + "rules": {}, + "evidence": { + "C": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "The claimant is not told the outcome until the file closes." + }, + { + "source": "prose.md", + "locator": "¶6", + "quote": "The claimant's state no longer reads the decision." + } + ] + }, + "alternative": { + "C": { + "rule": "0", + "why": "Missing evidence: the prose removes the claimant's input but gives no replacement. A constant (here 0, still pursuing) and a self-hold (C) both fit, and the evidence does not choose between them." + } + }, + "predicted": { + "structure": "dyadic", + "core": [], + "reason": "With the claimant reading nothing, the loop that returns the outcome to the claimant is cut, so the engine and adjuster cannot form an irreducible triad with the claimant." + } + } + ] +} \ No newline at end of file diff --git a/irreducibility-pipeline/examples/02_insurance_claim/encodings.json b/irreducibility-pipeline/examples/02_insurance_claim/encodings.json new file mode 100644 index 000000000..e1558b747 --- /dev/null +++ b/irreducibility-pipeline/examples/02_insurance_claim/encodings.json @@ -0,0 +1,259 @@ +{ + "structure": "Insurance claim adjudication: five routing designs (stipulated description)", + "source": "prose.md", + "parties": [ + { + "label": "C", + "name": "claimant", + "active": "pursuing or paid" + }, + { + "label": "E", + "name": "auto-adjudication engine", + "active": "approves" + }, + { + "label": "A", + "name": "human adjuster", + "active": "acts on the claim" + } + ], + "mediator": "E", + "encodings": [ + { + "id": "pipe", + "account": "design 1: the engine forwards, the adjuster decides", + "role": "design", + "rules": { + "C": "A", + "E": "C", + "A": "E" + }, + "evidence": { + "C": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The engine forwards every claim to the adjuster; the adjuster's decision goes back to the claimant." + } + ], + "E": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The engine forwards every claim to the adjuster; the adjuster's decision goes back to the claimant." + } + ], + "A": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The engine forwards every claim to the adjuster; the adjuster's decision goes back to the claimant." + } + ] + }, + "alternative": { + "E": { + "rule": "C", + "why": "Whether the engine reads the adjuster depends on whether it retrains on overrides (¶4, ¶5)." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "C", + "E", + "A" + ], + "reason": "A closed three-party ring binds all three." + } + }, + { + "id": "gated", + "account": "design 2: threshold auto-approval", + "role": "design", + "rules": { + "C": "E and not A", + "E": "C", + "A": "E and C" + }, + "evidence": { + "C": [ + { + "source": "prose.md", + "locator": "¶3", + "quote": "Small claims are approved automatically; the adjuster reviews only claims the engine flags." + } + ], + "E": [ + { + "source": "prose.md", + "locator": "¶3", + "quote": "Small claims are approved automatically; the adjuster reviews only claims the engine flags." + } + ], + "A": [ + { + "source": "prose.md", + "locator": "¶3", + "quote": "Small claims are approved automatically; the adjuster reviews only claims the engine flags." + } + ] + }, + "alternative": { + "E": { + "rule": "C", + "why": "Whether the engine reads the adjuster depends on whether it retrains on overrides (¶4, ¶5)." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "C", + "E", + "A" + ], + "reason": "The adjuster reviews flagged claims, so all three should be bound." + } + }, + { + "id": "loop", + "account": "design 3: fraud-flag loop with override learning", + "role": "design", + "rules": { + "C": "A", + "E": "C and A", + "A": "E and C" + }, + "evidence": { + "C": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The engine forwards every claim to the adjuster; the adjuster's decision goes back to the claimant." + } + ], + "E": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "The engine flags claims for the adjuster and retrains on the adjuster's overrides." + } + ], + "A": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "The engine flags claims for the adjuster and retrains on the adjuster's overrides." + } + ] + }, + "alternative": { + "E": { + "rule": "C", + "why": "Whether the engine reads the adjuster depends on whether it retrains on overrides (¶4, ¶5)." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "C", + "E", + "A" + ], + "reason": "The engine reads claimant and adjuster, the adjuster reads both." + } + }, + { + "id": "loop_nolearn", + "account": "design 4: the loop without learning", + "role": "design", + "rules": { + "C": "A", + "E": "C", + "A": "E and C" + }, + "evidence": { + "C": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The engine forwards every claim to the adjuster; the adjuster's decision goes back to the claimant." + } + ], + "E": [ + { + "source": "prose.md", + "locator": "¶5", + "quote": "The engine no longer retrains on overrides." + } + ], + "A": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "The engine flags claims for the adjuster and retrains on the adjuster's overrides." + } + ] + }, + "alternative": { + "E": { + "rule": "C", + "why": "Whether the engine reads the adjuster depends on whether it retrains on overrides (¶4, ¶5)." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "C", + "E", + "A" + ], + "reason": "Removing learning should leave the three-way core intact." + } + }, + { + "id": "frozen", + "account": "design 5: the claimant does not see the decision", + "role": "design", + "rules": { + "C": "C", + "E": "C and A", + "A": "E and C" + }, + "evidence": { + "C": [ + { + "source": "prose.md", + "locator": "¶6", + "quote": "The claimant is not told the outcome until the file closes." + } + ], + "E": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "The engine flags claims for the adjuster and retrains on the adjuster's overrides." + } + ], + "A": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "The engine flags claims for the adjuster and retrains on the adjuster's overrides." + } + ] + }, + "alternative": { + "E": { + "rule": "C", + "why": "Whether the engine reads the adjuster depends on whether it retrains on overrides (¶4, ¶5)." + } + }, + "predicted": { + "structure": "dyadic", + "reason": "A claimant who no longer reads the decision should let the structure factor." + } + } + ] +} \ No newline at end of file diff --git a/irreducibility-pipeline/examples/02_insurance_claim/prose.md b/irreducibility-pipeline/examples/02_insurance_claim/prose.md new file mode 100644 index 000000000..3e9215af2 --- /dev/null +++ b/irreducibility-pipeline/examples/02_insurance_claim/prose.md @@ -0,0 +1,24 @@ +# Insurance claim adjudication: who decides a claim? + +A stipulated description of five routing designs an insurer could use, adapted from a question a +contributor ran through the lab's protocol. It is not field data. Paragraph numbers are locators. + +**¶1.** A claimant files a claim. An auto-adjudication engine screens it. A human adjuster may review +it. Each party's state is one bit: the claimant is pursuing or paid (C), the engine approves or flags +(E), the adjuster acts or does not (A). + +**¶2.** Design 1, the pipe. "The engine forwards every claim to the adjuster; the adjuster's decision +goes back to the claimant." The engine reads the claimant, the adjuster reads the engine, and the +claimant reads the adjuster. + +**¶3.** Design 2, threshold auto-approval. "Small claims are approved automatically; the adjuster +reviews only claims the engine flags." The claimant is paid when the engine approves and the adjuster +has not intervened; the adjuster acts when the engine flags a claim the claimant is pursuing. + +**¶4.** Design 3, the fraud-flag loop with override learning. "The engine flags claims for the adjuster +and retrains on the adjuster's overrides." The engine's flag reads both the claim and the adjuster. + +**¶5.** Design 4, the same loop without learning. "The engine no longer retrains on overrides." + +**¶6.** Design 5, the frozen claimant. "The claimant is not told the outcome until the file closes." +The claimant's state no longer reads the decision. diff --git a/irreducibility-pipeline/examples/03_code_review_gate/encodings.json b/irreducibility-pipeline/examples/03_code_review_gate/encodings.json new file mode 100644 index 000000000..00fc00999 --- /dev/null +++ b/irreducibility-pipeline/examples/03_code_review_gate/encodings.json @@ -0,0 +1,119 @@ +{ + "structure": "Code-review gate (stipulated description)", + "source": "prose.md", + "parties": [ + { + "label": "A", + "name": "author", + "active": "change ready" + }, + { + "label": "G", + "name": "CI gate", + "active": "passing" + }, + { + "label": "M", + "name": "maintainer", + "active": "approving" + } + ], + "mediator": "G", + "encodings": [ + { + "id": "gated", + "account": "maintainers wait for CI", + "role": "rival", + "rules": { + "A": "G and M", + "G": "A", + "M": "A and G" + }, + "evidence": { + "A": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "I push a fix when CI fails or when the maintainer asks for changes, and I stop when both are satisfied." + } + ], + "G": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The CI check runs on every push to the change." + } + ], + "M": [ + { + "source": "prose.md", + "locator": "¶3", + "quote": "Maintainers approve only changes whose CI check is green." + } + ] + }, + "alternative": { + "G": { + "rule": "A", + "why": "The gate's rule is the same under both readings; what varies is whether the maintainer reads it (¶5)." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "A", + "G", + "M" + ], + "reason": "The gate commits a pass/fail neither author nor maintainer sets, and both read it." + } + }, + { + "id": "diff_only", + "account": "maintainers approve on the diff alone", + "role": "rival", + "rules": { + "A": "G and M", + "G": "A", + "M": "A" + }, + "evidence": { + "A": [ + { + "source": "prose.md", + "locator": "¶4", + "quote": "I push a fix when CI fails or when the maintainer asks for changes, and I stop when both are satisfied." + } + ], + "G": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "The CI check runs on every push to the change." + } + ], + "M": [ + { + "source": "prose.md", + "locator": "¶5", + "quote": "On small changes I just read the diff and approve; I don't wait for CI." + } + ] + }, + "alternative": { + "G": { + "rule": "A", + "why": "As above; the gate's own rule does not change." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "A", + "M" + ], + "reason": "If the maintainer ignores the gate, the author-maintainer pair should carry the coordination." + } + } + ] +} \ No newline at end of file diff --git a/irreducibility-pipeline/examples/03_code_review_gate/prose.md b/irreducibility-pipeline/examples/03_code_review_gate/prose.md new file mode 100644 index 000000000..ee1de4091 --- /dev/null +++ b/irreducibility-pipeline/examples/03_code_review_gate/prose.md @@ -0,0 +1,17 @@ +# A code-review gate + +A stipulated description of a software team's merge process. It is not field data. Paragraph numbers +are locators. + +**¶1.** An author opens a change. A continuous-integration gate runs the tests on it. A maintainer +decides whether to approve the merge. + +**¶2.** The repository's branch-protection rule says: "The CI check runs on every push to the change." + +**¶3.** The contributing guide says: "Maintainers approve only changes whose CI check is green." + +**¶4.** Authors revise in response to both: "I push a fix when CI fails or when the maintainer asks +for changes, and I stop when both are satisfied." + +**¶5.** Some maintainers admit: "On small changes I just read the diff and approve; I don't wait for +CI." diff --git a/irreducibility-pipeline/examples/04_dealer_vs_clearinghouse/encodings.json b/irreducibility-pipeline/examples/04_dealer_vs_clearinghouse/encodings.json new file mode 100644 index 000000000..943b24545 --- /dev/null +++ b/irreducibility-pipeline/examples/04_dealer_vs_clearinghouse/encodings.json @@ -0,0 +1,132 @@ +{ + "structure": "Car dealer vs clearinghouse: intrinsic or contingent intermediation (stipulated description)", + "source": "prose.md", + "parties": [ + { + "label": "U", + "name": "upstream party (maker / first counterparty)", + "active": "acting" + }, + { + "label": "I", + "name": "intermediary (dealer / clearinghouse)", + "active": "passing on or settling" + }, + { + "label": "V", + "name": "downstream party (buyer / second counterparty)", + "active": "acting" + } + ], + "mediator": "I", + "encodings": [ + { + "id": "dealer", + "account": "franchised dealer under a ban on direct sales", + "role": "design", + "rules": { + "U": "V", + "I": "U", + "V": "I" + }, + "evidence": { + "U": [ + { + "source": "prose.md", + "locator": "¶1", + "quote": "The maker ships to the dealer; the dealer delivers to the buyer; the maker builds to the dealer's orders, which follow the buyers'." + } + ], + "I": [ + { + "source": "prose.md", + "locator": "¶1", + "quote": "The maker ships to the dealer; the dealer delivers to the buyer; the maker builds to the dealer's orders, which follow the buyers'." + } + ], + "V": [ + { + "source": "prose.md", + "locator": "¶1", + "quote": "The maker ships to the dealer; the dealer delivers to the buyer; the maker builds to the dealer's orders, which follow the buyers'." + } + ] + }, + "alternative": { + "I": { + "rule": "U and V", + "why": "A dealer that also screens buyers would commit a joint determination; ¶1 describes a pass-through." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "U", + "I", + "V" + ], + "reason": "The closed maker-dealer-buyer ring binds all three while the bypass is forbidden." + }, + "bypass": { + "party": "I", + "downstream": "V", + "upstream": "U", + "mode": "replace" + } + }, + { + "id": "clearinghouse", + "account": "clearinghouse settling two legs", + "role": "design", + "rules": { + "U": "I", + "I": "U and V", + "V": "I" + }, + "evidence": { + "U": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "A trade settles only when both legs are confirmed; each party acts on the clearinghouse's settlement notice." + } + ], + "I": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "A trade settles only when both legs are confirmed; each party acts on the clearinghouse's settlement notice." + } + ], + "V": [ + { + "source": "prose.md", + "locator": "¶2", + "quote": "A trade settles only when both legs are confirmed; each party acts on the clearinghouse's settlement notice." + } + ] + }, + "alternative": { + "I": { + "rule": "U", + "why": "A clearinghouse that settled on one leg would be a relay; ¶2 says both legs." + } + }, + "predicted": { + "structure": "triadic", + "core": [ + "U", + "I", + "V" + ], + "reason": "Settlement needs both legs; no direct tie reproduces the joint condition." + }, + "bypass": { + "party": "I", + "downstream": "V", + "upstream": "U", + "mode": "replace" + } + } + ] +} \ No newline at end of file diff --git a/irreducibility-pipeline/examples/04_dealer_vs_clearinghouse/prose.md b/irreducibility-pipeline/examples/04_dealer_vs_clearinghouse/prose.md new file mode 100644 index 000000000..fa8a207c6 --- /dev/null +++ b/irreducibility-pipeline/examples/04_dealer_vs_clearinghouse/prose.md @@ -0,0 +1,13 @@ +# A car dealer and a clearinghouse: held in place by law, or by the work it does? + +A stipulated description of two intermediaries. It is not field data. Paragraph numbers are locators. + +**¶1.** A car maker sells to a buyer through a franchised dealer. Franchise law forbids the maker +from selling to the buyer directly. "The maker ships to the dealer; the dealer delivers to the buyer; +the maker builds to the dealer's orders, which follow the buyers'." + +**¶2.** A clearinghouse settles trades between two counterparties. "A trade settles only when both +legs are confirmed; each party acts on the clearinghouse's settlement notice." + +**¶3.** The counterfactual for both: lift the constraint and let the downstream party read the +upstream party directly. "If the law changed, buyers could order from the maker." diff --git a/irreducibility-pipeline/irreducibility/__init__.py b/irreducibility-pipeline/irreducibility/__init__.py new file mode 100644 index 000000000..1b77827fb --- /dev/null +++ b/irreducibility-pipeline/irreducibility/__init__.py @@ -0,0 +1,10 @@ +"""irreducibility: exact irreducibility analysis of coordinative structures with PyPhi (IIT 4.0).""" + +from .core import (PHI_EPS, Verdict, classify, classify_rules, cm_from_rules, major_complex, + tpm_from_rules, verdict) +from .regime import regime +from .contingency import contingency_test +from .spread import spread +from .rules import compile_rule, compile_rules + +__version__ = "0.1.0" diff --git a/irreducibility-pipeline/irreducibility/analyze.py b/irreducibility-pipeline/irreducibility/analyze.py new file mode 100644 index 000000000..22e5e571c --- /dev/null +++ b/irreducibility-pipeline/irreducibility/analyze.py @@ -0,0 +1,199 @@ +"""Analyze a coordinative structure: encodings in, an exact irreducibility analysis out. + + python -m irreducibility.analyze examples/01_gig_dispatch/encodings.json + python -m irreducibility.analyze my_structure.json --json out.json + +For each encoding the report gives: + * the TPM and connectivity matrix PyPhi receives; + * Φ over the minimum-information partition in every reachable state, and the MIP at the + most-integrated state; + * the verdict (dyadic or triadic) and the major complex (who is bound); + * the mediator's position (BOTTLENECK, ENRICHER, CAPTURE, BYPASSED); + * whether the mediator's place is intrinsic or contingent on a forbidden bypass, if one is given; + * whether the prediction fixed before computing held. + +Across rival encodings of the same parties it reports the spread (verdict agreement, Φ gap, core +overlap) and the single rules whose swap flips the verdict, i.e. the facts the evidence must +settle. The script refuses to run if the instrument controls fail or the encodings file is +inadmissible. +""" + +import argparse +import json +import sys + +from .core import tpm_from_rules, cm_from_rules, classify_rules, major_complex, PHI_EPS +from .contingency import contingency_test +from .encoding import load, validate, labels_of +from .regime import regime +from .rules import compile_rules +from .spread import spread +from .validate import controls_pass + + +def _fmt_state(state, labels): + return "".join(str(b) for b in state) + " (" + ",".join(f"{l}={b}" for l, b in zip(labels, state)) + ")" + + +def analyze_encoding(doc, enc): + labels = labels_of(doc, enc) + rules = compile_rules(enc["rules"], labels) + tpm, cm = tpm_from_rules(rules), cm_from_rules(rules) + v = classify_rules(rules, labels) + core, core_phi = major_complex(rules, labels) + out = { + "id": enc["id"], + "account": enc.get("account", ""), + "role": enc.get("role", "rival"), + "labels": list(labels), + "rules": {p: enc["rules"][p] for p in labels}, + "tpm_shape": list(tpm.shape), + "cm": cm.tolist(), + "phi_profile": [{"state": "".join(map(str, s)), "phi": round(p, 6)} for s, p in v.phi_profile], + "structure": v.structure, + "max_phi": round(v.max_phi, 6), + "mip_state": "".join(map(str, v.mip_state)) if v.mip_state else None, + "mip_partition": v.mip_partition, + "irreducible_states": f"{v.n_states_irreducible}/{v.n_states_evaluated}", + "core": list(core) if core else [], + "core_phi": round(core_phi, 6) if core else 0.0, + } + med = doc.get("mediator") + if med and med in labels: + out["regime"] = regime(rules, labels, med) + bp = enc.get("bypass") + if bp: + c = contingency_test(rules, labels, bp["party"], downstream=bp["downstream"], + upstream=bp["upstream"], mode=bp.get("mode", "replace")) + out["contingency"] = {"party": c.party, "kind": c.kind, "margin": round(c.margin, 6), + "core_constrained": list(c.core_constrained), + "core_bypass": list(c.core_bypass)} + pred = enc.get("predicted", {}) + out["predicted"] = pred + ok = pred.get("structure") == v.structure + if ok and pred.get("core"): + ok = set(pred["core"]) == set(out["core"]) + out["prediction_held"] = ok + return out, rules + + +def flip_rules(doc, encA, encB): + """Parties whose single-rule swap from A to B flips A's verdict to B's.""" + labels = labels_of(doc, encA) + vA = classify_rules(compile_rules(encA["rules"], labels), labels).structure + vB = classify_rules(compile_rules(encB["rules"], labels), labels).structure + if vA == vB: + return [] + flips = [] + for p in labels: + if encA["rules"][p].replace(" ", "") == encB["rules"][p].replace(" ", ""): + continue + swapped = dict(encA["rules"]) + swapped[p] = encB["rules"][p] + if classify_rules(compile_rules(swapped, labels), labels).structure == vB: + flips.append(f"{p}: {encA['rules'][p]!r} -> {encB['rules'][p]!r}") + return flips + + +def analyze(doc): + results, compiled = [], {} + for enc in doc["encodings"]: + r, rules = analyze_encoding(doc, enc) + results.append(r) + compiled[enc["id"]] = (tuple(r["labels"]), rules, enc) + rivals = [e for e in doc["encodings"] if e.get("role", "rival") == "rival"] + pairs = [] + for i, a in enumerate(rivals): + for b in rivals[i + 1:]: + la, ra, _ = compiled[a["id"]] + lb, rb, _ = compiled[b["id"]] + if la != lb: + continue + s = spread(ra, rb, la) + pairs.append({"pair": [a["id"], b["id"]], + "verdict_agreement": s["verdict_agreement"], + "phi_gap": round(s["phi_gap"], 6), + "core_jaccard": round(s["core_jaccard"], 6), + "verdicts": list(s["both_verdicts"]), + "rules_that_flip_the_verdict": flip_rules(doc, a, b)}) + rival_verdicts = {r["structure"] for r in results if r["role"] == "rival"} + held = sum(r["prediction_held"] for r in results) + if not rival_verdicts: + robust = (f"DESIGN COMPARISON: {len(results)} designs; predictions fixed before computing " + f"held in {held}/{len(results)}") + elif len(rival_verdicts) == 1: + robust = f"ROBUST: every rival encoding reads {rival_verdicts.pop()}" + else: + robust = "CONTESTED: the verdict depends on which encoding the evidence supports" + return {"structure": doc["structure"], "encodings": results, "spread": pairs, "summary": robust} + + +def print_report(rep, doc): + W = 92 + print("=" * W) + print(f"IRREDUCIBILITY ANALYSIS - {rep['structure']}") + print("=" * W) + for r in rep["encodings"]: + print(f"\n[{r['id']}] {r['account']} ({r['role']})") + for p in r["labels"]: + print(f" {p}' = {r['rules'][p]}") + print(f" PyPhi input: TPM {r['tpm_shape'][0]}x{r['tpm_shape'][1]} (state-by-node), " + f"connectivity {r['cm']}") + prof = ", ".join(f"{d['state']}:{d['phi']:.3f}" for d in r["phi_profile"]) + print(f" Φ_MIP by reachable state: {prof}") + print(f" verdict: {r['structure'].upper()} max Φ_MIP = {r['max_phi']:.3f}" + f" ({r['irreducible_states']} states irreducible)") + if r["mip_state"]: + print(f" MIP at state {r['mip_state']}: {r['mip_partition']}") + print(f" major complex (who is bound): {{{', '.join(r['core'])}}}" if r["core"] + else " major complex: none") + if "regime" in r: + print(f" mediator ({doc['mediator']}) position: {r['regime']}") + if "contingency" in r: + c = r["contingency"] + print(f" bypass test on {c['party']}: {c['kind']} (Φ lost when the bypass opens: " + f"{c['margin']:.3f}; core {{{','.join(c['core_constrained'])}}} -> " + f"{{{','.join(c['core_bypass'])}}})") + pred = r["predicted"] + print(f" predicted before computing: {pred.get('structure')}" + + (f", core {{{','.join(pred['core'])}}}" if pred.get("core") else "") + + f" -> {'HELD' if r['prediction_held'] else 'FAILED'}") + if rep["spread"]: + print("\n" + "-" * W) + print("SPREAD ACROSS RIVAL ENCODINGS") + for s in rep["spread"]: + print(f" {s['pair'][0]} vs {s['pair'][1]}: verdicts {s['verdicts'][0]}/{s['verdicts'][1]}, " + f"Φ gap {s['phi_gap']:.3f}, core overlap {s['core_jaccard']:.3f}") + for f in s["rules_that_flip_the_verdict"]: + print(f" single rule that flips it: {f}") + print("\n" + "=" * W) + print(f" {rep['summary']}") + print("=" * W) + + +def main(argv=None) -> int: + ap = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + ap.add_argument("encodings", help="path to an encodings JSON file") + ap.add_argument("--json", help="also write the full report as JSON to this path") + args = ap.parse_args(argv) + + if not controls_pass(): + print("INSTRUMENT CONTROLS FAILED - refusing to analyze. Run python -m irreducibility.validate") + return 1 + doc = load(args.encodings) + problems = validate(doc) + if problems: + print("ENCODINGS FILE IS NOT ADMISSIBLE:") + for p in problems: + print(" - " + p) + return 2 + rep = analyze(doc) + print_report(rep, doc) + if args.json: + with open(args.json, "w", encoding="utf-8") as f: + json.dump(rep, f, indent=2, ensure_ascii=False) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/irreducibility-pipeline/irreducibility/contingency.py b/irreducibility-pipeline/irreducibility/contingency.py new file mode 100644 index 000000000..29386b618 --- /dev/null +++ b/irreducibility-pipeline/irreducibility/contingency.py @@ -0,0 +1,112 @@ +"""Contingent vs. intrinsic irreducibility — the bypass-counterfactual classifier. + +A party can sit in a triad's irreducible core for two different reasons. + +INTRINSIC: it does integrative work no direct edge between its neighbours reproduces, so it +stays in the core even when that forbidden edge is restored. A conjunctive mediator S=W&C is +the type case — handing C a direct line to W does not let the pair recover the joint condition +S computes. + +CONTINGENT: it is a conduit that would factor out, held in the core only because the bypass +edge is forbidden. Restore the edge and it leaves. A car dealer relays a car from maker to +buyer and does no integrating; it sits in the core only because franchise law forbids the maker +selling direct. Lift the law and the dealer is disintermediated. + +A constitutive result of the lab says a conduit factors. Contingent +irreducibility is the exception that law does not cover: a conduit that does not factor, because a +constraint removes the alternative to it. +The test restores the forbidden bypass edge and recomputes the major complex: + + party in core, leaves under bypass -> contingent (de jure: held by the constraint) + party in core, stays, margin ~ 0 -> intrinsic (de facto: held by its own role) + party in core, stays, 0 < margin -> partial (part role, part constraint) + party not in core -> reducible (a free conduit, already out) + +The contingency margin is the whole-system Phi_MIP lost when the bypass opens. +""" + +from dataclasses import dataclass + +from .core import verdict, major_complex +from .core import PHI_EPS + + +@dataclass +class ContingencyResult: + party: str + kind: str # "intrinsic" | "contingent" | "partial" | "reducible" + in_core_constrained: bool + in_core_bypass: bool + phi_constrained: float + phi_bypass: float + margin: float + core_constrained: tuple + core_bypass: tuple + + def line(self): + return ("%-10s margin=%.3f %s in core: constrained=%s bypass=%s (Phi %.3f -> %.3f)" + % (self.kind, self.margin, self.party, + self.in_core_constrained, self.in_core_bypass, + self.phi_constrained, self.phi_bypass)) + + +def add_bypass(rules, labels, downstream, upstream, mode="replace"): + """Return a rule set with the forbidden direct edge restored on `downstream`. + + mode="replace": downstream reads upstream INSTEAD of its mediated source — the maker sells + direct and the mediator is disintermediated (the franchise-law counterfactual). + mode="add": downstream reads upstream IN ADDITION — a parallel back-channel is opened, + downstream' = original OR upstream. + """ + labels = tuple(labels) + di = labels.index(downstream) + ui = labels.index(upstream) + new = list(rules) + orig = rules[di] + if mode == "replace": + new[di] = lambda x, ui=ui: x[ui] + elif mode == "add": + new[di] = lambda x, orig=orig, ui=ui: orig(x) | x[ui] + else: + raise ValueError("mode must be 'replace' or 'add', got %r" % mode) + return new + + +def contingency_test(rules, labels, party, downstream=None, upstream=None, + mode="replace", bypass_rules=None): + """Classify `party`'s irreducibility via the bypass-counterfactual. + + rules / labels : the constrained system, with the bypass edge forbidden. + party : the mediator / broker label to classify. + downstream, upstream, mode : how to restore the forbidden direct edge (see add_bypass). + bypass_rules : pass an explicit bypass rule set to override the downstream/upstream form. + + Returns a ContingencyResult. The margin is whole-system Phi_MIP lost when the bypass opens. + """ + labels = tuple(labels) + if bypass_rules is None: + if downstream is None or upstream is None: + raise ValueError("supply downstream and upstream, or bypass_rules") + bypass_rules = add_bypass(rules, labels, downstream, upstream, mode) + + vc = verdict(rules, labels) + cc, _ = major_complex(rules, labels) + vb = verdict(bypass_rules, labels) + cb, _ = major_complex(bypass_rules, labels) + + in_c = party in cc + in_b = party in cb + margin = vc.max_phi - vb.max_phi + + if not in_c: + kind = "reducible" + elif not in_b: + kind = "contingent" + elif margin > PHI_EPS: + kind = "partial" + else: + kind = "intrinsic" + + return ContingencyResult(party, kind, in_c, in_b, + float(vc.max_phi), float(vb.max_phi), float(margin), + tuple(cc), tuple(cb)) diff --git a/irreducibility-pipeline/irreducibility/core.py b/irreducibility-pipeline/irreducibility/core.py new file mode 100644 index 000000000..47f82e177 --- /dev/null +++ b/irreducibility-pipeline/irreducibility/core.py @@ -0,0 +1,233 @@ +"""Exact irreducibility of a coordinative structure, computed with PyPhi (IIT 4.0). + +A coordinative structure is modelled as a small deterministic Boolean network. Each node is a +party (a worker, a platform, a counterpart, an agent, a manager). Each party's next state is a +fixed Boolean function of the current states of the parties it reads. + +From those rules this module builds the state-by-node transition probability matrix (TPM) and the +connectivity matrix, and asks PyPhi's IIT-4.0 implementation (``pyphi.new_big_phi``) two questions: + +1. **Is the structure irreducible?** For every reachable state, ``new_big_phi.sia`` returns system + integrated information Φ over the minimum-information partition (MIP), the directional cut that + damages the cause-effect structure least. If Φ_MIP = 0 in every reachable state, some cut along + party lines leaves the structure intact: it is **dyadic** (it factors). If Φ_MIP > 0 in at least + one reachable state, no cut does: it is **triadic** (irreducible). +2. **Who is bound?** ``new_big_phi.maximal_complex`` returns the major complex, the subset of + parties that forms the maximally irreducible core. + +Only the binary verdict and the core membership are interpreted. Φ magnitude depends on the +encoding and is read as at most an ordinal hint. + +Run the instrument controls before trusting any verdict: ``python -m irreducibility.validate`` + +Provenance: consolidated from the lab's classifier (``classifier.py``), exact-Φ oracle +(``exact_phi.py``) and probe helpers (``lib.py``); behaviour unchanged. +""" + +import os +from dataclasses import dataclass, field +from typing import Callable, Optional, Sequence + +os.environ.setdefault("PYPHI_WELCOME_OFF", "true") + +import numpy as np +import pyphi +from pyphi import convert, exceptions, new_big_phi + +pyphi.config.PROGRESS_BARS = False +pyphi.config.PARALLEL = False + +# Φ below this is treated as zero (floating-point and PyPhi numerical noise). +PHI_EPS = 1e-9 + +DEFAULT_LABELS = ("W", "S", "C") # worker, system/mediator, counterpart + + +# --------------------------------------------------------------------------------------------- +# Rules -> transition matrix and connectivity matrix +# --------------------------------------------------------------------------------------------- + +def tpm_from_rules(rules: Sequence[Callable], n: Optional[int] = None) -> np.ndarray: + """Deterministic state-by-node TPM of shape (2^n, n) from per-node Boolean rules. + + ``rules[j]`` maps the current state tuple (little-endian: index 0 = first party) to node j's + next value in {0, 1}. Little-endian indexing matches PyPhi. + """ + n = len(rules) if n is None else n + tpm = np.zeros((2 ** n, n)) + for s in range(2 ** n): + cur = tuple((s >> i) & 1 for i in range(n)) + for j in range(n): + tpm[s, j] = float(rules[j](cur)) + return tpm + + +def cm_from_rules(rules: Sequence[Callable], n: Optional[int] = None) -> np.ndarray: + """Connectivity matrix: cm[i, j] = 1 iff node j's rule depends on node i (flip test).""" + n = len(rules) if n is None else n + cm = np.zeros((n, n), dtype=int) + for j in range(n): + for i in range(n): + for s in range(2 ** n): + cur = list((s >> k) & 1 for k in range(n)) + flipped = cur.copy() + flipped[i] ^= 1 + if rules[j](tuple(cur)) != rules[j](tuple(flipped)): + cm[i, j] = 1 + break + return cm + + +def reachable_states(tpm_sbn: np.ndarray, n: int): + """Decimal indices of states with at least one predecessor (the states PyPhi will analyze).""" + sbs = convert.state_by_node2state_by_state(tpm_sbn) + incoming = sbs.sum(axis=0) + return [j for j in range(2 ** n) if incoming[j] > 1e-12] + + +def simulate_trajectory(tpm_sbn, n, timesteps, rng): + """Simulate a binary trajectory (timesteps x n) from a random initial state. Used by the proxy study.""" + from pyphi import tpm as tpmmod + sbs = convert.state_by_node2state_by_state(tpm_sbn) + initial = int(rng.integers(0, 2 ** n)) + path = tpmmod.simulate(sbs, initial, timesteps, rng) + return np.array([[(idx >> i) & 1 for i in range(n)] for idx in path]).astype(int) + + +def exact_big_phi(tpm_sbn: np.ndarray, cm: np.ndarray, state) -> Optional[float]: + """Exact IIT-4.0 system Φ over the MIP in ``state``; None if the state is unreachable.""" + network = pyphi.Network(tpm_sbn, cm=cm) + try: + subsystem = pyphi.Subsystem(network, tuple(state)) + except exceptions.StateUnreachableError: + return None + return float(new_big_phi.sia(subsystem).phi) + + +def network_phi(tpm_sbn, cm, n, rng, max_states=16): + """Mean and max of exact Φ over reachable states (negative values clamped to 0). + + Returns (mean_phi, max_phi, n_evaluated). Used by the proxy study. + """ + network = pyphi.Network(tpm_sbn, cm=cm) + states = reachable_states(tpm_sbn, n) + if len(states) > max_states: + idx = rng.choice(len(states), size=max_states, replace=False) + states = [states[i] for i in idx] + phis = [] + for s in states: + state = tuple((s >> i) & 1 for i in range(n)) + try: + subsystem = pyphi.Subsystem(network, state) + except exceptions.StateUnreachableError: + continue + phis.append(max(0.0, float(new_big_phi.sia(subsystem).phi))) + if not phis: + return 0.0, 0.0, 0 + return float(np.mean(phis)), float(np.max(phis)), len(phis) + + +# --------------------------------------------------------------------------------------------- +# The verdict +# --------------------------------------------------------------------------------------------- + +@dataclass +class Verdict: + """The verdict for one encoding of a coordinative structure.""" + structure: str # "dyadic" or "triadic" + max_phi: float # max Φ_MIP over reachable states + mip_state: Optional[tuple] # the state achieving max_phi (triadic only) + mip_partition: str # the minimum-information partition at that state + n_states_evaluated: int + n_states_irreducible: int # reachable states with Φ_MIP > PHI_EPS + phi_profile: list = field(default_factory=list) # [(state, phi), ...] + labels: tuple = DEFAULT_LABELS + + @property + def competence(self) -> str: + """The competence the structure demands: literacy (dyadic) or algorithmacy (triadic).""" + return "algorithmacy" if self.structure == "triadic" else "literacy" + + def __str__(self) -> str: + head = (f"{self.structure.upper():>9} (max Φ_MIP = {self.max_phi:.6f} over " + f"{self.n_states_evaluated} reachable states; {self.n_states_irreducible} irreducible)") + if self.mip_state is not None: + head += f"\n max-Φ state {self.mip_state}, MIP cut: {self.mip_partition}" + return head + + +def phi_profile(tpm_sbn: np.ndarray, cm: np.ndarray, n: Optional[int] = None): + """Exact IIT-4.0 Φ_MIP for each reachable state: [(state_tuple, phi), ...].""" + n = cm.shape[0] if n is None else n + out = [] + for s in reachable_states(tpm_sbn, n): + state = tuple((s >> i) & 1 for i in range(n)) + phi = exact_big_phi(tpm_sbn, cm, state) + if phi is not None: + out.append((state, float(phi))) + return out + + +def _mip_partition_repr(tpm_sbn, cm, state, labels) -> str: + try: + net = pyphi.Network(tpm_sbn, cm=cm, node_labels=labels[:cm.shape[0]]) + sub = pyphi.Subsystem(net, tuple(state)) + return str(new_big_phi.sia(sub).partition).splitlines()[0].strip() + except Exception as e: # informational only + return f"(unavailable: {e})" + + +def classify(tpm_sbn: np.ndarray, cm: np.ndarray, + labels: Sequence[str] = DEFAULT_LABELS, eps: float = PHI_EPS) -> Verdict: + """Triadic iff Φ_MIP > eps in at least one reachable state; read at the most-integrated state.""" + n = cm.shape[0] + profile = phi_profile(tpm_sbn, cm, n) + if not profile: + return Verdict("dyadic", 0.0, None, "(no reachable states)", 0, 0, [], tuple(labels[:n])) + max_state, max_phi = max(profile, key=lambda r: r[1]) + n_irreducible = sum(1 for _, p in profile if p > eps) + triadic = max_phi > eps + mip = _mip_partition_repr(tpm_sbn, cm, max_state, tuple(labels)) if triadic else "(factors)" + return Verdict( + structure="triadic" if triadic else "dyadic", + max_phi=max_phi, + mip_state=max_state if triadic else None, + mip_partition=mip, + n_states_evaluated=len(profile), + n_states_irreducible=n_irreducible, + phi_profile=profile, + labels=tuple(labels[:n]), + ) + + +def classify_rules(rules: Sequence[Callable], labels: Sequence[str] = DEFAULT_LABELS, + eps: float = PHI_EPS) -> Verdict: + """Classify a structure given per-party Boolean rules.""" + return classify(tpm_from_rules(rules), cm_from_rules(rules), labels=labels, eps=eps) + + +def verdict(rules, labels): + """Whole-system verdict (alias used throughout the studies).""" + return classify_rules(rules, labels=labels) + + +def major_complex(rules, labels): + """(core_label_tuple, phi) of the major complex, maximised over reachable states. + + Returns (None, -1.0) if no state has an irreducible complex. + """ + n = len(rules) + tpm, cm = tpm_from_rules(rules), cm_from_rules(rules) + net = pyphi.Network(tpm, cm=cm, node_labels=tuple(labels)) + best = (None, -1.0) + for s in reachable_states(tpm, n): + state = tuple((s >> i) & 1 for i in range(n)) + try: + mc = new_big_phi.maximal_complex(net, state) + except (exceptions.StateUnreachableError, ValueError): + continue + if isinstance(mc, new_big_phi.NullPhiStructure): + continue + if float(mc.phi) > best[1]: + best = (tuple(labels[i] for i in mc.node_indices), float(mc.phi)) + return best diff --git a/irreducibility-pipeline/irreducibility/encode_check.py b/irreducibility-pipeline/irreducibility/encode_check.py new file mode 100644 index 000000000..56d23ba7f --- /dev/null +++ b/irreducibility-pipeline/irreducibility/encode_check.py @@ -0,0 +1,69 @@ +"""Check an encodings file before anything is computed. + + python -m irreducibility.encode_check examples/01_gig_dispatch/encodings.json + +Three gates, in order: + 1. admissibility: every rule parses, cites evidence, the mediator names an alternative, and every + encoding carries a prediction (irreducibility.encoding.validate); + 2. evidence is real: every quoted passage occurs verbatim in the cited source file (resolved + relative to the encodings file), so a drafter, human or model, cannot cite a passage that is not + there; + 3. nothing else: this script never computes Φ, so a prediction cannot be adjusted after seeing it. + +Exit code 0 if all gates pass. +""" + +import os +import re +import sys + +from .encoding import load, validate + + +def _norm(s: str) -> str: + return re.sub(r"\s+", " ", s.replace("’", "'").replace("“", '"').replace("”", '"')).strip() + + +def check_quotes(doc: dict, base_dir: str): + problems, cache = [], {} + for enc in doc.get("encodings", []): + for party, items in enc.get("evidence", {}).items(): + for item in items: + src = item.get("source", "") + path = os.path.join(base_dir, src) + if path not in cache: + try: + with open(path, encoding="utf-8") as f: + cache[path] = _norm(f.read()) + except OSError: + cache[path] = None + text = cache[path] + if text is None: + problems.append(f"[{enc.get('id')}] {party}: source {src!r} not found") + elif _norm(item.get("quote", "")) not in text: + problems.append(f"[{enc.get('id')}] {party}: quote not found verbatim in {src}: " + f"{item.get('quote', '')[:70]!r}") + return problems + + +def main(argv=None) -> int: + argv = sys.argv[1:] if argv is None else argv + if len(argv) != 1: + print(__doc__) + return 2 + path = argv[0] + doc = load(path) + problems = validate(doc) + check_quotes(doc, os.path.dirname(os.path.abspath(path))) + n = len(doc.get("encodings", [])) + if problems: + print(f"REJECTED: {len(problems)} problem(s) in {n} encoding(s)") + for p in problems: + print(" - " + p) + return 1 + print(f"ADMISSIBLE: {n} encoding(s); every rule has evidence found verbatim in its source; " + f"every encoding carries a prediction.") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/irreducibility-pipeline/irreducibility/encoding.py b/irreducibility-pipeline/irreducibility/encoding.py new file mode 100644 index 000000000..0efced38e --- /dev/null +++ b/irreducibility-pipeline/irreducibility/encoding.py @@ -0,0 +1,86 @@ +"""Load and validate an encodings file: one coordinative structure, several rival encodings. + +The file format is specified in ``encode/SCHEMA.json``. An encoding is admissible only if + + * every party has a rule, written as a Boolean expression over party names; + * every rule cites evidence (a source, a locator, and the quoted passage it rests on); + * the mediator's rule names the alternative reading the evidence does not rule out; + * the predicted verdict and its reason are stated before anything is computed. + +These checks are what make the encoding step auditable, whether a person or a language model +drafted the encoding. ``validate_file`` returns a list of problems; an empty list means admissible. +""" + +import json +from typing import List + +from .rules import compile_rule + +STRUCTURES = ("dyadic", "triadic") + + +def load(path: str) -> dict: + with open(path, encoding="utf-8") as f: + return json.load(f) + + +def labels_of(doc: dict, enc: dict) -> tuple: + """An encoding may override the structure's party list (e.g. pooled drivers D1, D2).""" + if enc.get("labels"): + return tuple(enc["labels"]) + return tuple(p["label"] for p in doc["parties"]) + + +def validate(doc: dict) -> List[str]: + problems = [] + for key in ("structure", "parties", "encodings"): + if key not in doc: + problems.append(f"missing top-level field {key!r}") + if problems: + return problems + mediator = doc.get("mediator") + seen = set() + for enc in doc["encodings"]: + eid = enc.get("id", "?") + if eid in seen: + problems.append(f"[{eid}] duplicate encoding id") + seen.add(eid) + labels = labels_of(doc, enc) + rules = enc.get("rules", {}) + for p in labels: + if p not in rules: + problems.append(f"[{eid}] no rule for party {p}") + continue + try: + compile_rule(rules[p], labels) + except (ValueError, SyntaxError) as e: + problems.append(f"[{eid}] {e}") + ev = enc.get("evidence", {}).get(p, []) + if not ev: + problems.append(f"[{eid}] rule for {p} cites no evidence") + for item in ev: + for k in ("source", "locator", "quote"): + if not str(item.get(k, "")).strip(): + problems.append(f"[{eid}] evidence for {p} lacks {k!r}") + if mediator and mediator in labels: + alt = enc.get("alternative", {}).get(mediator) + if not alt or not str(alt.get("rule", "")).strip() or not str(alt.get("why", "")).strip(): + problems.append(f"[{eid}] the mediator's rule ({mediator}) names no alternative reading") + else: + try: + compile_rule(alt["rule"], labels) + except (ValueError, SyntaxError) as e: + problems.append(f"[{eid}] alternative: {e}") + pred = enc.get("predicted", {}) + if pred.get("structure") not in STRUCTURES or not str(pred.get("reason", "")).strip(): + problems.append(f"[{eid}] no predicted verdict and reason (fix the prediction before computing)") + bp = enc.get("bypass") + if bp: + for k in ("party", "downstream", "upstream"): + if bp.get(k) not in labels: + problems.append(f"[{eid}] bypass {k} {bp.get(k)!r} is not a party") + return problems + + +def validate_file(path: str) -> List[str]: + return validate(load(path)) diff --git a/irreducibility-pipeline/irreducibility/regime.py b/irreducibility-pipeline/irreducibility/regime.py new file mode 100644 index 000000000..cdfa0b11d --- /dev/null +++ b/irreducibility-pipeline/irreducibility/regime.py @@ -0,0 +1,54 @@ +"""The mediator's position in the irreducible core. + +Once a structure reads triadic, the next strategic question is what the mediating system (the +platform, the engine, the manager) is doing in it. The lesion test and the major complex answer it: + + dyadic the structure factors; there is no irreducible core to hold a position in + BYPASSED triadic, but the mediator is outside the core: the parties out-integrate it + CAPTURE the mediator is in the core, but the core excludes some party: the mediator and + part of the arrangement bind each other and leave the rest outside + BOTTLENECK every party is in the core, and freezing the mediator stops the others from + coordinating: the structure runs through it + ENRICHER every party is in the core, and the others still coordinate with the mediator + frozen: it adds to a coordination that would exist without it + +The same mediator can hold each position depending on the parties' other ties and options. +Whether a platform is a bottleneck is a property of the whole arrangement, not of the platform. + +Provenance: generalised from the lab's mediator-in-core and enricher-regime threads; on +three-party forms it reproduces their five-way classification exactly. +""" + +from .core import classify_rules, major_complex + +REGIMES = ("dyadic", "BYPASSED", "CAPTURE", "BOTTLENECK", "ENRICHER") + + +def lesion_survives(rules, labels, mi): + """Do the non-mediator parties still coordinate (triadic) with the mediator frozen at 0 or 1?""" + rest = [i for i in range(len(labels)) if i != mi] + if len(rest) < 2: + return False + for c in (0, 1): + reduced = [(lambda y, _j=j, _c=c: rules[_j]( + tuple(_c if k == mi else y[rest.index(k)] for k in range(len(labels))))) + for j in rest] + if classify_rules(reduced, tuple(labels[i] for i in rest)).structure == "triadic": + return True + return False + + +def regime(rules, labels, mediator): + """Five-way regime of the party named ``mediator`` (a label) or at index ``mediator``.""" + labels = tuple(labels) + mi = labels.index(mediator) if isinstance(mediator, str) else int(mediator) + v = classify_rules(rules, labels) + if v.structure == "dyadic": + return "dyadic" + core, _ = major_complex(list(rules), labels) + core = set(core or ()) + if labels[mi] not in core: + return "BYPASSED" + if core != set(labels): + return "CAPTURE" + return "ENRICHER" if lesion_survives(rules, labels, mi) else "BOTTLENECK" diff --git a/irreducibility-pipeline/irreducibility/rule_to_phi.py b/irreducibility-pipeline/irreducibility/rule_to_phi.py new file mode 100644 index 000000000..b82273389 --- /dev/null +++ b/irreducibility-pipeline/irreducibility/rule_to_phi.py @@ -0,0 +1,187 @@ +"""Bridge: coded determination rules -> TPM -> exact-Φ verdict -> coder-disagreement Φ CI. + +A coded account of a coordination names, for each party, a Boolean determination rule: the +party's next state as a function of the current states of all parties. The rules are encoded +into a deterministic state-by-node TPM, classified by exact IIT-4.0 Φ over the MIP, and read as +a structural verdict (dyadic -> literacy, triadic -> algorithmacy). Φ is not reimplemented; this +module wraps `irreducibility.core`. + +Coding is done by people, and people disagree. Each coder supplies their own reading of the same +account: a per-party rule set. Two coders who read the account identically agree perfectly; two +who disagree on which bits or states are active produce different rule sets and so different Φ +readings. This module propagates that disagreement into a Φ confidence interval by bootstrapping +over the coders, weighting the resample by Krippendorff-alpha agreement, and reporting the +percentile CI of the resulting Φ distribution. + +The construct: a single coded account yields not one Φ but a Φ interval whose width reflects how +much the coders disagree. Perfect agreement collapses the interval to a point. + +Validation controls (run the probe): + - decoupled rule set reads dyadic; + - fully-coupled (faithful triad) rule set reads triadic with max Φ_MIP = 2.0; + - perfect agreement (alpha = 1) returns a degenerate CI [phi, phi]. + +All inputs are synthetic coded rule sets, not measured worker states. +""" + +import os +import sys +from typing import Callable, Dict, List, Optional, Sequence, Tuple + +os.environ.setdefault("PYPHI_WELCOME_OFF", "true") + +import numpy as np + +from .core import classify_rules, PHI_EPS +from .core import verdict + +DEFAULT_LABELS = ("W", "S", "C") + + +# -------------------------------------------------------------------------------------- +# Rules -> TPM -> verdict (the deterministic core) +# -------------------------------------------------------------------------------------- + +def rule_to_phi(rules: Sequence[Callable], + labels: Sequence[str] = DEFAULT_LABELS) -> Dict: + """Encode coded determination rules into a TPM and read the exact-Φ verdict. + + Returns {structure, competence, max_phi, n_irreducible}. Wraps the classifier's + `classify_rules`; the TPM is built by `tpm_from_rules` inside it. Deterministic. + """ + v = classify_rules(rules, labels=labels) + return { + "structure": v.structure, + "competence": v.competence, + "max_phi": float(v.max_phi), + "n_irreducible": int(v.n_states_irreducible), + } + + +# -------------------------------------------------------------------------------------- +# Coder disagreement and Krippendorff alpha +# -------------------------------------------------------------------------------------- + +def krippendorff_alpha(codings: np.ndarray) -> float: + """Krippendorff's alpha for nominal data on a (n_coders, n_items) integer matrix. + + Each column is one coding unit (e.g. one active-bit decision); each row is a coder's + label for every unit. Returns 1.0 for perfect agreement, 0.0 for chance-level agreement, + and may go negative for systematic disagreement. NaN-free for fully coded matrices. + """ + codings = np.asarray(codings) + n_coders, n_items = codings.shape + if n_coders < 2: + return 1.0 + # Observed disagreement: mean over items of the fraction of disagreeing coder pairs. + do_terms = [] + for j in range(n_items): + col = codings[:, j] + pairs = 0 + disagree = 0 + for a in range(n_coders): + for b in range(a + 1, n_coders): + pairs += 1 + if col[a] != col[b]: + disagree += 1 + if pairs: + do_terms.append(disagree / pairs) + do = float(np.mean(do_terms)) if do_terms else 0.0 + # Expected disagreement: probability two values drawn at random (over the whole pooled + # set of labels) differ. + flat = codings.reshape(-1) + vals, counts = np.unique(flat, return_counts=True) + total = counts.sum() + p = counts / total + de = float(1.0 - np.sum(p ** 2)) + if de < 1e-12: + # No variance in the pooled labels: everyone used one value -> perfect agreement. + return 1.0 + return float(1.0 - do / de) + + +# -------------------------------------------------------------------------------------- +# Coder-weighted Φ confidence interval +# -------------------------------------------------------------------------------------- + +def _phi_of(rules: Sequence[Callable], labels: Sequence[str]) -> float: + return float(verdict(rules, labels).max_phi) + + +def phi_ci(coder_phis: Sequence[float], + coder_codings: Optional[np.ndarray] = None, + n_boot: int = 800, + ci: float = 0.95, + rng: Optional[np.random.Generator] = None) -> Dict: + """Φ confidence interval propagated from coder disagreement. + + `coder_phis[k]` is coder k's max-Φ_MIP reading of one account (obtained by running that + coder's rule-set through `rule_to_phi`; see `phi_ci_from_rules` for the rule-set entry + point). The CI is a studentized bootstrap-t interval over the coder panel: it resamples + coders with replacement, studentizes each resample by its own standard error, and inverts + the bootstrap distribution of the t-statistic. The bootstrap-t is calibrated at small coder + counts where the plain percentile bootstrap under-covers. + + `coder_codings`, when given, is a (n_coders, n_units) integer matrix of active-bit + decisions; its Krippendorff alpha is reported. Perfect agreement (alpha = 1, all readings + identical) returns the degenerate CI [phi, phi]. + + Returns {phi_point, ci_low, ci_high, alpha, coder_phis, degenerate}. `phi_point` is the mean + of the per-coder Φ readings (the consensus point estimate). + """ + if rng is None: + rng = np.random.default_rng(0) + coder_phis = np.asarray(coder_phis, dtype=float) + n_coders = len(coder_phis) + + if coder_codings is not None: + alpha = krippendorff_alpha(coder_codings) + else: + alpha = 1.0 if np.allclose(coder_phis, coder_phis[0], atol=PHI_EPS) else 0.0 + + point = float(np.mean(coder_phis)) + se = float(np.std(coder_phis, ddof=1) / np.sqrt(n_coders)) if n_coders > 1 else 0.0 + + # Degenerate: one coder, perfect agreement on identical readings, or zero spread. + if (n_coders < 2 or se < PHI_EPS + or (alpha >= 1.0 - 1e-9 and np.allclose(coder_phis, coder_phis[0], atol=PHI_EPS))): + return { + "phi_point": point, + "ci_low": point, + "ci_high": point, + "alpha": float(alpha), + "coder_phis": coder_phis.tolist(), + "degenerate": True, + } + + a = (1.0 - ci) / 2.0 + tstars = np.empty(n_boot, dtype=float) + for b in range(n_boot): + idx = rng.integers(0, n_coders, size=n_coders) + bs = coder_phis[idx] + bse = float(np.std(bs, ddof=1) / np.sqrt(n_coders)) + tstars[b] = (float(np.mean(bs)) - point) / bse if bse > PHI_EPS else 0.0 + t_lo = float(np.quantile(tstars, a)) + t_hi = float(np.quantile(tstars, 1.0 - a)) + lo = point - t_hi * se + hi = point - t_lo * se + return { + "phi_point": point, + "ci_low": lo, + "ci_high": hi, + "alpha": float(alpha), + "coder_phis": coder_phis.tolist(), + "degenerate": False, + } + + +def phi_ci_from_rules(coder_rule_sets: Sequence[Sequence[Callable]], + labels: Sequence[str] = DEFAULT_LABELS, + coder_codings: Optional[np.ndarray] = None, + n_boot: int = 800, + ci: float = 0.95, + rng: Optional[np.random.Generator] = None) -> Dict: + """`phi_ci` entry point that takes per-coder rule sets, reads each to its max Φ_MIP via the + classifier, then propagates the disagreement. Φ is not reimplemented.""" + coder_phis = [_phi_of(r, labels) for r in coder_rule_sets] + return phi_ci(coder_phis, coder_codings=coder_codings, n_boot=n_boot, ci=ci, rng=rng) diff --git a/irreducibility-pipeline/irreducibility/rules.py b/irreducibility-pipeline/irreducibility/rules.py new file mode 100644 index 000000000..1562b2b01 --- /dev/null +++ b/irreducibility-pipeline/irreducibility/rules.py @@ -0,0 +1,63 @@ +"""Parse a party's rule, written as a Boolean expression over party names, into a callable. + +An encoding states each party's next state in plain logic: + + "S": "D and R" the platform commits only when the driver and the rider are both in + "D": "S" the driver acts on the platform's signal + "C": "E and not A" the claimant is paid when the engine approves and no adjuster flags + "P": "(D1 or D2) and R" any available driver will do + +Allowed: party names, 0, 1, and, or, not, xor, parentheses. Anything else is rejected, so an +encoding cannot run arbitrary code. +""" + +import ast +from typing import Callable, Sequence + +_ALLOWED = (ast.Expression, ast.BoolOp, ast.And, ast.Or, ast.UnaryOp, ast.Not, + ast.BinOp, ast.BitXor, ast.Name, ast.Load, ast.Constant) + + +def _rewrite_xor(expr: str) -> str: + return " ^ ".join(part for part in expr.replace(" XOR ", " xor ").split(" xor ")) + + +def compile_rule(expr: str, labels: Sequence[str]) -> Callable: + """Compile one expression into ``f(state_tuple) -> 0/1`` with labels in rule order.""" + labels = tuple(labels) + tree = ast.parse(_rewrite_xor(expr.strip()), mode="eval") + for node in ast.walk(tree): + if not isinstance(node, _ALLOWED): + raise ValueError(f"rule {expr!r}: {type(node).__name__} is not allowed") + if isinstance(node, ast.Name) and node.id not in labels: + raise ValueError(f"rule {expr!r}: unknown party {node.id!r} (parties: {labels})") + if isinstance(node, ast.Constant) and node.value not in (0, 1, True, False): + raise ValueError(f"rule {expr!r}: only 0 and 1 are allowed as constants") + + def ev(node, x): + if isinstance(node, ast.Expression): + return ev(node.body, x) + if isinstance(node, ast.BoolOp): + vals = [ev(v, x) for v in node.values] + return int(all(vals)) if isinstance(node.op, ast.And) else int(any(vals)) + if isinstance(node, ast.UnaryOp): + return 1 - ev(node.operand, x) + if isinstance(node, ast.BinOp): + return ev(node.left, x) ^ ev(node.right, x) + if isinstance(node, ast.Name): + return int(x[labels.index(node.id)]) + return int(node.value) + + def rule(x, _t=tree): + return ev(_t, x) + + rule.expr = expr + return rule + + +def compile_rules(rules: dict, labels: Sequence[str]): + """Compile {party: expression} into a rule list in label order.""" + missing = [p for p in labels if p not in rules] + if missing: + raise ValueError(f"no rule for {missing}") + return [compile_rule(rules[p], labels) for p in labels] diff --git a/irreducibility-pipeline/irreducibility/spread.py b/irreducibility-pipeline/irreducibility/spread.py new file mode 100644 index 000000000..da365a32e --- /dev/null +++ b/irreducibility-pipeline/irreducibility/spread.py @@ -0,0 +1,180 @@ +"""Spread: two accounts of one coordination, scored as a Φ spread. + +A coordination has two parties who each give an account of how it works. Each account is a +rule set over the same labelled nodes (a small Boolean dynamical system). The two accounts can +diverge: the parties disagree about who responds to whom. This module takes the two accounts, +runs each through the exact-Φ classifier, and reports a SPREAD tuple that quantifies how far +apart the two verdicts sit. + +The spread has three components: + + verdict_agreement in {0, 1} 1 iff both accounts read the same structure (both dyadic or + both triadic). + phi_gap >= 0.0 absolute difference of the two whole-system max Φ_MIP values. + core_jaccard in [0, 1] Jaccard overlap of the two major-complex cores (each taken at + its most-integrated reachable state); 1.0 means the two + accounts put exactly the same parties in the core, 0.0 means + disjoint cores. + +The anchors: when the two accounts are the same rule set, verdict_agreement = 1, phi_gap = 0.0, +and core_jaccard = 1.0. The spread is symmetric in the two parties: swapping which account is A +and which is B leaves all three components unchanged. + +This is a synthetic instrument. The accounts are coder-supplied rule sets, not measured worker +states. The construct it scores is divergence between two stated accounts, validated here on +controls; it is not a measurement of a real coordination. + +Provenance: the lab's disagreement bridge; it does not reimplement Φ. +""" + +import os + +os.environ.setdefault("PYPHI_WELCOME_OFF", "true") + +from typing import Callable, Sequence + +from .core import tpm_from_rules, cm_from_rules +from .core import verdict, major_complex + + +def _core_set(rules: Sequence[Callable], labels: Sequence[str]) -> frozenset: + """The party set of the major complex (max-Φ over reachable states), as a frozenset.""" + core, _ = major_complex(list(rules), tuple(labels)) + return frozenset() if core is None else frozenset(core) + + +def _jaccard(a: frozenset, b: frozenset) -> float: + """Jaccard overlap of two party sets. Two empty cores count as full agreement (1.0).""" + if not a and not b: + return 1.0 + union = a | b + if not union: + return 1.0 + return len(a & b) / len(union) + + +def spread(accountA_rules: Sequence[Callable], + accountB_rules: Sequence[Callable], + labels: Sequence[str]) -> dict: + """Score the divergence between two party accounts of one coordination. + + ``accountA_rules`` and ``accountB_rules`` are per-node Boolean rule lists over the same + ``labels`` (same node count, same ordering). Returns a dict with keys: + + verdict_agreement : int 1 iff both accounts read the same structure. + phi_gap : float |max Φ_MIP(A) - max Φ_MIP(B)|. + core_jaccard : float Jaccard overlap of the two major-complex cores. + both_verdicts : tuple (structureA, structureB), e.g. ('triadic', 'dyadic'). + """ + labels = tuple(labels) + if len(accountA_rules) != len(accountB_rules): + raise ValueError("the two accounts must have the same number of parties") + if len(labels) != len(accountA_rules): + raise ValueError("labels must match the number of parties") + + vA = verdict(list(accountA_rules), labels) + vB = verdict(list(accountB_rules), labels) + + verdict_agreement = int(vA.structure == vB.structure) + phi_gap = abs(float(vA.max_phi) - float(vB.max_phi)) + + coreA = _core_set(accountA_rules, labels) + coreB = _core_set(accountB_rules, labels) + core_jaccard = _jaccard(coreA, coreB) + + return { + "verdict_agreement": verdict_agreement, + "phi_gap": phi_gap, + "core_jaccard": core_jaccard, + "both_verdicts": (vA.structure, vB.structure), + } + + +def node_pivotal(rules: Sequence[Callable], labels: Sequence[str], node_label: str) -> bool: + """Whether ``node_label`` is a member of the major complex under ``rules``. + + A party in the integrated core is in every integrating coalition: its removal takes it out + of the structure that carries Φ. This is the pivotal/veto-player reading of membership + (Probe 11: a party is in the irreducible core only if its determination makes it pivotal). + A party outside the core is droppable, since the coordination integrates without it. + """ + return node_label in _core_set(rules, labels) + + +def pivotality_spread(accountA_rules: Sequence[Callable], + accountB_rules: Sequence[Callable], + labels: Sequence[str], + node_label: str) -> dict: + """Add a node-pivotality flag to the spread between two accounts. + + Returns the full ``spread`` dict extended with: + + pivotalA : bool ``node_label`` is in account A's major complex. + pivotalB : bool ``node_label`` is in account B's major complex. + pivotality_agrees : int 1 iff the flag matches across the two accounts. + + A ``pivotality_agrees`` of 0 records that the two accounts disagree on whether the named + party is pivotal, the veto-player divergence the bridge is meant to register. + """ + base = spread(accountA_rules, accountB_rules, labels) + pa = node_pivotal(accountA_rules, labels, node_label) + pb = node_pivotal(accountB_rules, labels, node_label) + base.update({ + "pivotalA": pa, + "pivotalB": pb, + "pivotality_agrees": int(pa == pb), + }) + return base + + +def signed_phi_gap(accountA_rules: Sequence[Callable], + accountB_rules: Sequence[Callable], + labels: Sequence[str]) -> float: + """max Φ_MIP(A) - max Φ_MIP(B), with sign. Positive means account A integrates more. + + The ``spread`` field ``phi_gap`` is the absolute value of this. The signed form lets a + study ask whether one named account is the more-integrated one, not only how far apart the + two sit. + """ + labels = tuple(labels) + vA = verdict(list(accountA_rules), labels) + vB = verdict(list(accountB_rules), labels) + return float(vA.max_phi) - float(vB.max_phi) + + +def core_node_divergence(accountA_rules: Sequence[Callable], + accountB_rules: Sequence[Callable], + labels: Sequence[str]) -> dict: + """Per-node attribution of where two accounts' major-complex cores diverge. + + Returns the core party set under each account and, for every label, whether that party sits + in account A's core, in account B's core, and whether the two accounts disagree about it. A + party flagged ``disputed`` is one the two accounts place differently: in the core under one + account and outside it under the other. The keys: + + coreA : frozenset account A's major-complex parties. + coreB : frozenset account B's major-complex parties. + per_node : dict label -> {"inA": bool, "inB": bool, "disputed": bool}. + disputed : tuple labels the two accounts place differently, in ``labels`` order. + + When the two cores agree on every party, ``disputed`` is empty. When they differ on exactly + one party, that single label names the disputed member. + """ + labels = tuple(labels) + coreA = _core_set(accountA_rules, labels) + coreB = _core_set(accountB_rules, labels) + per_node = {} + disputed = [] + for lab in labels: + inA = lab in coreA + inB = lab in coreB + d = inA != inB + per_node[lab] = {"inA": inA, "inB": inB, "disputed": d} + if d: + disputed.append(lab) + return { + "coreA": coreA, + "coreB": coreB, + "per_node": per_node, + "disputed": tuple(disputed), + } diff --git a/irreducibility-pipeline/irreducibility/validate.py b/irreducibility-pipeline/irreducibility/validate.py new file mode 100644 index 000000000..56de1d462 --- /dev/null +++ b/irreducibility-pipeline/irreducibility/validate.py @@ -0,0 +1,92 @@ +"""Validate the instrument on its own controls before trusting any verdict. + +Two controls and a five-form regression suite: + + 1. FACTORING control - a structure with a causally decoupled party must read DYADIC (Φ = 0). + 2. IRREDUCIBLE control - a fully coupled three-node network must read TRIADIC (Φ > 0). + 3. Regression suite - each built-in form must match its expected verdict. + +Run: python -m irreducibility.validate (exit code is non-zero if anything fails) +""" + +import sys + +from .core import classify_rules, PHI_EPS + + +def factoring_control(): + """W and S coupled, C decoupled: W' = S, S' = W, C' = C. Must be DYADIC.""" + return [lambda x: x[1], lambda x: x[0], lambda x: x[2]] + + +def irreducible_control(): + """Every node reads the other two: W' = S OR C, S' = W AND C, C' = W XOR S. Must be TRIADIC.""" + return [lambda x: x[1] | x[2], lambda x: x[0] & x[2], lambda x: x[0] ^ x[1]] + + +# Built-in forms (W = worker, S = system/mediator, C = counterpart). +FORMS = { + # chat with a language model: W and S loop; no third party (C decoupled) + "chat_dyad": lambda: [lambda x: x[1], lambda x: x[0], lambda x: x[2]], + # rideshare as a dyadic model sees it: the rider is dropped from dispatch + "gig_dyadic_model": lambda: [lambda x: 1 - x[1], lambda x: x[0], lambda x: x[2] & (1 - x[1])], + # résumé -> applicant-tracking system -> hiring manager, strict bottleneck + "strict_mediation_triad": lambda: [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]], + # same strict topology with feedback reads that break liveness: it factors + "ats_feedback_factors": lambda: [lambda x: 1 - x[1], lambda x: x[0] & x[2], lambda x: x[1] | x[2]], + # the rider is constitutive of dispatch: presents as a dyad, reads the unseen third party + "gig_false_dyad": lambda: [lambda x: 1 - x[1], lambda x: x[0] & x[2], lambda x: x[2] & (1 - x[1])], +} + +EXPECTED = { + "chat_dyad": "dyadic", + "gig_dyadic_model": "dyadic", + "strict_mediation_triad": "triadic", + "ats_feedback_factors": "dyadic", + "gig_false_dyad": "triadic", +} + + +def controls_pass() -> bool: + """True iff both controls read as expected (for scripts that must refuse to run otherwise).""" + return (classify_rules(factoring_control()).structure == "dyadic" + and classify_rules(irreducible_control()).structure == "triadic") + + +def main() -> int: + print("=" * 80) + print("IRREDUCIBILITY PIPELINE - instrument validation") + print("=" * 80) + failures = 0 + + print("\n[1/3] Controls") + for name, rules, expect in [ + ("factoring (C decoupled)", factoring_control(), "dyadic"), + ("irreducible (full coupling)", irreducible_control(), "triadic"), + ]: + v = classify_rules(rules) + ok = v.structure == expect + failures += not ok + print(f" {'PASS' if ok else 'FAIL'} {name:<30} -> {v.structure:<8} " + f"(Φ_MIP max {v.max_phi:.4f}; expected {expect})") + + print("\n[2/3] Built-in forms (regression suite)") + for fname, builder in FORMS.items(): + v = classify_rules(builder()) + expect = EXPECTED[fname] + ok = v.structure == expect + failures += not ok + print(f" {'PASS' if ok else 'FAIL'} {fname:<24} -> {v.structure:<8} " + f"(Φ_MIP max {v.max_phi:.4f}; expected {expect})") + + print("\n[3/3] Summary") + print(f" PHI_EPS = {PHI_EPS:g}") + if failures: + print(f" {failures} FAILURE(S) - do not trust verdicts until resolved.") + return 1 + print(" All controls and built-in forms pass. Instrument validated.") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/irreducibility-pipeline/protocol/PROTOCOL.md b/irreducibility-pipeline/protocol/PROTOCOL.md new file mode 100644 index 000000000..da69e903c --- /dev/null +++ b/irreducibility-pipeline/protocol/PROTOCOL.md @@ -0,0 +1,111 @@ +# Field protocol — reading a real coordination arrangement with exact Φ + +This is a procedure for taking one real coordination arrangement — a dispatch, a handoff, a review +gate — and producing the dyadic/triadic verdict on a model of it. It adapts the lab's research +protocol from invented forms to real ones. It is version 0: a discipline for honest modeling, not a +validated field instrument. Running it on real organizations is what will find its limits. + +## What this produces, and what it does not + +The verdict is about the model, not the organization. The model is a small Boolean dynamical system +whose nodes are the parties and whose rules encode what each party reads and commits. Exact Φ over +that model is exact. The claim that the model stands for the real arrangement is separate, and the +computation cannot supply it. A passed control establishes that the model has the structure claimed +(internal validity). That the model represents the real job is an empirical claim that needs field +evidence (external validity). The protocol's whole job is to keep these two apart and to make the +model falsifiable. + +So the deliverable of a field study is not "this firm demands algorithmacy." It is: "under this +explicitly stated encoding, with this evidence behind each rule, the arrangement is triadic, and +here are the re-encodings that would flip it." The contribution is a disciplined, falsifiable model +and the verdict it carries. + +## The steps + +### 1. Bound one arrangement +Pick a single recurring act of coordination, not the whole organization. A driver and a rider +matched by a platform. An outgoing and an incoming nurse joined by a record. An author and a +maintainer gated by a review system. Write the boundary down: who is in, who is out, what one act +repeats. + +### 2. Name the parties as nodes +Each party that holds a state and updates it. Keep the count small — exact Φ is feasible to about +ten to twelve elements, and a coordination unit is usually three to five: a worker, a system or +platform that mediates, a counterpart, and at most a few more. A party that only watches is a +candidate spectator (step 7); a party that is one of many interchangeable copies is a candidate for +substitution (step 8). + +### 3. Define each node's bit +State what active versus inactive means for each node: complies/withholds, available/unavailable, +approves/blocks. This is an abstraction, and it discards detail. Record what each bit collapses and +what a finer encoding would carry. The verdict is relative to this choice. + +### 4. Elicit the determination rules from evidence +For each node, write its next state as a fixed Boolean function of the others' current states. This +is the load-bearing step. Each rule is a claim about the real arrangement and needs evidence: +interviews, process documents, system logs, observation of the act. For each rule, record the +evidence behind it and at least one alternative that the evidence does not rule out. The system's +rule encodes what the platform reads and commits — whether it merely passes a message, or commits a +determination neither party sets alone. That distinction is usually where the verdict turns. + +### 5. Fix the predicted verdict and the reason before computing +Before computing, write the expected verdict and why, from the structure of the rules. Commit it. +The discipline that makes the lab's record credible is that the prediction is fixed before the +number. Carry it into the field unchanged. + +### 6. Validate the instrument +Run the two canonical controls (a decoupled form must read dyadic, a fully coupled form must read +triadic) before trusting any verdict. The protocol's runner does this first and refuses to proceed +if either fails. + +### 7. Compute and read the verdict +Compute whole-system Φ over the MIP and the major complex. Dyadic (Φ_MIP = 0) means the arrangement +factors along party lines and demands literacy; triadic (Φ_MIP > 0) means it does not and demands +algorithmacy. Read membership on the major complex: a party in the irreducible core does real +coordinating work; a spectator (wired in but idle) drops out and must not be read off whole-system +Φ alone. + +### 8. Sensitivity — re-encode the load-bearing rules +Take the one or two rules the verdict most depends on and re-encode them in a second defensible way +the evidence also permits. Recompute. If the verdict holds, it is robust to that modeling choice. If +it flips, the verdict is a property of the encoding, not the arrangement, and the study reports the +flip as its main finding. Three forces are known to flip a verdict and are worth testing directly: +**substitutability** (a party one of several interchangeable copies can supply becomes non-pivotal +and the form factors), **pass-through** (a system that only relays rather than commits is a pipe, +and the arrangement is dyadic), and **spectators** (an idle party sinks whole-system Φ while the +core stays intact — read the complex). + +### 9. State the claim and what would falsify it +Report the verdict, the encoding in full, the evidence per rule, and the sensitivity result. +State plainly what re-encoding or what field observation would overturn it. The honesty of the +result is the clarity of the model behind it. + +## What the verdict can and cannot say + +It can say: under this model, the arrangement is or is not irreducible across party lines, and these +parties form the core. It is exact for the model and reproducible. + +It cannot grade difficulty — the verdict is binary, and the magnitude of Φ is dominated by the +encoding, so it is read at most ordinally. It does not measure any worker. It is model-relative and +size-bounded. It is in-silico evidence about a model, and the validation gap to the real +organization is not closed by computing harder. + +## The evidence a real study needs + +The rules in step 4 are only as good as their evidence. A field study should ground each rule in at +least one of: a documented process or policy, a system log or audit trail, or convergent accounts +from the parties themselves. Where the parties disagree about what determines an action, that +disagreement is data — model both readings and report the verdict under each. Stipulated rules, with +no field evidence, produce a demonstration, not a finding. The mock studies in this directory are +exactly that: stipulated, for showing the mechanics. + +## Limitations, and the path to a field-tested protocol + +This protocol has not been run on a real organization. Several limits are visible already, and real +work will find more. Binary node states are coarse, and many coordination acts are graded. The rule +elicitation in step 4 has no standard method yet — no interview guide, no inter-rater reliability +for "what determines this action," no procedure for reconciling conflicting accounts. The boundary +in step 1 is a judgment call, and a different boundary can change the parties. The sensitivity step +samples re-encodings rather than searching them. Each of these is a place where a real study will +push back, and each push-back is how the field-tested version gets built. Treat the mocks as a +starting template, expect them to break in contact with a real case, and report what breaks. diff --git a/irreducibility-pipeline/protocol/coding_scheme.md b/irreducibility-pipeline/protocol/coding_scheme.md new file mode 100644 index 000000000..586f8ce80 --- /dev/null +++ b/irreducibility-pipeline/protocol/coding_scheme.md @@ -0,0 +1,65 @@ +# Coding scheme — gig dispatch + +How interview, observation, and document evidence becomes a Boolean determination rule for each node, with +the bit calibration and the inter-rater reliability procedure. Commit this with +[`predictions_fixed_in_advance.md`](predictions_fixed_in_advance.md) before the fieldwork, so the encoding rules are fixed before +the answers. + +## The bits + +Each node is active (1) or inactive (0). The calibration below is the decision rule for assigning the bit +to a coded segment, so two coders apply the same standard. + +| Node | active (1) | inactive (0) | what it collapses | +|---|---|---|---| +| D driver | positioned and accepting for this match | unavailable or declining | the driver's positioning strategy and decline pattern | +| S dispatch | commits this match (assigns, sets fare) | withholds or routes elsewhere | the scoring, pricing, and matching logic | +| R rider | requesting and accepting the match and price | not requesting or cancelling | the rider's preferences over price, time, driver | + +Where a finer encoding would carry more (the driver's positioning is graded, beyond binary), record the loss +and hold it for the sensitivity step. + +## From evidence to a rule + +For each node, the rule is its next state as a Boolean function of the others' current states. Build it in +three moves. + +1. **Establish who each node reads.** A node reads another if the evidence shows its action depends on the + other's state. The driver reads the system if she acts on what the app offers; the system reads the + rider if the match depends on the request; and so on. An edge needs convergent evidence: a documented + process, a log, or agreement among the parties. A single unsupported claim is recorded as an alternative, + not an edge. + +2. **Establish the function over those inputs.** For the system, the decisive question is whether it + *commits* on a joint condition of the parties (a match that requires both an available driver and a + requesting rider and binds both: S = D ∧ R) or *conveys* (relays a signal the parties act on alone: + S = D) or *stores* (holds inputs for a human to decide). Use the commit-versus-convey questions in the + interview guide; code commit only where the evidence shows the assignment is binding and neither party + sets the terms alone. + +3. **Record the alternative the evidence does not rule out, and any disagreement.** Every rule carries at + least one defensible alternative for the sensitivity step. Where drivers disagree about the system's + rule, do not resolve it by majority; carry both readings into the analysis and report the verdict under + each. The disagreement is a finding about whose account of the coordination governs. + +## The forces to code for explicitly + +The verdict turns on three encodings, so code the evidence that decides each. + +- **Substitutability.** Whether a specific driver is required for the match, or any eligible driver in + range is interchangeable. Evidence: the platform's eligibility and pool documentation, observed + pass-throughs of declined rides, driver and ops accounts. If interchangeable, the system's rule reads a + pool, set apart from the driver, and the second model is S = (D₁ ∨ D₂) ∧ R. +- **Pass-through versus commit.** Whether the assignment binds or is a proposal the parties shape. + Evidence: can the fare or route change after the match, is there a human decision, do the parties choose. +- **Spectators.** Any party wired into the act but idle (a support agent monitoring, a feature that watches + but does not act). Code it as a node and let the analysis drop it from the core. + +## Inter-rater reliability + +Two coders independently encode each rule and each bit from the same evidence, blind to each other. Report +Krippendorff's α per rule and per bit; the target is α ≥ 0.80. Where α falls short, the coders reconcile +the calibration, re-code, and report the revised α and what was ambiguous. The reconciliation is itself +evidence about where the arrangement is hard to read, and it is reported, never hidden. Member-check the +encoded rules with the parties: show drivers the rule attributed to the system and ask whether it matches +their experience, and record where it does not. diff --git a/irreducibility-pipeline/protocol/ethics.md b/irreducibility-pipeline/protocol/ethics.md new file mode 100644 index 000000000..9fa5a4b33 --- /dev/null +++ b/irreducibility-pipeline/protocol/ethics.md @@ -0,0 +1,43 @@ +# Human-subjects considerations — gig dispatch + +This study interviews gig drivers about a platform that evaluates them and can deactivate them. The +population is economically precarious and already surveilled, and the topic is the system that governs +their livelihood. The ethics are not a formality here; they shape the design. + +## Approval and consent + +The study requires institutional review board approval before any recruitment. Consent is informed, +voluntary, and revocable: each participant is told the purpose, that participation is unconnected to any +platform and cannot affect their standing, that they may skip questions or stop at any time, and that their +account will be de-identified. Consent is documented without collecting more identifying information than +the consent itself requires. + +## Recruitment away from the platform + +Drivers are recruited through channels independent of the platforms — driver forums, community +organizations, snowball referral — never through a platform's own systems. Routing recruitment through a +platform would expose participants to it and would bias the sample toward the compliant. The independence +of recruitment is part of protecting participants from retaliation. + +## Anonymity against a party that can identify them + +The platform can often re-identify a driver from a few details of a described ride. De-identification is +therefore strict: no platform handles, no specific dates or locations in quoted material, no ride details +fine enough to single out a trip. Quotes are generalized where a verbatim would identify the speaker, and +the loss of vividness is accepted for the protection it buys. Data is stored separately from any +identifier, access-controlled, and retained only as long as the analysis needs. + +## Member-checking without exposure + +The coding scheme calls for member-checking the encoded rules with the parties. This is done so that no +participant is shown another's account in a way that could identify them, and so that checking the rule +attributed to the system does not require a driver to make claims that could be traced. Where member- +checking would risk exposure, it is done in aggregate or forgone, and the limitation is reported. + +## The power asymmetry, stated + +The researcher, the worker, and the platform hold very different power, and the study says so. The account it produces is the worker's and the documented process, read against a formal model; +never the platform's, which is unavailable and interested. The verdict is reported as evidence about a +model built from what the parties and the documents disclose, with the platform's withheld rule named as a +limit. The study avoids advising platforms on tuning the arrangement; its audience is the worker, the +researcher, and the public account of how this coordination is structured. diff --git a/irreducibility-pipeline/protocol/interview_guide.md b/irreducibility-pipeline/protocol/interview_guide.md new file mode 100644 index 000000000..7bda49060 --- /dev/null +++ b/irreducibility-pipeline/protocol/interview_guide.md @@ -0,0 +1,59 @@ +# Interview guide — gig dispatch + +The questions are built to elicit each party's determination rule (step 4) and the three forces the +verdict turns on: whether the system commits or conveys, whether the driver is substitutable, and whether +any direct driver-rider channel sets the terms. Three protocols follow, for drivers, platform-side staff, +and riders. Drivers are the core population; the others triangulate the system's rule. Semi-structured: +ask the listed questions, follow what the participant raises, and probe every claim about the system for +the evidence behind it. Record verbatim where possible, since folk theories of the rule are the data. + +## A. Drivers (the core population, target 20–30, to saturation) + +Opening, the bounded act. Walk me through the last ride you took, from before the request came in to when +it ended. What did you do to be in a position to get it? What did the app show you, and when? + +The driver's rule (what determines D). Before a request comes, what are you deciding, and on what? How do +you choose where to wait? When a ride is offered, what makes you accept or decline? Are you reacting to the +rider, to the app, or to something else? Walk me through a decline. + +The system's rule (the driver's folk theory of S). When you get a ride, what do you think the app used to +send you that one? Does it look at what you have been doing, where you are, who the rider is? Has anyone +told you how it decides, or have you worked it out? How sure are you? Tell me about a time the app did +something you could not explain. + +Commit versus convey. When a ride is assigned, do you feel it is a decision the app made that you and the +rider then carry out, or a suggestion you are free to shape? Can you change the fare or the route once it +is set? Could you and the rider have arranged this ride without the app in the middle? + +Substitutability. If you had not been there, would that rider have gotten a driver anyway? How fast? +Does it feel like the app needs you in particular, or just a driver? Have you seen the app pass a ride you +declined straight to someone else? + +The shared, swapped folk theory. Do you talk with other drivers about how the app works? Do you agree +about it? Where do you disagree? Has your sense of how it decides changed over time, and why? + +Closing. Is there something the app does that a person across a table never would? What would you want it +to understand about you that it has no way to take in? + +## B. Platform-side staff (dispatchers, ops, support; as access allows) + +The documented process. Walk me through what happens, in the system, from a rider's request to a match. +What does the matching step read? What does it decide versus surface for a person? Is there a human in the +loop, and where? What is written down, and where does practice depart from it? + +Commit versus convey. When the system matches, is the assignment binding on the driver and the rider, or a +proposal either can change? Who sets the fare and the route, and can either party move it after the match? + +Substitutability and the pool. From the system's side, is a specific driver ever required for a match, or +is any eligible driver in range interchangeable? What makes a driver eligible? How is the pool managed? + +The platform's objective. Does the matching optimize anything beyond pairing this driver with this rider — +utilization, surge, retention? Is that objective separable from the match, or is it the match? + +## C. Riders (triangulation, target 10–15) + +The rider's rule. Walk me through requesting your last ride. What did you decide, and on what? Did you +choose the driver, or did the app pair you? Could you have reached the driver directly? + +Commit versus convey, from the other side. When you were matched, was that a decision the app made, or +options you picked from? Could you change the driver, the fare, or the route after the match? diff --git a/irreducibility-pipeline/protocol/predictions_fixed_in_advance.md b/irreducibility-pipeline/protocol/predictions_fixed_in_advance.md new file mode 100644 index 000000000..837ea9157 --- /dev/null +++ b/irreducibility-pipeline/protocol/predictions_fixed_in_advance.md @@ -0,0 +1,51 @@ +# Predictions fixed before computing — gig dispatch + +Committed before any fieldwork, so the git history shows the verdict was fixed before the data. This +states the prior, the predicted verdict, the decision rules tying evidence to verdict, and what would +falsify the prediction. It is carried into the field unchanged. + +## The prior + +The arrangement is read against the false dyad (`gig_false_dyad`, in `studies/forms_library.py`), +where a coordination that presents as a driver-app pair is in fact triadic because the dispatch reads the +unseen rider. Two further priors bear on it: substitutability (example 01, encoding C), +under which a driver one of many interchangeable copies can supply is non-pivotal and the form factors for +her, and disintermediation (example 01, encodings O1–O5), under which a direct +driver-rider channel would dissolve the mediation only if it ran both ways and set the terms. + +## The predicted verdict + +The dispatch arrangement is triadic. The system commits a match that reads both the driver's availability +and the rider's request and binds both, a determination neither party sets alone, so the arrangement does +not factor across the driver, system, and rider, and demands algorithmacy. Under the candidate model +S = D ∧ R this is exact Φ of 2.0 with all three in the major complex. + +The named departure, held open as the place the contribution is built: if the evidence shows the driver is +freely substitutable in the moment of the match — any eligible driver in range would have served the +rider — then the driver is non-pivotal, the irreducible core contracts to the dispatch and the rider, and +the arrangement is dyadic for the driver while remaining triadic for the system and the rider. This is the +structural face of the gig worker's replaceability, and finding it would be the study's main result. + +## Decision rules + +- **Triadic, full core**, if the evidence supports a system that commits on a joint condition of an + available driver and a requesting rider, binding both, with the specific driver pivotal to the match. +- **Dyadic, core dispatch-rider**, if the evidence shows the driver freely substitutable, so the system's + rule reads a pool instead of the driver (S = (D₁ ∨ D₂) ∧ R). +- **Dyadic, pass-through**, if the evidence shows the system relays options the driver and rider choose + between, with no binding assignment (S = D). +- **Dyadic, store**, if the evidence shows the system stores inputs a human dispatcher rules on. +- **Both readings reported**, where drivers and platform-side accounts disagree about which of these holds; + the verdict under each is reported, and the disagreement is the finding. + +The verdict is read on the major complex, not whole-system Φ, so an idle support agent or any spectator +does not move it. + +## What would falsify the prediction + +The prediction of a triadic, full-core verdict is falsified by evidence that the driver is substitutable in +the moment (moves it to dyadic for the driver), that the system only conveys (pass-through), or that a +direct driver-rider channel sets the terms (dissolves the mediation). A null in which the arrangement reads +dyadic for the driver across every defensible encoding would tell against the algorithmacy reading of gig +work and is reported as such. The sensitivity battery (`python -m irreducibility.analyze examples/01_gig_dispatch/encodings.json`) computes each of +these so the flip, if it comes, is located precisely. diff --git a/irreducibility-pipeline/pyproject.toml b/irreducibility-pipeline/pyproject.toml new file mode 100644 index 000000000..377f0ec37 --- /dev/null +++ b/irreducibility-pipeline/pyproject.toml @@ -0,0 +1,22 @@ +[build-system] +requires = ["setuptools>=64"] +build-backend = "setuptools.build_meta" + +[project] +name = "irreducibility-pipeline" +version = "0.1.0" +description = "Exact irreducibility analysis of coordinative structures with PyPhi (IIT 4.0), with an evidence-gated AI encoding step" +readme = "README.md" +license = { text = "MIT" } +requires-python = ">=3.10" +dependencies = [ + "numpy", + "pyphi @ git+https://github.com/wmayner/pyphi@b78d0e342d37175cbd55cf35a6d52ae035b4c50f", +] + +[project.optional-dependencies] +proxy = ["phyid @ git+https://github.com/Imperial-MIND-lab/integrated-info-decomp"] +test = ["pytest"] + +[tool.setuptools] +packages = ["irreducibility"] diff --git a/irreducibility-pipeline/reproduce.json b/irreducibility-pipeline/reproduce.json new file mode 100644 index 000000000..8f1356e8a --- /dev/null +++ b/irreducibility-pipeline/reproduce.json @@ -0,0 +1,175 @@ +{ + "checks": [ + { + "name": "instrument-controls", + "cmd": "python -m irreducibility.validate", + "expect": [ + "Instrument validated", + "factoring (C decoupled) -> dyadic", + "irreducible (full coupling) -> triadic" + ], + "what": "the two controls and five regression forms" + }, + { + "name": "example-gig-dispatch", + "cmd": "python -m irreducibility.analyze examples/01_gig_dispatch/encodings.json", + "expect": [ + "[A] platform's account", + "verdict: TRIADIC max Φ_MIP = 2.000", + "major complex (who is bound): {D, P, R}", + "mediator (P) position: BOTTLENECK", + "verdict: DYADIC max Φ_MIP = 0.000", + "major complex (who is bound): {P, R}", + "position: ENRICHER", + "position: CAPTURE", + "position: BYPASSED", + "single rule that flips it: P: 'D and R' -> 'D'" + ], + "what": "gig dispatch: rival readings and outside-option designs" + }, + { + "name": "example-insurance-claim", + "cmd": "python -m irreducibility.analyze examples/02_insurance_claim/encodings.json", + "expect": [ + "held in 2/5" + ], + "what": "insurance claim: five routing designs" + }, + { + "name": "example-code-review-gate", + "cmd": "python -m irreducibility.analyze examples/03_code_review_gate/encodings.json", + "expect": [ + "verdict: TRIADIC max Φ_MIP = 1.000", + "major complex (who is bound): {A, M}", + "mediator (G) position: BYPASSED" + ], + "what": "code-review gate" + }, + { + "name": "example-dealer-clearinghouse", + "cmd": "python -m irreducibility.analyze examples/04_dealer_vs_clearinghouse/encodings.json", + "expect": [ + "bypass test on I: contingent (Φ lost when the bypass opens: 2.000", + "bypass test on I: intrinsic (Φ lost when the bypass opens: 0.000" + ], + "what": "intrinsic vs contingent intermediation" + }, + { + "name": "encodings-admissible", + "cmd": "python -m irreducibility.encode_check examples/01_gig_dispatch/encodings.json", + "expect": [ + "ADMISSIBLE: 8 encoding(s)" + ], + "what": "evidence gate on the human encodings" + }, + { + "name": "ai-draft-gig", + "cmd": "python -m irreducibility.analyze examples/01_gig_dispatch/ai_draft_plus_adversary.json", + "expect": [ + "[driver_pool]", + "predicted before computing: triadic, core {D1,D2,P,R} -> FAILED", + "[direct_contact_substitute]", + "mediator (P) position: BYPASSED" + ], + "what": "logged AI drafter + adversary run, computed" + }, + { + "name": "ai-draft-insurance-rejected", + "cmd": "python -m irreducibility.encode_check examples/02_insurance_claim/ai_draft.json", + "expect": [ + "REJECTED: 9 problem(s) in 5 encoding(s)" + ], + "what": "logged AI drafter run that left rules unwritten", + "ok_codes": [ + 1 + ] + }, + { + "name": "census", + "cmd": "python -m studies.census", + "expect": [ + "triadic (Φ > 0) : 24 (9.4%)", + "(24/160)", + "(0/96)" + ], + "what": "256-form strict-mediation census" + }, + { + "name": "field-mocks", + "cmd": "python -m studies.field_mocks", + "expect": [ + "verdict matched the reading fixed before computing: 9/10", + "4 sensitivity flip(s)", + "M1 Ride-hail dispatch: triadic -> dyadic under [substitutable drivers]" + ], + "what": "ten mock organizations and their sensitivity flips" + }, + { + "name": "mediator-in-core", + "cmd": "python -m studies.mediator_in_core", + "expect": [ + "BOTTLENECK 68 (13.6%)", + "2 substitute off-platform -> BYPASSED" + ], + "what": "regimes over 500 random forms; disintermediation walk" + }, + { + "name": "enricher-regime", + "cmd": "python -m studies.enricher_regime", + "expect": [ + "CAPTURE 141 (28.2%)", + "ENRICHER 30 ( 6.0%)", + "law holds on 60/60 random option configurations", + "captive worker, mobile counterpart [none/full] -> CAPTURE", + "BOTTLENECK 13 ( 2.6%)" + ], + "what": "outside-option law" + }, + { + "name": "contingent-irreducibility", + "cmd": "python -m studies.contingent_irreducibility", + "expect": [ + "H3 (bypass removes the contingent party: kind=contingent, margin=2.0): SUPPORTED", + "H4 (same bypass leaves the intrinsic mediator: kind=intrinsic, margin=0): SUPPORTED" + ], + "what": "bypass counterfactual" + }, + { + "name": "design-operations", + "cmd": "python -m studies.design_operations", + "expect": [ + "H3 build and break are inverse pairs per lever: True" + ], + "what": "three design levers, build and break" + }, + { + "name": "thompson-ordering", + "cmd": "python -m studies.thompson_ordering", + "expect": [ + "H1 VERDICT: CONFIRMED", + "sequential Φ = 2.000000 (triadic)" + ], + "what": "Thompson's ordering collapses at the top step" + }, + { + "name": "adversarial-coding", + "cmd": "python -m studies.adversarial_coding", + "expect": [ + "forced flips : 101", + "CI contains adv. point : 22" + ], + "what": "evidence-permitted adversary flips every contested account", + "slow": true + }, + { + "name": "proxies", + "cmd": "python -m studies.proxy_run", + "expect": [ + "rank-AUC=0.563", + "rank-AUC=0.629" + ], + "what": "time-series proxies cannot recover the verdict", + "slow": true + } + ] +} \ No newline at end of file diff --git a/irreducibility-pipeline/reproduce.py b/irreducibility-pipeline/reproduce.py new file mode 100644 index 000000000..c45390917 --- /dev/null +++ b/irreducibility-pipeline/reproduce.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +"""Reproduce every number the proposal cites, from the code in this repository. + +A check passes only if its command exits zero and its output contains every expected string. + + python reproduce.py # all checks + python reproduce.py --fast # skip the slower checks (the proxy study) + python reproduce.py NAME ... # only the named checks +""" + +import json +import os +import subprocess +import sys +import time + +ROOT = os.path.dirname(os.path.abspath(__file__)) + + +def main(argv): + with open(os.path.join(ROOT, "reproduce.json"), encoding="utf-8") as f: + checks = json.load(f)["checks"] + fast = "--fast" in argv + names = [a for a in argv if not a.startswith("--")] + if names: + checks = [c for c in checks if c["name"] in names] + elif fast: + checks = [c for c in checks if not c.get("slow")] + env = dict(os.environ, PYPHI_WELCOME_OFF="yes") + failed = 0 + for c in checks: + t0 = time.time() + p = subprocess.run([sys.executable] + c["cmd"].split()[1:], cwd=ROOT, env=env, + capture_output=True, text=True, timeout=c.get("timeout", 600)) + out = p.stdout + p.stderr + missing = [e for e in c["expect"] if e not in out] + ok = p.returncode in c.get("ok_codes", [0]) and not missing + failed += not ok + print(f"{'PASS' if ok else 'FAIL'} {c['name']:<34} {time.time() - t0:6.1f}s {c['what']}") + for m in missing: + print(f" missing: {m!r}") + if p.returncode not in c.get("ok_codes", [0]): + print(f" exit code {p.returncode}") + print(f"\n{len(checks) - failed}/{len(checks)} checks passed.") + return 1 if failed else 0 + + +if __name__ == "__main__": + sys.exit(main(sys.argv[1:])) diff --git a/irreducibility-pipeline/requirements.txt b/irreducibility-pipeline/requirements.txt new file mode 100644 index 000000000..4e1e21493 --- /dev/null +++ b/irreducibility-pipeline/requirements.txt @@ -0,0 +1,6 @@ +numpy +# PyPhi, IIT 4.0 line, pinned to the commit every number in this repository was computed with +pyphi @ git+https://github.com/wmayner/pyphi@b78d0e342d37175cbd55cf35a6d52ae035b4c50f +pytest +# optional: only the proxy study (studies/proxy_run.py) needs phyid +phyid @ git+https://github.com/Imperial-MIND-lab/integrated-info-decomp diff --git a/irreducibility-pipeline/studies/__init__.py b/irreducibility-pipeline/studies/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/irreducibility-pipeline/studies/adversarial_coding.py b/irreducibility-pipeline/studies/adversarial_coding.py new file mode 100644 index 000000000..aaeff8101 --- /dev/null +++ b/irreducibility-pipeline/studies/adversarial_coding.py @@ -0,0 +1,199 @@ +"""q182 — adversarial coding against the agreement-weighted Φ CI. + +Question: Can an adversarial coder, choosing the maximally permissible-yet-defensible rule +readings, force a target verdict on a synthetic account, and does the agreement-weighted Φ CI +resist the manipulation? + +H1 (fixed before computing): An adversary restricted to evidence-permitted alternatives flips the + point verdict (dyadic <-> triadic) on more than 40% of attacked synthetic accounts by choosing + among defensible readings. + NULL: the adversary flips fewer than 10%, so the point verdict is robust to defensible + re-coding alone. + +H2 (fixed before computing): The agreement-weighted Φ CI over the full set of defensible readings + still brackets the consensus verdict (the adversary's forced point estimate falls inside the + CI) in more than 90% of attacked accounts, so the CI exposes the manipulation as uncertainty + rather than a clean flip. + NULL: the adversary's estimate falls outside the CI in more than 10%, so propagating + disagreement does not defend against adversarial coding. + +Method: each synthetic account is a coder panel — a multiset of defensible mediator readings of one + three-party coordination (W, S, C), with W and C fixed to copy the mediator S. A reading is + triadic (S binds both W and C: AND/OR/XOR) or dyadic (S copies one party or goes constant). The + consensus point verdict is the majority structure across the panel. The adversary is restricted + to readings actually present in the panel and picks the opposite-kind reading with the most + extreme Φ, forcing a point verdict. rule_to_phi (the q173 bridge) reads each reading to its + exact Φ_MIP verdict; phi_ci_from_rules propagates the panel disagreement into a bootstrap-t CI. + H1 measures the forced-flip rate over attacked accounts; H2 measures CI containment of the + adversary's forced point estimate. Controls: an honest-consensus account (unanimous panel, no + flip available) and a unique-defensible-reading account (adversary powerless, CI degenerate). + All accounts are synthetic coded rule sets; no worker is measured. + +Run: source /tmp/rvenv/bin/activate && export PYPHI_WELCOME_OFF=yes && \ + python -m studies.adversarial_coding | \ + tee studies/results/adversarial_coding.txt +""" + +import os +import sys +from collections import Counter + +os.environ.setdefault("PYPHI_WELCOME_OFF", "true") + +import numpy as np + +from irreducibility.rule_to_phi import rule_to_phi, phi_ci_from_rules + +LABELS = ("W", "S", "C") +SEED = 0 +N_ACCOUNTS = 200 + +# Fixed peripheral rules: worker and counterpart copy the mediator's state. +_W = lambda x: x[1] +_C = lambda x: x[1] + +# Mediator readings. Triadic readings bind both W and C; dyadic readings drop one party. +_TRIADIC = { + "AND": lambda x: x[0] & x[2], + "OR": lambda x: x[0] | x[2], + "XOR": lambda x: x[0] ^ x[2], +} +_DYADIC = { + "copyW": lambda x: x[0], + "copyC": lambda x: x[2], + "const": lambda x: 0, +} +_NAMES = list(_TRIADIC) + list(_DYADIC) + + +def _rules(name): + med = _TRIADIC[name] if name in _TRIADIC else _DYADIC[name] + return [_W, med, _C] + + +def _kind(name): + return "triadic" if name in _TRIADIC else "dyadic" + + +# Cache the exact-Φ reading of every named reading once (deterministic, Φ not reimplemented). +_PHI = {n: rule_to_phi(_rules(n), LABELS)["max_phi"] for n in _NAMES} +_STRUCT = {n: rule_to_phi(_rules(n), LABELS)["structure"] for n in _NAMES} + + +def _consensus_structure(panel): + """Majority structure across the coder panel (the honest point verdict).""" + counts = Counter(_kind(n) for n in panel) + top = counts.most_common() + if len(top) > 1 and top[0][1] == top[1][1]: + return None # tied panel: no determinate consensus + return top[0][0] + + +def _adversary_pick(panel, target): + """The opposite-kind reading in the panel with the most extreme Φ (forces a point verdict).""" + cands = [n for n in panel if _kind(n) == target] + if not cands: + return None + if target == "triadic": + return max(cands, key=lambda n: _PHI[n]) + return min(cands, key=lambda n: _PHI[n]) + + +def _gen_account(rng): + """One synthetic account: a coder panel of defensible mediator readings. + + 65% contested (both kinds in the defensible pool, so a flip is available); 35% unique + (one reading repeated, no opposite-kind alternative — the powerless-adversary control type). + """ + if rng.random() < 0.65: + n_tri = int(rng.integers(1, 4)) + n_dy = int(rng.integers(1, 4)) + panel = (list(rng.choice(list(_TRIADIC), size=n_tri, replace=True)) + + list(rng.choice(list(_DYADIC), size=n_dy, replace=True))) + else: + name = str(rng.choice(_NAMES)) + panel = [name] * int(rng.integers(3, 6)) + rng.shuffle(panel) + return [str(n) for n in panel] + + +def main(): + # ---- INSTRUMENT CONTROL --------------------------------------------------------------- + v = rule_to_phi([lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]], LABELS) + assert v["structure"] == "triadic", f"control structure {v['structure']!r}" + assert abs(v["max_phi"] - 2.0) < 1e-9, f"control max_phi {v['max_phi']}" + print(f"CONTROL faithful triad reads '{v['structure']}' max_phi={v['max_phi']:.6f}: PASS") + print() + + # ---- CONTROL A: honest consensus (unanimous panel, no flip available) ----------------- + honest = ["AND", "AND", "AND", "AND"] + con_h = _consensus_structure(honest) + adv_h = _adversary_pick(honest, "dyadic" if con_h == "triadic" else "triadic") + print("CONTROL A honest consensus panel=['AND']*4") + print(f" consensus = {con_h}; adversary opposite-kind reading available = {adv_h is not None}") + print() + + # ---- CONTROL B: unique defensible reading (adversary powerless, CI degenerate) -------- + uniq = ["copyW", "copyW", "copyW"] + con_u = _consensus_structure(uniq) + adv_u = _adversary_pick(uniq, "triadic" if con_u == "dyadic" else "dyadic") + ci_u = phi_ci_from_rules([_rules(n) for n in uniq], labels=LABELS, + rng=np.random.default_rng(SEED)) + print("CONTROL B unique reading panel=['copyW']*3") + print(f" consensus = {con_u}; adversary opposite-kind reading available = {adv_u is not None}; " + f"CI degenerate = {ci_u['degenerate']} (CI=[{ci_u['ci_low']:.3f},{ci_u['ci_high']:.3f}])") + print() + + # ---- POPULATION ATTACK ---------------------------------------------------------------- + rng = np.random.default_rng(SEED) + attacked = 0 + flips = 0 + contained = 0 + powerless = 0 + tied = 0 + for _ in range(N_ACCOUNTS): + panel = _gen_account(rng) + consensus = _consensus_structure(panel) + if consensus is None: + tied += 1 + continue + target = "dyadic" if consensus == "triadic" else "triadic" + pick = _adversary_pick(panel, target) + if pick is None: + powerless += 1 + continue + attacked += 1 + adv_phi = _PHI[pick] + if _kind(pick) != consensus: + flips += 1 + ci = phi_ci_from_rules([_rules(n) for n in panel], labels=LABELS, + rng=np.random.default_rng(SEED)) + if ci["ci_low"] - 1e-9 <= adv_phi <= ci["ci_high"] + 1e-9: + contained += 1 + + flip_rate = flips / attacked if attacked else 0.0 + contain_rate = contained / attacked if attacked else 0.0 + + print("POPULATION ATTACK (synthetic accounts)") + print(f" accounts generated : {N_ACCOUNTS}") + print(f" tied (no consensus) : {tied}") + print(f" powerless (unique pool): {powerless}") + print(f" attacked : {attacked}") + print(f" forced flips : {flips} flip_rate = {flip_rate:.3f}") + print(f" CI contains adv. point : {contained} contain_rate = {contain_rate:.3f}") + print() + print(f"{'metric':<28}{'value':>8}{'threshold':>12}") + print(f"{'H1 forced-flip rate':<28}{flip_rate:>8.3f}{'> 0.40':>12}") + print(f"{'H2 CI-containment rate':<28}{contain_rate:>8.3f}{'> 0.90':>12}") + print() + + h1 = flip_rate > 0.40 + h2 = contain_rate > 0.90 + print(f"H1 adversary flips point verdict on >40% of attacked accounts: " + f"{'SUPPORTED' if h1 else 'REFUTED'}") + print(f"H2 agreement-weighted CI brackets the adversarial point estimate on >90%: " + f"{'SUPPORTED' if h2 else 'NOT SUPPORTED'}") + + +if __name__ == "__main__": + main() diff --git a/irreducibility-pipeline/studies/breadth_forms.py b/irreducibility-pipeline/studies/breadth_forms.py new file mode 100644 index 000000000..6d68fe9aa --- /dev/null +++ b/irreducibility-pipeline/studies/breadth_forms.py @@ -0,0 +1,72 @@ +"""Q64 forms: multi-recipient outreach campaigns, parameterized by recipient count k. + +Parties: sender intent (E, index 0), agent/mediator (M, index 1), recipients (R1..Rk, indices 2..k+1). +The agent's commit is M's rule. Each recipient reads the agent (Ri'=M) so it stays live; the sender +reads the agent (E'=M). +""" + +import os +import sys + +os.environ.setdefault("PYPHI_WELCOME_OFF", "true") + +DYADIC_CONTROL = [lambda x: x[1], lambda x: x[0], lambda x: x[2]] # R decoupled -> dyadic +TRIADIC_CONTROL = [lambda x: x[1] | x[2], lambda x: x[0] & x[2], lambda x: x[0] ^ x[1]] # triadic + + +def labels(k): + return ("E", "M") + tuple(f"R{i}" for i in range(1, k + 1)) + + +def _downstream(n): + """E'=M and each Ri'=M (all read the agent).""" + return [lambda x: x[1]] + [lambda x: x[1] for _ in range(n - 2)] + + +def all_required(k): + """M' = E AND R1 AND ... AND Rk.""" + n = k + 2 + + def m(x): + v = x[0] + for i in range(2, n): + v &= x[i] + return v + + rules = [lambda x: x[1], m] + [lambda x: x[1] for _ in range(2, n)] + return rules + + +def substitutable(k): + """M' = E AND (R1 OR ... OR Rk).""" + n = k + 2 + + def m(x): + o = 0 + for i in range(2, n): + o |= x[i] + return x[0] & o + + return [lambda x: x[1], m] + [lambda x: x[1] for _ in range(2, n)] + + +def pooled(k): + """M' = E (the agent reads no recipient); recipients are readouts.""" + n = k + 2 + return [lambda x: x[1], lambda x: x[0]] + [lambda x: x[1] for _ in range(2, n)] + + +def mixed_k3(): + """k=3, n=5: M' = E AND R1 AND (R2 OR R3) — one substitutable pair.""" + return [lambda x: x[1], lambda x: x[0] & x[2] & (x[3] | x[4]), + lambda x: x[1], lambda x: x[1], lambda x: x[1]] + + +def check_controls(verdict_fn): + d = verdict_fn(DYADIC_CONTROL, ("E", "M", "R")) + t = verdict_fn(TRIADIC_CONTROL, ("E", "M", "R")) + ok = d.structure == "dyadic" and t.structure == "triadic" + line = (f"[control] dyadic relay: {d.structure} Φ={d.max_phi:.3f} | " + f"triadic full-coupling: {t.structure} Φ={t.max_phi:.3f} -> {'PASS' if ok else 'FAIL'}") + assert ok, "instrument control failed: " + line + return line diff --git a/irreducibility-pipeline/studies/census.py b/irreducibility-pipeline/studies/census.py new file mode 100644 index 000000000..9e762a0a9 --- /dev/null +++ b/irreducibility-pipeline/studies/census.py @@ -0,0 +1,125 @@ +"""Population check: across the whole strict-mediation family, what decides irreducibility? + +The corpus's structure-first finding (topology does not decide the verdict; the mediator reading +both parties is necessary but not sufficient) rests on a handful of curated forms. This makes it a +population result. + +The strict-mediation three-node family. Worker W, mediator S, counterpart C, with NO direct W<->C +edge — the parties meet only through the mediator. Each node's next state is a Boolean function of +its allowed inputs: + W' = f_W(S) 4 functions of one input + C' = f_C(S) 4 functions of one input + S' = f_S(W, C) 16 functions of two inputs +So the family is 4 x 16 x 4 = 256 forms. (This is the strict-mediation slice; the dissertation's +`paper3_baseline/catalog.py` enumerates the complete 4,096-wiring family including back-channels.) + +For each form we compute exact IIT-4.0 Φ, the verdict, and structural tags, then report the +conditional probabilities that make the finding precise. + +Run: python -m studies.census +""" + +import csv +import os +import time + +from irreducibility.core import classify_rules +from studies.forms_library import structural_tags + +_HERE = os.path.dirname(__file__) +_RESULTS = os.path.join(_HERE, "results") + + +def _fn1(table): + """Boolean function of one input, table = (out0, out1).""" + return lambda v: table[v] + + +def _fn2(table): + """Boolean function of two inputs (a, b), table indexed by (a | b<<1), 4 bits.""" + return lambda a, b: table[a | (b << 1)] + + +def _one_input_tables(): + return [(o0, o1) for o0 in (0, 1) for o1 in (0, 1)] # 4 + + +def _two_input_tables(): + return [tuple((m >> k) & 1 for k in range(4)) for m in range(16)] # 16 + + +def enumerate_family(): + """Yield (label, rules) over the 256 strict-mediation forms.""" + ones = _one_input_tables() + twos = _two_input_tables() + for iw, tw in enumerate(ones): + fw = _fn1(tw) + for ic, tc in enumerate(ones): + fc = _fn1(tc) + for is_, ts in enumerate(twos): + fs = _fn2(ts) + rules = [ + (lambda x, fw=fw: fw(x[1])), # W' = f_W(S) + (lambda x, fs=fs: fs(x[0], x[2])), # S' = f_S(W, C) + (lambda x, fc=fc: fc(x[1])), # C' = f_C(S) + ] + yield f"W{iw}_S{is_}_C{ic}", rules + + +def main(): + os.makedirs(_RESULTS, exist_ok=True) + rows = [] + start = time.time() + print("POPULATION CHECK — strict-mediation three-node family (256 forms)") + for k, (label, rules) in enumerate(enumerate_family()): + v = classify_rules(rules) + tags = structural_tags(rules) + rows.append({ + "label": label, + "structure": v.structure, + "max_phi": f"{v.max_phi:.6f}", + "mediator_reads_both": tags["mediator_reads_both"], + "strict_mediation": tags["strict_mediation"], + }) + if (k + 1) % 64 == 0: + print(f" {k + 1}/256 ({time.time() - start:.0f}s)") + + out = os.path.join(_RESULTS, "population.csv") + with open(out, "w", newline="") as fh: + w = csv.DictWriter(fh, fieldnames=list(rows[0].keys())) + w.writeheader() + w.writerows(rows) + print(f"Wrote {out}") + _report(rows) + + +def _report(rows): + n = len(rows) + tri = [r for r in rows if r["structure"] == "triadic"] + reads_both = [r for r in rows if r["mediator_reads_both"]] + reads_both_tri = [r for r in reads_both if r["structure"] == "triadic"] + not_reads_both = [r for r in rows if not r["mediator_reads_both"]] + not_rb_tri = [r for r in not_reads_both if r["structure"] == "triadic"] + + def pct(a, b): + return f"{100.0 * len(a) / len(b):.1f}%" if b else "n/a" + + print("\n" + "=" * 80) + print("POPULATION RESULT — what decides irreducibility under strict mediation?") + print("=" * 80) + print(f" forms : {n}") + print(f" triadic (Φ > 0) : {len(tri)} ({pct(tri, rows)})") + print(f" -> strict mediation alone is NOT sufficient: {pct(tri, rows)} of strict-mediation") + print(f" forms are triadic, so most strict-mediation forms still factor.") + print() + print(f" P(triadic | mediator reads both parties): {pct(reads_both_tri, reads_both)} " + f"({len(reads_both_tri)}/{len(reads_both)})") + print(f" P(triadic | mediator does NOT read both): {pct(not_rb_tri, not_reads_both)} " + f"({len(not_rb_tri)}/{len(not_reads_both)})") + print(f" -> mediator-reads-both is NECESSARY (0% triadic without it) but NOT SUFFICIENT") + print(f" (well under 100% triadic with it) — the parties' own reads decide the rest.") + print("=" * 80) + + +if __name__ == "__main__": + main() diff --git a/irreducibility-pipeline/studies/contingent_irreducibility.py b/irreducibility-pipeline/studies/contingent_irreducibility.py new file mode 100644 index 000000000..317c8743b --- /dev/null +++ b/irreducibility-pipeline/studies/contingent_irreducibility.py @@ -0,0 +1,92 @@ +"""Probe 367 (Q213) — contingent irreducibility and the bypass-counterfactual. + +A mediator can sit in a triad's core for two reasons. INTRINSIC: it does integrative work no direct edge +between its neighbours reproduces. CONTINGENT: it is a conduit that would factor out, held in the core only +because a constraint forbids the bypass — the car dealer under franchise law. The probe runs the +bypass-counterfactual (classifier/contingency.py) over four constructed forms and reads whether the test +separates the two and realizes the four-way taxonomy. + +Forms (n=3): + conjunctive clearinghouse (intrinsic): W'=S, S'=W&C, C'=S ; bypass C reads W (replace) + car dealer (contingent): M'=B, D'=M, B'=D ; bypass B reads M (replace) + clearinghouse + back-channel (partial):W'=S, S'=W&C, C'=S ; bypass C'=S|W (add) + free conduit (reducible): M'=B, D'=M, B'=M ; bypass B reads M (replace) + +Hypotheses (fixed before computing, see hypotheses.md): + H1 control — conjunctive triad triadic Φ=2.0. + H2 — the constrained car dealer is irreducible with the dealer in the core (a conduit irreducible by constraint). + H3 — the bypass-counterfactual removes the dealer: kind=contingent, margin=2.0. + H4 — the same bypass leaves the conjunctive mediator in place: kind=intrinsic, margin=0.0. + H5 — partial and reducible forms classify as labeled; margins order contingent >= partial > intrinsic. + +Validation gap: in-silico Boolean models with exact Φ; evidence about a category of irreducibility, not a +measurement of any organization. The car dealer is a worked illustration, not a fitted model of a market. + +Run: python -m studies.contingent_irreducibility +""" + +import os +import sys + +os.environ.setdefault("PYPHI_WELCOME_OFF", "true") + +from irreducibility.core import verdict, major_complex # noqa: E402 +from irreducibility.contingency import contingency_test # noqa: E402 +from irreducibility.core import PHI_EPS # noqa: E402 + +# constrained forms +CLEARINGHOUSE = [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]] # W'=S, S'=W&C, C'=S +CAR_DEALER = [lambda x: x[2], lambda x: x[0], lambda x: x[1]] # M'=B, D'=M, B'=D +FREE_CONDUIT = [lambda x: x[2], lambda x: x[0], lambda x: x[0]] # M'=B, D'=M, B'=M +WSC = ("W", "S", "C") +MDB = ("M", "D", "B") + + +def main(): + print("PROBE 367 (Q213) — contingent irreducibility: the bypass-counterfactual") + print("=" * 84) + + # ---- H1 instrument control ---- + v0 = verdict(CLEARINGHOUSE, WSC) + ctrl = v0.structure == "triadic" and abs(v0.max_phi - 2.0) < 1e-6 + print(" H1 control conjunctive triad : %s Φ=%.6f %s" + % (v0.structure, v0.max_phi, "PASS" if ctrl else "FAIL")) + assert ctrl, "instrument control failed; aborting" + + # ---- H2: the constrained car dealer is irreducible with the dealer in the core ---- + vd = verdict(CAR_DEALER, MDB) + cd_core, cd_phi = major_complex(CAR_DEALER, MDB) + print(" car dealer (constrained) : %s Φ=%.3f core=%s D in core: %s" + % (vd.structure, vd.max_phi, cd_core, "D" in cd_core)) + + # ---- classify the four forms ---- + intr = contingency_test(CLEARINGHOUSE, WSC, "S", downstream="C", upstream="W", mode="replace") + cont = contingency_test(CAR_DEALER, MDB, "D", downstream="B", upstream="M", mode="replace") + part = contingency_test(CLEARINGHOUSE, WSC, "S", downstream="C", upstream="W", mode="add") + redu = contingency_test(FREE_CONDUIT, MDB, "D", downstream="B", upstream="M", mode="replace") + + print(" intrinsic (clearinghouse) : %s" % intr.line()) + print(" contingent (car dealer) : %s" % cont.line()) + print(" partial (+ back-channel) : %s" % part.line()) + print(" reducible (free conduit) : %s" % redu.line()) + + print("=" * 84) + h2 = vd.structure == "triadic" and "D" in cd_core + h3 = cont.kind == "contingent" and not cont.in_core_bypass and abs(cont.margin - 2.0) < 1e-6 + h4 = intr.kind == "intrinsic" and intr.in_core_bypass and intr.margin < PHI_EPS + h5 = (part.kind == "partial" and 0.0 < part.margin < 2.0 + and redu.kind == "reducible" and not redu.in_core_constrained + and cont.margin >= part.margin > intr.margin) + print(" H2 (a conduit is irreducible under constraint: dealer in core): %s" % _v(h2)) + print(" H3 (bypass removes the contingent party: kind=contingent, margin=2.0): %s" % _v(h3)) + print(" H4 (same bypass leaves the intrinsic mediator: kind=intrinsic, margin=0): %s" % _v(h4)) + print(" H5 (taxonomy realized; margins order contingent>=partial>intrinsic): %s" % _v(h5)) + print("=" * 84) + + +def _v(b): + return "SUPPORTED" if b else "REFUTED" + + +if __name__ == "__main__": + main() diff --git a/irreducibility-pipeline/studies/design_operations.py b/irreducibility-pipeline/studies/design_operations.py new file mode 100644 index 000000000..d634f6068 --- /dev/null +++ b/irreducibility-pipeline/studies/design_operations.py @@ -0,0 +1,63 @@ +"""Probe Q106 (H1-H4) — the catalog of design operations. + +Reads the verdict before and after each named operation, and tests the build/break directions, the +inverse-pair structure, and the three-lever partition. + +Run: python -m studies.design_operations +""" + +import csv +import os +from collections import defaultdict + +from irreducibility.core import verdict +from studies import design_operations_forms as F + + +def main(): + print("PROBE Q106 (H1-H4) — design operations and their verdict effects") + print("=" * 80) + rows = {} + for name, (lever, direction, br, bl, ar, al) in F.OPERATIONS.items(): + before = verdict(br, bl).structure + after = verdict(ar, al).structure + rows[name] = {"lever": lever, "direction": direction, "before": before, "after": after} + print(f" {name:<18} [{lever:<11} {direction:<5}] {before:<8} -> {after}") + + builds = [r for r in rows.values() if r["direction"] == "build"] + breaks = [r for r in rows.values() if r["direction"] == "break"] + by_lever = defaultdict(lambda: {"build": 0, "break": 0}) + for r in rows.values(): + by_lever[r["lever"]][r["direction"]] += 1 + + h1 = all(r["before"] == "dyadic" and r["after"] == "triadic" for r in builds) + h2 = all(r["before"] == "triadic" and r["after"] == "dyadic" for r in breaks) + # inverse pairs: per lever, build's after == break's before (triadic), build's before == break's after + h3 = True + for lever in by_lever: + b = next(r for r in rows.values() if r["lever"] == lever and r["direction"] == "build") + k = next(r for r in rows.values() if r["lever"] == lever and r["direction"] == "break") + if not (b["after"] == k["before"] and b["before"] == k["after"]): + h3 = False + h4 = len(by_lever) == 3 and all(v["build"] == 1 and v["break"] == 1 for v in by_lever.values()) + + print("=" * 80) + print(f" levers: {dict(by_lever)}") + print(f" H1 every build operation: dyadic -> triadic: {h1}") + print(f" H2 every break operation: triadic -> dyadic: {h2}") + print(f" H3 build and break are inverse pairs per lever: {h3}") + print(f" H4 three levers, each one build and one break: {h4}") + for h, ok in [("H1", h1), ("H2", h2), ("H3", h3), ("H4", h4)]: + print(f" {h} VERDICT: {'CONFIRMED' if ok else 'REFUTED'}") + + d_ = os.path.join(os.path.dirname(__file__), "results") + os.makedirs(d_, exist_ok=True) + with open(os.path.join(d_, "design_operations.csv"), "w", newline="") as fh: + w = csv.writer(fh) + w.writerow(["operation", "lever", "direction", "before", "after"]) + for name, r in rows.items(): + w.writerow([name, r["lever"], r["direction"], r["before"], r["after"]]) + + +if __name__ == "__main__": + main() diff --git a/irreducibility-pipeline/studies/design_operations_forms.py b/irreducibility-pipeline/studies/design_operations_forms.py new file mode 100644 index 000000000..51bcb070a --- /dev/null +++ b/irreducibility-pipeline/studies/design_operations_forms.py @@ -0,0 +1,39 @@ +"""Q106: a catalog of design operations and their verdict effects. + +Each operation is a named edit to a coordination form that moves the verdict in a stated direction. The +law has two conditions a party must meet — the mediator binding it into the joint determination, and the +party keeping itself live to the commit — plus the requirement that all parties be jointly needed rather +than substitutable. Three levers, then: binding, liveness, requirement. Each carries a build operation +(dyadic to triadic) and its inverse break operation (triadic to dyadic). + +Each entry is (lever, direction, before_rules, before_labels, after_rules, after_labels). The build and +break of a lever are inverses: the build's output form is the break's input form. + +Imported by `probe_design_operations.py`. +""" + +import os +import sys + +os.environ.setdefault("PYPHI_WELCOME_OFF", "true") + +from studies import breadth_forms as q64 + +L3 = ("E", "M", "R") +BROADCAST = [lambda x: x[1], lambda x: x[0], lambda x: x[1]] # M' = E (dyadic) +READ_RECIPIENT = [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]] # M' = E & R (triadic) +ONE_SHOT = [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[2]] # R' = R (dyadic, liveness broken) + +ALL_REQUIRED = (q64.all_required(2), q64.labels(2)) # triadic +SUBSTITUTABLE = (q64.substitutable(2), q64.labels(2)) # dyadic + +OPERATIONS = { + "add_binding": ("binding", "build", BROADCAST, L3, READ_RECIPIENT, L3), + "remove_binding": ("binding", "break", READ_RECIPIENT, L3, BROADCAST, L3), + "restore_liveness": ("liveness", "build", ONE_SHOT, L3, READ_RECIPIENT, L3), + "break_liveness": ("liveness", "break", READ_RECIPIENT, L3, ONE_SHOT, L3), + "require_all": ("requirement", "build", SUBSTITUTABLE[0], SUBSTITUTABLE[1], + ALL_REQUIRED[0], ALL_REQUIRED[1]), + "substitute": ("requirement", "break", ALL_REQUIRED[0], ALL_REQUIRED[1], + SUBSTITUTABLE[0], SUBSTITUTABLE[1]), +} diff --git a/irreducibility-pipeline/studies/enricher_regime.py b/irreducibility-pipeline/studies/enricher_regime.py new file mode 100644 index 000000000..b9e6d4add --- /dev/null +++ b/irreducibility-pipeline/studies/enricher_regime.py @@ -0,0 +1,126 @@ +"""Reproducible headline results of the enricher-regime thread (THREAD_enricher.md). + +A second twenty-step dive, into the enricher regime from the mediator-in-core thread. It splits the +in-core mediator into genuine enrichment versus capture, finds enrichment rare and fragile, and lands +on an outside-option theory: a platform's irreducible core is itself plus exactly the parties without +an outside option. Reproduces the load-bearing numbers. + +Run from the repo root with the venv active: python -m studies.enricher_regime +""" + +import os +import random +import sys +from collections import Counter + +os.environ.setdefault("PYPHI_WELCOME_OFF", "true") + +from irreducibility.core import classify_rules +from irreducibility.core import major_complex +from irreducibility.validate import factoring_control, irreducible_control + +L = ("W", "S", "C") + + +def _lesion_survives(rules): + fW, fS, fC = rules + return any(classify_rules([lambda y, _c=c: fW((y[0], _c, y[1])), + lambda y, _c=c: fC((y[0], _c, y[1]))], ("W", "C")).structure == "triadic" + for c in (0, 1)) + + +def regime(rules): + """Five-way: dyadic / BYPASSED / CAPTURE / BOTTLENECK / ENRICHER for the mediator S (index 1).""" + v = classify_rules(rules, L) + if v.structure == "dyadic": + return "dyadic" + core, _ = major_complex(list(rules), L) + core = set(core or ()) + if "S" not in core: + return "BYPASSED" + if core != set(L): + return "CAPTURE" + return "ENRICHER" if _lesion_survives(rules) else "BOTTLENECK" + + +def _rule(t): + return lambda x, _t=t: _t[(x[0] << 2) | (x[1] << 1) | x[2]] + + +def main() -> int: + print("=" * 92) + print("THREAD — the enricher regime (reproducible headline results)") + print("=" * 92) + if not (classify_rules(factoring_control()).structure == "dyadic" + and classify_rules(irreducible_control()).structure == "triadic"): + print(" INSTRUMENT CONTROL FAILED — refusing to run.") + return 1 + print(" Instrument validated.\n") + + print("[1] Refined regime frequencies over 500 random mediated forms (seed 7) — capture split out") + random.seed(7) + cnt = Counter() + for _ in range(500): + cnt[regime([_rule([random.randint(0, 1) for _ in range(8)]) for _ in range(3)])] += 1 + for k in ("dyadic", "BYPASSED", "CAPTURE", "BOTTLENECK", "ENRICHER"): + print(f" {k:<11} {cnt[k]:4d} ({100 * cnt[k] / 500:4.1f}%)") + print(" Genuine enrichment is rare; capture is the dominant in-core regime.") + + print("\n[2] Enrichment is fragile: single-bit perturbations of the symmetric escrow enricher") + base = [[((i >> (2 - (j + 1) % 3)) & 1) & ((i >> (2 - (j + 2) % 3)) & 1) for i in range(8)] + for j in range(3)] # each node = AND of the other two + random.seed(5) + pert = Counter() + for _ in range(150): + t = [row[:] for row in base] + t[random.randint(0, 2)][random.randint(0, 7)] ^= 1 + pert[regime([_rule(t[0]), _rule(t[1]), _rule(t[2])])] += 1 + print(" " + " ".join(f"{k}:{pert[k]}" for k in ("ENRICHER", "CAPTURE", "BYPASSED", "dyadic", "BOTTLENECK"))) + print(" The canonical enricher degenerates into capture under perturbation — it is not defendable.") + + print("\n[3] Outside-option phase diagram (platform S=W&C; rows W's option, cols C's)") + S = lambda x: x[0] & x[2] + Wlv = {"none": lambda x: x[1], "cond": lambda x: x[1] & x[2], "full": lambda x: x[1] | x[2]} + Clv = {"none": lambda x: x[1], "cond": lambda x: x[1] & x[0], "full": lambda x: x[1] | x[0]} + print(f" {'':<10}" + "".join(f"{c:<13}" for c in ("C:none", "C:cond", "C:full"))) + for wk in ("none", "cond", "full"): + print(f" W:{wk:<7}" + "".join(f"{regime([Wlv[wk], S, Clv[ck]]):<13}" for ck in ("none", "cond", "full"))) + + print("\n[4] The core law: platform core = {S} + parties WITHOUT an outside option (4-node battery)") + L4 = ("A", "B", "C", "P") + P4 = lambda x: x[0] & x[1] & x[2] + def party(i, opt): + peer = (i + 1) % 3 + return (lambda x, _p=peer: x[3] | x[_p]) if opt else (lambda x: x[3]) + random.seed(1) + ok = 0 + for _ in range(60): + opts = [random.random() < 0.5 for _ in range(3)] + rules = [party(0, opts[0]), party(1, opts[1]), party(2, opts[2]), P4] + core, _ = major_complex(list(rules), L4) + core = set(core or ()) + predicted = set() if all(opts) else ({"P"} | {("A", "B", "C")[i] for i in range(3) if not opts[i]}) + ok += (core == predicted) or (all(opts) and "P" not in core) + print(f" law holds on {ok}/60 random option configurations") + + print("\n[5] Field instrument: measure each side's outside option, read the platform's fate") + opt = {"none": (lambda x: x[1]), "cond": (lambda x: x[1] & x[2]), "full": (lambda x: x[1] | x[2])} + optC = {"none": (lambda x: x[1]), "cond": (lambda x: x[1] & x[0]), "full": (lambda x: x[1] | x[0])} + for name, wk, ct in [ + ("captive worker, mobile counterpart", "none", "full"), + ("both mobile (mature market)", "full", "full"), + ("neither can exit (arbitration)", "none", "none"), + ("portable reputation (escrow)", "cond", "cond"), + ]: + print(f" {name:<38} [{wk}/{ct}] -> {regime([opt[wk], S, optC[ct]])}") + + print("\n" + "=" * 92) + print(" A platform's irreducible core is itself plus the parties with no outside option.") + print(" Bottleneck (no options) -> enricher (conditional, symmetric, fragile) -> capture") + print(" (asymmetric options, locks in the dependent side) -> bypassed (both options).") + print("=" * 92) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/irreducibility-pipeline/studies/field_mocks.py b/irreducibility-pipeline/studies/field_mocks.py new file mode 100644 index 000000000..19dfc0d77 --- /dev/null +++ b/irreducibility-pipeline/studies/field_mocks.py @@ -0,0 +1,92 @@ +"""Run the 10 mock organizations through the exact-Φ instrument and report the field demo. + +Validates the instrument on its two canonical controls first; refuses to run if either fails. +For each mock it prints the whole-system verdict, the major complex, and — where a sensitivity +variant is defined — the verdict under the alternative encoding and whether it flips. + +Run from the repo root with the venv active: python -m studies.field_mocks +""" + +import csv +import os +import sys + +from studies.mocks import MOCKS +from irreducibility.core import classify_rules +from irreducibility.core import major_complex +from irreducibility.validate import factoring_control, irreducible_control + +_RESULTS = os.path.join(os.path.dirname(__file__), "results") + + +def _verdict(parties, rules): + v = classify_rules(rules, parties) + core, core_phi = major_complex(list(rules), parties) + return v.structure, round(v.max_phi, 3), ("".join(core) if core else "—"), round(max(core_phi, 0.0), 3) + + +def main() -> int: + print("=" * 96) + print("FIELD PROTOCOL DEMO — 10 mock organizations through the exact-Φ instrument") + print("=" * 96) + fac = classify_rules(factoring_control()) + irr = classify_rules(irreducible_control()) + if not (fac.structure == "dyadic" and irr.structure == "triadic"): + print(" INSTRUMENT CONTROL FAILED — refusing to run.") + return 1 + print(" Instrument validated (factoring -> dyadic, irreducible -> triadic).") + print(" These are STIPULATED models of invented organizations. They demonstrate the protocol;") + print(" they measure no real organization. See PROTOCOL.md and FINDINGS.md.\n") + + rows = [] + matched = 0 + flips = [] + for m in MOCKS: + struct, sysphi, core, corephi = _verdict(m.parties, m.rules) + ok = struct == m.predict + matched += ok + flag = "" if ok else " <-- computed verdict overturns the pre-registered reading" + print(f" {m.mid} {m.org}") + print(f" parties {','.join(m.parties)} | predicted {m.predict} | " + f"verdict {struct.upper()} (Φ={sysphi}) | core {core} (Φ={corephi}){flag}") + srow = {"sensitivity": "", "sens_verdict": "", "sens_flips": ""} + if m.sensitivity: + s = m.sensitivity + s_struct, s_sysphi, s_core, s_corephi = _verdict(s.parties, s.rules) + flipped = s_struct != struct + if flipped: + flips.append((m.mid, m.org, struct, s_struct, s.name)) + print(f" sensitivity [{s.name}]: {s_struct.upper()} (Φ={s_sysphi}, core {s_core}) " + f"— {'FLIPS' if flipped else 'holds'}") + srow = {"sensitivity": s.name, "sens_verdict": s_struct, + "sens_flips": flipped} + print() + rows.append({"id": m.mid, "org": m.org, "parties": " ".join(m.parties), + "predict": m.predict, "verdict": struct, "system_phi": sysphi, + "core": core, "core_phi": corephi, "matched": ok, **srow}) + + print("=" * 96) + print(f" {len(MOCKS)} mock organizations | verdict matched the reading fixed before computing: " + f"{matched}/{len(MOCKS)}") + triadic = sum(r["verdict"] == "triadic" for r in rows) + print(f" {triadic} triadic (algorithmacy), {len(rows) - triadic} dyadic (literacy)") + if flips: + print(f" {len(flips)} sensitivity flip(s) — a defensible re-encoding changed the verdict:") + for mid, org, a, b, name in flips: + print(f" {mid} {org}: {a} -> {b} under [{name}]") + print("=" * 96) + + os.makedirs(_RESULTS, exist_ok=True) + path = os.path.join(_RESULTS, "field_mocks.csv") + with open(path, "w", newline="") as fh: + w = csv.DictWriter(fh, fieldnames=["id", "org", "parties", "predict", "verdict", + "system_phi", "core", "core_phi", "matched", + "sensitivity", "sens_verdict", "sens_flips"]) + w.writeheader() + w.writerows(rows) + print(f" Wrote {os.path.relpath(path, os.getcwd())}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/irreducibility-pipeline/studies/forms_library.py b/irreducibility-pipeline/studies/forms_library.py new file mode 100644 index 000000000..468cf72f5 --- /dev/null +++ b/irreducibility-pipeline/studies/forms_library.py @@ -0,0 +1,125 @@ +"""A curated, reusable library of small coordination forms with exact IIT-4.0 Φ. + +Each form is a named application-layer system given as per-party Boolean rules (little-endian: +0 = Worker, 1 = System/mediator, 2 = Counterpart). Every form carries a one-line rationale for +its coupling — the TPM is derived from the form's actual who-reads-whom, never tuned to a target +Φ — and a set of structural tags so the analysis can ask which feature moves the verdict. + +This is the curated companion to the dissertation's complete 4,096-wiring enumeration +(the author's dissertation code): that one is a coverage/null check over every Boolean +way three nodes can couple; this one is a small set of *recognizable* coordination forms, each +documented, meant to be reused and extended. Five forms are validated in the dissertation's +Paper 2; the rest are first-pass models, flagged as such. + +Structural tags (computed by the form, not assigned to fit Φ): + strict_mediation : True iff there is no direct W<->C edge (parties meet only through S). + mediator_reads_both : True iff S's update depends on BOTH W and C. + back_channel : True iff a direct W<->C edge exists. +""" + +from dataclasses import dataclass +from typing import Callable, List + + +@dataclass +class Form: + key: str + title: str + rules: List[Callable] + rationale: str + validated: bool # True if validated in the dissertation Paper 2 + expected: str # "dyadic" or "triadic" (the documented/known verdict, "?" if open) + + +# -------------------------------------------------------------------------------------- +# Validated forms (dissertation Paper 2) +# -------------------------------------------------------------------------------------- + +FORMS = [ + Form( + key="chat_dyad", + title="Chat with a language model (dyadic limit)", + rules=[lambda x: x[1], lambda x: x[0], lambda x: x[2]], + rationale="Worker and system form a two-party loop; no third human party (C decoupled).", + validated=True, expected="dyadic", + ), + Form( + key="gig_dyadic_model", + title="Rideshare, modeled dyadically (rider dropped from dispatch)", + rules=[lambda x: 1 - x[1], lambda x: x[0], lambda x: x[2] & (1 - x[1])], + rationale="Analyst sees only the driver<->app channel; the dispatch reads the driver alone.", + validated=True, expected="dyadic", + ), + Form( + key="ats_strict_bottleneck", + title="Resume -> ATS -> hiring manager (strict bottleneck)", + rules=[lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]], + rationale="S forwards iff resume-signal AND manager-profile; W,C each read only S.", + validated=True, expected="triadic", + ), + Form( + key="ats_feedback_factors", + title="Resume -> ATS -> hiring manager (realistic feedback — yet factors)", + rules=[lambda x: 1 - x[1], lambda x: x[0] & x[2], lambda x: x[1] | x[2]], + rationale="Strict mediator topology, but the reads do not keep each party live to S's commit.", + validated=True, expected="dyadic", + ), + Form( + key="gig_false_dyad", + title="Rideshare driver -> platform -> rider (rider constitutive: the false dyad)", + rules=[lambda x: 1 - x[1], lambda x: x[0] & x[2], lambda x: x[2] & (1 - x[1])], + rationale="Presents as a driver<->app dyad, but dispatch reads the unseen rider (S' = W AND C).", + validated=True, expected="triadic", + ), + + # ---------------------------------------------------------------------------------- + # First-pass forms (NOT yet dissertation-validated) — defensible couplings, flagged. + # ---------------------------------------------------------------------------------- + Form( + key="pure_relay", + title="Pure relay / broadcast (S copies W to C)", + rules=[lambda x: x[0], lambda x: x[0], lambda x: x[1]], + rationale="S relays W to C with no joint determination (S reads only W). Should factor.", + validated=False, expected="dyadic", + ), + Form( + key="two_sided_match", + title="Two-sided match (both parties act on the system's joint commit)", + rules=[lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]], + rationale="S commits iff both sides present (W AND C); both W and C track the commit. " + "(Identical coupling to the ATS bottleneck — the canonical match triad.)", + validated=False, expected="triadic", + ), + Form( + key="hierarchy_backchannel", + title="Hierarchy with a direct back-channel (W<->C edge present)", + rules=[lambda x: x[2], lambda x: x[0] & x[2], lambda x: x[0]], + rationale="Same joint commit S' = W AND C, but W and C also read each other directly. " + "Restoring the direct channel should collapse the triad.", + validated=False, expected="dyadic", + ), +] + +FORMS_BY_KEY = {f.key: f for f in FORMS} + + +# -------------------------------------------------------------------------------------- +# Structural tags from the coupling (computed, not assigned) +# -------------------------------------------------------------------------------------- + +def structural_tags(rules): + """Return dict of structural features inferred from the connectivity matrix. + Node order 0=W, 1=S, 2=C.""" + from irreducibility.core import cm_from_rules + cm = cm_from_rules(rules) + # cm[i, j] = 1 iff node j's rule depends on node i. + s_reads_w = cm[0, 1] == 1 + s_reads_c = cm[2, 1] == 1 + w_reads_c = cm[2, 0] == 1 + c_reads_w = cm[0, 2] == 1 + back_channel = bool(w_reads_c or c_reads_w) + return { + "strict_mediation": not back_channel, + "mediator_reads_both": bool(s_reads_w and s_reads_c), + "back_channel": back_channel, + } diff --git a/irreducibility-pipeline/studies/mediator_in_core.py b/irreducibility-pipeline/studies/mediator_in_core.py new file mode 100644 index 000000000..98725a635 --- /dev/null +++ b/irreducibility-pipeline/studies/mediator_in_core.py @@ -0,0 +1,106 @@ +"""Reproducible headline results of the 'is the mediator in the core?' thread (THREAD.md). + +A single through-line, dug 20 questions deep from the M4 anomaly: when is a mediating system a +member of the irreducible coordination, and when is it a bypassable side-channel? This script +reproduces the load-bearing numbers — the platform trichotomy, the membership of the ten mocks, the +regime frequencies over random forms, and the disintermediation trajectory. + +Run from the repo root with the venv active: python -m studies.mediator_in_core +""" + +import os +import random +import sys +from collections import Counter + +os.environ.setdefault("PYPHI_WELCOME_OFF", "true") + +from irreducibility.core import classify_rules +from irreducibility.core import major_complex +from irreducibility.validate import factoring_control, irreducible_control +from studies.mocks import MOCKS + + +def _lesion_survives(rules, labels, mi): + """Do the non-mediator parties still coordinate (triadic) when the mediator is frozen?""" + rest = [i for i in range(len(labels)) if i != mi] + if len(rest) < 2: + return False + for c in (0, 1): + red = [(lambda y, _j=j, _c=c: rules[_j]( + tuple(_c if k == mi else y[rest.index(k)] for k in range(len(labels))))) + for j in rest] + if classify_rules(red, tuple(labels[i] for i in rest)).structure == "triadic": + return True + return False + + +def regime(rules, labels, mi): + """BOTTLENECK / ENRICHER / BYPASSED / dyadic for the mediator at index mi.""" + v = classify_rules(rules, labels) + core, _ = major_complex(list(rules), labels) + core = set(core or ()) + med = labels[mi] + if v.structure == "dyadic": + return "dyadic" + ("" if med in core else " (med out)") + if med not in core: + return "BYPASSED" + return "ENRICHER" if _lesion_survives(rules, labels, mi) else "BOTTLENECK" + + +def main() -> int: + print("=" * 92) + print("THREAD — is the mediator in the irreducible core? (reproducible headline results)") + print("=" * 92) + fac = classify_rules(factoring_control()) + irr = classify_rules(irreducible_control()) + if not (fac.structure == "dyadic" and irr.structure == "triadic"): + print(" INSTRUMENT CONTROL FAILED — refusing to run.") + return 1 + print(" Instrument validated.\n") + + L = ("W", "S", "C") + + print("[1] The platform trichotomy (same mediator can be each, depending on the arrangement)") + tri = { + "BOTTLENECK S=W&C, no fallback": [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]], + "ENRICHER S=W&C, complement": [lambda x: x[1] & x[2], lambda x: x[0] & x[2], lambda x: x[1] & x[0]], + "BYPASSED S=W&C, substitute": [lambda x: x[1] | x[2], lambda x: x[0] & x[2], lambda x: x[1] | x[0]], + } + for name, r in tri.items(): + print(f" {name:<34} -> {regime(r, L, 1)}") + + print("\n[2] The ten field mocks, by mediator regime") + for m in MOCKS: + print(f" {m.mid} {m.org:<32} med={m.parties[1]:<4} -> {regime(m.rules, m.parties, 1)}") + + print("\n[3] Regime frequency over 500 random 3-node mediated forms (seed 7)") + random.seed(7) + cnt = Counter() + for _ in range(500): + rules = [(lambda x, _tt=[random.randint(0, 1) for _ in range(8)]: + _tt[(x[0] << 2) | (x[1] << 1) | x[2]]) for _ in range(3)] + cnt[regime(rules, L, 1).split()[0]] += 1 + for k in ("dyadic", "BYPASSED", "BOTTLENECK", "ENRICHER"): + print(f" {k:<12} {cnt[k]:4d} ({100 * cnt[k] / 500:4.1f}%)") + + print("\n[4] Ride-hail disintermediation trajectory (platform P=D&R fixed; off-platform contact grows)") + Lp = ("D", "P", "R") + P = lambda x: x[0] & x[2] + traj = { + "0 no off-platform contact": [lambda x: x[1], P, lambda x: x[1]], + "1 complement off-platform": [lambda x: x[1] & x[2], P, lambda x: x[1] & x[0]], + "2 substitute off-platform": [lambda x: x[1] | x[2], P, lambda x: x[1] | x[0]], + } + for name, r in traj.items(): + print(f" {name:<28} -> {regime(r, Lp, 1)}") + + print("\n" + "=" * 92) + print(" Load-bearing is relational: whether the platform is in the core is a property of the") + print(" whole arrangement (a Φ-competition with the parties' own coalition), not of the platform.") + print("=" * 92) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/irreducibility-pipeline/studies/mocks.py b/irreducibility-pipeline/studies/mocks.py new file mode 100644 index 000000000..07280a3d4 --- /dev/null +++ b/irreducibility-pipeline/studies/mocks.py @@ -0,0 +1,166 @@ +"""Ten mock organizations modeled as Boolean coordination forms for the field protocol demo. + +Each mock is an invented but recognizable coordination arrangement, encoded as a small Boolean +dynamical system and classified by exact IIT-4.0 Φ. The rules are stipulated, not elicited from +field evidence, so these are demonstrations of the protocol's mechanics, not findings about any real +organization. Several carry a sensitivity variant: a second defensible encoding that the same story +also permits, to show where the verdict turns on a modeling choice. + +Rules are little-endian: rules[j](x) reads x[0], x[1], ... and returns node j's next bit. See +PROTOCOL.md for the steps these mocks illustrate. +""" + +import os +import sys +from dataclasses import dataclass +from typing import Callable, List, Optional, Sequence, Tuple + +os.environ.setdefault("PYPHI_WELCOME_OFF", "true") + + +@dataclass +class Variant: + name: str + parties: Tuple[str, ...] + rules: Sequence[Callable] + predict: str + what_changes: str + + +@dataclass +class Mock: + mid: str + org: str + parties: Tuple[str, ...] # node labels, in rule order + bits: str # what an active bit means for each party + rules: Sequence[Callable] + predict: str # "triadic" | "dyadic" + rationale: str # the structural reason, fixed before computing + evidence: str # the field evidence a real study would need for these rules + sensitivity: Optional[Variant] = None + + +MOCKS: List[Mock] = [ + + Mock( + "M1", "Ride-hail dispatch", ("D", "P", "R"), + "D=driver available, P=platform commits a match, R=rider requesting", + [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]], + "triadic", + "The platform commits a match that needs an available driver AND a requesting rider; " + "neither sets it alone, and both act on the match. A determination neither party controls.", + "Dispatch logs, the matching/pricing policy, driver and rider app states.", + Variant("substitutable drivers", ("D1", "D2", "P", "R"), + [lambda x: x[2], lambda x: x[2], lambda x: (x[0] | x[1]) & x[3], lambda x: x[2]], + "dyadic", + "If any available driver is interchangeable (the platform reads a pool via OR), no " + "single driver is pivotal and the arrangement factors — the worker dissolves into " + "the pool."), + ), + + Mock( + "M2", "Relay manager", ("W1", "M", "W2"), + "each = the party is acting/reporting; M = the manager's relayed state", + [lambda x: x[1], lambda x: x[0], lambda x: x[1]], + "dyadic", + "The manager copies one worker's report and the other worker reads it. The manager commits " + "nothing of its own; the arrangement is a coupled pair with a downstream reader.", + "Reporting lines, what the manager actually decides versus forwards, meeting records.", + Variant("synthesizing manager", ("W1", "M", "W2"), + [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]], + "triadic", + "A manager who commits a decision that needs both reports (M = W1 ∧ W2, both read " + "M) binds the workers; one who only forwards does not. The verdict turns on whether " + "the manager commits a determination neither worker controls."), + ), + + Mock( + "M3", "Substitutable-seller marketplace", ("B", "P", "S1", "S2"), + "B=buyer ordering, P=platform fills, S1/S2=sellers available", + [lambda x: x[1], lambda x: x[0] & (x[2] | x[3]), lambda x: x[1], lambda x: x[1]], + "dyadic", + "The platform fills the buyer from whichever seller is available (OR over sellers). Each " + "seller is substitutable, none individually pivotal, so the form factors — a broadcast.", + "Order-fill records, whether buyers are indifferent across sellers, substitution rates.", + Variant("specialized seller", ("B", "P", "S"), + [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]], + "triadic", + "If the buyer needs a particular seller (no substitute), the same platform reads " + "triadic. Substitutability, not the platform, is what made it dyadic."), + ), + + Mock( + "M4", "CI code-review gate", ("A", "G", "M"), + "A=author's change, G=CI gate passing, M=maintainer approving", + [lambda x: x[1] & x[2], lambda x: x[0], lambda x: x[0] & x[1]], + "triadic", + "The CI gate commits a pass/fail on the author's code; the maintainer approves reading both " + "code and gate; the author revises reading both. The gate commits what neither party sets.", + "PR/branch-protection config, CI logs, reviewer threads, merge history.", + ), + + Mock( + "M5", "EHR shift handoff", ("N1", "E", "N2"), + "N1=outgoing nurse writing, E=record state, N2=incoming nurse reading", + [lambda x: x[1], lambda x: x[0], lambda x: x[1]], + "dyadic", + "A record that only stores what the outgoing nurse writes, for the incoming nurse to read, " + "is a pipe. The coupling is the writer and the record; the reader is downstream.", + "Handoff policy, whether the EHR enforces anything or only stores, audit logs.", + Variant("active-checklist EHR", ("N1", "E", "N2"), + [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]], + "triadic", + "A record that gates the handoff on a checklist both nurses must complete " + "(E = N1 ∧ N2) commits a determination neither controls; a passive store does not."), + ), + + Mock( + "M6", "Franchise with ratings feedback", ("F", "S", "C"), + "F=franchisee operating to standard, S=brand standard enforced, C=customer experience", + [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[0]], + "triadic", + "The standard reads compliance and customer ratings and commits what the franchisee must " + "meet; the customer's experience follows operation and feeds ratings back. A closed loop.", + "Franchise agreement, brand-audit records, the rating system and whether it feeds standards.", + ), + + Mock( + "M7", "Algorithmic ranking", ("Cr", "A", "Ad"), + "Cr=creator's content, A=algorithm's ranking, Ad=advertiser placing", + [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]], + "triadic", + "The ranking commits a placement that reads the creator's content and the advertiser's " + "demand; both adapt to the ranking. The algorithm commits what neither party sets alone.", + "Ranking/auction mechanics, creator analytics, advertiser brand-safety rules.", + ), + + Mock( + "M8", "Support-ticket triage", ("Cu", "T", "Ag"), + "Cu=customer's open issue, T=ticket routed, Ag=agent responding", + [lambda x: x[2], lambda x: x[0], lambda x: x[1]], + "dyadic", + "Naively a router: the customer opens a ticket, the ticket routes to an agent, the agent " + "replies. Pre-registered as a pass-through dyad — the computed verdict tests that reading.", + "Ticketing workflow, routing rules, whether the system gates or only forwards.", + ), + + Mock( + "M9", "Grievance arbitration", ("W", "Ar", "E"), + "W=worker/union grievance, Ar=arbitrator's ruling, E=employer position", + [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]], + "triadic", + "The arbitrator commits a ruling reading the grievance and the employer's defense; both are " + "bound by it. The textbook determination neither party controls.", + "Collective-bargaining agreement, the arbitration procedure, case records.", + ), + + Mock( + "M10", "ERP / EDI supply link", ("Su", "ERP", "Bu"), + "Su=supplier fulfilling, ERP=system transmitting, Bu=buyer ordering", + [lambda x: x[2], lambda x: x[2], lambda x: x[0]], + "dyadic", + "The ERP transmits the buyer's order and logs it but commits nothing; the real coupling is " + "buyer and supplier, and the system is a transparent pipe — a spectator on the exchange.", + "EDI/ERP config, whether the system enforces terms or only transmits, transaction logs.", + ), +] diff --git a/irreducibility-pipeline/studies/phiid_measure.py b/irreducibility-pipeline/studies/phiid_measure.py new file mode 100644 index 000000000..03747b512 --- /dev/null +++ b/irreducibility-pipeline/studies/phiid_measure.py @@ -0,0 +1,70 @@ +"""ΦID-based integrated information Φ_R, estimated from a time series via phyid. + +Φ_R is the revised whole-minus-sum integrated information (Mediano et al. 2019). +For a bipartition (A, B) of the system, with `phyid`'s 16 ΦID atoms computed +between the two parts' (integer-coded) time series: + + TDMI = Σ all 16 atoms (joint past → joint future MI) + I_A = rtr + rtx + xtr + xtx (A's past → A's future MI) + I_B = rtr + rty + ytr + yty (B's past → B's future MI) + Φ_WMS = TDMI − I_A − I_B (whole minus sum; can be < 0) + Φ_R = Φ_WMS + rtr (add back double-redundancy) + +The atom bookkeeping is verified against directly-estimated mutual informations +(see the package tests / FINDINGS). We use the **CCS** redundancy. The system's +integrated information is the minimum Φ_R over bipartitions (the MIP analog). +""" + +import numpy as np +from phyid.calculate import calc_PhiID + +REDUNDANCY = "CCS" + + +def _part_int_series(traj, nodes): + """Map a node subset's binary trajectory to an integer state series.""" + s = np.zeros(traj.shape[0], dtype=int) + for k, nd in enumerate(nodes): + s |= traj[:, nd].astype(int) << k + return s.astype(float) + + +def _bipartitions(n): + for mask in range(1, 2 ** (n - 1)): + a = tuple(i for i in range(n) if (mask >> i) & 1) + b = tuple(i for i in range(n) if not ((mask >> i) & 1)) + if a and b: + yield a, b + + +def phi_r_bipartition(A, B, redundancy=REDUNDANCY): + """Φ_R across one bipartition, from the ΦID atoms of part series A, B.""" + atoms, _ = calc_PhiID(A, B, tau=1, kind="discrete", redundancy=redundancy) + m = {k: float(np.mean(v)) for k, v in atoms.items()} + tdmi = sum(m.values()) + i_a = m["rtr"] + m["rtx"] + m["xtr"] + m["xtx"] + i_b = m["rtr"] + m["rty"] + m["ytr"] + m["yty"] + phi_wms = tdmi - i_a - i_b + return phi_wms + m["rtr"] # Φ_R + + +def phi_r_integration(tpm_sbn, n, rng, traj_len=8000): + """ΦID-based integrated information of a network: the minimum Φ_R over + bipartitions, estimated from a simulated trajectory. Returns (phi_r_min, + phi_wms_min) where phi_wms_min is the uncorrected whole-minus-sum minimum.""" + from irreducibility import core as exact_phi + traj = exact_phi.simulate_trajectory(tpm_sbn, n, traj_len, rng) + best_r, best_wms = np.inf, np.inf + for a, b in _bipartitions(n): + A = _part_int_series(traj, a) + B = _part_int_series(traj, b) + atoms, _ = calc_PhiID(A, B, tau=1, kind="discrete", redundancy=REDUNDANCY) + m = {k: float(np.mean(v)) for k, v in atoms.items()} + tdmi = sum(m.values()) + i_a = m["rtr"] + m["rtx"] + m["xtr"] + m["xtx"] + i_b = m["rtr"] + m["rty"] + m["ytr"] + m["yty"] + phi_wms = tdmi - i_a - i_b + best_wms = min(best_wms, phi_wms) + best_r = min(best_r, phi_wms + m["rtr"]) + return (best_r if np.isfinite(best_r) else 0.0, + best_wms if np.isfinite(best_wms) else 0.0) diff --git a/irreducibility-pipeline/studies/proxy_bridge.py b/irreducibility-pipeline/studies/proxy_bridge.py new file mode 100644 index 000000000..3f4aadfc4 --- /dev/null +++ b/irreducibility-pipeline/studies/proxy_bridge.py @@ -0,0 +1,63 @@ +"""Proxy bridge: can a cheap time-series estimate recover the literacy/algorithmacy verdict? + +The survey's central finding: on real systems exact Φ is intractable, so neuroscience estimates a +proxy from finite time series and reports a lower bound. Organizational coordination also produces +time series (messages, handoffs, decisions). This module tests whether a proxy estimated from +simulated trajectories of a coordination form preserves the binary verdict that exact IIT-4.0 Φ +gives on the form's structure. + +Pipeline per form: + 1. Build the deterministic application-layer TPM from the form's Boolean rules. + 2. Add output noise (the repo's model: tpm_noisy = tpm*(1-noise) + (1-tpm)*noise), so trajectories + explore states the way noisy real data does. + 3. Estimate the ΦID-based proxy Φ_R (CCS redundancy) from a simulated trajectory — reusing + phiid_vs_phi.phiid_measure, the same estimator validated in this repo's data-style study. + 4. Compare to the exact structural verdict (classifier on the deterministic form) and to exact Φ + recomputed on the noisy TPM (apples-to-apples reference). + +Run: python -m studies.proxy_bridge +""" + +import os +import sys + +os.environ.setdefault("PYPHI_WELCOME_OFF", "true") + +import numpy as np + +from irreducibility.core import tpm_from_rules, cm_from_rules, classify, PHI_EPS +from studies.phiid_measure import phi_r_integration +from irreducibility import core as exact_phi + + +def add_noise(tpm_sbn, noise): + """Mix a deterministic state-by-node TPM toward the flipped output by `noise`.""" + return tpm_sbn * (1.0 - noise) + (1.0 - tpm_sbn) * noise + + +def exact_phi_max_noisy(tpm_noisy, cm, n, rng, traj_len=2000): + """Exact IIT-4.0 max system Φ on the noisy TPM (all states reachable when noise>0).""" + mean_phi, max_phi, _ = exact_phi.network_phi(tpm_noisy, cm, n, rng) + return max_phi + + +def proxy_for_form(rules, noise, rng, traj_len=8000): + """Return (structure, exact_phi_det_max, exact_phi_noisy_max, proxy_phi_r, proxy_phi_wms). + + structure : 'triadic'/'dyadic' from the deterministic form (the ground truth). + exact_phi_det_max : max exact Φ on the deterministic form. + exact_phi_noisy_max: max exact Φ on the noisy TPM (reference). + proxy_phi_r : ΦID Φ_R (CCS) estimated from the simulated noisy trajectory. + proxy_phi_wms : uncorrected whole-minus-sum Φ (the candidate_audit's best-tracking proxy), + estimated from the same trajectory — the proxy's strongest form. + """ + n = len(rules) + tpm_det = tpm_from_rules(rules) + cm = cm_from_rules(rules) + + verdict = classify(tpm_det, cm) + tpm_noisy = add_noise(tpm_det, noise) + phi_noisy = exact_phi_max_noisy(tpm_noisy, cm, n, rng, traj_len) + phi_r, phi_wms = phi_r_integration(tpm_noisy, n, rng, traj_len=traj_len) + + return verdict.structure, verdict.max_phi, phi_noisy, phi_r, phi_wms diff --git a/irreducibility-pipeline/studies/proxy_run.py b/irreducibility-pipeline/studies/proxy_run.py new file mode 100644 index 000000000..5a7f1a085 --- /dev/null +++ b/irreducibility-pipeline/studies/proxy_run.py @@ -0,0 +1,91 @@ +"""Run the proxy bridge over the corpus forms x noise levels x seeds; write results/bridge.csv. + +Also runs a pure-independence control (two decoupled parties) that must give proxy ≈ 0. + +Run: python -m studies.proxy_run [traj_len] +""" + +import csv +import os +import sys +import time + +import numpy as np + +from studies import forms_library as lib +from studies import proxy_bridge as bridge + +_HERE = os.path.dirname(__file__) +_RESULTS = os.path.join(_HERE, "results") + +NOISE_LEVELS = [0.05, 0.1, 0.2] +SEEDS = [1, 2, 3] + + +def main(traj_len=8000): + os.makedirs(_RESULTS, exist_ok=True) + rows = [] + start = time.time() + print(f"PROXY BRIDGE — ΦID Φ_R from trajectories vs exact verdict " + f"(traj_len={traj_len}, noise={NOISE_LEVELS}, seeds={SEEDS})") + print("=" * 96) + for f in lib.FORMS: + for noise in NOISE_LEVELS: + for seed in SEEDS: + rng = np.random.default_rng(seed) + structure, phi_det, phi_noisy, phi_r, phi_wms = bridge.proxy_for_form( + f.rules, noise, rng, traj_len=traj_len) + rows.append({ + "form": f.key, "structure": structure, "noise": noise, "seed": seed, + "exact_phi_det": f"{phi_det:.6f}", "exact_phi_noisy": f"{phi_noisy:.6f}", + "proxy_phi_r": f"{phi_r:.6f}", "proxy_phi_wms": f"{phi_wms:.6f}", + }) + # progress line: mean proxy by form + sub = [r for r in rows if r["form"] == f.key] + mean_pr = np.mean([float(r["proxy_phi_r"]) for r in sub]) + print(f" {f.key:<24} {structure:<8} mean Φ_R={mean_pr:+.4f} " + f"(exact det Φ={phi_det:.3f}) [{time.time()-start:.0f}s]") + + _write(rows) + _summary(rows) + + +def _write(rows): + out = os.path.join(_RESULTS, "bridge.csv") + with open(out, "w", newline="") as fh: + w = csv.DictWriter(fh, fieldnames=list(rows[0].keys())) + w.writeheader() + w.writerows(rows) + print(f"\nWrote {out}") + + +def _separation(rows, key, label): + tri = [float(r[key]) for r in rows if r["structure"] == "triadic"] + dya = [float(r[key]) for r in rows if r["structure"] == "dyadic"] + wins = sum(t > d for t in tri for d in dya) + ties = sum(t == d for t in tri for d in dya) + auc = (wins + 0.5 * ties) / (len(tri) * len(dya)) + all_vals = sorted(set(tri + dya)) + best_acc, best_thr = 0.0, None + for thr in all_vals: + acc = (sum(t >= thr for t in tri) + sum(d < thr for d in dya)) / (len(tri) + len(dya)) + if acc > best_acc: + best_acc, best_thr = acc, thr + print(f" [{label}] triadic mean={np.mean(tri):+.4f} dyadic mean={np.mean(dya):+.4f} " + f"rank-AUC={auc:.3f} best-thr acc={best_acc:.3f} @ {best_thr:+.4f}") + return auc + + +def _summary(rows): + """Does either cheap proxy preserve the binary verdict? Report separation for both.""" + print("\n" + "=" * 96) + print("SEPARATION: does a cheap time-series proxy preserve the dyadic/triadic verdict?") + _separation(rows, "proxy_phi_r", "Φ_R (CCS) ") + _separation(rows, "proxy_phi_wms", "Φ_WMS (wms)") + print(" (rank-AUC 0.5 = chance; exact Φ on the deterministic form is the ground truth)") + print("=" * 96) + + +if __name__ == "__main__": + traj_len = int(sys.argv[1]) if len(sys.argv) > 1 else 8000 + main(traj_len) diff --git a/irreducibility-pipeline/studies/thompson_ordering.py b/irreducibility-pipeline/studies/thompson_ordering.py new file mode 100644 index 000000000..54fdfa621 --- /dev/null +++ b/irreducibility-pipeline/studies/thompson_ordering.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python +"""Q43 / H1 — the naive Thompson ordering fails under one uniform modeling convention. + +Form / ensemble: a matched triple at n=3, AND determination family, little-endian. + Pooled (independent-contribution relay): [x->S, x->W, x->S] + Sequential (pass-through chain): [x->S, x->(W&C), x->S] + Reciprocal (feedback cycle, cyclic form): [x->S, x->(W&C), x->S] +Labels (W, S, C). + +Measure: verdict().structure and .max_phi for each; rank the three Φ. + +Instrument control (run first): the pass-through mediator chain at n=3 must read triadic, +max_phi = 2.0, MIP "2 parts: {W,SC}". Abort if it fails. + +Decision rule (fixed before run): H1 confirmed if pooled is not the strict Φ-minimum OR +sequential Φ does not fall strictly between pooled and reciprocal; refuted only if the three +Φ are strictly monotone in Thompson order with pooled dyadic. +""" + +import csv +import os +import sys + +# Repo root onto sys.path so this runs as a direct script and via the package. +os.environ.setdefault("PYPHI_WELCOME_OFF", "true") + +from irreducibility.core import classify_rules, PHI_EPS # noqa: E402 +from irreducibility.core import verdict # noqa: E402 + +LABELS = ("W", "S", "C") + +# --- Forms (n=3, AND family, little-endian; x[0]=W, x[1]=S, x[2]=C) --- +POOLED = [lambda x: x[1], lambda x: x[0], lambda x: x[1]] +SEQUENTIAL = [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]] +RECIPROCAL = [lambda x: x[1], lambda x: x[0] & x[2], lambda x: x[1]] + +RESULTS_DIR = os.path.join(os.path.dirname(__file__), "results") + + +def instrument_control(): + """The pass-through chain must read triadic at Φ=2.0 with MIP '2 parts: {W,SC}'.""" + v = verdict(SEQUENTIAL, LABELS) + assert v.structure == "triadic", f"control structure {v.structure!r} != 'triadic'" + assert abs(v.max_phi - 2.0) < 1e-6, f"control max_phi {v.max_phi} != 2.0" + assert v.mip_partition == "2 parts: {W,SC}", ( + f"control MIP {v.mip_partition!r} != '2 parts: {{W,SC}}'" + ) + return v + + +def main(): + print("=== Q43 / H1 — Thompson ordering under one uniform convention (n=3, AND) ===") + + ctrl = instrument_control() + print("[instrument control] pass-through chain: " + f"structure={ctrl.structure}, max_phi={ctrl.max_phi:.6f}, " + f"MIP={ctrl.mip_partition!r} -> PASS") + + forms = [ + ("pooled", "independent-contribution relay", POOLED), + ("sequential", "pass-through chain", SEQUENTIAL), + ("reciprocal", "feedback cycle (cyclic)", RECIPROCAL), + ] + + rows = [] + for name, desc, rules in forms: + v = classify_rules(rules, labels=LABELS) + rows.append({ + "thompson_type": name, + "form": desc, + "structure": v.structure, + "max_phi": v.max_phi, + "mip_partition": v.mip_partition, + "n_states_irreducible": v.n_states_irreducible, + }) + print(f"\n[{name}] {desc}") + print(f" structure = {v.structure}") + print(f" max_phi = {v.max_phi:.6f}") + print(f" MIP = {v.mip_partition!r}") + + phi = {r["thompson_type"]: r["max_phi"] for r in rows} + struct = {r["thompson_type"]: r["structure"] for r in rows} + p_pool, p_seq, p_rec = phi["pooled"], phi["sequential"], phi["reciprocal"] + + print("\n=== Φ ranking (Thompson order: pooled, sequential, reciprocal) ===") + print(f" pooled Φ = {p_pool:.6f} ({struct['pooled']})") + print(f" sequential Φ = {p_seq:.6f} ({struct['sequential']})") + print(f" reciprocal Φ = {p_rec:.6f} ({struct['reciprocal']})") + + # Decision rule (fixed before run). + pooled_is_strict_min = (p_pool < p_seq - PHI_EPS) and (p_pool < p_rec - PHI_EPS) + seq_strictly_between = (p_pool + PHI_EPS < p_seq) and (p_seq + PHI_EPS < p_rec) + pooled_dyadic = struct["pooled"] == "dyadic" + + strict_monotone = ( + pooled_dyadic + and (p_pool + PHI_EPS < p_seq) + and (p_seq + PHI_EPS < p_rec) + ) + + step1_fails = not pooled_is_strict_min # pooled not the strict minimum + step2_fails = not seq_strictly_between # sequential not strictly between + + if step1_fails or step2_fails: + decision = "confirmed" + elif strict_monotone: + decision = "refuted" + else: + decision = "partial" + + print("\n=== Decision (rule fixed before run) ===") + print(f" pooled is strict Φ-minimum? {pooled_is_strict_min}") + print(f" sequential strictly between pool/recip? {seq_strictly_between}") + print(f" pooled dyadic? {pooled_dyadic}") + print(f" strictly monotone in Thompson order? {strict_monotone}") + print(f" H1 VERDICT: {decision.upper()}") + + os.makedirs(RESULTS_DIR, exist_ok=True) + csv_path = os.path.join(RESULTS_DIR, "thompson_ordering.csv") + with open(csv_path, "w", newline="") as fh: + w = csv.DictWriter(fh, fieldnames=list(rows[0].keys())) + w.writeheader() + w.writerows(rows) + print(f"\nwrote {csv_path}") + + return decision + + +if __name__ == "__main__": + main() diff --git a/irreducibility-pipeline/tests/test_pipeline.py b/irreducibility-pipeline/tests/test_pipeline.py new file mode 100644 index 000000000..8aacc7845 --- /dev/null +++ b/irreducibility-pipeline/tests/test_pipeline.py @@ -0,0 +1,110 @@ +"""Tests: instrument controls, the rule parser, the evidence gate, and the worked examples.""" + +import json +import os + +import pytest + +from irreducibility.core import classify_rules, major_complex +from irreducibility.validate import factoring_control, irreducible_control, FORMS, EXPECTED +from irreducibility.rules import compile_rule +from irreducibility.encoding import validate +from irreducibility.encode_check import check_quotes +from irreducibility.analyze import analyze +from irreducibility.regime import regime + +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +EX = os.path.join(ROOT, "examples") + + +def test_controls(): + assert classify_rules(factoring_control()).structure == "dyadic" + v = classify_rules(irreducible_control()) + assert v.structure == "triadic" and abs(v.max_phi - 0.830075) < 1e-4 + + +@pytest.mark.parametrize("name", sorted(FORMS)) +def test_regression_forms(name): + assert classify_rules(FORMS[name]()).structure == EXPECTED[name] + + +def test_strict_mediation_triad(): + rules = FORMS["strict_mediation_triad"]() + v = classify_rules(rules) + assert v.structure == "triadic" and abs(v.max_phi - 2.0) < 1e-9 + assert set(major_complex(rules, ("W", "S", "C"))[0]) == {"W", "S", "C"} + + +def test_parser_matches_lambda(): + labels = ("D", "P", "R") + f = compile_rule("D and R", labels) + g = compile_rule("(D or R) and not P", labels) + h = compile_rule("D xor R", labels) + for s in range(8): + x = tuple((s >> i) & 1 for i in range(3)) + assert f(x) == (x[0] & x[2]) + assert g(x) == ((x[0] | x[2]) & (1 - x[1])) + assert h(x) == (x[0] ^ x[2]) + + +@pytest.mark.parametrize("bad", ["__import__('os')", "D + R", "D and Q", "2"]) +def test_parser_rejects(bad): + with pytest.raises((ValueError, SyntaxError)): + compile_rule(bad, ("D", "P", "R")) + + +def _doc(name): + with open(os.path.join(EX, name, "encodings.json"), encoding="utf-8") as f: + return json.load(f) + + +def test_gate_rejects_rule_without_evidence(): + doc = _doc("01_gig_dispatch") + doc["encodings"][0]["evidence"]["P"] = [] + assert any("cites no evidence" in p for p in validate(doc)) + + +def test_gate_rejects_missing_prediction(): + doc = _doc("01_gig_dispatch") + del doc["encodings"][0]["predicted"] + assert any("predicted" in p for p in validate(doc)) + + +def test_gate_rejects_invented_quote(): + doc = _doc("01_gig_dispatch") + doc["encodings"][0]["evidence"]["P"][0]["quote"] = "The platform decides everything." + assert check_quotes(doc, os.path.join(EX, "01_gig_dispatch")) + + +def test_gig_dispatch(): + rep = {r["id"]: r for r in analyze(_doc("01_gig_dispatch"))["encodings"]} + assert rep["A"]["structure"] == "triadic" and set(rep["A"]["core"]) == {"D", "P", "R"} + assert rep["A"]["regime"] == "BOTTLENECK" and rep["A"]["contingency"]["kind"] == "intrinsic" + assert rep["B"]["structure"] == "dyadic" + assert rep["C"]["structure"] == "dyadic" and set(rep["C"]["core"]) == {"P", "R"} + assert [rep[k]["regime"] for k in ("O1", "O2", "O3", "O4", "O5")] == \ + ["BOTTLENECK", "ENRICHER", "CAPTURE", "CAPTURE", "BYPASSED"] + assert set(rep["O3"]["core"]) == {"D", "P"} and set(rep["O4"]["core"]) == {"P", "R"} + + +def test_insurance_claim(): + rep = {r["id"]: r for r in analyze(_doc("02_insurance_claim"))["encodings"]} + assert set(rep["pipe"]["core"]) == {"C", "E", "A"} + assert set(rep["gated"]["core"]) == {"C", "E"} + assert set(rep["loop"]["core"]) == {"E", "A"} + assert set(rep["loop_nolearn"]["core"]) == {"C", "A"} + assert rep["frozen"]["structure"] == "dyadic" + + +def test_dealer_vs_clearinghouse(): + rep = {r["id"]: r for r in analyze(_doc("04_dealer_vs_clearinghouse"))["encodings"]} + assert rep["dealer"]["contingency"]["kind"] == "contingent" + assert rep["clearinghouse"]["contingency"]["kind"] == "intrinsic" + + +def test_regime_three_way_platform(): + L = ("W", "S", "C") + S = lambda x: x[0] & x[2] + assert regime([lambda x: x[1], S, lambda x: x[1]], L, "S") == "BOTTLENECK" + assert regime([lambda x: x[1] & x[2], S, lambda x: x[1] & x[0]], L, "S") == "ENRICHER" + assert regime([lambda x: x[1] | x[2], S, lambda x: x[1] | x[0]], L, "S") == "BYPASSED" diff --git a/submissions/proposals/orgsci_ai_2026/README.md b/submissions/proposals/orgsci_ai_2026/README.md index aa52a9f99..be9b96fa7 100644 --- a/submissions/proposals/orgsci_ai_2026/README.md +++ b/submissions/proposals/orgsci_ai_2026/README.md @@ -23,7 +23,18 @@ talk, [`../../triadic_reduction/talk/trinidad-2026/Do-Triads-Reduce-to-Dyads-Tri ## Status The package was filed in the lab on 27 October 2026, ahead of the portal deadline. Manuscript Central -has not received it. An earlier draft lives on the open branch `submission/cfp-arms-2026-10`, under +has not received it. + +[DRAFTED by Claude, 27 Oct 2026.] A full review of the Google Doc against the CFP, the prototype and +the lab is in [`STAGE1_REVIEW.md`](STAGE1_REVIEW.md): CFP compliance, narrative, a line-by-line audit of +every repository reference and number, a citation audit, and an attribution audit, with proposed +replacement text marked. Eleven items block submission; the first is that the prototype +`irreducibility-pipeline` had no git remote, so it now lives inside this repository at +[`../../../irreducibility-pipeline/`](../../../irreducibility-pipeline/) and a lab CI check +(`irreducibility-pipeline-reproduce`) covers its 17 reference results. Two dates above need checking +against the CFP PDF: the in-person workshop is 27–28 February 2027 (tentative) with no venue named, and +Stage 3 is described as ~five-page *Science/Nature*-style articles plus a technical appendix, not a +2,500–4,500-word paper. An earlier draft lives on the open branch `submission/cfp-arms-2026-10`, under `submissions/orgsci_ai_frontiers_methods/`. That branch's v3 points at the same Google Doc and treats the doc as the current text. This folder holds the later export: the v6 prospectus, the technical addendum, and the deck. diff --git a/submissions/proposals/orgsci_ai_2026/STAGE1_REVIEW.md b/submissions/proposals/orgsci_ai_2026/STAGE1_REVIEW.md new file mode 100644 index 000000000..1ea8c62e2 --- /dev/null +++ b/submissions/proposals/orgsci_ai_2026/STAGE1_REVIEW.md @@ -0,0 +1,634 @@ +# Stage 1 review: "Beyond the Dyadic Straitjacket" against the *Organization Science* call + +Reviewed 27 October 2026 against the CFP PDF (`CFP_AI-Enabled Frontiers in Organizational Science`, +7 pages) and the live Google Doc `1fhM_C7pz6e3sR7aXY3_89oys06B-UyK9Vyf93bt1zFA` as it stood at +11:41 UTC that day (8,852 words; Part I 1,890). The export in this folder, +[`gdoc_1fhM_v6_story_plus_addendum.md`](gdoc_1fhM_v6_story_plus_addendum.md), is 130 words shorter and +has different A.2–A.5 and appendix headings, so the Doc, not the export, is the text reviewed. + +**What I read in full:** the Doc, the CFP, the prototype's `README.md` and `APPENDIX.md`, the FINDINGS +files of every lab study the Doc cites, Quine (1954), both Hereth Correia & Pöschel papers (2004 from +the copy in `~/Downloads`, 2006 all 23 pages), Koshkin's primitive-positive paper (arXiv 2606.19492v1, +19 pages), the dyad and triad pages of Wolff's Simmel (archive.org scan), the abstracts of every source +the attribution audit names. **What I did not read:** the published *IGPL* version of Koshkin's +paper (theorem numbers are verified against the arXiv version only) and Koshkin's 2024 *IGPL* paper +beyond its abstract. Consensus was out of monthly quota and Scholar Gateway returned ACCESS_DENIED, +so Crossref, OpenAlex, Semantic Scholar and the publishers' pages stood in for them. + +**Every number in Part C comes from a fresh run**, not from a FINDINGS file: the prototype's +`reproduce.py` (17/17) and `pytest` (19 passed), `irreducibility.analyze` on all four examples and on +the logged adversary run, `studies.enricher_regime`, `studies.mediator_in_core`, `studies.census`, +`encode_check` on the three AI files, and the eighteen lab CI checks the Doc leans on (17 pass; one +fails, see C7). Outputs sit in +`/private/tmp/claude-501/-Users-ludwitt/99b8f63e-f3ca-4c8c-ab30-c300eeb75236/scratchpad/evidence/` +(`proto_*.txt`, `lab_ci_named.txt`, `crossref/*.json`). + +**How to use this file.** Each finding states the Doc's text, the fact, the source, and a replacement +sentence where one is needed. Replacement text is marked `[DRAFTED by Claude]`; the wording around it +stays yours. Nothing here has been applied to the Doc. + +--- + +## 0. The verdict, and the items that block submission + +The package fits the call better than its v3 draft feared, and its spine is sound: large language +models fail as structural judges, so the loop confines them to evidence-bound reading under a +deterministic gate and lets exact computation decide, and the logged runs show the model's own +predictions failing. That is an "AI-enabled research loop under human direction" with a built-in +boundary test, which is two of the CFP's categories at once. The prose is strong. The addendum is +not yet true to the prototype it describes. + +Eleven items block submission because a reviewer who forks the repository will find them within an +hour: + +1. **The prototype is not forkable.** `irreducibility-pipeline` (tag `v0.1-stage1`) existed only on your + disk with no git remote. It now sits inside the lab at `irreducibility-pipeline/` (see C6); the Doc's + references to it as a separate artifact need the new path and the lab tag. +2. **"56 dyadic, 132 cycle-supported, 68 mediated triads" and "96 of 256"** (§4, A.3, Appendix C) have no + source in either repository. The only 256-form census is the prototype's `census`: 24 triadic, 232 + dyadic. (C3.) +3. **Table 3's outside-option rows O₂–O₅ are not the prototype's O1–O5**, and their verdicts contradict the + study they resemble: both parties mobile gives BYPASSED {D,R}, not "Φ = 0, complete dissolution". (C2.) +4. **Example 03 (code-review gate)** in Table 5 reports parties, rules and results the prototype does not + produce. Actual: `gated` is triadic at Φ = 1.000 with core {A, M} and the gate BYPASSED. (C2.) +5. **Example 04 (dealer vs clearinghouse)** is not dyadic-vs-triadic; both are triadic at Φ = 2.000 and the + distinction is contingent vs intrinsic. (C2.) +6. **Example 02's parties and encoding counts** are wrong (engine `E`, not "Intake Portal (M)"; five design + encodings, not "2 rival + 4 underspecified"). (C2.) +7. **Φ(MIP) = 1.198 and 1.000** in Table 3 and Table 4 are wrong: the direct-tie bypass computes to 0.830; + the pooled-driver system computes to 0.000 (dyadic) with {P, R} as its major complex. (C2.) +8. **Six file paths do not exist** (`encode/runs/`, the three `*_drafter.json` / `*_adversary.json` names, + `irreducibility/controls.py`, `studies/strategic_model/`), and two more are modules, not directories. + (C1.) +9. **Two reference-list entries are fabricated records**: Cameron (2024) carries an invented title, issue and + pages; "Koshkin (2025) … *IJAR* 186, 109523" is a different paper's article number. Three works cited in + the text are missing from the list (Stark & Pais 2020; Rosenblat & Stark 2016; Tononi 2004). (D.) +10. **Four Appendix D figures have no source** (R² = 0.992; "3 bits → 5.755 bits"; "4/8 formal vs shadow"; + "hybrid team designs factor cleanly"), and twelve study labels in that table are not the names of any + study or check. (C4.) +11. **"[Anonymized for Double-Blind Stage 1 Review]"** sits above a link to a public repository under your + name. The CFP asks for no blinding. You decided to name the author; the line needs replacing. (A.) + +Everything else is listed in F by priority. + +--- + +## A. CFP compliance + +| CFP asks | Where the Doc answers | Gap or fix | +|---|---|---| +| Proposal 1,500–2,000 words plus references, 3–5 pages | Part I §1–5, **1,890 words** (`wc -w` on the export's lines 11–142) | None. | +| "what you have done" | §3–§4; A.2 | None. | +| "what you hope to do" | §4 Stage 2 workstreams; A.3; App. C | None. | +| "the key risks you face in fully executing your vision" | §5 gives four *boundary conditions* of the method. Execution risks appear only in the addendum: IRB timing (A.3 item 3), open-weight model performance (A.3 item 1), coder agreement target (prototype APPENDIX H: Krippendorff's α ≥ 0.80, absent from the Doc) | Add one sentence to §5 naming the execution risks: `[DRAFTED by Claude]` "Three risks govern Stage 2: the field protocol waits on IRB approval; the encoding step must hold up on open-weight models, not only on the commercial one we logged; and AI–human coder agreement (target Krippendorff's α ≥ 0.80 per rule) is not yet measured." | +| "how organizational and social science would change if you are successful" | §5 closing paragraph; A.5 | None. | +| Technical appendix "details needed to evaluate and understand the work" | Part II + Appendices A–D | Fix the factual items in C; add table captions (the text cites Tables 1–6, the tables carry none). | +| Research artifact: "a Git repository or equivalent artifact that includes a prototype or proof of concept" | Links `algorithmacy-lab`; names `irreducibility-pipeline v0.1-stage1` | The prototype had no remote. Now in the lab tree (C6). Replace "fork our repository" references with the single lab URL and the lab tag. | +| Contribution types | Title block: "Submission Tracks: Reusable Research Infrastructure; AI-Enabled Research Loops Under Human Direction; New Forms of Measurement; Critical, Diagnostic, and Boundary-Setting Work" | The CFP lists "contribution types", not tracks, and does not ask you to pick. Four is defensible; "New Forms of Measurement" is the weakest fit (the CFP's wording is "measure constructs in text, audio, or video … at scale", and nothing here measures at scale yet). Suggest naming two: research loops under human direction, and boundary-setting. | +| Criterion: novelty | §2 | Strong. See E for the one overclaim ("overturns a sixty-year assumption"). | +| Criterion: feasibility | §4, A.3 | Strong once the addendum matches the code. | +| Criterion: stage of development | A.2 (17 checks, 19 tests, 542 lab checks) | Strong; numbers verified (C5). | +| Criterion: ethicality | A.4 item 5 only; Part I is silent | One clause in §5 (IRB, rule architectures not individuals, symmetric lever matrix). | +| Criterion: reproducibility | `reproduce.py`, `ci/reproduce.json` | Strong. One lab check does not reproduce today (C7). | +| Criterion: scalability | §5 "three to ten roles"; A.4 "n = 10 … bound to 3–5" | Honest. Keep. | +| Criterion: potential use and adoption | §3 "any researcher can fork" | True only after C6. | +| Criterion: expand the frontier | §2, A.5 | Strong. | +| FAQ: proprietary AI models — "infrastructure that other researchers have a reasonable chance of accessing" | A.3 item 1 commits to open-weight endpoints; the logged runs used Claude Sonnet 5.5 | Say in Part I §3 that the prompts are model-agnostic and the Stage 2 release runs on an open-weight model as well. | +| FAQ: data that cannot be shared | Examples are stipulated prose (prototype README: "a stipulated description, not field data"); field data waits on IRB | State it in Part I once: the worked cases are stipulated, the field packet is pre-built. | +| FAQ: negative results welcome | The two failed adversary predictions (A.2.2), the MARL null (A.4), the proxy failure (A.2.2) | These are assets under this call. §4 could name them as such in one clause. | +| Double-blind | Title block "[Anonymized for Double-Blind Stage 1 Review]" | Not required by the CFP; contradicts the public named repo. Replace with the author line. | +| Dates | §4: "before the February 2027 Duke workshop"; folder README: "Duke on 19–20 February 2027" | The CFP says **27–28 February 2027, tentative**, and names no venue. Fix both. | +| Portal | — | `mc.manuscriptcentral.com/orgsci`, deadline 1 November 2026. | + +--- + +## B. The narrative + +**What the editors asked.** "What kinds of knowledge can we create when the tools of inquiry +themselves change?" — and, in the same breath, no "Potemkin villages of slop", no conventional papers +with AI content, prototypes over polish. Part I answers the question in §3, and §3 is the best section +in the package: the LLM fails as a judge of structure, so the harness uses it only as an evidence-bound +reader and lets PyPhi decide, and the logged adversary run shows the model finding two readings and +mispredicting both. Keep that paragraph exactly as it is. It is the contribution. + +**Three moves weaken the case, and each is fixable without new research.** + +*The four-regime claim rests on numbers that do not exist.* §2 says that running PyPhi "across all 256 +possible three-party mediated coordination structures proves that joint influence and systemic +wholeness are orthogonal dimensions, revealing four distinct coordination regimes." The 2 × 2 is real, +but it comes from the Peirce probes (89 one-input wirings; 30 two-input forms), and the "256" census says +something else (24 triadic, 232 dyadic). The reviewer who runs `studies.census` will see the mismatch +first. C3 gives the sourced sentence. + +*"Self-exemplifying" is asserted, not computed.* §3 says the research architecture "quite literally +demonstrates the exact triadic coordination we are examining." Nothing in either repository encodes +scholar, agents and PyPhi as a structure and computes it. Two fixes. The cheap one is to drop +"literally" and say the harness is built on the same commit-and-read form the paper studies. The +better one — an hour's work with the prototype — is to write the three-party encoding (the scholar +reads the harness's verdict; the agents read the scholar's question and the evidence; the harness +commits only on a gated encoding and a question) and report its Φ(MIP) and core in one sentence. Under +this call, the harness run on itself is exactly the kind of result the editors say they cannot +predict. `[DRAFTED by Claude]` placeholder if you compute it: "Encoded as a structure in its own +pipeline — the scholar, the drafting agents, and the gate-and-compute harness — the loop reads +[verdict] with core [core]; the computation is `examples/05_harness/` in the prototype." + +*Agents are promised as present.* §3 says a forking researcher can "have their AI agents run the +experimental workflow" and that "competing AI agents translate field evidence." The prototype's README +says: "Nothing yet reads interview transcripts or documents at scale." The lab's AI arc says its agents +are "in-silico Boolean / tabular / small neural proxies (not live LLM calls)". What exists is two +prompts, a gate, and three logged runs made by pasting prose into one model. State that size. The +call rewards an honest prototype over an imagined platform, and the v3 FLAGS file already warned +against claiming live agent probes. `[DRAFTED by Claude]` for §3: "Any researcher can fork the lab, +paste a case into the drafter and adversary prompts with any model, pass the result through the +evidence gate, and compute. Three runs are logged so far, all on one model; reading transcripts at +scale and measuring agreement with human coders is Stage 2." + +**Two judgment calls, flagged, not decided.** + +*Algorithmacy.* §1, §2 and §5 carry the literacy → algorithmacy frame. The v3 FLAGS file judged that +"a paper about algorithmacy does not fit" this call. I would not cut it — it is the dissertation +spine and it gives the paper its organizational stake — but it costs about 180 of Part I's 1,890 +words, and the CFP never asks for a construct. One sentence in §1 and the closing clause of §5 would +hold the frame; §2's "requiring only literacy" / "Navigating it requires algorithmacy" glosses on the +four regimes could go. + +*"Potemkin village."* The phrase is the editors' own (for AI loops that only look like research). +Using it twice for your own objects — the bypassed platform in §3, "Potemkin oversight" in A.5 — reads +as an echo. One use, or none. + +**Overclaims to soften** (each is one word): "proves" appears six times (§2 ×2, §3, §4, A.1, A.2.3) +for results that are computations on stipulated models; the prototype's own README says "a verdict on +a model is evidence about the model." "Overturns a sixty-year assumption" (§2) — see E3. "Every +nontrivial variation backward" (§3) — the evidence is two predictions on one case (E8). "Collapses a +decade-long debate" (§4) — into a testable rule, yes; "collapses" overstates. "Pre-registered" (A.2.1 +Step 2, A.4 opening, A.4 item 2) — no registry record exists; the lab's own phrase, in every FINDINGS +file, is "hypotheses fixed before computing", and the prototype's is "a prediction fixed before +anything is computed." Use those. + +**House-style flags** (your `CLAUDE.md` rules, applied to Part I only; the addendum is reference +material and reads fine as a list): +- A.4's opening, "Because our laboratory commits pre-registered hypotheses before running experiments + and keeps refuted predictions in CI, we can state the exact boundary conditions," is self-narrating + rigor (rule 4). The sentence after it does the work; cut the opener. +- §2, §4 and §5 each run four or five bullets of identical shape (bold label, colon, one sentence). + The CFP format tolerates it; the house rule (mechanism 8) would group §4's three findings into prose. +- Paragraph openings in §1 land on agents (Simmel, organization theory, scholars) — good. §2's second + paragraph opens "Neuroscientists confronted the exact puzzle" — good. §5's bullets open on abstract + nouns ("Interpretive ambiguity:") — acceptable in a list. + +--- + +## C. Repo-reference audit + +Status: ✓ verified · ✗ wrong · ~ imprecise · ∅ no source found. Doc locations use the export's line +numbers in `gdoc_live.md` (my capture of the Doc at review time) where it helps. + +### C1. Paths, files, functions, tags + +| Doc says | Status | Fact | Source | +|---|---|---|---| +| `irreducibility-pipeline`, tag `v0.1-stage1` (A.2, App. B.2, App. D) | ✗→✓ | Existed only at `~/iit-playground/irreducibility-pipeline`, one commit, **no remote**. Now copied into the lab as `irreducibility-pipeline/`; tag to be cut on the lab commit when you push (C6). | `git remote -v` (empty); this branch | +| "reproduces all 17 reference results and passes 19 automated test gates in two minutes via a single command" (A.2) | ~ | Two commands: `python reproduce.py` (17 checks, about 2½ minutes on this laptop; the per-check times sum to 138 s) and `pytest -q` (19 tests, 5 s). | `proto_reproduce.txt`, `proto_pytest.txt` | +| `encode/runs/` (A.2.2 item 1, Table 5) | ✗ | No such directory. Logged runs live beside the examples. | `ls encode` → `PROMPT_adversary.md PROMPT_drafter.md SCHEMA.json` | +| `01_gig_dispatch_drafter.json`, `01_gig_dispatch_adversary.json`, `02_insurance_claim_drafter.json` (Table 5) | ✗ | `examples/01_gig_dispatch/ai_draft.json`, `examples/01_gig_dispatch/ai_draft_plus_adversary.json` (plus `ai_adversary_raw.json`), `examples/02_insurance_claim/ai_draft.json`. | `ls examples/01_gig_dispatch` | +| `irreducibility/controls.py` with "four mandatory controls" (Step 4, Table 2, App. B.1) | ✗ | No `controls.py`. `irreducibility/validate.py` runs **two controls** (factoring Φ = 0.000; irreducible Φ = 0.830) and **five reference forms** (strict mediation 2.000; chat dyad, dyadic gig model, broken-liveness feedback, each 0.000; gig false dyad 2.000). Table 2's four rows are the two controls plus two of the five forms. | `validate.py` docstring; prototype APPENDIX §C | +| `studies/adversarial_coding/`, `studies/proxies/`, `studies/strategic_model/` (A.2.2, App. C, App. D) | ✗ | Modules, not directories: `studies/adversarial_coding.py`; proxies = `studies/proxy_run.py` + `proxy_bridge.py` + `phiid_measure.py`. **`strategic_model` does not exist**; the README says "the strategic model … is the next stage of the work and is not here yet." Appendix D row 1 lists it as part of `v0.1-stage1`. | `ls studies`; README l. 24–26 | +| `irreducibility/core.py`, `encode_check.py`, `validate.py`, `spread.py`, `regime.py`, `contingency.py`, `rules.py`, `analyze.py`; `tpm_from_rules`, `cm_from_rules`, `classify_mediator`, `reduce_mediator`; `pyphi.new_big_phi.sia` / `maximal_complex` | ✓ / ~ | All files exist. `tpm_from_rules` and `cm_from_rules` are in `core.py`. `classify_mediator` and `reduce_mediator` are **not function names**: the mediator's position comes from `regime()` in `regime.py` (with `REGIMES` and `lesion_survives()`), the bypass reduction from `contingency_test()` and `add_bypass()` in `contingency.py`, and the verdict from `classify_rules()` in `core.py`. | `grep -n "^def"` | +| `contingency.py` "sweeps outside-option exit scenarios" (Step 6) | ✗ | `contingency.py` runs the bypass test (intrinsic / contingent / partial / reducible). Outside options are the O1–O5 design encodings in `examples/01` and the battery in `studies/enricher_regime.py`. | prototype APPENDIX §D | +| `protocol/` (Step 1, A.3, App. C) | ✓ | `PROTOCOL.md`, `coding_scheme.md`, `interview_guide.md`, `ethics.md`, `predictions_fixed_in_advance.md`. | `ls protocol` | +| `examples/03_code_review_gate/` (A.3) | ✓ path | Results wrong, see C2. | | +| `org_frontier/field/`, `recurrence/`, `survey/`, `classifier/`, `thinkers/peirce/probe_peirce_joint_determination.py`, `third_party/pyphi_iit4_mv`, `smoke_m2.py`, `foundations/phiid_vs_phi/FINDINGS.md` | ✓ | All exist. | `ls` | +| PyPhi pin `b78d0e342`; upstream `134a8f31`; `iit4_2026` returns φₛ = 0 at ε = 0; Python 3.10–3.12 | ✓ | | `requirements.txt`; `third_party/pyphi_iit4_mv/README.md` l. 7–9 | +| Blind runs "Claude Sonnet 5.5, October 2026" | ✓ | "26 Oct 2026, prompts as committed, case prose only, no tools". | prototype README l. 126 | + +### C2. The worked examples and Tables 2, 3, 5 + +Fresh `python -m irreducibility.analyze examples//encodings.json` output, in full, is in +`proto_analyze_*.txt`. + +**Example 01, gig dispatch.** Rival encodings: A (platform commits) **triadic Φ = 2.000, core {D,P,R}, +BOTTLENECK, intrinsic**; B (driver's relay) **dyadic 0.000, {D,P}**; C (pooled drivers, four nodes) +**dyadic 0.000, major complex {P,R}**. Single flipping rule A→B: `P: 'D and R' -> 'D'`. Design +encodings: + +| | Rules (D′, P′, R′) | Φ(MIP) max | Core | Position | +|---|---|---|---|---| +| O1 both captive | P · D∧R · P | 2.000 | {D,P,R} | BOTTLENECK | +| O2 complementary direct tie | P∧R · D∧R · P∧D | 6.000 | {D,P,R} | ENRICHER | +| O3 captive driver, mobile rider | P · D∧R · P∨D | 0.415 | {D,P} | CAPTURE | +| O4 mobile driver, captive rider | P∨R · D∧R · P | 0.415 | {P,R} | CAPTURE | +| O5 both mobile (substitute direct tie) | P∨R · D∧R · P∨D | 0.830 | {D,R} | BYPASSED | + +Against the Doc: + +| Doc (Table 3 / A.2.2) | Status | Fact | +|---|---|---| +| "2 rival (R₁, R₂), 2 design (D₁, D₂), 5 exit (O₁–O₅)" (Table 5) | ✗ | 3 rival (A, B, C) + 5 design (O1–O5) = 8 admissible encodings. Your D₁ is rival C; your D₂ is design O5. | +| R₁ Φ = 2.000 {D,P,R} BOTTLENECK; R₂ Φ = 0.000 CONDUIT | ✓ / ~ | R₂'s position prints as `dyadic` (the regime set is dyadic / BYPASSED / CAPTURE / BOTTLENECK / ENRICHER). "CONDUIT" and "PASSIVE" are your labels, not the code's. Either rename in the text or say the two words gloss the code's `dyadic`. | +| D₁ driver pool "Φ(MIP) = 1.000, {P,R}" | ✗ | System **Φ(MIP) = 0.000 (dyadic)**; {P,R} is the major complex. The 1.000 does not appear anywhere in the output. | +| D₂ direct tie "Φ(MIP) = 1.198, {D,R}, BYPASSED" | ✗ | **Φ(MIP) max = 0.830** (states 100 and 001), core {D,R}, BYPASSED. 1.198 appears nowhere in either repo. | +| O₂ "D′ = P ∨ E(D) … Φ = 2.000, {P,R}, CAPTURE of rider"; O₃ symmetric "{D,P}" | ✗ | These are not the prototype's O2/O3. The nearest computed facts: O4 (mobile driver) → CAPTURE {P,R} at Φ = 0.415; O3 (mobile rider) → CAPTURE {D,P} at 0.415. The exogenous-option battery in `enricher_regime.py` prints the same regimes (W:full/C:none → CAPTURE; W:none/C:full → CAPTURE) and **prints no Φ values**. | +| O₄ "both have outside options … Φ(MIP) = 0.000, ∅, Complete Dissolution (platform loses all lock-in)" | ✗ | Both-mobile is **BYPASSED, core {D,R}** (prototype O5, Φ = 0.830; `enricher_regime` phase diagram W:full/C:full → BYPASSED; its summary line: "bypassed (both options)"). The platform leaves the core; the parties stay bound to each other. "Dissolution to Φ = 0" is the opposite of what the code says. Part I §4 bullet 2 ("workers and clients escape lock-in by building outside options") survives; A.2.2's sentence "giving both sides outside options (O₄) dissolves lock-in to Φ(MIP) = 0" does not. | +| O₅ "Platform Substitute (multi-homing) D′ = P₁ ∨ P₂ … Φ = 1.000, {D,R}, Mediator Replaced (competing platforms factor out)" | ✗ | Not in the prototype. The lab's `rival_platforms` study (V2 #32, verdict RIVAL_ENCODING) finds the opposite of "platforms factor out": substitutable `W′ = S1 ∨ S2` gives "equal-Φ rivalry: each reachable state selects one platform triad with W". Either drop the row or restate it from that study. | +| "a sharp structural law that held across 60 of 60 randomized multi-party configurations: a platform's irreducible core consists of itself plus whichever parties lack an outside option" | ✓ | `enricher_regime.py` §4: "law holds on 60/60 random option configurations". | +| Table 2 controls 0.000 / 0.830 / 2.000 / 2.000 with those rules | ✓ values | File name wrong (C1). | + +`[DRAFTED by Claude]` replacement for the Table 3 outside-option rows, using the prototype's own five +designs (keep your column headings): + +> O₁ both captive — D′=P, P′=D∧R, R′=P — Φ 2.000 — {D,P,R} — BOTTLENECK (neither party can exit) +> O₂ complementary direct tie (repeat trips need app and contact) — D′=P∧R, P′=D∧R, R′=P∧D — Φ 6.000 — {D,P,R} — ENRICHER +> O₃ captive driver, mobile rider — D′=P, P′=D∧R, R′=P∨D — Φ 0.415 — {D,P} — CAPTURE of driver +> O₄ mobile driver, captive rider — D′=P∨R, P′=D∧R, R′=P — Φ 0.415 — {P,R} — CAPTURE of rider +> O₅ both mobile (substitute direct tie) — D′=P∨R, P′=D∧R, R′=P∨D — Φ 0.830 — {D,R} — BYPASSED (platform leaves the core; parties stay bound) + +and for A.2.2's third bullet: "Giving only the rider an outside option (O₃) shrinks the core to the +captive driver and the platform; giving only the driver one (O₄) shrinks it to the platform and the +captive rider; giving both (O₅) removes the platform from the core and leaves the driver and rider bound +to each other — the platform is bypassed, not dissolved." + +**Example 02, insurance claim.** Parties: Claimant `C`, **auto-adjudication engine `E`**, human +adjuster `A`; mediator `E`. **Five design encodings**, no rival pair: `pipe` triadic 2.000 {C,E,A} +BOTTLENECK (prediction held); `gated` 0.415 {C,E} CAPTURE (failed); `loop` 1.000 {E,A} CAPTURE (failed); +`loop_nolearn` 2.000 {C,A} BYPASSED (failed); `frozen` dyadic 0.000 (held). Two of five naive +predictions held. The logged AI drafter left rules unwritten for four of five designs; `encode_check` +rejects the file with **9 problems in 5 encodings** (eight missing party rules, one missing mediator +alternative). Doc Table 5 says "Intake Portal (M)" and "2 rival readings + 4 underspecified designs" +— ✗ on both; "9 problems" ✓; "Drafter refused to invent 4 ungrounded rules" ~ (it left four designs' +rules unwritten). + +**Example 03, code-review gate.** Parties: Author `A`, CI gate `G`, **Maintainer `M`** (not "Reviewer +R"). Two rival encodings. `gated` ("maintainers wait for CI": A′ = G∧M, G′ = A, M′ = A∧G) → **triadic +Φ = 1.000, core {A,M}, G BYPASSED**, naive prediction failed. `diff_only` ("approve on the diff alone": +M′ = A) → **triadic Φ = 2.000, core {A,G,M}, G ENRICHER**, prediction failed. The Doc's row ("G′ = A ∧ R +yields Triadic BOTTLENECK Φ = 2.0, core {A,G,R}; rubber-stamp excludes R from major complex (#39 +HUMAN_COMMIT_READ)") is ✗ throughout: no encoding has that rule, no result is BOTTLENECK, and the +rubber-stamp result belongs to the lab's `hitl_rubber_stamp` study, not to this example. +`[DRAFTED by Claude]`: "Required review gate (`gated`): when maintainers wait for CI the gate is +bypassed — the author and maintainer form the core at Φ = 1.0 and the gate sits outside it; approving +on the diff alone (`diff_only`) brings the gate into a three-party core at Φ = 2.0 as an enricher. +Both naive predictions failed; the field-mock M4 reads the same (BYPASSED)." + +**Example 04, dealer vs clearinghouse.** Parties `U` (upstream), `I` (intermediary), `V` (downstream). +`dealer` (U′ = V, I′ = U, V′ = I, a ban on direct sales) → triadic 2.000 {U,I,V} BOTTLENECK, +**contingent** (opening the bypass loses Φ = 2.000; core → {U,V}). `clearinghouse` (I′ = U∧V) → +triadic 2.000 {U,I,V} BOTTLENECK, **intrinsic** (bypass loses 0.000; core → {U,I}). The Doc's row +("Sequential dealer inventory relay factors (Dyadic, Φ = 0.0); simultaneous net clearinghouse binds +{B,M,S} (Triadic, Φ = 2.0)") is ✗: both are triadic; the contrast is whether the intermediary's place +survives a direct tie. That contrast is a better story for the call than dyadic-vs-triadic; use it. + +**Logged AI runs.** Drafter on 01: 2 encodings, admissible, identical to A and B, both predictions +held ✓. Adversary on 01: 4 encodings admissible; `driver_pool` predicted triadic {D1,D2,P,R} → computed +**dyadic, {P,R}**, FAILED ✓; `direct_contact_substitute` predicted dyadic → computed **triadic {D,R}, +BYPASSED, Φ = 0.830**, FAILED ✓. The Doc's narrative of both failures is right; only the file names and +the 1.198 are wrong. Insurance drafter: REJECTED, 9 problems ✓. + +### C3. "256 structures", regimes, and the lever matrix + +| Doc says | Status | Fact | Source | +|---|---|---|---| +| "Running PyPhi across all 256 possible three-party mediated coordination structures proves that joint influence and systemic wholeness are orthogonal … four distinct coordination regimes" (§2) | ✗ | The 2 × 2 (wholeness × joint determination) comes from the **Peirce probes**: 89 four-node one-input wirings (Φ > 0 in 8, all pure cycles) and 30 two-input forms (5 jointly determined inside a whole, 11 jointly determined at Φ = 0, 1 neither). The 256-form census is a different object (next row). | `thinkers-peirce-h1-irreducibility`, `thinkers-peirce-jd-full` (both PASS today) | +| "Exhaustive enumeration of all 256 three-party Boolean structures partitions the space into 56 dyadic structures, 132 cycle-supported triads, and 68 mediated triads" (A.3 item 2; App. C item 2) | ∅ | No file in either repo contains 56, 132 or "cycle-supported". The census is **4 worker rules × 16 mediator rules × 4 counterpart rules = 256 strict-mediation forms; 24 triadic (9.4%), 232 dyadic; 24/160 where the mediator reads both parties, 0/96 otherwise**. "68" matches `BOTTLENECK 68 (13.6%)` in the coarse regime count over **500 random forms**, a different universe. | `proto_census.txt`; `proto_mediator_in_core.txt` §3 | +| "correlation and mutual-information proxies miss over a third (96 of 256) of the irreducible triads that exact PyPhi catches (Appendices A–B)" (§4) | ∅ | No such figure. The proxy result is rank-AUC 0.563 (ΦID Φᵣ) and 0.629 (Φ_WMS) over the 256 census forms; "96" is the number of census forms whose mediator does not read both parties (0/96 triadic). | `reproduce.json` `proxies`, `census` | +| Regime frequencies | — | Over 500 random mediated forms (seed 7): coarse dyadic 44.4%, BYPASSED 18.8%, BOTTLENECK 13.6%, ENRICHER 23.2%; refined (capture split out) CAPTURE 28.2%, BOTTLENECK 2.6%, ENRICHER 6.0%. The Doc does not cite these; they are the sourced numbers to use if you want a population statement. | `proto_enricher_regime.txt` §1 | +| Table 4 lever matrix: "Switch Convey → Joint Commit: Φ 0.0 → 2.0" | ✓ | B→A flip. | | +| Table 4: "Pool Replaceable Side … locks in {M,B} (Φ = 1.0)" | ✗ | System Φ = 0.000; {M,B} is the major complex. | C2 | +| Table 4: "Establish Direct Tie to B … core {A,B} (Φ = 1.198, BYPASSED)" | ✗ | Φ = 0.830. | C2 | +| Table 4: "Block Counterpart Exit … across all 60/60 random trials" | ✓ | | | +| Table 4: "Multi-Home Across Mediators (O₅ …): Factors individual mediator out of core" | ✗ | See `rival_platforms` (C2). | | +| Table 4: "Form Worker Coalition / Union: Restores collective input parity" | ~ | Lab `worker-union-scale` (V2 #31) verdict UNION_MIRRORS_COAL: a union scales like a counterpart coalition. Cite it; the Doc's cell cites nothing. | `ci/reproduce.json` | +| "studies/strategic_model/ … We will formalize the actor-indexed strategic lever matrix (Table 4)" (A.3) | ~ | Fine as Stage 2 work **if** the path is dropped (it does not exist) and Appendix D stops listing it under `v0.1-stage1`. | | + +`[DRAFTED by Claude]` for §2's sentence: "Running the Peirce probes — 89 one-input wirings and 30 +two-input forms, each cut by PyPhi — shows that joint influence and systemic wholeness come apart in +both directions, which yields four coordination regimes that organizational prose routinely conflates +(Technical Addendum, Section A.1 and Appendix A.2)." + +`[DRAFTED by Claude]` for §4's third bullet: "…and shows, across the 256 strict-mediation forms of the +census, that two popular time-series proxies separate dyadic from triadic structures at rank-AUC +0.563 and 0.629 — barely above chance — while exact PyPhi finds the 24 irreducible forms outright +(Technical Addendum, Appendix A.3)." + +`[DRAFTED by Claude]` for A.3 item 2 / Appendix C item 2: "Exhaustive enumeration of the 256 +strict-mediation three-party forms (4 worker rules × 16 mediator rules × 4 counterpart rules) finds 24 +irreducible and 232 factorable, with a mediator that reads both parties necessary but not sufficient +(24/160 vs 0/96)." + +### C4. Lab studies and Appendix D + +Eighteen lab checks re-run today by name; 17 PASS, `wageman-ti-verdict` FAIL (C7). + +| Doc says | Status | Fact | Source | +|---|---|---|---| +| Peirce: 89 wirings; 66 adicity 3, 12 adicity 4; cause-side ≤ 2; 11 unbranched; 8 of 89 Φ > 0; copy ring Φ = 2.0 | ✓ | Exactly as printed. | `lab_ci_named.txt`; `thinkers/peirce/FINDINGS.md` | +| 30 two-input forms: 5 in a whole, 11 at Φ = 0, 1 no JD; "3-voter majority triad … Φ = 0 with 4 partition ties" | ✓ | | `thinkers-peirce-jd-full`, `thinkers-peirce-jd` | +| "such as a unanimous three-voter majority triad" (A.1) | ✗ wording | The form is `majority_triad` (2 of 3). "Unanimous majority" contradicts itself; unanimity is the AND triad, which is triadic at Φ = 3 in `probe-voting-robustness`. | `ci/reproduce.json` | +| Thompson: pooled Φ = 0, sequential 2.0, reciprocal 2.0, "collapses at its top step" (A.2.3, A.5) | ✓ + omission | Canonical encodings only. The study's verdict is **PARTIAL_ALIGNMENT, alignment 0.429**: "alternate encodings flip the verdict" (pooled all-required → triadic; sequential acyclic hand-off → dyadic). Say so in one clause. | `thompson_verdict_bridge/FINDINGS.md` | +| "Wageman's (1995) hybrid team designs factor cleanly" (A.2.3); WAGEMAN_PREDICTS_VERDICT (App. D) | ✗ | The study tests whether a Wageman-style interdependence index predicts the verdict: AUC 1.000 on the designed panel, and it does **not** predict Φ magnitude (XOR and AND share W at Φ 0.5 vs 2). Nothing about hybrid designs factoring. | `wageman_ti_verdict/FINDINGS.md` | +| CUTS_ACROSS "(4/8 formal vs. shadow diverge)" (App. D) | ✗ | Six forms, **4 of 6 mismatch** H1, alignment 0.333; the words "shadow" and "8" appear nowhere. | `formal_informal_cut/FINDINGS.md` | +| HITL: "rubber-stamping … leaves the human reviewer outside the major complex while the automated loop stays integrated at Φ = 2.0" (A.2.3) | ✓ | Panel row `stamp_posthoc`: whole dyadic, Φ 2, core {AI,S,C} or {S,C}, H out. | `hitl_rubber_stamp/FINDINGS.md` | +| SHARP_CLASS_GRADED_PATH "(R² = 0.992)" (App. D) | ∅ | No R² anywhere in the study. The result: on the diagonal (L,L,L), L = 0 NULL; L = 1 DYADIC Φ 0.390 {W,S}; L = 2 TRIADIC Φ 3.170 {W,S,C}. | `graded_commit_verdict/FINDINGS.md` | +| EXTRA_RESOLUTION_TO_PHI "(3 bits → 5.755 bits)" (App. D) | ∅ | No such figures. The result: with a ternary mediator, Φ on the (1,S,1) sweep runs 1.170 / 0.500 / 2.000 (full form) while the core stays {W,S,C}. | `mixed_radix_mediator/FINDINGS.md` | +| BLINDSPOT_SURVIVES_RADIX "(parity Φ = 2²⁻ⁿ)" (App. D, A.3) | ~ | That study shows balanced commits `S′ = (W+C) mod k` keep a flat Φ ≈ 0.5 band at k = 2, 3, 4. The 2^(2−n) law is `parity_law_n_gt6` and `parity_law_n_gt8` (LAW_HOLDS_NGT6, LAW_HOLDS_NGT8). Attach each figure to its study. | both FINDINGS | +| MARL "rank-AUC 0.485–0.555 across tabular and neural policies" | ✓ | EMERGENT_NULL (tabular Q-learning: 0.555 / 0.485) and NULL_SURVIVES (MLP and linear-FA policies). The study says "not deep MARL"; your "multi-agent reinforcement learning (MARL)" should say "tabular and small-network MARL proxies". | both FINDINGS | +| Imputation 0.944 (MI), 0.806 ring / 0.750 omit / 0.896 copy-W (exact Φ) | ✓ | | `topology_aware_imputer`, `imputer_exact_phi`, `matched_imputer_exact_phi` | +| Parity law to n = 10 | ✓ | LAW_HOLDS_NGT8 at n ∈ {8, 9, 10}. | `parity_law_n_gt8` | +| 3.169925 = 2 log₂ 3 (B.2) | ✓ | | `pyphi-iit4-mv-m2-smoke` PASS | +| TWO_CONDITION_STATE_DEPENDENT | ✓ | Study `ternary_pivotality` (V2 #1). | | +| Appendix D study labels | ✗ ×12 | `ternary_conjunctive_mediator`→`ternary_pivotality`; `graded_commitment_sweep`→`graded_commit_verdict`; `mixed_radix_asymmetric`→`mixed_radix_mediator`; `multivalued_xor_blindspot`→`parity_radix_blindspot`; `hitl_oversight`→`hitl_rubber_stamp`; `ai_labor_displacement`→`ai_fidelity_displace`; `marl_emergent_triads`→`marl_emergent_learn`; `dual_principals`→`dual_principal_conflict`; `union_vs_coalition`→`worker_union_scale`; `multihoming_bypass`→`rival_platforms`; `Substitute_degradation`→`gig_substitution`; `prior_matched_vs_mismatched`→`matched_imputer_exact_phi`. | `ls org_frontier/studies`; check names in `ci/reproduce.json` | +| "CI checks #001–#082" for the thinker catalog | ~ | 82 checks named `thinkers--…`, 16 thinkers; the manifest has no numeric IDs. | `ci/reproduce.json` | +| Agenda IDs V2 #1–#4, #24, #29, #31, #32, #35, #37, #39, #40, #41, #43, #44, #46; V3 #1, #5, #10, #15; V4 #4, #5, #9 | ✓ | Each matches the question text in `org_frontier/RESEARCH_AGENDA_50_V2.md`, `org_frontier/RESEARCH_AGENDA_V3.md` and `org_frontier/RESEARCH_AGENDA_V4.md`. | | +| "V3 #6" in the AI-workflows row | ✗ | V3 #6 is "k > 2 local triads sharing a single mediator". No MARL/AI study answers it; `marl_deep_replicate` cites no agenda number. Drop it. | `RESEARCH_AGENDA_V3.md` l. 56 | +| "probes 98, 107" | ✓ | PROBES.md rows 98 (agent-based difficulty, refuted, AUC 0.567) and 107 (partner-modeling agents, refuted, 0.541). | `org_frontier/probes/PROBES.md` | +| `foundations/phiid_vs_phi`: ρ 0.283 / AUC 0.669; ρ 0.124 / AUC 0.560 | ✓ | | its FINDINGS l. 32–33 | +| Proxies rank-AUC 0.563 / 0.629 | ✓ | Prototype check `proxies`; lab `proxy_bridge/FINDINGS.md`. Also in the lab essay the best-threshold accuracy for Φ_WMS is 0.778, so "near chance" is true of rank-AUC only. | | + +### C5. Counts + +| Doc | Status | Count today | +|---|---|---| +| 542 automated CI checks | ✓ | 542 before this branch's addition (543 with `irreducibility-pipeline-reproduce`). | +| 127 studies in `org_frontier/studies/` | ✓ | 127 directories. | +| 135 probes | ✓ | 135 `probe_*.py` files. | +| 9 `foundations/` studies | ✓ | 9 study directories plus `paper/`. | +| 82 probes across 16 thinkers | ✓ | 82 `thinkers-*` checks; 16 thinker directories. | +| 17 reference results; 19 tests | ✓ | 17/17; 19 passed. | +| 101/101 flips; 22/101 bracketed; 60/60 | ✓ | | +| Part I 1,890 words | ✓ | | + +### C6. The prototype is now inside the lab + +Per your decision — "people fork algorithmacy lab and that should give them all the access" — the +prototype was copied into this branch at `irreducibility-pipeline/` with its internal layout intact +(`irreducibility/`, `encode/`, `examples/`, `studies/`, `protocol/`, `tests/`, `reproduce.py`, +`reproduce.json`, `README.md`, `APPENDIX.md`, `CITATION.cff`, `LICENSE`, `pyproject.toml`, +`requirements.txt`); `.git`, caches and a stray `pyphi.log` were left out. Its own `reproduce.py` +resolves paths from its file location, so `python irreducibility-pipeline/reproduce.py` runs from +the lab root, and a lab check `irreducibility-pipeline-reproduce` (slow, 900 s) is registered in +`ci/reproduce.json` expecting its "17/17 checks passed." line. The lab README's programs list gains +one line pointing at it. + +What this changes in the Doc: every "`irreducibility-pipeline` (tag `v0.1-stage1`)" becomes "the +`irreducibility-pipeline/` directory of `algorithmacy-lab`"; the tag is re-cut on the lab commit that +lands this (suggest `orgsci-stage1`) when you push; the one URL +`https://github.com/rogerSuperBuilderAlpha/algorithmacy-lab` covers both artifacts; and A.2's +"reproduces … via a single command" can become "`python irreducibility-pipeline/reproduce.py` from a +clone of the lab". Nothing is pushed; the branch is `cursor/orgsci-ai-stage1-proposal-ec39` in the +worktree `~/iit-playground/wt-orgsci-ai`, and `REPO_LAYOUT.md` wants a PR into `contrib`. + +### C7. Repo health found on the way + +- **`wageman-ti-verdict` fails on this branch.** The manifest expects "ρ(W,Φ)=0.883"; the script now + prints **0.867** (`results/summary.json` would change from 0.8833 to 0.8667). Every other number in + the check reproduces (AUC 1.000, acc 1.000 at W ≥ 0.472, H3 refuted). Either the manifest or the script + drifted after the last full run. I restored the regenerated `results/summary.json` rather than commit + it; the drift needs a maintainer's decision. The Doc cites WAGEMAN_PREDICTS_VERDICT (Appendix D), so + a reviewer running `ci/reproduce.py` in full would hit this. +- The Peirce probe runs rewrite their `results/*.json` with new timings only; restored. +- `third_party/pyphi_iit4_mv/README.md` and the lab README still describe the upstream PyPhi 2.0 state + as of 25 October; fine for now. + +--- + +## D. Citation audit + +Every entry checked against Crossref (`crossref/*.json`), with the publisher's page, Semantic Scholar +or OpenAlex where Crossref lacked the record, and against full text where it was on disk. + +| # | Reference as in the Doc | Status | Finding | +|---|---|---|---| +| 1 | Albantakis et al. (2023) … "phenomenal existence in physical **systems**", *PLoS Comput Biol* 19(10) e1011465 | ✗ title | "…in physical **terms**". DOI 10.1371/journal.pcbi.1011465. | +| 2 | Anthony, Bechky & Fayard (2023) *Org Sci* 34(5) 1672–1694 | ✓ | 10.1287/orsc.2022.1651 | +| 3 | Burch (1991) Texas Tech UP | ✓ | Lubbock, TX. | +| 4 | Burt (1992) Harvard UP | ✓ | | +| 5 | **Cameron (2024). "The making of crystal-clear calls: Algorithmic management and the standardization of service work." *ASQ* 69(1), 1–42** | ✗ fabricated | No such article. The ASQ 2024 article is Cameron, L. D. (2024). The making of the "good bad" job: How algorithmic management manufactures consent through constant and confined choices. *ASQ*, 69(2), 458–514. DOI 10.1177/00018392241236163. (Copy in `~/Downloads`.) Its abstract — ride-hail drivers "navigate being managed by an algorithm" through "constant and confined choices" — supports your §1 and §4 uses. | +| 6 | Caplow (1956) *ASR* 21(4) 489–493 | ✓ | 10.2307/2088718 | +| 7 | Coleman (1988) *AJS* 94(Suppl.) S95–S120 | ✓ | 10.1086/228943 | +| 8 | Curchod et al. (2020) *ASQ* 65(3) 644–676 | ✓ | 10.1177/0001839219867024 | +| 9 | Daft & Lewin (1990) *Org Sci* 1(1) 1–9 | ✓ | 10.1287/orsc.1.1.1 | +| 10 | Gartenberg, Hasan, Murray & Pierce (2026) *Org Sci* 37(3) 795–812 | ✓ | 10.1287/orsc.2026.ed.v37.n3; matches the CFP's own list. | +| 11 | Girotra, Terwiesch & Ulrich (2010) *Mgmt Sci* 56(4) 591–605 | ✓ | 10.1287/mnsc.1090.1144 | +| 12 | Granovetter (1973) *AJS* 78(6) 1360–1380 | ✓ | 10.1086/225469 | +| 13 | **Hereth Correia & Pöschel (2004)** "The power of Peircean algebraic logic." In *Conceptual Structures at Work: ICCS 2004* (LNCS 3127, pp. 337–350) | ✗ venue | The paper is in Eklund, P. (Ed.), *Concept Lattices: Second International Conference on Formal Concept Analysis, ICFCA 2004*, LNAI **2961**, pp. 337–**351**. DOI 10.1007/978-3-540-24651-0_29. The 2006 paper's own reference [HCP04] says the same. | +| 14 | Hereth Correia & Pöschel (2006) "The teridentity and Peircean algebraic logic." *ICCS 2006*, LNAI 4068, pp. 229–246 | ✓ | 10.1007/11787181_17. **Lemma 1** (any t-connected set of places in a PAL∖{id₃} term over unary and binary relations has |X| ≤ 2) and **Theorem 2** (|A| ≥ 2 ⇒ ⟨Σ⟩PAL∖{id₃} ⊊ ⟨Σ⟩PAL) are as the Doc states. | +| 15 | Kellogg, Valentine & Christin (2020) *AMA* 14(1) 366–410 | ✓ | 10.5465/annals.2018.0174 | +| 16 | Koshkin (2024) "Logical reduction of relations…" *Logic J. IGPL* 32(5) 779–**813** | ~ pages | 779–**809**; online June 2023, print September 2024. DOI 10.1093/jigpal/jzad010. | +| 17 | **Koshkin (2025). "Logical reduction of finite relations and granular computing." *IJAR* 186, 109523** | ✗ fabricated record | *IJAR* 186, 109523 is Obiedkov & Sertkaya, "PAC learning of concept inclusions…". The paper whose content Appendix A.1 describes (Δ₃ from binary equality; reduction to binaries on finite |D| ≥ 3; ¬I₃ pp-irreducible on Boolean domains, Theorems 2–4; bond algebra, Theorem 6) is Koshkin, S. (2024). Functional completeness and primitive positive decomposition of relations on finite domains. *Logic Journal of the IGPL*, advance article, jzae077. DOI 10.1093/jigpal/jzae077; arXiv 2606.19492. **Theorem numbers verified against arXiv v1**: Thm 2 (relative reduction; n ≥ 4 reduces to ternary), Thm 3 (cofinite n-ary relations, 3 ≤ n ≤ |D|, reduce to binary), Thm 4 (¬I₃ non-bijunctive, irreducible on Boolean domains), Thm 6 (I₃ bond-irreducible on any domain with ≥ 2 elements). The published version's numbering is unchecked. | +| 18 | March (1991) *Org Sci* 2(1) 71–87 | ✓ | 10.1287/orsc.2.1.71 | +| 19 | Mayner et al. (2018) *PLoS Comput Biol* 14(7) e1006343 | ✓ | 10.1371/journal.pcbi.1006343 | +| 20 | Mediano et al. (2025) "Toward an **extended** taxonomy…" *PNAS* 122(39) e2423297122 | ✗ title | "Toward a **unified** taxonomy of information dynamics via Integrated Information Decomposition." DOI 10.1073/pnas.2423297122. | +| 21 | Obstfeld (2005) *ASQ* 50(1) 100–130 | ✓ | 10.2189/asqu.2005.50.1.100 | +| 22 | Orlikowski & Scott (2008) *AMA* 2(1) 433–474 | ✓ | 10.5465/19416520802211644 | +| 23 | Ostrom (1990) CUP | ✓ | 10.1017/cbo9780511807763 | +| 24 | Peirce (1933) "The logic of relatives" (1897), CP 3.456–3.552 | ✓ | Standard locator for the 1897 *Monist* paper. | +| 25 | Quine (1954) *JSL* 19(3) 180–182 | ✓ | 10.2307/2268616. Read in full: the Kuratowski construction {{x},{x,y}} and "a universe closed under pairing" are on p. 180 as the Doc says. | +| 26 | Rahman (2021) *ASQ* 66(4) 945–988 | ✓ | 10.1177/00018392211010118 | +| 27 | Rudin (2019) *Nat Mach Intell* 1(5) 206–215 | ✓ record | 10.1038/s42256-019-0048-x. Attribution questioned in E6. | +| 28 | Simmel (1950) "Quantitative aspects of the group (1902)." In Wolff, pp. 87–177 | ✓ pages, ~ date | Part Two of Wolff's edition runs from p. 87 to the end of "Maximum and Minimum Sizes" (p. 174 ff.; Part Three opens at 181). Wolff translates *Soziologie* (1908), ch. 2; the 1902 *AJS* articles are the earlier English version — say 1908 or 1902/1908. The dyad passage you paraphrase is on **p. 123**: "the secession of either would destroy the whole … As soon, however, as there is a sociation of three, a group continues to exist even in case one of the members drops out." | +| 29 | Thompson (1967) McGraw-Hill | ✓ | | +| 30 | Wageman (1995) *ASQ* 40(1) 145–180 | ✓ | 10.2307/2393703 | +| 31 | Williams & Beer (2010) arXiv:1004.2515 | ✓ | Submitted 14 April 2010. | +| 32 | Mediano/Williams-Beer as PID/ΦID sources | ✓ | PID (Williams & Beer); ΦID (Mediano et al.). | + +**Cited in the text, absent from the list** — add, verified: + +- Stark, D., & Pais, I. (2020). Algorithmic management in the platform economy. *Sociologica*, 14(3), + 47–72. https://doi.org/10.6092/issn.1971-8853/12221 +- Rosenblat, A., & Stark, L. (2016). Algorithmic labor and information asymmetries: A case study of + Uber's drivers. *International Journal of Communication*, 10, 3758–3784. (Running head of the PDF.) +- Tononi, G. (2004). An information integration theory of consciousness. *BMC Neuroscience*, 5, 42. + https://doi.org/10.1186/1471-2202-5-42 + +**Corrected entries** `[DRAFTED by Claude]`, in your list's format: + +- Albantakis, L., … & Tononi, G. (2023). Integrated information theory (IIT) 4.0: Formulating the + properties of phenomenal existence in physical terms. *PLoS Computational Biology*, 19(10), e1011465. +- Cameron, L. D. (2024). The making of the "good bad" job: How algorithmic management manufactures + consent through constant and confined choices. *Administrative Science Quarterly*, 69(2), 458–514. +- Hereth Correia, J., & Pöschel, R. (2004). The power of Peircean algebraic logic (PAL). In P. Eklund + (Ed.), *Concept Lattices: Second International Conference on Formal Concept Analysis, ICFCA 2004* + (LNAI Vol. 2961, pp. 337–351). Springer. +- Koshkin, S. (2024a). Logical reduction of relations: From relational databases to Peirce's reduction + thesis. *Logic Journal of the IGPL*, 32(5), 779–809. +- Koshkin, S. (2024b). Functional completeness and primitive positive decomposition of relations on + finite domains. *Logic Journal of the IGPL*, advance article jzae077. https://doi.org/10.1093/jigpal/jzae077 +- Mediano, P. A. M., Rosas, F. E., Luppi, A. I., Carhart-Harris, R. L., Bor, D., Seth, A. K., & + Barrett, A. B. (2025). Toward a unified taxonomy of information dynamics via Integrated Information + Decomposition. *Proceedings of the National Academy of Sciences*, 122(39), e2423297122. + +and in the text, "(Koshkin, 2024, 2025)" → "(Koshkin, 2024a, 2024b)"; "Koshkin, 2025, Theorems 2–4" +→ "Koshkin, 2024b, Theorems 2–4"; "Koshkin, 2025, Theorem 6" → "Koshkin, 2024b, Theorem 6". + +--- + +## E. Attribution and the debates as portrayed + +Depth of reading, so you can weigh each item. **Read in full:** Quine (1954); Hereth Correia & +Pöschel (2004, 2006); Koshkin (2024b, arXiv v1); Rosenblat & Stark (first page); Wolff's Simmel (the +table of contents and pp. 118–124 around the dyad passage). **Abstract only:** Kellogg et al. (2020); +Stark & Pais (2020); Cameron (2024); Rahman (2021); Rudin (2019); Vallas & Schor (2020); Schor et al. +(2020); Einav, Farronato & Levin (2016); Hall & Krueger (2018); Wood et al. (2019); Victor & Blackburn +(1987); Puranam, Raveendran & Knudsen (2012); Raveendran, Silvestri & Gulati (2020); Parasuraman & +Riley (1997); Green & Chen (2019); Lebovitz, Lifshitz-Assaf & Levina (2022); Koshkin (2024a). +**Database record only, not read:** Skitka, Mosier & Burdick (1999); Sundararajan (2016); every other +entry in Part D that is marked ✓ on its record. Where a proposal below rests on an abstract, read the +paper before the sentence goes into the Doc. + +**E1. The "rival camp" has no citation (§1).** "One camp sees totalizing triads that fuse workers, +clients, and software into an indivisible whole (Kellogg et al., 2020; Stark & Pais, 2020); a rival +camp sees high-speed market relays unbundling work into arms-length dyads." The second camp is real +and nameable. Einav, Farronato and Levin (2016, *Annual Review of Economics* 8, 615–635, +10.1146/annurev-economics-080315-015334) "view the primary function of these markets as making it easy +for buyers to find sellers and engage in convenient, trustworthy transactions" — the platform as +matching market. Hall and Krueger (2018, *ILR Review* 71(3), 705–732, 10.1177/0019793917717222) model +Uber drivers as flexible independent suppliers. Sundararajan (2016, *The Sharing Economy*, MIT Press) +calls it crowd-based capitalism. Vallas and Schor's review (2020, *Annual Review of Sociology* 46, +273–294, 10.1146/annurev-soc-121919-054857) names this image "entrepreneurial incubators" and sets it +against "digital cages", which is your first camp. `[DRAFTED by Claude]`: "…a rival camp sees +matching markets that relay buyers to sellers and leave the work itself to arm's-length contractors +(Einav, Farronato, & Levin, 2016; Hall & Krueger, 2018; Sundararajan, 2016) — the 'entrepreneurial +incubator' image in Vallas and Schor's (2020) review." + +**E2. Kellogg et al. do not describe a triad (§1).** Their abstract frames algorithmic control as +Edwards's "contested terrain" between employers who implement technologies and workers who resist, +through six mechanisms (restricting, recommending, recording, rating, replacing, rewarding). That is a +labor-process, employer–worker frame; customers enter only as raters. Stark and Pais (2020) do say what +you attribute: "In a triangular geometry, platform owners co-opt the behavior of providers and users, +enrolling them in the practices of algorithmic management without managerial authority having been +delegated to them." Keep Stark & Pais for the triad; cite Kellogg et al. for control, not for fusion. +(Stark and Pais also give you the contrastive line "actors in markets contract, hierarchies command, +and networks collaborate, platforms co-opt" — it may be worth quoting.) + +**E3. "Since Thompson (1967), scholars have treated joint influence and systemic wholeness as if they +were the same thing … overturns a sixty-year assumption" (§2).** The field has re-cut interdependence +repeatedly. Victor and Blackburn (1987, *AMR* 12(3), 486–498, 10.2307/258515) argued that Thompson's +conceptualization "fail[s] to satisfy basic requirements for empirical or practical investigations" +and rebuilt it on Kelley–Thibaut outcome structures. Wageman (1995) split task from outcome +interdependence. Puranam, Raveendran and Knudsen (2012, *AMR* 37(3), 419–440, 10.5465/amr.2010.0535) +introduced epistemic interdependence "to sharply distinguish interdependence between tasks and between +agents." Raveendran, Silvestri and Gulati (2020, *AMA* 14(2), 828–868, 10.5465/annals.2018.0015) sort +it into task, goal and knowledge interdependence. None of the four abstracts describes a partition +test of whether the coupled unit is decomposable, which is your point — I did not read the four papers +in full, so check before asserting it — but "treated as the same thing" is not what happened. `[DRAFTED by Claude]`: "Interdependence typologies since Thompson (1967) classify how tasks, +outcomes and knowledge couple (Victor & Blackburn, 1987; Wageman, 1995; Puranam, Raveendran, & +Knudsen, 2012; Raveendran, Silvestri, & Gulati, 2020); none supplies a test of whether the coupled +unit can be cut without loss. Running PyPhi over the Peirce probes shows that joint influence and +systemic wholeness are separate dimensions…" and drop "overturns a sixty-year assumption". + +**E4. "After a decade of fieldwork … scholars remain deadlocked" (§1).** No source says deadlock. Two +reviews document the disagreement you need: Vallas and Schor (2020) find four competing metaphors +(incubator, digital cage, accelerant of precarity, chameleon), each with limitations; Schor et al. +(2020, *Theory and Society* 49, 833–861, 10.1007/s11186-020-09408-y) find that both dominant +approaches — precarity and algorithmic control — "predict that workers will have relatively common +experiences," and the data show heterogeneity instead. `[DRAFTED by Claude]`: "…scholars still hold +competing images of what the platform is (Vallas & Schor, 2020; Schor et al., 2020): when an algorithm +mediates…" + +**E5. Simmel (§1, A.1).** Accurate. Wolff p. 123 carries both halves of your paraphrase (the dyad dies +with either member's secession; a group of three "continues to exist even in case one of the members +drops out"), and "super-individual" is his term on the same page. Add the page: (Simmel, 1950: 123). +"Play partners against each other" is *tertius gaudens* and *divide et impera*, Wolff pp. 154–169. + +**E6. Rudin (2019) as the source of the "post-hoc verification trap" / "Potemkin oversight" (A.2.3, +A.5).** Rudin's argument is that post-hoc explanations of black-box models are unreliable and that +high-stakes decisions should use inherently interpretable models. It says nothing about a human +reviewer rubber-stamping a system's recommendation. That phenomenon is automation bias: Parasuraman +and Riley (1997, *Human Factors* 39(2), 230–253, 10.1518/001872097778543886) and Skitka, Mosier and +Burdick (1999, *IJHCS* 51(5), 991–1006, 10.1006/ijhc.1999.0252) name it; Green and Chen (2019, *PACM +HCI* 3 CSCW, 1–24, 10.1145/3359152) study "algorithm-in-the-loop" decisions; and in this journal +Lebovitz, Lifshitz-Assaf and Levina (2022, *Org Sci* 33(1), 126–148, 10.1287/orsc.2021.1549) watched +radiologists either disengage from or defer to opaque AI tools. `[DRAFTED by Claude]`: "…formalizing +the rubber-stamp pattern that the automation-bias literature documents (Parasuraman & Riley, 1997; +Skitka, Mosier, & Burdick, 1999) and that Lebovitz, Lifshitz-Assaf, and Levina (2022) observed among +radiologists facing opaque AI." Keep Rudin only where the claim is about explanations of black boxes. + +**E7. The formal-logic claims (A.1, Appendix A.1).** Verified against full text: Quine's pairing +translation (p. 180); Hereth Correia & Pöschel 2006 Lemma 1 and Theorem 2; Koshkin's Theorems 2, 3, 4 +and 6 (arXiv version). The 2004 paper's Theorem 13 states the finite-domain version of the 2006 +result with the proof deferred, which is why "introduced with a restricted proof in Burch, 1991" and +the 2004/2006 pairing are right. Two wording points: "Peircean Algebraic Logic (introduced with a +restricted proof in Burch, 1991)" — Burch introduced PAL and proved the thesis under a restriction on +juxtaposition; the 2006 paper removes the restriction and reproves it; say that. And "Koshkin, 2024 for +infinite domains and projoins" — the 2024a abstract speaks of "natural joins", "ternarity" and the +finite/infinite split; I could not confirm the word "projoin" without the full text. + +**E8. "A frontier LLM … got every nontrivial variation backward" (§3); "standalone LLMs fail badly" +(§3); "LLMs hallucinate ungrounded rules and misguess multi-party partition math" (A.2.1).** The +evidence is one model, one stipulated case, two adversary predictions (both wrong), plus one drafter +run that matched the human encodings and one that declined to invent rules. That supports "the +model's own predictions about what its readings would compute were wrong both times"; it does not +support "every nontrivial variation" or a general failure claim. `[DRAFTED by Claude]`: "Given only +the case prose, the model found both design variants a human had encoded — and predicted both +verdicts backward: it expected driver pooling to stay a three-party triad (PyPhi: the drivers factor +out) and off-app repeat rides to collapse into a dyad (PyPhi: a bypass core of driver and rider)." + +**E9. PID / ΦID (A.3, App. A.3).** Correctly attributed. One nuance: Φᵣ is the ΦID-based revised +integrated information; the Doc's gloss "corrects whole-minus-sum Φ(WMS) for double-counting +redundancy" matches Mediano et al.'s framing. + +**E10. Daft & Lewin, March, Girotra et al., Gartenberg et al.** All as the CFP cites them. "Thirty-six +years later" (A.1) is right for 2026. + +--- + +## F. Prioritized fix list + +**Must fix before 1 November** +1. Replace the Table 3 outside-option rows and A.2.2's third bullet with the prototype's O1–O5 (C2). +2. Replace Table 5's Example 02, 03, 04 rows and A.2.3's "four worked cases" clause with the computed results (C2). +3. Correct Φ = 1.198 → 0.830 and Φ = 1.000 → "Φ = 0 (dyadic); core {P,R}" in Table 3, Table 4, A.2.2 and Part I §3 (C2, C3). +4. Remove "56 / 132 / 68" and "96 of 256"; use the census (24/256, 24/160, 0/96) and the Peirce probes (C3). +5. Fix the file paths in C1 and the twelve study labels in C4; drop `strategic_model` from `v0.1-stage1`; drop "V3 #6". +6. Replace the four unsourced Appendix D figures (R², 5.755 bits, 4/8, Wageman hybrid) with the studies' own numbers (C4). +7. Fix the reference list: Cameron, Koshkin 2025→2024b, HC&P 2004 venue, Albantakis and Mediano titles, Koshkin 2024 pages; add Stark & Pais, Rosenblat & Stark, Tononi (D). +8. Point every prototype reference at `irreducibility-pipeline/` inside the lab and name the lab tag (C6); then push the branch, open the PR into `contrib`, and cut the tag. +9. Replace the "[Anonymized …]" line with the author line. +10. Fix the workshop date in §4 and in this folder's README (27–28 February 2027, tentative, venue unstated). + +**Should fix** +11. §1: cite the rival camp (E1); move Kellogg et al. to the control claim (E2); replace "deadlocked" (E4). +12. §2: replace the "sixty-year assumption" sentence (E3); fix the "256 … proves … four regimes" sentence (C3). +13. §3: state the AI step at its actual size (B); soften "every nontrivial variation" (E8); decide "literally" (B). +14. A.2.3 / A.5: re-attribute the rubber-stamp trap (E6); add the Thompson caveat (C4). +15. A.1: "unanimous three-voter majority" → "three-voter majority"; "Broadcast Cascades" (§2) vs "Cyclic One-Input Relay" (Table 1) — one name. +16. Step 6 / App. B.1: `contingency.py` is the bypass test; outside options are the O-designs and `enricher_regime` (C1). +17. "proves" ×6 → "shows" / "computes"; "collapses a decade-long debate" → "turns … into one testable rule"; "pre-registered" ×3 → "fixed before computing" (B). +18. §5: one sentence of execution risks; one clause on ethics (A). +19. Add captions "Table 1 … Table 6" where the text cites them; fix "Section A.2.2 and Table 5" (Table 5 is in Appendix B). + +**Nice** +20. Compute the harness on itself and report it (B). +21. Trim the algorithmacy frame in §2's regime glosses; keep §1 and §5 (B). +22. One "Potemkin", or none (B). +23. "tabular and small-network MARL proxies" (C4); "Submission Tracks" → "Contribution types" (A). +24. Fix `wageman-ti-verdict`'s manifest or script so the full lab CI is green before reviewers run it (C7). + +--- + +## Appendix: how each number was produced + +``` +# prototype (from its own root; venv-4.0 carries the PyPhi pin) +python reproduce.py # 17/17, 2 m 17 s +python -m pytest -q tests # 19 passed +python -m irreducibility.analyze examples/01_gig_dispatch/encodings.json +python -m irreducibility.analyze examples/01_gig_dispatch/ai_draft_plus_adversary.json +python -m irreducibility.analyze examples/02_insurance_claim/encodings.json +python -m irreducibility.analyze examples/03_code_review_gate/encodings.json +python -m irreducibility.analyze examples/04_dealer_vs_clearinghouse/encodings.json +python -m studies.census; python -m studies.mediator_in_core; python -m studies.enricher_regime +python -m irreducibility.encode_check examples/01_gig_dispatch/ai_draft.json # ADMISSIBLE 2 +python -m irreducibility.encode_check examples/01_gig_dispatch/ai_draft_plus_adversary.json # ADMISSIBLE 4 +python -m irreducibility.encode_check examples/02_insurance_claim/ai_draft.json # REJECTED 9 + +# lab (from the lab root) +python ci/reproduce.py thinkers-peirce-h1-irreducibility thinkers-peirce-jd thinkers-peirce-jd-full \ + hitl-rubber-stamp graded-commit-verdict mixed-radix-mediator parity-radix-blindspot formal-informal-cut \ + wageman-ti-verdict thompson-verdict-bridge imputer-exact-phi topology-aware-imputer \ + matched-imputer-exact-phi marl-emergent-learn marl-deep-replicate pyphi-iit4-mv-m2-smoke \ + parity-law-n-gt8 ternary-pivotality # 17 PASS, wageman-ti-verdict FAIL +python ci/reproduce.py irreducibility-pipeline-reproduce # the new check + +# citations +curl -s -G https://api.crossref.org/works --data-urlencode "query.bibliographic=" --data-urlencode rows=2 +``` From 60fae8ae5129ffb6d665fec5c9b55a6a78c1d8d6 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 27 Oct 2026 14:47:00 +0000 Subject: [PATCH 2/3] docs: land the reviewed Org Sci Stage 1 text and the QR deck MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the prospectus with the v7 export (review items 0.1–0.11, F.1–F.19, F.23–F.24), add Do Platforms Reduce to Pairs, and set the workshop date to 27–28 February 2027 (tentative). Co-authored-by: Roger Hunt --- .../orgsci_ai_frontiers_methods/README.md | 8 +- .../orgsci_ai_frontiers_methods/cfp/README.md | 2 +- ...o-Platforms-Reduce-to-Pairs-IIT-PyPhi.pptx | Bin 0 -> 554655 bytes .../proposals/orgsci_ai_2026/README.md | 62 ++- .../gdoc_1fhM_v6_story_plus_addendum.md | 355 ++++++++++-------- 5 files changed, 230 insertions(+), 197 deletions(-) create mode 100644 submissions/proposals/orgsci_ai_2026/Do-Platforms-Reduce-to-Pairs-IIT-PyPhi.pptx diff --git a/submissions/orgsci_ai_frontiers_methods/README.md b/submissions/orgsci_ai_frontiers_methods/README.md index 8cc2b377a..0f192ca23 100644 --- a/submissions/orgsci_ai_frontiers_methods/README.md +++ b/submissions/orgsci_ai_frontiers_methods/README.md @@ -4,15 +4,15 @@ **Current version:** the up-to-date proposal is the author's Google Doc: . The Markdown files here are Claude's v3 draft and the review against that doc; where they differ, the Google Doc governs. -**Status:** v3 drafted 26 Oct 2026 and not yet submitted. It was planned against the CFP PDF only, with Fable planning the writing. The proposal (1,984 words) presents the AI + PyPhi pipeline that tests a coordinative structure for irreducibility, and the strategic model as Stage 2. The submission repository `irreducibility-pipeline` is built and committed locally at `~/iit-playground/irreducibility-pipeline` (tag `v0.1-stage1`; 19 tests and 17 reproduce checks pass in a fresh venv) and is not yet pushed to GitHub. v1 and v2 are retired. **Due 1 Nov 2026.** +**Status:** v3 drafted 26 Oct 2026. The reviewed Stage 1 export (v7) and the current deck are in [`../proposals/orgsci_ai_2026/`](../proposals/orgsci_ai_2026/). The prototype lives in this repository at [`../../irreducibility-pipeline/`](../../irreducibility-pipeline/). v1 and v2 are retired. **Due 1 Nov 2026.** -**The call:** a special issue that develops AI-enabled research infrastructure, with a workshop at Duke on 19–20 Feb 2027. Digest: [`cfp/README.md`](cfp/README.md). +**The call:** a special issue that develops AI-enabled research infrastructure. The development workshop is **27–28 February 2027 (tentative)**. Digest: [`cfp/README.md`](cfp/README.md). | Milestone | Date (from the editors) | |---|---| | Proposal, technical appendix and repository | **1 Nov 2026** | -| Development workshop | 19–20 Feb 2027 (date may change) | -| Final papers (2,500–4,500 words) | Summer 2027 | +| Development workshop | 27–28 February 2027 (tentative) | +| Final papers | Summer 2027 | **Angle (v3):** exactly how AI and PyPhi test a coordinative structure for irreducibility, and why that matters for strategy as organizations rely on triadic infrastructure. The GitHub repo is the prototype. diff --git a/submissions/orgsci_ai_frontiers_methods/cfp/README.md b/submissions/orgsci_ai_frontiers_methods/cfp/README.md index 80618399e..22a0751ca 100644 --- a/submissions/orgsci_ai_frontiers_methods/cfp/README.md +++ b/submissions/orgsci_ai_frontiers_methods/cfp/README.md @@ -11,7 +11,7 @@ ## Stages (verbatim) - "Stage 1: Submit research proposal and package (Deadline: November 1, 2026)" -- "Stage 2: Engage in development process (January-May, 2027)". The workshop is at Duke on 19–20 Feb 2027, per the 9 Oct post. The July post said 27–28 Feb. +- "Stage 2: Engage in development process (January-May, 2027)". The workshop date in this package is 27–28 February 2027 (tentative); the call names no venue. The 9 Oct post had said Duke on 19–20 Feb 2027; the July post said 27–28 Feb. - "Stage 3: Finalization of research projects (Summer, 2027)" - Final papers are "Nature-style ... between 2,500 and 4,500 words." diff --git a/submissions/proposals/orgsci_ai_2026/Do-Platforms-Reduce-to-Pairs-IIT-PyPhi.pptx b/submissions/proposals/orgsci_ai_2026/Do-Platforms-Reduce-to-Pairs-IIT-PyPhi.pptx new file mode 100644 index 0000000000000000000000000000000000000000..0317470fad4766c35affefb45c2ff05ad41b22a2 GIT binary patch literal 554655 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

OE7a+X{~^7pWrIFh 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%0AJBiw?6f9-eE$DW*MAlMg`Cy7!|U7U{=GU0@jWU z3UXjzRAGUEQ40(TIV>Ji}Rq8D%2CMbm!`6oOm;Fl|m0c8?tG$2MIU=G)cqcXp?}$M4c9;5^3|m9Q3Jmr9uHe@-*CL3OQ|72eO!@^bDGm^aG{@2 zSfO*nq==zreGH<7DLBx$n1l2JA`5*i#6%yIK;Z}Epc)|jrGyASHLqe1$XBp~^B#K$ zKOGBrgYm_*LHEHn2tMOIf)BSsX%KyiF+!weVq7q)Rkt=V1a092D`o2m2qEV1Tc!wk zUd;$0=RKv&5b$2ZXd&UAs@@2GUcGq^YxY*;x*>j`?a>SC0b3BhzU_!#Tk8TB)JB+v z^)4w0UtcOB7u6RyLi(7cdG+mD!Gwkkd5kt@W6N}-$rn=#$u(pun^>Hf_b|Q4{m!nRX}Sg)v5R4|4i-o>*l#ul1_ZLq_95ueuOuMA=U9Vh?m>THlY!Cp!N9ME^DD$WUkemdFIR+AjZ1#LG+N|X3Lkg zLF;fwq=O+hI1IRe5V(j~BG<>^+<>@+z#s?ekT3v=h<{O}K%k|Jsi~2Y03bj;bxtI? zk}N*TMZi2T>W~2X#3!9_oTVk*Y*egO#DIQRd(nOg026XnMC;C?gh(1{p}_Ao zju5r&9#DP)BGD!V1D*-rm6e3=)RBgPMc=st0}Sj*$%GKYpW%T&HtE`&j@0A_(B6Eg zOgdAMgt$Ycc1O^i19FeVIEcrOwd*vTV~@AcM-hICXoqnos_d$~orDRfG6(bwbS06l zrwlJ+Yc8FyjPOS?BCOWw^5mundN+E&!ht%xELQXwV;^zGl$`wYvdpoDjt!59jyHyI zp)5bZth}Xx>$#R7S_o47Xe4vbE-SKVmXdFql!E`sAC z^~FSoOgw$u*$XQC5(KwYvhAJ5yIV6km&WppiU|BMvnWC}0Rw@*+?eVo*Ka{xG^Qv? ziZVp>5Z`Ob?{K;QRtyR!8Xw!9YdOp(6zhhNG!D}%uO_KR>w3&v+S8K)Kb#c;`1`nS73W{f`ZFKd~V4Cxe?w!!b!PjKad6lz<4e&K62n^ zvI-QFGGhg4qzJ{8KGD>4^+}nIxlt7bhzgnmODpd%y9yP5H z3H)s@0BaUePNgd*GYW^0vmun)KPMw0zzYr@M%ekZ7}ThU+G-70<{1FHA}bC6P}?c( zjoHAjD7loIfpA@yi~!KPDs_n;oT9{NVx)+J{s@L9F&i6^j@OIqNnHrc3+uZHB9FIT z>$p1MhA0c6voL|mM_hSh>(^#Mk)=(a5J3nhw_9WPrm*S00l>2@ZyZrEJ^VB?3~tsj z=J}1Z(YULu=WQX4tl?DwQ)_$0OsM9NMl8xdUUTGlNNzX`D6AlM5qK^{rumL_+vq&Y z$Z2vxoKB?*032d^rD^+MPKFIx{KrDFtFOmwZOnB!kII;Yat@h1ng{4TFJ}1^rUq1c z0&OI{K~9f|w3l`TGg(!wY2hx*Xg1%Qn022E$PAO^3~yBH3*whaj^;T3s)JULWC0R!_2(EO*ypPTTDacp=3ZOtDYfo+wbNGEs+bDVEyjtS^x-T8x9rW@fVF{Wl{s)jX>aE&u=zn}M3^QBN*2_6e(-8F0mg#|3`DVHeO?3eH=MQh*OVXc#N%0}Luo5O7kHhX4%_ zn^r&v{y}E`4;1sc{PsX?bm#&tVCt3L$)W|WAkN2dCQ{^q=m9v@Fu}&}3hVjg8W8zs z29&aYd0}ITo;3Fh_(L{^Aw~o`bOEaC!ZfAG`Rv?DB~Xt9RU#tXpw^&j(PG%G7jNp_ zi&=}s$1*?r_01v+>x`Be7iRaNfSH)pGaojfkf)4o#H4DI^$)I$4gx@Erxa>} zdMvokhTwV-0UM{Fn^JS`qM^JtU%*KDuX%$p^l^P21&ghq>H(FZ&}>$X*mZ>WNV;uf zLlXDCt>%ooNk)p{igXyk0Isayx5PpC~>T|%OwbJA$sl?o1|ELaN|SajB=wOdcf z8D#Eg(-c&sf4Y?PRho4$kJe_y4r#rtRrVHRh1M=Fj~3fkjDv`_Snf1%xuWfkrFAXx1L??EOmYkyO5xWM#5LI7_R@P{mn?*02#FBB z)QBw=z~9w48OVs4!pM}il?Z#0TSdn>JdnY_1l+qFB{RCqMySiPxKTzng04g7z2?fI z{vCp`RMQ^_QMI!ckC`SZVb5McoQ+kNUvs9DZlS=r5!0dGIp8Cv?fSXRq%O^mvK$ff zmkVXnijW$cOdg&LKyDaR^ZFAKY720Sgk3>AwO!MJk{MMd8cdYx6p6 z2L$SgFC(-G&Gl2y><>Y=;A>{*xl(33d}=U0!OK!CzPFBqw!fDmXz*kuoER8yP(ot_ zJ6q3)77Ns&O4V{j(2Dbk;t7~oD5qkUyI!{UV6cn2o$ODnr*-W_1%V0-kK8V2 z2FM7YK)x!F;23!l4P-!I3^Y_I-<|qbw78eX^6l!1s2o{V0x{X zC#67pIb#@GIQz-F<`3({l-(Pos|(#E!D1DvR6L}+V45xjRPXp!-*)$Z$r4KHQV%{c#uR5MbI;_E0q3Np1v4~@P9xHS3XElcpO;P1-ypmxFR zzU48HM-SuU1Y7uC&7pYFl0y?WQ0vf)Otpw(5uqEcMpE94c!*BHUP$=B17+5ey^+fe`(UHZeTMwUmPvmNHn! zRw<4RQwXf594ry8t14ZNygrO_?-J}|38@(TH8H_sSztMg+Z(1K4d}I5L(D|cwXDkx z-KVn1fDFi!C`5Y4>BB%+ii0;^BcLQpzBqEgkQJ8@K#faM2*n*+p9xKW6M{1VOOC zn~IitDHyaJnc%g^3F!4;x?Qd)27I7>IIq;!j)hKIW9XsX6(qQ8TTp6x+y0v=2Z~oN zEu7+s$$^J7@!ig(a3o*+Cj8{Ot4_9EIR;4IPP&*eZJAhlaHrq2MtN0TeHSo-K#Lg>}FNnjvAr%s7r*yskEYk}gyjstzzx zC<4G3%#g24Ccd|@ThrHfFLxDXOq9E&?KvMI(m~BTCwmGj0fpTA*>lu--Ilr$6?M@2 z<#1gA6Sl5^U4*(At2NM!^UH@4mpjyqs-trha!}J2AZkst*j0QE+IsRlrYJR)G+emVuU(S`}GC zMM~;hFsQU-oT0@-exDR$sx5>PoVF5T8rX7>mW>7K5SEZS20Nsp z*;y(2*kzQ~%Jd_(Z<~OO57c|ycD5dyQNM*dj#k1TNo=Am2_i=IYM_ZDdQZumYTxfX z9;}afgY_ujo>!Sg8JlvbqcTWsx^EG->7r(_kG#x@D6Tn@L`>!XosuSe%cqiopVlKn znTm;2j8t)ul&IoJ6R6@1AVSjfj6p@RGm~N=ZkU=#qlw^xj;4vwwnD*@odOn7l#|s4 z?>95qlzNUMwCU5K;PFvWpaJwsDZs_OLWOo z-!z#)4tvC94uQW|oRCIVa!@L>l?bBFS%j2jwVtCPB#0Kx;1ai1<=7I`dA_9C4k{J* zmSUv;c`MXhdcZ2M)qv`RtOZ;lU?h{x;(la>4>yYP6`XGrR7!u@H-JiD<9Jt)XybTa zj!?pJoFm9^ahwap5RNm1c#r{I({lkG)2H>_GxyhYj7~F&Cz$+mjPlWO-_;dPWQo3^ zpLqPyxab-(wwe#Td+H%yc$uk^=t2c5f~(#LUYnohbGFVg(j3ou-VMp~yc$jUZwAkB z-VM+W4w%~Er4dlp>v|LLDmbOnLmrM86%qapaun?c_&M4ICE{%2dqgG>T|20efzztG zO+$OCy+Zb}!i?iLZw>mQhr2>28NA_XQ=+^T2LI4pO?Js+U9uB3*vA2`+K=c|qvL9< z(=%bFDOtVS*}d2uyPbiuFmDrmDg_8vB7^)CZSYyqT||X_G#`ZIm=4u{)poqcRf!2H z3Yu$%Y}@&TRpCYuQwRDbp&~E?{}AlL08dexfJkKs8k|{*C^~vd5JGy17Zq^cnLSo& zCaBcDg7-?ymFQrwD0D*+A=zbjubXaE3t(29A>b3=#K+kekFvjvSI5vYQ`AIUP81p0 z_vk!dRo$Tkb@Z+Bmta-OVh#mb0hUf?JL-i^y^14M_0W-E29eKw zg|z*3ayI2k(0i_uD1)a!V4^O=f_rHwc>0lSWJguu-a2xG85n-O!ATRjA)v5>S^)&b zb`})YNlh(!uZFXNu$eOGTF-?wA>z8Fa4FC&=@JDb5=NEIRS5JG(Er&ZVzi4yXv5M! zS1z$F)I#EUNHqwasVyLjShd%bM94d%gksRIbD{S$OGz~oZjuLS6vL}JA$qwz3~ED| zIw2$7NBY}M5X`Jv*;cSIK?Fec5zSS@(xw^{Gnm|fCUgiDjeg=sISg_(j9o~{v{sHh z0v5DN%uyDzQr7DOgJFoN;_9lo0d(Z5pv_7M;8n9jW6e*uNOPH})Of6iA9oMsu!EA2 zh5x_}!JgJh4>dT9!&ZWe+8yxhNRUFL<;iJhJ2G6_zeRj)M>j8+SG! zvHZ*`iz$vv*2jpkKN&38s#v60k#brBWg)SC&6XKf*nws>)~nn)XX8@>fUv@65Z+;$ z%W2k$uu?oZsgOC+<=mka^4+FoFNhB8CaoDQM&A}i#-_Uly6i2fgC$kaBjlGtfpcmu z%Eh?5nrK>Ma)d(eV%sgvrCK;!Y%NY)A^mqjbONh;8uI|>dt!X5jHQCiUk9Zw8{y+H z+OXKDHBwcL0~TTWr3%=A*2NOTLOqJZY*>|SD|o#LH`F1qf6*>z7tm_t`xm*hNqp@r z@r_>=JRV7~OkcCXzY_V}8|oQppeaY;O5@K9%Zhz6`bg^fg!j{h^aoI1*e0e%fux&| zTv`RoI8qb->p4A^^Z*Zmi`Z+kQ7A+NbBaM6=GOC^0Kuj3H}w(L1#7}R#WdI;QF56% zj+FheHi%VVgUwM8Bvy^iP`o!!08mSvph)M$E{kDJ?Bj_kfCB)>00IEeqv$km#HLOQ zmKW297-R;4SKAH1aaJwB05PXY8fZ`_{|~Thd=^U6ap{xDZlN~d88ik{oWyoOh9iyS z2KkW@YN}Z)B5R#24Lk;DK&9k_C-FDHZ-QQqt&(l_z+BLxdjC6FGVl!>2 zL5Py$^$Jdi0p5_f?l!|Wc84&GhiAL+I4;1&3}9vi1=x7AjQ#RuDQ0;A0zjZFUK|uz zpqNHNHI#{rBSuCb;!MUbP)8z6h&N*gQ+v>M1hRn{000AYdR_zKL2#$q$S3b%!TC^; zgi~A|eKW%c&90gWClq2+5SJP%HiY~wbQ<+**jkUiBURb0d$(X$Te)_0>q3RRT)GTe z!)8!hUMVM3l$5UQY2%}MsZ}bZXJ%cy8_7(HoVylPOM=Xi%CG97eKg}sddwy%u$sG5 zMkKmXC^0LF#kGU_1fgP;%_u~uos`}wwkv_DX%fjvS}bl-o71H~S(3>?iBIL>^t9TW z8pRUpB?;Re#N5=Vw6qq-qfIKM8l}c12GqLgtHihoLZq^2NNNzehD0H0(1lQpI~!hX z1}1zIejaeL0-Zh{^GCa!eTqO1_XOUT?;9@y#9FC!1&#JHZ7q>})0^-Bh$wEbtqTeU zsJfwms|sP06q^P1LHVYEoPMw;JcJ-(Pj3hhR3!`&$NmvZvf!2{4#R_r2aAk{g=SM1 zw+o+f>9Abv)P^fYtJl9XK?w#krB=fNzJo`pK>!jdm?UsE8y^bPu&%1qBXBq?zQ%<< zHB^v^Wus&R=hskHgQ<( zhX^PqO^>K0&8DOWoQwFyoMN?!%@BvikdW?j&ty6tZ5IwL2ms@>R~bnN+cL34fe{veIa^wQh`_} z!gxF6AeuD6nC4ycn5b&_ZIVDlAFkpj0lQ!tC${wS zKLv(}F_rZ@89x>75=Yz^(Jp&KBwZPA!<@%e+_kxT{3f+7rhaINuyx{A`si?1j)vgO zus`;f4QYT2jLmGwIX~Hf8>KN~;;VEXR}-4uxC{q0xjLk|wmPPRB+hviZi_Ogrt@?q z2#h7{&Z6wrZ)hYe%eocxCZSyeXukp9bA-&Gbt|hvVzwkSy8|q+KLH9T_RLl;?=Qm; z{wmXE0g***cSIs@9U%mHC`2I=>o(*nhg!_8XzQt5Bts7h!hrxR?IBW%ViG5`cn6KF zV}n8Jnu4IvJ1DKT#j+b9^N$ZKI0VTi9Uusei=373n*qsn)@K$7IDpGJhdh?J9fcw} z@gE~{qVDcH-xOjfs+3yXc5=?r26`LJvMDvOU9$-X z>Joq&NS?=pX{W0Rj<}G)n*>4anQdWyLtRkeD!i5mv5FZg&@`6C1rF4+hf*`7wo;c| zuL=_gE@f2C0vV8he$5i?Cql5%(@8%Qr@y>v7`5dYH&iD^Y}JL){H!U;&LCnwnqvkmSBg9yF-p1 z1&{!MDh1KQ%Ai=(IE=d~QA{EL5CO#Nf_;G?=FKHsh#vpb(!0 zBML>Brk)~sDm(!tV#h!P$1aidahM$T`*h|$GA7k$4GKQ`Ym=u+EY6gy1EZ$swXOH_ zu9J&q8IB!4HgE`&jRmAn-bT)!oCDXWyWLM6KOE`ECy7m+IGQ?qkfWPCmAPIx&hHx| zsUXp@<)yL>rW+SE#}f^R%n4qR!o!m*$Y%obru5`&M9Z=V6NJjO7zC!x$HxisAQZO{ zj1V$5F_V#>@=`WKr%1p^jtC^9xY8|2^jevGY;-PH5tue$BLxs>W-#aDX@(d-Br_O4 zsZu%8!@tK*!BQ_U26~iUkj4+2l^{4bX~!(u4{IqMFc~ zq$SX^E(I1H(O||x(@QPSK*`X+8WDlD2@qr1+;gFVyLX-5U=UpHK;!vNso=tFsgmb; zgz~`xkys0E9`}cBu}Oe*G@bQ2MuAAd+`-WpN2)L__>aQFt*Q)qU|5jgM~>@57AAVb zI{tT1>lxDgEM|J1bxFa1lDh-g9R<-!IvSqK!>Dy0s~z?oTcsU<91Z4>FEHGW^?M4Z zwt>}f2`^&_&E*gdwH?tr!XXBCVB1#5v$uvoEDmV}tTYsu@}76tc@0jyxM$cX%!o3i zS3Ke4cHYgCA>%I*kC%ghm|qy1U$yZ zXSw+1ndCDY>Yt-abkVYB=rn#N4A`90B?;wJdtXddAIRJdHRCPuIlgD_E)u-Lv7sEv z88ePaL_j=P=9Et;W80kZO3!KJ$~op(u>YSOo-@}Oe6G8OQ9~+T2+$bucnuGXl1H|O z9e_nP&2f!MC(m14U!J79+-E1tPc6hmYd{8&W?PIwP-s6iQBaFx9R<94+)KuOtL>Xj zBEUy7b)jzIWskETdLVsJf4OtP`aPn&5XD)H*9MuhChJvbi3paan-brDg<=NX!cG ztj4n3`?$bms0#q#w>5@bZUS?1Nem+rq=pfh(ilc$RQTT@c_C&6{X$_F6++Fa5QUpq zGzJlb!At8cv5%kww7XFU`%A@Q%@+IA8$A18H9_;#)qbZL7&S_Kz}0;DfvF~Zz}C?5 zfWVbe2m3otm<&PH1@~X_s~$$!wM)|az;BIIZ(;Q5fU!n}^WeelE2pZ(wHH6^gr|>O zjMC+i|6xH%sZgwZ%Zh>Q9>_a~th>c92I&kzM@#`Fkx_tE+b`6#ngp0iziTLq0#K#? z-e-ARi4=Leb@36MsB=V;#~z7i9;>w7=G(* zit8!sN=}&=3i9t2-zv>$wzK<1iMKWNc`KamJXxbsKBh9TguhMd(5Yg~kFmYLh2Tm|__U z40h>z8LieDF>!llU#a*iEXWS@O|XSXnJ+5Z+x7(lT)Y#(S%XTN=-yT4Z+{mjJ+fq(Z2)?a^2GMRA z8REbIz28TL841FQTLBb(7Qy%&yY8dchxaXj_5q!IfJiN{<#3$m*pH!d0PXi&*bO22 z!r30qm&faN{LChD&iC2>@zXDLI}hE$8+S z!Wd~wx;rnR{}jPvGDbC#bz%!{QLGRz%;G@-eb)xR$$rM zOlDu=AYcFo7@xB+5KwR#@P^$Ms46f+;saw!1HocUZ}60Vz!o$3pnSqd5**Y}(^)@- z1dtDq#E>$&L5Uz`WP=hxmDCJL11mrnk_J{n7?KGEZo^H8-E~OkT-}CAE60j6{cJl= z>=e2rOQ*Wg=!8#o^G7B3Qt+UXAf^!Tl4VK3he?%O!xBZ6b_67fan)TWB+=R-LK1D- zCK06jtV%`qQ<^33ePUFVIVzn|;C;d|=X^+)amT&FOqC}METnr_g_R#g-@cI-H@cdW z`a}M$_K_Kuui|k@kW{^oFj`d&MK|40@mvK0mDd~auL9$O6ZDm81SgaTsw{K;)rT72 zbpdhZ=F?M5d5lORlbC=@lD^_oon>7S(aRf2S|%m^BoKtXl#znN*l^OK6BEP}#sVja z&r&o2!};4u=mbxj^RkNk(eVHaIWLUk zoh$!{1!or$JLkp3ojLlR@10vl-0H*`&aJq<6)g?o@u+wrxzmxn)Th1?uzV;uRp(4x z)TX=?To=U&%t}~B6#VKdCi++*6v1(b-nhza@WH)GEAe;!YmrZLsH?l_up#NK>MHH) zPQhrDf*bE5$}%iJEm22!A|lQEtgQ6L{v| zO2zrCmL!_PdU_mP-oL(>&#l_+S6$kC&UQZPJf6IGMv5;BV`q;-%9w7hjfw=5HJ#<{5GXD7Ns(m zeh@IqEDihUuoWW(j~+{vD~}@k=qO8zp(ct#s9gXhaZPUpxe|T+`PSL)W7Ojkcjkk+gDNxJZBn#6prBwSYKr7c%c_00&wDAP&C`S(cB;Q=CHEWL3m zY&Fc)<*s7~wbHxbm~4vxd|-p0hStc^oi41;=4?mNNISOA$XJR zY7mgtp&wVRWXc0#eS(Fn<+Zf%TU&2SAT@Nd18w*PC{(MJ)-2+>#I`G}avV^*e4-Ux zCWTZ4(5e2MK2IaX01H}hws{dySu)+YcDp8lt3ED}w3V$GOClVOcK{ZJm!uBcAw^)8 z8rP!@Gq{pk5HhI@Hb01AvmjWb2&UI!GlF3%9QqKYg+c<;lSG@oy^ykO2#@B+-j@KW%m58dD~l8 zo3YCiX^v9gYsExt$3nHlDUm}zlN}JQAxxB^O~eHoR|RCswIiMXzlGja;~}0%``=|S z4x1OJK%z0`^`%)Uq2nYb1SKL`6<=LE%Vnp=?m)itw(1y~EiqilN&wk28G&;gwvYWKa zkkCm|jD%U{rC5={OaKv0&&}sUol(~@l#(PE6KuhjJoz?JOa*w1ZQw_2VWzOZ76Oa_ zvFTaB0eO}%1-7IhVo{T}So3TnmF8!`ngK+^II|7Rl5Qr9?^$)`eyRv0;Sk8=L^!<{ zA8i59j07OP&WHwW2I))%zta`2J)&vy^#K~ueYh_%%I0j0HOUAUmSr$99$9+^Dqrl0 zyU0^P5=x=UdDl&VkJ@hkSPPOMBR?^fs%Qfd6CEN6OK{1GW%3KG&Zi+SK@?$yz3QM< zs6RaPmmfI*8ujzz4R7`c^XqSa0&Px}&^`8|`=K9}=^CM{{>m7SWbGDTr*tXQNO zk5LC+EbX!<$vhH`t(9(~)rK-e7eFz(KAW|-pYW(TAn^cl$=p*pHh_m9l8Vp@1lJF&-YAh(QPec5(Z6=+8qFh`wq#7_*C)Jj@z-LPi?TE+%%^ zrynp->@{}w+e1ecv)OD5$7<6h-1G{();bkLK`gr^+2tQiCpN+z`n=@A71wdZ{B#5T z)#-OOWWJBMV~wgrBW6NT4^ulv;t81Za$04ag<85M()mnH#*c%OnX%HMJ!S=h*2Aw@ zc0`Q|(kogt-v{F4v=_kn^wew-92A<~C4$5vOfL_#Dzn?RjnF0Z&ki9iRYeIG)2qpi zBe3PT5?4Udridy8W;g^vEo>vDqvf21o<5rZXzs(D(Z4Oao0@l^vghYKVhk4DeZbSxh_R zL%P@lJGdAzum|-iO{J3sWwkTlYOKd<+(X@^gj?n7N%&T@<#`~K-QeOzeWez$eEZ81 zOQH~rQPQf65^Gm=X`gHa#rZ)sVF9013$$IVE^0<@5mgYIyP>700s2T>d<&G5R}GQe zkqkTzFkyxI7CMuqr7<%A(t0^5yKLDm@9GayA#JU(c9JeW?S7mVC1qIuFDX^YkDmPB%7?qS%p?syW0vEg(~&Wvd9<9|1=3UOi5$$0W&if^RHE$IVE zazT9vB%Nn#rK%02z1fgMIPwjosgK#&Lq{tQFmJVvml5k&w;kLJ4x}&L!w^9uQX7!d zx=c9o&Ow&`iiK5>NzqdX3V)_)^xJW5!k2Raa#U(f*P%PiKZcs9pH_X6-gp?UBoItDJE zy!l5=yE^)TSP1GZ|~6$;rqDi3XjO=V@0JT zh5v%)WDsmTJHJ7}`ctHaQ-|*%84m&@*z_7sQ+9><{y2N+%=>$Z(C|3daCZFU zw*%l#e{tCS3Cc)utMmJ=Es30-YgFD~1q9#fa@Y<1$F;oT$+y{0tG4AUBJ(MtUYmW- zK~P)n_|@Be!EsPq!#j7v+p6yPTYaN3w}Q=)OK&l%<-7^a&d*9_*z4Uwq-EXnn*`0c z7fJrer6I=n2Z3|{vMFyN3E334;05kv)Y$Q~wiZXS3|JS@#i98uH8k4Uve3DP>*-(H zfyy|v1rr8aa45X>xD2JL@Ee&`;{Hbd<#-Lrvb+ZO=2w&@xnH`Zvx;(*pH5LSYMr=} zV5ihjCBC0gK!d6O)?5_-;Ul_s%Uu0W{)9n4sGwxr|KL!>|JkF$BymatX$Fw#Q$O>R z3^0E{DrZqFA;Jm$7E}LEl%dG*C3+neN<*?Z2>KDY;SufUJk?70Lq9+0OXolBU-~oB zR1rQ(jXQwJ0?(-q{pZQm@jgwuJH(w#O*TRtQ=g=IDe_nmjQ3H!A4`&^DScL^YM1q} z-Kcg*bnB{ukmZLiOh*}dM9VMfk3*@tgX%ZZkt#Nz1Jk3Jl>7vSrTiFf8Gi#U*yxE+ z?vBbsx#3~=8YP!#i*#9j!ng249mX+bX?)K6=%7WNu6+gHt%kWw5GB9FCI}e?{n6q_ zuvjifuvyZNV6aY$V6aIJ!D8_a!C;adg2d_#g25sUg3fb$1&;%J1)Qd~3myix3jo7g z1(b$%3oMw}ERbhlrg;^-9<;{5ZIc@Tt4wb_WiPQ<0IiP=LfaluCAK`k1#Ea)728V? zS8-z;uGnM)J7|(lcF`u>?V=^Ov`X(xfM;yL!1iPVN^F|APh{Lbw$2gzIl>>al4uw3 z=PO*i$tbW2T>0XX%sc_C9%TXZ?noB)42dpCGOBP(x|`ZDwn=Q46O zdIRncGV^pgY$tGW!Z8*u$k(InEc4L;`#$*CnhGG&@4_xmj z^WbzD{N>m1oO&*~e?FUxpT-AfQt^qcmO#u+e>si=X*@=cB!E!}asDAoKlbK>C80q8 zrl3|=COAMmhwM|sCECPCDXWsp&i7x zZQM zOoM}VzeT*n0LnM;`Zzb4A^6cU4xk)-!Dmzkj6@Mwo0{V6G#41=!!#5D*U`KXpGNRj zq6aQ9KygVhTj!g>Rgx#T!v{F|nJF)5Bn;0)+6fa}o^1pA(?H=7mu?fVuVBY$iv`*Fuj8VV9Xra;g~t80ec$P3E0+TMh_{hu##z#OlGAHo3$kheLM+`1AUyd;lKqkz+fiW6%LSiN`24W%B2Oc7Bc2od! zi0T6~h^(WG&z-lmaM6^0O!AMaIV6_Gb0oMLF(l!}v}65nDuJqK&SLG*&`cW~4Guig zuRSw?ANZ=tKJe)v_wqnI(s{zpZWoRj%ql!C&IEAAcVyzvtCE{Ju3uD{%|CdlpI6** zoDD~e`M~omGl6Jf>47a*1zQUcD-AixIi9DQsjv( z@Yo2+7!0uiM_WOpm;`kbg<##5E0;Dum3l!3@}Tx;zP%d(vz!4r1KIH+c-O~9$PCD# z0Ak<<0~3fK7|X!`#&8e}bn*v;SLE2ftM>#G*?1tH@wO{f)`AfWBp`w%&Pg+73ZL9!Uc61fEYxd4V1h>Np?0!IuTKakzF zc$!3*3D^soO2L0AK4a$wRt;2O5L2C*Iis#gHi{~Tq>lH9Vr*)5uBk?KH<`m4#T zS%WsEt4ap8&EB-Eu|6g*tMw*zeT@AxxyWBUIDNYhykU3nT?^nbn z@3mJ*2owc>s_9?r7&QVgLsjo{7%=Y}h7_5wVQlscEr1Rh&tkpoDF%NIb2bfa*PeI=}TM74F@N1U0t6L8=x3ulSTe z*Y?E&d`wU`|5%`JBt55BL>XcMqMz6eqn&`-K?Rjx;&&D9O+XEw5`Y^&ssL>GnC!r= zQs*{b1oT(7wyX>guQywFc;qo@V9Ar!u7Dy`Z=^C61aK|>0tQJ849WTc#AQGjuP6f> z>Hvv8j0lwUU~O@X4ZVoK+CXiD0D&NeEY{@oYRv#O9o>`wfgWNM0Gd45XaUMa06DEd z9>N2{4tO7J{ss_eBG|)A{fsoX*uzR9j5MKfhLvR)X<%`Nm%A8gLy-oQd?+Pz!t2hi zcuuA`{6p^T8OiPjr8Y{$vn;+IW>eC-osu^5x*Jjq%|4J>eO#^c*}Hj3kr6 zY(eCbvI=-2P=P`2{b#y+k_r?0z)F8(hlah59vZnkY5iCs#1v5n5<7{h<#ND#QVmU> z(tlWLkS9`X5P0Rp53bBvNt#rg3wjB_x1hiU1PFmh^KU2P4D@cEKJfyTgg~a?OX&lH z*z6uRC_(ffhVa@*o2g;X=*C-$}fn0mgkMVmXQSsD9c2 z(6ZQ1mklpmF6n)p6A{T0e zyV@-LVEX5xYH4Bmz)xiI81N1jxRdG0GE=) zfo78@$x@BE1W_q(uhMkd(Lp12e-S(awVjKe_|E znH?T+jSx;j@@JAf^Hgfrj<5}d6322F;fk=62$1(9=SlFfPagt!-~p4Y;35@vd?AQ> z1|adSU&2ksHSz^Q7yZpSBwWGh4x85i{~hS)6?P0U86&P z-J5M9X3mHjqeK|4p0UmlBuDp*V#tQ2ZEmnEkq;PpW|a@5k4xtsa+G}?tb>VyMqJTv z=N)rCfLtg)tic7t(PH(pU>@9Jq|H5Bg%{YQo|}(E^)3`&{JBq2;MM=&-wx>f88~_) zQ^1RW5Vj}yU?cy9&tzh)fxW&@Pnkf0RP=A+z4bJlw~$)y>Qbt>EK`kyrqKa{_Pg3?TXtCsX@PybiA$iunFZ#N`9w zr>{ZkcXqIhhPOdeJVCCb)a7^`E{PComg>LMk3mYmkK_UbTEPk&O9Ti-hG@i!+a!-V zt*dOhLCzcS$8i(M0bXXs8wm?HY#7sbC`n8U`W3qWQcg%l1{859qCrnETinM0ihA?N zHCaPeiRYvI>VxpOV(~u&Bgm*}{!|)|?#0W> zoxW0_b)=^O6)rY~K?urJEEMq|s1&KnfKmLZV|*$Yao>bUyM9GOQW9Y%(qwM$CQQ+$ zc$Z_*{F#CmJ5l*DFfb-12j-Z?kum6A{P7lsDopuAzzC6%8Im$BL#)Xd5|I8mBMA}A z0%VKINt+AeCWHf|npbj?W@vi@k?HypU5N8o^4RicTc0L%+6EovBq_@+qez}oLe9bq zu?%JrDk@Jg&m@0ArnIC#Pcg_a(q9}f(ohqVWm`j28IdGGnM@5KsO2MI!9OEF6fOv2 z@Y*iKE6~y~M+q28_#wQ>8zVvxFhe8}LV`9l_+^1acHu%XnN8#vK^$O_DFjVMB!W1| zm>`LnGMqsfai;_kmm4nx9Yq|l!3CUi0B}KKoX=qi1B^f!AIl;`9w-mAIa*2PrAdUR zn#x>k4NS0Np34IXgw3e@!x1wm;K*`gD+(^rF$#_=2__{9;j%uVp+Mx%V^pjbbKx$^ z&V9-}CUoo<&J2&VV+c;dP&+Y@OLQ_BId{kyCV;ui5r8GMh!_f~QG^WF`c@f;$CVv~ z?{dl&FrDZOq@xL978GHSG-!CYK?7=bl?Q~n@)cY_+?%CAkRcQ?XDlUF8c=YAzZdj@ z1_??_y(zhde@sMx6#(&KG2$!S9)vHuK?$JjDE7De4@;92e6Olp>PlG1s8V~R<^Y}ks8 z(ZMuuXLN8u$I4KMapNtDCOGn+3In`>5K&ko(Evw4xWA8@Q*ehf6-SLm({WU2TcA zXoDz;SwopbNs=7OB0!+#Q4%7DGKiBzF_c7#(4+!#O#+!jNOuZFoSpj-WA+dn6w3gY zR(8a`L;NWe;t1gg1Id4422s+~48iz-h%*P`e@PWQoQy}nBYBAU1Z)O~2#{?lllRHY zz9YTs%Z-b;HC*Oa~-_GZA1B$#TLLBGmD&tmitzh_-X?ae)Z3&LdUB^X6PXL!5ja>4B1rtT3wc$`RC_DxgaMZ##*mn?H8}3Ejg}&6 z(Ir|DWkZs@kz|-PgQ&)0Zm2+6W4Bc(!6!&$ogleWgE5>*nMx#x>(nNslfH=sC1R4{ zMEDPn0`*XoTI(m`k+asTYZE%CYjIXVsmS#xA5evqKSG2Ks6%kL;#;)yaMhiLWa9B& zx9D}=aH``IiE0qChI)l2r)Ta$$&ajr>a^oyoFNIASR+y;v+opr3La=9t|pu;4-lgqodI9xG+LjG^%0tsMs&+95sv80lG=-Nr$l7F@}53X z8Q&wBMq+TCKeusgD4Qpkm*<$%xFF9lqL ze^`uheWX2^g-D_XEsb0GLZ(Ufubw&*PRIV>X)NZa$ zSjyM15o6a-yLVA2Zt8U1)CfeZf42czjo^g?7a+nXMs68gYL>C8T9&C?)hdaqRB!Jo z8q|RHskng3vu$EcW-BaV5AuaQUya{WHZjd!(=~hS)#^2Uo9j`9wqcuGa%VD?oWoN& zm8NqI%;qs?F?(d+G1g#0$%Upag%aw7yVI6J<(;gnx0OpnA*L*b9U;-hlLTbRdd{Q} z&ZQU&6<$oz*1pVQQ9cw)#TeM45*o&W)kw@O(VvJTG}f4;>DbGqC6~l>M6qa0TYVrH z2*eojN`$#!r5d)y)u>Y%NDgZ_&v;Ou!s=p|$;E6CCPoMvp_-eO>|@-(GIeZRs>p4O zqio(M39Q?Mb0-K5Ryo z`l@;#>AihQHFcJZGL>-8N-%d?1qgS=^@nL~X56(Z@ItLtxjxamE=6=pYgUbxtwyWb zqE?{@W2K>{^;#AA+*Xo3Sf}Y?k+Q`pg-SpQl$h*-Y&5J5H2nOEd$24cv@l- zYb05Z%O{|5MMsQ_(wG&~JFgLr^RpJiIRUSLUJ5_!O|@F;n1 zEX}MO0H}Z|BmxKk@o2)H(F!ye)fF7wimhN3Rd@O*{=wnE9v+&A6j>x*S9ZKgOwV$)(*wkLG@tEw4r1W}dr z$&GCNPIMv()j^6eqL`zCjz{VnEA#9Hij^qAaDl-{s2YJpm%5EcP()2xHwb!jC!rHi zJ(1>s&}nCORPM)FpO$!!&C+BlT4i1^k_7^Nr8vyOC$l39WwR4g0h!DILp(+f^3-`psZAeA zpR3s8!p-X0Y^imVGalgQEqTJ0*2$csb;(Tv+HdZah9oMSQU0naSnk^Dw`I2;;vhuC z+oXe(`<3ZZdO{Std@7z5T@`P;9lKTCJl*6Gio*x{8d2AGA7zo6x0`s)y2*Jw8rhMB zA`;1{3-u+lt=BSYnGz zUyK{YD~Wds`OxvI-FjVCl_cY8KEhX!1V&hJK*jat?YH}PW2-9V)Spl%DrJ;t=`|RZ?1nXLDw-`m%I>0-h>@1A!tP5FQvR8 z0BcVWfp=D#aA}}TR}Hxpn$_TeZb0Xnw0e?;tX^Uk+wvxA7Jv~ZR(Q3j5nH2cQp-#E ztpK3fbjA=1UV3GCi$)L%zt#YV!Avm~00H1EOYzjvg9w+^bYk0;AXNeu$HwdiSBwA+ zeuUP_+)NyU(P*(rirQ^2E0A^0cXBSdICnTgF^QVzH(Qlj2iAluOyprR;o+@m$4X35 zn4xMhZ{s@Qs6~b)sB(eS_Q7GN%Wy>)!a6MXN@cl z5bS_9pvM}yC= z6ywmD>M$UM?u8{BgzF2Pa6%RgM8amS0W(xVdXF6@A|SH|S>jC10_&ydtV+JzZhx&ZK;OAyS_G01E?X=`A$m!qt; zftT%QWNOmD1H_QP0ec*?K?+m|bwX6O4$%yxD?0U^KF|s*$lp6?7JB?ugtIf*jkPeI zZO+5ZKS}?aJA!dC81&LpNBgpHM67&Cfz36Vll+C!nv9Q#C}3m@U=&LL<7OIW?8l8T z*EFNNZtk1S%ym;YkOX8baDu4B+eR8hVC1L+bB;K6={3Yt>3CaGz`cp3w)AZ#w%t0< zE3?&sRl%C98bHHOV@Um{w{|Tv03rIEYuwdIz4Q|r zA&w7K0olCv!u0}}I2(Whu@5rG%(5FPtm*!lLD;AshFJU=lOckdW0_I@Z9ip9`O0p} z8)bW$Q|C_`6bNQZ7%RMYU@W_AsdrsV;5$VEr)800jj*3E^a5E%KwnO_R8(QbVO}t( zFx{AM9i^Ovpay)i^>yaD3p@j1gf4jrLHE4Da2WKNg=@HLzX-r%-TP~6A%Tyi1?|+l zA+EH`r=(}(L%Iwv)OI`pg|D*79PhS#a>L$LcuRmp(D%7-S--%m8A~R>CGqJK;{eGp z9|us*f~wArfF}eILOH``(Zgal+RKp{(J25=Kn&Dpiw@wU9?`9|Of8UDTS4kFe5wjn z9o2RePxTTKHHBnG+EKZv?Wns-C!E>1IJRjIDZ^3kIcse;Lpj96ngJ1miw$qXl(5_I zeaoR3F;WjgLjh5zL0&U-Ww1g+#u^exxaPeX)tE;0A9>pm6SgSbXu!hoC+LZ|lxWcy zW7N_B%B>u*U1|$}=nbY2{Op3-M2cPRSPG`#Y$x-S#(md$cv_4WRS{@*0?$2aij9Pu z&Wv-_ks0ncC6BY%PN}3vCd>sZIhRz(3-(mN)NC<>+#TPzVm3N#RkD2&(_}x)TGLd{ z5-Ee0h3%YQGm0{q8#ubT0KkmIH!(&~N=6N`lw^W1w{I#|+5*2C#_u(+#}?tpCKc8v zCv$2=!8yakgMfTqTGLNx*@R~00?E2ZWY!VE$Lz{%eZ_>>2wS^Qa;EtFTs?h&mItHi zBOf4jNnu2IWhP3flI9xgxy>?B#*PvTlv+k1Q_;?1#}Y|^q@UbHGoRqPk4q+S9FPJu zdP642i^ftwgG4P@O&pNs}112wi^Oe`CNR zSlwRLY2J)QPzibd2cWHF07wUFTJbgJOmdv?^YWwT<_+MK*-xdX>CwHh)QG5fl%1Q)YpuypT@Q3x3lb3wuD>*FlIDIJGamx=mc9#3)DKefsq+(KcDLx8rvYjxb8d7*E zc9M`uViH#wDpnymkz97~VdgVQCEQH|F94AmL_t}`nSCYjvM5#ggf5s~aR^oXGvkQT zXUR@}j6z5#=iWq1@+NXNW}+B@419O!bvk1H#X6ipm!$)uA>U!sEOby*?6|P_I~~+4GZ%oV za~gUHkq7ngrJgMPhlH?)J}ep05-~tLP324Fx*icH1 z9HU?a6{CQ#1SQ`CDTvdQ$KY{2(!$hIGao5#=x336;)s%+Dc5EOaSMWA5^4Pq*nQ5Q;+9dPnnc%o88XW4ljg?^b`z=IcI7ntJGe$C> zMv^M|QgQ-uAvp-hFv%cU$a+#VB&K;|k&1#76iJB6cCDG@Mef2A5t{n3FotPyn22VW zXFV8&QJv!{om%nY%*7KGY#i6sWws6$OVZ9kRBVZUaZd(%olKaKrv|0E|GdZ$u_w+y zUbQkWgL8BP+XAd{R_KkQMI3o+zl)BwWDa zlYbHgA;g-E)*{7y1H|HiX9({I!U;!-N<)cD`0G)(1XDsPL9jd_V>mZVH$#RN2Eq}z z>rt|R+CXdu8%`rmQ0liG3RD^w4f72tgG|I=i6G>P8r**|7#uPI$7_$*sKTYWjU;BR zy3ms6nGQ8HKvU=>ea00z36TOv_|q#1Az8@ulv}JuG!sE#hF35QVHgzW>BY;=(=1wI71y;J67hsUi&VAJ*BxqEWX2OHf_V zAO0^oTzXROJy%nOrI+_T_g&?XT_1sbYef`D0oA^P&ZkiCqmaJ-;%3I>n`X2=4f=z#KrmDsX%8&EK9pR!YD z?2D3sw0A-fm;~+tV!%p2i5hSHm*fo`0&LxJ&%lac7W)dsA{QnBX^udoF<7t;umaTD z0RnH~Tk1#bcY_N5k;m0O3z%amd@g_V5A}-s1${J*#G(92j@C%}YQl>0wBA;DP4HLR zYFbhGFCuvGC9e$o3-5c0iL>$P$Xh`oFsQ zJ!VI)$Q*&xx{x}F-O+S2TEmY1Y=k7DYIUPJsOW%uAu+@!)VbB2)T7n$c{!2xoKH;s zQ`O5w)osEpl({hiYL?rBBtAsP&nDS$9^CsYBHv)*tF=>q<}yP7(2?Dy2${ zZaF0#rL#PCK=E8WS4-q$)Wc<2160TGUaCACsxoby z(Ryj$9AIsrO(S#-xEb1_Bx}E|&w7}vZOdMFRJwO3s{O3BV-VUMR3S>aOdMu(UpG$(Vfwv!n+|EOK4)Rv%6W#Q%R))H1Nk9G1 zU{A2eY3_&wfiyrN?FVcLwp2aPPL&0lFEq4+>&(S9e@&^J_SHD)u(?UqW6mvsr`1`T zq=P9SAn>gzw$(PE90|Co;_g}-P5Wfp6tpdwXxa^Qdmin_zd%w%+M8{HHkD~)skFk` z@REwtxJ4Gy4Gua*C!^Nhji7Vcrm=x)O)ecFt%W3y=4kKD#Q8%W?Tr$4x6rS~>>|Q~O zm7RB%>w1-V-b{ULt7ux&(E{ZlK)Cc{v(ID>vkpxH99v+9isAQyZ$v%Yh#;H6wgK)5 zl91hjk^wP*wbGL<(w@cb@6=4_qhg)&Vv_LKu2QV$dppIf0UJ{kzJhQP(1}c2tu`lz z7`XPv+5u*b}zdzL=J3rmq(d|lv@z7V4N9>S7wYThcX0B|AtPVbz-F)oU3m@Qt}xoyO~w@TG@ouA?Ag2z>5 znxJ9=S^^wPw_#b7+hI&xZ0QWsiEd!V+K3r@V`9?JU-x>=dTy@mrj0Ab?cUp~^D8EG z2RIF3E$EAn+t5JWfk?M?M;vgPsg=l zPef}xHh*lui8ikMkOwurdb zFC@m+MITlrC0Y8Y8mW370>>tcxahH{!qHyQ?V_%u=|=%XwvIg(Dk^$6v{v*~DE`s8 znk~)wnm^6!lJSzYCmAP#s+??*6p@NZI!tCx9F zUmh=vP+l(_P(m-UbrKqGDC>kiB ziv)`eV$vd@gW8**km}%5*()$0_I3YlFicQzFoxP|KOC-Bl#Nej83Qz^gH=FbJApcq z>XfgcYciXI5=o-Kt5s_V8k23ObaMiz?5YD5e8zWktRgQpHZB8IgPNBUQskD{VL3@g z!m5ME6^9lUD&{X#R8(Imw`iqtapJK-N5Q&+uY#cm?hVWlZV${6rVm^e{1wPJm@ROl zFd(R)+`%-#{DRek;{;c&c^Sb5>mHjR%WzoGOY9UR814(s3L%2@g0MlCL0Dd>-o+0} zk3p-@8_;O>8ulqUm$@%Z;jmZ~F%l3Gh}ArWG9@D*M%8E6k+Q1%wv_Co|hqreK^ovSMm4x0h^#>cgax~4KadDuM+D}A0- zQN}%6F~tpAEJw0%b)vBlrPYW>n5N7rkHq%g~0LQp~*qV_lxg$q(Ks71cmiCMKu!9j)tB!8?* zF{mrnV6v(l`_QQb*JJP=-u=M!Qx>IimzgQCFKSsTQZ%^9S(2dA z+$C8hMoZ$Bktiyc(I{w_nJZB%3R}8a1(Uv$ES%!JokRg-?1Jnw4r^y{LnJyW zky(u&W}1dbd7A$nXSiO2z)a}ItSu4WYOzOSp|iC#w$BKPkhy^DPpSoKJRzP{86W1> znnCo|4C+4@p>9L!3Xulu=S;Nlvl(&Yx+@t=GH-IzpX0PnuiH#++cyDRKKHD6lWsU-?Ei}MYeS(if>=CW-lW^ z!Q?4t*`~|X)5Qo(NQQ2!KMMmga?UlbO$DZ%)Wc-(`5f&p4DBi@=*T%nT@3{kC_K!L z#n}DU$&U=~PUa}a5$Y(`iqcenqWvtc!kvmT$9gpi^BD6JbNF$%81Js}oR zGOSYIikj?-9ZM&84$ zc}lMe#1&c<&mwgr*hYdxu#PDff+w;ymoPxkls*1d42cx`0F&M!H3GMu{Q{A~g{Ar_EhpqmI5o#xH`)xFnS|MLG?s z8e1Fc5msR4IN!w7N;eJ@8bP7R-;uYGy`w|{pz*j6(y-h-Z-C#(+@ZZezvDnKo|lHj z!&#$9pwqzEBy0$12pa+#pN*l7I7X-jwu4CnaS@;axPaE!)eI(pC#p1#z)7LF!NvTc zUvTII2HBH!1&o%M#Gnoh@{AO2NHZfTAP2dnfoD!y)9$rMbB4h_LUDxqMCHO#TXOdz zwjOzsLKN~-5ldn~NJ%l!?uw#-1cwSdNx`Cz7a3y~T4~EMMF)vw1wtHxsW(KqN1F7w zRAG&4%~Enaj`_B;}EXJfLCTHA_?+TVhQ?e>Sv=8W+@XC z4&VgAniEb#)WL(qfJBh3(HtI<6C%cD8ze5r$qSKH0%1g`#OH}Q3G5R=5?Uu1OGuO0 zn&BytDgu1O*9iec`UwJr^a*GQR})JUcx(d}4K?u1JWO;<93{4tOHh{DS;e-LOKm8Y zFf=8|lZcveCV@VpSmJR+;Ox}OK_SSWkvBm-qC>$U5jR+pkem!pfS;(Gu{i-CAwOvq zN`helDzPL0NxVy(70MUn3g!xy1&Dr1( z9Gg5GlL%XqSXdkFzEH463SGO^B*L@95Ja?KB3I@N2h?f?NOhF#g}IkdFj{+0aoigT z4#`{;6?jsj?lfs4>1~@R!vp}rbNxjn!4yEe%05F~05U=1C*27o_^j9^E{yU6r(0x+ z6h*j-ku``LI~YzQ0}PL4bDSZEdC3TdD?+A$O7j(21r(eVT$>J)G0zGE3P9ajV}=?C zGu#kl1Us%ifa$qt8=GUgN%0j*75plEE_hRbUa+z7rJ-?xw1ql_sS211pcl+7P*4Cb zpil%aKvqarFf_0|GB`E72)qc^1X2b+A|_;lGC;(pJHrud0})UnP#4=UQHCP+g%TiW z(@}H_c4QIq&C5AO$fpoAz)Apn0I9&@f%E|wfwYEWLLnX;srBjHE9EFenQP*MX)0`TH>fZ=IP{4g_Q%84$yFAWa#>^l18I_F9EZ@0uowL-C*5ZDCFaU zOoHOuq_DgXupEDPAEd2!uYw7wyb)dLbL=gja<37z5`M76_S2iIAWav`i>sVcaLm zMsEx%h&8AZRBD%9g~tG%!m+ZxBGjVQTzl6Ofc!8-DF{dM6D<^qhW>n8F=;O_NAeJd z@)GytDbL7iKOw{U3upNV_wp1Bupp4(m+~K13a0H)H0yXIf%hRC}pw8TG zgz-CvNg0yklm`2kfpO8pvzM?UJ?^<30$OhU>TghSSb{#{i&Mkm6M?wxXAE5i*;A^Z%UvYkyQ|EV+4{A$XmJ_U-Hk0zH1nE8ROPF?UX|dl^-g-E^}6wrQtKgWp{dJJi)HrYI;*(#F7e8DQVFQ#6zwRO zF@m)c+EmOfg6SZ(y@A`lzg)<_199{i{1!o|{P)DkL^$;ORc&=Bn5T`s* z5#pNW3WyM-!*L_L6!4txG2R`prN5B4D1i!1L`YIE2r>}2JR;G>PO~uOwY51QEj+FW z=m&tNyvS~ZJ_?6dSE{wwR-5y!GrQ^Z{8#W5qj@zJDx|F6CEn$psjg$s5A}|!St`44tRs6f}XHVaD7y|jqI{1tMjZ^Q3T4SIIcrtr;blsY!N7Gt1(U*s(h79YOHW1R%>wT z3gJ`V8RjWYDJ(|pOE}MXt1*J{67j5Yi1!g8iB8KbS29%Oszo0l_gMIFsi64^43@={ zBA%r`+xVX`?Z!EYt~)rt;(o>Tl2I8D<|3OH@#r>|O$dS7;y!3f$-N<2H>e)oKy0Q_ zM-dt-wBIWdp&6@UINX@QaUb!G;yq%i#bCsRiiL<(qUOL25w&%R5XLQycZ~BFF^W|G zI?};XKx>_WHa2Bnh>^u7ja|hSNZYIE7XXZZ;^Dv+^5Q2~7+wWuwLgk9I2TXBT1H9o$a%_Aau1TeHPNQY_cJd(f03 z>#`7WA2AnWOvj@aPAs_4F&txE#h=A$tVPRGYZN;4HZoswg23W;Y;C*zK?_(Phrzxm z4kGMNb>~kJe-XwyTxVC1vk;CUW-#nr97{1E@QUk=2N5xPJ$2kmJs5C`$Kmql8uh6$ zWxrf@tIb{@J{*a-h_R~i2;z^%N$#jcBHr9t`06nk@%(xk9c?3z4UHu+C)Zo-RlHy& zl;>z2tfP8bS&J2Q?ZsV)?;Qp;c=a0yXl~rapc_QIADBZ~MmtbkdavS9BWdSvN%gT9 zS!JrUnOsTM^=n}jVxwsqtZ&t$t3nI`X(i2e$J!uftvYC}r)vZ&ZEdvJAyUqjO7$d( z#H73k%r_5P2*%vX(nN`ZT0UAZ;}(?_#ct9z4K+os1+8%{Vp=mTgDe`>eAJ`U8tL37V*}& zt*$K&+FP|3w3%q7Xw7V5))v@Jpg!FtsMgZ`pdHeY_Q$O^?L}HM+D*1*wO4DQXq$I1 zrK78O`(f@iq5pM?sa#ajSrLR`q%483Hy~_H?X_KLJvRjvO`+R1O^uN*V`8SbZR+jH z+bFbgwFQj;iM6$=`$mPRyLvlt%rHIZ7^RH>g!c)&(dnj|Wr{^>VG5SUkroRW9Movj zb<#Xpg{9RK8&+7UX0D-%Lz+-Fo{^yS3#`wJ=J1saMn6 zOdTjHa;Zd8+elWN`ao2PboSEWrP`aNAsTelkf|AI7}H>-~tWJ0Q8u?@>XNowjsUR~+1QX$&GDyK@p<1D20 zuUhJ+r$uY6U2YVit(^DN4rvZkWl|KS9ZXnevG$)TdueV{prl)*T~96wWSFVh>qnYN zN^@yPso7Z5RMMJQYG+j|N=LNlDY&PgqK2u-Q{PD$RTk+!ZKCHFF5X0Kk?LUvq7xb| zM!Fd5)IvQ2r4v}DARusveTqiN zF+?{V6k{5%bG$RGjK=SfR7uo0t@NlxYCmJUQDnESRN zqAC(N072r>#13goNEKa(FLc1U(XWP@~w=?BR(WJM%DN!XEKkZmDd zAihmG1*rz|W@M<7nocBxi5hZbNLG_7LUf%wa7W3fCbMn>*)tMbNzIToCQ45E18D=2 zThbKdu;loY&$MTRn#lz62RlTBNgKHl`yur0=zEDx6>W$WWDwPkEfJq$(HkxYEL(xZ z-$^?%Lu6UxDUgFBtdc$%nT|TGInJ1kUEpCOlwH#6)VcB6=^vnaFBNuMB?<*I%3v4BfKBW z(=x}=Cz{A!g zMw`O9Aux9s>`fP3ZMLszi~#-2Cl?#TYP_~`7N%P{b^iNXm*v zU{W|m)9sJdqH#(_N(9)Oh$Qt`xN5#Cz*d}Tr4|Fu^%T?j6u&enPtIcIW7sOTdP#zD zJBqR%M9bb9>W2wiz65vI9~Vlj?n(tTpv&)^g6pk1ltcbt;5Z?T&wx_s3y6N>*v_~oGm9$4j*44B}C5lpXUvjb|oozl$ z8i0m?pM|5MTbd|xNs?Z3&Zrxp%1?tBDHz7pOn4Vj^Sb3=E;5HJlxX0)SG^-H-;3xF zLNXOs$Bs{M$aGatFc5nz$#1>_vQ(0~BF7EA+7K|Ub{UI%5-CrYz~*Q^?mO_G7&8|s z3;O0EQeG2mtlQ7-LhA2aWksx9bCvg8R4*_%KvmIt!O!@NBzOIEghNDL7ye^2zw3j? z@Fm!_{3~?U#}CvemGANU^+*}Ril3K{DPN8cq&-C1B+tU<&t7;MPEZ&X3?_zu*U;78 z`RI{;+nz(e$W1&_2in8OZ~dR6B_Ln-An;+&*TcrI@eT<0v6oxnmVt{<$FAOFV}S__ z0D}RnvLmY6ay_q2X^`M{Dw+@dHb`X9;}WsHeuiuVL^F{4=?Q2#V77!FwFV#yamYX7 zz;tD_sJ5O@GC!(Fub0MfGCZ}>E9LQN=~l0g#KY+OJH_H*+$x^c@HmKlh}G=)h602Tc4uS4 zL#+FtuVMekW~2poTEjUxVm*T|7m?CO=AyBcHtf zy$Bg4J;C%0kaz>sA7I7-pfr`TfGz^S3lJ4SF9f&+a0Gy{12hOA9t$dIQbgX7#7V{Riu>WBE7Z9mfa9L8=+4FL4*AGNDFca|3*;vpIfwuE9{N{aaU0A^R+phzzziPE3&u+z&@*0 z?fJUz0Xh_=?sxu^DwdMp@Dp zjqI!l9hHo{X-`Xf#ME}PG%uiixZ6~hY##saZi6({qrDPu*1&0|)@)wh>4xwuriR>0QLeBzb(5ZeflXQR7f0Ov=0?XVJ| zsqL2CeQYe>H3!T_5w5$Y{b;o&e?lx*|??gbV;X;MQImedkWJ2&@^wN%^BM?vX5<+ zJnp9Ujcny3T8`fx1MPjYU%zys*{cS6SX=Zg1wc1#%yPtQ_Ya zGBf)C*ayvg|G*AX<=${GCSfNHxSYiHGBDYZyc^(u23SGL9t!hyiCm*#KOneVz@8B> z8JpRuflP&9qXwD9j2!pC769{CKCl6Ri_EhN;BTE_YcScK)0UpHg|%#JW?N?Dd4Kh7 z96W9R-Ztxh;$G5XVHev{_bjhz`wicn=-2|{?<&RY@{<#2mJ2@#wYHr!iI*t1sWPv! z306$8EH0p#S!Fv3Sqi~Ku`>0rjk3aulSQCiNu)v?nl&Ctqf0Lx38g`>np!FoK?5>q zP_&wQ6q6$RGGu&{A|exLUxk70v>GODZL+`@w_w{d*xtid+zb;wxAl3KNCOj9 zTy6ad-5SxB+Oj>GEa_wW7FmYTw%M~4q-irm+Kf@&x#$g7mFq*AY_ICtplumwZ$YYV zt;&tBip#4?=JeZVg@FdPT@?9s!`TicQc z1JmPFe7IG+Zk}Q0W3qX%re&aQ;uY8+R0n_%ul9#t^h5RbV^AsuE|iaSqC@>=?(iw+ zH_VpQoWKkRh7-dMfrumC7zc_$k-)?m_3UoT^i&KhTHQdNpifX1n*h$JFu)i}3^j%v z&rnz%C5A>r4#(G-yN;a6hmbm!Pg2R9q|VZ3Jw46cn@%Rq?R{<2*4-^F(mP2Vq_nq7 zOLVliOG|XLES6=G%*3;|OEI}-HzN_ILQUe1%uC&ag9xF9pu=I$3B$x-$cSOA>dV-< z4DBVIq_eb^X41&oSsP0uX=H6IjirIKj?-PSyRc|slrvRqj#5WQ6QhcxDTxqg03hN4 zUIIB%xe&X^mw?qJ;5877!j0|pyauN+0HfXi;Uta{NZ{^{6}aJBjn3#@P>t0H-I?Km zjljb(wU*iZJW0K~snzW#A+m`+vI}iQYFa6;wG%~lMcLbq<8j<>JB`P2xb8Ncr$GW4sUm7fn)FS2Kb!Q3Mv(~8Ae_=6 z8bl+fyf)Y(T?BH$8dyRC5FY{z=tX=GNcIjwM@d3^elKZA;!=^kr6YMtM)H)6UxXcj1k56%2rIF7(mjY1$FX`> zVuZ{5PLtT7GD%s|YZN9*M2R_OOy4qQ`Hdejqvp7Lw+@!!(%d>*hf6`y&~%HFa@5}) zf=7b1dE2$AH%mc;B;_Xvbx4e94yXtrPkgqK4(ef#D*mN##9HH0RKqHo^Mcc{tZ+E! z4se4fmDpNoQApI|b(j^ZGrxBurr4&i34rZz{ zg`%DoV-(vOZH4N;_<}o#9~i3WhJwj5j^wo9vPyLPqQ=VD({^c?U_s5O)Wm=z5;jpr z_*On+6vPVyFxriFH6_a$;jDHrwLd&Oe0Go0vK|a4nu3|Vg^W~y7c((N*6=ASTqi% zrs$ngFhK}Jk*GPK;QkJ1JD3MF98&|D4mp6$11BZ05D4v}^9G44LQ&#U_&G8X5u`-w zZAQ%f!WwdKt;(6yt~x7Kunk#&);E9cIUGCkNgE>fNS@=ua0-8tJ1-*`;F`4B4$pNJl9n9TZ?} zX(_TG2RT?|&aRNtWkyumZnVNo3XzVaj41{>R%+!~gIQ7u^(`%nl^ZK6Mm%*;2fU_f zxMs@Ak&Y5E!whWr9@_#!t6^2Js`%Db0NoQ1y~CEtB0MiYUisvzaVjw-VdT;na`^d> zO25qh*Zybrm-9b`|C#;A`Jdh`)rO<>{$vR8RfFcuIhznQ`LNyR5$gZk&-XPGZepXm zFW;;EN&s^}jK9)otu?-AeB<(WB4f17LO)+BRlh=izAZ%qi~J$^T}8ztSuc3cwStowLn&YYbKT?E}K)8o8dW}wOBs4Pmg60Jn5Q7Y8c zkwoE5Aozv-gh|H(Vb;Uj=s4&zA+UFh>p>LIMKlpj1W?d;Yd|pZTCdy&w(Nsh*>7Pg z%iP-dR@SPJdaYp30_klQX|oR(tz_QQrN}0Q&ptv%^z{8Gu9&Yxmr9{f9Uf#>qAO7Z z#q`zm9&|AD0<<r zuy&FdmHUI+XabWu_~4(r+8#D2|Gng4;8wQI!S}2S3;jkgi=6) zB!VSS5~vAO**vpVKuVx)(WHB1PkbPK54-PKTb4T`=7OZh{DIx$J%z zlc1}g-CZ(p98bv!T}p=C)u|LTSyXofWCv;PKX!-&=di2+ZbXGA6iospT zW|VY@9UvS%XdbiNf4-+7!2yDnF@)JK8WN|iWB&%c7d3M06@$o4O%<7yN;tS z#!U=_#?YAB6B|I}ImH;8AVqF4sYwIQrC# zLut4%{r5p^jjQ%sWa^)qEt7}2>te$JQZ-Y2$hJ!8w#+BeK0U31OwvC@m(4UwaCiEu^_ShFhSaRom3GM)v zT(vs(uXn`YRd{^l)plmA2A{*CP_6P0OehaTk za!`Xs3Jg#wUbV5OwH@flu0n;h%TNTPtta%S)bym155!z5is~@X4K>WC)dGq=SGOZ$ zI4H47btx&+qxCPD8**`=y$ZECqbDPBP3B=S8;iOd17*9sv&*|%gG;R!D1BNr?a1X} z-2^E3t-~XT%GxT?50S~aDx4^hK`SFstduIza)=sqWNPszPm1&DNlX13Xqm{>W}QlE zoG7bYo=3YrR%pAR^e2~gv_>NC(gE?iv3&Gh*CLFR6QC7xWI-B1dRQSL%nfOnUNFwk zYg$eQq2e=}p{F*zl5QP;AoHEuYtHHzj&=}I%q9Lq5zeq~jOSn=EEn%X)fK`ePw?jD zgj(uJz=T@rK=m#4Hpq)1`j%XXtBHEq1MFJu&zbjDDS z|Mj5ga$5Y4OJ7cIb6WfEQCk0nYAJ^MZrelbG%3$nvF1s~Qig)Mz^GKo8k{NsWn@_F zTC#GJOLAsFywI@E=o(qRRt3%Ycz1kjEFRD`gUgg5l#z*sPN7F@)uds%pvJvcF*K*= zopDfk8Amug3Ydo)<)LP8l;#Mi)tL6KMiKCPjg(O2n6bjgu>VcC*$})5&&JY&mv2;p z$6~96Y($)aM=eka1WaVO5+Y*)fB_R56W|dslsD2QFk@~aV^5K%YH%TAA{QH70UfUK z{GunpS0so0vC>blF%A50M!Ko;n9yEIOuYQUm!mCM0_3=2n3UWC^MAO+6gBCz=-p+7&V96s+UW6S;dCcv_w1}^g0dgtZ z?upd5T)fbDVZuF^JS7K6>RDTUZQ&1_Du*&#q=Kpt-w+TPYOxq1<5`@anP%H+sSj5G75V zznhMIVAOgHpiZ%&qBwcVg{)!O5PPR!LNb(DR)Di{R~(ACIt#hNf!87%9VjmM0574eUZ{x<6i_o(5by=WbC7?q9e2Ucx_1I-0>FsPnMV@RAZ1$Z#a zHNL~;tSV$B#LKl#wOurIs?d(><)bu3G-DgBzH`<9p);(rL7u)kG{gWhWjn1~&wXv{ zS6OD1y?gXfh*n}lAFW;7J!-$^>u)>t?^CuTQ+}LowFOK%{b+*gR&}>sahYA#ztA`5 z&Or!{AcP*!LOKw7H;gNaR$5$Au{CW<-V170Wm;0Sab-cARumf0rl8KMN(^jKP+`cZlKP_>I`6NpzV`Y2EH>;dijcjDeUz1pWvx@4*LM`w(ScVhk_r zL599W7&pj+=MmHZ*O4pJ@+EuU0#-xtC4U~Wg_^U(-58zL3PPvs8=>1v;dxauO<#ihzSupBMwmr1+#4*rEmi zEhjUeK+qNqT-d#g-4R>4hc;!xtGK|O6LDsY@pnx(yFeIS8sbgh^`#38QCUJ)d|4L; zDBX({!gV508mEIJHm{c(trF2@7dSLwtP6CIlUym zK!~#soYL7_#fwnEw2mkYfbw>%T8WK`JmS>A=pC^{d=iQ0=iiFdf-!8z;VLBs(IO_= zjtH$18=*D?39>$fo2No~EiFpP$50bb&lak>i6IJqAQU8%L);0;vrZ)numfEB(WdqgIW*y8ayxfA5yi| z$qXj9sA2gJ7ZyM`g{Yv%#hYRDxlNWU!|((E2F`e%Bw6||{VAeopN}*TB=b%#g-x4q z>7Xe>x@ZLdfNTQsW-yT+rnU%t)YKs~A?LbLpX*iH)Rnw&2LnN9P$IxaUUi{3-ty2k zvwK4kF7asy_M=6R%1oIIrr5}3E{uj!A!IU>E<-66I4&QHqUaW8x)i&O;I%$g1TT5Dm~fkCm?hmcZY=hVTa-HHtzJ8}pY~m4sEhhK-)KL@HvOQ4mV+Frp#hDeFW|$KmBfPEC#4 zB1Gv;S|Vi6uV{%3d{NYMuiUl_xMH)9B zMFv|w;8HklKJ;Oht>;`}rf5Cp8brauTv)OX`-Yrg=&UsD2b#r*FnNv|A3^qT&`ch2 zad?~wlK8L*vj*wcEHnXw{EX<0pmf$6Ba!Fa!$N33&MYp2>&5g%z;PZL7{SAlWf4c5 zxGJJ7rz^18^c_Qn#KGK~wmJ@G6j2oehxchX$=vsGFcC3<#80%df!0s4WGLikSsdkUZhbUv|m;@%@gej8sHIR16;51lsn zC)2g!qYZ~^#e*U(c*ryS%l9+xW%`0>0IgNjHZ}EsHN~sT zwryKqv>I`0^9H!Jeny)?YW)T)TB$u4SbbKQ4{EXvF>2Ngw0CyNiNY(b4sVm>buuRj zwn2{ECYB6S!fB9iRntL(2gFoF2bo8Fk54_e02m-+*;_E)Hb?67u zM#0ddm%%29FKyLxBEyjuHeY*0e87PR<1*lAsJb8xwNhCYHAt}bMTvIsIB8)91P_^G z>(T&$jZA%v5nVj{BJY{HJ2%QOUn%>f|U`TQqmKJm@II{rR%uTKbb(^Mn3Ja?Bm zA?iA7X$p?=hjt(@7Y-RNq)NS*pr>NN`e<3M5nwP+E}w(%0tG2rQ<4^x!Od?3B{Qa_ zY*HD4Fu*y5ps2m|Fq9FD1~8uNS%%nYd$CG)xOCYro$ks@MsX=>bT$fB=p-(;NMDhI ztfaClk;iFrL*|<7EYPT0}DivV!30U~8)hZAj zfPvC=Zh1D*pa}{PGK>h+3oSwZFi=#6y=aK;0`j~bBR2_H(2fpgI77o~s4f>k6!mur zc%{c245k2P;2IhS@#pNghqM%wG)RgVOCPb*8W|dX)&dyKAA@zHs^od{gnWA=bpd=5 z@Oyyz24nY+NOQxSK8QY0Jr23PezyY)FRto$RScdO1QjD5-epvLLb|%-lfU=ga#N{a z9_6f$P5#mM7$4LC@PGX>M6!XL-Oyg#lZ-;JmFwAa{j5r)L?nw zS3E2?&9M4Pb#)sPr>ADHOVt&52jmypLCZ8&G?K8e)RzDDOXC!1l zUO63RQ`wXDWKPWJ=^;6Ok`i|4p(1Wl5*%3pytgO--NnS~cuN>4-%ujO&Q+UJ41P{>mg%|G|eM z0f$h74xn@)Cpr|XsIW?oiJ~ZVBDDXn;BFP<4yGBMMrB^i&7CB%I5S;4DTxU5yfp7*#8{i>2`oy(&F`_9a0cDeu zOtZC?0W!kXg1XQd@L=S<879Eh=GBGm+YgaU%PbMH$cuS5B8x2670Qf2Q9|f8SsCvF z$S}(Wot?5N6#zA&=fc!PlF(lhx~n-RTLH2u$$%5ZPz!Nn8{5X0cnuGMY|HUL>Y7r&yJ2#J@{fyv(A zskk&cY?SQYC@*^D!M#VF0AB*oUonAvE`s^~3*jIO;6N9|(yG~Lsb_b_&tsjrP*qXKx;r zgTgSO@J!r|Ok&hRccJ65{&EhwvHHSf{<5u>R<)HG z5aP|n11Q=Pee-!+Ac-L%EpPx3TmpDX;ZJu7{{m0026%@G1>H0Rrp?ONFS;m0IuMnE z7$vcYv=L^uGP7d@ge1ptzaywIyf$h{3>+{?YA}-IO-yA-q*-O1d8*SQQ!JWUVlawB zHkmR20edIHt1pF3e+tEZ6<7Wh%y=r)P#r*KU?a-`&0rv=0t{d&^8pU57AnE?F3}xe zhBbqiSSqE0BP<>LV2djUCBT*fOmKmqlu}NVjENVBLS7(6;yhkE%f@tGCAH$JKtmX4 z2xfO5p=&kbRF{fHc;{D$!FZJ=dXz>qdsK+#n#vw$%Jt%7y2q%#z32{F4@dl?pRF-nVJy=;q!PR)gZ zY4;QmifJ~0g;_L_>V$^^F0BRD^<7vdV>(w*@pUyWqIrxq3b%jU@{lhWRjxPYiuiYgU5+uhSN zm=+f6`>rZJ2?~JGks~p5xgjkYj*v3AVLT}W)RZa)dAA1nu!uO*e=Vhnl7?(!BSA3G zHY8IzM510Q6PgrA*-5HMB7{4PxsFU|Oz%}l*;Y(l%E6SRV0Md^%c4(pqUNb55j2*f z=WM}<&%6Q;l3TL$Kz1ET=50=gL=dAz%#hG3d|+tCnkckapXmkuMJqC_Xc||{$5n;3 zSdjRM3EKHGGOf52G#St2Zu}J`c%PW#J9oaNGBiRXCzu zWLwSqOKRpXT$s01-P*=?^!Sl&VhYf0C(Lz>j%fXiU7>Xx_Q1)8F;(NuKqAy14u^R-0AgU$Ml$*e)& z@(|Iwf>>HC0wGLmGM}Dsikdrjyji%_wa=jP9-@jxP~l#ZmeIjy*ctw!lNDZh1LDAB z-VGE^z|sRTopPcM{!KRX;gOm1%!7_sS+(?z>JR6lZh-0OTI zgvu7M?H$_}w6|%J(IQ<*NR{WEQcJ-Y*<#aerK@w6sL2`a5!%6NuGL0R^Mc0jpDk|M zv9&O2V3QKyLf@N4wwCShx7)`_!q&y7sBFV>;QHKvV5x^&mE4PHn$oSIi$eP0qUp`H ze%i9h^K2C$+i{-lw;u|_XVx~PZ4X*q2+v6Waav1q)n-b}m6DmV(v7OpMXP8wluOK+ z%%D<%S_rgjNNSLfK^go^lRA}2BYh)^V6^OMIZ`dBtj@NzVbtZo7*ClX!G$nv2-QMT z0?kLILjzST+FMj6zqEYJvKSSYR`jAc9I$DHppo%-2TB{iDcvyJ^EZzuC}+ZyOt{hk zkye{$W6;F@&)qMg5VNcrSc0{)V=7h{0|ch3f79Pew34)ywILDVppEumt|KPRC#qRa z*mK=R`~SHOapza^%o7-vWK^kZPWFgxW8LepXr+fpj*-cL>}M%~Q^81*m5mebk*<>2 zc|Kg#H*kz3@M$O|HVRXD;WQ9*rMsSe1b)-oFxZfap-P)ELXE8OU*<|T<8sAxEofU% zBgOqNH}EDDQX!Tm_WNqhy?`-CtM->^WBD8wq@by8mzG8E%C z2;PZGhuRC285LlL9ij~nw@<$pJplqlEaMLtQCS>PK>H6-rocQpD1rvXoJx}fiSQIW zJOU&%o$7V!vq{9T^&c>6M=v@KkZS7Fwl9Mijv)Pj^ZMDb!O(01Raia9WuY*NF}YT7 z)D551cEmR9U`MKY#z!X@8#%NZfj)_1nb_Xcfk7JE4%zw&^fT?Pa;Dx4fObGgx^_JS zX%JE9J*C%=L1%VEX4^!xFjnoVl@`J)ocRl3dl>X+uqSQsOX0evd5MbZmGEMVcaU2_ zBdV-sD$bnnilNR=#>@*@3LmyU#_;mPb^1JL6k*4f?}wf3q(@9vpMKb0~c5Z~v6HcRmM0wmy>HM!UuQZ<9V9{Xs~agh zv{$huIRt8~r+>AIRRQTV(({nj8w)JWzDU94xIYg!ut5y+BhHpUD(CNfu{LqprCEspCN*wT!H3 zLI9hOkm5aRDa=+jwLMum6IMJ4F-I#P|I?jD37A|!c7{P$!+@UOjb1<6Dq%-4CvBa} zAC!f(S8bu!aECgFz8XCkU2|>f3Uc^JnHcgRAkW@`+AS3?Ye8^1tIvCuCY<$C3@42{ z3_~qc0P+o1i8U8s8mVpQPZc83RSsH7M3$KD!e@yqE^`87Aqw~iT_Y{KH{)@z&WZ4- zQc`NKvpxl8LH{)Rv#>GRwY{v`&fOFk_1_2qs+%rPIp$$()ed%>8$q_mv3Z=1ZS}mz z`&(SAv_bWEm_b~gK|YJ8;IuS@bLk6V2FUdg?RcZTmKa2A7K3c6+C$gqb%&`gx*@G1 zjwAc3<$Ar-(2{=;F{>0JqdCB;O`PFi#t^1si?;KnnJD#`0M#OinnBOJd?035!KaBi za|(*)q*Kjl%`@3}@pn)Ym>HcVZPLA7Ve4D$*r2%rx=ybL+F{k;*t#x(o!L@%bfac< zRQN!Tt}D?l%}}P(NDv3K$b!K^m|jdG4W}LI3w1(6MQwq)0LY=6b6W&n8!*k06UB>d z&x#X)t2VJ5oV`+Ws^IyXc!yDa1PK~%M@EbnpA#4dTQpXoNjY~31L{t%inMWE7p;3n z5IUd}QKaNxd5z~!6xIA)R`3;|5h7v-Bhm0J+<*w^n&=pdrN2~$BsVqRNg;<7Q>$X$ z2WokYUOF9NO>zb*b2tifadEEBH6^%s;OIDC?CmR0yQ`vs9E))+8Nu5Eeb7285x$*C zy^bCSk;2kkB^GZL!Yw_(9W;1e9}#|+NrYTCI2ekVjl2)2GsWEFS#^s&dUc^s2&9<|x7pD1gnaTw zd(0ALat4P`oYIJVnDMCUyj5Q@9qa&zM4G%{qybal5>qaFFivNlr(G;2uF2#HH2*f$ zGkCKCwyyL@U8oV2>0>q-Ls04h6#tc_-U9U^om95IzSE z0n!P&+y@i_@_8Bdem%G;ms2`#mFFynPZtj|Dd8*Uaeq7Vg}di!8-;gSG)F5obunat z+9JXZ0^k^}FaJQ?@Ml_+xMOcOLYqKX$Gwo@YLaF1mX>aE)<3X9r`fU)D6t7@rU7=3 z5FbN24W^?_iLxTBE6ZvciZp6ooy6U|+VE;xN~>xip9fQ&WAT|2b~CHQ3qch0ae@Okp+}LY9uEV=&;eS2#$^?0Rnhv7bBth(nCyz4yt$xg zz5yVTDII^Y{OvgzsJXtJvsU@4`1H8X*5W6SIp4CtRr z^#q(&YksfOh^^MrMZ}g(8*yyg`WruOtBbvX5fXo*+m79r@*buxQM!I{o_T~jmNF`Q z#0KH@4Y3z@Y_WTtB{DZqkjQXLZc*+kQ)uqZOVQO4N-EHI0j}C5! zc*%WF=NiGKYeWQGh1XNVL&u(#0d@SN$}{>#)0{7PR6*{A;weu3Le`w*Dlh(fL-EV| zK7Fg(ft2!})dvkG{f9JO%6!`x_dl(5y9*|DW7)@xF!&S`6t5uNNgSp*+shUT#ZIE3 zwT(_8up~BENjXr6l9CHTAdmkbD;a93+1B=_#$m3yAJG!h&2lPVYl}e1jRaqv=Q?;( zB+ow)qNAwiFI2{Eo}ZtpA#>m4-q1kmD{I>C<$QByr@G>eQu zLkpwCLMP{%4<@{BiK?ADdqB=rLgAyMHGLKEoC+e%^cFabB>1=TEEX=bLU2%9Uv(%5CVYu#`aU1932R6YoC=}0!C`26skqF1&J9hAgFvm3h4{hJ~AkW zNeAi(Uw$X%;D^v!u&PlQAiBM$-Sk#Ki>GM(y>0Cg9% z^^HejJqOSd!x~>o5wZR882v<#)RVvoaf;UxLEc1PcG^aK9?eRsmnQS}4&*`%x$(fS_2C6kA&~+R%`D z&5;u>HYEZ03-Wr4ptFv*rc{!)pg|H9)E%{Pk7)yq&LQZ;!n)^vPJl1?-Jt<22 zfiGwnRVF|cH(1QQ>-Haaa2`9lM~D>N*DLv;lJ4mj)B>eEBaWAcXLufV275c_;FTX- zVcme}=67fvup*Z&0e2(Vl+2%raMAiw>vxUMf-^*>dBz_gstv;Ye!<0F$3!~bO3ID; z=un&3x-c&U*p;?Ry+@KL1LjsZRv#}szP+^^ax*)!3p}WlL%GDf&2AFKU>uDlzJl3uQ}&_EvV) z4&vCHwL@Q22|$FqMk6et|3d4}E`bjK+xE5KQ9mAM-Odxp2;$z$LpHDNB-*mK8j|QP zE{DE2RugpGYT767Q618eH$QVexQ^pbpKiyzafmBc$A?10<|j)~_K!~$hkc%Uqhl&l zpLr0AnErJXFntLLJAB-CQZ_gC6{*-_1oY}cRAUtQ>Q%{UC~CDvq}VeNZj9jf3QRq&6U{eMN0}sM(sT1%8G` zHo|n8i8xAb4l!`d_U&5LyT5{N#D5>+S3Cn_QWS}{i<|u5w>fLc@2I%HWKG+_Nmn7{ zo1Awxpn<1XCMaK? zW$mj{y$i7HwPkC6=oGo1S)UZdHYC$}pb2oam|8-<_11hyp@EB-k0DA~oDuc)s?bVfNkeXC%>LFnTU0p;hAfa*#^U_zw z2blmU(9@hiif6#xr(Tk8I{zHZ55Uu$cW)8~sAGYaV^ZXG6RjN}iepsm`ouQ9Jva=M zx@jvfgz6u+fmoSNT4kc>_rMVn_~^ZoquLRcq7vM`Z1~oHBfd;V%UA7twl2Stqd3ha zS-u&ZmXnmZcz-@jK{z9XrQeJ+gN2i7ku+bgL-cnT*5liV1(lts>8&Bz4kHanLQ*c# z&q>B)$tWrr!Y(KfNV|y=jJ+ieg`#+o@lc4EQan&DC|Z%S3yH-Lu`!7bDHD$nh||WR z7PvxSaGQ`b6CVkNq+DeB672*Zhg?#4OxMu@smAI4O(BI?jWLluQOd zqJ(4uCWK3ofcnLc)Gsd$3nf7{rAz?yw#3N@+i-WZ&)g=< zm4-&u^>*^CJ$Q-)Pi$fl1lH6`(p=eAdvBFr*|7J|AhaGX2*UCO>yVh@l0?qPFcFX$+GKI!Q=~)jS-!y!n!3u{2(?`5a;-=}EgF@L1ee-AxH_omQp)EPKTdgWKq0zvPq@^DOUwXkmGFHa zn(h}Zv>5fd#|P7$nzA{z1Wvdtg6URZ;sh5;gYE)t^{@qQN*;mf$o}UM-=%ppXa8t3 zYUfegrGKtbuTXD`fPD^~U+GX9U}|3JQ|e(cccnoIn=0o{MX8GwzLh9U5{q3q-%M*Qbf_aUy;N1ZV}MXP>9AQdH#q)$Kg=wgbf~srfNj%}Dq@yXifmHMC=GgY~w`QEUd@6xY zqdukro=DkMig_S(IKtH+2u7ffkOhb6MWg_bsv_|2aI%QMr*p(HNPH@^C&*f)17!?7 z{iD+mVm-(fGHf{k0jZpO@C9H8d06%h{|**J=o{fTt%^0-+xzqg*JhpHzYO%N96|A( zlsN<{>J{f%2Xy&3`e9Tu^)swKo1ZA7t#jIP0+rOIz(*+bb>h%$_g|n``8NU1|&|< zu8(VEq77iP8_y0a%paet-}$0KnY<7l`2n=nSGK5HCP&VjIDF z0J#(76QCX9AHg~Rw1^J_=nkYzfEPe1A~At<0Y)I$2cR05oIpJR{)p-U=mTs{P!51L zVoE?d0izP1_dpF13xB!*cN3HMKmno&UwQ$Hh$#Ee1z3R}&VXq|1pMd&(j_P7KvEGY zeslmI6KCI`6EOmv`T$)M``@4+*oQv-0M|qk;3J?gF+Y8}0B;a4+n^hfFx|QXkIu-W zJK{cdJ9Gi-5To0mHdvp|-2nLzW7nV$u>sD#0H#Ey=Vpd!26LI|?XhAZPp?20aRwf} z0mTpv)1VHq4jz2~e2GlXs0{7B+z;o_6of%o!3!vsUmpFnNV4P3eb zsS!-&&I*{1oVmkdAf3yc2Dpg6T;PDj0{L@;rXsQq4>XJ+;m#kVL3a*tL&O{SbAX)@ z{lA<7*o}Vva85*E-_8^$jUC+J-ie8~oH}B0w)29S5TlQrKjIqL`N2VmEyd0bD1lxs za4y6{!Qp~O)+bILd#BX5d0{$o74sZ%Y3hDEK z0PxXIoIh_rlexgy^Wt|n3tkD+xx!|6eJ1@_1V|1f4Apolo6Z7Phh)yis(pvMIjA(1 zTryuc7+xSH^M}ph*)PRbv1@{Pz-sUdE4Xnf^OfCAXN<486Dh9?U1 zg!u3*=S*-1c%zTb1xv{F#c9E{;8Tsv4C}-Lh|>n+$z8|{z*9UPICe|`Cy7|xz|VNB zj^VV{dAEn_M1PlqejhM0w9rH5#1q2(3z#*xk%&CO+IS40^8n%D70K|y^6^Ipm>3s; z&Id3|yl1%J97gk}fz5`4$Se+Eh`fa$a|D|5O#_%Z-W`qqs|5Fm*8IUdJcgVJM#dTA zMYk{{9wd#qgMs9oHe+MO?| zo)JxXuxe?h_sGC3lflD^!LSf`&1uXSqsbA(aeR zK)hkn^8_C8B$t>3_m#q4V1+ywCFTM%!m-AwgSU8IxQ;M>UJgllfG>D_Nz4_;lL}5? zZ#-+bH84fIkrDF(D)8Xrk?ZwFkC*{N!{R<*le}ON^8%gcaxP#fJnKcw9+UudMdtr6 zB2e=IW#9rHU>Q6gLCgv(%}6igNSDi+=LIm=pYm^cX0Y{1B1`ve4vLsN)zP+>%f6NP(3`XljR9D<2gQ1P~Hwn@`Fj|2|iGY zc@Zbd6GP5&e4rydlau8EtIEP$ppJNJCCU+F&SG4k1iT8#a)Hs{sFx^lJO#*dgw*g5 zLzDtnlfoRJetA?wlm-tgt|1Bvqrox90xNF_&SnGwM7#|+T1<`)BnR@?Li3>EFt}}A zecTxq%})UF{I)aR5eM?v4Djo43|llF9s~JouXwMBq?s1H0tfQg5b#z%mcW(c20xa> zSA${vwjtgjgSl)AJUtHOvS{%w9m`|`$fi920u;0WSmG^#W`PjyTLBFQ40*T!6*QBM z<+6Cu@*T@${L#>NEtO3jqq%HCw9sQP01a`Vux~Au!$6IXQ~)8HNnqYv1D2gECyQs< zpm1+3fM$>(yr4R1_&1jvc7Z6~Tnfz(tbCUQ#(}urTqartnEMvMJ)op#Er)YKS%FDx zHrh@@Ic#t=LNVbd=(x~38Odav(0n--evVo=269-LXy*G*v%^7jXC;j^idM(mQ%=o| z5dj?03>nA(yGIKLqDbb@*<+$5g4T+GoR%vZMT}_4hbuwg#EwAxXq{m2AP1Ty7|WV# zhMGHAVd}$x#e+Ej189&J$b?f!IA0}&7L&FIf?zLbf)~kvD?*@OAR?MV1@ZvBrCKYH zBuy0}xd1TGY8A)_HjxH0?=_Crk2X6988wG-Y0^Sq*3u|fAOdXwMREmgp-8SkkZGtt zAQ##khyMXzXbc~d2F8`_WJ(5{Z$b~q0CPk@{FocG3WwwfmXHDY04``5VeOd^O*Mn^ zShQ&PV>9u8ue9q2oc{y=Wf6u>;SI+WJKa#`{~S-WT3)gsBbsOhjC*< zI0s>f<3!WQ!_kPnXqOBAI8e_53&;iLop@eAd^E`fVxD5fOp!D9emMNF$c&6LbRHO zm010!YJH#pf>p=Lb<|__nFaA%A-b^G7a&EIzX5Ur8Cp6EkQ!xX;9P<2R+56`2GwXF zT!F-`rv=CiNdfDJ2U!Ey#dv~Vs!7%P`Sat9e$)DIvG>dhcLfLvDdP;jFbxQq{@ z26BKO`CI8&)q_+? z2nRKB3Oukx8ng%wKnE-IfaDIPd@2GY2vV^!km3SOT5h8-fx@nw2Otks@qlsz(z2?L zES@&3U<3U_%~(nAAP5T4p8vp()yjS3!L46kyod*i;ePT0QCKV9Kn*KT`^X0Bu@Ag~ z3jO@#0Wz@9&M+ZWhP>kmSzmw7Fo3HO zdH%*pSMU^(9N9#^an}Q@8j47b%%~qY@#0RtafdXli{BVEULtqK6!l=f_`#|tlfE!K z6_UH-2AF~Gd|(`_N_WN$FPpvbgDG1#zAz;#jJx9mky=~6FbCC;J@J9Yt^eN`1IqaR z_`*`IpWhfl)tTM#gZW!cPnot53fU?tC=3;(9r1%stmW4j7uA{Faf8WNf37f&)xG_3 zf^4m?*Zbl^uZipZ@^Y=2*B%q<;C{Hl8m+O<7zHI^AD%FeRigRh2g1CUo-iUSOLN8@ zTDaGqFfbLgx#I{zxF4P{Y^y2r#t*Wy>(3Y%D%m{ogsoq1&ln?>=;Fw-_I4+nu<<_g5?1j2^1YeE7iNts|cpPAc2X_`*C^n9qz1O8#R%D127>&x|5< zXNG)Wn5%E+#s?LD11}%$ti_iY7fQyaUOT~A$1X5tD;zHK#2mIU+2YvsYFYiG6`w5Q z#fVZ_#aJ4%5|)6gXub7k6=dq@n>ec!Et4$buG+Sm&MMj;Zd1is(ztG(D%jN$l<`&) zt@o#jvSPV?JXPAO02J|7PzeC1im=E}s|+h((ZyOx zT5U%aa4OPNaaQRok7(koIIbT@6>{}t#T-@3t3J`iUzn_fOFinN-r%5Ey-mB41=tgTjw zO~qerS;lTE*b31(xU2V8ew&K4$y*gS6=(%*`M9e`t4yZiu9;dYZYtvSaeUlW$CZ&} z;;tO5t&@trPAb9b&{A<$QqKTM#au;OrcNs1D&YAz ztKU{flZv^;TX!cFXk~Ma5iOA|1#xtoRe@EWWa6xcR+&k~T47(ToK?fs_({cHn;h|d z(fF7VT!eg8*cE}t#au~QJbYEVE4LpNd)l+8_^T$X36F}j(z{srtKC)?9~EJev^e;y zimOSFint1}#C%ostAdY;v>jM-J}TtO<>KP3%&Y|$6?SUlBI2zISLqiOW@URZaaMd* z){Bb1#cs-ew$z?e@CGg*;lQ3fwOpHUQnLz*2ACytyj(z$t8l3}2qINvxOjoCt)_>F z5lY(d@d5c<0}l{5)uW-}0y4J39w0a?mczscg?_N{0$8uU9w1VC5FzsZ3gi?}1thEv z9xCE0$>HL!wyxY9Rf3hBLBn6Vu^2dOV5_u)hO_FiI5=w=BU6KhxJCYw;rx8{w^rAU(bs$*Ac~ zaMr;6gIqO=$n1>p*1)JSXNI+^Fe#oI!RXd3@YZFc78&8Ll#I5|4Q+&e)_7~MMlolG zxP2X!o*LnAQGjgl)&rv^vBO*?7$nCHYUE{RIBU_7oD6W* zE2A*6!(EXW(#H*Dq+sSaYckQEOmNrdMsZ_?w&E~ZjvB@2$V_n7ETeE3;jW&Hn#T=n z#Ao{)HOiwrFT+}tjagrYzOp$b_-i_&764;FoWED$thS9xzYS(eFb#eh{mAv#;jChe z7GH+4Vlle>HM)q%W%z3Y5yzL|t-_6rUxu=(I2HJ7(b2Ql;jG|CXul0@lzMgeYc3-z zFT-3gjLlz$v6UGKej41U!FBj+2P0Rn!&p5>FJFeUl^=rqHLg*_7U8Voj25>IcB(cy z+%p65KV%sKNEPYip68R^hFvj0anWvT862+%>{z#3i_EKhcTS z;jF5U$hQq=gku$WYd`45Rd{PzQH>Sht(J~XSBAMHY87~E>(S0i@YXD&AFIP&jTpSI z4Qe!Cb$DwXi2O?M*Xc$}SBAX`F=bvF^--@?;jDI}FI3^I6h_WL3@N97RN(>YHTs+& zsYWuX!VU^I!ki#KM_Vbv5#l;>oB}yIGWkvc7}*<5P8$4_V#1s?jp*4*aMoK!s42r- zZ5ho@8sgMt`TRAo$i_$T*2zZcAH!R^HwpYTgG6PWvhPuRVBlv66 z5xoijh5^%~WuSzNogHxm1saIPq5L4eMO{CH0Hi}S{ty^ZNl)PcvM(h55P704pTYw= zD1`11s!=hH;Ru>9*zORbB6S$ed$%L8OXWZwNC{7sl{_q=|fQ z2v#C-jo=04irkWcmh<2nKOVYBt_FW1HlyXX8<#iIn3Y(`YCkI z0CCY1OyB^@CN$0faUyYkjiM7=YB6ex;QI034Onr8rgQ7+~11ICGNUjTd}jtk%dqA1yX z03f0zi{JyKiB4Yt3DFaU@BGHv01Z(*W$*=M z6l}f#k`Y(s@Bo)Y!Y_anXoRBp0y>HGUjRucl#=)Z$3$)~fCs3R0=NLaiB4Alf1+ZF z;07uud0YYEM6#8@A3`PBTmVW${uRIuL__kp07XPz6~Gi~CmCD-xkO}@z!4-%BoM)A z5bRd~DA6iP;K7oK<12s~)K2oa0h)>-D}W`4hox`>;EAm(fHo{pvly=%I7KE`004DJ zXF41T!fCI>sO5hLVLS=9Usw(2R08ofo1U^gzO9gNNE{S}u0BDg4O5h36 z6hT}7)a(DnsMWjyvERi*d;14P(5_kjhi=s~e z7|~G^!YI8(94CMl)LsPe11S`^o&buG2Z{a#YA5kO!ET5gPY9&4CD9+iq=-yM@G_#F z5&R3tp9uaP1VvImfH;dxkKh9$j*DqN5M|7Q{mV|AwLw1OEY{BPjpC0ElBB_%V?i$Ke!v(F0@u1DYZj|G}q3(GUD9 z2D^s-3zJXL zzk>A8U~k~dG{qbEJdF6GKC>zl99Y#4qq28XpV%2GdbkzrhM=E-&yy%}1jD1OcKTzrYx1 zVi)*3O$J5&4EOg%{vM5MC>a+uG$D)pCc{jze}sI~axd^0jV}fM2-8DgzraH@>=*b} zn*4?FWOGwde}`G5IA7o(G}0IBFuF7&3;Z7DnPUG5fuw|A;6*f%7x*+LkYRs>%4l{k z@afGo;{O5s(`;T4gn6m7U*JirYG=4jSA5}gGg#NC-7sM?S%dVvq&*Nf<)8KC-7{VVhQ{jrhx#T!B}a$C-CVS zo5cPR!%;y$go&nf{vD>CLH`Mv zr)Yn`s%mEs_)v`^1K}<=4Mk!924K=iKj2j~fCu~~GfhDMgS2U!4}?;pX;dHZjG8FJ z{tcr@aQ}k<)Vv??FI&1p{sOtF96#Wcnkt9cD3@PjnUhx{X^ zrNRFS^wz8&@Q)gMhx{2vrEvH~8s>5e7Y#RIeg;vf z@IQc>YPkpSeT^~!{0U=1s6T=BH25(q;1NwE0sI0JNl-t6I5ejR@K>5&f&2p|ok0Et zBT6_wg5jl*JU9R&PS`)OQ8Y#e@LuML;C}?%XoUbjaHa3>Z=V!7zXN}W}{3pjoEOx93HwWpnoJL8fY1Q>W3zRK>nyuX;2Rg z>TGI&$ZudoYxEz$6E!Ud^ABc)20r?s@vGo}0Dx&)59SGmg61xJ5GkREKY`;lcn{zq znh}Bgmof{9%rHo5YLvm)b`vu|F@vtcVAQxjs^|rfK>o$aq#!@ACz={eFm0VQDF^T| zO${La0C}VUAF=jn3Ip&AO$Fv{fTO=CP+A8JqfP(dIB+IS4~$&(PoqVMAF5}XXBZv8 zkhIfa&C!NiO=?Mv?g)9Qyu&EJUBZw6KO{*s%9xb%1Cvl8hDg#4B>?;g6HIU)ftG1_ zX3YvZt-=HN95$d(X)VGc0rI5Tp}~W!s1r4KF_pl3G>n16 zLIe#e3@{iD8fa#K8^=VA1YazR+x-t3FAoMIAsT>g0m;kZ#Zaz2g;cSg7YN#P=agRz|4mP z6GB4+h`UN@tOvlq%?}`a1~I5PfXohwj|@vgU>E|%hYT0y9;Tnn4$xTRng|%K%rngk z4D-r_vrzLZGNrMhF^x>As%fw?W6GC?kwysb<2!2{-YRdqeXhg#w+0#$o`GjQD7ybfx z)QA28x@vF#0!YxG|1dwAdjG(Mn)Uy{B+U(f>=VYDpZf-xrnmio;AyA-VEi>Z_Xa2z z{p=hjmj8PNiJ)KaVGf#@`}6?}8qW+cVQ|bK7#3a`QbHel17|EXHbnbj-^8yhE$ksA zo<8;nl1nl=z%IDtnuec$T>2#4AT>d;ERwu~HQ^d0-yk&w-j0;{q?kNx5fV(o1JGg> zl2LozL1`s7-okW9C`I9mt;O-b95)H~^VS~w-UNbKeeRSYO2``u8I zLw@!Q@=JdAgsCP11ows*liY+6+p9Q?%kCNws7Pdrdk7gP-+q8XCQagTBFak zVEo=O^kbVVFqwUczciF1>(vkUBmamvFQKm7C^= zsN)hakQ-4rP$WDdoUlR!k2>`fWKv0>Ml)b4B}mt>2NK4JKUhc-#>jhEO_G?9|5!VT z9vb!#@=Q?(TMBYgmcGWoUL@fm{k$2;F@CU`b%2bOF$@+T;zFV%EE^I*5(M@F(JXR5 z_6|Z-f)CacvPM!6))Epz-FpmNk(`Mu2MHx7tSCjWYzYg<-n4f@Nn4rTpf@r}ibmMQ zF!V`{>NwA*ttccZ*RW_wOKaE;i2{g}ST)HBh!)r$1d$DU1r(AyUco|0BOouZ3lcDq zw@7zfl9rLW31rJ8XCr1{X>Z~^5#&lej$g(YgvSeEs$*ZJI+cj@9H-l!jwIua=srlT z{RaedKe*9G%Qq4vRt31&q8%HJ)I77e6p%)3$t3_iZXQ5)tP3EAqkGcKd1%1t=1&VI z<^bHh+&_l64^f;0yz-gWX&N;aGdh1#vN4((j#Cs02Z$Zvg()HNeWK`xKuTbv)Qo^K z3_AgZGVo2M)1GyC5#`gFeiwuXJ^Ttj`!F%Zhpxck7nhvS~1v={`GmnLcK79;Lx^pNFnMcxUAYn*D;|YoDBK)iYnc zH8oA4POLU2+YA-Y;1?VkaAF zWb9zaE(&sUgWP5DKZs0oiX|{>C9_`<3`b%Gj{JP^V!%|^iv_r$$}DT-w}Uo7-$q<* z;*8tr368l3k{LOIjD63{9AjgRjA>v=#TNlqP<3G@2%(1lEb+&Q1{$yv1vfFaqFb>o z|D!bB4T>-8@i}hcogyW)0qo@cT9LK_)?fSe?J%3ph7thPNEd-0NDYA>l58l~STwdR zudTUqJ4@U0+ehF|7=FjW540tUtIG6@ zHE=&e+7VMio|9iRZBDcep#?A0j;3S4@HKLYUy1cDOP^Ip?uS9ElyvWgu2a$`oRD8h zr70)aDZU!GYMnz@4d}ocxc{l2n^zDKuJUOY14UN@&;#P z!#7)Ada}E#l1u&G#vjaQTQshE@`_&1g-&kE5J&@eZM9&@UEDSu5c-d!!ln`fV|5#; zuc7`eXN*coB`dKQ>w2(;X#&9tWJoV#AtxuglpWcxeUMuj%irzs?+n4b)gsp^1Xx{& zQAc{XQauMaDWOR%Na?jfWgGJE{c$8AUQ~8fu&KXa3$tKg8*gs#C>eBgq7BN5EuDf1r zNx7vBkq{vw{=eD~3JvpU(D8{<|I!aZY$(e|d0YTzqzaA#`UJ%0Kxe-<2R!$;1j3DU z(@>~xFQX8e_Ki{%G|;4Gl7Kf>PR)j{4($2{d8T2kL2Sn`*W@S-6Ci3fOfb#^L~EE0 z8$|#Nosgl)#KQrjTyd$DTW}1^&-@0AMsNm^^9%-RMraJii_r|9yC5{^NWf`uD*(~> zW7FIQmGhtlmqt(xB8sX?z-dG0j@H}&%ZOe8&=K2;r?Y@%aNq%OPVgH}M*M~*9IV1H z16{t8Fp^H8sozYD1_EThHJPV#qiRWP{{cQy(LM zYi2-zYe*9PbOx`r8ZpDGI>_DjVhUfi=r)FQtK`4f&xS9tnj2qZ8FBU>M&H@NpjVU}KbhL92K4fH>(M}VHOCKC0CN0lK4M_+@!v1Ac-i||vd z4+b4zm<#Ix3>{;>8TiL&KjR$E{~PTAUd=Jqg?@-*D~8=$N#(#7XlVPJBo~AFfO*KMN^YkdN&Ig{)+WZ120vt zQF?eQd_*%-2Hs46BBr+*GkEDix)U2Vdo(eP64uV<|X)8iXFsgM=eqrKxYH3Vr98kAGKQW|S(w{>u zJ!uzEtuBQOaeK703;*_1^wkV(_^cRCRK61Z^2H0I>~pCyrPZscHXVw(pNnTH%J$b z30H${#ya%hzgX*`iYHd9oF6J7L+60k&qF&GQMg%LnD@U1{761;#^HOt;6 zAVzGTw7upQsU#o8&5ay#MAt<16lMtq+oj6qK3b3?7+WOgH zWl70}nk~xEK0 zR!&$~U~0~b1?}Nr+R2LytPZwD$_o%|EwIgMy@%E(*^jm@lNN~CyRa(78$RqV*5;zx zqv{LPXsJ%5s)|(zYObhqqs?q}VAk@ib!=5y)NxUwp!HpKTGrC2y<3%0^(rgrtA?ZM zigmQrom)Dh^}SU+QngEZ`f5U{KCPWW`nBqdt%Fj+t=gBW(bQ?1ZeuxvS(P$q$r&iV zK>V9BCCU(z+b2wk@?qpfM7I?DN|aQHwBs)u+9JGcaZ^MZN8cNqec~^P znleMO*pQ}Q$xcg_L8)P6D^~9E_9PNcL^=vdFTOtkGq#oJLAASdnb8 zBpRDWN|NS~@?ptWa@I&+l?_LkL?weXd0iy6grUk>T#}uUT!W{gMcJg3l(MHx87_%O z%EDa`1Bn;qZ#~Hdxm2zB1at*f*Kr%B;j2R7$m}}`bz=$c0k?%u-nCOVMPlpC}52XQ|Ep$ zFcHAX0Z1S~#s_eT0pu=FIzY(^h*`qo9Z)$B5XltK%K>N&#r!@+mMt(rfu;+vP{CRQ zuCMt|(C2hO}ppFF{Qdur!55@Ouxqe4??7Ly6v5YF36H$w+-l`V4H>N=qCuJeR{E< z49LxJSf=<5c^IeIrlf*v$i#rfzWEw|kKkc(+8}g=fnBK0R}PS(<~Mk2gk#c#*~ce3 zjyz2WkX$yv4*l>3y-^&K(gjzwC|(u^DfYh3I4lq6UN!c*r7Ze`<7t!T8WGHH+WQ`= z*%meSF!+>*8v7hV06C_<#~zBGGa^h#x?@E3R82rN%-r@VFiEF`BrvH`h+yJQ$!w`^ zWuf7@+T88pe-PF@H!-KbDSN!&e?T zfIC%2G;ZP-6p=fKVG~8;+gq3|S92ZBot!RhS%=&otZHFL2;vCWhCET=5s;ki$l!~N zElSDj&^je4;yFSh5Ns7LD|k@I9t-}q6eKcEK2vn*P0FlWoBV#nm+}O5qCk+l0i3;n zwUFvD8m-gUjNU1cQd}NT;VH+4(WNbkNAHCM6hd33op!Vvrvs-5vCYf&k+YOUkqoYM zC7b$@X6U+Y1`}Vtj|fT<6&{Jw4l+pLGh%y};d!EeaShx=9&+=Oq-n(10r4!vg-E&d zxLzTML=?g@7D(WqfR|c?f({bY9LA7u3)>Ky%X^ni{W^m^1{S>D6YW`Xn^ z2h}Eq6mwSjN?yW-3B}@C6gN>A#EDodOu0!x;w{=ZGNpWxhlIjpZ0b_@=)jyFzJs1Q zj-Zi=kn1(e8zF`}d?LEb^CjD+XhSGv9K~mH3ZWC+#t<8d3O{9-PGZmB3%8Wnnb+6b zU{0M$%L-Xn%QXevP@Ps{<7Jw>-M`GG&DpI};Gl&#M@31c5D-Hn3XDv=>EUBj>PJyr zmk`apngcmlLjNa>Cf3|{=p~ksg5}!4eAN@Gike!49go9ZJ$k~JK;U!Pt#Yq%+{`ZJ zb^K|n{Qx{sjH$y(SRfB9K-_H>ob@ zh?txYYaqBudc+ee)=pDtfr;_E1$7!b1Y15BX~ilk6@z7?4U8c8K5NHrhw(}+PxJ&U zZza$SPUjWxt{cVL=RsaFqgB{c%E{Fr{gaD^Yz1A~I|DTooOMFO;{j&6F`w^&6~*j4 zdKsF4mkI(J$V2CNnE?_lN@{;sY~Olwcp*qd8pxzLn@>W}7NW9QKr>27iyTDU3@QZK z5hlMCTB~Ms?_*-R8K_)@0C-a02c%0RHWmnWcyKU4iJ*gauej-qDO$~M>OGCiqnP&fz#g$2;fhMw`cO|K15E%qij*ErS zd<`UJOBd@)F&8L@8W);@y(apU9@LXY;35X{I0BR5l;W*IWdKbzrrHt7H6(WFfVJ9? zOOP6cx|IKj3NSJFzA5NJ+dPf=A8xvG+A=o=YaOWeaTcP}!34lcrJ(PntYacbow0?& zGVLlTGl&ySOuvm`BAq%)Xp<2WBcafBsQGY)yA>+*BAb#qHQJ4G0Ep15&`>{5C~N;! zUkay|C~=ZM1Qo@vIH}ad`ZW=aq6Fjm?wtNA1TjqEP1SXFg^kZVL=R5ut`Ple$Ou@R zRby_WW5rx7?$dPS)<;^UolzjfZ(*JvWl?7xsTQ4!H33|mS}Ty-4;8A9;I=IW`$j5sc>O>u8tZ-&n&V@b z0J-S`i{L$Vjd>&!{cs?P_+x7R2Q`}eq)_{ltk}2~=(4GGc@16pD!mHNg3%GvA$X-(9yBe579ipZ zr4V>9c`sd=s)krjQ5Tk3?=L%vk?MsB26Ajt-U`cH=Pp&pzQh!Ud_e{8YUe)sgxirH^~Ha!riL#wRDeqknFhSl$?R*p8e|SHm$d6T?=6?`WETxmQ#WJY;Uobx0B!}ibQ3c8TL&;L zk;9NQvqs49FPXepWu1}M7LE{LW>zehLg=6P$ju62pI~RGWR3=L=2i`t%XhebSgrU> z7#LH~8o-7jQN#8M*NRnIVF1XuxDL#3%zud~3%U?ES49RpZF^S=>hQ;CVs{R^Mbxw> z@!Pi(f>=w?0ar#gE80$zF`&2?_Al72c3B_l~&Z(nEagh{L!TtERYrSB!nhcFrQo*L7+HNhI zT8};*RjU(Z7~>1I`Gzc#M4Jo+pUTf$CKPm8+L)Quq)_<=t=+af^bCl?Vp_1&ECR8z zG$%xeGW}>Y;)V>C%BDc-FZDx0Z*_*xzf4!#V=4(e(J zhaI$Q#xKfQ3B^KS&*u$NDCU)XgcwBSz|_&w7QySV)8x5~U0DHug`=o(3z-Fhgy=vJ zLCe{;R?Rck%7WIAv(~p1I>Hv0NiJvf7F4hj9aW@Gz zc0F5ZBh@}D;OJQz;mFOE#mAY1hgOj=zcpkIssr{fq2Xg0 zQ;DPtf(R@GvMeahErmMWG$g+aD5zqxX|5ebub&ETo#qX<6)Bz`7`>Fa^H1QSOcEK@ zxvacZ3-tjC>Wia12LhMs%2KB)_X+9VRZ>a&fM43KubKiZ5R_947qBfhOWa?A3X0Nn z`4n1nQ=cyE@ODIb_ABdI84x^(F!B?if^#a%u)E&l3mjN50Kptc>TNWCp zI3#@OqJwH7wb=xi(WI>58bzW*(d1fFEl`s3I0O31?a71oX6l%EwKoK{X;h>-2n5PS za{BnqueE)~J;}16MRB-OVQ~&lGUPy)F~{RR$+pqY-IMD9V?VrSfwj?8xzGjcAz&fb zFnhf6Rnl?^?mn@rrKm6iNEcL`_~X5q49vEWJ!9>{`TqLIfm$O-@yCq2Xf#U{666}sUYuhY1TR{N-DwlxLM-2Wr0nY?`XN8uq|7EV*RpcP$gs7~NLM(S* zzUR)xgD?|BUtbfb3iD;qrYT&pjy0xJu1<@&&}0@(?&cZL1b9D&%0#k|TjNXdPUbAh zgvnK3LoJtM>`aB&utdu+2^C^p zq*4(%lq%|Hy{LW#rOemlM4daJ*;v~(PMFB7THU| zP%abH)L3A6vdK86r2@Q_+gJ2=J=TmNYtXWok~h-aw@T#Mc7<%g+@(Zi_@9p=G(^Qp z69iab%UR=+uPAXwfz^GmV>C{xxg1n!FFNs?ca#>t&m3?m3p%<#pUcOc*rFU}p_UXN z2Zey9yPtOfi+gOv6T8)ZvdyCu&fZ!!ffd!wNPHH!o+344=F13^@v#3+{9mAi!*iI7))yxtE5-|pqZMwcL(YW~UAi)|&y zp60(CO)&4??c~Nu8syM00o4YI14zs`m6rru(>G33n7xTRBl!_qk&tD^FOd_sb7OYd z9Almvkk};3u*$`Pm10*o0cWkq*b1$b$U2NYqv78bqX5D}V3|MlhlRZfw-X{2W3she zjU~gd9Pw~jYus502VWW)j#^BM4;%)%!k~?`b7iznC!lPN8BoJ^yM}-i2<4;??nBEH zcPW1nc+~^1XKu={6bSd)va^&D+_$$wrbx(TYu9e9+*w1HisR#pxg6pvkFQ4j!Iteo zvl6I*nH83fI+gHrUtOK!h1b7aB8Fv4nKVGrTk8fllrh{1yq3K>lmV&Tqa=PEkH)hZ zm})((zSlU~&DE`7rwt;Om{x8SB_C{ha|-dyF2{!cS#Ts~4h8pIfmPXmVP++}#l zq3qro)|YF>;F19_=`Q&*0~T50+r_HkoP|K*xs)lx7SR_JuWgE3Dj8Zgn;U`qVpW$H zaaI-Dk?XNyV|1_xNir+rLv61nB!;+>tQ&#}sX|{P_wr_WU=?&QbCj@%T`M2K7|6U? zfy7?~p@Cm|aSt=O{ChvCspv{2webZ7#d%!Lk&=+``D_rXJeIMP?r3=k6-Tji5TErf zdCj)k<3w{=iu zosc&Qw;?B+qOwKg32zrj#w6h&AucWx0W5H{oMvQ#NsE>KLQzq9u%Acz63#!mi=j*m z8M3R*=O|||8cMV5M*80BV3SOY@Va9$DVaigf@1KnSXdlR1mi_1P93l76LON!Qk}-* z1{vZOVun`{{$(>|-()$bq@+M^*Ai8h^Y&bgPtY)tBcK!!%KW#^6TDxnEcidu7UgI-nZ4%jm3E^}pXLBhq#3D5V)o)BOBThsCym!K`E_ z3S!F+#t!&gY6anS&=(VVs`T8{*3Pnt0SHt~MBNzW32h}Af^32P>SmN-F3b!-ScacN zmNTgH*;H2=i@Bel&+i&{hr_VEM&)Xr>xMl$+}mk%C&@LK#;XnMHXn9ccphA3oR2Yx z?ZUP(gUli}fa+J7&+^GJ*nWDOmYm-dC<6U0>CN%F?X9=b_Pg5_H&yo2X_Jv||4R(6K zwvskfk)VH?(ia-yqJS{H$WU;n{MuPD_6j!wZ`0aT0S!Q(5Sjv|L{t+L6#N)UOv<8U`5%voR%r zaKV48umlNw!v}g!UP*nw3=9znu+l=bJEJRWtt`G2L~US*tl{Tx8_(-zcagax;n@Tvp7% zzQu4+WLsnVinsyj%Jysj5~s>y5k0CnU7luwZtj-Qs+slxO%{mNQpwm@GnBwl@R0K=MR*fVLgt4WVxBQ3U7KuF z6v2jqFSmyL7i1U1fu4a$GY44ZyJ_}PQO4xXFM{Z-owQd83!|@g`XLAa#JSV!*3s3?((Ihr3)isC03e{#Q+w0g|crMp9p6H*YD7BDgWTxo z%~{B*s+EH*r19iiE1BZW1!JY6-Gv892!f6`c4E+i(}U9;w7~$bQlAfw{!X`a>zv!B zHhVLfHe6;ma5Vuw*c75??1j~@VtGDz)=+HEr+mYs7eOn05X-}fJY8Y`JDUz!!OkU? z*hV_|MLHGx4<2XFECiPSgTdV9efQDQbay9|ifG~xf!C|La$XJ#s zcgCDCMRc@K1)AQ zw7FoJ%VJRnBjX1%N_aNe@{B<%gD(*Dn_T75UWI^37O()u-A_SmFBph*a{DkST|zF= zS>^3H)mN|SVvt3|qM&f>)E_y*!p96cxn`BV}T10aj~FdA>QnLj?Z08)I^Y&LK~YAbYt%tg6>mE42~v ziokqdvG*%Zb!@%5>sCR?CEm&gefex}MHI4Gpz9Y0j7{Wkql>HiP$F zJcx~RUOaTqy(8ny#;PpEXNqqeoAr&{P6UUc>k-zfaWu5j9kKJFO4;KlPkpf+=D^;E z8#r!zgQx|fnHeR(b)zV^Mo1RnsQXjL*%YnFcvtQ{RWChM1s#qhi?GWMN|}2%py$$B z_+cNMl`M_b@mhH*4m_1HAiIn8jy<7nhKmgvFhjRl8s6YqwLnKI|V$HDg2wk4MWJc0z@u?a93C62^1}>#fMn zD%qk8_5rQhetqC8xb^@?IMFIr965?rf+$({)}KLFhL|?`+_;wN)=*U4aVj@f!(b0s zEt$-!j0oCNjS|5IR*+P+j19IFz(bVGq(CZxQnl4uFYhyJ-1SP|Rculnz&E#Uw0pa= zy4!Sr5+D-e)xC$&Kzq#+)p^e_M?-)f5)Pnv|zCRLS|( zNX8Ev)!F8N3ZnGD^yQU@XJe;Xhl6@w#Jfto%xdim)d64EcirC#Be*J$Ye<6H^Y*ng z%rcaN>~W?^=2SUr9Q52&85GRItD4Qn*yX2>S(eJ76q$O0+1ZuT%&Rb@!l0oK|7;2v z{M2N6H4Heo!m&=O(Ok-#x0ae;j!FxY)l$UQR#a?zj#St1Up3XCf87&VV9bLmWSXkb zA9}&SEyd?E=^A3`s(QfCjDnE}pR*V8YQB>#RcyVOMI-C!GSyauY{GUTLq9btN5JO; z2CBCM2AZ|Cw!18}E;OnNe#>a1YuvmA+cUc{m4@3iRQ;vrZTlJH+~-@a_`E(+9yc0S z%*_F4y||P9O+#uRKQo_5+q;cB+8$TRd0rAxgd!u+Pu}ATjQc^1E@7Quew|&HALG#w zQ-MPC+6+1!g;G{`zz>HkmA;CcDc13!*45LYV( z>(RoXs$TjX)E`|;2WxVM@`j-Sm9Xt^+rW(qkx0p@e29(flRa7k?=md{QT0})IZYsX=7;IF&Ls6zfu60Gvp>w~(o<%uXacL2 zEd3M>m*tH1d=BlR?Px+KRGS?y?UTH+_Sfv#1k&swfaB!#`MqG{+m z6eN7fFy0d78A%z8%=fC)4KG!)_2s=3Yv>wYt3+FC&@|TRMp@7UQ1E>c z1L#ShRxl2B9K<8Irjd~p^{%Snmpp zJqcrSq|1jL7HQrtY07A^b9{nwuMa%}uWFefU1J?I2dY{2Z4p zd2pu+pUdnFS~MRG8bgfx8-u~5S0c{oS!%nOpG6mkOu!Obj4L9D)0MW&L)R1rn@01= zr9SEcM4{FzD=Xscf9~aMsKgxe8&L0@BJ7E1CUL-;Wj4N8o&qQ1XzYQnXd+yI2|kRv zF_Wn6->`Ql%w&sN9680#rPxV%ueuVG-IT<9h-Z*cL|w|kHwUGAL$>kk+kD!GJy}5l zj8xGs!bj3uyp=<JAE|(K6%kJt z6k=r|-MrJtq--lz9j23WA&j*hkRcLo*N7lTOuFk}bw?=(jhDgU$jwc(^N(fnj*N)j zw6xzP`dCtW$!a8sevDwhqt+GA#{yCF>l=y`N13P%Y{ zA(v#u0poJ)@OqB<1;Xqu4o(RBLj1mQq?>z{_h>|IXJEvlG_Ql-iO6k$p(Pc6BT6Aj z;sj!9P>6_u8^nBMJ;M<)ks6~)DjT?%Gc6|jzz}!Ff;w(C!a4|Ue4Vh%qJQ#JjN>aH zHQb{nQ*|fXSn!LQO0`FDmZS{qGc@u|Jt8r)ilMcHJoK1GXFWuXkwPJsgoqw1sYDPz zQMh+RGJDYMEu0Mm=88bRHz}B4VBWoiu}@5M#DG;Uj>;Wnrk*r*)srz^PB1Z}fgJl| zQ<-3qA-zY{FNJ%cLHX>RR zmdzN4JZp(>qYj3&L0Cnj)d7Z#N!YIHv||Rj05jZBc41|=J48xVZt|Ff9m|6+QhC(< zu8Am-1G)*;#qFcSq0GVbQO1KQ2*}YDH6sa)@9z*!rTZiHH`i$Ox&V>gq0Ox!UAU66 ztW!-O<79HQOpE7)h^ZE306J|dBjemrC}Qy2qxcyBo-_d?1T{Q(P{P=OG`aGDe8 zF=*;XW070(S9~vi(ZG;FC8IY_2G-v*aPx%Q6RKJZ$Skwlf93hl$?Ibn5t2+%(CDI= zQIB_qDq&Rn9buv8vBn3}ol_d%5(AjwB&blH5ie-r4CsxBjCn1hRBoo!BdbN?Tk=Dj zw9MTT?t^HS{PnM!#os4m(XVr1sjTL<=DFLc(;Jx26{BpvTMMGfRW7K55!VS2x(0cv zB0PFdx@u_o9Z>Qx^FBU1D)Kf+NI7n6p`xJd$~1Slyh0S^B><4nh4r=w<06R|aN~*s z0YLq0C89qhwJtGkeV0WZcG7U&5H=d+s83WP;o$7;QiNXa03PK+ikFgJoGYx z9UnBb=^eA?^!cU2rsFks4THeK5UNE(&8s=Z*f$Ij!f2TtzKchb`Giz4sLopF=TV!Jk_s$xFOL2C{2fFTYn35*G?M1aVEeup{&!~e^ z7rcutHHO>%wBo9Tb;QId*>R^RM89g-`pFLHJbk0>91}^anKFIO6BjmD)q%^)iX{FZ z)qHHS^j>eT%l9Faxgh7r927#m!OiAfYVT849wZj}~B z)}%OZ8mEOwR%lanqecR*eudP@hc%QX&d=o9{UrXK32r0$)`un!&=5Xx^hfnHbjMEV zFSvTg&@@m7n~lzAl;yW%(+lNWMj;8%$sF1-A#FNK+>VsxVi~Mkf^iII(QUV5m7!-l zqT|WoWAvzu*Okourly>5P{My8VDJoL>q!|WSBJ^1{jrNfao6*I0#;a+T z;uWaE-Nu-)@_Z1d0P8E1MmH&Zg-OxTF>kqHOBk&38%F~bk=GUm8eQN}vrorHZA>pB zG6Nksp?92Q?L5+jp>%J0XhiEsh)NEEgTEDxZY5n-u_{#v#(k7yMQoHB%e_2kjw9aI z_6l?5-iJ1cQ7gF^~NPK-CP~slRN;rBy3Fv|o zaPeK-bifYToL*>Rh$SQjW7#&W6%LbEXQ4;zvu3@}1;_+*i zJ^)|oI23vu#3r#r6sujC$wPR24(D0vGbJI0Jj;fT5ga08Lv%4S@boOBkDD^_WG3|L z)lA!Qru;zmOhAxW)^754w%>O_VrM;!LL@ z&&*nHomc3tG7hF6O+_?%S^lTy?OZc1xY_z5M<3WK60Dh;SsNU{WTZEERLa@DSW{!e zXW=Er*4rp(da#&e9&j7@1v$mz=htwnjUe#^elSr+L}vMkj)*B1Fw*w3WZyWM?c;4O za3c2DBZSdl&q$tXv2or}ON@EpJ7QEP2IQc5YT=5lF055* z?hf}pCNlurW{zy+XfI@|Ar{$ASE|6V5??cu&scQHKv9Mzb9iJEY|Y79i|F<$nU{QG zPT)?I*4o$BJooySh_KTYZI;sM}GARjE$oE^Kj zeA~d--ZEsi+0*A{DN>xMaLaOl{C``gg%g%fV}Z>a2e{{QiUia$9xR%~E$ydB8@GVj z@s5&{+UfII!I_<8i$!I}7@8*(p5=`5>D?Vh_;!u55j5uBMCMHhbJ5(kL=+~^X>T7p z{BRWb;Q;2C1aDTT$vkB;23`)wd0GFY4$BXv``7Y)E>)uU>^C;0a;#d^aVtpoD%{$Y z%CNLIb81&A+}f4Ow+-NJ`E5{~7YB_blK_}cbTyAzla1a{uVWSl^6Kbek?!aU9|(fA z6SH07hiE*Uh-|ez*P8h=J+a)au#eLC;nc& zA)5X=N~`qvQT~F_X#8#2n&0h4m$F=U{`pL?PAka<9rl7*5^ToC&WLS8{zHKIlg>a3^`0fuw9 zS*_b(aswI`F6oz-c9$!;c^GE9ido-TkS;sEBsY7`?c4WrUUXl9J4k6=e`r;;z0G?# z*LyMFOKWQc zI?N`C{|W~4uQXBiP(+06h?7j|#D4da!K?s;@x zy4*}@GGa00DpJWs=;sNxm!nH11C#Py6X^k??|=^D;rq9;PP^0^zrfr!i3C&^?EAoE z+-$v_;juiCkvf76Lq@0a8Z|sw=_S^uUVy(^1ELEU+0ds!HZ`%rjPQ7^=`2n0p!lQ|s0^MNy6My7{Gdq`g%7H6F zs<2th4m2k+vn|O5hSF=VT?=oq`?Y}S12ev@`jzwBrqzU!ut!|gLcTyvzcRuaxt0@Z z!Z)huy4%dKnO57CjgfJ=w)i6_&TFg5k2RhF(V0=lU%$nyvo2=TNou*t<;3`njLQ;` zKXB*`MyUUjFt2_^DYF+-DW#P6q*G{sdOo?gWlU$HV~CL7LmOI3Gq9NkLlmis zv$#*5=V0ZtLn|T{a+k3@bol-n6WuO>d$nK1r0fj>aV zAtz+L4Q~MhM|}B`iQg-u$%Js9j^D7dNHPR4=yov2tCMZ%)k|n?7~V*%wGMTV65 zfxJf|-cj!9{DebhZ-M0_Cf^=5alE^R*GxS5B5D^p7_5|-k8Kq?ASNHlvW>qi#@<;< z^K&R8W1cod?1%u4>37L;$lOC+Jp_y0+&L9-vH*?jYolytQRadKkaz@01zjUBz^Q;~ zNw^>_`hCiAjQxO>-XQS4#=R!uP3P>OeL}Pl``<+?>IAeS{QzJlB!e~jzyF{>4-TE~ zdUd0~t-Fxvk(J_=BbW5VFka3A+^148kDE@%s**d<_6GnO9!&lMivtdDB%ak$NV?T@ ze1l*ZL2SUA;Bfp({%0h*u!{H`w~1fPOG~R2!*?|;F0IW=OREE>+P5>3D!Hj?Rc)v| z*$XL9nFgC8t7)$E6Yrk>s~s1F8nYhP8xnODd>XNVFwSckV^+M`y9tBr%0eibkjX_B zUuDKXM73iIO>~SmXO3JGhZNPP`O2&zaU1aM5 zZu3u_K1ene!G)l@Q`786Rf9=YVw~9PSTxCg?_LqClAmCxkPJmvEEZK+@Ph%Clv&>? zP;YD+!evhz*7Sj&gf$}DGEE)mBY!V=9B~kFr8ni4>RPF7x)w4}kDv#ctI- z!e1M^zP(}>`pxG$Tb2wL)o{S5Ex7%S`McQuu5#s@3c(3AaiPvBJemm8L!ZqD+7xCi zBvF^zMCHhaldtB8I_#aDQ$~DmF4R>BxXn*OmVay_Q9}tZd)yB}9N-D?`AMFFJq;E0 z254rq;>_r`{9)FhM2zhbM0B(5el0;sQO5{q{?vSg6y`|#iYD7W0t7Qio}QP~#L*pc zEtg;EgFl==i5$ZnHj3m(Z@MnKX^Ss*4}c>w9+b# zXP%~2^uBT5QvAhOa+pe}0d^;Q^>qx+AEZS{m`O;N1mK1Vu&5n=9}4=sBn36%%o$e= z2}c!2`UPqRCQH+BISpXwe?OC_1fw^~FyJDnRs7VLuVH#9tp`Ei$Ngrng=YDIoC_?` z?x$+Jpss}g^-Wb|g4kqExmx&;Bg{uo0R0GuhePy3f&~04Gxsp*@j2rXnT}pAaF~6r zfZBX$Ld=MOYN}9fQX#gKJW3@odwl8`kpNs&-U>KsBy6Qw)EF zgLN9lw8>2gP=KeVl7aYy)ZjRs&<4{AMo_4Z3Y?F_-QZ)LR9^GYTDn8Dus)!G+|A>> zz$&gnyYTK0<I9{%|j&+u6n^?S-S7+UjUDoA$Ww(76AA%mXtc{DamGUB}qdU9e)aI!DuP+ z66?kGbIo8G=Dohlw97ivxss&je;mbKm;=KQY?!f1$T3sW416QvNhBa(>3w|R!kA*O zc=UUDq@O<3UX#=D;5lE-4KWiu3jWLL8e7CK3(t%n?5k3fhhP9xPKZBkZ-Dm@}8 zCJiE>6k+bq!t(1(GCZ22MNrM}(SP)ZAJa(C=1Wdf-M?JktTz}Jn9rt54+`ujOz3qg z8d%`tCrUFg7m4Xy?_RGH=iaY^uUDc(UzPGh?UW|-ODg3?D#>Q>kk%}lryulF9pqz4 zBi4!sG&tB3A9*DM+9ReS7JA9KXP!0aj=LR3bvN%d79R(99q4wPa=ZX<&|*MkPX1|v z=ZuyZLRJ;QMJvbDsPAPb)4|lF^MV6UJo*=B$=p%iIs|aL0s*rn&($qOZ_>3yIA_Qu zq~xYLurJreSNF?Qbq})61Y(uK69#Q}25XFK3J2^=91Y9B2SfbqT=rXbdb(giyhFkN zMzrDUOi^A?hJeYDtL7Qr&%>(fR|Ic*-$_Z{i(f@$3cgrC8F@L>X+2A*s-TTKr&-0b zTc=1euO?1S7SV^4AlzUJOQ?^e50!wB7mt5Qjyqf*9#*?nOAl~(BM*mW&#rik7+^cM%NW#TPgeIbG7BI<)n3)(-vAHC|k1I@as}rXYr>jLaQePb!Hf z`AUkOU)}=OM;m~>QNRg(1k-mPCkGEfdS-hLTq>m}Pn0m*F$FOYAO}boI|CX#6YAl~ zFRKZ8*5*vD)i|fLM|q8D$WUZ@hejYe#k>*FJ!GWRN2{U+T<9$bjA6I3wGiopf#Fr{ z>JpI>p*tFyQ!Pkl09#M#VA{b+q zq-=sUseYB) z#;H4JQppN(7c;iWJG&=fk1xSb+4m+P2<3aHj+Bj^QtODEnMq;Q~7j!b6QaL-FTi$PkZKEamh1*%T+m zfPN|9GUK`&poFij3xe|afHEomM2QsphX$t_qKQzE9wNEm=7bRVv`r%M!QDm1y5(MH zNxjw5!($ozVgk}Gz{d}EBw9i0k)hJ2bqkA*`~r)E5(JC^G}jz)=3ELfwxpJ2Y4CbQ zajD8cYf7T1Dm3$u38EYKK?y#I8yl62U*NT06@5-MMNmEYA@LKuVmisfV9%Y^>foqc z;KQn>(B1+h9iS0#37`RbAc0VM-_X@iN33+Yrh=FGS!zhNF6ONH?i3oQSOG8{4x#C~ z!4!m8$5+8QIj+v9XzD{C^s1>QEcAXt%Th7hLOi$&Lx$I4H<=8+^^0dEoK@CO-l0VB z>H=KIoI7Q314Ju~_x0`_6Cw>n=|$AYCvyc_M~ai<+p@dXuhKa+5M|@U*`-CE+{*Mh z!dJi?1g%rgIsEn*%>ecr)T1HmG45E>BCHxl$&Y2G2DP4eri(lUP_dgp?WO5sK$wR$ zFghcrvYE&oZJoneG(gBs?gCbH#|&T(L8%ua82Pz0M~_CG-Yil#M->k4O`!zJ2=`Pu z0EdRP7Jd#TA|u~5lUv0N$r>KZd|9=7x){nk79rr0a=7-0$%&q+fSA$vfn7uVQoMn> z)ku*0%87Hy+-Xg`R_Al7f9OVp4MsHUhk_V9QGV_!B2!FgFO9x|C!iVKIwlH%0z7Gl z>}szE>bnHrS15D(u8znaIBL2E6$Ee#_8-3W?=E zT{>eN{1A_k>d}#qRJvXjQA;D2P#eXgc$wc zs}u~i)xI8WjQl?#O=TN&{K~CT77N7S!Eg{Qj4h%GEQO7nLl%)GHT;|C6EuPS(xB2* z3VjvQh^oy#c}+Yja>$jx#8w>@VV!U*!;r~2(rLzQ3Rz4fMXH}#WIShobj4d3Noym} z{wltmr~yzcUkPa=w1EW?7p5J9!z2m`PBUs^%3&fVqP46_0lICj@~a}7KEfvDJSjqJJ;@TdAv`|I>N34>jF>HsX=;ZjDry%J1t?hws+z`_;h{NGP(I!S$0k*h zKB#czr%I4Og_IMeyM!q?PzI<9UA17Pl1%Bu?LAW7gj88R8=R@KU~T7d84$3VsjlAR z%SFETP}9Uko@NHs9l`?LZ9y<}=KyLHha#F{3Gj?UArGk0Ztyp?0;;dVOun{I)zKUs zOdz0BZe&2rk7(m3)G>y){?a%9_v>iMxvABwExJ@;B;Ka?Obi&yDHAn1_ApBy!?@7Q ze#}^z2?PvH$#@+_52(0-Pl@5u)IK3l9NX4_Ew=$GDMJ}&aMvm6uwaqcn5iXj|APro z8#SOfE@^#%qXI-rIbalNX2$Al;DRa9kd-1}R9VJEKsbN%WQjT$FhW^^5>x9$)ZmPC zB&=GlhlAZ0XeJ2;y5hVN2$!&Nkk7Otk64y#uuL{(q(hL`F%t`1g&+O$T$y}N>nU8t zk~8atpL+-^yYVJ=l)`(qMuRNxT#+dx+tRZlpv?-mlFz2t7b{ClO{6bGYP?xl zkx+;&L_H{ZQ`Az031uIp)I%W^%<6=*ia_!1Qy?``icz}?j#9*E0Zoyd{whBY&19&Y zjcSV3I~=SdP_Cgs3s?nyH?ypw(~3GUtcXvzLRBC#E}^HTC{uWX5?KiJ^^dGejievWX%z^+aCYsKzF#BNas2%4CTkGV(BsLdmR#c6*f6 ziveWWlch2qrOb?y{mpe5$PoVn9mt8ff^bX5K&F8*hRM;8h;LPUkW%PhmBtf{c=+zN_A7B1nMFpSN^eW!zT4@S(UB=5zvJFDCkb5}leb4FOzq6*J zT?YP|gAA1|aR8+>y(`pB#+HY2c!G^-3}0R@eKy;f&KS%XX+C<#k}3+J#sCjzg?YJHqnavZhNV!gW-*Mtb^28YaWm zC`9y@?_V;4zeKq9jK);H1<{ss+kenrm7jnv~qzktV(2>uMlG%F6n+JZm1(S1x1ZG}Pl5 z(H=}v=O0hYeGbq#z{tvkKk>$Lj1svMMwsC>&-qz2NouIQp=a)@GI)$Sr7((^l}b~S zK`7C|DY&r2(2VfRW{X7jg)A)D;xOUHmzjZwyi6Pl_q7^Pm0YSi=A&tmLXi1Xdoi#< zsRxBaU@9 z=#;vH1n3n?j{r=A`yUGwZf(IR;1WXMZ9G5#v-v2e&X9+^J;JFlXy}rjr3Z7oU3M0! zW)X*Q1p9-U0|`&?QixZL1)d}0M;ai?42%GSsAVS?;{wwNRXDFc)qGO4!ahqyDT0iX zGP)A1nbU++4!1HW0h6evPNI%QLErfE$>=hA1+hqFw=yh?DE$8%kRmpS6yN-7@yRK&-fkY7cnqO~m}s2SYL-|6s021!m%s z!o9}hU?WBVOOm%6PGo?n458FQbOdDp4l#c4P}0x%YfhOzh(ikw4Hba;P}1K+AMOeR~_%t~EuB;pV zzaxiY`KQHy$Q+b@7(5ELg=MeEy0Kfq<8JgkEVkvJLZec)vnlrkn1U6MxA{m3Rj$eJ zfiED3G#MIku5u)Q5E|m`&QP1{LeZI1vOra9H3-P(=5J&q_aF{Q;4)__Ae(`wJ-3P= z5(t@>s#1uCSfO0SAH%29IBxlXx#=DJOmj}ZGPF9BJUn9tm4|Q-@rkgIPAS9S8F`vq zbydhx74Z?t2Hm65G9W?VF&O>GB!1DuOhgE0IU)Jk4(9r#;tyqLL)#*;Q)tqTv(yXi ze9?iaC~;n57g|G7tCbHv@}M^5$gEaWWD`IKW8iUR0FvSmzQ-$Br2-$o;(Um1nakEA z!jr}VP-x7uMcHD26SE&+U{v+FoTp7KKdUWW$x4raAX|ssZ!qq%lle_sdxYc2lOF*YE&{Q{7?Tk0c;8g~%tLZn zub=KE2?Vz`*q?KwiXH~es13QTR=6DH2?L1<@mNokYtrc0tS=P@!eG)CKlz`S1U;TM zkX8hc*>4v;u`X6lQgCw8cL zyu6DJhbMBhNx)yb8@x>Y%8nZR3vsZJU&1g=9NuDi;TasimG(q(3jJAhHC6To@^lMX z3Xuamtz2Wc0?U#yHZ@ohK9gqJ*SVeMwpDfxDe0{TK!y`8bYYuKBj@pAM- zYd&$53YB5hw;kt|vD2j|Ba2BK53^KyeDuRcY zK+T=7lv_p++v`6h@7o07Z^>O4ZqD79*~`M2$;W%*-c`KfxibdBd=~yHZi}k#!OUt*#WIA|n+)l8`8MU1Khx(aX z8&L@`J1-_3S4eO-Dh$(6`FhwK4Ef!Hu_@`t-NMLW=n}>-+w@}eTi{GTol3iGF3u=jiC*BZ7Qw>_fnY#~HhM!_TC7$nWEMIrol<%M zaFZI)?@h5$S2J>wgqDoS7Ze#9RhrFZvlIwFr=~4~L`L{_wWzcb&%hm|D%#>l zUsuvjkT9++Ln}cZy;jSckqSQ`8PDc`6XQN2XCh^Zyf$W2CpO7Iz#5n<>xWd3!9^KN zh@-RKR3yTkx=$$CD+~bp90gn1W@1z+C{Si8(K-f%Bj19ahvX1i=xtRcT{I2#B9w9B zRjZPjr#736SG0IQc7Ouu({v4Lui*U9#4`^7rEope3B>1L3?wZna_t@|Q#BSdqM*A4 z?m~d*gPFuDZmH(rji|Z{r3pdmkld(7|Gkrfovg|#a1ERQ!ZvT~Z-!a6is8%klt3Nnhc3$3+N6AeAN!B&Ui#QQ1orUHNuEMO!%1HlLUo zXn1FzPLM<93Qyv2;h{f!bVkgJVQFp#3gf((VM9_8tT+V}pT0tX7!K&5Al9RHQ ztUjPDVGO&86U3*$lazb?K%dHFz)0mE@_dNwB?g5f6XepLe40WZ^=>Ig1{g~L2z27P zP+yT#NvMK-M~lLA6T+KMKh|*)Vo?g#qN~ZV+MLoj z-2r1vWdrmrhOcp#517Hz;crPK3w!u1h$Pg+uEQ-jE(BdTX?0Viv6UixzMfEI0>}#0 zG)mgp5Nr#U7ww}ONVG^Xk(Pv9Jp;d>2MfP8X@VT;3Mw~4X>>c9YoCqmHV*d!6jTc*1cE~Dy7WyUE zgRvS?~2ns-mr(X$;8d& zL&(<8-RyZs*DuT{i|0Ho3bk}pA#pDw?DL_#u|L)tMcDoHlsIUIgDWRi zX+m%X(-6=IVCHH-M1=v;lN*1Hp`N0*O5dR=DRkkefUFlWfEI7%5=!}qBR{7SX#Na^ z8$xL{MDX6Za7}n~NU^4|cvus2HcrGCD5wThL)aYkpdfMwp`|*3>i8W|(wo7iAbIj* zn5U&tL)C0c^V$H2fDjEYh(nTvi6Bm-Fd!LF*kOuiR2%d13=~r_Z2%NeYTIR~Agv81 zwbWx$-Y0fOw$Ml?gW`I?BZ64)_!foT9k@uLEQby02r6z zjzfsp1Dg~4XJxa@FtHf{yq_)^V4y|`eL(|as@WRrb=aJ~IHD(l*#Qr(l5!4E8+9Yd z3cWt%g_p^4f!<^a7z0^*`UW9wfDS?U%m`8pN)cIW0IvkWp2ZED|L`8Z8F>NF|NVvW zctD8SL#N2J7K1GVUR;Xon58fIutgk=+xl4mAxS$Hc1#tmUM`z?wPD&_%mqym6S z$-?!0#I##!?Ss5af~?g`PhwHKCbnzBm}@lYlR&QX3yu|RTY^WKK%jCJ>rls#dJ*M> zCfp&R0tHscKWqN?8mE4oh0A%L5`!aVR4A$mI^~5B#{6Mhew50%?6|7L3@CEmk%ljN z?gS>fPB*E|ex~Fi0>45CSt}N>gW+-6P63%qke_F;T$L{?iEQGZTHHtjJSYsvKt*`z zz7sIOLCL{c=+SWDP#4e_(y?!FmSi$*O5hYQ5YJ~Wrt?gd`C^doA;1@BK#HX|oZ9}7 zPo0Jofht=7$?oQN;#zQ!!V%|$?+F3PlP^d}a{@BZ5inI2N@YrIl04MaZaAKRBm${2 zp$VhI2W)gTj6mE7$Wx~Jyjx8&{#+{|1_)a9vPNsc3Q(rKGZbERR?L;Qx?@SXsOP(0 zOrc7?GVatzNnIs`UVAZ?t_qsT!%*@k12F`006_?>A+fATv)*J;K$;Lr5em(Coi))+ z^g-u@EiO_V>aP!ZG1P5IiDiKp%WY6HMZUE)RlH0R!+>kL!7IqDBJ^Z*;)1;kYQT4; z6KRhj`o8e~2^8TF)2L@N2_BHrwNQc`I`8E< zWTyi%FAgCoUCDE5HvwXA@nSo&;&c7lQdnUP-2$-QeK<<&AQjSdGRO<01IsG_KsYV~ z{ca2G@DUjm44T?|EoHPEV0yJoc3(B(De;t82o1Co(5fLl^+uusvI7vcEKV)Qr;!*{ z0nk#3jRdrc-YH|)8U$dJPKTkpq7n;y5@p3Mln%hvjUcU17wbW(djT@Ty61puYi3gd zdSbMY1e*we8H$<>9AlWLL@k(RqD2v1xEF{EF$dfSbP1=)5CHz0KQSxD{Ex6&Bzqy+ zQ~_-o$P@*Ddwfb*nvEhQ$uYzbN6|5hrA%-Hxi2{ZtCpVI8%@0_(;=G4YLO~Y1Pl&v zWP?NN#tKajkO)xVTXu(k!eIocFRgkwC`ZZ#GX9KQ^23-pTA*w!zGGH>`Qoy8?8uiKOt2rN!t>Ol{`$}l3=QEpH3MBnViclna zh_i9QCrgq732(?nkPpW(7;oAwk7HXsG*#tD(k5Cuq)c&toHEU_<1993dUVY@yGa;;J-sEgE1 zqC~pLVeY3AL|+(cbW0*lXQ#O^9X#$#;_DgU*cztf0TieHsMOLO2x6_m5nQ~$j7Y*v zvJPsu*UbX6BKGogh>E&`!-Yykqf?F6eD5T0)eUz2(%tU1k~yx#nB5#RMRZNgAZn< znXf{SH!JGH2q7=14k5^6sh`MWI%}QCMPO<|fNVxX01E&p?3=*y9)h}9ZViY_$E%Xa zksWDdb4^$&g_2`Ud|!9KQyJsPyXmz_tlnb3{Zq&_#k%;b&##mq&wAbiH<$PK#b0$A z2%C-JF(3jZl4?Yak_7hhA({eQ=DA)$0f6+I$8wpdZ)t(n;#vSMuMZ3+^9^SMy8&53 ze}i3Sw^WEIoI8qRHrrL%@qqRaur|~^9S?dMal0umN~t!d-KluetHSOPoAq+>=YUWO z^yglr9H&1}y)hLKX72wm{p;sjZ zx(fWP04WasP-dX8gkIbzztpy4w;zN_R#@revPv?A9Zz0`48Rz+LE8Y&)#+C)rEs|z zylYMsudrpBeWxYLLgg@diJz3g z;|*3M`o0cVZ1$_ee|YTC+y+Pnhlig5DFsa+rr{JdWWj+k!lY^93Zb=MZ)KtAI;0f4)YkI; zfY9)3I3~~%prX(G0Z`A5<7I0cOwVqP6BD_8x)w2^{(E9P}2IZzI@_nfX*N7dibKOiAw_%5}Y8c$6hSo>yZD2|mC zeiTy1^%fBdj#lXEml~jxR0L~lDtuFNUoG0?)IK0+)k`a_0xD(jL@RRMZ%GZa+c{p` zaVY?*hB)2Wde0Lc%dA%7$YVf=9mR`!mlSBDP7~!+p_|RrW$_z9sK@Ixyek`(j zuT1-ConeXdiGdeCm>PNYPsK)V;7pK3%ac+>KZyn={)xN1UFjG*yiWDHfvIbK+?e*! zmE=T?4VWZ--Z8hUw(K*0Bc&|DpfD2%kzl1?Uf`HywhAVigjcef|Ajyj#*&abx6y=kptFHZ9S7jqshym6_MjbL>pJyXa#A14=l5+8=+P{g-gBt8UD!4(X)ns*g;C<7 zvheO8Y-poyULE!5gst=fKsD4~n>>A}! zHyIIDr^#%RN2{ZsLgMZb^+^*NxHCl~FvR4TGfnC{RQ?fJb1S99J%OB8w*y z-3u!ubWCf@{S;~_P}us&juNa~Kkd|eA0yExT+FX30@2O{8eLmL|34-rdWYnqrwR1U z+Gdm&dAc#xAu&lZ6=#^BQ+#Rg zKS1@2;l7)YQO(sT*vPsKH&CAO zXM7I2G?NO!DFot`M?0-HquZO!4JWC+DxtE@VWYkqW{F|2G@|`AurS;;91lyhAy1W43Bylm~qK6MLCH9Jz#2Z&=x-_if@ zbfEUL*cu$X(k~}6U@_2tZRwjvziO#rgF$2A{i2n9JS)?e#pi_%)Uj1=TUBUe4&67b z-6XRwjZ=M2O$h-D!(HWR&N7sQhMB*evwZfFG-=CVqB!}hd0X?nigFoyv|rcZEf2__ zNFW3X;O50ePpA6zL?dM%DnF(*j6d_gHhO#D=I~w+i#daJ15E?snva_>&b3!ruU>Vp z`8mf){XQqE5mK6t?vz|s?WE&W&Mjn`q~@5FCY+7|l=t&Bov<_wu8SF3(`$vC}#(q)RAKp!UFq#gL?6FvWcx?>@Yd zCG`w!Gfrra#b#`>o@ds{5trUECHiowfTfgN?S8So+ys z5MZ+MsVUq_xN6LmmIx@coCy^mKrSqL=pYA|XcF7qh6z~gAD~sT)Z=Lp zW~8L1P@-84tY;}MNk#Ch-x^by@@_59?o8czk=^rxRJ&Fg)1cG_O+tqpYT%TAD$L+)HStBO9OO<6;CoHF)*e(Led+C)`Kg(JGn#$_*u}UKW zL7CqI^d~qh_-w&&RVsO$QrB4+S1gIB;doapj-_sF?q@;Z@HiNU&eHOhrcWBi>HUW% z04$!Y)b(b24C`De$70Y|7*;Ax<>J}$qH2(mn;G_br)0Y6V-f2Y;;d$c;&|`MH=op zy5wD!ohZT<3v3)Nu+p^B+=_XpCAD4(V4$rk(tu9e*kb1*ZO!!g&v$f|lz&l4Se@fM5l zGuS`Xl0kGfRgd4CGDp|8juRtnBA{O!j_t}F@-MtP+A9wDDFJDIkz(qKfVX@s^2?(| zJ;tT5z)cSxOl$Vh^KCu>gRG?F^bEy}g@DGuXh%C;upuRZsao;ew7BDIwNbPqv+yvrWKe2IGuA;>3ONT(EHVK*C; z&a0AW;WRlA7M#(*fUc0AAPX;JDk6zRs-?IE=9(qxdXsV_Ym!ZbaFX$<Nm@ahmsS(Wq5!tLScZ`ye>>S*8s!0`av{0nG+5gbu;C6+4fbgLcxQ( z%tNDc<2ft)(I!(>st)D#}$M+keVA zEfV2+ZC$v#1vSHf3!L%_{k?T-Nn8X+t2b?ck;ov(IhL8o2#Aj@;Bn}EItC3iXjif~ zAINeeC0Gdq@UyB23cE$uxv3Ngj(b0$f*kdNKGd!@wGL1en@Xhm055d}2?R~IWQM0q=%mMTXG;UK!9Aug+g)UFyZm+)N-J$YDj)iF?$3`XaEW+4saZ9^0Z3Y71j zl$7TOE?W^Gfen%}|C~HS_gXbuQ&F-(H5#lv;*)qUz}pw>8?ztjX=MjAZ?Av!E#fA|H~nI)8W;%tz zssd%GL?Oiy$olv?Y(#Ev)$`UWamey>A^+8orL0@6p|~;O!i;GzqdKor%yL&5j0zY; zg2DhSS{L$q!E!&XjS6X-@WtUlno(}`Us^FCP7Ujoi%?5WBPgY4Pw;%BX#u2=m}B9& zwoM_0g9O%95W2|&tHHkCC5e zTUK@GeSXVdg~%K1x0SQvqX;XD!5=8Aa=8-xTUjHzoJew?b2Psf_P3G5*3kgM>7maV z=8QqJV`DH-wUhuT$gdR)Ic-;s^kcJaG_hHu)uB_;d{SIiO#;ME+N|X!U1FM#!KPKh zHQ9kar>U)+rw%AGR&Z196!H4vowt0$E&n2j=_?(Jt}KWRFq);ggipB zV<<+0I;3f5hNM>!*a6HUS=fW=6Uq~oE~`V0?50*!dr+w^|KzIzv??KrO)lEiZS1DG z=!EN(Nn1vTo^ksin@#nAdL3j>|EzsTI6j;an|lx?UrH5ZUM!7vA$D^Qa>T#9kWvHJ zqoKLP;$4~pzAh@DVC0M;jV}H%6GtBstC5n?s*kin!?GA8{7!;si2PX^`Nnq|WanKS z!kl{S@tw+a&N17fc2#mab^z+&Q+QAPPA(hZE9H$JGf(daj7I&yAnr^vV~n0RM3syp z8^BS_DT=^~Sqm{F7}zZ>`ag*lIgxIZ>FFy45EhPK^@9Fqj4uT_7;dT!{9>?@tolU_ z+zs(}!W3C2>>-~*@fWx|uV6J|^3op=P00Rbjsx-5EsdDvs~dSn5F!79ba^b{=0nhK zA-D+%k*vD2c?KK$ym48#sT>5*)&Sgh^5vmWxkcmQcH+S$tBiG?Wv9c(2&`Y4r79(5gcMOP6O@=Y_u!zaR_`QIKaS0@D4(d zK(j1uhxR;Dd|UQ#y_0~Df!m8F)W52_i(3j_V0e(05+Ey(@igjc9 zliZl79kbt^b*wHJg*kbfq!m6`0RBt@AMM7&yss~y5CGP+^~@7S56`4k z@w5Srut-aEjyx6q1GM2$_@$n{gu0x0^90_cb)v&;UXLiYVZp%-;bJDDz#~)2NM=Y; zh6M6>xK(O|Aq4L5s}#oFXt!>76>bF}o!MG4Pm!1ek!y#X7>^xp@Jl>uIWNyv(53V#VlEJfQ#>Pk zP>_{oB*pMyOr*)(9mzgOeubSBO?wR&F(G4EoSKM4Q8XdjVktBTJj zLM@DIWUlKJ1kX*TyO`z2JCSdkSJ_FHq5lr=90jn@G6B*cm=p3gi6@WelnKI|{XO&& zj`pcMiO+1_1X@moGH%4wa{WDMb(!xjk-kFf#VA_D#>8l|&xpgg`s-w+%k^3}hJ)+pQx#uT{$NQzDPA-z{Bl{@LR&1^)$B0^u^a$U?IyhGRe>`d|_C zaB`D78`!Eh5tD-`Id?Rd_aVwhKk2jaI9faSRY`~ON^2s?{~Q91j2e)+YA;2OAIQbn zM+T|70wS*xT*MF;g-LhV1rQ>!VtFU$Q8i<8YF8mEfk>K%e9{+E0#15mDOfqE>CJ1-EjUk>G@HfPEEXs1lcyu7i~tGelBu#uEA1iyMQ%T5w_g zC>NKXY=$R6TC1@D$OgQPi3T#X)5!pY-@8x{sM(^Wb`FM+>YHT^+ueSaWCE-i2S-hS zbeE<&K^jFJ4^n5<2T8X|8W2?Zfi85bO7WKJYxn~OJ2avPGdc*ZRE$EcLI(syp=LWD z2h9P5_=VUrg0< z0PI~FLP->@oraMb61vQdi)Ex=Ja&~*)__Pck=Au+P;NAA5J2Gvr5<)^KP+stM=5Q3 zA@6!%b%PVpnkZ11Sce?O(U4O`SZDfvJG|eb5fm%{G)w^q9t1`OrMIP~TT{)$Kf!<#06utxPHo+Ne9ylAe=jz20f``o`M0`TYKt{@9qN9xQ z5A*{_hg5)|3u5l12VV_~9kQ?GWgHl3CHPn*L3iW?8bE0RjRsZOK=3qO5bh7ICY1@*U(O)4M#wHX{F5o`vEn8_5UjidmfDT*WOd$zjRj301b09Y{E&7;hup9K^{paX-4jD+6{LS!9Wb+=Gw6B z-897#ASy@9bC(K1+Mns^B@Ax;s3Jj{Z#ODlRWVXv9Tz$k>6tOhX@5gC}a zUM&s$HM45_A>z=@gbX1d$oJ9xfnfZ)?m>${5Mx1P1+B;&Sv&E5U{5SASF#Tu14H%{ zGyWbLz)Oh+>=g&Psx@pHUuw(Ts^aKXagXtp9OgSQ3@4~C@kh@UY9xJBLTpo~#F*WhRA7cNg-0)~7Y7U*c zl9dVI!Az9}DIkOpCdT`J1#FW%XNuu*MRO@N8Q+2-xw~hB#OQ`C=!f{$!H^ew<7r1@n862$(RUY(N2v*bo}4SC)!+ zDtZhCi>%f$arI%f9aO8enK@*WeC1d}RaThzt_WJ1(CmW;wWq2|f*CT8j;`*n5xP@f zg@Yx%5EmL2_1;0}>AXj4XngXzroP|R!?)hQM6mQ8FNfIDBTKfhiovU{fYmokkL1K{ zm=!N}4g)M>JD&~TGmn+k4M+H>k!jHuJo#(QXw$Gl*l)7jHk;jfN!{v5t9NV5D8#A z%!dsYmA!!Rky|nJTU$Ck!+>CFJPbNdZYfR*l-npco!?P?J~0H8im5V3eQ8 zzqo-?;rPGNTBlM2OBcu|?{hZu1N@jl<*9{u3qi%o_#8w@0!k_rK~bAqxkNQs7#BNS z#9+`I@T1iXFAg-r;As9Q(uhDK8ACg{G}Y%Xfgz(6$yHe|RCs6>TCA;Z`P?YF_0fF?XyP^8HT0eb#+UN6$`3n6*dhKjK~0@Lc=i&Yw0*Wyae z*Ymr`&_Q9z@IRhZ#EB`>P;JX0Rl}sWenzHGCKYtI3f%=yvIhKWOiw*>Z3(z4^8UU`2J)At-S~iOTZ4E8JmD30&Q<5UJh)(A} zM8$-I8tLk!5i~4=NOxEgfXNE-00BLK6R6^S#Pp8ufxrNUJNLZ+v}A#(-40*Y!rick zVyZyxZ8b2Vi5^;JK*Va$wCVy~Tk!s5EPBJpPsG|FVGh*ld1E^?v>~%i4;oPYwTHT) z8Xfq1CQ345yAYdWQl0cTrt84SZ~|9SRgPiOC|6c0bC}cta9AiSelv0Vr=bj*xhal~ zEwFR+b_^_It~U}Rz_T9eCP@k=Y~8G5xPY!8xEtW^W>Qm%z3l;4kyZ!y^gXSth2QUi$crJlqV19jvCf1 zB~y4ENwq>bjvz$pU@!m!MM_G@@E4PAjS|FM{7PtoO%PWAwwr0Mfb;w$7&$j(H_X{k z6DG|UGF1IWJp>dcdYUWSBH~G+qF^|3ur6B?t-Nl@v}TNa;-rfFU2qGni=8<*(SIcd zp9LwJE9(%AYiR+n&={r(RllMtyUyhWZtxE0Q23NHtzfX7AsrN%cy zO^(w8F+9B2d|&$FGO;L|@ct4ab6pVhB=XQ|3Q@jpl!W5hAZs}bT6co268_&gwMe9z z_2dkEHZm@x5^-Pm_d#vr|+@L#Su-irh-)GK0ivKrB0D-;)C@y22WmnV}oN} zYvP7UEx|y0@onz2L|Cv5>DIXPZi5$Xh@FezhT-A&6SS&f+ks0ygN0?{X~5yB#yxl<0CyTb7a`>cp2i9*0a3^YNU0@thty@v-@^8W`W><0OpDefnwhUBWT zv(SCK*h>x85J@JAeSqO+z`1HKOmE%wB3N!p6QW!0m<7|t&c#${z6*#G;H9jDJ_C;s zfMW7C4k^XdYgqp9z=w)SDaVL%gN1>($YeA~&cvi_#DS|o-dh6!MV`_v!v+16$thAG zN1Dm7UptFV^6AyKcU?6?OQC70%{jlq0(FGB0b>VPGm;}lJt|Bl-qD5!!x zu%NOi0s9q1mmYejN6gyG(RE?n2vSFH0fZHqqfNL5{&9;W0l;a40-=~m^JP;3kOrYr zk04kD)COek92Jj2cv+7;Ub=Nxh1SRmzE#DFUDa2J>F{3gb?LT5tk&0^Bq}^%QXtgq zobI|ndh2KeYwNxc4XKWG29#v5Og8vaCv*w;#H&Oj*l3-3K)Uj3u16$1q1&>r6oybh zfW3Xus61XR)H{Nfyhz4yZPABc!|SjdiPKUaL^Vu%^mE|}-?jP-DINewPqQVl5Heb1 zT@e)pi<`}Y-M9UQ07f`O>p^xD#Osk~%kYJug;F@kO{|gHa}t*!%vnMi6Ay(M1aQ6z zseai=IXj*~DOV}rPP$b#`{WWVun6@vE8t5Ze-cmuj6sG>ylGaXNfMwNW_iCkN3z&N z80fpJwxwm{4DiN5mr|UO{tG#h#{_3hM75J}XzlyoZMBHr?@rd5l3a$p^K&JG-^((Qx^K8KFr&BAaVMzs zjxs=Dw|n~Le|B5}ZSBLN=W7II%ql6R7R)sTZH+-(>}I%Fquu@{)m@;}hHbqlYW%55 zadMZl5HXBQz>e6rr^UrQiMrhq+i%eT=5lM-2^IEcW&eUW5$*_<-5Ak>M`erS_XQ1gYEp367ouw6gWf zT*zemh*X0tR=st@^vSY45V2EXu8@c|F?s`Gs9~Tadm-@#be3~2#v%~4y|3^laUrA_ zp41|2TQ*#B@1caaq1*KkOTY&aGM-nUlmRjL2ABeX+J37Hg1|7LWW3_oqQsfnu#_%Q z{ZXA-8Udfew8Lc{kKCgilgjt@22tCqhbgdrCqi2^pOw&o*TAnZo?5 zZU{HsG%&cqi)16Xg|ME9AbXL32DUeH3fMRWWa>Q-0{gW9ev#6tWF4Xic;&G00h}s- z6PmC}Mp$IQ{7Ky6i@yoHBlEl%W@YTdfx*Z}w?qW9!|tN$Er!1S2#01w_81BxxNLu7 z&NFZcF>+8KVFoY6cT4xO`9jlVJ$>#0fZp|ak(zh1zp!w}yr?ChK@VBOd0*GiBDse+ z5LKfMs{ga}Q6FJp)7ZAP=YsF)u*S6eF?O(_8Vy1lcwg>O+t_+D=GuuMQyLWaH?}53 zeTW!sD8=SftWIGuW>hynzK`;BWCYnmO$n=FKDaYr+U9LMO_51@L1G@_>RbtD+n# zXjH3?HwapnCUS@B+1YNHi7*V?#(xpGgMmyIBgvC8I2oz5k^=~g{B>4KeXC@V7=i8d zBh>P~Af=U^2Z%srmRMzLpe~n-YdeO)0!H7l5Ehg#77dINr^v(!IoiwkXNf~K=BcR0 z7Eej#$1#wQGWR1YHP^)$DK_Oye6}@GKj|yBefADdAaiDMKy}+Xfgdv9@QlR31U7BGBn-&LsLS%~@uheRT`a4N+ zh_fbH{g`%p=L)t20rWQVHLjm&FwO}L#}oykH-5K_-#OYtaPS2_?4&1R&RV{MHMhpc z6i;+)tG7h2V{YKkjTl+R1I(u=GQfmWKm{D?FS#aTm-@u9e*=HO&Do~J0MGcM!RIsE zcMHwWqLEQ<3}*b~St$RXi?()ThX@gq6KU^f`cUDCK!*$^;A0`RC(*BjH1^0rDtNS70pM$ zE^`kXGU~&bHgk$83HL3tn@i8BIw+0AsU)l&Bi1Sf3fvzqpCkW_0*_dRsC3wKr)1se z&Gv@bc*R{hGQquR%49m?{fg}sGcP&#u>08`{VGNTNB1F`iA+nC8 zw9E#w%$UKvQNj2-fp|2Hf-#JX(Tnup38B!!Ux#I5GruA%hiG&-{&Et0UpY$-kYx;D z(@s(L`FvO@OE0o*Y3`$y?xe(ERyQ$NDv1|#L7_9`+Ru}jo3;QgNFOT`cBvt>95S^H z!An5FoNfDrZvwb#Ef|4-XsnuuEv*Z9Q1{XR%{|7`EM(NeYAqA#+bR>KsHOuE)-)oc z^PISD^EB|7dG2UQ)A>LAANp85rP&ulA(IF(mO7iPRMWq5_*%W6D2&hVH7#x2J!`5weU`mGFq`l$l zjGv1X<`X9N>*SUb>I`GvZwg}*Vl3e2{x?+<14!};tsG(`jRQl|vYnDbgEUDHF1IM? zCTzy7q7e^<5uTvjEXI!dUw0UBwhQgHIpi4Q3tYTun$6|AZgpC%jb;+`E#IYQ@FOFkMlLomRkj?d_ETMf^%3)*4h*XY(o(_4*3*?{1e&2t!98oiNZ zCVWERGs{Hi655JZWVNJCwuw-ZBS%71Cx9gUbdkV~nZIda#yUz1S-fAwcS_{C@ zx(u~=GctMSB{ZtvW66wUt|TyP&9Z(QpbbuuQI%F3&qLR^S}50UJu@$35-0VZYW<=F z*^1PfYhktmrG2udJ4v$o&k+wXy74V_7(50SVHn}ig=H=p{s8jg6#PjB2zclbk<%e} zmUd_YbkyINF-d^* z$@VOP40&rzSpW#TfmQsRm-doR&`PgWHP(?BL46rI8Fj_$MdTd97|9xj3Ls*`VWz&v zEW=8P;B;PkMLrzJSPZzoUMZ=;+lsRcny5SiHXH1gE8;({_n^ROkF%Tmz{7#qjn$O zFRC&_geW+mALYIc&*+E;jjIPHX42()?rFoNv=COr8g5QOYMo#YYQr}9E*e)t@hvzf z7)CS#0vLR@E^O!d@eVK@K+bs7R7J(VawqdP6&L&fC^&u6mvIx#g-oe<@LM-GaU&Pt zbX;3^$GND$NV*&b(okHMG|Gj*lk8>O>MrucQSyUv*hdl?DQf&Lg!F>6qoxufBT1dMhR#ut9k$R0e zaGz(x0?Mqs&h-+*bNC+p3h--{dL2J?AjTnHU9!=?H zfl5CD?Lq*)@_CnMZc@pQ0XHb-p{=R{jIYpH;bOR4{vK+0&Y%NRIqjcVpmZbc7$KK z8`|2PlNVA@xGr(+4CM)a$MC}$>-*UrYb~qjhhS~P=5;rG@2r^Og{T>gdtKWYUVCy%#M+v&7smX8{WL8rNzaR zj3;dz`@!YU4T(PmmH{UKwI-1n&~|MtGo2UTzt*snzOan}?jghRC@ENl5@pEy6|l*k zao&Ko1}hYLj0WCkBDLmkLZQnRP=M=_ki-uD6S!i;$DEQ;zc!Wip+*hB4^?f}ZW

U{c9cM8Zp%`-ogn945vw&cs*eLXpLP)D5F9w0U!0&?YEegdLW-p~k;fsK^KhLN zA-US>0N@(bT8zdy^W%UDBq_8e)uT+RIXDj4;Or%=--)b|OMG2@2QUDj4}bzQ0fh+d ztZL-vf^lGQ7NH#S^Y$V@1En+&!0(Sd)Mhf>X>i z;DKTQ#-+$}N<%k^n|`3Bv5rnzxOJ$O$`@|{5^C!ddt#(=+!hI;CEPaz1P7}Go-iCC zc70-qZifkFZd z$y5@y5?Hk_!r>&gipZ^W>F;v&CUMXVXCqUTshxu$S?qtcwtga!i)(L&QMe(TL*#j= z&_{>yNc-Z%{sC*AXQ+~NV9-iZ>hG)9D)EENC&~$BNsQ~gRC=sH{;Q9twqOjbGYKO% zQ25u4fh%q+YcF?k=dY0`qE)n%Pl62?urJdA@Z@qP(caFasMvw;YsDYuZSWs#*K@<5{gyX_PpgJKAC z!A*k9tH$vzJ>8a%My)QvdGoevFW`y;B>L{%u}1JV^JEO3M)+iF@iRIfbcAPTanoY8@7q4m(DuL5s*cD0n7o3n*8<}%qhgA^} zczSdlKVvY!(b%ZGwO@;QOy)~4^xMVD3c|vW+~FrL&ACITQOM;hoBIG{w?i6)Lb(&t zZ-ApTSO;Ad=ng#GY#o)#xB;!@bb1rDlLZX`JFm(hM*5(L3s8G;XnPTuM9{BSvNE}+B@x$?V;P}- zEKM%NE@&qf3&mRumnBlR;iUfpz9=@g+Y`K+NSzQ6?qI-znosHx_^cCA=vE7dW)z!= zpt7jV1QQ(-i~wkKf}PiJfvymX>=4d)09)E;62uf5cE|X{8+~j&~8b zfNN;3&QgJU4l!^5@=OM>eP^oFV=wW~Pr>QYo!K|V4EN6{Lqyr)4PUdN8! ztjJXv5M+!7SO^@jocAfXH6hOx@h}f8R0To+aYNfi9efh2caPi!00kh^iXZCMjW*28 zL*is%i_}4sP?5Y#&~#WubTF9?pyGN))15Jjp~JT0_fRiXo}NE5fz70LWU~Vnw6MVg z*Vf2NTc?un7^V}a@Id5T(F8Jv8SJF-CbD!Aa3dE0aYa&36?aF3zfJpubJ1X@DD*L@e z_Tc^mUw1HQH>QLou;}BpYy>~!mp@0L*t}UuB)X#jWwe0h{zxrZWyuLgaJB*6%C z6z?$xiP#m_0x^lovcx<$Q+jD zhk{lrIdB{6JO_0Ek55GzM|J@ve>Nk?4;v1qHKO3YfSH6ma03a8kO37R0NU=ml25&| z1*U?Qkunt{mQl``-%fd(4F;D?hBpPB^izPdcnCU2@MXt=LelIyzXWaoKoL+b19HB2 z$Vxj!%onba_vl=i6%e<-p)Xui1w*5%09bpMrs428!+nGaLz;|DhEaCzt?J}Om0|`Z!0z}>x6j6cPSF-j5Wl%}hW$iaQO*S!y5}eF> zIZMXF&kt9 z6)+l9$Lln;ER)8CC^yE>KxYZ=1Qn03Z*0LbL^Hd~ORVHGBuIjA^!plr37j`N&E&}- z;@J^TGnuE`Bw6wUx^@f@&g~FWsE4X!HF);{Bm^t6X8}T`q*1BhX}gJ(I_Z-tn2JT2 zEa))~BSoE9Vl?K}@xTHGW#z)eFv!>w#) zGZVEIF>swDQrSS>+beQ|S_0;Wyk){B!KuK}#7TCSGm0v4>8-ra%=T!!)Ign)oC_1* zk2=dx6M&QQ#UT;sAUt-m;4zpq&qJ9g0dyx5X-Br_C^Zt+H74T(-7cmHJ42lox&5Iu zNDhLAaucYz41vaVrmti4vaw$l!vw9E{3w^Sv5=BLkxWE|0*gWCsyUjb79=Pn!h8km zyg{Tu+1nUznFar1*^OaV5T26OYsxxON2nS>Y%)C~^VNB*IqLZSNz5v!GgVHRnGy>gs5>G}GEhBpT-!p-oY~Aye zn1ni|bY=$$Vs{+SEP8y`ej&ikjZ{-En7c-DugIr^fqs>`kX*5I}SdV*ev< z^dcG?6eA3lor8y#Wn2x>fQW4)7CWKXUBKasOa=^hgpd^G+^b>u?8NdBgRDVFC=>_> zQVrc;GxMQiK+`eo9Ex`3R#NuLzG?szmJ>9yFtc0dg*1szLFCO`j@IBZMGf|QTKw^J zm$b>;!lQN@nL@D8^{tY^XIwMwDsZgaY1RAG(Lgocm4`pIDwzwMSd%l)h(@c`0fj|6 zhCSam*4o-Ya`9`4sDveP6zZlu&>YN$6!t1GrmBlDj12KkMq(=Dk(o_5=TR7dg*3cI zG$aL@HtFa@Zxr$Ovds&SCzJ+mCLY5kiSQ~jV!5^^#6jpc3riDRgZwRQ+AlhpK7A{4 zT3z2DuyyC5q-fr-Zy!{nIuWXoirg|sUh7_CFq|}k)Ji(b;gjNqu)t8?oKxnS%{fW{ zSi;PieHoNkWq6~o!l$NF8@HsJMa4#-fRYL!oN`el$cOx0ut{Rhyl{7^R>^ z9>h&E=Fzc_Sp(A-izcs3MNKACS>-wLNu?QM>x%QnUHBNW8dg3opP_~2uxQ69)5#A= zLF(fU@{~?r;FyGKs?|?4!{l1B1+rN&Pv8KUTd()W`6cLiyOr znh0>L9EgJRB;YFK?1JP3Pqc%K;%4x4ZlGf1hUrp5F5^Mftqnjb-*0V#^(PVmN(&ey+qkT)FCs4NwqMgDN^De{^UAgaE-uAVCq;&#~%sL9DY2!Ql1f%*cItu@im&$QJVQcEmO zClv*~0JCnEKcvx(a~!l)3hv3X2S0(rAPJ%gjMGMR18;hX#nnNlLfew9G$g4N4nj3R z&V;<>J%IqtHd2Aeh2&sn_J-uLZ0Uelsl%&y3U{^FTe|$A_cxRG+5kXDKD;E-nSTRF zF`T7+@tloKeiZp;Wenxw8V+=o0E=(Zv|OimSb^+Mz>AfHZ_90^kPwW-$kXf)Z1bEz zCQ9;|7hBu#+;Ze7P0@H**yYKri^7S5T1XCeuy_LhY;7hu^&N;WP_q%nQ_^bAVsF z3^x=dmC0%&dTOP3KWo~RZsy}WO9m5NUWryqf`6%@)-dny{I}shht9*Z^`&M!Ld{gp zoH=I~@5V~`?uiinOBws|rHe1mM7wzehz|ONgP}mdtNaMHycndhs*HJ?;$ww0!ylRU zKhBt5fl2k5Mh$Axo&u)o`l#tjMOEk*;0;sKj1nHEm3*ywY67B49$%64i-CFZ?iw7L&Ko~@@6C%OIyL@J1+#+)|3*Po@l^$T7jTR$&^G1^*rsBR)s zU+tCDcbjjALYh!@YgJv(BxTK>tvK`Q;^}h7Vl(UN5AoMIQqG^h#bm%{8J!U0DxZ(R zNlqZA>k5P!tmn8`0@(EB9pY+8Cx|MNC-o>sU>-b#r(!h9XoBQqkL@~<7H%^$2xCA( zg5y-r6R+JBv>39%@NzkQuA;JC0WjNUja{|lYoem8U6dN)0uthdEH7S|U^JFg*)YWY zCa6{&0@?TZaKKqE(3H#p0_7mFf6_R<8!o>C_~EC%u{91XOV>#jTjagX-SZnjE|@rw zH2o&u5#mGqeH#ppjT7CU48zf_4=%lr(`{LWz!k@Aw!ZquJvGDmrmv^s{By%iV;pMm zM2>w0*M^@RQGSNs`R(-EYM5HF|5Cuvxh>1>+on&jmPY{Dva%ZIge|h1PnmdbGB)Up zGZrcmY>?hp&e9J~(<@y?!Tcqq z@WFqIVA>C>IkwMK&F_IeVvfoUhEDK;AylF*G=yV{jS<)6{Bgz~^V4DIXxI+f)Kmy} zLBD}S$tK&|;sMz$uP`uCsF+a(kZ4TYdd{RH<0vUGFfA4uDFRUuA}w~^umfv6=Otiv zHNi*t9-DR!X4NN(2W^rS;H1OKri1V)#yp-}qWsKUT#BvP#i^SJZx-!kD*JtG+^O5Q zCPWO-u6%JPqR>Z3E3lXz@R3Xs7c>3sb0SRDsfw%;{w>8gc=O#oC?9WjqmuAK%ZAT= zvKxMMd*>qqZ}-|qXxk?0<-3zN-NB=Z!|Wx~H1iH}U)IM`!r8b*Yp)3On{oXy`84mI z{X&cs?X-0uue4BLecL*r7(noYG}3DA7fXff8D6dO1lLE{p*~zeI7NiGZ7A(%)$SgW zmbqP?DYuHG0Mu$UR^5~iF@WJ=|6W9XY#IK6kD_u?!EPXv#(W1>4HMvT@QrGQ)Vcm8WhdzDc4z z6wROtJSH&`{ZXFW)(OQ#DZV1)S{;p1|C<&{KhX-kT1Eg{)nN1y02jc})(2o$wwhwa zB+}|$jUbPwW0gmNCT}+LKUa5E7tan<%#A^hZEavGP4w0CKx|oCprpNgftE!y`I)#2 zMjtdg%MSr`ISynsbOgub68_@pEO|q#Oa=2mu;$K{2y}GNB2(14>RglaaerleWAO-;n4KvF@p zl^td~meke9)kB1q4f$%=##$D37H{KbS2o*LsF68nQ&Pd0x^)-L2WCsz-OCedp$sUx zI}mRyH20mOYYv!uOh{p3>V}BYv3?`J&0CF62NOV4Th7~4$%v=9vo!x|w=!y?Ph+ze zP*LxLe6SHO1(t)Qs)7A!?i2C>)dC-&o5rwR) zjpd3L@l;$}4Mobu>`)PnuD_96ToYSXqr)YX#w(A-15>-m=0S^E6Kju{AJOGfAfSr}awk7%;d4!pzBCZaAB1IRGxS60bVvDdm4Nx5Rz}N_ z)Rokx%ckDn(#hm$?PR4l&>D3$^n9T8R~zM~Y<{l4E?oaJoT+MWHLs9;b4}Bhb8a~A zoKkqkRs=}&0i>HCDH$y#R%FF{S!o4w*W*PN16fL?v1Y}xK7K|xMX4g#A|eJr27QA1 zAX6Iym|}?oQ#>vfmIsn1n0eE(pOX}z=NS|Nm4CL6=wI=5nT#AuP?>Q&BXd%ps5*!6 zDCJP$DkULo`0$<(xKGeZ!4FjdnwYlkxASmBAdb{8)i09UU%i@Sw5d;uu*~Tts4;o+ zR`H<27SPf@f|sQmZ;LjLBY?GWM41Y$xXh)Fi`fd&`YM>89b$gQ2 z+Buaoq`4mpgh57+dOslHKyPkJ51~0oRw(e%^|?&G7RvnFi=uPuYHt#-hoq&Ekgx<} zW7YWWnNo92)Pm!eDTS?$TcI>9GYfOB+2^8#z3;w{kngKx6}-nx`jJrKf|_taH-Mz} zxv~aus)sZY$iEp;`&sW2RK&13BCz%~Q#nGJeU^G8;X{jFr3`TaB0#klo(6hV+BveJI5MG$107%A9!txM^i(Z8wzqiJJsoFf&pDU+! z2RKy7PKbsv(RCW1UkK{nZ(KvZdbv>RWn6(`RVumm%u31A4MAyyvn3jbXRb!0G$=4! zn#O2OD6~bLB-dh3Ho@%vG$9gk`cg)tSts=ORBcr$HU#}$eOGzXLsG=@Z4p{C^^$7- za8)XHX~^RkkZ2Wr#QYlunf!S&yiq(5CTQ`Y5RS^n-reW*bPK3vuAzp;4Ce8^(3%S2 zbz${^eLaFojAw)H>fUWqg%?bvLkLf^7|2f#aF!`jdtPf;!XVSO z@M&~HqKc^D2K*#0pIvCmvGe4p#st_2K)P7nYvHM&v>mtymStY4T?(R}`g4pe)H{+(4xJt)U}Hra1>;&rh=H`?F%k0<3byu8586M78EV}u zl&Meh$Jm1=JXW|$mKczk@=H?7#E2}1M}hw{m`YR8Y9RN+8%wCtHuM2fUXUlDUwwdX zr*R9pYSSksyh60u!1 zxVZEe$Lo z1iD7m5?F*Y(4p(UYLa=1D@rh#jcvnaOv9FkSV9pIlsEc@HZ6P+cDf zZ3O(5kr9^#j|{HFH%Y!=^pXwM3-I`HvM|r{LH*IsIy@p0fB+OC1u~A~w%31KEnFOXFA2T3AW1{P(XcV5rVDKCmO4%=|zpA+A zG1?-w$9#ucF_IA+6a%laWG!u(wP|u3Zx}_;x=z3{6k(KB_&Iz?g%c$7X()|4XwO$wq$iKqU)E&*2 zcCi8tKg^=vr-9G1lELP4!##7QYX zWl8Ix2aqpD1qoww^noCz^U4!dl}w>AJP!)*6rxM1)mE&!HB5p>00@WnN`%9C;c`7% z;2NnG!KS&5ZXPO?F#XmGO#yb^q7uL}b2f)^1(Z;*mjVQWZv?c61yIPQU%A*+RaFrg zR}uASe}-u;Rm~2URL5cPVJrt};26LXGR@KWx!j_mRQAM`F>Pn$w`m=Y*Xczn{n=Da zp$*fUDG=ey2+tzklBf-MrU$OvzvVFXBNLyJWen2}ZE^rjK(fCkBg>f)bYCcuxkjKk z>VSwXPpjhBA?!KQbNST)STq@`rDC9aXG!M#n%U`RjHkKtO{>ms=+h2~G?E+{-Szqj z%*j*n2~|$lDbW>5NGX*DnT`{{Ljb^&6M!VO$mE`emE?3kvLj|2Xv?Ao0T@w)uvwmE z=aapSJcaLkt>xO!?6F{KL-e20|ejO#g3wBX?+Qf27rbLQ7gkSXCDL2&U@B-cv} z?$+={!+rq);G#>hFps4?q-8)9aCVZ|JmMrGXpj{MS!24{GK3_9fJp}BDd7pK9_r;o zLy@mN07e?pKT=`R|h17Is(ZS zN;cDv2*&t-C8M!MgoNYlDAsw`o!J<;aNEJ7{iB0R?-VtlGZfoH%(U>l57|8!o`e_< z1prhB5!fnn#UM@W(uT^PN*7Ci@hw2^p--fsNPOf*hL$3VSfPTmStR7;?Gkk5WK;$m ztj9CwL^u}#Y}|dkAEc?E9q7&6CfH;lm(UKq5~X!!bH!f_l#RKAqeT(;0F5|>KGv%> z&agxx%0Z4XGPV%dskB>oEvO6$EpNP>)ltOn0qTh@Z)`%mo8ywX2W^Z8<1l#UsK(fi zEwm7Rp*24#$E7mNN^~eLjkg0sCQMn*sxXr+>Qbc2s*8oRjDmn#u@KQQL+=^t;2R&c zK;51yC48fVNC`$jw9kOPA4J8 zwwtr<qN*g#yiK};wr5}UQ3g`LgmAvTf{` zCEmicY3fimVr{H39G;{X2(Eld$frGG5iux{gR#&E_Z>;vSZnePDt3^tX^sMNP;x;- zYO2Trm&syw@@O-sKs9zl5hW?R2jX01$?_v4Q*1b)kvoB+Oc<6?!hAR4R=8+>D(b9u zT!LAXqsrwj5)9`=oFyQD@g)*KNcl_Cuu~ynuHldAf*&}$ko-$k|KBNG%%Gzsx|uR_ z{E)1&nl*CcUAA(H%Fc(7bti-38K$|WyCts&P}$3ZuqVuyO9L>Wpmuoi6DXw=KoIc@ zX*@k9JK3e&INf<)p~8(A<62=M8EX?I&I-q6c~EW#FjOTnv8@mF(`pP^Dc1@ zK=)#zWc`qqHpmg2oCzzOm3NhIX`VRFOLsY->a}fIY*ux0TI?jaoq;Jv6CgaiiAX62 zOLBS8<4Io~Bt5`_KuDWJo;9txA#M7-qeE7M07CZ;Q6nr4V#zUZ@dccVtymI@qDf(? zxeDq(GAzUL(xZVVar#8fo&gj;T_Tre;$RBi{RG)MI-808ZCHVTi=vJ|sd(xW0=Shn zH#*3$uiDC~RnYY%sQP z#`MvM%1i4^F5vec(VGziH$6Gl$wcTFb2(B_wEF`DI7ZcB7mQT;P{0AG`K?I06Iyf% zKpa$e6;7H;Y2T`pSDexsValN>MLDI)fOu#pC3;Y1gnUs)sA_c-u9~_}#33Y#TcWmg zJgDvEu8$0S%|FB5y_E|thh96`2!maZ##7`Fn7=!BpSf)G6?!d*80)Lv`d1hdKk&>UXWQbUrWE)#DWSE({oU7(of(IgO zKpb~UI)^+H&QS#V^4rdkoUJCfxssH*@+D|_N+8Z49alImqT9~{fldhw2PZ&?A0TPK z6+qS)2L#<{8ldA@$R2Vb7SPebblkvx(gou}&=8yp0;?FB zz$Fntq48s1F~T)NQ~K)4D7W0eEHt8tQ3f)^z;Y%c8CM<5VGIi909cSOZn;(YHpZY% zp%pHCVD!}^LyM!NbvEO4C0L+K)e8~6$(r;aqP;e(~Cqe8;~ z2{PCax%-SznH-@1XUZU)ImXXaBIiC_Y`jgD?dF2!Hc$bt!XVjuf)ePllyHzDG-H7<={aJ)SPjz zPz<5vR;*0BPSi*gk6E#={$`x`i74*7+bPqe*knMg z)~@~u9LQRg22`Y+IQLGtXs)wZK91NkZhb)Z9%Jn1~{WN~lUx1=8g-w=*(Gg!6)5tRT7| zmoRc1NC(uaMwKg2>sj3#|Jqp4DFo;-NLg!*Y3uWfoqq0^wqAp-508z(ZsNRT0x`62 z)Zn4LUxEg_;DU(X!W*QK)Bcz+K}=zoibM`NDdvzzYH~QJSTd>*^&=MGqIHH4Ez{a2 zK@mX=Ktw?Yh#(+)1O#ZzJm5$WVzPvwX|a%oSSTxiw{dPFkvV9q1(=sI-(f9)y>JF% z&t~BR(iZIP@Yt6!hkDjZ*gHA1UwG%K-gN8~aB0x8oRarXZnN zqI2yXWW@E{%tAiP1sJZ6;-~}iIyXCJ>E&xRm zjBtvO+hSVz;V*F-*)NV%Q3t3OP%>nCaZVA+Vv>NAz>A!&8nMr8LTormS{F1WDjJhE zm1N4@FMSA`+CFcMK zY;#7j*bX_%#(|VwKS*6DIFjg*8GnI|25xS+1zay7gb3kN%(%LXBLI7B0k*YZ4I!qF zaC$0PwL_$O($@j$y|@--%W&uFnna|NX^0s%DU!`3GSNZP9Y;JFCCI{TgjT@`J%)_V zI%Nb01S+O^Pdq(@K5tTwgEQdCB7%aLzLMW4fkIKIuQF1DC9NK?b83eh(_hNL%$%Bh zA}Vtr7%k(Z(y&`6S%or6^Yh2?gDne@`6h{kpaIA3w?LDqSDoAW;Cng(=L3}jlLYlI zph_Wi5o(}d$Sgkmj4er3u_T?6(fCV@Mr@qwEnEedy*LzxyRqjcKt_AQwWCzhwz8ZE zCZq`N4cQctX{qml_|^BzF>#2iFkS$zcpPF>M#R;wKAN|Qn(6L^Tlr~s9sa?ucLLQM&m8U=(RuaD<{zM+vb z!r<2tR?1dKf&uv|Cp1|J(FyJn$=~0M6Uzc*)U@K%y818QOP0|JjijFKNl>oR45yV} zPb5GPq~Y}-u^ie~^j?NXQ(j2(J;4J{nn%G1ra(s$RVQ=!@@vCIJuJ^h4&x?xWP-9P z8dW@<9D`m+SAtWNB956e&L;@+SlD=mB}GNz3lypGtoV8B(wgaQc`XfB8FdbELzPJ6 zY`!G}Sf|UOsREr;@_F@Q!ZDwj>M2~`yp#n-!g*8R8gtGTf{2XXNT?y+Eh_N95`?k~ zHWH#EHO)dQ11bw~y&9oc1{Y1u9OI&}j$11vh}czy9B{+bf>j2ML`?P43yUrwTST9X z3E~tWDzCLb62(urA5q4zFMgtrpvuDVF)g?VnweK73EKyC?7)~1mK+*op4zWVIZi<_ zxJn)sA}4$#nIb24q*4KdCorrY<4m*^^B8H3`J>;{OW7h(7<)yJUP2ZY7(q-ioOx9A zFzOL2V>5ktbzs3wJKxE2NeYV9i}|H++XQBgj#wn!Af@X?^IA4`dE&^iJOK1?WY)BT zUbK9gXp3+FG*>pjlolZdGTUIAXwjpT6eXr;Wd_FzXwdy4n>7xw2ox4ZAj6~?Ml>wl z1IkXR5J}DOX@Jy6ZQC(}x> zmLv;OrM1RUpu0U=n=G^MAGoNe+d!z^w;(IN@ETGw8Pa6!i5wle(!`H?YraTEdpiUI zB1DY*1}+o)tM=R6x@c#F>`!c&ydrWl5(OZ(vr`0@F#_ol_*d-fI%SB8*bOT*0$HxJEu~ePhdITPIKwlqHgAJcmf1K>WyV6A_*`FOqy#`3{37 zRVis0E2eSchT;NR=2I$sFYKZKLC{P+pyEGf0Lv#$N5103{L{(ExT_F9NECPz@372>JwV6^C$q|nO*CuFez&hgwk zXy;3~so3iuFs+1SXIUu)Uj+TFnIH{Fz#(XJO3Kd7z=}yBwu(b3&!1P@Fsp6@(*`1g zVy_%~*T4y4#Mpw!rGi7fJm{d{DU1{p!4H~LQZZn-LqsdEl4X(DY2O>Gc7Vxrrvt=F z79Q1bn&)xAO3|a6~D$|D9=~k%4Mo=2n^q%+f-*z?Nlc2sTP_ki|O56l*UL z(A5d0NtqnrjIX8M%;-5O47ar>L(j8uXFo~*TcsJ(74=rKPa7C?)Rjp;$V zU=N*BB;e#t>4<;C=q@3(Ftg;3vwKpz6&2Z`j2n1)OC(w1EnVOD=hp(!2|xit@&)Nm zGbLf(!-IKbWoZ=X_A<#y_k)643mvBg^y+6tFP2>0|DRBhQNqDLlxG%7hcaGJdVOS< z+rt#5+-~#+;o^dZmOY;HDJOP_&x6gJebK|xsuE#VS4qTLyT8ZQ(*=SS*~1C=Oq9Gc^P6 z1xS*>w|!O~thKUgmg8TSI-k^CSi4>2ZbAh?KcR$*uND5Wf&Y0RBx~kP1~8TTxNDAUJN{VR$Q1{=^A`yKd- z0&4o3J-oU36=8Sr1UtYM8NF-*&sthm&zQ%CB|ht!2ei*P>5qu4Vq$y`rc^k|(VRE6 zVAKJo0XCVzhd>6rP9eGLmSZz)nd}E#3YCe8po#f3cr~b;I8_px+E=rvcp!no00cZX zadd>%4BUgle`065xmp2)WW@wQS`0h5B+|hTBgUU;Pz-4c{OC^DdD)M4eV|YA1XqTp zb%BOTg(VGkxTsY-4cH_(2|^qjvd(IYOmJAplQk**kd!!yWT{zS6gdOz%1JJY*K+=q zPZUZm25}WJNf+(`(B#A!@o7Z3=5nsMbXsRnU4m|DnS2{&L z^BTYEZJ&T-O2F=Qv>@GqQSuNj>4kmHkaNyG*VF9+hUl?%l5qM28LE;}NFV`U2oQ+b z;m(4PG4+kAKEiN-!jDYAF+uG;X_vU@HPwp+m(ZZ_gMbD`zamj4ncx6Dq+d~hqRRO- z0Qho;NT5(#hXRthMH3`UJ<$*mhC`}DK3B0Z7mR00@yaoWIt@YIp|?c|?eic~$}{P_ z-QOHw^-=?Fa>3InMMPkH9H(|ebQeW6EHWH|@^r&>2gq>wa&50lzzRyy6vFmba`Bo1 zv!FcfZ>E(^S!_Ozvn569gvSFG*oA;$s+kU+Mo3U&6(+Yibs@#QNZ$P%M+Y#I=iQU% zG-&6#X2-+{hV`cb;Zy%lepV7UFDS$oSQQe%gg^jsgc2eI3T5eFj-^I|{Jr}`oN}KM zL%}c+ba<7Z)-}_l`8sjYBR~UUqFH1Qs9|CfKM@wG;)32JTGN;1su)3dEFcZJBu%kl z2_c^_w^O1eP^d?iT4O64?mv$F8ugK-mJty_lD$q1Yt7@Tp96L&j7Fmc|#o_`In+(bD9(2^LS*H-F zF*Qh{H6tS+T4FW=23>q3;{K76-d3ejg%1IY`>pd-D=P7&Os7q1ypGvXnwPql4Fge! z50>YFu0*s-)rUina3!@s%)PQ9x4hcgCTAd!%dQkrZBckkQKZcC zGiwQ5hXOUZ+D%(}e?lm6t81Npq&{te+HOIAeT{O9H)C8`fM$ub|c*8WGzplvmxOEbML;a=U)Pp6-_Vi5?+t3LrCyz)pl-7UX0 z@C#TvQ>rCt4^J#pV!GDo`m}>wLDxpi;Np!KYEeZYGBvtbYFKHZ6dMk{qw2@a;g|R_ z$shPg{K53a6&H2PL_o`@tQLx}Asf|`bB0kUIavFuAD_>y^UsQ+$OVb?@{c|-g6gRe!Ib8)@A z<;)K4R)s$XHWTPV^6;jkFGB;tGRp;B-K|yBD<|;rx6)uM2BE<0Yc6Gwi_iV&)^5-N zvXnV_ub@JviAI$kM_3}kBqmhhE`wAD7wTg8u}78?R0p!lw5Ntd`HZYYCP4IVWGH(N zAeg2kJ(M#Dx5&vV1)_=@AEPrTwcaI^MmEVpaC2_N6J?<&#E-DT#@1^&eAy@Vjp6Z@ zPR|B0sL-)?SxKEKk~ek@S$uj&)He2xrX7)LF&6EARy~yB9AsRqReHds48|R`FPS+* zJEtV*lH!&HVgwO9js|QrqcYEhO%5hZL?MXr9r|v~+pCca>j<`vIv;7V3g5Mc%>U*! zShuFLA%Y;3cqx>VZo$T8{CLE6m^CXg3ZZ@3qLzs5l-;rZ@m7dI1m@q7nQq7l<#a)8 zrkK3}u%2V+)b1hYQh{mvM8ciQFYw~pyd(2mBxC4jSR9~LEMdM+8O~N2>Y&hvrZPA- z^@WD5N>1NS_KY58QOIX{H?uHLZTJ~A{Z>$enwbk^S(JMHCMqTVBS-&96neFGrmxTdC2z)DNgJciF9(;=y561{2m;5>lfm72raRo`v&^lEEl9>#v0 zz&_;LVHlF6fh(bou~3W1C>bJDwF8Sq1>{Tg#EmBK?R>~=?FwEDcq=qze3_s(9e%T+BLRWT-5;@@oLWIEr0MrnfcRnvt zO%Oiip{(#23Tm7SwYbGs8g)nNe5ikUA2!}X_;#N~*KuMts0kX2dBCs&0G3cb zXoo6-n`5#bG5~)V&yvDAj0%YVP0BlcW7ou%{S*0%dxQPF*Ba7m;yoKIA{1c_3#IjM znjgxRf3=lD?PjW+1wmxBa(#9L)^bT?8tO!h3$%@o*)j#%Gz%U7Wjg;nae{&Cc)BgY4jfm zbVNnaMOKDgCfH;+Laad$7NKdqq~OGKO+J>jr|V*7yJmC&AK|zNTc9Eg-ZZT z(3XVMqhwNhXaeNX{U z21p3L;!x@K4YSMf8kKvKz2)~knDTf$VffZ=>3>mJ2xM?+;p59oCX7Cjlm{GIqrsDB z4^D0Ek1Mq`Va}99KzVKtsN4pqXVabvCG%HWg!%-TB4(f6r#BK0_p;;^kpLq)KjM_* zqZYzgX#%tW?IjTZjtv&bdJ*vYVnEzZU639z7$YtrryRUCM1Wh@upr8Kk3^n0u&f={ zh0H#HGSfJXyPn$o_#*~=b=Ach3}1UnJ8Sf1oOl@nTF*rb2BxF}r`aM*-A^lCL(+Cr z+N2rX6i@1viykl16rilqZ_nBjqTL5bbLkW3MC_B8u+UH5CX9k~_OK#p1$YnUD)W zF~BhiGv*|wNALT(aSOPRiZdKUarx0G@;thM&PdNE%X+D#W22GD@DMmT0E`&Sh{KYL zJge}jfbBdj@aUK@by!AI>mt&2I_nD+k;oT-Wef+Nt!hK?Do_E-P73S{Td?qJJ0X?` z06S-=fTDe#!-g)lw+@J%s2HStTOiGS3fdV!*;9N~dTo#TXtaN}MpU{2Vaq zI&kVrwuAL#2C1AYXO`?1$AAEHik#RMnuL7OHAPYfK8lZ6g;xLu3k_!zuV-G^@_pQg zK0y(wPWoyhlOnQT7f33JhMCTm&Hnuq@T!BH#i1MM~}gt}9_C5XRkLv4aQn7*R_T>hIiK2ar8T{K*U7Nv&ZqyC0dU(A7#tGTmkrR6_MRSfs7q;`K zUa6y~^&vqN&a`G2mB1c}!GE7YBqi?x9KhmPASWEQgC*7e*z248TR=A~F*bL!1+BkR zclM~j8>tyCsV@l_ycA-eeen?bS%*v5!ZKVWDHRFN7U;QCs474R>#V{O(7oXAqaRQU9R3S%`9c#o!LG_^;*9Sjn6k9HG7r-M0pp=S%JKxl zaNP=-)LC3*nqpKfQpTeT@r;Tm9dClmF64nACvZXapKx|KA+`mA%Dvh5fhmhGv;3q&EGPKnmuCjc^5JLNF={J8QEi~fRf*Q{RQ5zPE3qDEBcV=! z*XIe-9l2444aCTh&4sO5vmwjy9EH)_L}`0Tz(;$pS<++TUXt^k0JV)<2~DsxTt`|& z97LypWV`YRMd4amDXowaydcjoc_`EjrBuBb_sLFBMAQrg+`Cvv1mjL9PDF7QhhcJ} zDz-qKkfx%ZlWq=;5^U-%*{BS-a4eQg1YWSWMEB69X6LaoL@SkM5m`b@1Tf}D)y&2z zHONT^d$hVCEI4J#P)W58=)O+F6W?j(NVE$^gNkm%J9*Mn4A+TR8EMcSP9ljGz)mOi z?6JVPnNsQbo^3P^h#V9rksWOpLIU;Dybsw+59|#wT$H6&UAh&u1*7SIyg99a=Nl>TX`PbtV|6 z&# z2Sl1cK$Bzc;~l7E-TPl;`nG^cctWi0y0~THsaNCn5K*kHw_E0VgDCTHpAaJ$YCvTO zvM%6E#lW@uFVGQ@UaYmuxm)`5r`;N{UtBFu;#w7Hcr^`qbSo<;yp)w!-XNvolXV@J zunW4ZJp@6bf?{rHYs@IMHw+vG0 zjTB*_YWBz{=$4{t+9`C2)4XKyNx&%yc1q2q25H5kbiaKgAu)rj2%hHomSfD5;b*L|Ic8eQjmF^q_RVgDiWdiX*R)AM$ z8=_bU7C?tUfuR%yU1>$S!a~Fp))OvbJxT#}x-~YyC*xR0S_NEd5d)h-a!BfOYG88B zDjJIe;Y|x!4VHrliOm}Ez-SKu2x{W1(JB11eQ~%cy}>g)YU;+1$dSPwKHmcg0i zOxfWlZ9thMc-<_CUy&>XWCd^>~BrQ!0b}L0jyYj3z-n zAcQ=Z+plbWK>eazSF@ouJTE7`tuWZF;;$WSvrH!tgprT~Wb2BUwA&`8C<1Aa2n1*0 zL9u8eWiw^Z(`abm1U}!Bw4xmKdRN^l?MBdQf> z*ejI{M9$Px5>7Hz3FwuvKkJks`Rt-biVhx6(^{zeN#_hnD-tp?qFi?l62)2T)?3<` zN@J=NXRmB(8pM<{IMvMUZ&`*&nO;Gu!!%9+$)1Wa0YHcBguYVu-s z#y0Ig#`Jx<7euqf*tzcty{Rbj%{8*Y>kFJEkQgRA7YgrZy^@aBIkVNVLKvi#M*%YR z9h9PvBTQ~hWpoKDkPJF>MG{$GOWH29gds&bnXeK{JPJB*@(F*foTeViNu+-H6t}Wj zgaMeR1jR6YHIe~%w~7fM2(Kn;KMf1hNFdUz?bD8JO#~T-iO^?kaqt)cBM=LtrV=LL zl%~=BKv&Ob1&<+g!M(Hx(PqGq04D)KD?Cjy3`x)my{kluSks@+=j}>L#!a8@ywxE}iuHB(8u>4=twCn&4y)`JQYu@~l zasjxvv=h~yclQ)8(uDI`3YC(fg6Mc-4nHL}=?JW=c|~yJ;9^@jX!$7H@VxY45n^t55$3!$8EjjUA~Dn~7Um-$88TAg#FtuZE-qM)ujYksi%K*&XWtn)uZ*1&c~>lj=gRZWiU`7`Hln z7RL*=qju^R&r^8O;=hjqhH4Qm0--|`&7)Od7jm<#Q`Ymv@+BuK`g;c9$eEzJa9<>} zv5QG+2$0<$5^SU^>_=ND`Ryaz|H|={&MyNZR1u2N_9^`{fs=KM+m0u#DPxz^PLqw> zO@II$exAZCgkb!Ng__15`T-a$*qEi(=w{wEEwan>0hC6peq_f{KVvXHxwSJ!_Uo}l zc10BROwCeYyxm_yM!=z!>-A%9I_VpDwEK{{hFs{uWki;@E;$CmgJTmtf*wXz(Nn7m zB9M@C%2+#+e)7m)Boj%VdhTUK^dgPGO7i3hsE3CZMO=JZ{yaTx%8Xw4rZtG2MsgYP zMx+lFqGUe+i^X&mtk=60A4clnsQN1Ayrii5E{8-Y`e4Q4_9j_%z!7-9TXhoc zI&RQj%v8-Elv!QbWi^z@dYs+96*jr|&68@yHW*L2GhR&tsrpEiSr%Epq?Y-PgcK^X z6Sr)VU4<>X|KLzK_}Qe*(6~EKE5=4PV|_Er7c#4w;V;oxuk5`Tda^+14XZMZ>N|7I zTZZDcV-khAprZ)t8<|y zDONKG2GhAyHV|d9IaRd%gcYwpE5xJ>=0@c(IbKT8wR??~awu7##6l}46Dm8o-+4(3S87~c~I{e&lURX(yK?ga4S zvMx3)LxqEI@)a&wn!ecLiE+Jh?K$&)H+8;w~(Va=wm2F6f388{x7cVx{8$5$3p_eGq+=%Xvm=ab5lq4N(<8= zULPW7fEHp4bLR@ZjnapvqpfPiuf-8%tC3+d%x$TC`vso2MK;QB_D@oe4cu2pRD4GY z_8df64%f)4Xv>Sac-?er<+tM^_9K9_DdH5to_G1lD@!J{-ykpf{ur2v#MBlKD8JCL z3hYs>bVBfn^r2zOj3bjFZIvpFGb&~sYw25iMc88QZr9#yd@)$ei_a{|C%ZTw+?;dY(XInn9OTFs%?jh42is>Z9eZIQkSo%$kGesaa z3z{w{-G!?gO-?y+>!7TUYDSsPpCM+pP~)TZ=)xh5+rr-c4~uuTeTgXtb9;aqwQ7FB zq+3<%szeaWD(2=f0I)K)_tB`&TRd6`WK|;#TDSmfU@un@$QPrJQHBNIIMwITp$lRb z-&vkz7o^fOUlixbl$tZ=vm1_90P;g~p4RHstQtq_HqbSHdk1kThP>@=XL$>I_in<0 z4O%PT{IAfnPtCl{s{d$R{X8QlQW3c&E@) zM|8ktJz|(c0n@|KGrVVblMlp>sV@^-Ms(woWA9o?@7%|83c5(MA2=sc%;0w2{=I*~ zbQ;5eo|o;IRJCv#SX|hua5cE(pB*> zcx31zRE6{q?~c@P&N#p-Tg8EtH^a(D36SJX$*vmGk_*+7;Y%M0b`EJw(gui-ON4tK z5|1y?Bk7)>kP#)QY7NM42c;hIr48E!N;O>- zofS@y84N=z8OV_Z#@f93H$nrZ6c!ktS^Vey5N+;@RrT$t)!1s38(vcrN*abh;CXHl z7K}xl35puV!D?N6kqZxa$cB-qbT$IWA9moRh6={*Yox`0&eEaKFvbaLb$R~<8K}~| zyzw>p(R3jV3}j|)uSIVjpAO6}Afb+4IzJb%e{Eo@(Rob$b(_5l22CXTqiWV(qg^zj z1T~3(vL`(ltbxvE3H%jd3lmD0Gck26vlyo=Zh{e&X%gGcnkIK>5G^>~Dxr}pdJ3tD z?dv60McYMT#cjrj_WJlZJp&7u(WM7?o#;C(CXtY8da7IcVaZZyc{#C83My6|8EE!c zBgRUCico0IDXcLR=8VmmpGxj3B}e>&Sy{$(C?tAH(IbdW5mt!UZ37DUg^a}{QcV8_ z6Zdj*%xvSFQ-tFyN4(6FPWoeO-_a(iun-kc{X}dhr#$l^jk$QSuSr zqvH3?nQk;I(B2gDS}jt`fbG?Bt+ihTeR0kxZR=%xDAbyo?i!_tCY0Cb67F1D=EPE=FM*c8~6{6*dxEk785)-~scG@fP#IP3qR@ns6oc0$(Lo9z3k6%rE!AJ)J2 z_t3YntP|$QQG?zu*Q)pe?U-%ZZEzKPZWfb-*a{T38rSETmmK(MBTPVV%M5@eBCv4}t}VF3bAz?Yo!Cyrx~o(I3VD9KO&tKZcC zGx%thk^Utx)K<1bB<|p3{ZPeHGnBVVj-Gpnj!YZya0-Rh9}hH`J>a6l-6{qhQv-0t z-7JcPMuoBiN*oDpHw8#={dRsMuuXa51&{>eXy8? z)gW!B*@+Uc16oWJSfc19N;8|rJunRiQBsKGDrYMJ+fG`w{At5{wxRLj+C2+}R zJKzk|5~Q4$_R2^;WHs7&gxPn3!>KtY` zbGpDcTlv>>5qMCe>{@_ubf65oXEJqTzm_z?)-eKaqeKQq;g1ZUkH#@oX5b54pJ303 z`)5%Y#K!8!ab3qK77-!bgF245KrleY-1kmf;;|G56;|dkAZ50@DRr!^y(uwBNOU)X zR3u&vln)L9+#&MEw{-~#+;GS5fkK#?=bwCxu0*qwfAo$4{%0sGiVEB8-nfBjKo?Z{ z&VZEO0wq>aYW*cU-2-sm)>{ksWDr}=cn+lgl^Kyn{0>c9HElDo9UOD#EA>iKL~|Xr8IvU`G`jIA8`? zv?L&W=-2?-8o+I(`z;4j3NVBa$O6i8guiv1vG#r7_?kDn0Aw6UA#oUSZf0Lj<)Z-a z8`g`eE`y_{unkhs?5R109H3u>!M%{gD@cQLBefPtUev1MJol0KL+$>+%lj`LEI}7* zL1`R_-rEO_fUjpQJkFYSWoEY2A=S+mhEh`=n5v5=-_)E;^EhFMxd%vWqzcCSev*oc z^}zqlbrXdl04;p#hyj`U5av_Is;x)CUvl^0&o<48`bsmTT>@aH&e9oYAd#U>2SUKJ zrTSiRkkP``708LAUpCP%V;y=R*dyHjgAf1^t_m%SeRIUISh2BGv?+k45+qh*>T3)J zp*9?#tB?V~E>j3P1`k{T1JDM9(~^ZQAZPI!^w^Alpn-c`z}S;kkj02Z%<(AkmVWB)CD$oK34KM?Y(N3Za zIJ7)^PYjttY+HzS(sZ#KV5uks1hW{TWhS-OL~LcDhc5fdWFqcBdFM$H_@t24AxVE& z^V_yZh-qUw1~ql|Tb+fT&i|kgYmL7?-`g|umP!ODj>>_F5 zfW2`^BmJ|B#ian&T3R9>qJ7Iz`w_hm>NtCV|ERYMW+W17q6oC)imsIiBOxSMxf9I^ z^k2DCW(AQnfqCl&G;uKhI_$yGoJ*BVrO_aDVG$887*3fGB|pL;0h({s82;NCqh5Nh zR7`9MfY#|_MhzObigc;-xX?im45M}i7 zMpj7-KoyFX&Ddr~u!U)rp8w!bLJ{(sI7GkSU~MSWy$xhe?lB{u!a#wI0JEYpLUYdj zxdcCfP`nMu0($zBx-9da2dh*r^dL9+f}gYLsWCP?@?GRwhW9-*!rPl^Aoy^_8n$jC zR=|nOKLT~FZzGBDI5{f85aU8}1CH9p1K*e;fIU?tQgC(%n2nG4F~f*}9n)+Vz2vmh zbN|9H2fx)NumbD06IZuDYZW>EvH~IqU)UcL>Oi}y1*q}j1x!p3K>gOhzImNkXyK7g z9;wrsVz#rFk@LuQ06=?Tgn6PzC`jrRPrxDArs=u;JBoV;32p5jc$Ng3bKsQ}^ho|V z)_IA~QHkkD9_=KvIED0(22Z;mZd8s&T6{bnE!<du%0nY$w*GEdIgzuO4y(A<#R?44;koQ~axemy8H1?9fC zdBnePwu(Z4A&J)NZM5!bZx_9Ju-vs}?+f|+ZUd463P7>r92BFpA3%YAgG@b8_rlq$ zRvJFHT}bi#A~8M;UZLx^&}Z-AjP!zjA(3DM=$<8U&81B#CSKIEc(fSufN8porAcSW zl4SGSY6=6KiFVAQ4zWXm0M|6`?%p3#NQU5-}TFa;-V*U#R_4rSMp2Bn zi~Q;kmVY7$6h?LN!Z3ZqS`K1=W}s;CuQqtNYY|qu5i5WOGNgtWHgDIU+NKWg4Q|YG zpbS)W<$HWNuC5UxzFXhr@ZZ-l=UM?Y)-|DTMb#!LctM<%VC*gHvJ_02j{9?(@Jc?5 z;gunl@J|?`IADxxnCa?nu&bm;ijVR-xe5vbfavMYnHfE}QuV`|iu015FX&R!ybk*5 zzPG;lJ2 zrfN82mT`#k_Px>kMzR?~kWOfw@xipYq#584TXKu%n>uf03<3TgS0`6OvLUx2=dx-J z*HXN6876zwMr8KDFi4|5WOd46o2td}iMkyJ)Au5afbGgTP>1`&+N%cMo&oDI9yrDr zBGC)Jox&YPQ@hhaaSqo&+pu^Js^@onRS|VH#cx}mup8b$BPkbj$~%o))=*pCB^I|% zd;3)1eJgQXkV0|XF%82E>eSLHwBJN=6yduWn|{lbN!cUoKz694&eI%JHEZ;;Uqoz3 z1u@YBvV`WMMt~hfZjgZ32=wnannkd7L5p>QvdDooshm@WQ ztFHXRaDUe!XiDZfZ>?kz8MkEGsb@;Lihp3=54rZgMy+s;lLwQHK++(h&(Q}S{jwwd z0;s4tas++%W{$7CF8sdmEWvm5H$XDN7>-qg5Z5$NO>SI)8iyoS#U3BG!njY){AprK z7-@|?H6e&baS-iSjZm1U(m9Rn+VF%E!RLz&VZEoRqtUoWrBPaTbImAC18@LjTh9$8 zfIyKJ=g%^jg#9a{7Jto;=(`{V0Hd%cJG*7TwJQR|A{ZlcU0JcsAj|jx0M@vX2?7YP zF}ig@g*Uut0p(muuOgDgVirO!n+8*MyuOW!fFIq$zruSL4-^uMA@S8FjLgNv-(L+h zef^TZK>g&c290}kR6aX%Id&G15mDd=%YR(*ns=wvfxuquOaY@zbob4P3|(IO{f-x$5{=2)i=o^IYRcnUn}{AicrN+ilcEiJtM)4jp~3S=p7@ z2ns;bwY&CiEnoqqt6R*Okx zzsEH={E$wGxK_j7^qw)q7$zNM4Hmbzw%UDEC*wdzARbdi_x1YPX#QTC4a;iGJvC->t>XI7<=0T1 z=&iW615EJ3WierYa-O@VC+2w?U{)L_D=$!suI@j~a!o zaC5e(`PjACk`A+^(COV?XSstV5TXj3tMqbY%%wn41{|e4;@vpDyfNM^!FT=< zxvWLZ>Wt@U`8u%W=rZs!)i%9}m$<$IZNxmz(t$MxIwc4U`4A=yO!1&hQ;Q!G9z)b; zYkIbs0La3=OCrz0)D!=Lr}OMGvRqMMik24kE)Akg6>tY3`@cv&c^H&Yy~W7Rg3NHv z1H4(n$8&B+ZCm`VPfeJ=qbIz26(Dz{@sN$HGI{$mKM3?Yo%!2R_)XQO&b~t-Ac@mk z@^BnnE#%Y8EArNFmkQQj1}PLxqZVeELveyj5}c8GS<^DCP zj37)^S`wQPpeK?ZzJR3_7JN_uVSNu?H`uAAyLOz!b{e_Xt) zR!5LEp1e+eEL-6ACx8th%%kK~INUM_e`N#`8SxgYSojh2$(MO zW{*_$kn$}#HH-|GIZol3La`d=ZXYnr!CrfAi00)s7-IAmNtPdKv*(eF!2AP4OV$8l*6D?uRXT);?0IKYZ1YO_X>s06-voM}LIsA)`(QFDZukI(lSH zPBZ6lAF$dh1bs$G^%(;Tf2V5=KaVe=>?(QIp?uz^7I+F$1O-xO)Vng0R#UcF9`YFp zb`#==8H!Gc{L;OIeu`6&ppUnLmY zNZFtQYF5LODd`=2@YB%AK$lqE&JSMfz2||s6D5mkEi0EC-Ut}xw_7?oP^vS{7ySX* zcNisd*g`A%*cHc3$5Nx$@d6lj1qg4nU@m({-5gXZCEMB~^9=%9${ZA}JGULhaL(Ij zxY1lwpp^D=ze3U0&@H&iD1AvIub#e?wvVGByi(j(p&mX^%D$-vYXtF|0DRw}u1l)Y zGc~RPL~*1Bqo^ni=~Ywc-hE5*GLa@G5Bjl;{6u^?aQ5P7HYgaZGbWuJLY!B}tpMpn zvmrn@7q6y0r6F`#Q2!qM`J^%dH4V2bDAP`*vRSDatO|;O=TFifIcwlnEdZI2V~&fK z3V>AIjx8(_d0!Ty-T5zs0S38q@ngas+`}b>Ne#X%#kmYF6?1X$+kSDkzzU=1qg4(g z?fLDjq7(-WlYDDT?b<--O&SXMOl_rNsMmy!z!A6@h-4$|=Qc9d$Yj8RZKq9{Q2aG^ z$Fagq@7Vtv6J|4JhGPK-u+@0uFM=p29*8uGG_GDF$Z#1lDgRkQ=j+UcX&mS_!a%*9 z)lzT@Fqg7+LsYt=!a1yPoy|^z`-dc4A>T`YepF+X(!BDsq$U1 z05kFoRb8b85z~>0PS4gOeSz+{*+rNyrkNYUi!~4h3%eW<4KG+}aNHYF=+3fC)xv=R z5AmxmudLMTA%eEfh)aEfxt|k!!-T;>qtVcMVJY+o_W`>5YtT}g6P&TNIgkWCC`F(k z`mB@2C!49f838kl-9m*#@o-`;TxykTp|n=o6UOX0Se32ae-#2FGF<1G%<+qHXsOWo z$r=OXyV>3~vLacVpj{(VL60Qsd1Aj96E{k=hK4u&MS2=b8nN4t0=lW)*GyjLJKfR>ox-2IQ z)Y!}Q+TlIhVZsbalAua!R~@EM{@FAy9WU^%T8860Ea+m@mm7>D&0rZmeV$WmNi#th z>{f-07*^m?rp-__T`{`=;j1#{eKd#ms118?P(Vft4CbVw0B}%1mf55oafxd!pQ!t6 zKBmVj5{i+fWphGye?RNXf6D|?jFknDfn ztTx_vK+$AdkT7`-$r@V?>C{uQ%&hF4daaFy?HOSw^t%6M zFCl%Y-4KBj>9amrEo?GhMID%SN(88YBmv^zAO^9YQ~^LX(IC2vQvr`a1lrx-#?Wwx zpF?E&M&E8NhF>T1DYR3#LV?@S+40FA)uk4#dS#V^S*)k9Fbp-5A<#|~MHDBhD4%hgb`C=5 z{^tLz87s>oF_Hk<05`o?dDa$ohYBD}8rGNLtoyqq2c>P1OVZeID|F^}bJHSZlV}e? z8{Iip<1RlSU^wW0%l7G-htbv~GLdP;)h<^cd0w#yTTO;}|Do|5n(@Jj63}hIDy2eJv}p zYHm%8_JCcA&g0e7HI&JPH{%za$rt*r0S4=|u+&sXj)z5Mey5$v)#rjRHIN%54G3)KKQMsz?B))E@ zP;pX*V$?EZ3K1M9u)H8UZ;Mh6Zm{^Q%Xxs^(?c=6%wF#np4LpZ+!jHoVojXiK~9AW zn)d1A*QKU%4W5Dp!?96$oR&6-)(o1^h!7OPZ7AabAh}!uXxrSB30Pu-HsDU0D_sgU=4pWMq>cik++?Vr+T9K zyB<2Z5WcHBxVVH{v6F*Pg#ggp>94O3>KFiXThMF53^9H!8#JvGV|S8F`_f$YuO2!j zAwYRvRl6d=IR)ND>I>k=s*aKL0P!&oJHmFgR_QQ3MwlWU*XazI2h*>PDJR<4FkCcqJi_(P$V&Ik3knBi9CwX| zod^hwmpddr%^O(^;Eq4G*76hCZFy9zAJM=&y>Hr;^xtOlP*Tse!MoE)!u<5Fd>GpYOaAktp>V>)ENcZ zfDI+C{J>7YYQr_-~uhu>P-&5zGMT4 z0nGp%*H#LE(v3{yH)o={%))A`EmYrFdYzW&AX7T2zy-_A@|md{ZBO*{;HQ zp>ySzbk^$SG|59*oX&I_(2_$49T-T>DZW(B#)C$c)m6Z=rlL&A?E{!HReg6pizZ>w ztgQj7O2p%vUvP#vHz~*hC)8ljpIX(TG+nj>$Va`=GN7U_D#7{^fgAnXBZ5wp&QQVL zn;$$xO{>}*`SG)>`VXhHJlg-+6`>e_^HFFR zWqw0Kowq_8nt>by>Y-XxE)X(-XI`*gwW#eEm#OLKJ$Uqn>`@1ea8@MNIf@#|`x7U` z=D$;i@rOUtT@xMt6hLy{s%GotT~mZ4Hn(YxbWw7lCnV2r2r}GxL^^Edt1u{dtT%Pw z>YEv$<#gX46P~dyAG^FiKXAV&{dq?h;1oX3y%YN&M|0`Y-u?I1$;Y z$Z}i?atzM4>+Dh{yoEe`WK=qmXG?#Yr8umKB_*|{hREPMN+1AnQ8ax4l%(9TLYcA4BC1Kc> zBSyB*r{R2_-)sF4!NuKyC1up&bSvLeRh0fp<``h`z2dn4-aq8@8Txh|cb%!aK6&ko z3q{#-$4QKN*aQTxFZ+-^Ji<;cs?`PR7^n`Eu1dsDtAwm}xnczi0hw!W&^I?axi(T? za{BW6$~QJZLK?n8V|*B=BcvkW;gE5ZmQo84<8INgucA<71@V>U9bhc@+EV1G(Qt9U?DipSKdYLYw?MuH3SuP%P|J`<-og zb!-f-P!>dFs<|u&gCqk?#?TrXHW{ig*?!OfEdl|NC?5GP^KU+2$u__Tc_yw|hDYq+ zJp@Z=EF^)3X)K^y7JLkqgfC^JHrb=EGWjK%S*t3Bb##k_pdC(BKDOzZ$Nyk=47$Op zk+06D16F+uz?fa-XBhsr(7!YaWwW#hJM5apG$A12zlg2Cd`x?`ER@PQ_0s`}S@v(V=TK`|ZRsw$P%i?F-E zh(@Pf%%fu?XFRS{d|^}O(_FWZ3# zf0FI<(@+FYz@QT;)DQ8W+n2$1u8Ydy&h9RG=)bX72wX0GdKN`e$@Kc*ct^C5z(+}# zEy)syvSMCmt0pU%xYSwB*C4y^pQtOJXA<_uX~sioc%=K|DaaJslghuI%Ob8hpj793M+4N~T$L`pf|=i&GD;NSuJeZPL?(IB|S>jq!23fTUc z^0PU%k;88ujoBbG)tC7-mP=V}R!Sj4Y>9E~lHh<->)iKunCHQ(*Ihh<29OWfqqq@`nO1-pB((h1 zQxP~kWfNt!UaVzDnyVT034=!>2mpG)vJR1-WXjOWPu03>zcvadp06Gh2f!r1&AF2I zss5e|eNd5EHWXR}lzhIy;>>>m z4K1wmT(l5%w0fr>dP<;&P(Jj%{Lk#95GI`|5cQ#6LkBs+$rc2#14(Duzm-1!>QpRh+6{2^`VuTNQITrz1xCRzuF(~88Lg$&WQ z02nAJ1c`$&hCcncblXvD>swyUhwfBG4l+f%#8hIt#bi}15t~^w*dKz z5UfJ#r*vfQ>=;_dJGw?e*y#_?L9=%?_(%&*VDvVDVISV7Os zWlU?UaFm832+--oB_TbK1;%rjNDB~BbmnqeIq%J;CKLyScS8GZZ2khpR1#`esB{wREh9hc2e;|RVt@?q-e$Q zub?7kfzSCk)z5fX@4IrAc+AI6+d8i7VSp_?$a|k%vj0Kv-%;6V%*KvW04-dKYMG|-iAuVp*~kKSZ?j}lvTCiNrOp?Ccp|gY ziAlRa8quG&dhtDqnk(h=Vi(m@ux8P9CbszNR-lZ-C@;yym*Q74$m3>Q2sFwU&!C88 z=kd(=1^{p2VWDEvzrr`+u{Gh~1j1t4Yr9k^E}hG53;yGF!&f1e(tknl7FW6h9CXLU zW~TrJr>-#=$|v0ce*^;i`{$n&UKv06`?R%g%sG@wrnqYdG%jQ z)=nW!(gAVY5t^(sWHm~}q^}CA;0%2{=G~vKN1FFF8RhaVu-iv(x6cbiRJB<8vcdsL zrJ-z$VcV<52d_pm3oh0iP^NrWFFrbD%pegLvvf?;TUU$Csv%h1do7^QwqEoKiUDhS zOrq9gV0+6s^H$0#81+|iCSm7jW+pwK%p0ih)x;T%TnOU+Mk=e-|1P4c6K-Zvx;9FV z?fMoQuq^XQtnjCD4qhllivz%A#l&&PVm}O`>}3lSQ|lA-{Z!bub9xInp$o;ZVBYe+ zunyLmyI}-0@nLlNtQ7ic9CMBw78l$gZF4q{*?^pk3K2$Yo~~^O1Y{7Rk8Z=?wWent z0H$b8ngG|Vzzi)g4v=1ctT*TU>*JK~pr3m)Pn3#Vj!V#iL3o?$LV#5YKtLol{CYl! zfL@P65x8TC5EF%n1wdV*M>%%U4?pJ>ni3XEHRdZJdOFKZqg?5-@!C2494#-uRLCz?Ha+fC1w4D?ICfRJ=ISWIL=kK>(Dts@g$EHmpyxVorAN@rC ztwiRWH+N^KFA)BF=$t2JZ}?$=3>=Si$MJXSvUk*dZ%&0#|9zrq-LKKGS9kw|9$^I2 zd3gn0aJfx1&(U=DLR36hQ_x&52D^itZVYZt$TnI(JBMTHjS+UrAn_~soily>(?F7j z^su>rGZG=NhO1-kz#D~|8P?W^zM|yN7x?&4ju9NR*$il7{w3zs*DXpFS^F?hYF%R4 z@x@Po#kZL&y^lzDxy}Gt*2rkWaCvx(eLKXYT%V-{M*nibdTS+wGmVsW+6AI_o6HW| zi)tS4phCD&DO|qxP!SZJUKM>^U%w*)Y10Z32|j>;+|@bG8&yhwLb0DyaF;9Z!>`^x z0uTFNA(kac^8KGYCbR*K1%>wV>w`g|Y;?l__%_jfHltsL))YRHT2^suOJQ%^!+4_X z`C2*F8l=6oXCeS7y?RKsJT^tV?gQ>B0J?N_1xi6W%Ob}ZOJ&*`LMVFY5q(K~;)Llh ze}m+rV}4B829Q!vAqg%Q7^(lrsW^O+026J2BPmL1lWmx)NQ&CrKw~Qa5f|v#SaAfy z8tzLeDE(kt>DKo`a+=rYrkjXf*TSRzAZ=$>j!`**Qf*Dp$8&# zDB&-cAeiFS2S?PR_{UH~m4bKcUcL>#~s3k-JcS534#Eh)O zn@5{G5jlPB*4?q8EIU*&ga*xb{`L`~%#OrfRMz6o<6%1c@E0ms?GbWr1RX>dDPONSR+CZ08oYlig))u zw6HpS0%kchM(N4;f`JW1y)6T7YCY=izfD*y`tZH!jfrz0ZW9viKyL%IS zhq%cS53PmdTjM($FWbn4Jl31avK!Y?{TJC#2kQ{;|406CxvvW`xPvRys2!k8sCHgk zqI|^n4cfbhUhQ4oFfo;GULEE>0z;k^s3-z0kgv8cg5Yw})f*;^2_!><`hW;!NJYlk zq9A-h5XrKQU8yI*LBTDIL5eCN?}fRfrngI=ojqy#=G_1m0K486%J%zX-vqIK`)Q-} zP$0foME%Xh#_iJ!y(9poFLd7ONOCX3l!tAAvL=>Nug`8^cve>rZ+X!GTTSTw1C!rQ zTU12QLhw*%=e2irQXdcNaTa3XP58sC(5DDUTNoxVf%%gTN|k*F%4-@NQV=!l99v!s zsRoIJLW_!DKQ1m=ywzyFKcP0`;;m>R2LYjQl0e8pz`Kw(PfBnCir@~i7Xae_3#BEU z349iJTj+b__`_1Zr~yU3pn9M(*r$a+@q6M8hM~=egw%wn@=^kD6pKY(FVYv zFY9Om7(@P)qq&HyoS^hH_W|;GVgf#^O3fq$wmgG}ss_hjV5x5jmt7fIE!e`}|He7$ z>gm~;#qb}O$LBi){!xCxF&$qTLhho(`@ShOaqFm9bVbxM5N#c>AjQ&`Gr+lpp#neo zKs%C104NVp44E9=o=PU7p0hJxJqHL$gi<&m;eMEv0OG|!&sCdPY`u=sh42R#&qA>a zE?yuo`Zzjct*ASpAv*ySn2oEiQl!3e35)>6{^#avXDC|IbuLCCG(~;O7$-1xH!kZ*DX;PYSp=binY%Trl9`3vLLj`0I6`g=vpe1bsTi zQwZL56o5_CBnEbane}Odl6h=pqXfFhjvc$Q?)Oc6B924CyJE@fWBp;VT4f3E2iQvq zfOV$^cmgd40*qjm#UrucBU+{YG^}J2O{Wz|33kjUBmwyHS1#!f9%nnva}qc|kr@6= z$0}$g-5CZ2*YoqPz|fU+eS)ja#65cN1UpO2^#IVZLu7F1Y~I$kBQK`Tb^shskxhFH zk}C?=Cv0HpSfG;5LN>0Cg}NNGScya2SOA3C%NOV{t3gJU03S~IX!v=11(GcCsVH|U zSgt{xAFbd1Na96}%eP%#$8S5ZJNHOPU2gl5?Ed?{A0fQhWLEMd1i(DITLGv}+RhfG z)KGC!SY5m9hQ~^qngmH;TEVct9{Mb?3hPBc3-F7=MIO`*`K8RL?RZm*v!u)D8fc|@{_CR**gBk#E#q)2KvHspXguE+6Jr;y%K7si}0Dk#x{GJgZ1&i;8G zpd)IU01>!~u8rqU|0q1c+bhy9l!=!1_JbNg58I5kGleBQZkCCaR~}TF>f!qD*1dk9 z7AqIWxk-wYsI-y&xxQDpupC@{n!p(pVCWCbSIY2HCD~e*x&qgIv|KkyE6PgpT(@Ps zBx&@=h-$l`l|-#<7@5&lmOIDVdzm8z|L5;4sm5E(3$(ckm>wUxj1(7*A-UMrB*X{i zeGupEkx;b3!%lhBu{Zr)g6O;vK%(I<*7UF+6%6jNP`#0=DQ{E|GDZ|XDE9JoV+U`$ zrwejXekhc6oA3L<4^h>zNq7JV07X|G-%Iaed0>*+ z+-rKRFg+O{*4gJeWhjJM6$Vq@ROtwWxqzMX9I^!WuLTiym=LHWK$WE)CsPpoq<%FI ziplLP4%5N?F48Ajv7c)}KyUzSW1D5M?_QAL@yid$Yrejqe3~{uLX;pr4T)Nyr@fp- z)>Q+kgo7o}y6>3hhg)5W3&; z5}&Ag?Zpxj@7e;p-)A4}DX87=9hiEOsN&!KR~7F&-7eCGud;WJC3lcc9?2yEZajVj z2kkDG(}-7+DA-0%rmX4L0d&VPylOm+<>AVS^8FzzW|ARt^j1cEI!<43AEl<>D~afq zx=(Lj>V{W)BG-lxrbUHsJYmPu08aDTNOUw=W&rdQ6haDFi}H}+`=EpGQ4kcP+&mO7 zK60s5Bje~(8|US{J>zed5_z6=16JJJ1PWk(V=X%%L93HEHTW%>0Rj`a=$PFL+M9kU zRkJ}l{Z9+KConVrL^M0u6HqXTBTJ#bT~vVoLLg`b_v*8qEobU$!Ckg0He^LF?pJ`` z?37?=ZAkM`g-DT~G(?iL?=XKi`8T(@J9nHIFw9KkJeb3T_z?#&BL*5JhXhF6h986? z0HIV?Tjc|VAGeVl47(&JK=W` zL|}lq?kr~Ytv~sEf35g-{ldowl|W!VAt?mTA+`0u8l&d$KV|$1fbaZ~3cB+v@+B)A z``SP*IJB=zI_N~ZU8}wSxhRsqy|F?&Pk}FEL$^|Im6XVIlm;-HcdM+2{lzH0N{+~ILmAm9^li^o)7iR5{|@TCp|9B|Kz>G zoC){va9|jojf%fz(-sO0DO+Oid;v-7Sot}|NBHw`Rat0GKSkqG_Wg2{tg(3i(n*$u zpJw9YG-7I;0JM#(mFsUrdCd!$JckYZ3C<*D(H_Kv?YZ%Qi&nCUM_$k$?0gS&JQ^NlO=S`{K@l^M} zVf8)$~y5t4Fi=;}U z1hoPx6wVJQsAKq(KwAdp4@D3M& ze@6a$V6M`8WOB750&#OQ+?2Ekru38%E>vbf>9Xc3uF)VX`(#K{B{#_=&3*`Xyr*P| z0vX7-79;xs5(ucId_#lDZDSq; zcX}a#qX63Yk=vQ?4rpvdt*Vw6Al0+x8XyIa8s(Bg+zlcGNwV5182*&d&YA>)w($~J zqZkK<24Eu*s%&D^(aATjVwURWKF5JXlu8-mOGtohm0y-2T4tjlW#|@?<;n%Qo@D=Q z^TrPT>@#qf;5IOlsy0)Mnir(0Hl7dkQ?hn)k4yp zyJ;BYSn&nY1AA&S5r%|JC38`dMIKX*SL}AY_YhQd@pgYt%+5sYb*aaxXYi{e$~eSq z9ozuN3EPlKJ3P2ea6D5l1+(2F<7ne@S{S*y7OdMecuW0$PH2u$d4Rh@zWxVuveyl- zvb5!?vuD}GB41$!HBLD(ICitiG(VbWnW92boYQI&_~H?~2h=Ukx9}r+BK%^DY@Cf$?qBY4)UbqqSq%b%yMG)AD zz-|?n=f+j;04sn2fMwDG8m2m1HjR+XA&HU(wvMPMz7!G0s>wis2t#@7XOxKtHgUu^ z7%q(>21kopMBt4o8)R@tRr`|)oT6LwwOWp4dL@g5iwc!X)n5ZHF-U7em`mV($j^I4 zfp}4<7I|!E@JOS8L1P3q*Cj_1RZ9(!JrbcA0Yf$%AR#uAQIVErrnC_yzD~%%*{$iZ zF9!pPZ`0RjBn?z-ZUvSR3R4h;n)T?K0f}b74|*k$j|Tknpdh4#a7BZf!Ii3!+Mz3- zJ7`OzUttG&KqKLB$s(XdPr!)_=5TRt(!I6-Z~+_p+L#w;LadrygGUZ9$DAnn=l&~M zz(Cg91Wc$xY$Wl^aWXG+f(KB6sti%JnAw2xsmie?D-|PoF02u)f|sP103*XXqC;wA zOy)5ic{L*GCZce7R=}52gkQofiHyY;gd>;?QoD}^;r1{p)nT=-9)uFVcm`M1^WbI2 zv2V11W`NW);ug0F+#3Lij3GgA{2P3r7&>>15N0chv=iB|m=F%xUAy}UnyOP_t9|Zo z*tEs22x15ma>QWqjYBn+qX|ockewE4xdZ!fpv4R1C4r#5F!o5`ObS?W%LIy0OOb4l z3C8U&xA>Jx1?3)jy|e#y&Tbd!YBRNsQcG-9RR_PPOijh|0GUTrJYt${=ntO=8a3%Qj9 zd`7zB_d+9OB{7Qnz~U-*!OIY#b$p9K_OJZztN16?)_Y~KwlAXXy%0R#e9yK~4FMsm zOgJ}FBQ%Qx8%9lj1~iYwXxB!{EBXeh30abv3IX~x&QwT1w>~i%#^)73C2B$hAn4Fk zX8(4x!u+3HZ=y+Q{pVBh;BAGf!7UC}BOd{;Py!LduukqX8DZ{G58bmpEy1cdLD}8n)MH5tc7;MuX)TY)riKx4U%OpaqiAt%;WIm_f*y<#4p2Gm26hAPhrj z;*{!{z^#F7BiuKwZ&KTqtTWn_u8K3R_&#@1kgYY1YpunraEu<;08S;+&0@xhSGB;4Sz_uYFx+)t%Px+ zd@r#eI8;u0Ca+hZE_^Wfi^f~+c*@5rWmQ1fRFGATApdqdDdso;KoFrp$^v%M5;KG1 zvw~sEEV)Arj6)h&3*bie#xKyeP+NA}*uaX|JeV#p4=m&bg2pfP8n>%O?aQxC?k%m+ zRp7Q=IfPRrC5En`0@0<+B?IfSg|cBO3lvL4rI{yg(VfM#4@@ea7Rp>qn;TME)FQPvFB;((5S#@Q%3PXSmkS0 zNY7ktvXY&@f9VMbcx^k>h*k;T^s|%}gMiebZHQh9kmC)zesU{B-;~Neg)BEFh(gKw z$f&#rd{r#~F(769CMqP11rSo<29MAhLdWMH=hAUg{D(|wkZM%YG0kWZgQDMu;+_-y zc_8d?7CLNwdtrxP_u;yPpxxi2NP3>jwbVE4&w z-#lmrA_=iw2JfiutXqgg?H}M5`0FfaGK;-PFh)|+On?YnyJ^$bFeq4ve=CVagq1iP zGxRJ?nQ&e#u#=n$$aGb|uLnU++bN~QX1aW1K70Rin!~cwmoLs|Zf39BV{Lh2`Vr3GC`)Q%U@ZWzpx zZ+;D%(M8+?S}$`epocFY1JFbb>4D|$15!8yhHop0`8x2~-LOBABmM3{XeG9U2zj>{ z0NRd!a$H}Reo99_C|TMd;rkT=i0eS;IbEenPwO>RgM??9;*?5zvZj4uRFRqsf2cj^ z<7v5Y)A}=t4*DfRiNN7%_g`6eJw>2mK!MCksD=$0D!^(5)jvxqT6itP(3>q*lA{7c zf(b{%p!~GOfbs!&3cudu&j>p_g(HSS%usxJcyoc}H@2)4Q(4`Qvt{gRdJYY@>~Q~p zp(ej3mg{JuFb;?EC~ElZImU9&Z6Isg&XCtra!6q zZM`pZgu>JhBUWdk>k1*$hz9vQ8l0G7v;x?pd{)%nZ^wcT18NIcJ&N$}g}BlPfN&|j z0Yj6hn6O;uXkQ!|$H5UBAjWH;g#;1Go-H;BFEv)Aw9)^GdN#X`r!}f; zClxxWmDr*|o7h(J&-81W<7^79lM{I4q0{P5C`XMMU3Jz{Xu%2|&Zs(A5P4!krSSV|F_da~TH5ft;;kY+VJt}wU6y9BfnSm*_YeBx`YGO8>X>J->XLdl1wwx(^{v~7*03%owbaQzE1?4=9@X&I_4w;Fcwj(Kz)mqGdK>%ie7&ozr({Y!ZI1 zf8uM6!fJ5h=T^E4GLXY)oJ{27i5q&H|zT zFq_E=QfXVZ%(<)28UhNyQzEBkAPIK@?S~Aac^MoyqHcr(Bto&U&gPlHuJlHaq)gdm z#|mT)^Zq1v8)J?=yM6LRwPBW~M{XwsDdgkLoVPa;~5m|--%&X82*VAT|2&ENDHE0j`Ib&wi$}Zd0OaSLxD34jGyd`gEd3ohMEunoPw=VTz zdXy+2LWs+xFr1y5%!LHm%tDewPAT_#O-aUcwoJPH!RFH_CT83Mu{J=dlWQ;^F5uf= z(oJEkb~T7OpSToYpJr_wD!5o2^}jz-=R~u)fXlnyvO(oEPZ5e)?bF()0%Tkh>NdY>6>-f7B+~eKukY5X_R} z!Pp_X0AOH%q|#Uc1!o*g*cR{wc@{doM&Q3Hfd8fqo75p08{6WK3nn@}!A(S5yzST} zmygtM1iM^2nZ!`Hw4|fL2=fLA5KLHIMH-O(!sm7LS$;^-E#q7S4WU!o2{_w^Jn;2` zE%52GVpy?;wK#FylY*<6IIOXjoD`TQCv_0{!}|kd3@i{BtzzBJ?dcEYyuiZc$m2W4 zjl5-IT!h{~^p~{Vi-V^7i=4;5(q9D&lCowxfxUK*az#3D>o}f*~r%Lc?s~ZUX;V?B?KzTN5p!j zwL>ZR7l|>xP6|#3%wV!f_zRmTX$3K)mCFYFkNJxn0a zL%`hwFdKtr%lR^Pp#x*N#QmZN5D-@mLzBUf|A!kQB_o{Q8y%YYN`M*U;_x?Ku82Ye z6AjldW|*gYY1j!0fWtRI`{+Pu2WZ8vo30LLE|)VHA4j+YjSYP%L88hKC4g{~&^(Ti z-mIex8IiA2SDYl=I+nTwJ*JmSbkg=xPe7r(Zv#8S{&_%T-I(96!2oh{H*Ze?orCY| zDu8Ug+G2wdq9cGFfvycmOK!o>pxLTV@VL`GzCCm43Y1s}M00WkO{YGxR%Vu8_BWp24*cpo~-vJ2(*~dzTY>H_eH~|C> z^5ahgNiNhqL8HGbO~gYg1&EZB}CJCjCqk9Rr%^odRm z6~-N__HdhwBi-8Ulmo=b={YHLXNI);A7LVMG9cAqs> zI5=s!FHe_Rc|CEN{^5{-lxGY3VPQfDHw<{#06;;L1RL=-*MNN7vuGttrJe4~m2|a+ z1mLcL9i|U6vK!(=#r5NY;2H1PD+C?wxWouchdDHNJJ(sqg2CI0ng}zEygMo6y&;N7lPgUCk(LO2sN>YYqNE)oz`&5{m5>&Bqze0n zB-r^ce&124C{Hnzq5pEo&CbP?k1*Ez@o7NaJ^9BkH+Eh(&>xid6FWF7|EipVV*C%5 zn%&`EUl%grfvq>PO!NtJz)~Gh7Wt2lmp?dx6PN=G7er*KBzz1INZkic1g)pQZQ1V{ zLAa6$#x?+Pz)%=9aA%bhYAH?hgLAKRAt^@L^)4T?rwCp5&UoW``eN5O1-MP@sR5F2 zX|Qy2e*Zc;|ENGq7keGT0Bs=628<;ef~U1C?UKW3BP<&?rB$5o#Bc7Q^XMZq8(_ko z5)=@*AsAqVjKFi0kZ`hs-0=zWZv)YLzEB8esF_cV0B&xgYH@c@x*n6mL;O7Rd&Rz-(SeS`7>Rj@#e?To~51(?{++iz7*-4r}vYJUUx=h zR;((AE2(l#UU-03Kf7tKi;r7bah13)Mx^mmKJD!{P@G%#Q(|-5wQ}H2yue!=<{ynB zE=!<$a-mG<(a;GxBwdUdgopN%C4Y2;>l33C8Z&7q3q#yuSZLt~D1o!OgaWBs9S~jP zA!$UC(TS&TGm$B1#5}zi=X&S%uIcHznw@5&H#vI@$0r{QI3@IjSs?eG?H;?vz%S@x z4@S>82=r3AH4FM)!3K~4w9pODhG}Vs6jp6{meR|3x0K7$_=lgq-ys8Vk-US)PyMo| zFgg$-Fksz9#2cqu@%5q&=K{`aW*(V-wT zV7R6wAu-}wek8(m+^SC|A-?#e0lv~h>mXBoF_Ze&essarJf6F~_0;Oen8m!>PbH%w zl=eWG=QKqqxpSZ0a%*bSNyjYNG(^2aF$j%UxI}b`2(}^x&?=73`x3E0Af93JZ1lk4 z%|g9YN6|xJW^c;` zwT6bHw<4areihEh-fiuEQjUtky;G3rA;2^NsDPvkpo0atjtNQ4%V0cS=4S7ch)f_3 z8P)I3?#9=2gCh4G;ejsxRg8RTnFjYq+~hG`WJ~~mbJI0gZ*bK4&@2IhUYWQ}OD?tR2$w4M(Sm{f-nx->$8ZH8DYd&d_8eBZ6FVF^3bKR#qiVH9i zu_KrjCp^6LxguB~Fx>aaPQpW= zhcasBcT6cBIk%M3g7(-4+wH))2=XcSmGT$7nil`j>=a-*x06#J&H9?RP>wp7|KWYZ z2WHgyXq|FX!ZS(GaR_jO`{Q7&{+T%4lp4ZW$A^DgKJ2`x%=yK~X7jU@HUABQtHQ`g zB!Wmqb>SU#OYqbN;C@eDE$D$S+HT-oB0KUU7If>YV>kr+3*C5uT8%100tvc?Y<%bi zsd&pH1zE1KvTdi61p{k2InPq3+3y9Ws%keJKqUN^6jpY2v7?FB!w{>SvKg0`bC-?R zC>~XqT}0o21E7PR^#V4?(8!^J3O~L(#2r714c4jC`H9_>z)Ods5Lr)!JD|(#$x6(` zT6ijMI1kV1gRm`EqFR~5BPal0fU=p#-7sDL>|-k{25e@)qZcpML)jJK_W~filW*%{ zph56e-d&+Y&etK%B&X$aJK*~Wqv`b{O_|ug@F01cYC95!XSXE`n)hg%D_=AFe(_cL z`-K_g8CBnX-_-m_5RVauyHO+l;^V!BUU`zVMX!SF?4bPbsS($7foBEm!W(o&de(Vl zd66hcDBtK>I*1SlMaFqS@K+z1?>$l)F6^ZiqzZ7%nwZae{igNDk==^G?H6^z172{U z;}5+u!!1*WP|=i|0Pi=*5MGQ-(6r0TpFFYLA@mTJJitQ$oI!t^jvXgT!LXzZ3*i8e zjoDQ-0_Y(Wvg#ySSzCcCv2F~!-c(;m(jfR?W`Y{t0u~2T{X%|>ZvJ`rkW96Cc-c?< zK|0)xYOE2tH^zX^h|`t|>#$WUV{(AGmI=>2sRYr8Knm?wqKOwR}aPdarkvLNa8z&Zc06+Zi%=!PGK8q!zI=EWA?UAt;$k+AnA2)#g zj<^qu!A{*P@I<}560Uvwr)-*u&CPY|P%u{Sf#2O@`ZLGC=pp;jEE=_iqJ|OCA)kUt z;AsK^3a!q(KpcS2rsq!ujzg9cZiVr$bJ7JX!Ywap&e1sJA|X^@aM2WC z(S2Ym0CJth3J6(g(UgE@8unwz&P8GS_8*LK_wqmHFx7&6ms>Y8r6hC@#JabGb-^i0C5gOEGx%YL>T zB7}YbxFOWBLk8gOVL@$h2nwG|KRgr*>2aeCyTc)$ABpWX!x_NucL047(uW!AS^Klv z?Q=auUBbvRgDmM2xQ=yNtY)!Y>v~$&J<*6z+>uCxa3Ih&F0#~;#UD3Ms!ESX&Wr(J?m2 zBibkUbpK>QQ{$E9xazb8n)?9Z_GsoJ@DM*6dN0D_yG)6R>FwHEb_&jGYoxdXUTbfv zj?Df*8i|;8M-H$cofmNb2~5xN2z&E*H5A~4E{<5TKjeoJOFK0)L`jmCnU)@q!4YQG$kWCDCFiS)uK7aH!>*I@XcTs#UhJjYf6~ zk)dlQzh|noX7hr?Iri6hW3SU$#pV?l5ZeVS)1`R`*5#C>~l!lB~i1QuECPaSw2_mh3Z&B%tH zaRjs7owzlt1ZW?1t#zvtWGRs|j4)Z*6laK)fDCRp8u9CyJs&JZI({{g%mt(S;VDu+ zm0O>sr%L6ZS?vf1!3oJMeX|q5Mz$g&utN>T!fPNri`0mmGH^8lY(b=V`k7tx3cXDw z05c&tt8UVxP;myJF}MK|ew;u2!&UX6r|Wl8Mu*x5-HqRM3^B9`(J@V1Ia~Z zHPv!}cmggl_}ejQ1618iqP_clL|cv#5M%wp%lSrCwwJTZuJY3DOUtu9QN7~7aQ6v8Y$@Sll)uqfSDQCf?&QEXgBC)b z`Dscrm7e7aAPZM%SjCEY18B(G9wNa4xAQWE5bt_aM)nre)qBJ)yi`c;t{Uunyoc=w z(Y4YX;D$kp&P9=QWj7zSnoNlNlp9r)2dfZsiQCc5$zycATy1)+=sh=A;nF4u>ZC;@ zBI~?+ubs$=R!pA(NeS{2fH(>5DFl$S)7?VViaNJRiqWdm0bMnanDBXMj&|^7TFn=n z<3P?-DQQ7@(1MKPr!Lx~)!+5L^aCo^V=GPpWq9O`hfcubP8daQXxaj=4Kg5~Go^Ez zpTxrfS_azzeqkLiCYF}NySpiVam@ho_>`+O4iy4}=%zSwNZeV?_oJLSJXRoJ4$~?0 zD3CxrHZPV`+fqtSg!Z@FP*fcl?W`ME`B3PpqImoQQb+a2LzWY1AwZ7}7>vaUver#K zsE(u(eGE%fz}8F~IE^MfA^@w#$}|L0C@-;Soe> ze{vL{BGJ(zEiPyQ=4pzK*R4ce{>F45YKQfZ7rAtbDs~9*rav7J5@aJf*m@_p zWFjsF5G(`YJQ|2#CT=Z^BQm@41Bkm`!;ntr7D{(Z5<27>q2V{{re4sE2l1V} zX0RRs4p_Vu?Ol?{%f%bd4=dFUd6-A9hKs(cM{MrH^%VOA!VE+(9jsZav}_X$kgGpICop6h+wGUGK6OM9$Gb^ zZVDlIzd-}F1+H|FP^FJKJ1R-0*LjQW+{O|Cr;;-07oqk5bYIkqZrj0fg)A2hYy;sf zG+DrL;27q7v3)bXyHc-41(oU~hcpDio`O*tPOn+85*P@f$!!RdP*MQA?@|^Ip1@^s zAS5AsqsR~zq6bZhgaO$eS^|&d`Sgq^0c8(CGyNp9=fP6jOWNHplADMx2cvy%0~a2h ztyyKP5>|$JC6>t{_Bd;f6EYfM;F9@*w=BIFO1&mkr9`-=D2COk;uXz50&yjEp1Lg- zuyfXr_XvXgma)i`KqtMf8Zc+n;^=u6^Mr6oCk}2zAQ^F6-2h;S-$LY&HLXYP=ti)7 zxK21I!a0aZ$Ic?Bas>z?wvG>z<-vb)Q3S>Wo+9Dc!anc?zAdw`27IH%r@PY1`T}w3 z(^$ZFelYcf6V5FjmhMN#`pL_q*=(t&kYkaoH86}|x(yTrwVO!+xR5@89u2obU27D= z%ODk_d2bF!FE_4|va>&aNN(E_nWhytpE8`&Vn@QY!ixhl9Am%{0-7f;Oz93CtGJ!-0 z^+33JqmkJjK2dz+_U9mKMhm#WaOjMZEUW>}sY#!fMJNQ><*M(FKotl?Mo>};&%a4m z;hOH5qTr2^hkUN=(w8ZXsXL9Y@JQ~h*|SUoGB`ZI_$`EOMkEn2&=`OoTWf5v!U`7GF($J}IU=wI4@rI28Fx-p~zryszDRIp>M8x;h@uf*|UF4+&OU zyklI#VF@l^>1pc-ga1!Sua8(Da?VWE1D^f?r?UJ+gadM5Mg#|A&lO?>fymEsd&r$l z9SKY<+F*+jD>|T_neMGS9C9#v8QarxD6!FcKcN{|gqNI33h3RYHf2UGm9pWJ3xZU7 zzzG_*m+O|^L$Q3;iSF%IL91k2l}EI}gCi z+5>Ar*P?70Ch<|w1?uryqhm~$qUGUd=zBc@Ng5n2H-X;>@?>Vx_a^}y64Z4y%}6zG z#j)^76!XM_nz_=!pe7Cpil61C08aS(?|0B*M9l6kZaQS5*DbPteIl}^jU%ZLofOSo z#4w+o3jgdPxJp5&bEG-*EDa+(APxIZt+olFSmL@KzbFI-LX-xLA-7uMq9I5)crOG#u(0=H{IF6-j8!>iEcK6 zdlOcuf!K^;CIaF>y0iC}ta0H>c=~j9gQVg#SMSKd^O}HB6;%h>Gbsd zuH9u5q64}W>_RVGR936}C~!(-5MEhzZjI{{CS)sj(;A2_UZOdCIv%ih82^MJfPEiC z0SFau_L3WE`Hw_dv`@d0W#S~g_h<*J^e*@^C`%C}Wq%8Yvm?Ae%_Sa_KqdjZu z4k`%z<|J z0SN88hUR)P?D6@L_xg&S6AHXhGFQ6LO_{6s_*{R)gcAMQmzB@$Yc*s4dfTNx2?PPQegg-%>#yM4S-|Y|Vb?zB0%FMAl5IU1Z?`P0d=TKkUKm zU3gAK_p*_PNR^bd4sP^>H30-d!KS@mZs|j8xh1<$*mM_!!AyB3T3Z*T0*w4UfF_eh z;7kWIK>mxoK{yecLodQD{DJ_-4_A%l3>ubyj#GaSG~5{&F~Zm(dH{st^L6S| zG$qJSKaDgF-WG*j}@l+?iB6~1MM0eWh?yP(=u;1+gzuy6L#27c#=+qqjL;rF* z1=-{|(`jD^Y8rz}AD@#RY7Z7WU}5A{4i}E4;i-3bAt=@sfEw+CEJa-6#5K!%Kk=mb z3ETw_vdqF+_<3zzcvQS-?2bBmW1zMSdBo!@-ifxuAO| zbT^bmeMetexk=)F#EEmq(L%WeE1+C@9gTCv&gBt3_L7$<2DD#07Oeo zleU0@fCFn#SWdQyaCnC$sl^`|4K{t^Zqyg>jmqwm16tvf!N1Es^bif72_zZ+W;#SP;vqnPX`672+m+fI7y+ovxD%2ekx#5y~<-Co-A z(b*_Q?8ON8H>W_lsv&4%g+3m` zn3`!Psu1&dsNko?K?xRs^~@4rU%)D%nmZ4MVoi@UcFh~mF`8q~=+`axR|KGfFz~M9 z^Tb`yMebw@v<8Zb=88r@`3RyYLjW!nA!z^MkRlEJM1hrO0{2sdv%pYbkUDtS=2>?k z#0EPaMgWa7Bm)_i$(x8-@X9wp=nl1HQ!K%;U5G)HmLkdS;ggFG^D3-imyU#Sf8M0KX7vUBa-CPkBHa{{4CM<%Fr11dn-`rx+DHxh1%haH$=!46%h=t@RlEw zuw7~gOSEL-0FOO`D60timx;J?rvE0R+vs=>bWVR8gZd4nC_kvA1O%|q44 zh4qFAItZqqsvR)NYB=l|ByNVPWQ08H`Pc$Nc?!s8Cy#BoOrhW(kf5@y(KFaMc-cs4 zev;PS%V$wWMv+rc@=yjl;g9D~yMQt3Qu{>kd=$V8&#ZXoRp4YxSMc8S9;~8Xwh#mt zKrW}ffN>hx4_J}lL(41`oiUVU(ugptMcb!1|-V z$0LerfK?YmP(hx?HL4i$+-r%i);4jt_A%26rJ}d!;^Yq{&nfB#u8vqW%p|nSU1(`vTwJbjwMh;xLnAvfbh)9@m_W}kihun zWOj?2EZB@VBg=kAu8^oI`A1`*cvf#OH$q^|$dEVR`@?sBv6ozN+}@MA_YnRLLroxH zeMeL~dVAkz z@r?yA-{N+UJR91D>}r&28J_Q<0ueKf;_Uzt5)d!|MhXE3HQm6aY#QgA3?B7MS_146 zT%ZF;QCMd1-DbccWk-Baw8&AClY57NKzi~!aEsM(1V=xzp*HY?Mu5a~TSDU;=PqQ${IKENy zZ2&eCZl`SS4jU#zBpQ!Jd9E9jlXoCZl}RZa#%M94luE)TI` zdN^Ooq6qYZP!f#@!sJAHh`H4+1wd8YaXg}@R0wdM zc+LnoVU1_VTj6#tF_0G3Z)!v&ciM*^@&+l*VQWr+L2(PMLaqd3`Jg7z0bCW?)Hni8C6Q4e zDMmaKWoZ<`ezIP}RW?}J@LQ2f&q`FFMXF5CADv;AM#unJ}+kF8S7i6$S zs~^GuW&|v7&kQ#Fp=jZggBH7)!?6z8APDIl#iZ`z0k0K^bYS}I!v+waE}fn&rf48{ zM|>;5H3OL4VR`)M9}z)ns1bRRz}>`>HlJ!M@JBulk|~aH0?=9Nw!NRQTSXwA(I4&x zLN4D6h&Q(CC>r_$8fSoXZA$ntzFUI_E(x33F51CEsbzj0B?q{yZRlzamQs_*2e$mS zmUs~|;3@+M0?m7(C#%?IzR2{NRAkB#*`C>%wzTKM6VORLZ z5rBNc88HuwCMexJ_?}xtT(7rKt*8S@B#?OvisZ!vn~wkhL}ob@ZjTa!5#a4peRv=& ziq^rl7(mP)dZm_5ATjrB{Vis!NTtqji#e~zNrDDDxp}BDd0zIPGB*$X6fbn{z_Jfi z#DMZ0RAM+>hWPgSCpSBJ4LMeH5|tg?uhbus&f{S*$Otb~C7Vz{=KuZTmKtd!~s8-u(qh=J(_RryEvu zte*E;*7DUi_Q)ZLe{;1Fy(+jrXHtA;pM?}u-+6LTsDn-LHOSX4*GB6sPU%)l>PML=`>!L_u=bp$S4;>Zgi8T@93pKCc4TW9(c z4McTaO4PV&0MN~2nD+mW>##7`Z7ExxMtv_ETY5MEJk$qC7v7-3VI3W3f%&(VwS9?> zdP)D-=l1}0+7D2=zMP`ZY+g>JP;ujaKxbE!V87vysy6Wls zjvTs@QER9Ll#J_3y&ri4niwCLOK>)RV)Rt#q*IxUdJs$$PyoP%cMRqO#&X?B0^Ynh z+Xw6`z;(?pSM)i=^(3~TDG@GMI%bTYWmy9VDj$7bBeZ0tj@f2EqIkX|FFtRPAw zF6*az$}Yp74d&VzLK*Mx2a+tGnH}eFfpYh`@2LOo3c!yCA2+u|1qc_T2c-}aGGS=y z{&0P)8(%ttbEW6q=xUa!H&WJFe46k6FnGuEWbU6P*xdE1A+wxyx0tN?OV5M^Yvusc z1Ziwv!6Jc17*diOQShi}a|&usi^}4Obd#?~@czIVHK6vhD)cb4wf5+;)Qp<-76;Ik zE)Hj(BeV(yL6Q0uNt)nKsgruiu(pq{*;A@=q?HX)^hYx1f4X$9zQVS!@NhtX&;hViicpXklcWYB3@d2!u?Sf zS%aYHv2l@?btlc^Cks#!(rHZgsKNU+y+d)LzQDmL3|%lwwe3-Z_JWgJhM_hEu81xP zY+$iS2*IA2u+~fSU`g+DX3VN~^Sw)Vuy+>AS|yg*nnAgf0RG+#FL z@!I}*&1K%gyQLWi&*%;NfH>0-(nFIa7CoV0ZFQV(hl9>Q_`HfLatrlhS;?82-_Ux~ zs+$JB9QD=Bz}ZugH;8@3>fktO*Yjf75ELaKRfXvk?kT3eYx}w2SY%nP0v@$~|1n7U zy~J!X1?2Mj37T5708m)1=gsf8Y;SbqEqq=h7u4(I0Kjz2A_xf)HS5UBl9(xJQx0ay zp-h~ugQS&SY+2#py#>=Rb^09P2kDs2_Hy-~(;GHjt8cAwb83tI7DZxbzV1GorIwM!mGAwE9M_ z$I-sX@dt>juj|<$0(vkp{1|N0g!Z}NgmVfJgQ?;R`u^-yJHYR-T~Jk43Aqx`hHRJw z0MQX-oCG3}aWWbZw`GWjhMWN#ki(n`ScwX_NrB>I(+)F&g@wVkjx4vmEtZE`2b?G1 zau`~Efcg~Rzt)$lbAL+}$3z=sQ+_cHqV#e$sNLE;x3J+U}y3Ac)*rpH6=)Pz#dYQ$+34Z4Nui>CEGk0|6 z@Kl5_T1aD9X4Vk4PCmtSG%Ej3Rta%yX96}4gUh%EM@maWJ)Lt(+dw&* z9s}SxNye}N@DcO3@FPnOU?CVHPF91Mx$wmCTxLQF8>@aOMPTv{s~qnv>zM=*M2Bsx za1HC7>81&IxI||@t?;BeY(8$31RyKVH(lQovcSB!-~-p3hGeBQOB+kjBc?!$0xy=y z#luhER$31!Dcih{LHO)Q~eHIux2*I_LgvRPxzQH7}6XQxL^vUm_@d~i3 zu2~Lu8TtN}(9@>?Uz)=j$U2NN+iB?13+}r)0q6*7;dcH>3)4q2gw?967Fl(x_%P5~ zf@Tv3<1_$wAh_bJMHZ__*o4C-ph1-1Bd0d%{&FV8LY^qk$&-#D{!fZW^IQn1#@Kh9p#xW0lM0>B!YRVEr6JzFDW?20>ih10yJLU++N~&c+-zu!FXS#g?fjGa0ZvwqhJ|&A=#yjG= zIikTdh=o4mu01T{VQu3>SQpm$%bXB%L^qr%!rudH@sOtgr@*gp4l|rp4m1PZ*1ofo z0t(jwb>Ew=t^!<>>P`L@R#yzch2gf;{|<6*3-JV0$3%F}IaVcpTli{QM z0LtQ|H*anmQDg|tdUW;-3f~lL(@T!V0#~1#e?0@;Yl25I0|3saoKK(m4E$B+CXNQF z_$n@%BB86!Ni@nK5Qt5Q0Gky?J-(BGtRd)FDw{XPXk}2BHx}q~9;?deB7vPh|bS`=`=1mkEM)3GHtS9d#tDY1maNfum zL_{rSz>7e!Lpn9EDw*z0!r?cs@&gbWvfG)mNr5){*b@qNa}rJ`xE3|2I7vF7IiJ)C zvUEJn6IQZ_ybj;vM1(v*C%=_MBm3gQ%@5N%K$B+~FW8(cM}{14V>q8m22#P2hero{ ziJC1quE5Fq1YY9+Vm6qpWYvt(*+>-NNR=`g zptr6YN9DS-j9?hf4dm&B>sUjfiY6h777#??1O1$Be%v!64!DIev>K0Ub}bMdy6?B8 z{YVGc_;>HJ#rd&)*a%Q0;J+tI1^^Ba)gnN^s`g(?{0|yB2qVh;5PSVSoz_4A;#hJg z2x5bQ2j4JAy#v|z^#Fu#oRG)zgcf=UzM*PaJ7eFz0U-@q^dUu$03Q++T1jC%H!)bv2ogEK#@;m9+vn{MLG8K~>UM0gtMSKrsI4a@Vt zfMK{xThLBua}$#Vj2v=|FioG853+R(XSL7zWLaP|AhcDOShE!uFJAH`0?lEND#=%J zkPa_`+s7FpP2xj70XzrjT(C`FEDnMeW==7Tf+d5dB4h;}&w&y5rJyuMxjkn?fk3r3U-;DHBpDxncLq_=-+Rn`h7rYLE%~C~KV4${cU5fW* zbp8`hf83J*7*gSohw+->9YW2^C{*OXku#Rj(fWG_QKzitHTbfx-WWDsE!i%zB0=C_ ztblUfGT{Rw!J*~-vnOVU}AM$oEG~Ic#$D*LnjEAHjkePP8v5P z5Sj8atUQ^1GQJ1a7B&%&GzGr|x*44-#z8)Q_{RJAI1h6C)_|dDyBG{W+_t|E)TY3f zchXv4ptrl1!&1hzW{HJ;58w!{9T{{B0MvsK1zu_$X9O9LeUC{PiWwe57(h%C9!Kwu zAyh~jPFPTZ9!MHgn#x(dX0*FO^aOqP)oIjP@tWP+gk9r=RhK^{!nGtVoNbw?aUpE= z8}d?OaCwi)vY^zEds^qwjL0thRvRmAzD#N>V?wA7!E=>|V(S=7yBZrBlPCUTnyGjo zrr?r`bod?qVP=6m%T@xc!(dUh@qjx!eiW%$05UGF@REyV&K{Ld72x)1?7ZwGpPOW9 zt+kPG)GJ=`0P;N)jFA^>xfddAN$$trD=~J_pZU^x=J6ucJYLzO_DQi1xf^f~$L}q< z+cjpFy7k?)X0yNXXbO7*#dga1=f`Ds=FziLdJdFMNZBqLFtWj#8`-b^dzt{I-q^l5 zM2~Ejj3UYwWcii~)4){%TCG}YmFw^sJ!a#o6bR`OxNNKgwl#HoLybLh%m>FG9J9^{ zpV+%CGGT8t2%TFI;Q5j&nDONNX;@e-7Lil3BZd7UC&<&nZ1G$Y0UgvD{>2Bs;$m!e z7iE+ZGGQ?w2f~eYS;-kqXcVrJ1@>t}4`-lSz5@U!n>Hu}6iFVE@172j!9jE3rh!Td zg&9O)q3`jT?d|bis@y&mR0}rlA%x5ij`j-LO|8tIqUi00r1};%WN(qA#FqX&{gIZ}^ACbdV4B#?#wLGIZo_{e@j6VaFq{us zMPpYcEcI98L@(#9W1~Rd*Vn{CF#KQA^XGFzmtSXW28yCzB2rnqajtc?QwWG37LL!M zusoXcPiO!GAO-FU#jJ46o*~v>KK;j@OlUFC2sl71_9Z9rhBzwGGRcAaYAmkqBz~bW zLv!UXms!Xr$^!@P14hd8TN>tUi*qKbfru_Et1N)HfFt*4A+C2U0A3odm9JO=N))k! zOV{UXD(oS?WwJAu00lGotX8}^FU(4F3w$V6-`H){01$~ddkhSC>%eg|=)czU6{dJl zCRy)-t=HsIl8&;EmvVvj7T%`P`nqDEK)f;-$!+d*LKZ1C55RQ>r#66g>}HjC^z;HD zbTWE3h<~MKdG#%&0BnD_7as$CC%zQs7D3=`AUtj^4Z;DuykU;Q?EObx;!n!Z1a?*d z4?y|A0DLA2Ly#nxH+WuCFm&_asg3Sr=*Y}71Gq*0#R(BegGfy)W&*zuDAxvRY^$); z_)dfe-0vWk_NOQiGqxZ@oTJ&{E!cyws3VGm3iF|)dRhwqP*X_Zx+)>uQSe{lWfCKF z+AHzZQib<7W&T0a4#N~btQ)~>_LWf@r5fv*wBQr$I^G7pEq|BW2;|gIn{x zgX}H&)E&Ex6uAtkZUIZ*qQ-!&VNbT61b(;N!t%rMY<$b;gLLo$Ia~c^Tvvi>oZBgu5A!rS60C2gH%ufH8W(fWowVfS8}v&v4KpLO&AH!D@=<0=D?U(4k_g{2982 zr5l3e;w6(?ss@U(?jZ0r%#1AY`Rq=RY^=^Aa>m|VVRlx5TO@brVPN{wEnhf^1*aTt z9rV>fkz91)tTU`YjZm*d%fH4wU~<7o{|s^ePf=a~opK*@hld3j#9e{bR>ML{&M8}8 z@CfZ!9M(X)a!%EIn6PF6jtARYNICKn)9QJAx|iMnSTT_^TQJ-H!o{q(-)f%8sE{ld z#Pym=O48=Fc_V*G?1+8qJz}sM#|t!TE>qXqKqct`uhg;>aH4u;IRpv3NR&o(A%W~d z>y8`_aWPIS&}u!>=? z-UuEU=K&l=AAwYa(WQXy06I3;zW&O-nAm1QLt#&AhRAuZ>?TQ?}VXp515|80DEaSU!!G3@M_kF7%>KB1)KH}Nw{m=iUw5?6tO<GF9pMZUQ#W-SIb@Bl^b5Yt=asRD~Q-Zoy?WsMZ9S17{M>cu5>%x`h2|Myfuts9&P zGDYL#4lp{fxv7$*(;XGtdg*^)*8Ts?{u5qpFcE+Y9A)Q7d>VLmaU5o@Z2b~PTDAN$ z#A819p*k4=1LQy>F1+uNeiC&;{l5o$S#i&*a12TV)qUoUMldkTu0nF)~xIivzBMdS;4QXBRcDSlzR-vB2iOV(iAm>oXquT1m1*B$|Ob{vl<&Gu>n}e&e z$O;4-Rb-3>(kfnZAh=n%#}RM&1rc_eg-oUB=kBWtFncjCRVHqxv4S&dl)%y0)#j#0QI9CkSSt?pbkgq|6_ zt?7H`8j>R!_IA^T9N^$I?2k*fv81Rf0xwl2R^@dlC_`jrgq1wq_9 zZ^X+Wc4Ihj&nw>{t}CaLs7g-E;MWTfcGKD=4tMz3#sJ!Ij~)|LpzA~qQKk($-a`#kR+LySK32cWHM|B2wMtV?MdDE)S8eor6jQ@0 zlugRsB+;ASp2gDhu>=NF7Ga1mWd|nvpa$?na~Ur@eoR7E!2J^7lB;-eM8l%Fp678!en6{ha(P4YuDe zn*bF833bSWrgMLzYB(xWABCC2_-)ZB0nt+hE#pcZS(#^%MT&U%-i9%2cjr+S+oS_v9!bmITYcVM&3B1Z$6Wti8sj zx5lt3?Wy1b_MWKXWhxNO(itOPXr6Z2G&FRH6B6ee;2|5#VN(&;gKw$LHUKOF+6aiW zeMl(eskNxe*B-zp%MLP3_yLG6j*Ha)5KV}Xbuv@U!!73*L1tcDG4 zc>5Yo18+5p9XYu)15vu!TH7tfxsAXmMrY^_FK%g|V5WC`xE1qpH#o{63>u;OFK~Ek z?+>9k01-a=O#Jd0!T*4G8U!=ujd&N8M$x4Ei73jz zhdwfZhEhR1YmdaUnHxj+g}s2#_=96@!J86L2*==*bu(~bp-03SAc;5Z3LES%<8)&+ z_KNnHhubL*kGffe`a|uwsE%XOZm}9#%0W;vXy8hUl^6 zXYVEl2Y@h#I^k&A84Z$=Ado(-WcS#SFm>4v)47zCB<~#&s(5!S0HF*_P0^kRk3kX= zAb^ZawS?j6Cn|ta7^xnZFN5)~8<>f#H;T8I&XM;(Jq2m3daJw?vFm~T2yNkqPRO8Z zd4fOTMZ67lVZ@B@rSD7Dr?TFB6K)=X;v%T!sdY*YRT405-+2jG0UD*5F0|;?0|vx>+y{f0PIfy(;o$oZ zA0t(th0%guh~?b<)jg4$f^Yxc*xUy{Hc($Q%TvyjuzDB-ax{#qAhOK7tYR$Z1YtoP zKnq1!uzB*tX?3E`iCP||=771v3IyD<37{0*P-6CWBRaH5CcK0g_uV6j!etxKKdnEW z3y*akx>0G`ZVZNUk&){l;OvN-#k(Ub!?c7vgs)Ps3NaHr+$Uj?16*()s)`~dFa7$E zN)N-(Jr!GQ=7Di%TB@-He@<3Kt>p@sPFTfCfsGQSL89jW1&+~f5U5;nsU1Y5tMJiH z{aD*7AC1Md{>)Z^1#%po%ZJOqrFO;+O>+M+C{De8H)jO$M%__ZID;0}+R#1}636I4 zp#Y3PXQV#J2&^G%i3q3Eh^>C3KmuNY4Hx_|l|3o{_8B7K?;?aZ;g90b0ao8@H-vaUyW#wY)hD8QlnQomc~?khxd$0KTB z?6huNXP=(%5-nAh(rgWz-rRNoQD!kMzuOzYASek?V2pOAV8s{Jy-cY96?T^oM~da+ zt`FRKM`OT8Wm$c6VX~}b*`yAv5^6^&zn@7w<)9yC;Q_GRL8T$M9i?@&2^Iv(ZJrb| z7P!XjnKSfVxv9&}9a_#&eSM7zA-{L>+YKvkJ2?4&yxMbm~6Tm>xK z3iXm*jl|HxBsy>6l>4+mK>-QwcG6~|ITuf^2D~*tYwkW{EtYjRyfN|G%Nw68Cz*Q` z4oW~Fq)6!9_XeP+&UVDA-;C8!o3T8D{X^&(kkJogx={NRF6Ia@;pkXC(!ro*`a94v4}cm!0ZNCD4G zBQV|)Xxp3&7^q5jSPrpmET!c>+-3I_fkG!rRTK;5={gN71iqKnH~bSXq8^UV5#`{w zk1^4&-;}Zrkc6sPXe?iCV8UwY^SRzm-_>{#{3ULLv0=fFDH*lUnz7tv;2VzYV(uDV z6h*}P_WXpOT+}_ZybZWixL8qTAFopI3HO=hh-hm(rgTc%5MH=pBY6@T2puZR-$84U zJAVofqV@m>HdX|3KPnc_IXoheNjeDRPV57iKAXf;p*f9x&QAw2OVD|mcIG!ro8C*F zcmYxDcHgbJAX@k9AkUe==^t60SVivC(~+~@a}P%66rOcu`yLKVZHl6lyw(L1V+bk-VNPO$gv5B_itMC45x#)ttAW zkPsD61^5sX0M0d|zZvfCpnYZUs9heh1xOnbK=nT&nOD=G_M3(oBZx;Uk_+Pdj=)tp z$W4GBlF(l=e$C7C4{1kFKTB+2+)a2a#TfY0xg%6yOZ}AlFtG5dG*CaDPIVhMZ=ZJYUW}Uh%SUVTf;=MT4YW`_WL=l zUFLj0Pt+KcT->#?)IZA6@t03I@VASlj|JVpU%#C}@auyj(u;WU2LA;{}_$ECSS zB$I&1L8HW8NB7~wwssg0KgZiieew*O)@URFejo7uV$(*qM zR&Mg|I0|$-Zcc`&q6E>kZEolnH@_pI92eO4OV&6pR)r~><&DtTq2wZ1m63ofJx*K7 z`=t8`JWKr;r6;sTWFvV4zK=b18T*H(U=GT9#X9jd0OyZyK^=HD;ggl4gz{BZov`o6 z#&i6NVkN9==oTLSbz>2MZ!HG3G#w2%5E4{vHBm*!3IAih`OSO02uue-@|L_HI&=Yf z;;Z>}yIL)5%lUcT`T0gLa;cTu{aHeNR7G{iR~fO+PixZh!>X5io-VA|y-RP=b&K=E0WR@*4_@r9se6C9rgI$nmyFLj$h$x#!-7^-n7SelCZeK{eh z4IR*e^vvC0g&JcieEVXWeP)W$Me0yUe+NiHMTQscge@M(5poQ&B@g4$z>ttgQXS?* z)03&?@+=2C6eh~kJ7*%eif7D7af~o3fyrSqGmqutyTB%@{tH1^gMd5qX(jk2I=ulR z6zc_hA=-}3P6uqaug`cZS8i)c$< zy*S|L#ndZVq1I%f-{jK1=N5!htX3?AA3@U=gN0BX$)thfXzEt7{o0_^bs0|78ahUF zcs2tBWyb|cxkW^hG(>|j?a%8wH1D5ak+^;VS!MN1mej!}eiZu|sC)BD?+M*+ z)=???dLH*{b9i^hs!$L!deZcUPjN0^Wd4&^Pmmb~e^30ZWc`~7z-Q^Jnn-Nr`PM_A zBua&@3P0f^UZja%`SXdVQ{&0vd_?m;N+(cE-a!6EBm)HVGTESzA*TuT3^nX^ru6wE zfVx5ZsK_SFpf02E8*4}P*)$74m4cE&1p%=lhHd#|w#cOt(N6vifJ=_!G?#&BG^xwX z^!@OFNV_}Fl4i8-Fjnr1^fun^%PkY-7IE7V*nReXZ^|V(Wp3Akk2Buq?25%DtzIHvBz&C4naCjA!z5WK^l# z%gd{gdAB3nK~Q&Y0SU!}z>qs?QaOl}0AOXLo82 z8zfnhTqyc-MZvb{Oh0bpy@RC?Q+(jZhn$dwQz-@r=8n=l_l9)#w-nBdrKtY7qe}J9}0>-!0;XM*~^|o^lU_{50@lN`CY($GHN@){oGT^D}q56KD zPQ{3FLRXN9_?k9J3WH=!e+dls=8!}Aou-|h?B*^go+~73w4M?mO)YIoh}qtvk8+rT zE{rytXQ@wtz$d_n>l9?g^&Rm;XcEsbP1TjpV_+Ov0dhC(!1LJ_y_DFfOJGpa&VF}g zm9ayD=r>JA2er%=^`<`kYTG<(9brkl_Od6*ybcWnm`)(mdTr4Ar}Iwx`jf=Z>TOQIy%)q$?A__ZZ9*S4 zxdg(8iL2M(x8f1$mv^V@W^qK42cf%w;lN;C6d!!bBqmORmzApO7RDsi&yfeGqeq_F zwvL(Pw_r&dT8991GV&Ks6U9+V0u{7lH`U{hm|0s!y7Fl+4}TapFGIxoq!$?;@3gx^ zUYNS5{WQ6jW9LG8h;Zp5c;+Ca(gC~#`4v-?1fVmPtP|1$S3Id^O+cg3vg?A`pnLF7 zm4?7P0T>#RG1^tJX|dCSDa8cl+L>~P2M+U2-3Eq^r3V@d9Ww7YRGG+QY5fd-|bjHKwOmI)V-1)$juY{_?WKN z4uB>5nX6F$0X(2ir4}=6{F)pglo@){MD$=0ltBp=oNU67(Mm}3Kbq)T;ufMLLp(0b zAW-?i(~;Y+swJQXspN!*WG_v;l#C|V{p~P988yNGsfKNcI3n-pcxAg9V2z=m3*C0K zh-#?M>SoUV&IMfubMBPotVl_46MveV=zW?FDT#Ln=xpxw$Bb7TdKz#VgvF+@k^JjS z4HV27?{Eq7S{y;4cT`s@ObUkb04_HQ$sic-KRKQK(~DoGX~uRzN-_Rr)jp^N-HrdR zyDlDx7Ihkdv^>^bO&KFA(#^QKOv*1?F5p7sMMjfUone#`0iZx)L7R-x%z}~EF87Y| zPalWHM9NXaSvk}xIrNqM&>zYI77@Mnun3NSUa}qH1mrV;Q(jcaY>yVQJPnhe7#K?s zJvCr^w=;mgs(F+6ZFitANCv%nf53_3hE>Tja_?tJ#Yhbqu4i%gkb}qYHNJnW?p#O;D5=& zx*EWU5n&QVcv21wuXTMFz#IgcLJLPu*gUhxKQoVAEF8Ve1SG&1Buv?HRU4-{s{<4d z88ul1RfvA?o#}J2U~QZDW-y1oESz!P(m>f_2I1co)EPwh8vs3)>=OYTg8)(mB;~|I zZGg5Rg?JsT0j=yZ?GVn#M3X}F*_r+@(#FwPI6Ec7wI>Z=*KPa;JM9}2QHiRko}01?woe`4zUt3(!8L+5wQ3s?X2DoMaUjA! z(S-XzTIh#1C8TS%U6IMSrenkt4Q!I2^44qjz-uugt9Xvu5+NYB9>V}v@(hGlATkO| z>g9_LHgBz`R1Q2>jd4uO~nlIjT6Q~1n1ng<_5|#jVdB`1`-InJ2*9# zDR4L$uE4Z2WSAnrP2dygOUzVe9c1gojz7?2CF*M>(QY8!8`cUT#yowo;11uskQ#6g zEx~U%C<#P7-Q&Pf7Bz0162M-~{Uf71(LX*r<$vdD_JjZ#D&lNNz_>!OuIQh{L02Xl z;HC89n<*VzhUDIhc4qA_PqDzsrMqxiMQs7mNDl6c05U+FdIdmKL8ceEPDa)emW@SF zP((yXbS{NwJpX%R3VM&(JW?Rp8D${2CB+_+osqpkpvB#p#S%wN3~%PH~};&D7>t@m6=hD;y1ZK~JLJx0hm z3Bf^MY5n*uY*)#M8Pghbz!X<^{U2(6BHlZv$^ky91zSLC$5FIFR^pV9{GfPa81f3o zW)(c6Z^q;bSE1%e(OcJWbqR#Yd9%;v(7XwOr+cU{;vPyM!TI=rrc64NbIu>c^~ zAn37$Nz`c#UJ?nXyav~f5+@eL8xwT~D>&LsJBipTI>D*Z0$-K`YdLX;m&jG>zEnm* z)Rm}RMr6V=bO72)ZZWU}?L}qVwq(Z{(npZAhMx8uE%3K1^h==8eaO5X(zuXHB(iAY zGdMY60|HLNj)U18zzmn|*|#EOh13*zsU;NJpeCITU&nOknhKM_|3d(Rexw3u=a~-7 z_`ZdtrA=zg&!7*^T_Q%Zo)TOw@1Cw%f9=fQ64viq0=KJlRhJ}0|3mJk8RKM_>F7E_zRX7;}qC~P9so`VCTWM3RQ0p z?h*<4ll8hHnr-lu1ILhAlw`?GE|Cm($&PIp-DNg?CuXvM0fz_M9K^1Gc`K(szG<-N zb?C3+d8Fit6d>$60mFIH&QG~)vzQ+Y4TuQKsnrBLBPuM)n$uu~PdF#dhkFZRP&0zB z^#t`Eom1MH1Q~+WtEd9>be`Fx<1$WqQ9k-s&teE+J9}!|{|EEm4yxq5l{;T(*F(?%z(b3_8U z!V8y&13>uJjr7-CAF`wBIwX};yJHWti62QlBQYj(`pNZG2hVs5Qc@rjWg7*anTh&S zyZDj^hvy1_Liz_v^0k)1IK5yUoh~&E#udfVvZnEuPFBQYg~KPB0W80u_kK4sd)jP@ zLhL~5cJ{NN%GkdO3;zW-)VC3wrD0VXe&RGr-0>^gJd%FQd!TK|H6tPR3IcK&+|UCk z8dwm-qZ%m65I)h_zNXK1#q zCV~+xP&RQv?w^kY0j5CE21?h$LY@R_%hIg`2_f^_Pq_R-kY=o)uLI9i1=>%76(J~t!W#eq2#=_!6hH#Nx-GTbWHUy_vA+O)!&LFw#*6jKop)^qmz;;>1R8_s6 zW)upj)R&xOLf}?OHYQ5hlPi#pvA7E2`J%)6juNT#AkEUvr2zS(Hx*I)!AefS$5Jj7 zeMFE4VdR|NPAgE<90T)^#XRUMG~@u;3>T9IlN_oU+C0M{5^zrr)GAs=_e{UTz>id) zEhZj34E-J|0;MQ@uWf)~oH=V)S4mW#AlGg?mbWXa;9c~7FkwyC)7Ya+I{A4nOc`BX@)1We0l|V9OFrc6V zohuXZ`m#^OPxX<#w&x4Wd=oN-9bYSLt9bcoZW42!VO?%~V2nlxI!+*v=C&O~JcN@1 zZ@K~`vg5s%%^q@&CDBmmM0^r-N5R>YiO?Sta4hl$zC=%)YF67amgLBDHzi~7St&0L zr!$ywR-AP9DdrErnQyy$^MK@aQ1@IMvTa_{ebDXGDYZ^%;#krQ>OvGd6XJeppMtJ9 zA59;?-|2XT4E=KuRm9bLzYlEZ=z_NgRQ@~FspfD(Lrf=>L(|3r5l0JY2nNny{0Lyl zGASu^9bO=G_BlXeet{~j8HFnJG}V&ZUes{laweYQyH{BAR`9vaDf+pq_*C-aIwn5i z20y5KPW;4VGA51IG#a3Ab!#|6H4%d35*cPNNbo8-TrN%m-V}J|Bd#)5w@w|< zy+-uDF0Q^$LJg+yZQ#umqMf`e(2R2xp%?R4(M_^HNF@9ya-)^AwTKVWq_zXnpxKrj z<_4wl_fpR#pad%1GhEh%(jS#8j_x_S$Wj3OPJl5wIMhOr2M1~<6EqX$Q49aCZw343fLXenCHh}8rM;Z zfQ)AlJ6glgpV*H;L5DfUmJ260S_+=nZSN|<96`?swst%6SfS@q>APRJ~$>cnb zXuO>viO4l@Da(zsrGY(>bw#CVNjZ8dK<60!C68nh6}F-vBj@UELw2wM+YQ9mM2yUr zrC^_=4B)4?6ew0Xtze*lWM&xpDws-g6$K209=O&hg|#ZnP%7kMtQH(aThDPWTL&s~ z_fe1zjYr>cyki@S0dZO=`?hM(gcpVYLD~xFE~wtTxj>~f3`{9HOapTIrIXtGa}LgV z!;B~lY1!XJ7ywIIvZjwx6hgcQWZJGWprMcvbzg#SsMwy(xk7#&rHi9h6b%EaN)TQ; zIaKK6M6W};uarS_RAkE$wB4iT?y!`#<`!xsQszJ0{sN6%R1sm?scw0e57sFNCl)YerhcE!!iLTB1*-U6E8SaZ31cza)+sEB~=I~qr#J%8EOR# zLF#w4Y4OZ;A67hml4J{MAfIKhHjP(VsfWr?xFa3zsVlpB8Ol9NAzhTpfd1tgqJ$oI z4X(V>2NtZEusD(ylAHZ?b`6Q$H}e^8X}^Ssi>k+nu7fLK+GNyg(|Zzg&bd-)dK1zM zA+RN5U_s;p1bO%+V<|?V%&a{zGfzd+Lf2MOCHr}c7+ZR3l&Z`uhkVnd7RIp&xd{Rq zd#_<}(aAf50VjL@PH%O z13dt^^rl@%&rfWW!vkJBtYVVfLk2EOy-sMnixFlQaf~v9v$S+#$QJdvj`hYa3lF67 zi!!XWh80>H63H4wg;sC^LLFAI+6$GYz6;)8uV$rna1v)bb zl##AxzW$HN4~`8`ha`dsBnj?mM%0jk(XROLCDa`3s-feZuc#jO?xrs8>l7xHSuc%W z9ZobbODZ|M4@lGKoOM;o1D-*e(WQnjwUWR$AhH9H#&0v}93`nUN=b5p#oFS5U1=Ft zGT_Ou2vn#{2pJ-w`_ZC@(=l#JT{8fklg-BCUvT#ap7c<}qeGmth&8IF?uN!hgT$_{ z&Wn>Cway@YT}mzPx+n$OlW9t^oxl|aeN@}of_B|$H_LTnoWxP}9S61z!Texsq+C(Ze;X`OP=6X+OE74#x`n!!V##{NdP9GCbdv%wfAy#>1mkzH zK}9txQ%%G65{3}6igJQMVHY^Tq#G0Rp!N}qjVm-D~j25m8?)c8A`_* zS%XRk-x~?YX=yggO%us1y5o)kM;Y@dK@@&-eR+q=Z>O9E#l2G5^r9CLMVd!(MF(D`2!qnYjS<($*MhhHu$EcOzRb;N}Fer(hPFE=zE8bFU#rBt;ySx|(O)8nH;o!>DKDIhv@OHTP~JBhkD#d5vKt^9aKrL_0zHy!$}Fkwl^TI1ot{0 z1(w08$f<+(YIVvN+MXR!>wVGX$eMVw4Bg>tLO9tm6pM>cu#pB}BMkB9?xOUcg4KkK zPL{LEY-;Y5`TvBCP|}017N!L zYu9pW*+wxm(c`}CT9JL&rU06uk)Wzb9tmQ838+J)%A6AEXFjJkJbF9XQNw&A&3w!d z;%6<|ggey1>ecR*xISF$WJXsN`YC0J;MVWPA^<_Pp-#GJXOM|NYk;~hDTu|nPkZ5! zidnUftAqiK*Yy?&l&TwpDu_&|&Ez^Z$0Gt{Y6Blbbucp0?nU&Ju(HiV3qwJgH7!~E z#@N;x@bqDPc?Sd&?PZqASJgk@h({zW|AZ66{K+1g9^|XzKbPlBjV`MC{~NM@JoCd> zk8}tq5eB;;^VFqP#x1O>zEEt5ac1k1$>9--|4K73AdpAYQR#xE@bdb6!{aa#e!ik3 z-qDNC^;oZDFB~K73miLEZh^WA1b={&>Ix>Lodpb~^%n5$YVnLAeNWsShO%w1^TO z?rT%R4F!m4P%%xu7Y8L2V2G0(F6?_3)}|~D$P0I4F|`GV7haBS>lo(V%P9U5DX!5z3U5GqHwJ}6B$fVZT zhLrhSAVgzz`~Lz6Oq?_O6jUXFWCgqwonXvDg9C}bh{A#bV}95^Haz@?S11-UFMwW< zedA($Z9T{_-O5-jQ3660X}OFHo#0^k6=qY$tup3=1UZ_d6{_8D*xg9WwJrSphkq$} zxgaGP*R+-5(u?Mo28t=CVX#!nkmu*-?LMNAThM5W6umaZ|>gL2Vx z!quA#2jRlRG#6V~729QSq+NF(>WK`<+2|vpP{n;hUoeP5*)Wbw25BO#*)V%OJFi~F zB(x|C<(*VWs+1Jk%|(+?f+Ep!7tfU5D&R~za#kp7ukK3_F9ZxD`nt^kwmBY6mt?Gu zbiGB|RNTukQx3z56u7|XRK41Y2URbOhBZhE;>Gj#AocS5&jMSSESItbcsuZT-E%Jv z?Xv)3q7RXafnpD?@haEQQlTRG>P1kZInn4t8~0AaC{sv8>GrT8@^VCRW-|mjB|9qy zt2;xo;~C-vxgC+mk^=dC(;+pR7|f^xXZj&vJE%fVvi0P$Ks$9V>!xcr0`B@6Lt1+u&!;7pSt7FJ5hVSZ8>8*+N>@i-1tw}+#nRu5*X!Rc=Nf7yD43J$p zF$}d9xPjy2M-2P1Wfy#p+$nquyMWa4>KbTo@{nIjdD9k6E(}dVh)Rb9F{a*bre!wy zK+_>J1l!c9)LRG#7Is#KirUE#gwN6c5*~uMcAK9(&~yV#3}DLS!x9R72bK z^xil)4`6$;6;Qx@Wl7%*YPv+8lnsjBteVrmPux5?nok)J zh%qN{fjoSF+AVn4feGa0&V{C{4K>*LV?im;48peHIEbj59on$nkLuQS0a<|T?0ASu zT`>)81;QJ}7e`^92=GC#NUlgU@(?%CuvuJ)1P0isPQmg7$LRxpMTorQk-)ANUb^$2 zD3oNfA=Bi?>XluIgY`5fcd8|w?yk?tXj%Po9TEO;27)? z6^KxM%E=39e;C}LT#`VIE}aNdYx7Jnn!}ETFyyd$^D%rt;KmqVl)N(11#NNHo?i1( zX@}&vJB0z#db+1I7>af$-<7VS)W?{fA<>h=zkr_)NU7jQeZUuvzKago)t{8I5I?Y3 z8!J4I#tjE%JMFV8UP zrZxVOoB1ydzG%xio;%8u;9|bH825Wt^C8lyYpvRypfciNjRWLiBz^{hq*5>v`@#XJRZX`3L6ikdg1XR-oVW`I*&FEWP9H2Ltj%aIn!+$jjQDn0cN14ZPG7=<_)P5gBrN z32!sur1>&1J}^K-zVwoTBICZUJTF>;#L24A#6j~3^rHjx!4R?_3PF?tC`QxzM0^~T zNbXLba?svm$L{x3>v?V1CU%`aA7jdUyroEYAv_DCeJeAzY zLFN9x$U#T%h*cRwa*6?Z5Y-lKG>#BSh9<_oOIe@zW9!+&=8krB9=JkqRF)cc< z*_oUZ0fD<}TH7o#Eu$2|mZ>gK5-?ckGmxErFv&PNgHMyE`55eqN0xe@<0!z|XfDX^ zYXjrsHOUS?AUh>x0XFuD%?y|Z^@qW@;Oi1g&(<@ZS2#?{BBJGRm4Wm@i^zYTXkIK( z;_5+H*Ba^$0iumoR*g962xx$jE}`W%kB?6P++J$606>6T(jJ}(JRo_^s)3%_@Z;W# zl1LJZ2D!@%&MNIvNYI10D2$b^J(G!;3Se+4)f4IJ#1393;m{FU;R8`;`i$bnxi3 zjHfOfMD9}8K!|t_Z}s!dyt-5X7|&WKnX#<&m{60~7kB*$5HT=yQi8-muBnl}eGPn8 z94lu<1S$1d2$CZ1j}$afHNrsXuI$2=vrdYWPo8R&;A}H7c7cI zJ`zsF<+tOCAu$tKP+XFlW@Kz`0z0qbpSbCT9<7?2GT<;uVGs*7=(usU%@2LsdE~6( zP_8Oe)rwQpM^vtJL#M&yz*XFjy1x)R@}gEFzhoC5de7h+B``n3jLzmj$*lF@Mh*p(#s`tg*^qa|F1;0xgd5%tS6VeL~>v^Nqfs=i#VpcxlZcnWR0eE}xb z?d2pg4hbuIn=C`Nn^MrR|H5E%|_Q@Jro`w1Nx3Ls$t z!3P-=phx+%lk`AuPzB;4d9&N2HYW`i^kHwRuR>4383v6bLw8zfLgj;&L4ZKvYM1ru zdpG&gvl8F~_pmN`9@iT1XhgxCVNQ$5F7RSJ)>AC^l7;bP+h){iI>+v(!e9ph1NezC zNl-iy3QG7fGe%!M;E0>;Q8|N3+Ol|EG*qwzmhvN|v-4LvI7GNMMtzRe(CUt1c!fBO zDr&Fj5oYzC?Rre^2Pkx}N+EGT`dAF@ZV#>mehpByaOTd>t%okum=aqI0OR#C&)0Z` zYrU#h`Ku82mp$Le63|*|lliob*R4FU_w4~H!oF2JG@C(A-UX{-!6F?v*x<7xsp#@* z7`nZgNBPhumwXdekO=tlIA2dtO-;c`v9_|%g!vspYIb^ZAygER0T1}4;!VJtr=NI1 zyCFJAk${?=kF$6n$_?{{L#@{dx0Lmz6&|DM7a8-@8{)7Q9lVgL5O#~hazgKm-+k)_ zN@Xf<>9tJPLT;QM+>=W1BYEG=tBq)KH8$?&jS1*_dkAjeTo88`VZs0`t{4Ty_jems zp&3CeBu(+iN-I=YFQ7`%iADtJuLO@)Ys0kUl|ey&La;n2R|*@~w!_Ln6HP#9B}PnLUvB!% z(^J>&7g0*GO0}`+JgXi&yL@A@ z+I*+Oj|`w~y>sCiWt=vM0TE}bajOIRg%8KDXC2K%H-sc0VIev!6h=l5kIm61X}JzE z`kz4#TS!QmfDRG_t?b&ga7{bVtoY(#YHy=K=j=PW`v~yQ1Y{keP|xxlN3pX^Z%@s` zQADXux!Hi@O2^P33J;(|Kc^Z6Ey$Vz80?U@Of7~Db^Mn8hXXnOY4CI2lbJ=MQ3Z8@ z)!d37OJ_eoxe@Lj3196wp>$eZmxZwAhRtCEPaxLdDG7loR+WYjJEWgUu_wuwCZOkM zPrQAs{ZW)ATLXmjWkcO1K`E0Ekw!%BZ|H|lzStC;D18}Fa3zAnZxJv6a%xTz2QLD@ zK;GzF>7@U4=O}EFD{nc3;d}P^GD#6Ikb}gn(^-F zg0sC2gq5M?i}cZu@Tm(Mze7(crBQ=`gb}K(=Gd7=Iar8wU#h?7MOc)=5O8jM3uCf` zb}b2ctRgSeTh=%#8%oOaXcs1}PXXZ`B)JYOw4dxn~>z3mZjPjRX;O! zHZ+|k5)sT16SSZoDwzosw8O|{3B?*he4SKH3_M!^fh3@4BbMNGD?1HfOA&ZTqax$^ zX^5F`W8OIoh-H1{SUM^tC8{J!D?=Tkga5?h6Ix#vSIiZFDck6T6LoN#{%xb#c(w2A z<)bJx!})1R&K*o+?ex9ZmPptT^E`d+jKIb(yD^*+FJQ02Awm|` z^$aMXm0ZzS1ULkV<-g~EhE`YC*_{VCtz8l7y2Fyue3#K$9kmHY!#0M-ZWC`Mb`aR$ z1PhQrZoy%SqlPk*kL8}i;};9S);A}Q5&Vdw5=eIv<(+9yNg-LjDN<517S%YF2-p{Z zNU{h=1PVxB38iqRrnC^h1PSQH`M7|1jUFI|zMQAn2lraf1yRb`p7xzHnKgCx6H$ro z-L1s@&N_iMUPSByz+)SP9`Qz)f#MaCaMc{T#Q%YlA|bv7AF)j*7m*Tia(sf-Vu(d_ zq7SJv_~SEbwIup_q^Ek;l~9dj4zT$ny&M9@v4x3D3ZI@mraeCX5)vG#I=~`Z)MJkC zoM8kn>`(&tXo3aY6dZ6FA~YuUpRyUGRK+aq9+ux06bh7G&P&sC8v^q0FZWzCN$JZm z4$A4rE@q{IEL)8Zkc_yU=v$+iK-F1_WCn2AQ+PEvC16A(E`9;YF7`OEuqpi<@cw0S zHzrvcL(deOJ9U`|L)9tw-M~Bh=%L(TwiD^2xrxXmL+K$M-he_lB>CJCNnZ{X!P>$r zz1;TiUGA22RbE6~=$!0~%s?8y=?L4mPmfMxS54xfj}H48j35_y+GgiED{he$Wf7b1 z!>2(1q^;QRnB8ZZBbn8GGw{axWq(zRS0xFRP)5Kn+OZYKHytxMH5i&sE zuIw_}rsF09kjBd`itXh|(`to#rdWE)>%-MNIB7Bm=xqyz`3`Id=3mSOoY59G*w{2H z9WcB!nhVyftIW>3-LS7?HFy1$l^36 zMNaJe*eM8W%#ygeP2+^b0Cqp)abPyoobp$dj4XeNpwWBGyrlOH_7sM&f)RjIRw^hO z_leL$P=O)L4%ni`?Stj@rbVANWV^8--*1+hRB0QCl|O7nCQ3%EOg58xtZ#;&I%=4< z5zoNlAS}AV zdWfyobQLpYaEb*b77)?4p8_TWBx0BXqIZCpO;q$fmhnLA0I8_6L99E7Nes$LNV^Z* z!Ad0>!-vf_6T%P&Lo*^W$)XNQrLe&y8^lfB_}O)`1yD$K5fG?CKEdK-nLNwy$uJe7 z!*`Qst{UK2rqnr_hTmtX67K?0@=CT1X&G4o7zpx4-+G42I2U+EV69U-G)hu!k|qU! zBp251;t$VlC$H@_G?UR_-bkjAM;{JDSp2K#A`A(+9j-;0Jev%$(4CYICO;B7_NQl> zM5h$hYr^m+KMv7~To@Q2X0NS<0>wrS6=wi(;3Gi3mg&ITG$oD-cGJWSw9;76wC-nT z!lMb4dx-|9;s{mM(&-=p!Rktm=BDOAx<#5^qy#uI>|$a-pGAlk;On5A!eVk7RM65? zeQK#!a0?ixry@@oo0|Fb?CaEkp#%h@%#lc{^FZow>x~Pq5DsZesNyW3BlqSghJ&Db z{+~^^$>s_DP?1{kYZXA|MFR&N~Lo&U#o}w^#)9@zAJ`1*UlYoN$+(2FFD+@8CMQA7=u#GgeCr1`wdw z7h0x9C>05Dqc0`}NdAjP>^b7Gc%i8nTMR(9An^+z5O`g#j7Ap`k~G+a3rFJYA19+w zk@W;f8Po%syK4sru!+Hn2HoWZxQ7lPkxob(Zk%$fL#xH6)F)%+n-o^F3>75>>fXd$};%g%7#%CK&(%3O<4iVD(hbb?@Y7)i}& zo$4x~NdxZMfC=;kvCf#SiDFfG^l^m27)u!yoU}3+1o0PdkJ*eoAk4GOez#y$Vc28R zdArLyI`V0G=2|q6`4@V5M3!MFuSJ8H;pu=wp?55muUih~fyabV#ymd-gi@%%bz1;Z zObciV#Ce}bs2UIQB~A?~Z`59K6h{Mipes|HnOd`sLaJHUM$}MhjCq355)A?bJI7%j zuvi_XLxOrLq%Is|%wfOfycRzv2h9!sLCuU6Si|;IHlVfc1CwK)KHay;9}}|Bs&>l)HKpcl1>9|{*4g8 zd=y9;Zl8WWsMj1LX*CavD6gwkH|lK#PM3D*pqRfpXHyAu-jt=jbUbLymUo$v(FP&@ zD3i{N+D>PW1-lrCj$vq1MfUw`v(m0B?Ag1!iokYgbK;vbqeJkAL%DfMFjt2jg`Z@9 zL_(+DMY{`lf-~;MQjQ7FI{=tRt88l~CLokxcO*0q84*gmb{`hZL39TmY)&0JythUG z@#u%2lIzFvdu&}Y!@U>VkRt)wCDq!jWru%d@n3LzXkP>I^u;Ky;e`R_!`?o>Z z3Gusq!QMVu?>Geo@-Q6@=hz=inP{w3`eFi<#`HA)6mf`-95_*c0Pkp}Aj5V5h2UZw z2Cz7qV;{LRB6o^fd(C|dIz~|4s01~)11n8ddcv3vKL?mJ07*c$zv4@y!~GDvTtY~q zad*{65s(peel$`c?>HklB03*k-(JhUZsqsL(3td>$z)*)e z)JO`%gE;ca`}Vn8wY_%32uA?TgBcjTi42p&(CYx{g$qXn1}WoWp+jm#W+A6dQQK@W z^^mQ!G7JJDEu=y#UZ~n8`D0Tad{7`f4ce>*X$J1{)XxG36n9 zJYNmO-a^?oc|YX@t2eS=}f3WY_=neX{sX;GrgT>dpmQ&OTOBNiM;E88X>XH4RJ;>{V=X-$Jc3QpE@ z5@2DpAs^x+x5SfuLh7qMaF1udk0`QriItkN*Wh#zqLyK=%K{@Z6XHvqP`V2x3v_lFN2uFOJzx8?n&r$KyzGM$%C4 zkErjC+W}Z~wWYKa?z7g>C-!umaI6Jd6l~U!%lPr!5``kWzc*Hn<7|GNeuSgNe9txC zz_8IICKf@FWs>}QpE%+Nm;lAY-sVp@2`%to%mmpd-n7w8PoDYXg?1JvywU8D#_BfI zmN~t+!b!MXZ!v-@sc{}th~nCaMIU_Hcq-3nDGG$DyD9HC)y0wlgsO+Nk^Z)U!%JJRDnHC#c^K{ zSIG_(rsAH$j!31e!5O5R(oMT`yi*Pi1_`H-54jA(KxB!40XXNFAV>(Ef|ARl{5Kq< zHhrjMLw*7z`Sv9=V21)n192k>NlhCK_foCHF!}d84FHr1fT;M#?_AO{h&&YhoYRr48NV|atkbx(?deAaA3&e|iS9bGx&Qy-a)(nFTiyixr%JKnvI47J(#p zy`Gm>R7qIE)UEP{hQZS`j|1%tYw_7KURovgY#YJoF>^2l83}ddU zN0$gf%Aq7-o?OhT(BvG$O?f#GDMB!*)E2dXGUnL7mA>uuM;OdOB#%rQb99h9&SHFUB}N$3uEydKeK znwF{L8pMxI1 zrjVD#Xq;=#$X53CsGb=1!@iSMz6?;BQ{Zqh3gKqMRt6I zNM$(ol`rvZLR%%Q8_ju6QYX@BL7VL|W!a7=i#XbVs8CxzUg%H={e^-8ic;fU$UlVT z3K+n>6l;nT;g}HB~E@q zwHE!uwP9$3*d?CfJ#=AEzLAfTqJi1Qp}3$@0vN6fzVu_g+8q1@^h(w`WoB+sbzE}b zW~UoZJ10L-Q|uGV+`4goSq<73+bfn^%DiI{^fMZ>Udq%QYR(1XjU*9sv-d1zd6LC? zWe=)Yzl1PQwb{3La(^!@PzS{uBCyLm4o&vN-Y*zCJ5k$!2CBGH-XZ-q#taB#f-xQG zCr5n$Z;>7?AVq!Vt|E8~0B>9e0Kdb- zrNwCe_7rtW%wLZh`%k&96I`FfeC8?2Mc61-P2v~Lbh!)$^;>`B5cZ;*MxxJPWD&Bl zq-Ney;Vz+CTO2AC+hcR=c9hX}CJ-5}gTtPUpYA`0LR&ZueY2+PkPHp~1ILsggMzx= zXc(M`bPoqvqWf<^ZH=S{Zis=x&GRxqifpVxK*?}%Q@SZ*8%ext2Y-ekI;+MgPFvDNcf48OVSCj*=$smhj7rF#IzEELYeiX3<%=)@13iMbIz%z62gwB zMs!b@M(zJR8&B1~*C(t?%$vLW4uKHP>mBZCLUqu;+Bw0=lvnl8g0Xrf9y>*~J6ZND zIsnGY841BW=fp|ksbGPI@p#l>ON6uZ3PIy&fPrt`PuHT1Zcy=ZEAhi#rhj%{B2O5E zCA?uLRqOo8B(WRgvvLs!djoS6ulrxPy}vmYOIne^&?FP692|wD^o45TJW7+3sTMdN z4}+;8#Bh{LK4KjnwSe+0zlWEb00*){Fay4>wg}zgbwBW}wlq~*S z2-a&DD9mwn(_L#wS~f?^=;o!Z)|zK=H3+jiI>0ieKIS7-R9qv$?~t4fS&gS8RBzv+ zlmX(vsp?P=_W{Xgmxvf)G_G92PY+~Qc0f3Rs@3Z?(S0d?B7*db9A#5% zC|3zGhNzi0OT@N950!f26^h~jz~n;$RCk2{RM655m(@4$l@1&6Yo^E5zDcrdg2U;#)pzA|HEBm=)b%z=gi z>HE3G3lfT)?{N;%HF!9+p^av^lyFCtC?#4-fiyf?P^H{k)j#`$3wxc?}W zO=TuRH8hi)i1wPnWu~&7*wH zreZ;GhhRzL@re!F0c$IPG}^Y3?7y0*wCk1-U^7@Pn+OPqN#k7kPZ?A(NzUqMQf?+D z_Fj_>gk_Z|8p!SB1bXE+57zpIhxnjpF~{^S+a5b-WSK{#%RwdGV9;Tpo@iK$NTce( z=A9AX%9M6d$`Xf|4|vhE${_4~;&(>3svK|98Za^e3iu=XSHT9^;%j0&5K+dl{R#Z; zqnGl4Z0lh9r#5h2OmTzw(R)5Aq>Fu|)$JIWvS%4G-(1qYT(iI@6mg|#kXL8;O|vT7 zD7}#_^|4=U28H3^vjs04Xi{e{YifWdAry&X1J7Xeo~wVxnBJ5IRC(K9l#hZ_-@T#Pb_4I7D~MdP$kb*s5^` zZrj6%8Ffj~Vpj$5s0@06z3e^TMr#+uG&wC=A9T-_6Fu|mzS>2ElR@|BHzokt_3ZJ*!k>JO}TgU_BFy!$w4tvuJkiA5NS=yzg_ zgN7CJIzIMv=Y##nfXd+hta(R01|IH+}q=94^iw?Z;*$^b2#}0lnAhPKO;A@o+p5>g3 zKk&~rFMqfh|A%VeC0)SRZHohr z|AyRA0QADt2Js{nvuOSSCyg2POw8Wc(0a6hga^7!y4D?R53XCmOYZpYv&gC>3cetk zFnnB;PG`|QfXS&vOanr+Q?33RSrJwptd`~ME&Ul~*JtAT$Y9~4kkJ>*)Rk`(IZu|w zVaQ?Ln{nFrDK;#yps@PAe2MItz$z78r=l&t(l#GxulNs~EtZS$PiObMff2Ylv|3AN zB0H_;XJrj%X54l@(dBi+hqYWs>tZlCH&BNV0ajEAI2ccltyMV{W?W0`QAp)0+A$=} zB`_kfLi`zW{h{@Uh;eQzz*r+WM*}DXO=F2W%5>cXCj2tM@tq7soNx z=x}WGkBS$ETta6CnO;vV$W}ZgX9PmLgo$vF7 zRpL;(Ji&qR@1E#XZR-Xir0WFn>q)-79YoXJj3xJg2ZXFU?i`*Z#GV1ER)n!=I$U!^ zY{d(PETp2RO`!iBy0(7Mn{x8-Ig}V#w+VawD8L)dL`mygQyJGI5I#8Kcr0jy^}7~J zc3L(mp>92up3btHXmTpYw2SW%-V`gQO4SQ&uMZ~PY0o#6@zOW2e_=oXFeki1%sXxf z_XQ%6@$l9e$-8syUt_%RFKxH~ywvrXbCEi<+Jd(hLCT;%c|E(@NDIPg0N7UWm<+Lg zL!N|$r4;*tk^(k7S|Y(D)mkGJC1AC>$+lfG=+9Q+E39g$WTRsAcGKt)qVcazUxZ6w z+AiM=yzwvjkTlMF<_`2|jhA3%Jc?xBoEEMaUwI5}CpN($ zg3D`Z6(GgoCr0Neo$1|Jr`#u|N)Va*z})-c6^ z=B7?@NSf3CnNVUbN9dD6%RdFV_Y-UFQW}v5piWk}faj4%0KQ1$Tixrh_3elw^?FeKAjdF@8C4(;XB32yw zhvEQmgjQIRQSZO$1H*&;O;Fh&G?AU|>)z#8Yr`EE`RlB^vF=h8$$?bc+5uD(u;bsD z)dnAu-Rvfm{fQwgY&lANn+5c_aHicz7KSy~()LARNjQjRrlQFxnq z@E-en{_H+Hg8E188i{XnMHSq7l;rq6BTi?`gY)DO8dRlI$jUx2TT4aM2 zH*m161lZ)~thO2CR{1Lf#k=t7q3_8%S->_GtR1aNpd(Q8;Ur%Ln!5+XV3Zhb-`B5( z&gPRwW5>U6eqS%LEvP{KbOIV}H^=FS4ew5rGSqDK+KBDxv9r%%zWBru31w}Np=VUg z%xi~R_pX--mtjDDOXnetXj^j60x1~(QSr43W}4k=XBn8GlJ#2XLs-eR8&@L-569Lc5-1qLu&(S}@Xam26y z%4=AsVT3x`-xGy51>Awn_BI38ac2+80u_f+0?Z!(=Ijjjd47ZBKaqV~Vq!(`AZhJ< zJ)t9b35pBT@iG+Nq$BVcTq0~K1eiOj81Pb=?LkdSTXQ?{=GeOW0n-7M2P_(>AOPHc z<*hUq;6qyi_7naE6CL4yTtGaw@Ei^uv^ZFnP%mjYs`KePAy<>Hr`H zOd2HtxKm*9uYqN0PG&x0S8X6g87fJ$Pbzl}JE3E*Pz zoM3rLtk2y%plE0o7b8?dHBw$AT^R;!zr_MT1wD+P3Yx z@T=Qt>eA0X{H() zW@J^qb6+cHGn)Ii*>4%4tiGDl3m!_iC-!S_%aD5wPg9tj>fEs)cg%WKftF2yzTdfg z83PZ&_0ld?poWV1dpv+Uce`@(LkIZN3 z)(P`~Z9}0J zX{^K(4H9}?s*`aTFMhRYPGB1*Xyp<<7W7(q5#e|?&skb3f-TDX%L7V&d zNNOWFf*)0%B^Vzn05RJfFw)?FkW4)cCcj^yOUc_W>5aHueOs*!NLy^ zYg@ol_j?6Z-G8^JvugCF^wVPcO%sb?l@ADw!nbRoYP_Nt#YW5;bDWCx=#jF)9uEnD z{lPpW>zc2GP6?@pIXrwb0g|T*ur!dpuV?<;1ONRU~f6ZAm0qy zEFm*_b+GIWFc>8Pz*tNMn;?vg&AUKr%+E7sAsl4Takkf4=g@OVA~*B={+pEfTH_~a z&Ff+Lb`RXCOXv81!rUmJyPSgCoy0^KhXECf-?}0)4AnRP9dKR|=PRU=B7k()_yr1f#1F%O9)Z6VHj{lX z*u8^OiVYEEQ>pvFQZ681U-B3RYnWUiVras`UT_O6WRfDJsTc%X{!~3oC)tfjmqEJ6 zkZxmL-BO{{fZ|S36K|D-i2T<+thBC6ssI$<7a?|={ZcY6!P%vC}~%WgwFXF|wj8*}LX z;={rbi&{g-7Db2YPucrpei+9wg8%m-yiJNcPnVQVFMA-fw!7>UYG&h#L1)zdm zAr`-)Mq7ByLFHHXgbz*x4{?;esfZ#L?rY{mhzM0T6#WCW(br}4ZxEwe|KKr=C_9S( z*e#a80xQR{(r6r^T>GFL_0hvYKXvp>E&qUdsAv?=?jvU;5yzZt$&JfNLEir|;s?dz z+?WjNxnrDE$w>@GhWg?VzGS#0h?jwm2v5L-r~zPk&6Ob=Y;YD8mdON0poNINRzm(X z1ZGn|Fx#ze39RcPT+(C(-Nd1gcvHHGS=F|+U>HfW0h_W*9%yIjT1i)tHnOU0ndrSBwjVHoglDy8e$%i46+-Gl zFz%`TRF7=Fw+wCxs;-F4hZcGnDnoSr44P{*KcVCd>KRj26Y1h;;1OKL0htquw*a>d z&czytj8G7b?nMArum~)0P`*ck@Bs*eS$d83A>d=%2mE9AZP&G44Qgw~DftZXRN6R9l#piFnORQ4dHr1glq99` zRRY14Dim6|n>wxXg(bqb)u@1wY^QE4d2jVeQ5J06FvtQ zP*KZ7e!^g|;-JwO7+V$Ur_jMi7VZG0$T}VndyP&n`*5c7xI_vrwQcAT;9{|; zV*tfv2qhJY7tWyB5u*sIh>v3VTZ^f%5h5q7Jq9p2tb`5@7Apg4>4q4A2Q%|OB5<`f zaTvfO@C3yct^vMa>c~A`p76U-06Lx{=T)Cj(wP8aOvnI_7HO@Z4}YhKORNat=o62* zj1c_*hAe(@M{w~ya?c`s@ECtWTVz;k943Xspjx4wv! zmB9W#d_w{N_br$d|uFw*IU=kkIH|6&qE|y@;*WFtpiXFS2 z33qY1d)0^d#oQ`UYC?U`FrrlM>2cGQ{e5odwVcoE& z3q4k%64nzAo$Cu5Da!2!oXFc;v?X}lr_}OftztsUU;m z)WoO7kI0PO(*hBJytBu1`T_&*6P7qpL(cLMoRh23&dx5`zhKvh-%#)>WNnARf>Yi)lmyEUADm;>iDr3vvJV%hCMo_mp~A)UcKblLw7qFI z=W=(!aG0_cjT9)8?mUh@Alhq$I9l$7MPljHxQfN(4vA%fSg~tBRS*TSe2Dac3=WxO zBfu(|H=v|Dcm{}HfG0S~_C*cN(z>xG#3&!fg8Cl5`=s)&HAU6(hXw8Wr$T7Oj9NuXGK$5G zGzN%W&D`4;kl955Ffrs+10RE6w78M$tvbeX#$oSWd0q5=Mw_N2^+Yjx@ZwT-uX^i5 zkwR}=E(fe57o+y47RD-A&Wafs-+pnRU>R=nBOBtPt_-J+QH#WsAoee!lfrCF!AXGv zH2>qCcVXiGXvdsLf_4hpRjteI-@}7}V9%x&7+N?tOObQGA|Dj6_yKRm+4}IHXl(YO zFH@IN+M^Nk;6!t+kMZsL92XEqA(tW-VyT`&dP!M9d_@e1TcTwSbhGWmHQ%J^JC* zu0_AaYK_f4om0CKo*oJrHx^Z*KW@t)VvIq)07toS5K>%EOo$=~z>W}by44kL2aw6c zN146gG#hGbz34QJ?DNkq#(u?4763PlmV972C z95G>)(nvSVHJ$0EiXQS|}OzC1J0d=QiTO2$9nF!^_C`X`SRH=B%uVRE| zeZE`D@p3TW)2`63k6kOLE+Afv{Gcw;F&69>A6(rv#*<|ahz5jT%jFS?0#;B!-8Udr z#-b>SBe2dug@PfP^J@;c!TD`08{|pg(*RM%8apBQfX!U1FGHNkI-kSO!de%;u0VgA z5LiLG$G}6fF(fqXjyS{+d3RDoaDbMH;6>64ZX$gO3`p0jhZTYCU*Xbv_UPfYxppbe z5Be3gEEpDTAbp==o-O;cC{m-CJbppF7;36~w+^zn2p+j>u}_BY!V5wB1tDBGsdBl_ zzNKsYd4U8=!lgUEc-#+5ENte~NWSh4qjWpeFIQkW=)mZnPRh)tzk%;!D-rA{9%g~>#v`Y;8Z;30 z@#eikPngzWTWv~r<)u7ftSm-Bb^R!i(oP?ueos^+NVr_qr}~BevD0j08$^MCh>(8q z@r73p&N(VM)-_5b#?WFGV#TpId=zZ7{fmKBVkb7f!YAfIM*%fevrW_1*SA&+aDQDy z-OqtAQY%+HCM+;2U--OB{KQa0>|W3;CE%;BjPy#<$P6SYeqMC!i&=80lWCQ3vR*8mxZ@eq5HKrh(X*MdLSKn;; zZo{{L;t_9%E6!a8_C+(LMa|E{0Qif*z9je6JX!hGj&ti*887_%0vWk_3y3dng{2Vt z(xmTOou}nAUm0RtKA};5pQ2r?z1bC}?5ZOgP&PtWbd;a+0vgjgChH4Yu5~&Qh8)q9 z0-~SbwuM5k>7bC4dn=20OS~*;5J8*Zu^qzdcC$r3_A{#bcM_<^zS(RN8QSS^CiJg|~z1dQ(M6!^!9i%^wj13Stu4 zC~$6^MHLU$#5F<;k}~?ezF6>AEg~S7R)m#P;@vKXNi9=e(QLT0zgIt69!Ag4mjO4p z@PA-nGAj$^lx#I5DSyQ{mMM`$w%;`*DMIOvCZ|MWx+tmv;wU+Ij736IdTcXUE&=jmVPOR}1e_$@ zsI@DSHKx%3j{qYSWWy2N59EOWR^$i?P}3jB;Bt{fgFw<$tzj4C)dXeeeHRB*2OhZ)uFPdwF*Q3ZdoV>kZ9)mH18ru78?6e(NI@tUxbe zih&LwE(VM12{5>DDVgCMnj&2M_ZEpx$#gEI%^*ojJct({Vgr5#gSE} zq%C&oawQRCzfK~_pzTnR*M+fEUsL7=tf0L=o|@wNu$sso`p5$0j*q&z4ICm}97uo% z*q92ia5%8t;k&XQJZTy|HjM*kf(aa+IRr1sIK4*S!Og0{Hs1m69k;dRJh#C6V3HLG zE)S}NMybHA_1>GxFUwyn#A7y!$japSv<*FO?)kGO$q(h0@Tj25ET*8qP8wbn^~;VI zEu0Vy2-%NmTnY*JFZiI6!AFHF&E~6c7?@f{A_+V3rp~ODNME=N*7Xg{Fqel{0Ww7%1Sgrx3yA^;u z0h{iI0T~H%(!|#3s>aD*{p8ZczgO(d`9n#-?aPG$(%K612$v0f0V$i1Ym<^}({p(6Jv5KV*R=^uo07|wxb%rPZBTpw$f2iar*FV9OXWMr(S zM9R-ueqhhVeu0qS(~;A%-Lb+V1f#Y^$iB+~H{ZO50^{Ev&^O~Xzgs%&m=}P^1u6DS zI(UT$^!5=d`R+{s%Zlr=W!N(xMFNv;|C9!3bU0MDA-6GG6#x*0>@_DZA0=XKfn?2} zkbY6ZowK%SEk4D4$EaYg!(c2fs9R?{zh6RitN?@qQ~aC4ogn-l2c8;J(*(+~m-MtyBDrq2uaGHPO85aD=#AS^$( zvSz$v+J6vD|Cz=AR~H{nq%l-0t;v1rHFafe8};mV91g8C-*B{GtTjSM2?S1~B$9`& zo=o3lOl8vJ{`9hzU@5DsxO!0L$)feyHv{1os5j!GVO*K;vSCiO0NHp$;dBDWTb~a= z0wMOFFU?v271<%gmc(7wdx~xZ1z&zNYI1(`^PqR$jv+@7hXR9*Iwu_;3!r+@Ex*FJ zv(;Jc2I`IHm9Tj=oS-a zZDD$VpJAcDJXM;-(M0pUbs2)@n=dF4;&Gg*nMpvIA>k@=?4}R{;kL~7QDbX-ynq8J z6<2#Gkci%%$|#ruZH{cD&Al3{=Vgs2Faft=Tk&6ZFkVlAHDBav~yc)yZ*m+_@M6wPl`NWLK+z(ltsCn6wW zSY3H47*s`km_=*w1$5&f5~Dk=bSQNH*R%PoXS}&O=bo120CXBsV*U?rCnDVfmI=$kUZ8;f3CBi%;19vHL7m2EM-LhN#oPvblBa z4nxw;i*ukaGhLHMp+Gz|^KQb|2v7mQD`wKUFH#Lh5>AE7tfdU7*n2qcO2XVDl9SW$ z@p;KI3&BcHOqwvZ)ch)HERxG^0tDNPf>9Z!mg^#sYnP)8yY&cV-d&zUgFf3kr)UVH zwY4iPPrA<`G~E*DoCUWJ0eKDMwUxd=qD(xP8tevJLLndk=HfDq2p6r^BNOa9 zXuVrPouREE{f-G3;umXu8*HD8pm6c{WjXjNb{rJ3i}p3z!&Xjt0*wK;cjWpEFRPBg zCqA$_e$!R+W$E$LpfJQN0u%iU1~ZTV1O`5eEW+jF=3!99Y;wS~RViRfCqg&7#KPk2 z+J1TSnKNTGT*I8mKV=g|#Aq0D2cogTA0RrwLft-@vQ`;JBWI}1Cl7T!s)(9)TIw`H zwtcLSm)Xxs>zTvErzp_AE&5Xzhi%2o2#{2!((pgF9pVc+D3|x7o3M z1@Xq$Pa!Gu55!`V^|dh$2}XI)%V5k$%Cn71$8`nthpc}L4`x)Kawq+0G?TP-+I*|p?Fp#WM zv#P>(YY7wapSc2T>4!~qo7S{mSu!~wH=z$x$S=zz`9zLhG%pCxvT@!^ zZ&Hytwna?EiCKVf{J$dfl!~(!d2|4T=}Pd5-&!9RTW24gv@)F6M3)2ZKHSOM(39Rt z0Feul5&`WGHjG2$w?`KP&GdT4AW#(uEIEKzg<$t>`P=3sR!YR-G~Ck+#Kn-`F}Bac zSi@-4Azv-5(aA#|3;@vk5+KM9Bi5|$1waiCU}Ob_aT9$+c(4FyeoU$0&vmGgu%?B8 zc=@1knZC1JG;|(=)J^hp1h5nQaYh4x>85Ytg0MDDN|6CG(iP53Z^I>jF;I=3{19g5 z^9kq}N?vrqV|mhYm?o8T_K(F(1jNr4`3$=Nk6ed>Xwfc!9SlM81XMy+usU1r+&!+_ zogRf!n1(P5zcEk2Wavp#@)U``Kk6+Bp5CSocq1D4tlS||Awx;H8sxAUP)?zNax^&j zMrp|;w9DG=-qlBW6^{Q%_c(xQkd~H=#-rKfdWj5PL5nCi)pF7wl;xULCFoN|UH#^X zLy!Tgd1NuzKALj6O9a_CkB9m83hal?5{6aOe=VqMTT$P@aV8>5Slu>(WLG29a!r-402MqXyQIlG)0=sXl^sm~;@-A8yWb)AI5M&h7lRTnf*0FkAF# zc?sck5S;jD<-<%DO6mw)CQe|2l5qgKA|M28P+eM>03msZNMH#A2}*h?H#u-SidP4M zoZOiLRMP%r;i-fjugy$oA}a)c6whbAltyS6jHkVCK1~LW2vHM4(6CkvzzLvvn_#4^ zq`?$i!^#{+g*w_xQw+rk}}b41r-MI?q28CA}FJnn(1%YjmGLL879 zDgVK@1WZHl)PH#I1A@AX4g(OK1qJqekrI$Oe`aKBtOCm)g+&MgF93*9CGIe+mQXu! zK(}f`p0x)oawq4vX?I)Hy5xdt-b|NAaXQl2qp~p+N&@cZ&CLe3K(uCe>~MaNx}c!W zH4mJ`Kd+46sBs4b=gWROSrG*lS(Y6O;)RL1zXMs+fPF!us6>P)2sAP%O=Kvh(t+Ky zpwQSTg@xsk!kP*SpnUAk?qJJ(kQBQlnA}jUbWp z2#1G~kggEsKcT1Fd1LcfB=Zh<1rq>q9{*r{oUTCyj(CVV(&QRrCj8B%HY9_jw@6Wr z!ta7sgQZBM0{Dk#x??-k>mZRJ5FDC!-niwPkaQAeOqChA#K=Oc4FEYL$ZqN#3+7RdkHJ2kctf}hQ zz)JBQT~K1cS^*Cp`f(88hmiaV4?ti!nKLKFhEt>(JcS0{y^uQq>@k$wpwe_ZvAsaM zhs6*8e341eP!VODLkjw0pwpCI!1>KANxEkpLzg|MQDPPkB25c}tDL%1VGxBiU12N}55Vk9VUK)R zOJRWmTGuQW2b~r|U{dfJa)|`Eiw5i2Cmo`Tx>#ffk;%b)uxUa35sf6wbxnZZbn}v> zw?o+S=!yjb)0lg0nIkWtyc7&2YC9sSyXZ>;SpXWSC2;Z+G7$jRiv+VONC_j@vY6|x z!^kmKbI>kgAlWCxR5CUz|0Ejwp;_R~o8+31SGefVjVPX>M#Kz?*Kkx2J93E2qU(S5 zQoF6bPD^i+?6GkW;;*IU(d7~%_D4akGH!9L3!_6zQ|y?{nQ>%6pW%TfAj@e~!=AK< zNJ)$j#f5IL3?ZQsG84u8^h$UifV+N^I7}AS{E6}S;y${u9L0V@zP}O`4_}rknID#q z?jq2qr(CJ9ktVLy59;dN!jh&}M-%c{>lklsdU)CKs^!GsZ`v{6+-b_FXbj5U^!`fUfPS5f)Pk0~WFIb_2(-O!98SfWmYlzV=gYp>q_h z3CBzjXfkn6{k}zyBE2DGRRsgiRPNSn2*B+eXO2H7xXqtm6@3HZw~ic{;v^`$Ld@ZJ z$ifI!k7^?&_7El0&>!4~%OXkue~bYr0sbdmjSSH#htNrf!FoJFs2dBrSQhEli?5ON z&Sp$k3$&GdYkKffhoIvsmCr5>d^DOq*QwYQEd0*(bBDlbRD&$p%6!|%$e9+}(!imG zs(p~KH-(4=0HwQsg3_TG3!Lr`mdqkb7vl9$Dr{s|ephRA%kxGLxak`@--cHdr^p>- z7g1o33L)i2zV%)(??RG2I{ELnKp>dKot0a&=?mPdj6{QjQyReNesY6BRz1#E>=+M_57_xu^xH$lr11Wl#8Hm1XT zR9FWCTrwv;MPgI%BTBzV9@D+)r`KDwf-BZktiMV!EfP@u)54Vv`hDNPMq)5JRg^;| zPkaUeoovwJuOjqE^O^Pt-BU9Mk+UU9KK-4T5Lu3g&r#~oJ=44aP2s>^O2`^+^j+g% zCtj&G#@lbudvHUx`-cis6dm|X2|@yGaqtTRJtQ)KG$t$wRG!n&th)Y`kQ5tB+`p5+ zZ_@;Y9%zS$i;{`)B8RKkh!pWJ$3kcwL|Uj?A9R2w2O&}~#QV@?7pqI_&%Rv)w6h=n zO}JBD-Sqe@<=7pvAd&zU>oQacF1OY=N#Ayybd(oES>2fHr zdwC5yc(zH%#!M|omQZ_EVb}qJL(P?2!c<$;Ag5XN{_jcsDv5awOWPX6S%P8O6yubG z(lf~f0sNE6pyGjChBtUxT%tINT$?Y#{Q<38Fq#5<2tO{qTel&;Zgk~U)qU~>ek9u% zv}y9ATQG&&sJcM>k;uhI-Sx*U@;VxQnD|SQ7qSLqqg|Q_pw^@ahOlh;6PP^MvF4dh znj#X5$ci0)Js*IYcwieOQNRo+KMiNkr2fSzzl+WXG+REK zu#x)hr|+&ulG8-riL|^WKbJSCXl$j?gE;$ASqLe)_g%v&?16$|1%bX6#sM@{(`(>m z09_IRqCKe@P#~s|8UU6eF$|y#z_n#Adoxcz=Et07Cs|fbyR%tWV(XxWn3YXZ_ktyx z%d1}~_N&{bW-I8uzu>z}j)s-tzE*3ZmFtHx9bNgJ5S(hx$fo+M zvmd_#4TWz1SU9#VjnLn*yEb6V6Y`GyKerxLzOJOl*8Uj>RV@!Dl}I3knYq3A9;73* zH~{b`oKQrg#=jsMB}t-RxSO&9*<{&a!0zK+{NlDPmUC@!@M^eAiJUFK&ty=gNuduN2DR}H(7BEP8|WA#MxX(S z!jnS%s79qTW{}#`kDx9CS%x5PBM$gZq|Jx+4%dI5zw9^MRZR-&{)Z0AAY|K;;pn-9 z)sMYUkNNg^MmZ~_xc#@)2yHUeEEX-S{-8-p$sWiOg#*s>o}QKf#Y4gY=nmdO-1r|r z$IJ5vKtw?xR*-D1u&c)Nx!gv$v&ZTA)c!;tD~ zVOTY>3_Y2y#5k>(?nssy##RJ|>{RASrtXv*ciWCLcwFrQg(;7laRM1n(JE*FS992_ zc2-JM0w0y%1)#rC%KX|<5;wOCgN)z0=CcBY<#ty+T)SQlvMh`51BK2ctD`T={2W8U zL5uuQ11s$1$j2Qj2aXEG^YnOV0G0*}C;$P$E@l8Cd<-Z<0%sXWSs>XDCWLz()*p)~ zveeKOulkDBR(mRxit0K2cyMs;2xp84FP8^6t3mm8$+PlIp1fLaS)=&8~{d&7v7 z^+ZKfCQ4;!+@_H{U^(0;SvaF3go-!~0gTh*ynrICQABVGc>LA?0vP!(fVzkFpOZt! zJ8Jiz!Oi&rG}-ksH%chQbhw|4N7e=>a36EM5wEUWI-t;) zY|-5A=sK9Oo9Y*DZ`2Hif(PiH*+a6j8r+HoBZc(Q)4+^~fgR~*CdjN}Gy!)&$B)nn z?cKrFW)e@S!V4l>)hHSDpoyGb2|8f~b)_kTY`lKo`2rnO^ITJD!BSW4T=jZL$(zI{ zs(dwKnsMp@RUe1cSn7(jU(p}NLJwn%?Z9Xd90{8WVvh&m)*ApvS3C+z0;mO~h%18= zXQ2+xlY?7WIE%0#46%_Sey>-4@QetdX70Pt^--x z)mi;JTPK4t?3?dwg7>sZ#)HVlwkg-=2lsi`@~O*cecl0SG#LMeTY)=Lujt7C>}_01 z0V=4HL8T?h&RO^VtTKlSr1}SdEQzOvho~Lo9bz(&rn5XiL0)o8+)m&q1!aOh?TWhl zpn`0h9k+b~2L-uo=}~>1G|I3R?Z!+`h}3=G)ThsA+lb2z`@)Yop3YFE{$M_1-Q3XQD#hR} z_@_AlQ8eQ5lQhz!6ZkCMn0?gKye)!35j~lz2iS@&{^$Y=m~`b+sSR7Q4Jk?IgqXboW=lJV6?W3>jL zw-L=)LGyng=$q_pxGJFfgMss3($J>bGL7x7OyJsGmrQ%p? zt1wJXLVz&}L$9p`fLp#IUmNAI4pkfTzcnfPJ7CR+3`yqe10*yAAc)$`m<^=E7+9$-<1_lJj+F?Se;@_a#VgPdt|d8$cyWiRr+c zTmgUBvW&nsNuT*5@l0S6n@&6a`*}9_YWrj`xJRUXup2l%^pqGyCCi5O0_|#-S}a!9 z3xu7-7zB0cF5=w+q50Csj4+<^t&3kqjHU{zrPWg8*O>8B3MpnZ%&MSDVw8xY1#To! z&@D2`_z@ze#_RCxv=2B1mVrPPIJjqADa+yNPk_cWEh~lAT$X#7=ED3HNL?h-MRn&T zz(c*@_zu$H_)90vmTiG_N6?-6CNp#)A}~H$=$7FB1WXUr*c#NT`I3lYp>sQfgd@=+ za!5*YM`m>rcMT;Qyqy3qkce6Yh5kDtYCr{X0Yx_b*7C+A?9zn&!A70sR4jr*$tkE` zhRaWROVAp4v#su9KhcEVf<$p#=f=Q+OgR7*WHTZZL0>lK@iEi0VZ9`gLMK5-KpfJ8 zMqtZ4(q^?%G}u2OlGPc@H0M<&a4ObYaP0i{RB3&u4FlEeso}m)@Z6TU*{}#Ds)AFD zHq~1rutmITEGd`A51&eQM;^I>bu!2pP-*jIx%iQ)0UEcoM}pTHpPOhu**UBg1J@C~ z(iO`tG?&jHAi5z#>`3(T|EZK4QXQ)10fOl6qnM9&>0Dpk-!z0-1pn?rDlhXJ`JCV{ zo|w*h;HccQC4#s0_$eh^6`e&jZ-VDEY3X@bio+l5CN_@)_cO(~2An|wX+Re%YK_R& zG@F2!X3=K(gG3YSPnGh2HCi}1#mC{7`nhMjLgrqIfQ~=rO2B&lf;IYoEBqL4s7@G8J3x*uq^^#Nn%MR{x0D|ltyg#G=IyHja zL$SV_O-wxJ(8N+R`0XOF?^c)i2Cf2!iQ76}h|en+O=@a`3pU2V+an})7b_=Gm3l@m#3m|AF)}}_v2B%x=v8<3 z@Gf%X7eJ(-?kPOizx;m7X$8z4QukJ}bW{gp1=8Uuh5xSpzz03hyNxAHF49;h8*2DV zQDmzb+`o_$DA~&iNFV>77~^vAIB~#RNS{S`CqI(r62By4Kx z=CC0-O_5Ge(AcBPe@nX@bKrHG0JfSom@3^w8+cbcxA%|nFOqH#s<^}EV>uoGjk?hS z`WAKk5?VXa<6S_KTXKTBxXAp^HhO|XpXkY~3uoQhHHWev2s_G(OvvR%%15T~AMJ%nC^`5>!S=npG}_^I2PQVzt4b(&p6a8wdsWs^_6O<{>z5A{7W< z!W2A47KkP{Ce*@5vlY4cd!E(M+`{`aoL~h#4CGP;X;f(hxF{wba|OQ=$vU874?d;* ze3?T3bH+SYr1pEjXeWmtvBjMX!^Ww8`W5=b zRe>5Zp=z zHJ9IR*aed$?SO&-!UK({5HF6K^7FDBm1&&IVMe;@9}v~X*a)=;j}aj^V2k}~v*(U1 zO7Emmp zpjHG!>gy;$a>3!FR}9bPNK7Ea_iomxa`*88-$g94kE_9u1xP2elFP^J0UD4G7B?PB zv2Qm<0Fi*jh>kTf3Ips?XaS1PsXjOiPSV58(F&#q#2w2bTIC7C{Xd`T9$!g)+MvWP zV=(3F5!khKHe^xAf%}QfMl&P;v^iH;f^k&dqD#1^@Y)zL{0doGawJtJ%5u3Kz)>j~T&GnR(2t*t-8W%^Ba8xxlgy2lZATKvw8e~r(G3SLD zn3c}!6PpTb{!bTRfTwy8O(gZrR6y*MpPNfU4M8|5F(x#{1PXyH2-e@^$yaAZu*d$=l6pHs(a_dj z>5mLj1{%WW|DrSlqq*=d_h^zMUT@CzD1x8>SLOOBagj<(^Yo8$L_mVZ1OI@>tkf+G%ow)5$j3qPNpSsKlKIA(rAf>>^+u{ycZVU>bn- z@(vQ3%OB-z^YNDe1kZgCQNMpah%=j(2Fl@qiEL>e<5xmp%we-N_0Mb$U$z9EdkwZheWJGF-q99j7H=#^(G&DCaYGc zr{jdESLB=iv+ZB$W_JCdWvl4om>p)kH~;_9@$WCIy`Sys=R(LzK8z9uLB8-&6kVe- zVPH&z93~qETTOx>q0=MAfkS4`aFj@h=mgFCJ}qKcm7Nj0dQs2J89Hdb-9jr;Q+T2P zsMmV@7(+BDrx710jqw5rM!$~OWJE56lf{bR6bM-i9WsV{Uw^AGQn|pv4*%O{lr{q* zI;vCuGE#KE+$gnr1WcWB_y7*DQ^DF3JIYtl7aJO>gdwtGMY(*7$RP&}a|^^G{VOt(`3`cS@G1lygAL|{M1 zRp5XwR-i&AKs(|=3ClLZD^b*G}C>zAxJl7lptRe@KE&%C0t$z^w-;KZQx=88v$*t!EU_7f1)6K3w^!b z6|#YMj0(TzPBD@0+P0|nDPR&*NtrNC1fSjd3|;9hUaOQdqR2{*c4@}*ZtG;zjI=#> z(uKPdpbiOkWK-CYxB#n<%Us1G2Ot(&{s5hF1|9$)hzBqc*Zz`wL89f#_Q`@zx6Pp} znh}vk>dY0SK#GN}Nq#8CzU*z#1fsCK!N{ikD&%tQO!%Y8%e& zOIdH2?8X+ZM@hQ2DOG}M7#+HatI&i8v9Ol%bz zlF;j+9vV8J$VLY$_af^HcL9T;L=cF|F$#r%Gz5UMk(6>81MrE-xfnr$-L^lIghe5l zL~bMv)`EYS%aq(?lC)TDBzt^~Tqt@Z=tOGM@^1VOG63;;Jdf1_t5)+49z zN%th}|9mg>j-}xxjGG##8WSb;kO*(67`%WN0fHkI!mwuCnCk_Ri1}1vQAf|5!wgOk zdPok+Ca5@u5s~>@PoQa@Jl4g-*(q|Fb*1VuTsz(fLq>6@{%ZRIK zzg4Qp73_x;iV4(U!L6J>0uO*E%=$M@M~~el{VE@JY;a3nL}2`ub8)Bd+9c$=P4kxC z2uFc&HxL#LzD`Dcx5q(Mw5o{sfUrL#iKB(;+9g$J;9l2OIj{d?t;8zoA#t#$5@P$B z3W_ev6=XjlQ5SMdNj9LUxGZrcD(>+nEp+fIg}q?$VOd-*yMVr=uXW3yEN;x$XVQY^ zl~I^UO(>3(T*|?AhqXxLJ*Ugbq3um$Q1+3ekoJmbu#bj(tl8KZ=|!~ajbFitKZf`f zR~eHGA^Q7|+8BfN*_krs77O<5=~}yC1D&`)Sa>-AD&f|XqLzeR;hW^dm@tJFAi*iB z1R%gxrNn>H2h*vAx9q#uS)Deu&N#?`fd*_&rh71=vy_tvNxC|V zc?Xh@@2KlL5hjt8flZ_gkhF&*7L0Ii#*1rzSDBF+Gv}<=1%=eeK7vo+svEUjg?xmZ zhy&-!84j9So=!tQS|Ir-7Z;d!oFIcW5gPeY;TXOJ0kAihiu^Wz;+Q-tL_%N~;G%?y zVDT7)v6@MSy{=fOFlz^g#HCvZ3#kt#083C4c8p)yydn5PNQI}dxG;tIG1Lu@Cwr`0 zdlNk=lTON|b**LtGZ|`?Z$uv&n&B7=bF;6E*mX6i@s?}3wGvf-1GPm>#0JHp4-$$&=HCP@1iaVa9!pKN zxmc25EdVuj{l1u`902G#V3yo~x)6gE+)u*`mmdIA5nklok%}5B|WT(EKR`cTb6bz=_Pn5;;c05G%?7a6G?AlVceS>`<9O8ILZqw*s);Jx%~d z{dYLrbOMHHPi3lER;HUoR{=?mxcTJ>f{WES;wjDsX^A9?Rz(r*zIH_}8cTtL3ksEB zU4T|&D22@(c7c-%zNF8#7H)%#1zq&O>hA*sx_bm&Q=wI?Ik7;=NIaqw8Q&gJ zGD zV2_^%2{abyPA(=n0RkTeDBT-=qp>TfCL3I6$KgqkI|+tGWE0#~gu8)`xEH(NF~=(p zTL+y1fsqv6!h}lX?XY{m;71|N7i=rlkAiJ71Pl)j@%!7omUj{8gEJ_MP(odSKRiJ% zU??5lT%IaaYLJYm8Q8B0bqN6M$d$<8U)-wF-Uh%YP-Q1MXdYpq%`1);zpW=FkBP$P zI$~=oOnz*C)AHg;V{;jE?e)Yv%w5lM#%`bJe z1vEEP_C=_;bKj0_l!x(>TmL3!hadtR51xDp$V?}zi5XHFjlUP+6Xn5`+v6wD=eGcn zKQX3Ow-9wm5E9>g@8~tB$iXod(xx5`Udu>h-gzNK3xp87gc@*>31g2mBH2J6E;^N8 z*AW#1k~9oU-xvUZ;wLV?K|%Tg0z?5BRgz-5`+iC{4fMPrJ;vF)i^F8qDnEz?+09WP z$rI3;YO%{1>;Na^gTc=(s4QcqR0|+%K>$bqv%7^Q3E=?bTm;VYD3D>jzdeM-lHfLe z4Te2J?bY~^A`N*J_(>3c=o&`aiAx8f&fqy_ajSAo_gLrefFdirJWuA#j5o-^@8hxV z9u9AV2(dtzs~~4p05L-q!NnP1N7|hC)*2{a-MCRF4pJ+uG~_`QGWsV@0U4sfak`JIhS8kQ$iK>lT4W(YidX zT_f)w0w8>|A?GC$C8d!c&gd+FfH?m-VCGr$xI z)o;<{AJMI}ATAgtiJ0CHfkWgNepUim2fB=Z5GG)0EL_b1T=;UM5Y8_7tn+oTr!$Klh*p@f97E_lrSzF zLH2FI`UauB4C)b7#PT%rG6KDVRg>og=pMo_YVbs zc|gs~U`{4HiRT_*cq7118%*)Xg`X{DP;&mzGG0u8Z!ef?{FSO2DjGf?7db;!+T`i+ z#YJG?&g0Mst6QU~@Npd~dg8_vjc&t(V~Fx9r3I68a$lKX5-%<;bg7rE6$6-&fl$*6 z-On{tPd5hEqwnq<)Q1btzNNn3mLqBNk(2Dm+}k~ng}m~mYOPJJ&{CVzv6&`G>0q`0J*ct;sR1C3Z6Q#PlHY&2NY6~lS(KF zY|atp<_21IVI?%N~PafL8vBqesDuUsdDt3QywKd$7Yr zxTiWTIF=DHIsCpgqKmyY}@*p0Q zX~DqrYLC|4iV<)k%N2zZAfg{GcVO**J~G0fM$l0Yi+=1Kuj`R#$zmXLV&E{XOhki^ z_FaCkDPc(kcp<(m7SzLkC z4GBRiOEAp}hfR`&I}Ll1=t{3D((9ubUV>;$cQ3lB9k#R05-O z_}7)tj{%=^1&9;}^1Hi}AltA-k`0RFz4`$qWF$#cNVuWLwMP>DNU{_*f*N~_OovyC8&euk1uXcbCsDl-eSRawK z6gmKqw3+(xEKp`;q{1=49D07Arw-gG#z_g$ONu_fJ^g4n0(AerNKQM>PV=jU&9t=6hZLgbL357%HQAx|Po z;=rYByU2DHLuXdgn|6{s=z6c=Mf~;hs2Z{wNl4K^Q&r@#L4yk5jP%$xrh>|!RyY}S$Ple_-ZtHr zrFr}u9Oreq(UFG(3>V4B*tD>_y673`?7esD_bbRKAf;JY2!7doog}whL>ZI?0S4@_ ziy50-S-I@zVWTV*I9&7w%&@Q%zz|D63!WXpvn(uS9K!LxyT4}MUoL{bu#SX@3?|97 z-tNKfA5aT1cX&!l4HjIZ!^+m*?t)_YD9AYPrj<;&WaO0}QY3XCvoRZ#aeG4KKqFr* zU3{-}D^giBXzuet)yIO25(uL|XJ>7y;7O!#Kt-M6KHCfbWons{@nBA!$o!cpYKZ)0 z@;|p@I$jcJD&NG!f zenm)t&;*JCfz@I2CJ_5?jAa0w_JS;feOh#52+_W8gFS$Cst1SbC`E8v|n zE}^<=Us&JhMJ2t#EBf8v}MKtT&(GGr-dLC*E2x35nJSh&GVW`ch`relrD?V zBnlabRWL)?oV{k=py?zsbexvP{zFt*{#H`m7@oKlPYJ4@8ow}iDrH>K9%%vyO_mG; z)gzZ-3BCJZzzCpez`=kBK#c**ViG*CV5D*|ReES3Lo(bVjYkDb_XrF5a?5!(sA~-d z(dtrdlfV)G+5jjr68MZFRVdho+CTSh1;Ag3mh|{RLN&Hn5yBm6uxM(yK7j)C-;f_R zQ)!|G-}KqR0T-6V7x|dNBA<<%Og8gK*6FvX~{h*$$U zt2@|9Ax9dRLqHQs&IN}?Sb&Wk6Vbdt{y z0AVALDC+HI&~tjA%j2vNle;Xl6#+-!C;)sck36tL<~afY8wICFBZD>txT8b5aw)7; zyGf<)VWPDo*)u4Kjv^j^_C_VvMuzlLr!>he(0oCzJpol|p)Q{Pk&r-dux>6$2JUS( z($cpd*J7fh! zgUK5>DLP(I_v%8$Q`N(mRq-C_WqT=!1fq=J40Rpg6($(xniQp8@c;l#VqG7XF^Xu$ zVZq|G+-eq03=Y-i{%m0ukdc8BPjos4Qt$!UJC?_-9?0l(-7g^4BFbrU*iS8m_H!`y zDA0ZB^-!rgH*JLMgiyC1K%?~aai~Oj+7Px*Ek~|M038}my&>~s?fqz%%`y&KG?siL z->Ok}K)ws{S3Dm4KB^T_M$`uc!#U7Esm)vgsPZ=wqM8XNpiYF;Jf8yslDuU4bIb+` z;T=vT{radlaesfNO0GWEW6Tz-e$9pO%COr+N<7isdi$reQ$u?LlV4VhT%v5aNh>%Z z2sNQXzLYJeCg~x8=9n0jCJmHM=bcK5m0u(#CD``OMr6Y)uAo6XubATyMjTAP97Gx-tjlb{cWn99d18*>Xtu{)yCV#$eC_-QNAH2Z7wij)w&%0U@erp476^y? zY}Pk9NIuXj62%%k06lV%IEIdJwtA+h%>?%buc8v9+$$J;KgvlJ)=w8ys=ODv-M_wX;%)jVeH^hWSAflB_QTM{$3qG1`&_H33 z%U+)18^;646oFe$?lu~z_{6-)vCvk$#1Z&Rf9nduYQr^-Vi{oe2|o(o>nyIT3m_SZ z!w1kC0;X2&-KgS_VY`trsU)<@JrE6+Ke}CmMvq|uLvKlAOF&8Zu`)K9-+K)o z=w0(1Z2x`g{CoZk8j=S$ow|6?+syLo`VAU@`G%i!U4avz{*TRI0dys zp-&P8wJ0u(F3hTrm2a5iWN zy6H;fgV<7D9OSDTwxnfHIe*|JKZR~YfsRQNzpR}a@P$KAxZS0y1}RVpV8Ad~aK&w~ z_OmoOZ$k(V@G`VYo}ymFHadS}V`&n9Lm{c=ApipQ$8Y#0=0MGxi!xP`l`2fo^isr?5JcJPjBXVZPY)O~+)k&BA3Ga3{ za02UmK%4z@WH1G|2TQ>y98ZSt|ETm5`Q5Z>oHh<|5kG@->9X0YhS36)Y!OOmynxy+ zO&xW?tKFku(-oOC4J;c53|44m*|0Zav)>=s3{xIl*b3G7Eses0exY#K1OfHP^&yq0 zd+)PDU!g$Mj6f>^Vz4kD(#a{YU6iAN#pW7oQ<0+rpFj8pz-e&B}R!MY- z8uRE29CWan$85VX;Zw%vTa4C@jSv#vu_L7$G=#w&lfT~!|6iCEsZKnqc%v;#_#5D% zodmVDy&BHzxA6V|Mj?>#;rpja+HF1u^Q|Z%3H3f;b4JW?4Uy7_&JbYK9pC|_LJZID zq8_HcWm1OY3cU(Q%uGUfEE(WMu7w-|;OznsgBvsMnt;QiBtr8GVqoQDebbQ>K?vQN z0uHFR8k{86p5uB+%#)j!m~-MdPxRNH0$}= z#qJ4UA?Gigr9#CGxgF{oq?V-L-xzri^m@D|Adq?vLP3D?94C`YrY?*l0v)zgC7FXkoC_)Hu%g4@9$JEMPX7Y%hiBM-*6D$WOLb0JdXc*&q)I zm4x%SzLO?nhNN0kR@j+2AyethON*cJpljXvfP4@+-3V`KX1}ZtUZ|uTFB72q@6r3D{6#LwiNF-Ji4wB$NMJ8d{TD0w6 z%Y%a~Qo~7tNfUIEM44cPSpI{7RLQ8R54R~99p9GkF$uk*b0#mTsB#?%w+EmTNGa}Y zDxm>9EGD3)wQjpa@DHPThlE)68v~HD$y5(WyNEm{g1>u?CS?MlaH%Y&UM-{BY)Exy_mIj!KGo8EPh*Ra6h<-~Gf4nxWf1s`B~1z^^~q}LNNupzk9 zexkrY0oh5EN-oFe3**_il>x`60EN{i9ro}-O`=eohE`*N)i)EGMS41!!{Q_)O1(+s3nskDzhmu|N-&I{7$8&d`&{V^rn7@JQseXI&6`aSvhmPe3QBALLp=4)6o9`3&tA_z56G zUyd1t9#1HGLy@qwH~{QCC%0o z1(6rw**oBqsD_}QpkHQtcxf6LqsHZ57*IYlD)`1iUtt-9P-qT#XaG*}+dyyFrIzX| zo+yhl=U8_(fG(L@wFs4chh7JH>7WVsm^*Y-<>HEBdUw?(Op#D3rs?V*k}9}G z0%MjXS2c{9Y(>VE{vR5-;|UU1dY|YBzv!Be1u7GPJuQV6vY%kQrB3n-fnWi^yYm2C zhXG@NMDc8uGs`iXGD=U8cnkisZ3M!NmE(wYP3f>Nb-awUnFClHXtWl`_DlI3-WBrx zvm$RC38}l7zbNrayUNql@)XPpj-cBTDJe&|L5PH!hpQEf1H57N-)nM#^mQ0Z@-O?0 zlM#_^;T32ArbsW{;IPUVhsEv!aIMDj!tuZ;5LP4Z*wkVQ{cSmX^4vA1!&RUgW8>Vb z@=haj#Mz#0#`{<(u8^!L!=;o;Oqs{PfKO8`J@865qhwE_1Gi?d=7P(Ta;RY~L}A&* z#vQtkmUx^|#8%FYvsjiNvzvNh5!Ch}6rn^9An`+k#a(`*pN_pfOVa>dV*tDinFI~_gJP;Quda7u3Cs1vL#*R_gUG2H>9tD5^VpdgPRn`OO zga8ngkXC63MT9`6vY5--UHY)GnsLR{oVQ>qW8^1b0HB9rc-_N*kIS2diQ}U8`dkpn zLfA0xdh%fCMTLAO^l@j~*dhp>=U5(|;{SsyGn=DaD9fu-nkI14DNz~Fcq2^-SpBdT z4+7Bg3{fNu*Vu`BNQY7)WhFBfr5T^fZZC`pLwrLQEqKj}aexP%vAD&Pbt{%D6Uz{=3s zQ)!;^kw<~a+{d9v$rJ$a_+cWt5c}-V*;tKrk0}YW;TcpTQzN5e+`v_P1HxC7leiX? zW+WzlEd$7q^fa(}G7vu|&yZ08S@)SToWLk051TF#AVSaNS%?$O^A3E(Njha=L;l6DPYEYL>K+$+$klF zT*nV3(U2jwxjVJ#ic!DKxkAGDD0EEs7lmM@EFqB!xP zX-hr?gJ1z08_4RRW8JXH?$W~fq!^vTE8;!0UL93<$$w}n3o0rol<`bE;nt{Ot`)Gb zG-&72!UISItrvt>F-TkU<)tx`yJ7d5{x6~5V;q4#6_P>?-h{x4plxA3pR*K%cYP5B zNfv=q_&g$;wje?aR8lvyA7wEyPflPSrBNj*uL%#ytWq+uO_5?Gv`mi2UMn{0)KA(; z9f8M{Z1EU4!>t0r$@s9*7$^la%sN2P6hI=TC@9Y6`bt?P@@gm!P;VZ8PBSqqR*&+o zAd(~vQ648z*6{iXwyh`;(`P7x0#GcY4j)Kl%Q5`n04{)3SSWukD5Q*(Su9TytPle> zEbk@A`v62x%4tM*mS{R8x<&18@H*2AX%XbH6lHZO;3kvfsFh#qkxv9Am_qCrL4rod zSPq3x9wTv*ln9f+W86QJ1@a7?huCo=Pn0GcBjr;O*ztrPiZm=plrF)&0X-Rz1e#>D zOF{sN(`|?0reXpVrp6poN|Ab`HDs;NEgFQ;}ma z&V^L4E;B6Nr*2%ofZ?D zVDac401}XmG!UUg2U{Xh8~7hq3Tznorz^Q#*cjTZ$*Jgox1frG6IER4H)LJtqHr?^ zqQN0LKt>;oL$4ozX)O-DBS~9BeSsN%&2Sup23UD@i`gZ$7LCJ{ zi763q{fI1I5diSUL3<{pCmleoCyv@6KADfT+p`$nS(VQa%J6E@vq%IVmYYzl*B1)w zl)&)^47jAErll4tH6LB`Q*ofo6Q_3q3rMqT4M^;ux?4E{dSzU_HSR1tjB z4In49n*3%977r<5&A?p}ArrwR6P*>0k(H!YkCe>I)1O=CfsBCmz)dt;e6(`((Ohg% z0GY%SGsY7aXxDxmhv0aE!duzLv7dp?ct@?2 zCngw|kFsr#q;B9(6H&m7JYu~5VB$B3#hx)da%jz7IH`BI{DUOS@h}c}ACC_>h}4k4 zIb6RD1kSn#X(cy*yHzAJERHVRY@K7WlacF#47=dIskWs`6_5!KsX6e4qdywe3c+W15U7^Ln}w?#E*(sT&^nd z7zEcH>|}a?PvdbxYBl(t&Pc~W`xzgY1&&PDA~DZig+mA{Y0$Vx_HYoZP7g+&H~lJ) zUC#V0cU%p(kp0g0r>2u)4cXCFkqymJ5aboa!b!?G8?p(p09Qb$zv}tiRyg&*n%IAD zH>?b=y3-+#H%Us)A1nD)g4NdpzJmZw=Hi!ZRrTvy8VU?kg#<_`5Ay-@DF(GzOneCc z%McsI0`W?jprPK#MKA`%y1E!Gd7a35mhx`T>`BRd+2(7>>m3h6Axr12B0ln=E(XvE z5%8Nie^^lP^^27DfFu``*W+{v+oogg*V^p?WHzs!q0pE~IY%OKM-e#VjGPGk;A4fH zIM}mejplD)Hd*b$41y*Zhi@SOI1ch1agkT%!ib~XKhxv0kd7$?-@Y1+=fJRyas)CC z`1MiZO+GRqxGI(ckx6&fnkq&@6A32h+)b$3Cf&qs<6!Z_3s%jXY+KCEod<6EPQV~M z9hLiAKsyX>AfEXS>&S?#@pyQ-2F&kuHu11;H&viD;Q_^r=@LhHcmz31xJd?Lo2|pj zD02+|5BD_0UcNvma7vo6{xqr6U*3RvnF+NIdd$Fu)!>0Eek|K5kp5|=m|w^ggrJL( zt?_C+2Q01#3wPvJ69NOJr6cJd66P@SN=N+zbcEq{!)MJOvKtj_;x1gh0_|jx;Z^9UwKgMp}fsc|-@?EDi&$+$6s*d$;Zv z+;@+|+%Tdj+0Vd8YCo~v>!IAIq1;w_KXE2__}V(vD+8#c*t|qTXvs9gRB9%aX%kM@ zH1UvTLm4lj-RQ{YnTcLnQDO8rHn8E7g5yMx5Rmj0*-<7L_i+V~w0j1OK~T8j6+mk+ z6Pc)e5j_#X(Q~`I9yB_M1ww=4g@)&LfuUidNGG_f3L9O>%vjG@IBfifGXYUmJqbgQ zgoKVIUA+HaA53&B0N4iwUI-F8%eq7?bcd#p3nV1pt4fOE%j7Opz_2L5dm9>&XnS@4w15*EXX;T7PZP%M}-0elt@rJ}Zft!00PTt1i$aeNe!4A$>82!cz$Y z)F;6al3=3A@LIWyphNszX2G;d-GO!PP+a%>Nt#P6wLm#w4Ocj_pnxG5h)OubjL5N* z_|`V_>(F8j!0M&-)JBCPZE^rc|8r!90gF-!QAse?BAd?UOisVpj zRtctHJ-`UF!eSvN8q}hZYAzTDb7UibT75Rz)QhN!rSLpK-n9hT&-m5Id2@uGUD;i@ z0PM9xVQ1|oweQkE(St-fC&;cOLIE=Qi#`|B6Lyybpw)wu)+w1_fKxz3JAcY^1@XZUaHJA}c=}Fgn8;GWc!0nFv4~z+F9zy>VUohzGvxE!V}Q4tpd4Y@ zL;(Zjg0wyHOOiNNA5;T%HmuU7xea!$9snIE5n=`6#dsSO5xs_*NFs}Rg&6a&CSlSu zz$VPJjEoq?f)|j}TY@AZCi2C~$FSg4lolmXC((Dn#z@Gt0aIK@gz<{T+j z$k^TsEC^WheawxNusT7hB!@=Y$Hh*vkIXox^?WRD6(1EGD(aZAx|@Q)>$rb0GXI5f zv8<@ZB_~sw;=UkL1~>=<_$>nvg`jskq;2N}1D$n#Z@A%(9Ux_rRqihrONUdDPggbQ zOkCxF-AF;56|dLz(*I8L^-Sw2eLM9k{@aE)Uy!dsDNB@TvK`p&q^j_y81YLI_Ibt0 z$5<>hf;*Ix2ODPr3PF|m!yF(!lRpnsoY3S9IEv`y4j4rY3M96YASP!UQuUydr9mJ~ z$z#Nj#E|q;25=>Ilc*yMuap$@RZTNlf8#5=g_8d(U{{X+o(34T3GFc%m(CbLN)YP! zG$(;vPty@S3CO$kjsy+^@nyVL@wNFvlOE8hl<314K*4ls&5&FR@l4Dz%;Z(M@=LW= zcdsB_67Do)qA*4veKHGyX{=&2BLn0xD+T8fa0C?4bnJ7j!6t+FbPOfDfM1{;Jvo?k zRv{F=M1V0}`t((nJ`4y*)fck{vVm3nBPAD*V5~4MYSa=%&i3HbNfNaC^DGR9G65iD zqXbL}z7>FsVCw&?fanKK{TM)oXkYGnPq7ui+t0$#poODw7R?^C4z%{rz!yVE4#KW& zxZqAh?bgb4W@>ATUVM5SXDx;6O%=Y0&Ji*7$X;sws?K3`ts`yIw@J>a-v1A}SDn zh@YV$7y<>9l!^9Y%qN9YR6wPZI0!V{1}L9~7v$lN8lg#0Cs<)Q@eDefNo3gJ6)=hb zO^GK1!il*KRfjTxwgc`H+;B(_O7lf5%elBArq;+A=szG=Y3ujM1QopTfC8;NrV<2~ zwN;enceV5vvKnZ?HVt5<4p;!SI&vsFfMuG32wBbLYl+l%xEuoh)1(*pw?21#^PV6I zbo_TAi%MbBqRFx*v~_Z)Ack?6vSv90w~j^zn!D136odK_*JA1DAIY0el^x4xX_F>< zs_(@ti;nCn#?ens=i|bn&%oek$iPl96NTD=&P1N@$)GItSw|L77~xs4Fvmuw1cP38 zjKRKCk`7{~z_Wbb4rFe@Lo)0QJut3_9u6kpT-lj_8*l-GZacX7dw*7p&HofjB1M4ZD8;BxocVDMAGNcYxBtgqLeIaE5G@Y zhe?6O9)Vk^R6rd+X`UYIM6P_O02?Kj9s@T`mhvObk6clwln~g%26Y^x&@WmIMd`Bo47g(DmN>CxgBC2Y z)-)^vF-3=%4Kgk|7;^$A*?GqolVKhO zE1Omv+G@$Ng#*aWmH`SR&`+Ey}y7$lnJ`HArR*IIxk-jm?GFm&;i6l)c`B10_LT70w(&Fl2PxR z%hQGif-DU%j^r@xU9rA*57?hGX8}~2iPe&w=3m)yp~}LFnDAZbQH~Y_c=&Pn)6C%w%2e@7(E@t!1(Js-lvy)2SY z@*p;Z>U}&Ji!3#wlv@$;o{BK3@AtO11lDD?cLV^K6D9~tgc5Epjx_8dz$J<-M6ja5 zA&KJHX%PX3q>{7?66gO&i-I*B(^I z3)ubkECN`f#7hb)Bjo&73_U79co`E!$u5@+>R8prPY_11dcg~#vl_zv^H@T6^QLnK zy0ACwBWD~KX3Q=vVGcw`f?;yf)~oCb_d`pk;G;+rmT+Rfwq^ZdN+i9gd1CcF(#;jT zG;nZs3iZ<1Qehn-&DXFBe=0$lr|041pzh1jP-6hY3Y|*!RB=qoY>>UH%vbi#3xPNq z1umbOgIz$ciwenw$d1PatR%wV9N|}Y&_JN~fQlX0in}6%2{ly7S_&}0b3Bg0B+~jd z$@ikzR9r|{@u{9(qfd}Oai!IQ!Tha7Wdh{KVk~$ys^qs!;msDHhP1(gD4+mpn;x}4 zcm{4EA4mX}8M#lkcvzhwREHk?C|0N!Y4R0~IK`7w5XD0kFBqW31eDQCLc%E(W4|1I zHd>%+XA2&Si59{Nw|)J3B$(_8%<&jtCqdvqBoz>BityI$D>g*ffo0Zy@Z>d20!q1Q?)0aHDCf#mavXMdc1ACSm3| z%@86H)H1%rB&^S3X&*3g{qli$&8TX{bR3B|W30&E2w2{_lMC!xmI??GM(CeZYIGcE zM7mG}p;+evf{F-}%NQ@;DT9wf_q(dpEiEdp5o8f{WsS?@kxk2HKIO@Q`?sp+`(|V8)VCZle<=U>geQScpS83`M ziAJs>Lcj}FU4sHLfLxgjkNA>zIwe^GDNQwepYz3&xHZ8b;ztc}AMr1jsEAm2YNb%f zWe4K@oSi9P+FUeO9#qymp$5dyzW@U%K-rQgvKEstY&Wl1K5!NJLJgCTkw)9V4CvUv zB=`V^kA_)~wVZtnlN>&b*vtY-!5{)`kr(L-?+5~51Eu;(X5om!0FVzC5dnfjDGu#~ z0xNx+;~X%NvlvKLUPVxL6YNAw2^0JRaATwss`wnbTO3X%CNffA;8$Y0xK3NGV-aB? z_x8jAY(>e%Zg5ow$V>U>veGaOfN-Y&7o8{!T9QAN$M50b@NqzlRWAsuym%QwTFWaO z;FgGI34F6Bb}(uIVz{6Ro=!h$PNC;Jl)Snj5k&x4sFDYIop46@EHiJrCvoNZJ7%-) z5$4W|!v&><5x2*M=ZKCKrL@X&m=00tod0A4XMeA|V8?6LJ_lahbV`a2-M zz0A5OKtYy`JNpX_3_En@9^d1N7_tnzugO3izIa4WnV~3;h3|qxgSUXZ!wu0q(N>RxT{)otFUo|aM@3ei? zaEj1;#J-OTM7=7Ue)fpdFXeKxs7cJwNC5TGvLAsi2N2<^`}FHFS*B zzNkebafU+43alBfo zH?{zwz^XvY24FW>UFq#&X7yh5sP7No3l?D&I(B$7VJ<)lB8y0#kma;@sZ1>ZK4pHU zE>sXU+|{pAhEcWf#fx9?q6KlX%cDvt7A`G~rx+J$jUSxGg#$)Zv2-_?&JL*{J4#Kf z`m5Es-pDLz)|AA^zk?}iF2PJV)_t)+LO1J#>RM^QcUoRE$k!0F#YhBnptSYC@#W)A{(6tfDHrvm}Cb zRA(T;cv1N_73*T<2r0~xSVA`W)Pi{nWi|_StNaKeAA`4$wcGFj(a6qJ6jbo|U5W>m58P2~ z{NiK^n6SOz)5y!i2A*FE8Y$zFBmAX{!k-*8+ILzHNue$#h3l0w{9Xuz zajw-IAZSGb5=9pv&A=d8|7ig7;aIi*7uZ@NP`~_PXz4$e8y{0Awzx9;L>3msLk1rMg_6sgSR~s6 z86_mX*j!8EU9=%ixY*mkSQF~_uOTHxWX21s3_DpB)cx@HecwSCAM7-Un&ie(N_rOS z+uje~9oVx(<|32ac}XXUB+!_zIte-V4`kq?kLHnZ6t$`E^lTLSC2D{b{jr-F=&Hpz zAu&R1FZ4Mr7$_$NGg`sGDgL!G$fk{WX*c$jWK$po2#26lR^Y)J=D>sj8c;yXdxQ{h zh%{d~lUpM1lVFm<0591GyLyO9=P)fNenTOj#tW;K_KNChsi-_Q zNz>t2h*|1qi-ft-7iD^*lTTL$lw=4s(ZNIrFXN%}EFb+o*+bCcOxZ%d>HNwtV3|t@ zw*W?$sDTPV)|Ge;($@e?t%rx}VfhXgEun4`q)6`W=C*5{wg724fFlSqoYES4Q%LGna(>|sup&LK{yi%rw`Me&{-Kc7dok<82~ta}Cl{5MBS*># zvL2ZNEH*ix01?Hqs{jBO*u%(N=*s3u46bIb*H{%c+Y;ZtuYh#)ZM0Adh)aC|MUQC$ zrTdpBst=1T^u{Dm6iQwG9pbmNC4#g0{oo^cXFDV~lDr@!5nTKg^o(@;jEUX0&n%pu zDd4leeRe^}BZwa<4U(lR7f|B9;T%RH@J}ec8#2%ejkGwr8Uj#}mbcm2kAOyPUd7wn zcF0JQmcgNPjkoLZFLLTdGFaWA5~n+HDG*v{*vs=W$*l_%c*{eT71#2H3bsNS=ZQqt zT+*a_zLY-by5A>VskxHC*f4+Ipa=kpHm`9&p-kykAUOV6TYUjA6BqQFf>Jl$W{t0$ z!WA_uW`;z6+%>8vYETCZl5tI`0|(SPbLd2XLB|sS*Eo*5&b@V;Tjw>ERhpP0M@C8% z2U7%OAk0d0Y9V_eVjTz~LG=9RD*+YY$ge_E%9H;hfO*tfi`<%grS=g?dah&%)A z>-_W@30*E_6EIuJ2bL{k9yzJmM}AK!?0nid?HlB$abEk~DVBuQ1IEW>c?K8&fVNnD zsU*16&7ri4P5+gY9eFXCleb|4qa9E6F|Tz1?<;*n>pfe=U?LEP=AM*|9VCbyu9E?j zgY0xqAVt&?#&ZtkFFCrM)bK6T8)SLZGFPixkzcw_`+k)CeI(J}o2E*+x=SANY{Ti1 zUQUHNaz<}l8A2wsNCFOd;DT~ZV^<7`nkEID|Gkg1cOMz71&2@3=#bCWhfIsh8mOBK zYxVdJUER!}I!bjHN#@(A zLOD!8-bQtAB^Rh;IsXE&^fBc?^W%h*(U{bzKvnX0~84ty^I#mq}iH}~E!%4W0 z!j^-vK_-O-8jxc{A}(G4AKB#cBBHlQPL@Q&ohN(22R0|pIt+Ouf~yj67+|A<(1G>v zPZNB}T*9QPS`OOl@c3y%$|ZW(NoFVEAMw#D4p|`fXwFeBs84-I1zBEsWeFl10GHtfDqN1jDQ3|- z<_@-|z2JMv(SpqWjWf&`q*IKsAXi>tKzEfKHy^}qQC)s6nF=jx4U89|jUK&A8}d)gwz1$7OeQKR({!&CXk!=}sh zJpoyaBT;}L??VS{Hw^ITT(4=gbjt2F1VNu+63&~UBo&BB3+vN z@OaMZxJ$G$zI@G;qR!s)))mw~Gk56BxwdhE9UbjI)^`;Di_=0fBk<@%=&nVjaV}(qt7CRGOeD z!Kckj9h7JxANR}y8lp`H0EeLH?0L$7GHh`&vo73-)sv<>(cyBt1+wD@zsOP2jm65X zsR5HfJm>28cCv(IGSrtGbVsU%F}2xJ@)*UD`1!zWuFzTKlW8Djb>$IdZ*^Q8HB-8l z1Uw!rJQ<%25Ogo@MQeV9!JzxrvHpW-85&~J2bWL+HkKM{h{ND+d^ZiQ+BN8C)8@J8 zkg^%P*0F=_y1~L7kfm{_lqt@^ef;3)=)r`T4~=GE^n>Eo1p1_G#grfEPNGchjXo`` zcY*=%Sv*uq0evIMtMoyGoMscvba4C~1Kd&|Jrm3pLWb95$SUD?gpq??-$qHbvisAF zxr3IynEazeW1;73w`~@vKpackckSkV`vIYRvUbJ`CPmq>4EoM6f?&~y%mj+K7dc@= zQ)b9r=wJ6CCm2L0%9(&cbPPQ3GPDLyTSF#U&O4nEe9Vyi7x1 zKPW;XP8?F_h_u|KvmN_eP?czcpt=+Wm;em1d#!*}@`~iZo(5Ne1Ii;kG62AUhH<^d z7oxx{;SyyLrR_LAW8%=(R+y9necBo!Ewk|CIp7P`fBeCM%D(I;KQg?FTu(kTLsvs$ zTA>_)klv|>9@^2`YUpBs2IX$R$joD#xP)^2$`!eSPSOIxUXXbv zXHb!K0CJ>gKgwtDcXUjMmNOdbcvnh56ynZu*u&zIdqC19JH|+*a zEW?4ui<3iA?i3{^Q|gdwM3`53evBAUq+whf=ckZR{#!+2yNVNRN$L`TreIhZri0UW z8MaYJ@aIB!c`UjD4#{GY1@u4vgDT(n2L#{NqyAu&9PGXPfqh&Q>t}Zv@kA6{5x`B- z`jIDLk$b0bH9i2`Py?7yvGSL2BZMYTGP3cFbm67-+0HZ7AEufSTSsVp~+`QrV#!yhj_%9SObGnPt(jYr@Vnkywg!TzL zNSO>HFAy=2v%=4C911JnVp##3$TjHGc$imMULRS@#BneQKO|uT$vB%zBRU3>QJ)uB z7%qYn#_jser54#eI1%hHMb2geTHp;ev#n6FRyJynv>> zA~G*E4+k@vNi?TPE-k?*jL&CdBG|S_HxPHKbS=l#BRU4?6sPv%}r@8Il**cff-k{RWKODZlBT`6b->pME+2`)~tI{Uh% zI+ z-{~^vFsD&>mW@(UV~;lgD3MDuR!V%{V{(HAT|*DNaHvcafY`Z&K;R#KVIq@u%CVwQ z*qj_rBEdMX7^4;YwapmcLs z{hA@34Mw-`JO2t{Uf@El;{c&xUZ0x5M!JWs(clf!-^g#lus2IXw(kGWb9h`7X>nzQ?(VvAVpNxT-e{Oz8 z5s1aiPeL6+!Cy|?zeCQJP)svn|Oqhu=W>%Vhm9jb_9n#ZH5BgTd>%$ zfp{WP36ubmYQfOLA~HC-G1gigVloj902cNGwV@WoVu3z}VJHY;ZYzi2(h7Y2!T`#Z zFYPm6))WL6XbuLd|HfF9?#Ys*1*B}ThxP$QhnHVy!LpvKvY}?OYPe{ZTH%3PC_GwY zyNVOcWMKjz2K}lMcvV~lcdlDDpMmSaLMXbRaudz1kvL#6wPqTIcL7Srm&$9R^8nbn z9cp5Q2MR|{MC5?kq_xH~7E=+*OOo=%3{q1O0kN;dEX_(gf&aT*1fK!Wz$Bp3dN2!1 zC0kB`G%=uOor!__fXBGaCEAmNKsIu9!_NJLir>d=&=12_AHWYEav?c z!6}~{XTJQiwgxX=DUi<2-4KG}<0LI|nb8AF07ZwjG9Br=WRL(Xiwr^ugqbEDWQy`S zpTJz3W``YVKo)MO0^RZjB_=pHKuT)3K-73gc_a7?3?*T)&5^OdT%8wr5+bPys?nW_ zS(A5kW-=BUjcqfF!~y`?5nK!{y*4a%d~DceqvhBaUmUrRH`y|m^1mPhvivjv;c*{^ zCCRu$710q%6owOL6;RNuNGw?9hVhjh6%LO;iwwBx|rD7Di*HbSujHp5b)k`iQMld zUa2z9HJl{RfC0vRh~)#xml!!uXg@0ea-Au!M?^}(a{`nD>Rq};ksqfvNVf~`^hZb; zj@Uc$&5eDkIv_SBPY?7JrzEB&m=FNHfP)S+Rk4r3h*MmUOd@~|LypF=f%hf|X#one z7=%)k{8LyZWvYc}OS`se>MS(y#0Y&jP)R+Fh@ONMl8Drjai~$T*e=Tz=R3}lB}v6;b2iFD6x^S-G=wS? zKhnyhVxz-^PWX_)SZk<0 zQ$~JJ@6C6PM;eyi(BxER@g!-Xpo;AX$-ZrvL_XGn~s=t6%k;8A$ov6)` z*!IZki9jt0RxW;BzXLQNf<%l z(A9Obib6YK4k>f}f{-Iird&o1m{LFR&lpS~)PekoZHUTjfs|f{!?P|j3JEDB(oc82 zIp0gIvv zdz#5H_De#uVW!AZQAAfDqnLn@Le^Dtywh_O+>T1NPed&;JMibDOzV6xgqe2<>1^?b z5TKzbNRx>`NpdI?=6UV{A=F^hH%yjjiNr!O~jT^bQvB+dI1m{BH6%Z2}+$Tn} z%6YdEgo!#YQ4kIr_(m_n(J|GQD0i4c0F&rvj`_WLpBCl>DC?4|?E$(0GRAUQZw86! ziU7pu0K_=`Yv(;*>H`VBwM^yDng+9}2`984>fGw?{ff6@ss4drCHD2ee)Bwr%K=2cHW z3NieOy+UA?OSck1D51j`fK9MFUt}^|zZ6gR7NfDGv*10s(W-7P4sU#K@N<~M^Jz*T zFN#l>mQ7ur(XYl1Zh$`))D#aR#Musu*&A5#CzSdUqDt68xD~a61bgDpV&lQEW`yQ~ zaPyqud@l*a7zD!L4KxlsM=!8a{;R=VF+~S4qnaPRWB?KF6k?py`fEo^%yQ3>kb+f9 zKV~m6#qS9j%Ap6rqY)y*($!Bm4PIltJknJxVh@9nOft2R)2Y+J{0t9cWNT}3z?1L2 zZ~Z&vl7jfWH27<%QwJ-;IC7E-i^1*ysWiwUTEzO)NU%?Ds-g_lRzZytlCud}CV{mv*U@(B~f^fUyNmuAdmva_fK6Za%b5{Qs+wcl#NL84ZY zy_)*q0RYnnAw~?Iq#~(9BY~>h3IgtV028G4CDKZS;(dby&%oga=u=E#jJRp|G(hTa z)%EF`V!H`(6&|6*cou3HmUG9bUJ|sGhEr4I3b<-voY8r)($kL{b5;tbx>0U$Vqj z1{Fx4nH5E7Dhw9-ge{BudWSSj7zmQVfjJzc&^;`n<7%8(4Kq+f`_zR7*Yc29jtBnDA)q$#2`S6) zq74VXt>=zzUZ7EvoynvdXGlQju4Z|z;A<;K+`=E&T#@>kTewxz2U&1#n|Q+^JiR_$$x>;>B1aTa{dAX za#B%)kXD11>Tza?VCN32jr=Er(ewq^b8=VXk ze>md~q)xSg%e(1@f||3yZbb|}(2%x+pMyXR`v#s?h2R>5$Shb$$f%*C8LzF91ecLu zh9Qwsv)wMAhPe!wJBV05F@WbPgKO^NEif)CCE4hzx+ND&nZR+5Dw>-P4&LA(L_V;l zcl{-hkTN;2HQ;*?lqv^f6p+-5$DV=d4U`B1R}LsnUiX+!1GitW99o8!NfbPmj+J zyAr9nW_}19aNuAMXqy@w34r_2EGMNvecvHNJd!U2vn{i5Gu!{*|4D?d8hKb{uZ6-X zAR&*+4s+Vat`qWuGGc&s2AkBz0Z(aik3rd>!`V)dUrIzbwrdiOOQx3S|9Bad=hsir zMwd!B3#PuohO{95qw}=#f0J!$_r46;_ko{#97yG0YI*aFb(gAHsv9Ijav22`yAFCl zz$v^5*6gvC;c6o>zQZ{CD%IWS2b{8ro#x2LY$P-%e6$;!ApGbMy=xz@J5W#qq@yPV z%3PC&0K|9#Zpsn z@&{&BgX{XOaM6Y0_Na6XGRYAbP^&-$Q^qfhEu1{Y4AS(y2%O?XVZc+xxW}3IY`ueO zFQPVELV-Dm4~6U*Ex@u*0lf|&pc@^ynhE+Z2Po){O+oW9He~K0rwB*-nUlC}g6yi$ z`tlLwgZdN$ChMWpbyNx1Vrh7_gD))T7AV1(tVk_j-=}DakYc63T8{=%j{(m)9@=nd zGTDL$Rm9(ZF_*g80F+{FE-pUnrD=I7gH%o#aeY)Dw^?Er?I0c#fb1AemSr^<9+J!y z$PI{LHK#{l!oa@@;hlp5yEgVPHDPfqNINqD6fn#W{n5oNk(z8m^RN!*Ex8mUCa`PE z+m34vU30a~YP$f`B~C;~d14s+QLHG+FCfSeL>F=t24Uy+&{kO>K8q$yI| z>>>hWe_t`0vhw%J7&B6Sr+>t(0=O>Npf!^fNTu}hD09;W8yjghBf_Z()c~wEHLx%> z5_AI(;JICDk#``LME9fy7mz~bf9IEtIO}UjpG^1VN|71ttJHNZXa|UoD+z$lK?^@# z&u661!b#9r7M`w|U^x))LqR;iTlJz_jYkee@@#v5S5|xIqPcM7P#->Pup#{79P$X7 zKIa}x^HxeW7NR+@jIJ(9C#?mE%2B#xIQ%-?94W5v=ry(IPE1?Gv_QI@#D&hbOCSTnLK~wVZ$^(GXqEK>? zD2+a_BOi93+oNCq>kK~8*MkW}u;Hpn)n-n@36jL12rilT>!?WZ zf4E%&z?bkTY2gTvdfL~35($00=Cuje?|sNC(9n;O1S3}s`zBsQp)!52fe#;67mN*b zX4sZ8IQoc3ll>H;LGdYJg=WsaplU|PeolBT zg*YRa@In)`Sruk)`h?){Ge{9)fRSWt_%PM3fSEb`5L)~D+DJbKH~@>DHqL_?W_g@s z^Km?44e`h}h%X4i@u=45(tas@Zxy)v$6&j(JHaz#L+@c__=4+#A}Ha>=+d*t&Byz1 z)io}}7^_q(3c?Ig>2>_Y*@urfZ|i1D&u2Vw5!W#viNP9FnZ@4H#BN3ivLulrMuu*Y zt0PdV8U{l7N?5v40v@i5QPD1eX7p5gAc*KTJ>)BJKJ>~Yau75%wd5iiyK|jowt~3c z?o_(Hv!0bJ-O}1aZz~Zdko7>YfNF7sVAwz~TCV`6YBN}-38?1P7hMPx<#rX^h{b}kYDGlde8IDLz^;YS50 zW1$fs;TcB98d6CTgS{B>@g$YlLCV>1WbQqWFuc{54t2nk)F1-9%XJmkuAgEaHHARU zYJsbL;%-Lj12G{d=yr6EnljJIsO3VW+i7VKPL&)B(bh^9F&1d-WwP)9uEgnOm#bQ| zjjk4};-|vmo|mn>O7n<3QUPOR6R{0fOOh-9>5SV0iPLJrSU$1^-(8!XZzfP4hMD?x zq4S(3&&J(Ysg>QBeCUQn)5La_k*WD02I7*FVgh8=vccl$rf^zYEew)XR*|8KC}biX zY2`?w@brR;JM%vjVU6>cyj!;j-uNQZ$MNAmD*HK!3? z=4QSJDu6I+6fPZkh2oK|W?ThC`3PuEu{$@@%7ljsqADtg!v&;6*gz8OmX&~_)f)Xr}&e!%Tm6OKVpF_{#}L8 zAxs$0t0JtF0UIve=G9tlRj#!H7WjSLWJnSb4GFGt_-Hg{l5-nXgIYevwKxY#qk9VL;^P5 z-!_bF(FFj)^+uA!WLxmpjFkYN0rE1BB|+ki6l=h;J#C3biH-Qw7aDe*)40#bWYK7e z$Be*6MK8&d+9VTfcouruZ$;Y&!=pq`@L{3OWymWCkXw!@ahLp8wLiK;yfjhj%nHRM z^SO!%)__O_CwL8d?`yiV4l6AdBWz$riQ6oU0vY$2G07mpf%!v_rsJ&|<;S96k{Q-u z)*6!(mSy_K-hrKlztSD>JcnF7HI4nPq|&wfsoWE4YwDaBB$A_moR`|F)N&S=B%Ymg z05}6XV_dfXm^1UBO6V-xj0Cb+|0c47Z-dS@fKjnij3MexfIEEp4{JOx$<;`nXQ7+(Uz5HTp!?0__Q$R>n zr%XT!oJ+2NTtncRHmDUs0NV%~H~%aGb&`lkx1xf`vWDTck16D?&9EP@Fh3uBu zpcr|Q*$bzX83RzJg{2fcJPYAZY&>X3WwGl3oPZN}unZNnd{M-P0ZM(9{@nqAC%9XW zHlvg*!AJA|@{(b%0@fhaRRY>5QXfi0z&VI;L0b?K1GU}>G*e>}Kx5ve4#?rn(36L3 zrrLq5Pf=Rs;WY3lz-1D=keG>;7mzoa<~Oj@Lwu31ND)4gA!1~@_ri$okx_7dl3YQ8 zN+gmqHG}U8k>yN;0Sd5cwf~f(P*gND5CO|(G>GAtfe5jtdRRb+xl9y74M1?^woslk zK_|tAQJ2|VT;yIxJheMAo{ODKsUD{!Aub^#iwHQ9#plKXfyGDs10wVcs07uO0a^86 z7Tmg=)jc4TVb1F&!{ZJNc0d?-c+QAfmN0P29)3SO3Hj_nITjCNC-W!J462#*2pVQl zPD54)6y18j>{1ff1D-G&hJN_3?<7tVsU<-WKfkwC# zv|=b84cUTaXKQq*ypu{hFM=19=D*NqUG(J1tRkG89%|x2CI}jRm)EHJYU;dtpfdr53PwrnAM*Tz`0gm7vCT`f46FM@c7i1Cr#29M#2)9z&LU|W0 z-Y3{5OkPL}(*!OK$0H_4a?0EVh7KlY~Pfzo4EyILc81INeV{#alCs<)3Mp+y>#8Es@Hz5z6&5r#=%x0k!Qa-|>=EHZA zcVsv0gq*Fhk@3jd$RUHsgOJ$8%9)x!ZM(`hEKubz`Qkv(h0eBXgm zs9`J|G3*RvYEIh?L0$lM3DSKLdBoVj6N5et0A)a$zlm6-R$kLUHzdea%2oymA-0w- ztyCA{0MNwBJ$OiLD6UKcNxZ(BOjqWohvoMqcKZm2>o{AGjK2`T`WNQntQSrJ+5S$< zeoo1ZCkk>X>VaN)2z1nE>uA{K)wN@2=;s;f-IL>igdRvxTSvoW9ykNyIsgm!o`TH# z%t){ya~Jm)!9l#lsAL7gan~W;CMM;Y5!Z5XiIYsB1y{mgrUUUp+5d{;wW8qw@!D4} z3V}#!xCazFe0h@l*j*CrPX#ez6sC|>Qr_G3Ku?|R zTx(l20+B@k*q$T@+zWU&7|0;w?jjRPvHQGgnz^=8L4nh3AW0yoU9`%Y+B4hEfQewM zbOT`pb78diGwda(yK`AxmV6i&(O{n)J#jt+bVj8&NHX|aA5@~a2J0vbe_B9WZ9Q6_ zq_PZ$3b^%>K}cY06q#^x@T8Jzkzjehy*w+P%tu92a2k`3NXFNlCx|LreJtzoI(VI>WY*V9mz3(n#h1O7koe*{x?h74Z~~;)m1^|d zXxlc1x%C^j8&6ra_w4Fk(@E_C;POTT<|0pyV0mw=0YSSwI_REQ$HMIYVR)_!9^;7m ztYECdP~vf5@L$UDnF0kDX@tQxOpaFJAGd+oRKTfloD#L6r~q*hZ;w8`*okc?%sX#? zfv}jtv@I!Gt%zqc7hg3ZW7R$5t_z-=Rf&ma(d14@5}BCO-)UVkf*4y`5wPSMe2y>92CzerH2A9O-Ye@UvjT9G&{}~TX$=fwg*fUH z)&d*8W*9h79#tqf^UQ<8lhOhWzBD5v$pBc0l{q#n29Tkx>U==M3VzPRrT8($OlbA4 zuMA`n{Jm4d3J=QMbgDXAlQ_Gxh7_kn*%R@C@V;_0jEft{C+)`y2Em16#u|`F2h+;3 zSKKo3Y%^?Rc4jQAX&{68;gwYQXTzS>8jmTLdIH+G8yk5!wvF%TGzCTsCO4 z=(bcaTUbfK0s;q&JNsM;fZ(K25~OkVc@%SCwn8!owK}r?5;PA=F|Q=Tfz|vY0RZsz za<0hET{Kju_I-|u%g32Rrlaf)I)p76!gatV1Uw)_mRPxjoCtrjq}j*bM7Vsp!`@8a zvOv999hl3TMFOC;O$TP~FaR@nY+}ius3rYr11$Ot)(2no4Wq%Q*9Gz9g-aD;^^(!6 zB)CA{uunK@ZZIIMx0G>_PQvmBQHCRk)oisT>k(hO`i;OQX#_026amc{f%hwt z(m2;olE~Z@r0u6K8G+VV)OyMaM-!qV(%n@)%D_mFaA1@Kk6)}XB#l%?qyUNvf(
c_rNI+Pj0kg6wnDQl1s?5FsW-LwE@Vk&6Kfpi8zyjpC{*5y3 zxKFk|{i<99frG0Dk)lF>9l2H-6%Y{#nmH2A2-%q3y|SGY#_f-|5)J(jUF*>UB&>BN zS07SZy}^W_LdlvVu#lRC=}mMnNeTmm5z|4|;=njqM{k?TsbW)T9ze4Jy5Pd#;2ndW`lwfoG`0W0IA=FY982^12x#fpnMZj2h+`X=^zpt zATHyTC;?a{$2|OxQPw6;07ZErKn4B-W*LBXVoP8c$Xr-7&VB<6-&m$*d@=ZbFwZpq z3xW}tjnInc!7@e-q@?y_!7N0tRm0hO38E}89RLvsNex3$fFL(es~wL(G1r6i*Sp17 z?0Prj!>0#;53Jh8a+p^N&__T|__YUZb?7A<0xduq2nObP9EN30=2c5l1cR9Ym(yO0 z4uTKUU(7tq>9058J2FAy>#N84x!R^=jG8ZoADx0CNDMwY7WBYnwNqFv%os?k0qH@# zr$8zlqQG8iN2Gc}3vpOIbM#7<^UH=*?ilAm(7+&4PEEPQ3F-ly^dlUVnlQ(YM>81r z8f%zbtsEqn`3FFsH=Y?IlQw{WsmjVY_Zj7;I0kyiNRqXQ1C)5 ziCs2>6x68A(PqPil~!8K={qH3)0NK*EH5RFTH%{Tpi${+4=!#^K@meh;J*mbD$pap z;IIX)n~TQe@P&WVjSV>Gp;??9K4aBJz~6ze{Ts{%Vq=2L7)p@|>`lmogp>w7G5$cJ z{vM8Ko@5FfjK>9$%rRo&;%g|YBE^H7AASQ`*k^E@(Y7H-iv@sM8zR0pCWj~!G1S4+ zoUj`BKS*pEZ@ZXQ0u2pnLwE|EX~RL>>`+%BqBT&W04q#{unlCM^r;k1YY`Ill=|qA ziG>m>Z-j*Fqv6RONRb~A=vfV*qTx$0kQi{3(ldSGCA)BM;jRytq}xsj$vr(>83vdu z08pmKV26z6%F30r1`-=3>2Xsm;}k*Ia5@+IM5Yc3dr1XAh$>TI zWVy0P>E6QVu<+^aY+g1!f?(mWy@}$>*~B+hHrLo$ZhZ845hDh-G!BhFj6g#9Fm7bN zqND)AA|n|Xv+@K{x~BTb6XgYz@-os*adde6fgSyPDFTr;PXQU%wl5_N!WtXEMrbsb zXW=wA^1u^`x+x0D;3DvbtcRdH1YR{XH^Eh`4h&nm3qi-oaigz5FB^B2DQFiZ5r#m2C)Nq-J&;dW9enfwfu34jYl>a z|Ku~ksSzCWi!mTx-x7{$ey@NfAT06?5m6={&Y_K9n#%WNC^W*XFAX6H4%JMQj2(v- z95-#I7_gR14WSE}V(0}Y^vOK6Ho?UyLMRai7#)erTG5ydYHkx&l>-I0vzo9YQ|Uw5 zW%cbXM;Yl9+W7Pv01y-^*xRn^AT7r&AWJBY5f2%8h5=hYDJ+2$SYjBc0p*lPL_?Hb z0Kh0{hD3#`oH7sC-A|&1F1Nlc7)9ie^)x0+ULp{i2S6BEEKK;D%i_U@6ik71w8WQ} zLReKZ>EDjzBXCkz4HwIVe!0e=PuGgrxjA!e=m%Xe5Smy7TXf3>v-XS{p8kH*!IA@C!1aI?3q>K^->9{8y% zjq`pxyru5<9hh&&IK@MsCK;k3_-49)B7Q8PgOxHu3|)#vdMw-7B!>hoxQdVr&F%b= z>5Y0)?X<#|&g3n0uFBoivlY`i;Bs&>h_~KA7&l9}D$TowSQd3Zx>4 zEQfv&5doU6!1)P33zHY+)dm%1Rs&@wk4@RxtfMe{<_sd4kW7RC#QF`0)Vu^SAOrA( z1PLw}Fy~xpI8kfjh2G(_JgLEs^o@7CyL&kGGY>)>mCz%w83g;JW+G#~AqsxgaF7b1Td*QsN~i)FdhaOB(BH-kQD!VW26h} z=-I66IWJK!LMD15^v`_-}tG@DNMqJf$cxAtCxixvb`s%qdD?a;@ z>&1Jh1S^vPknT+Apw<4lG9q^%5i*F?5=~kf7{Fgsp@o>PK;I+zG9bNM2y2tWg<)7l zVl6bFdt6M5Y8R`KOIA_0=vFJcGKd#sXDFpbKN}9!^>Sb~;%EmGj0V?R9ahWTtyXx=Md8Mu0k!WkVqbO_+A{QdlpdWTg=D4CHM%I1*Pc8cBjfb&C~NJ*RF?7-1ldYQt!g zMAa-<&4+}_oqLpjc_y6T*0G~Bu?i%0l1Onu zb=NimM7zyIj*wZTjTxn%kckn`Dh0O%@qD`>i4y7%oyB4nS%{_0EC?$!A7&F80TKmV z&OqS=R}8?&J!jzXch0 zP^Q$G4Y_Pn8vZdLmx7b7h+cc8ZP2*Ey5loeDo2kcD7^6ylK$j}A@e~^ifqe*D2o7h zB?OsU=Tp-B0X5o;8-;_zYWhMULvSU2wN%1Nq#P`UWVW;KV>keMlBAr`&Mgt|Z!^asg6^^8s7*<46c#Ho_YiRclwjR~-?TW@HWTnUrTkn!Ls=WD{famx%Ql ze7HoLR-EL;;Q@r*Hk_LSjOP=t&FIY+v!5Rt#GuUO;`nY{B10?iaDwxuKxK=^(Yc;Q&%=GQn`fHqQdeWuT${ zAsQeI9W23YuvQ}+f6D@bAPgNW!EB&bBgv5g4wsM%U)dlPLo>+{nh2D_gAB@C#{mf{ zh-`%N84h7&I7nH24=@eF;cV{LTGe5eWV?a49u1J@NrxH8rq6?@G#P3BkJ0@Z00b_*9|su-)2b;^ zE2Why)kmhDtwoP8@`t$n^}(MW2ztH^j0mbH29V|a(xs@Oi|jR#hj`_cKhPLYg*`)s z!g#!AKb)snzB`sRs3>FMWVpn1G=J18nFaLlfZqsrf5V z-KS5egBLU*Tq^_`FS3~Trgsu++Zq8EDdDO_7~-yq809)BBc?o$9EeN@215j-el38^ zvr23pkaC_29gv8>^|abg8D6z)ditRiK{jd(BGgugs~d)&@B3Sh-;t$oiAihxuy8P{ zg5@zGlSK}^h5})^GG}(uGXTqto^0+EG7L5P4hVp0DMi%BkTYn5}I01F*h!bcJ& zW2QYSR00`akmU&~qA<$*yED1!06eVDSL`Mv)EN_J2DA|B9odmKGWd_@G5)fP? zjet7#pznx{DALO$8C*QbD5^^JkfM;2WnsTKGKg&5W?!9i zW(#&*!vtxDB!daC@Mb<~1~3q{%2KhW6CrcJxnPnqUX_Pm=mEw7`C~hjB{B{MNfB_4 zMQA3XD-OOR^^`n&Ah$f0y#?VY01_h<;o(We0A3e^1Ez9F;lB`7(sL-2un7`#3c8Ce z{l&oJE8jRsP;;q8?aGu5(CG?JjwySV09HD^^4eo4R2p!d_W~2X4o<>Ei5wHQBgY`m zM2^Np+;bwxVSWY(Bn+8uMK;Q{kAdJ?0s;genvPvXWYj3yLLW&g_XfS1W=*4U$ zsdIS0ak$W!9Dy^NAN3%0C}_^}U~Q99fRN`pNC3jP(L?}akw6cmTlB=aHoY|u-m5`E zITzu-`6DF|xOOZ;$8`m>Qvt@t>xiTPkX9kcQ*XSpjWDsW=sq1Fxi_*rPUP_{OL}c&aJR~>(k?- zdqalIHP3wz=x%8Y7QyV7LQ!lG$SQI}~&En?jNq%lAT@emmTd}6=W zQtRdom7OfPe0YkI7W*M*3*Y`}v5{eMb6CP+E_sV`1y~j45Ab_hdB?AEt|G>})sb)) zTac9%R{!B@+k9j(6Y&(Nok%;uD$^!3lrtiIKq{7-F7fzJ#o(T>t^w=baH(_rr$*GI zM%-Sm-UY393><|q3E13W;?$U1tdc7AsPO4h(qkhHAal*6q%?~IM)+`Ip;Ea9Lfa&S zsRsxP01jJBRXlpHV}6UF7IT!e=W?XEe%Xmt)KS`cW*Jb@>nlWt6l1dX3JtEwc45%JlKR44WdboP%c{*w{N+*OmGhNV zNV~>~T_i+k5p2GIq41G3ncdzkLmTX%$yT^FY#aKSMY0iJrz;#EUZ!CO3d+JrkslRf z9_ym2qiD=C0)~-!v+uyD=&uW^GzBYqzJ!4iM2Pr_7mkA(M@Cd>BT^z9PcoQb0TvD! zX*byB3L>}4p7W_fu-XRsv!@pVHX)k0&Sz8SkpkNjm0(A=CSQg*>6nr1~rD zuvR&4h|?VbCu;?25cZ-69i)W$mx;vzdw5xMSqsKRtTYUSVo=2CL&O6Y`XN_WR5^r? zKxg$~kFbWdry}t_$Pin~-p<=X?jDzP3 z3+YG;WP1{uqB}x87YpL{lV;0+xYg4VSbs7auQ)`V0rKi{aC_lpa6@rb3#=Y^FH~4` zN*_a{xUx8*&K%SNaNt9fIV7@Q7-2AQy?jyy9v%gYzI+IDNREr;@k#)NC%2K-QYlLN zYXQxUI26fjx6L}dng)gOgJR7LiEktg@Zhqmp~)Ic6{wUL%5DfOL!JA1G2$^3i$=xH z(UFeE1KyZH2E?+~#*37K1+4+a$cqU-pNSLD=wK^}Q+y!XcqRRHEGb?Adi99j@Meo| z_>er@f&SrfNH5f`D32eaqTNDO`$GSVDog+F2S50NI6dF^h4qgd3{xrH*fUZlT zR7RoTxy&ST(ebE){bDd8yjr9eZ5DHIn$2k~|K>9phzJXI0HRjPkt?NC(1vr2=G{7- z9x;d}^H=DtcM|(l;5t?bL3cDCRB$_O$1(poP_Hy5nB$72VnGP?PXHC>t5!@zapiOw zIp~f5RT|??BI-1eR&;%0z!+LG7L-{ z$^!*{ez9rj(;FJgC`ib`Y>PFHc75UDRFounbpvw{ zDi_N7qnVbYs#ieVP`D9R3=yX_&+4@fvE%Z4`8N%qjtFQWs&5(>Kv0Qz2Jp+ZTR#f{ zI*ty2w|#uKFBnh+m$*I$SJ@PyKy8O61&}`s2LzWm6b_1ZWKhvb03x(6Duo*mwJJd& z_8J`+L~#c{8Gp2}_&y0DL~KUFG@9Q$lta{ExeF+g*|b)jF-XJ&umceiIdjhZCiQEt zp3oZx?@b*IVLZl>-yy`-7$(BCN{$qjXUSoa{3LkDEkpgg+Y{&=ukwlf{BR@1W2mfI z7>p*;XeH3#R%wTT(1H+MR7Jdd*-y|+u(k*v&q(y}=DL_WI5_CG=HmHmw}f5|W&C-K zp|BBQR4&~-Mib2*lpT;DZpK$m1YmzO6m$z?vxlH$z%ayMM{)&vy9Lm|_#7%0R~O!9 z9t)gps9Q^{Dg)6QjO06~-z&AL#M3JxU`a8c62)^@a2l2vyJM^icm9r9m*u|4|mE3Q?6 zc+ErsBc3Z;MApHKmWi!^uC%%Q)Ol=x8igvHF{-Z6fcUrt05t$F`$1+MR|Wa?a`vDR z-C*6Sz~wqE9`5ah1ffBvx+s(7ZBwU#_=xpOiL~msZ`T%3l)lHGw3(_OMUgZEMPniM zK~lGfc$gn^;CXdmwuA$j=e3Ey`5eQs&Hg*ndD_ zpsSmS0g+6AThbSyAFEG7pFx1g6N=K&7aMX#ITN(Nes*L$J3Bqa7I(^OEbG0L>M8N8 zt|Gs6Vj)ZqzP+2wGrM!)W>Tt)u(cSx$<+CuljB5X&9D@7cIUy*;IpbB5SC1VoBj@E zbLhp6v?s!TH!`+JVR!I0|8=C$->N+F?G83bN7BlH#Fu#F~)DrHWJ zk+(WH%H^QeWO;{2mKVH8>Ku{dkyrwV{y1MNhI&e#Qz+Z6NI*T!0J5{nbK|zx{lE@3 z9Q#r&1aJeTyI2U*g#2J>;w{4 zn`t=M-ij$1gATds6dzw-fH&oftH6Hw=w(L6xC)#fSJ~f=BtRJ$A5#GgC^@HS=k?4b zNsNMdyD+1$L>^6IYyL~yHJeDBL4tx@!6G`}k%gz0#DaPtxe!nGzyd)8fMq(5v zg6Ux>ehWg+3E&6-C~LQsj*-Cf`>G$HaIfoB_#8K{TSIdmL`GBc42)bAKlzeP0MVlo zxhPM+lu1!55`Z$?n95M$gVQGpL4Kv*mV~Hs13j|@l`&y7c8aeUz^e@W~QWs*p9@2mA*v;nZwepdeaIErlz(rfqpxsO$dU4kW4_F zKm<7r%ycIHF2xKOOyI*~L2)RN2G45kvWGA9xFniuO(r!}ekXf=1%PqKL&emFw0Ib8!WWB?fGy2VvV@vkSX2l=Kmc)$k;ux?%aGjd zFGC$8m$jfhD4j|>fLUKUn96)PZ%VIR(yBaGQrp+4pk~1WjgA-GLm!c`!YVMmkz`%I zoR*4gy?!l0cH2uZAAzF1TZksd7W{*)=C_@hC=UZE6$4HfR{zQ_qSVOT2#~n&v`FNT zumUJ#kheE(7>pFKeJLhtl98`fj$Fpj?tN6cqccCbptV zN6G)8P3bMFLdtr=Md<@a|CR1?f^5P;$Esl_V$fBKz|LL@UuScZVt8N?w=l;AV6>Ma z*oQV35oO?J7h!rdlxUb|1+`~#6INZ$z1G457$z^&$On924mnj^HibP1CIVpeAO)%I zal$||0St<_8f&c?B%~4+Hnr;1VW!-ecvcYf=9*;WDrH0_m68BJeLW|70YDrd-2p^@ zwE`dl7>M`^WC4ZizoewvbS7;Pt1@FQhLDwSIxjO08}A> zSc=eBk%(+PBLK^fVl6a)72a0dumvJR2ccy|A2EQD4MspQXj>H+2jOu5Ag#%gZ?7V_ zMkGkav@0_r)oXLMgBE6dvIDC^k{T;`Lcv!X#Md%h(b8HW5Az*>*rU8GlB6xfXd#w> zFXgsuRtb^Tt0Oa2H+sQXOpZ%rvIBzSXbg$^aDyoYXd5AX0Mk(L#Y3r>1kxDiq{xS`{aNTn4wi%0>BcMXZKkV#%biA*q<7@;r;E^B$>C>{GL zD=gtF=#daJMubJ>J46v+#W<*~C@_2J#9we|?A8xzb3Y+wZmSO~vK60bV`l~{&TU^mGv3h9k;OG3ImE_uP=8woY- zRHHM4LLRk14zH2m#ddELMjVM#g29g}&mfIMSDUC^;)jm~iopBI67d0qS#BBiw(RJAQ~d^S`;uf34MQPt(sSNy3>-VVpQmToIypr7RZ&okg(ye#ZncnL>)k8&ERixODlB=T zQ-+^789nTXGBAsyF=CKt5W6~Hi+<0)uia}-$s1fiz|9d9LjG1(<)Lud2f#P;qYQ$3 za06RNt-7ZsPL|bG2Ir~wRR1_%y z$6^czdnQqHL!Tp)d^CYgu^f|S=jrm1-l;{gEzlWJ6pkY6+Vi7Ujw0X>qfL$l6xbjJ zQomq;A~%6v!#^lnNrgvtgLvWA(rm?!2coWlxiSq)=E%!Wa`%sSOY(5YNC*9yzdJE$ zM=Ans(L$sQF0ZHv@%(7p(<9InT0x2?X37NU40#;~;{_5>U@MXx5Bl@_@!yk^+bl)O z;m#b{n!@0GCTJs@AiDM_jcI039q3PLmz zof1yoPc9td?N!O&Q${&!P-(azd~?$QooLZ%4DI=Jc{3K4xt+L5%RyJJS|Af`ZB%V( z^#>3(s+~(z3qgVF7KeOAVA@=n5%Uh;}`I*d(p{x_lQ6WW8e{x@EJJ^12K`%sr zj-WV>hZfglR{6XbGTX|az4G)jWDb(bBvL~IKp2u&;ByK(?EgLXv zNFvaPB?uiejqn?i0U}SR_|x=ZE0%=7)FcXEN-RF{@Fk@=NkytDvcM=k>ug>ucc><{ z?}N!_Ri*&mGY=w1fKVQiifvI;wUYwLN}nGv>XH$ikEdIRRy{Td7)~ zzN{w?!2brM)?X1WH)c=v0`6 zy$w|DHcA)LZh@2xi?uyb7j{)z-Iu^;Mqg^PVyDw$Io$^Uwm_I3@`h1z5M-Gb75P^?TMLiZ7R3Z#(vZ2tZRdsYnZ*Gb0D)twy`M5*4@&(;} z;c(*`lh&*T$vPKk>xdsVW9?!g9INvj4+q{>aFCg|7Ia18J522c5($dY{qIo~ndU@X zYi`vpYQYXeNDuLF95nDHnHpqaSkui&J7K0=jgADRO<*;4T5S~lGA6sJHv?@(K0ihT zHO)w#5k-fhV$MWiu>uV+(x3*m#x4^*8X0J6QX@r@3<7HrwPI-#)KrfnQi4(28>KG; z!^m7Eoy|Hx2t_(E-NUlX0c2rVGtSlS=@)G4;KCVVtr>7fuN_Ke#ZKk)PDb53HDNA} z%*FPvFCSy=GT_piXKNUwlLYA@Ul-YePtzI*p@XRVbY$3LR0rg@2LUiv2hG>6z_n)% zi${neU^)ODUUV|GEu#F^id91nz zb%MRPrMXvLD-xX#7qn@&glWJUx2z@E1)5!=8ZsSh2Pomqo@pV;K%+;?DHU;JWF!MI zZkgc$^}+zM1>xlu*LWGiq6Y8C4-P&=73W7Tfycl?^GHr1=%8>-FoX1%at&IuchR;W zt7xDDF4a?)nMkz==m1qGXclUG^#q}fsH0P6FW3Y^14<$?);FcJ8aPw1kechO`{f^Y#l9~%?`dm>U0 zU?d=&a32ptIQyCrYz|C?C^Sr5w`SRMX0dAL8VtT5d75`r70%Vwgo~B+Kx%|Qp+HVv zO&6<9nMm`1K<`UI-xa(a(IXO`W7#YyjVkbx7npo#c3$UTqobfHo%Xo`3tFo#WFmo) zZ{2aZ;zq;)fx{WCiUO}ntZ`%(*T~pyRW}Vaou(Y3IvPoV$xu88){~+&_>W#E6u2Uo(8E(x zWR9Aw+{kP=$T=jAm{Fua(r5&5kRUC`r8A>D4$GK@B1H*FUs3KD8Z?;D6oaG!4MCP$ zA=Pe2--KxT1V=xhpUPS~0GJN}YYk2R;%#j2-3jH8{0s!K*h2&cooXj#-Q^-gzHmQWVyn`IoOvrftbjmhMx=@BT?xNc;x; z9#BmSxLYUu=f@nW0Y5uangtM=-x}z7oYk=#!)){s1f-SXr1*U0JD^FT)+0K0fXnr9 z%q2i#I%OIZ$sp*g<^l3X8na*Bskj5n3b)`LdkGb)x@dF`$=K(njOG(%fx|wh1upX# zUMUSUal?L~1bVn4qrECgyO#27LWl>!+&gWHbTtyTfQi-ZnMTomx6`+R#%kQF zNJdBtF)kp85-XhKfuPJFh!DMsVP3?e%EWp(UhI-vTD^rCgVH-Nq?UDT1Wtt23!zB9nu4o)dG`JzziW8kf<|j3JMOk z!qe)VMO!=`q-`!nFiVb=-yuyKSM9PR26$6r*6jVxr z2VvT3J?sus6;Ff_DQPH{2sxq6zzlv=B@(Nydnkb?V4$T5@bre<=Um1wkPWCpXh<6H zLKa5YA$WlmvqzTMq@eS|X>hu4eF)V;9(x7r7UjgZi>dYrYu@FerE)AB?Wk{l6;0cn z1ul_+myqr~_Yl6}__SCQ+wLk{5s3uUgNv#69-Ag@Smb{1y2oT>Ll>*q$+s?-?k*lH zw?y`+JaF$lv0&2*$j!lofrN3%ahkG7G zOI*KC5sobvs~&pK?M?I$zGbkqJm*k8LCd#uRJgU-6@y~Y`WM;nvWIX6TRySi+1-OT zsD3$jLFvJ;ac6>R62@#xNx4EjoNk&jY?@~n@w#^+EHjCotcU}2@;Ee>tiJna^f-T?@3mg~g5TL=c8!+8Q zq!b@N1}~PICgQ-H=@gv8lO=ENDRbQQ&7<7-%~MN)$4~oq%`oJYiI6hjXe^IpukY>G z;7^SW*H7`2UUn&AdQ>31F9*k}w}E_FdD-=55k4NV3aUxPOn@vBN@6jn+-MHFAQm<7 z&^nfYypCur@20}#Xe+=Ik(`9F+};B|At7b15Q$LKK)-v~0o?&{JBwWVYgc6K0Au=m zz>E;uV+@fVKhlq67orq8S%N)N>Ri&W@^^_r0|b}Jh1ROALgO3P2~JVuH22lYF_^gh zE?{qh0irO5lmNla2h)`#Tr8yX5j4r^L}Ga6Vdl<0XPZopjxwA-fWm15GKw}R854X@ zkC^D0bT4E_KrX5AmNy0nuLzT08z05n_6l6hHqT|U?Rr~EHcV2sf^e;=ibU|<;2g!FG% z!-`J^c*B5R@@K)Ao7Le=q31*y7$&($Sc+1?g#l+Cb5{r|r$(F!4yUv;vVS<7veThTt_n|;;^S&xaee;7~cp{h< z^HMhz#tW8$K~cxxG;lqgcgSTm&4kYe?gN=2TQP)8__#lo4ErtJCC#KV1{Sow zbEyYK$`>?BIoW247B{do`T$hdpkyixx?mYM3zB(=*%mNx7=vK-1^P-0BoR8&&J}!m z=R>KTlVgS_3#Rra~V&sGlH>^}4MC4FWbuHDW3OyFkdFs=X zfw+amh)sxpb6~p6RN5Yc_e6P~4g$K!%w~sHnxv1i0PuI=x{*@VD(!)bW+}!h`?nxR zofhAmCEwf-$8h;Mi>tnQ>5|dLRn~>!WMH(I*JKQ{J;%4XxvwwnrwL zD0(VP>WJ;q^H?b~=(rMT8m$iO--;S8IY~CYE-HGlF*tIVMaUA0DGJ0N$B7Z+@gh1e&o$;$`56HWUHJy&5{82^f%B35L2-uK>+K*R>X!>Z9P}@pO^y zSPY2~>ugR@ymPci^ZG?mju7Jx)28#1dqqL6+`4859dgpXVaFDRU2i?b}|nK@R}hWsgI#&lNe(P)FyAdQWym^NOWKh>9=Dh;YE30wIXFK%Zl^|C9*QRI`(yg44hZ&IzuPtwb0Zx}X93SvP~ME2j~o$GqI0a^=9n z03x;^xEiErk5{X}e29`YU{hp@Ty9u*QT~2b&7jJ%x1ZfmIJd}^m_{^B>|8D=ry+T( zuSrD(iJSC7$p!m%!dmbgOSDZ~{0R5N#9$`rtb$Fq4&?NTQ>=JH$%U*%P=tZdSEq!8 z57$DO6Xd#t>J25ceo|v|87x*7t8%tFV=gDHKfy~#emDgOz*KjP4-Jf4rcqX#sn**@DrWulA05u6F4Oay-Adbgw4L_RCoSPp5yjLyxardY(b4X3|Cg{a|1=0>RzoA0xU2 z8AL5r&(}ZaP#E{Zi4H2*e;h0dWXBvK8|Nh2EI3@}Yf(_ye2B1pxQIUA_Y>lZ0 z$m@&7;m`{?!@f3asSWG~kTXkG5psmAk$NdKpfbaXBoTLRvqB6Q{~+a35nM`OsX^u| zaI8=#R>AhWSRVo2yajF=bBU!CF7#immaT!aLfDMmO+&WHSqn@$9CbMWb=rio*$Rzh z3@UmnF?pe)YK8n+0}Rqr{Z;!?ScNoK**w=*fV#;>+J{hzvP;!~5Ebl3EMrOx!rIOz z*4W080~p@u90`=`x(wb1s5t}Zm=!(G8$6-<;I&xt1#-$;r1g*I{Cp@s9|w)WuLm5+j!`8EP?>%VwQMeCL#k51f%9M*D@yb z=9BjLTBl$WkuHX7p*@?^Shx>4_8;@0vcUB5PtU|cy1mc|(}<(@bRRor>Ych*&4~op z*KmeP4pUgCiX{QqGoa*L)r=|4^9Yv)UW61p(AwRDRL3-;zfBIcop{+2y4y9zN-5xC z09hP%1i5cbUZKKB2W39L!8eyDkR?Vwe)ULG@i{G32UsMc$-GxZX_1ImcHuhpPeVzG zJ-v6dI$M^t(JDH*5c4A8m_)+F4CEk8$%Ig8m&SN ztlI*C2o6OiMwkd8GO$AIxdJwRZ@}3%6xtZLsZ>tFoXQ9U*OYXegC23^pbedYB|t63 z5Nj40md*Sx5^@YAJwy}UBVAYND617Eu@zthMjZ%>PO^! z5St(eML!2Uef+7}w6J?;xSwxFf{Pk=4dYEReAPqK^h9An%gak`onP8!twYg}W^`!0 z=6>!z9E|<|%~eReTsWt#TR3aXB_jlxPAD~4dz}cg+CpXhLCawcfL(J_JegJL*vM!Q z0rLPn*CRNsCfq|~*%m}fDfT%;c|-8$IfZn%R8=u~1zHj5?Gt;rV}{iEJIu_*K-ju5 zRje4_`y?LIP}Jod$2^tN868EzBRyw;EJHm~icINTbo;bpNVJN?SWZHfJ?ybjd^fb0O97KtGUcps(G#a&8Re`%11 z7Cga~z0}aP?p*TP-)kB^_g0eC#>e!UDESK>7~T(1DzzD9X!mUpt$`4XgFhnn1aSk7 z)zhuDd#49W^Y<}3R+UAYlBf{3S^NFobu+csdtU=d^lR4oLC@B@afuf?5;L~%mJwbg z95DZapj|*9Y#8GVm$HY^rG?$6f0pUGjf>4@cyl75L&E@1K(N1Z+tqQ6Z%}ac1suT| zS~{MHt~Y5Up1%0%P;d!Ku*5CxDx(`u6PHYeTbmj~R&N>nz2!Dc!3<&$NQWsf6qX?Y zd4Q0pjS|XX4kNoJwX{hyU#}4Yov*HEB8klbx5g%kc(UA%ke5h6N2b&Zm3??gMUrBOzz6;2KoIj zQuLZJ0$n_ak|P%`hjc2BPEN52ug}n;?c)}&`x2eGU~5ZhTBgvjKQSebU#}YC4j*vL zre$o_;w~+6Xex6cxWJ+dh{?*b7jUGMqd^Y-C%|MPO&3Ukj8bVGmz$y`=|~&~d={n( zDN|a!>R;15Wf6AM?|Qk_O>UuAScSGYY(2XTz6?fQuVXq;wKgJHb=NqeJV1xmd_cDb zU9t!}X&m|VV;Qm(NJ z@DZyX$D62Dm=qt7w$;(%P0@}uXf5KKNEn1;$5FV{GuF?;T{1^yjn#fRwHI8t+X1O^ zqkmpHJJs-RzOAMhDC?*>J&tAt#hJ-T;mS5eXMv@&MaV1KCL))bqBnc0Q$hf9!;NuC0# z;u{F9Y0sK4X6WDGe8eP`OG^rC@3KS^jePEW0lUNn-Ra_WnVc!50lyNI=qH#1L)0wU zWb@mNDeOeZxqZ4!*g(KceI|D>xYK!&8CVd`0TBj5B&2&C*^Vn|za-cZ5OXWOpAeDc zqu6^Kfv_7oPD8fp?;m6zFze3FL`D58^yMVI=@O-{F!u} z%aX?e@Idv<^KYr3PSSuzS}e5eQ!?jCxYiKV6(4AFdVV+S)@t>X`ZexSQB`9iBE?h| zD`!D%N2vLtziH*07!M}@&`sUgh(+(K6HH|l~TAPbgs$4H(V2WDq@3nrP%`y3UeSDn?xaLkI(S{hA zKVIGIzprFrudB9d5x5|?ZB0q92y93M+Vvoh7_)tf`ZZw0D$`~^=4$f-n|Tj082B1rMV#nLI5-NfP7w&M zKTRAU0*FL#E1{3%u-CO|kFKwunnj%f^8lOX3Mp#Xu7gsv`Jcu}XZg^dlkYJTjZi80 zQ#sMy07N1~*0r9Dj>6j}tN?Lfj-OTtMFddNuWZ?C2#dkkJW{pd`1+XLSJ`o3ObV&q zWUGA-4sk%xtpBTHC_Se3Xsh2UoM*NLk)&|yW;MGES5`z|8WV(3#dT~FmvJi0^p6J~ zGlcL7s>+0T8hXGv&{ek7$9eG;TQP97RN2{npd#<63k+?r;Ksb6V~uwrA*S5x>b;18qH?&Y+pU>- zWxF#VWGvnBlXj}3$f>#M4g{ZUq3>7f>{71YhMZ9#w6E)wqtWmwi(_UXQlYcVMG=@o-{G7yD!=Onmn5rfHAgCkyEWWp~#BFV;LCo&KEg7N6@YUm+f*=uG zhx131%Nb;K(zI%_VTa3Yq+{%TfM*y@pi)>}ze8!9Yy=Eld#0r*HSvRFZ*rTUqE1uq zM@+7>Zz=d6UHTB%4^UKKK%MJV7j(kGSKTLa`3n=W3=w7hS$}lMuSlwQhLcNd zO-f$JLZ=Q27uwqD&SES%tFzo+5JDlT#dKegcS=Ks@sBYR$Tx4uB$$W;Hx!G96?0jz zMLsbH_b38AIt z`i-e?{;1}hZW4)XL=nlILokotg-+41WF`=>w-%<{=!-c2nhFdj2edi|Pl1$9gJ=1c zxh@%1m8cKN#_KZ1&)b2Xrm-u~7G2Ac8&w^$gPA#+S`eY!*#E6X1lp42yGpQdeN7nC zv6&qIj=fxzD=sJ|p|HkGBt?mObkah>VZwq49uYF|AE`PR#mrsbJRa&y?s|)Fm z63LZP#84G_bz{O>fVzNvWfe=iHe4qHN2qp^nx?+}wZ7k!GptvNY$=s~HO&Jp;y9x^ zdkRxh6*nJDuA2HF=Y|7x=OE(LL@H_L0F0_C)it(U>7c-bw9{fzj$Wh#D4cIzv;b5P z#;=*v#O2&WMm007i6tF-t6*bO20vi$Ny+X)1j~*M%gVL*#B2E3O+kxejLSF&-+Z5*$XXNgBS5s zGqG0^)PW2L*(z`Ru9%J(J+KIb$zUY13M|Lu4Jd*N?8(WhjL6+0Di|fP&b8w(iK)1j zJ3>=gj*=|mqy^mW9~)`)>*-iK{A?9#t$O6dv;)CKMz|G?0RMJ^63s?;;KHw6v2lrC z!R#1Jcbv3Fh#aweA+m_I_q*<4{F;DxdTGle%kyTJ9UM- z$ue>gAr=jTQa`&XC>sMI zF4jZBz|&Uwd96Pv!k!&@lLQ?2%TmB;i+w7>WD1*_M7SdNxlX@dlTB*k+edD`1rhQa zmHGq9G)P#<2Hx`A{3>9nClPaW2O(VA40ENd63|?YloDzJwdBzSU*P~VODY~P3Bu5A z9Md>HVp2k45lA3j8ffkb6Qz`24x1vn<@d!#d?w#ufWUydT}G)B1dhI;O@&azk5Lw) zJ0!!HAa+#d4{AJ+pBw(4SVLvbg7ghYNpTcx)ANBbzGcoH<<(%g>tdCr!MJ zc*dynG2W~Rs3dvuu=tjTL6kCSyRcp^L=MA2Aix>AcGZT>>JOHuW- zuyw8`+L%c963*=EtP!H^7BG`as}}hk(e~mC3}2WHDdpEzoTET`bp+OqQB|q&0H`{` zgBv0snoU#SM~|y9d`Fari%aRGP*{L6!pk@v0!OZ!T&{tOQo?@*$WNSnJz&bsu#4If zwf6@N5`pHNKXFO&UsP*LI9i_%Ri5#Un%IUJ*X}X*pC%~wAoYwF<&tErfcIf14_)7j zey0m)$Bt(R|q=Rp@;GuqL7dvBH9C#h}DJ5p!6YfW<%TXs{#4`u{vQySc3}h z*s-<&s7637ngR?0Q__Yt37C^DbA*lxERgnt-u}UyP%72GtBtdrjVQ{u-wV{%|5_c1 z1QBp*UsX`Jo~j1W{9OI)?@zU-i3k?LWtMYR8!%lR+rgSgjyX!$!3G^UMK=+w@8gyx>Qa&y=%SoLPE2*!;L~O`%dX=C z`2pfDnS0f4E{G9Q)BzPJ`x|C95umBcn1^g2pnx(oDW7?VGP)8V%&x#6ufSD*P835Le z7TM~tTF`sv*Rk!B1k@2y2W>dtQncwPrky1W4TQc2)MLSmiyyEdq@6b~*ld(#t8|83 zE;SHCLFZ8TxVnnw{Q@TMY1j`91AEMTEB{(lVz9-HxMIdl9C50a6Jsr`apGS zpJSw84V1!Pgo7aNrELk*b%g{}vRR^kMOMtKm#wEuO<1;oZgWaW!VZUtnB6)a9tnrl zxhKf&PzyBltW*zwJn{kT%wiMiDjdJt^qCvG$>JzOn*x)ysDYSVQ-C))!Jt8&EhMSn zG-}9FDIA+2%_|_S0D>YLGD3Z;ry%AFZs46);ri#NP;aQ;k-?Im*I>XAE=L`uwC5ye zW17Sm8@8qD(G(CIog1NGS|Rcj*licp6E zl5D!F_oZ{N_N`+xPbCj^v`&904#b9vHC+wKTxRN4QH*UXjM@brvf-2_$awr4bky^Jg25$ZhTJt;#PvvCL#y!|%dp;4!tw)rIq|(-#m0gqNMJ!&s`6W2 z_6&RSiITfM{Eq{uIn^meGDMdy%d{A_=xLqvL%_@31&!8 z$EX!&T+zM4lg|O~Q6ow|^fl*7zc5V6?dT_fiH;taJKg)u4{n^QR7^aYL?#B05gGy zw5bW}|G6M=ANyriniLf%#T6h-Ewmz>v=L!2TN_pOS?D*RbT&4i0a=WDSJM|=sv@GB zOkhur_#>}i@3-ctm zd9qGuV~Xu&P>QaQrxR8@OR$UmfE!|JPC;?Zi{TQ~dN_y_Xyj~f!O0$eiP zW=JrdZOYtXl5+%SBws{VkLhcr5;#PB;Z{6h9Be3@Z=Om0#C!A%%?vdMb7KxsCIO5L zJ*aUnCLg2t80`}G)#Q`E1MOq(YkscStraua$erPb7p8(jtv{ZJFB_!)&OB0m3|wl^ z`2U1sAlL%87{pvCDfZH?uLJwcH>j73gp3dJAOtT$P;X?c9XnHDb z`7(wX+M=jUsgOdJN02mxcM7sI^vFd?ACm#c$HFj0Blb&7eZv&?mJb=1QKL`k13sYe zaU!a3JyrCXnmaBb{DYFz97%p2uK~(f{nZ=Eba8UECx#nC)zu+Rbam8`ipHmJA3pJG zGO>m!c1nZk!&XIe*|H=evjI56B1#fF8N9{2hk~jOjD<2FOtVTrk`~0PQuQDZAympS z5AOQOja{LerP|AYVriG8pV1qoug6=XDl*G!te4 zv8PAH958wrA8bT}6Ps!e;|Q~nVc$^%f+%qxvHVqT0Sc9LvN~DHrey+ z-iiYk;H?NhJprFdF^ga||h{@GQy$8_FP6NARp6+2MUkFD{uF8WtE7pbY7=% z%FVD8`$7kJKlWjWUPmn>Ij7S7;u-|M+QEwUV%WH{l z4$a&TCI#m=-$eWM;WR3G8msyY2H<;CsBZS)}Zk@tl+pbro7=WD53a!@YBgps*asl z%NbTuXsaV6H@es~em!0^w<8ZBUy`pxsR>6XdFE4MLe)#YE)en=H7gJgJXr_4djHHN zIjGr2=4rP+p(RG`vfNO#rtoOJ69lo-=lf!_Na$DDG1@5dL6d@E$TlZq{?NnsLT!1h zwEc1s&1%?8?-jd%U$82i)9VIV%sx}5ZB7pQqDv-z5u3ZU0CNLESTO-|+)&DxD`D$A zD5ys)7{{1Lt9nH91}LupP2dKV<6aZvbGvLY4hGE{s`hzhr(vkXE<&7k(Xo@3P=?~O zcv|r#=Hq`}+^hz6M68)&M&U~K@K#<}ZrJM7Jhx7~vj?QSUPL@b`A#iwbVMCET+83ehftKTV18w4zv8lOvl%#-!RPK;(mV@~-5P5|Mazy+z<5rm1jb z6F=lOmAxo6*n67oMwwB8#I9qSSG2}2fF^o>iLtw*@O-3X+(7|QG-<945EK!x;`c>L zg(M>=SKxwJP03You~S4KSRLbnywca3p&G!haES-yqa$w||K{YEF9X7s2bz-Q zeX=oo`3YMxLV@S%pTZ*%Nu=PO9bszR2>E&pKx`=PNgN3?P;+vlbr$LuUY>mioC?%B zJ0>YWwFO3JYVyEMO;)eXmzB|=jgaKBRo-Rz&KWzS!`&=b zuMosZMw4oG+D;Di70p9VF*sZ9}(>|+Y)d`y4;vUPVK?9K| z_L$fY@5W#(?D2xI=kR{@dtQF=1%qmZnyyV)#;)Yay8ebAuULVRNf#L?h(n<4Z} zKik~thS!fL`f)Nnq30+BdR`SI3)%UJ=#wr~&$m^h*6tVHTqy}=e}@-Qj_@=`7r-0a z?JH$G`w#{%Y||=Y`=;TV^Q76ZAg*Ief`U2i6*=mHq7V-B4wLv=$`KtE!=I2KBAgA% z@m{+06SHY8pxPSNYJqR<9M1R;MIIG;eUeJJg#Yk~OpipZbX#fYw!I9QdAlL{F;ybI zJrljh<}msjb{45vZwK=_k<+8{-^ySh3NJeX!FvoFGaeV?Ro?Ixyfzsil<870v`W}q zQpydE&zYtr<2Jl(_KrltU1=~8Ajb5o3a==Vt*}=arK8E9^SG&Y((ztJ@>T*YaC0tN z5cG!x9?=m;s!XMtMm&4J2n%EgQd9^^(xp-Gk0w~EVYf+ymTRE^ zwbnQ)ijUz3S7aQ|Tzo6rD}3pex{Wc28lqoU53%bNf^ndTOlj9L75b=1sagJArr)td=OQjt!&ebsdOEX3Tas4dUBPtEfA zPAjsk(58|PMB16xfo3r)qRxv~ZC2tUFecS3e2M(+r;;@S%X!*b?DgL}Xc@AfGb1kF5$Doi8+9m6jgRl%y`Vhu1WRp^RiVPTfFz0M0JhSYF##mMS!RB9D~9Vv9CfPK5DEyOPFkfkul0 zuQnNExN6{Ta=LSGZ5am@QoM8gT9#+;98Za6FydZP0{4e2$+YJ`4@*< zRqx%H?3}Cl;7Vr7iFe#skHFmqg|?_j z*T>k-ND9&H_lFI_4l>}yMlaFPVgCX2ryx25pkDyl+n6O>gYYnI3dJX)U~MoGOW3vp zIzL3cy+Y-#`6$^l2 z%50-gsHYd&2?XCdf^G$gd+#^SX891-13N^#aX_Ue^H=(Lau%%=w%R%yUmpZH!5jt_ zJ@UY6)tMAFn0gq9y9qAMHx z%1UhFfkeCkoe>Q!=JRytN7i>zz-}&U=LHDaCW-62I!Ax_p~45WFz{hM)w>xQ8d}8H zh>q;$l4k&I10fR)lIwvTokKm&*v57ifONLKTsBOanQUbZmvlBL6~v#tNEdRiV#(+cpWl3tcQZV-Nm6D+Tbl2%KnG z0$8N`6h9P|V3`2au!f_+^+D_4LFj3WD`LqN7Zx3tmK-c1xmm;!zcg8vl0BsMhxs4} zfQa^R z`v@WdvDM+@*hYk3DeJ%^I$!KFfMjo|YAEiXd`cWT8)9Las`t?Uc1^F5} z2=Lh}8AN^w@-XqL5p;G-sH@E8^hp@!L936li~M(llsi z#4JjZ<9`kY;TnXbje4jRIwsT0dy*e5WmItZ3iOHThSPjg1dE5KT0y~&t{#eQ-uEsq zd)r!iCzJil>`2>EkG;2l1`+OGVpaN#UMZf`%vBN^%g;UWQs?I&^4DKwK%C!a-O1!r?A?l33MB~Uf zlz8RzktA|lWHQ_cv)Hz2oHkI|Y{q8=8*_)>7|%FFi3$@wKEq|XF`GmcfShoUv(Jk; z@i|1oe%$VoAf!+6_uqg<8nk!GYmLir13#&3+z2*Mf4Jm|nM{a#B&aJOGZ4mr3Z^Bw z4Np22z?={UL=De-Tb}6;02NFbhY-TlOCnU##3Y!~$Kf^Ph=NHjC}c?2FacZj7Jd>; z7281#)DY%IPF1!7Jl1$)yM0$du{TeOVBrJlJP|C;}dF+HrXDXhIB@T|9!p}ia`>1jj_GX4m>l5fw_Q)c9b3`3bm{G~E#fUfiE`~nXU z+?#wid44fiDE$X@&PEJ0`uW_lQ=z})aw_cCzko{2PNtAV4Imid$Vd1x;}m&rEKx|1 zM_Zadn4$rrr1`+6`@}?&v+8wW05yJPT(Ll@BhOXB0T@sxdCXJ5F>6SFUSS15tBRv6 zbyLlPUXl3n2IZIc(mqF@hs30n0L~a&UW)-t5g+H2)tw{a3?EYNW84G{KGx<0LQFwN z7j_9@%7j!#7AOba$75>nNZ+{%!+%RNl(sRk!v#u_jgA<`JffKFmXSG6R&{V@V*!K( z=jeEPM2ydk#wfNB7P>7W@U|Ti99|L$BMuj15=8^)7m$Jy!X!w%lPG321-KH5o*EiM z6A!u=w^WosWJHEp!q#g)GZMkiXIjwS{$m-Vsj5q5frUmI)G6ftCD- z0zbqu8kWojpeTXTK$;FK(2VRg4{tAyNmT@Jq1wF1?n}gCOPG2Q<8o9f@?63bhmdB0 z0i5tj7&1RKfOf=&nsR2a3iOGCaNpeAp($tpeC4LY3vIRrmYE(oXvQKVh=9<>ip;5< zm@Wb*DPxLRGOFNdO4rDCD!sA>3i2wK_D4 zz6!Mj*XWiF0<74_ju4YL28n85CgEw37SJ}dzC|{+4L`si69ks$`i30=OjgJmRmi0B z5sC+s-}1n=bVLk9!Xqj1g_cItns!Eijp#($E?>3+VRhJ)#7(6e9p!&az`~A=DpCr> zp01E3uc4q1))Wjh39qeCtvhUSkL_0MhaZaNhN}3QO6K6>rkyGBqW~eL+BT#G9DOLK zT!Y=ix2X-qqBH;|QD7UYymVn0w!&VTpT0n(VBHmS=DL(cu+gyN4iq~>-bxw2gNs;F z0j(?n50x5?Pf5Jn@>BH}#udwFVa3R&4PgtpeY|Op`|qtKpuq(R4IK5 zdGj0U_YvK|eFKsGO$Y*N z2P+BB%NWn`2EKV5Xc5bfKsb4#5&04j1L_k-q~Jaz%0Sh42daSyd3xE=3Vv|3>+~Vz z_!OjhAxC>oQ}d2iCbC8zLq%~>ofLR>v}TPFGw>-A7zT*IBHle$ozf&%QLsytW-~iq zR0^Brysb@C$i*neQWXS1%;#=94Yrpe)1F3gSF;yqkbh($#0jApuF2EZIRR4;e)Wxt z+5`g7$(tZ?5Rr2&^hQzG7>qr4CKN>_@9@>(n+k~IMdGs~rcqW5KZXpbC({_OQ+#%`u5#*eb8&T=p^S4xSAgLOC= zhGXO!22jC@GZ~UYM0g;V4lYV@$aj?m{G*mB)1Z9|SRwJ=#gwO0Cng*)?8ZkrgLba5 zW|81@1U7Nh-0=_!egzR~SZ5`G#G#MG|BuO(cs#u&fWHzi@5)oR44|-59|A0fC5;Ek zLmk=~CPly$qP?m>$BtoU&JvGmoSb5W4kYCPemAkuH$9Dl<%o>u|Kh-rQmzkq8i%xl z5PeCRLRu4!>aLoobJyGKI1+iD9ILEwp&^?-bSUB$1U7_mg}PXV>ug06$}?e`T(=FZ zNf!je@lVJ*j-!PR*ASz-$pVh)nc;V3^Z7Zb({!a*jS2TGq#y3uk)(UbF$oIYn+Tb4 z&%wFpvCG|;5_e^1C09pFIe}*m!5^z9mHk-POfycn*8@N*2SJx7uBPXkdp@OShNt(HH2-T=#MH-vRy`a^G|wZZz#JD19G!=PP~p`7 zxN8uL34qWjwj&T^|3Qm!)(os2yfi!j7^c(=&W9LK5gIm2sN)H-<)9BLW9k-3lA7hz z#u2c-JQ7hG7btL_DwKRJjX=2Q2#<42_FZLCD=1H0WiLpfI@Cf2RMI1l!cbN%u&cc1 zbdQ~00ps%z{IuNfl%0~c#Ubm2S3WZmg0A?8+m(jL5YZqOlC$f_jU65XX)6bk9-)jt ziw;yY8ZAh|oiMxW)V;Ryg~1FW6~Ks!3`Kac793!mvM>t5jCoyILR?x#a07JckCz#h!P3kEER z06`&W!uAg+e!did=)u_|gB3vlWD#MEc>weh7P-k^wU39guQNotH%1L@_QoRr;^Juo za0>!7$}V2j1kN@QX^5iI=tbYmJTpS-(8u}H8wmgZ5ZbsUQlgfZ?*gBaaKC1pxd50pd;49FS1z#04mhq6%R-b;*0{d3sZ7^d zGFTCiUyS3N!w4XrPw&qr?4+ffWu_c>6S?yGd{}NRm~@Kgf|h1Om|zXUaB>%^e$`+E zm~s2to)P;%u>q0;zcU(&$0G@EH;(q;(c{GluDlv~Yym&YD`-sFD%lM_s|bGd>4S=2 zRg|0v0W*bgB)SdQrV3mII5}5@jTw+_ydAT932tM?SY`E~7K~5?x$_7b+7<<(v@dyJ z)6K@VocC6|iL5yMl$Mnq+2Z5pvy0+r-n z9AqSuH^zWGxt65xDH*sqY-O?`H!FfHRMTOV7@n?IXqpc(To4$%Dk#;Et5L5lS~3pw z{2nvqI(4~G49S6i)OHJ{wI?P5rWLHJvs7X(s51o!bxFf{QmbvO0dRmZ<|O}xphS`m zJxB@=8585>q&Wl?ruHXIqAm^RaWi{`zA;7+^G6@U4!xTO5jX}|BachJ!AUxN>Uw?B z+9S_$j8TOWxR4{vH`p~T+e98kA;u&JsI5pq38XdwB!(DftA5p?PEpgN;ta3bt-A;r zn`D|#ym33qOWS;wA{PkN*{aP=2n(@}<%npe+t7d)D5{|=A;^uM+}xKjxw<Eif7HsIkj0 zrbw%OhDb&jhAe*0@5wB=-7N@$$ZC{iZa^uQ&~Uj7>@^|}#i3kJn3jveAhHp6TsdUK z-y_rI1KuP-F9WoToqLQ*#pYg6w+78n`IHZJ|1^k#K_+`;*8U*t3(@#is0Q}MLf>C^d^yLVyT1x^X)Wt~< z;wynkCMo5Gw3N%ujtUw}(Jc5aGf^)#Mhgt+<>tyo(W0563s++JYbg*}b}x+BpOGcS zWX!JM5zp^Zh5vKU3U)`jq^zRVeA+_52YPgJ2|f@R4h z#R9O2gf8oyz1+22p?nxf7e+b7U6v@BlzewCnl0Es!hBeh**Q3?vc!~NfrQkk<%Y^d zk)n`cb`{uZMP24havXyKAxw~pQ6Q=;$M*J7F=7m|jJ23$ynF z0|K))QBt5MZK&yByTBWPn<T zPLUX*`9wh{?iN@r+p=+9jDk(Oed4VCmx`lfVY#VHijKi1-M`{15gbRMqNzkk_F2#y zj|fLdl}4X-EFt^5_^4BEz*3<2L%;^%5sT4W;R4jCFhLI>YlK98HDFAWrLxBY1gPxB zWh_-ON};g077%4j5lFN}8WP~zMqIH-?to)3gD&I%Ri6EDZN*!~CuxyM*dWWfaUz0a zh=$sVWf8$nT`ndE>x5}MWs-E8?Gpn!=$S)WcX?HO%HVuaa8FOM@ z-H3K9Apdi029#t_yi9G%N4O?7Cn#;~Sean}4M_ZzC$elrcw$pz&>4i(lO(3fq_Liv zfcmaW&hyDS0rH&Dmd26Agr#Q8PT&JlbX|s|2!@p3hr$3ptC9uvWP2>3rj2M)^b@36i9kltTd2gNbw19w4KVn-ULKWU3_P5uD4IEFb}?ACjc=Ojz}HN|Krb zFq)ENl-X34Gtv#pz}|0HbW9>a_F!!nr9X)jqCoIUk~l=tjLj%ZDJY3IGVZ#hkb1?p z$k)H$dzTMey}KnzF(}9+&l5v>`yojvC(q_vxmf@WNce>%?cSa?$Wl{4W)o6Okee!y zMtEie>b#MjHp2WQ!uWC!5BF9Vgw<03>#!%6M{!N01WGUedOZcG6Pb1(b)VXryOi+nlrF1@?tSOVPWnz?9C<>VgZjNJwHW&H2UgdXIr zg?@$S4NkN^k5|jy;HJN#8)bqd_jr4PnPRGtaTj6y5F8}-e*1zvYBR(l?7SxOdu^2R z2fly?%fL4xwv?L{pL@0`@)EnSK&z~(KMrFIpQ=){?(&iuV4>k8#@gPK}(U^jtCa`dojdcjqjE#g_wSv}>u0a_Qk;G*d zIgxrQphJGW8@&V%(b~|OK+uqz^L%CBmwRp z1t4Bzr5(=Trcg|uzM0%7GsUl!Zs+zB7dX?~K;$EYjuExGmp9E%lUN|W$cd(;9@&Jh zaWyUdfk@y3q35@pMS!{=dXQfeMD!vKry0Z@JQ25?MduT2QR(HmE1~Mm!#Eue1Sd@R zKPEdGthK=@rL4i38HI0242F0$2>u3i)ZcM{BSuCTeag2q`b(YoCIhT?HrwGRov_I! zkiZ<0PDuD8#|C|~@KwO{qW+9e$2*P57O)Rdv7;mp_p#8D?oq>_O#$qlUg6^1a2Erl zmPdBqOMrt?7Fw!{R5h1^o6r`HO2gAPIx}Pe^Pdu54{SP3a-xROy|Td69x^|LVf2kO zal}_hgJSoIJX{}Bq*xsdq0iPlIz>$ac4Y*&0d=9`EM`{KlhY?1<+16^``=~7d&4mPpcIIs0Qb@%bu@5X2d7Af z>@`|M2N9@Fk$$y+*5zvHIS%z`BnttUch;i5Ls|Ia?56;aGa?kJ@DWLZM;T)7Fx+vw zlh#mjx4^}H?sjkFL28dyXc}N6{KvP3B_Y7Zry1p^oD%@`(u#uYJ#?akFKG{;9IYXmL+A%0Me`55 z*`w1;->xCUpEu_cO9*{ou z*zvyg;>ISlC1^PD-vdA49FmQNMEC=KlUS+a7+of~X}^Ynj9n)UW0&%*TarRCIF$Q` zNxWnMy0y=$Bu1`6IWau9ZZZC`asbm3$ZWXu7NiWN4f?I#5I964nPfSMY{V=J*r!BD zb1(w-wv3vx3t2SI>|7kFw1m=N1YE@U+D*%#^z{H{vgOd?H@znikZ8;8mC(;#kkS>h z0RA^-1S|j$^r1{4!^cUmA+g#_Ju-z3ID&Rh(F1!*^cJ5C4D51nx)o_(D4m-o64gbS z^sCIpuNGLrbeS-TSIQHnRINQ!sIG=BZt_RPQWYRstMx1=n&{H~jXG$vm+rV*NvnQ& zc_MR}#yd%X#G$j$@zP)j(kU~`olY6Vxjs>m*_kU^@{JR|k`tj-o@1h~whKnfPZvsv&rEKX8woT$?MSx?4o=cPZy=mvL$5p4N7sAzbuW6Ez0kU zk@#_Ky$TqL_cM5wvOHjdGEKF%?iXay#5I*j95RN`Ko~Fryl6H{Vr+U%lANURlUCN1G5=!`>HR4Jfq`|jlvus3>NnF?r|V(7{- zYW;Q+*S`rX!WgMOu-Rh==6Kv%K)I3GnkZOJcF!o;%iKSt*5V9)kQ*tC=>gylqNHzI z#iQ_aXx|e{g+4Y5mSC^HA&P;WMr9mxI!E2fkGeob`aJ0Y-P;HkiH-%b%&4}IHtawh zCsC>PY)v4Y`prDeShnLGB=13doLsqi_`fi(3uhp`= zOpL4s7U>c22qu!X*Y9S@G54agOh`^Kuoy?i7d`j!QVyE7T;XT*94!7%EFu#N_Hh{2 zOf3I7g`d^MBuVX4l}JZBeLSml)Mm!gNMK5NMONFe(7RVNwYIrX8?|W z6>vBU^d+D(I?#J|C$w1Ut(Dw0T$X?^h)n@0NQqb&>R?ppW!J$%?MjnU!K6TaI0!=Y z2}n()A@p$Le|D?ob5wI{hS^cbfNBDw<)LIm_I<Ij}i&TG2k2AoD1J#GnwJvrI zxZ;s67YUUBDH)L+I|_xh!0>_=f79eE$c%@^k9cmn2tR%dr$SsjS% zBZIFZ(E*813&qwAuwTJ=`oV!A*2pqP%ugQ7rCsvR=p( zPWM!$5jcsO1>4Lg3LsF!yGOdPdl6G8+*yIxiPur%X>u<~=IR0*w$k*FRN)=aq81!t zf3Nx^cwZ`)-4;M`K>!f&!h!NcU?5eZDdbOA(6`+=Y}7|$ii$QS;)DlitufYJM!gN9 zq?8fRWyg&=>Bk3wLcF~Y9Qy$`6X*&5PK_QAu1S3Ru1+jgUSg{gKF~eH_@$BMoe|p` zWSD}V-9wC9Wr^~uXpN&22PL&A2dUQ0zz5KU(`OJ1SE_5HblE^t9d{EQ_>gVj_G6>m zOmw$vrob5I8Ey@6Gr}=MCprL2K(xQF@o?0bRFEhFCL6GY!F}4v!0Xh>A*T*JiND8v z0OlYU6qtaiK!C3f?h`<-ot>Yv6=n(UoMIHWW2{NRi%^Q9Ipk#^N)S;{=?mFc0i4sj z(SZo%zq`&~bjX0{1Q3NBhA=14j)bE=1a0lvOm04&QX@nc#iR#fcQeV85y=}w zVv@ulqX2cUjR4{i@yNm^ENNt$MhcxynzI9Y5>W#SAVxNB0=%e48-NcKsOFp%ZgV?A zEXtq)WLCgrZlG>aT-$7VqI51WKX~HaMc{xTT%1uMD9tJ+=&p23pxda8s&7c=v@CM; z7~V=iMZeynf|?~uW|d66jc9x$USsnOtubW!eKVqFWSJY_nr zMkeCBXW?yfT@P_O^56_&n}m?t4FJ>&^jmr)G$-0BGf7MjLJS#-;iFW&EjDu`8n+Xa zx2Jd;*-?CZQEn#@s@g1_``tch(w%NSptlpZz<|UxgJcCa3IVTCPj8@)7pPi{#*GxZ z{Kw5tmtz*eut0P~9ztn`5&O8Hd zyqu9Ba#am>%vkfwX&@x_IbaOVMmN+^YXZW$n!&C%Oc8|iXo!pokV&q+17re0?!OMU zayS-4?0COI^3?CfOEpyIoX9vb9z**XD3 z5PtgHAy>(vUm0*58ElbCfQ-p*5E5cg9sv@B@Vp65DS;`*2tq%t?4hTtShN8JY6AU) zJdPUxge4p$`j3P7lmzUDaLaL1k}eFlISN@{reg)-W-$j-dn%+lU`XBwhWrDW%p;GU zQC%2k+`uOK7hWV3&UaM&Z)YNa6Cyij!v#!mGCjhfPDl|$u-oanx^aimx0mhvg+w!v@1pIr*!=o5BO zCwwF&F{nkIbM8*{0bi!q1(pEf+$W;T`;;+gN6QQ~JOQAv&6MI|FIqQTr~=nTGQ+6S znLu+3MdgkV2#M#R&6KSO^D-0K+GL4D1 zO%JRP8*tki4R5A+svH(CpkYIk97>SF+J$Vk8H%A2Sr1W@ayV3rnK5q#Lb9J7Od|hR zH$gHWlhTK!)pj+BckI$z##+@fQ4C4|Ipcmz(O?(Qc|w^S%MY?0Xeywu=)-uT``!|Y zq-UB`ZYM5K(yrq9N3IO-FC5idnCSUoGOv{ZXRQLE2LrRqTpdK)GT?mDn{hZ11G7qI z;`>6G^JxZkHxsg?0bX5?O~wCDLXD<8+l&4!*9Z_uqxej6?l1kDY;l&me&@ho>~gZ< zgX$Tl`*U zFFWFVjTHZ4)>EpD7Rs2~Eh! zi4;maE$9|A7v#__EECOI!oIyS5Q6LnP;EeD898}w?ak^}8}?}4eDVYf(XR-U-Zgl zui&4LBA++vCfnbfjT~QY63`ao#C-p(hR2Dg@i%ye*-Am4^HJ5X-x7iag7LKtUO-%D zIqF8GQido6Bm)h4I~iYVtbRBofn=fx$B29n%^`^dV6fyZqb`NCkEo&RkH$Pl7(Wz- zBk_v;++G0g6`Q|~g_Y~L^#;+$5xfe>B0{1752B>Pi4P*Y*Gd=Ave(Upwak7s`lf*5 zJRk$NkvYw9(8$NjqVmb1EL!=JfDbPw1n~F>3?=Fwn=~s!0QM|BH}Fb6_#O>4{}h>= zI~SEM;!Rb+Zxa;6pn-;_DS!t1j#w!HwE*9PE!sJF%oK@CV_$I+%o3rD3khBZ)e8l_ zW`d_fM~tBEraY83DF<;pQ}wSPCD@GwChmo%k4D!8LqAYOAg(%Tavi$CLZ0?_Q0;@Y zZ>1$Ez!NqU3b^Qjg9P!55zk}tejoU?_7o}LXR5;D6{wl4Q!-ufDx%)MGa#U)Gg?^$ ztJ3JQS)DmIG?I>-(I5y*h!hOxWXqyaz%9_bG9hMhYO^@mkqOkk`O-EIMt%%*b{3*Y zHBQbCZBXaNG0B=7_Y6DcpX>KW8 zF2<~%f)5{F?6~lDyb$af-)oHK{?$4)Q)VBsd3OxcEE8gQ~^^9GQg3n7Fj3DTTENh z(7lu5m6N|pHo=as3Q$rsvn7d!^F|sRY;1vkTITB(Ff-%w?lTr@Mp_PLPuyo6#BP!* zMLYqc{8)Y_nnb|!mj&BOJz;qCn9gm)JLjx+%M0v`@67HHBMI&-PqQ#)xaxTW#PBuYeH-`q&RerSP`GSC56VHA zrXVnJ5(7RKqpO&P5w2EsR`78div_=Y920o)O%ZvCO>QgOO|a#-&~el{mC3eK@>RZ>&iDulY-bDZ2oeCo`aYThH1~<|R>D zqKpD3ft>p)1tBm?kqMe%_BcOS{F`mY6SE@^^2C6h0ulO7pfX8MG5{LsD(dv|0XNd+ zX=60%9H5u@TbxCYwsOn^l4C?sskIS6fJM>PFzsA7wK`kJhxd6?xbAVC$R z(4z;&)$r6is~S)SOcj@L%hl)^5e}t6Gzqw`n=6cJVTD zM}oltrr1hqlbe+vmW6}FDl|F$VS-VUQ=!->UOR2Y0BA0&p&=WN5g+IRf;8}=SeQTs z4!$%Z-9?CVz@tL`d>N#gjHUUEr63d|2KgbvGOjp6SqS#l#`UO>_#2LUmqz^3{po2M`)0OY}YS!)Ka3E_x*D7sL(VJ(4@3kTF4SY|bo( zQUuRzkiWsT%ttNRP57D$NW!m1bijFb*|cxhJXGqz5d_rML0#6oOjvWvF1jYkH4I{! zYbu@}_}7L!af!vbT?Hzz2b~<5UaBkMv^8DV5hfTZ3I}+Z)^vdg0ZN^O(AS79@Pfga z)(mwribyjFuBvC%uT=c!{WN> zk!3Lp3RowWXvf4RjZVFW!LXTYHcp`5r!6uOSa9)-Nt!Rh>&=Kk5hI{}uw*H)4h5X( z{;oJsRxdCzQlRHYi1(TxF=ha7>JAu;2*sG1or?R2aw_MDD2T1%Kg9zKR8s95RupaLw`+is7>`aJz`b&>vwy_$uv`3?y5W3SlHduudc^ALRHtaFo(d<*jhWBgb>@B*Bi zJXqfX;is^T#dLr-zycM?zh1Y^j0a24#=I#hmC|p4SPZrZfFdX^wk^JddUYvIv1pku z$2nZg1tR^P6uaRN=!3C&2RLqVK>PS)pt!0d8;h^l!vAx{?l$nx1Mis>jPN%O;AdTD zUo(h`<0Bw8*n?S;HR#7VHQytBgvU(ueEl z4oq);UQo6450ap5@7~^$o>ZljK*Kp$fn?j^lu?gF#0Mn=?G?2z?1v+ECLQ{)Byiyk zpae$>l7$7Y;b9`a$>uPc{t9ziP>^_NxhQJ<+m@~Rtej26jx0)cBfT&Yn1V}30UtI} zFv54_giAgn(7#mlF5ig7`FM_p46zwyc?eMfDFg7*g?HQ=ei{|Yryj2c6tL!ar9zGO zczP$-)nR85JxjhENqjnZlfdqbmvo0Q<{c9>kmO|xUWgaPHgZWsjw77IV*VUSUmVZ9 z3RCTRWR6BiUkR$vZs2;R*CnU3gPQ5|Z@U3}`wPb-Cpml_kV84<9FsJ7%xek~`3sXG zs_rIg#0iQ^I($W3i8gsvjEr#ZFS#%UHH?~G;o2D*#EjK>RzvLDxhpyPMPyGYdNORk zuce^sTiDEFaz`AUUB?UAm6k`LY}toG@46QIHZoRA>+~Jwx(lzOh-k~$V?yet`p!OZ z%1kYMBs4gYoc`%QYtR<1c+6|;BeAyiOz~04JOvEw-wd#lF|$X(!q5`pNf})N-X$EJ zdgGDL0#$^docO{|ZRFbSITO(_$i!s6w}ZBD#(93U%^oorw)7Xw%t&%SkwxrcGXAX3 zlrU^xsxw54Mhi4-;cGu3qVn8qHR!I5Q;Y7s&7V##b?B#4-dve9IO{yx$=u7mPMx(b zUCVSYwyR-;l+#>ypxsj}R!0oQwa1a@pF;4Hbxwu%lrUrHow+G>i>0KF7B_ibEkev$oMZ&Y#?1*CXdF2-l1{JhX z#5Sb$ip%0wvD>lr#wofoWa*GNyy!_<#hYjtM|x`mCA5M=LXkuLGmK$qO$?BEyfe+? zl)@Uh<%OCQk`cTS;c*{a_0;7}_9%>6q)68n9f}CIaS#=FY-WlT2dSCXj4!naI4k15W#RTfkN$}yY`w<5V3YcS??KponqI%X8s_?V{qe2XG(h{nm5?y3=ko1 zvY7&etqOaSjqtp7-Bd&UpFpB zbO=ps*Iiz&b%5lA@!8V%RD{a!kTaS;7vL@T7Z0CZ0_c2!g5sCp9rqTZcTU;s@HAo} zpetf61+b zM?wl%mz#u_-`vvdh-9Nn@VOM5SL2@W#+j76OKKtM5L@o0VWfS=Yd%^Ay~_+G&UHpJ z5RrvR8EDI=Yv2@VC`n2Jc_J89r!ZtYvPN#KNSKhMx&491MJq<*r?id63YUtm^XB0b zRZV-bPK321wadWC>TY2Y^r-pP>=fQBsx`|pDJbaLrSH?`7&5w)UmM}vT*Ua3*Y}`! z5f7eYUvyF)6Wz&YqlYG6BsarUD_<1FPN{dy_H}@7x@|O6YvXWjD!z6sC_Pbv8X7}P zUqA!Wp%tJ+(Zvt`g|XY4^P>4J zDMq1sY?*wXSc+2P#fy;s2t3_!;9K*7Yoc(dcP$k>L01I>ot$bqeo{H9V97hB%ZYFu zt|&84sW{WJb7-AkJT6#Csg4o49rK00;!|vZw4v&eL9~T~f)2jo82sZN4+(SoGHdQ2 zCiuWqc1u8t1fxMJ`&FeVK>^=!PR+a~H+cix5#Ofafgz*=ESPcw?{$Q##NDWIWe)M1MHXR*UJBAcsh+!6`bytnNFxa zZOv}RP{ROAyvHl$1ia;xDDVSnMG7e2QKwl9alk3IRPbohVak2ZiUctQ7$n;w*NyJr@OhF6P{wiFcx&Z8g@$cw`R5JCpH?SXGaVgg|-9;c0j=R+}n!dsbnj)AfK z5UcOwD=0}Afa{cPSISdsR(^Has|Vy!o-ita7&dWDdc-U!j31OF-5_46tSRS!4`wYU zp(Bzk_gS!X&7kstk!n$8W;{x9wJv#1&T!pE`flQrG_Zc0^L=u z5jo;d812 z!h2{yy}hNP?>oHckQY}&XB8x`Iohh}`aqxvG)vUZnM>6)r6cyf#&E2bd&k8fm27`E z2ZKwX^=r+AM}Wn@&lXbU`P)4$e>AQ>R10YYVS7exg!4?yeT)=)OMK9;Yk~h8&Tnr^zIx&)X)q6&*S`Kw-J`Kg4Syx=Y=%h#eLIISQ@fhG^I zyxu4-JAkFRmzlK~XNn|MkmyB<;vk}yBd6`ec1k@Sbx2iMon4dld&^+6SRh$!GI#zl^Nm<2#}vy7$x`nif(KOazu^-N(@6>b1n4s z__BjwS_d}rOU^}@?<3fx-QC{er*{QpMw;YTB%6d|Z5~NK4iCRvKm>b&T?;5KYr1YHN4O#ZX+A}AN&rTh(h^a|m{E&dz^mXLM-e^^;xcp?YvtRY)+TcS zccZbgnw)ge11zyNQ}OI@%N$aG09~!l-5OSMU%!FB5)wsu zY>2o#8+R^|aj^gj}Q*ncP%njJ8VHk?p=DMa{2X1vRx<;>y7 zCTK7Kom2f6SDD}(t;`1I#AeGiWB;rVH)XBCJ#t?s2Ug|`F0V4$8knO8oNa%Uy&Y+h zc@}?1eWaa1Qqe@eZN3GD@jHR8d6-x?D8G~6C=HHnsM z!MP=q7#h4=m2Evz5i{Yrn1#t&(W}Y^BT1?}ljCbgt{Xprf|K^ZHRVt&u;^G zpp`814?EI_sc04)J}O@VF^Hzw9F=BfXj)OY0LIRc?;K*_- zf#o*(L_^@%%nUG_6YDVrugC*(298-YELqXl!v8slWEt#;ON62%fZ_SV!vzT(6>T0P zu@vrW=o>v={?iYAK_I)6OIj}Jaoj;Yz7&d=6At3W<1Wz9;%|l8NZkw$>W>z;LaSx zwUFAEX${7q-?s%lmIpzSn}^MUZG1OK@Ns!jZemk>?(70HsLD8G;sN;J#)&s70@pMK zL{c~E656LfPT-R}fkkiV0lS!F4l2SD{>j4h8mFr zAmGfsQK^_ac)~3WkOUE-b(Xqg+r}tc4+Gw#AM^CA7ctGwBCSG;f`e6NcmtV=6!%}ePbFkaYr-zdg_#}@M_BXX; zibDcbnG0Xw@|GptLieVXz!JlARzCvp+$f&G7bP1R39s|-Lk%Oji;1<;2G1usT5T0H z&@rzKDw4o)Ebgm+ew9k`n{~=GH|F_$aqHf~NhMeximn3dY0o{;5BX!E@5uZptNLY& zu|F|Y&nME7>M_1NGTRe=5j7H6Zq77uLpsfFzJyP_-{>h1w??X zUH$8V3iV}^zbWi$=x{TU&&CZ>gD~u!HNlKLIk*W=0GBGOyKw(qieC%c z?|+<~4^iJmuDTRaeTKR~Okpr5qrng(eYm!|E=E8F2eFFlFmYBGldhspt35Qj9$Vkn zZUyt$b9_;Y!nX&4sC&O9n+678`So0w^faSfMK9h7LdbwUG%aH*YFb(sy)v9M!wPNU zhqNq3Mkwe6Yek_C8hHlWF$XLml|#RRxTyy3^*Defq4xMD z@!T%Lp<#&T3w^O8*CIc15gEM2Hl)+JFeLA#0K1Wg+geO>#3@LGCYK3vZ94 zX1#XdtmxH{)yT_>?rpxm(KX1oV)C18M^jC5AjGcwd_^@Q*MLO3xuD9O25w-j1|SJP zsbjA$F0oQJFbB`Yv5x<&@YUeW=qTu$a83R|tpKMmR)AG$;iO(33Rc zeIOj&bYy8W3#@%pd)^b`*=A!4B?466E_tn?A-q&^|LXw0k1;K%e9tF0CbT|sUvx{l z2gs2s@w5t0!WW%+-uDWdin40pklII`Z*b7=xBiN-MUBE*ywz3tUypdnWx_zOml}Qq z@r`f*l=)`tkPex*g??{zOuWI-0(iI7X2Re+_h(uLOP_H94s|7@B+kMxlUEqa*uax3 zLD&|f2#4cj)byO`=>1%k%CILzp%lM0aZF|8r<1Gk>#$FjF*v65i(62J8M-DD$qRcS zlDtnbZxX!;0~j&6T*UqrB0hV8l!U2>>_w?Ni4q7hShZ8T`H_XOaGia%rr#VNJ@n{o z*JPu^gzgGKUvgVSDoUOlWo+FOfpzK?GBEC}N|eZ65sIlm%>QYu#!De4I7oe&6fbv5 z`MPry{3NR~pxzmQ6C=E_WSEJiqoolvr3IrUw0sd0OPO@LQ zGPn?XX?eLM(IH7_csrU}7L1e7@OLyTp0%MlmkOI0Xh<|ztZMsajkqq_z{P2cV67k- z{DT$NFrawynCQheZiWNH)W@Eh;73$e#UN7Nc+ZR{8h5bpvY7UAZi)eT+!Y>pOO65| zkr{e|MWZW#%X($vb+Co9QrQwlgzEw|dSDZ;u`nZ7tK>!l%tlHOjl|M>U1n)^x;4z8 zDAb`c8$!MwDk`3ICcX!X0DfSBpB9ATmV`BY1_TOLZ!Do0axZpp8(0{7BN17r?XB^m zD>Z9S9=p~*9~lo^1mhI_K|7AZafG6PaSM|^LCn8YatsnqUaAXvq|ksL0(2oz)1d)= zG8iP|eSn}sHrWD_*`5qy7*9N4k-P09%`ilM6Cm;=G$_KcIM?E7Dk$40(wD!pb+;u5 zU^6Nb5G+j-x{BOhKKW`$l2uVvNYFLpl28dG8BPb_Sei=6AsSeD6pmkSZe_$koC^dr zJUOPFg3)oJdg&P7Z;SRUyh<`t2f^DEA)Z}>Gen3+q>VPpD7h3If-?aJT0Fq93A(C` zn;<(b0EUoy)~;;_WX20`v*eN7Ks;Z;b7>#DzX5y+oyee$(_cCBE%VGlC1gS|l?ZM{ ziy*r!Gb69j(Y_W1_HUtmVGV>wk$1ugHKE8u9+bW4JI!(yLEGUEGuS4?XdzI7PjrYs zd_Nb^G>zo}Mse+h&mzx(_cFXKbAL^ccI62{^O1&tOPjNzWTA`{`~)<7FoD zEghH3vhWs#L1iHTxos-a?p+SqLJO1 zygG6MMz`fhHKm?nZyIV1U<~}Yz~GdM)?LPRNbT1fh@jy%{qeXl7;D7`visvvJa%B~ z*<)do&x_E4R>0Twe>xTBGvp=>0W4b2tqc_k!teSJoaC-;i<7(JVVv*WG75%txeq z5feebW26A{1-3}qnR@~;oWjXhoAyi)F`2cS95$Ecc+|8L6xWF~vE{0!?i}nk?Twiv z{%qlk95Duwr zozcYI&FI*R>D2U%khgq1yWr~14UqR?3e;(ZUZ$)NAAxQf5(r>d6`el}e&MVxP$J|( zZW>F)$H>bhjfbk#c)x;ouUbk+xUK?=)+ysIKkS+)`fjiit5Xa^S zAe(^V1{+dL2q>5cF<6W$j+{~nNFHl%1PvgDnG^=dS%Fu{h*XDzV@1Zx7BW)tNU8}U z#*U5eDhIrzF8$GMWikJYU*>{9l15h+>>E-0hhJ_X!R2{3?yRVZU~q@5AE+(woi%9i zhcrzrf1RBk(hg0TmA1*6g{RBE{RM}&Mx!-*7qi2Ya||~p=n)1hjuh!|5vqd%lIhCD z1+jMxfhELl{)NnGW;2FiZJEt`RM9LX!*eJ%Az_P)C8AR3ewDlhZFu-pTm(V4@l;?w z*1&?8)@=r!@s2s2RewPm1hBwmfYi(Y^A%yhSSdoRA)83J!WcwOJuyO)lyBo;RJ)S+ z1q*2@ZB8!?t1uW^$kRCSt#6&28xJy3A{6dEL{i3Xu!wA|x!!%@A`EeJA_PbqCW2!4 z!XVJvq16FWC$Sb#v$q-*r#J}6Z_B4u=!%aJe(ey;(qb5c(TKew43vdwu#s-0E@{*E zR-yarc_vkjFbln`Sk?(9tS|O>MCew+Q+F(#>dJ2hl=5jv|Oo|%>WALCc2M^C8yQh1qbCMN-qJ}l9bLRn(LppQk3L3s` zw+B?k{h|yE=ZJ6EXb`J_$`OM68Nn9JHJBX|;v7;tG25fV#F=Vcv7F>4cN z@`|UbHEFv#0H9IS468f7t8LJ^4D+QGOA2cqZUoo!@g1{rg!6t^x~O;ZKANP#DzQ>7 zwI6?ft`c_KWmZo%--XO5WxJE#t*SuGH{stUmKsjxO_r!pg7eF)B6E zpOyyi$eUaU>0_ADS$vm>qCowwFa|sFz+*$0K`W^GYO^lOsICSb`({dpHCWu(P=~89 zH}23~k@AR(@dM!C-$>df(a=X>@%-H?sI%I#{H+rpH|ln<49{Qt%nVHM=6IlLD1CPVMc6mZ^Y@_(w179hE%W^Kzy*P2AWL3>3 zl*>7MYfzTuVJX=|I;k0Rio(+Tp)k;(TGG<2*3JW=kjNKeq@;(1s&Z8^R_H~Wat1q# z&Vy+q<4`b{7-iszDb(gEXx!)!xry5Qpvy4QjvgN|_cMW$v45aSUNDYevF45G00 zJ|YA!m8w0G^yGNiCgUL@ISj&Cq4X5R2WLqjHK6_+Z-D>;v?B@_Jm991qd7=6rREa#Wa)#*o1>iZfvDRP^GDfP?8Fq zF!P#XP;@E#2y&x%SytL)`snJC3>2xc4F4PTtJo+{8Ik2gFb7fK&R*teAQ|Fj&^MHM z;S`J^(I<1+Hje5l>lbru;zftM*XcZ?1zlw+>&8_i30v1wIIiw_T`iiK6pOeZb|HWP zZ(o#%)|d^Ablf?^rGbNuXOd`JI9ZlpuOe{iECPNXgHr4TrheG8Joxsl99(-(ekE=d zpsO{+a2K2mV1cTkk5*A;#)hk&ri)|>w;eG*^$LPmq#lNx?G4;loMN}g7Xu=<#&yd8 z?ae1iN-}c+C6NRYt&OiMbEm}rR$tC-mZW7J9j6F!1Hn44-OvMn-M>1xm( zDlN#tuDSw)%r)0Q|0xZ9&@#wlQYBh8eBq5BruZtPk4Kt8w=Kq5f#E9R34qvCv6AkP$|ba zkj_RbBEa82@XW&vA_;^>h=^IllDT1-gxG5ZzaL-yYk8FlPOGS4Z^x1$p?ebBVR*N) zm1GPE*3lzTLNxm1I1vFkNODUTj22EIyS2-@vx3RloC_m)LENBuC8M@gt*zmpT-#2% zO~;l_&gwv+Y0*NP4L$0K910D7h1rjVy;2Y;%-WSfG*${AqgjTtM0kurLOO7Hp%=(C zaiky?EIUs9p1(vD8355f3IeU|IDk0Vx4jDqrKBr0-Q59gM*xb>9OElX&>`+UBoKHg z_jXAC=JPwCs6hB%jupqjO!7_8@&Nz38-n@dWzf`g6wde@g!L|na?qx4UtCY(1U+^3 zPVEB#N@Ef~u-fqPRlr(<4^J%5!N@U7i8o^I>80 z9ehN{MvI>)xzf&TB@QL}QFFzd*uWf18INb{RhZcz981;di=8al z?_|MY#b=8)d)YALh|L!_R`cG;ha`9+<=z@ANZ3=zjJo5K2gPD9MI`|oGmrw5VWrx^ z;rp7ZulH^7e^dAHvO`fAo$H7uKo}g|2X28Z1HGt?G^cFCci2&CIVyG2)o!OW!esUp zPE?dzOGYRx=19=M>B}SyLfk{Z48mvwg(b@HW*&ez8|`$KsK91D0B{+Z*eC;tgOsLD zG@XKgIER=s8lMy8n=Ve`v?gwJ9420s$H$+2`P|xWXJX#0)PO8`rUr2}rN_%)pg6 zopr_#03hNZ@JmJ~61fuqRBkYj5CwEw0Rur?LWrIKb-*~iAGansrOmmaV_a>|CiUY= zr<|8j1mqTB)Vc$S#*dfGj$m=BZBghff^RWgTPj;36oWH=J$g%43^QtU5ACW#N=jqU2S1>9@# z>xux9WO!m6psKi>%Ep)X^>@ZX%VJSc)1LFF+{3usLz%o<#4TY;;oC~JWOxo?x9P@LZCg=yB#M`9! zui?^G6#k8!{@e9AJB8g3i1V0r00j*g0Vk3GAUVZ@B?pTUotTIpqW1W?)dr*sffxGZAD#}gZ7A}H&B!u;ysELHyeSr%E2=VjDJu>)u4hq57$IG}Z7K#k zLt<2nVv)YmsUmqq={!0|=cKpCkX@3RE>Sxkp9!;+n>e6W(v%q(pRt($E+Xc|(hRvo z>Y4%yssh7s#SH3|Auu%CLgDxrh6|M3@d4ktNX^7DyLuT^qPb=s#^($uywJGqXj}vt zvvIB{y!A_KRk8{p-Qooq7M`M>&oKw7gm#5JOFvbDdOH>Y)+BoGq7O zi2=f#Esdd(cKhLC2Oz4t48<4F!SDtiHpV4>@dFYAS-T?U!I5KMcFJ#@$&(Fc?2m&(n&U~kBKk*H!%ud_heV;I z-IAF&>IiA>*-Y(w$dqL_WTr4NATc*;ZS)Ywg-PfkECWN41yuwxM70{nH==9d6}UEL zDnwcsZ6E|e^aJ=}K&TNyNLoM%6SIMd0-#I$#F(BJbl+pE?Cfz1qBAgceP@TEbWSQq zSIlIRdmibHhgZsYdeEYGM0I?~F-NdIPuNq8IT-9KV#(s}YK&c_x)_ij^BB8HBr+`I zV(lTXVzWgWIG5T^Bd94cFSLs=c(rRxqXAOGXd03z!7yu$$gT;Z?XEmRbRXQHh=$r!~2bKm;te`O?A=Q)o{H!2xBO%Z& z{z9vu2$7KJ8Gn$f>=z^<{4Hi2ZL6RdZ;J$aNeXUv;vf zzC)*Nn`l{Jk45=cih))%KG!MN%8O117UgFW*&70a@VJS*CIk;iIWZ(0I|20o;F`t( z!8MWtf@^&Tr*(nJh0tnsMLk2{Qw7WNlNjWBq|;Q9G0F_uGM z2aSyjLkBh-U%7PM1kjP#+k0-hEwWHKb6~EEBuow_Lx@Qii6G$M4Tr;lWK07=Fl2zx zOdH^E$#sFtg~LNbR2S4B;ieiiskITR z4H#}ou^~uyE4___5vP&OLqNsDW0ZQ35rYYk(z>xBK)}G7qYVX-ER6)gkU+s;tE`V8 z!IJ2M7YYW3hM2FYL4!*}$k!al* zjL;In7%?*46Qk`JfszD}Y>^6OI-@q98^OpCjO~j9P1Twgrh*10Frs%=RWx-5CZhBj z`VeTGei~8OG?D4X06XGLl2ROQc zgNT(uf<+*px_j_qVLStEC{IoU6KEbmCYwwlv!#Y;W|;;i`?_UL!j|CDSZuJN*n0?U zN`3f<-&P9uNEskW1`fl!VWH#7qe5#R#)Q^5z3JP~Qe*SJog`1EyX+O>QYQz*i#-rg zv?m1#7MOSGhK()Y5#6UMHlC#VQjt{5E5*R6Ci5ve%OwT#n6%V{8taG=lkF`ybjuEf zvMnB)z9Kf=fuJM`kR*bKU_6-`6IiM=Cb9HrO=E+;oxKGn6T9ir^z^fCz|m0DkpUy= z_=}K%;p42T<98a+2G&^EmtD5|s66O3whBg%M>Gurmo#o`@wWH)SUw%8~*12kcv zvL#WVm@)KdCJb-|43_8=xK1!MG+BKr3L0Y({=03pq{5G0ljnz`-p8ib8`+O+ByFhI zB)>W}$^b5|pI|-P<0h#$6k|dXHY@9rPmXTYAX#I91a!;5 zfJ%Lt6yn^8_j0jspjHG0{GcpTS)BC9VPeWg7A=EqDNO_RiE6-xF-Qe&Uccl&ik&n= z@DCWv$Yq0hL~8_HL=7525C4NE>o#`?o8}F&2}rHQX&6>+K@OzIU^9)2H2ZxlN+NHV z17nJ~k~)Eq_d)~7>LVbm44aAyp`Lnx_*{#PXQQAX0eUfo7}qLroW3} zbtYUmD@ZDN&()X*O_G`116SY3j56iu+Sx;tU-mz5;twW+>EBPfU5mNkWZh_h@$ zsc7}`Ify}KXe9&h@*w*qnK6??RMRCE`6UD9Sbxba?zE`_!D|}eXm7e`b$58z>Uq6p z34FU@=t~)?t2>h}$wc2E4A{}zu)QY~_xD7S&uQKTSDsNz<5lpT$aZ3Q`+ssNjB zp`r=ArV0N=2z%s1+~&dnR%J$0Y3DkQf%$BV?20dH57-9#u4yJq$F?g6pehK&aV!LKd=-ysmf4_$H& zBL>sT`{1ROg5L~MTwoF8Ulp%{NCdzr<9dkT9IaERRL<0O}KX?47fDAvD9=iY9Pl*2K ze zEkA$oa0$-^?rNy5A$jqCmOO~HsjZ!GMtbbCf0le?i1oPGBBTdA@o^wyj$c0O7Y-pi z)!g7378kh0-3UQ(0H|1Vc(85Bfs4HB%%u2uF^oTOhoKH0a|yyogbs!5CIL_Z6Ou^W z0W=}bdWoRhpb@lYpJccO`%Y(swUHBB5dlq4#z-ZHz#!tc+G8znx7dEVD0DL`LD-iE^^_Z<>r&lsvj>|iWgcc%NSU7JJ(c&lDsWjf8OW6WZS72>DG%d(G zT5OWg+)&zTe0)F=Mw_V-P!3eRGP_o3G9Kn-Ie^~=eLRqT+g#t8y3&U#G;9Ps+`D~v ztb-GjE*tlR#{;QZG1dZZD%)l4Aw(u1K_e&LimpIwm;pxAu^nOqZ=a2D0j_3cHR)j_ z7}mzVWgX5#ib_=$InU0%X^vvg@;K|}92}eh3P^0SZI0-|)l&iM7zAN>+71DQU^Bg> z8_lb2O5#UPflD1&mu@#u&3BFU#_fv|^~IBAOa-qY3QfI$5|Ac3t%j+9b)}2&&8I8{ zW7d#`Wd|`KXhL0$SK{I6+9WJYYIR8HL{JzJ?LqTLBNPG6Xn0rZo^|-2t0pj8Jn&mE z%F}TMBgxNtfohvg32p{-yhm-nM56;uB2e&~NqM*7&XWDWvW0<7ii*exTa4^ZiHnUI z$EPxmKO>AfbJAKlX)Tu;66K_@1F=P!Og`g{9M~f$&cneHnKYN;1&qzM0@d~gnV!MX zk@EB{he~=&MJQb=IHLl_o&}AG+OXeBWk@Wn0Fq|CWw1Wj*VQQ1(9`wtX#&ZYbgGpremHl4{02w9d zU_j#=2rcIf^c>Ht{bQ)!=p5l0?+VEovc>IhYQ|T#D&d z{NG>7e#?igL<*A)(`HY3jAGDOUBne%!6}noglld9oHbJ-3tcktr-)cK>45QB!!3z0 zETkK)G|Ml8MKh@IdZt?suSSt3s3S~y69CV?1WY)>s5U63IjhrT^GAXswtekUv#*%Qz7?oEwQ{4LowMimt z5fb-Gg@@QV@B`OXj{z!$gi_1nx!seA8eRr~2Cf0eXHP}*Rqcbjl);8zz*`tR!sO$N zZ_In~!?f6qkgi`xU_@TvOUnQN)$&V-alFBjJ#>Hs(FYY>yzOBI)$RO)4HbK^UV?yi ztTSIc>;t0$HZXjS%!m@GVW;FxF>eEh#X(5qI?cEgD|I4|RBh?XmdG_l{Gi+nQk?J% zCU-;v7r3!X^fC|~Yt)G$sPP>j@CM)$a|}>sLq(fCYQ~BOyP?CHoDYl=W@0P;bOv&? z6LcUm5Dnfc7hkZbG^p;5oQf^PHST9qbED7?4UP8!5Gn$S0Pe#5dR>;8w|2>ixXgi! z97PV?J1f+`tG+@Vid%W0lnRoZhYHVI{VFEGb|rK{9fa5U*FY5h)+KpM()VD}AWKs2)hynyUdur2JN)SP=-)UF{FUPqWg zV}*mtWX^3guyn=&2%;zlLN(RgA_4YnAKbDv}HU zM-CA@-|{nAovAQ6qJI`EpQlj@>Ln z`NMu1PrQh$4$o1qP8xjCgIf7kKRlZWD_~09JJ~^zo{K23W8E8^7=X`e`(dkzv|8`% zHoxEGJ?8LFBxcbGu0@P@X!Zeso=f|5!Uo>U;03Nnj5RuN1_DGGB^tYclwg@AU&vtf z&Trj7J>@+X;|Q+-u5rbzyNs5^egVlKEc4T8EINT1C*4sZN(8t^r<_+eY-vRqQxA$XH ze|H3`QJgSrGT1c=Yz5j+JyVc7?KL(r9~<@NsMG^pfUUs5q5=bl>g7=|Re@Jvp!h^F zqZA>lxIx=-5kdj3;fOF7b=VqEhz|sV4sAnicfpJYonK>9l`swUiTdN#1~sKD?LvkD zK;cbxGabmDLf|#q1vu;^vFzl92JjO#*btBag?*F^urd|4<4fm3$ocRahLS6i=G3O8 z?t$Jx@y{LXrAT9jCt%vSCMTC&SSx1Li#AtRXy=EhmOV5qlU%5+j)n=t0A)xX&8r78 zkH|JdZV$HhKw<-qQ|aC3Mv3<>BdFt{NwT+%t7TbT$VH$K0jQf_G58f*YH_1IbI{~{ zjZ`f!)m1NZ$?2`lqTlbU4#cQ3fW&*Ul`?ndd5%@Ty zaNlmWh48!{~`Wj*$uz8eaNQ>B>zttJyEi@fCBm=FQ7VLNKGzJO9dBi9M_ z<^NX$++b8F^#}){F+;K(zn7pOO$nL7G=-o*@;`9KCly%Y9&RBmV8B3&rIidoA%QWA z$Fr%-6$4FEiKUwoDa=i#U5X%D^20bw2V-ZE4robt@}WQiA!tl2!D^Kkq7IP`9)zA3 zJ%{WL4MN2i;$Ub))xlY>O6iDPC=^A)frMNrG2ktLMXm}J)&8yn-VQ}|7$HR00LWa$ z1@J217`r5ou*eiL!ssnoHrr^;f#lf~C%vnNz?m~JC|GnjL-SY*gUCBASY=QZ zC;a;Y@pP4E@Hs5}^JEvPV{eptP)J*iB>Sg1|5_6X?}xeM?U zUp5!u<+;`MJS$7I!Rr)Am zsw7n=5kac_19jGh{yFIWfi~qKvInFzi?^PD)9d*I&Ig|cGhqRZcFjSn-Sit|K zj+#aMJNVFCmOb&n&+Z&jDBXNe(Mb_1=8 zMWfIQavC0a2d1+?721gC8Q4V3w3^g7Mbeo{}t|SoVkv_xRPcY?V!B-~PR4n_mMgy(daB+pIuv1nH&(nVNds3dBZ1u3RlqhK=Ej8) zPjK7?r}S;kz^1|BBRo6k?ic6>>&rZp=pYUvo4W7HEF|!;E5&>h>>DXioBsK%>2co3 zpV>JiR_3AeQ6U5OV?^I2k&eXiYn+4aBP}fc&sTp)vEd&8;Q8h#sN{;;kj-E8I~4lr$*vPj=PEv z^=Swq)(GQUlw0^jC^C&G%J!h7!|%e|85qCVQhc7bFyO?4m4Ilf>xmB|C|EIZFiqHD zN-r}?Rs38KaUh|<65f2Cx3>#64M|W4g{fBh_b~7XvvOF+$HV*=Q;=G2%5a`paGmV$ zNdj+{S`R}zeT3fQ+ybKfyDdHs{XQ(8lxsQ%BryoZmuL*ebxUQ{h1j z3|e{TM|qv%@++n(J!7+1Csi+-t!YJo64{)&3rzTJ;J&Rn3D?yH*}idtdVM9iYd;VI zfyROAe1#7-&Z9FF?whPkMBpLx!2a4=@dP@nejQ$4!)DTu&>*G#uAuR3{w6He&GkSh?fCBxcjP={v5<{Rja|!9!Gi za#4zO?2va=Rcjd}21>IFnZ3OADn8y6vpk@_?e)@$EAP%PhmaV}IzLLDEm!L!^o1)- zu^38UEed1{5I6?2i}bI9u$N`!A9B@xDauwzD~|D4?A3shoDlyW2`f-gWWpRJ5y?uW z_R>0(*JSoakW(2?iaLLDy+n9)^fAHW+>W?LN>^kNO&g;WH`E0yS@(IlwoOC>rj zrCk;*7#|grjJCfeN=)U6#tGCK5M6V)^(!zKp9Dz9J{IMvhEP$A{=!=a(1?=RDzu&mDVW_{*yrIm|N)Dp??1ZN6ZHWBu zx?QVEtc3AgXA^GBYXVWt$DKN(j1ELQcI8-&BSe&Y0n-hZ_mX`s{;S zTst`^DYHyJAqDHfwt(_ZqY%tytgd6P83u7QuSk>bUKUSSqM#D6YbLx zXhNYt`{M7_c2%^e!2`De$-#5Ir6M?l$a*~mz+dDN&RS>ak_TB0Ecp}dBI&6^Wv^8C z?kQveNTX!6f$F$>pj8#a>xb40vi2q9DNUzmg3HW_nd0RDRVZRYJUw|zT?`59-&c*q zY5rqk-ik0mB8$1prrQci1Ou+ob!cqjx9X<}EM%8X%?OWvf{WJ@VT9Xd{RI{vK9!z9 zdOCNnKw91$J?H|20a8STDdqyL$$=(cpcEmF-=aN(7F*Fmrad(X&qliy2{PR)CR5AC z*3o4#5Gi1$L#h<=D<^@xhlB@M){#-5SXf)Hv(&K2F7&*ASzChTjw>5no2&yL@MevG zLZ#zJ{2(N`@&61LfRYo7EqHHA6CYh`?xsF)`bcSn4j6maC)=vHh#Y;=h-5%m6MWI? zy3STrm}^3`$Xnzfa2#O3vq^IU;C0bBIzE&z)WnJ7@v}-SoUQ;3_^H}TD?~ugSzPD* zU62K&0)B^}i5{^_I?;IS1#wr)lKOx_UgBDjoJY6z6<>jIIM7x=_9t)XwhA}R=AsI~ zv8hZhBuJRxU8QEmPRc+Ak=OCzaSP(Gy0B9+Fb@D8*9%s@ZXYJXqQ#`J2Y}TM4a$j$ zYzZWef{So`$+555c8g-Wiq_M4_Y0HUSA00HrQIgI6f7DtDX+LmV3$FZP}i&rCQJ@4 zHD2Mjp>*w6>&RirPPChbUh5;thv87nbM~ibjc^Cap&X5tR|sMcT4>AC?oy=*d7d-t zQQZgJvheb?8Xp(|4?}P!TSOsFvA*e+y1wG~xm!H8;^jVRrAF7!Sn^eXSMrX?;d=j&T>;@_jVlBw4oAhde@aKmGU&MPTs^={d0@WfCg zmQt=3ZmL>@gp7ABBNBAM-_;M&tqcShC4g2FC(j@xy^nmo7?};b*JPMxs3ccQil*sy z-~cMVzK*WwhOPl9e4&2>vl9^Btu6b^EJ}G7SZsX6NaP|ev0@~z7DX8!p-l1Ea(z>z z>cQhiEDS1mAWo}Jex%I{x`1G^bUYz1H)diHkgQPEtA#2jEx18DPqA$g={Cc0BB@f7~|AK#}}*c+>YgJVL6C9|qCayq-Gapk3!hgU3!&p*I~gwTx9E3_sfD zzzqjb)H%E&2V?OxcS>i`QfAENuu-|<``6xSfObGdZWJLxDwWdC=!OxtaH$m0+Bw=n z6}QB&osY0N{5~OBSHFlKf$p1~vD{3q(0vN=T<2U_txK)0JbCO(7;HgI7vBos6n>z{ z#G`V$rXD%c~ z30~eMXfPj8n$wYw-*FJ1og&2!XD;>`UGNP0-e_AZL^ww-6jiw)Zf_Lf&7MWk($X3{ z@6NJV1y8QhL2C+uVM`QJ@k*KrydiE&09HKW6wffMS#T}Fg(qlKtnFv%67dK_tom#5 zuJD8(8t|+pqO$WgHXdoSlfT0cqq-5;r_;x4Nh!GuZOynfOFF`ZS3)wX=vbl(79tE|*!F?1+cakj)efkR||;YE2y+O`^?^#vL-1 z{*FQS5;!^#SsxhHm7!ELG^QE{2Stzojj*TZC9-%_`t0h?sf=5g2n#uruBU)!Q`pqp zVO@6G=CIiEbjR#mgCQ`48j-$eSeXEn*&rRx;5X8nIx_=BO^Y*+;lu_O6i5YZkCJE% z;%G#3bakgfcU*{?;le8ka|E>47&{meM45y1lXNj)dTc@*LKANg z2vM_%#vH*L14;J!&9m!?1Y|$#2jJ1{Nq)$X=3ht)v3<Z07(!Ts#Cp z?O@VvvoZ?1Zyv(+?Ekff$-baLDtG1a9@XVL1KYQB)dRv!<}`^2!kFoTK^nR@-82l~ z8vM2ak}vn1J7KoKzRGQURpTzB%+4M}uI?F-OQDptC2tGytv<3+9cx>86A1|9sY35| zM@n77COI-V?Zocq5H026+ZZ$9$C?UH*ujqNX%;<*uDn5s*XLT@{6#-V50REFp%$df z3CzXexSMyVvb2Q9y-UzWL(0TLQ(f?rh4QJd_W%g5@Kx(p-v)?9rN7^jL7oMRe^8%m zUz>PBOo+NxmVKL2qPula>(2dy83iq4vOY4I@%- ztS+53?5Ubv?h_;nXZ1+_MKFR4{8!$*&^^Hb^&s3BxCP8x)f_qGmYhI|u5j>q>VO)Aq?Om1Xykce=oa2?cQ(UP9{w-*-(@I#|SZePGrC zu6cY4rZ!6~fY6sCZkb~-iLY8=IlN*#1t|{XNcT>h5~kH}s zK}A_r%EO@oyoHC^IjpM|Sg!iHb4+Iq zmshk9F8MgYo~%f$CVWv39Kwif-%XFJb=V8*7VINN=|Z^(!8Nc~1<{TY)M7&fZ^O5y zSLStXg;{(~TycxID6)xw5C`Ry6PGNbH$Eo(Onz)s5w=`isjkS-;xZ z%I}i=6E~0^)aMEiO3sH*z-#0g=WgM1gX=xLW1~3J10U=7f`0ji$gr*QEarcptq`)Z z{6NeE-z6ubnd(vzP3Utxh@-L3W?~Lf97^|M1s9RY`k?VD=$C*LLFlQ0C#54b%6oEQ z#@ok~y}#(V26BhkJfZE#@;G(fCe2*AE{ zuLdBrY>)+mMO8IQwFca+fp6s0%Hg~O<0?S|+!q0EBaO(BhUm${MQy=3c!mRqjuD1Q z{WW%04GkEuH?LRU?FRD6jKChN225qAYW#(w;5C96YUGlsZ!)!$R8BhDup6jVF`@we zt6+T7Gkh-jX$>3UyN`g(AA`pEUBIweZq|@!*N{Q1YDuwdJTwpKHCLURr|=xT8X@6CD+-7;t}RWH8;HP=051VRwu z@d$n>T3?h`Cbzx#trd-Oa@(|fo4v4uii!Ga=(IaB7GGA8-?c7}&>X*eu2o@&?-yQJ zwRI3i?Lh^A;Jgxt?luphGLA4cT$r>JhS(}>Nkb}lMTFT}0&CcJ-9GHkT=u5KmfB(> zjj$RCE0+ONM0A&Gc~L1gYK(R4Q7NgQ(1%mtCC^PI!~nWnXh{1wTm%_B2>Tq8N7NL> zi|FR}?kTe;Ib3Onym;_as6Xd`5dE{(Lj8BOz%@nEx{KnS7a6Io^+}=WT=v}hI$`Qp zJQ<=}KXaT_;lcf3CtU8=dq;}?)M?MJiRkB{@rd}ni)S$L4pdlCGgywFxT%a%*{!Xo z!z64~FgSt&dOOj80q6~H1XiU3N8TVn^jQ1+HANux#A#2128((cE~Qvk7ie9G$uM14Sj=9^sRx3hC)D*EMeOikJg0Tb{0qg zRdGOczxkf9Cw_TfUCzrw1%7qZnjSP6U_lg58-fl0mIBjnyf8%ta@(-d-PZ+sAX z)Phc9Dp(%$sf!MH_7=iH7qGOK!;5`#3uLQ~LF^&RUPDmxYF$ETuMCcP37T-gITIm+ z6`t73M@~WH_=&RNr78>z{<6CYNztY<8bW-TkS%-FvD)C|2&7kq*(*VxBYT0EwF^U> zK)RYC1x)3uxp)ioOfeAjt08i@*FdkjhAm+%3Rwczo8i^$2@4`& z(OYWF!F4=}hhGx3C5j~SyT*BfyQ~J zBJtAGT-&gYpJ;YG(2EK#2(U~^FnvmHwP{pUnm$KFKbk^r1Ur6n9KmLc7!<0S&U6@f zv1`;~cdDWHkG9@26IhfcMD`z{0RLj13@G6H^4>ty?tqVRvy>x-rt}34EgphIy~`T? zJpSpHntfUgVr`-3>o4o~XLjmmKt#`4UkxIU1k*aG8h5A&_HBm-Oh>WRXHc_$HZS2O zA!Y$WT$sB62gyM@!isOH_+i~^uK{+o94Xv|qLWjOK^2w0A^B#gRkX1vCN9pJ0QM(~K{sXao=0}<$4Trca)$tTPCy2mu@bu{ za#YfvuyBPgP|LdJ{hhRq28F06Esy|BP1vDdO`qQT6V2F(*$L8k0RmQb2R zT09p>Xq3jQ%|u$Ea^Yv>^DoJtHLd(W7Y%{0{!9@(cthw++NMon+@+IQvuOFFt}sSB z8Qndhh2ja=r2h#?3+cPM`oLk0`G*h@Un**A6?+1qiP$za?hnyW{oH0P;$%x98RPR> z*~eCXTUYxHM)f|N2q2^(Cv?e)8>7iPcs3lJ!3r3nS{vbek}?z}u(rh&RHlst6+>}> zp`cu)6-`VX^AjcVUX3IZyT9x~#f@gqFQlT8zdFmUo*N8B3^7#7Vv8*;{m&lo^nGDJ zDPbGS0Qdx?J-k(R(5+BMU2o zE)Yu-gf1*qQQhb&BPjCxj?_;vT;4FUcM!PL&I#R_QEt&Tg~(pfLiY~><3t4^6^qyG zvf)KK()cjOTnwV?o<|^`|1V*r+_FOz))4mE7r5f7;2Fp&{%|fel3p+jo*YNbG(JP< zcLi7LAQ9DcoG(;#TW#?*;HZ%l@L0&_LK2S#+);PL{7cmA%ssCh`7Eamfl;yXIk*W= zg$8wKdD9izf!e2Pez-fKfdJPdgvMpg3FA z-f?zleuO4jvvM7=i*L6>jsgWoW^g={ML8;#<3A2J@2KOh)inV`&Dm9%V2J>2GFt-in>ff6j(YUjzoN?9tv<{3)TqEpr>8FI$RE?=Wp{JPeFjEa>P4m?01k zav16Y#s(fD7-&h(Y~O(lM!>ovqW*n5c(_uo22BNMBWHm>$(*hEJB?&yGAD*AhE6cu zt0ucyu#zB1F`#*%l;fW}yBs#{W-OMtkO;zL>kIfI6e8>>;|w+#=Djfu)!SKtqj9Bi zz$HbnRw_I-wx|fg@X^&T(@}xr7Xy_7Fg#*b#ZZ|HiyPqxfzop>#z|ss1EK7+dgRvsagk#ny)O*iASU1-%nijj zKFI=|z(-trwGxow5ajdnLOhP#R_X&C>;l)FVYR&CqU|oaWqYo+U4fAA+FYFFfVq{> z*J=ewBoTI65v06WjiilXAui*~ki7!}> zbhFd0LhJfTzs<}}u)$3=QZyC~B>`@-6HQHOq0YN}wo4QgB+!;~?RUE9_n<_n5rL-F zxdI_Vh$8cJcJLD>du4wO%#>KIRV!+KmQ!t5;pCBV&Gq7?CmCmN{Ijvc@$_w z^+?fS?CLK7@=4c>fjQ>T>w0Iqh6%)GWC|$dLBKv;y!a9k-2h$Nr7;})De0vJY#k_m5xkDAz^YDdx@O4_pE0!t}zIrmRE0Ybyfn?leMJ|S40>Dp!njc7UoLl6cvC(Ok-H-Io&eIzLU1iSacOEI z6{R6um57JjTleLH$O)pb2qN2)dd}(y!04&q`KvVyOU4FXmW8Py&=G#n7X(8?kp&?C zAhaA8BZUXFW-0RM^f083wOW=wp^MTf^RBBWi|G3AU!!)8*lbP$i4`3(7WbwB+A-nu?tki?6oZ;=t65{A zl8&+cO@1S=w>G^7R^}z~edj=`H^25LE8n;;sGZFwpcDXB7eI*F?Gh;kRsnrP=wiAu zCHy@lV4Tp7*_rL00g_=}2~qxN&&q)znazx1yWfQ-jNNp5{27#_U<%nnbCWcf=wIuV z&Fh4VEWZBOOsWORFezGqtq=6LlOz4sDf9@gPN&J%_V&JY0^?Y}$B30uU5>4xCB2u1 z3^14D*ha(+-5l?>Y%Q~AA4x|>ZJqoWhLmlZ;2XIA_iXFn-NjQjO&AST$4mPssdr~k z0ftRX!y)`r=kotvc-$A%O7G}j5E#p`Pdb`RM^3A=V%YVy_0Ouu%ms z$QgfC!=}a?PD6q92q=SWkX3Aed>JqxhpYmOA2B%(_EIt`TMk;QW#VcbWb}oq+74jy z{AL8@V*;{wGYGier;CEY215+hp(Q#g;PO(c<8W1xIjm+*pXzH2EQ?I*C2k5d15gy6Ixly=5?(uX(Eam4=&PLN1S3VV`l+(wJ4r;v9$7rs?~4 z$kNGP$&ssbK|NQoweI)U$-uTw4M|1pn=fS6{bLRGPK~m0q^xI+`zEZ}G@@t+(I=3M ziZ@+=^^d@3{TP`4m)l#r@kj&`) ztiR7Wl+6j&!=h>GaeDBZ88++=!Zuno2*x zZxmo-&ymI*17(fDEM^U?SmEX-{OySTKP8`}YjUmy)tbKUaS3AjaDPGcM7TcNDKE$V z?szLYQc`T2I>GtZ8kxWhTV;&g?gTL-&j7FiXa+L&fPR*y)l{cid&~vIDzoD7Wq?xX z1uoe#zGpP;EbLsi!H0;zotl0A!i2jp9yU?S24+&S>5uZJ9f~VF`^u0f72<-laDUCD z^yE1HMnopc=k}r;a(J6>NDC&QaO`tIp^CuY&yRCjl9sL;?@$#pWgp&gu9yVAZyn4L zXsOr~D&*cR=A$TEFrPIaX6i3rq|a#*<2Pc1xKb~K4Hu&cRd*3m5Cew%hbU4h1B&Cc z`6o*$DDY>$bns6`!YEczwHo7*dfVhcS#Sxq9qFAuL%PM*@znIp6w;3oPUYhsU6T== zxwmP4JAHBFm5*xmU3`ZTI<3hV;bcb44EU (=Kfj7k1oqq%3uOkm%Y-r9MRic^X@~_oRc<*Ue4jA84-{W{p5vpezZA-2(O0Qu>rQ*p-JVV`sV|mm}9g4Hh zO{`lKCWQS>sv{)a8~M*lFrwV?!$(R{n_rH)@@&*Mrd17?X~WLM zi0@l)4@UF3$UH&vI+BdpH1A$V$9NSbqUJ7i14s@NAo@cDKS-h&!&$KfnAmc^H51z#6t3k#A_BrtW(hYvk4Y_%85|A5|W|$}3Ls2?rS|21BI) zUn_z|XDOYC0SfiVPlh%T1}7C+NJKL|u6$9R%s3uWx7IDaIeJdn00U}0;4n}Is0?J% zoO12{GGcBBTW^e-Q)4a5YU{yE14`tRFR#x-rbfyb8SzmZ95jY&4-ld_S^|SS7UD89 zRwc^4!2514=B#b>39l<5jB(h$-KH{4-cf@My2mv?Zt8JwOsYDws`(gkWV%qCuZ9xx zu)0{55^-ICvXJ&;G;bknY}w6|D)YQ~;ChxYzcE z!{I<-3;CuMj%Uzb19sijc@t(>A=g6lqr@%8X%^`OFCWYW zwkAiVkz(0EWrQKC+6(&TR9X;DRFpLBp1VVb3DAUyb%G((HORAWb3$zN62th1d7=|x z18o#E;#uKU8_syu_&KbZ(%v5z{cmL7MgwPm|pxU?o+95|Gw8IT0R z0t#x#2(WaxSiu`aGt8K*dMS}^gJR;~oF^Th5FtP%g$}X=J+cNzO;4su-%XE~O0oxu|c;=P}Y`J5L-Ye^$)u6vy$;@8FRJ%aE9264p*R@(4xqCBo`4%qA0= z6VFS>hnGx3))t=j28$I7B%9!Js4_HVKLmMIg0|z;KY{szL#%b{T$s56k19|4)DRFW z?-v*tvqz{c=|JtB5&|e%!w}4N_ZswMa*mv@YXnC*5Xug&)as?#6*(ZIi)9N?FkYla zSlwK9<&HI2$;<;)->8@+yR+4=E$djxX8p!R3lA;zydoof8)3N%48Sc)A1 z#%vL@HZPFhD*`u86b%SKB9^SLln`D#B_?#FjdQ%$4wkixW*vAvHOdK`&FO*uh{frH zdNM4Oz}11{N%3F_3`=AU$ihv{wZQKM07w;3IO;()Q$QgQqDZBVVBy!$%}76yfQ`x2 zk6r+#n?o#BmghEEP&HksOKdjDT1(+Y4u`(=!VWSTsas@dB+2HZPNMQvt$MB#oiynh36UdAKk#rR$ zS^}JYWHsWVvy4`~N+HVyz^}9@Cd_th&-7r@u!NYT1KA8&p0 z6m7VLLO7G$B8(SuV@bB0~-Qz$&}P0t7-~Y1+rA(V(Az*sDK!r zzEVjy_nNo?&YlMZJQK+DnNNc1o(RBr&FlbO$1}4`JVGq0i;3f&F|E71G?>D0VUFPq zyZcxJj(!*L3NWDuiu3{rTL$L{mkumw0a>31fGo5GJfio?6TcJvlz5f;tch`^Q1I!s zh@*ZsZjZ8-?1(JI{2X!w2vZiwsKO<+J4RbKhGU@9Y&4r(79%3LoLDLyJY+@e4OFAo~>_zSxc5G66%&0n@eAfvLEx>It25x{CtRAlK zpc1m+w*ua=ON0YFjI=gI-y79_bzN`D9hMi3fgz8b#U9XPYuz+p#EwxYeiZfR_zuuH zoiso(2|qpuz`$8)YHOyG7XzHaE5$c;4B=gu2@L9hM%s(I;v;l0T=*(6eDyb^;86b& z^8pS~s-u#nl5D8A4N;1l$7lg=4NOeu5b}osfHEneVZE0Xrg@!)0lxi)%>pAcYqT8^ zIeq)f$nAIw7--p(Eg29`tgK6Auljx#hIxTf!DfI`$G&||MdrxZN?O;zDU+Y*5H1RB zib)Z~@oQ%NjVpPQv75z2T5@?b-sQHL84N#)0EurxG(is#P}KTy-f08~JNW4l#&9(r zTB1c6Cw8_mQaFD|l$hb+g z??YSFNsv59Cc;9ZI&|CNy?H`300E{ay&w9BphyR7krwD6Nbs_9@T9nL<8?P9x$Y83aNsy}?F<50PA$c~-ie+3p(deiK-Ej%8 z48027jySS>uqp?MnIvj-2HYM|zJe736b}_4!&aK)d&{aVDdey;*c?n)a~MLAvk9?* z1!BQbx-EmbqERp@XW6mk`=U>70UbHzDgaHQq6G+~AnI)_gs~n^!lKs`61vJ#U65^> zcn^S7SYE_0HtDBGOSgfG~sv-TNDwTu!#6UHcfsq_n=v65c z@4Z2&FW5JH9ua@_;|9?5Bxe8Y{E@mw=+LKAQVOgzY&#C+5u^X<)n?1GE=pL2xLCb_ zo&4k-h27gh4`^0~Vz$$J%7PTEAp+jD(Mpd!gHT0%M?JrC0U)k^lyPypa)$(twQ<}S82kL<8WQKF?U$!BfsqgD z#eY5l)1dt=SpEd>h`390$A|@qE~OjvVi=oi!rh639|;j4b0dA8Xm$5=*YTAQ#d0ho znFyqZN&%|ur10=jT!?Ct-HYy%Wxhdrz+iWTDIMmjoDeVkWs0=DgFnOQszT4`l-!^k3V<@)Wuhb#sL=A!>4J$cHe>~6NnC~f@_QnrkNGM$S9((3@E@OcN?Hk8Y=L-$$hp? z@D(r=fq}_Jd0-_?%Y?E4fMt8vl(0&G%r!=6VJ3JCLz0FEOqt>|S85mmNE^O^Gf~mm zkU=26wiq0oS&543h5&L-V+M|kklB!_WD^z8O@d?5UI1vW3K#(*s>+~`71QSv(kKG} z%nIBJ0iw8;R{yFP21Wu^2pm@u6fzXY4nHLZ)TY2^Or#nsi4p0Codlp)ydPE%Ivr$M z0wj1tfW>i3Pd(DfA;U#*5Eu@!1VUoCU~C6{ zuX5Rn=>sl%rr+k1THRXELIoeKJM49}HUVH@{kZprY=DJKD3koJ&t!7)cGNWs(~ zY8#o>$R~~Ap_JWA@VD7YS&{{@&Rs?Xn2$$>sc~??2JpP@J=cwyn~uYj3ttH_*lJ;n z4vPUXT5e}j!%9XR#wf4o8g>-aB;&lGnV;1ra?}j&@&y(@B~ZR0vZwvj%1<;v%p6?cN|1;3k#Jo6>S)I5yZBq zR1si1qx35HYs3MNZXp}_gKp5ECXS#C@DZlJEU-m@nK1`+K`4R=o(JHwupAHqA^a0q zbRiKdU_tUhK_@iuvJ;LwjQknLl*L)&ykUmn_EAOJY_SO zupCHmU>a(4KiAb2+JJbdVwu_zhHV+M!}zFX+f7%+Lp#7F&v%ho$KZ+L6GQ{$u%owK zUCvILiHu0&f=0b1UP){iV9b?zMhs@4MhY#nP%@Ab{2?gTAEE+;0f453g%dBWz!u!4T2U~3_`*}MK$7Y4Hhd%m@(*|d&PAh3SwRr% zi-ycATrDhMC{$Z`4masCMUv;=Ro04;KGV?wfKKmyxW9SuBpPQr527!D*=+!?UgBp?AGmukoZ zd>65%ls)V`a*RSDj503CrZHVb1#s3x4UL7aLFmcvnPLO$aPa>n){!>tobw|AnzL&N zum&ID)$}5IGF)RLy75#KIs|$wlYuK+CE1lz1(Fy1=;f&@QTJ!6(*ZDy>&qE@WN~#S z6LNVhMM7K&#=1j;%n>zf(N5)5N#I8?fnW8ZB7+PWyz&{28{T-VO5=xbqe;*q0QapP z!7l{SKmbZV<4_865FJw!J7WKmOKXYg8SwF?Fsdy+ne62m4yO>CL$G*ZPn>Iwxj-2O zT@(|_7?ouSbIWdGT2lKF%@OIw_YuW5rr5*?z8qV@TEb+%0C8U7QP8J|9CW5CY+sDv zAm|C2&hfPZD?cJJ5WybFziCpREOWqG)RO{zIUxx+a@Lllb`F~nsGsF*9HStzdPgiy zZ25H*HK4izZz1J(c?hDd&$!;K!Vgs$Ej?9x@w=-5|le>8Dav!=@3?nPv}Ea;;<1c^JtLo@MAxXslEw9)(ubbcCyl0 z_hHqPhLE_antK7lRlg*wZS3uE>z&nHu>uKWN>3>!X9?xvmHrMa7d@{!@|;m6=daTP z2%_0o04^!#Hxi(dteR*}zRnK2>xfk;-d0yNiwLyLK8+WMk&Q`Z($ui}35&!7b8xi! zL9G^iPbEp^b}tbYFob!;Ual+iAxXB+-qIADO{sMB>}R^ zZ1v6RO96m{kwyo5Au*_P{YcqVcQwFeKkjs=dpT>nvZ3=9piuLQ$8dgRmX(#>u3zIm zD5CHc4K2tw6{WQNo7zXk$$^BM)tRc{oJ%5cdKdu{Jq&qAYgai#kffWK&7vXMgldLh z5jZIqi3d$2O^@=Vvw`FqD+@Ufv_SMPYDZ_bWO0CB%;wXA*qHHBUU8!5bU4UW0VD%D z?4&YTv4{;OTp*LQk&eN6q!Uhs5?)ih6vvf-tkaG<8}~!i=&*Z`mGlsfS)}A0^76PX zPx@JDt_Oc;Fq;I~4o5t0;5Er~Gnb1&FIgKLSQMD~B}0Sj5Io9WgG<0KBeiDJ7|nFL zebgEyH(ti^jR<9P5H;J5&VLreg$4n~hio9JCfy|BR+AK zHspr}B%uRAgdT!|%Ve-PTnyrpIW>1dK#h^yKLI_62j{z28b92Lb0_BLoqa?Sn3j1y)k^r8iqg=t|hH+ z5kTnBl&-O$Qo5`yYX!<{XN0>FIA2i2T5~!ZRzwqUV;=*WLlHTj$IzI8Qq;!AAVm1f zI4H9ifO(v><5T&;igp08&H!6rq@U9wdWCYv+(FL-#>nZv zHLVUGFO#tP1rTun0nH#@l$p2Tk489-2C5;w`QYM&oBI&jUBQboN4TE=>YRP4oy+9C zP=om|naiud$DdwG!6+m`0SwEnX{4JuhJ?tE`F(`K(csIe5hdv4^!`jwhuS;pCW0=C zOunp?2cvO^b>XWl-30DzlZ*7=*AtfP)5;ngdoP2lwyt;}jRz6f#KXAp2lxUJwlul2 zx=E}UVc0Z5@`lhDgXT+GBY7SPDJEX2f|_WWh%$=@LP%R$5}{HOJOW%s&`d$_35$ah zs-*d0dVE^wQjBbriMBTRDp2mXeF@`0reEP-`4%P7)Oiu?k3z)^KSf$;~T{ zJSu+JWr^cVQ!1ZjAn105Fk_9!Gzl@lJI@7i!uew12!xu^j?^%7gIJe>g z1MqRph0H@h@dkDPgeCV7Ks}OSrIxU9%Z=;TN_OxykGd%)Y$-1qFte1l%!F9xlZu2` zVu`fH3>@}gS}V3lkhS-8z-rc@uMrPm-JIZu2`w3D9GtxLTv9LG)|4KjwG!yWUJ$IK z#8?5KJ(Gg>O2;*yx&~j9l>$M z=%B4-M)+LD=egYegC}GovOT&p85fXAb(;)9I+Y-(U|R9q3v&YHCW@Xg0Gk-UK$TaR zOnggIA1E{O-`4F76_IWLVDTJ=paDi-{CxBHfK3fBz)NG2IS4Sy!I;(Y`H;N@ieqkt zo#PT3I1FEm0z*TQWeot)0Ob}r?&X?j@)kdOCrZKSE;2>n{1Qks4G?cQHPH|QxZ>?g zb+*@7!IWAlkOoCj6EUurPeT}zE<>?m3=U$KUzcDYl-~*d@R1Y-47&#(Ith|ktUn=2 zwNjzcPL>g8TP-O^C5lHQdh#;ZoGc`|CrWDCQ_QlNIf;8#IaAN7H3F#O4MI%=oohoJ zd9igNB8sRV8rqNqfa5pZykWnVK}Tqa&2&B9)jO??H_lL^CgR%G(qzltWk*)L{jq6Z#ke~>aiMs5xkP^MTJ0fXWCK4=U z*&*mlqydaPh!$EM_XNZ+M2WOZ3uBXMAbP=cH8Mg05SksBh5<+4V-Ub0&ia^!0R!); zh+q(Ak-YIGIdZwkQ8a?E@sN<9hoU8DlR@;6Db+FnhmbE~0@Tc8#Cf)Bt}kQoAe?D- zs=ld%luQ)*XxeHm{6W~U0piPLTb;R1xLcbg?Z$Uubo0f6#E8JxKrMqkcOra%z?hg8 zD8OOR2<=lWpl$CtnzzvYl-O#q%!H=|5qvT@OaU8NEXX$Tm7djpzG zksB#`g!4&jR=SBJEmqW-&xuZ-H5Tqa+j3kIluvD3g4f?Iw^5%Q>x9dXnfov7ZllVW zfEmO<&N8Nua&Z=tq5O_&XA4**gSi&YPhG9bd^vN)f)ci*|l4k0s_Qe+P#jw~>C zqc{){?0QW;c61u4WdR%a!@(3B3pJmB9Hfy`b`hH+t19R|f!HkKqL4={0S<){;1~kT zND3V;GugBi;hV-3obW*Y*>pi5#gCrcg$j9gri zE2Mm**0Q43eD9LIY(-BhBH(a^Xc=1=+Q}+Drtv#i8$yr;=Utd(X$cy~OQ&AH#L^a1 zs4n__VhhOYGK|-srIcx$Fki1sXiH>0AvihG;OPkmu_F3FIpy3TN$$rgB|h${2z3XS zhg72ifGDlI?!M7Q%m<*9V?xF+4htg!3MfOFK)lzKh!Mrjp8Y-uoc@>|AniG^RwQ9{ zf%81kgpSEK>U(}%npBF7T^0!~%tN~dq1c@)L8hptpaEKiDqQQi5?7XjvWbLw6u7Cd zOyWTsnlVXKM~x25vwWbUqwO6(&Dqxxa&VtV6ZY{$%F*%{4dat*y=Veut+bZ$MAL7Y zoU}}tynGQX#tdNrN}93WLI^`O*?LQP!F4bOk+PHeD_+zhG|Ewjg82z)&|ciDQG`s= zs=rB4tN}xA+n(jc*ccZ9RHlflm_-@XxroBV8PP?U30vY{7o9sNd>j#;v1Lr(WJW^D zmK7B@Rlw(m%Mu&~0c#TQSen7P5Ufjj#H*}GRlM`6?0`;74Zy9vjeHL(8WaT@V23$y zY?~xLHcs`)jd$4scD-o|06yJ{S%r|6(zo`!(^4FtdB-V!AkPGW1M-FQY+14i#haxF z4!6Gk#21Y)z6=MJTndjRL#iE0{A}ta;9yn9+U-vv9vs#K0w4BboYgonkXiXif>BnI z)MZ3rRuwvdQ4m&Z9vt-I;$#f-z!SSLU@~aX3Ph8Bm8MZ2*7xQSv%6uv6fHv%fGP4} zt)b_n&CzIE}Z;aw2$r+u|0asl_AA&!k-GQaPAhGL`o*I5!Sq>Hw2>b}o-At#w^L0Eb0&hBj!pm(U`n^VjWJZht%ZVZO~dWYa0YL(h?h zEba|I^{n$AfQnL3&6L`VB{=?rOlTVO&qX+wr?k2+8swn>DMPQDv?%)bJQw?9##%`%}Ie<<5$tU}Vt4 z><>AI1Vaf-^a>p(jyVEVoIVa*o9@qN41e}!MUwOrv6ED>u~bn;p%0g78?cmvIDS#; zW?fds!?)oG@4G4n+}p+J9wq`JVwhP;tO?lslR@_xWXjIkH z;dbZNI60Z3$cdsx@I3e)*vOCWA2%}w%C2!pml5EcGA$LtdZ0veJtE{h z&q=!@^F1dp>8FkcI4SanxY%nUNFI7`;W?gx%%HS3h-P|nISp;vRPAC-t+Y=GSO>tp zKs@UqG*|czDFnq=x!Pg!A+^Dh$L9G}6P+`?)sTdepd3I%p`Em7N<+TjIykcHz&?tTx^Tnt|XN&-V`PA?F-yDQq-afGA1&$dDGGJJ5ls4GN? z39yBKV2IlCD8rXKTUH=+2rWE;vRpuME=u>aZW~UJPWQd8&*D#86DPE#xEC#Ob_l}e zM{8o~#%yUN#WCv-meR?~rmcb{1nHb74j~MUI3g`2$Q#pFe132&8Qyv&rXMTlB2t== z2JnW$Xmw}BASUJF)?tcSJj0rfTEANf@9#jHIsT5d5 z`lv)!lMvMyH7}>ltCB3KqGeYH$;ti;Ye~7wHTcvJj?0#BmI6+7Xs)q7T20Bi=(D&> zFZuB!u;{^w(7P~zi4vzxjVSv|CaJq34z!aXpJ)Wdv| z9F*`3=32OazvXF9fp-P_%D16|Y;N;Ekog!TnU3rqU_;L@t0)G%psl9i;oOYM(c4UH z38Iq4t&hq#2uuD@Dis5F_!3a9V2XYK5VA;rl9Zw@?=XvM%578LJthkJ3prv#k9VM{ z*wo9M^~AiS)K>p4XoN&l+5c6xEi;w4lU@ScH|S3I7$jii$Mm9^K+KQUJtxId(Z%I zQu@LcYK8Mw4K-jDb`q=mk@kTGB8(1a^w(w+fDq})vUu~HvS`7el|*g9 znqlz1ypqqejCtA^xog2i0E(|$gCLnIeC?oRf?5zUalj3@HXxk3v0zpF&k)OgG_jek z>B4Mg!L+zY4Y_+Ve1dlB+cJ4Q5U^m*-3Lpw+4ieDW_IDw$qv6L|ITV>Glgx^-e(E|(oFoUb)C2RZ*%AGVM4kXs$EyZ zq!vNaNaF=1zSi=|pKaR7yP4!|$S-rqQ3GS(jpv!ImY~Y+%=g)=shK?1`W*gC_4mwuPXkKS0q_Q{7g>;eE&Z!y+vR}irmZ1Xsi7}}@N`M0>T z%bhKEepaYuOTP<0KQ$Ai z==u7VP=g{43^ZyiA~I9aS)%p&OK>r84W@on3@l%V*tr#~%OvkJ@1+;bG}(g14`iKc zB&q?Lt1@Z3NC&b24A3muYE|{`gFVOYfd}Ym@JpSHw4Icst0A(3hIa5W5bAZuBqg@y zv4nWql)hnmN&?R%pOdA@U?Yon4W5V7_7i*jd|(u0J^2S*hk=Wv3YV}p3C;os>;O)1 z5M37JFgXj{hDt3Ft=N$P8!{3DASE~|`Z)}l434^J^Tq((~u{8nBaJV;}+^kT!ORnCUgcOOC%1z$I zHL&`5sRz7)13>Zz4(Z z$M)RRme;5pgb2_@X+rY`;v#r-cnm!)9QLZKn2Q{8b{ymtHzB>V-Y5zAr^)p)*Em)n#? zNkYLEE@&yQ{(%#KV98{zt4jn+J>ot=aZEUa5(rAa;+5!Ck4I4anUX$ulaK(=hst<0 z}vNVYO z%ygJ8DBi9uY(=WD>0rJh_9mIHUs5BX;44KTW-coj$($lvH~jo0*~Ja*vQ@w+R?D@5 zqYJM@&rVKh1P8Xs{)5nmc})s`8iylAlk>3rvo049m(;R+l$S(a@a7DochP#S1LGeo}L z!UEvQg3v7V!h!_iXulIWU=1!y+|gu+k_V8qj9i7Ce%1dvVxXQ5Ld*o1e%T)Ljmi)( z(`E{Cwk`lcd@L0W+Nu;m$TmlZA$7SC|-ZArq# zCj0ppN|%5M=ep1Y`+Bwnbj$rMxcm;8G6Pdsm;+rY8~{Ph5+7Oth^j5hS`N~bEkl*e zHzbPPbkz%-y2cI;XoFGa1XNdw9u5qJmViOQmcbk)#%ah|rGHXp3KVZ%#uO_Ja+iA) ziFrfg)2$(h{<%RYvsf;Iwk}K00q^AypHj^bh0vt|2YO?_{aBCd@2Ma>v#N3T`ll3E zQ%a)fMxxql=X)u6G4n-2N3Z2qIB-XKMrq|*e*6(!V ztHJJ$7RgTbNSA zsS}5?7mwZ^!2oTTt|AV3-&|{e^Q|@!hPc0Y9?!s;PY1%kL;a06KS%ck06-HGlMWZ_ zqc7*<;p&wAWX)}#XsSg))Y!_kiUfJ@8||%P#6i^>A{BYmpS!$eeg!1Vg3SU(yjRT? zIDNBbuJB(iQclG!4dkfdY82roL_URGP$Hg_DhKZ8JBrt%+0I9Wmh*uCy4VTw^Y<6< zX%ezydSRhmFn-J+0oR;|&A_=vUn<&+-gtCt2x+iC%iuvWN3=ii-#*`PkLS9Q^2&&n3<@Ng<}t`@(&2x{md0t^d$i8 zsU19T1E@-AtjW^Kaw?ZOZIlqLCn7ng+_V=LOXLW5?19*J0QxSgyPmmcv#9UF?BsC` zyFgsy9*%%E^JJfxeNZBVj6JEsOkfN=I_6N&{?P4C+YRZW76;QUNu*Lhh#72sPq5La zQ{FQud|eobfX_jRrnUL``XrWou zQexfw>M|wyOk~T#2d2Y8>zV*y2G(t=rAt7^SQ}4A|MqN3iD{t&u4o{E<9XsR@=Cgn zTnTzTQ$Yf8BwBRYk8Lo);AObH%(wHHeBjTIZ7>mTIJDQQYAsyb#TJ?2bj`WA1W6nS z3*JnZeY8mc4hjCaLH=naBw;ZB;A1H1DOhyFxX*Mw+*+CBs}kTF za-!Hz681Cuuyz_4OW?#I$L}O zNf4m$3>=Fh4h(Or3CXq!DImcpkOT>g>d#uS@!x$K<>)%!PLX1HJYX;uRf}@!T#yQps=+X^i<~23fArh;lL6>TT>4dnyq9emL9{ zp%S9RG?WS;1m@F-In?l*b9yGt1Q_7hov{i5ggt38bCk|FPGJdgAk`9LNkVdx^E{{F zNHBUs@QB}*W9~eYZ-md|_QRJ8D58>56MjKfIBn$4NRkX6VAi`md>q%a*G2|n%IKzf z3m5g0vNTid_U6PS8KNjgG*CzXBD3l5;0w|x2X9IR;PTSw1H>%@-{&s8Tyb>?5<*Bw zGz(IUGaw*EP^B0ToYxefdcA zhOIy>qCy5QA?(uHq)9Q}^bC7NLz*UC`zs=<%B%=X#!YwP*$GtIR@iIfVjB&LuiNwC zG3jFQ3ie2FQpGur`Gk;qf>v}}6%b%J%W~vP#lw@s!brg0Cl%d6M>_u#jGR4Lh`Hb$ zX;kDTu7FrG4DLIM)}k0#%u9y+^3+t@eMA9#X`={QKc67x;>76ix>_MG1Pm8r1|b^{ zFYqMXa5isJ-(y6XfDyy^kYt13BhAS%I2K1SldV2wWB#P=fIfKw+Y zAw-clHv<;{wx=ylO~AszxYABElsvLQn}}p^gYN5X4fC^O>$XHx;2D{P%i`S@@o!6L zDS$CjTtlGCHO9bZEO-D1#0JiR(^jD4x|l4aGdWCOXiOfhieOROy6iyuM7YU-1RQVz zYv8bI{IVG-S|Ec15V9y*lSJnL{OF>b!JIxjIClgJ!YFLyOQ11(esrfeBj*yg zAYF@cUr1Pw%>(C+Pwd*0E?pK<)6v9H0j)yvoMJ*PSe$%F58nt69B4KM8yfuU^}dL;oD#jFQH1ivCxyhceo z&0ss+l5mVri3SdC+!rMezsqrU{#s9%I05A(8anwE0XM`L6(M7nMU>t?BC`}CL4!Lq zIH&=d$#+@|L4yD;>13FBG73+CqK?z3t`j+!v?EbT0zreSTefr4Xe5I|I8AMlvBfM_ zKHY1V6)n4@H^d$TO~b`l^8yyyA}b319Rp~ZfvF8?gQp|xGGCi1#1I0DLYpbdo>1p; zAagnqo*VC_%9u=#&YCr??4|J`u>9@X5LccTF-Q=WN>AZ#r^1N65}LV2fd(c4kgj4- zoPI;<&@y!o!hz1o33L$*5V@eU&x<^LrK$iqa2+jE1R%Ov9N11h+?hfxqC$@hFH27K z#-UJzMRxRkrKtsU9tRCE&56_B063M00R9av1B@^^cMv&nq#QKf^t5EIg#h7TetQH& ziG}|N59w&*rJ=&QupBhUHVT-aLBy<%6OcMu5-~U&xZ|avBgBJjr*yOcu8uY_15M`D z7xK^mI~D|s(eru*ixHzy$&6wG)(*vwOl0n1^k_x&jjymN_PL>!QdAJ}VU0pD^byj3 zkO*U3#dH9Ro#! zs~+0b0Omk0BI1+?u2N=R1X0f8X~%moLZlQI_*l%8K|4qdue1?(*QHjJ$}7dhQFltE zPlC-fPYFWDrudRexd6&SHHKDq%@cux8nCmSoU<;~EG)W+LfE@quKZVqcH|P-cK|=N z06LDj`yoj(#@ECj6EEql0*y z>z{#5IHe-?#_F)Kb^60VM2pl>SuMR5iV645bjJxTn$1JT) z>7pRC?0o8&v(8GAE$@)wfM(O8Ge+qVD)^*+==38c!y@048Qz6g!hbDy&1HA~ZOJTi;z$92F*S6fmCT8L|&y&HO z(MWVI$@u{x9sxYPW0CVmBaX7M_1Hiz&X~3x9TAKVi805? z1cjA(eJi#U8QgJ`C$E&9QIr>17!9wmc!UE|U1%Y5X<$rBc`w1bkvqIXq%j}GH-aDa zXPpYlEA>nmf>>{CPLN}-3zG}n*HbNy-DBQvi|)2koa{zfsCv6?-j(`eYPtqnwa=N4 znePJ!Be$e9MQy86o?Cin3GPeYac)?Q^U4)he2B;u!X88T$xj0Funu&U-5g*?CO%Dg zN8S@L-(ON)-%r|!iaie0xwf!d7&s;9RI0KiNzc^*bakMJ2$#r|a0sL#$SGcxXOfb< zo>eW7Jt3g}Q(fl%gPT$h4;^`~?eiHh&E ze^fV!sE7o|5j#<~EQE~FU4xM4jqSlLv{=6)6`Im+8~Dg1Clcuaa`otOwGHV<367uI z_;@G_x!0zwh?F#ap-_`Kr%IwZ$oML=Zxi8@nr84~6au|RZu_sv3E{G8xxP)GCa2GhWseY#%!iRh?*QNN%OMMbO< z4&h-DIYh`hC9ghJu)rU8kRF-JbvPnyeR$!ivp1aJhvpZ?GI1ccT>MczTE6CNz?EXc z-OkdnTub9saS%t*^;7WdL;h1;{!HA<-^n5bApihsR52d-!SntI{p8NBm(KGZs*-=k ze_$s8R)`z$5fo}jrr$@t6|DuY9((EBheU(15$Z@dKwBJauqB<6>LEgExPbrSLSj|&7EF7XscB#o}_~? zEKj@$@C}}=cMb(4E|H7;gt|*+A!3>)s7VBjs=(4Xw$Fzz{~I)(Q3S#)dW?wiqC~|L z7l9{D;kO0bXleLCF4(6Mf4^{GP^g^1%iD4bE*WjY^J;2Ltk*|R9@#-my^BYICB^v} zMkfo4SBf$Ado~?URCfo1tcLiADIUwWx-lcaSLtAqb_VzcuL=8>qR6g_lx9NZ{CcoSs6zA;RG^i+AVJ zfKgJuM$xVQw1rCRsVJK1WH0h93^j|zw7Iu};ZnGd$4H9ZDGV~4M<2^(}At&^Yxm32~5 z)k%E9Ck^b?kOAh}=e>}o>|{2Yy+m;FCq?oPqz~Xt(Or@)5s!4-hw+5Giy&`Om%?GS zUWlAP0NWVEANJkC1@qtM%GZ&FC77MaZg!F5d ziF(aleP7F{Q4Ujgfh!=$I3wyinmJb7yjybtT$x-AtP@v11<`&&`+> zqh%PWhDOTd8kGwbO1^|wE|67+jzd#FCj+!tZT{~A?zGe|jQ3jP9C=i5^A#?{YIlc) zIUCJfB<8S|HJm31XET;@wTzC6Qgo;*-)VZBGu^SwJf8m8i<5DOZI%EKSVn!HCp zs6bNa5&%&Y)WvOg8{It4Sp&Vw3^crh=U%vFCPMxqFf2VzbmHhe0UnPNq?S9NP3~~D9@ZbS9xH=Up|U6=v?hAI_(pcVUWEP; znqUQdBm~sfVMd5nOi>R#hb(fU(SK+ulFoHOrFC>ekS;*h$7Unc41|75FMxmqh2|nG z>k!2RxL*a>vSm}9Txk(p3Cqb|!ao3KQ8f^93pB?l!G7NT@I63wDnrp*wp?rgZ?Xf} z@R|iw@+&BSZux!d6^IVf@Gfdeb8mN+`@e7jN=gzGoSkgqR=?hQbcj||X?Iyci^l2= zD#^BN6FIyMzD$tDuz8QhPHOC@m*FZR4;UOIo+zhSl#BG`LJ3VgGWzAE+(jr^ppn8= z0m?hD!{7xebaVhz&tfU1+g$R(JA{I30+u^WJe5w_y&sCGd>f;Lja9C^+qv1kZ+MC_Teyj%t%j7wFU4Sdi{VK~)^l2|_q5 zg*dnE^7>*du1qo(06vHjhC~*As83>1LO5;Ys&!MmJ|ZQ6nZG!7xIlnrcM37pvWgHe z$nTjPMfYcJRV)r|q_Y-ojeEb^44E$ck=yk7!6_DPVvdbccJy0x~x=SmTjko%4d6#eS=R0 z09H4!H8|)E>)Uqy{a3q_kb^SOXtpMsDnc~@dLPR%5SPXfO+rv*4jCXb!yraRV@wx164Ti|_Icn^D{Wq0LFeXp}Lyjk~)-O)uJ-251w& zx~^+`h!@f+r8a&*PoNtDQH2F)k^hu7rwk&i&xobeG!gOVMWIxS zE1BDs5qQaP5yEw&J!b$+f1EmuKSa7+N-BZv5bgOS+ zD3x1HRzLx##>@gQ`KAEMEs3JhN3x(K0(1P({XRuosbC?qMWIgy=FMMIuB+f2dhLM- zV3;Phh6h0v;|LtG0s(T2!GQ7`X|P${wAbK`d$lAuN<b_-`>FKsU$%9ZUf0aWe`-L>MQnv&W_}0y^5*yOZECj?tRal`3GhmsAFC9Ey(?3Eoi1Ar9@h}gW%%}KpL@Z=V>X1QE z8BIj{;3fDL;$tUz{asuT26m|?)a89>UhT&c-ATC@<8xq9oIHqV2jPRSd zh|KUU3KI$eKSIjBO`zYE+~>(4&4!#4hEEh7h}@Bjmytsgota7Va zXekMb{R%>%*Q|+dk^x#C+JfNqfv*LP2^(r)0T4>3fF#oJE~3h|V9Eu@s`*>xObdxm zB34s~>e@kQ0Fy5H= zK+=VTX~y~mF=H-}m?$^^?<>?WLW7nBu@i_On)sUKuThv#9)y+x0(sp%szUOdP8RKD zJV=b0D;w1Mczo8Tb%&Vz}{b&k&u;Fxl*E8D%UI0SlSmyP>XWyfj3;C zh!r($7DsBm3w*6}v9YRm;dRi;ok7^aqsxe{sd&en!x$u461$I(psh1nUejf`jk;qU znXL0>#<$e-AhkT4BH77?iL_r3k_84LpQKMDGzD@rOQ^g|*&H%6_05saF6Kl7008r@ zhq%bCY@|KRkZZEG^EO3gv`p3cY`*()iKJR}5`E&Rv5N4$Z3iyN^xg7N&7dVjj-e<) zaV_HT2xUb=?=4aISMD0QQ__-puh{@;1 zu{)1JvCPnoqZwzw=eGKbMpK#~C+E0u)|jLM{e;y(ikz-)a4y$3VmB}^BP+ciEB zp#^j@0l#`J;Nd_U)cFt4r755IkU59o)j&wi{Lfb()*#G$35)bgAY@yxaIDqcrZJU| zvIdu)OJ;;K388yf1WI}nTmkzRQ0Zy&nm8%r(Q)9=2jN!?Mm3D!m`NndwcWZ;#Fyn`r6DEoedlueTAz zbTP0`BV`QhFGVIGKNZY{a%aFyaK(#Vq@x=nUrYJeiy(mULj`3x;7xbp-ayCW@&1Tm zSMRn9JDd8iLQjKDz)IjM*%-3gC3H7JML!)z^k~UJ|8O=}##$9+?Su+3hWjRjV;L9~ z%VRCVF5gf~rP281Xf0D3*nLf+08{`?M7)U3(diKiW$p5UC^L$*%~-7$W0CHoEIn(m zh7;G62G{H@inemEF5A*5U@q(T%({O}ng0@`ba05x@GefPs#!9T#2A&G9~fN13XQiW z${f1^BQo-r7Bbr1umFV}{#!L*%*azpmx`PbSnml!?T9z15Js8EQb>SMB}Su{P%sRz zOc|o0lA-3%P{AxJ==ykEJhy3Zh?M*%sDO$l(^!K!pD?C3%Q7Osuk5p=3G;@_LHoz1 zqIZPx88$&n=JC*{pc9HO)ru4|)OR9S7lZOkstAe0aK|bxsWsLoE=!MP6QfteQ0>?x zx5?@uAAu=1?hi^S5l_k9bAcrao10}8v@3raOWJVAGN4JC6NSGd{SCB`@gA5RdT`}; z2|Ta^>1BRS0bq!RC51Mf4o!d%Z+1u)c!F)4=?GAI5dacb!5A9R@m=zW-ywtooVP3! ze1OC}cSR-_l375qu^hL65}_T}YA&GBZ@`-Bcq11j216y|&4m^DJec*nis>Q)F$5A# zfVKTOoGwiyVR#FOv&r$t(kts|{T!H^7*J$pF-&Y>Xb^8J9=ezaT@H6t%8IT!apeF+ zOu4+xQvj$F!DhnEhmiF3J_HB&JeR{FnVq^yr1u0gR6tc2GvJET-)#|*x*}Hwy2UHw zSwPGqW0z)(kSBCm;xYpDMi{5+=P+p@c*smQS#;geEU&In(gBu0jYP0G9^dAjZ-VM0 zI&xyu%0oB$KDdU<4oC|JBdX#2?h&^ceWpU4a4F~vW(btmX=b>9aOq(iuSO)IiL?`$ zY#u-w)Toy2vgqzuGf~}<_mGNm4t1FmI9v>E*_pSKv}6K=lL)k+w%8fa*=GjT-CiYr z<;cjMB*7IgO{a!Lz(VXvun>w-Yt*A|tg?6> zx*!5`=Ss$8gTE6bCKmb5f32HUH(MF;;UrPAg3T?B1qU=x-I~`5v z$cquoOjtcJ3}MvRTMcM=f#Cr`DRw5*q)!#$I`;Qf;hC<76_I)<(+VIJVpr7lEZ9j{ zYqpoL_ML-}+7dDV=&!YzkBJVx@nWY?3_^T_Cl{)KhWnk_ce9XC;ANJaXkR3hpC^j2 zD5)3Qo}Xhm7Z^;_gtHQIK|pJA?%n&l;X4X|DOY$Lul&~-p397>?g8TkzeLMMCqlGmqfBMnye@^;;ds0mIVutdfE_JU zCacZF62$?R@0hT#nxiM0CY{jwY!`>_sQ0Cq5T4vu8dSw}QGu38LpT0kx`Yh`iCLGDm384xyKU4^4?(QecU7N$?d7T*|=m#^wkLS zTaCwPH;A^NR|aD9SU_b8vDt}u#=}50$N@T0j?0+@>LEItweYdn#4b##>VCd9#e5O( z<(9dH$q2@1{q~jSL50OmA45t)REK4%F%rfyNLi4h;?n~c-yt(Xc}q|vhkaK-4Xs!4 zwn@Q%u6!HxN)C}wD03_;ZK;e5w`)ic6~j<^z6%Kkr8;VNqQmnDtl|Gz9Km+}c-Fv_ zD_;bs8lXW_I|TSP!OouwAB6#i>qmMTW7&wcfKHY}a8M5TxQ>swWJ(9>czMP2fBkT} zj+kC$PA>M>0zoFkK+_61(b6twEVyTX#V%@;u+33Jd;^M1I_W6P7bTh^Dgy??iJVR; z2eo?6xC&Zw6=7)0DHm8qr64fDs$gangQ+;ZW6Q%8OSQG9k!#ju)DELz93u#bWsN{E zY6UQeSf7KCDQM?r<7?SfQ=h7QcDEU!i5oB{RaK|$M=mp2ict>!=wUu9-r6Zai_rBX;pi@S5MM$%u=Kz2yaKKn_ z(JlDr229j*_*S8;naW)B@5D!2mN$ zWS2DrvFPrWm4Z!JkR6MtD*!U{dg6&_%uu3lxxL{QJ1Aud1cJR`KyGARyaI~SEKpIB zf;b%Bvp(UH#kyI*Uo?ZuBuR(969iy6eEp2#kis3E+F{^O%sD+;A>kn!!K4Om%fFuy zBWQ#Y^Wh=@XtJN)93zH^aN&T zcv^CB`oK5vI)JV<3d{l*)6RjI74*#uG(iA6@9E%bw}6tLa2oFSfiVtXNEKYaMg$qa zZKPt%8os4@NHf5!z%B~5!SQdyV4*pN8XtD7WQKka5F}V`fe$nrAWm|{KWhVI3CTA= zha*-(fjZmjFn#-@DL8&r`!FCVE=2*d_=E@STFoHgYTsH%9Igep8 zQ<2@C4TX|AL{K|~NI+&VF#x)s9cR@rHVh5&Z140G5l`4?aR3ky1F%K00)QkgD%;9n zG+^roD{~=$1X$&X%;B%u0zefgC=Bd;AOV0UgtwR=Mhvh|M+kxd*4TjN2o$>*5OBzC z1k)wTc#KgL4mn717=Z#>w~8=8!D5n38wLd2J}EeT{p%2*g%vgrcn!q>L5C1*0t+wC zzU>X5A@w1=1&(V2y+?sJcOre#5dlWGyajo|atjb^rnaiZ4H|2qpgy`92~XV)7sG*& z*f0oL!NfknUCs-LG#3sQHq3ZffrbDS2KP`Ih9_aBz+bdq{=`?C3|)i|kqrEY%sBKr zK9R^YuEt%8xE8h{moQ4hbv_K#&zcbg7d9ZN(4aRokk*b7Ku6}n{V)M~0UCTB6GYD0 zdy6PoGIWz`#%VTGlW2mvh~?%ip+S2XU`%w=)afQWnM0KJHiiwNJP1P8^8{HNIHWS_ z4)WTA^-F00H$ce0fF4C|c4Y-~X6c!-K}^8t=>hNTrihEKG)#1ovH`ZYHK$Xk21hDA zELKjS8Da_}u-1BEfC;{%GZiV!r9Ju11}m?#j`KN7NRNJ}$e++*jrts4&NhcFNO zI=w7rA>f_?R2bDMPvGrBlnn$XfCQV+?;a%|zIy}U;o)!JI_d}p0T@TpailYx7jJ`& zp)rE)0YhGbg8_4K#1EeFyS-$fkep1eg?;m0QWBGtnl3$|FOYt&n=Jm7rbqfs!l;-M zwRX~H%K$Z<0>t0_9mWD&nrTslB=I~pR!}hp5?OCBBN0&zRS_+V%(=sHHW+O-)@If- zhUtwL(;;p}%{Hn!`jpThwi| z3`#*ol>6XvAx~7&$UURM>Ol=b`v8HW$LP=evZ>h(qZ}UU|C)w=o}dbxRbYarj=-(^ z00}f6p@2R1-sx-Vj*bSj_MYbmBF9EQgaWyve;q(y8=dZkEp0dj2dkg>;Qe$|0Qp_5oiW8qcPMEZ9gYSs- z#b-H_I31m)uRo#?mxe$^|B=8rLCt%iKt+NR05D>y_$$^(PGiW)(+W$%e%A8*07o+7M1l318_#C(`=Fp@F~25+_`E8WfZnF-y^ zYrz5j^!&1jG->D1R>(`U44m__v>{MX!p9f{lz@N)p64(NK*^#acYU(?(ZK9P%HXUq zIr#A=fu1X4ZcYT}RJd)$j(D$zkRv``OUaN#kt_IDa$b%me-SV6Me$1{fMyOV7|=)tZ;Zst#YkW71VG!eSO#F%+|VcnZe$14 zh_~|DByP#gAi&sxk}wbhiW{3?GFSx)P#Pc+D5+0C$mH$~zlOdZrVarWzrZ1h07G{d z4U)}>l5nJLmtX_|#0V1e!~Q>FeJOvIO|Tq4$b1mj%MLDM_!GTbwP z1XdA*a1b6ptr)`vW#~|zUALy_-jSeWU86M<<50l9{!G)haG>>G%INqWmgWu|8Bj2_ z(uk`c+TuWP*6j(!!&a`4vw?)v+8_}S#1g9^j2g*lRR~U}Q6n?zs^1-6Z%c)~_Xnw} zsGM$bnjfRJ9_wx2gkh}3lfy0SfvM6(RXB+xT#iU)28pT3t9Cm@!vZ44V{~1WFwr5N zi?V!)TGOIn-?K7{vb7zi1m^DkW8+ex1`S9Qg`)N3zHtKpH6XCXd;%+GL){WTc>A0f z?jUD8oPXMA5`osu(EBG7ia;c1XU~|^X0tK^J+jj9 z)3L3R1PlSs%brlG&KL=z?CBP1<Mo*V}= z7!&}`vsa2;C@31*Fiym9GxGCAtxto=VskM;KoxNIrc1EzRvJq~q$q@o!M3n7SQI0*IwBiMC7`i3u%Ra-kl3R z>twW$I&tpbI=w%M9{|iM%E4?h0?26ykjY_hxyp#5IQyZ{GrWj;g9jKmoDBfbBq1Y0 zHSn+n^!RO_3pB>4S;33BJmEq{Yzc&Z*FI=H)WbIvPYD-xm?Pg!LBz_(FGEp-*?t@0 zbQqP0!ojJDM3wSKbBARwLN;MqQ5zdz$^sh-5vE}SDM$*f_rOzzemP*Bn#A)>H@%)5 z6U@U7t_Yn8Osj*bs57p&*WgGKTqJld>i1a(noS3ic-~)C)0IphDn1J^o6DM`7*_e@ zL&X)Kb;J%J9_e*ub5W+rT2`G^`=vbEN_F1DHBtw@k;;O8tL3PuueJ$U+){aN5?o4- zQh-bZ1<=i!K>V0bFJOB{%k08Qf~Ik?NLdq0tbhN2t-vNPfB!ckIdR$O0io~TmMOsa zdeX`h+#5xZ0ghhw4EN3u?jrLh>P%LHpfzNWquC?1WUb!}(jFAbq-8I)O zv@p^ou+e=-1oo6Ss7-*(E=MzQ9X2sN6h#T}`%>glRn0C26@KS;$ zs#NN$Qj89v^w(+ONI|&3CR_8Mwgaa-e3cNz0~jG@8T57`cQyE zP}%dcWrGh>S+Z9i53ICXt#`0Ocx7Ei8c|VX4dox9jMR{8i7iaR;7Ozjt^+-0YYqy8 zf_hrN;WaI2UU0E))w98>Bz>2wk(q>aNp3$iaA4Lssnw_mb`F}hf%v!-ZQG0MTQg(f z-V+R){OA?UJoiPNvRWWl`6>GTqnrbZbmph0`5^!2d{YbDg2%x1iu!u^m_4fz?tLfL zfuQk0Oi*ZZN&lP+SfH~&3awlXtMK*c@~#tIy$}>z63M@rG4p2JY)d5o3;cJF>ZN|V zY*aZn!mu@+`BSwTMXm!1q&=$Ac;QrRbsZa{{K5_2R82QVFuK@2Ln`r4oNzoZW*p3? zuJciV?UmK4jBY|yIou}2y8ZY!5_6^zV8Ov{ABO5_1Vpd`L|{mRQQ~wBVnC4-eVKo`j7_ zAccU5M}oy+2}M`}^D0nS+@Y4ts{n4zH?`SSsQt{YEmVVK%%=e+^iCfj>FP3%6c{_u zu`vYzDnLy?)33s;(3u7V1dwZ}XZffQ04WQP>{bjd z)&b1U=mNF`Zuu}hB7i^(T+Xvobyb`!PBs4Ao(X~2V7{!N*x>9LBwIv~>Q<&Dem3!d zl_K1fQwj~I8w5EAOf+iwo#eoQ56+SR91T86z!f|`pBn#By5~hKjfB-hB%wf2xMu)V zgghPqluwL()S2(iirMIu$4sThGJpsRLb;}~)?TOABLEa89{&u#)mRiOR0X5}4Kc^1s4>ITp3CsKiAZZn#y>M#a!pj`QK8gWByr`GQz!R=V$Gy4coW>F5| zL$nc|Gh((P5-PbN+{`G1M7>iQ)*Ib~&p{9&o|^c@0v!Y0Sp4FG+dQ<^D1i~Y)7)z_8I*Uv;G>o&`9C`!K{u;4zqklYa`G#P` zmld6C_^{$IAm}DU9YjBaZ0kX_I7g7_F=Xh=K$mc;4G1n4NTlF|(-#*$jBAl6%Y8dv zTdW)>aLWv%2`kfKfoRz%8rC?WQeSOKDocggCShef0DbsS$&LEPKh)?_KlGJN*zKWu z90e0z7mN$#N+^kIVv52k7B|2K;^&72uv8&Eh%!yh-wH+S5H83TJaexO#;L-fkJ2G^Yh9^yY)DWQN;}B9NMpgu#^y4i;vlWX*(PArbvIU`cJmLy~Yh8bP!q3Vyr! znRy!BRsoQ~NJYRZ7ibDwU_vJrcm1LA0hXa326Sk{m6~xAatA<6Im$oPfrp}Nh5J01 zF5q+*%dC_QLhhn}*_ej$lTI{TYs%!B8joRp`lO^YheO{7fboiPc5+ivsyAdh+oMrV z9bQxNlOluvb`n{I#|R{VS_5H9&~nVi9*#ejV*#>quTKxCR*A89PocQfgeav+r)ET9 z2*ZSj8Qp}hI{4yHhppt!Hd>@+D6_N%WWQHN5B(fVM(a!9IWdUwKQL_|3nN@9kH5@~ z8mAbMQ`TJ8(IK5}*$FMJ5Y3eek%b8^3^D3uK$3*7tyqF-aHO#Cf;_lu6I>aG@aKCo zk*t97$O+Kn;Lp1b)|4^%zkzdz_$nSLwMRnKt_Oxqur$_1PU61fl~P02JW=%X2rZ-g z5DoWQv(qHwyx!63p^AhK-Yhjv5_7{m7tVI*IYQZP+v z%5&3dC}v4S`r8~zgZN~xfHk2F zPaemDXaPTddIl;XHVLbse6PSAjxl^VgP`;01y#T2eEw> ztqzL9Swu@ND3HYRMcexmXK_Oox5yZ#YEm+XkSftu7F%%|SZsKzWKdJ%6T0&a? z(@tcc@M_goPc_{-lE~#k3I?yFh*(wWUf3~4*IoiDgAoKAg&FCfi@x*v9WV6Qe}XBGYsH#A zhb7@iM{}fgDQX#9blY+dql26bzXD!S%p=rqq zp_qU}Q`BNH{Zt|dAh}gtZ0p&DS3f$8-}Y{XD4t@W5MEJ{T>;-AHrElN7XafZx@GnN zH6^p%wQ9%Lmr%TnGxk|SRIqpFvO<9-%m_{jyXKS)dkP&WpUD*dO`TAu+&k`W?aLaw zmvriUyl;0QY4iK0=#xqDe<6E>G?3S=mhHyjBI(q3g1+eX7F$PbvF3B^1JbDE_&rs^ z)5+>;Jmd7D3Gst)%q^_1q?sNz}3<_!=0B!zl`t5#F+L6Cb?q1VN5 zw9xICrcy;Ms~Sg5*ru=lraW|Rh)2+ZW5e{)2apBW$jeBE4g~VL$RpU`K%Nx->dsU+ zG{R^K7CR741Ue{szBMJqI^PCc4{o?B1oj4akj$h6psT9B8I*&ILQS4ioM^)&v&03= zi^wKOZKyFR2X=Q*&MQf0sQfS~0Y^2}v@16mmVJ~6b%21=6Hic4iFt$@^a#*B2?8a6 z#xKb|7cex)pkha!nqbueL1#$Vuyluc=F+fWQhY=(>Hv+ojT^?AF#=3<+Jh^zw_9@Q zQJr*f5TkHo>eyLIc4WuiNeyBDLX`thL5haV0IoWKvEzDaAwx$@HzYh#(jiKSwt!d5 zCQ=~pGr0Y=92V`KAo+fI76 zXbE-4WJZ9oM?{u+ii3!`l61rrlJz&DI^;b8W35#a1U%9&9a?OJkas_hh|q{Wd9vug zpHoLl)kkuJvN(Kn=lN>PXpPVg99SVIL!QJAAB19&l~8~a5&2Yvnc*VEL=qn~da}i( z34_qzeJB<=L2PhF7#Iy$g_~xit{HWKQgE|VK!TyGA={lk`G}SC(n05t<)o2hD3uQj6{IYiVSiLA zV!qghp-oktlU#1$KoG`@f57B9ItvO}08Sipqx7&&Msh?7H!=Oak@d#p3`lC=jCQDN z=tqIcok~c^4;B`{u&qo*Jg2PWUu>#m3L4 zMhM10G3#|jgdz%4uDs`gJ>{A}fgSB3qJedUF>+DozIln9>~;>SuJCcU_x}RA9DTH} z9-S3HE^-Ip>Qxj32^oD{5tSAU2ScF1SSolqZIxJtFngMHbs9a!2z_8^k&`u2$V^{$ zGeKQl69UUCC8C4~rUoxZeDQNVacJ$_dEiBP8ECeq&s3bp;_!Ge2g#YM@>LeD9f!FZ zc?=qlqZn&y(D{J$s;&oYRPH!K#w(RmMtS#Yn>6R-yFZ2Uu&0ku62)Br2n3)WPLT>d z&T)a(hl7%ftaf_kERy{TH;(y_7J{xqbbvaCP9~oC<8U{6AA2r z;^x2%cS$YnME3dsfA0m49JA4Ja5`kLpC0x_z{!>xe(=Y}K97?%=a8JaOuM>C5K=4> z8ItapE>kRE5XHa(rhhKe>D>ktRLBbrk2XtyQ?M}GJ(`+{Frrg55fiDI2brz}{3Ju5 zB*KKIL2hUuI5#j>2&td=70{Aa04ims(j}5B00}exk0C1n0-0&jd`Vi0CzHx8l0{?+ z?Mo^g5M_L6?Caq1%0(c-N+_FJfBElHau$A~lfbpY#vpR7K;Z4G)(izHmN*}{bOwPY zT2t7B0+XYwMy~>jitPLeJp7#My1J888MdJpX;DWjlPr{rtEk~ZWragaCk6@gHXLGvS%vQjp&TMFXA6Qgm{b&|!JRtzSZi z);SdzLpQIFRS`77k6;ZZ$|O_vwd_mT--6?P@Q zP30V2lA#5el;wHMYLsy5xSE3tvN?qao-UKXI4ijZaZL;dso|Od>K)Qe=6N>wGV=~P zLFuGGfjC_NhlY@nZk=BQdwmD)e21`9n*<5#K|&{$x9S}A<-qj~STz&Rc=ZO08W*ZJ zxxTTO5+|K)0i-}+L_7gNFb#ThUGO2Py+(xk89PN-z3y(TMz95ik_v3A<_1XGj z(X+?GOEon4>%beZQ%HS;p_OxRng$nRK5m){!z8^yol&Y11YJG_3RY(am(aa22?*J zn~t;c0c9=onNbiJPci6L(G!`S(Hu0C#wB5|(||0)QzO{sNy7LgAj#U}+l^K|C~~J# z-pVADF+EtjbdsJ2OCJ$sz#cI))Jm}fzT(T6DVjhzY z%T}t6&3z)w*W)Pe{|F=!6qxashm{3I))u~H#j_}%pN1hz%0~7anb}e@ho}+~x@w`g zxnlAVUeRagI!+H$P)8NwIuGj9kX!(g-0*M@^s$kJD3(l`yW=fUOYDw-C7<2H_M-gd z-sjdLhJ$g|*;Yo`4vZ;`Tr6gxuaBV1mAZ3qINHBkAFb@!#6l|VTWz4yWmU(ahX%mDu_%jyZ^ zIc9Q1E)=NDhEGsr)Zu+MwGu4$Q{~tozn?Hez)Q?An5I;KqI8A-FAv z%nOw;L-8~UR#Sh9*`I-igR^a>@pUQwl{$91rPXe0=E;FCJmAI@WlB zV*=_8cvKk+8^_o^lpVv~)+4GRzN5FTE>WgGYS*{tRGltE)W+b@H8w^q9=)pUutjTVquomB8}&;LAp;i zo+w-f)=q3ZsARYN06TZgV(&mv!2Y-u&q8g(Dzem?4R9^uMkPL;gs)4Ig6q2w>@Cd| zmtr~tD=XIhUNpHUPJBdceAAMqfs6sR+DXQ7tnqYxwEyqA=-UA{=BA)a_NZSt( za>5Wgd^a+|joeCtA1X4F=_RadgX0dVAh$2ZBxKn6Td)phPIU_yqueST#UXXW#-E1N zzLN)0)ZF-RF;6xOdV)qcUS3Hj65bYo83>62SrrVB?Tkc>;I66(3ChypDo8ltk@b+E zuFzUBgFGa78jVI1K)UNg2rPMl*F4iXD+w8ceWd&F1h=s+M%Bx<&(19dfZltZkduQz z{=@^)(_ZBh!3T|ig%*UlXU0@4HxP%Cc@=ujW+o;}+LpGxgLEtwuGJ3`4oT=-U?$dB z1||Jwq8m1=g(@N7y%rf^??TwBWvkdWhp2$yE`vM>Y&N?^F!d-n-K{E<={ZmghbX21 zVa*~A7Lz0xPlIzO`r$#eGjs%|f>}S8sRT^E5s$XoOoPA`lN**B3fy6ByuyMwNh%P- z=bA?$)h6LG7yy3Rlg_2o#u4nx4mZS7-=%_@BS5c+Bb5N81s1Dq*ozV@O#)xjruAGU z`X=SLuB(B;bxTaIoT5z1B%DimP=14OkulZ^5r+5aCJ#EFYl)jD9LEDAM+VP0oC2pO zJ`-^xW3i)}zUv?y5Sut6bEl?Li3qME;nCrvx^gdQUN|GxfieI+H-x9+pi%O&k)<+Q z$5_TqoKEw&`VESbm~9*)m#~SZIGkvz+)>81Mzg*v7wo$IUKI+>==9H(B&=Ny~=u~?a-RBnc)py084vb_B{h@KQR{YX!9&fkM^>x4W+y>fk2&) z&)4a)zdf)Rc+a&ARlgr4j?9qM%$Q_ZX>D%%L~NJJWJWsynBzw^ui#owa*Yv);3?jE z&`u?SXjy$s&mOxl0EE)cs;+f&DDB+5BcyJUAO6cQ$TVQ zon$H$230{U4(Fx^jo)dV?ly(lkr;_bApLp0RIq?%gsdodac_dvKSQa}lvS6K)HYVh zwmFVh^q{%85LC?CgPbb6$;Jg%rd;_Wl+cuLPXv+E!9I&Hm}HJhQz;{qETH&oK(eL{ zfzd_@(JPa&n&yr)nQDo;sni2xfqtE}cIL9)m-Ek!W)UE4;Um}s z7ZD|iP6iy{u?6RGIu7D%KG>Mc+}tFfkOt#e1k(f}QS;DgLK7wiR`g9Op6dz*sM-=> zb#L)wIg%uoT&D#C!$iUp)hC4=3(0xNZ-t|YyR)7no-;~GK+pFK$ed3i@*W`-N#m-{ zDpj792d$^AOo96@h4s?01W|knQ?ChQz9PcilORW6xKxU?16D*LT90-j^rRJ_{jGYI zT5vsJnyF-y&+~xQK*3F^cH#p;XVg%X4B2)yVgM3IreZiWycd2s+He{=NCeo)a)aDQ zNE=?H4|-MqA=IE3aVL|g>sd;a6f1fp(v-TVGnu|35c72_-Uq>yO+6nt2_E3WBsqO871Bbyd=jorM3Q73 z18R552lndn?xvL@RJ^7#ft$Op5B9{z>;y>B!@!jv;)2}KAXTQ70b!8MurqCzfGr1T zfN&%jDZ?sg0}2VHMwnU&X<`$&kY(KvG^j-dhW81=yG%hhU?eYQu?SZr@ajH1I*cSI z4EC4;YYIAcKtMx6p=p>rJO;iSuo}6sgs+xp?m(CVoeMbl@C97)4G0=a#1gM!V(uUl zG4!v(3pf|35pHYJ219U`pJOfr{4fW${qS1D}(n1bzB09hoIh6 z(3l=y23I*MWBCq)b4!6>5|>;G|MW72cEO_9jp>j3U3HsN)zRg4f2bwbW#^iTj_H)S z!c%JBH=AAsyalNu6Hs|jmk&TIQ#Xw*LliWa zNSVtUnNQseafj=wMAgA&X|`Q%3b=M(b`J=dv_`qDqgOwA(1G_52r**B))64bxdXc| zXkF*CB-Ynz+fNam#ewC9M4bRK5n^G1Hzl8S8^DN+ZWkl6rf1UYPd)CRnH*+a^G!>6UhjKO)A$MH#=L! z^a2j$I794IPKRtcw2xJGE+=Of4vgpc$2STq8MGbV1fncM-J6{CfIA)C3QK@$i({P3 z6|MAG$Zi3DSU%bIFhX5vlYRD3fy^VhgmeUi?J&G@(k{iU3Lg&=>BDYoMTgcok zt(CK5h|V{0UhL_3_p+=QPwm3+bwYS+IJWFvnknZWK}7TR)iFD@spEcm#(lnioiTK0 zA`-g0c&w@QsANOVOSgAaG!XLIrPX!2YRPu&l|*;Kim0lhq2MJCppBaF0aWYA z?t{qyYrREl27|DL7lG2l!RkcNx2zDLbT-nPKu875jf-+s5nBiRj}gF8>f?Wt{oIpi z1wvb2rEb5Fr2)=y+n_M?e1fY1QZHvh;A%v%1P=e-Gi+1c+*sw$1#pZ-ApjB+7|_D7 z;#oa{b}!%qEd!rZRc|m&>Bb3SJntF58G`s)iEtL(suXooY5{wfx4Q!|Q`@>P=K0Ti zHo!5S=R$-VVZJcMH-&4$h7?TpEC6Z3H6>_9q5FV(nAM~p({BthfE^Q}jY3%&v0#a+ z?&YEfc!5$6KDEf&Rhh@sJJ`dwVM6;NUTJxDu<25vEURP-=fRXE-+3#5pzR(6!ot`= zTr;`A4$j%<(A;WJx{UDUd}zN{JhIb6xRA{oTLCpB*FJF=0$RpME)%8z*6>_GU7*nx zNb3kE5F*Ypo!SD3wjt!wKLPip`#*1(8DRoG`frXhBNI3WoSm2)w__i=k=e4o6KnJp zVhGNT(ptn-h&=)GdvfbjD?VQd&TCi( zff|)B0|!A5+=yi)|w^PWg0ClH-ZxGV4jZ;6)Of?XaQThI3S0N^oEE7{$ zo)4W|@j%yZkDTu~&E9EC8g&~dgD8Vz-en^|3i)t1JUR#kfGd*xA}HrNa`wzw%php} zVe?n9G3W{Hdznbq52aKpF#P)Q)SuRZ61H!ZHn<>E+fI8`m&^#Tfw@EcYl>V&p4{YZ z(In%`3$cF(|*IP!S`w?$@aA zbG@4N$&f!jZ}6C@zt2H{FT~Hr4?b`48GiPQ)~1)dd7r{kjozuf6HIDr`t#J+Iw_9G z4LLF)FxfR>GYC>kV2I{5kc4dnz@LuLT$}ohwZ0;GOuhswzmNPSK1~_lvU7+)2fq=5 z4*oUq7+~+jYlnXt_()V}uqjf~aX-pSckw!uvnKE46yKNgAT~j5=%P|r!VMko#S*$e zMg^KB}N1ax4lC6Ta3h(i^4MafSx4_!XMI2mfBpGDqNUd2)wy?ZZC@9 z&eG<9{N~KPbBW<}He%v+(aqBUyDsK;=mWord?6|%S>d04-2pQ1;#6+T@MecJ2gPiQb-o!!c;EUC4OVTuu2ciKwW}E&f4qC zkgCs%%Z~OYh~+z(c=>QM(Vb-6}Cc1bUfV*!+lH zTe`9FKOHv%_%>7j?@NCD{r8dozkB{T%$vUtl>w_H2B|BG1_8^G1x(!p%njF)&J-7odUfrsoY25-* z>8TqvT@qA9S%l)i0hGy=EmrZ^eWAFzQrsIqQfM%G-5LPBi z+e9pL_^q(h+=!84*Th@aeF_xCIKkvQL1Hd(jVL-zO>7<_W(Mla1GHiMfm4q=Ahl@A zhe;F`mk}~HXyLn$k#8-)j)hT{t*Jn0;*KZ~iABkkv>9v))qPN(Z4ms}vZC5MPmU;h zCa9&*{JaaA+T0J!u^0n#_H0P!zqE96p;0bfCS0Hyqa58x{&^MSUzOj z(#qB9hBGbD`Ki#mDl0P}5l<2C6a>nr&ZdjUW>W3@bAtL+Ewrx;z-pp^)TBe&f*iaH z2;du<04sn*XaEY$(79;pXr>_|SPU^MvTojliw4D5;FyVcMgSODP2d;rm&E4u0~7!h zVgZFU@9Up35zi~@3O7Q5a!Mnh0HEZUE&{B1hHt6tmJ~TrwdbJw@g+{H-(R4 zD<&TnD%cp&jE+PyCLsVITpb@7;J~e8_7jfTVA9I)2_jekcS&F(#2+!BRLJhBWzgnL z+ozF4GnFU;l=Yf;0p)TQhc$)rG9IiDHyhtY>1{G&I=x2YOt&+1R6kAUWBN93{SCeD%O0ky4Y7YrdiM1=@l-Uqx7Q} zSQ4q2LG6)8$v6bj@j=ILK-fslNm+`sFoi$>iUnp3muu3RK`p6hvS8r2pJU*uW;ga~ z^mLQ7idp*(fKs~^+ZKyD;jv>tVwnU)(|Xc~iLi)rL@*)^@dkXS3J+;IK1M`H1YCqr z1V=I{(jbsjV1g;KDIUNs5ny%?x@nU~q_H(sgTO&L_xsPzgwuOsla8*`qq>Sx6{!08$!g#l^9M((2*T z!xYGznXW=1$GO09c?3qJSL9agn-W55Arz!5(hwL$*XM|W(kez&&al6>q(egg1jI)6 zD}`ZZY*+Fqv0PO77hW?WwI3m){Dp2JjAtj}7TARLLOhXl8Kr=!K_|OtzktCJ2*x6T z2CUPVgt4$#B7I{>f+LdftfzClbC`TZNGrSWhC>{e*PzItZ!~czL{sEPG9e~R5{QYm zk-)g%FB7ne>6-SD40Ua7<3kk=DstuS!THl??Fgi?Vx|%H6*mmaG6gs^IE6K0cq#YL|td+n&?Anoi?R(ju z??4%^OYJLt4&l~I07`hwwLaImt|qyP@R!mvMJt-hgQLJAj<6iFfN^F+d9#%-UK|px zoYXD?Qj7ygAFOehCXTD5)C3pEmW^i`gpCs!!tZ5Gk2*!o@Qzt^-AAG%?!4o3iw?gs z)z`^X5@8@-q}QL#3|1QJ`Jx&mCX2lQs8=)`u;b+NzY4~WoLF=FJHZ>OlVC|NQtaQe-!CM!vTRJ?&Z}P_a9NURDD3_AXGJZ zd@F%{46+sE7z0R5NY4Qz(aalG zEf-(S3lh;Hn4pEHKX>D>RMTPy{7Mw?NjwJLHX<9X|(M}1Yf@LvB~n~xOm1Wh)t&NLmsOrQ&BKN$m(#IS znT?@GWe+}dINI|gYKC@DW?7_MC7lh;p8yEghe(kJJKB>tYAIzs~Jg`uZQO~9n| z@aG>~X4Os+VV81JVd=xKbf7ML@d9@M)wwN&X|{NQDge56B3B}y&9@F|L3HBx)WEaW zpk>xdd}b4&=6GNYb4asktiu?zA%+qeQaUbZ(`3vRLopcubk^>jTc(`<4MKw$iP8Y+ z!h%JS8P6Qxq(QrWA|lQHlNT}Ix#g4{JD=oSE}wUm$TG7e-8svDO{$;=A|;`Ilpjvy z{m=Q!o6}_J+kY-iV@^4N$xElrtyF-+5oTXhnXLeg1Vx|}$Bl%+OmnJyB9wr|1c-+O zT75e8g*?4F)=v`Y6r#+2pj4-kBJ>P282?JeDfG?}V41{#j76Hjh9bkXM?V=k4q?3GJwS zATm&bFKGz5@`MFKM~JXWgsGO)0MJXE9T5Pld^;0CuDjkG5SD!Y>-R}=6$~1T;Ays- znRG?F)NqKRTYsYwnvy(fA#8!$$B6j6WL+O`KHI1x#5z-$Fr_YivrT7;6nB^v#RJxK zkI!1EIl){FZjt|-%v)R&t~m~)^A0&3CR(O4P?11# zWM!rSat-Dkb3z79ifzi~Gokj1wXI%41`BJf;7*D94S7>jR5(xw(V>v`ssn`f5^=(? z=DO$-(92mW3ZUpjpu1ho8Vpo4>B=P{023W89%-8Q;mL-PDAmxNKo&*#u`-k>*LUu) z5Gl$Vjdv6a09iWd!O%C5^KbHhp>YdFJ*zrOfS8ql=!!0nE9lXRh%7jm=`q~Vq*Mlv zVwPi(#a!_UGnjQYOkBB~+^9`Cu5>Bh@*q|zP5z9*$>CA}03a#D8EZ(nF*F2p*{+Rs zM^joO00C4MS19lUq6GMj5_NSLv`&ra~TR%SQ^iiS02Q1dzls6jXaO^ufCZD2y#M(flGx~iJcL=18{zQ^3N!8I!iBJ; z4n|aGJe?)nm^i(`+{ZYNhwYNT(O0?eKRE&{1wcI4mQ-`D{A;d2sdwV8>G=hjXYH2i zJe^gBkO!U12<3;T2+ng%mXOthKvx(rJ&eL2Iy)z1_8e=_Qp#bA)k%8f$Utic&?~Cy z#{B))lZI5DJjFXEbm8j-sP)lKKt@6xXb(aUJuf9ML||C+)_EH(^>dV3ooKN-Ml7+K zXRMqxxyvN3;a9Vt&sS3)L{V3wC{FZ63bV#8Kw6NTyU`ThAOSb8ugjFiy+@A>GDX!M zfXd#Ay14>X&!Q+#UWIwZOIm)NW_ljR`oSh+q`K)hWtc(Uh@(8VY4vk=r-$@~q_|Ks z*k@X<>8#-e{OyLUT^Y~YCiilXlhGCHlY76UBC#9cmH<#K&JJ%3f{-)G2%R2Iz+or! zMR@BVox_oOR`M$A;4}}!2(TKM@y8^(tMEp99+&u4kV6Y9XQ2)gJZTI(K4n}Y@0lok zr7s+cL4F7>s^tlJl$Ts)MdW@gBVEMLMC94(S%up5G3N0>;ED|VfoLy~W#jZGf+;WH zis%+Xv<5`Gr^YH*;dUT&D#;%ZaweR|O4nJ_Txu;4m2rh})qv?>8ZK6(=_g2?JKN!s zp2m4^0z`RFCbD)Z(F_63Q<0%skf;3lm)o`SjmDIHpr3XQYqgIbzLbrZxP-Lpp z@a6rPN1o6#GB6@8tM%zRZ_85-nNFBdhnJ&Qt$f&~29x8nOBi_7UByj#P{?Kw&k9KO z!tlt$pgq96sDsF}H{^D!(CfpM|A#0nhqOp|{E3qRMET-`SHP<2giqvA(FNBAoPzpz z^3n!MGS7!2KODTI36giqre}|C^IUr0#lnd@V+9f89-@i0GgBABV@{OBNlJL3>At$E z7P=I(CUluETytBwoEFfR3aEPiyRn|;vBW=2c(5{R?F);6gA>ZJSm2x_&KTXt1%kP) za!t^g^0?%>Ynr54XbuRr^>G~$V{I%JV_e=;68L>B(-$Rw<)wcOX!y-?uCGDL$Bp&V zh^(`PR%OT*iZe_PDsslg*WxOV#iPh2i1RA2bQzWdj3S^V#)|PIY+p^4 zz6nf=!|ROa@o5ls-W_*JPZ?*f#mRqsSr!vxi14K*7;v>$3N=s%UtZl7WacSk zl2pCJ3IuAC@o41@3a`dE!z_^_f9&~Z1k8dRFb^S{B-pFSfNVvGJib#_Od7k8jh@C) z;W49K+I2@L?bMG*vog3QC?mHZL~4v0Ga|*a0A*Kua$$DlaoHJXwGnO^#&Iy99W39&Oa%s?|APQ|4oxg3*1ua4woAE8Y_k_GEriOv1qF@>)PgUTEuX={>DXyE!@v$1Ol3?kEyp&CdtC;bt3Y~l&8x$)EIetO0zjGTX zm%^&u=GPE8u9PkB^`9I)@iq!5Aa-E>q0n)w1J?Z_3|m9{ccXFlAuox1K& zpr>wM#p>JK5Kg+6D*Pr)ygrL>SCcP|6#@$F$>+B%XKq1`+?JiW7~Q#lSJJO;O%$sd z4YKKlds4k#oR08@9sD!Z_1P?-k`83yi1Lc*&^(e&J_XJ@85Y-OyD z#+U$WhkCC{R{^0e+lT^wYk|^kxt14{mkX;dhhC;IqKS7Y3VeJk)xW*%UBo0)O_rgz zHtPk9YNmogBFSnlDJ*GWEJZ0YSczVJ;5IlY!G#;rQ6ooNcBWH@{ z6wMw}j~~aRgU&BI z-ANJdcBVVsLF*?kaa0VOa%ep_)emY7oow%6(TqCudfu~Gghv+`Vgs8)jy4$5w`J4x z$9iB5Fs8eJyrV;&6SlLdt1NnCsH1W2t&1k-b#v6e9&G;Ox$kDg@;u#4BT-#px>l;5 zU1>zLjs<`BZj$)%VDrt{$gDYQN+qQd(l$%+C26oJM|Bv}au}tiQ3`n0Y8zW`_c~<2Gl(=1RE)1;0Wqjb-{d8QeZ!}>Lrin=^((4^d zO&0;YLl?pohrScHuS+*8(l4PpP*<%fb5C{r8=?-g^mK*Iz}*ybOtRwXm292O7hya~O5r-vfvqp{(nGwz3X*7zUQ*1~h^G|6`HdQ30Z}bgYg9{ARKc2g z<>I%GbO(uUM_w)zmArePXwQf6rt?ONjM1M50JsrGiImY-38|S&m%MT1M8Wk(xOn!5 z?=4xdI|ZNXeT{|?0cx|K-lI>h+&H-BKG&TItpZ-0x6+@WuOwL=Uy{@00Vh4ejYX>gAe zck>;|v+XpZTAas+w$mNh6(!q$K7hAO5& zp|V;mA@9eCqmIR~F&DpH{eEsBT%`gog8SO(GpPtGaF1^KsH#6Z8Y{2C|B9135WenH zzqcT+`?~A*hPRrX0Dvxs0&nfEknzi#O7zcY`gmOu(7b4iOZagn4;f(CdlH#DZ4W`& zDT-2IqfBtzfN;0R1%jp#*7$n@lf_90l-6k2LPYNNj!8n) z>3Y#l$y%@sZ}M#V1~_!$?-V?^IdT2y?&tl4-XScyM1oz zKaVf64z%$QH+2;pTAPLz@6urLkxGcsyQiq-(n?7)ceN)c_i-}t@b<{^xb~zM(wH`! zCF>Tet2E7`OAW@LWNDbXK`!4RPsE^GJC<6p42L3l=^5Nwedf10<&K%8VaLa48nstiU6Wj85tr^VMM-U$HW83Hh{?}D5nE4+!R(= zvKd)Qft841vxNiPN_Ssct)m}EoMflkRQR1&ZzLGyzNCOwQIUp;Cqk_XHey<0nsFUA z5q{E|*Y*2F)Kq#fT%rZ8Bvkjg3V<%Cb;#aHAr2o zxxd%&2^W2fSd^92HTcxx zwe;vsCDfKNQ9Ay=LAWBMS4!dQ7|Ax*(VsbDn?;)?zP$`TP?k)MYv)x(4O_N|Oq+4m zusF!1sg#ML4Gkc&89f;d4O}+*MeX#8q*XVD`cxR0Ww)d{icYs>6rWPe=GO8cy=f7b zO9Z-Gn7}sFgeW!DY4ssx9fp<~3WBLrqmBQk3Ws*$92M(ujQ8>l)6w++zl$i-= z)5RAWuhB(7wXA3XmkevM(*^%j5#@`y5{RayQ{iSRq9;X3ez60nh)TpVt)jEHP-o=I zDCCvX1(ObGP(iAKIT=aA;&>jS%RVa5E!J~nE1|X7hWa|mxwXd7BP<|)$Kyik%p&wH*vGK1}G$N^%CD9JPB7U(pjFKYAErE&}*VSo$ zcnY-I{=U6VK&h2e;`o0WJ;S6jGFj7~{BF!JDdZrWZ2azfjD5C zq|-QPh*Zhdjb;d?!#p*gG_#T;L_#j*NR1UD7{fR;PDz1dpNBU~08W}wUv8W`~sFxZ=?P$Xq8fOh1zy3e}Ye$n~ET=kb zGbDNc4T7>=MYQ3wX3aKPxyRZ|uIuOj?KQDy)W#au&(*Z0H#6^Tu38P)4&}9~T$zE@ zaM?IFwO2Jk>ZSKJ^WXIP**V-W*Ux{`X*D?S+cWf~wnwQ<$SZ)6W>L!$nIphVlCd2j zpy-%dj2dhj=2k?o*Lc>*q5fJmIIE?Gkd>;DqFGvr83N-%z=@-zI|)i5(UZlM)xTd> znN>Hzm3Y(&wY7yal&zF?2uXzSG`6Xek&_t9x-vi+M~uD+qJc545YV>mzenqE^&r45x$wr@eai+Gw}A$nXf zV~UT3zW|*)ZFUk&KVdw>O=Mk%Dcu5>ivwlEQIUAw%)*AiG*cX@+irh0F6zrWY~~Kh z^(di%IM}yjO#mVUdmNXjCm+kR9GV1-lEx&~=HcovO8{a5p^`5v^#ZoVH1-PHa#ms3 zO&_P5c#Hc(01I>+PY^IZr97*IAf`KWI4xu-RJ(w2bt#k}i`cd%5@2&bg&jYh-l<96 zf?FmJ^cY)0db+YsN4bK4(&U>Zpk>LF7wjS*kg1msB8$Bd1FZB&G`n zzH$D|fY>dMK$2JsQV27OXLc+EVOcI18-e)%-FGlJHY_(<{>_G-z!nEbPHl}OCImxT zz~l(o&NOh+3j?iT*cGI;!|R&i^=)uywXO?Rz^CraGJ;}7!TF^EZ5PJ_K~FYcBJsgu z^inghE)7J@H`P>^Z~>8%RV9!Rz9hDC%lW01;=@x6)}&G*CrrVRrazc3VW`>+DUPaw zYe0^hL8h}a&9GwPuvSBh71YGEmz_GK*DLNt$xq{0LcUnIF&8~TwzMD#LG2eXd?kod z^p*$xOA4}fey0=4!V7NO5af4!h_;bICfCscYpSW{XLTA zEkTiUPzI%dgm3&EJhuA(NhrAinAWMI!_LWMbD@)Sc_cJQYx<^(=)HiJ)}BW#5o1Wb zf*q(U1To75IB4DdBd||O(@RX#L8fVsMeQ}TtPm*feO0DlFk-Ih#IGDtu}Er#Nb8pL zH#4WL(zOg=9|3R+Wr4WG^i_a8X61)Dt=4h$r=pcKbY1w;NaTTS;!@VQYn>Eg;2P-3 zvwyGRVA%%X3zf-wD(|V?dzPLb9(@Id?B=G~j5mS30gy8E={(4j_HD0{fUmXrR`<2pZdjLvMm0gx9r) zDeZz5Jf{AI@9xug^lT%fGAt9dpF~xmqKxDXWa|Ll32X+YuM4Yn5)t<5xmnSYNVxgf zq%Wr>EdOQwD%SK6p*&m5>Y%X!a6lXX_N3fO?kcp!R*;mf%8pRd&p62{DJd4OF(}LG zl>(>~!(Po4grXkH>J(SPP{=WtdWx;Z1OvcuT5jRd1f5d5B^b)rRHgokF?_&5kwa8E zVweU_iQ~L-@5=I>Qa0+8M^!oXR{o_6Y7|5=Fkh`TY1InrSg9nSEkToLl}19dFA;Tj z`_y-?iLjKGLWyIjk%Xb1229;m9h|@*8d2D7_47~a$IT%BRUe!+PhT|s*-^t#J$%#m zW%EcsG=WmzD&{q99jS4qa+QoS1qQ7HN8zi$*1vC2#_^=3DC{yM8DI1Ry~~c%+-Vmy zchx><4Lc&^QG;JJec61_4H^J0R+NQV$1Bv zWnaYs2tRijq#+>`Vwk3^{hfZXPB?2!kHUt-eR4`oeT5YP6$=^_$l_7oVVH&WeG^*+ zYIcpSuyX*kjc%hfKkE9ts9Du^Ys}Q(tuG2%Aj;v$_Q(|)NlAGiqa|88Mz@-t=Lc1N zI)1Goh|MbpQJMqphC=LsBC8ju3eMHLLePwSql4pGazJ%M818{bCrp_O6%;4Lj1_1t z3ND(xZ@OwifufL`bc#J1t*3eEB-xC|-mtW8*3L1*eG6My(U|+z)2D-&9O`4NP6tpn zv`l^hcf;tI-{OjJ`n^tRiO~ccgjeb`W5aB zB!y)kRjRO2#>Nd&)Z^$@bA|bumk9?^B8UYUkgQU=fQ%FTg%6=RK8*%HhHlU%^{dG7 z2*En)O71}HEmDzFD!oJs{ zqK#6){gP`$bzn-dC9M%up04^zwB@@n-HKWInDv=c$`-^kRS20s?T!$Pe1-P1U$+=B zhXp@S@lBD%xWVKN8~RVw4Jqi!8q}&PFj%q68O}O_*nR6)4VjFmk}>_fZZz&1l}de2 zxfgfyIP&?>f^QsGvb=#w5AS~>GntlDmTR0VsrlICq_0hNlN$k1q-AuYzZhzNNH-wq z9O#N*^GO@HQJrXhIJ$B$L^7P(U*#mlq)LUQ60y=NOO${a?l+H94nnSP?}~fgmL)bD zJbp5!vMLT4js3LxEf&o!we3L5MKiv(f4HfA~R|Eg&+h5y6RjXQ8Yx*AoH9Z`?6@;XCp0#LBn$nAh z5fSY~MjD+ABK^ptG>1!e(GaYWbuc3$ri_OmL`12ko?_{)Pgy)+JT)lkq&N6vo%R$W z!bQ~n6AnPW?k=bW)q;`cG%yM60ZlnBBAHoUU0HcrjTu~`1Hy<8)81&EbVU=FT)iOc znu6*T+<6`7nfeu6tC~D%WJCt7VME6giej-Td_chmYa9zptxI}lk@Rpe1QBeZ8AxAG z4^4axWKtq3W|RP(UeJyPekZz~r2s|^jqM&GtYd*A#;2nJBh5gQy~J|~gH6o6PL(I7 zfp9gR55P0QAp@7Q;IuR-wM!6;AKB-aajeZ<1VIyTEN8Vws}6EqG}bbTFneAu8iU{+ zZxQUH1v7+{CZ1vX4#rTD6dh716c-k(l#iDTsK7ymB$fIjkfhB#!Sj|D>E(a(v?$4x zY1Cc}RgQAQM;Ap$tl*>S+F-U0C8!njY zk>a#{QA4xBhy%!(t70bEi;=-s@m=YNXlX&EqAKzjYa@!Rl$@ftf^r(bQGf5U1mK@^ zm08z^dJmCuGBtQ}1O8ha(^)<_M)U+4g>sZ>CpCfFBZ3L&f=zEV1_j4Z-(WWe53H=@sT$7xMH{%I)W7L99q6Y91K4;*Bv4S;J(ap_0hgc-B(ej4--X zy!#0v;o#B{KjU2^QDDs;N%7}nHPr-nwQ@={0w7LfmaEmoU{(;bth8%IQl#8rHIYI{ z6cLmRFx6EH%hK??mEws~4j0g+z8F{kj3;avjs=ZljSe^pJsL|I%o+=g6KLu=aih={ zlo=+}8pTy+h2#oP#E~IW3L%t~iBfgvXa%Jtvj}u5FfoD^y+Eqw-ti(}yj zwa7;@hBZm(QL-U!Ykdl+nx1YMMOcT6AthHYga{D}j<_E}?laK2l{=%Bhr-@V8US6b z_Heb-PljC6uR_3f6_G=QY0v>v)C6aE(*N+>&p=}~mY31V-)`S00>r?@C8Ls>;@q2D z`6NFii*S|HGE?$hfDX+nLz}CLs|luhz)-z8>k=ZpdO}B zHEKeDRbmX3ETITkTn>wv2_{u+!DbW=#X)D*^lCF8gL?rAj_?P(y+VBj;16^vKpyGn zF9qdADP9K0BlHY^L0in#Bp#0de&a|T`p%XN3!RE3C>p5LKePn{pbz}?0so$WBk5=w zYFxk{`QkV$B?N$?=D4{vd2QEv$X>(&dBVM~U~gjUh2}ocxq;&&Qvf|42aOt-6O2L- zltG}la>-|yr42ye=obSOKfQ`ZG)pniIdMeMx!d(oS@XLB$Fo-|cEvnO7C_%IT13a544K)M2$sW67l z&!i+wl*4Wk4?%9!_%7@#+c@o2wKoFTn;=8M>l~CbvkVi; z7l@o_{Rg*+*=6?cDK_aiD|ILUrMN#6!@){kOn^ckQiMmymzYuY1?9{kWr!?-jrDNI zlgJPlm*&gECa!KS>ZTq_YH4`k{B)*#(XexwVKIVTU3d3^NYz2e5eO#j&kQzqN(d8J zeT3t4k;NB*%LX0?aDYF>uv;+ygC;{)4V!4Dke^Hl@_I5ZkS} znmsbGG0X9i!iJ~sbP_FO#obGl$d1fn?YpNE}3EmiH&D~rtRN|Z~AS^b(1+H zzsZtKa3<*{W5#d*sW3i436vUX&w+}V?bb_pBVTyd6p|GuM6$-yDY-i)sctE;+~cv9 zCfkxp$_+hojMN5Yy+UnECpDzhg(N$c8zu}z5MzKkHWy5+ei*QPM+8VQB(Z_XD`kNk zow#{Pb-|&e&C$$r`>E$q#cr{fj%Mac+lUZ_11v(xqy&lKAiU? zCuP&b1XaUYKw3a_Dv*4}k4|iRn-syZSi*=%JVetWDKVpwX|!C2aXS|TXT&M4p%rk2 zsNrb#ano_k`l*N(Ap=KLj~UdkLb3=%K{+5sFEU7|xx8w)6{6Y%aNR8w?S?N!n_)Mo z8iMgiLM+3;gk*Fgm?pGv)L$1D_$k%T8$Rv?aeqD|FU85Qn0O11^v^orn&1*!3ICyY zEG>AXtYqq0r3zvPt{;Wc0;Ds0{71pdAyt$JBrLK@7I6uB3O?^Nf5DLdyW{>yhuk-h zxDy`mC_L}@=Z;a&eMdZE4tO0L@Z34>5a+f-p6rfzh8*@-bJn5HS;rmx9Cr+H)v?EU zhaGqvajbF3QEv|gye$@S_*chqUmitVZYtwJS1*dW6ieI0yo@E~0WUZQ`OyDlhx$lA z*CFoC4|E`Vp+nrL9^x_zk+R(zK;g7mn?RYg3L8f$we>c$X3*emZcVLev_l(0v9-1~ zuO`)~+VdLMgG**-Y>eu$mDnFO@*iv}uqu!xp9sWrcwuWv(LYxQi}n z1)jyZMTdgOA!~@W)LX_a`-AFq(=K%dsRf?JxkZO!%6vlMoj65-F<~dlOoUA*Q&DpC zEpaYL03rlCC`^XIf&jsKlm+|%KmgF~2{1p*e+HNUfC0EApPwUUg!xRO;Yt?0i+{_K z0|#$(ulNH6T+p%Y@GCt*Y7tHH2vIZ!g1gwTpAd)Q)BzTf0SwuT#g-or@yW=nRyq@% z=os$&H^t4!wxG1|v(T|H=LoD37O58`3c^PP>6&&#dchR?1+!QeI-korbQkUv?qG^> zx5YahWZYbix!m%C%84GaF72HLv!oaAoYqYe&ZqR{^#XU)dM|AX< zE;S&`xVIVMuk1pK7eXv@6C8kI;|H7wAE6?Mg+s^c2sBh;4zMsh^e?yyf`$y7EpjQy z2>6}@Ubr3h&`+HviD){~C^VKs&Ctre`V_FNOcMP3iMBM79_$Z1kW-#4ai&5DNzzcsRhq5VD0teG3jpe7LpL=CTUW zl9C7qjR*XUvgd_%wq=kpQ$sSyZWYD}+*!Tf&$s=Kl`o}1abU7in~3pk5Tiwp}a zmM7}Wei7YykZR$U3IPRyTpyszc@+|fZGaxoTZ;|wGQ&6*mJQ%!Fkyke0uP`85m6}z z)UfW9K^PPve^De@N5QQVBM`!9fJ{8LNA)es3Qq|$;UOvTqsQVJHNJ2r_Yr0Z;*Vqrljsq9Apn(||cqB8M zxT$|Q)EHo3AUX&R#YE@<-8)HbrchvdYa=~�BG<_Aya#tN2)0rOWt=n-PtU?>oBg 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�F#FPOsXUy{29+e__-3j$J#NYl6o21?CL0r^P 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 z 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 X+sHs<0|#dc{2c-_{{iYp%K-ilQEU+t literal 0 HcmV?d00001 diff --git a/submissions/proposals/orgsci_ai_2026/README.md b/submissions/proposals/orgsci_ai_2026/README.md index be9b96fa7..79269ff1c 100644 --- a/submissions/proposals/orgsci_ai_2026/README.md +++ b/submissions/proposals/orgsci_ai_2026/README.md @@ -3,54 +3,52 @@ Stage 1 package for the *Organization Science* special issue "AI-Enabled Frontiers in Organizational Science" (editors Gartenberg, Hasan, Pierce, Bail, Dai, Hauser, Rahman, and Zhang). The call asks for a short proposal, a technical supplement, and a research artifact. The portal deadline is **1 November -2026**. A development workshop follows at Duke on 19–20 February 2027, and final papers of 2,500–4,500 -words are due in summer 2027. +2026**. The development workshop is **27–28 February 2027 (tentative)**. Final papers follow in summer +2027. The working title is *Beyond the Dyadic Straitjacket: Bringing Integrated Information Theory (IIT 4.0) and PyPhi to Organizational Coordination via a Self-Exemplifying Research Harness.* Part I is the -prospectus, about 1,880 words. It argues that exact system integrated information (Φ) over the +prospectus (1,992 words). It argues that exact system integrated information (Φ) over the minimum-information partition separates four coordination regimes that organizational prose conflates, and that the lab's harness — the scholar, the AI agents, and PyPhi — is itself the triad under study. Part II is the technical addendum: formal mechanics, worked tables, and the verification compendium. -The ten-slide deck carries the same argument in the minimal black-on-white style of the Port of Spain -talk, [`../../triadic_reduction/talk/trinidad-2026/Do-Triads-Reduce-to-Dyads-Trinidad.pptx`](../../triadic_reduction/talk/trinidad-2026/Do-Triads-Reduce-to-Dyads-Trinidad.pptx). +The current ten-slide deck, *Do Platforms Reduce to Pairs?*, carries that argument in the minimal +black-on-white style of the Port of Spain talk and adds a QR code to the lab. | File | What it is | | --- | --- | -| [`gdoc_1fhM_v6_story_plus_addendum.md`](gdoc_1fhM_v6_story_plus_addendum.md) | Stage 1 prospectus and technical addendum, exported from the author's Google Doc [`1fhM_C7pz6e3sR7aXY3_89oys06B-UyK9Vyf93bt1zFA`](https://docs.google.com/document/d/1fhM_C7pz6e3sR7aXY3_89oys06B-UyK9Vyf93bt1zFA/edit) | -| [`Beyond-the-Dyadic-Straitjacket-IIT-PyPhi.pptx`](Beyond-the-Dyadic-Straitjacket-IIT-PyPhi.pptx) | Ten-slide deck | +| [`gdoc_1fhM_v6_story_plus_addendum.md`](gdoc_1fhM_v6_story_plus_addendum.md) | v7 reviewed prospectus and technical addendum, exported from Google Doc [`1fhM_C7pz6e3sR7aXY3_89oys06B-UyK9Vyf93bt1zFA`](https://docs.google.com/document/d/1fhM_C7pz6e3sR7aXY3_89oys06B-UyK9Vyf93bt1zFA/edit). Incorporates Stage 1 review items 0.1–0.11, F.1–F.19, and F.23–F.24 | +| [`Do-Platforms-Reduce-to-Pairs-IIT-PyPhi.pptx`](Do-Platforms-Reduce-to-Pairs-IIT-PyPhi.pptx) | Current ten-slide deck, with the QR code | +| [`Beyond-the-Dyadic-Straitjacket-IIT-PyPhi.pptx`](Beyond-the-Dyadic-Straitjacket-IIT-PyPhi.pptx) | Earlier ten-slide deck of the same argument | +| [`STAGE1_REVIEW.md`](STAGE1_REVIEW.md) | Audit of the pre-review text against the call, the prototype, and the lab | +| [`../../../irreducibility-pipeline/`](../../../irreducibility-pipeline/) | The prototype: rival encodings, the evidence gate, and exact Φ(MIP) | ## Status -The package was filed in the lab on 27 October 2026, ahead of the portal deadline. Manuscript Central -has not received it. - -[DRAFTED by Claude, 27 Oct 2026.] A full review of the Google Doc against the CFP, the prototype and -the lab is in [`STAGE1_REVIEW.md`](STAGE1_REVIEW.md): CFP compliance, narrative, a line-by-line audit of -every repository reference and number, a citation audit, and an attribution audit, with proposed -replacement text marked. Eleven items block submission; the first is that the prototype -`irreducibility-pipeline` had no git remote, so it now lives inside this repository at -[`../../../irreducibility-pipeline/`](../../../irreducibility-pipeline/) and a lab CI check -(`irreducibility-pipeline-reproduce`) covers its 17 reference results. Two dates above need checking -against the CFP PDF: the in-person workshop is 27–28 February 2027 (tentative) with no venue named, and -Stage 3 is described as ~five-page *Science/Nature*-style articles plus a technical appendix, not a -2,500–4,500-word paper. An earlier draft lives on the open branch `submission/cfp-arms-2026-10`, under -`submissions/orgsci_ai_frontiers_methods/`. That branch's v3 points at the same Google Doc and treats -the doc as the current text. This folder holds the later export: the v6 prospectus, the technical -addendum, and the deck. +The package was filed in the lab on 27 October 2026, ahead of the 1 November portal deadline. The v7 +export is the text that answers [`STAGE1_REVIEW.md`](STAGE1_REVIEW.md). The prototype lives in this +repository at [`../../../irreducibility-pipeline/`](../../../irreducibility-pipeline/), and the lab +check `irreducibility-pipeline-reproduce` covers its 17 reference results. The workshop date is +**27–28 February 2027 (tentative)**; the call names no venue. [`STAGE1_REVIEW.md`](STAGE1_REVIEW.md) +reads Stage 3 as short *Science*/*Nature*-style articles plus a technical appendix. + +An earlier v3 draft remains at [`../../orgsci_ai_frontiers_methods/`](../../orgsci_ai_frontiers_methods/). +The branch `submission/cfp-arms-2026-10` is where that draft was opened. The addendum's numbers are evidence about Boolean coordination models. No worker is measured. Φ is the instrument the proposal uses to explore whether a coordination form is irreducible. ## The ten slides -1. Beyond the Dyadic Straitjacket +*Do Platforms Reduce to Pairs?* + +1. Do Platforms Reduce to Pairs? 2. From Literacy to Algorithmacy -3. Do Algorithmic Triads Reduce to Dyads? -4. Integrated Information Theory (IIT 4.0) and PyPhi -5. The Minimum Information Partition -6. The Four Coordination Regimes -7. Ride-Hail Dispatch Under the Microscope -8. Power in the Triad: Lock-In and Escape -9. Why AI: A Research Harness, Not an Oracle -10. Fork the Harness +3. Is a Platform a Third Party or Just a Fast Go-Between? +4. Testing Coordination with IIT 4.0 and PyPhi +5. Two Questions Every Three-Party System Answers +6. Four Kinds of Three-Party Coordination +7. Same Three Parties, Two Different Rules +8. How Platforms Keep Lock-In — and How It Breaks +9. An Open AI Harness, Not an AI Judge +10. Fork the Repo and Test Your Own Case diff --git a/submissions/proposals/orgsci_ai_2026/gdoc_1fhM_v6_story_plus_addendum.md b/submissions/proposals/orgsci_ai_2026/gdoc_1fhM_v6_story_plus_addendum.md index a110e7cce..82e1aa2c2 100644 --- a/submissions/proposals/orgsci_ai_2026/gdoc_1fhM_v6_story_plus_addendum.md +++ b/submissions/proposals/orgsci_ai_2026/gdoc_1fhM_v6_story_plus_addendum.md @@ -1,20 +1,27 @@ +# Beyond the Dyadic Straitjacket: Bringing Integrated Information Theory (IIT 4.0) and PyPhi to Organizational Coordination via a Self-Exemplifying Research Harness + +**Special Issue:** [*Organization Science* — AI-Enabled Frontiers in Organizational Science](https://pubsonline.informs.org/pb-assets/filesorsc/CFP_AI-Enabled%20Frontiers%20in%20Organizational%20Science-1785685920943.pdf): Reimagining What Can Be Known and How +**Contribution Types:** AI-Enabled Research Loops Under Human Direction; Critical, Diagnostic, and Boundary-Setting Work; Reusable Research Infrastructure +**Stage 1 Package:** Part I Stage 1 Research Proposal (Prospectus, Sections 1–5, 1,992 words) \+ Part II Technical Addendum & Verification Compendium \+ Open Research Harness ([algorithmacy-lab](https://github.com/rogerSuperBuilderAlpha/algorithmacy-lab)) +**Author:** Roger Hunt · PhD Candidate, Bentley University · rhunt@bentley.edu + # Part I: Stage 1 Research Proposal (Prospectus) -## 1. The Foundational Question: When Does a Triad Refuse to Reduce to Dyads? +## 1\. The Foundational Question: When Does a Triad Refuse to Reduce to Dyads? -What happens when a third party steps between two people who work together? Georg Simmel (1902/1950) argued that the jump from two actors to three is the most radical threshold in social life: a dyad vanishes if either member leaves, whereas a triad can outlive a departure, play partners against each other, or fuse three actors into a unit inexplicable by its pairs alone. Organization theory builds on that insight, from Caplow (1956) on coalitions and Thompson (1967) on interdependence to Burt (1992) on structural holes, Coleman (1988) on closure, Obstfeld (2005) on *tertius iungens*, and Kellogg, Valentine, and Christin (2020) on algorithmic control. +What happens when a third party steps between two people who work together? Georg Simmel (1902/1950: 123\) argued that the jump from two actors to three is the most radical threshold in social life: a dyad vanishes if either member leaves, whereas a triad can outlive a departure, play partners against each other, or fuse three actors into a unit inexplicable by its pairs alone. Organization theory builds on that insight, from Caplow (1956) on coalitions and Thompson (1967) on interdependence to Burt (1992) on structural holes, Coleman (1988) on closure, Obstfeld (2005) on *tertius iungens*, and Kellogg, Valentine, and Christin (2020) on algorithmic control. Historically, formal coordination ran on written text. Standard operating procedures and contracts coordinated work on paper. Navigating a bureaucracy required **literacy**: reading shared rules that sat in plain sight. Even when a manager stood between two workers, work operated as a chain of dyadic obligations—Worker A reported to the manager under one rule, and the manager instructed Worker B under another—so anyone could understand the workflow by reading each pairwise link in turn. Today, software platforms, automated dispatchers, rating engines, and continuous-integration gates sit in the middle of work (Cameron, 2024; Curchod, Patriotta, Cohen, & Neysen, 2020; Orlikowski & Scott, 2008; Rahman, 2021; Shestakofsky, 2017). Navigating these workplaces requires a different sensibility: **algorithmacy**. Unlike a static rulebook, an algorithmic mediator is an active, state-updating participant that watches both sides at once and conditions each human actor's next move on counterparts they may never meet. -Yet after a decade of fieldwork on algorithmic management, scholars remain deadlocked: when an algorithm mediates between two counterparts, does it create a genuinely irreducible triad or merely a fast broker stringing together two-party ties? One camp sees totalizing triads that fuse workers, clients, and software into an indivisible whole (Kellogg et al., 2020; Stark & Pais, 2020); a rival camp sees high-speed market relays unbundling work into arms-length dyads. +Yet after a decade of fieldwork on algorithmic management, \[DRAFTED by Claude\] scholars still hold competing images of what the platform is (Vallas & Schor, 2020; Schor et al., 2020): when an algorithm mediates between two counterparts, does it create a genuinely irreducible triad or merely a fast broker stringing together two-party ties? One camp sees totalizing triads that fuse workers, clients, and software into an indivisible whole (Stark & Pais, 2020); \[DRAFTED by Claude\] a rival camp sees matching markets that relay buyers to sellers (Einav, Farronato, & Levin, 2016; Hall & Krueger, 2018; Sundararajan, 2016). Organization science has not settled this debate because "triadic mediation," "reciprocal interdependence," and "systemic wholeness" have remained metaphors. Network analysis counts ties and brokerage paths, while regressions measure whether one actor's behavior correlates with another's. Neither can answer Simmel's causal question: can a three-party coordination arrangement be severed into pairwise channels without losing causal power, or does it act as an indivisible whole? -## 2. The Core Innovation: Bringing Integrated Information Theory (IIT 4.0) and PyPhi to Organizational Coordination +## 2\. The Core Innovation: Bringing Integrated Information Theory (IIT 4.0) and PyPhi to Organizational Coordination -To answer that question, we bring a mathematical framework from theoretical neuroscience into organization science: **Integrated Information Theory (IIT 4.0)** (Albantakis et al., 2023; Tononi, 2004) and its exact computational engine, **PyPhi** (Mayner et al., 2018). +To answer that question, we bring a mathematical framework from theoretical neuroscience into organization science: **Integrated Information Theory (IIT 4.0)** (Albantakis et al., 2023; Tononi, 2004\) and its exact computational engine, **PyPhi** (Mayner et al., 2018). Neuroscientists confronted the exact puzzle organization theorists face today: given interacting elements whose states update over time, when does a collection act as one integrated unit rather than smaller modules operating side by side? Correlation cannot tell. Two wall clocks tick in lockstep without forming one mechanism, and falling dominoes pass a signal from first to last through purely pairwise contact. @@ -24,269 +31,297 @@ Then comes the decisive move that makes PyPhi transformative for organization th The causal information lost across that weakest seam is **system integrated information (Φ)**. This yields an exact structural test: -• **When Φ = 0 across the weakest cut**, the three-party arrangement is causally reducible: no matter how entangled the prose sounds, the workflow factors into pairwise or unilateral links without losing causal information. -• **When Φ > 0 across the weakest cut**, even the gentlest partition breaks real causal structure: the three parties form an irreducible causal whole that cannot be recovered from its pairs. +• **When Φ \= 0 across the weakest cut**, the three-party arrangement is causally reducible: no matter how entangled the prose sounds, the workflow factors into pairwise or unilateral links without losing causal information. +• **When Φ \> 0 across the weakest cut**, even the gentlest partition breaks real causal structure: the three parties form an irreducible causal whole that cannot be recovered from its pairs. -Importing IIT 4.0 and PyPhi into organization science overturns a sixty-year assumption in our field. Since Thompson (1967), scholars have treated *joint influence* (whether two actors must combine inputs to determine a third actor's next step) and *systemic wholeness* (whether the group forms an indivisible unit) as if they were the same thing. Running PyPhi across all 256 possible three-party mediated coordination structures proves that joint influence and systemic wholeness are orthogonal dimensions, revealing four distinct coordination regimes that organizational prose routinely conflates (Technical Addendum, Section A.1 and Table 1): +\[DRAFTED by Claude\] Interdependence typologies since Thompson (1967) classify how tasks, outcomes and knowledge couple (Victor & Blackburn, 1987; Wageman, 1995; Puranam, Raveendran, & Knudsen, 2012; Raveendran, Silvestri, & Gulati, 2020); none tests whether the coupled unit can be cut without loss. \[DRAFTED by Claude\] The Peirce probes (89 one-input wirings, 30 two-input forms, each cut by PyPhi) show that *joint influence* (whether two actors must combine inputs to determine a third actor's next step) and *systemic wholeness* (whether the group forms an indivisible unit) come apart in both directions, which yields four coordination regimes that organizational prose routinely conflates (Technical Addendum, Section A.1, Table 1, and Appendix A.2): -• **Dyadic Relays (no joint determination, Φ = 0):** A mediator passes Partner A's input to Partner B down a one-way chain; PyPhi proves the workflow factors into pairwise links across its weakest seam, requiring only **literacy** (reading one's own direct rule). -• **Broadcast Cascades (no joint determination, Φ > 0):** No single actor combines two inputs at once, yet closed feedback loops bind all three into an indivisible cycle that cannot be cut without losing information. -• **False Dyads and Hidden Clearinghouses (joint determination, yet three-party Φ = 0):** One actor combines inputs from two counterparts, yet the three-party system splits across its weakest seam because one party is a passive sink or interchangeable pool around a two-party core. -• **Irreducible Triads (joint determination and Φ > 0):** The mediator fuses all three parties into a unit that resists every cut. Navigating it requires **algorithmacy**: no participant can steer outcomes by reading a pairwise contract, because causal power lives in the simultaneous state of all three actors. +• **Dyadic Relays (no joint determination, Φ \= 0):** A mediator passes Partner A's input to Partner B down a one-way chain; PyPhi shows the workflow factors into pairwise links across its weakest seam, requiring only **literacy** (reading one's own direct rule). +• **Broadcast Cascades (no joint determination, Φ \> 0):** No single actor combines two inputs at once, yet closed feedback loops bind all three into an indivisible cycle that cannot be cut without losing information. +• **False Dyads and Hidden Clearinghouses (joint determination, yet three-party Φ \= 0):** One actor combines inputs from two counterparts, yet the three-party system splits across its weakest seam because one party is a passive sink or interchangeable pool around a two-party core. +• **Irreducible Triads (joint determination and Φ \> 0):** The mediator fuses all three parties into a unit that resists every cut. Navigating it requires **algorithmacy**: no participant can steer outcomes by reading a pairwise contract, because causal power lives in the simultaneous state of all three actors. -## 3. Why and How We Use AI: A Self-Exemplifying Research Harness, Not "AI Doing Research" +## 3\. Why and How We Use AI: A Self-Exemplifying Research Harness, Not "AI Doing Research" -We do not use artificial intelligence to "do research" for us, nor do we treat Large Language Models as theoretical oracles. In fact, our preliminary laboratory tests prove that standalone LLMs fail badly when asked to judge organizational structure directly. Given ride-hail dispatch descriptions, a frontier LLM guessed from surface words ("platform," "pool") and got every nontrivial variation backward: calling driver pooling a triad when the platform-rider sub-circuit factored the pool out, and calling off-app repeat rides a dyadic collapse when direct peer-to-peer contact formed an integrated bypass core that turned platform mediation into a **Potemkin village** (Technical Addendum, Section A.2.2 and Table 5). +We do not use artificial intelligence to "do research" for us, nor do we treat Large Language Models as theoretical oracles. In fact, our preliminary laboratory tests show that a standalone LLM fails when asked to judge organizational structure directly. \[DRAFTED by Claude\] Given only the case prose, the model found both human-encoded design variants but predicted both verdicts backward: it expected driver pooling to stay a three-party triad (PyPhi: the drivers factor out) and off-app repeat rides to collapse into a dyad (PyPhi: a bypass core of driver and rider), a core that turned platform mediation into a **Potemkin village** (Technical Addendum, Section A.2.2 and Appendix B, Table 5). LLMs fail as structural judges because they match semantic patterns rather than computing combinatorial causal partitions. Conversely, while IIT 4.0 and PyPhi provide the exact mathematical engine organization theory needs, applying them to qualitative fieldwork previously hit a wall: hand-coding ethnographies into transition tables could neither scale nor survive a skeptic's objection that the analyst rigged the encoding. -Instead, we built a **collaborative, falsifiable research harness** (algorithmacy-lab) to execute and apply IIT 4.0 and PyPhi to organizational life (Technical Addendum, Section A.2.1 and Appendix B). Any researcher can fork our repository, engage the harness, ask an organizational question, and have their AI agents run the experimental workflow: translating field narratives into quote-anchored transition models, generating the strongest skeptical counter-encoding, executing exact PyPhi partition cuts and four falsification controls (actor removal, link severing, pooling, and peer-to-peer bypass), and contributing verified results back to the shared research program. +Instead, we built a **collaborative, falsifiable research harness** (algorithmacy-lab) to execute and apply IIT 4.0 and PyPhi to organizational life (Technical Addendum, Section A.2.1 and Appendix B). \[DRAFTED by Claude\] Any researcher can fork the lab, run its model-agnostic drafter and adversary prompts on a case, pass the result through the evidence gate, and compute. \[DRAFTED by Claude\] Three runs on stipulated cases are logged so far, all on one commercial model (Stage 2 risks in Section 5). In doing so, **our research architecture quite literally demonstrates the exact triadic coordination we are examining**. A lone scholar hand-coding a case, or prompting a chatbot in private, is a reducible dyad vulnerable to confirmation bias and hallucination. Inside our repository, the organizational scholar, the AI agents, and the deterministic PyPhi verification harness form an irreducible triad: the scholar supplies theoretical questions, competing AI agents translate field evidence and rival readings, and the PyPhi harness enforces exact partition laws and falsification gates that neither human bias nor AI fluency can bypass. -## 4. What the Harness Reveals and What We Will Do in Stage 2 (January–May 2027) +## 4\. What the Harness Reveals and What We Will Do in Stage 2 (January–May 2027\) Applying PyPhi through this harness has already established three findings for organization theory (Technical Addendum, Sections A.2–A.3 and Tables 3–6): -• **Turning interpretive deadlocks into exact empirical targets:** Running ride-hail dispatch accounts (Cameron, 2024; Rosenblat & Stark, 2016) through PyPhi collapses a decade-long debate into one observable rule (Technical Addendum, Table 3): simultaneous driver-rider-platform commitment yields an Irreducible Triad (Φ = 2.0 bits), whereas sequential offer passing yields a Dyadic Relay (Φ = 0.0 bits), pinpointing the exact field evidence needed to decide between them. -• **Mapping who holds power in an algorithmic triad:** Perturbing ride-hail dispatch and all 256 coordination structures reveals where leverage lives (Technical Addendum, Tables 3–4): mediators preserve triadic lock-in by blocking direct peer-to-peer ties between counterparts, while workers and clients escape lock-in by building outside options that preserve an independent state transition. -• **Extending PyPhi to multi-valued states and exposing correlation proxies:** Our custom multi-valued IIT 4.0 engine models multi-tiered action states (withholding, routine compliance, discretionary effort) and proves that standard correlation and mutual-information proxies miss over a third (96 of 256) of the irreducible triads that exact PyPhi catches (Technical Addendum, Appendices A–B). +• **Turning interpretive deadlocks into exact empirical targets:** Running ride-hail dispatch accounts (Cameron, 2024; Rosenblat & Stark, 2016\) through PyPhi turns a decade-long debate into one testable rule (Technical Addendum, Table 3): simultaneous driver-rider-platform commitment yields an Irreducible Triad (Φ \= 2.0 bits), whereas sequential offer passing yields a Dyadic Relay (Φ \= 0.0 bits), pinpointing the exact field evidence needed to decide between them. +• **Mapping who holds power in an algorithmic triad:** Perturbing ride-hail dispatch and all 256 coordination structures reveals where leverage lives (Technical Addendum, Tables 3–4): mediators preserve triadic lock-in by blocking direct peer-to-peer ties between counterparts, while workers and clients escape lock-in by building outside options that preserve an independent state transition. +• **Extending PyPhi to multi-valued states and exposing correlation proxies:** Our custom multi-valued IIT 4.0 engine models multi-tiered action states (withholding, routine compliance, discretionary effort) \[DRAFTED by Claude\] and shows that two popular time-series proxies barely beat chance on the 256-form census (rank-AUC 0.563 and 0.629), while exact PyPhi finds its 24 irreducible forms (Technical Addendum, Appendix A.3). -In Stage 2 (January–May 2027), we will use the harness to execute three workstreams (Technical Addendum, Section A.3 and Appendix C): (1) **a comparative re-analysis of 10 to 15 landmark ethnographies of algorithmic management**, paired with dual human field-coder validation on ride-hail dispatch and archival GitHub pull-request review gates; (2) **an actor-indexed strategic model of triadic lock-in and coalition escape**, testing when mediators fuse partners into a triad versus keeping them in dyadic silos; and (3) **an open-source release of the harness and command-line toolkit before the February 2027 Duke workshop**, enabling any organizational scholar to fork the repository and run exact PyPhi experiments on their own cases. +In Stage 2 (January–May 2027), we will use the harness to execute three workstreams (Technical Addendum, Section A.3 and Appendix C): (1) **a comparative re-analysis of 10 to 15 landmark ethnographies of algorithmic management**, paired with dual human field-coder validation on ride-hail dispatch and archival GitHub pull-request review gates; (2) **an actor-indexed strategic model of triadic lock-in and coalition escape**, testing when mediators fuse partners into a triad versus keeping them in dyadic silos; and (3) **an open-source release of the harness and command-line toolkit before the 27–28 February 2027 workshop (dates tentative)**, enabling any organizational scholar to fork the repository and run exact PyPhi experiments on their own cases. -## 5. Boundary Conditions, Key Risks, and How Organization Science Changes +## 5\. Boundary Conditions, Key Risks, and How Organization Science Changes Four boundary conditions govern this program, each stress-tested in our preliminary audits (Technical Addendum, Section A.4 and Table 6): -• **Interpretive ambiguity:** When field prose leaves a transition rule underspecified, a skeptical encoding can flip Φ; our harness reports the spread between primary and skeptical verdicts to pinpoint what field observation is missing. -• **Lock-in versus performance:** High Φ measures structural indivisibility, not efficiency or fairness; in our benchmarks, Φ is orthogonal to task payoff across both extractive platform traps and high-performing teams. -• **Boundary specification:** Omitting a fourth party or imputing ties via closure priors distorts partition cuts even when correlations look healthy, which is why the harness enforces actor-removal and boundary checks. +• **Interpretive ambiguity:** When field prose leaves a transition rule underspecified, a skeptical encoding can flip Φ; our harness reports the spread between primary and skeptical verdicts to pinpoint what field observation is missing. +• **Lock-in versus performance:** High Φ measures structural indivisibility, not efficiency or fairness; in our benchmarks, Φ is orthogonal to task payoff across both extractive platform traps and high-performing teams. +• **Boundary specification:** Omitting a fourth party or imputing ties via closure priors distorts partition cuts even when correlations look healthy, which is why the harness enforces actor-removal and boundary checks. • **Combinatorial scale:** Because PyPhi evaluates every partition, exact IIT 4.0 scales exponentially and targets governance nuclei of three to ten interacting roles. -When Daft and Lewin (1990) launched *Organization Science*, they urged scholars to break out of the "normal science straitjacket." By bringing Integrated Information Theory and PyPhi into organization theory—and wrapping them in an open, self-exemplifying research harness that any scholar and their AI agents can fork, interrogate, and extend—we give the field an exact instrument to measure when three actors become more than the sum of their dyadic parts, and when work crosses the threshold from **literacy** to **algorithmacy**. +\[DRAFTED by Claude\] Three risks govern Stage 2: fieldwork waits on IRB approval; encoding must hold on open-weight models, not only the commercial one we logged; and AI–human coder agreement (target Krippendorff's α ≥ 0.80 per rule) is unmeasured. \[DRAFTED by Claude\] Every verdict audits rule architectures, not individuals, and the lever matrix is symmetric (Technical Addendum, Section A.4). +When Daft and Lewin (1990) launched *Organization Science*, they urged scholars to break out of the "normal science straitjacket." By bringing Integrated Information Theory and PyPhi into organization theory—and wrapping them in an open, self-exemplifying research harness that any scholar and their AI agents can fork, interrogate, and extend—we give the field an exact instrument to measure when three actors become more than the sum of their dyadic parts, and when work crosses the threshold from **literacy** to **algorithmacy**. # Part II: Technical Addendum — Formal Mechanics, Worked Tables, and Verification Compendium ## Addendum Section A.1. Formal Representation, Boolean Transition Mechanics, and Regime Classification -In their inaugural editorial for *Organization Science*, Daft and Lewin (1990) urged organizational scholars to break out of the "normal science straitjacket." Thirty-six years later, generative AI threatens an inverted version of that trap: automating low-cost, incremental variations on familiar designs rather than opening scientific questions that were previously intractable (Gartenberg, Hasan, Murray, & Pierce, 2026; March, 1991; Girotra, Terwiesch, & Ulrich, 2010). +In their inaugural editorial for Organization Science, Daft and Lewin (1990) urged organizational scholars to break out of the "normal science straitjacket." Thirty-six years later, generative AI threatens an inverted version of that trap: automating low-cost, incremental variations on familiar designs rather than opening scientific questions that were previously intractable (Gartenberg, Hasan, Murray, & Pierce, 2026; March, 1991; Girotra, Terwiesch, & Ulrich, 2010). Our core contribution addresses a foundational measurement problem in organizational theory. Platforms, clearinghouses, and AI agents now sit at the center of workplace coordination (Kellogg, Valentine, & Christin, 2020; Rahman, 2021; Cameron, 2024; Curchod, Patriotta, Cohen, & Neysen, 2020; Anthony, Bechky, & Fayard, 2023; Orlikowski & Scott, 2008). Yet organizational science still lacks a reproducible way to test a basic structural claim: **when an intermediary sits between two parties, is the three-party arrangement genuinely triadic—held together only by all three parties acting in concert—or does it factor into pairwise dyads that merely pass through the middle?** -Nearly every major stream of organization theory stakes a claim on this distinction—Simmel (1902/1950) on *tertii* and super-individual wholes, Caplow (1956) on coalitions, Burt (1992) on structural holes, Obstfeld (2005) on *tertius iungens*, Granovetter (1973) on bridges, Coleman (1988) on closure, Ostrom (1990) on polycentric governance, Thompson (1967) on interdependence, and Wageman (1995) on hybrid tasks—without a common mathematical test to decide it on organizational evidence. Worse, when qualitative accounts of an arrangement disagree (for example, a platform dispatch manual describing joint matching versus a driver describing a one-way algorithmic dictate), researchers typically average two human coders into an inter-rater reliability score, burying the structural disagreement inside a consensus code. +Nearly every major stream of organization theory stakes a claim on this distinction—Simmel (1902/1950) on tertii and super-individual wholes, Caplow (1956) on coalitions, Burt (1992) on structural holes, Obstfeld (2005) on tertius iungens, Granovetter (1973) on bridges, Coleman (1988) on closure, Ostrom (1990) on polycentric governance, Thompson (1967) on interdependence, and Wageman (1995) on hybrid tasks—without a common mathematical test to decide it on organizational evidence. Worse, when qualitative accounts of an arrangement disagree (for example, a platform dispatch manual describing joint matching versus a driver describing a one-way algorithmic dictate), researchers typically average two human coders into an inter-rater reliability score, burying the structural disagreement inside a consensus code. ### How We Represent and Test an Organizational Triad -Consider a recurring organizational act involving three parties—for instance, a Driver (*D*), a Dispatch Platform (*P*), and a Rider (*R*). At each step, each party has a binary action state (`1` = commits/participates; `0` = withholds/waits) and a deterministic rule for its next state (*D*′, *P*′, *R*′) as a function of the current states of the parties (`AND` [∧], `OR` [∨], `NOT` [¬], `XOR` [⊕]): +Consider a recurring organizational act involving three parties—for instance, a Driver (D), a Dispatch Platform (P), and a Rider (R). At each step, each party has a binary action state (1 \= commits/participates; 0 \= withholds/waits) and a deterministic rule for its next state (D′, P′, R′) as a function of the current states of the parties (AND \[∧\], OR \[∨\], NOT \[¬\], XOR \[⊕\]): -* **A Relay / Conduit (*P*′ = *D*):** Suppose the platform simply relays the driver's state to the rider (*D*′ = *P*, *P*′ = *D*, *R*′ = *P*). Here the platform never combines both sides' states; the rider is a downstream receiver, and severing the rider from the loop leaves the driver–platform interaction intact. -* **A Joint-Commitment Clearinghouse (*P*′ = *D* ∧ *R*):** Now suppose the platform commits a dispatch *only when both* the driver is available *and* the rider has confirmed (*D*′ = *P*, *P*′ = *D* ∧ *R*, *R*′ = *P*). Here no pairwise slice explains what the platform does next; the transition depends irreducibly on the joint state of both counterparts. +* **A Relay / Conduit (P′ \= D):** Suppose the platform simply relays the driver's state to the rider (D′ \= P, P′ \= D, R′ \= P). Here the platform never combines both sides' states; the rider is a downstream receiver, and severing the rider from the loop leaves the driver–platform interaction intact. +* **A Joint-Commitment Clearinghouse (P′ \= D ∧ R):** Now suppose the platform commits a dispatch only when both the driver is available and the rider has confirmed (D′ \= P, P′ \= D ∧ R, R′ \= P). Here no pairwise slice explains what the platform does next; the transition depends irreducibly on the joint state of both counterparts. To test where any multi-party rule table falls, we compile the rules into a state-by-node Transition Probability Matrix (TPM) and compute exact **system integrated information Φ over the Minimum Information Partition (MIP)** in Integrated Information Theory 4.0 (Albantakis et al., 2023; Mayner et al., 2018). The MIP cuts the system into independent parts in every possible way, severs the causal links crossing the cut, and measures how much cause-and-effect information is lost under the least-destructive cut: -1. **Factorable / Dyadic (Φ(MIP) = 0):** If some cut loses zero causal information, the arrangement factors into simpler parts. -2. **Irreducible / Triadic (Φ(MIP) > 0):** If every cut loses causal information, the arrangement is dynamically irreducible, and IIT 4.0's **major complex** (`maximal_complex`) identifies the exact subset of parties that forms the irreducible core ({*D*, *P*, *R*} of size 3, or a two-party capture/bypass core {*P*, *R*}, {*D*, *P*}, or {*D*, *R*}). +1. **Factorable / Dyadic (Φ(MIP) \= 0):** If some cut loses zero causal information, the arrangement factors into simpler parts. +2. **Irreducible / Triadic (Φ(MIP) \> 0):** If every cut loses causal information, the arrangement is dynamically irreducible, and IIT 4.0's **major complex** (maximal\_complex) identifies the exact subset of parties that forms the irreducible core ({D, P, R} of size 3, or a two-party capture/bypass core {P, R}, {D, P}, or {D, R}). ### Two Foundational Guardrails (Algebraic Logic and Structural Regime Classification) -Our framework pairs exact Φ(MIP) with two theoretical guardrails (proved and benchmarked in Technical Appendix A): +Our framework pairs exact Φ(MIP) with two theoretical guardrails (stated and benchmarked in Technical Appendix A): + +* **Why Peirce vs. Quine Matters:** Peirce (1897/1933) argued that genuine triadic relations cannot be built from dyads alone, whereas Quine (1954) showed that any n-ary predicate can be rewritten as a single dyadic predicate F by expanding the domain with iterated Kuratowski ordered pairs. Modern universal algebra explains why both hold in their respective settings: in unrestricted primitive-positive clones \[F\]ₚₚ, the ternary diagonal Δ₃ is definable from binary equality via (x \= y) ∧ (y \= z) (Koshkin, 2024a, 2024b), whereas in Peircean Algebraic Logic without primitive teridentity (PAL ∖ {id₃}; Burch, 1991; Hereth Correia & Pöschel, 2004, 2006\) and in bond algebra over a fixed set of parties (Koshkin, 2024b), binary composition never creates a three-way junction. Because an empirical study fixes who the organizational parties are, irreducibility must be tested over that fixed party set. +* **Why Dynamical Wholeness (Φ(MIP) \> 0\) Must Be Paired with Mediator Regime (regime.py):** Our computational probes show that dynamical wholeness (Φ(MIP) \> 0\) and two-input joint determination cross in both directions: a cyclic three-party copy ring (A′ \= C, B′ \= A, C′ \= B) uses only one-input copy rules yet scores Φ(MIP) \= 2.0 because no cut can sever a closed ring without loss, whereas 11 of 30 two-input mediated forms (such as a three-voter majority triad) contain genuine two-input rules yet factor at Φ(MIP) \= 0\. Our pipeline therefore reports both Φ(MIP) with its major complex and the structural mediator regime (the code's dyadic, glossed here as PASSIVE or CONDUIT, and BOTTLENECK, CAPTURE, ENRICHER, BYPASSED), distinguishing cyclic one-input relays from genuine joint-commitment triads. +* **From Literacy to Algorithmacy:** This distinction grounds our construct of **algorithmacy**: whereas oracy, literacy, and numeracy suffice when technology acts as a passive dyadic conduit (Φ(MIP) \= 0), coordinating through an active algorithmic mediator that binds parties into an irreducible causal complex (Φ(MIP) \> 0\) requires reasoning about joint commitment rules, outside options, and partition fault lines. -* **Why Peirce vs. Quine Matters:** Peirce (1897/1933) argued that genuine triadic relations cannot be built from dyads alone, whereas Quine (1954) showed that any *n*-ary predicate can be rewritten as a single dyadic predicate *F* by expanding the domain with iterated Kuratowski ordered pairs. Modern universal algebra explains why both hold in their respective settings: in unrestricted primitive-positive clones [F]ₚₚ, the ternary diagonal Δ₃ is definable from binary equality via (*x* = *y*) ∧ (*y* = *z*) (Koshkin, 2024, 2025), whereas in Peircean Algebraic Logic without primitive teridentity (PAL ∖ {id₃}; Burch, 1991; Hereth Correia & Pöschel, 2004, 2006) and in bond algebra over a fixed set of parties (Koshkin, 2025), binary composition never creates a three-way junction. Because an empirical study fixes who the organizational parties are, irreducibility must be tested over that fixed party set. -* **Why Dynamical Wholeness (Φ(MIP) > 0) Must Be Paired with Mediator Regime (`regime.py`):** Our computational probes show that dynamical wholeness (Φ(MIP) > 0) and two-input joint determination cross in both directions: a cyclic three-party copy ring (*A*′ = *C*, *B*′ = *A*, *C*′ = *B*) uses only one-input copy rules yet scores Φ(MIP) = 2.0 because no cut can sever a closed ring without loss, whereas 11 of 30 two-input mediated forms (such as a unanimous three-voter majority triad) contain genuine two-input rules yet factor at Φ(MIP) = 0. Our pipeline therefore reports **both** Φ(MIP) with its major complex **and** the structural mediator regime (`PASSIVE`, `CONDUIT`, `BOTTLENECK`, `CAPTURE`, `ENRICHER`, `BYPASSED`), distinguishing cyclic one-input relays from genuine joint-commitment triads. -* **From Literacy to Algorithmacy:** This distinction grounds our construct of **algorithmacy**: whereas *oracy*, *literacy*, and *numeracy* suffice when technology acts as a passive dyadic conduit (Φ(MIP) = 0), coordinating through an active algorithmic mediator that binds parties into an irreducible causal complex (Φ(MIP) > 0) requires reasoning about joint commitment rules, outside options, and partition fault lines. +Table 1: Coordination regimes, rule architectures, and exact IIT 4.0 verdicts -| Coordination Regime (`regime.py`) | Rule Architecture & Input Structure | Exact IIT 4.0 Verdict & Major Complex | Mediator Role (`classify_mediator`) | Organizational Archetype & Required Competency | -| :--- | :--- | :--- | :--- | :--- | -| **Factored Dyadic Conduit** | Pairwise signals or passive pass-through (*P*′ = *D*) | **Dyadic:** Φ(MIP) = 0; partitions cleanly across party cut | `PASSIVE` or `CONDUIT` | Classical communication channel; **Literacy / Numeracy** | -| **Cyclic One-Input Relay** | Unbranched 1-input cycle (*A*′ = *C*, *B*′ = *A*, *C*′ = *B*) | **Dynamical Whole:** Φ(MIP) > 0, but max input arity = 1 (no 2-input rule) | `CONDUIT` (cyclic rotation without joint commit) | Sequential rotation / relay ring; **Extended Literacy** | -| **Asymmetric Capture Triad** | Mediator jointly commits on two parties; one party has an outside option | **Triadic Sub-Complex:** Φ(MIP) > 0; major complex binds {*P*, *R*} or {*D*, *P*} (size 2) | `CAPTURE` (mediator + non-exiting party) | Platform lock-in of captive side; **Strategic Algorithmacy** | -| **Irreducible Mediated Triad** | Mediator commits on joint state (*P*′ = *D* ∧ *R*) and parties read mediator | **Triadic Complex:** Φ(MIP) > 0; major complex binds all three parties {*D*, *P*, *R*} | `BOTTLENECK` (drops on removal) or `ENRICHER` | Active clearinghouse / protocol triad; **Full Algorithmacy** | +| Coordination Regime (`regime.py`) | Rule Architecture & Input Structure | Exact IIT 4.0 Verdict & Major Complex | Mediator Role (regime() in regime.py) | Organizational Archetype & Required Competency | +| :---- | :---- | :---- | :---- | :---- | +| **Factored Dyadic Conduit** | Pairwise signals or passive pass-through (*P*′ \= *D*) | **Dyadic:** Φ(MIP) \= 0; partitions cleanly across party cut | `dyadic (glossed PASSIVE or CONDUIT)` | Classical communication channel; **Literacy / Numeracy** | +| **Broadcast Cascade (Cyclic One-Input Relay)** | Unbranched 1-input cycle (*A*′ \= *C*, *B*′ \= *A*, *C*′ \= *B*) | **Dynamical Whole:** Φ(MIP) \> 0, but max input arity \= 1 (no 2-input rule) | `CONDUIT` (cyclic rotation without joint commit) | Sequential rotation / relay ring; **Extended Literacy** | +| **Asymmetric Capture Triad** | Mediator jointly commits on two parties; one party has an outside option | **Triadic Sub-Complex:** Φ(MIP) \> 0; major complex binds {*P*, *R*} or {*D*, *P*} (size 2\) | `CAPTURE` (mediator \+ non-exiting party) | Platform lock-in of captive side; **Strategic Algorithmacy** | +| **Irreducible Mediated Triad** | Mediator commits on joint state (*P*′ \= *D* ∧ *R*) and parties read mediator | **Triadic Complex:** Φ(MIP) \> 0; major complex binds all three parties {*D*, *P*, *R*} | `BOTTLENECK` (drops on removal) or `ENRICHER` | Active clearinghouse / protocol triad; **Full Algorithmacy** | -## Addendum Section A.2. Complete Six-Step Pipeline Mechanics and Worked Ride-Hail Dispatch Proof of Concept +## Addendum Section A.2. The Six-Step AI-and-PyPhi Pipeline and Proof of Concept -We have built, tested, and packaged a self-contained open-source prototype (`irreducibility-pipeline`, tag `v0.1-stage1`, which reproduces all 17 reference results and passes 19 automated test gates in two minutes via a single command), backed by our broader computational laboratory (`algorithmacy-lab`, containing 127 studies and 542 automated CI checks). +We have built, tested, and packaged a self-contained open-source prototype (the irreducibility-pipeline/ directory of algorithmacy-lab, https\://github.com/rogerSuperBuilderAlpha/algorithmacy-lab, lab tag orgsci-stage1; from a clone of the lab, python irreducibility-pipeline/reproduce.py reproduces all 17 reference results in about 2½ minutes and pytest \-q irreducibility-pipeline/tests passes 19 automated tests in 5 seconds; prototype paths below are relative to irreducibility-pipeline/), backed by our broader computational laboratory (algorithmacy-lab, containing 127 studies and 542 automated CI checks). ### A.2.1. AI-Enabled Research Loop Under Human Direction: The Six-Step Pipeline The central methodological challenge in applying exact causal measures to organizations is translating qualitative evidence (platform manuals, interviews, workflow logs) into formal transition rules without smuggling the researcher's preferred conclusion into the encoding. Asking an LLM to directly label a case "triadic" or "dyadic" fails because LLMs hallucinate ungrounded rules and misguess multi-party partition math. Instead, our **six-step AI-and-PyPhi pipeline** separates **structured qualitative reading** (done by two LLMs under a deterministic code gate) from **exact partition math** (done by PyPhi): -1. **Step 1 — Bound and Name (`protocol/`):** Fix one recurring organizational act, name the *n* parties (typically 3 to 5), and define each party's binary action state (`1` = commits; `0` = withholds). -2. **Step 2 — Encode via Drafter, Adversary, and Verbatim Gate (`encode/`):** An LLM **Drafter** (`PROMPT_drafter.md`) extracts every defensible Boolean encoding supported by the source text over party labels (`and` [∧], `or` [∨], `not` [¬], `xor` [⊕], `0`, `1`). Every rule must attach a **verbatim quote** from the source document, state whether the mediator *commits* on a joint condition, *conveys* one side's state, or *stores* inputs, and record a pre-registered prediction before computation. A second LLM **Adversary** (`PROMPT_adversary.md`) searches for rival encodings across three structural forces: commit versus convey, interchangeable pooled parties (`or` [∨]), and outside options. A deterministic gate (`encode_check.py`) rejects any encoding with a missing rule, a quote not found character-for-character in the source text, a missing mediator alternative, or a missing prediction before PyPhi can run. -3. **Step 3 — Compute (`irreducibility/core.py`):** Compiles each rule set into a 2ⁿ × *n* state-by-node TPM and connectivity matrix and calls PyPhi (`wmayner/pyphi`, commit `b78d0e342`) to compute exact Φ(MIP) and the major complex across all reachable states. -4. **Step 4 — Validate First (`irreducibility/validate.py`):** Before any empirical result can be reported, the solver must pass four mandatory control structures (`controls.py`, shown in Table 2). -5. **Step 5 — Report the Spread (`irreducibility/spread.py`):** Rather than collapsing rival readings into a single point estimate, the pipeline reports verdict agreement across all defensible encodings, the Φ gap (max Φ − min Φ), and the **exact single-rule flips** that reverse the verdict. -6. **Step 6 — Read the Structure (`irreducibility/regime.py`, `contingency.py`):** Compares the three-party core against the two-party bypass reduction (`reduce_mediator`) to classify the mediator (`PASSIVE`, `CONDUIT`, `BOTTLENECK`, `CAPTURE`, `ENRICHER`, `BYPASSED`) and sweeps outside-option exit scenarios. +1. **Step 1 — Bound and Name (protocol/):** Fix one recurring organizational act, name the n parties (typically 3 to 5), and define each party's binary action state (1 \= commits; 0 \= withholds). +2. **Step 2 — Encode via Drafter, Adversary, and Verbatim Gate (encode/):** An LLM Drafter (PROMPT\_drafter.md) extracts every defensible Boolean encoding supported by the source text over party labels (and \[∧\], or \[∨\], not \[¬\], xor \[⊕\], 0, 1). Every rule must attach a verbatim quote from the source document, state whether the mediator commits on a joint condition, conveys one side's state, or stores inputs, and record a prediction fixed before anything is computed. A second LLM Adversary (PROMPT\_adversary.md) searches for rival encodings across three structural forces: commit versus convey, interchangeable pooled parties (or \[∨\]), and outside options. A deterministic gate (encode\_check.py) rejects any encoding with a missing rule, a quote not found character-for-character in the source text, a missing mediator alternative, or a missing prediction before PyPhi can run. +3. **Step 3 — Compute (irreducibility/core.py):** Compiles each rule set into a 2ⁿ × n state-by-node TPM and connectivity matrix and calls PyPhi (wmayner/pyphi, commit b78d0e342) to compute exact Φ(MIP) and the major complex across all reachable states. +4. **Step 4 — Validate First (irreducibility/validate.py):** Before any empirical result can be reported, the solver must pass two mandatory controls and five reference forms (validate.py; Table 2 shows the two controls and two of the five reference forms). +5. **Step 5 — Report the Spread (irreducibility/spread.py):** Rather than collapsing rival readings into a single point estimate, the pipeline reports verdict agreement across all defensible encodings, the Φ gap (max Φ − min Φ), and the exact single-rule flips that reverse the verdict. +6. **Step 6 — Read the Structure (irreducibility/regime.py, contingency.py):** Compares the three-party core against the two-party bypass reduction (contingency\_test() and add\_bypass() in contingency.py, which return intrinsic, contingent, partial, or reducible) and classifies the mediator's position with regime() in regime.py (REGIMES: dyadic, glossed here as PASSIVE or CONDUIT, BYPASSED, CAPTURE, BOTTLENECK, ENRICHER; with lesion\_survives()), while classify\_rules() in core.py returns the verdict. Outside options are tested through the O₁–O₅ design encodings in examples/01\_gig\_dispatch/ and studies/enricher\_regime.py. + +Table 2: Instrument controls and reference forms run before any result (validate.py) -| Mandatory Control (`irreducibility/controls.py`) | Party Rules (*W*′, *S*′, *C*′) | Exact IIT 4.0 Verdict & Core | Exact Φ(MIP) | Structural Purpose in Pipeline | -| :--- | :--- | :--- | :--- | :--- | -| **1. Factoring Control** | *W*′ = *S*, *S*′ = *W*, *C*′ = *C* | **Dyadic** (factors cleanly) | Φ(MIP) = 0.000 | Verifies decoupled third party scores strictly zero | -| **2. Irreducible Control** | *W*′ = *S* ∨ *C*, *S*′ = *W* ∧ *C*, *C*′ = *W* ⊕ *S* | **Triadic** (core {*W*, *S*, *C*}) | Φ(MIP) = 0.830 | Verifies mixed AND/OR/XOR mechanism is irreducible | -| **3. Strict-Mediation Triad** | *W*′ = *S*, *S*′ = *W* ∧ *C*, *C*′ = *S* | **Triadic** (core {*W*, *S*, *C*}) | Φ(MIP) = 2.000 | Canonical conjunctive clearinghouse bottleneck | -| **4. Gig "False Dyad"** | *W*′ = ¬*S*, *S*′ = *W* ∧ *C*, *C*′ = *C* ∧ ¬*S* | **Triadic** (core {*W*, *S*, *C*}) | Φ(MIP) = 2.000 | Asymmetric dispatch triad that looks dyadic on surface | +| Control or Reference Form (irreducibility/validate.py) | Party Rules (*W*′, *S*′, *C*′) | Exact IIT 4.0 Verdict & Core | Exact Φ(MIP) | Structural Purpose in Pipeline | +| :---- | :---- | :---- | :---- | :---- | +| **1\. Factoring Control** | *W*′ \= *S*, *S*′ \= *W*, *C*′ \= *C* | **Dyadic** (factors cleanly) | Φ(MIP) \= 0.000 | Verifies decoupled third party scores strictly zero | +| **2\. Irreducible Control** | *W*′ \= *S* ∨ *C*, *S*′ \= *W* ∧ *C*, *C*′ \= *W* ⊕ *S* | **Triadic** (core {*W*, *S*, *C*}) | Φ(MIP) \= 0.830 | Verifies mixed AND/OR/XOR mechanism is irreducible | +| **3\. Strict-Mediation Triad (reference form)** | *W*′ \= *S*, *S*′ \= *W* ∧ *C*, *C*′ \= *S* | **Triadic** (core {*W*, *S*, *C*}) | Φ(MIP) \= 2.000 | Canonical conjunctive clearinghouse bottleneck | +| **4\. Gig "False Dyad" (reference form)** | *W*′ \= ¬*S*, *S*′ \= *W* ∧ *C*, *C*′ \= *C* ∧ ¬*S* | **Triadic** (core {*W*, *S*, *C*}) | Φ(MIP) \= 2.000 | Asymmetric dispatch triad that looks dyadic on surface | ### A.2.2. Complete Walk-Through and Blind AI Runs: Ride-Hail Dispatch -To see what the pipeline reveals that standard coding misses, consider Worked Example 01 (`examples/01_gig_dispatch/`, summarized in Table 3). The source dossier contains two conflicting accounts of ride-hail dispatch: the platform manual states that dispatch *"assigns a trip only when an eligible driver is available and a rider has confirmed the request,"* whereas an interviewed driver states, *"It's a suggestion, it follows what I do."* +To see what the pipeline reveals that standard coding misses, consider Worked Example 01 (examples/01\_gig\_dispatch/, summarized in Table 3). The source dossier contains two conflicting accounts of ride-hail dispatch: the platform manual states that dispatch "assigns a trip only when an eligible driver is available and a rider has confirmed the request," whereas an interviewed driver states, "It's a suggestion, it follows what I do." -* **Pinpointing the Exact Rule Carrying a Qualitative Dispute (*R*₁ vs. *R*₂):** Under the platform manual (*R*₁: *D*′ = *P*, *P*′ = *D* ∧ *R*, *R*′ = *P*), PyPhi returns Φ(MIP) = 2.000 with major complex {*D*, *P*, *R*}; removing the platform collapses coordination to Φ = 0, classifying the platform as a triadic `BOTTLENECK`. Under the driver's account (*R*₂), only the platform's rule changes (*P*′ = *D*), and the system factors completely (Φ(MIP) = 0.000, `CONDUIT`). Instead of averaging the two accounts, the pipeline isolates *P*′ as the single rule carrying the entire disagreement and specifies the observable test (whether dispatch ever commits when *D* = 1 and *R* = 0) that decides between them. -* **Pooling Interchangeable Workers (*D*₁) and Off-App Bypass (*D*₂):** When the platform pools two interchangeable drivers via `OR` (*D*₁: *P*′ = (*D*₁ ∨ *D*₂) ∧ *R*), neither individual driver remains necessary to the match: PyPhi factors both drivers out of the major complex, leaving only {*P*, *R*} bound (Φ(MIP) = 1.000). Conversely, if driver and rider establish a direct off-app tie (*D*₂: *D*′ = *P* ∨ *R*, *R*′ = *P* ∨ *D*), the major complex shifts to {*D*, *R*} (Φ(MIP) = 1.198) and the platform is classified as `BYPASSED`. -* **The Outside-Option Law (*O*₁–*O*₅ and 60/60 Random Trials):** Sweeping outside options (*E*(*D*), *E*(*R*)) reveals a sharp structural law that held across **60 of 60** randomized multi-party configurations: **a platform's irreducible core consists of itself plus whichever parties lack an outside option.** Giving the driver an outside option (*O*₂) shrinks the core to {*P*, *R*} (`CAPTURE` of the rider); giving the rider an outside option (*O*₃) shrinks the core to {*D*, *P*} (`CAPTURE` of the driver); giving both sides outside options (*O*₄) dissolves lock-in to Φ(MIP) = 0. +* **Pinpointing the Exact Rule Carrying a Qualitative Dispute (R₁ vs. R₂):** Under the platform manual (R₁: D′ \= P, P′ \= D ∧ R, R′ \= P), PyPhi returns Φ(MIP) \= 2.000 with major complex {D, P, R}; removing the platform collapses coordination to Φ \= 0, classifying the platform as a triadic BOTTLENECK. Under the driver's account (R₂), only the platform's rule changes (P′ \= D), and the system factors completely (Φ(MIP) \= 0.000; the code prints dyadic, glossed here as CONDUIT). Instead of averaging the two accounts, the pipeline isolates P′ as the single rule carrying the entire disagreement and specifies the observable test (whether dispatch ever commits when D \= 1 and R \= 0\) that decides between them. +* **Pooling Interchangeable Workers (D₁) and Off-App Bypass (D₂):** When the platform pools two interchangeable drivers via OR (D₁: P′ \= (D₁ ∨ D₂) ∧ R), neither individual driver remains necessary to the match: PyPhi factors both drivers out of the major complex, leaving {P, R} as the major complex while the system as a whole scores Φ(MIP) \= 0.000 (dyadic). Conversely, if driver and rider establish a direct off-app tie (D₂: D′ \= P ∨ R, R′ \= P ∨ D), the major complex shifts to {D, R} (Φ(MIP) \= 0.830) and the platform is classified as BYPASSED. +* **The Outside-Option Law (O₁–O₅ and 60/60 Random Trials):** Sweeping outside options (E(D), E(R)) reveals a sharp structural law that held across 60 of 60 randomized multi-party configurations: **a platform's irreducible core consists of itself plus whichever parties lack an outside option.** \[DRAFTED by Claude\] Giving only the rider an outside option (O₃) shrinks the core to the captive driver and the platform; giving only the driver one (O₄) shrinks it to the platform and the captive rider; giving both (O₅) removes the platform from the core and leaves the driver and rider bound to each other — the platform is bypassed, not dissolved. + +Table 3: Gig-dispatch encodings, outside-option designs, and exact Φ(MIP) verdicts | Encoding ID & Reading (`examples/01_gig_dispatch/`) | Formal Transition Rules (*D*′, *P*′, *R*′) | Exact Φ(MIP) | Major Complex (Core) | Structural Verdict & Mediator Regime | -| :--- | :--- | :--- | :--- | :--- | -| **R₁: Platform Manual** (Joint matching) | *D*′ = *P*, *P*′ = *D* ∧ *R*, *R*′ = *P* | Φ(MIP) = 2.000 | {*D*, *P*, *R*} (size 3) | **Triadic `BOTTLENECK`** (bypass collapses to Φ = 0) | -| **R₂: Driver Experience** (Conduit / dictate) | *D*′ = *P*, *P*′ = *D*, *R*′ = *P* | Φ(MIP) = 0.000 | {*D*, *P*} (dyadic) | **Dyadic `CONDUIT`** (single rule *P*′ flips verdict) | -| **D₁: Driver Pool** (2 interchangeable drivers) | *D*₁′ = *P*, *D*₂′ = *P*, *P*′ = (*D*₁ ∨ *D*₂) ∧ *R*, *R*′ = *P* | Φ(MIP) = 1.000 | {*P*, *R*} (size 2) | **Factored on Drivers** (individual *D*ᵢ excluded from core) | -| **D₂: Direct-Tie Bypass** (Off-app rider–driver tie) | *D*′ = *P* ∨ *R*, *P*′ = *D* ∧ *R*, *R*′ = *P* ∨ *D* | Φ(MIP) = 1.198 | {*D*, *R*} (size 2) | **`BYPASSED`** (direct tie binds {*D*, *R*} without *P*) | -| **O₁: No Outside Options** (Both captive) | *D*′ = *P*, *P*′ = *D* ∧ *R*, *R*′ = *P* | Φ(MIP) = 2.000 | {*D*, *P*, *R*} (size 3) | **Full Triadic Core** (neither party can exit) | -| **O₂: Driver Outside Option** (*E*(*D*) = 1) | *D*′ = *P* ∨ *E*(*D*), *P*′ = *D* ∧ *R*, *R*′ = *P* | Φ(MIP) = 2.000 | {*P*, *R*} (size 2) | **`CAPTURE` of Rider** (exiting driver leaves core) | -| **O₃: Rider Outside Option** (*E*(*R*) = 1) | *D*′ = *P*, *P*′ = *D* ∧ *R*, *R*′ = *P* ∨ *E*(*R*) | Φ(MIP) = 2.000 | {*D*, *P*} (size 2) | **`CAPTURE` of Driver** (exiting rider leaves core) | -| **O₄: Both Have Outside Options** | *D*′ = *P* ∨ *E*(*D*), *P*′ = *D* ∧ *R*, *R*′ = *P* ∨ *E*(*R*) | Φ(MIP) = 0.000 | ∅ (fully factored) | **Complete Dissolution** (platform loses all lock-in) | -| **O₅: Platform Substitute** (Multi-homing) | *D*′ = *P*₁ ∨ *P*₂, *P*₁′ = *D* ∧ *R*, *R*′ = *P*₁ ∨ *P*₂ | Φ(MIP) = 1.000 | {*D*, *R*} (size 2) | **Mediator Replaced** (competing platforms factor out) | +| :---- | :---- | :---- | :---- | :---- | +| **R₁: Platform Manual** (Joint matching) | *D*′ \= *P*, *P*′ \= *D* ∧ *R*, *R*′ \= *P* | Φ(MIP) \= 2.000 | {*D*, *P*, *R*} (size 3\) | **Triadic `BOTTLENECK`** (bypass collapses to Φ \= 0\) | +| **R₂: Driver Experience** (Conduit / dictate) | *D*′ \= *P*, *P*′ \= *D*, *R*′ \= *P* | Φ(MIP) \= 0.000 | {*D*, *P*} (dyadic) | **Dyadic `CONDUIT`** (the code prints dyadic; CONDUIT is our gloss; single rule P′ flips verdict) | +| **D₁: Driver Pool** (rival encoding C; 2 interchangeable drivers) | *D*₁′ \= *P*, *D*₂′ \= *P*, *P*′ \= (*D*₁ ∨ *D*₂) ∧ *R*, *R*′ \= *P* | Φ(MIP) \= 0.000 (dyadic) | {*P*, *R*} (major complex) | **Factored on Drivers** (individual Dᵢ outside the major complex; system Φ \= 0, dyadic) | +| **D₂: Direct-Tie Bypass** (design O₅; off-app rider–driver tie) | *D*′ \= *P* ∨ *R*, *P*′ \= *D* ∧ *R*, *R*′ \= *P* ∨ *D* | Φ(MIP) \= 0.830 | {*D*, *R*} (size 2\) | **`BYPASSED`** (direct tie binds {*D*, *R*} without *P*) | +| **O₁: No Outside Options** (Both captive) | *D*′ \= *P*, *P*′ \= *D* ∧ *R*, *R*′ \= *P* | Φ(MIP) \= 2.000 | {*D*, *P*, *R*} (size 3\) | **BOTTLENECK** (neither party can exit) | +| **O₂: Complementary Direct Tie** (repeat trips need app and contact) | *D′ \= P ∧ R, P′ \= D ∧ R, R′ \= P ∧ D* | Φ(MIP) \= 6.000 | {D, *P*, *R*} (size 3\) | **`ENRICHER (all three parties stay in the core)`** | +| **O₃: Captive Driver, Mobile Rider** | *D′ \= P, P′ \= D ∧ R, R′ \= P ∨ D* | Φ(MIP) \= 0.415 | {*D*, *P*} (size 2\) | **`CAPTURE` of Driver** (exiting rider leaves core) | +| **O₄: Mobile Driver, Captive Rider** | *D′ \= P ∨ R, P′ \= D ∧ R, R′ \= P* | Φ(MIP) \= 0.415 | {P, R} (size 2\) | **CAPTURE of Rider (exiting driver leaves core)** | +| **O₅: Both Mobile** (substitute direct tie) | *D′ \= P ∨ R, P′ \= D ∧ R, R′ \= P ∨ D* | Φ(MIP) \= 0.830 | {*D*, *R*} (size 2\) | **BYPASSED (platform leaves the core; parties stay bound)** | ### Logged Blind AI Runs, Adversarial Coding, and Proxy Benchmarks Three completed empirical and computational benchmarks in our Stage 1 package demonstrate why both parts of the AI-and-PyPhi loop are necessary (full logs in Technical Appendix B): -1. **Blind LLM Runs Refuted by Exact Computation (`encode/runs/`):** In logged blind runs (Claude Sonnet 5.5, October 2026, given only raw source text), the Drafter reproduced both human rival encodings of gig dispatch with verbatim quotes. The Adversary then discovered the driver-pool encoding (*D*₁) and the direct-tie bypass encoding (*D*₂)—and **PyPhi refuted both of the LLM's own intuitive predictions** (the LLM predicted the driver pool would stay a three-party triad, whereas PyPhi showed the drivers factor out of the core; the LLM predicted the direct tie would factor, whereas PyPhi showed it forms a bypass triad {*D*, *R*}). On a second case (insurance-claim routing), the source text left four design variants underspecified; the Drafter refused to invent unquoted rules and `encode_check.py` properly rejected the file (9 errors). -2. **Adversarial Coding Across 101 Contested Accounts (`studies/adversarial_coding/`):** Across 101 contested organizational descriptions, an evidence-constrained adversary flipped the single-encoding point verdict on **101 of 101** accounts, whereas standard two-coder agreement bracketed the adversarial reading in only **22 of 101**. -3. **Failure of Standard Time-Series Proxies (`studies/proxies/`):** Across all 256 three-party structures, two popular observational time-series proxies—ΦID synergistic information Φᵣ (Mediano et al., 2025; Williams & Beer, 2010) and whole-minus-sum Φ(WMS)—separated dyadic from triadic structures at rank-AUC **0.563** and **0.629** (barely above 0.50 chance), confirming that passive time-series correlations cannot substitute for rule-level Φ(MIP). +1. **Blind LLM Runs Refuted by Exact Computation (examples/01\_gig\_dispatch/ai\_draft.json, ai\_draft\_plus\_adversary.json, ai\_adversary\_raw.json; examples/02\_insurance\_claim/ai\_draft.json):** In logged blind runs (Claude Sonnet 5.5, October 2026, given only raw source text), the Drafter reproduced both human rival encodings of gig dispatch with verbatim quotes. The Adversary then discovered the driver-pool encoding (D₁) and the direct-tie bypass encoding (D₂)—and **PyPhi refuted both of the LLM's own intuitive predictions** (the LLM predicted the driver pool would stay a three-party triad, whereas PyPhi showed the drivers factor out of the core; the LLM predicted the direct tie would factor, whereas PyPhi showed it forms a bypass triad {D, R}). On a second case (insurance-claim routing), the source text left four design variants underspecified; the Drafter left the rules of four of the five designs unwritten and encode\_check.py rejected the file (9 problems in 5 encodings: 8 missing party rules, 1 missing mediator alternative). +2. **Adversarial Coding Across 101 Contested Accounts (studies/adversarial\_coding.py):** Across 101 contested organizational descriptions, an evidence-constrained adversary flipped the single-encoding point verdict on 101 of 101 accounts, whereas standard two-coder agreement bracketed the adversarial reading in only 22 of 101\. +3. **Failure of Standard Time-Series Proxies (studies/proxy\_run.py, studies/proxy\_bridge.py, studies/phiid\_measure.py):** Across the 256 strict-mediation forms of the census, two popular observational time-series proxies—ΦID synergistic information Φᵣ (Mediano et al., 2025; Williams & Beer, 2010\) and whole-minus-sum Φ(WMS)—separated dyadic from triadic structures at rank-AUC 0.563 and 0.629 (barely above 0.50 chance), confirming that passive time-series correlations cannot substitute for rule-level Φ(MIP). ### A.2.3. Broader Laboratory Extensions (Cataloged in Appendix D) -Beyond the four worked cases in `irreducibility-pipeline` (gig dispatch, insurance-claim routing, software code-review gates, and dealer vs. clearinghouse), our laboratory (`algorithmacy-lab`) has already built: (a) a custom **multi-valued IIT 4.0 solver** (`third_party/pyphi_iit4_mv`) for graded ternary and mixed-radix state spaces; (b) **construct-validity bridges** showing that Thompson's (1967) interdependence hierarchy collapses at its top step (pooled scores Φ = 0, but sequential and reciprocal both score Φ = 2.0) and that Wageman's (1995) hybrid team designs factor cleanly; and (c) **human-in-the-loop oversight diagnostics** proving that "rubber-stamping" an AI agent's recommendations leaves the human reviewer outside the major complex while the automated loop stays integrated at Φ = 2.0, formalizing the post-hoc verification trap identified by Rudin (2019). +Beyond the four worked cases in irreducibility-pipeline/ (\[DRAFTED by Claude\] gig dispatch, a triadic BOTTLENECK at Φ \= 2.000 under the platform manual; insurance-claim routing, five designs on which two of five naive predictions held; software code-review gates, where the CI gate is BYPASSED at Φ \= 1.000 when maintainers wait for CI and joins the core as an ENRICHER at Φ \= 2.000 when they approve on the diff alone; and dealer vs. clearinghouse, both triadic at Φ \= 2.000, the dealer's place contingent on a ban on direct sales and the clearinghouse's intrinsic), our laboratory (algorithmacy-lab) has already built: (a) a custom **multi-valued IIT 4.0 solver** (third\_party/pyphi\_iit4\_mv) for graded ternary and mixed-radix state spaces; (b) **construct-validity bridges** showing that Thompson's (1967) interdependence hierarchy collapses at its top step (pooled scores Φ \= 0, but sequential and reciprocal both score Φ \= 2.0) on canonical encodings, while alternate encodings flip the verdict (pooled all-required → triadic; sequential acyclic hand-off → dyadic; verdict PARTIAL\_ALIGNMENT, alignment 0.429), and that a Wageman-style (1995) interdependence index predicts the dyadic/triadic verdict (AUC \= 1.000 on the designed panel at W ≥ 0.472) but not Φ magnitude (XOR and AND share W at Φ \= 0.5 vs. 2.0); and (c) **human-in-the-loop oversight diagnostics** showing that "rubber-stamping" an AI agent's recommendations leaves the human reviewer outside the major complex while the automated loop stays integrated at Φ \= 2.0, \[DRAFTED by Claude\] formalizing the rubber-stamp pattern that the automation-bias literature documents (Parasuraman & Riley, 1997; Skitka, Mosier, & Burdick, 1999\) and that Lebovitz, Lifshitz-Assaf, and Levina (2022) observed among radiologists facing opaque AI. -## Addendum Section A.3. Extended Stage 2 Technical Specifications and Lever Architecture +## Addendum Section A.3. Detailed Stage 2 Technical Protocols and Strategic Lever Matrix (January–May 2027\) If invited to Stage 2, we will execute three focused workstreams over the four-month revision window (detailed in Technical Appendix C): -1. **Harden and Release the Open-Source `irreducibility` Package (January–February 2027):** We will package the pipeline as a single installable command-line tool and Python library (`irreducibility init`, `encode`, `check`, `run`) supporting both Anthropic and open-weight LLM endpoints, enforcing `encode_check.py` automatically, and integrating our multi-valued IIT 4.0 engine (`pyphi_iit4_mv`) so researchers can test ternary and mixed-radix organizational rules out of the box. -2. **Complete the Actor-Indexed Strategic Model of Triadic Levers (February–March 2027):** Exhaustive enumeration of all 256 three-party Boolean structures (`studies/strategic_model/`) partitions the space into **56** dyadic structures, **132** cycle-supported triads, and **68** mediated triads. We will formalize the actor-indexed strategic lever matrix (Table 4) that computes, for each party (Mediator *M*, Party *A*, Party *B*) and each single-rule edit, how that move creates, captures, bypasses, or dissolves an irreducible triad. -3. **Comparative Empirical Application Across 10–15 Published Platform Cases & Field Protocol (March–May 2027):** We will apply the pipeline to 10–15 landmark published platform and algorithmic-management studies (including Rahman, 2021; Cameron, 2024; Curchod et al., 2020; Kellogg et al., 2020), encoding every case directly from its published text to report the full encoding spread and the deciding empirical rule. In parallel, once IRB approval is completed, we will field our pre-built ride-hail dispatch interview protocol (`protocol/`) and GitHub code-review gate study (`examples/03_code_review_gate/`). +1. **Harden and Release the Open-Source irreducibility Package (January–February 2027):** We will package the pipeline as a single installable command-line tool and Python library (irreducibility init, encode, check, run) supporting both Anthropic and open-weight LLM endpoints, enforcing encode\_check.py automatically, and integrating our multi-valued IIT 4.0 engine (pyphi\_iit4\_mv) so researchers can test ternary and mixed-radix organizational rules out of the box. +2. **Complete the Actor-Indexed Strategic Model of Triadic Levers (February–March 2027):** \[DRAFTED by Claude\] Exhaustive enumeration of the 256 strict-mediation three-party forms (4 worker rules × 16 mediator rules × 4 counterpart rules; studies/census.py) finds 24 irreducible and 232 factorable, with a mediator that reads both parties necessary but not sufficient (24/160 vs 0/96). We will formalize the actor-indexed strategic lever matrix (Table 4\) that computes, for each party (Mediator M, Party A, Party B) and each single-rule edit, how that move creates, captures, bypasses, or dissolves an irreducible triad. +3. **Comparative Empirical Application Across 10–15 Published Platform Cases & Field Protocol (March–May 2027):** We will apply the pipeline to 10–15 landmark published platform and algorithmic-management studies (including Rahman, 2021; Cameron, 2024; Curchod et al., 2020; Kellogg et al., 2020), encoding every case directly from its published text to report the full encoding spread and the deciding empirical rule. In parallel, once IRB approval is completed, we will field our pre-built ride-hail dispatch interview protocol (protocol/) and GitHub code-review gate study (irreducibility-pipeline/examples/03\_code\_review\_gate/). + +Table 4: Actor-indexed strategic lever matrix -| Focal Actor (Row) | Strategic Lever 1: Commit vs. Convey (Mediator Rule *M*′) | Strategic Lever 2: Pool Counterparts via `OR` (∨) | Strategic Lever 3: Add Outside Option (*E*ᵢ = 1) | Strategic Lever 4: Build Direct Counterpart Tie (*A* ↔ *B*) | -| :--- | :--- | :--- | :--- | :--- | -| **Mediator / Platform (*M*)** | **Switch Convey → Joint Commit** (*M*′ = *A* ∧ *B*): Creates `BOTTLENECK` triad (Φ: 0.0 → 2.0, core {*A*, *M*, *B*}) | **Pool Replaceable Side *A*** (*M*′ = (*A*₁ ∨ *A*₂) ∧ *B*): Expels *A*ᵢ from core; locks in {*M*, *B*} (Φ = 1.0) | **Block Counterpart Exit** (*E*(*A*) = *E*(*B*) = 0): Preserves full 3-party lock-in across all 60/60 random trials | **Prohibit Off-Platform Ties** (anti-disintermediation): Prevents bypass of *M* | -| **Party *A* (e.g., Worker / Driver)** | **Treat Prompt as Advisory** (*A*′ = self or convey): Dissolves `BOTTLENECK` to Φ = 0.0 if *M* follows *A* | **Form Worker Coalition / Union**: Restores collective input parity against one-sided pooling | **Secure Outside Option** (*A*′ = *M* ∨ *E*(*A*)): Frees *A* from major complex; shifts core to {*M*, *B*} (`CAPTURE` on *B* only) | **Establish Direct Tie to *B*** (*A*′ = *M* ∨ *B*): Bypasses *M*, shifting core to {*A*, *B*} (Φ = 1.198, `BYPASSED`) | -| **Party *B* (e.g., Client / Rider)** | **Require Joint Confirmation** (*M*′ = *A* ∧ *B*): Binds *B* into mediated clearinghouse if no exit exists | **Multi-Home Across Mediators** (*O*₅, *B*′ = *M*₁ ∨ *M*₂): Factors individual mediator out of core | **Exercise Outside Option** (*B*′ = *M* ∨ *E*(*B*)): Frees *B* from major complex (or dissolves triad to Φ = 0 if *A* also exits) | **Partner Directly with *A*** (*B*′ = *M* ∨ *A*): Eliminates mediator bottleneck via bilateral contract | +| Focal Actor (Row) | Strategic Lever 1: Commit vs. Convey (Mediator Rule *M*′) | Strategic Lever 2: Pool Counterparts via `OR` (∨) | Strategic Lever 3: Add Outside Option (*E*ᵢ \= 1\) | Strategic Lever 4: Build Direct Counterpart Tie (*A* ↔ *B*) | +| :---- | :---- | :---- | :---- | :---- | +| **Mediator / Platform (*M*)** | **Switch Convey → Joint Commit** (*M*′ \= *A* ∧ *B*): Creates `BOTTLENECK` triad (Φ: 0.0 → 2.0, core {*A*, *M*, *B*}) | **Pool Replaceable Side *A*** (*M*′ \= (*A*₁ ∨ *A*₂) ∧ *B*): Expels *A*ᵢ from core; leaves {M, B} as the major complex while the system scores Φ \= 0.000 (dyadic) | **Block Counterpart Exit** (*E*(*A*) \= *E*(*B*) \= 0): Preserves full 3-party lock-in across all 60/60 random trials | **Prohibit Off-Platform Ties** (anti-disintermediation): Prevents bypass of *M* | +| **Party *A* (e.g., Worker / Driver)** | **Treat Prompt as Advisory** (*A*′ \= self or convey): Dissolves `BOTTLENECK` to Φ \= 0.0 if *M* follows *A* | **Form Worker Coalition / Union**: Restores collective input parity against one-sided pooling (worker\_union\_scale, V2 \#31, UNION\_MIRRORS\_COAL: a union scales like a counterpart coalition) | **Secure Outside Option** (*A*′ \= *M* ∨ *E*(*A*)): Frees *A* from major complex; shifts core to {*M*, *B*} (`CAPTURE` on *B* only) | **Establish Direct Tie to *B*** (A′ \= M ∨ B): Bypasses *M*, shifting core to {*A*, *B*} (Φ \= 0.830, `BYPASSED`) | +| **Party *B* (e.g., Client / Rider)** | **Require Joint Confirmation** (*M*′ \= *A* ∧ *B*): Binds *B* into mediated clearinghouse if no exit exists | **Multi-Home Across Mediators** (B′ \= *M*₁ ∨ *M*₂) (rival\_platforms, V2 \#32): \[DRAFTED by Claude\] RIVAL\_ENCODING, an equal-Φ rivalry in which each reachable state selects one mediator triad with B; competing mediators do not factor out | **Exercise Outside Option** (*B*′ \= *M* ∨ *E*(*B*)): Frees *B* from major complex (if A also exits, M is BYPASSED and {A, B} stay bound at Φ \= 0.830) | **Partner Directly with *A*** (*B*′ \= *M* ∨ *A*): Eliminates mediator bottleneck via bilateral contract | -## Addendum Section A.4. Extended Technical Risk Audits and Boundary Protocols +## Addendum Section A.4. Quantitative Boundary Audits, Imputation Controls, and Scaling Benchmarks -Because our laboratory commits pre-registered hypotheses before running experiments and keeps refuted predictions in CI, we can state the exact boundary conditions and risks of our approach: +We state the exact boundary conditions and risks of our approach: -1. **Encoding Sensitivity on Contested Qualitative Evidence:** Because an evidence-constrained adversary can flip a single-encoding verdict on 101 of 101 contested accounts, any pipeline that outputs a single LLM encoding would create false precision. We mitigate this by forbidding single-encoding claims: `spread.py` always reports the full verdict spread across all verbatim-grounded encodings and identifies the exact empirical rule that settles the disagreement. -2. **Structural Irreducibility (Φ > 0) Does Not Mean Superior Task Performance:** Our own pre-registered multi-agent reinforcement learning (MARL) falsifications refuted the hypothesis that Φ(MIP) > 0 predicts task performance or faster learning (yielded near-chance rank-AUC of **0.485–0.555** across tabular and neural policies). High Φ(MIP) measures **causal non-factorability and lock-in**, which can reflect an inefficient `BOTTLENECK` or asymmetric `CAPTURE` rather than normative efficiency. Our empirical hypotheses therefore test structural lock-in, bypass contingency, and oversight exclusion—never equating Φ with welfare or performance. -3. **Unobserved Parties and Off-Channel Interactions:** Field records can miss off-platform ties. While generic network priors can restore cheap mutual-information screens (AUC 0.944), our stress tests under **exact Φ(MIP)** show that when a party is hidden, ring-prior imputation drops to AUC **0.806** (and omission to **0.750**). Imputation cannot substitute for observing all interacting parties; accordingly, `protocol/` enforces explicit node-completeness and off-channel checks before computing exact Φ. -4. **Combinatorial Scale and Solver Preset Pinning:** Exact IIT 4.0 MIP evaluation scales to roughly *n* = 10 binary nodes; we therefore bound analysis to local governance nuclei of 3 to 5 interacting parties. We also pin our solver to IIT 4.0's 2023 formulation (`b78d0e342`), as upstream PyPhi 2.0's `iit4_2026` preset returns φₛ = 0 on deterministic systems at zero noise (ε = 0). -5. **Ethics and Dual-Use Symmetry:** All verdicts evaluate institutional rule architectures rather than individuals, and fieldwork proceeds under IRB oversight. The strategic lever matrix (Table 4) is symmetric: the same calculation that reveals how a platform achieves `CAPTURE` reveals to workers and regulators which outside option or coalition dissolves it. +1. **Encoding Sensitivity on Contested Qualitative Evidence:** Because an evidence-constrained adversary can flip a single-encoding verdict on 101 of 101 contested accounts, any pipeline that outputs a single LLM encoding would create false precision. We mitigate this by forbidding single-encoding claims: spread.py always reports the full verdict spread across all verbatim-grounded encodings and identifies the exact empirical rule that settles the disagreement. +2. **Structural Irreducibility (Φ \> 0\) Does Not Mean Superior Task Performance:** Our own falsifications on tabular and small-network MARL proxies, with hypotheses fixed before computing, refuted the hypothesis that Φ(MIP) \> 0 predicts task performance or faster learning (yielded near-chance rank-AUC of 0.485–0.555 across tabular and neural policies). High Φ(MIP) measures **causal non-factorability and lock-in**, which can reflect an inefficient BOTTLENECK or asymmetric CAPTURE rather than normative efficiency. Our empirical hypotheses therefore test structural lock-in, bypass contingency, and oversight exclusion—never equating Φ with welfare or performance. +3. **Unobserved Parties and Off-Channel Interactions:** Field records can miss off-platform ties. While generic network priors can restore cheap mutual-information screens (AUC 0.944), our stress tests under exact Φ(MIP) show that when a party is hidden, ring-prior imputation drops to AUC 0.806 (and omission to 0.750). Imputation cannot substitute for observing all interacting parties; accordingly, protocol/ enforces explicit node-completeness and off-channel checks before computing exact Φ. +4. **Combinatorial Scale and Solver Preset Pinning:** Exact IIT 4.0 MIP evaluation scales to roughly n \= 10 binary nodes; we therefore bound analysis to local governance nuclei of 3 to 5 interacting parties. We also pin our solver to IIT 4.0's 2023 formulation (b78d0e342), as upstream PyPhi 2.0's iit4\_2026 preset returns φₛ \= 0 on deterministic systems at zero noise (ε \= 0). +5. **Ethics and Dual-Use Symmetry:** All verdicts evaluate institutional rule architectures rather than individuals, and fieldwork proceeds under IRB oversight. The strategic lever matrix (Table 4\) is symmetric: the same calculation that reveals how a platform achieves CAPTURE reveals to workers and regulators which outside option or coalition dissolves it. -## Addendum Section A.5. Extended Theoretical Implications for Interdependence and Governance +## Addendum Section A.5. Extended Theoretical Implications for Interdependence and Oversight If successful, this work changes organizational research in three ways: -* **From Metaphor to Falsifiable Structural Measurement:** Claims that a platform, clearinghouse, or AI agent creates an "irreducible triad" become computed, replicable, and contestable. Studies publish explicit rule tables tied to verbatim evidence, and any reader can rerun PyPhi under a rival reading to see whether the verdict holds or flips. -* **Auditing Human-in-the-Loop Governance and Classic Typologies:** Classic interdependence typologies can be tested against an exact partition standard—revealing, for example, that Thompson's (1967) sequential and reciprocal interdependence share identical triadic integration (Φ = 2.0)—and organizational AI deployments can be audited for "Potemkin" oversight where human reviewers are structurally excluded from the Φ > 0 causal complex (Rudin, 2019). +* **From Metaphor to Falsifiable Structural Measurement:** Claims that a platform, clearinghouse, or AI agent creates an "irreducible triad" become computed, replicable, and contestable. Studies publish explicit rule tables tied to verbatim evidence, and any reader can rerun PyPhi under a rival reading to see whether the verdict holds or flips. +* **Auditing Human-in-the-Loop Governance and Classic Typologies:** Classic interdependence typologies can be tested against an exact partition standard—revealing, for example, that Thompson's (1967) sequential and reciprocal interdependence share identical triadic integration (Φ \= 2.0) on canonical encodings, although alternate encodings flip the verdict (PARTIAL\_ALIGNMENT, alignment 0.429)—and organizational AI deployments can be audited for "Potemkin" oversight where human reviewers are structurally excluded from the Φ \> 0 causal complex (Parasuraman & Riley, 1997; Lebovitz, Lifshitz-Assaf, & Levina, 2022). * **A Formal Calculus of Coordinative Strategy:** Answering Daft and Lewin (1990), combining adversarial AI reading with exact partition math equips organizational scholars with a rigorous calculus of how commitment rules, pooling, and outside options govern power in algorithmic organizations. # References -* Albantakis, L., Barbosa, L., Findlay, G., Grasso, M., Haun, A. M., Marshall, W., Mayner, W. G. P., Zaeemzadeh, A., Boly, M., Juel, B. E., Sasai, S., Fujii, K., David, I., Hendren, J., True, J. P., & Tononi, G. (2023). Integrated information theory (IIT) 4.0: Formulating the properties of phenomenal existence in physical systems. *PLoS Computational Biology*, 19(10), e1011465. -* Anthony, C., Bechky, B. A., & Fayard, A.-L. (2023). "Collaborating" with AI: Taking a system view to explore the future of work. *Organization Science*, 34(5), 1672–1694. -* Burch, R. W. (1991). *A Peircean Reduction Thesis: The Foundations of Topological Logic*. Texas Tech University Press. -* Burt, R. S. (1992). *Structural Holes: The Social Structure of Competition*. Harvard University Press. -* Cameron, L. D. (2024). The making of crystal-clear calls: Algorithmic management and the standardization of service work. *Administrative Science Quarterly*, 69(1), 1–42. -* Caplow, T. (1956). A theory of coalitions in the triad. *American Sociological Review*, 21(4), 489–493. -* Coleman, J. S. (1988). Social capital in the creation of human capital. *American Journal of Sociology*, 94(Suppl.), S95–S120. -* Curchod, C., Patriotta, G., Cohen, L., & Neysen, N. (2020). Working for an algorithm: Power asymmetries and agency in online work settings. *Administrative Science Quarterly*, 65(3), 644–676. -* Daft, R. L., & Lewin, A. Y. (1990). Can organization studies begin to break out of the normal science straitjacket? An editorial essay. *Organization Science*, 1(1), 1–9. -* Gartenberg, C., Hasan, S., Murray, A., & Pierce, L. (2026). More versus better: Artificial intelligence, incentives, and the emerging crisis in peer review. *Organization Science*, 37(3), 795–812. -* Girotra, K., Terwiesch, C., & Ulrich, K. T. (2010). Idea generation and the quality of the best idea. *Management Science*, 56(4), 591–605. -* Granovetter, M. S. (1973). The strength of weak ties. *American Journal of Sociology*, 78(6), 1360–1380. -* Hereth Correia, J., & Pöschel, R. (2004). The power of Peircean algebraic logic. In *Conceptual Structures at Work: 12th International Conference on Conceptual Structures, ICCS 2004* (LNCS Vol. 3127, pp. 337–350). Springer. -* Hereth Correia, J., & Pöschel, R. (2006). The teridentity and Peircean algebraic logic. In *Conceptual Structures: Inspiration and Application, ICCS 2006* (LNAI Vol. 4068, pp. 229–246). Springer. -* Kellogg, K. C., Valentine, M. A., & Christin, A. (2020). Algorithms at work: The new contested terrain of control. *Academy of Management Annals*, 14(1), 366–410. -* Koshkin, S. (2024). Logical reduction of relations: From relational databases to Peirce's reduction thesis. *Logic Journal of the IGPL*, 32(5), 779–813. -* Koshkin, S. (2025). Logical reduction of finite relations and granular computing. *International Journal of Approximate Reasoning*, 186, 109523. -* March, J. G. (1991). Exploration and exploitation in organizational learning. *Organization Science*, 2(1), 71–87. -* Mayner, W. G. P., Marshall, W., Albantakis, L., Findlay, G., Marchman, R., & Tononi, G. (2018). PyPhi: A toolbox for integrated information theory. *PLoS Computational Biology*, 14(7), e1006343. -* Mediano, P. A. M., Rosas, F. E., Luppi, A. I., Carhart-Harris, R. L., Bor, D., Seth, A. K., & Barrett, A. B. (2025). Toward an extended taxonomy of information dynamics via Integrated Information Decomposition. *Proceedings of the National Academy of Sciences*, 122(39), e2423297122. -* Obstfeld, D. (2005). Social networks, the *tertius iungens* orientation, and involvement in innovation. *Administrative Science Quarterly*, 50(1), 100–130. -* Orlikowski, W. J., & Scott, S. V. (2008). Sociomateriality: Challenging the separation of technology, work and organization. *Academy of Management Annals*, 2(1), 433–474. -* Ostrom, E. (1990). *Governing the Commons: The Evolution of Institutions for Collective Action*. Cambridge University Press. -* Peirce, C. S. (1933). The logic of relatives (1897). In C. Hartshorne & P. Weiss (Eds.), *Collected Papers of Charles Sanders Peirce* (Vol. 3, §§3.456–3.552). Harvard University Press. -* Quine, W. V. O. (1954). Reduction to a dyadic predicate. *Journal of Symbolic Logic*, 19(3), 180–182. -* Rahman, H. A. (2021). The invisible cage: Workers' reactivity to opaque algorithmic evaluations. *Administrative Science Quarterly*, 66(4), 945–988. -* Rudin, C. (2019). Stop explaining black box machine learning models for high stakes decisions and use interpretable models instead. *Nature Machine Intelligence*, 1(5), 206–215. -* Simmel, G. (1950). Quantitative aspects of the group (1902). In K. H. Wolff (Trans. & Ed.), *The Sociology of Georg Simmel* (pp. 87–177). Free Press. -* Thompson, J. D. (1967). *Organizations in Action: Social Science Bases of Administrative Theory*. McGraw-Hill. -* Wageman, R. (1995). Interdependence and group effectiveness. *Administrative Science Quarterly*, 40(1), 145–180. +* Albantakis, L., Barbosa, L., Findlay, G., Grasso, M., Haun, A. M., Marshall, W., Mayner, W. G. P., Zaeemzadeh, A., Boly, M., Juel, B. E., Sasai, S., Fujii, K., David, I., Hendren, J., Lang, J. P., & Tononi, G. (2023). Integrated information theory (IIT) 4.0: Formulating the properties of phenomenal existence in physical terms. *PLoS Computational Biology*, 19(10), e1011465. +* Anthony, C., Bechky, B. A., & Fayard, A.-L. (2023). "Collaborating" with AI: Taking a system view to explore the future of work. *Organization Science*, 34(5), 1672–1694. +* Burch, R. W. (1991). *A Peircean Reduction Thesis: The Foundations of Topological Logic*. Texas Tech University Press. +* Burt, R. S. (1992). *Structural Holes: The Social Structure of Competition*. Harvard University Press. +* Cameron, L. D. (2024). The making of the “good bad” job: How algorithmic management manufactures consent through constant and confined choices. *Administrative Science Quarterly*, 69(2), 458–514. +* Caplow, T. (1956). A theory of coalitions in the triad. *American Sociological Review*, 21(4), 489–493. +* Coleman, J. S. (1988). Social capital in the creation of human capital. *American Journal of Sociology*, 94(Suppl.), S95–S120. +* Curchod, C., Patriotta, G., Cohen, L., & Neysen, N. (2020). Working for an algorithm: Power asymmetries and agency in online work settings. *Administrative Science Quarterly*, 65(3), 644–676. +* Daft, R. L., & Lewin, A. Y. (1990). Can organization studies begin to break out of the normal science straitjacket? An editorial essay. *Organization Science*, 1(1), 1–9. +* Einav, L., Farronato, C., & Levin, J. (2016). Peer-to-peer markets. *Annual Review of Economics*, 8, 615–635. +* Gartenberg, C., Hasan, S., Murray, A., & Pierce, L. (2026). More versus better: Artificial intelligence, incentives, and the emerging crisis in peer review. *Organization Science*, 37(3), 795–812. +* Girotra, K., Terwiesch, C., & Ulrich, K. T. (2010). Idea generation and the quality of the best idea. *Management Science*, 56(4), 591–605. +* Granovetter, M. S. (1973). The strength of weak ties. *American Journal of Sociology*, 78(6), 1360–1380. +* Hall, J. V., & Krueger, A. B. (2018). An analysis of the labor market for Uber's driver-partners in the United States. *ILR Review*, 71(3), 705–732. +* Hereth Correia, J., & Pöschel, R. (2004). The power of Peircean algebraic logic (PAL). In *Conceptual Structures at Work: 12th International Conference on Conceptual Structures, ICCS 2004* (LNCS Vol. 3127, pp. 337–351). Springer. +* Hereth Correia, J., & Pöschel, R. (2006). The teridentity and Peircean algebraic logic. In *Conceptual Structures: Inspiration and Application, ICCS 2006* (LNAI Vol. 4068, pp. 229–246). Springer. +* Kellogg, K. C., Valentine, M. A., & Christin, A. (2020). Algorithms at work: The new contested terrain of control. *Academy of Management Annals*, 14(1), 366–410. +* Koshkin, S. (2024a). Logical reduction of relations: From relational databases to Peirce's reduction thesis. *Logic Journal of the IGPL*, 32(5), 779–809. +* Koshkin, S. (2024b). Functional completeness and primitive positive decomposition of relations on finite domains. *Logic Journal of the IGPL*. Advance online publication. https\://doi.org/10.1093/jigpal/jzae077 +* Lebovitz, S., Lifshitz-Assaf, H., & Levina, N. (2022). To engage or not to engage with AI for critical judgments: How professionals deal with opacity when using AI for medical diagnosis. *Organization Science*, 33(1), 126–148. +* March, J. G. (1991). Exploration and exploitation in organizational learning. *Organization Science*, 2(1), 71–87. +* Mayner, W. G. P., Marshall, W., Albantakis, L., Findlay, G., Marchman, R., & Tononi, G. (2018). PyPhi: A toolbox for integrated information theory. *PLoS Computational Biology*, 14(7), e1006343. +* Mediano, P. A. M., Rosas, F. E., Luppi, A. I., Carhart-Harris, R. L., Bor, D., Seth, A. K., & Barrett, A. B. (2025). Toward a unified taxonomy of information dynamics via Integrated Information Decomposition. *Proceedings of the National Academy of Sciences*, 122(39), e2423297122. +* Obstfeld, D. (2005). Social networks, the *tertius iungens* orientation, and involvement in innovation. *Administrative Science Quarterly*, 50(1), 100–130. +* Orlikowski, W. J., & Scott, S. V. (2008). Sociomateriality: Challenging the separation of technology, work and organization. *Academy of Management Annals*, 2(1), 433–474. +* Ostrom, E. (1990). *Governing the Commons: The Evolution of Institutions for Collective Action*. Cambridge University Press. +* Parasuraman, R., & Riley, V. (1997). Humans and automation: Use, misuse, disuse, abuse. *Human Factors*, 39(2), 230–253. +* Peirce, C. S. (1933). The logic of relatives (1897). In C. Hartshorne & P. Weiss (Eds.), *Collected Papers of Charles Sanders Peirce* (Vol. 3, §§3.456–3.552). Harvard University Press. +* Puranam, P., Raveendran, M., & Knudsen, T. (2012). Organization design: The epistemic interdependence perspective. *Academy of Management Review,* 37(3), 419–440. +* Quine, W. V. O. (1954). Reduction to a dyadic predicate. *Journal of Symbolic Logic*, 19(3), 180–182. +* Rahman, H. A. (2021). The invisible cage: Workers' reactivity to opaque algorithmic evaluations. *Administrative Science Quarterly*, 66(4), 945–988. +* Raveendran, M., Silvestri, L., & Gulati, R. (2020). The role of interdependence in the micro-foundations of organization design: Task, goal, and knowledge interdependence. *Academy of Management Annals,* 14(2), 828–868. +* Rosenblat, A., & Stark, L. (2016). Algorithmic labor and information asymmetries: A case study of Uber's drivers. *International Journal of Communication*, 10, 3758–3784. +* Schor, J. B., Attwood-Charles, W., Cansoy, M., Ladegaard, I., & Wengronowitz, R. (2020). Dependence and precarity in the platform economy. *Theory and Society*, 49(5–6), 833–861. +* Shestakofsky, B. (2017). Working algorithms: Software automation and the future of work. *Work and Occupations*, 44(4), 376–423. +* Simmel, G. (1902/1950). Quantitative aspects of the group (1902/1908). In K. H. Wolff (Trans. & Ed.), *The Sociology of Georg Simmel* (pp. 87–177). Free Press. +* Skitka, L. J., Mosier, K. L., & Burdick, M. (1999). Does automation bias decision-making? *International Journal of Human-Computer Studies*, 51(5), 991–1006. +* Stark, D., & Pais, I. (2020). Algorithmic management in the platform economy. *Sociologica*, 14(3), 47–72. +* Sundararajan, A. (2016). *The Sharing Economy: The End of Employment and the Rise of Crowd-Based Capitalism*. MIT Press. +* Thompson, J. D. (1967). *Organizations in Action: Social Science Bases of Administrative Theory*. McGraw-Hill. +* Tononi, G. (2004). An information integration theory of consciousness. *BMC Neuroscience*, 5, 42\. +* Vallas, S., & Schor, J. B. (2020). What do platforms do? Understanding the gig economy. *Annual Review of Sociology*, 46, 273–294. +* Victor, B., & Blackburn, R. S. (1987). Interdependence: An alternative conceptualization. *Academy of Management Review,* 12(3), 486–498. +* Wageman, R. (1995). Interdependence and group effectiveness. *Administrative Science Quarterly*, 40(1), 145–180. * Williams, P. L., & Beer, R. D. (2010). Nonnegative decomposition of multivariate information. *arXiv:1004.2515*. -# Technical Appendix (Stage 1 Supplement) +# Addendum Appendices A–D: Formal Proofs, Engine Specifications, and CI Verdicts ## Appendix A: Algebraic Irreducibility, IIT 4.0 Wholeness, and Proxy Benchmarks ### A.1. Peircean Algebraic Logic (PAL), Bond Algebra, and Quine's Pairing Translation -Quine (1954, p. 180) translated any interpreted *n*-ary theory into a single dyadic predicate letter *F* by encoding tuples via iterated Kuratowski ordered pairs {{*x*}, {*x*, *y*}} over a universe closed under pairing. In standard primitive-positive relational clones [F]ₚₚ, variable identification is unrestricted, so the ternary diagonal Δ₃ = {(*x*, *x*, *x*) ∈ *X*³ : *x* ∈ *X*} is trivially generated from binary equality via (*x* = *y*) ∧ (*y* = *z*), and on finite domains with |*X*| ≥ 3 every *n*-ary relation reduces to binary relations under primitive-positive operations, whereas on Boolean domains ¬*I*₃ is primitive-positive irreducible to binaries (Koshkin, 2025, Theorems 2–4; see Koshkin, 2024 for infinite domains and projoins). In **Peircean Algebraic Logic** (introduced with a restricted proof in Burch, 1991), removing primitive teridentity (PAL ∖ {id₃}) caps every connected set of argument places generated from unary and binary relations at size ≤ 2, so id₃ cannot be generated over any fixed domain |*X*| ≥ 2 (Hereth Correia & Pöschel, 2004; Hereth Correia & Pöschel, 2006, Lemma 1 and Theorem 2). Likewise, in tabular **bond algebra** where composition quantifies out shared places, teridentity is bond-irreducible on any domain with |*X*| ≥ 2 (Koshkin, 2025, Theorem 6). +Quine (1954, p. 180\) translated any interpreted *n*\-ary theory into a single dyadic predicate letter *F* by encoding tuples via iterated Kuratowski ordered pairs {{*x*}, {*x*, *y*}} over a universe closed under pairing. In standard primitive-positive relational clones \[F\]ₚₚ, variable identification is unrestricted, so the ternary diagonal Δ₃ \= {(*x*, *x*, *x*) ∈ *X*³ : *x* ∈ *X*} is trivially generated from binary equality via (*x* \= *y*) ∧ (*y* \= *z*), and on finite domains with \|*X*\| ≥ 3 every *n*\-ary relation reduces to binary relations under primitive-positive operations, whereas on Boolean domains ¬*I*₃ is primitive-positive irreducible to binaries (Koshkin, 2024b, Theorems 2–4; see Koshkin, 2024a for infinite domains and for natural joins and projections). In **Peircean Algebraic Logic** (introduced by Burch, 1991, who proved the reduction thesis under a restriction on juxtaposition that Hereth Correia & Pöschel, 2004, 2006, removed), removing primitive teridentity (PAL ∖ {id₃}) caps every connected set of argument places generated from unary and binary relations at size ≤ 2, so id₃ cannot be generated over any fixed domain \|*X*\| ≥ 2 (Hereth Correia & Pöschel, 2004; Hereth Correia & Pöschel, 2006, Lemma 1 and Theorem 2). Likewise, in tabular **bond algebra** where composition quantifies out shared places, teridentity is bond-irreducible on any domain with \|*X*\| ≥ 2 (Koshkin, 2024b, Theorem 6). ### A.2. What the Classifier Computes vs. What the Peirce Probes Test -In `irreducibility/core.py` (and `org_frontier/classifier/`), a structure is classified as `triadic` iff system integrated information over the Minimum Information Partition (Albantakis et al., 2023) satisfies Φ(MIP) > 10⁻⁹ in at least one reachable state, and `pyphi.new_big_phi.maximal_complex` identifies the major complex (which may bind all three parties {*D*, *P*, *R*} under `BOTTLENECK`/`ENRICHER`, two parties {*D*, *P*} or {*P*, *R*} under `CAPTURE`, or {*D*, *R*} under `BYPASSED`). Separately, our Peirce probes (`org_frontier/thinkers/peirce/probe_peirce_joint_determination.py`; CI checks `thinkers-peirce-h1-irreducibility`, `thinkers-peirce-jd`, and `thinkers-peirce-jd-full`) test how systemic wholeness (Φ(MIP) > 0) relates to two-input joint determination (a node whose rule depends non-trivially on two counterparts), showing that the two properties cross in both directions: +In `irreducibility/core.py` (and `org_frontier/classifier/`), a structure is classified as `triadic` iff system integrated information over the Minimum Information Partition (Albantakis et al., 2023\) satisfies Φ(MIP) \> 10⁻⁹ in at least one reachable state, and `pyphi.new_big_phi.maximal_complex` identifies the major complex (which may bind all three parties {*D*, *P*, *R*} under `BOTTLENECK`/`ENRICHER`, two parties {*D*, *P*} or {*P*, *R*} under `CAPTURE`, or {*D*, *R*} under `BYPASSED`). Separately, our Peirce probes (`org_frontier/thinkers/peirce/probe_peirce_joint_determination.py`; CI checks `thinkers-peirce-h1-irreducibility`, `thinkers-peirce-jd`, and `thinkers-peirce-jd-full`) test how systemic wholeness (Φ(MIP) \> 0\) relates to two-input joint determination (a node whose rule depends non-trivially on two counterparts), showing that the two properties cross in both directions: -* **Wholeness without Joint Determination:** Across all 89 four-node one-input copy wirings, 66 reach genuine effect-side adicity 3 and 12 reach adicity 4 (while cause-side adicity never exceeds 2); among the 11 unbranched wirings (max adicity 2), 8 of 89 have Φ(MIP) > 0 (and the 3-node copy ring *A*′ = *C*, *B*′ = *A*, *C*′ = *B* scores Φ(MIP) = 2.0 with core {*A*, *B*, *C*}). Under `core.py`, these cyclic copy rings read as `triadic` wholes even though no rule has two inputs. -* **Joint Determination without Wholeness:** Across the 30 two-input mediated forms in `thinkers-peirce-jd-full`, 5 exhibit joint determination inside a whole, 11 have genuine two-input joint determination yet factor at Φ(MIP) = 0, and 1 has no joint determination (and in `thinkers-peirce-jd`, the 3-voter majority triad at state (1, 1, 1) scores Φ(MIP) = 0 with 4 partition ties). That is why Step 6 (`regime.py`) combines Φ(MIP), the major complex, and the bypass reduction rather than equating Φ(MIP) > 0 with a single algebraic property. +* **Wholeness without Joint Determination:** Across all 89 four-node one-input copy wirings, 66 reach genuine effect-side adicity 3 and 12 reach adicity 4 (while cause-side adicity never exceeds 2); among the 11 unbranched wirings (max adicity 2), 8 of 89 have Φ(MIP) \> 0 (and the 3-node copy ring *A*′ \= *C*, *B*′ \= *A*, *C*′ \= *B* scores Φ(MIP) \= 2.0 with core {*A*, *B*, *C*}). Under `core.py`, these cyclic copy rings read as `triadic` wholes even though no rule has two inputs. +* **Joint Determination without Wholeness:** Across the 30 two-input mediated forms in `thinkers-peirce-jd-full`, 5 exhibit joint determination inside a whole, 11 have genuine two-input joint determination yet factor at Φ(MIP) \= 0, and 1 has no joint determination (and in `thinkers-peirce-jd`, the 3-voter majority triad at state (1, 1, 1\) scores Φ(MIP) \= 0 with 4 partition ties). That is why Step 6 (`regime.py`) combines Φ(MIP), the major complex, and the bypass reduction rather than equating Φ(MIP) \> 0 with a single algebraic property. ### A.3. Why Time-Series Information Decomposition (PID / ΦID) Cannot Replace Exact Φ(MIP) -Partial Information Decomposition (Williams & Beer, 2010) and Integrated Information Decomposition (ΦID; Mediano et al., 2025) decompose multivariate time-series information, and the ΦID-based measure Φᵣ corrects whole-minus-sum integrated information Φ(WMS) for double-counting redundancy. We tested these proxies in two separate benchmarks: +Partial Information Decomposition (Williams & Beer, 2010\) and Integrated Information Decomposition (ΦID; Mediano et al., 2025\) decompose multivariate time-series information, and the ΦID-based measure Φᵣ corrects whole-minus-sum integrated information Φ(WMS) for double-counting redundancy. We tested these proxies in two separate benchmarks: -* In our prototype's `studies/proxies` check across the 256 three-party structures, simulated-trajectory ΦID Φᵣ and whole-minus-sum Φ(WMS) separate dyadic from triadic structures at rank-AUC **0.563** and **0.629**. -* In `foundations/phiid_vs_phi/FINDINGS.md`, exact-TPM Φ(WMS) correlates with exact Φ(MIP) at Spearman ρ = **0.283** (AUC = **0.669**), while finite time-series ΦID Φᵣ (CCS) correlates at Spearman ρ = **0.124** (AUC = **0.560**). +* In our prototype's `proxies check (studies/proxy_run.py, studies/proxy_bridge.py, studies/phiid_measure.py) across the 256 strict-mediation census forms,` simulated-trajectory ΦID Φᵣ and whole-minus-sum Φ(WMS) separate dyadic from triadic structures at rank-AUC **0.563** and **0.629**. +* In `foundations/phiid_vs_phi/FINDINGS.md`, exact-TPM Φ(WMS) correlates with exact Φ(MIP) at Spearman ρ \= **0.283** (AUC \= **0.669**), while finite time-series ΦID Φᵣ (CCS) correlates at Spearman ρ \= **0.124** (AUC \= **0.560**). -Furthermore, our canonical Φ(MIP) = 2.0 strict-mediation control (*D*′ = *P*, *P*′ = *D* ∧ *R*, *R*′ = *P*) uses a conjunctive `AND` (∧) rule, whereas pure `XOR` (⊕) parity triads exhibit the **parity blindspot** (`#4`, `BLINDSPOT_SURVIVES_RADIX`), scoring Φ = 0.5 at *n* = 3 and decaying as Φ = 2²⁻ⁿ through *n* = 10. +Furthermore, our canonical Φ(MIP) \= 2.0 strict-mediation control (*D*′ \= *P*, *P*′ \= *D* ∧ *R*, *R*′ \= *P*) uses a conjunctive `AND` (∧) rule, whereas pure `XOR` (⊕) parity triads exhibit the **parity blindspot**, scoring Φ \= 0.5 at n \= 3 and decaying as Φ \= 2²⁻ⁿ through n \= 10 (parity\_law\_n\_gt6 and parity\_law\_n\_gt8: LAW\_HOLDS\_NGT6, LAW\_HOLDS\_NGT8), while balanced commits S′ \= (W \+ C) mod k keep a flat Φ ≈ 0.5 band at k \= 2, 3, 4 (parity\_radix\_blindspot, V2 \#4: BLINDSPOT\_SURVIVES\_RADIX). ## Appendix B: The Six-Step Pipeline and Multi-Valued Engine Architecture ### B.1. The Six-Step AI-and-PyPhi Pipeline (`irreducibility/` & `encode/`) -* **Step 1 — Bound and Name (`protocol/`):** Fixes one recurring organizational act, names the *n* parties as uppercase identifiers, and defines binary participation states (0/1). -* **Step 2 — Encode via Drafter, Adversary, and Gate (`encode/SCHEMA.json`, `PROMPT_drafter.md`, `PROMPT_adversary.md`, `irreducibility/encode_check.py`):** Rules are deterministic Boolean expressions over party labels (`and` [∧], `or` [∨], `not` [¬], `xor` [⊕], `0`, `1`); `rules.py` rejects any other syntax so encodings cannot execute code. The Drafter writes rival and design encodings with verbatim source quotes, mediator alternatives (commit, convey, store), and fixed predictions; the Adversary tests commit-vs-convey, pooling via `or` (∨), and outside options; `encode_check.py` rejects any missing rule, non-verbatim quote, missing alternative, or missing prediction without computing Φ. -* **Step 3 — Compute (`irreducibility/core.py`):** `tpm_from_rules` builds the 2ⁿ × *n* little-endian state-by-node TPM; `cm_from_rules` builds the connectivity matrix via flip test; `pyphi.new_big_phi.sia` and `maximal_complex` evaluate Φ(MIP) and the major complex across reachable states (pinned to `wmayner/pyphi` commit `b78d0e342` on Python 3.10–3.12). -* **Step 4 — Validate First (`irreducibility/validate.py`):** Enforces the four mandatory controls (`irreducibility/controls.py`: factoring Φ = 0.000, irreducible Φ = 0.830, strict-mediation Φ = 2.000, and gig false-dyad Φ = 2.000; see Section 2.1 Table) before any script reports results. -* **Step 5 — Report the Spread (`irreducibility/spread.py`, `analyze.py`):** Computes verdict agreement, Φ gap, per-party rule agreement, and exact single-rule flips across rival encodings. -* **Step 6 — Read the Structure (`irreducibility/regime.py`, `contingency.py`):** Classifies the mediator via `classify_mediator` (`PASSIVE`, `CONDUIT`, `BOTTLENECK`, `CAPTURE`, `ENRICHER`, `BYPASSED`) and tests outside-option scenarios (*O*₁–*O*₅). Four worked examples and logged blind Claude Sonnet 5.5 runs are summarized in Table 5 below. - -| Worked Case / Logged AI Run (`examples/` & `encode/runs/`) | Organizational Setting & Parties | Encodings & Gate Status (`encode_check.py`) | Key Structural Verdict, Φ(MIP) Spread, and AI Prediction Audit | -| :--- | :--- | :--- | :--- | -| **Example 01: Gig Dispatch** (`examples/01_gig_dispatch/`) | Driver (*D*), Platform (*P*), Rider (*R*) + outside options (*O*₁–*O*₅) | 2 rival (*R*₁, *R*₂), 2 design (*D*₁, *D*₂), 5 exit (*O*₁–*O*₅); **PASS** | Platform manual *R*₁ = **Triadic `BOTTLENECK`** (Φ = 2.0, core {*D*, *P*, *R*}); Driver account *R*₂ = **Dyadic `CONDUIT`** (Φ = 0.0); single rule *P*′ decides | -| **Example 02: Insurance Claim** (`examples/02_insurance_claim/`) | Claimant (*C*), Intake Portal (*M*), Adjuster (*A*) | 2 rival readings + 4 underspecified designs in blind AI run | Human complete file passes; in blind AI run (`02_insurance_claim_drafter.json`), Drafter refused to invent 4 ungrounded rules and `encode_check.py` **REJECTED** (9 problems) | -| **Example 03: Code-Review Gate** (`examples/03_code_review_gate/`) | Author (*A*), CI / Merge Bot (*G*), Reviewer (*R*) | Branch-protection gate vs. rubber-stamp approval; **PASS** | Required review gate (*G*′ = *A* ∧ *R*) yields **Triadic `BOTTLENECK`** (Φ = 2.0, core {*A*, *G*, *R*}); rubber-stamp excludes *R* from major complex (`#39 HUMAN_COMMIT_READ`) | -| **Example 04: Dealer vs. Clearinghouse** (`examples/04_dealer_vs_clearinghouse/`) | Buyer (*B*), Intermediary (*M*), Seller (*S*) | Bilateral dealer relay vs. multilateral net clearinghouse; **PASS** | Sequential dealer inventory relay factors (**Dyadic**, Φ = 0.0); simultaneous net clearinghouse binds {*B*, *M*, *S*} (**Triadic**, Φ = 2.0) | -| **Logged Run 1: Drafter on 01** (`01_gig_dispatch_drafter.json`) | Blind Claude Sonnet 5.5 run on `SOURCE.md` only | 2 rival encodings with verbatim quotes; **PASS** (0 errors) | Reproduced both human rival encodings (*R*₁ Φ = 2.0; *R*₂ Φ = 0.0) and matched both pre-registered predictions | -| **Logged Run 2: Adversary on 01** (`01_gig_dispatch_adversary.json`) | Blind Claude Sonnet 5.5 adversarial search on `01` | Discovered Driver Pool (*D*₁) and Direct Tie (*D*₂); **PASS** | **PyPhi refuted both LLM predictions:** LLM predicted *D*₁ would stay 3-party triadic (actual: *D*ᵢ factored out, core {*P*, *R*}) and *D*₂ would factor (actual: triadic core {*D*, *R*}, *P* `BYPASSED`) | +* **Step 1 — Bound and Name (`protocol/`):** Fixes one recurring organizational act, names the *n* parties as uppercase identifiers, and defines binary participation states (0/1). +* **Step 2 — Encode via Drafter, Adversary, and Gate (`encode/SCHEMA.json`, `PROMPT_drafter.md`, `PROMPT_adversary.md`, `irreducibility/encode_check.py`):** Rules are deterministic Boolean expressions over party labels (`and` \[∧\], `or` \[∨\], `not` \[¬\], `xor` \[⊕\], `0`, `1`); `rules.py` rejects any other syntax so encodings cannot execute code. The Drafter writes rival and design encodings with verbatim source quotes, mediator alternatives (commit, convey, store), and fixed predictions; the Adversary tests commit-vs-convey, pooling via `or` (∨), and outside options; `encode_check.py` rejects any missing rule, non-verbatim quote, missing alternative, or missing prediction without computing Φ. +* **Step 3 — Compute (`irreducibility/core.py`):** `tpm_from_rules` builds the 2ⁿ × *n* little-endian state-by-node TPM; `cm_from_rules` builds the connectivity matrix via flip test; `pyphi.new_big_phi.sia` and `maximal_complex` evaluate Φ(MIP) and the major complex across reachable states (pinned to `wmayner/pyphi` commit `b78d0e342` on Python 3.10–3.12). +* **Step 4 — Validate First (`irreducibility/validate.py`):** Runs two controls (factoring Φ \= 0.000; irreducible Φ \= 0.830) and five reference forms (strict mediation Φ \= 2.000; chat dyad, dyadic gig model, and broken-liveness feedback, each Φ \= 0.000; gig false dyad Φ \= 2.000) before any script reports results; Table 2 shows the two controls and two of the five forms. +* **Step 5 — Report the Spread (`irreducibility/spread.py`, `analyze.py`):** Computes verdict agreement, Φ gap, per-party rule agreement, and exact single-rule flips across rival encodings. +* **Step 6 — Read the Structure (`irreducibility/regime.py`, `contingency.py`):** Reads the mediator's position with regime() in regime.py (REGIMES: dyadic, BYPASSED, CAPTURE, BOTTLENECK, ENRICHER, with lesion\_survives(); PASSIVE and CONDUIT are our glosses of dyadic), runs the bypass test with contingency\_test() and add\_bypass() in contingency.py (intrinsic, contingent, partial, or reducible), and takes the verdict from classify\_rules() in core.py; outside options are the O₁–O₅ design encodings in examples/01\_gig\_dispatch/ and the battery in studies/enricher\_regime.py. Four worked examples and logged blind Claude Sonnet 5.5 runs are summarized in Table 5 below. + +Table 5: Worked examples and logged AI runs in irreducibility-pipeline/ + +| Worked Case / Logged AI Run (`examples/` in irreducibility-pipeline/) | Organizational Setting & Parties | Encodings & Gate Status (`encode_check.py`) | Key Structural Verdict, Φ(MIP) Spread, and AI Prediction Audit | +| :---- | :---- | :---- | :---- | +| **Example 01: Gig Dispatch** (`examples/01_gig_dispatch/`) | Driver (*D*), Platform (*P*), Rider (*R*) (D₁, D₂ in rival encoding C) | 3 rival (A \= R₁, B \= R₂, C \= D₁) \+ 5 design (O₁–O₅, with O₅ \= D₂) \= 8 admissible encodings; **PASS** | Platform manual *R*₁ \= **Triadic `BOTTLENECK`** (Φ \= 2.0, core {*D*, *P*, *R*}); Driver account *R*₂ \= **Dyadic `CONDUIT`** (Φ \= 0.0); single rule P′ decides (A→B flip: P′ \= D ∧ R becomes P′ \= D) | +| **Example 02: Insurance Claim** (`examples/02_insurance_claim/`) | Claimant (*C*), auto-adjudication engine (E, mediator), human adjuster (A) | 5 design encodings, no rival pair (pipe, gated, loop, loop\_nolearn, frozen); PASS | pipe triadic Φ \= 2.000, {C, E, A}, BOTTLENECK (prediction held); gated Φ \= 0.415, {C, E}, CAPTURE (failed); loop Φ \= 1.000, {E, A}, CAPTURE (failed); loop\_nolearn Φ \= 2.000, {C, A}, BYPASSED (failed); frozen dyadic Φ \= 0.000 (held): 2 of 5 naive predictions held. Logged AI run (examples/02\_insurance\_claim/ai\_draft.json): the Drafter left 4 of 5 designs' rules unwritten and encode\_check.py REJECTED the file (9 problems in 5 encodings: 8 missing party rules, 1 missing mediator alternative) | +| **Example 03: Code-Review Gate** (`examples/03_code_review_gate/`) | Author (*A*), CI gate (G, mediator), Maintainer (M) | 2 rival encodings: gated (A′ \= G ∧ M, G′ \= A, M′ \= A ∧ G) vs. diff\_only (M′ \= A); **PASS** | \[DRAFTED by Claude\] Required review gate (gated): when maintainers wait for CI the gate is bypassed — the author and maintainer form the core at Φ \= 1.0 and the gate sits outside it; approving on the diff alone (diff\_only) brings the gate into a three-party core at Φ \= 2.0 as an enricher. Both naive predictions failed; the field-mock M4 reads the same (BYPASSED). | +| **Example 04: Dealer vs. Clearinghouse** (`examples/04_dealer_vs_clearinghouse/`) | Upstream party (U), Intermediary (I, mediator), Downstream party (V) | 2 encodings: dealer (U′ \= V, I′ \= U, V′ \= I; a ban on direct sales) vs. clearinghouse (I′ \= U ∧ V); **PASS** | Both triadic BOTTLENECK at Φ \= 2.000, core {U, I, V}; the contrast is contingency: dealer is contingent (opening the bypass loses Φ \= 2.000; core → {U, V}), clearinghouse is intrinsic (bypass loses 0.000; core → {U, I}) | +| **Logged Run 1: Drafter on 01** (examples/01\_gig\_dispatch/ai\_draft.json) | Blind Claude Sonnet 5.5 run on `prose.md` only | 2 rival encodings with verbatim quotes; **PASS** (0 errors) | Reproduced both human rival encodings (*R*₁ Φ \= 2.0; *R*₂ Φ \= 0.0) and matched both predictions fixed before computing | +| **Logged Run 2: Adversary on 01** (examples/01\_gig\_dispatch/ai\_draft\_plus\_adversary.json; raw output ai\_adversary\_raw.json) | Blind Claude Sonnet 5.5 adversarial search on `01` | 4 admissible encodings; added driver\_pool (D₁) and direct\_contact\_substitute (D₂); **PASS** | **PyPhi refuted both LLM predictions:** LLM predicted *D*₁ would stay 3-party triadic (actual: dyadic, Φ \= 0.000, major complex {P, R}) and *D*₂ would factor (actual: triadic core {D, R}, P BYPASSED, Φ \= 0.830) | ### B.2. Custom Multi-Valued IIT 4.0 Engine (`third_party/pyphi_iit4_mv`) & CI Gate -* **Milestone 1 (SBS `ExplicitTPM`) & Milestone 2 (Multi-Valued IIT 4.0 Solver):** Extends the binary-only `wmayner/pyphi` commit `b78d0e342` baseline to mixed-radix state spaces (*O*₁ × *O*₂ × … × *O*ₙ) without binary dummy-node inflation, yielding φₛ = 3.169925 (2 log₂ 3 bits) on its 2-node ternary control in `smoke_m2.py`—the same 2 log₂ 3 value that upstream PyPhi 2.0 (commit `134a8f31`) returns on the ternary conjunctive triad at (2, 2, 2) under `pyphi.iit4_2023` at ε = 0. -* **Continuous Integration Harness (`reproduce-the-numbers`):** Verifies all 542 automated checks in `ci/reproduce.json` across 127 studies in `org_frontier/studies/`, 135 probes, and 9 `foundations/` studies, alongside the 19 test gates and 17 reference results in `irreducibility-pipeline`. +* **Milestone 1 (SBS `ExplicitTPM`) & Milestone 2 (Multi-Valued IIT 4.0 Solver):** Extends the binary-only `wmayner/pyphi` commit `b78d0e342` baseline to mixed-radix state spaces (*O*₁ × *O*₂ × … × *O*ₙ) without binary dummy-node inflation, yielding φₛ \= 3.169925 (2 log₂ 3 bits) on its 2-node ternary control in `smoke_m2.py`—the same 2 log₂ 3 value that upstream PyPhi 2.0 (commit `134a8f31`) returns on the ternary conjunctive triad at (2, 2, 2\) under `pyphi.iit4_2023` at ε \= 0\. +* **Continuous Integration Harness (`reproduce-the-numbers`):** Verifies all 542 automated checks in `ci/reproduce.json` across 127 studies in `org_frontier/studies/`, 135 probes, and 9 `foundations/` studies, alongside the 19 test gates and 17 reference results in the irreducibility-pipeline/ directory of algorithmacy-lab (lab tag orgsci-stage1). ## Appendix C: Stage 2 Empirical Validation & Strategic Model Specifications -1. **Software Packaging:** `pip install irreducibility` CLI supporting Anthropic and local open-weight models, enforcing `encode_check.py` before computation, and exposing `pyphi_iit4_mv` for ternary/mixed-radix rules. -2. **Actor-Indexed Strategic Model (`studies/strategic_model/`):** A single strategic matrix (Section 3, Table 4) indexes the three parties as rows (Mediator *M*, Party *A*, Party *B*) and the rule edits as columns (commit vs. convey, pooling via `or` [∨], outside options *E*ᵢ, and direct counterpart ties *A* ↔ *B*), reporting exact ΔΦ(MIP) and major-complex transitions across all 256 three-party structures (56 dyadic, 132 cycle-supported, 68 mediated triads). +1. **Software Packaging:** `pip install irreducibility` CLI supporting Anthropic and local open-weight models, enforcing `encode_check.py` before computation, and exposing `pyphi_iit4_mv` for ternary/mixed-radix rules. +2. **Actor-Indexed Strategic Model (Stage 2 work; not yet in the repository):** A single strategic matrix (Section A.3, Table 4\) indexes the three parties as rows (Mediator *M*, Party *A*, Party *B*) and the rule edits as columns (commit vs. convey, pooling via `or` \[∨\], outside options *E*ᵢ, and direct counterpart ties *A* ↔ *B*), reporting exact ΔΦ(MIP) and major-complex transitions across the 256 strict-mediation three-party forms. \[DRAFTED by Claude\] Exhaustive enumeration of the 256 strict-mediation three-party forms (4 worker rules × 16 mediator rules × 4 counterpart rules) finds 24 irreducible and 232 factorable, with a mediator that reads both parties necessary but not sufficient (24/160 vs 0/96). 3. **Multi-Arm Empirical Validation:** Encodes 10–15 published platform and algorithmic-management cases from their own text (reporting all defensible encodings and the deciding empirical detail), fields the gig-dispatch interview packet (`protocol/`) and software code-review protocol (`org_frontier/field/`) once IRB approval is in hand, and pairs rule-level Φ(MIP) encodings with repository CRQA coupling metrics (`org_frontier/recurrence/`) and the psychometric algorithmacy scale (`org_frontier/survey/`). ## Appendix D: Summary of Completed Laboratory Arcs & Verified CI Verdicts +Table 6: Completed laboratory arcs and verified CI verdicts + | Research Arc | Study & Probe IDs in Repo | Core Organizational & Methodological Question | Verified CI Verdict(s) (`ci/reproduce.json`) | -| :--- | :--- | :--- | :--- | -| **Six-Step Pipeline, Adversarial Coding & Proxies** | `irreducibility-pipeline` (`v0.1-stage1`): `examples/01–04`, `adversarial_coding`, `proxies`, `strategic_model` | How do we translate qualitative text into exact IIT 4.0 tests without hiding encoding choices? | **17/17** reference results & **19/19** test gates pass; **101/101** adversarial flips; proxies rank-AUC **0.563** (Φᵣ) & **0.629** (Φ(WMS)); **60/60** exit trials retain non-exiting core. | -| **Multi-Valued IIT 4.0 & Graded Resolution** | V2 `#1–#4` (`ternary_conjunctive_mediator`, `graded_commitment_sweep`, `mixed_radix_asymmetric`, `multivalued_xor_blindspot`) | Does organizational irreducibility survive graded (*k* ≥ 3) and mixed-radix state spaces? | `TWO_CONDITION_STATE_DEPENDENT`, `SHARP_CLASS_GRADED_PATH` (*R*² = 0.992), `EXTRA_RESOLUTION_TO_PHI` (3 bits → 5.755 bits), `BLINDSPOT_SURVIVES_RADIX` (parity Φ = 2²⁻ⁿ). | -| **Classic Org Theory Bridges** | V2 `#43`, `#44`, `#46` (`thompson_verdict_bridge`, `wageman_ti_verdict`, `formal_informal_cut`) | Do classic interdependence typologies align with exact causal irreducibility? | `PARTIAL_ALIGNMENT` (Thompson pooled Φ = 0; sequential & reciprocal both Φ = 2.0), `WAGEMAN_PREDICTS_VERDICT`, `CUTS_ACROSS` (4/8 formal vs. shadow diverge). | -| **16-Thinker Triad Catalog** | CI checks `#001–#082` (`org_frontier/thinkers/`: Peirce, Simmel, Caplow, Burt, Granovetter, Coleman, Ostrom, Blau, etc.) | Which canonical sociological triad mechanisms are causally irreducible vs. factorable? | **82 automated probes** across **16 thinkers**; `thinkers-peirce-h1-irreducibility` (8/89 1-input wirings Φ > 0), `thinkers-peirce-jd-full` (11/30 2-input forms Φ = 0). | -| **Topology & Scaling Laws** | V3 `#1`, `#5`, `#10`; V4 `#9` (`dual_mediator_template_census`, `ring_of_hubs`, `parity_law_n_gt6`, `parity_law_n_gt8`) | Do modular organizational hubs or dual mediators fuse into macro-triads at scale? | `FACTORS_INTO_FIVE` (V3 `#1`), `FACTORS_NO_COMBINE` (V3 `#5`: hubs factor along bridge cuts), `LAW_HOLDS_NGT6` (*n* = 7, 8), `LAW_HOLDS_NGT8` (*n* = 9, 10). | -| **Partial Observation & Imputation** | V2 `#24`; V3 `#15`; V4 `#4`, `#5` (`partial_observation_screen`, `topology_aware_imputer`, `imputer_exact_phi`, `prior_matched_vs_mismatched`) | How do hidden nodes and priors affect cheap MI screens vs. exact Φ(MIP)? | `HIDDEN_COLLAPSE_INTERMITTENT_CLIFF` (V2 `#24`), `IMPUTER_RESTORES_AUC` (V3 `#15` on MI: 0.944), `COPY_RESTORES_RING_FAILS` (V4 `#4` on exact Φ: ring 0.806 vs. copy-W 0.896), `MATCHED_RETAINS_COPY_RANKS` (V4 `#5`). | -| **Platform Political Economy** | V2 `#29`, `#31`, `#32`, `#35` (`dual_principals`, `union_vs_coalition`, `multihoming_bypass`, `Substitute_degradation`) | How do dual principals, worker unions, multi-homing, and outside options reshape lock-in? | `CONFLICT_ENCODING`, `UNION_MIRRORS_COAL` (worker union mirrors coalition lever), `RIVAL_ENCODING`, `DROP_AT_FIRST_SUBST` (first outside option breaks lock-in). | -| **AI Workflows, Oversight & MARL Falsifications** | V2 `#37`, `#39`, `#40`, `#41`; V3 `#6`; probes 98, 107 (`agent_protocol_triad`, `hitl_oversight`, `ai_labor_displacement`, `marl_emergent_triads`, `marl_deep_replicate`) | When do AI agents form genuine triads, when is human oversight excluded, and does Φ > 0 predict MARL task success? | `PROTOCOL_IS_COMMIT` (`#37`), `HUMAN_COMMIT_READ` (`#39`: rubber-stamp leaves human outside Φ = 2.0 core), `SHARP_FULL_DISPLACE` (`#40`), `EMERGENT_NULL` & `NULL_SURVIVES` (AUC 0.485–0.555). | +| :---- | :---- | :---- | :---- | +| **Six-Step Pipeline, Adversarial Coding & Proxies** | `irreducibility-pipeline/ in algorithmacy-lab (lab tag orgsci-stage1): examples/01–04, studies/adversarial_coding.py, studies/proxy_run.py, proxy_bridge.py, phiid_measure.py` | How do we translate qualitative text into exact IIT 4.0 tests without hiding encoding choices? | **17/17** reference results & **19/19** test gates pass; **101/101** adversarial flips; proxies rank-AUC **0.563** (Φᵣ) & **0.629** (Φ(WMS)); **60/60** exit trials retain non-exiting core. | +| **Multi-Valued IIT 4.0 & Graded Resolution** | V2 `#1–#4` (`ternary_pivotality`, `graded_commit_verdict`, `mixed_radix_mediator`, `parity_radix_blindspot`) | Does organizational irreducibility survive graded (*k* ≥ 3\) and mixed-radix state spaces? | `TWO_CONDITION_STATE_DEPENDENT`, `SHARP_CLASS_GRADED_PATH` (on diagonal (L,L,L): L \= 0 NULL, L \= 1 DYADIC (Φ \= 0.390, {W,S}), L \= 2 TRIADIC (Φ \= 3.170, {W,S,C})), `EXTRA_RESOLUTION_TO_PHI` (ternary mediator on (1,S,1) sweep: Φ \= 1.170 / 0.500 / 2.000 (full form), core stays {W,S,C}), `BLINDSPOT_SURVIVES_RADIX` (balanced commits S′ \= (W \+ C) mod k keep a flat Φ ≈ 0.5 band at k \= 2, 3, 4). | +| **Classic Org Theory Bridges** | V2 `#43`, `#44`, `#46` (`thompson_verdict_bridge`, `wageman_ti_verdict`, `formal_informal_cut`) | Do classic interdependence typologies align with exact causal irreducibility? | `PARTIAL_ALIGNMENT` (Thompson pooled Φ \= 0; sequential & reciprocal both Φ \= 2.0), `WAGEMAN_PREDICTS_VERDICT (AUC = 1.000 on the designed panel at W ≥ 0.472; does not predict Φ magnitude: XOR and AND share W at Φ = 0.5 vs. 2.0), CUTS_ACROSS` (4/6 forms mismatch H1; alignment 0.333). | +| **16-Thinker Triad Catalog** | 82 thinkers-\* CI checks across 16 thinkers (`org_frontier/thinkers/`: Peirce, Simmel, Caplow, Burt, Granovetter, Coleman, Ostrom, Blau, etc.) | Which canonical sociological triad mechanisms are causally irreducible vs. factorable? | **82 automated probes** across **16 thinkers**; `thinkers-peirce-h1-irreducibility` (8/89 1-input wirings Φ \> 0), `thinkers-peirce-jd-full` (11/30 2-input forms Φ \= 0). | +| **Topology & Scaling Laws** | V3 `#1`, `#5`, `#10`; V4 `#9` (`dual_mediator_template_census`, `ring_of_hubs`, `parity_law_n_gt6`, `parity_law_n_gt8`) | Do modular organizational hubs or dual mediators fuse into macro-triads at scale? | `FACTORS_INTO_FIVE` (V3 `#1`), `FACTORS_NO_COMBINE` (V3 `#5`: hubs factor along bridge cuts), `LAW_HOLDS_NGT6` (*n* \= 7, 8), `LAW_HOLDS_NGT8 (n = 9, 10); together these carry the parity law Φ = 2²⁻ⁿ.` | +| **Partial Observation & Imputation** | V2 `#24`; V3 `#15`; V4 `#4`, `#5` (`partial_observation_screen`, `topology_aware_imputer`, `imputer_exact_phi`, `matched_imputer_exact_phi`) | How do hidden nodes and priors affect cheap MI screens vs. exact Φ(MIP)? | `HIDDEN_COLLAPSE_INTERMITTENT_CLIFF` (V2 `#24`), `IMPUTER_RESTORES_AUC` (V3 `#15` on MI: 0.944), `COPY_RESTORES_RING_FAILS` (V4 `#4` on exact Φ: ring 0.806 vs. copy-W 0.896), `MATCHED_RETAINS_COPY_RANKS` (V4 `#5`). | +| **Platform Political Economy** | V2 `#29`, `#31`, `#32`, `#35` (`dual_principal_conflict`, `worker_union_scale`, `rival_platforms`, `gig_substitution`) | How do dual principals, worker unions, multi-homing, and outside options reshape lock-in? | `CONFLICT_ENCODING`, `UNION_MIRRORS_COAL` (worker union mirrors coalition lever), `RIVAL_ENCODING`, `DROP_AT_FIRST_SUBST` (first outside option breaks lock-in). | +| **AI Workflows, Oversight & MARL Falsifications** | V2 `#37`, `#39`, `#40`, `#41`; probes 98, 107 (`agent_protocol_triad`, `hitl_rubber_stamp`, `ai_fidelity_displace`, `marl_emergent_learn`, `marl_deep_replicate`) | When do AI agents form genuine triads, when is human oversight excluded, and does Φ \> 0 predict MARL task success? | `PROTOCOL_IS_COMMIT` (`#37`), `HUMAN_COMMIT_READ` (`#39`: rubber-stamp leaves human outside Φ \= 2.0 core), `SHARP_FULL_DISPLACE` (`#40`), `EMERGENT_NULL` & `NULL_SURVIVES` (AUC 0.485–0.555). | + From 3b5fcc20a3613b525f197012a38c096378de2d9f Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 27 Oct 2026 14:55:42 +0000 Subject: [PATCH 3/3] fix: let pytest collect the irreducibility package from the lab root Declare pytest options so irreducibility-pipeline is the rootdir, and put that directory on pythonpath. pytest -q irreducibility-pipeline/tests then imports the package. Co-authored-by: Roger Hunt --- irreducibility-pipeline/README.md | 3 ++- irreducibility-pipeline/pyproject.toml | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/irreducibility-pipeline/README.md b/irreducibility-pipeline/README.md index 657ff5482..3e3411900 100644 --- a/irreducibility-pipeline/README.md +++ b/irreducibility-pipeline/README.md @@ -157,7 +157,8 @@ evidence, inter-rater reliability, ethics) is in [`protocol/`](protocol/). ```bash python reproduce.py # 17 checks, about 2 minutes on a laptop -pytest -q # 19 tests +pytest -q # 19 tests, from this directory +# from the lab root: pytest -q irreducibility-pipeline/tests ``` | Check | What it reproduces | diff --git a/irreducibility-pipeline/pyproject.toml b/irreducibility-pipeline/pyproject.toml index 377f0ec37..5621b5ef5 100644 --- a/irreducibility-pipeline/pyproject.toml +++ b/irreducibility-pipeline/pyproject.toml @@ -20,3 +20,7 @@ test = ["pytest"] [tool.setuptools] packages = ["irreducibility"] + +[tool.pytest.ini_options] +# So `pytest -q irreducibility-pipeline/tests` from the lab root imports this package. +pythonpath = ["."]