This route does not exist.
Return to the product, review the sample workspace or inspect the source.
From 81e63867c52fa08317647fa6b9ce8a46e8f9b319 Mon Sep 17 00:00:00 2001 From: Mattyu <25262258+mattyu-dev@users.noreply.github.com> Date: Wed, 15 Jul 2026 14:30:02 +0200 Subject: [PATCH 1/4] Rebuild homepage as SaaS product entry --- .github/workflows/ci.yml | 4 +- CHANGELOG.md | 8 + CONTRIBUTING.md | 6 +- README.md | 12 +- docs/404.html | 5 +- docs/architecture/system.md | 2 +- docs/assets/brief-evidence.png | Bin 237925 -> 237087 bytes docs/assets/case-study-desktop.png | Bin 789044 -> 0 bytes docs/assets/case-study-mobile.png | Bin 572678 -> 0 bytes docs/assets/fix-lab.png | Bin 174100 -> 173287 bytes docs/assets/geist-latin-variable.woff2 | Bin 0 -> 29400 bytes docs/assets/geist-mono-latin-variable.woff2 | Bin 0 -> 29896 bytes docs/assets/guided-receipt-mobile.png | Bin 142814 -> 143070 bytes docs/assets/guided-receipt-mobile.webp | Bin 76710 -> 77452 bytes docs/assets/guided-review-mobile-step-2.png | Bin 35967 -> 35045 bytes docs/assets/guided-review-mobile-step-3.png | Bin 36099 -> 34705 bytes docs/assets/guided-review-step-1.png | Bin 158817 -> 156620 bytes docs/assets/guided-review-step-3.png | Bin 167266 -> 162154 bytes docs/assets/portfolio-desktop.png | Bin 693849 -> 0 bytes docs/assets/portfolio-mobile.png | Bin 559844 -> 0 bytes docs/assets/product-desktop.png | Bin 0 -> 988777 bytes docs/assets/product-mobile.png | Bin 0 -> 587389 bytes docs/assets/social-card-v2-0.png | Bin 136726 -> 0 bytes docs/assets/social-card-v2-1.png | Bin 0 -> 135329 bytes docs/assets/social-card.png | Bin 136726 -> 135329 bytes docs/assets/workspace-desktop.avif | Bin 53210 -> 62211 bytes docs/assets/workspace-desktop.png | Bin 193002 -> 192389 bytes docs/assets/workspace-desktop.webp | Bin 90276 -> 96588 bytes docs/assets/workspace-mobile-detail.png | Bin 106518 -> 106038 bytes docs/assets/workspace-mobile-hero.png | Bin 69074 -> 68906 bytes docs/assets/workspace-mobile-hero.webp | Bin 32796 -> 33214 bytes docs/assets/workspace-mobile.png | Bin 156565 -> 155948 bytes docs/assets/workspace-mobile.webp | Bin 76724 -> 77962 bytes docs/brief-evidence.html | 4 +- docs/case-study.html | 15 - ...tudy-lighthouse-accessibility-desktop.json | 2291 ------ ...study-lighthouse-accessibility-mobile.json | 2296 ------ ...case-study-lighthouse-quality-desktop.json | 6602 ---------------- .../case-study-lighthouse-quality-mobile.json | 6607 ---------------- docs/evidence/interactive-rule-pack.json | 4 +- ...olio-lighthouse-accessibility-desktop.json | 2291 ------ ...folio-lighthouse-accessibility-mobile.json | 2291 ------ .../portfolio-lighthouse-quality-desktop.json | 6692 ---------------- .../portfolio-lighthouse-quality-mobile.json | 6803 ---------------- ...duct-lighthouse-accessibility-desktop.json | 2321 ++++++ ...oduct-lighthouse-accessibility-mobile.json | 2311 ++++++ .../product-lighthouse-quality-desktop.json | 6831 +++++++++++++++++ .../product-lighthouse-quality-mobile.json | 6808 ++++++++++++++++ ...pace-lighthouse-accessibility-desktop.json | 382 +- ...space-lighthouse-accessibility-mobile.json | 374 +- docs/evidence/workspace-runtime-qa.json | 122 +- docs/fix-lab.html | 10 +- docs/index.html | 500 +- docs/product/product_spec.md | 2 +- docs/qa/quality.md | 6 +- docs/social-card.html | 4 +- docs/workspace.html | 32 +- meta_importer/ai/evidence_page.py | 4 +- meta_importer/fix_lab.py | 6 +- meta_importer/html_quality.py | 2 +- meta_importer/launch_workspace.py | 32 +- meta_importer/portfolio_page.py | 59 - meta_importer/portfolio_v19.py | 246 - meta_importer/portfolio_v20.py | 256 - meta_importer/product_landing_v21.py | 457 ++ meta_importer/product_page.py | 55 + package-lock.json | 26 +- package.json | 4 +- pyproject.toml | 4 +- ...tfolio_page.py => rebuild_product_page.py} | 11 +- scripts/workspace_runtime_qa.mjs | 325 +- tests/test_launch_workspace.py | 4 +- ...lio_surface.py => test_product_surface.py} | 104 +- uv.lock | 2 +- 74 files changed, 19926 insertions(+), 37307 deletions(-) delete mode 100644 docs/assets/case-study-desktop.png delete mode 100644 docs/assets/case-study-mobile.png create mode 100644 docs/assets/geist-latin-variable.woff2 create mode 100644 docs/assets/geist-mono-latin-variable.woff2 delete mode 100644 docs/assets/portfolio-desktop.png delete mode 100644 docs/assets/portfolio-mobile.png create mode 100644 docs/assets/product-desktop.png create mode 100644 docs/assets/product-mobile.png delete mode 100644 docs/assets/social-card-v2-0.png create mode 100644 docs/assets/social-card-v2-1.png delete mode 100644 docs/case-study.html delete mode 100644 docs/evidence/case-study-lighthouse-accessibility-desktop.json delete mode 100644 docs/evidence/case-study-lighthouse-accessibility-mobile.json delete mode 100644 docs/evidence/case-study-lighthouse-quality-desktop.json delete mode 100644 docs/evidence/case-study-lighthouse-quality-mobile.json delete mode 100644 docs/evidence/portfolio-lighthouse-accessibility-desktop.json delete mode 100644 docs/evidence/portfolio-lighthouse-accessibility-mobile.json delete mode 100644 docs/evidence/portfolio-lighthouse-quality-desktop.json delete mode 100644 docs/evidence/portfolio-lighthouse-quality-mobile.json create mode 100644 docs/evidence/product-lighthouse-accessibility-desktop.json create mode 100644 docs/evidence/product-lighthouse-accessibility-mobile.json create mode 100644 docs/evidence/product-lighthouse-quality-desktop.json create mode 100644 docs/evidence/product-lighthouse-quality-mobile.json delete mode 100644 meta_importer/portfolio_page.py delete mode 100644 meta_importer/portfolio_v19.py delete mode 100644 meta_importer/portfolio_v20.py create mode 100644 meta_importer/product_landing_v21.py create mode 100644 meta_importer/product_page.py rename scripts/{rebuild_portfolio_page.py => rebuild_product_page.py} (65%) rename tests/{test_portfolio_surface.py => test_product_surface.py} (75%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6a65fea..761c2f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,7 @@ jobs: - name: Static checks run: | uv run --frozen ruff check . - uv run --frozen mypy meta_importer/ai meta_importer/clock.py meta_importer/review_policy.py meta_importer/fix_lab.py meta_importer/portfolio_page.py meta_importer/portfolio_v20.py + uv run --frozen mypy meta_importer/ai meta_importer/clock.py meta_importer/review_policy.py meta_importer/fix_lab.py meta_importer/product_page.py meta_importer/product_landing_v21.py - name: Tests and branch coverage run: | uv run --frozen coverage run -m unittest discover -s tests -q @@ -70,7 +70,7 @@ jobs: uv run --frozen python evals/brief_mapping/build_dataset.py uv run --frozen python scripts/rebuild_ai_evidence.py uv run --frozen python scripts/rebuild_fix_lab.py - uv run --frozen python scripts/rebuild_portfolio_page.py + uv run --frozen python scripts/rebuild_product_page.py - name: Rehearse v1 launch workspace run: uv run --frozen creative-launch plan fixtures/fake_agency_creatives/manifest.csv --out runs/fake_agency_creatives/launch_plan.json --review runs/fake_agency_creatives/review_packet.md --html runs/fake_agency_creatives/workspace.html --html-audit runs/fake_agency_creatives/workspace_audit.json --state runs/fake_agency_creatives/review_state.json --platform-preview runs/fake_agency_creatives/platform_preview.json --store-dir runs/fake_agency_creatives/store - name: Rehearse v2 launch workspace diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f53514..602e3e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 2.1.0 — 2026-07-15 + +- Promoted the complete product narrative to the canonical homepage and removed the legacy secondary route instead of redirecting it. +- Reframed every public section as a SaaS product story: problem, review workflow, controls, evidence, pilot and one compact builder block. +- Replaced the warm editorial palette with a cold-neutral Geist system and one accessible coral action color, while reserving green, amber and red for status. +- Applied compact shadcn-style controls, pointer-gated states, tactile press feedback and explicit reduced-motion, reduced-transparency and increased-contrast behavior. +- Renamed active landing generators, tests and evidence from portfolio terminology to product terminology. + ## 2.0.0 — 2026-07-15 - Rebuilt the public entry as one product landing: pre-launch outcome first, a real interactive workspace in the first viewport, concrete checks, a focused review loop and one closing builder block. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dee4390..bd0d16e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,19 +7,19 @@ Before opening a pull request: ```bash pip install -e '.[dev]' ruff check . -mypy meta_importer/ai meta_importer/clock.py meta_importer/review_policy.py meta_importer/fix_lab.py meta_importer/portfolio_page.py +mypy meta_importer/ai meta_importer/clock.py meta_importer/review_policy.py meta_importer/fix_lab.py meta_importer/product_page.py coverage run -m unittest discover -s tests -q coverage report npm ci npm run qa:frontend ``` -If a change affects generated fixtures, the brief benchmark, AI evidence, portfolio entry, Fix & Revalidate Lab, or the static workspace, run the corresponding generator and commit the updated artifact: +If a change affects generated fixtures, the brief benchmark, AI evidence, product entry, Fix & Revalidate Lab, or the static workspace, run the corresponding generator and commit the updated artifact: ```bash python scripts/rebuild_ai_evidence.py python scripts/rebuild_fix_lab.py -python scripts/rebuild_portfolio_page.py +python scripts/rebuild_product_page.py creative-launch plan fixtures/fake_agency_creatives/manifest_v2.csv --html docs/workspace.html ``` diff --git a/README.md b/README.md index 125a5ce..8147ea5 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [](https://github.com/mattyu-dev/creative-launch-workspace/actions/workflows/ci.yml) [](https://github.com/mattyu-dev/creative-launch-workspace/actions/workflows/codeql.yml) -[](https://mattyu-dev.github.io/creative-launch-workspace/) +[](https://mattyu-dev.github.io/creative-launch-workspace/) [](LICENSE) Catch approval, mapping, destination and placement errors before a large Meta creative launch reaches Ads Manager. @@ -17,7 +17,7 @@ Deterministic rules check each AI proposal before a person decides an ambiguous [](https://mattyu-dev.github.io/creative-launch-workspace/workspace.html) -The public landing and interactive workspace share one warm operational system: an ivory `#f4f1ea` canvas, ink typography and a single ember `#b83b1f` action color. Success, warning and blocked colors remain reserved for status, while the product and its proof now live on one canonical page. +The public landing and interactive workspace share one cold-neutral product system: a `#f6f7f5` canvas, Geist typography and one accessible coral `#c83b24` action color. Success, warning and blocked colors remain reserved for status, while the product and its proof live on one canonical page. [](https://mattyu-dev.github.io/creative-launch-workspace/workspace.html?guided=1) @@ -178,10 +178,10 @@ The same QA run completes the guided 1→2→3 decision path, verifies that it c - [Runtime browser QA](docs/evidence/workspace-runtime-qa.json) - [Desktop accessibility](docs/evidence/workspace-lighthouse-accessibility-desktop.json) - [Mobile accessibility](docs/evidence/workspace-lighthouse-accessibility-mobile.json) -- [Portfolio desktop accessibility](docs/evidence/portfolio-lighthouse-accessibility-desktop.json) -- [Portfolio mobile accessibility](docs/evidence/portfolio-lighthouse-accessibility-mobile.json) -- [Portfolio desktop quality budget](docs/evidence/portfolio-lighthouse-quality-desktop.json) -- [Portfolio mobile quality budget](docs/evidence/portfolio-lighthouse-quality-mobile.json) +- [Product desktop accessibility](docs/evidence/product-lighthouse-accessibility-desktop.json) +- [Product mobile accessibility](docs/evidence/product-lighthouse-accessibility-mobile.json) +- [Product desktop quality budget](docs/evidence/product-lighthouse-quality-desktop.json) +- [Product mobile quality budget](docs/evidence/product-lighthouse-quality-mobile.json) ## Engineering choices diff --git a/docs/404.html b/docs/404.html index f1916cb..98a9765 100644 --- a/docs/404.html +++ b/docs/404.html @@ -4,13 +4,14 @@ - + +
Return to the product, review the sample workspace or inspect the source.
YvG)kZ(h4O z353{*qbSkkL7*R(=#EhYJc^9)q9qG zJO<+H?t?7|*268DVroX60rybQcTXhJwJyaOt_f>1HKyn0G(KLJ8a0!(W`9EgPB!{4 z 5C=)?bk*;6e-S~7-y9Qq4e0mDYiM2KimxF^ zhRuig0ul#1W=j^Q-9F(=%?`+9=NP_D+voru3z;g{e`qspSygN&Pz?8SE7@Liy^{=Q zywQIt?TJXb!mMri^`g$T;f&IC9Xy9bzAhI=;<1jO-WIM&wT5uH#=LahGM`9U|13w= zKC1ZKZUwyQ(L a(dubP%TUREtp1t71`T znRwQiRC8wd34B%YdqKw{N|%1k>)+bjMvO=hwH|B5;umaET-~}jkCpqT#MQ|$t=L); zIA7vSdOF;0Wc{cYmt{0S^&CT^rn(;^JFClgTR}xe@lCin4i{V9ZtJB~I?XMQ>xT+D zrTM4yySqg3i)`-Bl@MfIS_`l{5P!y4b#Yet&7*nRcEuP;Lp~zF3z{vQ*W0*-Oa2Mm za)7xb^nhtMCTv5@9kR;m@X5-;AmY{WYoNSS9abF@6Skj_q>yKBAY{&tO5}a-sem~* zIxvyTafR>lz;p?z<3TgIhgQ|hfz2uMte<9G>6C@X{B!#m!7#z(+Tc{JVB7n9ozBX1 z1HTa!c=q!!P0gVg8!RqM)`{LeR|dLP^S)32$+X&@vz&8hOTAz|eXoCqSaE $sZ__zuEBMWN;?a65T-m LXI3ts lx z@6CzGu2ow}U(FRjyg%4R;i-*y!q09CHP~K`ZV=sz{>HyDGFx01? z6a4m_-q-Hx$S6f}G{iGKC$QhiiZ>2IX9vYJ-SJw3KAA5#8n2zfRn%LWxAzHdK30Oq z-ZBSx!=B#^K@Zejl$KlnrpG7r4?MNV7#LTy6`eUkxI35f@f%*3vBhaKHiJ1dl)qWP zi*f#TF3;<+|Dy$Hw+1zP30zB$AxeqMxoEpz>4Mi~Ea`G)ujFm!xXaX6>m5uN&$2T| zxi$wEH>I 6tn(19RopS^@734pV ?DYjo^l^8+A~k$wAz!n#pXT-VX!ci` zp>|iXIaFk4)56e;s(xzKua<8^1)GU(AK0kvP4i3Xtle_WO)NNViOgS%Ip`M$a)b=8 zUB#sL7YpBD2O}I*iB4fBT7E9E+CQw}1jbWS*UQT ?$0?{j7rcBelc9nU3%l=SM hmMgh2 zC78IHJ8&B+|1L1x vvI_EW(cK<1Wz~4+bb-J7LUf;rUkX1WfI5m%D@6dD$j^sa#Pwl0XC3%}-Jvzr z;JXP52>0+NcR2!%+NQ8DTDp>1vg_(52lxB1WJ-h)PWveIMvx>|8nYRz|IQ=JNl`Ra z|EyaVP^s9lIPiqrSc@T|{-}RBxX?5t3okGcx3=1m1Lb#@tq)03IjyjsHjs8qOaxXS zXav)BwHAp9@94cfJ6>6jr*&V=+hpt+7lyHRJzPfD2E>`TX?{RLbcs-YikJe=uybg( zU;J}oF9Kf##U6`^%jw0> dTB(bsH!SjIGm=K>Ft z hewIK5kFgorjiGlo8XLNT&`x$GHnH(^5o=MNM9r= zuKV*s_oar}xCk#=BlK(MuML6onU~N08SYnjql=Y#HJoik*56Ye$T{2#?X}&|bX_?W zUSC3qO=26DBG|1OXlD C+{C9L&Sw zn#P(e(E1vG=e|V-6%B ~5KX p4JiWg=)fRUo*tv`ZGg@Hi5+;?>dufbJ{vfy7KX5JB zb}=L0A+6x^136`0D#HsLt;x5+%sKgCExK;X7XJnI0B(3-$Jzo4+sLPK+ffpoLg+B8 zV_8bG{#+H1Ai`T8h`74C`k%qVyw69(PHvtz!6Y??;uzsc`GgJUE1X92EN123VuREO zh>}0{1P-Y0O5gpiml7;b8+rBi 031Cw tzM2A9Zxc=qqmCIdUi wnK)o7@L3yTl8Yt)PNzV+sw zMJ5+3M(d9n#bc9*lgP8R7uN@Lfh52}GSYi2r^~ +i#aZ#NeyJ|Q7T(6`Ze$|M7r)ONk^efog- zFY^8(o$>O;U@|r~_L@(-ySuCJ#bsYGa!gQAaB~U=XIy4Tps2d~%qESTf`UScV%o2& zs)@e`DMI@m-u$;XHJnuLalAxxreR<}h9olP-3cQVGMOn+%Gs|eNZ5kfFQXDL^!{^$ z6lGW5TI1P@_tqW8Q(}$j0Eg{T;!9=MbX{Fk!`Z2>2DF*w2m+RS=otkW*_e>KXW(j! z>%6O_5&=N<+dl#_x@c@}KNU5#R)sE8s@L5p(FdLl3gsq;EIOrZZEfw9w!j>;SG-HQ zKf7Mqe59cX$yqf W=(ta$g_xjz8-8|{x)N^$ H@et9EpZ4K}3 ze11iefeJfanFE8tv$N(KImzkiWt3%+e+@?mO*BZC&lUO+)@++HF8&=IfAotc!@1+M z@jJTT!ri}rzgUb4G<1`fui$gfXs~K=To3qrTL8%io|y?)?)$cKP%GBSQiB});Ck!w zl29M`Rn-u2CM6JG%nT+mYCSwYu7d&{eRoj*ZV-eK^!nP=(sDqsvA+J7PJu<&E5ve* z3Wih+)6(C<)Ja&hJcKh4q!*lViHY@=XF|{#b0N9^>v>bA11$rOcTn?)T7I{8&}Qey zyQm*O-XMuQ78Sn1A+;KQ`{K}Kwe|XJ9b`$Nx7}b2f8<7!Xps0=b8D*$Otw&M;O%j6 z@|fNa%TE8jw^zs^-@e(c)O%0G(~LSMq^I9)_Kir#P>lF-Qc`|J9VWypDlB}Bh 49~)7^lb zIaE3bbqbX^n3Xk$g@+Owwb5VgpY196a?0@y=S>R<2xJbe!TtF_Z})aBq0$&Kf0kin zVnS8WdUNBY`w;bA+Cou=ul#JSO^Gp%8-eUS3kyqYE?c0ow)Vm;8bK#AB7j%;L_FPS zO)E@@+5l&tbmTXU3VG|e-yI}OlZ1d^;O9Q(1K*oT6sZg#2`MS5d Q<)`24!tZG~c^$Lc z>l-+2XMU=-)Lse#CjAf1ml-W5vWvWymzM6 ~tvt>gwtSnIj;80-r7ydwY9Fd)1|tr1j)n9_3}^3#S3>RP4+`io2?j z5Qvkzdz=3rwBd;R1_h{@1};kHw4JLKMOdO-S^^p*0F1BBz2uA-fj?JUd{aD%vnrSh zP*I ?HLM1n5bjKF5-{rvxZk0h>+#h)g1o1tPH9k=C R_Xca18?8D>B*X# zuehOBPh>sD?dN4|UEt7#CE&u7fbDc~gIAVK-)DpW(E{9%{VumlcNn!$<6p6J+Ap~s zCJvd8B&x7t(&!(boG4`q^kM#qCg;@$8FtLf%phY@oGdq`U`U$TEY|iN>(nL6<5&N* z^Ii;3!rd<9r$eNiE>S45i|FhWDtOHhz5>t6 uoslnF=+MJQfl$L5bF!aBbu$y0|i_qR~(E>(WN#UWdPJlE|uKb()1*y z1Bbvxo9&^5A+nz= VR*mNEQ-%$M2x@0oHfl? ztv9zex4SuiE^Mi$v#!h63A$uSVKy>s@QJ#K07%^qZ%M~&PvjUqU>C`ZX9_kstonG* zzr*)eN?|h0WC;{Xs{&gFUR>@>mnZ>ndO?xs`|E)h`5}>zbf?pY+u8DYhJX~jkrdeB zBDLJ65>T}n ~`Qnl;_#qvGg(HZz$0u+z!{Lvk610b^s##(VdaTO^&an zr6@EejdqLa4w>?v0d;%hg09eGsJ&j_pRpjx2uyMTde<)fmcSXG+}t8xrA0PqT){vu z%3JOxtt~pmM4i-+)Apr#;-RDIyyD9B ^ zVM1bFF`+i4LMF3~+B{aH4cg#wVM?dkX(~Fa4SKRDj+h#5+3CEs+dGtyG<080MYRJx z7nAnr=~s}BAvaB25E~}`_U$z$1($r6-6kyq@!_OI2oyn5A6JW!SC~dL6rD`7#3QRh zj|-&?s;uJ)zi*q#%Irf^_IPL%3G8^4?yUOoaGzBtD*lZd6(C{q^AybapmxU%>z#ZF zPCT~wL4SE9#P{%U)938e9tQ{K2?B?0OF4-Iu`TM+neoZ5FewDnxdXql&wtaYvlRA) zy7k;$%kL@&*k?T??H?SV6i>o_bShk8zqGI@j*E-4ovXxA$B8}oQ!wCu#93X}pa8R} zcAmE2b0sX2l d>X9^e$jCNcM*U=H~rW6DQ?F#A@9x9T)wc;*~;~5=Vj x=(Kp*p z6>=@Ud`X@LGX893wa|;Qg*Phxd9?Xr3vnPtqu33=5FQhw *hm5BlzSd~aw#x4b zH#f1hVWW00Uc25mPq@0DOWu;95&*<#=5jiOg p~6Nd#B3-E1}e3b2@bdU%m&P)vPFiUt}3}|su{QV^$q*q!yECz zu=-dHQ6_u)04DUeCuwB-9*Q|aQNnSRv6r ZP=KS;m%3qAHJtpX}@RSg}tgteEYp_tJdjU$AJ5N`R?xSN^fh!(ars>w4`*z zC&b-iizzlXTtS8(D-7x~Y7(+V9-k~x%A0=abd-6V=pv%wZs(g*80EO`G5=bx7G 0W?JObR(oDO-Su!;Bt;7JQ&qGHIRm$x_h+waB{BZgrSzaBsQUdit_Rj)=Ec z5MaU6CAuCmTdrwyWHl0L2dMaMU#3k1@Og)WW9fN4Z#4#w=z?AwFF?_lG{HX518N@O zfk^VzPXD&ezHn#P(C^=kK;Evi!?QtENLh5aUko}-^a^FL95x{bYHF&g)>_9aEox3w z&U9b2;Tdtc(HaK}i`i GyUXlO9 ^(kzI `Ez{ zJ;@hn-Jrp!#bKLVyf_nipawVlk@c@}!c|CtyYpYgk+m{c7h3%J$vjW3p93C!pvOWE zD-ut7liB)>ezy*W>p9kIGZQ(TpdcSX1!C@EN3~m*oybUxjt&r TeKg7wb8*487w|uCZsuuakdly4zWgbl2L4O-&EDQ^D3hoU zPH2b~Z*JN`p_|_HhP9>YI;<*&1*fCU9w$C)?cU;I;ufQ+G-v&Z4#;huN1FK(&WwzV zT YQcI%zu79r<~Wc&^*?+bRhib%NZ*Sd4q-G>wRf6`YLA+1u(|5DkSwsd@| zcnG~d;`2Q074mR%IbJNs48&09>a?6!w6!LD5B<~gy=JRF%+}TI1nj*!5k9cCwq{5n ztUA7Ve0z0SCZ%S_>a_7 %%gwN}up-xx5y zWaxpTZ@ck!@1U?8VSlr2C!fuk0{EhF8T>U?xWi2n-`h^+#%;_Lxka{Rl(QR (A^8Onx>m_;R7~`pKL _uU5F*%QuvVaFl$a;z5U}Y=#m!w=kfTo2d$H&%>t}Vt- zSPu!Hw{Db0XK!JN%q@H4*}El(yf2?#MrCl~nEi+*6I88oFzCvJQ~E^JKNK)AO-*0u zG5-9a&)%)WK(qk?^HbTd^g1MEeB!qB4;;pK+(UL)B-2)e{Cz(CWz4?DsoK{fo>vdC z&7O{nP0|(?7Mm7t_L%7p@!3rG@iT| rk z9~u7xp~(Eeyyf5|2b0>*OenYy4W78ZHQwITm~Ik{XY&W%?a_0&VXoH8;xJ4YwL4L+ z&Y Ivf+q9@w55J+?0`sB5=d{Rwg1qyL2sx}LF~?&Vy7r!2Zb2U0;7 zuhIRfOEG6ufb?4m<~p(7^FP$D#Rb62SwgPKzQ7!xg~_}~(gxev-B*LKd?}G>3;DeP zOx%P)+r#w&X;0@YS40G}VM1EXPiphb)Z#sG|3`(l=C^@dv@Dzh!q`sU1$a;k2?an> z*&dps-*W6EZJTqy!Bd!Cq!O9{jAwEOc6tRk3m5y`xn%r2UoQ%L4hRan(@_r&275dl zBl%OqLFgy*OS6ky*1NkqL0^d1`38BB@B+Xs-t7=#T1|&6jVyXZ>8&Hc7o=7!k1zl5 zu!BY&k({h~q*-C!DPhzvjd`j@33}fq`U_Pzi`O5xB3oBdf?6?wo16cX%oNgsPG->3 zkw5cOMcl9Sb0OZ3eV;b>5n54rQ=Fz-egxBU3d4H2R+U+&q>RiP;Wkk%7w<(3cApuU z*2$U}VV~z=;6sfO^035J9f{c@n1;QMB+@OnCW$c_g_c>rUYj+N*}$e)DW`A3VN$7V z6;ChCeh#i^NLmvNzjP*O4ME#Q^HISvYICctU&4i(+MD-XdF00@RTnu=10({Hx#IkP zeuTMI75g=%mtm*m!wzQ?PD^gHu-*_75`IkOb{yR3+D!2{PMq>D=9&84@Kzh-a017B zEhIoxLZr8(GDFb;k9RJjQxAv{uZuj;05oxH8>PIiy8;2~QlG9h%IB1C$pcY4R3u40 z|88+STN}^f0}!@-d-Ww@ASSE_k54;VG5P@j*SdlXC4Jq_n5%qvDe$nvJ=yUH&|VF~ z8QytB7o%3$&*p3Cl$>i5D-9GBlog2MdM65S5RD*?pCd9l`Ypk&l@yjmG!)G!#zX{}k5g6Qw0{DUW8Q{pMHNDd#3nDdPc7$WM?&RGuUZ}}TOa;=_6w5eh#z31mn7nxOHO)Zrb0>DXAr9o?L z3|vyeo;Ys{Bui$NOQ?ot{ Mlvhn8hcCpS<9o{-iU-c_sca+G0&(i|e=VG(S zm`8)bQOiYs?&0<-Li)HM{uXCI36*wti2CE!?3`kt6KZ%RfPgx?({ugh({#hpJc@-f zd~@qRRoJCSSK7U8-A1cO$6#mcw^gXw;Ymzd$-WO`6H2?L$(wUGn_3{hM=D1PB2FH5 z!En?aT-rzqx>PSXP<9TactyZsuu0Bszm%9m6BZe%pVEksf=vVbQEo9PVI5JLQ1YW> zgw$DFxk4oKGImI2W=YbB1 $07jc5CF6Q!mSWml|G&8T2S3 zd3R}nkIA7{;N#9PYYA3svta7NHAnJLiI2-;?JF%g|3OHCw&%F2sv pXZc{K>ny{i~Ba6bL8tH&O6X0Rp+>`la5u=h2)-*Qk_~)aIAN;}+M^ zGfMIhQGI{`ZMaQ;3>jTEGojK~no1f&I1R=^MaDO;AmCgk|K!6_P%m1`AeX~Kb6h84 z)UP;ck~j&E 5{lU?Ez(6~Bq4FTR^-DJ#2at| z`!@P*q@SCgR+Vmx-vKy*E_!FHp|;e@v}aZ=H^B)WxDD`%b1rxB`jgq%YTzeE$3rjJ zWv08#W&gS)83cNcNMXVIC`LIMmH=Yc7oWyIqY&~@S2nPk8zmZcv?-9n=&L~A_j@DH zGCrf_z>4b}MM?9C8g;Uz)yF*@i>*W{t880R Pq~6 z+dn}$`4>9$tGwRe!t0|s@`Wa?heO9lcOI|(ch59(awG9HK=y-Dt)|Kiy^X_5#uC>< zh;@KF*RW2#{dDqBX5zM47p{Te%m& *Xp!Y-LL;UaOL{cBRPtVA7;*)qHXX!p4wz09Ol(C~7fdpF)-23-t~==sy5uPB+j zvsY=siem1D{U{+33V|n#LQqs6Pou+nTGvDC)g?MPRY5JR0~xgWO)TV_2F&;R)E9Ot zDAh^6+NLIIb)wsFTQmlVb6jt=4xByhclY(=)?x_O@cYus`yO%Du(v3eh+HxxCP>^F z;k7d(N+-YPsS5xds5qs#0rC;$aB(u#;Vj$E!{l^sk38g!j*boj)HqwmivqJ9k%$CU z@SI$Hy3d@xF)N2>pwQ2C*v`|vecMRD(%SAM ~LS&V<^B^F@agEn9|8m+NE;~}XpPkW>F+Uea+FRKBfonI8+vO0i zjggBBFZEY(DGj Lot7r^XwIuZGiF;gj>I%=5tG)8Kmi5@y0H7*v5cTwG~AEBe+Id5xMg%Y zJ_kJYW^g-H=yzuN>sK3#UZ^4 *DFFY2w;G>A*TnK13_#l%DqFg+14ORu(i7 9b)yPwTj5!o&( z4xzz*h^K391A)5j5*PB&XPdN%_$L6btD76{b7@{4YSQzydlHk(MA9d^=hm{KEOR;r zgC;~ZHw}4SK-$44Zi2?_*u}vS-5GH@b8cczYv6or9JSQXL^6wjy{aC5C8aKw)x4hX zfRMQKcrlca?U}^hn;WaUlgO~597)82usSPIG&wY&>l>-jnnulAn3()z7=W6$7hZ?` zKgc@kxT?DD+pB~Ef*{=p0*5Z?mhSG7?(SBUPU-G$=|)PryOHkhyo={~-}}4q|Nfk_ z&pvyvHRqV$F*Yc1aWh~=oInFzIB>_5DB6p3yG1ATE;DDnWNV=wVU@FFnLpu>oDB?S z-pin!uTtb1Knv++d=dZK?u&&!%H7PCkeSXY85=gn`7MZ#(`lb5zGtfH>hcofBM+pg zi?CckOsVLN2vTmPuQ^OsULN_Od*njBd#z(qO^JH#Qnh<+QyT>%36FOC%E)LeZcg4j zov@$WtNcZ8Q;v{yx=}E7F&L7(`)1A%4W<}1mSYZfH>!%mpBEZFXrYxU-_4f2+=|LS zl5Atu>b1r0r17k(X2dO;pVivnrO_1KC{s1+>>@u-qZH*1;B8DDqk)OG7>Il+mWhKm zSNM_50I85TDz)^O#Kf#GKS{PCdtaF#`a_9!rP0$%C{Sq=;^6cdC@Md2u<<%$w4U$J z0!4O+PD^t^a}gpWiYaqx{8MarkJWnnsH3}G?g#o6ad!5)0f6Ji58A;U&-W70B#i>5 z8aT#Si@WR`6qC0kQPE{hzk7DcA_RXJN+H_Vs;c%-l8naH4ST~tB~~cze&^HlCl*-K1N4HD&Vd?3)w63qySei4jn_U+p@V7_C_AR9t8 zH7;fRY+&%Q)e}A{15XcD)-CMwY)Ydug1St6d}5ErN2P^%-?1!5oa_>;%oImvwn!l{ zV{YF?8~8ah3X@0@BBVmY+(7&F9tQnC4#G%%hf)a~)$%cg_?(VQ4VLb(!co12I wVl$0AINkB{zA9^bf<=xcB}$z<#ZHi|4%DlRF8hu8ba|MUu*3<;r&gaVQk zk*_Nu>jsAu;}(GIjDtf$ h+yP9$B-iyZeaOCc=HLGLN2yn1`w}D;CmGm`>mJA-^XoJ{}U!FH#>N2EJB7>umt% z#V1xKW3TY+?2kaOzar!Tql2Gch_u5J0vDkDuhIH!uHfg?)s*QYqCbXsq1Sqg4K@@? zp0>1pe~rZDc^k6&vumf@_pwB+vBvexsKXzrL@o<9E4ldA@eLx%6!C1WbGVQ;0xGJ$ zC%31RCCzQ9;v=yIkyMG-JMr z#m&}>oBeJS!Ls!VY<_Fe^?ah|SvdwM=p8cT;_ zb1sPm;&=n$KhqoZ=Xk76A&jk3Y8QJ%(vPu}O7h9rih)G@V&oc{n#o?d8swybEhXyz zq-ottn`B0M`uh2$vfUK9kAl{#P;nhnsd9sxDNR+GT-c!z(BZDYq_BB~%z7&;%rlCy z85_gcLoYFUYrh_W_MM#U%~1%2Vbr%J$aX+LH%U(d)9WXS7^R^!)~oa?AJ{DDAhQOC zJ=#N&??T_sFZNjH9QS7$q~?{1l!GgA!M%)5XZW$zzh`23R?s(~ksoE+nB8WZ{>o+L z>&w-c0EsnEPsP#>8ER@@sBL(hl8?c`4>3gwL_DsH>{wD&CLfW~%CLLedV$7l-4ztG zVM!T=$9;RAz~r+Ji(Za!%lCoow6eCs%m#9IMs6Y+>HD&<&PB(z N*xk@=W3N{`OR5za)iSsF+F4bjofPIryp;}TE&jA}Nd%Rq;*F?p``S5Nq zTuw{VBl(MXX)-(dK$*v|H?=M2J>F&{w7+W@-fF^kpYPa{wpu}U1NJ>8;v;poSyXX! z3W-^U{TPyNORe7C+sC>m=l wZ-%55cFF6Ykr8kakNU}O_9l&TDQIPNpf1BedsMe zZmTJ4qLA=Um H5QnkKB7!BBP*Q3jxwf|f4n#M z3ySj;+&EU#_%7gq3otJ2O=E7Pm)^WF2 J>Mxcw7~ z!+1)g(c+^M_ | z($^K-s_r6p|A(94lS%mia{#JY6(M8!# A9*+=TO&a#drzDA zKuQfmp0<-e9a)x*mm*m@^7#cVl&VIa>3yh_IuM;P-6hA2Kkl|J4FYRReoD zR{h=r5+bA3)nM}7@Ndt1R$kra7%*tbZH%t3cLkf%I|8 cB=!k>pO#`qrZ)ZFI&5!$~_Y`Q=pZx$I~Dv|vx@&S{w%8L+T>AAhT zD~H=G^gBw9PUga#0Bw@!S$$`hmsX3pB}Dwn zMancmzko0z->7Wq#l(#bhoqF457BWKvS}L~>#0~CG_YOb|BHg+VX)!e7Crh9L|G48 z GhqKhZ@}6B8*F-SWD?5N1uLK#A!A z=?3*ZDi$e_^t9-GUy-Y*s0a)B_`#y>#sTSqm$XBlwE`M08i>HLHy;ZU uh6~)os1U-TBDja6<0B@M?>Y^b#OT7*(nn_=fH~?`h15 z%`Jl0(QHNDgWWn6Oqh-E=W4fPGE^USD)Y`)#&UGn+fX|E`w_+pMaSh|0rWvn@%*BQ zzD=%CI E_t8!WNxwKs%#*nRtum ILuC=)86ksFpPR|bA&;Ccz8(T@@zLiQS+QGu#s;*J4cf& zkfV8k7OAlNC7zO4-HCd2zzf 3XE%LptTMC*r4@y_H^z4Tp L$8?>PG|B$ ztY~;Un`nOIPl(91HOCi9h4u-Z2BTk*5`rh0KYi*{DrK=+KugX@)mvE5hP$=gnX2vw z)5eWS1yK~o& 4eDH4rQCf( z4GrN8JHviFP7l=uJ)sDsYtL4s$wIiO>F6*nuYKq!IL0WGyLb7Q?jOhqAmo}80+e9u zGxz}dgRBnI`LtT|E5azb5{+sM87{}&w^2fj*z?v4(YdouThjPl0-^z3U0qD#5RKB} zI+vTVjeedM%BoW~+xzVF-%?yYeszpKr`oM2<&9?DX=AO{gon0FYL;S1#~j9DDh`qZ zf25Lb6mVGbbuv4{EBcQ3`7J099>2fdDGkb;eHKv3Dw+vEH_zql)s`lmPz`Pt3RMmH zxt1$56?fn$LXBzIn=GR0sZ3^b4Pq463=Yf?fThCfh+nng$43^%ah}xy)uS*!Pcw;k z--xaNbk6OnkF5%;ilO>R0MmEMnEZalJL8HFAP%2*<6>mp`+X4)C*VdKpp!m_VEKOf zWV!K5SotWNk(87auJi@RTw$nVAzyhApp|p*UsH *Sm%jT6_Z7gX0S{;#ZGV4l%kRSCb?
KgP>B)JShSJ8XHJa{*(m{Oe?2!*m&QsUdJ<2vUuZJ)sJ{%6qm(noi_(k3RHX_SLpAB^kb-#{r$mW;cNt9{pVH|i-kEZt2OwXEd@LuE3d)6 zH^uikd0o-gN5Co#?L$U;j7T@-1vk2}aA(JYfocHcC?ftNYh2v3)DtTtEXddghlJAl z^Vk5Qr}e|rW@|`G7%oRV4t%9Ov&vj4gV%D|cQAH&YH2U!Guhe)?NBd7e5G$++hG0@ zUy>|f_^%8hF9W#UkLSVia)8H~nwv@!^MeWthe#{-hPo>>r?+=JFQJ%d4@0@&vk>K( z&M#sqi{%pYIC)aTbB+%LtDhuyC|edAol(i(KvwRL|9)o-CS-S#M3$3G{UpYvAufz7 z%jI#t{rKJgo&uFTY>hYP{iv !5OaKi)5_1!ImM z(fAM>c#*s^H{Yu;>?@zAm>EV2lZN*(2F;nYOzLSK A4Lx+-Y k{k&Fd^l=hj`y$@tw$jtje z3bbt}7r{2$ImeQUs4EhZlILiaN{ZPF!jPp*Iscg99JjzymsJ){A$W8>LfOx=ZKL1B zyi-hXEe_{$g3}pBfq;rUovojJ)0V_)&CmyjfS}Q2u+taQ3X6NVs38n%|MUnoUt?_? z&Bwl)B@!;wo!#5IH9#S0)1=r;_-wq81)0FJ!Qo}Y4OPF)cg76k2MToZz*kO{%tK%4 zVn-318J0-8BQ|^^V06HW8MRdqkB0m*86|dQLdXTQvRJP)Hsn|v^aC!p>1_gIB`zKp zh0QBu?qEg{L)nYP3#f?beSyP@gN>Gl+p|0i)z(sjz(}82xASd&-O4Ykfl+y5mN0y^ zNBZ5NYu0atx{6eC3Y1EVip))KNKEo(ey<&9bnP{ndB;3OFPr+NzlQhrej3a~QNr4( z3r8iFvYO8L{w4cuqD~vb1u9|~E)LG0d)TU?`b*ANP_NI8qv@S5Eo?VjZ+qy*E~|(y zFBco(OdDq`fCRYG_T6AeGdF}Dz0R`xnbhk`PFO8Xs5E+*ZsC5y?Y8s22 7v>F}rBy?=$l5$BU;$W{|zablQwFC4b0B9{2 zAb4?~KB_u(RsHz!V=pr$Yn{U3q2ZY1ho3>snpo@^g7HZ;F^9TUpIF3w uHzSJWo0)H+@O-%gPl@Fb1o|gbSb$ z_NH=fV1^SERG0gDd&QEA^s=* nIvPN&X>(JI&cReumVS02t=0tmR z)B&@{AhGVWy>QYTgGTMM(D^Bb>;B3}g(2?aAcv3$D5oM- #2+t(9-0wMnd4*yMJRD5pR6$=Y &v9Ej~6=bAvR%Lul}+o;Px80C-A&G$B-%3EQlOfh*kYbEX0y$Y1F |AYFG Hx=8-z=I=MVrfZCIE%g`RMZWG!yMbN=Gz9MpOjS%Py^G zl&E?FcoOU7dI6YCG^o4a3Q_Tj@+#Fzvltf+p+XYj(9EOupClp_nfm(DLGM#i+3 kPW(>N;)!*ljf}d1B2}b7p8p%pCZGe~M>k!pm8YLa ztE<~e>WBb#mL~xcG7OT~2TzCE^Yxu5Ln>u>Sd=eXY|hdPN8clXGvZ*b qkAbvT*Xrf@ z_g;t}@c=Z$R*Mx~Gc&52w|SB&lwm%qpjn{P%5~5!`h0V`fq;aR+th&@&N`gRgZaa_ z(r7SyKhV!_fq)P{1<(C*mn2pC>Po;L$$YVpH0k9H0owUyXg4VJSp)R;J>4%qnUiJp zk7+mGo$^wb7!MVzal1KeO|yV`hse*$bo2PiJQ=03N2+W%L_~mi^OK42W#1!s57#x> z4E-eOE*Q_FAp95~RbziunsTu_Wmti8&|x;|D{y16SW)oo7RWi6Yj$^?+vP0=1C)!s z`7*1NxhnS^4H?~a^Q-B11l(M pk3i;6hiF!Zo(Na_EsNO(%Yz0-aoW#YUkAAP+`}97LU1{Ab-%-EHTEACE1u-U zNbl&92=lmKO5TtCehGy!kd~J)`d4u~sLJ{25xrt4LcQ8-G)Bs%AY~RWYsh=2qgnflLQh49Dn@}I`4VE5ga2v)-zFz|6>vZXSH5%` zO)+DG(@vAiD6#DYbc4Tkt=9wR@YSh26ScTK@YSvNC77S(BA)( {YIf4SB2V3*_w z33zC5JgCsSv4es71QE5#4*q;wZ9Xmgigb}(r}YHz^k19Kev~ABI8&Ny2C7{wW{(_2 z!@$HlUkvc92ZskgfilZwSoR||0mC{F0>^WQzl;eaHQ4;+f`aP!AmC3CKRD8ppBWlj z79Q>spR5;{IVJS^{AgNSStSme#bdn(82IR$5S<)c1T)?M_liijOg!XBY3{VAM>K&S z&6Dum{(Ks%HAiz50jHD4 K@AN{E)^( zh?GwyL_SACD)m#~fuFD#c(4JQ>UOak<8z%bR9iS%xIUQVy!zwh*6p_W_A(~ndUM!X zU*VfwH6rfBmdtXw>3Ax)JNoNgps|)H E9H^|8;dKiM13FpF>bbMrQMEGz1Tbp3qCj9N6gv1!6kCgb+51s?cK6mYcjn zivqLC%39s8X#4O%2C>gUmI#vdVnuH|v2`ep-5K+F#_m)>7F#3#His*q1=?Ub_oCuf z_hCtz^<<5XK{pXXNlZ+#9ht+n!>41=SBB4SH! e~42rK3v zVCa`OoNP##*F!iNQ}d0svTDO8_${gT&M7fd<4^1$Z+vKgb{V?g5Vx|ZHJDU084tPG zJe3aY!!`~fU=E$!=}Ti8_DSRMHhApF+X}S~;d4-)@smj w_xAz5k3_S5e*z^azK=iJgu%}W$Ekb>Fo?Lrsd>B7UhibI#t)(ZBC3&Zz&fQ zWF*83K9P<+nN$OM#Dc-@aG^ed`t#37L!N$s612FU`FXn!Dx;UGRSKu5R|DQNgY5?s zYuq`P%#AM|yZw4!On+yms*1?)h^&r)022>SY9 `B4UXoM`Eo5Du3gpA zoz&DcHP-X1tBeNYn>4EguVEn8fTDxIpb(kgPMD(isg#2zZ80E>SeP=|;+dez{e-qE zoyHPF914U>xK|%IqPZKKvpyRg){Pruvp8(0HoL=6Wu)uvjFAGJw#D`g w$x!4a8=Q! `N8vy#amEC@;w?9Ij_RH=%g=QNMuZ)QGM7dnY9J9G{ zk$PwtOq9?za;@2{* ;>jvfZfdqx)_xQI(PAZ#psy2^4 el{(jUJzZyHWX$ak$c=RpwXq4qV_#ieB_Zx0 zX(yRM2&hp`v?jibMuOK8-FXkJdHF?onCILO<5Eqy6I(gCQQg0Pf1>=XnxCbLIXyo= zpH+=hHa9ae`|`!a!ay{R`LGiykIGKa;7fWo72e@$hj#Cv{U$xjr(C+vK>o87lh=Et z)lqN#tuE(-)(Q3wv;Q5esfn4NzwfA5Kxpv0cL<1xQB4|cX`aDjSI$R=i?v4!Ef(&i zivw>`6q$?$3~;X~=p?-GJ56Sp@}xl< +|v_Qka0Po31a`LU}bQ?13 zZ?9l>r%O~yHPv9a_1=V}(f?fLO0`l=NqfS9Vy31Jv1265{o@CVO?aq6O-b3;yAxPh zdFBk? #Y4ggIE?_ir&m&U{liSD z$YE!!-Y7H?`*4n^NH%05zc<`Ykt1Oz+K7?nH}A@0mcKRk(pcN=BR7PSjM8~X)1m2f zqcS^MHgtEANmlHK5c$knclfgR@#(pT%#*3PDF&rxokc>0<$M)J$QuDp4}b} f+)P$Ke?niU=Zf` zEph|Dan{pk;OhO@WV=R&siNY^t)-7Tu1uruus!oZMtQ60v23JkWO8!w# j6;x={0ES%8s0ES2Qj7a^g_8Lr+9S>WQ{brnpINQywN&``c 3NOCCYkhth((zWt!V5+r{>p 5_ZMnmf@(cm27d^=L9N>uGY2e*U2Jm|B!gKi4P)|Ps0s^?* zz0Tbe0j+{TqfY-K;={EgIPNPicmq>U^h_Pr=99MKC#QDa)tNxlg%zYMk JeB z9GyHYjEp!Vt%Oi7629s@zd-8x>=X7^$v5`|kofl~1Vi_{fuW%rK@V!+46q30ny;^K zL-5!W-8r20vFz>bVP7!5{Lh61VFU@QdwW#zrwcbQXHOrA=w-Q19{jJ~8n{O%H+XIh zffx$)Dhnx73Maio&3aHL4!_{r{6DVo8i+{;5F&Lvz*~ndgJ{mY*SZj}YxfoMhLIKb zzV82-pKlcER|fj$B9JhizR;-BPxp*Oy! 7r^bLudk=Ips7--PQw(ZYhduH-1`Y^3>xa{ z%K5UX-z L)j$H=bErFuY3(5`i& zIkUEPbhKRl6?J;H-0Geu`jhyr0eNsNbp}=ludkiFv(-}7fN}2&KEMC`ZrV?B-r>FEhvLtO^Aiu=k{CURi> zs!u{9Ktciq1s+Xqe0+R25TC?A!OlR-^MR6>kyt)cI%RHOUQA5vh->+^m`C1DLxUS= zaFvSGm2`B{ =vT#{2Chmxw5n*6ch{}7#PUNSU5O>cuaxK z%-0tNYF08BV-O6VZMR4G!)uQK2g7QmssiSK;6C`E|IhipP=k?DtjM~)zRnv?U2Jf? z>qF;svUv@7#|A@#iSa0M8CuOIm)Xmpffh>O+GerqeADMZ|H50q#>QqSnSJyK)I#7< zX%GMrR{=pmcD9b5j|(@wQF#D(^-)=NZIbIwL<0YCa2#!AqgmWxGUiZ9k$es#)QhLM z?N@a!z2GhyFHj&WTC4u&ZD$owpX7Qm^z`)ml*;Akzo(`WWLW`p3wXn_)=dhGhe_IA z9((tlHE$iGWbt_33WkG@yViPMxlZ=OKWD-xv~BQ7gZ>k}BA0sV++>=wtu2Z%Ye-1Q z`ry&o1r_*OZy^27{!+kXY2;s6)Nwvsm;~7i&nw3ZS(N9OQ-C!(G%PSMG;p@|>FcTM zw|xpWwmQH{-pl;5>k68yHkT`~5Et*0z>EXSvu1-wLaXS*?FIIWYhD4&A1x1e2&FFI z;XA{mW&@s>f1*Uv;m?7HuGwtHYc_!Ohz8hL@=R^^ipsz!GMze?pYGz{#5-Wy@4Hme z%7E2{)8U$)yHvaRwq`JihMHmG&F?2n9i3&43j=aiUN4ujoSd%blYId}1QTq3cqU-z z{GFy}Y3X@1WGO7g &9Aqz@*Ihl}+kIXO8+ zMMYyiY|+oB`kNmyY+qD@N@`V1#`8TMFfab)t?mi_CPy?sTWjrI56_a-4PN)Og9;^% z#cB1qdY5@?APEy>cHFbT!on6BvD!eMPyOpV5P1h-XAgW*)R6F(dky~M^Kjm-&WZS! zJ<^epku^uR6~3hZ)dFU)@$oGIpc!692eor@dRoz}C!qt{o$#FOT>4p9Byb?`kE92R zJ4HuEk_C;7D}+Ofn26?o3BtJ`c=beXwNTfa^A{vQbn&?%5wiDjvwZ3iCgJ!i`~07M zeE}|_oShxzQ$c!{cnvx>HfeljQI@)|{nzEb>1pTP^PPq9g?c-t^pVBJE2QUbqo$_D zr~(mB{P}B<1;9&xAPf{gpAMV@n@hhT(n!ZkR z@qi8vGI#~mN={13kbsJbDI(MYVs{vILIXp^q@)ZL`GY+kPrL5Uwm|xeQrzHBg;Q M+&(`unU3m8`+ N=){`9AkgMK znVOhvcZj?zFqrJ n9e12UX-vYmFtPa&i7{{42D3kWDc=r(N%P7nY71 zdb-iiY(3TFxEGrv9xLw5{qoyOABw<2|L$nj`lpq)&?HtuE|;EnUjhJum*t0u%WO4K z?ga(X2*gY2Nl7=l`s09Ef&&yhB{qCdkAOE`*UtIkco&ueP;a!y(Q%IIy@5oAMIbjc zRm*v}fJ7G%!^G`+t61&|N@z=9l1yT;JT;(2I`=qAKu$BU(6g|xFfcL6FUpd59UX~; z#y-v|EGz_!3LBMG)UxSczwpD?YiVj$e`1yzlte@fb#SO+W@aY+;H>GP=%5ICrf(iM zJG=?ji5rdFA3v@G=oLv?8n{66JZ2v~-IG{M+w*;-h2YCUhDvTp3QQcuYY~63sJz=d z0EhMMk43g1ISd8pWNJAa+=hZy800`? ^3h%7$@S}xhiDha|Fjq%+K=L>~9h)4bP%e&VJoCP|aRYfS z94S1&d~@EWmMIvB!(6CRq+Tr^Ln#E0i9sik22AN|0Jqwbd5)&7)pZCmI;9^~bKW|{ zpQmyH-lg M6T%MJSSoEv5e=K*Mfe3Vf-7^Yg%=pz)ujp*+yqx z6@5)I_#qW)E#beYS$KKm(&M> !T}=sa%V7>klGXyV^m3&$UDl5eAkzzvo!B~+ z>(nUyy&ZfxsD{AxbM&JAWV`x943(@r9E{9ajF-4hD&7$;&>0w##*6+O>s82$qtze_ zc tUQ4Ev#qmu?x0Eo z0GQykHz$i!hEsIj5buJlhH79mYMPWkCItN@5z%j6qLmI2x+|4Ku+ACUTLLL}f24&w zO71+y7DS|gG0|XBZD*OC2s@}2C>SVMXk)qSqQ`AL?t2CXLhOXCmz(V!Y?_>(mVi2S z)8BID(y>YB;o+GpnR2+k{!#S?D7&zTc*mQe{!RR#v5S+6~9Ucy8t#gIG5vMjX}@ zrrT?G2Y_}grKPpd^Q|D4!NbS$g}iRC-zo)+GLyJ!i-lU+Qu9o=L*zItuagT1u$fwX zsCF@O3jfs@Okm?Kxe1p*%Q3&B%Ip4^e9Ggq*!X3ssqOpglRSe{S;prD?AZGSGuyif`YRfnt5PKg%Qx2W}g$>y^>cl=+Pq7h^)Ty7_nb z?4JoWmwayBU>WmXLqpdb&B)2(4Cm=tW`BZM%a?fxz%W62_ONkr$A{EvEPT_YQT;*c zf8c12xpTt2_sR-COuZ-xNqw`U)l8l3@RH{#Qc$Th2jUdi8`y164K~6}1r4CDfCso9 zAO-M7v9;ajh;OmbEte`B7jG|4wb9pKGr2 rjlO7TI*~;}>tYp!2acD?D zGJ}3Y( Uw}eE*=0%2ko1hQb#~pwZ=KW!?Slc%ATaAiGzA$LpTWb?l?mpiXnItjRiPPDudf zw|PE2bXeH54|{VzoAmVQH*dNK;2tR9z)+=3KF5xy-vc~4i_Pvb5qCB=4%_3cPd7}) z4i1WYyj^_DU+$)8Ks6QVTnCbkR3{olcjOt>--1rqy6bcUVDVrjes4k3*anK%jZ~u> zE0qQQ@1@DN)VH^8@D;d`FpiJyd|Y6)86O)93JHmJMw_{P1 NHbyG<` zQ7dj1ahy_JcXoGCiOOuBBsK>$yPVj8@!vg#!zWJ1ZP_|el!o^nmyh>7qu=b(@3HkV zE7RZW#84_>p;H{z2#e5}&&8DcKZnP>`1