From c85cc03c69137fc198261403b6b674f0e025cf89 Mon Sep 17 00:00:00 2001 From: Ali Romman <226877337+aliromman@users.noreply.github.com> Date: Fri, 23 Oct 2026 19:19:53 -0500 Subject: [PATCH 1/2] Construct the same-paid inverse of the coupled native provider --- research/native-coupled-inverse/ORIGINS.json | 56 +++ research/native-coupled-inverse/PROOF.md | 165 +++++++ research/native-coupled-inverse/README.md | 77 ++++ research/native-coupled-inverse/RESULT.json | 130 ++++++ research/native-coupled-inverse/SOURCE.zip | Bin 0 -> 123969 bytes research/native-coupled-inverse/SOURCES.json | 54 +++ research/native-coupled-inverse/TASK.json | 82 ++++ research/native-coupled-inverse/VALIDATION.md | 20 + research/native-coupled-inverse/VERIFY.json | 25 ++ research/native-coupled-inverse/verify.py | 415 ++++++++++++++++++ 10 files changed, 1024 insertions(+) create mode 100644 research/native-coupled-inverse/ORIGINS.json create mode 100644 research/native-coupled-inverse/PROOF.md create mode 100644 research/native-coupled-inverse/README.md create mode 100644 research/native-coupled-inverse/RESULT.json create mode 100644 research/native-coupled-inverse/SOURCE.zip create mode 100644 research/native-coupled-inverse/SOURCES.json create mode 100644 research/native-coupled-inverse/TASK.json create mode 100644 research/native-coupled-inverse/VALIDATION.md create mode 100644 research/native-coupled-inverse/VERIFY.json create mode 100644 research/native-coupled-inverse/verify.py diff --git a/research/native-coupled-inverse/ORIGINS.json b/research/native-coupled-inverse/ORIGINS.json new file mode 100644 index 0000000000..781095ae20 --- /dev/null +++ b/research/native-coupled-inverse/ORIGINS.json @@ -0,0 +1,56 @@ +{ + "head": "3348fccea855082786d5f0fc5558b73d4974e745", + "repository": "CrocSwap/integer-mult-bounds", + "pr": 5402, + "archive_sha256": "530fe35e8e8abdcf9c6207168c7e8586c56b2fbe491c6c67046bea83343809cc", + "files": [ + { + "file": "verify.py", + "path": "research/native-rank8-helper-provider/verify.py", + "git_blob": "b62af49c87864ad9337f3964b2515ba53de85d4f", + "sha256": "121d87787c0f76bd530b6e1682704a311e96dfb33d787bea2ba29a1d0e5ee23e" + }, + { + "file": "README.md", + "path": "research/native-rank8-helper-provider/README.md", + "git_blob": "92d0d7e523dbf90c67b7244de4c87cc74c0d3b61", + "sha256": "0d86590c471a498f3b735397d42bbaf4d5e89c33b75ddbd48dbf972192ab351f" + }, + { + "file": "PROOF.md", + "path": "research/native-rank8-helper-provider/PROOF.md", + "git_blob": "5cbfc4fd02dce926c3d235f1549bdb2035dea088", + "sha256": "2d59282f3b5e9fb848d0099ce91729fa433162e6975f877a441e2ab4f57a29c5" + }, + { + "file": "ATTRIBUTION.md", + "path": "research/native-rank8-helper-provider/ATTRIBUTION.md", + "git_blob": "efe3acb566448caeb4a340235bb50234808ff728", + "sha256": "29756f86ebad2a957d8073bea173306f00e7d957828a5bab9f7832faf5815543" + }, + { + "file": "SOURCES.json", + "path": "research/native-rank8-helper-provider/SOURCES.json", + "git_blob": "dd77397ca519f0c15799b4f90a489af3d6a2cb0f", + "sha256": "f16756004bd3100e4993b250181c4c8d15c31b0a1478b627091dd900e1103888" + }, + { + "file": "WITNESS.json", + "path": "research/native-rank8-helper-provider/WITNESS.json", + "git_blob": "19665f9eac2238d709758e0296eb6016e71b2b1a", + "sha256": "24599011da06325e1012619b2b84a4dd3aceb90ab42d3caaf6414879e7d16591" + }, + { + "file": "PROVIDER.json", + "path": "research/native-rank8-helper-provider/PROVIDER.json", + "git_blob": "0afd30ed01202eb6ce62462dcf8bc9164f3b0455", + "sha256": "676de7551d3364598f4a7e29ae97cae0e4364348786bbe70435b84294ba7dd65" + }, + { + "file": "WORD.json.gz", + "path": "research/native-rank8-helper-provider/WORD.json.gz", + "git_blob": "f3111b47e89496da8ca0ee45b2e4b258c0634d8e", + "sha256": "7dc356001ed597ad6fc9fd3e0bc6ff7e3ec3a580a579a956827aa17fccfdd2dc" + } + ] +} diff --git a/research/native-coupled-inverse/PROOF.md b/research/native-coupled-inverse/PROOF.md new file mode 100644 index 0000000000..1d524fb69d --- /dev/null +++ b/research/native-coupled-inverse/PROOF.md @@ -0,0 +1,165 @@ +# A native inverse with the same paid Gaussian profile + +This construction inverts the coupled provider from +[PR #5402](https://github.com/CrocSwap/integer-mult-bounds/pull/5402), at +`3348fccea855082786d5f0fc5558b73d4974e745`. It preserves all 632 original +input directions. Nine temporary fields can start with arbitrary values and +finish zero. No new Gaussian child is needed. The inverse needs additional +ordinary operations, which are counted below. + +This is an enabling construction. It gives no new kappa, complete caller, +autonomous credit for the eight coupled outputs, or selected-result change. +The physical source implementation and its interpretation at every positive +fiber width remain inherited premises. The source replay is run again. + +## Exact physical map + +Use the source notation. Q is the central Gaussian, D is the product on the +eight other axes, and R = DQ. W and Z are the specified ordinary maps between +112 main fields and eight mode fields. They satisfy ZW = 14I, WZ = I - C, +RW = WR, and RZ = ZR, with the appropriate domain on each side. Do not commute +W or Z through D or Q separately. + +The source map is + +```text +X = D x - R y + R W h +Y = D y +H = D(h - Z y). +``` + +Its inverse is + +```text +y = D^-1 Y +h = D^-1 H + Z D^-1 Y +x = D^-1 X + Q C D^-1 Y - Q W D^-1 H. +``` + +The first two equations give y and h. Substitution in the X equation gives +the third equation, since C = I - WZ. This derivation retains operator order. +It proves the map is invertible; it does not alone give a native schedule. +The schedule below supplies that missing implementation. The other 400 fields +undergo the inverses of their original autonomous helper maps. + +## Remove the unused center accumulator + +The changed source word has no paid operation on C0. Its live center uses have +this form, in the same chart: + +```text +CLEAR C0 +COPY C0, Ck +ADD Lr, C0, -1 +CLEAR C0 +``` + +Replace the live ADD by `ADD Lr, Ck, -1`. Delete all scalar writes to C0. +Before each replaced center, the old accumulation in C0 is erased without a +read. In total, 176 ADDs, eight COPYs and 24 CLEARs are removed. The eight +source sites and their cache fields are in RESULT.json. One entry CLEAR keeps +the unused C0 field zero under the retained nine-field temporary interface. + +The source interpreter checks every endpoint row, every persistent/cache +exit chart, and every paid call before and after this change. The final chart +of the unused zero C0 field is immaterial; no original field is excluded. + +The remaining word consists of invertible ADDs, nonzero SCALEs, native maps, +paid children, eight initial cache CLEAR/COPY pairs, and eight retags of +identically zero persistent fields. Each retained cache is read but not +changed until the final whole-field swap. + +## Reverse the complete word + +Reverse the physical output boundary first. Clear the nine temporary fields. +Undo each final whole-field swap, including its chart. Apply the inverse cache +normalizer and its inverse scalar. The original persistent mode field is now +zero, while the cache contains the corresponding independent output input. +Apply the inverse output helper basis, then run the reduced native word in +reverse order: + +- Negate an ADD coefficient and invert a nonzero SCALE coefficient. +- Invert a native map and reverse its chart transition. +- Invert a paid child and reverse its chart transition. Keep its rank. +- Reverse a zero retag only after its row is proved zero. +- Replace a cache COPY by subtraction of its restored source field. +- At an initial cache CLEAR, verify that its row is zero and do no operation. + +Finally invert the input helper basis and the physical input boundaries. +All eight inverse COPY operations return their cache rows to zero. Clear +the eight owned cache returns after this check. C0 stays zero. The verifier starts with 641 distinct formal input columns, erases only +owned entry dirt, and checks both compositions against the identity on the +632 original columns. It also checks the inverse endpoint against a separate +closed formula in the source scalar coordinates: + +```text +y = Y +h = H + M^T Y +x = X + (I - M M^T/4) Y - M H/4. +``` + +Here M has 112 rows and eight columns. The source file stores its transpose. +The physical boundary maps convert this formula to the ordered physical +inverse above. All 464 boundary adjoints are checked with both signed +Clifford tableaux and absolute phase. Source adapter and phase annotations +retain their physical interpretation in reverse order; they are not new +scalar row operations. Internal native maps use their actual inverses. + +For a positive rank-r Gaussian child G, `G^-1 = X G`, where X translates the +r active bits. Thus a descending child needs one rank-r positive call and at +most one additional ordinary translation. The verifier checks the exact phase +identity for ranks 1 through 9. Tensoring this identity gives the same result +at every positive fiber width. Scalar coefficients in the owner program are +applied once; the program does not tensor a sum over owners. + +Every other operation is reversed literally. The free-group row proof holds +for each evaluation of the native maps by invertible operators. This proves +the all-width inverse within the inherited native implementation model. +No formal proof kernel or independent human review is claimed. + +## Complete local bill and limits + +Both directions use the paid profile +`{1:2193, 2:412, 3:510, 4:127, 5:40}`: 3,282 child calls and rank mass 5,255. +The 400 autonomous helper jobs retain inverse Gaussian ranks +`{4:28, 7:7, 8:47, 9:318}`. The remaining eight fields are coupled; they get +no autonomous target credit. + +| Explicit operation | Reduced forward | Inverse | +|---|---:|---:| +| ADD | 17,741 | 17,749 | +| SCALE | 1,204 | 1,204 | +| COPY | 8 | 0 | +| CLEAR | 17 | 17 | +| Whole-field SWAP | 8 | 8 | +| Physical boundary monomial maps | 464 | 464 | +| Additional child-inverse translations | 0 | at most 3,282 | + +The CLEAR count includes eight terminal owned clears in each direction. +They act on certified zeros in the exact model. + +The native word's 240 internal warp records remain. Its 448 adapter and ten +phase annotations retain their source semantics. RESULT.json records their +full census. The table does not turn these inherited operations into zero +work and does not give a complete machine/compiler tariff. + +A direct product of scalar operator-norm bounds gives an inverse suffix bound +of `2^18812`. Gaussian and monomial maps have norm one. A local schedule with +m errors of norm at most epsilon therefore has output error at most +`m * 2^18812 * epsilon`. This is a conservative fixed-template bound. +The complete caller, recursive error allocation, movement, storage, compiler, +BIT supplier and outer recovery still need explicit funding. In particular, +unchanged Gaussian counts do not imply unchanged ordinary/compiler costs. + +## Verification and next use + +The registered verifier runs the frozen predecessor replay, reconstructs the +changed word, checks both all-column compositions and the separate inverse +formula, and checks owned cleanup, charts, exact paid counts, boundary phases +and inverse child phases. Mutations of inverse COPY sign, reverse zero-retag +input and boundary phase must fail. + +The next use is one chronological caller that retains useful progress in the +eight mode fields. Its full invoice must include every helper transfer and +all additional queries. A local inverse, a favorable cost estimate or a +finite failed control search does not establish that caller. diff --git a/research/native-coupled-inverse/README.md b/research/native-coupled-inverse/README.md new file mode 100644 index 0000000000..1db6e2d577 --- /dev/null +++ b/research/native-coupled-inverse/README.md @@ -0,0 +1,77 @@ +# Invert the eight-mode coupled native provider + +This package gives an exact native inverse of +[PR #5402](https://github.com/CrocSwap/integer-mult-bounds/pull/5402) at +`3348fccea855082786d5f0fc5558b73d4974e745`. All 632 original input directions +are retained and all nine owned fields return zero. The inverse uses the same +paid profile: `{1:2193,2:412,3:510,4:127,5:40}`. It adds no Gaussian child. + +The construction removes the unused C0 accumulator, reverses the remaining +native operations, and uncomputes the eight retained copies by subtraction. +The complete physical boundary is reversed with its exact phase. Positive +Gaussian implementations of the inverse children need at most 3,282 additional +ordinary bit translations. These operations are explicit costs. + +**This does not increase kappa.** The eight mode outputs remain coupled. +A profitable complete caller, full compiler/precision bill and outer admission +remain open. Reversing a source operation also reverses its D factor; it does +not supply an independent fresh-D call by itself. The selected frontier is +unchanged. + +[PROOF.md](PROOF.md) gives the ordered physical inverse, all-width argument, +chronological schedule and local bill. [RESULT.json](RESULT.json) records the +exact replay receipt. The verifier runs the pinned predecessor replay, checks +both compositions on all original columns, checks a separate inverse formula, +and rejects changes to COPY sign, zero-retag input and boundary phase. +It checks 464 boundary adjoints and the phase-correct inverse-child identity +for ranks 1 through 9. No independent human or formal-kernel review is claimed. + +## Reproduce + +Python 3.12 and its standard library suffice, from the repository root: + +```sh +python3.12 -B scripts/research_package.py --package research/native-coupled-inverse +python3.12 -I -O -B research/native-coupled-inverse/verify.py +python3.12 -B scripts/check_research_commit.py --package research/native-coupled-inverse --check-source-history +``` + +Expected final token: `PASS_SAME_PAID_NATIVE_TWO_SIDED_INVERSE`. +The default verifier is read-only. `--emit` writes RESULT.json for authors. +[VALIDATION.md](VALIDATION.md) records executed checks and unrun obligations. + +## Sources and credit + +Dillon supplies the coupled provider, its all-input basis and physical boundary +in [PR #5402](https://github.com/CrocSwap/integer-mult-bounds/pull/5402). +The [source proof](https://github.com/CrocSwap/integer-mult-bounds/blob/3348fccea855082786d5f0fc5558b73d4974e745/research/native-rank8-helper-provider/PROOF.md) +and [attribution](https://github.com/CrocSwap/integer-mult-bounds/blob/3348fccea855082786d5f0fc5558b73d4974e745/research/native-rank8-helper-provider/ATTRIBUTION.md) +remain part of the review. SOURCE.zip contains the exact source files needed +to replay that pending construction without a network or an unmerged Git +object. ORIGINS.json records their source paths, Git blobs and byte hashes. +The archive retains the original README, proof and attribution. It is unpacked +only to a private temporary directory. No predecessor code is changed. + +Ali Romman's [PR #5383](https://github.com/CrocSwap/integer-mult-bounds/pull/5383) +supplies the eight cached-center identities consumed by that provider. +Cao Yifan supplies the actual native word, Dugongue supplies the center-free +code, and Cinna Davis supplies the retained-cache/helper/controller lineage. +Retain zxv's native and Clifford work, Jacob Alan Sussman's mixed-target +recursion, Ryanson Jonathan's controller checks and the full source notices. +Yiyang's [PR #4966](https://github.com/CrocSwap/integer-mult-bounds/pull/4966) +already constructs owned-center inverses for the original word by recomputation. +This result uses the new retained-cache interface and its eight zero outputs; +it does not claim the first native inverse or the general idea of uncomputation. + +Canonical base: `1ec1119972c9aefe42525172d07b332fcff81cb4`, priority revision 7. +The [caller claim](https://github.com/CrocSwap/integer-mult-bounds/discussions/4930#discussioncomment-19156336) +takes Dillon's released handoff. The broader breakthrough goal is not complete. +New inverse construction, proof and checks prepared for Ali Romman with +substantial OpenAI Codex assistance. No subagents. Apache-2.0. + +## Open next questions + +Use the exact inverse to close one chronological caller that preserves useful +progress in the eight mode fields. First give every original endpoint and the +full paid/ordinary invoice. Only then run compiler, precision and outer +admission. [TASK.json](TASK.json) records this question and its open obligations. diff --git a/research/native-coupled-inverse/RESULT.json b/research/native-coupled-inverse/RESULT.json new file mode 100644 index 0000000000..97da48b662 --- /dev/null +++ b/research/native-coupled-inverse/RESULT.json @@ -0,0 +1,130 @@ +{ + "status": "PASS_SAME_PAID_NATIVE_TWO_SIDED_INVERSE", + "source_pr": 5402, + "source_head": "3348fccea855082786d5f0fc5558b73d4974e745", + "independent_original_columns": 632, + "owned_outputs_zero": 9, + "paid": { + "1": 2193, + "2": 412, + "3": 510, + "4": 127, + "5": 40 + }, + "removed_dead_C0_records": { + "clear": 24, + "add": 176, + "copy": 8 + }, + "live_cache_substitutions": [ + [ + 11350, + [ + "C", + 1 + ] + ], + [ + 11377, + [ + "C", + 2 + ] + ], + [ + 11404, + [ + "C", + 3 + ] + ], + [ + 11431, + [ + "C", + 4 + ] + ], + [ + 11458, + [ + "C", + 5 + ] + ], + [ + 11485, + [ + "C", + 6 + ] + ], + [ + 11512, + [ + "C", + 7 + ] + ], + [ + 11539, + [ + "C", + 8 + ] + ] + ], + "inverse_copy_uncomputations": [ + 640, + 639, + 638, + 637, + 636, + 635, + 634, + 633 + ], + "inherited_record_types": { + "phase": 10, + "warp": 240, + "scalar": 17485, + "adapter": 448, + "climb": 3282, + "zero_retag": 8 + }, + "boundary_adjoint_checks": 464, + "inverse_child_ranks_checked": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ], + "ordinary_forward": { + "add": 17741, + "scale": 1204, + "clear": 17, + "copy": 8, + "swap": 8, + "monomial": 464 + }, + "ordinary_inverse": { + "add": 17749, + "scale": 1204, + "clear": 17, + "swap": 8, + "monomial": 464, + "child_inverse_translation": 3282 + }, + "inverse_local_amplification_power2_bound": 18812, + "failure_controls": [ + "wrong inverse COPY sign rejected", + "nonzero reverse retag rejected", + "same-tableau inverse phase error rejected" + ], + "scope": "All-width native inverse of the coupled provider; no autonomous credit for the coupled outputs, complete caller, full precision/compiler bill or new kappa." +} diff --git a/research/native-coupled-inverse/SOURCE.zip b/research/native-coupled-inverse/SOURCE.zip new file mode 100644 index 0000000000000000000000000000000000000000..3b54e49e0bbc988179363cfa63d5505705f5caed GIT binary patch literal 123969 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%0D2LRKTN zRClOob4;Kb04Vx!a(K_d9`Iq>e>X^RrY{~uW@T2m#*K}fFS(K?1pkHxpIxn+K_du!hUEY0q5pNi{a-5 z)b1GEmU+LC(vf)2R$Pd*+~$WTT=U`zvoUq+`9r6=O;9%%#FcHKX-BjoL3_LH(^>Y7 z*9Y4`uCXwr2yvIOz+st6H{5lvZY&>1Uu~uQR$7k9*iJ$O_16jJKxnRIe8Dp|)&ceJ zpHi$j13o#RA6y@gZ^9*O#fMt-^P;D&iRPjFsw#W}AmpX7RB3`eKNS8dZ-+%ZSD29g z*|M2KNpfAqhk0rGWV+a$xtkBQKK5ZQCY3dGtzl^tiqIL@>BPyphJJ?1`r2t7E8c{pfyJuL&ML~#dl})D zvn}UDo@~in!k(Z1aJ`@7Q{k%+aJRbwF?9NWo-oc4RkJ(lchs5x(ug9~@GwYAbo35c z^5Gj_ih~v7R%zyi&EVNnyDQS+v;*>+d#mqiq%9oN78h7l$I}j*RfrMiYzaBcxj#3K zBfejym(X?9xt`rax$_`EyWox%8ujI9zJm}`(~x^B!3A`6W!@}E@=X4&25x}I=^K1! zI#^w}t;w~Ti9}eY_cdgP^!;>h%}5zJ!u#Vms4u^2pEu#V{KPMLCv@I`B7!m)B$ z(Xe+NH^kCf2dfX>^U9k^34ptl(X%1wnW6}mz7+NJ)VIdDZ=U7SL4#zvNpf*=d8OkR zwe(oGleYK}Rh3Hq76=ZcjyESDYwlUDT!p$vR&%(i0cDmy6WVvBX+dfPv5*+c@esl7 ztnAbb7)lcI8kQW^{UW8_J5XyX?T~#a>x>gp;zDA)Bi#N$=s*yqVfqxC<*Yl)@Pt0K z_WLCW93n-zFQhSsi#nF}kwR@xuxm*9P>>f?>6GoO4cjdR`0h5%kxA<|2R%sbkFPz3 z^v++CG1}DMeQOhk@p?Or`tqR8rI|vxNx{0)|Nf?3iR!y|cXN1XUBNV&n8k4A)+A1> zjsd0sXovdOX{NlX6|tQPs=flolC+`%m)Vpl3}$Yd_j)6rjG!;bp}4}av0>@EL?XP@ zHAECme9VpZIP|V7R!CCsMYeX!M^cc&izI2Xf@zWR5-zvthmcfTXSmuDU(V*=T}1W= zQ|fA)d3EDr8oy(nC|&-vNdkVD6YHjyMVmoin08NdJmcTq@$Y>2luw5frxD$HAmu|6 z=Ij!v69joHYjiF~I`(;i!!H+!4#fsObrHMCEl})a!L|LJ(4AZL;tfZScyaYI+2hOJ z08w=Elw>PP1i{WgUcf`^43$ehl{&tN#hg2~myjL#{MhHq!=!j0Zl;}ANRLKb8!RLD zJ4>g*FzWTC;NMPnT zY{X--A2zNg%hVAt1GfdxWl+U0B$$MQiK@ejJ$K`pyAy9rd5S|%rJYCguBKitUjAD` z#9lQl{GQIa6N?$Ozx2A>Q`5p?4QLxK{6~@tS=3g4SB@?@xqPdC)qJ!14uR+lc!nt&lfxNZw;r_KKD$ z(2fbE$@djp6<%;fUZK5zKv7O4k10786I7y~2#~JMFC?d^V$?8`s9J+V?lG%88~eq6 ze3=S_UK1(9;X*R#WQu!JSv6|}du2-KgYwy1TjAU%-z8&B%TQE|@Sj$@-lp&&8Bi3$ zD6srtpraPBb1z-PC(Pje*X(vjX&29f0Zs-OFC0nO<(zBSBRO!l$f-Y0OZbr}?2Blc zUuD>z)v*4fBS`~<`2PVsK*PV2nQMqEO8Z*5gA;X&V6A`^!{=UHDU628w3J7|jfm^E zy8AXlaPAeH`ILJJ6;_OdmB{>~cte>*$us4Wf+fQ!wh|YbV)>4P&Yu!xgRY;y%gT;V z32W#asQ$f>Rwz|R(0Iy%QmL+(aGiybTmpV;M%Yfw;nB3!PUkB+=05j`CDVM|xn&;U|LnyNIwlQ%|KUV z6jVz6|E`tj`n@k0hfqL!Q&N(O->o&^hxQwaX@kbv?uf zZmaw%WC8sT=1s*>UTZ2S7Xg#Sr#SuNjlL*39BTL(8TpdH%vKzgwx*uSMO=|ZrJTp7 zoc|}`HmLu=|HuF8XjZi_sNn)KqR(5VQzt;irSL?Uuw}vdy&wKDWarGI>RX3Nvz%qf zR*}*E4}Bg!IHTsWrrS*dYf2J#?pSn&b&Z&BAuH0Gs+-qiH7jkbd`CyVJ3cxKoXt>% zS4Ao6fhDEdI=My271Hc`PTtlXy}1Zd2)SmM6q}E5KTRMxMc)P5J*G8H&n&>>#YQX5 zP92ZS0G65s_+RaMo)ZZRxY{+szLmeLXdtdj<8gICD$ym~?(iEL6kNnoETUS+SFpA3 z2B}q~a|WyPP9ZpM91MrAEqnpDJ{8XbHs;Pfa2Ys*mp9+H2B$)sqp0^`vLPB;M>~fK z#-B}202EF5BCmdF3dG^rM=uxWvbdMR!u-)o_TU_D)ab(_j+#Nq1wa|7cNR@S) z=18B=eMV^`dzeZVYHp@kb`c|GLqM|W(;Nc}RvzA-^MIzXnCHqJ-K>Rk=?%JwduUd` z;_d6ZxcV=b=L7cuMhr#a#;rib_Y=crQP5MwBbTkTdtaN0E1n{1UbbSqc-@;8dn!!f zRfig ztgaE+xn>I*sCYw~?#U(n%qAd}{3b_*NT0$tXjJi*md9TR7}tk)a-VYCc$Qs|(DXB5 zjXITfrp2t>(FS#gaM%7a?fXr_?TXjPLcUX*`LE!Tl&a)n!f(tejL2X%lvG0TbBtJx zO;2Le$NTw*c6nA^W!p%3WA3~ZeyO;gNJcupG^E9;2SS5a8Zpb86MHF zR&1A*)W^$Pt`X=HjsS;>7lHqf!d6_HKXikxIHVaDw2BI{5cLsg5f*gxx*^!l(FCN=4rr-70C{^ zhSE;S%%2nC+qEm+9MLrE6niJp4L+qA@tO-ydqH^R2~e4Y`#jr@mcOV<#4pdq?@u#) zj}z@(`m@AQXVkxstN>zsurN7$RHzE^Bc^)G=Dg6S7XX8MX3upqWJubwe3rB<+e}O4 z7x2A8%S|<))7v?39Rtb07w~cyY>KKDA1x!CpduT$cMZp$NGVuyt%&~v5Q4-(s&beP zW_dkF2A>>hufFM+q1m$o44x0Oi~gQ1Acs@Z(~E}<6A3Z@}A(H{160o&vGi; zsHIz=<()j{p;Yn~%)7j^7qJX367&gBn5D}gJ?9pn^5!3=z#i}?u-`o$3Jsl+L2|}y{@DNs0YI>OL5ZctwcWi#ky(5R`l@Tqy}VuuGS7|Z zFF!1pL)9jwj5MII1emHYa9Aw7B15DxO(%_WgF}L`S?a_;xd8T*VmZG8!m!h3k5lU> z(H`y5n_b&158}S;+_y*qp=L&Bv&U*}@eOT8C&JOa->Boox?HJK0ypfP(TpC;$5pE= zGRAJuF5@dplyb{Vcg>GG?t#T?6Z5l9qd#)*nztM#CKH{|9!ops8$J4U@K32T_CL%w zs`cwEJ~6|uSaX_{im`<|vGsGK#D1C+I}?*XIpoTFM{nM5seGR&SGfG$Jc5vzpMp7q zG*>wWjrz!qBFAhpACMSgxgI~F9D{vuAXQ>n4hlN{+vlNMl!yCB5 zxR--UhiMW;*U`>ja{mu#o6QrE7CMZJu0P5>$ztM!9d7gv_tzNcc}u#UO*gM;nE*as zN;?B%d;>R{+zM{3d~?!Y~4gD>1?RJr^C48y&(7u#1U!KTDp8 z^29EFDRie)x>Jq`6(Sl7HK3j8-Mw4|6FYaA!FIc2o0j9&C~{P_s_H5i3{L3|y%c-qkV!Kgu;X9$keI}dCNP#$$kman|FB}JB; zRQ|`*f1qe8M5F_hK*c~TDUAUX+e~<|n5DLArk|tOkfeG6zy*4?5?N$Lcnpk)3rc5i z>kN|%!pY$UzvJ<(=*2M6PEOTbDu&@j33efn&r^m)J1@2M;t`+&ROeC4h|`&ifnxM` z83Hr`&F|nQk<+C}K>#e7(`bMzV#`<2V859ld-#EF@C9w}{r8xR!MkjM(!iHi+WV=- zc}HdF%sc_VtrJb4RcS{vJ%qioc9ct!xAYu8C*7Mr+0l7 z-<|bkkJ0z}_f`C#luA(CPm|A(m>37HBcs8rkP#6|C5$&?!BOf*k#bpF_g{YdE~cEq zwJ~a~xXY}>={&?jht-dwPGwm!UQ=;I_$U(Xrh_@Baunrt5vvnl7}<`6&IVI}iGD$d zb+cjln#nZmTY%yX33|EeX&{wQ!f8aN&-8spjnbEI=tS%v%PDYU?VpBvSaPVkPdf zf7ZAR($G+5RCDraFXt8}g=S=&!GK$i$jSG|`U>mw*aqp5dJ!$by^)t`=ha2rZ$@(m zCWzi~If2m=pjs1^AF!ri+BwN4>p8=b%1}^-bFSU~$;aS6IaQ6gd%P{;60wj`6jo`_ zhmtzNzTCJ7R@Y%5=qIvJj>0~~(q^)*pQu{Jqsk&N2A{+SHrf6OoRuA9mDkmaHFInF zt-#$RF^j(B2Mkh%E`Ve{B7>Duy`oO{tp%!QABhaOT3tAhBjM(9>0l)_sv|?5J-~!d z#fP5gn9nm?#uJ$UDSccZlB?VF)p-A^VV?aMT11}1S@|&;4bQ`2xdYXH>_Yd1QGMS~ z426i<)a50uaV@KCnB^RZbNpxQsO`Wil$MAlzz!Iq4Ir<07Y)$cx_zLx(Dy=W- zqq3@>b9z||)UJJB*_vuca%)Fd;PPwEDy=|Kx9k+IN(MxI@xh2qEs9SrQnof!T3^*i z-L4)>vWR3qrm9|g%_#V%Q@rSCU&IYcmJ0RPue1#WNU5cBghZET^^MxIA+(v7aBfGA z({B*U#W*ISL`GnpW{ZIv%d57Mkmj?>L}#t#9tWI74D($I#> zQ(vUXpyf3|#a#NcuJhoqBWHoP-LEBo zEx9K9x$wAcVoGK1*M8Z)s%cJT_LCzGBA^Vk_DhofIAY9!s7a=mODx|@yY~|gid4wM z(66T{)8J=XMmAAX3PKS^-V`IEiEwcIS7*&LYhmni-=6?bAa8Bqf{PCfdP&0uxhG@A zB}xxCiZy}8JV6|2HnliSl)Nc&tJEAFF{(3|z-3^5?-f9D^f~hR9mP>|tkRf2#i5=% zkPfaiLq$z4Ba)z~X=tE~e@PkklhWH`(6~Qf7&6k;OPjyI_BJP1nf*{CYOCzo+4lS_ z2aPa*3q5MqdtvjB;50{*Ombnuq!D=$n5E+0JHikjAxjKhuSz|OUxo$*Qp6kOpmrKz zM_gP}^*ajgKu;OV(Lz`)3^GnWscg$ng;$~EXOP?%R6$SLn@0p(LZcaWussBYZ3O_^ z?}xM&sLz9~LvVQWo1##lt#Jyb?eyp?S(L|;i@$x#u-CUWl6 zp(dyC?P!L!P1$F(+N(fQdG9){h;_^C3;nTQXd*y^9!T!DL(GLVBb>nUk;{NDj7Y-{ zohQAt%H!`MK_)u{^d>yz(#Az5B+|NNZVYx8DMKXRlt+fD9x9DIyINuUM*rQsxQ0IF z;+tDo?}8V#wmmgFh@~?645;{`&4rvXQ74)}fDaO6QG&!%agOCFvWZ-(&g~;;!@|mD zVSyUCMH%*}4aD{1#X&k@qEYX6C6Dw!QXQ}2TXq*bT1{6us0p1$bSX@-kJ7?h$0zlx z-eh`Ca#05>#vKn*WEVJ9EsIdv2b)r6Xc6aJ!_5LNm7(iKaZU@8srWB47t<(tCFwsmP2mbPqAb%%d_cyw0(2p3U_gJRaIRZ`$hZl z#x%#+IQ8e?U17zZ*ZB$Bem%R}O*Y(386rPbQOR-HcQXy24%nS9c`f5Oql02GG{3xO z=@6jgFMNK$g^6SJ98$*)^je7MTtUr?s@G}8oPOuq2ARioM8uXAEV*7MtWa$feI>P{ zDaG^a^B2!|N4j+3%hOwwEF?^ln+wnWiHmn}DqKToe@}3<@*}cEv5?O?UEd_4Pv@3M zHoBvIrf>1M#%n+u;mHLGl>;buQ=(|14F`DLhFjIPEOV_FP;a=ZSU*SB9oKs4CrK&f z7)sOiB7!wQG=D%&3gV@+vqBrrNTdztZyD@G!N?R3XBpo+FH`*bs^YnjU@wnLUNGwP zE$kK{CtK@Fd}34>S6i>3*Bs9bn=B%NZEz?lPc9_oD6JxfB076|@NfaLs}M+BeSUf{ zZ62-%;d{sTfS18`mH4`+1blcO^W$5|{Ko)0$AgC>g&FXwzN`XPx#ndFRdEkyrUgY! z@H8s^yq#mkLuHi_*Ba+og4@Dr^TFYgMTR@!E{`Q&mSo)@ciMi8^wcXU7WDp)-u`O7 zermpp`Cb$wD$D_zfmNjD;5FfA6QmW7ERhArb#YTxQ*WeLbO=1^%|*b3-TfLQ9lG)v zmiy(8$R}IKCtLqRc*@O7`z39bKmI1=&279R4d$?T=H=t(hi8N@U9bCF$skG5WJV2> zO$=MCMXCy|RVBIM0;Qb^bsxJsa6m3}Q_pUu-;FmfU0%Mx+3 z>4Otxv@2@2@2w;T*f{m)8=d-8kj5h`jdB_=YWgyU+4mA-a#;b zzgH;75b^_8eBjxu7??;Dw|JnWl))>6=AYBT6|bz&$59W}2uY?Mzzc;|z76z5OijAj zQJvFxNdLH{t-GIY4Z;(7nf;5hD>;N%OXLnqawIGm&N-g*HzL|4mOrWrciiYGEim$6 z;;|Ny6%W+mPpzh%Jok#Q;N9b2EZL*VBVkkr5^!77`Dj!=LUHMj z^dhGwgUsi;*dx`?2NQKqc7CIK;i$fBmEUvtuE6NJ2jQM1`r`b7kCj@(YZsE9md$Yr3Z14+`iIW-}j$$nMG*FJPzH@cQqZr!_m&nxZcMuRV|`%`20b%SeZ z+&Gxlz$+^JFWfH|5I8f}c4@&Xen9x%i|cN@`105rlM!hGc)^P8$8*c~b+qRYfpebt zOAAo;%M!xD{Yp~O>`VO<5(ptbAvL&>wAb!!*$W*c!B72%eD-n;tt5Ns$K|L!wcUIs zVikM_Iyz#f{Q_Ei`sNf^P0o-0SbfU>;(M^h&lc=^@2#8@XA=)WKnh@ka zB^MuiJWm>o*5%48r_?g8p(1fm+Ywq=o@GD@sAyczrU?y4qn&_Rx z1zYN=Ju{`NM~pRE`Va!J=p8FBs#V2C`H?N8k5Rx*jP`+%jarxvq3e2EC{6~u`H>(` zlsx;X78JLFC^H-#3@7S~sGja-(63wI^I-;~wx8-j#^9$6&}d3KIPNuvDC20+JaWG;Z1V%}$7zpcj!dMc5&ji=vE|&2+$(9YWEpJ4G9CPkU_RZ;jt6Rp z<#{e2s3xUbi;n8@t}_+c14KE`v~&sHc${6qFvt3nCij;w1!Qg=YPrlGbb8^6Cs?6C z5wJ1!3w(9ar8erj*O(1Vt2_cTZs_`@742*QTwhd7JO2hC>40!uQr|-8>?8fjV}`C@ zTLmW!8dG6~&PQv5k-^qEipI6A40e85>p<>sL0qYYaH#Z=dBh{M-|E_;49H*)acJ*) z;gR4(VIwKZf7Q#qvloQtI+s$w`lXKGM-19z6*x}OKqqH$q%}Mfr9kqA#A5EX_#75+?r-4C zBIn`g$9>>T=c2l=qNF-3EI$9E7-AW00j7h6#!YFKO%%%}xo?1)OsH_9F{P6M8ssuT zxWylJi=R6A`Ot3{;3= zDCn<<7txV@9;nD6RM z?Ik7p=pncr5E+*whY&SmEtXDx{0MI9zq@YB{mP)Ib^KNtGBm*R{D2dOI2u4&sGq64 z#Jq)Ftdx~D$_V9Il<9lMCOA$>(Xpf6BSZlCUYuVo(5PU@CHfJf)paJ+MC`iCi-;}* zO1Js!p@zZ&OUlb1=i&bzhKyS8s`zTF-Ki6Mk`t#TmgJygv<;Mh3tv)H05m#|Kng<{ekJ8K)W{ zxmMAA!oVEkbA-$4K5LMrbB>Z-sU7f`{N6{s=1^Gvj4mJsAcK2`bc&emI(Doa}K30;NcA4NclYgcl%S=V?Fu_CP6|JOvbOw#;{6j&q($KFfs9b$y#Yo9V|XxM(qhW9d3 zSKpTCSZ->)?8XF83lU8xQSr~s0(?_xIqOZLNyk(MgYuydIduV*_O{g4{HMB@KT~FV zSAk?R0=~xq87-qS8BB2)kZ=TY4OYrP^Fk_&yV8_rrwAqhRZ+SI$4U~;&`J2J+J@Yh zpX-q#qn1|j6vF*QaZR13GU5>}%*#*k|Hd*_I}Np$le(xUNSxEpmaP#olCP<60-1P} z{}%OD*y&jk^5u}cgE3RKt8=LK3>lux+U6pOJbWY z@awGq^wq_Y1Sx|p5A67gCAQXUjx`N{%6A@paFDU)la(?E@?hp-wWq3{FL|rXdoN<+ zr3^|uu>LEGp-{mst50yCkrVgZ5dO`wPiEg#1z8FBf0F-y3v3S++(di|bLxY(vlkl6 z#_xws$HG|hIBH06B zfyL0JvkV8I%B-HY)ajU_frl~TXy{QXn%arM9OJT{daW=%o7%^nxWa9K5iYfNxBfe) zCfK!xv!j>PyU5->uMp#=dbxXqeYB5v91gmuwjCgOw6@Xdp*s`N;_&&yEi9v|K&~HN znHLG2E@q8xa0ryH@`@GJs*q`NX~7Ht_wpp(*1hI|L<>^n?eU;`i92^5B&Wx_r!&J~ zP3+T8s@dwa0yfc?xAJtt3I*Y6r$SBT8#BW$#BZZxASEiZ0?UM(@-i4d9cVn*5C>t{ zc2%SFz*ERmM+2p=!Ht$7ZxGzVa-?3GID4B*T*F|a$GGTN_M3arE>o%kt)|j`H?)zZp@OZS zrLY4h&1j*5qRV$v5&KJELXW}!n(T;u38~Y5M;fazbF$EJJ#L=uVRLxWwPehkpxV_n z+{6d=#%6B(HU-EJn$>n;<}%H(3&hW*wEWjl*KH$NQZG`d3OtR5X-A8=)k&OmXxW4d zA=JV}j5Lr=`)7u|spB5gNq)^#E@yorfjc=<9ib73-|TH3J+RO5~y z>~;`Y%h(j2iJ)eU5VM57bL?f0z1FduB0$W=R3Tl!?mqDDcZn`gmWshqpb0^_Cb$45 zBwF8P4#V=J1=$;h8jD$P|io zx~*Vj`_93R5oEBEvvl?FlRBOjWKe~#wc>Xumxza}tJfloeJ>6C+@WK#vp1*LPiF~A zboi^H4HDbygLt}NbMFJT2JYEa4cZ`v5bjJIcFg+o0B?PrZkYYhMGGK*k-`&#P zA+hE>-@f8Ho^bo2!XAtu|rG=1n)HG{(Z< z+pUO?l3h4?EIE-zIH}wqAStyiV)0U9C{NmE+!G6<;;+T*;A>1di-9SzrVD(@6g4)h z`)pF3059f$#v@!*2StYM5h1FB@L$mfE9YNU8>}tZy_kZ@1S7Uv{~1lay$0J>_n@lV zgCpAj#rHsuB}&zsyJ(=2i$pwRvM(@^A~%X-A|eS7oQMMwUATKr3}K0QaGS&DNWb3j zr>gGrR$k+s+|qh*gFBppH13D;E7wUM+-l?>_L^TxZH0!;OC_Z@iu`nC&B~X`T(JyG zkD_6VBHJ~}3T+q-t>8bEje0ef0$elisb}3qk`po6FW4&aTLP^6B8e%Q245@oZh$j0j z4ULe*&=j(C<}<1yE&@$F>YY8t$Q<)VQ#FyIPT!z49|t3zR&pjHR2osdDVV(fy{8XydPY_?d4U0gk$;k^;L3-znwVsE#rC)FD6*aLR-@VkIWh@;aDk zn5jFM87NND+NHI)0UDNJ>^bg^B35FSo^-!&pIN^_^#ig3F&SsgFA zTj`>uYTWbuRzvmTd(ACqX2nUb{)zh><+5Ke`t(`%c{A2jfIFj&$>U>G5?i}k&cdsv zS@F6_W=9&N%zo05K>ZF}qrCvOQiy|(Sp&5{73(S@xUs$#Cc{yN$g|qQY((E>`H)c8 zhc)mXrB2_F#hz?R#D39YW~Wl8P6+K+4@KsbRo%CXL|zkzE`O@)?HOD%M|+NjLm#;F zollMPQzeuXqG~^8wtUa`76`RvUj05W)EpQ+r*pYG0smMbEKrj?Z#0 z6S2pV|CF_LzV-h|+xy2liAClbDYKuY`)98C|C1d1EciJ8@&A!XEY)G|S5|vcM%PP-Ml8DPrz#R z7Odt1)q|>M%}^vc=OIP)NOr2gGcr>_%xuz|!ZyTO%W+kOM)g2r-Ui!0P>X(tTNxyN z5tuXtt&J%4%TWK$VF(n*lrEO3Yn>!JrqdnVvMO68U;!Gr47XBRn?C9)s~s&;rK}Xp zK+CA1Ks>tOP)#UC zT}K<=8ZQ*#@Q%G8XdBEMDo<;ggMU3dyebsI9bHY%j<(iN9WU8t6Ss-h&tRBy(IV)w z%zSB+2Mgh^&pRwYsGwmv#$Hs#&s8(-4D+F4^;VE6#BWhQe)V}O%`!e;@1ya^;FaWp zSDaSC=W2p)o}HEl?~bL8p98n~-oUkJq%7LR<&!>}!3J=QGk~h3iWuwC#{w_ za?wSvM$KD>0NlxieJP`;h?j69DzL^x28X))7FAHjT9I^CAU0)mc;y4J9Zq1jEyVBI zT2m;8E;XHq5UI)ijOJc$z;XG3+tTEQ1c62coMrPMQe<@`n_5D7n({g%s32v$E&E)p zjkwjBwhzP@A-pk|40AFdfk8c^9S2!Blfd{>{$xG z<^De%vCmTehySPlQ#9xTY5V+X``I`5vm2TP8vl{gzyEt{##?e3+8SYWrgYqtmwVej z+9j^q0DU13p`VXcSPf1G72C&I>6Sv}G;{)X@_cOyi4U&RO#cT6GQudJrw_gCo>Jsxc2bu^lZV-MdfM8IY zv3GM?8kk+`r?iilcdY7`1=?Mr4_wAn<FkaFynF%?p%{S*0U|*<+!JSPny!LUXmsOJ#GJ9|fOS!0r z5f4vKXOBe#K&Nd#tY}6GPw7=;VBq2Dz{F1nKS+FvgMCYCsLfdF;t%NHXFPF$1kF3q zbj0N5cp4|#M@Z>}iG#;J+@8kUoIxxnK);xvh7yPcy9m{9K)bb*cs82_1vk z+o?G;bWmDDI@b}sLU^0LRcJQD;GUC5NWF$LyR3MqW;Ww3U zqo~~Jo}XG^bqT9r#~MOJjRpxW)trtIJQJ{UPB$l&mZGr*UOG1LxV{n0@In$n+CUnmwn)jEmPNAN)r>!xZRaT*dr^hP8M=PEh?cG<7y1_**X2 z^T}aCUbw6dn=hLa@X9xCHQ||C6L1aJ8l^PfLryDTE2L+$(#jVUz|duM{(%cY6Cjhf z{8C@WnL;isSb6!KsnYR5i{i?$)!HbI>r|fK&}lqgmj`70sI6BHFK>4BOWguoQdmRG z+BP!OaPY}8r*gd19^Bf7J3vzDqaNzmXQW+`$Ut7K3l`$DFb?prx$EV%SSLEVGa7! zi0r3gP}6lMSG1rs_A2as{TM2R2okdOxNl>-o>j9|al? zUWo{EH$+YT;FRZ(D4O8C->p<T8nz596jW&Yu=#<&Y70Tv88)4=xWPA52`?-K%uL$+X<|<^s zU--NItL*Pnfah0FI5s||Yutgid-0uLeIP(vd1rO6d#bn8smA37!ROF2bNjv3<)$e* z&1o^yj>5`V`F25(75A5Apy6sH$J0&ErWbJI&O7IUc48ucBw+TI@T2qZ=pV08vPSx% zFXN0vbJVFf_a)-l+CY;hP?93>B%@3H6KMsS+Oe$IAO7zz4bSv36CaFbP&ZcSWYy-L zmHDKN6>-w{;O2zDK3^R5q$n%)VIL#U|*w%LO7p2L97g-YMka6 zn@RgFX0uQWz3Nr)>>M<;T2$i!itjA|ly}arNOL}{AhI03e8!TI#8-77X0toF%=I$4 zK*kBGhs6;l$ggQrs@y}+aFzQ{JAPoiSN!j~eD=+sG*yAej!KU!R~O zFEBpxjRVv-j}HJ$W&G%Y!a`Kz1qaKa0`*AYb4CtE`BS)C<}AOtKZ`^96z+Ak)A7k= z#Ln4IsjT(fkk#=^a?5yX4ex!g2}^Oly{Q5;-g?wa|6sWvNGVbs*G_Z0H?rt}?L6JtUL~E1i9b)NT!L5+bKdWfjKAT>a&hdon0|8!aDx}DDE!;O`$Okgh-J#it#MuI z&S7d2a1Fin9lUke9j2BY?^JOH($MaFw3wE^=F@_@?HE|7(JFk)ZJ8BG-Hj9$zWDDs zN0&W9(XLBNH8MY@lR-}g)dnL$7F_>cpEc6;+CUthb|^pYM}!=!ReyA0Dw4D{foCdb zaN)<)N;x#ycG2@FFCPK_bz}NwXoLJ$)IIK#1K?XMrw#S>PQR?xxEA9hdTJW~rkS8@ z%P1u3c#B*U`vnh>v5FY}ck^Xd2BhH+WkTV8Dz2n{)Oe?CeGBv(w=2pJvZG%of_fM;?L`UjJkICHQVP zSfLJ_(9Oc^NZmhEq}oiRnk6CO6v)XUh)4#+JdFjQoB0SQ($m|=GZ)~0vt598@qQ$@ ztJj*(Xp1w1LzB7%jkl$yH*I@*G0bm@G(EREGeYM+x@YDcq|roD7TYlb+6GDXN1Oi> zc&^4KlAD)LHJOh|& zIoa$=zebMoAax7+T1V(pxCXg@g4|C~u@-M6guR9^tTtGB5loT{#{|%)pf~KbXt>Sn7kQySD zU6*ZJewJg`wFf6|P&ah!-`Vy@%Pz_k*7QLg((n@oq?_VP&H8w(prR*s5h#$fa8XIn zA;ABgHp<1D*whF0PQw?ellsM@KMb9@0Z%V-5%CZ-2=KP!%YfdZXg&I0tgfDjqBX|~+=NuO4yjDeo zTPZNBTzUQ%=1Ged|B0(D3XvpS3OR z`&bccc1J`1lVbh<%l}8HTL;Avc3;8??ykYzA-KD{6N0$t&k7Y{OHvarq93ph$2?B*^3LMXhR+4{uRfG4Z3K`A47kj+&uHLzvTWN5V}LRxxc2z{1iI z)#P9Nd^naVIKR*1ESaBo9W{G<=;YIcs%p0AZfdRoa z&)lWKGmLqYlL`P9y4=ga>#5t~l@1N7 z<}V=(AKCq^JAg}abG!;s;VYcVP|Qb>Oi0QgrD7FF(iW=h!KCDoRSqHLZ6o!56nQ=a z%NpoRkT;gRhvktTyC7%oN>Y37OyF0cDg_dlrrpP!a_|h}T#!Gu7Wf=@CNKz7MT`*? zQMxB)uHg;!9FZ@#B++jw)cNqr^q)~ zII7{-VEH~(oa#OkKX>OKT}6y=I25PEFNp9ekxSEI&4@0q-U=J3`3B&qQ{ign?6J5e z64v#KAOP@|j?ZiAh+OOJ+#3j7_k^-d3SFsiE!QKQo$8|88fY96VHcDcvd{a9dH$9v z_|Vd3)lZ38lF9HYYr)ZREoc2y5nPu>=o!Y?wTN_N>*vZaQt}0yn}|4Jm^-rha%XmC z+nh;-%DAIlII>0YL?Usou=8Z(OJgZWe&^zs+Kbqmzaf6!`4>is8?)fH0Pv7eDUK;H zbXmGTK%uP1f8nX}rM!TzfRK7f5-r9nK(vK$3&k#s;QM3*p~_ZXGRaAxQA{8hmGHj+ zy&&f;gO03&;Nm?M29yf#aDswbvK%_{4g&53DgqHQ;&W1P6(RL82KBL+lL(LW0FeCt zCpHfZjSGs(o|IwylQX=Je}}J)0Rx*-WvlRpDBd1_gD~xUOiYF5fW+NZ5Z@RFM_me0 zp~gCK<1tjJI_JN$x3#6AAEx;P(>?p+Aqu3coL@VGDMpD?E(aujz!{UtrV3ka$Ha(X zVy#GzlGiq()!-CPY%EE28^w!w^NyK;8FI5Jsdv^U00)Ro9|t5fxZrbsMzsqtl=T)? zyRn?f)W!>!Juo=HLJ70KWAVhFiq(ZU3YERZNFc#UkU>KR&AsB4oNp3OM#Vz?pejgE z4Vf0YG5IOt2ab7#R}#NzLF~n%WZEg53r|q^6?EoN*WI(y5hyi^^ei#(yTDC3Rso8Z zit7u^STxkfOG>UU;iL35L1uDuEFweZKUqQw0^=uz)Zrw-N%E$LP$!7l5hcNy^8#hQ z#7YUr1kp{<<)d7M*DH|ykD$ucdQT1P9 zJ-wMd0tc6VfIKy9r&1(?3rn0E3%gr9QVKS`v3VfY7q!G~c z`dQPFBL@Q)k04tt&avW>xJSgYnjn=lY0q{A5^IDg+HnQBge|eM;u0DT771gI%zonB z0fkGM_ZRv#X2L5^w~JP!ef*)`pcpE=nz8%O%sTkW;M@bt`?48fw!cUSz@Y$PG4lj_ zwS`6AXav&A0jko(+Nqc!JF$!V5p3EDw!#EsVHHWIc#&{;dK<-4kEg<(&vQx(xe^*l zplCwU>442)%dfi=OSujuh@Q#A~X}}1QW?ja*>q6-GodvaPnZYWF#=Enw+K`xf$NXK6y|m znHDQkCu&i*2ht)Ts&$wbgHKD}EHtf&H?5(orz~5VN^DyGX;i%8Iv}?fX8fw6l`$b` z*6p!CwT$sgu~b3V5*NDv%;*5R$7M>GdN zxr>-6HlxyW%?~lyRhUGaMhAV5hFOqwthX5z#UmBZMFz0l+>K?L-sO|CELnci%xQfR zuDu)EE=aMZ70f8PGcv&GGpV@Kzi&Mow-JCwMyfz`AU*xf;U~iuZXq1IuoQ+qk)(-j zu{dIf#N6c1nKc0>mdewzDmcGcEiwKv8%hKNG#z zSYz2IpTrsyk^3Wa55nZjUrz}Uhgm5YyDyIN5;{rw`(X(gcma}NTqru9s;YV~q`7E)F7kZv zzwOe>kwYioi#gdr*zvsh8B2wP9OP2Hlg!M*o*_;V72IWV?A&9m!0_Xq1#7(It~w(B z`jfco%zKVlwSBF&!oI>OZey_)zEBI`7tp7KfUHZ#bkrCS((H!VwZaITvnog}B?3{W zGX_e7WV)M{{EKD?{nrHg3K1;LbU;C%=@1xvF3(Vqukc9cSq(~NG?+J#yc&msMzpS1 zf*d}unA}r{R|hXJ1m}+kdg#upM8CAcO^PG;?|VopIWm9QQ58PnC45{r z>I%=Gqe{nu5{1x53SK)Ut1T{Jl#rllL5}q$BE_H`!z-#KF&IEM9Zu5Q4p%Ba;2HSX z&!Ob#9CCpj4{sZ40UZf*hz#$$S^F(LqRM+ZW~r4#o72R4M-1y}BZ9uh=p@u;J-qUd zfsTRUSH=dspDEKzLei^{8Vwsq-q>}$k-PO0Pp+Z>M?kp0udVrh>q=dAg$Bza@C0r7 zvFlQUb~!k0WXA3$HcC3?fsjO?YfE`qT%mvE7Nf1G248bTH%{3{G?U`vq2_!RTOteW%hMO~Eb)z#u3=)W@u#i!(qz7?N}C*W&6VKBc*iRetxfq=wmC~)Ke(L& zA;X$xBUd+$gc^35+_fB6IsVXFCVALibg#f?i#61cE^iap)DSNl_RqoRv;yy+N*6C7 z1WW>X1A?TGNWcFjhCdT>A(@s$zFPEuyuIjpy?WShet($kde!%TxSi~JyA||*UfuM6 zynCwFe;>RidcU&wf9v&s+ed!?yXyaXwM6)OBG@$e@D%sT-1WBWv9#!)jr{%;cNbp$ z4vc$wiu+qq{hl7zOmKhyt_3>mV4E!wo{h+yO*5X(Jr(F`mc>Z6)u?C1xfxcPfuQ;T z1hrTos85aaGi=ZRLF3z6BV)xvUUTTTj&i}LkohN%8~F0uMIv6U zlQ|xyI}Y}d%Md*6vBE-btI6E&WvVc{y@W4+yaR!!_e02hyWmTYl>niiA-jJr4^zd# z-DUamED`85E=*r@{2CQo9;<00N5e*(xRx5NF-aXwhTJrKYz=t- zzWFjTLeRpHq@E_jaRRo+=-CI{4Z)Y2`h$Ln6W>*j6*rNmVPnI`6?th^pjD5(c`F7Y zSHs2%NnOp#rVm&tV64!1RmRpR|62lIKJPOZGCx8Hy5j0%F*mIRw2&r#K2Lk^nbD?O z<(!Azx;ii8?yYxh_sx3!%(J#lx6-ZoaR1z`abrCfyM1*&60~>)THHAEoCYm=H6NN@ zxHX=y=OTJG>Uz8_PIjkI=rHY29_=Pvp;od`bP=IuUBdcGdE zzFc27ZC_2EJxwlZocx~x@BbQE|JSIuE?;h(KV7kMvt@5<%GA{!uc|crpY+R$m7gtp zS5v0G_IP#W!J@{sb@}6e(~T`nS~}VcRh3wa8d28e{f+ZGD^`yGldi5zUDO!0F5hpQ zzgn^Kv~6r}($f2Hy4<>azH$C|#md#Tv9(D{SG%&RQsY1AqWPyL-S^+1(0}*TdH2+N zU#@yTUG$GV5j?!jtFBzA`UtlUPT-<qZFh9}Pd$5X+8%Z#!8P5p-mLko?yLl`v#aPnPX9%O zpWlCe6uXPSzGC-s8GrKmCc1o6noK`CY~reLH}rDU-fz6Mw)rjbP_T2L$+ojUz3Z*0 zY3&&mf9%I9ih#+sFX`LNXuFXjlm7j&*}(GGNx#9D{k}u9Ppg$#n{V4ydyPYBwn?;C z*G+%MP3BAzF6g4Y6OhE77Oz)j4+P#W$;Y@9vS56dThUWlgn1;_MDcY-Hu9Cg4Y6Ha)M+^bBLUh<|bjkl?hiHIx^Z8UtFJY>ghMQ-Yj&Kj-t1*3+WS( z$=+a>@_4e8AH?}X%hE!o) z%8H>WUE@?N5Ef(k3$ylb##VTe7Rb(TUU>=@IBF{3TtaZd*83}DQjR;^DGIXEE z9#HuQ76NAW#gJ*@zgQ!Gc7e7+Ht7tU(;%hijc%Z1Afr!7Md~4?lxX5XBcNlraKV^< z-Vg`y0tiYvE_5M0He0E^#CRjmy?8g+THlu}<*0;L2=OA4FauwqpV(m_1@bkw(BYr} zn#6FB04d^dJO!~Ni9G56Zs||XfY6LWLnxL_p^mt|zeV2%hUkq=QfrB_Op_@l1V%N< z>Z8S|04HKmpV`Il1ZboiNS+LYJ>gWvE}YXv+<9r8*3Zude^FQq+Wsj|Zs&{vQ+eh1+xuR^JqptY_lpPh(%zH9;blCAm2 z@{x}H@}>Y6RF#iI3GZT18AHV21dU1j^9Ei&xs89C;ZwU8B+>jTkYM_=XcKNn$H1#5 z&8E5vYm2Ak?d}D~mq6%-v3~2;o`rKVh+pU=n9MWuIJ;2%?!P2VbraXkAb(8kpXe{9 za4L{!znW|0-W952nU8TL(#7W0o(zKp%%$LCXmCH}lowlGKf>YH!DoEfFoK_h&ivsbGoSh`?{`|&~-|u zG_r*oim&9ow)n#1Bbno#*1@mxHaFnr_nW0(0%qTqVCi*WKmH&aGli$r2G5j8-#`V3 zAiXbkrQ?HH`)m`DeT3m}2apXceTw&jJU>=Y74P zS#k4N6MU)dPU`L{H-%q^T_>0pvNct&nIV|QQ`+;ZZtoE`psLv#6Lh|nJ1WgfBNYHL zQXsAz+&_kkV?2(5`xLaL^8trP!;=SKH zY>jKbu$)(?o@^K5@SrjD+MgA$zVaEnQ3VX92cO?h*ahZv<4uX;YSNvB=eDj~EaTCx z!L)yFfqv{cH(=loCJXRo;6G1NxDzjhu;=m7n~S~>%RpvbI4RaeuJ}E8dTt+HdHGsq zmESDlLJXpPx1^nJSlgw`tBkvty->n4*$O5S7;j(-(+dJq^K;Vh@`23epIsRJlW7Gn zomo7T4#>b9U~MDsbUA0dnBV#Qp+)n`d5y!ORT1Je_%x7AJ21|sw3p~vD&bD70bKmN zI-}x}*a5l*R{w!JNO2qP;H8~k;Nk)>F&VSX>r?5Pebe$QC!7%CTr3XD9e}(c^wgjj zMwiT~3G@>zrLRHv_|$@_+)5I}b{Ro5>Y3surU)1!b|AZi+9KS8PZ>6KBvAd?oYJY< z7Y^JA2gZbN#642*1d>KwC?RcQB;fr-7;otr+DvEA#c@C`d365s+DVL=v&fx1qKvK}2?1zQ)3 z_0);A3!5q)x8O2;kzuAA6ms?i1|1lJ+BWt2*1|gV`{J;WG+Bsmzo!haX`kzYntKnw zd!OfT<&{{L&EQQWxV-J@A7sB!9Ks(wfq#-S(B@a$dq3eRD1*}UEAP_96yoVAf|mYN zevt5*h623&b64%`4?0Z)mR86(7Zt6LqQ0J-4a%RJQFajyE}u53u0Z!!W)calE?Dg? ziEKVe3-74pUb+&?af|`m&=6_U5`9GT`}!-Y|oEn&{;yBd}#g*pbRb|rhYks}oN-XqJDH&lWLZsj$kPfAYO z#e=@I$5b{w(ov7Ob>9LAJIHv>B{h#IUfh;2j4v8*vwjX9KA~~HFmu*+6>{>g59JX3y6X^ZZ1!Cxc;60Te{o%N$!Nxge(-&{OtFu8F1D`a z7vxuiV=u&ddP}?mQv^|s6U=@Oz5s=wCnx9I+X2|+n?=r*#;^#y+3I$z7$-4LHb@3^ z!>c;o$E?wjRY*Sm%)<+S#6vdP6}I8Cvu&Tr`wqvn{(H0r{XyW-ET0Tjz5(ga;ipa}(~h1YLXx>RT?^40 zu^S;T_iefD6zstP^h;{5cSAcRln!5B`p;@huoZGlcb+c@ejwYq4Bu*Yh_%C;0G6;dxU3M6!lh|4Ti5qwhC+Kkjm|K{o96 zBO=!Rsfu)GDNtQAos(37K(h!M^s};RY`jkP6}y6%xLc_@);abl!TA6QFm7O+PjW-( zUQ~P1e&mvxnM{}Dm!Ir!#oq1tN}PjLE(KsY0tY44b6xZ)!Z~KZ}gf+Mx0rNs1uc+|%uca|h#832hG+@`+J( zhptnfCNdT+LZ8mB7z%YFCH_q#sP!{Ki|49)&+q{8Pfoi7{!P(7)y-VpTUArt@r6my z{4iF2bri)B;`uWYO>iNW{`_{^oMI~;h8X9}{FfsuMAyd9RxMH8%KQ#%GT+LC&IL_< z>zQn(!UTq@vII9(4(Vn<7pq^c-{7Cl91hE_JRsk>yB z0{XtNS)0mE1vRI;n85)}6UP;P9d$i;kQOchfAZ7E`!oH___HXHeWf><~0rSt07OU^X0}?eJ7T8%93lbOsJfho_Kc;kKFN3 zk;)u|rw>JpbqhH~?0X9R;c!Z8(3~I2R^NKb3YseqPNd@H;fZkBi{hAV-^~RgT07fV zhfnP9_wzJb&|5yYU!UtuH84MI#mkCyZf z@s^FyuPcgwX@dc=fz|>qjPv_WH`m_gU^fj1`S6H z!}es+PI-7%`dO!w9vY;5R>TVI0E*dR%rmB5D2=><7vEmt+i7COy@({jn;4KF8#AxU zkkI(0zTp*?BhJl39b19BHVQWt(o!^ zjr_Lgj#@?xbQR5zJ4zbi=t)>Lo1&+x?A2jp5ulWmNe|U=omh^|BERxzb3lNL0uT^V3Z+SI6O8pUzDSWaq5?+7vMApv#*dhKhhq3LVS z$WutsExharcIpBXeWiX)>K@Oq+6E<>XV$Px@5t#$qPOW42Xh5A5<0@m2&GL-5#(XnkQ z+`JT*xU2HCw+VBuYn)`*jb5&a32nJ)IG?`qOMH{1Yss;D@Kh4xr`PhAULr&uClUdUo1a}(W&MdC+X9eYY67TQ;!>|!-E*8kh^e> znj~&?eXAodMU2X<$gJ*OqP|IE^=5FybhE$u{305)4Hzs#xT;V9jQU$ucz9;!P#|R#Jiyhf9kKY1gRyjXzYKpZ%g;9H@9S~CZhG5 zZHG(IDrO@UW$6SMDmB-|K)njD49TfH`eUh2z=pI*`CaT3cd&>2GI*#-9?8^n9(1g% zO~q7C0tLnYM9Nu7#oiA}BauZD`NeeTas~G*Qe8}A>$CykC~wUnLf{ z$qu{|Tj`b2h2P1#`q2g{xYK>03ijTNt*tE~lv%zq)a4AOLl^`+z@4y|m7{R^0NnoZ zRp(pyHJqasu3;*L)$!jWBPy53Ec0=U?n=2Vv^0tZ&yYrak`1hI^xFrQ+DY;2rBRG$ zK6BDLx;`-lPr!yo$@4L!TXf$ss7uikLA0)}fX~O4$qqj|5!1yH9q+T_P5T~GF;7?j zWx6k;<(?PR86aNQpIxMI%|lK^cm%g4W#wmUHAG=fla0vo4Ae~2U$uK!b&1L2=ypn2 zCUPxe?zDU*^0X9SN$|-iSx38V5|RI%|AIP3A2ZSLuhxQX5DJ>cIT|ANTCg2QXkMPj zwjr5U;Fgw8GYDLsMm?Uz?0d-(F*d0ww@IKV`rmC}9uu}cN z*0nSHk~sfZMDi3Bi8Q#Hw!dkL9`H$CNOz8ic*T!cWYU7n9nc6Ds&4pHW((`LG zZY~tqg?-Ugzu9#Q2zy7wZddop)<#fjD|Y<==U_tQuytQ-F8ww^Mk;Pk(-gC{|NZ; zhk*B1@G<3n^s5B+hk&PI?${a%jLi68kUp{~A5wt6k3rT+71?J|Xm!B)Pr>C=?^ZCy zf*-}rQ_9o{Q+`^pg6v$K7(rUedJi$~;n|0HCsf**zOIct{Vuw7mOVL4U6^F3%&Y$= z-cW^Txbed>>m#S3MW1?1gvzv4@JVrOWV3287mD8gT=dIy(0-Mb6U$H$#7HmtCn)25 z(0V0@-8A|;*lq--w%A>Lt@IBK5iJ!c=o*~L&lFYwIE7MJV!;o|!@E`N8$%xtk={}# zUHyer^xrb)d{bknF459cX>2dF@|2#x8gXm*FP*P4tCSVLVFI4yKj`dfx@lbBS(~?L z&vtk7PrCO%=mZdRy)o8C(TYgpVrAuzJ;*?%WhM*Ljwg#9t)4a`klaTX z&xWq`6kB|x`5ToM^po&R9-vD@Ts79WfUZ`BWX0<-s62*mJA@y`({FPKW>!01=JR)C zC0TT!KxMiUf+HrrBqV2_xMWaQZMp31ZexVXu0F+n$PgPzss%+GjzteSZn&y4y3|Lh zJ~180m?~^T6-ACtQIIP2gBS8;%PND4~}QRP8XHaNANz3af@JlRjlOqO${rBu7*NShIzQbbi;8J9S1}WD`k%&zF=g6m1*_CunOFPw-LCh^ z_orrk|7XGXeZjZa_s6)d_lx&8!S~Mhq2~u{UNoe8giY3iTTivPCD>5~YBx*sv{BZs zz|f9P8=p_LRIwR{>D;lVhnmN%gQ$n?0`flOx4B#zxyD6Yp_L5qTU>hC_l73me0xBT z*w|g5dn~(vGd?t*K=k;!a`In=_92{bJ9}UG;L1tDQS0CKE>H%g z8~UcWW9*XrvPZ3YGCIbhY+Tl(AfOTq*u_ITf;#y(^T)EM(s@qUOJ zvUe*HDEdMd67X#t%;W5f`1MihvaaHAgHl<$Pb7We!DFQ)Il>SL!Fu0#^#^_|m6XI2 z>u78O?8ASUUnQ%gbDdE!?|U-N?wKocL(2WK{!7*uygwF}9TCA6NiaFcbg@5{gvYfn zheLV`JFYq91eAc{AbjDZBJy<=Q-KFi<`ru@VNP+Sjb=_j#i=PJG(I zXf#k->`(~-gq}H6!Cb{=uLlDr7l$v7nsFI&0biD?nwmRn3aezFezm?kJxLtCBGyuQ zaTW}Ssw{t{wLT$=mPXXg2hW~+LY$f8to=H4wafoE=>>PYDTJL;9f=|^$qRgb61(ba zJI{7F(ca|2j15J2J;u+aL{TN*Dy!a_cQY@Ibt{V}x(!`uhIah2|ihVXIA$gd_O zp)CS?pS9>s8BS<5GuX>UX*H!W@tdVeE?5mM5>xA|pZ3l#=Z4YPcLxqk6WFg>TaG;w za^Y-dV^eZ3`lV`w6e=gX61VwUp*OxKsB9L|e9Ok8i~ZGtV>LV)`7zR0pFk zQ1FGwq!coRYE80VB(?oX@~SQTRGL`yi<1ug)^s!~=T;bIMkB-{Ndx%lcME8hiCl^_ z$O^=ONyNFkHG!lg%~axFd+ZTicjh;a=;h-Lec_KWLwj#)C&T#S<0Wsd=Hp4Kom<@X zmo@fLl}!{uCc7n+_g=FU1!~4FP?AI`MZ20!JE_qM@L`4n`M+^Z$&J5qJ#nSdK*gGt z+m#xusfY1nb@mwkV|+&|BtqM&tM(z-HD3Rw)Q>4(BG%wzqw97EG~55 zsY$lMiV2htBH-GY_P?>Gqg@Ed}6+w5R{EBHedrGrKZ>>QMR5UJTNC#C=z$#ys3Es3uet9RYnQGee*!#Sj zp@Sd6{?m+Aex!?7rhOpD6!#`yQqLY2+F0M%PV?J>B!hbF%WxeWTh39*h!yMMK5_;q5F{Q=`{6nK{jy#^9`n2XC0bULTV zPQ+lE7yjl_JV_(C=D&6A0pAbQ*d8@k+YO>`{CN(0uUs2X>7V+_Na~F?6d&4N33)mG zzZBzM)B<{`ehR5DhhMhyN297{;7abQxf7b=UT|NU{OJkwGwa=2#DbZYQQwP%iIcw{ z7{R0pYgyjHCp$R0e~Qsye-aZfG{RsFC4oosCs><<%WHbi_dv6$6}!*z63>!*sOrn9 zggJe6M-@u%TpMw|YC)h~Vih+JgiP!q5F{7yXhT+UZkKwl#ef%GIKIJdM;mq~pbZxy zbhZQ!3c=kIIiKV<*BuXYd?|sV=3}9&5zvOkG}rim>rPL~z_hL^`cC8rovLSS%1(OL zIG36_Gf%fg44etjBJ_OZa-mZK+@`VmkTkd)>z`mGOB)vlrN@Hpd(5M17yJ_ky|X}w z^v*Oge_&LlE);X`6KyqzFxYsM1Y}qxAGUlw#<-aes)jzl=0t6@>O}0m_8V71sx?~OY5{- zyqltbJnU|?`Admz>hh>Db>J5@(OSTFvonyo$^f(E9H3IB;~RYI1*LC=nM{;@Ue^ zkvILNo_6qv|Mb-hd{MNDWA17fHViaj0NwQM$E*bAASSF{CC>6~I7Y6d`MX0Ae|?uN znV1P^dii`dM=6@2-VHO#KpA$-V7{T_8F1L6DkAjCt)M-3?k$R#n$JOp2*irz*;rQD z=FeUrD`qDtpLXgTzYc{fuxXDmR+oO|AiR$C=9qW(3kR0q z@c-nu{dV_DQlg!%xX#>aRM1j8l6~9}HK)rdehj{*|N{GQ@t#O|9Prn`70zl1S zsWs|aT~0XZAZCBErjy*TxD_JnLoy=Es3b22RpFs#dmX<2dbCVs)GZ-p|GB~d?dM6a zI4}B%`Nb5GTv3n^xm&Kyjwk3yKJ)5(0vnRL_6g2H+VZ;+&z4^Kma;smY?6s;HJd_hV9i%xRbU5yg8g z49)!5F4^jL>9K=p?#rskBrQ9%B-yGM%;Kscz1_NRoyDD@i6bp})k`&BW*%TqUnhZ{SQ;T_u^0 zRJ7>ymCK7EVkFRb+55Lm4S%$NN5Q%dM>5#B5%cZ$dU+8R+j)kXlZQ*gry6)Go^$8_ zOcZvo#0BN{GA8nue-2}4Cu>#kWvlI$Au1oZ#A&p)>PU2%>_SS(GTgwy%o%qnh;lq|VYHoo8zBdVl*QA1EWk|Ba9LNHJOi73EG+p1eC?||= z-4OR3wo3ux9Lc8gr>yD`qw-YYv6@b}3fuTkv-b%F0;88NYNP7o{~a>8LepbO(M2Mv zXw9v%LB8Z-=!&G*qIxRWSL|}B{?;f;1|p~RnkS1R7UshCK>FqKbxp@$?efS%py(#L zek>_{1B!|fnOnFIx#;(wmTl*`1yoX6%moujaYyee+Y!T=eN_b%WeRo_)aGzJ8vJmJ zc;WVG=0)u(3$ps!5Wdnp6BvGpK}4d-Cb&mNTI`8yjKw}EpVzeF8sevmEqYFd{vw4+ zDhX_M=2~jSzgNFkEcv)|)#cHl)CMbdt~Y(kV9VTTS2=^%{r}QiWd^R$SPv-uoGf$H z$wpRI?oj>xXW*GBSG>a@T6ONnw7$D)3rjJ-B2MzLp4vNN>%Bf-l$M#MXQWj?_d)69 zi8$g2r}DNo9fe=PBg_h;^|F~KcDwizcT2Weh`6n5vu;s-#UtL-pl!W!I+K+q6q?wtT#^kIS-TOCq9MZUmFy^}6lAmf{#T0<+6w%~J>OIWW+yhk?8L|j+U(!ed_~!^D zYZDc+=;!?Wwf-7KuQirY0aG%=tEe#vTe6(8?%w`FC_%CJzBu)}XYp{Oy7*0fF5ctg zg=MBs@X10*zmV&R0hhiaCi;`9Q_+!u@_V&k}zuDEHbx}XVT>X)`AXu>f51NQsbw(M2Wh&%2r(EVHC+*MAm&XrvS7uiw& z;|fvBf%nx(H2i*059yCb1RJ01A`Lb^VL@8_nLTZf!mg;1TnN@Z{HI3Z^RusxK>?Z> z-;H4e``iQgqb`I9SL*i+KRb}!ID@zFHy`eaxyh2YsVA%hhWx(gTPA!+#&X9KtUI6l zM9KRgrFUSi6D;xUWkVQUhbDwT1K{@#faqgKYc-ij*Qsx*M;U>LOr^R zrdrOQ>62@Rc}IHh3k5uLPCe8CHx4QE=!o z@{!snNTbcm2t_s5>9C5f)CY|kUa9wck1Xl2Gs#xglj@7~M*ob-jVKn$%$oB}3u)QB zNMjJD$@`bt}nZ#6nQgA0Ql_+_%074J*A_~ab>1wrBY|(SCecpM+o~#SS z)y=NMihgd5>w#qE9XV&j&WWGDLTmtu$Lt`kQZ7IP;XN}Au4STxaGK<&m3xOD0LJgV zzrKWJcSLlq#&B$by&Hv{hzC&|aZ^Zu1%=*1zHsv^gkAkH0%VD<{1iX5I2CIybkXiD z`16DCn+@~0mXSj$RKq@z$&wNytwG-rR)O(ls-iuTZ#=GL&~Q0)oUX%l7c<1DQdWwD zONXTIg-z+7q2PuZBGHC5d*_ZIgs_+8*HDYc5)Nvz%wPY^N#z8rMDQtk98sgUA__Vw zX2-=1iYR_2gt4A;R9LGyn7AC??khBui|vS>A8y-vFDZPW?jfQ*wa41C0a)kN6#1GU z-c%0sx6V6v!+J>mpXijJ=BR7h?`Sj}dLag%u(CFg!^`-Pq2T!*=vL)T2g+kitH)3IUftv8 zo#?SPu{t4NRtnJGvR@l<0$Km!7_0}dBv#jZ5X@v|IGW+8+1Ufwy9;<`suIKXUe=@fTiNIFjoi@}q* z=BO$q@88zOMCD{x{Qqoiv|U8+CpsJV<3=z>YUz&^{Ku&f>;{gI`aDKjxx_P!{Xn{6 z`nSEY#?N%9D|Sa7zm4!ax$%?U7>*;jpJsxz?1PTPJ>G{~A(KcEj({;NivkjK-ELoYMuvS!qS%=^n@NnRWP*02R z%f-}x*WaIaA^I9kI{s}C23cyQ7yrx#CItzpT43Hq0#70u35&T0tzzxfAo?vWP#;N{ zf1d@jM@%gQ+k9OhL>#)Jmb(`R97|n68GM%$6T2TLmm)>FNKyFDcN^Z@2wqseh?t^$ zfG~uxWOk~+%8*TRidcXWph1YBU~5?}EV(DxMLd`}67e2TM$NO9f~9BFx6bIsf9^y{ ziBd|p?te*dp8L{6W8Py?rdZ;Lp@Xz8ggU$4y$EA8rD2xt7MaP60Ccv>#$OawQ+r{{ z(K?Cnq@M&V;Oc*Ply@X($SD0UYv<=!m|ZOoF)bg0Vb5B{XUdLZ;H*?90l_|wtStMrNchFl1- z>&L}2E1jaa%R2cj0te~XXrYCb5^ZBHsAjMR^m9BbjtH8`g zV)I?yjo_X8u9(_XYXY?6{+ey#9(1f+KJ7`Q*VvdKDH`07Sp(g4LPl|a4I$qG7P!?SV@`cq?toqk!0>V zT@q|We$YlWHu-|hz8oH`KKNW3CTQ;85syi;`p>9vW|2$f*+zZrY&VnCK%)FZ5ZG$j1q8rUmc#zaBT);cDQ>zhIt<8Mwa{O_o5XQSVIKJ;RMbw5~x zWX#-T7o4FHa0T(!;xRNcXbuw5<$8>y>=f;|xf9mE%z+;8z259k@llJGdRBdJ3N}uIgagWWlH=*!uH_vRD1-T zx99RefoYf-y*AE#n>hCmrrV@&UXt!Op#OhVnqzRJ3%IRk!U-mv*tYFtqKR$Wwr$(C zZQJbFw(Yse-us+W_g7b{lXO)o-&1R?=k?q>ofhoh`sZnPTP2PrNVMV3P2ox&zwfpC z_1RBa_>x5WSS_vyfPYlQzWf_29-%w_Zr^>IGTUUh%ND+J2r$`C4%}#m(16AUkK;>Y z$@%4I{SQqnrl!TvCHb7E8;y>LBH(%<0lf4U4}LF!PdOrd6b8}6pxbPt3A-LHJ{K9> z^O4h}Vd;8aJwH9o1L3qhUT3uw1{G<))CoMR@gs4!yj$}E>^z?Q1peWYR>6W2F#M*C zC8D`Tt7&F|GstOKHvvTOc^=6uVrQJD8X=Crbe}Ml$sd6;oC!_@cDmd5Y07N^)h;Yq z*Fih-&}FYH^N7{_m7?_GP5H7&i^DmHtoDngKg8txIY`*&UCzk!6X+hJp_x0U#rVYT zq8J#Q=mMyoM587potv5~af^>eldKrq{_do3PbQzoGwE?o zlOSbLUJ`1^%iA;YxlrZ(nG#geG|aXMRi%YHlY~rKJKJh|Rg5+e?gHoTIR8Ss&f5YbZ@5WCkR(*P(lglOD~&lN za($`{d0>Cg>(Fg0@LMIBwPqj7;HH<3Uo~yO+|N~UhUDao0$_>nU@1BjbqLu)f$!Lg zdg$g7F(n(U7~ir5|0Z`JQL5&n>a*TV&EUJ8EvKnPu_?o3tNg|7qxN|C#-{ye=1O3E z#`a_)50)O9$gnDt;K5@kJDgTyvI^?(y&i~kx7$se^Fn{#l=cOhF2`vFxj&tjmn|Lw z9Iz$DF#78^MBJo7a2RaB&~^G}ho zCvKz&!{YXe7{p1T!^u~o6QYguYk!N0GRZrgm`q5ER+fW9H#+3<=-17HmA{0Ew?{b6 zPG7_5ZLZix1d@?HfYr3?BK2~liUFGxXAc>E+(>(Om$D)E0^&txJDSKVh($`sK*|?w zHomC=w{ux%2kd(decj-eXYl1WH{?wpkS3#%b)YSwqeC!jH_IuJ(6c0ghcf(ErkEy! zfI>l`aVr7C#}l9HPMp7V~(2DXhaQ}1{Lz1Irfk2%h9kQ!Cf`2l_1GNl>DIGVfq$ajaIp>h5P5g$| zPv>BIb$??oraglGYs~d8Y;+s1Ay%g9oW^`D8N6s6USY|R{H3<@2x>+D%@~02WYe_i zvcaVngRhuzBbnr!8FsX}QBJ7lR@rJ;g5L9@n#E)5HjKY^k*eooRB946;|Jnm&GkZI zD2_w(6UqKeHFYWsG%G5QpLdFNh<4;Nx*^Txj}|2t8!2$mtcYCkokTi@BIvv;bk}`8 z<>QGc0wAtn*`%%~O1Tg*gRhJ5c=_n6q>-RF;}_CZVj`dx zpl&tZwgdDnt8$WXyJDs~gvjb#4Zy?HM!G1?$tkypB z#(*51CqF?EcR)d|Chb%p5O=csS7MamzZAM zGap#G%>CYf-9(dMf|2K|nvl(TOG5c&VV~Mvpr4DdW8w`liqnXP!26f>i6i|G7ADOE z%ZoLi$V;9Qv!?Y}CJ_72oB%wmjgLjXe5zKalL1f!9 zlTj=(aj^?WtGR9~s)-7;?79)84~zDxyYjS>QU>swM!nO7R0djzE(XI@%LIw7`ADXd z_B*9g5@w0x!FC!GjFBSC&zj*NpGo884GL{C&uuFMiR6CX?{9ZY%}zYgb^#^Ff!m20 zV@Wvp3nXlrOayH0T>9R>($(FwDKU6B6NEk;PiyuLYHx~e2kfmHzb-M_>&N*gDOP;) z>x@Qjffm5J55Y{`EVD*LC=CR6#)u#8{oc{sjs(mYsOWS(3FupRU;zXrz2~M{cL!N% zQGA+-#a-$>atMV;E!nqu^!*7jmlV-@TWnyFdK3hm@X~QY>@xBRYGW@t9q{N zOtm~LYXm#Ylb+`aR`;9EfTOl&La4@b7{ccmb|Izit0*C^}bsAw4o; zebT<%pqYAGtjuYAR0^@Sn9Omw!rN?+Lp3anz!Z5X&vEQL&Gi4SphjE~RI(kWffd4E zPQ=$}cIg5DLO{L0x3JH`LW!!zVHBTO`Lk@KGikqYTc?{Z+xhQ^ zI`KkYb@1RVxVN-cXMQzZ=Z{z6S2QczhMeSFL2jcrJ_fb*%6Ee# z2D%(!yaMwnP)Ynae%5`)=r7m0^`C1sk)1kTHoF2cNyS?xGadBlnkup3{@Or&G!{iu`u$8%s0tm1%{gMI279BJ^{rn{BhDaZ?*H`AH%A z>`zma>3rMY+lPn0}lwxzfVK65fQthOFIabgH?+j=I#qR{%Ofds zo$QQ?``Y9u+w+ahi;eGJ&Dy5MImabO=Ka5(HF4G?CSYYn>Qv*ZS>r+~Q%8E88-v+& z3D7WV4oU9%lJ*z+R7}&cRYCV3P{iDx9SvxKgOslcrkXgX7MzBm%z39KwD|K>Snw6b z`ItY6qx>mcr=X9EchmO~Cm~Ho8;EoF=}k`6^=#RBD{<|fV5ch-BUp@o0p?GW&S@GN ztm)G9x{256IBvgwPitq*M_I*GT-F+ZiRx?H7h`J`34i;F6S62I164Ckf{*nLJBRThd`@K4L7$Ps1V4* zCHK!t^y$Kn-5eCMrq7cK)NCw@m|98xn~DD}7XdfCI`EzDLQLGlvQX%m);LH|Dz+{M zo+vR~5c+@kAI!e5rTq^e;5`2WMExfq`u-0PBB^7Izet+?ImZ9ZtbuXUAd6JUzeAShQFxrwb)n~@@PqlT<4JO3^-D53E^w9#R)55KJeADDV zI5YCn<_XCO&6<_8q1ze-6= zlkqyLHhUx7h+;-ru8ONrb>}Dtg6lA*s7a;@Cuaf`*B@B?quzPB;LY)B&5aCB$(^9K zqgl)>XLroD*9__cJ@tH`U)Ni3RpRU(qaiSdvUZ+3*FEQvM6KzWHgS+{{eHHs?8i4` zB)>(vR@`*1yjk`GUBKXbkyO8tb1&hV{0N4uQl&(Wg7vv|3`R{U<}%s017B({8R7~M zi1N-y7V6*a+ri>?BnyCGg~SEr^iNsegOFqc%`4!}XudHOF31&l#F1nfp5sx{G~ns0 zmYem@^T?8Q$4!HM7c3H95q1FTzy_(J%?p;B4ZqfK5_wv39hzNl%auEI2QC8Lj$j2I zlAH6@(R>tb7BU7u{%kD-`E50v9rf?(1o;`dW5q_dNP2aRAKw>$G#u2Y$!;67eRqTa zSz_NU{G@|)(?ltQVS^)+jkV%Bi{)qe0Iooced2>TGiXAF_(!bzj((8vr^w@?>a+~# zLu}j}Oe8?Hx5r#yvbT5Ev~3=^5rK?J7nos(IxVj&oBm*(YhtCrORaQrYWIU4dRl%C z{Pz&!cfr4h7?pf9ODvHdJ2q@`>?EY{+cxB<5D-2={4v&WWUD3TDW9M!{)x6T$3Jf) ze{@7cfhJUHpn47@jHOD2_-2nt`>Wu$UnPJ|mu_H=qHte|wsUP~ey>bq9~{a0caI(L zrKVvbEUJ?mPU@~o7V*)nvuN?Qy_v+*n4ZC#y;c`$W-V8sB;9#ubaEcDt8bq;$rHwp z1OVJ#T!sCw+p!VRmuZeIb-%5ciR)5nez&=vth%lR1Z&0n!rQ^e)5k$jn5pH1>d_B! zM-R*mEUnRj30;3!x!yd=FuU46n+t1z!P;^kHaIbXny$ikpdud^*QbytPZb2_iWo0; z4o*7-#bPuP=GTB$0ZG@nTH~QG9SNt>H+PyrA5dFMkB@+}gBgyi%Fy@~k0PQZcMOV1 zDT-bt6^F6M{>5j<@W0QYKg;kUBCA7GruaTUUy6B$V|i!}G#DQUgSW?76B@QO%D>t8 zxhaQ;Fg&RXe65?sF#0K6B9s2V?pjfW43>D_>37`&@?8;^Hwy}?ZCnNo46uXS_$ zd_*dEmrYmnd~8;qlFdgLl{M`Ny4_(HOZHvQA2rBG=(MMj9NFI#xu3Iv7{=Z7;-J^Z#7o|M_K3 z&pINzlkd6R<~4<_=lM=u1xz1ILEe% zl@P+oi{lGH5fsd@kmd#*$U+SwT5&0(r9q>S#hUeG&mnRCmusV#>CTN zVCc`BjQA70^*o^N@Mmm0CN5#FZ$!r6H;VaARTHxt>iFM5|{bNqgGwjWPAQj1tsllHyBHwykE52`%c<>#I1ICVb zVw7-OD(YSYFeA_8UI-Fv@)$Z!IFGGDEB8ET&YQ%DN>sxXrR%8z^eoM_Whi(xTsW+N zmX`W+7{p3EwewtkdogoW^?nO^vGoS|D}hD zsnEaDgX&9qzz$`qQP}cfHLt6M?K0nZ6n}SGOYfnxT-82iO{`b|bs%-JvBnHxo6F&} z^f^TROc4v9`_#f#HO&%-mBD#em;t*>rW(?LcJ_l|tMMoNm<&^Nc9?1vQ0yq!un0pI z`5-fVR%`#TM1uj{o)U9tv{{GosGNm;$j%;f$daL$sBtyWgrfm{u7;|$x|cCpT+c`q z4#1c!WS|Nsr=mlSBYwHA_|AWCuz;Xe^kqRY`z14J_bP?!hQJAHAr-4nVDEnB=* zY1Al^X#|j}e2SNw?k&PLBqX9VVI`E1=an5Nn-a{ifvPiOHIP76yBC>Io^w6|_rKZ) z8|Ox`7^IraKL0iU4Roj;nX(MC7CHahH5f4o+@S#&Mo~FvU(ZE8IWiO0MZ1!%IWWh#RVuzTcrVK=N(l(E9YMY*lX>Ai&B)}Ok78cf#hiE}J%tZ^ znOb(@8P(Lr+6!(S0>sH`-H>JTv-U_&{ro~CQJ%)GW0T6{cj3RtFGRwC?@f^1;SYXk zZP(pwx-1URqroNnZ>`pmqNldC@FYm?GbH*8*|?uJ+X zY4+6oKio(;BlW2>6;+A}yXy}?quPEJUP#XB!LK@jqhU7_L!HUDys1 z2j$#~g1^byG4ElTuMQP^kFanUE^|vQ7|3U0C^WSiiay_Jdc76h$z$SiH_j zQuu;eq5Gg#*L5=&iX9$)S>8O^|2 zY^~~cZ=Olp`lT4Rn4DVk1OyxbGg1nSSWNxxuJCbe3S8!Diy@jAt{PD2B7Jz=h~m23 zVRGj?u~0)un*=uZq5IKf3~OnlxR#scyn(`L0scCshda+);HLm0&%0aOL&x3_KVEYN zd+!7CdZgGA7in~_-P!)tK4u<&H~!>WV2FLuMDg+qnzHmMB5-*adg0Ynkq;`AJP-bN z!zdf(<08t{&5a2bkigGH`HCcM+u1LfIr}TXlR4@oQ(r5_S%Z1;;Ua75o$6TN%~Iz- z+8(F>Mj;S96akt4VnQLgq&Njb*tkfDgtW9 z67qaTp^<`lMMlCY7CAJc*u$j6F?<$ltMkXEFy5$Z>*NeYQU!5P)KA{%$53H_`f#DHgN`43VPGn?+4}0x_i0=JxgY6yC#xY?^xJG%~o5YdoBydwir`+h5*HZwXI_w_bRL-dcNRK&bf+ z6JVSR4osWbf~h^iAyM7ybQ3K+)62(n_;!TmEh<$I-r6ng8jFn}H*Rt#m~7qK^7IYM zKnsyAXw@1%$RU(dM0Xg1DYjJdhrT{C*BZoniE+FXZJcA z0KrUlfPMX z`j>O??ubPZ6OH6~e&}!i7cVBm^QBHJUwz)t?a22tI(3I_pVWQ~udN&yt^Em*(9FIP z_d@C73iDJ3?n(zKpZ5D7UJU;aFG@anfm`MCQ2j42K()fkP$XR5jW36=9j?(kahck5 z4(Ie&Ae07idvm$`2UH-!Ja^b4uH&;!Kv}vaBg=DQbr)MdfLt?pAuz$jfr1vEJK zK@Q0z0brS7;PJl~6*or?TK)E%Tb&vX1OM^DiEs=aV6&A{>8fXz zA}C(nIa)?!;eEU$F5VQHdH+caa|gXIX}X428?lb%55sc;oiggk}3usjz@Ciif-hn-yOjNC@fbLi`&#d_V2-B zb}m3H7yRk<#^e@4W3=sLVNmFqyw~&{iep8}_>m?_9@R&ForKfDs;me0tmXhKFJa9( zRRq>o8Yo{d<1=I2z+2$1 zq7fMhAu$PM(0+vsYc@IS)go>noHa}e%$;A02N(eDU_|q~ez*}>^-~lsBU`KARv~bm zEF4eZzmrF9z$*4&1jXMLz0jIpr1m_Bm?!{x@i(lnjiXLZ+w$jH@no2UnBR znb3+g5nEc4iovHUvn_Ca%Aj{wHd9(rvkM#II=+ zt6HwG_e$yDy?px#C1bjJ%kx7l+XJc2&6Yq6@?vrCp-lHxq2#?a@K%=pfkn5@#T${p zB{jV^h(cd2o8%qjkKURUIG_`v{39vp35xK-F|_(}4?My1W%FZbGm7WqmUFw7q@fD3aOMg{@!&83eaf-7eO1{O$wb9Q zV+?G*BQbzS)w7M;blFWNw2dG=jg@@+Pg>sLcUvcJmRX5|q(x`ZV^uI0QI%b^#!7=| zBV|lC&MY)z@pC0imBK?%jd8|uy7gxVl9Zf67aXY|Fa;_{p8IlBtE}3(w!HM{m@Lwu zp6({n8+bnY*~V+pUt^7<$JE~z$-~6uII+OAQ+MzIPo5ft1pCUF3y&Ih{SNBb+AV}FY$lRpZNdov&H=1#{cXhURZC9OA_vzdtK&i#6_*Gjksv32PBGQp zW4T4`VF1m|SqDm++iDBg4jxgY1?!YD-eNUt5jW;Xh52;X`S+&2R+ibFoz3agGyemHYD%+N}ibJm6Rm>Bt^?VFHI908^7(RWk7Zz_* zj|VYvzb9Z*yh1+YltNoq)_%qWqQVXc?IG2lPfJd}L@F)a+*tePE2tCz^)Mcg&_$ZF zHK!CX+iN}?ge8>(MOcy90n3rC3aJ)sd{e5|*-tKyT|NFk_^*8G8eUp)m>Qx)8 z$2*P`6VHl}knbFhRjX}&Z)|H`8@8aTvr3c`4r}FIwYp|bh(tDkjV81plI*8UhcsQ`bDhNVZUt5a}ddu z`ouTo)|1%EDl#rNBZ}OpW8>Pf`I@qMyk~v()lhhBC+0quZb}cl!*4Lf8sv!*^DB3^JtFK<5rh9ua^NE~pU(DVnPFXlG z=B$hnm3UtAsOCqpvXWF_FLoYzSg7tiJ^@G^Pw96~?5_#-cbUjzgqI zS{`O6rS{)^FXoVwha+1Bl3QjiltfN$oe}Kk!XYl2x&o>o_t@)a(e~D|?Fz%rCfcJ#(S%FXW?xr+YvTV6lvI7f({8~w z@0EUvmMGWf-fH|Rh^K4y-J30{KW>R6h{vcZvu?qMg_-PL3vI}iC8sbs=W&k9vC6|(XYn%C~I-C&!DAKa(wiA zx@Z*xTO~Bjsj-mJa-%wR?!z@uH<rHl8xwp`jx2%(FxNh@}hX5`$cg=(jo&@p+SP{l|E*U*1K z?ZSV8)M1!nj;&l8Bd9HdmFDYro9tjB2czYT4IS|4cFT<^5upllBh~C`sM0x^#6j-{ zql`+U1SxmH)`)!64tB}=a$Bs%zKKqa@Z2UbeT?5_!5SYYfJ?>N{cty&GWRjiZ+oHH zOiqmvhUcEzG`u{dKn?^*o0c7&jIOlC+7uug)xn6#f;6FRBK za#V^psb6k8Q|EPrB+MvIUgA+#d)Bn4oF#`#hKIEeRNOQw7extJ`>QR6c+Oqf?zy`4 zu};z7YSlrf#Ng4u(0OH5+TCgC)j!$Y8OVIpl6tAcca=+cb!^=0)bYLt86q3&;_S*M zmi)E#;Yu>QztOw)>fS^=>^l%~v`tc@Y6NP&oRtlAZ-wwPfT_j3C4KOvZ!W+y{ay9< z2C2e8{$r%-_HfxtYTM(0{jdBR?&+JwgQrZ-+pIY`7Yi4nm!!+ieg1Uap8ST|@l>6{ zt$iW#D(8-RvG6di8Grn#1$E+^nSUZ}0G^atZ4uKlAoa||X6H8b%0;H>W)^;#QgS;I z5^B3_?7p;>i2s?iJomUR?~J4sG$t=kzu1hwd~ug3_07&7%te3ry^*kOGg1F>HTKL? zEzS9|iV0fiLtv!jZA9R*iQ<*yNLR5%f)hC5_FBgxcw049D9$T#8W%PIFUqWTh-rB@ z^~}a*$3VhaWsXXv6g2rro|4FT&NsI}`h)f%7qx!Qz=M=f9iJ?rPmF{wuU@Ui~$Sk}v9dEHKc9 zbab25!z|J6yZDaXn`(3mCzM9)dYy9`lCwRPaCi0^~6tae$7wc zC9~gH>5x74z@l+LU8yB3U;UN8WddaB9vxe21k}^qX&t^1dY(fPnBJ~hn%if#__6>R zGBq#F1)f~}pg2+^41l8y%>r^UqPzs>*3?_sn>zO)Is!WxF0?H5CnbXdWsDq8*6mct z=wzPFrlJnXtPVH@TaX9b^io$W@Z=tA-L+8YP0n@#?gxJcpEO2w`d9!l z@6r$TAcdTCMXpMr{B?&aq5Fwc-j!8KIt1+>`U}^Qf7u(zxnefVlr&8SL24MiGNY`6 zsI;oF_+n*e1tYf6Ot}!~&r4?zC{i}kP%db-^!-~b(?tN5VkTlijW<=RhMpZzL0mm3*mNlIrT}_6iBNa_% zlH(#%2%{Ctm2BC~9p|nUhjb(^+Ef_I$g|%PH_TQvd@9mq*-X%_wS_kAF0d-Je+D(H z0=6~0)rXg5T*O;nr)GFIRq*TT+~y2f$l-4ajZ5bcf4TJ2==2U~=!Pb)lSR#W#Jx#V zGpq>wY~kb)SVntrBpw_{>*d&Ew!CK-68+abMOBhQRi#3k!fGq7c{`Q`|fu(R{-w|?A{xaoI*ow-i zIJ4h&vfYnivuh)YU4fwG;0ycNM8987TlwL}IqS?a(_@yZpT^VtjeNEoUJI2YXqn zhD4-uGT;i+KsU1YUIE5RJZ7`Bz^25rUeh*kQsmM;<~J`O)AX-to^5|gtRy?MKw<4r zR2`uanVV8hGF)l!qR{@&;{0GU9yfg{7$(N%M#f8Vtcz`XT0yr^IBxPMbWQJ)hb86? znds4D#5SA$EmEXMJ6wH-MWw2CBGcf)Vpm*Dp;|;S)5=cs&5p*cn=mNwLTLB^O193` z;$TCi+Mln%&Ay9s?Qqz^8AP;u7M)J+w*Gu&`zTKB zKm6O*D!G(*02$mDK!fL1G!71tw8|_<8&1c(!xo*JF4g{FaxjU;Hf#4OwUY>cTqwmM zjdC{lXNesmQ00vwZi5fVyn%YoUSA5Lw}Lcq&a-_fGVW`RzeN_^)R2N z-@dFv56uq7{C+lA+N4_yP}$S*A^X+r>2YrRV_1v{!#MB4zK8j*4){5^G5IQEVe>n^ zd>aiDkjjTx6QaNJ{??%?=lv32K<41eF*fYqjKaauIW`(J#1#@d5~wcdpoQ@qz;_64 zH84yBka9_lU3K5@rCB~iPSada*@Ewu)ZoF^*N;el+;Ca)&$KMWNbzY$DyA>MWz({|--Yht93rBT%mmBjaJ2jO1fMRHDP2BsfHq@xpF49&9L@w%~9MO5}K zIfJHuhe0;K$&xTh2TfPa8LCVM5<{$4bva|VG5Nh&jCYhTQT;Y7x`hyW9*wB8dJH)> zoXLB)_nLz9TgtUyC~BAOX#M7U7RX?u$9bDAG<|cT<~;$#8veb3_>Q)Ih)2I4B#rYN z4MFBC3UNr#QiXj6s=PG>6Mu4l-^^W1Gstx*2T3~sJ`Ah=juS$2s4-B)n)3b`)5Tp# zCXVMyWe9uQ{h`G?0WL7H3F*>4obQClJDzrRk{*JR%uMr?HUz}lKXJKiS2Xr2z42K* z)(h?9oHjJPGt&tC@xyiSWzK<2q{nYla*TBAw)I9qi!mBV=_B1WJh#;q89LW~J7|{w zSA$!Mq0O-d@@xBv#Q>rxkis%6tO^&XAeSGyI=K@EM`E5=@ zOB@@1;oh|cte&V7{bfdXUFrRRq)#weU1837@AkGM1A`-!=Hx!ubNO;#h$ogHpn?E9 z{_Yn4c2$pL&j<3%FCp;xWc47NGu(=4%t8vP>|n59L8dOk zW-H`a;Tx#j@)e^6x7)<*rO{yiUct+k}p8p@b9${rH%(lZOvrbc_*p@teLRs%Su^ zX~g)0wbACphsoKttk&5Z1$yfOy<>`h^2|4{n+G(L>gm_$BV{;W5Tfwt{%kWhtj$1ZU#=YX0}(0LRQ9*hTQRqBhuKF!1z zGT44%AEhq=q(opFq>Q5R$p!?~Nu0jaDouf;i5!;>!BnZKGs|;hmci(#bVAg_CAOT5 zd-4pJ|t0k_{$_14}Pct_N9Ek+Czw zXoERDZFHR#eVGA2_U3$qzH>J#5^Vxw9Ev$=F+4BEXR635Dv5=^r1kgy&&9D39h``> z=iAg;X_`b9*u{@@H|ND{k>$>{;q;C>2lTdWtJH0k2C<6LG7ACe<5>1|lWm=Q*;`hL z%Lx9i#*3CLd62<<@lzP7cT*14w7x=H{$7q`eC7U^Jihsw~3VW(@SL^)@j`Xke$_)wOckx6}D!D>40`X$lwP z-8UeyJe&X_rKEa>a(Sm%=> z6`UgJ#1)>-pex_|DtXoC)0K{pUJdwLGN({TII8Q~C9)iqu0qT>(kV#R85(CikzH1% ze(~qE&NlR#MQJD>kxYVSwk|{oAHsZZule}N^W+;xT@=3D$4aqT8r7Q5m<2eSEGD@1 z5SxiTD~>j|Whe0L5v@J2OTAD#%(9pQAY)^DPr?f%BTn}np8XXBH{u@JJw;;*NluSk z@vvuIU@X$xM|&;292Z9D5y~SOXK+k9WQGE;{GDFJ@^!s;iCbOX>WDSfFr16DksQ0( zwir~kaKC?stEl^y2trJg|GNCRhhdUqjJ+U{%oI85PFjK)n~M)9el|vPxNH71MNI}! za(`>qhK=YvpTQWmrJYM!Ln6!z#AwZ4nPd2Toxw3n;R?TdO@7H{IN`_{!@eK&6pA3x z6@#ruz0fI+s*r78PInrY6_Qvtu!1gy9o{CGFig*3ks|j|bu3bNIg+;1n(j=l+=5=Q z#2iY|%vtjr|3k2&V!@Eg_0djqI4eBL-m$?EmTb10%*8EPaZekO0UbY*WJQzMu|;+c zNU>R6J~)Rt<#hrfoZPs0fA&WzrI34gqIGc633AC616olRBkq`5=oLoPZrL4!(~^L? zBy~sP7@BB5Uy2RXkfffR8(nh@$5Lc38!V%8Q?pgxWeS3+pcz|Q$1KBUPVZs6qtEk{ zh-*UIrUfS$X0+17%x6w83xk1`C0U|HqE^CegK=X(a9XGMA-PskbQ>VL#&%g@2%@kG z??zP)9u%^A-(c;Y+>E%qoOyL^-pVk`b*@QnlUyv);*&~F$uj8}kd&Dh<%ZuZsBaLR zym1bw6L8-iQfnd< zo*lzMoB3w-^TkRkQ3epjT;U;VM{B9v4`7#eNnoaxkm1p)QFMqHg~utluq;>mBOqMz zlDQafD8zBHVNxg68RM`#V4f8yl4Nq;VH8U}vC9ZxKS&R2>+lB8`7TR0P>)0fLrHUMD zJ1B8wBs(OdP8tXYg@k4>4)^x;FIDX~kZ^Su*j2zS2%~_I-^@TW{UCL}-$hC-MnszC z`XE(HV!~C~M1;Gi^1~h89GeMY|50j%(Y8`tu>;)dgyWX=hFg5&%z8))$pA{VkWpEUBb{sJjv+PedRxBx~}UAiM2SW)g)SWZfHzy)4&!Ca^(iF(AC2=>&wZ1JAc! z!PQ0QA-IG(ArZx}xNNV(es<1Ag_gL1 zTsbBovW)XM<=B~|-3i(KRvgZR>D8+M6cKeJa3Psu`pj|3<$w$EyIYs?De4l zTvPwVlp3cRH{i>F8oULO*;MNpY!pLhpQXCW$#}T7JoKAfg5P7S0LD@dtCKkQdxz1O zyZL4O=M_2kl1}|{AcQ9~>IQX>*MZ-bEQ-&E8^_8ghqvlGp_G+R4+c=jb|b%!XFP%+ z6;UWmqR3;B3?}5AN?vSd#Liax!=d5VS0oCXBz&+9LmvVHZT_%#T19j@xrOmVZ!tF(t^bjuOz}}fB7DIc`jG2UkQO77%cx1d#3y5_>gyF4>;Ab8p z6{Q>sQ)B}_C>T@bG?=1da@8evo^SKu#tDf2Rwp=-6OYD#N2uJ(MtvYM$9mqT-C3k` z)Pz=sfvw28)}P&mqxk;OX;<9J@bLI!#pB`-j%B6sjwNoBW|I%=D4Ps-nlW~_hSc~s z%~StwkJ#MehEj$XsKk|Zll}BBIO9@+efkdYNEiz}FDe2skkry%Fi?r3h5%)DV@T4F zqOz)Nh>kosGjNIT-i6t(-?+-6j$-_mtcr)E;Q(|6u1z$7G}Ci|Gu_gs8bCN#=0Vm} zoY}sV9t{hpcj@MbQ41dkThBA0?;cJQ#c*Pq5Dx$Y_hH9Pr1~IKJ0B&t-e<5q+&(L2 zFpo%@ybPUJS3NXo_{V-nxhuF#;B%1&+18-GCfoFt)ah2Wcs8bj%<4O;h$Y&Oe{Q=+A5U8Ig~VpvTIq{47MC~baQ-a6A#CWT|`B&1O2 zOmkxf)lVuY3(RnDdW86a6S?N9k*tA8iN0X`K-+iy6>dUdV_eZWfA}D}e{!AOyG@MA zS$xg1=>(HGH@9oSK&!x4c2Sl~>@2Ot(alG4!Z&q%mvZ$(YA#ARSO({{`uGWHtNZqD znV9h)s2RI}k#Y~5naDJ7BzF;d zV{UNlt%XTg7&RAHC#-t_LO`d$6%)TlhHRPBmR(?k*>13svGsYYQ28|9L+y}#rF8!& zSrLrz&d5Nv6!k%9*E%XXFpk-;%t4Q)T)rF;Mwg*c$}V%^V_60gE1oAZxyn*>A{~+i zZzaLi!!|qX;yJv?Bu)d%Kbm;E&XE*wQ+=aC=-N=X;48sh;Z;s!PQ^?3p|2mFuMoOx zKHp12ATi6pM?`8LR1*Xv z&7-U&09Hr5Z{)KHh1RZJaM1S-&Gij*wKzwVk%_-MR3{)0h5UakSYwbTO|u=_o*i2| zwr$(CZQC}Uv2EM7jUC(Gz4Lx?|5QX}XJ=<6PS)wlCAmH1*%2R-HhvB7`zz+{yPi|U zS1TeczLu^&puC1uPO+W?2)NS4_-Ch)%!G{3$V0*|_K$nl>%%m~MEU>Ka_H@}8faaB zfm=dP%FO}mjo(WKjZ8@M3(EC{26$w`!oFTxbU6%_tDVENC0MBs-u)8KYA?^k(6MKB z7Cs$$9^=~Rf(BlwR-`sSq$cjNDtR9J+9Ov_It8`+eRE^r04}Y758h0xmlNlQ5uXM``EU36i8HR44hI7?KL2~^)8lDl<3#SSV$^~g^pc_$!Qd-yTFYhfJ83> z@EQR@I(T*?LSmzs7@@%kh;rvqjbGIhoO)8>)%o(%XD_r` zMM|v@0yZgF+yjjm7YYJ_uvNyrB+270^=0o(9~an!O$cF$otGZvxL}&?9w*T^_`pa6JD?5`3|G-}4=k zhK#=KZ}ZRT2r``40|I(Yk$$DP*Ba3Nimcn75#B1EmK2*FLSMRcKO~8s%88 z5Hvt6E^8p4>=hc|cq4-&%t35Q{lJpnbsV2%G){giR8z&`&@A2`w0Rp^tlofX>UB-N z22EjbZu9BW<`te}ip#F@@w#__i9kazBozDI7)Pxfw&MI3vY66C<-Oh_yxTQp>UFP( zI>P>TCxqI3&MX5^;YQ$ohhcdwgItajTe-Ojq&h3L&ZP`SJ=%iNOo-vHte5iejB&+#9-2(pQ zSZZ_OMJjaD4=C!W$ppTje%?>u8qib2Ez{Ogeel<9D_>q5INI{lRnM84f2=HB9^rkv z8W790u4Yws?Ewj?WkIS8FO9BfIy^iZk{v}Og05XM_TNkGYTe=gkGu&NuFHtd9k;Vv zC}bH4zuGcOaWjT~V%IG&$%1JY2-7A|La!i1;bn?eo?=a^+!|}VKeh%2IAm+?HqFYqU zf2IGv3_HaRRwUlf zy2()ACo=LQSNostOLzTVCbdFfPl6F7^?%B+awzEK|5N^N9idWmgrTlV&ES#`DUYgE zRw{*39NEq!7AeV;;r+wmyG{F@Pe*`!m)o_dPTk#{eH9)!z)f=f%d;t6(Czb?3k6nn z864{G4`vuVh;PWf8uW{X+R)By_3)c9hQ8 z7fW)-Pn2y}2HT}m$*-Y)NTEgb98fo_(xoy<3tt1hJWRRu(%SyZG6z-oO=+98OUwSYX;KtSrxBvqCnTuBeytS5k`p*9;obZ~U|iBw_$4 zBp?!qhXltjdi{$N6t_@>@z3%f{C{u$3(Gfl;muk*B>Hdn9oC;r#GAeLf&(HS=Jg35 z2+1s1rUDOxKi!=E;8vV6uPnz1M_&Wafx?q@{uh{9aY zT;!TUN|ItrRx9k%{(-&H-^(g#jmM#t-dY)Ti@;F8xn*?G-?i3~fh< zUA!TI#+QEnS@EPrWm_#@6T#w3v@p61Z-EN@yR7zL7GWk0Bs)|(0I1-3@baf)L?ZTU z>YFR6Vkg%H;rG2lf%C<0&Z%H65%}bl=*iId6RGp+(43UIq%%`PBpqfXwKIIxMTk_d zGR}e%+zU}L=OPfhkw10}TfAvLY{C0tr?W}&=#UtBeU*X^UO<609v zy|0v&lY&rkYRu)W8x@5{bdr{lx+e6*0xPixQMX6HSb60u~W9xVpj8@MJwS z(>P^~H3*8BzO476JLTl)R*Y-6?&03AN%OwClM!iM^*(`sOMFH+ury*H{ZUs@xj#3i zU|zQ!qhetlFx*7{3F1888ml;*twUg}TJ? zqSA~-r|&2lVnoW+yFFpLb;*Fk@U|3PSy#y;aI`Nl-V}G(6R92GXy_{oQwdwZupDxYyMmp}DU$Fv z2K``g=b&6jQ*5-OYXDP0klHt{2MVQ}=)QXwNy)6g@mq{oQJIX0_%o!9o6LlgVLSO(Mvq+&LMYFKooKtv`;$B zI`suXp4r!iYQqY;@LFv8V|%ENWRY8K+w&^?j*Z0?&jq1;s@Zp3EKwz1f#QlF1dvGk z3el&tX2nLaRb7;0A>Q*YkvNyPv}{)NQl2o!LI~3O>`Yn%pvrPt)5PGEdd@3Lc<7-d zFhPO2)tNTF6McO!_Va@QLuMulaM^mP^UI+s@6@VpjF2f9aAeK#4MOD6j?6UPo~b^w zR!tJHueo9A698hEVJjdqP8oeU(KwDrkS48-L%@ zC~9cQH|9Ld)&@qNy-Wj*Oftub%z6N#_D>>_YC<5*HhnJt&Jc_3q-C|J<*trc6bgvd z%(k{~tus`YOu6u%34?uOap+B7UBdktuDJb?P;u&u{V7Jy1^!|T+>{~-ZCcgKeZhl7 zNr+%4xto?K`U{uO+7io%Oc%o}lea=TBxY;NyHdHeTP;NJrX)IWAy2tb6l?B!2GUox4P=;NWY3P(g@InSt?8|2 zJf7CQO=TKiFF{`E_w$jghNMn8SamDg^`q=7NHo=#>Bu}rzfSQG7#-)DSYAR^?$1CU zI*H4rM=c-V%5-R|rKEe}@{P711p;5m#~mgFkpkUAI(|)3a+G7`@+jo!uxE>@$}t(nR6A>>l4;4yrTbG+bhb%dRLbe!9W63KP5RNmL zRN4zY&abZI66-SdMwk6<7ECa-QJo9uKqsS66rNb-uiRHv_hu;&Vn70hB0Ry{;DT{{ ziLdl{+P*BI5rNM{=Oc>r6mPAK?f$cgrhUp?DpetfOoRZG z6-GVEvBv4(s4k3dJe)N98s_})eLkZ&wF061U`_xwx2qGZ%YAmnW2-wf@%VR{hc*$y z`3DFGv+TozL?v2l@zz(7Uu>OaUhpFUr`+ZsZNk8`q}po;HkXvhU7qCL1im-!yN>W6 zQ%c5n}ialY7y#HG9 z)@K#1z11_|$}ZfBgRC8viw0M6%eD|~PMmJAAd=zAp2FUX_YmH05<1zp;=*3FZfK(^ zHa@+MdeS_5SmDT}c5R$Fl#@`PEtK0qWBI;e{B~`T&Wn%z8rj2Za9Q^)g06OErx)G} z>ITgGo~)!Xb`5FL#fP>bP)$1AvDTDW)}L>edC2tG%S@i(*Aq@;N}vsUFWA@d?wYkK z<|tU4JoBSj%qtC$gh^oCck`6;WJU&8_ylLjq$|B4xw;_4F=pd=UQZkfb$%gPz@IqI zro1J*O)=j{NT%PPIONGk`C|&caB;Y2n%Gwk+=QOaB+?zt9Qfs^w5Wh>e4d>*oq7qs zCob1U<~*J_^wD|!u?)K61rYkX_1M)O^veCoVUORkI%aa~6xVGryA)o)@A5P`o_!30 z!PFY?vx)x;%cQf3`u4J{AhHNJg-zvXhUo*$wi1>*Kqt&|M@fq5dmD;Yy^YEt=13+S z{EC?$K4a+fQ88$avcIZ%Y3!5?i)IC3ueVq^QnNzyv*J7WRvYWMNdz3}l?=v*i1viA zqRiS}G2{2dI`5DOt9!Pw)VF zU*{L^?c{m58eL{zF9=T2?H_QntTZzbFvr0cjK&BQ0ywBcd0r?hV)#u3!>rFa%wzom zUwp1q^=FOKnU;a023*=jemel*zQK4upFtXup>O~fkRfs5dSr<7%ZODKhXP)f?OH?1 zkkVXe1}&p9m3LQr2F2)Wpv~~=)(NBM5&{vwshqS|IbDWb|De@awu215+Pn>#-0F&% z4--GSQ|Q?52D1u!CUA6i*hB4;IfAYX>gPJ9I`=g}e&H*MUtWbJ7$}{1Gb8Fbu)6#R zZEUS>>vxb0WDeE&)x1Vp%6F0x*XuaNlqVoA2{^bs?%dgRnl^dgBWmDW3HkWFl6nwl z@!)QA8X%?!l5XjdX%D?=h*)#P1%r1$F*{a{MBD>^*z!`_ zBXziY*_J;M$$m}mzCQorF~kk@(~h6-R6GanxNE-)OrAfT$5tPGZP!t;!O^vaP42O8 z^2}1ry$zx{^VXp|EK}>$R??v(K2mER;iTy?viM%_)9GlyKf;Y4@8o$1 zqfvF#k9N!K=~lcvf2WPO+-lo#%?bMX55FO#KgJaWt2`{;a!~SQa10Phz>~)K%1(gN zQn9aHnuufZM{-A=cs2@05bSx~2uM$ku*M|g83LDVd@!6aK-RSjLh=^1hFt5q7yN`F zJLmoQN~kOh$MZ>jIp!L#h$veO;7eXk`aC@j18334T-$d$KGETPA~$MeL|Pj*VmJ>ze2mSc0R`6G1W>%wWl z*oF_Sd5r8{UItUEXA8m}ThR!+Hq!`oZ;t`e=il*^hJ~th_w0qqquF#-AMX*$Mm%A* z5c+s+Tz829BqTq9FB>OZhjw!K`VFM}Guv($B8OPCC3EgSNN7Agai#9T#ML--FK*FD z+=1N0xJFM=fv;RwdI73w%b5+YrXpwbm=3#5?8X6i^aoO;<8RHEj5vZXy%!v+*?WG@ zL*GbVe_{j4xhxME+GfSO{Z6O_OVaB_zmFVUM)V^d}Axi6`eZ zmpdCAI}8OW)+rdVJt=SU5vLZoNJ@j+9$?a*r0+6qi{<}#2E`y-1#I2(P+Rbe0T_dX zhX!u>oC`vFNYp@uT)f2|9wSh;9fSVb=X;@WeavyGgztm|p!-69Gc#|jZ$a-*_L@`c zD(?ABqe~d|bqNCzQ%@?NE?lfGuJuP^dP6dM(LENNH@T?h+}G( zHJxPc{V+`X&xTm~qjPMRG*+8RgrtuAU`HzJS&Q8EXmkF9>9U=zIW3xY{SGcB6)XTE z|fCE?8pt z*nzP9}J& ziQiQltVKg|0cV)I`$NSaA;g9z3kwW0PFU26i1L&MPB1tSxe-m&8pbg>iSit@bi?6=5e(4Lmb<}hTTK#%0 zaSNd3T3x@kY!%Y$jB#&;CqfEIcSETcN-wMkrsZ1mFo!`CQ1QZvcWHQzxQ-dT-?^)- zNG$^fhpKQ!20+|M^?H7N=lpTNmyG@B@A(GE7-;Jl?;)3J0m*_#z5a+Jc2% zd7Uh9X(rDBx_Fa@X7shZ9CQ^;U9U*pWd1U?l3Q;UpNf;c1rw(>yat;r>oHD4JJXil z+H@JU$&R$~2A+5)ITnKT*cJ{WMk(GpS^y@u2No3gS)r%4y)TCLagg_ZqZ?5g++xEA z({mB!K@2El;qN#;ii-caibQ*N1j7KlmhBI;5e91?cVkaZoRb|NMrWPOmKFE9!-XD# zx%%9PmXTf-WJ>iz_jNp$9NP7}^Sws(Z@2gNx|dA3Q!K~ty5{v9IO#rjptc=na$nxC zbzzz%b7ai&D>9MemGIS=elDoV=i2m9w&ecW)P)<~o5e1Q5jUfQOJ6s4@WLj5eKU)mosG5>s{!_#nQ?R$=~1JPLqhb7 zn)nTCmFajd5^%#jwG8bM`{78-Sy8@u(V5ns=U>KxUKv*CRlL@xj8qfYmzO6P(D-m$ z1^ql^?bdJoVgtqV8IoYVe)ua!=LkdnyrFLB=hX3!+)oFs&RN@%>Du+O{LS}rd2Azc zh&?vn{p1Rom!hA7EWU!8FwJ^fx|i_J-_Q3Ao$w5J&7F|??u5Pf1xR=SB<^1yvzQ__ zJ}-GRxWd+NK9A24^xm@@U|E8fABWNSB;yVYV374bm=?2j-S()>0 z#TlU-7Y@)TXV{CP(WYn=em#i8ec?traaH_c5fEo`H?g>QMt^1*_Srsw3bo!i(z4OH z#8*$O&*VdM@q;P>yvWQHmjyr5zXoNB>6N}l^;Ky0MsBp0mEz~QAV_k?@}kq7bDE9H zQzQD`%!6uD;R|3V@H*0+W0&WBET2^!Y%MC)UG4}mi!#t%qLTBj#sH6owoVynBX2#- zhsMnbeVW#beqT8M-KIzK2t~=^){f7eJEgIYng}Tu;wI8jpxT%GU^Ip(N0UOhwplR# zw=5XNhJ+^dfvdAn1oaAviRHU;aCJR^!5bA3xBm`l6DgA;^(`b5seDk$o9164kANrt zdR_OFgPQI?!#nfm{&Xa#bAgSu-^!AIuKDUjyJK+8_Q6%G*Dsl#zgI72&$sY5|NQNI zm*orEM6lok4^EVeU~d~KG{4GQZC2}RNziUK7z#fFGz)XFo=U}cfA+~FEx49_6rU^@ zVzZxMCQ<4%vL6(pNcQ1jv{oPtI2Y=jygf1R8^$suo1YyF)cMiUvaqNRg_Ag!i~(;m zI@ey@An31d4^Br6H2l59X$bRqDye=5Go0SIva-*C^*{)!g4vLrWt)CZzOIQ4qFK1D zeLtf^iN08+5ovjf*J~1dQDo^~QHP>={x=n?U^)k<`s%1yU9^uX`6U!JuV(A&7bJhO zUfRiV*1E@3{}lUCM)2@Z3l%q(->d6jrFM*!CGNh-j@-!xS$jH-c)o}gfcx$m+b58V z^(jS)<-!k2e;6%!Ty5S2uDX(z`&A+liyvE~K%>GGA4{oj>yYR@1k-rE%|0ueV%<#a zaRpQuG8+%W;+b@3Kx${)`;0?(ZD8n}bF3Gt+q*4;uSL;lL#Vqz9`aleszmR07ZKQy zcs=Bv%_V!&yT}XcBtD`xUpFqx+28YA! zq=5-B-~t&N*zr*r)!D*dGdsM9r>)f^Eexuy6ZPA|=uxyPlLqu?TWTN=as#%@dhF4j z{;nI@CxsbD@w1jEWRt5ba&H;c_&RBc%q>p%S1NR5G)L2VrO7E?9GX?x1Px&DNsq|` z1o!I`cdxlg*Es%t_O&zhDk}0kqZ#ly-81o@Sigrg~hHIoLd5AUi`<=%wDCiHg1#hEL7)!d41nA+vqPv{(nAlY4KD1 zOOz=UEpN=&rcoOTv6s)M?%xk6xg}AM)NT2@YsL~P`V%_YvDO@J?O~R42V;?$qLv+cbX8j!RD^ZEalNx@``T)po@3kC?$ zogQmEj`e&5zvyPAOBHZKxE}vRxb|W{vzxU~j+5gRWB?u+-rPJITby~DHk};UJecI` zg)z+;TyHY^(GZ(?|L|@*uK|zrhZ=k!_HF=;@aW>x&%!(AD&Qk#|7CvNSemRQ34iC{ z`zztx^k$qN1nPtqzm~VyaN*nblIKq*AJ)%${`ZSHPsd9g?u#Y4&A+iwN+)Qtc+D8L z>Q`DdB}eLDd%Ly<^zYvSH^<^O37~>_oWddBg4o3vdU4FY3*jBKk`$cg)!OB7RvgWIQ!ZMut_Lj&wuz6@J znf-_56!QkKb~F=?@o9IU;5Wcv!iHZ}TE}mh@R$Xsd1`9&NY%T-;r_t2q-+LE&77t zXn?<(Jmb5#Ydgt3Xt`%(i)04&VBQ6E+ z=&3#!3Nh87mxPV58`X5BCzM1MAv(Z8ti^W(EKME9BY7tTFncKx3cWksXik+0!l1xB z??=sdwF}jwp{f~_r`J*x+mDn8$S`Rw?5(5yO&o}os7^dX*Ln%z}f+( zVN)Y(+yP1-A?Gs+#)XoyLo|J?KVhu;2ww3{=(!r7_(OKX&=!GWwyCpO*g7*t`j2Yz zVyB3`pNM7Z`PA_dha|(aGoz5WFS0w&1}nA1o*dlUsh2C=A}F`}MRhC%Ogo5?3;?a% zhyZR-Jw7IboliUm?mqz&%)V3}L5VRK@bpdjh_{X0JtyO@gKsL)bfc$vwh=Bbf$5je zRtpq=zERd%=XSLCySLK34x!Q27w5Dhb{Ovhbl%{o-78j)$fSh3tP+L6Ni_D;3?lBa z=~W_hPY#jd6tV^9!kpFX>e@RJ&gZkc>vO}ZY_K`rEk15QXim5Z<+rmaEe>|!>dYu6 z63@AgSW1$VPGF+LJIH+v6sD&b7Os1aU~o7-SILBkFvXw}?_G{OAo@xf>PBTY^iMX| z5hL8w{^q>-TrDD_h8a)JWes9n+plX#uh0-}+B+xIvwDZR)ZV2zSr=hZ+Au`%@K?gd zXRExKBb|(EF{Jzy#2b7(kVmdTw8-A%8s#tZbfPi%?O#`MQrzD<5;cYl7fa(x?6Sn5 zdwksO9h|rD5PlE5Two?{oOyfrTpJ%-=GRR}cCS#4eXf|%?fAhR1V z#1qJ|e!J$(taU|nwiYwUPL3BQQv)3nF#5~;)n!Yz$a`BMMu|ZI^sQnTeQ>V`O=45M9m)jTObFWVmy4T7k0sRy3y|SCA4dmMf&-CV`FIj zN4(+^*QWC|i0zsyN9H)ZAK;5XWD!W!%Z`-Ue_1^43qgPFm-yEM)h{)5fkVADpO+uF z&I7~C6s2ndWoT@AUn@a3kPF~CJVyaB8?KI6pya#TT^t>e?F;pq1MPRtz{VX7YnehX zFICSE6jcMQNkLBEy7YrhLtBhAg9v3E9r1e5{lfw@LW0r*(P^l#5e=|+u5u0)jVUve zPmU3FK2NYmJ9T4v6BZc%YX^5&KZia=DUPWEeJ*`zYAb;41~at2SiL4> zbrAqvLYSS6dx9;=LHq87V!Ft#6_c*RJWm_&9xX?y8laEV9ONmV`s5}VFN<*|?D!h`UEs9+?KlM^-;I$$d^^0uoXFSo31TOt}`>ces#PI=!-T%6JRnF#?wdDOMYdP;O8QV#hDdFGxYe zO33X3taCB*&V|PTeJc4U1X-ktL4W9{mZf?qfOMe9^OI>-T0w|)*@g<}fc)_Tm+|VC z0_RT2JTfo>C?Kt4>V`$F?2}_&^Xq&F5?}&)G(Jn3Z|!h#xaFV^8P8Uk8Aycj@{d-5 zU?RhL!25d@3Q7(k@f^TB;Gv{rqC0SG2me~WDY<#gR6v#q2~lTw=SPVG36r?OKoea-6Mh83-A6Uf6(eT=;W>DcF@<=Ys4bb!ArX zi((&M39%r6h+D+$fLP5q_X!_Y zHXWfaV8-nmn5O)K>=cqd`bGA3JUq+xsD69?|!Lf00OJ7?HNHw;$m;vmQHL z4EUhi-S&X^#|ez!8toA`xcsgTt|kuGjOLm>*F2OG*s?Ov<_`mme=Fmd!nYio>6ibV zA{v!{2*(P(+7fQfU2{2ZQCw9Ea8`)pqylf&Z~yP3m!8&S7$kKqi~y!NBa>oyA~8K{ zV>uX1y_EJ^q^j;>PbHqkunaT>SbpncERiPM%c1j(w1%C;AjF4L6jx=qVYklRRCXIM z?oi$q?HI&|GPY8zi0f%&=WPI2+cN}x4mHb&#kidZ253DzZW7w2hPE!kUIHB+Q`sV(g=mdPG|Q*69XwKg0>q+{w#6A}po2I%h&a^*vOPp&%Y zEKsQyUga|kqh-r!U~P6sr0)KIIGEw?j9=6x)T_~c&_QCNeVE5S{jN%ZnTZr2&ZA=&%J)TcVx>zc@&3KtBLo53&!9Hi*VgH1I-p_ zLcC^T*K_SfC7ARGk?XWc6UhI)m98Ae4HVCvos5x`T#b2mOAnPB+`N-5&X}`FOeIYu z(`0_}*^DZDy##*qHRRQcA&>-(2A?{mHNj1mf$-=B>$@DDC_55=>6fCAoJOdxk|a0d z$qU&_^%!UWBThbMbt@qm;CRQxe~^iPS3CUs5gH#Fp62L66J_{KqYt^S%QW0av3m`g z%l43Hbs~$AfIzNyxu$Gs<#_4vA{Q@&)OxgLGW_#2`=Bcv@Q38+sKnoNqcXwdI@fXj z;qm=L_o>~-PR~?6iQ_TUq7V{mV<>49akxn|*{#=tBWmX0a2!QoVvqzcpc>3JsGy(d&k7!to zT;~qBABMUUZviW%&wu?ai^nWk*+pK(7wP7Ve0|LPqZ=v8XT6=2-_#B>h0%|m?du&^ zSL@z$ly2u4GAKsEP9{UD)q@^+DB zdxG@~vWFQdm|oH*Tz#4SpN#$pULs}-NzFU9!$i{So!yl2q-sOV? zya4pFi&Gcd@_s0^@h=ZP-8Z+_moQ`KzVS*GQIJU0{71zM}PVSQe7U(YR|i#3jFQ2D%DE)Ptd>z~hvc zNY%|mQ8;QI_Dm8AF@ChwJVgRAm{zOr%Xjq|M-H;)W$-G*dH*w%7`pRy^NF(;u8(}4 z+D1+SV=ub33gtv=Sn-XER1#sLS-n}iG+`-qPU=2 z@YfP)Ip?UA*?bdHR96_>ql;UfLfMR|nsy9OkGt8eg6$0WgFTnlH3tC}&V$;cgew1! zs&0j~E|hqI#`L!YrqN54769IG8bd_HPR?vtKU++34NDjJh(n$%t41=cg=`XpC*<(V zPhGzjd@il;$ILtzZzQQQ@ZyIYpE7XLQx^HZM@Lo>XfdYCrPSRaUOjp576Q-V& za^>qrK&^0WL+D7)??AWNrYaj$bNi8>Ut`tsGdp<7+x@WBNT3T@i}J-o_hi7v&!v&zp?)TFja^`EhZawz z`!CPyY~B&<0zj3#HhGQ>yr~;*<()BENOLJt^vc=-q1!UH(8MJu&&v-zlSzZD2;Mg# zRvW?C$TMnb&w}ZSQ5w3&PYL&06UMCy#=r%%bV(2OO+XvP2uUgTN@OAVH;v{V6y|+u z+Yd~4{O@UFezs~qb+<3Oba+yFPTtToQ+msMnXcw}8oMLH<;^W29oBZ1*+w>}mvF>1 zH=e-JL+$+&YY=*8$Cu4C&(2`*OMe>yXqRZ=iVKJ>7pzj$qtC z$knpkgo$9)A65>;O138cxY#-9=DWwP6YVMYivGDa*_QK&IKGMW0dX}5j!0_W3;f9q z1iaTjHU7d#9qlL8G+`1_MZ$xmLz@>ZOTyadJ*I%iy*N7?1_oH7XLrIXorSyYnB7N{ zn&`L_Rtg>PibVf|5H}B5cgAn_O#CCiKi~|s~@xA!Nm?hK ze8rwWysTnR+V*i=h&w6Ic2Uvnj~9=RmFzV4^4_DAHQUO$^KR8CP=IS4W{FyB9Q>VY z(&Cx5uuthplyP4yE?kMx91i9CgO)?g27pI@A!Vr!V-d6DTqlXw4I5kVIa zuV-Dk?EOph4e4n^Wnu_z#rvwbW%0rpExEQV4w9)9s>FMAOH5FmOu6ol9|+-)_tuyX zE|2Jxw0o{+_uvN!Gr&6_;NysBhgrMm=4b?s_N%?)rUF`-Ujx>S+HQzo;dT0wlg1U0 z^)3BnMU7r!rawfIef08Mj*qU?12B8bRJ-h;H?1u%N9U2QAf8+F1KUeEOZ!YTZn`Zf zoP@OU%OT*{Ld}IO$QOVx1z}P8d4v;JI5w55^HCNrwNAH=1ua;y5KdaoY10ft!WR~- zT7Uky@MPG{+ahoXo6}r!imTje)^*K49#2H%G{!%0$V-dN{&Df0OWfT&5-+CD2T@&H z5OmQ(ZtmMy*=A97YNd07HVHAoqPf#~gyY61?k+dqqc417V%pnWLqp+vBAuO69rWW< zKkZNi@hI)m=Q@&h`EGZ`ZtYHQ=Ur<1lBeLS9b1{x2vJurviwK59SufNbbva?l%e(k zySjy$MiUziYDLp&JrjHv{a-$mc_Mzpy9Xi+J8fz1OHm=@$^RkPSfGVh%lY>c@e|w^ zWKLQ*^1K2ax=Krvjy<0`KvbKT%gYv&L-U-g&(VN7&+mi-Wj>WrZokmSp}7Fx+B8)E zF#Xk}K-=sFfgZZRCAT;O6MR-%EE%1zlb&nclWDthGJMswNnVZ3vPyVBmm3xY5I$vb zP?A*9Wy_Cprv>fY`1VyRp!vvqLmd_S72NV)Ps2L8V+@Y0zW9#zB*eP_+TXh4`Si_& zLe+EM2~RfCYpmPPBY6`LJ1}{Ea2}Wzg_%vOc$;4G$=2fe;T2omo?}hml8g|Y%b79J zD>~o%wt!Q=K1qSzqKcsoMplHts{aS>yXm$11{SR6i^_2B|LU1lNDO@Z;_8>zpxdU! zUO>gTtQsQMTMBKYp_E&rDYP115*_nJcex!}LR0@sqqj6eE1srYj?8N37ch8Lx;{`ZqCe|z|q2U-cpyWtmt~fB!FnS#h$g^xt-LJ z8!dLFoI2cs@tq$q(}n7`ez>WnV%OH$%6naw*19ycMCYeaUhbFfR9~8yME5rQ&fvM+ zI{wt0(TJe~(L3~Xj*Q2iTA%+T%bh&FjmWKBugn||o*_6>R<6-*>KiqKuViZ``kKNY-hS>CmjK;P=XK0LFN5bp-)^l&W6sC5SRUy+Op|Y`ta?P^?EJGRJ0JfCD4rV&usDt>{uA%y};OJ_UL);I`MzOTu7=a18x*IN8sTjt5VUKD}WH2LoCOwDVG zx%WODpBCek$F`*?oN@yiuMrcd*G>PNX4OZ3X55{1$7L-@>)4T&-&l`AF5?gn%_rK~$>ZFiwEq=i{myoMrV}wb< zi_0q5z^k8j-YltwGJ;*Jd*j>sfKS22{CF5S(2z2?xRpc#Nqk%*g)`JXRh-+-A!PVK zHY>cX5F`bgb#>I$M}r!gpo`BXVed5Phru~InzmSrwmSDEFcoVW^iof~B!@q}WFZ;u z97-ZyUUcp(B=jcmwR56d>mZccTafmTB#4{n98Xt*gC>^4zX7i2Q>RS6^*E;pPWX^e z_w}edtJG0Gj-8}-wl0W&O+Cp^fO<=ktXTRZE7SSP;`~xvnep4eiZlA}{)W;I?b*M| z+@TeYI`b*;dk2mEfG=*PYXCtITS@@m`2;wuzD?Bt)eoHLl~?P;|KvTNb=GDk`fC-4 zh1qp(a+sqAPOhd@g@6kk_xEQ`s%WOR%cA^h*}6#R@=mp9?9xogrfpR&|biX41*oxQAcgM=)(0NmU9Q{tv?TFWdLl6s1G^XnB zn)i`?T=c6M7%)@cxeD=P{tvgWQ65`1$&`loqgUzu^BuoGye??nRyoeIlzO2tT^4)t zzL<}4K97EmonGd73798f|JM3JTXznLg~Y>dV=kUvW0|`u{V6R&W1p*Pj!I%~9}}+X z`d#B&r&NQz=%u(}JNp!AmYFKdAKaFAPXFTv)ON->pqhh-{zHlG@Wl_fPC#eU#T6k( znM_j0xD>~rr{ zM!mm&P7(MD-^Z@;Dm%3{Ciq{2ce+)^a&UVv{uaRi-|!wPvbF&RzFxg{?$DkL@$V>4 zXL`Cn0Kt^8z1-T-Nz6pHpk<>Gu6x~?nXvo!+S z=}t1GSH2B>Im_$p>v<5$6%T$cq`=6?GqS|0kKo07-850@4*g%2Nw|EoEP8oj&g#{* zPqgu)=D;4T!Z!xnocwjlKnCgHm(HgOqt91b-c|LRqAij1Xoa}Req8dvZ|AOb#20$C zIzO8C+ec)%36~MDGnO8dw#@%Xa-_?jnhzm|-Nv2a#9WJ5X_^lS+{P7YzAV7RY|u68 zRqGOo!tz=8I7V!)-J4(1>pV>PW3AOMJKy7vS*AD+4%b+RJ&-dbMfV@8OYnc-;B1KY%K?c8Yrjdn)L}3i1RPG ztLd|XD6U)vl2Bc4F;d(!Tm~k!3?Dh?BJtGzo71MJ%R2yP8ep1?yg6H#7hhqQD(wb8 z`Sgl0T!k&7xlcha8P}SybH>PPg$68LFw@Mo8PnY&)!~R}1 z+Bo$2=26`aBB$Ob?-XBM^wR+k5&xLZ!L&@E$K6jC<9fsJkRg=+KTqS2sB2Fvl^EbELQ+zre>-&4H!^K0aG^J-^{N=bpy9*i^i8Dn zvcDJ2`hPPNnXSojtCULD=N?ARn}(y^&S~8IPKx}+Q|#%I%SQdYeOMs}8Nb*_z8jN5 zMy~&7_z=f2x>6!}l|*9Wt@w!DDHB+2Z?cLVeFg|m@P;$0ln%jMZe2QMDD=?IsMa03 z>P=jiG8e*hzTTVrx}=$djo;)70OC+teg6A-!GnO{t{{=caGQV1B`aY%w}KZn`tkO5 z-B@P-0xfKxUR|Htai)I^g%ta6d^3US3M~oWAnT>oa=$6t5zQ6(p1xbI1 zb)CzJwa&RNDuAAe^D9s+`Dl!{@NtxC1I&qg7V3$M_6GS7uM8a2r!$>sKF zE(?;rcEwMZ_L}ot|0*Kt$6=A`dc6pFGJ+txc2Kp>-rT8b5@;4VZ%vOC;cW{}W1rwmnI#T;bA*nYfIUgA4tu&B28zq!)DvR|c_Y_iI0BB#-6 z^=|@OFmk60OP>)aL6n{NsgDu)K^Wm$ykw3L(ImtHO->kJ(aani{}I{rd&OtjQX0t0 z!=nT5>lre7>PhMEa&le6U~#d6d7A>;(Tj@?Ys^YGA#;xJxO+6Gzo4_Lo_v3J&Q^!! zgn}rQ*#Z}*L3I8*G-|Fx(|0dk?mcblpnu_jAf{W{*TCZ49~0y zmxU*`ZDV5Fwr$(C^Tf6}vF%K3+qNh6$-B=!-}k4kUe#Ckx>w(|s%xTj%?UCwa%rjl zA3Y1OOQ6-GS4MF##H{MNw&`qjZ!S`O#isTJwO0E41JqttnEaT8*;D^@}GSJX{1K>DQIfPdk@BG}rn#v%5kC0vztF$AV- zw0-6e1D0Bf`#qxgANsE@c-=4$F%;DSU#k4gL9b3kRnXM_f7rUEb*df`SW=9ne?KeE z_%cqqLC_@~<-%BrrpY%VY+f5|@^{*tCCCD0W; zlGiYITfzFvKgd@0U(jt3396k#ee4*T#-P>x5;&Nb9Xa!Q!f2emHT2$gdAH_{G$pgc zQ5uqEZ+a}?z&XV0f3*2;9iYPTb@ME_IVRr9!-Jy#N_K7q6Q4w2{+J4Hm{xo72(t?v zh>Lt3jyISP-=k&P+8F_dWOsxGL%M2z9XGDI!|X<_9tTmy2}s2^c~68D{)s8X=g_3?rgt5SdxG2w%T3wb`(%SCtDzoG>W-#%T+P?cj}^<*zY|FgASd>s*? z#v^FZ^gUw1mPpYbrSKgjM(&Q-nA$6<`}4OmQ7Kw4+^@p(TC?}RyBEqK4Or;7+|cQz zW3VLLU~Ig}G2>iv#f}uhLzV~2iJC4j=wFmbUMm4F{=`qk-axBu$|RXF3HZf_QhJf( z8LYPBE5uGBJZpvO2kDQ8d3x}w&QO7g>{qQc&r??WK@3ftFM*mndv z*_pKzv{0x;gimDtu9T=hn8*gGK31%`XGMsRJr>kM^aRa@s*iKr8W3D5A7@@(1EM2NbF_%swp7< z{nYMsq}HM+M^cSt6X=7bL)^luDp5F&b6mI&E$cO2FzUE~l{dYI-wZ4@(*e(}vPmbza&17Rs3 z*uRY!0g$t>5#ha4@JsI#vkgbj5qXtQJKwdvpEJFAGT(9jukSlwkN%(U{GTT~U$6RK zI8=Yjidcs+xIVbY8AR)QmOT+RMNFC?NE2qgC9(13mvQl0kGWqEMU_%3yGHw&V|rTB zONp8izXnv+|u|`|RzNr>J;8+!=pvd0B$*LSN@$=TrdkVfPzjtQvB7 z3vRX|FKiVJKBk*|+i)?Ns5`<%zdmNkN(D=pZ^G~Giu>-YI#SW2NhyEmi$TA-Z4b}? z+u5^n+QuA$UNp3-b`I-L7|ZB{o!_^NOeke<9nF9EK>7|_!*7zhI&4utl58ci4f%#R z-3kLhfErnv1NW00$u1oQ$waw6cfqugvnQ0b@7dKxHmA_&`7>}Y{;0jVWB@M<(<|#w)Z%-3kEA`)RL&Cct zNArUKPe8E098?+tCAwMn2O?&@mFjGD^P`Fg6+SZfTQm;pP4=}qT%`_}r@0ZC=g_B^ zJ>zp#o)G@y;Zy;FfekWEzF{~A+!w}$xY8IBJ~2)NndQ#rS}DF6b)7J{b#C#YNNt@M*rj z+qDjC6d?FCn?G~mrB;&f8NP>bPRkCY zFP*wMu1BLcNl&%Y#0Jo_eh{UaI(o4*i`uT<13QTD(9DGI0VBRe2s?bV8T@{|gBCTp zNT>65`pV^wgSJwluPix+tAnrjGPt1FaIbp8`j*Mg3K)ds%)Z#{bIlEQxoo0s{|B6K zW9Hlh9dVvecC^=C4wLV0#GlylOX#f6zw4LTz!PeuEl|i@vx?>~!3N*SQ*ZU~jEBUP zhdAlCHkt*&C1~jHiTCI6u<`>zq{}&dBb6b3iOtdph71=NzS?{I(s;5CzXfVpSpz!F zvwPrcMJBmI?Ad$hYej(ke&qD(v7X#T?Fpd$L#wysWFmNK0ikq5(Go5wXD8959N&?m z7m`=wtlQeHm`>+Yw9sW@}3qIc2pE=vpU?RWj_ zT}@AGx%yBU$#O9sH{L}=1*!oVy?wHm#&pi=09uWOO(|>n^%(m5@79AoRz|N%p^Egm zrd@gsS4z8V_CQbOk%1jrbwc%J!Manz(V`VX;b@G8*an=@IeSUXmJd1AB1`r`n0Hyj z2`&l1)?b9%DHo^t!6%$OE#U71Ud-+JS0OIuIR(y4HV)xO-J1vp2eFVzr(4m0zv>g* z7-OrS_m6c#62SnDNZUjw9wuugrQQiYZE$AiQFm)ushW3Acwge~j>uzXZ3G63I3q=5 z>ZWL5V@Rglr<&&^0k1c*pqPpE4UdZKHPpk@lXY|a@Oz=%l}^Tcb~NKT zV5Ku%LhtDdH~fs{=Tx3qi&ZC`mkj7ldqj5?ipe@aQE>lKP@16brMmCd&YK9#r1}=R z_-O1aIdi%kpXB7mSDm18Snk{hy~#ew{Qi0CSKAPl);ymyy>0_4V zMxg71{qw;44@#)4xY*15`b+QF&XvN2%+IUpl zD|1jJAtUZ5(ntHn^4B~6_r;D_-}&RtfB?nqLFGs2bQorJxRWUSSXhbY3B#i&j<%?W$T(L$#?5T@{h{@Ciha|-?PwM#!WtoWk8Nwpj<0q8) z@H+gVkCfaQJQkV1jW|sm#O7eV{M@6Qgk_o7^$lwu`vnNsMhd}+u@FUskonFej49!? z4*H+zYmgtP0sR3xupgiU2m9f`!L}QqE}(xn$e%|#sQ|nqwod{)#gWQbq zs`sHrPJuee9g2W9GXv^663EZK6cWg}=}_lMw}`3cNp(qoV2kX(5ygKa%Kt`G*z+d# zXCOuFi!ks%`(eOYHn2wsWEOLa31=2t{|8zB!Nh;?{sTOazqVjUln0W6wj zj6d6;apOrOsjPbt$|{|01hQz3Z)rM-Du~AovI^qFxUDdDAJ|=V5<9rdkD&FHONOy{ zZp(E2Z1|5qj75@+8{V?vI54}LoU+JpH8Ve!ocF);_^HO~kY}EBiP95O@DXIgUKSC& z|1vWm;5dQ2e7%oEc3wG3Jd@{!L0x_qO|UyJNgedcPN_2zjo|rxGxF~iAu2VnKgMJY zWLcD*0O+0FLkBSjD;6^GsQcM&)bPqfxx7PjpLjUV1??0!w`tb{X-CxPyQ~zLJY(3RJwml|Y{b?o)Nj5GLlJ2?_ zF82JQuAr|DD=8I}MbQ^2p@<4KO1mgX`K&@B$u@SoY99eCzp9Bv6ubUJa73{L0j=%7 zj4S@uD}CG4gKovYf1z=AZTl-{IJ)FoA{nd5q~rQ;R*I)hi2-$?Og)AipfpPb)h5Jj zGEk;!rc`yu9b!-$(B43)s!gJTS$TU}mcR>^tzGef?a^QPYCJvivP1m}@XV3*_E9e4C1fo6{^2ohy|0Gi23(`3`)w)yW*H2*l|EMFv+1 zC6`Z2z?{p=DSc7x088fWuBBU1QS2Xe`C91FC9&QWl zj@2hXLuN?aSJ!#Hd=@L&)TIty1Z{V05>UmFc$As$sIg1Ku#lc@d2dxrlPVE`Z-*F?*i0AY zq#kTJtZ@rzO->UYTU(BemMIHr>&EmEgP+p0s(hfaW3AZY`Wk8ef1FjH)K zXIO(TR*$!~7b%Kj9-uz39{QDT{W1#TO5Twb4TiHqsy-i;ks6*>EGS7yoN)yDu-Uol zaan%OO++#(GCn%|95ywKaXLyg>4$PTUC_m3@4}iq$i6n3CG|ut`hymd>R3b%(qEBb zfC7HP$ZV$Rf^LyzY~o<}w`MgjlIYhojW_~VW^Nu*q)qwGbaGP}wB)mY)fmki2DTk^ zE@M!p=xBv}>$B)mu>c0c;4dEI?R2-+ckHXJ-Gr^3hr8hnSwuLTk%$;$N58U65;IzO z1#dqPRHtoB*xiW0K9s1T7*YjF*`&TRAv5?g%#g#<0~^k^Gp|~!L?@i&v)oaZKGWcM zlyTB52b3)d;h|3I7#4+xx~Vd?j<{6b=fb8{NrGOnXR#MDLlg8uL(X?XOhS1qbsDV@ z*pB#iiVOk`34AsjmJI)hoiib?2^S3Aq-YN{SfPfTrmC?`uNGLg<2!2?WUzNLd=7xH zV-2iwsa&Kc=+c)0GPYYFhlL>|Bq%&&dLep9R!KQyyn6u@r?3(D4e{-}cndE3D}x1- zhi}7)BMNNhA)W17&>FVTjbPbjX0B88z;jnK+%)OPaImE{fqu~el}^&16S0A6Ue+_% zK8X?SjeQxV+#K>^dC>(EH)nf_;Jnn5`00I_#Djd<)|+OW$oPc}mJm|jFwz`DcV(ki zbyUf5zT2WrnHvU<#Cypa%>bx_mD4>~0zoJFLGkC>Nr}m|TSz9s;Kn~!B(7pB$)}Zc zqywVr!SSxp88Sj%!Q{U~zZ62U!{wJ8@RwgDTliA%tXT#C?~%y4d(6U_Ck||wd6#W7 z2}8mp`Ww^*O(Mf1#wR0=!kD_Fq|x#%kQuN-N@94+CT`hl`L$y#_cw1hE<|t(c;#S$ zC1YnaA|P&`GO|~_3wa!IieG@d9xp~DpS{CU`hkfR`a9|^iDgC6@K(24*M2c4cx{A% z<=i>qD4a7ItzvginxbDS>@Vi`zT29Mm~d9GBL&ketwT&*DNpU zA*0dqpw=th{g7~nK4}ciHRBHe&89{`;$nl552hxYwb0vS%Scv;3pf!}hfe!3Ty56Bw?{(2k(-%Rp#N;xr;0lQ-f)TaqXi@VM%gug2OiVz$d!wU`FJezezm9 z6PMJ{<3wDC8tMKdpS4~RBTEmSSX8{qOJzBuimrs1Sye}T3Qi1rQv6cBB$svanB0Oy zthp5pX_1XuaD2Ib1?mZfa(s1vyy$-CVu9V2kHfpbMCK%FgoV^7@#DDf$1($vg0f1C zNhTQWr#U!Ll;~)oB@@BIP^>71Q%8q5BUHxYncP^uq}!;gEcvntTLz)jjuOjSoXAnR z;kg(Zqcdc0I_c!6t@N1CME3#|s^jq&hU&0_hC~u}l3+}rRTvu4i7Qp~2fWSLNt7&; zC6gx0+QXO}EL5en6FBYLj0+L(RIwH5!rv@`P`@suL_5-xsF<0OYCLaR&K{ztCJS6) z?qfK{vTM7;mvbapA@Hd93i5lO-;qRTLjTrKf8^xbK@xh)Dk~R8gsLmia)_R{sf?-L z8I*wBIDoO{+0OZZ_A31`N?35S3MSQjG9IWZSQ$p@)5xpew)#F4}#la=`t<-{9} zm-@@@>`bo`=Pm6e;yUcvgqK#Mz>5RCg!6qk3O0cLk4zjC1X5& z2_)8<#l_dEOR#Sf*42+?>VBq-<+hf_yUPCS)L`*!L5&;NGW$K`6&nDPVJ_EMAVKHY zHiA4Vdl*$-1K-WPiz#Xpw|*Om`ifR=8WlfAY_he;o%c=|H#TJU4UyEZM}d8 zK|_I_m>`^80QRqH+#(eMyT8+k3RCoYmCNE_(nD7Q0NU=!em|u&B_6LO2y;y~4l%AF z;Wh?)BVqF*`x7d=D{38 z&se#!xV|u|$a4F5g}X&FAJISE->#qV+@&M3nt`e!06BWHOeVV&Y=WuDzk)iILyKYJ z3MJ_>qrA3-jG{rM=X8i?`D{B#pvo+ry!OSJOj4&?J*DTeDTs11N7W%_sh9+_Nz54p zKT>T`5^rx+{Fz)#cqtF72wMNT$#5X<$f(ZD<&UAN5@AgeVkr@G@|LAXdoo)z+}Qo` z^Wmewa&wo^$+R84fvykcpz6$GUuZqB3m-P0wE0a;M4eHM4^*!E@8P2RTfTMm}?5+d^?TrHxJ0Y zKVXXg&;@WX0l-}88(>bL-nC7q^JL?=M&eK-X+Qs2vo(` zNtD;(ht>Te^v^?Qy&Dc?cJ+p@wFCg`zhmf-6CetzH2cf{|hc069&7Wo( z)wBa`IaPFM0rH-?=9ojIWI0cG_25MtD#8mxl2tI1O=GjD-ryYP@by3$kr8km=|hS9 z#rd*C40%0{La2?5KAb2xhgtP^rEj4gx+HUujwz}7Yv0I~F|v@{jjn7X z#TU1e#1tC^hrSWznh5(#t__o~pk;kw0J;;bE>i=6G7s~>(N(wZNAAs>5J_g>i1)%RbDk@Eh8xf^KN<_%zG!QhsrM1(7BmUKXwqOL}+ z5#5-AX+n=SzXM?fJCHK@1i{+bgNO_V<}|uRBz>&!dxJ2j2c9)TE|wI$Tm+ASa}>B0ymKgKwCl{hS4FKb`X_STIbM*;DRwPi6WW&6^d-~lHX z*V)Vc!AsyeerQkYP(ZEIy5uDO@m;I!*@J#(gms#K{M4}iF3!qL=kdL$LWf$A{XrUW z(KDWu--@-^0o|5UuE)k5ypd!g*&&8&YS||AK{K};UP+U( zY!jD6@M2rKyiqM_RoXn5q@S{iT>&g~UG|(j0t#7r5hgUO}fNse9<>fg98$#?TQ#GtD+iSytHsLw485 zAw9mDq{>t?8lmkK4KrmiC?NKR0_aIz1wKzq8U(+QP&oO+JV%d+^$xaxt=pVCt)k_w zTFWK9WXi(x9%UuB1!q1DSVatzLHImIETU;!3U8$GQMCyvOI*?wmBf2ws|w<>h|*q0 z{pqd}BDb~hy@q0-EfVRakMSy!2x{v^E0Ez2u_xqg6aL zck}6A)u%;#2c$zhfW#+w50~zFTlvFuzoJ0;Lt?OAH9+)JFo3$g5Wn?=s=EvVIheAA ziO1;WIa5Wa`MHP;xnD|nRZ-ytZyA81om`Mgd)_5lZ7qU&r3Lz1 zn?TbIl#?x)HXN>gD79tLU7}od+p+I`&pG}M%D%*IktR&tc;(2_P@`dvoSo(vYj_W!)@MTNs_^>CoGB`;|!=D0lTgo2Gkz5;H!&dWc1iM|}YW_{F zumBYO-ZDoR8Z`CuIBUkWUebx)4YhablJ;boy4ZOaC@dcI?a(vTnVh%$(xO+;ok30``#2?UGV+x3 z8Km|yTmQWLY&7u1PFfbuwoYBJeGAlU*~gTRT@|6#=B=&^?jK_kO1(FsCnq|v%pz_!SKYutu4-!a^*2;Uxs^jhlZw@F@ z;w9|i$Hct9PatBnIk|Up>7!6x*>hhs8z@iDGh%{WyTVyVvz|AY{iYh0L`|`kD5x}w zx~p=yduwFw)C7Qf=<#|bb_CYza0`PuknnSAiN}Qzsl0IKnHtal51fn0+#5LVR@A{q zikc?tcIF+xy;XPm$$c=}O;1Ch*&k_LZtwPcGfn>1qxxcBR*m#Cb`>9Z-2p4H~^F@yH4p5hUkZ!24s!UJ*b#7{VuX#vq zoo2X7J%@TCr1^v1=ZAVH^(ol(cbCgcTgZG>84$_B2kM7N5ALqt&ff43oMKA}>2f`GSGY-=efQC{rX zil|6}BRKk(-oe@?(LYRnBCMHy%v(sVTJr>jbjwm)E0Mz1rvI2x{m}(0+(S6+MQ5!I zLyC)OOEj}BCC#GZj;mf=_t!|##GmGi@`&IMM$C-`;YQf~Ss~;*H3+sKRAV0mj(0hc z*9at2ok{1lOQh5Pq`}p=q>gy9aC*cJl0<@Ag2xt*1#p_J&B&Nb$~!?k;Ox6tc?$*! zrj$}Up;nC(dLLl&ePri=$iM7~+LM8dI5`d8^LqaQSRgT}D3Q6K3RgD}g`F3+9#pcm zIRmo;g#*-w9K3Ry`_ABx=KMrYe*OY5XP*ZtMb6x(LbkZabTWh98gX|g7mYZ%!ix)i zS?1uA4xV-9Q``mhYLA+UqO_o?lldaDOS#ZOy^&*2t;baAXr7)UJbsiB5U1=6g)t-j-%9Qrla3uaOLe@IZ%(-QQ64xoi8Lkg zUZ!|N23RNf%NHD2yDA8nGCf|?EYC|UEV7U;Q#>6c2TL55v)1q+Cwz7N_T0WOnyb*t>%L03cvO6 z^F!L@*&I1u0zQp`B>itmz=3qK|Q=xsGr*_1UpRS}=1g5@v;WjW~M3O|BQOBX= z44t_>w<#}>jaL~jaw(F$t;uI`4#Sk;&D0Piwut~V4Ds5)FTvpmbT8R>%HcWdpteqp zf5))U7!NYP1ka;~n$~n=I(e4yAF}{PZh?9|;?=cT9f3ZK5lKgl`{3Cv5nkw`rv+n@ zn*YE>mX9GYq=e45>X%4Wn6xBHisu18l+ z(MI2y#m?B@eqSn99_L>thc64aH}mpS+cX(6DDvwKpeYvNIsHR|Rz<%iF{s=WEyCmK z;o}DPgwcli`zwsiMmg0TI=!W=(u-rc?iW`dH1kzmgR;C?fm|b2V8>7!SxW1wR^&f? z{9bGsc@_P-C21oP+|UBMiLtC?E}()d)F4~Mi)J~`B0hTRyP^^GrLMWo5fR?KIKN^P z9xtJ}C06RIwDRZWImhLdo8+)=vzWjYI9IJr;XVb*AzoD2P^CB%3}cTOU=}-hSzi-6 zOD=Ewio5OXYd>%op-ZP(Wp;;Hm*rqB^>Bhtj90S zyH|_JWydE5wb0g;Ag3@?;W2V{ev7H?kH0E@m^h(Y@6K85s7q(N7>M$hH*Aa_1)Y0G2>Cad#?&H2)?YEVJ@MeAij&jS8KQ*g=so!dE-2pijBunUxoK84B2Db~V*LVYtWZ2ex?V#^}c zbnm8v#mMEuE+3pf8hrOWmBp~#QksjjR_>TQ)D&rvy5?LqXEfiRK=_0hhW8HW3sM=U(2^LJ}$>yEjfd)IXurfO)jn}orL#L7$S4NDUbsY2{VIp zgVH$cfTTYo2jt(X$vnVf+4Uv`?=F6}%3`)*xhEXjx|u36NBE+OjHc>dA5^?q7$Ya= zT8=anBPFojEUH8ILAVIQnehlmD)kNd=fBsH98djQT4+-R7dTG?As+X1oFM3YGU|~D zXxIZi;BhJ&vNNBm9fzGWMf=)wCZK9i`Sp2dVaPar`;B>vXPHEtPaa_RJ>0PZ6=d)8Q!CvuatTdBZ`< zJVHnF+Dhu#$l?E{-uZ30!^5oT!<5Z^62K|w$4plO;@5uL5v86hurQr+_V8lBktDq= zH?l#o;!KyAw0D&=?#x;wQnKx%UH<_)+HoyjLHN-%5XG>g2G-S{pj*#!{gTiefrKAv zGulHD|BO^Zwd`|{Ce-eu5B4-J5w$J5*Bhi+a9m+%D$pERunk~N2o~qe zT*aIjdIc|I)Ry{RA(~t9aEb`#;p<%++$~v$+QpsI@QjL3y`-5OBXMl#hiJ< zy@gF!Ik-s@nG0T_S8J|Mav>d-N5`a*yK7y(85yGSa82m;-dAkM=4i+i6p!3RxO?L( zhv_FrTSE2!QT1ZYw1~tmj4 z0=yrF2eK=T^Wkusm|+d~wDl^D)L__@OTD@b?x}@2gHK8>9XQT`RC2J$btrNWdY6!e z%CU`RM8H?XbD_WiH=YEg$B+yJRRmYZEz zRf_>D1}EeB)u|!a%x9a$e&+lemd3X@O@_g2wEO-D3SzvQe{Z(>X0;Z---4t0Ngvq& z9hJufaE4bw*bT+m1%KE(sXEGJtP@m~w3Rw&fUx{xAOR()dn*K{pG4K{PAnX~Ge=f` zbg!>V%M6RIE;YcmMYu(p=kyBSs-YT{O7WJ53L8u?`FTrM#BAm?6SObqOM9kcQ|`#N=toTnvB)HAur@9#^(sEek>ILZ2O}8`gdBxx`qGZ=9KEhIqvKTgQ(O}= z`qW(VF^d9SHx))@!nEE;Zor%EWMn46mpw;R%-ZEtmq%`BR3=zYNYZy@JQM(x85&ED z#uV77Iquh5{5)FUBZaEZMs1DZDcPN}5$w&ixUc8?nAqL~{kj z?$Y0wsb=|wJ5BY=JaUg~;?GtH65rAxtV5_ymB}xn>`@ecXUiSU(r2p-^`YVC{Xfr_ zVq~(P1r4SNr%6=lWim-Fm<+FL@T|ewf1&mOa2)zf!G>4Tw*uT1b<^&tTcpfQ*?nW5 zL;Q+2;ZyT}30b78XhhBTP1{eIQp@ZFL1)urr)Z#&U>W{ICt|qROhdt%?OKE9`sEM! z;_U5J^z~_!>hYJ$IBUsNmZ5rMzzY{0n$V@1u<7tG7rvay`xDi70dSjG_8vIL^L#-$k5J}UJZCVi_xk}H!p8&DK~gd8{OLg zzgxD^5YQMBq39jjSlp}nNZY`e;k}7jBu7}dPViZM%4wW%a#|0wf4X@SuHyfsurG8n z8!D>-`)C>la|V% zZOxuP5JnLd7Dw|Y4D!bz>Z=@2t%R%qLr@#pd%B59BSdW3&bCG$Jhjj1J*J zRISJzFTF&H_G{qBRajHOFX|3vt{=?=AwsJ6nOVFQ+kptWZ6U`8(FMDK&h%9jF05ym zMP~oESuWfIIOlrSs$R~#WUQdR7tT-~D7HM8O$BR~-FtUp3bp7fICsd)7oKyox|sa+ z={j44Y-Q1%!!2;bdiG(Y5peastsof7e*F~h{+M;qdrPpo3iB@LUpyCej^PaTxeQ}X z{B@&1(ar2ueMY%puFhG|ZvGLthG8DoY%*p01$NmOGTlwr_S9d!(>*WkC*29_`>nju zm5<52=*QD*rktEpa)6!)KaE}g?8nmYLs=EIZzJpf?cdzkrqJcbKy)5m`;tEbAUH;djLz43^~dVF`=PRE>JrKER1)yCqEPHy;PVw+npj@)4fvAcVq(RaAD-XE}_ z4Z-LY#>^AYX>?<3Akmid+F}R7IT)X4X>s>^ZX^mwB$G($aUforj@FKQC;D+bA_CXq z^fw<)&?!S%(&E{TD;cbc?q8C%el@!e zRK;~tqemC+GwWjcw2Q309#8?c7N}!(M|!Blc1GxFUU~DV=|OpKzhjyXNWN!_J>aB* zm7TKrZw(p7m>)Z=#k2x|>&+`%RLL5$*)Gbpfj)w;czH#{E8LJ2{tej6&g&wP;cuDh z63Y^v+aHTdDaE;yt~mW3mSELqa0{Jpxy}HDE-`Rv+Ur|u$%B=7cz$=(m;&xdUG8mr z3#RmHh$MV)h*8rhet!{eqe>w3!1sJpX4^$P2f+(Ai{PUOOAxdz;@|Fg?pi3?l57h5L!z)t*?v3M*XwZQwi?k#)Ibar)yzN+v9Urus2uI-tC=v zg<5svTgGS}IMuBS|9f?X;Vq*xWDO`tdxo4mU`N1l!6=!#O^+Cw+phBqo=mA#irLUVlnz3R|#^%FkVgDzs=S=p0+Zl1*>e}UT z)v6{HXma02Zo|$i-i@MbM%~VfrCawCPG0L_2;63madlrVgdLVMXr+-hJq?-cdjgvovh z?I7kyZwydv2T5q#H?Q3Ljp(irN2bo0QPR4h7#Hxpx!C5hWB(prwW!V7-Lmp948Jlo zQXTjg!)on@$LZG&MyX2>^k~_CVlLiD0?cA9pDdwM*%78=E6kb!EqxqV6?X(XrAHA{ z$!s7kFlh!Cz9}H|pcCy0?p|G?*v&PLhH8B49N^6ex{xqfdl%|1+)bvzYBP(Dp2Co6 z{=elNxuf~FpQ1Uryv~X+J1-$CQXL#H_=6FDLXD7ub_011Sw|W>`Vlm7LzTUmdpA_7mRKi zSx@pwT<08iN3v3ZFI-+sElw zgl}QpL8~4b2g7Nm%U;87XiRkH)#Adu-d_803;nGTPif=vz?5s`(9*wbO0>pXcxzpx zJP3Y3uwzca_awqLfBwX5yGko~G1UYp@iOeWBsCAvKyBjc4>@xEdsK^#IlV$T zflD!UX7ZV<#^<*@?WXsm^f1nB){?R>c`THSs$l15Bzs@9;O0dCUdkL80%WHbBk=Fh zrwzuDslm#ESiL=RFTPzQ*1`@Iv^MXzTKfLsXRo)C8&IbMn-YYc5AfKaTFl$fZhX%U zdSZAUWqJt>YPr^7h-@!P?IS^fQ>wl2ISr6vgq_R1k1xcJO*c$u#Wf>t_y;<=U z73FXaXVPp7Iq1{&=>We9f>XF(JLWxBJhr3xKDn8`9$z)?YBxDw&u^TpIPl0s>BFH- zEkqvK=p_Quyb=m9*(^Tg*2|dfjfG?J+)2aT=1s`qT!X9a@Ib4N7-=qYwPSyh5X|BK zCZTgEzNDtghYcB<(TEwY9!)tn!G+j-OYvC)hmE0-b8C8nqyLxKZ9L6ia!hk*rU)Vn zY?VA|fb0vW9D~``EQ5j8^c?uyL|RBAO@tFYa@AW~gl!Zvn%2#R)8?3*T5NJ@RG(~1 zTYh1!dWelFlfd_WF)ee4jUr8%*CZ2btC`Ny#4ZN)@xYvS{RE+v(FC{f=VMNL1?_2= z61!CMfi9o4m+zY%k84l+Vzw7s`2#E7qkAOx8M=uvO9H-|vdbUed&v9oy=!ROsyhC` zw*gO9?hMC){V&5|Z8vf%zPV%GqAQw;6H$3q?WsgDV+VV7yK2t?>o2?(z&fnj{BTTJ zN=)_q$Mn^obvS8@FkcK%yeCdbiEkT=++24Jf{KNgnyza3D)913-%5zNzx}g;rLQ{~ zqEQ!lZqqr$=;i%wXz#Q{4g`NqwkiAOwd{f&ErzF4<=QQhGO+1s^j!Bi52FP8+SEjJ6jmS?q#aMK>GYe9{IRR+U9ub)T zZ=bx$Bt!kOBH$!T0mXK5rYr-ET8F5E;GCWFz10hr8XjkydEXot2$tOm2h*o-?u=L8 zE8A;Vqp1h0uiJ5oD`H2jEoN7UHb2Nwba$Spw zIhB3M>b7Sg4A%l>{x2J8wPr^w=jE;buNtQ#kuADiA@(wG!cyV4f5q;-_Teu$Aao7v z7~o758Wv3&bZpiF>@x&*+Na<4h;YO$Q_b^WUv{bE{i15JU(cFztI}mVVR8Tk9%y9P zOVP!fel=Wu@@sp2nXWk0m`yknw1B_WFl%lwa_}c1C*OsW{jjZ0oJY}l4vfEHTN7Pxr3kiPaDnoV#g5sk;>>R$aqwK)t?c@ z(mqcIb@lVoCqh+`d|;r|M0aezc=cvZV57I}p4U4J9HO?2<7QaRp3^jD^}q!2Fd@B^ z-$M~BaGxJ+Mf`K$a+<)g1a;c8sD|83$_G{4wOK=GbBw)@R$KQ9l~_bgiW&C->wImn zGAhg2;|zCOmWsds9$M;|Vnq9`8#t^m>{aD5OF+!S8V6D!?0Y2kkwFBW-*nB&O7 z6zBa5|N1Tunz2s^hRrEb8*XO@l3k9P7ryyQ82U~)9^yNJD-_&p;a2Y$$1sigol}$j zag(*LqA&Ex=f@P%UmtE{NMGoO(X~&geA`A(k@_Knh!XK0?OW-p_~hW|hFKm8(yvWH zvV3H1sa`vme2^H%4r@oy;T3~EYvh%pJbDP;9ACm^zk^yZ3nfCAud>*s19lWdj=o8q z34}x|Cq7-7>7yh6$LEFoP1)k3$F&|G_)2n~e>xcTkFCbyqtgr7;EgEjXu9Cp%kk2< zDX*lH=w95av7#~(sjMhcQ$SY5;1oUH(VNh|xFlQ;J^e?o{N9!qvE9=zVgE~Gdr0rJ zti%UGzd<{4^|oyW1RN{^E6-jzzpm(n99=gL zb_yEUtPEosS8`Z!r~oB6AuZST7lo*nv+8wuAsK-hcIJgV_K)D_+cCIbjF;b@u0F5R z5dWf*t3e((`}J(vD9iMlsY_3S;LyXxtaHS^R-JXiDUoCZ`M1fAa8iyKms~PVbj>Vy z`t3c|!)U95m*`n4L~Ej>#95l9)u-m1JM_iWMg2MZTx6qh#N8`%ogA;CzY1 zI;mug%37{4G|dILC)p#nWz70cLdZ8npSG z7VuXu4=lY12rp_Wvy9KP4l3-i{2f=P153vjaCUpB>L>62H7}_|9DTL>BDmldFz{vr z2^jRxZ)LE&9b$27;2-a5<&>Qx&zDEt?Or<~FgN0n^9r_5E)&%FH{DG=fuYIkS*-XH z)*b%li)acdY79Fzs3-DC7ZRF4{!ixYjdsx6K(6Qo9DgR^YPjd5Lt>*{I{R4sT2(T= z^9##G$#Ug}$n6*!pNo5Ax(gv8(D{6cC7cD=NjF$PgM)x%(+}h9+F>fHurY4w>hTwR zc~Y^-1y}*H(9lewIS3lEzW#~*{@_vId{%-KvXUh5ZwS*KWG(^bj>q*q4kH&mO<<6G z^%htUq9k>tK%fUMWitKtwmx;aEP9BSake;?1G`RmSm?quH_F8@p>C?*go0+N8muaO zc*SGO^rpY5X;Ib~ZP4BftT<&7n`X*0+HM-!ddMDM+_oGOoZ>j2)hHr zShEOXZC}gDCf^9CcWbks%3c3hOa*;UouJf30apdw6mXaH5vMo$jKxE6S0L$wP^&Gd zT?!CsSltCTPpDZcl-yUl?@yi#qfHruB4)30a8tlt8n*FMzT~-oGKxkL2mhZUfu5~^$G4VCF*4MC2Gr=Q(N3+ZhfK+RcOjwk_oe=5cjp+7zeY~ zPJeYBffGMU_h4|xG127^s55B(S?1-kfrDh@%&Ss+i7jc}D}eK-=93R7m^}Gj%;<=1 zqAPfov`&9wa6JU(KCbRRs2B#i$lB~8Yvfq4a-nloz`LR^T#hQB>p!eNQ*0cZ)HU9f ztB&Ph+{WUPF=ON|I{&PhLl^VTgcw452%1g8r`Z=qtk^4ve`>@o%8)6d{)Zpk^=Ty? zeByvHn^JH!v~ZDIMiX}?p3V0JUureJZ?ihMueoXU9(bQ1Y4YTwF_#vQFk9rY=&>T^ zN=UNN-#$NT+%?dR97z?rsql5qZ9?O4dO|I3uH>)^FL@E8IAI{E<>UH7;&+l7BdiHK ziJMBfpb5MvIO7)uCl=K06v@6)5!7;Q{A)mg?cE@+q<$x@QR_>>-^cTMVNWD!YynGE zHGWi;&rMQ>{UNDI!$r|ap(anOGI-^i(>}Nm3{>X5HYUD1EeZycCwY}!FuEMT&oj>A zIRkJxuHQvH!C(puqNQo!!5N`kk}}89`R` zZmJa9$+?@wDalJ!@w>2vEsbOQ$+1Q%ggbOos0Yy)DAHkVA6y0|Dr-(Tth z=2dpV=tTMrGS1;S18~aM@1mYyu!t;hyyiM7jFbgSvBybSaL*pyLuAS6NK?#M9;Vte%Jl1~{d3Ayw33v=TqzpyE#I7FRufm25zWrwZJje0(EDyzM`Vz* zd|E8C&8wlO4}3o`$q|=S?${s~HrdI+WsoCDEQOnzVB;9j?wee29&vSF2mkw~EGlRj z@sW2Dgh+}IDH38UcOSn#n?nWcCC#U(FCl)E)EM6hs!?nPNTDDF>c#Ah>(5EE05af2I4yes;>5n3va6f4&RV3B>EdmJ`*MU>4$z9 zG+2w25d|AIRq2Xa=A#t6x}A|)E#)AA_AnzFCy5;SK_etlvYWl0thWgYS%tep2TNLA zNhc3FDQ5u<8CwZh1^0vo6=1%Lb`3HH07nA|~_j+>5{7co?Q)JHNBW*TBfml(0b z&dXPZT6H6AJ%0{9ki>A!@h+nlyIw?J;bDS4*uHfj8chltrYT;QkfV2Z=|W;K4^avo zl?_GTk1W}$jH^}KusIU}?nKK3t(gx-`9W8&MnW-CWI0tHMm74~J8 z9SQ`u<6E+PR6JvODHzQYOxGw~iqsZ(Jcr>)uVERC*vxZVY-Lu`)WjF*d%h7H z+CTNu|x3csH0j(4c)#N{Y^Ar)1sKQDRxm@9(NMqtxL&FGdO*d{KH5 zH)}jcjE+ddrc|fm7M~>}f`8YiWkCqB)e;f0zA!ih-d{VCe{&)$Uz!tXSR{#2&4 z{8tjcayE2Y0EZsB#gv|uaME6`tER@?KH#khmNnCVpvbs=oVooGCB8;&LU&fS3$=qX zW^}meZYD)zZ;WJ{o$u}vYo6<+nHKbV1kqD%3-eE^-ZQzU*Z_@N;$IHhrnV2Bo&qFZtQ|$>O|DGoc%Cn&`h;ACMD-R(~^u6d6AmcmH`k%UP&cJm*Uzul$UO< zvR4@}uJ|0&#e6d0!^X!8n^v3&ao;xM@}p$qwt@4%lwEg}bR!yOtsJ$5HUdSi(^86= zKAdnOBJopA9b2 zHQ`W0bH@+l7$cdJUbHakRETAF*d{r*)9L#DC>O&-9G(;F2zK{j@8%8S>ulW3Ea@T3OGGv128@@I2kEvyBBWnap<@c)usNnfnUH z04a$a7$?;100Y07dOmklhOlJv7FMBi1DLcs?9)CkZ~MEykdo57%(Er5mVOszc5$^z zF+8duX!>jT%z`4=rZMTB#}(J(%DG0YLjQZiDQ*fW*>ZG??AU2w0POB#X4n^qc;L-# zDLiMsAnN4pK@ok* zbTfqNXL!Wi&E`kll+t_9oCj!`E=Ej!4Hxpz<|I^nQCBa*rpH(M3_BUR@b^}XP4&j( z6xF)|$s#Co+DTaR`0>AKO*clYAlCd+K%lg!DWLR=9w_YLyjaZ^lntY`L`@Whl)dq7 z^32`hHZMR=Y-05?*Q>jIXXSZuRH_6uC|1WoAagi((nq~b=0UKj9|`9&N5bMl?Z zI~Pm8F6NH|@vR(OGo`fzjBa0Y5wBR1H<8QI{REIg`Vp5o@fB5|E2<+qO^Jab?cMrO z<1o7By_!^}cv8J-`o@xPI_`nNVX_e`R`ixySfE5k*f{F2xhR#?2TpfNR4U1H)9p9C zPcT>%?I+C49e~Zmcjso#fQJG?-P8$E!7geJv@FB>oc14;L+e`R0bAur^cQzxPVv+1 z;5B1B(faa^7Zbx;dTt9_(ZQ;icaGGOwS+-$6sqow@pu*FRRtC%1t_peKMk!90?R>S zNG@F?J{Q%&HCGXIlTA0Qg6hr}GMC=6{2fj{0#R5hcJqRG@4j_`(;3`#r|MYt^$6W- zQoiUiSKqcPOz-XZle;jH={QG1ar#k734RjH-c8~v=M%W-^}(%rFco&~;|{5Ca8mvR zuGibyHY{`5uvsTbpDV{@_oMaD8Au>>qD5N5<>FYZA%xDUP`I55#)575z-)T8Cizm1 zw^S?~&j4yBM=rz)D+#W-h_K9d&9^M$#V8V&>E@(XsC4tt_c-&OC&(k{O(onf31&sL zQQNNVnbt|VOZzS3>00ZgjYKPmACxzxRSLWlgK<+DUr2zPX%4heZXI&_#$IyRI6 z(XRC30Bp5xl<2d=oBd5Xr2|L3dshjyis_KYXB#^7D!Qo=MhU^S2yrASM4)csYY0^U zbTJN^w3A=z4WrAjEVVmqPvNJ#qn=mSpF#Q?v8F{g8%7ee7E?JsJc#YpDH=(9CX$Y> zd6?Vlj1IG)ig~{_6bhlXyRApr5nwF~h6MfmwEih;J5wuRL%AH-6X`F7s(t?LR-Ws1T%P-oCM z!!}yH=6R`Vhll4m8HdNhD;kcXja2A&Rh=QZ#Qx$Pi65YZk-KZX@#;8Wz1Rxi+{4J$ zEel><>e_URt#O@pM5$!D$+Ron$EwoCR#ck>zUF4}Wvg)u>P&qlaOWLgQ{`#%OURoX z1z`rfRfT^^7*Hh5og3UEc@PF;TnSjPJ+fdbN0Gf(vHIy1(F(tKpSALEsD70Os> zwbSvc=c8YnBeUB4o=za-M_tb~6_z-+*sQ){PQr^Ks%j2e*>%-zAutu4V0gbpfk%Su` z=y{7@SVW!V%^;gDIyY2sES#cNQ4m3G&0Cmmqli9|88|E<@7%C?$b6X7bhnU9*`9=Pn%6?s73 z_HSx6G2hWyE<7|S2;UTPv)ih)_aUPh>&5MB+Ad)cLwim59k;338=xe(O2S7Im|p9< z(NzbH!2?S5njQh~3)%%1?c5%H>o;8Wre1bEew4v4h%%89YOThw(G_$w;vyxP|M)H7 zTS4$yDBT-~eah^o%*;f+0U=cWnYlRpyPvhZC?=D8zDXN{j_*Fp_7#NUe(I8-R*#a( zQ&$!H_F5XDAbs8*$XWHWC0bhe6>3J-Ct$r1vFmzeIvD$7zK9EPG&0Re_R6gdeXqte zCaZ#in@7@7AKqv5p&CXqghHcOUgjZR)K8>7uA(j9t-kX3?6cJ>f!2hwcJVo_TcD@q zm^7cw93+rpekK#R5SG~jy)dLQp6d;k16fByhCo^PGuwzTv6 z=XLRT(|2l;N`>r3h^r0E5*CT)F_rS_YJGYf988d&M%Qdb!!z&TF*BBB(yC5$ksFZ- z{pEl_`b!QLmn0p?rI)At2`9sbC!opo;{^xjNaS|MLN^9YB=e<`HgG6}o`X>dlbtAv zwnmZd;+OSmR$!tUhAZ4j`oRJXo-TmTkXRdL(N@3gCYG%JeDrAAS#$+o8&^4Y(&>`| z$>)5MTxmQ{R7&7-yox!vj|jm~`1Xg1b8k#1*w0*%v{&-GTJP;lB1X-8<3=-d!$dao z_%^0+bEhmYw*c=~kA@AbEkUHLCy7%2-I{?6M4DF8>lkYdY1_lpo7s=)km`~iaWiQ{ z0`X%dI zbS}W<84bm8Ar{v&lv-UXU1)1hesi);q>z0sSA zGikMzKao=@b2Q1y1levIv3M^_TJ_Fq+sxDUaYs2-gml48S9>EUTrP7a%zAaZa;9m} zJnW>Nkb88f#@jL85$BYGcW?x64Y-twzf^|nja(bO2I6qTlyu%KK~8v6lT=N(fk}R7 zX-r6R1=4~c@h2@+ClP2gKd9y@vr)Lrz+|fmLn_V{r)NfC;5g7*1tly#?Z2XRpg*q1{gQs|;*OAA10?E6l5^UasK)&v zCgf`LZq__CI2|c5Y{!F=Ltb?1U_;mSnf!8}B8V$U;!?vs&4*=FdN!kCy7DTf@~WHN z&RU;qkEk7ONR67KBA75)W&aiNvu~SK2uAYsM9d6>89hy8BVq^YNdAGd`vuOR*yMqgqX3Ou$8>%qZr5A`|W2&Df=Aw1ZGNxc2)}TA3 zP!1_`vyf#G$Q67q5q0`5pL`SAQDps}0o>?)RuyH|+V}nAuE8>^QNhnwN7&kv>sawK z-a!mpFc{qkvdma<-DoVe0lKDJ`tFBPG^B{#aB${ecBs{fOBaHDlJCQ`d+o%H4&fvSV*v1r9YCIwq0`v~@lmUKtOOU^YKI`oM5G z$rCc#Ls#wfQQwf%zwj#}1)owjx0UJ5l_Evc7_p`B)m(~bpG*%9upW` zY(hbSUxmCiXCB3dQxEh+UuesWQQyK%BQE?EA(&;In%oICYk0B-f7{Y_d7I_=62&G-&8wpX7 zeA&oyzOCHo*6NKijMVS$I9s%>@vS-tDhwgOW;hqmOv2d!(QM-Uu4`Kp-$%rb^~E^! zmqP3R4TC+{y+S5NHlh#Y)131EITqThJsn=`jF9SariRyn7F3{lP885{R60SV5Dus8 z>8JXD5_Kgu0OC3Fte%Vu_qG zDgSUkQ%9EkyE%I37cw%$r9lG5bm5!zAEQ@dm$HzE{1;;sJP7ifu9 z9o(UZdM8^TjOo^uP$+%I;wmUlYu4(Ur5Y1!%nP~witp-@E|Dy+Q4FxlcqP-Xqjh@- zGA881Ac}oqpUzrnV1j#bvM2BYg;Qk$x6hJFuRJi|??7I8Yt(Q~NnAJzWI=75$4)x~ zz9?TcC(UZUj4idoGMkTnvJ8D4ATGiRjh&Sxai6c6#uo8mG&s@J&Lgmgsi+2W0NcI~ z#Og0|e(%;F`ayAQu3O6W(QF@SMVYGb>N|D9JM^<)4M zc87a!;>v=Fb_Bo6wS_XUf<%lui}oI$8476N7}Qy zOl!Lj?FW^|Vi*HoIq~1J+14J7hDj)4qn45_ISW3+yww)gq!4Gkd_3gDy&9#3w|n$i z-6`mz>PP39L)a}p4!GM%b)Wv!CPo6t8sC=!Q082d(vVS5>oAQw=#`8RZc(=WgW~+ z-gwGYBn81A~{ zHDF50vOy7#%vo9KOxa&bn!kPdLo{S_Xif>Co&16#yz$D}QnyobrD_$jg3_i#{*vVV zIon!XzxMfs?~#7XF{iSB{d_5CFFb_9Z%4aGIWj{cxI!RkuCenaZs6(RkdDpkV4}zO z6&6RVjO{fN5{dE!AKf>Sd9!!$jg@5TTy?D%qb=&5bfwpX&G=!5>0#p%Qz4ZSNW z+Bve`=;8z(UHZAlZ3-B6?AMyJPakH%xShnHpkqxltiX})uRsnM?MiNZ$c}%hor5OF z6n}_H5&i?Vv&%0fB12b4Tb4E~nNyBmVAfL4L8_%}PvXb$m5)+^bbDk;sMY4AdSGQz zJ@kjuc0M-hQ5HSKEJzb6uwI7NA5s&kSqN;$lBOtUol=9(56B~gvzI6y76UvHV&uGV zt?^h_%VD8ri)TBg4wYEu@>f-~R>R(O!(v`DWPv5j&wXj%ujTpDDp` zXVcDKcEuT+#*MOJLiSbR+Ep@Q8 zM*=1%y9;sEF%3EoNcsbwWTeRtW2L2q_ivFBtMB>~y$=Mf>iR)*3#`8ns=M2rcZiA! zxX0nA-V#a{-K?e1(W*XO!gLS}#Rx)=Z($sPG(t8x-B!`AB4JdQgfEIVtVe|o$$7-s zKV7H|t-N-gj~G8`^~a!knVXBsh+LbE#4Xqf_sq~n$@k!Cp6^?S;_xw9znHy4OA0wJ zrcEzpfmH-|mf^Uti%-AX1xR?XxN@?|bmtB+4?ST8V&LOwo^MxV2137lr5HRM8U;86 zb#;6MI$^Y{3k*&8)&zQ)1p{) zx4m6V4g@wmELYOu223O(NDHnz^HfUe01AJH?u!}prpGY@_ z3qwM?F;O}!`UJQL>RWwHS*I2Qwr3W}Mghh&3v9*nx+d()X_vQC! zU;7KBL09h>QC3ofny-VF%C8+XIoX}(@KL>g;2T^M5R;Rtp%>&dD^jTmBN*5cu<_AD z?FZ+o!bzYH8_hs{YiFg^VG?}-?3{C_864EJafS97O9iIwd!={+MllpKpW zBImSow>}2E#ebt-{E8L+zpytaNQKTNK)deXGe-!U2zL-8w${W0^hmvuw;f6ESX`=F z?^0Nx-Nn4e{Mpho%;*l}kI(p$>)%>ly-qdu&mofZG4iYz`SA9(85OFY=oIXC(-V_w zR$~LYC0uxKrdd}0bH;sHsC~Qe^9V;zuQP-GFfh!s3QDKR>C*bgt4bqJV#LlQ z!Eid(!{RLyJF|psvGlv~R)^G_Q{5M3X${38%kr_X)rynJwqNN7(A8v|YGVkbcUd35 z6N3IAmHxEKw2X8Fe8C~+t%nqI{7N-Wp~GZ{7Ki#WyI9dQ*Um2)GVK(tgM8^sT3Hp1^FqZg^2feqc*%gaeNPy(~qd;+4T` z4{t7m;lyVseEj4~+(mNJ7hf0rK4TtqOQ)N^%ts@mPjCdlq>8XA*wyZbI2frR?sNsR{9ntd<%TzbAL3t1o!C#H_FmH}LOIf@DAuIhU;r7u{ zP#~=EH36e1)0Dx7FWCcm1lgZN zr4goilQB5*sI8>u!n(V?K3yc&p~IYF$;Fc`T;_jVIjUkAs&8432w3cxKVrG%4&@Uh z6fIci!imm0PW?$Ps&Jzw>3SlzW?*>&;2OZ;A0DumE^FJXN;qQ}|m7ATlFNcfoKVgcx zPr=jh7$ouj39E)jrY$cmrzX$gX!%c=w+lAVpAY~D<@&e$|C3h01^{SkYiKC^2UG-w zr>-Fi0MLL10D%4n0>1|%NXh^J(yw1@gJpDIgEiFu1GcA`lHU>$E)A|M9R9x{7-2*S z0MOCU)s~gl;jnjicKWBTtBp5RoIn7;9{?)fm{a>ln1Ix*4|3{(bMgdMt?+^eGXM}$U#r1{@)zFsv7mUNkPg4aMo+W>? P5e+a7FD#4gza{oxkU_DZ literal 0 HcmV?d00001 diff --git a/research/native-coupled-inverse/SOURCES.json b/research/native-coupled-inverse/SOURCES.json new file mode 100644 index 0000000000..dd77397ca5 --- /dev/null +++ b/research/native-coupled-inverse/SOURCES.json @@ -0,0 +1,54 @@ +{ + "schema_version": 1, + "base_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "b288ae44032fd84dd5564243422836cbcd29835e", + "sha256": "f9ed52bb642cd1e1486cf2743557ac5fa23cf1514a3277d786a644e39a565038" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "f126dd2e2dad2b669e75d1d0d0bd05c600725602", + "sha256": "f7a48bfa2659b88378282a8eee7d9fe52cdf505594124c4d1686b58510fffd72" + }, + { + "path": "research/coded-native-caller/NORMALIZERS.json", + "usage": "input", + "git_blob": "bca92c222c395d3d75c047fbb678f3cd0947c60f", + "sha256": "ae8aad06aa5d1811d725895b3ab5a4f4daa9dcdd88294aa0d5f723e78bb1e0da" + }, + { + "path": "research/coded-native-caller/PHYSICAL.md", + "usage": "input", + "git_blob": "da8837ba67423ef08ef1afb8e8297a8032aafe9f", + "sha256": "4321b159ff8d3fe705419adaaa1beef75606e869e34341bda553f17d598a6078" + }, + { + "path": "research/coded-native-caller/clifford_exact.py", + "usage": "input", + "git_blob": "166841a037f069249f6f7f6dedb89248812f59e2", + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962" + }, + { + "path": "research/native-center-free-code/CODE.json", + "usage": "input", + "git_blob": "03170f4a31f7a8a3db7228f1cd5a6fdcb32720ae", + "sha256": "8be7f3f073b7981ec91c6af43edff0ac8a89f4824ef6026ae758c287dd6c03d0" + }, + { + "path": "research/native-center-free-code/CODED-PROOF.md", + "usage": "input", + "git_blob": "1f28d33884ec99b34f8366d022d8f7b9b7653ae2", + "sha256": "acd904af677718da8cdaf81d205d29866a6855efd393047e7128320a46753b01" + }, + { + "path": "research/native-center-free-code/SOURCE-WORD.json.gz", + "usage": "input", + "git_blob": "46d929df83817b85a5387bcdb9745e0627d6366e", + "sha256": "7679daa4ec6a40f56fc7f0202379a6f454310e94945aba4f48beaaaafb838d05" + } + ] +} diff --git a/research/native-coupled-inverse/TASK.json b/research/native-coupled-inverse/TASK.json new file mode 100644 index 0000000000..46f72864ea --- /dev/null +++ b/research/native-coupled-inverse/TASK.json @@ -0,0 +1,82 @@ +{ + "schema_version": 1, + "task_id": "centre-path-sharing", + "priority_revision": 7, + "base_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "original_card": { + "id": "centre-path-sharing", + "question": "Can the 64-per-call centre path (eight rank-8 COPY/ERASE totals through the private temporary) be shared across calls or shrunk?", + "starting_points": [ + "docs/research/research-family-status.md", + "research/complex-local-word-ceiling/README.md", + "research/split-centres-global/proofs/PR386-BIT-GEOMETRY.txt", + "certificates/selected-result.json" + ], + "methods": [ + "Derive a fully charged favorable relaxation for sharing one centre path across k calls, including restoration, hosting and precision.", + "Prove a lower bound on copied information per call for the selected decoder contract." + ], + "acceptance_gate": "Show the changed centre charge and copy profile per call with every added restoration or hosting cost charged, and its ceiling via ceiling.ceiling(centre=...). A scoped local result may be retained without a complete supplier. Expanding it into further construction rounds requires the family-level budget and obligation gate in research-family-status.md; an optimistic passing relaxation alone is not acceptance.", + "first_step": { + "command": [ + "python3", + "-B", + "research/complex-local-word-ceiling/verify.py" + ], + "expected": "PASS_COMPLEX_LOCAL_WORD_CEILING", + "inspect": "Read the selected word's per-call local profile, its packing ceiling and the lever table; run levers.py for the ideal budget of the lever you target.", + "scope": "Positive control and planning budget only; this is not a new construction or full cold replay." + }, + "first_experiment": "Write the per-call centre charge and copy children for sharing across k = 2 calls, charge the sharing overhead, and screen it; stop this route if even the ideal sharing gains under 10%. Ideal budgets: free 2.80x, shared by two 1.90x (levers.py).", + "bottleneck_link": "The centre path consumes 64 of about 99.6 unpaid coordinates per call, i.e. about 64% of the raw deficit.", + "allowed_variations": [ + "One sharing pattern across a fixed number of calls.", + "One reduced copied-total contract for the existing decoder.", + "If the coverage law, template or guard changes, derive an applicable fully charged replacement bound instead of applying the incumbent ceiling outside its scope." + ], + "scope_change_triggers": [ + "Removing copies without a replacement contract for the decoder's copied totals.", + "Continuing a partial cost improvement while leaving the same unpriced consumer, restoration or central-readout obligation unresolved; refresh the family expansion decision first. Local product-retiming evidence has a narrow scope and is not a ban on changed graphs or contracts." + ], + "overlap_terms": [ + "centre path", + "copied totals", + "private temporary", + "shared centre", + "batching" + ] + }, + "scope_status": "changed", + "actual_scope": "Construct the inverse of the PR5402 coupled native provider at the same paid profile, with all 632 original inputs and owned cleanup.", + "scope_change_reason": "The released complete-caller handoff needs a source-native inverse. This package closes that primitive obligation and does not claim a profitable complete caller.", + "bottleneck_link": "An exact inverse permits chronological compositions of the retained eight-mode interface. The caller and full kappa calculation remain open.", + "budget_minutes": 60, + "stop_rule": "Reject any changed paid child, nonzero owned return, unbound source operation or incomplete inverse endpoint.", + "outcome": "completed", + "evidence": "Two-sided exact all-column native replay, independent inverse formula, source replay, child-inverse identities and rejection controls.", + "author": "Ali Romman", + "ai_assistance": "Substantial OpenAI Codex assistance. No subagents.", + "open_questions": [ + { + "question": "Can the coupled provider and this inverse close a caller that retains useful shared helper progress?", + "why_it_matters": "The local center savings do not improve kappa until all coupled outputs become admitted jobs.", + "first_step": "Use the exact physical inverse equations in PROOF.md to emit one chronological caller, then price every endpoint and paid operation.", + "blocked_by": "No complete profitable caller, compiler/precision ledger or outer admission is supplied." + } + ], + "checkpoint": { + "canonical_main": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "priority_revision": 7, + "selected_kappa": "0.0030217758", + "frozen_source_payload_sha256": "cfcd36b40326d7a5815e1db5313444379b3fb756b27d5201c561574c085cc0dd", + "overlap": [ + "Ali Romman PR5383 retained-center candidate at 4bd6efa51a495a7c7b7754915cf0244e7e60969e", + "Cinna Davis PR4694 retained-center and PR4698 common-chart helper basis", + "Dugongue PR4929 center-free code and coded-native-caller physical normalizers", + "PR5397 scoped owned-exchange ceiling, PR5398 direct backward conjugation and independent PR5399/5400 reviews; these do not supply this unrestricted coupled-output contract." + ], + "campaign_thread": "https://github.com/CrocSwap/integer-mult-bounds/discussions/4930", + "frontier_changed": false, + "checked_at_utc": "2026-10-23T22:26:00Z" + } +} diff --git a/research/native-coupled-inverse/VALIDATION.md b/research/native-coupled-inverse/VALIDATION.md new file mode 100644 index 0000000000..ae093ea56a --- /dev/null +++ b/research/native-coupled-inverse/VALIDATION.md @@ -0,0 +1,20 @@ +# Validation record + +Canonical source base: `1ec1119972c9aefe42525172d07b332fcff81cb4`. +Pending provider: PR5402 at `3348fccea855082786d5f0fc5558b73d4974e745`. +Environment: CPython 3.12.13, macOS arm64, standard library only. + +The author replay passed the frozen provider's 641-column and 1,240 physical +binding checks. The new verifier passed both full inverse compositions on +632 original columns, all owned-zero checks, unchanged paid counts, the +separate inverse endpoint formula, 464 boundary adjoints, inverse child +phases for ranks 1 through 9, and three semantic rejection controls. + +The registered normal and isolated optimized Python 3.12 replays passed. +All eight archived source files also matched their exact Git blobs at the +pinned PR5402 head. Publication/export checks are recorded below after +execution. Hosted CI is separate. + +No complete caller, full multiplier, selected cold replay, full recursive +compiler or outer admission, independent human review, or formal proof-kernel +check was run. This package gives no new kappa. diff --git a/research/native-coupled-inverse/VERIFY.json b/research/native-coupled-inverse/VERIFY.json new file mode 100644 index 0000000000..71d3718333 --- /dev/null +++ b/research/native-coupled-inverse/VERIFY.json @@ -0,0 +1,25 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/coded-native-caller/NORMALIZERS.json", + "research/coded-native-caller/PHYSICAL.md", + "research/coded-native-caller/clifford_exact.py", + "research/native-center-free-code/CODE.json", + "research/native-center-free-code/CODED-PROOF.md", + "research/native-center-free-code/SOURCE-WORD.json.gz" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 300, + "checks": "Pinned source replay, exact two-sided inverse on all 632 columns, owned cleanup, unchanged paid profile, inverse child phases and semantic rejection controls." + } + ] +} diff --git a/research/native-coupled-inverse/verify.py b/research/native-coupled-inverse/verify.py new file mode 100644 index 0000000000..8ffb2870da --- /dev/null +++ b/research/native-coupled-inverse/verify.py @@ -0,0 +1,415 @@ +#!/usr/bin/env python3 +"""Verify the native inverse from authenticated source bytes. Apache-2.0.""" + +from pathlib import Path +from collections import Counter +from fractions import Fraction as F +from hashlib import sha256 +import argparse +import gzip +import importlib.util +import json +import tempfile +import zipfile + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parent.parent + + +def check(SRC): + spec = importlib.util.spec_from_file_location("coupled_source", SRC / "verify.py") + s = importlib.util.module_from_spec(spec) + spec.loader.exec_module(s) + s.main() + source = json.loads( + gzip.decompress( + (SRC.parent / "native-center-free-code/SOURCE-WORD.json.gz").read_bytes() + ) + ) + c = source["canonical"] + p = json.loads((SRC / "PROVIDER.json").read_text()) + word = json.loads(gzip.decompress((SRC / "WORD.json.gz").read_bytes()))["word"] + inherited_records = dict(Counter(e[0] for e in word)) + # C0 has no paid call in the changed word. Each live use is a copy of C1..C8. + new = [] + active = None + removed = Counter() + substitutions = [] + for i, e in enumerate(word): + if e[0] == "scalar": + op = e[1] + dst = s.addr(op[1]) + if dst == 632: + if op[0] == "copy": + active = op[2] + else: + active = None + removed[op[0]] += 1 + continue + if op[0] in ("add", "copy") and s.addr(op[2]) == 632: + if active is None: + raise ValueError("C0 read has no retained cache") + e = ["scalar", [op[0], op[1], active, *op[3:]], e[2]] + substitutions.append([i, active]) + new.append(e) + if len(substitutions) != 8: + raise ValueError("expected eight live cache uses") + # Replaying with an initial dirty C0 clear permits the exact source interpreter. + fwd = s.replay([["scalar", ["clear", ["C", 0]], 0]] + new, c, 641) + old = s.replay(word, c, 641) + if ( + fwd[0] != old[0] + or fwd[1][:632] + fwd[1][633:] != old[1][:632] + old[1][633:] + or fwd[2] != old[2] + ): + raise ValueError("dead accumulator elimination changed endpoint") + + def identity(): + return [{(j, ()): F(1)} for j in range(641)] + + def linear(ops, rows): + for e in ops: + if e[0] == "add": + s.add(rows[e[1]], rows[e[2]], F(e[3])) + else: + rows[e[1]] = {k: v * F(e[2]) for k, v in rows[e[1]].items()} + + # Apply a native word to supplied columns, with exact inverse child frames. + def apply(program, rows, charts, reverse=False, copy_sign=-1): + paid = Counter() + clears = [] + copies = [] + for index, e in ( + reversed(list(enumerate(program))) if reverse else enumerate(program) + ): + kind = e[0] + if kind == "scalar": + op, frame = e[1:] + dst = s.addr(op[1]) + if op[0] == "clear": + if reverse: + if rows[dst]: + raise ValueError("reverse initial clear is not zero") + clears.append(dst) + else: + rows[dst] = {} + charts[dst] = frame + elif op[0] == "copy": + src = s.addr(op[2]) + if charts[src] != frame or charts[dst] != frame: + raise ValueError("copy charts") + if reverse: + s.add(rows[dst], rows[src], copy_sign) + if rows[dst]: + raise ValueError("inverse copy did not erase cache") + copies.append(dst) + else: + if rows[dst]: + raise ValueError("copy input not zero") + rows[dst] = dict(rows[src]) + elif op[0] == "add": + src = s.addr(op[2]) + if charts[src] != frame or charts[dst] != frame: + raise ValueError("add charts") + s.add( + rows[dst], rows[src], F(op[3], op[4]) * (-1 if reverse else 1) + ) + else: + if charts[dst] != frame: + raise ValueError("scale chart") + a = F(op[2], op[3]) + a = 1 / a if reverse else a + rows[dst] = {k: v * a for k, v in rows[dst].items()} + elif kind == "warp": + _, ref, w, a, b = e + dst = s.addr(ref) + if reverse: + w = -w + a, b = b, a + if charts[dst] != a: + raise ValueError("warp chart") + sym = (1 if w > 0 else -1) * (abs(w) + 1000000) + out = {} + for (owner, t), v in rows[dst].items(): + t = t[1:] if t and t[0] == -sym else (sym,) + t + s.add(out, {(owner, t): v}) + rows[dst] = out + charts[dst] = b + elif kind == "climb": + _, _, dst, a, b, r = e + if reverse: + a, b = b, a + if ( + charts[dst] != a + or abs(len(c["frames"][a]) - len(c["frames"][b])) != r + ): + raise ValueError("child chart") + charts[dst] = b + paid[r] += 1 + elif kind == "zero_retag": + _, dst, a, b = e + if reverse: + a, b = b, a + if charts[dst] != a or rows[dst]: + raise ValueError("nonzero retag") + charts[dst] = b + elif kind not in ("phase", "adapter", "residual_adapter"): + raise ValueError(kind) + return paid, clears, copies + + w = json.loads((SRC / "WITNESS.json").read_text()) + records = p["mode_boundaries"] + perm = p["candidate_mode_permutation"] + sign = list(map(F, p["candidate_mode_signs"])) + factors = { + r["cache_slot"]: F(w[r["witness_row"]]["zero_factor"]) * sign[r["witness_row"]] + for r in records + } + + def full(rows, reverse=False, copy_sign=-1): + # Logical normalization: physical monomial boundaries are inverted separately. + for j in range(632, 641) if reverse else [632]: + rows[j] = {} + if not reverse: + charts = c["start"][:] + [None] * 9 + linear(p["input_basis_program"], rows) + stats = apply(new, rows, charts) + linear(p["output_basis_program"], rows) + for r in records: + a, b = r["owner"], r["cache_slot"] + f = factors[b] + rows[b] = {k: v / f for k, v in rows[b].items()} + if rows[a]: + raise ValueError("forward swap owner nonzero") + rows[a], rows[b] = rows[b], rows[a] + else: + charts = c["final"][:] + [None] * 9 + for r in records: + a, b = r["owner"], r["cache_slot"] + f = factors[b] + rows[a], rows[b] = rows[b], rows[a] + rows[b] = {k: v * f for k, v in rows[b].items()} + charts[b] = r["frame"] + linear(p["input_basis_program"], rows) + stats = apply(new, rows, charts, True, copy_sign) + linear(p["output_basis_program"], rows) + if any(rows[632:]): + raise ValueError("owned output nonzero") + # Clear the eight owned cache returns after the exact zero check. + for owner in range(633, 641): + rows[owner] = {} + return rows, stats + + f, fs = full(identity()) + b, bs = full(identity(), True) + if fs[0] != bs[0] or bs[0] != Counter({int(k): v for k, v in p["paid"].items()}): + raise ValueError("paid mismatch") + for first, back in ((f, True), (b, False)): + z, _ = full([dict(r) for r in first], back) + if z[:632] != identity()[:632] or any(z[632:]): + raise ValueError("not a two-sided inverse") + # Check the inverse independently from the full scalar endpoint formula. + M = json.loads((SRC.parent / "coded-native-caller/NORMALIZERS.json").read_text())[ + "mode_columns" + ] + for j in range(632): + row = {(j, ()): F(1)} + if j < 112: + row[(112 + j, ())] = F(1) + for k in range(8): + s.add(row, {(p["mode_owners"][k], ()): F(1)}, -F(M[k][j], 4)) + for i in range(112): + s.add(row, {(112 + i, ()): F(1)}, -F(M[k][j] * M[k][i], 4)) + if j in p["mode_owners"]: + k = p["mode_owners"].index(j) + for i in range(112): + s.add(row, {(112 + i, ()): F(1)}, M[k][i]) + row = {k: v for k, v in row.items() if v} + if b[j] != row: + raise ValueError("independent inverse formula") + controls = [] + try: + full(identity(), True, 1) + except ValueError as exc: + if str(exc) != "inverse copy did not erase cache": + raise + controls.append("wrong inverse COPY sign rejected") + if len(controls) != 1: + raise ValueError("wrong COPY sign accepted") + try: + apply( + [["zero_retag", 0, c["start"][0], c["start"][0]]], + identity(), + c["start"][:] + [None] * 9, + True, + ) + except ValueError as exc: + if str(exc) != "nonzero retag": + raise + controls.append("nonzero reverse retag rejected") + if len(controls) != 2: + raise ValueError("nonzero retag accepted") + # Each inverse rank-r Gaussian is the positive child followed by a bit translation. + _, _, ce = s.authenticate() + for rank in range(1, 10): + G = ce.fourier(9, range(rank)) + positive = G.then(ce.xgate(9, (1 << rank) - 1)) + inverse = G.adjoint() + if positive.tab != inverse.tab or positive.zero_state() != inverse.zero_state(): + raise ValueError("inverse child phase") + # Exact adjoints of each physical boundary retain their absolute phases. + normal = json.loads( + (SRC.parent / "coded-native-caller/NORMALIZERS.json").read_text() + ) + words = [r[k]["literal_word"] for r in records for k in ("input_K", "output_N")] + words += [ + port["compiled_wrappers"][k]["word"] + for port in normal["ports"] + for k in ( + "backward_input_X", + "backward_input_Y", + "backward_output_X", + "backward_output_Y", + ) + ] + + def literal(word): + op = ce.ident(9) + for e in word: + if e[0] == "P": + a = ce.perm(9, tuple(e[1])) + elif e[0] == "D": + a = ce.diag(9, tuple(e[1]), tuple(e[2])) + elif e[0] == "X": + a = ce.xgate(9, e[1]) + elif e[0] == "phase": + a = ce.Op(9, ce.identity(9), [("phase", e[1])]) + else: + raise ValueError("nonmonomial wrapper") + op = op.then(a) + return op + + for word in words: + A = literal(word) + B = literal(A.adjoint().circuit) + for v in (A.then(B), B.then(A)): + if v.tab != ce.identity(9) or v.zero_state() != ce.ident(9).zero_state(): + raise ValueError("boundary inverse phase") + bad = literal(words[0]).adjoint() + bad = ce.Op(9, bad.tab, bad.circuit + [("phase", 1)]) + v = literal(words[0]).then(bad) + if v.zero_state() == ce.ident(9).zero_state(): + raise ValueError("phase mutation accepted") + controls.append("same-tableau inverse phase error rejected") + # Count the literal schedule, including inverse cache ADDs and initialization. + ordinary_forward = Counter(e[1][0] for e in new if e[0] == "scalar") + ordinary_inverse = Counter() + for e in new: + if e[0] == "scalar" and e[1][0] != "clear": + ordinary_inverse["add" if e[1][0] == "copy" else e[1][0]] += 1 + for program in (p["input_basis_program"], p["output_basis_program"]): + for e in program: + ordinary_forward[e[0]] += 1 + ordinary_inverse[e[0]] += 1 + ordinary_forward.update(clear=9, scale=16, swap=8, monomial=464) + ordinary_inverse.update(clear=17, scale=16, swap=8, monomial=464) + # A positive-child inverse needs at most one further translation per paid call. + ordinary_inverse["child_inverse_translation"] += sum(bs[0].values()) + + def log_bound(a): + e = 0 + while a > 1: + a /= 2 + e += 1 + return e + + bound = 0 + for e in new: + if e[0] == "scalar": + op = e[1] + if op[0] == "add": + bound += log_bound(1 + abs(F(op[3], op[4]))) + elif op[0] == "copy": + bound += 1 + elif op[0] == "scale": + bound += log_bound(max(F(1), abs(F(op[3], op[2])))) + for program in (p["input_basis_program"], p["output_basis_program"]): + for e in program: + bound += ( + log_bound(1 + abs(F(e[3]))) + if e[0] == "add" + else log_bound(max(F(1), abs(F(e[2])))) + ) + bound += sum(log_bound(max(F(1), abs(1 / F(r["cache_scalar"])))) for r in records) + receipt = { + "status": "PASS_SAME_PAID_NATIVE_TWO_SIDED_INVERSE", + "source_pr": 5402, + "source_head": "3348fccea855082786d5f0fc5558b73d4974e745", + "independent_original_columns": 632, + "owned_outputs_zero": 9, + "paid": dict(sorted(bs[0].items())), + "removed_dead_C0_records": dict(removed), + "live_cache_substitutions": substitutions, + "inverse_copy_uncomputations": bs[2], + "inherited_record_types": inherited_records, + "boundary_adjoint_checks": len(words), + "inverse_child_ranks_checked": list(range(1, 10)), + "ordinary_forward": dict(ordinary_forward), + "ordinary_inverse": dict(ordinary_inverse), + "inverse_local_amplification_power2_bound": bound, + "failure_controls": controls, + "scope": "All-width native inverse of the coupled provider; no autonomous credit for the coupled outputs, complete caller, full precision/compiler bill or new kappa.", + } + return receipt + + +def main(emit=False): + origins = json.loads((HERE / "ORIGINS.json").read_text()) + pins = json.loads((HERE / "SOURCES.json").read_text()) + archive = (HERE / "SOURCE.zip").read_bytes() + if sha256(archive).hexdigest() != origins["archive_sha256"]: + raise ValueError("source archive changed") + with tempfile.TemporaryDirectory(prefix="native-coupled-inverse-") as tmp: + root = Path(tmp) + src = root / "research/native-rank8-helper-provider" + src.mkdir(parents=True) + with zipfile.ZipFile(HERE / "SOURCE.zip") as z: + if set(z.namelist()) != {r["file"] for r in origins["files"]}: + raise ValueError("source archive inventory") + for row in origins["files"]: + data = z.read(row["file"]) + if sha256(data).hexdigest() != row["sha256"]: + raise ValueError("source archive member changed") + (src / row["file"]).write_bytes(data) + for row in pins["files"]: + if row["usage"] != "input": + continue + data = (ROOT / row["path"]).read_bytes() + if sha256(data).hexdigest() != row["sha256"]: + raise ValueError("main input changed") + dst = root / row["path"] + dst.parent.mkdir(parents=True, exist_ok=True) + dst.write_bytes(data) + receipt = check(src) + receipt = json.loads(json.dumps(receipt)) + if emit: + (HERE / "RESULT.json").write_text(json.dumps(receipt, indent=2) + "\n") + elif receipt != json.loads((HERE / "RESULT.json").read_text()): + raise ValueError("committed receipt differs") + print( + receipt["status"], + json.dumps( + { + "columns": 632, + "owned_zero": 9, + "paid": receipt["paid"], + "controls": len(receipt["failure_controls"]), + } + ), + ) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--emit", action="store_true") + main(parser.parse_args().emit) From 123ffa6aa7c1866ac60c67739841f71d95b3edf7 Mon Sep 17 00:00:00 2001 From: Ali Romman <226877337+aliromman@users.noreply.github.com> Date: Fri, 23 Oct 2026 19:22:20 -0500 Subject: [PATCH 2/2] Record portable inverse replay and exact validation limits --- research/native-coupled-inverse/README.md | 4 +++- research/native-coupled-inverse/VALIDATION.md | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/research/native-coupled-inverse/README.md b/research/native-coupled-inverse/README.md index 1db6e2d577..ea6786053b 100644 --- a/research/native-coupled-inverse/README.md +++ b/research/native-coupled-inverse/README.md @@ -28,7 +28,9 @@ for ranks 1 through 9. No independent human or formal-kernel review is claimed. ## Reproduce -Python 3.12 and its standard library suffice, from the repository root: +Python 3.12 and its standard library suffice for mathematical replay. +The optional source-history preflight also needs full Git history. From the +repository root: ```sh python3.12 -B scripts/research_package.py --package research/native-coupled-inverse diff --git a/research/native-coupled-inverse/VALIDATION.md b/research/native-coupled-inverse/VALIDATION.md index ae093ea56a..8eeb8158f5 100644 --- a/research/native-coupled-inverse/VALIDATION.md +++ b/research/native-coupled-inverse/VALIDATION.md @@ -12,8 +12,16 @@ phases for ranks 1 through 9, and three semantic rejection controls. The registered normal and isolated optimized Python 3.12 replays passed. All eight archived source files also matched their exact Git blobs at the -pinned PR5402 head. Publication/export checks are recorded below after -execution. Hosted CI is separate. +pinned PR5402 head. Committed-byte comparison and official export integrity passed for all +16 package and declared-input files at scientific commit +`c85cc03c69137fc198261403b6b674f0e025cf89`. A fresh read-only Git-free export passed the isolated optimized replay. +Hosted CI is separate. + +The optional `--check-source-history` command stopped at its full-history +guard because this checkout is shallow. It did not run its ancestry audit. +The package base is the exact parent of the scientific commit; the eight +archived pending-source files were compared directly with their pinned Git +blobs. These checks do not replace the unrun full-history command. No complete caller, full multiplier, selected cold replay, full recursive compiler or outer admission, independent human review, or formal proof-kernel