From 41aa14f35458c9062cafdca62a8c3f93cc3e2ad9 Mon Sep 17 00:00:00 2001 From: zumbiepig <121742281+zumbiepig@users.noreply.github.com> Date: Fri, 27 Sep 2024 16:58:59 -0700 Subject: [PATCH] update --- README.md | 16 +++++++++-- build.ts | 76 +++++++++++++++++---------------------------------- bun.lockb | Bin 118037 -> 101047 bytes package.json | 5 ++-- 4 files changed, 40 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index 48d4b23..bf9de09 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,16 @@ # MineXLauncher -### Update data in [updates.json](/public/resources/data/updates.json) +## Usage + +**Prerequisites:** + +- bun installed (install using `npm install --global bun`) + +**Steps:** + +1. Install packages: `bun install --frozen-lockfile` +2. Build: `bun run build` +3. Run server: `PORT=3000 bun run start` ## Client versions @@ -10,8 +20,8 @@ | Name | Version/commit | Date updated | Link | | ------------------ | --------------------------------- | ------------ | ----------------------------------------------------------------------------------------------- | -| 1.9.4 | v0.7.0 | 07/24/2024 | [Gitea](https://git.zelz.net/Eagler-Lambda/hoosiertransfer-mod/releases) | -| 1.8.8 | u35 | 07/24/2024 | [Eagler Archive](https://archive.eaglercraft.rip/EaglercraftX_1.8/client/?sort=time&order=desc) | +| 1.9.4 | v0.6.1 | 07/24/2024 | [Gitea](https://git.zelz.net/Eagler-Lambda/hoosiertransfer-mod/releases) | +| 1.8.8 | auto updated using github actions | | 1.5.2 | sp1.01 | 07/24/2024 | [Eagler Archive](https://archive.eaglercraft.rip/Eaglercraft_1.5/client/?sort=time&order=desc) | | b1.7.3 | `38809105d2` | 09/07/2024 | [Gitea](https://git.eaglercraft.rip/3rdparty/peytonplayz585-b1.7.3) | | b1.3 | 23w49a | 07/24/2024 | [Eagler Archive](https://archive.eaglercraft.rip/Eaglercraft_b1.3/client/?sort=time&order=desc) | diff --git a/build.ts b/build.ts index 040964b..d0288e6 100644 --- a/build.ts +++ b/build.ts @@ -5,11 +5,10 @@ import { statSync, writeFileSync, readFileSync, - // rmSync, + rmSync, } from 'fs'; -import { resolve, dirname, basename } from 'path'; +import { resolve, dirname } from 'path'; import { minify } from 'html-minifier'; -import javascriptObfuscator from 'javascript-obfuscator'; import chalk from 'chalk'; function getFiles(baseDir: string, dir?: string, filesArr?: string[]) { @@ -27,7 +26,6 @@ function getFiles(baseDir: string, dir?: string, filesArr?: string[]) { return filesArr; } -const isDev = process.env.NODE_ENV === 'development' ? true : false; const srcDir = resolve(import.meta.dir, 'src'); const publicDir = resolve( import.meta.dir, @@ -40,22 +38,16 @@ const copyFiles: string[] = []; srcFiles.forEach((file) => { const strippedPath = file.replace(new RegExp(`^${srcDir}`), ''); if (file.endsWith('.ts')) bundleFiles.push(file); - else if (isDev) copyFiles.push(file); - else if (/\.(html|css|js|json)$/.test(strippedPath)) { - if ( - (strippedPath.startsWith('/game/') && - strippedPath.endsWith('/offline.html')) || - basename(strippedPath) === 'classes.js' - ) - copyFiles.push(file); - else minifyFiles.push(file); - } else copyFiles.push(file); + else if ( + /\.(?:html|css|js|json)$/.test(strippedPath) && + !/^\/game\/.*(?:\/offline\.html|\/classes\.js)$/.test(strippedPath) + ) + minifyFiles.push(file); + else copyFiles.push(file); }); -/* if (!isDev) { - console.log(chalk.cyan('Removing old build artifacts...\n')); - rmSync(publicDir, { force: true, recursive: true }); -} */ +console.log(chalk.cyan('Removing old build artifacts...\n')); +rmSync(publicDir, { force: true, recursive: true }); console.log(chalk.cyan('Bundling TypeScript and modules...\n')); await build({ @@ -70,39 +62,21 @@ await build({ }, }); -if (!isDev) { - console.log(chalk.cyan('Minifying HTML, JS, CSS, and JSON...\n')); - minifyFiles.forEach((file) => { - const outputPath = file.replace(new RegExp(`^${srcDir}`), publicDir); - mkdirSync(dirname(outputPath), { recursive: true }); - writeFileSync( - outputPath, - minify(readFileSync(file, 'utf-8'), { - collapseWhitespace: true, - removeComments: true, - minifyCSS: true, - minifyJS: true, - continueOnParseError: true, - }), - ); - }); - - console.log(chalk.cyan('Obfuscating JavaScript...\n')); - bundleFiles.forEach((file) => { - const outputPath = file - .replace(new RegExp(`^${srcDir}`), publicDir) - .replace(/\.ts$/, '.js'); - writeFileSync( - outputPath, - javascriptObfuscator - .obfuscate(readFileSync(outputPath, 'utf-8'), { - //optionsPreset: 'medium-obfuscation', - target: 'browser', - }) - .getObfuscatedCode(), - ); - }); -} +console.log(chalk.cyan('Minifying HTML, JS, CSS, and JSON...\n')); +minifyFiles.forEach((file) => { + const outputPath = file.replace(new RegExp(`^${srcDir}`), publicDir); + mkdirSync(dirname(outputPath), { recursive: true }); + writeFileSync( + outputPath, + minify(readFileSync(file, 'utf-8'), { + collapseWhitespace: true, + removeComments: true, + minifyCSS: true, + minifyJS: true, + continueOnParseError: true, + }), + ); +}); console.log(chalk.cyan('Copying other files...\n')); copyFiles.forEach((file) => { diff --git a/bun.lockb b/bun.lockb index 31eee5be65993b30dce9a219810de8a523ec4a4a..f409260d136e42e8689d33d23aacd7f6a1a0f2ff 100755 GIT binary patch delta 16357 zcmeHucUTqI_V(<7qYMgmr3u(jP(V;PD0&Wd^jKp73n`rd+t2GXYF^FwbxpE&7NVL z`Dkh7;*ToL5Af~P+xkoH5*IUk^cr%njDq2|^VRtJQzBEiFA`DYzr}d`(_i@StgSCPvgl z`_S&szbJiBuyPcHPwveA;UTqhGNoXt8#$=|9 zvyHO~!WoSp(R#1dr*k23u1|DSRl|3>O7UIZu6$DQx z9SK<XZb&I#2j#xzjZd#rVWVo@A84d|`OXh@1$ywy6+-C8VULAx;-HKH8QN z@1HqN*x;kKuhQf=|FNl~;xb^(SX;6!Ls->RZ9j@}l(@moRJ~)Y6DJ5b)`64$(PQH> zGOY2!PV}pmjS6deW`=ESx?oKopJ`2-C|vSY2U^o{hQN@|(UC$tz)$rwZd7U-g=i`2 z$+Jn#)%y3qX-VR(BQq1wJ_(#Ad^^!LDiPe4Zq0%^VM+@%QvLj~?3AeE;xZEbVdkjB zxUplDFA-Q^ZO`RCziiTeWCRs2W0K z#K<@-#dRp6jwc~$!qG-G>w6*TD66-i9{+OmrRf3E7<@X~VN*^pIGr`Y;G`#vsRsIc zzn-i<*=^JcDO~N)2a>XRWLn%PD?)fgtFPKlU6NQxYEQPNC0G#^JxM>qM9`fx8WR6< zrsMP@1AIZKKQbvJ!)8ru4nt@Oele-_J#J}*?;t6JDXIRW;?k|cZL`V~DPwS))B1g- z$+Hn^dx6_B((0g>v$duq~IlXJCxk=^-ODZuUb9_lQA zw<6q9=;nA!j4YXYHSfgL@bg>!JLT_AU)ntPxzCT4T`zQdzWvIUZ;I~i^!jn;M<>d> z2Rm)=ADP^uxx>h+^|}qI+46Fgp~o}Vq;_5UWx|JfKRvF~YOB*qJ04v#(&5KDyWC2= z|2k8+vgRztmT=$NW_F9)@Y|T@;ddA>!|#XOw~krbD+)pj_#*Q0wTc*PzGPJ~T-+E@YoZIkwh3C~X8=MSK#*@9m4Q)_r zNhN0EHW%uZ=VBHg8hE*ji4Ebtu4ZX9F3pHDsq`|kn>-J7O>vRI*^*P4Kd56Q1Ki9k zmfP^Vf#>13oR{IZHTQKlvv;`-za>1+-7Fc9M4B#`*NyvnnAt3D^Ds+0(GsD|Qs8D3 zpE~k#50k-&#W#_4(o~ex=Ae2;!+x+Z?q4rld|HK<*Ebo0a2lETUAJ&UDoSnn-MZn1 zJd{FtvU@oDo|k!=SvBtKWoF^rhTlw{=Vg|*A=k+Z)w440>ur{NouNso!$d5B=Xsmi z7G8!H1NIs+0V`0?D0Km&K#TlAZKE_94Ch;p9kpR8${LuZKTt=S1U|m5k+tErhGsT_ z=izrFFKcKv+`?WI!Tn)he{O4JW{Y`VBaA}gl1n7A1>Px{p$KDv518c#@yV za2{LZK%VRuZn%xju^W}dNuJ!Vxk(z}tvgDgn6I%)e0=>d2aOmwVky>a!2Md7q)80~ z0Xq$X8HD}^!6+06jE7Nt*npR#OJGA)CF7L!V;b@#f0MKpl@w%z+{Y+g0qY9J_=6Tk zsX-%kIg~^blN#})0F!hKm9%OC&2BI>7KF~U-eUL0+%M21%|=CcY;#lcb)Yi;%ld;GE| zwY9?i51lV+&oN*$4n`nnHh`%U5i19yusJAN+BH*6g3iD&2M~%O2y8C|qhU~DR+?0e z1(>a=uNpKv9t4&QMr}B!+>D0R#Q0s$aOnn0#GkHom=qyP?HqVLNyjUCQQ!-qZC)p za>FHJ%644EA9gDnUMxy<=Bp>cN-&BZ7#8Lt7>&ksSkOke@1g~*tel|}fH5n&F9F*%^5sx%3VPFJLehf&%L zM*6Wscp1f?T5`W|lffT%X5rkwQ9BmI^TSQzt{`3>Zj$bzn&OVst#33mg2`R@Mwf8I z43r{hXBN)|^YV5k$+eXr;EsZ3_clt=U>(4ejZ<0zHc(MQ*?SL+oK?0XF}SsIVkW>m z+L_gCIs(>PVHB%|SW>b9*4Hr_qQR64hcq80bqp<8na0$p`C_S;@|uU=$5yw-f6dd3glRd$jjJB`y?$!W=-lgV^(+=0?dGo!?RzPG)gZ7%%T& zG8{u?jI!kf;(o8cQksTR7b;0#qC|$O8+mUR{xk6fW3>X{LZtn3bT5_GX?m z&?K3W2Q&Z++}9{g1S7kYyB=v97y?eY*V1TsOl_3Ih9JZTw=?eHQVdFPg?b>77K4#4 zdtT7UD1H~g%Og#a3sQ?zswY;g#<0|IZVlJ~v`LgK;*$>CFWMxAb>vCWCTSi_g)`a) z=7u}fIGq{RfZD2>b5bFV-XtL@$aFoQyPz^Skr>Sd)0CJ1>W5 z)r0#DH;M1|;7P+x(tczy#T!>AccX|aW;xnATe#l{lQ_k~lOXn4c>V~J^w6SajB)~t z#-4?KagKJ`4uT*Q19bdPq#efZ0;&Lqfl9#F04^}X1Aq>a4EU7@4#;e!;}ew&Bt_sE zKpp=8==e{P`uz#exaR;J|1Xlpy%72<{ZaU*qz+^SDHau?N-EmnhorqG4McE|WPG{R zOClywE#GLZmrcwOjH2YE^(9F~XN{AjxvFdRHMDw?RIG^~8ed1_b*T~uNh;RUctuJ2 zTp9lUqBb|J14+hXM%T->N3FM3TTxO~1Fil|lGHXLEs%}1ek7^hN2_nD)&B>Xtte=w zbtFk)3(`1ADh6wuBu&s-<0PpVqVYFLiWmLmPDe#adfGB&S*RcgbQ*Moq=wGg0FqSf zqH&T`?5fFbkOuIckTkA0HENQIeegrFuO|Bu!SPaNYYlHfl7az{v?S4xq&NnWj*7A} zc)V6$QBsu^KO{$M?QfFQl%Ta|Q-LP7X%!@?n55N@)p#-_88%*%^rV;$k~IEpNUF-x z>fa=3DJE&{Brz^qn2Z9|P0<=EN~+Q$l%utiq~cWkkir=npGlQCNRmPS(&}evTzgb5 zkiuR~<93 zZ1TiY<3F4Hwet&~X^S`2tzKj5fy4{b+^1CvZRhq?{aPdUJJ0`UU%}Ppx4M>pzuT~~ zB%$EL#jGpNESz5sInXy$R|;wW)WGlOPbu}C_=CZ%{My)Rt(y#w$xfbeu#R1|t^Ms6 z^nb5SodI(n)Vg=1*1L0pGb3!v@gaWZ`G;%Sx;!?_ZfWcrn0dNccIk$>yN_NT-Y!cpD|+pfYj$i!y$OeNH@+jp zI?o8n?p^rg=-S`sG+a~C^W%n*^JacCWZj7>lV8M-Di1n$?#CmCJBF5ewu`-4)M4mv z|4KY;be}TZ-RrG)G{t1_@QR8n-JIZ-wYSddX5Z|6e)ZQI6Cb&3t6aBMuk^+%S~<2W zoYU!X;GAdeyS|_G$()#7Gs_RuIFo(ghWlsV%-b}>?U>vAcAM#z2mh3{8&Og5+og}5 zEm{-O?^NUYV~)8>EAKQt<(nguZSU4^5wM~tsBzw*i~B5tC(n4l{efIfF-2lzMa50ty51}I z*OVJG8(jP1?C8$N-;NLSE?jiGchn~bQhpN}>^)f8sO=9AJ2W{^lriD{k4;+pZwBOCuTUa(9ygZ5@1=|BQl}jt4c-AT>p1i`srt_U( z%|3&FpIX>VZu=Deft>*R7k6C=|5n4ll@>Oe9|H?p1OHZ8*!z6qD)w5UN3I46OusnVYENnCU+hAeq`NR$I53CeyBlq11 z|F*!tjTZdJ#U-%F0{FMd!V388P4ExwE?6ONvl;$vg@2nZY#T2Fi!OwJTP&=YFWCbB zir^pEPTsu${()^Qu&~|yDOln*__x)<_VB!|@NYZ(E3~kEd~hNB1KR_(pG!sXuNeLn zS=d3o6Rg<|__xi%4s+W!_y=|Z>`U&t9sccvf7>nW7(WIUwhR6hTiDlpVln&!D+N2j zeRsgW-SBURg`MJ;z#_kZe>*Mg44=Id{(;>EJICAXf`5D9-!2Qgz{|j*_rky37V%qw zPdhn?JM44fH&0r`O9Br*HHhy3{pgfMydv=Hpot|;yvu2eSSs*^rw4JD{Z9Nb==TEe zcxDhk3c78NMf^eFOF^>^AXaBA;thfKI6H_pJBVPNwTL$b{tWaYXv{f__>;i%&kf?U z4k29UEn=C#hnye8!ww@}ptl9?cwrF#88rEVMZ7EUU7(APAY$KG#9suS^vxh1`6WUI z`as}r-wxtWKqr4|5g!WtE6{aE5wwdI@v*?)xj2YNA4AkYe;2slCHVUl!gk3bJ{9<7 z&>f)dFI&Vv1U~07{QVk%1N}?jZLh%Jr}Yv(K(TO*S0S_bbXN>U-{6U zyWG1&6;Aq_BPpJ0zj}5&$Ez{FR_0)Mfrs@HKXWHR={Oe;*B$W?ONOitg+mpEj!D{o z{?`sEJb9-F<7*yPU+C{$c>j7;M#HM>|0N!3QvdIm7d`YgJOQZ+&HbqhZ~15h=B!O+ z$2!tdFr9ST=GS{>rJt`aJ6Y;llJr?J}dpTVqIw($IgdQi*n0QI3wo(`SUExe0T zBPh?Ts1N-)>Za8_)i_;sytF#~85R9u-%zW24oPF_VHw><(VxW1vnVRlU;6X}O*v3O zb@Z6xvRWfBt&X0V;0tE++XYJd(Wt*$1@Ls6!K z9(+-;7LffV)!@)>jp*F~uYF(v9LlGKu1ljt{%!s06A1ktD|LW zPqX2ut<|}rY(g1E)q44O?V5wyE6hor7Q(i+r}d$C>gdq|J${%5Ob2oRdQ3sjOz6!y zTC(H73E(7f3OFs#4P{>PmQdEt`ZIVLP!8M%?f`dzd%!OMJ?x1Eh65vjIAA0&3ZMtH zJAj?QW?&0Y0Bi*cfg)fVuw5Q(WIUT5XCwnDKq@c}peH2sxP}&F4M4Z>^h$|85CF6U zngaBfYD2&S@C3X7da~#OP<$z#6hB%#S}R9@lE47aY9c#3D$il**)1OQ3J-xtz+-^U zBYGH|fR2d(-Te&#C?hBVb^~7kCGy=cX3TyU)e`}_`^*4>fmT2e&=_a}Gy=QjES?;RnZ-T9lGL11Upw-w1C1PWiqL$OS$JRsqWZiZvR&0jWSTFcugC zP(5*y=|Cos0lWjy1UUdy2~&Y-z;s|HKpFQQK-ou0L`gLdAmfz;qe0X_@CPW976Tsx zGCB! z;B$Z`)?rtlsaqHADh7Z$U!y%2M^QUDwj=W?p4E}vWAgmY%#DS~>pL^oR`F>~S;NBmjt6=o0GtEo( zbO=45^f3ms#>p?&>cV=lF>+iN=E^eVNnO}f_JRBti7PT2!0O10y0S1fUp~>5xw`9b zm+ua`{zLVS4rY-}2?}T#5RCMcSvS^79pftZ?#A3g^tZ}$XWzB@#5L=NSzDtsY}Vg9 z|E%DJ;~($f{+Mi5T6z>O@5aWk5d9_aqIK8bsb<{t2onXXJ@hxMlMk()V!nE@pVnf; z86mgt4kxzAH7pRj|t7pipv~$sN#vIm<&yc*rkkGCz49Scv|% zeDBK>o~4Z2>qnzn2DE}&{k{6qP9450?e{ECWGw?iXgP$6b}p2q?yP=sZ41(XEtCUE z^&6d2t(3R)WW7}rT45zy^}=$fDrBgrt3{%?s2B5O?)ppf$2OaG#SdubO%}8c2!;u- z$4v>6Ywf4b$~{@mQ>TX8>O`!(FS5JNa_>H@?f+fTEqPBL<|^K=CSUBsg4t!cN?-Wl zBUc;4>e^$~0%bE*gvoJlA=3JL`dub=T)KOI7bi8FX)&~Zm*r~x(ETTQKSqi7Yseoa zF&Ft!U&Kgla@SwYclmVElDX>!1iwnI*Hx%9vQ&8iDLgH&C-J5(a?Q7({YQBLEcV2j z|N99vm5Qh>&wGm*{-ZUU-(s!Y^$!FlJ^H3i_WE(rv=T^lnS(SFFz5`-;TAX%*N({ z4bnw@eOG^f_En4inSuU>?W-33Lj?UD+*d97rwZCzxp=gon&xCFnTu$uFW-SKQPU~*Lj6GK)?egaP<-&9tzpotSGuRym+zy8_*s29 zWgzowc%Z(zZU5bx>g*g^5aAp-BA&U4!Je{nJk9jlco(sUr#v6^a&;@K*;rSmzu=z! z#lZEO#A**T-UEZ})RAcvM6BeO&%Yaboea}-aL61=V z4gI=?!S#FBpMFeaZ32Rj2DnA`QvP(xN$)vk;D}DsW-4QqncTc&=O~QT-}--axlx@} zc{gxDfc93TUH_0^UyEgz!w0(bKnoHpAPhH}Uh*)E6>VPfgecZioa7}RiekZ``Zp3E zuG%{AugRwdVuW_R(7&cwwxsdiUOX440Iq(@W#@A*xkWS^?V)_IfpEGWT_Bat+_D}$ zuxZd{d(=zb6wQLgi(c||k~h5Mx`Q#B{;f&v_b*=`c>M5MWrVUl>tCY`a*I6U^`H>( zP_9mhM+0wp%3xUT?=9zyfYcKt)LTA|dXETi^;E6j@P|evQp24XiAYloA0Ua;59O^5Vb?^26Auep?^wK;`~!yx59W@TnbwV?%5m2pP+|0rh$BV2qsrY zxOl`hP$v!h*nd%jgEe996xz$N1X_P+W9y=7XWHyoC8w$Ht`KY%LgZh2lJFa@sm*`2ZVU`U(^7)~xr^l+MYLCEN zQ^~EFBPXK=T&Etv&E$5&&_n;qCfV0>Wd5R&eME*#QLeL>eC0L6FpK^f&EiE7htBVa zc7cu%q!Tt>b)j8k#~4=A@ur{pQOl&}^2$UQiQy43ucVw7!&-||TFC2SFe`mZwAs7Jr2R~X(Qi>gKPdsNC{0|;`P{m_wG?bwt>aC570Nk zzi&-YnnIhSR*wt!s*$)74{aoWfohL`pHYdy@_p*@Z#D*;syIa(kAnSDxExKgPq_TS zD2&iQv}ymaq~NRSA&D^3h|EI#tG1I%&_j%ECts!!e=}CwT(#|7-^R5~RqyQa#{E<| zfz)mM-)zGrCiT2)UqwFWSNr&$SL^VVNzO@zRp(6d(qvfmok>0k?r{qvDA+MWx(-kN zc^EGBI75QzJp9EZiz&!|{mY({tUc*vB^B~QN7)-PRR30INArwnRX2MN7a2|&<m*H!+2CfB(>h5nIIM%Rx$%Fju4|2fh* zQg$AX2JPcz!&PJ$9tA8S-ER=H1 z)a(e2?5=JqPqU^!xY1;V>nk1lhjgY`@r(1nIA9CVwc~ns7202}nZ93=<P|2>XlmgjUWEKU9O(aTDnzktNv*) zBP`@N%W{6cMSBM8HK%xKI*Vn+PMOSB&vB$JB@hY&tXcBZoy>#2Z4LCN8h=Xg;5Gpn z3GYOtPOvJy@YQBYW|n_eXzN#1@o{Ny+frVyLq&Y*+v%@Ys$=8g(nck|VZ2s9=#}D^ zbNP?N$8})VS8cB*eM4h~+4WY%w}@Bc-_XUXx&5XlEf(^sRm{8n%V5002u;TuS}Ljt zf2rc1K582N*-%kItCtG2nY8G=KD}01abVEPf$9XWk9)1I;xPZ0!zx7Q4e?S_MhR2% zmqT6!<8||pMHT1peL3Kz@BfH}rhma?JlY?V&m4=FeZagM%Elt*F8{WdwUtJtCMU^?B6lG8l1cf09f&p~MNl`E>A|fgx7zqQSBnc{}!JGrOdIWP8#fXXt z^O|+dE5cLN_EqQ?Z0i<#dhz6Q{5u&jXA+7=<>;ps9|;8Lu7;;g`q-`vltmf zU*zTn+HWtXP*eh=)oS7s(=#&HgEs)bT%s>>U)Ir0L<@6d=73URuL=rZzqf z`)HGrwV4Wqc2HWnHX}pPTVJ6tMfnS~qd`K!n}7y_QhRq$BTxs4RtKg23_vS`W@uC5 zAh)IBTSYNLmi9Dw>Tn|4$eFADkhqoX3|FJ!N^mNay^`8wrKBaMX%&il5`RUiy+fiq zApt36RE0S!ZB=>@jJp2J!j$H^=io?^D2PpxhJccUeWEi`2c{?#&m~^3s@UoacpAKg zMExZ?8fG9%e8h(ZXgVmGbrk7Ve5%)MLkX5rmYk~FyrToMUO+r#?jN+BOSid*&X)Y2IQc}~QUbw`^C#J+{ zveFbz4q~~jMAI}$sj<CXuyqtGv_wPFWIcEiq@Ol>0BKYUqtgKKNzs{^ z+Bk&|>X8Q8jI7MWqzr{Nqkon*JzLSGw%AUa0mp_Q4yZ@dc?S7pf#}%ObTW}S@=37| zb&#(^q8u`4UgNYeSqZ4{!Acx(V4uX;KHw8Gw1d!};&WYb;8RYbf2Bod_R&Df*gnxo z{ZKx`S+o%RP6J^R#(^inqw0zE3qVP+=)Qtp3Xl4*za=tkkstxG(i1g(GZc!ntd#87 z)Hv-u2tp263Q7)r6qGC!ADxle9|NXqvoaFnvlWgmqNZ;_NwcP|qM&!dQ~fPyNB#4l zwxDA`sox=13Y}Hv7^2jn(XN0Bt>+3LRxfshSm}J)Nz!DNJBtLpa-C2T5^bJ zOhqsBL-m3|X~5f_3I*0i&N0cUHOMCcDbmwvDit1qVuRYCWP$3SG>6Ik;u6!-6pG|H zsE%uS6H!1oU%ECWRuP+?otBCGBho;7KuH1F)UwxamGW1DLSS7^x#nWUSIxwY=oTmq zh>lZY;r7uP8QOI8OpA>M-qu2_=iE}%I6gI9qm7R3Qw*LoH3O{<+PRge;cC>UDVPOH z7MuV|iiLuz;D0$+TZ&Fm>dtqk=_62TL>!)If)VlvGV@bcR-;YbQ=cA81XNY^nsQK@Vzx`b$DYS`8hO zrYca<=q=ii*Za!|sOejpSsGWpvg^pag7iTT zC#@JerDw~+hIQ_4ZZNRwKJ)PfGf&+qNt-kE?Tu%5)<5eNG&YOv)SLBvOSJCcp3m_+ z2JBwArqTSTbKjVE-kW!;-K|+ZC%n53(*9Y}#$k_t-qUtxEh4=xJo>ozR_?wQQIi+i z9IrISezn`1uxI2Wcd~?yLK}ywX!9nq(Hub(|ydX7wp1p0e2cz3Mn}yej zecB;x>!-BauC)&t=+4$1IL158wE0@6+D)75e6n5Vd#W2w_v+TQu=^|fq>kr1#Ts3# zH?L>0qUOUflXjn;U8(fVtgc%t^-s+k{a~5x-kUoIJqo+j>TBTY3td+qnzUi;`-(>g z^xjg~)%f)&WAoan-Xl1l$+eobozv!E1J*Bdg|8-32N7EqTg)I zO#1^>j}{%(&1jZTSnB}WzBamP`5P>!N}Hn7RmOANIu>aX$bDvc_-w#R@!6lLs|IpQ zS!C5f)j6d?Q6KZJWQ$FFm6gk}%T)uoCQNM_$fdDJd>&+ZrhzJDd4&SIXAVczxQ0w^ z7RU`?k@(!i^6>eBm6`>rYU;_IMZ5c|+Jkcwx(3G$XL;4Ac4@UhrG5owSv`PDWs%hb zRoie&irofXQ?*a56nTv*DimJGtH|t4eMu1WKrVyj;d37=#pidXwg}{cSR_7kSsp$w zuu_Xal_gfD*cXY}okgkxx%n(l9jH2mk|x3^H_d&OMwOVQWq_(3)?0uqp=vfbv5I{? zzw%)GSPwIQrBP*OX%(Q?3acZ4*;x4NjYg^=voZ76+l`bDn{VOIyJl!dLYkoR83o^wh9Y)JVpDORW^_CM;0^jxawl0HKCM`3?LbvW9QGdQq8z!PYP7`Zk&4Q#7VNT9fHF+Y@>>R$w^S%v zvujTN$`6(--#I{a##$DIgf+y?0|{1vrc%{O;`E49PP1Y8^#W8MkclG>8b_l+6I)SQ z$ZqMYOtWQC^#fFe$fRC4My~q6mR&|>%^IQ|U=;^nRabC0S;?05eN_v zE^7i*t?XpUFuLAIa4l$3l!xqCzDt0rf<5jW#U4ET^ue?cIfFo&y z4MOEt^M{K$_$mj~WR`9Ls?}0v1@a-i2jF~I4|ji+7jE{+AIl47O_w+r$K6-C!GT4& z2dEw(lg27X3ti>pDECfW0yr|2zR-L-IFbXM!M1O~(KMH5i_LviZneaAm_L-IfD`+? z35Qq)j!cCzaF3)ixVwd~o?UGc)yCRi)f*}5U6^y#JaFFN3M%?10M#~R&|=mXRuG5B1DXp61{M6lbXC)H(^J^`u{WRh91xxv1UPNMIL z3$V)%jy!QZxK^kMX90HwTr+T@m)bas+W{us#8(v#jyxE{!UBuHwGc*Fj1lfgHN|PL zt|w0l1k_6a*NnC~y&|LZBVGSwY$)LBJA zW!nZ~J4`8du#OE_zFC0YbYzALa^FQNR7iQDji^C3Qq+OCc^yC!J!0US@MAOF){6## zSLWI6|J$VqVG z!%6mo6DKsfwXcfYpfiomZaVnsgQ1xd-QpNH)D;C2=9-kK0y}h)auq-3JO;T zE480|7PR{qLL9hqfFfU;Ld76mfDBg+p7P+jUMZr8%XR#xf6EZYYt+je46?E_Q{ zlOd_*=&L-{iCspfDTJoo0_L;vRZi~AqCx|dr#iEI5aV!m8Kh%4v+NL{S{g1khlWAE z%Io1Qze9ksVHb88WJDKc85W>C)`dld1*ob-h=zt6;U1(tIDa<3j=yq71hecIpga-5 zqCgD0viyz#s-|7Vy;nF1m1DXVS#~lgrz;2F*aXn(ECDJ22Y}kZLx3)#w4NRjgNrED zdqE5?qDtTuK=ob&bp1C<_1@t7BB9|sp}Ioxf1%Xyy;T2Kl*&HaR8%bZiNl3q1fVT3+cjv4kg*HMKkQmwL- zMl(S^6;+kWiBi&3qGnP)(elW*kodBcveZ)kFQ`(XWK$pp4QGpLRI`Ru{l8JFVkgxj zssisM@kA-I*pPN*nETxX*w^&4J$7={m`HiIdL@C)= z;)zl+K%#-5df;1tQoB~1I6e|$#nuvSBhesGy2?_@YKsr*pdBbpKnGCjIGhUqMa{t{ zN%=%6nJn?if*VK~)M2Vr@PDB+V5U_6|3b;K1Eu;h)yawfMoF-2sUcD7XsE>hH%gYt zK|K<5j6~@zA~l^PQnoNwPnd(rQvMVw#6^^nQzbeLl;p^jC<7%qW`oj2l*;Ew{I4j< zF(2i$RV|h3FDDaMA7C9)D6Qy>CKq>36lwX!o))DeSN*t9c5T)cX zd{BocCH@p;;vz~NpO*5^Nc=geoG2yFOZ0+7FG}<;P->?DsN`o9zDeHm|vYt|2vUjnE#zf|36No(%6r-6~9&a zhK(kQy&Mz4bz?zeBk(?GF+O{+kNE7#!p22#y;uQ0doyl)1Q*RB@fpK5;xm@1CPc6{ zV+~pIgkVm~wuAcs&SqjTm%tJyMzB@m4B1I=iA+5yf^{8l$c9Y{=K8Ut;PfXLGR@>* zE}3Odj$qrsT?3cOoTfyuJ`)Yulqtb@2UiNtVv-?iJT(~awkAxCU`N0`1((GdOp9QH zCL6N((}KBy>>;?iQw&+i^k6QVCc3Id@whKW%JMv+%<61nA05SHw*gB3C3HwQg9Ztp;TL zM{s`m&~JV)w~!UghkoD;7X)*QS>yufHy8SWTgp@mq2D~{w=kGn&bEX50M2GnFt?H= zE`omZp&z&crd|yF7C^tn!Q2{l6rBD-=(i*oZ^*KjKtFKTz^!LaOQGK)=(jYO+sI16 zSuBQr%YwNgHeng`1NRi%7S>=n^jiY`mIrgi>>;?iOQGM2U~W6hTLJyReFe9Z1+9dB z%b?%NV6KFH1n0LL`mGA)_OOCg&<~tpK``EXMixN770?gd0j63F{Z>N1)xmgMxEO$yO0R0Msx#R38IQ`YoZ*4GMfn~3Seya_2BX3NMpP|2Q zSA=zo3RO--7VfDXVr>%J(*N<7jIU$fjNn7pI!_-Hc=hSUN}N;htox?d_l!B%{`QdX zBhQY!-_C90-?&rc6yk#WleTr~Dt}}6k_f}cTZfJ4uq)G0z zL08h7wX3(i@J07Rwcdx|*89!p>3ckFT&3OXrd?N!yWdl~@5Rl1#JR3a>-l@F)+-JyuLzS7!x;}3M^#AbDJCfAB!;XSY z{b~#-Bi*^O(rq(2f3@W5sr??&>HO=%*9!Z({&9ZfV)s!k7tDwr(y?{b(oXJw-}(MY z{b0!89b;V^NEHSW3 zebj!`{)z#qHAWPzc~&>~FrQcV@QWy?Z85zXPWM-COMANYNKmVlu_N;vRU6az@LUUz zMu|seocqriuqNa2!KgAi|5aAF{%02G-uLSo<&oJqXv2wT)xLY5 z3o7Mrvd^{WWyBxse?MDyK9)`Xrj9z(xt&!>fa#KVfwzbE4&50v*<`Al{b{`y%x0a1 z?uDLiL%o!ft=ZBe#`W??CAgWad)V~a1C6VD?=6o;T>i`S?-TwN_pg1zm$OYwo)$31 zk9$($yPlQU#kIQWIkw~5GSZcnmF^fb*rDpYc2>Ff=kJtmG5&1YVcL|tjau)`9=7W3 z!KZ^%GsX3HW#FOGDaukrk=ZpEWV*hxrt?aJu=mv+5w z*LTvm9Jd>aqqdf(t=ao_52DZB9sK@rNqgUt5{rZi;X2brfAl@xBkSR@2bIp6MrNGZ zQNb>|V)l7@@|3;#N?GZwlQu58bE%Wv!T#1eAC}w+eW@==y z?P1NWmAhM+F$sA+BzMY*2AdlsgueQkp`PHAWBj(> z_v}g=r<@&r$@9vToC|fCBsjZ5eL>WFzAO5Dt`L-($7x>J)Uq-r{Wu-f|>Gbzn zovUSgj@nqR*@0VwLO2(tJJ$CeeHSCo?CrABwN3K-JcCJSA~fg5jx4tTzPXuDiPn;N@cL>%msyLxf#B8L@S?+nq++fv`Ge#M0= zmZero=umF|h}H$l%!fnzjyq(0a_Y!Q#{<@kC?nn7veM;MDcrGSLPVW)d*dr|mrhh) zwg2eHp&yD94m~Nj9ueba(sss|wQIA~>c~~o^jocewdk<()onL7d@JbDCUEq(15YAa zu&0o&$+F5{TRyC5f7NA4w&Kb7Zd*#{`rSFHcgb`?oxh%MNDVHDcsI9O_OR`$m%R>U z_qaCnaLw`V-io7!ju)Og{kh~keeERM?tWS6PP&B7_wc#Y(ZsWGxp!)XzYQ|&nr~uj z7mnUM>fGaTEd$&2H=bmfS558nZq?0gxAJG~QP)jh=;&zHz4f?q)+P<+Z)5X|EOez| z72eEH9-PQljNCHlL}|hD;X7Z}+}kY9E$Q4^{?o?L8~cx*viI)Yd!fe?uT2kX^P8WC zpRUtTTVd$9quV-IO``9pWa;FW2P9Q0+ou~T?>8^?+JcACcY9}!Ue?Sa#+ z#_ln_~pF59F|nUwUs;>8Hh;CeZ4z4KCxI#0LXR6fvl)e-g;(uI6UDEH#3HnUT?Q46LU z7P+1o_iBxG^7g^KTJ`NTDPnZL>*3Sx_2_r7$+qo#x3oqgz| zuG8}LsuPhWj~aBEU-!k8dvk5C#cv-T_UZi{wswn!E|>paZ&iz$TgEvof8-ZlbNr#* z&##vM5@`J4^b{_k7OU%D45mz{f8~@6Y_!8Ci`gk8|BIIBfr=2iw=oDycICo2NS#Pb)OtbEI&V`puIGN9*i$ zo@D>Ax?|0r8IBH-ufM70AA6X|dTh1O`7A0|@sHR>9Z!_@sJ1K1_CV$O2U>N}TVgYE z+LA#-+Fq|-=o;WW$T2qh*usj7j0-L7TC7g2+pE(3)C&a{lKiJ0;LAw&vaEDdSJZG> zaBu0ABS$NKIo5LPo(%z)t{YGJdx68kQGZ@|+}B~tMAetS^lzzaZ0z>#&D5wjHGE2E z^c(T6)o9aoTW*zHP|szC#TL5r#+&uRqJuwWuD;rE@Zh0Co*PwZS+8DOJy-vZlds-P zTjbl-f5KtoD!n|P1)NcZ>=>TZ7reQ4bH%rkqtvB7!= z4@5qzJZ}8+4n9jyvJyx)aEsf=dwph)+iaY6Bxc<1WTP%U`%i9|wYKMuKb-H}IQHAzyUq`vciv%e@Wzqr zF?-K?vgBrN-9%i3x!+r0aEyS4g6&=!9po%tS4}S{e!ag+@s@PG zs%O^mubw4m)ty{0sL$m4eIm|3@i;P7{rN(0rMY|OJU4v)az)SKucp*+o@X?-Gv_&! z*=)DanIBevSb1oc{gQK~L7{t24qP%J;p(ET@091>TJ+x3ctM;&{iCl2Ododa-SanV zQ`$Clc@o~ZWYoO~<=;0_HN75bu9cDQV_Dn1R84nYtY}l5z0k(&yiK3!8*3#8uiJW7 zryNkb<$xpGzELfDIret%?HbzEmxd=T8Blxn!^XZQYf>Bb9JFEU!7(x0 zo{pXpvT@@OP90eO@wExA?|L)}8&S>V!h)8p&-N94&6kCoW5ae>=-h&a?QniFtGjd4 zkWcUIPe#sq;&38gJ7Uq7fbD%AsB@o;sl#0gwpgy)ar$KX_$R*2x0ycH8*qaSsr9aE zbl&wQW$&Qq%WnB9f5^ikC$wUP?M?$ft5)5dvWfq)t^aPXn}__3^1rsd{p#Z6OD%6? zp023AJfeH!TYAHfzyH+k`<(oljd+Q#i*=eCuzWyKO6RjNSHj_(hwxrygEDmilgD|LX2{o4={hUVl)>H49^w1f7YQl;88p z<1)7UE{g_QzG?Uiw~?!RA01e)Qm2Vq^~|lF;$Gx`|uFw8x(zf=ASB=jFMyod%hHrR& zEor1vrTIr+Rc`mz$Y|^oheC(IBW%hp3tgPk)LK_gb#?1nyZhcnk;;#T0m&4XLY~Zq$^FUh2#!AZ!q4cB{%VAfX#%kZ;!QAU2LkZZCJ*3<;qHDVn5(o z&#HA(mWSKtjTn`fawK2bIx2NVZ-4Xcmlu363WqOn7hbgRv^k?L$(O)suG?xDa3V$c49putCgDu_@M+JuRpE|iU!A~lR z_8se`WQ~sL|Bz+~OFL!84*qGUHyOWhs*L_RQ8U)$bZ?<~HH=mrqdmY6j|?E6dAXvi z=O%a*ZP>F-`OgOg&N8s`6y1H0H=kO8Yoz=3UA$<0S_^(BC_(HGo)j__a_|>ps6+28 z=ryc`lxHusqkKy#uO{-S4!z;7A?4LV9`!|UyK9PhIz=6+F}>NQ_px-UN_q5i4$3nCE=qayw@;KuzZMFo1TOKIf#r}c07x*6P!Dgq4Z-*Tbh#jt z3XK5#1W(Y^U8pGh^$p3Ob(XY6MD2`dP;w%D^T6&V;6@8$e11 zNcGf6X987#m_R9$=4}u_R}(4E3hBN8Y1vfDvqqYWTewl(B; z=yRJQX=*P3^opKd;~xi30Q74A2v7uU1`eQ)gTNoaA>c4@1UL#D1C9eHfRn%};7`6l z#ns?0@qeheKpp*5VkNK&C;(OiYk)!^9Owc>09^t4UalL^8;AyCfLI_7&;s#50?-FY z1o{H~fb|%41F#WT39JIv0EG$#Kg56=p`%|DYz2yeZNPSbexa}zpt)TJkoP$Nv?OW+ zSq)eMW_%pNz!oqCXqnJ$=5$~NFcVIqY6Nkm$+ryDM|HCYO+Q15|(# zn9JX-%+(7hMRGLS%m-ZrECzglhJY*b3Bx5yi?A{9fC_PSZbpl%b~q{T1-JsVg^_oW z-meg!0OEl-AQs~* zVvwK$${^YoNCNr+{Q(+aATR)+Ei@Y#3=9R(oLo_u!BL>(qGJIPp3>y1luytAxxh3) z_O|KN!7P9Q3Fb`M)ECLn-%Ymi9G9VTpE0Xm_1DgP{&N`qFAd9R4 z)&d)V^#JW|TL2w3q6*spnm^(z0;Kg`U^lP}kms7}QMv@!1CXUin1#R*;4rWcH~{Pi z4g!AwhXCqR?uW)fzdFIm$a$!MoaZPYJJWZhzX4x?rvUlM6W{@GAGinH1#*Bpz-{0L za2+TGE&+c57lCuYS>QDACvXP1KofW#iEF@B;0kaVAdB1rZUTP;6M#{`W8e|+5cmRo z20j4KfV#kY;2l8Q*>m7E&=PnF1OYFAX22`p4e%V}3z<}j3WS$>W*)Q4_t@R`5mTQ?Q%#K-!SE#a~6Ims0OEy|KeMp>*?j;B)}A(PspQ;UJltG7u?YFaHmG-+-$`UU-^&i< z1^<;=$-!y5+ww22)Y9+{_xW~I&q24P#n8-K&IT|Ys^!Xes&ca&`oHII9Kc&&A zyeMjh|1cABXq`#}5_A`Ce5rI9rf1uh3iLC^$F9E?x11Ci6M} z9h|is?Z?LYt1fr-{i9MJu)AJW-m50(!HE^Qbbdt5f4Y=1#h$(8&_FMW$4}4Gzw0M- z;z5%q2L-xdz4vOT%?Fo>PVC}^`yo-bA034`aGq9jY@sDabGBzq+1W&r1~VfKFR3CB zvkLCyi~k`QZ|8{V>CgMaA*`ebL^=1@-0hUIDbI{ts)68Af-TitEI+{!(Tnj;asZzR{7!HB{>v&D+JfJ=G=U(;?w`eQW@Nn_N zagN>%p=Cf%<*xJ3^>0XRv2gBL@e7=|cFGS{{1YckW;tu#&KaZ0@nPh+8E64TXv=W0 z<~uuc@k$?Seiv#gTUzrMozXJfnm4Ei+S{5B0JW9_M43&xd@KCKAIs4LoPiuT+nS$T z4`aw7rBXgN_z=>!qZMj+iHFH*Ykn_k`25~+C?!+Ir;Rk@XmLp*8HM(EWx+v}?T4I-X!5($phChfJK5`7LLEGQ@>NN~ngBoJoOmeYElB!x+s6Rp2d74*VAl*UnmwmF2oJVDG&#F|;AlQGpuk9r-vH z)R3cPB|F*1tezPYs^n-A=#=SFn?KxLF`oU8V(`+{briqfM#ukQ}= z9bNcF?p!+`Ik?rNxS1PwT|NpIr!Fz83ONkcxQb2-LY8i#MTeeT8YmP^UHRSa+-9Yt zJD=%+z9hF(y1DcF!CT95t=8CgUGizncSoV6Fac2>ys;;Al_Op~u572SG_sb5Ag55{ zwkO}hvrM0`?+j1QS$WNi-|fkDww6Oyxd$$*HFT7TrO?uo78s;(AqV;We){iCOb+TK z2fGpa@}k8c)%5xIeVZ{C(AZ0uMmgSF2Ee1jEl{n zoj0@}>&xeWTFU{s!h1jY{%LyjJ7E;eD23+YPkBRIIW$-Kt{$CFR#^Q9YIuvDdc}`d z`k=4>)Y{{}*he~5l;Rd{@uMZS@FzGi{@=0J%SgCSL^FJc0O3^FTjXd*XhWL|M*4YQ_Z8RGkN9}xL^=wYL|cWZ>(8r^ z79*xvA%_){!!0Q}+M#HBkpqv(0hvf_u|y78CWmtR$ENZ({d;s$v?nSO2a@BW$pNFt z+=4iY1CoC31W?Ic^q}KyZ}Ek>cbCTJU!=5M~@P;&k+Vc8(l8ODaMu zIgFefUJE5Sm#9BEE}RrF>mf>{(^ifgCx_IMO3+4*Ehh)vLJ650CAw%S{G1$@ODGbi zPY%6TLwT!b*t2J8Qg^t)l|#abf4!k9{ zanZpXatJy(HkVK&-0q7}>l8V1G%ukYkfZv^(az8S61#ZvwvL>&PLBO2$3&C5!$5M3 z)r#|SPdJRaw?ry|u5x@pIc}OzB8V+V3X~(LNo_C>zfq{8yO-iOBB0Sv8vR&k|D}!a zIH{9E5y~;z1WA7Xm?zBpZ=UENh#b&Rj`SvJjGg5-B6_0HFGUc{^z#8kU#sx*oH<*a z9P3by0f(V*HqpNP%ll^fj^(Glr93yB_7;@9G?G#q?H5K35|q1A31cR9MVoIff;_jB_B>}=9jnR!`-`x(#f%Je;(-f z8p%N&8&~4bIh&m*f#ql)g$N13e2On_Jh%Gu<9%^Ek`~PG0&gwHkL(fEs#o%Z?p@IW zyPgYH=BQx)1!`K$fh13PWn6l5dFHc!CO*3{AK-_+mW1#KDcX(`zgSWJ*?x8-jAR+g zcW*$q=Apb1sE-^6a$CL3k(Jlm^-^-qI7sM{Lrd0cJ$0saun#@cNXMhx$I(!}cSH1b zK9rwMeaS&6`(1v0Y0}q(Y5(*kN1x1po^xP9`pzPfRvbm@!r=oN^NxLQCR*? zOcVU10UY9AqgcxkD+`LMZrk@~&G>&tk^2hkDDGYbQDGBI?yl+oQw^nDQx0>P*=n}+ zqjRe2KiBNung0SEt>u81^GC+MskMGJjwsnqLp$?s{?Pt6=jbn1fiRoG2`kCrGdo;- zmi{OHKq2J#`uzAIKGy|VdD3Tsld&O4^9k8Tm$0_e65OWdIrC{5!Zxo(wK9L z8jXcRGdSAM`vf=0=o|J6itDR5(JWxc=hof!Zfh%^tVbqp`f{K{*oq_I4N(7f=Ey|j zxS%U%!JC3#-mlxF_|{FW_ez5dJ5fBbG1rqb>l-~FIwLkcF)dS*8WW$Dfe6p3#rFfa zzUKVH5YCFfK9DmgHj3ixYMRF+rnvs1I)A1gXQTT?L2A0I=2s06cUJhK+9fk#aFbuR z(`HZ@xz!BNMJFZ3LG<+4)a2x7{4fPkeyJRxdHZH)#M?d% zdW}xgCTAsOBD`#7Y@gIL1mI0gO47z=CJxYQ(o!=r6H_uWqmz=-weggzL16G`bc=Z8 zS?RG_O>%UaCL=2?Ej2w;>M~QCoQCk$THZZ~vo@v}!_Zl{m(<|?kvB==>}yCjohXn} zD55(^s89D>d`?f!-kegJbf`QC_5NY_(6(GHhkp(BqbH3#yvCis*^F~&{j;1@_b1^s z;+--{5R(-juT9s)r>7?WQ;+WtZTMBgIe>a&%RO<9B!BYB~SgP^k0oEDVN2$dfM4@@lmmz-)|=b4Sqjc8V^3V1Lx4@pP5DVe;AFh!wTM(nVqK1a7|83 z5ghi>xvb|hv_)mD&q4MX(2?9 z=5N9as^M{ra^k${Qk6?FG>Bb(#QcB~-hqdJ# zstC^lluco%rA&u^FBz2oJBwc&!_}@XuQ3`{PHTMl#X+0{pQ?kZu6;Osd(PhskuwYv zxoRA~Yv{*0@=n9KYD!E!{tni$lemuMWlR$NXAU_EZ5ztv?*E1 zG4SQS8B&R`Gg;Kdm^?u4DTjHB2zW*4mw#|=Te(KS~#Y3=n zHCP$n1&|g(LYRsM{KnRtox2d08zo|VZpjuR*BytYmFUW(MXR8zvkXyPzgMD+QZcY6>#RSaGNZR~G`~m(377 zJ^ZI^4D?f;pn|(FDvpfAr0AF=ZP~6eD0+S-wor<%o*A9M+jrn<*p$gYr~j@(o13Hj z#Da1;2@UBR4N<{Z?8mcvV()-1l%|1Ew+zSUj^Ju_{Iyi5`RfAc6tM<#g3Vv+@XT^E((L=bJnqStyIMRKGFs78o@gnSB*Lrf6<^1sE zwm6Qn?qu@~)(nOQdZ?OIyC3 mi4gN%7*