From edb4c909780fed1696245e2cb70d2d904b459612 Mon Sep 17 00:00:00 2001 From: Knutwurst <36196269+knutwurst@users.noreply.github.com> Date: Thu, 25 Jun 2026 09:00:00 +0200 Subject: [PATCH] README: rewrite as a tool description with screenshots MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reads like a project README now: what PatchDL is, what the UI looks like, how to use the settings, how to install. The deeper notes (target-id matching, source classification, partition layout, console setup chain) are out — those belong in design docs, not the front door. Five photos under docs/images/ render inline: home-screen tile, the desktop browser UI, the mobile settings view, the on-console browser, and the startup notification. Originals stay in photos/ for future crops. --- README.md | 170 +++++++++++------------------ docs/images/startup-toast.jpg | Bin 0 -> 80129 bytes docs/images/tile-homescreen.jpg | Bin 0 -> 110356 bytes docs/images/tv-browser.jpg | Bin 0 -> 145195 bytes docs/images/ui-desktop.jpg | Bin 0 -> 131161 bytes docs/images/ui-mobile-settings.jpg | Bin 0 -> 54532 bytes 6 files changed, 63 insertions(+), 107 deletions(-) create mode 100644 docs/images/startup-toast.jpg create mode 100644 docs/images/tile-homescreen.jpg create mode 100644 docs/images/tv-browser.jpg create mode 100644 docs/images/ui-desktop.jpg create mode 100644 docs/images/ui-mobile-settings.jpg diff --git a/README.md b/README.md index aa4a527..d99dfc1 100644 --- a/README.md +++ b/README.md @@ -1,140 +1,96 @@ # PatchDL -A standalone PlayStation 5 ELF payload that downloads and installs official game -patches on your terms. It serves its own dark-mode web UI and runs without -etaHEN. +A self-contained patch downloader and installer for the PS5, with its own +dark-mode web UI. Drop it on the console, open the URL on any device on the +same network, pick the games you want patched. -PatchDL is built for setups where nanoDNS blocks Sony's servers for the whole -console. It resolves the Sony patch CDN on its own DNS path, so the rest of the -system stays offline and only the patches you pick get fetched. - -by Knutwurst +

+ PatchDL on the PS5 home screen +

## What it does -- Scans installed titles and classifies each: genuine install, ShadowMountPlus - mount, preinstall, or unknown. -- Reads the title name, installed version, and Sony `version.xml` URL from the - PS5 app database. -- Fetches each title's `version.xml` past nanoDNS (a raw DNS query to 1.1.1.1) - and verifies TLS against the pinned SCEI DNAS root. -- Picks the newest patch compatible with the current firmware - (`system_ver <= firmware`), so an update never forces a firmware upgrade. -- Downloads the patch from Sony's manifest pieces into one local `.pkg`, then - installs it through Sony's AppInstUtil service. +- Lists every game installed on your console and looks up the newest update + Sony has published for it. +- Compares the available patch against your firmware and only offers updates + that will actually run on the system you have. +- Downloads the update package into internal storage and installs it + on-console — same end result as a normal system update, with you in control + of when and what. +- Pauses, resumes, and survives reboots: a 60 GB patch can be picked up where + it left off after a power-cycle. -## Downloading +## The web UI -PatchDL pulls each patch over a pool of connections instead of one stream, which -lifts the ~7 MB/s per-connection ceiling on the Sony CDN. Set the connection -count (1 to 16) in Settings with the stepper; the change applies live, with no -payload restart. One patch downloads at a time and further requests queue. +Open `http://:12880/` in any browser on the network. The UI works +full-screen in the on-console browser, in any desktop browser, and on phone. -Downloads survive interruptions: +

+ PatchDL Games view in a desktop browser +

-- **Resume across a reboot.** PatchDL records progress per manifest piece in a - sidecar beside the `.pkg`, written after every completed piece, so a reboot or - relaunch continues where it stopped. -- **Pause, Resume, Cancel.** Pause keeps the partial file, Resume continues it, - Cancel deletes it. All three work at any point in a download. -- **Verification.** Turn on "Verify downloaded pieces (SHA-256)" to check each - piece against its manifest hash while downloading. After a download you can - also verify the assembled package on-device against Sony's per-piece hashes - (`GET /api/pkgverify/`). +The Games view groups everything you have installed into filter chips: -Patches download to `/data/patchdl` on the internal SSD. Large retail updates -run tens of GB. - -## Web UI - -The Games view groups titles into filter chips: - -- **Updatable** — has an installable update; selected by default. -- **Updating** — queued, actively downloading, paused with a partial on disk, - or installing. +- **Updatable** is selected by default — games with an installable update. +- **Updating** is the queue: jobs waiting for a free slot. - **Up to date**, **Needs FW**, **Can't update** — the rest. -- **All** — flat list at the right end of the strip. +- **All** is the flat list, top-right corner. -**Update all** in the top bar queues a download for every game with an -installable update in one click. Shadowmounts are skipped (they pass the -download policy but not the install policy), so a sweep doesn't burn tens of -GB on bytes AppInstUtil would refuse — pick those up by hand when the disc is -ready. - -## Safety model - -Deny-by-default. A patch installs only for a genuine install, and only when the -patch metadata targets the installed game: - -| Source | Check | Download | Install | -|-----------------------|-------|----------|---------| -| official | yes | yes | yes | -| shadowmount | yes | yes | no | -| preinstall / unknown | yes | no | no | - -Two guards stop the wrong target being installed: the patch target id (from -`version.xml` / `manifest_url`) must match the installed game, and the install -call receives the installed game's content id from app.db. PatchDL refuses a -true target-title mismatch rather than installing a phantom title. - -All writes stay under `/data/patchdl`. PatchDL never writes to the system -partition and never touches firmware. +**Update all** in the top bar queues everything that's installable in one +click. A live banner above the games list shows the current title, its +download speed, ETA, and a `3 of 9`-style position when more than one +update is running through the queue. ## Settings -Settings persist to `/data/patchdl/config.json` and survive a restart: +

+ PatchDL Settings view on phone +

-- Default policy (allow or deny) and a per-game enable toggle. -- Install after download, as a global default with a per-game override. -- Delete the PKG after a successful install. -- Verify downloaded pieces (SHA-256). -- Parallel download connections (1 to 16), applied live. +Settings persist across restarts and apply live — nothing needs a reboot. + +- **Default policy** to allow or deny new titles by default, with a per-game + override. +- **Install after download** so a finished update applies itself. +- **Delete the package after install** to reclaim the disk space. +- **Verify downloaded pieces** with a checksum while transferring. +- **Home-screen shortcut** that drops a PatchDL tile on the PS5 home menu; + tapping the tile opens the web UI in the on-console browser. +- **Parallel download connections** (1–16), tunable on the fly. + +## Home-screen tile + +Toggle the shortcut on and PatchDL registers itself as a regular app on the +PS5 home screen. Tap the tile and the on-console browser opens straight on the +games list. + +

+ The PatchDL UI in the on-console browser +

## Build -Requires `ps5-payload-dev/sdk`. The network and install features need the -prebuilt libcurl + OpenSSL from `ps5-payload-dev/pacbrew-repo` in the SDK sysroot -(`target/user/homebrew`); `scripts/build_ps5.sh` enables them when present. -libmicrohttpd is vendored under `vendor/etahen`, SQLite under `vendor/sqlite`. - ```sh scripts/build_ps5.sh # produces patchdl-ps5.elf ``` +Needs the `ps5-payload-dev` SDK and the prebuilt `libcurl` + `OpenSSL` from its +`pacbrew-repo`. `libmicrohttpd` is vendored, SQLite too. + ## Deploy -This console uses the BD-JB autoloader with itsPLK's Payload Manager on port 8084 -(not a 9021 elfldr). `scripts/deploy_ps5.sh` uploads the version-named ELF -(`patchdl_.elf`, so Payload Manager picks the version out of the -filename) and launches it; the payload replaces any running instance. +`scripts/deploy_ps5.sh` uploads the build, replaces any running instance, and +launches the new one. On launch you get an on-screen notification with the +exact URL to open. ```sh PS5_HOST= scripts/deploy_ps5.sh ``` -On start it shows an on-screen notification with the URL. Open the web UI at: +

+ On-screen notification with the web UI URL +

-```text -http://:12880/ -``` +## License -## Status - -Verified on firmware 11.60: title scan, source classification, version -resolution past the nanoDNS block, firmware-compatibility filtering, the parallel -download pool, reboot-safe resume, and on-device SHA-256 verification. - -Install works through Sony's AppInstUtil. `sceAppInstUtilInstallByPackage` is -unavailable from the homebrew payload context (rejected with `0x80B21163` -outside the system process), so PatchDL routes through -`sceAppInstUtilAppInstallPkg` — the simpler API that reads the PKG's embedded -`content_id` and binds the install to the right title slot. Verified -end-to-end: Dead Island 2 (`PPSA03099`) updated from 01.000.001 to 01.000.011 -on 11.60, including the cross-region shared-storage case where Sony serves the -patch under a master title id. - -`/api/installstatus` reports installer progress once -`sceAppInstUtilGetInstallStatus` finishes the queued task. - -Disc games still need the disc inserted for their patch to apply, which is a -normal Sony requirement; that's why shadowmounts are download-only by policy. +by Knutwurst diff --git a/docs/images/startup-toast.jpg b/docs/images/startup-toast.jpg new file mode 100644 index 0000000000000000000000000000000000000000..99a4848788a778a6ddb7a80b275ec2a01701229e GIT binary patch literal 80129 zcmb4p^;%-}@xEFU@thiI0;!cYeFJ8Prk=ys)&-(}5 zXXdwLa!xWcPm+`K{^NZIfTOCYq6mP4g9D`ey8!PS067360>b~?{{jgK5ebM61R^5? zvCz;^&~dPEadEJ4u<;1Ui16@9@Ud}-sEA3($tfu*afzsDsVHd4C@3lZrx7?LBqSg* z5EBT*q`a-GyWs zta9101|`3#Pfu$8C!rgo^;DNja<9Uz<9SR&^DV_Ioa0F*+)+y;fFs<%3p z&r%-$L+yXNePoqgFq8Eqywhkv+oUGMZ?5||6mLtXWc1my&Z^%s+2{CVry`XRG9|(7 zN@eSBv@;enysm)`duTn=53(~y>{)&e2%C+l7DiC$h@E$$+Wo%`|Gtp zOpG3ibv-xovZ-=kj`v;BWBC)^uDf5!bNw1%dw*7o@@IDnhPH$2wKQD3#?ccC%JzQC z&7ZSgU2GRrZOr#}-)g8n93knWgi88smpc60&`^0%IS8ZweC%iF4F z#QjTt-1Ey3=s-(+JcscJ85SqC{_8|k=NNz~usIJ%hu1tJ;`;E&HnbT~vEuCFdVWtV z=wM;OkK(6-fQ2e<3?BEy$ZZdzVtvHjv+fmNE_mqUeRv)nnP|1=+qe^}Zy8Uf^iGo6 z6+HG`7p%AU;v_X|L z;uQ0jR{yX24v_Sxwm|*e&coQ?lZCQB?(S%2L)OMdE~a=fW&dr~?RX)N$L|<}tX!Yn zTHTvoD%u~|Yb|c}_#MqB*;wLX2tjG2RcvWHkJu(V7uL{*{+Zg7`wKR2LK11ernM00 z)u5@A!p*POgiz-yr*0+e$Ce>5v+0s+kjcll*|NO9s@TUe$4W2#O$Gq6fGR7x*QH3Ibq;m`csEv9fk7KR3{Fakzo-XNU=%lJS6tr$%^sy zc>M``)*I1^b=8yI`{VE;RTf_>CfaYdGNbC|Cvr+k60zk=DR??Qf`wnbG36_{`kY!} z9^cH%+cihjDgJpjWunrUer`(hKhzA7I1`IFQ`$?^eF)O?#p+KD!smq5fp z@ckpZ#7ozWyGy$BKM4icM3L^qp6aH;xRw4+MFopq)oYj}sszz27qX-%j^w|=c7{pr zHHkae4vY@nt5$v{w?3PUyn;L|qJt&M^~AHuW)9If6N2+MFJHo`z!fisU$*@928qdU z3=pm>s7kLS*@SD_UbJ^zkrQPOPB5&u=Y2zD>D~dY*rP7*0KDay@o;fI557ZlotO2i zE}QhJ$N=&q=SxQ6x`2J`cR>2=qxMd%>Z*@GP$mD8%}Rjpj~`Ui4JP|a$(ssey=npO z6{kX?p%Jd&We4qcn4uGLn#ksEnpv-F^E3W#T3coq+C4G2_F(BIfDPn!?tpb972Sxl z@glhv7l!NTmQ;^4e&cBNoa?32twJYklji!z<**3boZoq!n8esIFssTZsO+a$S_OG7 z^d+V&S5xNhwD)UVD16D#2PUu&l!{Gjm4u7AsYhT|O8AcA=cq4C^w02H;loN*gEpa| zZG$aZ8g>bW>DN8`5jTSUL^Y_Jzn`wq*ihby!E1UB!e`t+;hE#~8Ljkxw8B!q6IQXU z8SMEsVDz+KWe?QLeG-Scbyv9m#j*YsilFpnEv0bH**0Qah3C|Euc3cazjEl8-FHu+ zspU4j5E8amZ*LLIK3`*-1<@7|32T`vS_lSfjA3CBb?2O(GWMY^ah)hU7lDJBA5(o_ zHC||{zlV$!nLM=D*Il|Z)?SNo~~v-Kt3BcO7F-m79xDYs|BJ1GJpwUSa!+}Ec?<)wF^aNAnv@}S)ZDiv=TCOsmNV1+J zG+eD3NE$+V2BGU5oE>hCQiJ(I&wOU}Z}tk0l@w~Dy=F?Xi|1#{3*NaJa0!2tV7uve zI8uZ|)sF_FHUR$aPFeul88(R|E$q>HEZdkt6R)NBBX199fkpO=^Tz|P-_(iEoZjz% zL=9=J)WKY}AjoRK8(e_rBwMJ_Nmf;dHN-75WP}R6do`zF!DHE5k$B*ynnvHg#f zuCO76P%V7J>ELBkx?^y@(se-NHC9aZ3Fqz>EfoEfvrK22iynybwtDvMQNQyhSf?2| z)Q%|Xj;)_XJm-+L)}l;AQu&p&~pqK6OdF(V=MDTr(?huj22)z0JqGxCg%^(AUa- z3jZLT+FMY&;3bytjS|aC_85@9u}xeBxnsyJ_xLl>LE&(In zXTl!*%y_;3=rQW56!kfDGBsnzB?8M)3%ctjp`@Le&Z;GS;6>jK)D&ed&ocI-iMz zl90xOx+XeNSW$Hz<5Kq)C8=+DLJe4)A&(vnpWbcF(=8{)ih?14+pc{a?hTJaEs7@B z?5Hd=fdWTOP%%)3#LgOvisF7AF(7MY4B&%f=Ehe~yh%wI(x#cDC`Vu}nx>hNJZ^_S z_u!5xr^_gxEXKu)Wc8LtRfg~;9aAIj!adRQW-s6>B;@Z(3+eJ!dJ$0L#3At-O#-y6 z;INLXwb55JDoCYaC_LOH-{k%)5gr1_vf?L$P{J!Rajel?VnB8(U^uN6K!^^5Ofybu zG#wSlhJXIS5)eV z-+q<;CQC{#^~}nd2y%6-`LRO9c6IKDMT&ll+Wv>%a9k3qh>&8s2xnF`ki@k|NoQ8! zZtn?sV6we4Rr?%TK-_?8A86Ad-uzZHQaJW=pD7$;=gT(z?i_DrvSzW6;3ekYEyalTuVimzXKBPkixKh+6!`7dS5>f zeceN@Q1{OsCJIj$%0jdz84)NZ`zBef4~;`Q`55EF^k>1Q3X{?~gS4u&FY{UOHL) zy%df;KS2gv=elL+O>pJD83`^mfy+GBM6r-Y~A&K=2dj zwcAhHvKu6{ZunFhRZ8|U-n?9GA~-d=QN_P^vt3{TnKTZ&Ys|%tEM&1T>D#+`C>vJm z&E5i0EX?Em7qa^OYR!DFu=P}^(Aur~yANw!wF<ZDFGeagnNA8>K8M!r~W2Am7lI>Rw)#lZk#AxT*=u@D1TH z(Ry@KNONk|+P%J`QZocJa&Mh4LHUMU*?ORR0do0n{0@le4hi~XV4MY2+$)e>ud6YO zm73QtA|MW)b$PQt-mW)$Kr`M~)zA`3`dk0|Zi@P^$Iva=l{?XtzCooF8=Df8s zaL3?CD2at>CfQ?Bm+My&z2u2E6bMh}XiCFUEv959h5N0ap=}F2wpX#f=9mnMekK<0 z6nyVM>i(G?_jkl&1KSLq4ST)uY=3sO>Dp#&qdR!Hkjb7uB`or`D>ld6#Zy(xBhZ51 z*z6SMIe4cn?#kj3ko76nR63*2enH8S{+3%wwi=-TFHIZrMVI*7mNBoe@9{M2p!Tf# z@8b+0*3lnr3f6V&HOZTL_yJo~<)!W<|39j%5*nySg-te3yllK-gb!bnTKm6Wjk|-= z-x?t@OK*Sk-T_ZsP}fTh^iMvR@0u9NeVA`btUQTupt!&QMo zuT!5kJeEK`=aR1}7TS-ek_%T$R(fx+(~qx`_DEMd4M+N}(xJYcI3WfLFGlQTa;)$073j^zE(Yc=OKsGu`<1lIY1>ul@PLWiXBBML|+y&`@roVsldI z;=1?|Lcz*c@YIX-Rg}rqZ9JFj+qii{rg1IIXmiOCVxgWUJ+9M)p0(yAaQ8RYPq3{> zwT}tdT!ulE+Jt^8iS{^D?p^7aA5uaI(uFI%+!V^$Vwjc)kwN#;p3n`h?{{Ee_fxYA z-nAVT?Js_4{;Aa+lr%q#WVu?RKY3a~{>i;UKj#qgVUc3#6zwl<)hHE|ECkp;{_*#j z0jVpU%W7oERMR6@Zm`)k*2c&-PkrNtBSC8=sC?2~k80Z7M2asKpn{0ui_WXc!JOc= za-Uq@3%|<$4j_18{N5|k-|5ViC;usU4At>(BjxUZ>eIN{ReC%>=70Md-HV*!r(h9; zT!w~wVDn0+^CtmG+?9(qvkx~F_4iFjwyHsYahC(RDqAfQv4YUNACsf2x3`V!CrNgv zcG08?TYG2Y#kk_t4WL)nEwP=-bXrTHxm`i0H3kK_d)M99VLs%NU2Ob~RGMX0{z%V1 zrv0J|_wk7cMy<;nloRHw#X(w4Cdo1Vg4awR1MRA+PN@E?aSVI4=B&<5jg-`-pbG=f z%*gJU`Z0Rd{d%S-D>k_Z$E!KI6B=4h4}mfVZ5#|hXC43_hsXm!<5?4-ry z4Lx}fW1ssd_OWHOfHKL~NjMyB#eaVsi~kyL<-vHn;n&G;|A5xYfk`jHfo%!>qH<@0 zXRI>!>XU4ry5ARDGpc*>UFO4^gmsVw30duxWVM5fFd`R%Ub|&!0AzjR-yhoAK%*X) zSu`T9RqJV2exYW(%*pk8b5Q+z!<#)(V&pBoSK(O(U5Tz}`(cmdk3Hj=zDLi(!|wxBaS>Kj;f{4n z36L>Zr7@Fyb(GPlMfDI9pKDEp@afruC#Z+|#&boH_8d+>6(C(BFk@zfP43u-e9{py zT`PVr3CDp74(KMLoPVauToLfyWzh)bM)l$Mvexwu_ADFdqJA&3RQ(Tu-xM-{*`Tbjces8!4ti*^OVvx zx^2^rIpyL9He*MkR@3QQ?$sb$&}k z8EYN&dp%CKVeVrhHvv9nX#qDSf@dfJ2x|e>X}TJet$JbxFWo|*Yt{X@Hc_zS$$dV{ zqO}%JiAvSs_>pz@<%`KR&+csf(0VvI;9kV5Dn+A;~{Arl%)R<9qAWhFE?6Uk_I9 z!fWcr81zAAw0T<3HTUUEZU55kvfl+t`v?&i%w4O#-ECWz40Zep+#wUb#B-w9Nm{#e zI0ELhElUA+fB$xvg~Y7{m`?CfEIf14PJY3*B{#h#&`Zmzm=LdC;X9ebePaPqdQ?^v zW0ASmi>*fdA}{^JixEXp;*p3SFCa;_Od3|P4QlJE+>tx!mcng9Hx;6f%9N|M2C{M# zlm!y%+`UCz=Z&-zkgI_gU3`f7m2$s}rYF~Ive)bF+nd$OOfPl%X|>lWvg*U0i$l2k zwFHuun&BISPSadrEj;4{=lAy)cI|z&=1vB1iJd*wrz;4ELOEmVSP=ozmo<=A-A}b> zqF_3huMGs1nOJ?iax(2DlTrE-%1%#osp~D5=OM~)M5+o1h=g&<%+hB-9chW0=JRD7 zL9@6(@6u#yCaghPBJo41%OSiNrWLv(6k;pTK645?_IRBt(&-niU}n`7(&p_jklc~t zuC8jt0_zpJqRe@*HwjvyHKHnqjJFMhnTkPA5+;P7QEHSiKBzG>BQ`YVh*JmjkP;}5 zaG=%W84%G$z0CQVTh1GG74>feOd?O3sg00CsIYi`9>?0!B%38Lke0Bk%d;ZHolrvR z;V-QIz0UIbCz`-5oAN|HWq2KVow0i+L?yDGpp}rG{s;=Utqj7rtR<^?QbyYg^fSE2 zQVkyuvpA@w)awamoh5+#tcfBOS-T}ngTv_}OV0n8&s~jK}}qucN$%!RSLKar`Rr$YmQak0$>3_h#AVjQvB2Kw2Wvi z5Pd14YB3Wt0URSd7;7T%KgkkfL=jcqgbcB2IPww_mT-}E93~Vv5_ws?7+D5wJnjt3 zQf_XK=s{^^Sx9TCB@1scJU89FT)#FWJOQFC0%9cszOYJ47BISVok7|Yih3taBJC^p zU+l;qqyM5fUBcCUm8Gd?f59MyHH?g4>F}CJY#%r!L>5ap1#b8_TTx*gp5`yOlSF)` za>Xuzic{1SvNyR3?r9-C#TccRr_DQjcZLr0!vPs^FKHbx=z{R%H|d~A{Z7;)24L#r zE)AbpC>lYt4*qei<2!(U$WFVWo>EGFA2dR*G9ARhwv$L_y~oM(y|cZItoyPt zpt?VnHm3__@eMT%XuGF*TD*@dtd|#Ds)9VU-#t)wY~(I%2%bHbBmJ#P$(z!{B6C{G zlENxY!}VFVPE-dJMHV9hzWtqHCLzy?IzgGipJU~v=?=CKL^F3d)oxROu5C&0pq1r$ z2Nbg@ss+!?$!~7gQgrJegUXb@rIN#rL@Tg{khbtXY5ted$CiZ0YBv>CsRN2E%0c^l zixOjHzzVU1qFZqe$!aq&3F=pWdzn;GE{EB;W&lxDw8c=6HD>O>5Y_x2PzR!0W{O&@ z%jh9(F6R#YrYXV(1MXcA`rx*XBh++=`p{t_Wr>C~9QGL{2Eu?&H_aMHxzssXGmfh8 zC5BoP558m#2Tp>4h*X8SZGcsdGu6mN*pNTJId>n)5&kl*d`Nm9B@#xhB4YUaN3E%c zzS#71^$?5aWL<{J7JXd?^`S5rGaWN40-_g+mQ@S4rE3Jy6jDbTQKkJd0J7SgCkwJc)YM*P2PKq2C9N>{kKdTJ z0naWO6Km3;Mq(9(o$?XL45&k&rH^zY1V2<$W+0(z<1X>Mpy~C?=t^(cR4i6w^E1## zf)J44nNUzrCev9|@K;o(6Eol#P;xR_GU1HjVvi$m62?2cJGGH8*UO8;Q^{$5!g!#7 z%M$5m^%@aY%veykjKG1lJTA1-h6mfDq_d!E)6xhtBXlF~0(yTaREdDo zGvIjJ4EYm~vNhJ^(IcqKX1W{ftYkfEfcfl!F-V4*TFs>;Ps-q8T~!r@ zaUauNyF?5uy+P^&*>Z}%jA=FKdC?b{hGLaiV4SW3J=WZdA%-dGW)E2jLg{qL>Tk2! z7}zRmv^YnDYRvGO7}T2B-dGbV84M}sRorlhOg^en(-D4qDIX@OQF$}+T}oA=sb%Co z%ScybFx#)FsPQmEQ1k~;x1@i|S4^l4g$JO)^}4{YGvszGVIavhHK|YLE)2iILDb56 z^bASt%tWrVW(zdwG#W||nnhZknlAqu;(Ndv|s;N*w z-w?tAkF*tYoE(m7cyMWbt1t0NsE2IBzMzM$j+#F^39o8yDUVec3zYw-9h@G+qKx=B8ov#7H{@YDsfOFYjg87PNWJ<@1%-NiK0AChxbJ&B4RlktF z18%DA6bYlliP9LdfHInk*x*l2R!r-3|J7itR8;g&Ff#G5p%p9$v(Z$YR-@+w6{0-O z#hRzNkUhR|dP=~zVoS_UsLeDdi40YGHS4h?r9agghT0|!N6NF2>{BOZDu0BSaX^2W zQsvks_Q#`jrd6wtduH@4r)~+m)GfHwj4IX^DFe{T2N0>z@~9WmlDnZOVtcx`Zh}zs z=x6#&83q+7A_jv5xWpPrx`uO3?-Hl6s0&RCLu8O^|K=?pPOq-1jm+d7P-=_4Qx6XW zl+ZCVBdWX-QXA{!XBv7Spgx74OV&v1LRN$)R88q?j^Md76sO<@)d_h+q2lA-#inb| zY(gNxVyLB`g7k^8WwpAM%207rL&hy{wW9{>0+0oD3(F%tk41s}zszxOTe>7PdbEi+ zZ2}5ERkTWVn1bEnsX>9t6mO1fj+}!Y-i!0?`;!84`0+7AR}f@w@b zf3V0!4r&Kw4D2u*4W+@5>NHp@yYXY(^sAxuVr3%AXnfsp!zrFy?B!e_B2|jX79AFU zS)y#3X+m>LwOO%Z4$dKS7ebxt?CC*8bhYA|Y2K!n=|cn%Gx}2nlQ5X9utsg{7(KqJ zTlaBXK_<9dfUmovg)Yy#-`+NP?leY3+T4P-mJ6!lt9xr%!rlwIfFdbK)2K+`P1+EL z3xRXPNx%vBs=oi0hJNB1y>GB$bwaq2Vvbt|uAGc?v}UjH-ev8tXocP)nbI9aD8OBi z8MAUU(%XL&Ys%}s@7f!5q20~P{ z4EPpFyYt zQvz*3CP5}4O*aM};e~MGh+DP)kS{{Sf)^@u9OxqtC&F@SNvKU98*AiXctOpWnr}rH zxT}uY&A#w2Q%b_BtVZ!(_PguyE6^z@+`^C$!iVaFkr1K}Rgo?{G=D0{*-51}HPAvB zK+x>Ac_9Po1a?JIp47|c@NsatRdY;lyF68ZVNwk~8)q>hWmWU-87gAIC#b@m#S9_^ z^tid0TE<+02{|18&S6@eHPz)C7k3c5=s;GF2s+K~f_OvnUXwFg*I|Wr>pQ@E*O;Nu zN4cqQz?kim5mZnwW;tmC{wH6DuR^_IF7!sT3iWe`Os z#(A%_AY>EVJDjsZxmLfKc{02x!lAqN!F0>i>T2BAgOln?DBk~Lo;mvrn&zBuB3M4l46OW3qiX1%m z4yX+~uK72YV~GaEg^__JAU@g+T8!8i+})22UX7hoQWzNIX9LNqj#|S4#f5Iv)bD_; zI=Y=IBJm==gd(bU0FRD-FzOzH_>1vB88s197x3e2t7NytEm!BA)X_$j5Z4}X|834Y zW_Lr0{2G1#h3=^icL%HVXzH=#_DvM3FZtn;Lb+z7LF#ETgbw>5$1GSR;46aoBXBrl zS^QUd(k^UNL7z1_Jg&Q=cv%jRy~$xk8aqd)~(^QqLj?b z_&-V=SG;pk`S@DDubKX_wS3hLn~;jRn>gCjPmy}nkUFZN!X|T5YlDs4eWE&w5B=bs zwY%Oo_)sjBJHB|$IciQ5-*52e->7n*5UwAGSN0?Xq^T)>bX1!|3lXE1LCaPWO58*qYR1#m0_tm#h%ryBR=2>hP zAIspzPp?ABdcwLlYc6}gn`Kq9sv{_$07@N|ydvk1z?$Ui|&((ZSwDRmHUj%CftJ6YCV7^rkR zboUN8=zzv6za@IS1IE3EyRWQ2URD<|)^D{b`8W@c?;5b7pW%DW9zO_d2<0VWASPCSP*hc& z4&YM&6 ziO|~j8eQmrM}l8o3%z838ObY#tyY6&YE@TTE)KfYZ>;ov&BhyA-IwD>MuK6Oq9L+# zVsQ<&f02z6inQ`Y-@q-&IUdLm6YKi?Zn zNBY=<7Z1`}lei^`yhU9Zt8jmQ#*f!eYD%cpTzJngXnSkDifSU^=}!N+y3o} z<#6GbQ>4!Mxn|e>YnI>f%gbnKsOya#vEj+3M;4?ejPHT#Bf;zNseEH?cY0HmF_ z#r2KMpZJ-3OXRsv2}9(ogSGvQS>+e(r46;B)TU_(dcvLM5Pg%ZHs}my1g7x4itqzH z_e8hIL&4Rr-7VGVcvs^x=}0p#IN+5DX7X@R3~~-oxjU$m;ZM~Q$CQloNz-glfD8{V zy|;<=l#A&)xFVVBbw^q%?RpLtZAN8*9X;!*egx{Ld=bH@nHWBtb4am(=-nNE+1TNV zImg7_%~B~iTYht{C67Xy@rRg+P=?JI*jM&{$+c>Xi}a1VXKN5&a9TK;TM*aG88h1f z#yl7Fg=(<&q1FG;soODmoZNpgxEc>q%^aP>G$)_q3Njwfs(Cmz_>rs7!rb4-dp&K2 zG$XZb?#|}wV<3?1!#9(4YlFM7;@dihH!?RPp{3rl$XVnXAX`Cpw>5brE`ww_`4_TB zHC$^hIPY{uL_jvrD2iLPKl+7*iunpRW)+y$nz*@fXW|odqqxlHFeWm)i|brj`X296mQiK zR*{S&Rvq<}W4+HI`rH9%z;sq^UgNu&YThPTNBt25yJo`4sU#NVCZ4s`>0DVWg}?^r^t%xM^WARke%syBcKCm*ZJ@q@dh{M+9iW~xP1 ziYrZeRs>804E)Vn5|(>sUr>87AAs>!Ead{uWaYXmi8bGGvtw61l{Y)lGLF15>$B!Z z*%eaGnn~kOog#%_y=_eiF3sEO*0vEw^S2VZDJ_iaWpexY=Y7Tk@(DEzOvGRzzxy{k9Y(UjA6O9| zNXy>=IR4Fl;sxMltQ5uyGKpPQ5da~6l4lj&b!p16BXG?=q?^gJ_h#x%o78_U2bGuF z%UQIo9rYZ-S5e@=IyY#9sBsDGN}xj~wqX{k4;mfUq#vxvQ(!)_nl!qm>Vx3yG5Qb# z#)a~DwSAZ-gh`AwQE!u=-wosMDdIzXV@tPHXsFhOd>bkT zZ(Ek%q9CRbnW*3;MDC-N9*-P?PCwHEyDL_xV?{DYdpOg6rD-1Os{jtHOH1Z(0%GYJ zVHGP@W2T6hrJ=P9pSU3L5V2=gia%NXX33xinCVZAkA&Fu_*hgQL-aKqNe}OtQc}O} z!4ShOi$-Z+#xk7ZWg;I=c{?GDmUp@fi^5~WGEe;uaT%NW10oHcN$F@YAgrgZm~NV3 zoP6(&?IC2T;`4em;D~Bn7B54M*X|n0U0p7NDD{9w_Ey`s%4I;(NIDmUyeOCxWk`DGL2Jz3I{xX`~Era zK)&(c*x6FS^zAE;!+QM%b{JonVLI)9qo}PO4_Wxb?St!RYbqI%bE_pxt9^u) zMTUg8*wgg**>?ZPgK||5c>u5JBGg{^cRrWy?Ai)1;sNxoo3r3x=U18&bA8s!k@6I<5x&TT_ITg$Ldde^j&6>9bRPTJC) ziQJkq$V(TtxJNIuhUQy`@zYAY#CLp`;5->t{-4QuGDoGl;zGAm```#h@Q-iiTm6~F zEo6?mKC*vsF;CE{Oa!t$j=GY{83u@Jy?to(AG%d7-FEsA z(y_tGDju9slZ~?^F-^FlHDsRWXy@k5$?VGEl{};J@@439eEtpHcjt{k6dSrJRlVx^ z57wI9xvM_yM-j)bcGQ%X6DN$C`X467r=YDvp?n-h*|(tO!&9bZRgdcGj-h@k$cguS z{8;bUhW%tA&lR{o-9)RmMzx^7frYoQ!d0WUB(prp;T}5Wq>~%%6>B;4{B_)oZ22)J zrcJ`B;<7NfHaEC+ivT8)=s3Ux5lL3K`Qf4mnVy>FTK4xg&|9kcWBT&Mmrn5{G`Y zHm6!KDV)n{)(2}660$XSM{~&CtwvkGM@>fJC?@DEi>P4BXv-)Bh27DxjSO4#q1J?o zTajnYDqi-AO!}#y`AV%gzoLS!&WmoST0{lO;BSSUleYqT)fX2cgytbQ+90mEU!#XM z8C2HYzI7+PxMg}B3#?`<4z4R30Vm7e9~7eiN{y$@D7F>?cPauhn6U4HD1M&DeciLQ zFvl#P{IRUH4c#h@)^)N;(_+-IcffQV8ByC^h)!E${q~fGV!G*f&_GSv{6k@>4E}My z?Pan9Q$Xub#V_3C<_Xzy!><5?K+(#G~;yuYvslAnk>TasJ@51WJZ`{#9 z5Ipupr)o}PW{$6l+Rr2rle4{`>SX2Ow}KSANZW@csWv+9-woTbd2Amy(N<3a88QpV zz@{6y4L7H)&A}z9lJ%)8L8d~olY5z?ubPVCJHt8$!f7ao9}}M{Y5W5d`@XKJAx&Th z0R{B%ZtU^r+08_MsV`k{P^#{o&(ovLatdNp!_Yku&`*tWm6&0&CLGK$tuq+Y#)80xo&ka#!CzU!ShXj z;xzJU5i}6XR@0#C%Rcrd<`?9t zrS@Kra%bbV{C==zqupE~*|a!tmU3S87!ETEtA|{^AN`I!-&&v(4

kITTU}K1laX&fngA>=oQtc6DuH@qB?2!d;<4)5A)Wt z&HI1DrPR(8`BID~qDHGjs*0%SkwA-lB7=jfxyn2Mr{4k7(ZvzO%c=#%p`dkXW3nEj z251xFl(wWC0=dVgI5KLx#Z<*BZ8dcXo22u71nQU=-C~-dLAC!*E+}(pjcJ37#Bhs2ZoBwp$!H*rmjnm-kg0T>LI`4II^s22^FUnSq-XOV^XDX?UTr&+auoZkA2S611Z-dT4!Gh`~164h4+-_goO@!JEHsT;rJE$krtXmz>9&?QYsz#2^SeF_DKW!(x#OCQP-vWqny%d z--2UUx4h zW0C#}V;7sg19JX3uANWTELN0vFBuvSz1y~u2;D+&CC@s{PTISn_^LOFVjn*wyD2qo za$1cBGhU#?$Ll_KJ12Z_>5e-ON(OIWn^EMc=$sC(nk?~|{=x*(ovpAHE^#khHf@=< z^>!vrmg)Qgn3$BJu$kcr>b8dabwb9Tsi#o={Tl6)@>Wz&Zo1+vO*d0FWDM^Y zFl}uOcKTU{5qRTU@~GX%7gE4ydj8ZkE-t=i>JLzTwy)w1bZ=s%&cpylk&ZN&x`6GF zT>cNfA1E0zAFP0fbp0xZm(@XOml3!|0|Nm+T@S%{^pAF0%$$r2eRE)E8BPT8FFehI zgs`+rUBFMN(oTK4>|elgLhn{b`3Vlmfxye!A9IzbMFN{S{=f#DqqwK9@bxV?ML`!scGdOsaK%ejrR z%zw1_6ocEjJH9|-I9}^O_Su}6iDE($+fRPuJ8&yhv1ad|OS%IZEW65HqsQJ6v|*ki zQAnR$lF}LhPAI%jwQ+j1wxF~W;qPy{WdPMp?fr;;Fe;jCZHca{f3gvz1 zY#pJ@TB$IG2sCfq==YSi_Scpbr*&NLR^V#J+7go;;Jobo!V%@#{CDJbr^YG3w0V8M zW-6#qw{!r%snl>LxjnHtohG7)cxME6SZLy;!;zw%)VHe8a?=0WIwQ5#Y7>?DHz9<; zx{s=GYFVpOBc&dk_1i&w$hKi}{OyyiQwJvhgewo+4BvDJxRvuHprgZwV;ezIzui~N ztx05H;gpQMamFjaws>IHrqRWNzNXQ7;;v@gcamjIufkck*7bBkyrkF-d|}NJl9ez1 z)PNY=gALvm7u%)etb|rNeqSeC`FZorcN8_gb(kQ{!?)$UDP}ulJ!0neTX)&5 zdU2upHqTd=qCVK`=GXH0O0fT9C1wB}iBwcbNB>kZWaXcFI?GdVLFamV4JBIssW^GF+g2biTHNWIhDXxn@3+GHM=rc#Xghdl9QX^}}rY`rX3A!R&ib)Tj_d>3nRk z+$$9U_VQb0PsAWri@kp6gzNV2o#cx+k6M`%f5nvhLLhku%BenoFZJS`Rqe+1DOU%v zt2K$5Gcp+N{Me31cmws$Rmz}w`95#KwKBllai)z+;6M=ZW_tFmR{Lr$?rtjPYNkGD zN>qqUz-xRSHY@w^!J5N&R*HKNy3Belm?vAtB2Z5Zw!lJ;8V-#*$T=zY z6A3oHYLyv36rJ}z6fy2juQfP+hJ?ofkNe*NAAM?vpF;w8`tbam+lrL9a09{h9BH`Dc0o1(W(o>UBn_{TVBQNu(dV&m&S5&Ou;3|ntO@m4mw(V9x5M7O|l zaTwrjUg0X57;5Kr7%m(xsJ}LE&FOLy5LH;r6;)`3&d}h{_7(O$@-kGP#Ns~*b~;K- zi?<@IfWpcpan@(%LoVm8d_`)vUi&pPPHQ@AHvfYUK13v`>S6k046--4|_B(>06 z)cm>9(&wLDavtU1s#w=Ao%G)Lpi{Y9Xs0;5d2e`kN~s!8?&tlSXayPPj!>Qu?+c&c zCd%>DFRoR+Ttt!{TdJGqmKk}AU+P#kl5WmZ65#o>A)I*?Tz^6JpGdu)Ak4TvD9G~& zg6`D7f6{BU-|I`d<#PX6`Ol^jbFwzWxY*{b#leVtPOFZQCR$JXe*l|6WWU~}I`lqJ z=e5opu>4J_uPbMyUF z&~bDxDmc2eI()~l=)L_vMQ*37-Pu;TZl23}RVz95#0+dct5v0_Hr=(U)Oip&OK?Bq zWQ)5<=Qy=ed>e(9ev!i#n)eRfT~oHHOUk58I@N1s&mX%3 zW#nn~bp2M^;?vEkM82Ct15C&rKNU^o&-6{Zt?AtwOr|55t|6~{4f~IEhUg_{x5HXZ z#r9m&v+9kpi2l@`kpRF}sXJ{dZqP@Yjl34+$GSAK~{> zZN0O@DwYw=b5~+q=+ATcE%ebbRT zQPlNTQ*};WcR_LKmGzGsahvV*yQ*5Iv>i(M#q76hhb0pP^2o^;#IKh)rpBJRq}JDM z8Yx{`)(pB}BQ1B`c=Ry`vG-cf(!5J^hfUQi%VU1ic);-68*^-FSA8Z9Q1LBv?}=YI zc*m`~UgK)_ZewYaMwsPj+Y|b&qej*lUdHrX)ps*!MIh1lo(=)*B3Cow%ARhwRo&^+ z>;2HYnDMQ8k6uj8ldQTcBDQrw+P6~sppl~1}4m}hodUQ`rOe**5 zg_U9fxuV(K;Ah=*gmpSGDd|pLhRaLCekQ4;KUNw&({%Q;%=4bkQOn;ug{!@sgo84_ zLi|!bSA!PKk&7TAG5uRt=f%iAYonoF&abD2IHv>RcrS`%>!*=qOW}K0xQqa+2GFZ+ z0$}Vy`RCso5h;eq4_%b@GN2?Q%Lg(9C>l>_P0D}`Zu6We8^UlSY$+R#=|al+eRo03 zXgf@Fg=84tZ$!U%XPt%(QAM?%FP-@rQnV5fCP+WCHX+e8!3nYOsG@R zv3JPnGCfmPGb4W4R9GHwHy)x@wGIr8){rqyH%d-ZJcU%{P*~R^%zLB|h*E`*I5M&* zmX|=8SnVQzCD=S6@Y36h>ps2sakXRs!0467K4{>B$vzR=rs?O@O=E{AG7TUd)*WV$ zTyeVl8kdB;8$p#HOG)#Z*#r_#F(28IxYvuG7FzJ-g&luEbysOMk1c90$)Zljyied) z%IUm&r_YzlroGwqdXECnhZD$}b?9*SJ0)9g{{WjMRbS;TGdKc!p+Nk`SKLR#J%&F6 zFj7=;0Hm**JTR;o#glh-LpsK>eTdglDZk9EMAN#zn{a@w9S)8G0wxCd|BH$RdTyl1u%&!tyzCJbB; z*s??)jZz`!9`>lqn{HjkNx6A;* zCj|5h=gS^QJuWn2c-$LP7&EFMLgO{Od3Ci%vDzIn<`^gKCO`D7cYHw*;~EVofBjMZ zORMN}r|`zlUOx}bC900!C1dI~v@UGxQn&!os>0Xfph$W+)GWnn68@C!*?nG6 zByQpNoO=~hD>kf>>HU3G4=v?~e8Mv)2sQ1H1DXLF1J!h+(?&~J9PGg@nC4aEnjAj& zSyi+#<m4Wc=NhoI*wNIll0KO6Gnf7SrRd7pQVEpK5`0Ayk2vM`g`? zQze?;4c45Bk8kGF`mbk0{{S>kS4AYUKa)Bq#k~UCE)KaZ1Dnoa{{YIv`jztsHsyU! z@oLa`Q-o>>BvvAQ9ZrA$02T6>a{9UBS!8{_f>(kj@4yy~y{&rJbYpsYt?I(V?AN@s zg!1M{-~Iy9{4}W6Rn;mz!L4m3k6ef1hX|>+#pxU)hBT3zVUj7)x72(+Amj3|k z{O5~x5|2>em}y;GKE2iDX4GXix0H@jGqx5mt!GZct-!5ZKB<6tcaDX76!pv91537{ zYpPK5YP>kMtp+?1>&y-oz&uCc&LMa7HyCNubn47JgH_Y1ihf(V8kEP%;pzhVeOFs9 zm*bQ!9;xq3+K)F$(ETmAMrljm{F;MpttshLX`M=^oms=>49U+`>9bL-Z>rl{Sn3R+ zLfyR2YpDn))J9jasc4rPX1K~#>R4ZC?W8KuxT5Z6RcZUAe67(Dvb7xM4(qqj}rIdb(LMn+#X}31Oi+HvaTU#47 z-Ao;q^DcwLBa1d%nDMs>HTXOGuaot#(3CJ`noVCl_M?~hwMD!?qwwbq+fcQvUtvO( zS2q;-+DUWAa!+5X!Qk!#;wtx*FE8|0R^giTUrnxUR*}vcNPJ>4B33^h=QualE1&V2gjPHh>y@J`F312V{Z5S<<+L4 z1wRk*M;39{+FM@ft+cfq&Ug=FDYW1SYV6vNg_b@gT~gERn&0U_))95f9JJ>qr+jzH zelR=(;NvN27FYGJFKwI4UY(-@p8C7X$@xd1%JOv?vBRs^7&+whd(!o{dmmGw=^>sP zGUQN$Pj&b$j(MhVhNAj4@2)j!R4n|bIC+n8c>-n!DUGnUt`*ZLXjYn4ts9H4GUeRt ztyzwT=4NB3akBO=?VZK7w2n(7ZC_ok(NV?IJ_VdFGRl`&sT}~1|E)BGW1euxZ9Vjy88|ftn0NjomJX% zujt%dRpw;Wr_U{kGVB;0>q*u)%9RZ++fKf*v#VjLIQ^Wp;FFjnHPS(zfQ6S(-0F5( zzZ2>gBE8%0t{G<(xmYMQhCw3*#zbzs&0^qd`gex)Xi&0svn)xd8~`QFF+TXp`n?B7 z(?cv$TdrE{(r?)7*LA&H=%Mb8Tz$KKO z+CcSRvyNyeT%A|=KbZN7-lCCMe@Itwf@xERnEaL?wRLKC!;$e+igLzGyLcVUejQh! zH0z3Wb&4;tx%)wRrWnKXRA?|r#v9!I75a_EJtFFbwYjTO>fVeO$L#4J?14Vs{Z=KF zH>Ml^0O8s>FKBXdpA)TxrlVs-e5I6}4LFGTx1O`#(P(EO!EO9}_tey_s#GMo^ob;y zlgwnTK<8!ri};go63U;i=#SL&J79^nSzA8##^Spg&?!1$egAndQ_DpSy`T{1$C?Tk17!Tc_I_Qp;0nsJ@1sTC*fHI5eJ(pVY$kG^gAPyLx25p0gcP(Q9OKa-O}{i+OdW3RV_$=~OjY zND8l}e&dPX8^-?tRBkmIx?#L+I{yG^=BC7dt#wLI!M5n{L_YP6M)T!KBzP6FbZYWbF+=1PQ+>XDJ)ir%`>sPvS?ru#(xDgF# z?7H5iMgIV5;)e@bHSAeloeH*%qSiLE&+iv=Y&VZp=2zgp9lL$=ZS3x?g`+9G*OsPe zxIAv^Z#Wa!`s}_o9~NKtx7c%0z4j~*lR`Tyh zsM{`a&g!I>u)C~u2XMZM_)pgK{vhEES+?(UYf-;94x{EA2h(Qbw=j3rb`5iav@LFx zMqTOcbvNbhr}7Gi`@^r*dogBkj)TdU9CFUzC*~6!N}cCDxt?$dZe^|nPvWrnw#u%D z#5$de&m%m*;3uII`mUwKUK=*Y#|qjel;1kqU2ytiW-*fIXV3`uD~|E65IbAqEk@tN9wc>3w-HLp>5n95kOJc{aB>Fg z=ydW)9xSkPW|eVis@`i&r>yM$PulaLhKL zf)A+!@?3NEX}u|OdN6dZFP;yMw7T;};JvIhK?KYJ)=Jhjs)DAWRlv{6(LM0Jn_6Y& zr8+X^#{Dw9U0tlDeNnXPd4M&)Fc1lWFud{P)8N7Al2a@sy7l$W4hBy0z5R08FPZsI;d;E%_g|2l zzUjkC`U8SK74_~c;kylN-O!_NeN0xROakX}^qei1{%4w_H`H4j;*tJKoP0MVxoLf< z`ni06q{Sx|-rmglajhbMRKh~~nV$#Ot{^*94Kowv94;;5pNC)aZ?CsYseH?dg|hFL zl(*b0WauZ3HtX*?biO&$bu;quw|^#Rt&!jGP60WI9?R%n1NdL9#N08b>sMOc3LkEy zDzb|hWrB7j?tPZj&xD#lfBZt%f8nji!*VsdM=YPj9V{f_Z*ODeAkzdpsv)sHtLqW) znQstv(sLN3xbKSI8c^`|{*A30*IaX#HO0+{BeG=h*}^VXnR;&?>9gfnqjvp{V#Y~< zARe-vw(c_mLiz{8uZNl(Tf;Vb)y}O_kh+rEH0aML1~N&?+?(*Vq=WNn_doq5(jF6$ zt8F8eU*b-a9Gq3U_C8E?FPChpiwML*`u3l~=7wlR%M%W8BQ6T+tr?A$KA!$+kPabcSHLj^RAj=L26psS#H${2vQ{zm zDh9L?>2niXfvqrSP5|VUtIVNN}Z<&RJdbd z{H}MTubL^@+XIRe;cdJ*#+u&^Sk<%A@11RLR1oGhtvmK47+wz%=%>`-c;NRwhlcgA z>2m9uw0$YAYpl@jI9Ah`0d(gVp68eR*Qcv!7P`GHXGE$RZ1pQ=RHhH^xPl2ESS#hN zTZ=WFbL>Y@zkPFJKh^LX<$FNi11mWAo5fldpy#O7>bvILBo2YP*&WJGTGRgMNewd%1LzY#)OeJhV8X_@2hJokt(KevupdQ` z#}32rSIZiTcmk^}_?u64M+Uc?0!{#5SNQjB=lE@)UbKQKUQs;VGS?5$e7#73a5Lz$ z?k}#dDK?dRn)PY6A+;(wz-Ll-;QxQCL@HJGy6`t%KBs?f8Prm+);@ zJC(N7gADiiuzv|(9(jgLJ;0ArjcePQt>k^hXE$hdM?3hH=gH7(l9lj${-gMIS#m;a zC242W+yTSd4!dCEacxSqPFXPgwidyE;lB^uvCKMj4vu9|*AHd!og1381BE)TV0YdP zaTD&C-c~p@DnS1Lv@3>wgFK~prkBlsvpq-f_H4NvmS&ON-C#HajYXwKzz791DpIZJ-Iud1XI#3c((f6QZ|)Hu3E-aaQT3A7+sdP1aNQ6*I8+%aAvcA zn)r{L{preMa`^ks{8oCe2+5w5a0fG;r)ef(xGe2&&<^p5P z5V=TzHWBQmCt(YwKMagjYCRn{ghLKE!&`K9L#=6ruXn+_n#VL7>tNXF zR4!g35t+s?x-Slgsp(!H4^ycB08VLq@-+)#h!Xjc?2zmFIfM55cDQCakMdl_qEsRd z75-fhQ2ag*xzk(3T1;m0-Us*7jw8}}0CuBA#(SUSxpJ8k*+t>d=ECs&Yr8st;%yq4 zaQl4$=sCZV2Z}Uka2M3`)8>i%7cj^O11+4buMUFlK7o(boi)5sqkuuZrM|(g{z}os zx-^-*rW@Op)BG1M279PrtNgwUpUd&C?CLGzy%o=KH>~uQyZAys>0XNMu7Qn-rtjpr zb{p3!z({WD{{Sz?>R+H^I#J^75x|3Wj{Z}#`5^u;(Of_mMm;Gz`7UcP+@U56tNgzo zHp%o1XG;G7OZ0AF8FMicG@tyIlj0ra9eU?RtERio`z1#{r!Xvyq9=WqmN3-;!rnfP zIOL?e9dUG+@yk*=uaBHrqVewn@ZFY+dFSdjb(s3}pH0l<0+%WIh=Y~$!+2{^B>v8n zf8GVU$b%|=>@QTIu1;^c=)}CJXhtUnT2<0&-wV@DojUZI&}W!Pbo3pT<$0=ET+yLO zng*R5w2Dp~$DlpO=CzKBZ-cV^7eV|*)pS@RgBn#IU;R8;{67|ak1Y9Tr%zX@ad}Fu z^%^zkw*jpXT01OWC*{>I+jVFf((%htra;HtIrLOP=u~LSis_g5o2$(aE>&MI_HP$Q zixjm)_xML$exGSqO4Y}kr-0*aR+*R3Cw9kH6VhO8ch0SH zbny04W9m>fe>-`VKuMhP7HnkdhhOFAv-dFd!?T>_aeaS?Y`B+>ZuPA|RjEe3z^>*pm>j@FHaW4hZnY;6=MX}! zOczcU(8J6+#1FZ_!(d2OT^($-GoH<}M` z&3jybwJ&3+Uig5@+C8n4H7mj`XuXc6C{q;bxQGzYa02moV~Mn@JqJ&*)a`Dn zU0Pi}qhD<1H}*~+Gd^vEg{3wF3GP#XL)g*USEr-uvvjg@gtuoO6Y*^RAsrc#s%vDH z%;}8cZVu9HY;CM`JNvqnYnzIu`nwApNFab3eTep6m7j_FeH}`r*#4HawtcX-7WTEN zvACEq`tG?KNrw|K3UPwb-Fx4Q^%7Mle?8C3{{SlK@456Z3V4U%uMX+WZG971zPX-y z&bYXydCbgujO@8*6>&a|s&Pi4saV=pwA1ch<4Vj1a?=NI!?M#{@;uCJtA0y6oUUCz zigj2r%PeN?`tSH1*Fl3yhMkw8S{+p{M8# z)2nl~>CSW!A&_A2)q2D39B%K`HV-^t1?TdkTce_zTpkDdFyA!PW%X8bNB}cndTxQ? zub1S#EiL=56oijam9Pn#U=*@>C%J_@sJ*DZV_TjEo5J+;`}=#ZwZ5UZsM@@|oV>&t z-d9aLU2N)=={rlKR@crKR`lOck1DBgFC>BUNHGTj0@PgN%}|^SB0l+?{HxEK!@7LV z=M(Al9y!+Z5o@QOo9FB{`n*-A-8TN6T{X?Oy|``5+REH@=uRrlWiS-cCJkGy= z;TwMdaho_JO}VockGk`Z%~93d(nn|*2i15yVX8NZwUennk)T5bHZ_i%4y2yGtInAo z?m^BO8)a%98Ph{Aofv#xzcay?#rnLse2LEEw%c|*!J^xc=DGEp4&b;!{FTQ{plJ$! zFaXT7)>zal{qh3xX9=zQ-n`kR-99wTag66!ZMS~+D#T>#3|u0eBL1mgsM zzze6`{8({CR@ZGi9X6S%`@)mSZ{qdy_R=vDgv9%(@WJwpM?B;8S*XMtOdSPX7Q!(lACf$!?D4N8+cCDby|(R$!3_mdcp@7b@dUD%7~{>DLNYjSa7P0>TbQ3pCvZg_8ox5BNf+;i* ze+85$Ax!oKRkrAi_jQgi*0_UCr>ANXwxP^Q5RV_skm(b;uA6ZnGEE$Rvy z?IvDOaRbe3LuxdAAQi&{uze8@g1ckSCC=xMKZbPqE$OH1eb=LFb~^QyE8RZgoqKwa zWCJZdoH`ZqkHqo+0Qa4Y8*{wvu$0~xc!ghsb-H2CsO>ttgKjCzh@HUhydQ}EDATpR zH+?NS>6Z+kNPS9XTO{oxb?M2L4;y}`z{BC$aCn3%T2}AuK92BFvEinM4=>y&e^R;w zfCv8o_F6ZC^vxd)_lXp)Wyl?&$ z^shUAyZA4c{wOMkUCbrNS>0YJIW4xN$!Dm7v$uB zQ;Q4&qCjOu%-NhAdxbg7DnpDWkW@(JWxUcAjC2l*6gm~GKC01d&!T5@y09D)Ap5LZ zE*UwMaBxzFqdQJ_EyHJGy(-Nmr)A^WI18F>{_^%Jf@df6lTl8fdLs+7e>g3Ezy$pm61&0Vlb?R9AR1|mlqI_ zzX%+TsR@N>iIL-)AtXYMa#Cheg_YEP3dM7$60WJ$V?TT=K`@i*fJr4uIm((!q&r9i ztD16qEOve>);n?45fPV6;|nMpEGkC}DW?lb5P2jj-Li49NbQn}W4=VfpqZ7CP%L6d zkt$HIC7)D(;u4+FBC)~3Qs^oq>b0cFU?w_3S2-yp03}QllaJ!6M50Wl1mRQ;>A}aK zz)A(2-INCkv4g%58<46&7RqQuTvIlrf z1}0FA(1DysWH5v&vQV+NMZI#M7%DUvKr=+9Xi6|5Q#9dHh7!0yIm&Wp2~JExn}JB_ z-4U1i1O{GDK$(N(bBft4wwd|em1AA`t{*4(ieZ|M+8W)|0vko3`-G%|+lNm`3IGWVVD9Nfz{OJ|37Q8r z28i1#w;$NO-Ak~j7!R4C&)q-*SkG5}Y0uwzz=lFV2yL*$?}RN1T1cpRY?;_E>B_{s z(Lvwi{1ZL{u6H0b1rh*Yg2DaXh*J{Ud&wv0ouG5(M=dESX#+O-oE&ubR<x&`AMJcC>^=ZA} zS=kRQRLCF(NLp_c(iAl#QMvP49DVj%vp|xyUN5E1b7la?mVfmuP1-Db+0b}b;y;P_ zZ$PoqEv&TKmiAQqwmzdB%tuMgFK7OBTwMk%w5|UD>dxPa+Bg^Cvxl{w71H%P-A?(} z7qmrJvYP{1!g>z=>tp`_n+FPi^VjF5KwnlkdW!g``}>c`X6n2%TdZyV{%0|F#a|gT zf6;W1PyLbpYnXBOh}zeP7vF2uUq}I#(xT2*H`RSY&xQ^VbOUpJJ5MnFOM`gP;ntVH zx}7_HHm!HlbDYoo%W(&tD?q_xBwZzk5nZQ^s zY@e#lrorVf6EGqc;*5^cOHW{nPU-;-^gwM3X&5hKmP<^mAbMe3$Kg^L6033TCpS3&v34)Vqw@+7aaQTiCI%!!JbsIdMI2}4vxF4 zM6wB;)y;G`oGNdB>XfcYJIAp=ozR#=n{*&~j%1(?P*Y;93n6ysN`S%+*-9mbcT#Ya823O) zRT9eq#7ZE+RgcLyGKCx*t2v+$sR-dfTpWioLGGKn0lAUeB_l@WQ%a)1=NETUPokS8 zFsTLvjfxFBl7LVih%CLIHcGisPi2vS5CG@dAqmNbY`VnZ_H}7xR!-OkL+qbBomcrb3^L5gUZmUC-y88mpMdQp<34IKb_7F?FdmR@ zAZM9aM06j05B~sdKqGf=_==6dZ`A>lPd~g-Xf9(q?x~SnA)x;Nbu3{20E8z4<@aeo z!D;^h3IY&Ioxb4!GaV%}j$QOhGJdE)0R!lmoS&kDVeC?z1N1;MOnzui45k7|+j4<` z5Ft$daERFwVD2|VY9eHTe{{U8h^%bQ=-4%zx@C zdJ*u?x_mZaZvpW8er#Jas@dZwb+2#@HqhYR5vP|nw9fs)*h`x`kHvnHUs<2aV(XGI z&_)j9qWK%*U*^|o=RD6j_g`BFHey@9_Ls{1vwUzU?Urle8JFru`?;YG^Mi53A8qeKj*mh$YCZjM$r zL|e3=-lZ0MEhH?+qV4^a!bmF~nU@}mDxN}7EV7s+f(FDDwRvUKT29=f_$^*q90VD{ z+NeL8+Jlew0@_AfG2KfAUcf_l{1VjWIRK|)Ol`8#Mr?qQDgsGNDY{7ASjt&iFjmnn z*sB9v0K)Y&dumm$?b%hl)ZE}4JtckD;kSc)3#;(e3in(+YgV^cnUn97l5vBWzl%xm z6g&)wOOZ2``Z0arH-*}>Uv2#nXxh1K+uWAaY5E=4&mJ^+i0D$2(Pf)+$^aQvn@WxQ>~m*nY0C7YnUCeUz?dIZ zQ|TT;VSR(}$)afbm6aCW>6Uj7cQAjOMXoMBvKGJbZ^3#tfvo6N^ldKQ#n+T-8p7J2 zD0yqJU}AE)YpvZIKYnUs*rnZR?e!%lo-xX zW(UzYWD*Vu*;heqTTVn3lGkBlvYW^St#S4etYcl%N!M{bIm7#K|nVpB92Pz9vrGe$C_L~e;NAykMFk%T$9K}rk)p~?hFP-NjJ zq9OuN4$_E#m8D6O3XsUAb1C_zdMsf0D$wtgB?~MslkB9)NiYy;jH-~b&}RWef!UNn zl1haeuuMdCN)J?6cPLU3Bm~%yB}S1Xkthsv7({?cmq%n<1f1-U7zB~JAcoUEy;Vj< zXYU!xjWJEc6%WeDM1px)%BfY5VuM8PG7m*#zH?2X(lBGPQaP&u%N(l80GjV}SPw1; zm1_S0Y@<`1kpH&piJ!kv1Yn07q^k6~rATgyDjzdz(ARDMf%X@cYT ze^lfG`gG)&0GQ~Wt4pd=r2)NgH&U53E~+>Wx<2UHZ7$#BY`6aa0Aq=+_sQj8!6{nj z3u=Tq3!RbNC2NCiYdpaZbP_ruWHO5}C-;>7_YvKH;d}yZ=!5c%xxJGLpR}s*@3_+i zD@@%J)s2o(?5d_m*{Zm-L3V$-s!yNtU9O85;w+0ng7?7$WUQwcyQaYDYgza#cQk*i zGBRM#bz@%_HQ&pIh~-s&`6KoTbG(Y~E*~-cRc?U#4e1jdkU6wtK*ODfc1}q*zjk>U z0C!a+E{t$bmvc}!0kro-kJ?)^pc5UE7XJXLInj!hH|($FciRC2?$g`4&g8P3`E}e* zOQL(L+Rych4J3T6kt%^dWs|etzxGx^&CBJWma}gDsudLE(8Ok@ar_mAL+%JU4T(Xm zns)yH-gX`JMfev)x2l8#0p_=enCg_zAP1|}p#IgJVx0S`+CExDjF({cT3doVx-LP3 z5I0s9!`xzdX?`lFVV4-0cmvTjL;FjRLHmFZ6lf+&O#-F9G008|N-g1m>fRrlke6qD<9sQIf*Z zk%;}QBm_YJ0K7O%!5&=BYLv9b8hVdnm*AcgHd`pm{sTJJPU@R>|&! z0N7;x(wFfElqLt|Y5wU-atuiMLJ%i2p2~Ilp}#lNbp{XB06@SU!BNsdGuaSiV9pOj zHXlKh0{})nQcm8L&3kZ5!T|@ejv3Zk=yq zOH`oh7WCUrn02!xG+;@L;bwo%KaR6Hg}>I>tBVJ#Jlt-z9}vvH?0Dtiy%gQNXzWh- zj^ndDx{bVd`!g3k;*K!YxVrh*y0y`-T36`ab=YbW?EB63F2B+PbOUY~9qr_jt0 zKPg(fuA9t1A9b>6cWrfxM2TyQR-$5D89!$S6Zt1)5COpN8rCUY^ynym_f*JjO@QdejhG8 z{u$++sWhpXCxS@KTUlbyo_s>ruDDCbJ$1JAp2pO=Yn}s$2brL+u6R3BXBTjnmvqrk zRbiu4JWn%7>+~z+pB?ym=Klc4Yo=S$eNR4}3ZEdD#7X=Y)t(pWHFTaAr{}b_&me$C zU=7!fvHb~KIw?tK*&NftuLX2F8_hfB1}aZZso^nB)Xb2-Lf52Dnm_?yD~ajI!e&@Y{LR@Ud4?i9;f8bm~& zqSL-EY_96?)`N3Ke2N#x%#P$?S;S$+h4Jb@C3TcmER({YDCZXE7)`F{%^XL%I7c;in7g-X2}Kx)z$-p>D^vyC^la8f0WRW>+flUdp8(h#PwJ+5LT;Hc+bI{IiYda3f$W0`gNr{ zrqpFYPK#I`;6zB+mC`tyfcQgI@bdNbbUhvQKEmg=qo^^iYlBGy91vx5Ka877wRBD# ztwFAHn{fJVs&CBVtOMutN&}f|K*m!LKpv?ZmtgFlpP9mT3Ka_M z5Z>Vz0!VD(DEXXS&>{!{&h61s3JEnLc14D2I$i8lZ6lG#=_%SnE!<4YwpP*u(Q!QQ zCq3n4Q*mXPJj6N14|1`&xo9<=Tz7?Y@@dhCa5?o(-}-HCWK_i(ZD|C%Bn2J`ti}WK zv}RRAhui?s_c01F^H!}*!&OON{)K!5RP!r6+}LkbTOSl^x=3-`)FtN(qfzC*c;N@) ziy8aQJF1uOb2mt_z&75K0m(TE!4A3r84YavD&#uhjo7nrjVF^*wNTN3M0Qrae^9RW z8IA?D-^~Pw2f78Huwy|S&O0UM<+KgyQQNBsFS(;k$IBm866{}gJ5M#^T3v=We#i%w z+t+b=91ElON`;5cwP6Aym?RHB zXS#RG_o6ra6iAyEGw)fpat2jya5O6rPt5!t>e&APTBOnYjFISlRRot>^Aq=~{K7Jn z*C5DnXsu8Zep-DxD%vDljL9+FOu*=bC+~ei5skVO(k6XW84zUd zfKWHyFsE1(xkcD%-XJL%8}3jGnEE0HPCArGf%FJ8%ewA`0PZ$`r+nwCF(93=6aprD zloUfBm_P{p6yNegr{bU(jnW)$nrHD!?T67&Nx?&XlxPxuszQVvn{KpjHGFEV2c;JN zt9WeWEenlLHnAP4F?sX-Q??#Y4UUvU_f)n$Qw(h<3&whpb6cH4l*&b^;IsMSBB<#9JgMbL_ z9;yMfY@tH~3r0r{hLh@));%4Bp!yg~8>&=0YW&$aTPB5AI?kY+wb@$03)0cA8*N;+ zp^9(8J&!`RnTBkxb}`W@bO}9CEg<`(s0b6;bcu@;J0%`$Bx&{Nk22W{sMh3s_Aj|jNc-_n|$T?*o{Xy&b5 z%?^&l^Gy>m;yp>y}?Ino4V8Tb0H%`S8G*%46nKFc!0swyq;BXMo6 z=jkT3;{O1Lo*n3wO$}1gqng>LXKMcdGNo5^5!2l4xL<`o5VnJgbsMd5?6-CO%j$;{ z4FSh#=>dG4>Zhqo=94);iq zw!9|zn9yzX=GbespKayfRC7rl;QouQaPNrRAFW;naK$Fv*RJp%R*ku)!6zh`&(VDU z0N`(lUL5IK6D;-DT2rgY8s=Qk4(4}!i2AOSgr_-R_KiIxa5f$vONMG4%458Dnm(+1>4tO(WCd zTK4tz?MAJm#Y<<`d8Y6nIlRUQUO6(0wn-UY+;GzsA43v$+b2Wdq@Euc-dAmoCOMl&6PLVKoJ5kg#b;sP(p+t zBp5^MpJc#*5riRF5hS6xPrRin(HI@*fH0ULxhqscH+d??nMxBk0H7F?w?#GzHAemE zLJV*|iVR6WnR16E3NwCCRgG{BB&3|eGEd9V1q|16&#EEN!`!5HU?}6BRHBeOmYMZT z4=ot}*F>?*VGF0s(_dt2UV+@^@EKE`7tv zB3ZG8RR9l|;*BU}2RQESikiE!qRLKm)u}K?=9ewBd%t<-At`SyyIY=T8BbB7DX@L+ zzN)8Rzfy}-MJ6$$1Oh^1CgqLh`C2jPhu^LM$N>sO3bkr>2MYTUA*q?ES^U_D2rv-ge)X8_hxVLx8!Ucacn-orcZQDEva-pQ%BiuGMTAQ3&1fj3Y;bRkT* zQm**l2R#)_a_R#f8))&(^Os}QUhoZTc1gxhqNkOup+$os#z|MVH^3Hw$k__0?f!+o zU&JkQ4O^$lH2M`ugKtHmd5MYX38_?f*=`&o=P*-LZf&VY${^%*R=HL9f3qpIz5YMw zW|oWBkub(&Mq(8W4HiHjyytwU(KvJb%et5jXn;o0kbIP=003*9BzH$2Z^0T*Zhtc- zX^X&MklKGRjn+Fy`jbQv%~KBj6`aIZu0#SG0sjD^TzMAkCP8$T{;6NRh_Cl$z5v2N zJ-=*S)g^@TvIr`=apl`KB=gMuc1-8X?w{r!+}+V*M?J7EFa(j%DY170oC9xN$pS=< z%EmOh>YM-~nLhYcz6}bl=07|8@9vzI3iVuhp|qo}>13u?N_?AM#-Yq?quzYGi4ipi z`~=kFn$l+yNbajH9#K5Mdau@6}2K18he8j#sgfX^0l16U^iMRJU*a z4oLg&Kk?|AlVj}gCILxJqNhNt&Paj~9;BS05ypLBArOA5ZVV=mn|`Q3Oatxu zq12wmLD~*M*%&foeuzW#hBeMJ;Yr4OtwqiBeWuDL|*tsTn=hv7Chn8vvz(p|Md~ z8#{oa7L5HX=dh-I7Fc2Kurwphrw+iv^a<#?M}vTolt>Ur0!d68AtBjxNXWdRB`0*| zNGTwzLcliN9$XyHx{d0L1yTpOr)wjXwC;>@h!sDY^^4h2gt5(W-v@Q2kY#6SPUXC$ zB<{LJnUr=m2`E7%?}X08n2e|n>#ZD+k&}eL^d%XUo22O4hPiaxZ9dMm)pu;lP39#i zGX^l0U}UY;{t|J$COOaHZCD10{{W*q`7L7q07t#j>pF$)rF&|lc2=fZe*zX(NViFf zFaebVw?-mF%3e|zM2HY)(GX**g{PGIDHxbAr4$6D1kY6bu`{}BdwRE3+e(c$)TrVB zYXp*gl}MCU6EMf3_jPUu;ynt^o$jTgUs_pIATqsLL@~tl=GuK1fy)w!r@%$cc^e!j z6&(f%M%u#a?2&J8TCr|Vmcr=#0?T%bs8MXxvASUH>P`drEV(521{O}`2nqbR1Ca_c zlj@f>jdRG!4FsRb4Ovl$Aa_E3UD0!MkVm0F0IK#O001ZmQ+WVkTSnfkcSSZA9?cS| zF1ZjQ2I}gTwP+A3Q+phC4iPG-J&G!P3$aU8WJ!dqE|n0qCU>dKAP*@ldM>+#$<}RU(y<0#bt|Sra~pa{mAYXw4Oq2!VvnWXz^4 zGZFPv$c+$==$ax2 zbj7gUl7Ubel*|K|xT_q%7(1aHpy4PX8U(naE?~>SFr(>&;SgTW5+EvwV-`abeA=of!REBRplf=PSjL^QQXyO(;$EX zB>9&e0ceaMzzs*2oB_NkOp#6RKYOAkRthD-^l6jnVM8LE>*$zK~H5v(^%xw{r=n@k(%^zuWlF~8gg)`50 zRPx6tLYs?iD?W1PXVny6p>?I)U9BjI`P}SBWq-@|(E!66kb0#f{*6qDZu@MAd!2Dz z+}UV==)%|7Iqp^Ri)zL&_dxVU0IP1$CBRAbNLb-%N^oB6x4ONpi|1zzY|r*mh>=nL zuHpQ+Jr6~1A@glVUP+KuJns7xlb5`Jf3&hh3#POEAxR|mlB71ti~Z@0T#f-^FIfow2$?Qh7Zckine76d5sYw0jaltWo1`O?#OugKobhKf+^d8 z*d@~_lP$W(Q9gK``DpJiKMQ=<;vq{nr3U0MS{<)=C7tE6#g3`3ksmM9ft zlH`LkPylZCJA+1fz=wL<-3Ei0)0Cn2OPd;OTVcpS+xKr1u}4< zBbu)%%V|fl3@}@mieG{dG~@O=&nev~$CCm~6k6cZOELR7DO&{7%dpeYXOe}0kii`f zR6}4l809dQn4VY%0H$wGm-kOy&xBtmH+#t8e$5LU==9;FfoFZ-y>k?v5KXM7<;CSE;~w>{!Y9ZVS6G()#B zDv&{dane!dgY`?2KA)-~hnV2*6ai_$j>Q53K^-{}4 ztlC#S;_^SItAo5V{{To`1)>2fobho#)AwGSzxqP+^&eF2hm*<$5cAPe9U(@NIxizV zCQRZml(i?B=#Q9tEKx?-cS=ej#Dou2NDvt+BGMz*x{8Y~;lVaF8~v9rSCM%Ec9h>XsK+qXm4pKr|WdtSL7uU`|L=l>Y$uP9X^O zAo?g#K*Gqe#nm}6^9+x5K$2Cq{{Ss!XZM1!Z>O@}t&RP!n&#AG zxug&Y2kN~|9`j20f#B<#9dk{f>x#4ss9XjQGK=E`A9VgRcq)8ae-B*^Zre`#6}y;4 zR`VKx(YN52NTb7F58N?U?^oCDtJI@JiZp4EYFBq=wq(ir1@Upm8pSwI>sznT^j!6+ zM}y-nE5WWX;w?h*+ey*u+>3h8qF!O3mbi`2vcHHt1n~!kY~OvTaNXN&DT#ebU{q^I zbIURAwq6qPkHk6`dWAk0w>4^BRC}eC{$uHfIG#{;5j&Oiw}blkh}SNq{+8+2+?5^6 zQPnAYu4(F5vhpOUt~;F5S51A#5AYAd3q5hIy4SdM_f#J6(rUAroTt;G@H}?#Qul>; zw^q2}?j5|P!qi&V3bfki)2EM{Cm>4tKGRUX;V%_+t{<|w@^rHLR}7@afLPj@<(|OI zEpNwuE#g=BjYop*^(Rr`{Z`ShuStv&=9vy}HsBcOvn;a7JaWdqx9@QjqNT0ye2c@r zA8{`gk~EDT>gltGHINU~t;CP$XB z@R^rR7S8+P?u~WCegv}4#@eOD&)caMQl>IYALhP9)%+skT?*0n_xv@f(6wlnRdoVd z(dtIa?(0q_XAF2rsq1EoYd=n>=ToNdy640;ex-BI1w41xc;fc84Q14-0`S+cG;)@n zk?g$jSv>ragZDO^RyesDSHg&+PN3$b!tq!GBP*eJlkpQrfVk^W;oU=rtu8F+Iiyt# z1eUmU1!URq#h(Ru!>U?o)SE`i?9;rbO`-z}zVHLIg~L8BZN;~XHR?w%ooz|e-vu*d zhH2uLs(*o;QIvJBbG6*?XNO)r=(Q`@Slj7()7VW5n?~{i?t$$XBlB7hfm|z7gt)&_ z(e*1@V*1MK%XxEVMC0gIq43$nHLP{ImaTh>1Df{9!um^#tm)Z!t6`{90j|`nnNjiG zu8-hC@1bGHlvSxG_H1*M+@jQ;@o4#n;=@a!rg*P=_Ir9%nOcP^gi~N>B!eagvf&Z< zuciJnt^B_cEURWK*)Z+cmGfLry64c!@he`xndzFQdps+kyNI>BYYJq6RnSiG7u;HY zpTeF5_-;6Y=SrhJIh-e~Dc4V^}ASaN=7tSf=H!66}1n!#WL4A=YiQ`f?3t07&R1eY27zfhppH3 zEh>f8)5xbql_|8oyZy+(#IKk954UAbGot5y>wZ<;zA&zhE*0R*HqVsqcfip#t>O!LsHM0u3Y-79DC6IgwZ7`BLU<*Lv}sRebPjIAb}Y8)l5fPDJ&Uq$E9ut)JL zmSyyL!NF}Un8hb2D9f?(OJoRJ=Y{+YSB*G|-p`TGw`+l^9j9fc+grN5W>aV-&maIg zueZDm;JrV?o(#C+ePoJM=ui1cxsM4tL z&WvOb*8K!8&+S#7RsG9)Hlv5;SA!n4)Jih+PwhKHOUH5buejR$C8I^$Yp1rgCRJ%a zb?uQo*LwK4(rsC!aDCOSr5bfA)2PQfn*&Rr2$&iF05!loFRSHoj+$rp*WJ8%s_@?p zaBh{wJVR*9-{{&!mbUHyht+&{{{Rl_zgcS>B_7P>i+s{v->Lb?>pHA#x|_i6LZq~T z7>(E692w$g26)X*wu!88&5Z$5=7ji@-IwN00R#1h?d; zaTMJV%-0!dA3_(>H=HTMd;#DFsi+A0Xd@kW0Bk;d#mAW_qMy|osJDKK?fZd$n9*^ByBhy zm)su=VBT;w^{@n&+r6L;rCz63(Xu#mTO8Z|tQWcSKZbr4UUBCWiz-bb)}2qxrrXdItMOI! zGFwb%keu^7&>zJ5FOKT!mpo6zru$W_`-=B<`RcvqNs_oiQqM_nx%X#97Ym%Z{E@DT zPA!hUiotB)(s@tdzVfTUz8&cPA8DLPt!S2vx6_;EIMbv9>$u1bF}{1R3x+ty!tWDq zouNO2?JS#91uI|Zj7h!slAgvC=>|wBd}0XmuIHyxp8-ewtN%f z%`FO`HyUMXjjKpK*>yK$1MA&ve-r!-!`vrNhHB_qUA>Rms65s30RiMh5 zO;^U@=zQ491?~_fdRj(`{bN(NvTM0K=Z15i-Idh-9=K;p;x0C&ZL8VRytO0xs-jv~ zK&ChkfqY!zO*>WL!EsB@YbW!?lP|5smlCX@M7n~2I&u} zsZrD^YBY=6<gOYu> zBt9yx?vI;T*m*PcO-y0#>aV20*_`EfKN5UA&@>MScsp9tth~KS{m*U9Z!yGFfO-=H zBck3+vBwoB-KF=HTb7S&`;H4qhs$?a>Z6$9NCFO5)LsqvHNu>2;icXFrVShRT@HK0 zRJX~Z(APQ}w%psVCyniVE7q(iaQ^@V>32h2sdq}1JGzc{E7>sPmwO$D(Q}r1mW3AH z--)Ozj<)tbb$u6dv8B5wG>huCIxnv^UIp-X!s>QQ%sd0@L zTa7-!(Nde7e8Mr1A`auK&>u{)ljCx7zWU+8;qmaVh;8)BdXV8cak+D!`$K?8Y2F|Y z&3v8X4X*=RU)YWZec7W@nKvTj&nxE<^h|wLyt2l-d;0pE;TbsFe!Y%l`E4p~+#SMf zo0foOu^!4eb5(2;%smpd!PP6g3;__mmUQ2OGyS`{x4=Enb}i|*nDdtg1+5JiZG$1LmjzoL{;zWIWI50=vTAZ}E?fuPZW2irWHfy5J1wZb zYuB+;+mOCL)hW5AS|mHaqOp$u09w4M$UzN`Ug!xoblZZ!-)>TorOl;w^HXyi-PLRN zx1esg{Yv?{ZEb{03*^DrtJ-Qh{^8#&wV0iuBUmY$R>%$lTn12SVf#yiiD57>Wo16s z_=*@X{f^u~hd(2(>cUHETsxRZ10eoMSkeBf&<`-lAS9k@cO*27!SqwHD6zB6KuN&J z?3Kj%FEURv_wSWqVHIg(?lNTcRs6<)Cuck=jFwal6>9=X0g>vfV2YNwI0x#Qr1RY# zU`TH2Hx+44Iap3QN`OWHC{l25`&0BxU;8_o51dYTp zeUzS1(*qO)PgENqi9hV59?3wB01=F9)G=$vj=OJNv3i<|Llr(V1CEg$`% zbc`4s$Xwfs&o;k)WB14K3x<9U*ttAlaF{w0g9=LW9)Xj3f~u53g(z8TN;|5-gn5vo zg%Zk$2H|&)KC@>9n=O#!Emwuz8i@yIG{V~mf>p=C##=E1KuAVT6@+I9IzsGb%8OD* zXjeuRdCnCegm&F1A9*%Z7@R9x3lO(Et0|9|N?gie?~tlQHnWz98-aqC-3o8!ro$pg z3Uq?K6mn#ON!@gx25t==Ew=>W*&mAL*bCd?ej};FI;9KxRGU@Q&)so=Lf$zjvz+4P z7LoPG#f58%ULSCE{jGY`YBsT^UrFVr3p&TL`0Q7$sNU22O=^{#_W)e?5@YJRuZn&@ zTzHYfnr{yO07KHWp<`9G{P$HasOJDgK!65)R~)9|*Ml&6Lh^LjbjnhfcFwYurCx{M zz7W`1@W%k^TBU`JI`>vKZmmw35?%;y4{`2V=Qs3P&yV%#>0T~yh5bSr%bOESxa}d!l<|+m zbv`EJEh}EO(VuTh#^3DKIqHJ?;%AyR5uT@Yyz9Rc9v|^OiEhnvgzDOfOVrEcv4+@Wwax>|%KI05$TwZocEc6iwv>fBWzDG2(bobOIOEMn;qlx#el%Mfuj!8{ zi*K{}f+|Kiq{MfX<-s{%i;IhUzs&C1ljP$*6>6-~xW3M#$PIbql6GHK{6uLLIHSQ` zJ5aZ0JxwyZOZj(e41#}x_>S7@rM1IrQarC?`GM?L)_xLvK63HUBlx3@}0K}@RpSW&2K$p zoc+)jy`<}22l#GoHGMx+HD6TujkaUF*H2*|saz9`{8F&-SH#L%rn=K>pizocEuP{- z7!En3sobwT=PssL;SIFAX5kfy&m_0L4QIj~NxE+tS-PQ)f0KMKrT!>%m+=pUng+9P zNWAIwe7b~w<6I(7)CJExTGxCkp}~4r`XNrs{U@PajxV&PL%9Gm%@y7*z^p9<^z zGh2r^sr2d4x~Jt;r(Mtt;z9Raawne_%XmM$!kfoEPl+RfcqL@}jy1OBX(59vx_n|? zGLH=KW}NUm@7h!%as)Ijhd{INZ^D|l8qF>uWpYnDX%~u>JsJSreE$H)o+WAiE_k6v z{{UBWtuzWmP@_tt;I^M~M^n{fB;Qdyc;L29+w?V!C@JKTC7=ng+$;J(oD7lkywJ>iQ!9=78P4KGZjMM}YrYu{PJV18f#8~d-EJY=x&mcxLo z9m2J2f6{YRoWj zXNVj-qG=C0&bMc1<~6~>;-G0Csb4X1t^K|K02XUC?Q075Z@a4MH3Y+&USNsnq@gv` zQ+KyNpv2aWD|Te~e^<%ktu*a5Kwnn;O55Ds_&>w7sI|t88OH zQOxyvA0zl9RrI*p*f6-Xh{wA6Q^uYmXAO9X!FOPm)~{&lbq}C$E&Rz?oEzak1o&Hj zaj)NTWu?WFCDg;=qye3QGJTf-@uS57;vXG9QL*Qzr`iEZ)vh^!e)pj#D~$3yxiF|L zlehP97A;F7efU0*@neE5_{Uh_{wuX-IjHeM;yc8%_z<)Yi#{c7hMmLwBWqXwjZe?G z4L`lJXY*ZSzz!oEQNkjP^Es*8^48{d&2vuw0F5Xw~{HK6M;IE0ANsl0KfxH38SP`kFQ82WD+1QokzUM5`dABdWzdpnOZ$lp{a zk=)HAoczPS7tmfH@W&5$(ZZB?t4+GJwAbwz9_K!zSlaCZNF?=*kI{KCr-~8F*`;gI zo%J_(r_X2VV|c#z)cAL?dt65?#W?`(AhdK=VO%V51 zq*}u9%y4!aub#XpxMe;z)1}~ZJ~v%DX8w_pHMRbSpDItJO?n?e{6e%*@kfL!x;}al zCww3CSicsOg-r*8D}j?u?fjZme-&D-8y+a&>$-Jmx%92eh--mAcrC|W&~*O*AG|iw zY3Z7ky)9o)%LP~bt`P;K4!8@(vC23hU8LLjHqTAR&UfBFiNk&yDtTTZS?>o6H^#7N zc;|e28;VZ+KwV?PKL%alZmunCH7Pdo%Bxvd z$$v9U!4P`xvy0++Fl6r9Un0prDj8$DRQ}_(_&37t;2m?0wF`z8)6val^E>5`0WJ2B zs5Sop