ycX8?"})eF鴣Vkmh1 YY- Ly~g8=B gw {{j-G]hqDm?zMcDm4"7'^m7(£ÖnKiM -|4+#|a#r{|nDm[-QxqBnRFGyc(xяn2`BOCa­^ b- >u4kˈ4֊MW߷# -(v0d Y1TcdQXz6U3E3h0˓-i%VyFHkPEvzYKޔ'Z:F2J˷KӃW9WAiƨO:zY;kQuE@QJswrݙ@;'ww&'j7Z ?M<6=TrR1}LAo1uլߨz@?.Ɠ_Aq}iYX_߼}ұS᱈o>{s?3\~<^~C7| 귃=gswGWC9^Lw^d՘VNzՓSO]:Vyyx/۵h]7 3F|Dww5strX?9D;3/My͙@g]LEj 1fjkjvk xG E?ǓGg!Ϟv&{7{{};[V}r~]'FϘOqI@_1l?٩y9BsU7I7ϢVrIh!wwc}-o5|>nZgrOuUTnؽןN蝋rN M:iЁUj? ;q|qjׯ;gמvVݟtEjNO ]'_3v˫wyyqz^S7>|}~q|~[In+.^[u]>]_\\_ȷG }F/__ͷgsJ~}~ueus~v;b?'0?k"v^"s,3go53u_쮙wޣ׸jk/i/Mhvٯaɤ~á0 ;1X}ToEU#QzwwAw:4v=}׭֌GIqtBJiZ&x?|iM4. >_Xw2ɳ1vͿ0WfMy>5-D[nZ|~ѩogڹ $5ڷGuݹH F7۩ J0FB Ms=5Ư=$m*gV}_㝽FVo}n=]u; цҠ?42ofH>?=vIK6`V{v=3uAk'a֬2gfԔX~lWɭ*?[4[_Sv$ $ag7uĈ&1O?qꝝ{{/c1ct=}ɞvftk-24T՝G?u|‹NuPK}eq?O|&yV7zek/vuEot3yѣn{ߟ'UBH#b'WW;W.{2z]iR¯^gwwwdb5H+G]V%BΘ٫O̓>[!;7&Ꮌp3֛q>˾Ɨ3$w/v΍?Ʀ#4Z{>RsZ*=LfLuy~~Dg2mgsƛ.06Ѭ>dO$ռJmo ԙ}W:5ُ~;>?~wOl8so'g>,Qrtj}΢`Ů#Xc,>9YAeIS  sꐊϨCj@/B]GcP3jޟ+7>~zsHa2n?$ܼZzuSBp1_"6IjWϫikgu|&jw^=G_zZNDfi *)1a˃@|T 37]۫D<,5ݘ=]1 znBo'WV/vuO2R?~)pR"2*M Xg)6qyejbd8Y7/fQ @c1!}$Q~nltֶ21݇`m=:DP\<іO)ZXbn\Cjԫ7K:=jjS)؎EROSUxYrb b3c+HfіH?A@S7ut^_h t4A}tՍ'N+2YHDYkΙ[:-?T_5f= wnF0f榮%0y'W.079IN KgחA&o+^b [NF8f.,x3׭Y j+/MrcEu.t o~Pf3B2.\7m`q#%\4i [k<ZYgi7HB7_ZSƓJ1FEfΐw|_ZU"z0s3YHlK ۽gN4Į}3Ϯvd U3lݔ̤\1ZO)5S3dG03=˗|Vϲ/Y~bP2s~EsRG@'0ukj2[Y#6*'{v]_^/ª܂%/ԟR1͗pczx|S>^ 84cfpz1u~F.Sڥ?rzΝcį/!AgC#?ߥ?Oh?X|^0xuꏟy hVĿ3-M}x9MD=< 6_ COoR>PD=>}eo>>?xzNA;{zȹإp M)H1l03¬r*.Ɠ哸ir%'sOpzsl&YzcX ʌԝb]e&;,ѳK0){˙?c:D!\2r<K&[hr8KQ{e1WՏn=1V`"3\PEL r=r?iK}r (ÌQ}*R<'Џ8Ho/擣Dw} IM.E 7yk!,Pݰnfar WCSbXDLGf|2307BRwM6is;~o¼W]f#v =z _f3_lMDǎH:֑ 4;8:Hz?F#6نSt(~=P+;}W(؝ٷ'cta~`}?FR9_W}~2$rt&$xFLSn`jꓹHhw^wZEz/d \I:>RZ\Pxy>gG_Qg¹Zm"oOWw7#^,dFJ2]MjsN^<0`M ٚAU?>L2;$`:PӳVUI DIOyt۴͍]7PoFaIt|- 4߄e3*'r{Sθ2:oyv_8f%[ri]xab-JTz?<16l鏦Gk(?N @̩jn"]:^<%&7h̛5Wť 2;c}63`rs=]^z<3\IcԻIɔ>8Vb&. -g?S(\O(Ok@PIE0%]-3~rYr؛SvJwsS?[\B،YOnOb$SΌ_Nw͜muf0 ]Jr2^kԘpI")/N ]_c _=~WÅ ]CW_&(ʕK O˰)h/ _gg֙Yxy-O%ֆ83sɝIg.ˋMOKJU|oשa^.j̊;P_!}G,t2A#.JNF:\FJ {KmTοgYd1&t$Sb5ڂݭW> kvvxs{q|0ie2)_w?9k˔N>d]:ۻwsSIwOOS.';JT5߇֧;:VR j倹f<`_}ScvO;Gw>Ҙ컻ţ'e2'+]XaKO*IxZ&OOw-TsN8]}{>ao;^E; ~Ef}vp4<=`ܪquVwe&x;p߽;LJOtKtttStѦ~c<`;|w{%`/޿xX\k^\\~:u>8__|ztݑ˷·ӳGtүyKֺ~z2U>?VG%gObG Џ~p[pzMn.3tv^?FuѸ>3bU1vVoMݯ]I'cs]zǝ ؼO-h{Vt.}kTXx*;nX?t&b|='^Д }q~k]LSzyX۪r}CwI5yn ީg󄞜^/UΓY~=ܯ<:p>< e_ ^=-w'ֵz=0(_/dO;kbcM>V>] JX:y]{ot9~=Ȍ͓pwCLi1{|) x9,_}:'7Ggk.;|/T gk'E>"yekdy$&C\?ydjŒsVzTVR[*_zt`=:>%+Y㳱S,j'd~7Rx<0U,s8|'w?Cd/?9mLCRCzq[7vd^;W>`5qcqmyt)*S|xS')KLV@8:>W.!ϑVI?>W+{ir3ƷK;L\\5KoDNjɎ;Ec;E:ӈfkxGs=v?^'OB7Ǟ^ӣՕr~1::G4U|m! 6b]t0D"E}7;..;{88)7շ{OL~O''߾^HxmϹ8 o>|t]Vx]rEx#ώ'^r!S=mxOT&e⌮}Oξ5%T?=xK^|,~jk_0B 7_tݷO}#pu~+==v'Ut:x$ߎ'1X%wʿ:wow~<HQ)oϬ{ɷttS'$9Nuۥׯ?\~e%t^#T{Gxٱ?V[9g8W] o3$*Ѵs;(~L s2v>V's%-l}*^f`;ReH|^=WkV޽mm!i2amr~>oEwܞ#\כU8;lp}Ib߶c|=9hiu?ɔoOJ%;ч_W׭[j?/#i|rĭ.{d_^>09~t1Ϋh9Bs/yB~X?|V;s'$B~b ز!oǟ;oCoуѻk3J7o%sK0 ޸PuOgPnʵ|Uͼ{Z;^&c83!h8I{~B-kT>w:Õ[߲7اc8I@l/oQj&~zNƉQi'28d B7X3rߠfSki>ũ[B |G.Vrhwj<ի7(h+1?t?QI$W?ɋ飙M{jußwqJ\8p܏hk>iOjNj?\γrp낃^TΤ{SY+9.IZ[bzFS:_M24̧;$_lBۋຝݒW/R~:!ث-B[ZX?ΐ$Ĺzvr^?&s{4}7BΦ8Ùqtua7IvXז467@'o7I=Żimg|naƓz|.ƪf'WeE ~'UٓշҁCK;~r}O:|}i~j o;f\jQ%Vug;>[臨1 ?}>gc^=C脙G4V^fwC g[N|~=G[5ߛCT.<^`#tTW2),fBJW^ Eܝ&0X2t{Ń3'So%v/')o b,f.?KHh~'فH:髣 1Za:Dh12v8ENȽk[84 Pu8%X +[Zk9属3 q!d>+R*;-7YrdRӂ.hʌOi l6gͿpRH<1sz6Sc gZՂ&_\{ZD:!WoK3̼aSGAa>qfK+Y4W=$'DLFXh6"JtIh\ՙꁉSecKt vfK ڊjt:5X6c,[0swI~(yu6}no.հHMF&q? ?4ПeLF]?y=W/r$|zFSxH a:4aN։~Qrg)wί?]&ID?*r~N,ӿPI~ᦏXO|2L-LJ$/|{⿜Hzc'uN:_YI'[.I὜΢ez;MEE8Ο_XnZY) >E*aejضx r3~/n?6ڛd ӉMfYb0;=4Wq>NDI"#*bM'C_j_p;Ro>f`/\vvϦylٍӯ 9ɘfSS9sdaL;Q}\*4N7~^bğ=M2U47әV$uyi^ZO8+OHρrEdZ/ctڞcAXsmuhg>s џkPX|,-6AD{7k+{\y?<1ã\^eͰiQhj<7[[^S/.1CIE/R߽iVhrNOwYQd; o@Wyn܏: vm%2cIL@o 58Չ@s}BvCU^9UUŘq\+~slSaz#^=F4rT!-(  YɖK?, ;p^mɽv?dtXFOsO8*/iBӗ7rԅ+0%0)!Y^| yDTO]|8Pz J c>͒I2YliJ,\*o? ,%7و-C \Ӳ DFX=+훌QdpBdGqנ%džM1C`Xxhh͍[fH `ՈAuRZ-*AV˜&G*o(x yB@B&?G^41<]f3̰c2U"j3#o%CA<@<Ξ/&¬p!a-p{,uI}t$m=L7pXAa@!yyвfRmޢWuޕN}I!0.::&#+b+ 1tCi%@d˅DQ<:eׯ>P:}JӶY8fnj>W[~Ta9IqCkr*Pn->.4eMi'y4|i1RʥE*rWʃ/ljŲ'P2BOۣ5 uT챾O7}gZ10be6BJbr0nµP3` FFL.i 2d;1P|Ұ)˂¹@SrXޢ- b5 #TX.]R>|qû eJ ed gP<"=5@MiWr ^(i=:⠄,?<2"*Đ4@mtnPxc/DGYFƢkm9h:BT슞D^\GjZ|vu͆CMae'jg}YfKfY`a0u,rT++IrZF of9ÄIί/zS8`lQ%hI` 9*˴y%d@N XJ @Yk\,9Hk`n,)-ew\{TżC9і\O09dfr `TJ>?P;S -I$AZL}]FC 0NG K_:5VLR ]30GB$yfg6a~ -E,|@Qr62ɕ<hRϚ5ȟ'S&,yy~lAN/|R-xXϊ0.Ĭ4Z]| n`RյS&7bc(9$KY%Q&l$$;aHYxh&iv&ש]T_]|P߾joFU=m$jET!CZZ^+EVIڿX@4L0 ԝ12rPv~a!oւר0lq2ͳg\M6KʢKr3)Rx&愹b~@ j^<Q#a@6jPNwmYr'k9PNIrxٲ 8zI/U) !B@ ߎ°' ǼQ} q'X~ڱA37AqB ^*{bzNO" W±m꧚LHu}Dlq4l#2'SD.ATʍDH4X+BF}.mxñNr痐"iEŇ 3yF(z-bвfRmޢWuS*jB°D}NhG!!$Ō1$rbNhX%^}F&HA+YځVEi'Eͷ/EH6^cm!d~цAAw e`SVN=QEE`?0\OmF)MȤ@FS_q\D,rؤkṗQzgk;%Nq*ѥ%)ebЧr1 Ȭ)bZj^,. MepHA02`d+SZ~\UU'PUqS_8By2=dIr=Ldp!; #FN>eN h orxH=oD,ϰAiC] T;m=8vũ.V2S.2I Dz8f%2;)oܖsUFUHU kӣNlz(ľFV~ɓP=Sv>>]_fio˂3wI<#y:t,E͉u-7 KG9nGҲjMxCJC%Idh6'6º:$e3ajȡ-l4Cl5:E\!ǰmU*-^ "C7tl;eGC *Q>}|NL l@I2HN] ˰FC˪0'p{Kb, IMSn 5|2^e:oc-eVY bfCA~HSL•"d=ȱʲ"U8̾8E=G4Զ"dg>2I)? RNc6h/y%BRR{A2 <zca)-*J +FA>h{r2Zr.ۂ QM- Q DR=z&3X jPQr—"`hAť2L#e|ڔ6 ӂ(XmHvn~/amdk29n2 ásZ&Rna.Eo2DݑȌ÷m50'yѲ(Ͷ]{9 (04cL9]’~k)Heh>-f9KXfh)7' tAmtu3̖[bXr. A ^7Sa'`ջM KUULIg?x忐gs"4LaHsP ذ[!M2׉sX .1IeΟMk0+/rmp@3ӊxLˎ M9q"1p|Lы)W ^cqj//շ/^RoN_vБhv3 lQe)Z? .*f) T ezC'8<$Ǖ葴O8@FS??݌F''+"E$VsFf;f^(?1IRV+.++B#@^5*( ?UXPUX!9KR2K+[m)<"Q%M6EOQIrR"AmH>+YpMĬM>?%sE 4e XoE"힢=YZ@HA$, Vq _jDORDap'TKȴd-q(Z$;<<4x^Kl:ݔxL-mҟձBb(#&1e*܀"a$V2V" KPK )L+E߬uiPV;DaqCJ!ŘEIGi\޳LJ caX".TKj 0`ښˀu]y.C!MqZ0JV/Y5 q$5\YѼp2Ux LzN} 9ykj1G\6M`T| q0nmP "aOl&2a8מք f|LT1+! h L:0h5\KKnCaNX.UTpVM"ճkM#0Bi@:RL Իww#fٮ~^H2^CwwψХ7ÿKNָi67@}l|ʼ7A{z:\NaY Y:VN=AiDEp,H"ӉS~^:FuҾ,#r#/'!PZVV bxZ*hĈGi+j#m~r8YbTjVJT8Ē[&Ls Hƌu);L9&;-=6lR$n9V DIALT6 SC4KuaJQYYFa`0zSU^[KܾynztH*l''p{xcF`ڷ[R7,ZEjwsk2_Ԥ:8 kgZߔr3x c]i ‚=dx숔q 5ary%NZ)in0v@j6>A@_l0csю0Z;zI苜;};&Uu#{tl^j~}KazY6⠋K%`S0LiTp o_ɻ?^]Q0gV{KwCkAUf Zr ŷ8D٣iuEKɼ0)U~ei2L :@%b Ŏ[l-Dԇ"֚24ؓ<RŘ@C.'O+k8T VS&n 4@-cLB ^m# r_*bAȸ/LJ/K`I*A+N`s2K,JfΰRz  N7Q$Y!2,Ty]ꔶ/H-}Ɇ]"&8m&O P HTb}&$hA$KgBh;v1 3d,bt[*[%a" zj%T PKAЖ?h8$3 eTƀXb}~{j;5y_YF f=(`  M5-xCQ] ߈JaK5)[B],@C5Y;lTJŰG=o0jДhԍv4;ɱ}F-zN0U2{3ti2`|ņ(1o =#?(vry|!4:torPgNR &602#TBF@P. I!n@V=7(\{HfHRo.kGno]TĭyAX b`[ḑDe s{NAq ^ӧް+mѡ5x{L4i&Ǡ\КFn^'C@]"T[&H$<{v8Nܡ sMA+ 1Ap"K0ȃ)ŤgDmkAn29g0Lg0|:O,Zm%Lh#U^kMBe$&1(9v ʫVx(jj}5tw9B=rCRչk 7rdcڦ >"z~l1hj)<,WJaЇUr&I gZax_Tv]+jbe lĀCq%-VU@.p|Eњi傘|Ń6^i(er*ta! @-cKm)*.>ef(Fsvkѽck!a(rS =a~ziD=guYAT-q vu y)}(i,M2Օ9'hٹ4pb}o@dQZَGT>I1&r(,oh;@SR A tc[9.CVtylP3l8Z$2@^~NRvahD9M y tr lnWn,أg9M5FV/ `#6\n7!oX2HHW!'*0/w 'Y.K-GaF#r#UC -tP(#&px\2'!'*te Lˡ8$=QZRye 1tEʫ "%V2'pc!AUI-1Kat F9(1l"SN Jl3FM}1¸( H(l*$yTc`k}fX-Un,x –wt ?d`7Z;}AwWwb'nJ3$5j8 =PFzjÁar+!಴ xFYZIzbELhҊ4T˹9&m1K) ї;Å5,r8BFfkh ߳~d0'%>R2F R Vz;ա C1"Xna1RLv',C_z|HHNc4ákcYg*1 rI> &b"b7&U2r_EIJƱte3݀|yI9ZhS IWaDeְ$VhJ%mEmBlzv`?X&DP*ChaW؊8k$+hhe6!-&MU*vEOUZ"/ #5x $sXcE#5Z&v'olZښ ،~!AMajQTѕ%#r4 @D${RuEѦZ2 cm|TqĬUY*bl%+ Ƌc+[hyG-ǎÎ79$HD 3P9t"W \8l.ͺU* Yyr$y@6<[>nj| FoSL}4 Dry&ZiiKn <#9w``.@1CT h u_s#-螪MIYaȡ.c;]w\I-#,í=g 鶽ڪ(#*N354c!1Tm1פYוm#*X=0SRR+7Ŷ*Z> 1PH>5 ͼMH~/ח/>HPIŀiq Gkgf,\],E!ֆ>yB F$7i w@Eĥ &W.={ }z`r2Уv=>4'_]|P߾j1n:wz%JZKL\au}4E\u2lFdW(/;;GcV #0 ^ CqKy\ץN duϨ5%n_rU f@һ7c6<֑]T؃\%2TD$,#n)bf˱<ƂM4 :@A' -ICwO2샊, ;s43Fڞb}DO>I9G8&N$A/WN&Fz$utzr0w Pvr5pa%\ZH0z^ Hh Qm$8nqb=1T'mSu5zQ5?l(;&qE9jYPC<2S} ($2c!7⤖6`K#)uux RFT*]ś\B'C!&Lt u씲*|)}Vf`lFX&!(mnIe_s 6o9tvzdN^3hdF&o f"3w_䄬`#aU;5/k]!x""*$BѐM!HN;5fsܨX$շ['_Iӥd+BOhG #N"df}e$l8.8rQ0A!&uJD#Ci.6l3z֏n`EqvۆU~ecZ]PƝZKSɲF@l^l5&AlQwǦ|-sce[a`a;@Ffkh ߳~딊8tH0L׈WyKEdG; 2]Iv*-ub$%N !tZ}p͘#C4OjcI&FoI)@jWP^Wg 0f0ʌBݎ8nq->d22c`:WI;&+r-շ&C Q& ] ah1"ɒ˽%CcbHlZ*K| O 6G\Ӳ ܆e #ԄY%U Tacڑe94F/ Fh)um=e _iVP啣#T$H@z2lfCo8aڏixf J*~"UJ8g*#y֢Nl haJ@y\eɹeARb^ ~kFi[( )}q!rrbˬ^74)k1"P8JPF*IԅCvF@9"î~`,@澿>y}y nWDcY ,MRYCI]6+gXQynj)P2+&[/fDYK80w,'QN"E @=gHmJ5bF "C%^ fER  bc\g2Aվ?J+1 vV.&mQ7@* b8mVP!l!`LS]; ) y[c@ga[넠[*=7#IG"jX[ѡ0)ZX [|y}?բ۞FFÊC>TB*,%r!9@b"$drD(\?ÅZ@xܭ| {M6ٕ[ P/h~{ZXh[KMl+YEU~h݃lVa$+irEgζxf A!Q-z+Vkzqc*mXhJ8prLoz0~EV >qQu䉐jJpJ@}}0(j4 O;`}|USYFdM'2A5K,#>OHlu<'iI&Ҏ%WbFF) 5\JY]jW) O=&tOfB}΅ xu.n=_pԒN䕮m. @Z>1/80Zdכ K:.d'"cE,͋RƸv-.;򧇇TK pYx(YvzFbML\Y mkB0 qRMk.L$ϒӂ=v[V/9aQ[Y(Z[NS ՞Ӕ}& K>7ۂݔ>9%A~bs'wVcЍmr)ŀC50ԜB  RuBHE¯X.+Z 0' %v]*a#tBkq)}_ :LmG¶_˯6)K~jT g9z/ #DdKi-K}Wn$ ުEtW-Ysf{.p `AӸUNBz7bVE5ZFhJ@Y$ z[!c+yj4xqnxMqHYg^/K8v[hZd2E 6FrkF#PH%H@\A7\$:#sRy_'+$0I,:A )0Yph#)u9#&=VYc nl8^ݞ`iR`Mj!evs f:9^ HEONsh,nj:cZ`8x]$KuY <*\qZ`^fLhi4g-X.Zs'tU0L'nBC|wFmcWр{qtJA,ŖNhǦ6bf:93W. pZN֥d SdZ<۪h\++P%:x]z@9gN҄ 96*Xd1=jqX $*miVhyU9<9ڮuFxDyZYI4u:9Ua[G͡,N`r˷7|u FFxzhK!Kdc~IBBҀ"9*OT |[t F&u^bm!2>) xZThDHJ4j"鳛 &2حVq-r佩" ђA7oYk+Ѷ=7G ?rڒYB+# kF?f Nu"=P\_;.m)e_OQ"V^@M20oUx 4SFu(7-37y׆D'wtPH+!'x e`kb99A@"1[*iyn[@W%+e_*FmXcCaTNwlz8FlL:2HnjKP4ĀS;S^m Qv+y/ .ȤhYZE1l M{v{RX iQE֤-j`L)N$I$OK py-žd8{p/mWA(eaϏz|`Ԡ)'I2T)3Nzϲ ֫bɻDNN*G =6t+~DZˠX!2)Ї%Tvf*1)n/z}c@,u}ZM-ZnCaQu6M23c2sSZ-K~/(?. @wawH1"+$\yc" r{.Y.Ɩm4X! ї;Å5/HJiaR֡xROP] 7D85˗꫋sz]-jXfkoKrҪ]aOM0%xJt ޮ> ͊G ͠uN~3  [ǍdceJ%dlD"BxJځ;t~F~C0V )(s0d1$䐲=)NG #,z;~1 Mn]$aD߄ jܠM(BFxXI-eiY6"&S 5eil/L+@wwmטo^ z1m 2Aa3KC7"bjoTIɋPBO5VkJ!#)W'[C Q٤Ai?u)FF(F1S=H1X* [o2BO VR!JؒEFH IiſctRɘDfb$%W\ E4:b10W(:.CEvcZ)1bAvTqTQm+#3𹑤9+䞠چ?w6H*oovAST]5-wkOKբ>n6!/1WV#t{k|`$A YeTa$,&&wŴzm8!w;m=8vDo4^#N?jPCYra[*RWƢkm9h:B@ĂtEW@EPWђcA݈F"1Lc<'&U#ev6p0Eu2eT}gkf1\5, ÕVDMڎ_RAM)F3qb2X!E5zjˈTͶ7@>;?P/_\]B7bIΙy Lô*f`u&4UrX0'q(oDn /)…lHXەrB؀x&Pl }=uU &1GX.9ސ b[LSJ$̖̋j$@LQA48"R&˘kb*BTݿ.7VQumt,ͶzHDg7y[22ؔ.'2x6 td:gK9LJOm1W|a_r/^O6%Yk󜙩zM s?(ֽq7fl41@kGtB쟧΄7<+ YF oH5 :x-Ta-QM54 XZ 4S 0<1N,~ꅥmY_CW:p'ܗ F '2`hbЖ)^TQB9 ,aqיT'u7h8R O =^")b4^dpH TFBo LydE=ϣ{ࣺEV0͐ 3RYnú =fǬI<+RqQtGRO g$|A '^߶AC%Y/Ij "`L4H` 4  kUc͚r1>e0ZtV( UhFSUmn2CA<+%KkpI@ (lsQ'RSjp$K`f{ V:cvAI@7Q5gO@ 1Yȱ=ZF@i"Z]U}Qt [/hjc[Hb¨D[*NVԹ lSI!M 5wooS GJmP(e8 (!1PEqbqb }OXn&`7` I*%SZaW-7af';`f*Xߧ3r2R|WHٺg[Sj{Qs,JRm6_.M(oF t)F6{44 ^86IeO0<ȀLE1 L: F>I`9x$jn~U(QJ@"s\umDZuؾPB' 9 6)^!\ m"Χ.E21!;1^eJfpX At̶s:Nݎh0馛pVO I'y$wBEgl&2U.@5P[=3Q=]d;sp2dtÜ &8lꙆZ8mhAZ4]&(_ - Fv0'YUB7J+B9N$]m6HYYTlٺb]mja%j22g 6 ]#dLH.`!Ş@¢D@2EJ @t@0LExIAVI.tOTAn$G"Y[֛9 ox}Q\1"t&. zOw5U-D r FZ/J%Qr YrLj f7L) `AV Á)4d/5-"MEմL k6m%U:(L\%-6гFP|l3C#zͮEG[Sj@B )Fxx:#wrԛ@J{eLB7#R4P vHi iؠֈ pN$ULY(u!OFy2EȬaĉCl2BA,HjG(\8yzZ12troċ,"vOx\zQ|%ȣ$_N,P^à+&݊$ĕg骃Y'rF@T ՙtHk`P.@ٌҬ8Z~F0.ğY%;ټbܿC<=[]XrĈ0%^@fKS7;`XTD YsҮSvrW2&r tgUcY=--0z_`'W<Ծe!*bO0[_zi{(MqW"2A dzZFXLQUBRV)X-@HĔ2Yr= P0I綷7f=:HGr[KWN yqX1z$\ r @JJʬd0n#q/1-"j=+ƸW`-ACRz ':" Nr,,]L>1h%uEm$ #PZƭbˍ `,9+{J^e8 aLqz' LA dؕ!R6 :p*GRn8% + $T7Ίs3M`#6^14UIRZ>=҄rhY&6nj8+d5() LJq  ]>;Ԭh};B]eæ|#Io2-,AF)S(`>.%hk!֍+z5Baٶb:`S-naJEeKZƏ$L 49E7`w}ȷ\W$2 K+"}aAumnbI!>(~GLtF'`<;= .7@* #"R 0Q̕B?G'B'9^9!2ke6.#QIR 桗]Rumt-s!ZA9Fmn'+ipw;B L]b |n$iʽRxU@r7HC<2xaՎn0XD"U\rqpa2oBd]A_9z^Gh(jaߒ.+ss")&X[ƀf#Pں6P| Ջ UbD$4c0lomSXq`9i1UЈJiy6_"Mo tO?D&j5mV Jcijc[Hb¨DK.{f(wDٕ١hyʘ/H3gZm^" Ğߴ]KqԌ4Aux4 *r)Winh0Ⱛo[(r9BmB`J>w@!Ech#]}M0)ۃ^S{-OU ²DaGr=k2.@yx;ZDYӏ4<4zQ%=U |]0rbqz80$KU:$$n s iad>"eI}4"HSb̌Y+5AG*I^|,[KZe@*n;ChPAE&BՋq HuP\>hFF2LXle1Ȃ9%'`{V|_hŘ5c1y!5VE4ֶuVZ #L5Ș5D)4"``[CJp 5)23nj#0բpۋh\KX'k\)QhJwB-z>=Aݙ4ӱE1j//WԷ/0ZUh4ܗY 4ZlLÆlD 9 _^_Ux  =aGT+eEF%[Ym%dȘ8r1@ր'OUh2zQ)0PRwf y1# {"cO/KYSH1W)Ki/TOn$@11'sҾȑc3AՇzUp#^mS6vUHZEjы 4E]6-VJ}]=zjspv5?L.UL3TlAA7! 5-vR,`Fe CR\ BHd?5͈r+ rD?%L(A풐YmJ8hfY(1?sXe2;ʃ"yH^7ABhh|'PC[K{i "V;lV)ej jXR(`vaokf8#0laaԍcz}f]b .vv<谦;IȀ@ BWp&8(YQðAajv]נcV1'ZFdJ;yJD &#Q& hzC2M!d~.s+$q6qLQ* PQ8v'ɊTz4մlcЈ%e2It:#kٚ|gj6G|˙Zvj{p\dfʤ HTD$0Qކn_Cs9!50PC [o/59@RaHa vDLJGFĵ *`&MnqB@WCU '7-75FYBLSgzSJg$1m'FF6N(m`PL,Xf}W,o${Q^`"k`P ]1mwXiצfS{"tFcѵtsnCHRf1YN+Q+aGÑjxjɽv?dt a$X0PYT\To>YZ))8a#[?ŧW& ˲#RǑPMVMz{8$EK84Z.C YϪ 4nTd}VĄ瞜 $=^6 @P{$wE1GA[mwMg}ݕzszuE; A 9ղ´|@v#c)l `EȠ0 $Y& (9%W[a blεQ? tlNӛ\m _nxwe{v[.&uķH};ƃbFON1Ke Q`tf#uL@spC]Xf 18O]pt` kF";+W~$1VHp|yI9M!6 Ei?-aPXh55bDż#w"`Z}ALT  дpTQ ~Ȗ$o)CqMp(!}em@rdO1E/0F UyO@'$]g(h Cό I6(P:H1Z@<$.l2A("GFNA;ZH Fk ٌU2vps@rI@wD̶b{#16e 4΀eBy1/K%,צ@TwL#%@@M"䃍H(+ؓm_&4-Mw$1ar"]y[b 52;mTr.Ĉ\1XB&IԱ2i/ ܁4# -8mNC9\5uc ʑ@ke˖x XPzjM+0Q)IO9-^ɶ  yE^W;\Ĩ#5jAjH=STTm9"At7b„Dڈ ̀4 ȑ'őD6.>o_auh4E:nmq>Eq0d6G C woo9Z\T;%X-G`}Ox Lʆ*?ntIbg@ϖ4mL@Y~2zY ` PP'+A(w;m{`tՁ=4:n!cJe ۖ$At[2\[ Հ"6H )̃| xk]R9:ϔa †+NS 8V#VS &pIuuμ)004RnQ vwbmzJCr^it\!r,2@0>ݏmlxqTD#/(1u |V%AF7b9ԩc@,TR#. Txw`9b!Tٶ"7r3 IGk v #mы,R3'5d e+-{(R={hy6rR8w`enSL"n#Pla3AG=~_c 9Xel-\Ň.ީgޜ^x{JR2f#誜ݓ=rbL-PLbR`4<G0ХD:GB  51S"LUV _)^>(LJz\O! ʥ^ Kp)[ L^8'DYf%IReF1O>Ϛ҆mQqjő+NCP`dfhPhPd2z8h|%NL]OA>JX1u3D1+MKTO*hW6 'm VEH&)A&RRDO`EW$z  )yx) 35.ZKDghEߗΓ yoajO\@AVJR6(,z Yᤶ>dR H-9 `MôzFs%BȑIl0zJE7DΤG>=*7pF"L Ӣ_μkMkC2t@ju:P5C>S`d?TGhwn[uFP "R|WHYSp]AW}}Ov ZGyg)QA_&1[1ɫ{, #=VXps-{JM/S l`"[MT- 9EL9'dS8yJqH2VnBB#FE#[- JB)"PBph6qZ38vvV Ոy*P"TT`kC٪֏\՚j`02"TlҴ  U WP`WS;b}`rDS h]y'̔I#g eh.օGG~49ZLgdk@ ϗ4ALok9*d0dpbmAx;r{芦"n!yq@"d鏞vaI), ol;)"jXQچ֬n "H$3"+ r̓c`=u :ys+!g f ri TMo0::³R9ZFj d*%ltew)Gs`++" G }>fa>;cG+~gj<\3k;2CgxESr,k6:0 ~Ymbm|N?߼xs!@]I9&)-j"y8Sp-)r$!9#mۺ XrP"ePr\@NHFeb(̳&P,b9ɚ{F=D( 9CBІ!98Mu8ybx&a$oQd(3͊1SgHP3 X%2PؕK+eZ )|zOZ2 \Cprv561PXha1RLv 9A 35 o* /HJ۶ExTIa4OxE.f/-g9JEgzGu$ 1!h(ಣn -Prt *@*t,[z{ iZ9j:@<Ɋ`6=V{~Sۄe)  1h}4YelɓnBv-ii6*änMAv;n5ڲdU r@ :R3d:n,F"Bn+ 1o>CKэ&UFrQ}0*@ut[[b۽4}*-בF (禁1QE&im Ŵ9L6u69i -~~:R dt+,e}z j9XaSbތQ#5$__Z%W)ʇ\E|@VyЀjb۪!ikv}ؐkv?Ar1aXNpBGNPtؤ|ۜɄ9-cX\lZFF -Vtc((aqgK7VdGTFM9v%)8j6Cd)F*-?m ؂j(z߈!6% )̈#[R.N?(Sb0.WX2p3}[ q{n *a#t#(Wk#d@D6vdP z38smsZQؓAG HըLE'ܚg0\╮ 2I%p^֬D)H>.O#m| zFEnQ=W ^ kV"#p R}iضtՑ), ;s43Fڞ*'ϳ@wwU@ ($U@dDr+%K'K;Yy*|;;`j93 G֠Q+#ܧGfZ\Uj[3Qm]ݜm1MbԅT[lfJC5+jle/*S8I "n#v̆1]*g"(cx`Ce $T?|2XƁ&6%ҲVXF&Jԁx$Q/JESG:: >uŀq9'.B[`2sAH͹Vd%@&@1O@cr$> By[?vzVB(|'6mQСxQ{6A5xq_(AkF+ 5ڀ 9ݒrL`00(Gd$ XV)|FX6 ħDS"{PSqchI-4 }.i1ZF6+3v="P'6'f:Aψ6ԧ6# O{׶u?qR Y[q#WZmn?h[&zB[-ELK{Pdދ.B[hvz]|y}?բ ybWKa_`=F`8WIŊ\zHVuMR@|C Cg;pڡvbc1 P bѶh1[X `+Cc9t#klrm$A-Q{M2zuC2ZΣB#)Z1d6# }@dSwQ 4TW$ W#')VR\@<=&uhX s```L6. (#F2P_8RG`G-HJf 9U8`z9_ԉ-7n{DZJ ϢwFCzh,G 7+Q`B2",ih3 xy: r}}'۪$cAaA`cZ6Ƭ pҼRyU05R PODx=Ij 'K|ygECQ^`9Vd ʲhGы o0aw ( q8Y&#D C4OjcIn @lS^fI(q,Ȁj]Je81kGQsZ܏ƍ6n!lu 9t,j iX%Q7vĵ棾ŪvÎ;xRwEw<$Ft}R4F4DcdtoBdsO*jߋCƊ[91AϘzs3@L)逑KC݋: ǔ࿊DHOҖ>G^aqH咈UC4&,?HYT^߀a6lsL[??k+|3ܐ2ȺhxƐ" &#RdI F#8/ۑFW4Ŧy)D gD`o%F֤otd aPv4brԶ$à/ 4Lg4SY MP='5zjˈTͶlû i ?s&Lwۦln0@:Y뙭fu :f){~ȵ!A75FY( ܊%Pn=b`|6j("I a;) (Eq^9s|6'&Bt\sPmJ0z}Ƒ ) isheҧ穪뼘f*8#1v9zK BV,I oH !Ҏ~_/%IgðRFL $ .TGP1J<,QEs޽MQ vSi[')eDD{6d($kM۶+"r ϧOqPH5BDe-E>YtCPm4%3*lKZy/ή kQ(L(H3~2,a7h_BIXwC¤_&Wޑ$HSrQCǍPc$=YQkWQ^[7 |N1~):{VF"J&V0 [sf7I(X!nڕc]TB#_ھQEdy.+96,EM$3D?Lcxfr{&)lvySxX>rTHot$;(&TH#e1Gh5%q3t*A0/mÕM^xզZBv A Ɗ'$|DNA5.'4h6SM+7F ca$:6818L Dt~F'Á< G3;ueKcMڇ/ޱbA K{ÊZ{U]]Yr(V w׬Nw??x5\{&|ϗd;&/.n/Zq7QQsL0>XhI9ԪI+|cK N*YKJ&Y%( *3}M{QžJ4L|7Lk""Gg=&v4A9 *g GdfP#CzP>aReL6:΂~>T<8߀u*sk)E+=D&)<],-A>*8Q%!_jpD5`(Ko9E|4&S&ic1u&j[O,j駝 >%nZsts?IrF%ەRUz쌃dU+qPo^k=F ׃a4am$ssHst2% k#AF|J /ězXT4l*sa6HM|ʅ,_fm/ĝ/M/^Dc?E~/-?$_'a2/O!_)m'c&f8wPlNgd(2RA?19= k{vqvNpRXǧ$c^)4p$I<~4I1i+z

,,+gU ;R)ECM('u~A BČ^>W뵮9)m!)@tTVs9k}%B{޶ +.#Zı5%U2Gb|Kgq WPElVg /‰*#=u"+.ԋb7.Fp=kfgnLo@UNggp98M /"n~("_b8;UиwŮ5# y#䆪kpWCӱ@'U5D]ODTy$>p/hh eh_0yxgc%I[~w>|BeǮdWr1 %{mz6FY+ǰUO)^Z*ay2bV(nOZӉP1gmJ`~ma=锎%Z6|P%u)tXu+ܾ #jD)EZIF~OSGJ͓n9u9\۫@#!:P:Wh𔚤=ϑƒCIz5F;f]| `QI?Ĥ!wʾti36iITO ^j&njAsru@I5Cg)( ٴbsd6yU!UAmV9 %*, */PWDzgjdRbxHFvB(5HHN`.yu =Utqek jmwde/{rēGz2 'Q4c|J(<) Y)ZsAn/ރ\N4Hˡk _>p !}@L*~.3\N]+_f0k8Qf*:Ei0\*ɉ~h.+"v,NcwkVyYhW9vgH[ B ;7x"KsyPZ2jZM:z_9fw2O"nn֣a"viT rc7ORx9B7"Ս!3VzdQiHm+΅]VX|&uXc8Qi5N]&)d=a7d]&|'L"u̍7z.U5Q|Eq!YHc.NZXq]-?7dP?H)'ndd>eȓXXUVrY)  lut%!@d) (e DYhEoPQ NS*YVOSC80CvB L"!xf;b0 4;!h$UlqϦ$y.E7WW0(qÉPf^DYFpԩ(죌`"u[l@PCh9,L.{RvK.0Ȇ5/20T;]ۍ u%:$ `{!+krJoah;-6* r񔨱#Hg [dBbpV 2cȍI݃kؑ*%_/q9!gm^U~ %!@9FU}͆WkT(MF >]lnD?̗Ϡ)6$x6t3851Eur+ˌ|k'y3(FwX5ZM_|QQzxUcؔcM7Z/Uӿ  ۅ3{rR7U]Mr}{'c$G!魑~)#K<].ԙp;/pQ8wt>:btV{xSBjLJ/Q G&c<'=Aa>hfn2tF^ BIuqbf1)*p2q7JJU8]xvfiW78?V):^D o{{j̯`5 |r1Aj(.e5(_ޙ7o OgO"B5 뵩h0j#з?$U/Z=_R]޿Lm#h2֫_? ̞nRA9B܎]j[eI,3:B2e'<C]oRx\Yg"uc'V_5dX 0a#av>s*O |+[ dfA[j hNu?jQX4/Gpc?F`:X,@#)hw%vA#v`B0ZS$hJgX XA=+W3 aۂ]aQ%LAZ]SJl4&1kr,!!w$wxXWᩀ26ɫ ekq`>zJS{cNn8PfQ ZkkkHN}cˏ-Rm27*M}>\)^: Bp<s`VN@c |Lu*/4D Ҟ=cJ}rL{n._zqj]z|u3 tq7m#~a˩kK fs:eć7u2mOVq5 `q =8h!so&Ax߯sۭp[d?o-5Deiz^k nNm@ @WSPպm荝YF4@lSv`އDk秃A;)E,͛w悔!m UY!WJZZߵRF=XqٹQ[k叫tn j1swwIy\Lj2nVƜ:T^G6@:/ut( v$N6n07ʖ)ḯ@~~fj)(W^U*ONpuPKB"MfNZ#Zm}Gxzy Qv^Fɨ֯Ai&H!fhfX,w7o??g:G̮jfإ)tff2SM٠rT$AgjK!QuʬYa\ebO}VVASPSMq4\(6ZUƫ&K+(B `opkfk2mC0YƊnQ0rBװf46\]s]J٬c6P[ѕy:ͭS&,ʍ %-cps>dڅFY¬xv@_$rFucH3;@Xf:[+&k#{?lCXO\U/W /_op^sIPܑ ) Yt8D !֝/MwPݡL([{aGa2»Oen<ďBR OU'Ojp7^FA#DQ฾? J"R20(@>^=3dRAvq.9:cVz'$qAٖKcO*h zLJڼ C7m*I" iljąbVP=5Dߛ%mP}p[<9)G||RxLZ؆\4xxO 2/(S;(.@Rq, MǸARG-J㋜3gt:9A?s>Yޒ* j\ Nd;{R`7ڙ(*ӧw^\_&Jk&F/S)C!Fȹ$th.aH$]CK&O1V<'qm ky X8'2 G9ڋv(OfJ lhYT<Bt V뒶x,-U(:s nŻW{?~4߾uLl8cLhȱFoiB]2ѷ&Oӷ$T%^ڮ gÞ3hJ|'O{t*svO?FsrDsLDu l¼%+ PW:%s'T^3w\pd%nh] Gh# ~Ʀoֲ`)X\Ngf ᩹K(iL|@ʮyd BA6T93t ֤~[ekHI XbG* 1^_xR@my3OBE6Bo,ܾ#V ] iK'`~߼^I~]j'[]2DkT6Ow"S{`rd=cVLFi)/wVlck1a "{60 ]6*m+ mR CD''-WsHw:Z@S+E5yi(t hr!U<̍7nHI:iY|t|++fOߟyTHtR(nAo>O[< ]g}5^yQBh+NBhAJ} pj[ecs 7f圌^RZAn)s׎C C Ƴ RB ~KzuֆL\7Zv;8Hg0 8a>IPP{~ darp ; iIx\ ~fhg3( qE.eOKauS[EW; ZP1G=³iXŸc*W,\é0Fs~羮E붣n 3ū:^ĪwMVle vw KapawifewYVMhO_\/B+7QZ60BxJkOJd,O0GbPZoS9M ].'qhrL/h뇪"P -|B* R]oeh" <3W9ujQIVU:b*5ު Sr+9OG2#{ʄFZ매(קVl*GiZE$ߊo޿{;'?mL(2F XL8x:Ll(RvEB a_pid[C9*T{3/@|hc^b/zMErEЯ8X gf,|m{vcՒ,cDkM\)IDsKy?Yv>r<Ҳp˧+Rȓ8tگJ j؄x ~^Kҫrgz/g+klh\+Q0m=J 堇=]<λϔrDv8 a[JEr׆go~/A޺enJ 05 \fV`6bF!8OB!s{0c_[DLQm7VQ96ԫ3w mW Cu9TV~AnLL#dG %QyDB^{Dt{} ZLc+L|7LYGtCYb'NP5d{5YA'Tf5&Mk7_Jq>/9kնW^@) A%Ź22" vj٤=rl w;yY2؏b?\,37s/_1oЍ "{T B#9xҖ CIFkkln,ށv(9xCD{ҤԚzK{s%3w mÁtbU9f>Qp™l2ڵ"53;Ip%33T2Cݲے|~?Mf_;}FXbT_b*m9p(LjalSvF5yYĮV2()4`ժpŮˌ`6q-\V"tEQpܱ$M,d9燮*.)7+{F374:G/~ow~z4Ei=J4B5:8ɨzǷ݀{sokMB}7p(D,:B\uSX&5TXcܘje9 M}cƟ ]&79dbr@i.JiL$7i}sf>AbVk+7BQ8TAvb9:(P&f9D}6ިKj k ǙC|a(YlrE-.v7Q` Gmkj}w:8ިUa,x[=r3j3/Ky~*d(6<]ͫZQ18X!jkRYěN,x.}|ë~Vˡh>r(jBi#o6Z{Y(Y.{R\a+^dWթX WMu17vޕLHV#]1i^uyƜB93Y[W 0c/ UE3rAҫA/yd9d1 9+[NVTg;R|9;EX5 ʊg*9y2㩗(&S^XIgQ]ٗ[I,6u:stbIfhJV $ Vt%sbs+eF6 N&@].>}uJ#{,;b(6GRhXHïxXҩFI/ԦeA1zs04y ϛwW?F}do޾`~wŇEA^iA+M}OZ:úz>R? `־3vS&vCǍɈJyYQEUs[jB뽜C@f_git_]r!= Y0:r*)uc$1 bHy"Oip(&j 3R2ehO\o?lweMRqz?YI6δ]4\cs<;9xQZfvV3$.WE3DN0ݶۢE8gw.rtl$ڶ5U]6dorep.J=>F ,h;w ʕbe; 'dG`p=3s*RĵdJst$P؎*0;$4 gkS&L\(ػcQ2׾_HRhVAoON@*܎E ePLihܳ%s:~[gIq#$daZyoB5Ìbך]*"7g_2Vm1q$S٠r(,q:3XC-Du>!3y6b7n˔F 9\,3W$T=f8[ :LfEj{?:5‡!:QZ4zoD [t Z_wB;4eri>2ny;&ԣ؝1=׎4/#.DJ*\ۄ h(!Z]%V۵M4a'k[UJGiut,؋(Y= HxNFj naj}jű7iQ&Jg}[z@b<[RE>h%D<T!w(i -?KݮjIsB B26Pe󡥚i/\q4$y u w߽3_%&7 3"߈'4/АН2&BO[|YKLx| ]9,"Ht ۞?HG/'B$׏_m{NW(mJY/UFx]~̐ OJ<6^<85ӡv+T#֚~Юnd07s)qYn@x:̀Vq=?tZEDӤ3tUU&+U=.-;Qak7"PIIj!"zVltP+ u`RC=V"x%sc;r3ڈ2pQb[X{=3˶=RUj2r phytQJF(@ەS*y#jԐ^dZS/$%CzQN|KC[~u(LA4u6ۘS †)jR2 ڣ Z'[al()ls w9l[}.4CڙY /AcߟY=Q"C㘡5v߱vACخ t23܌&զUgda@˺qb/+s$ U E.G≙ [ʢ4+ͿDJ%ܦAR6켿x_23C\ZlN3 *DD\VڭL%#s$/1Wr9ѹ`el+ ]/p>-Rek2uǒNuw5JB q(9.{j[<ŘͫU`T>r,/KAU"uM4&wY?L9ffTfu:"u3Ǔ^:˾vխK&B¯ZvV۞) 83LSsZƃ~a;nԎ9Fp1צlM )a.e1BgHJ*D8d#V+(mBBNX={VaRQZNLƾ['=[DE,6#w) PXQbZЛd56{U r}yj ޖm5Ovx@hYȇH_h'YWv6݃QglNG'TSA yʖA `^L\}Cnj70[xʚEh=C߿z,s AR4J mΩy9"@iyhhegj }^]9ڍ"vp?&rGA-WbR'JUNrP'ӶF!h{޻.._ ҾOjr]Ӫl8OuEEEsgR3GQdb'xQ0Vکq pqA $no^}׺o/v&sw+e%Ja 0?˭LYb?0Ķyjϊ'1~Wme(;_fnaO޼}\V~g̛?xҽ?sՈ5ao?/4˿9Sq+\YAVUw((d9\ {zsTS-_/!K V|?V_>,N/v^uǫ;DʇQ٩6 Bܪ/H }JL~}֐dXU+4\W~R2Ovxȍj oc&ٻ8Z$ϋ2L&EY0FxY:/LcT)DM< ,슩osK?k:rC(9VOĸZ5WLɊr&+Hg q[[ZÍ+hGOVv.)Dz:NS2CNsL% sqm֙&dk̓j' a+p0yN6;gh"#NvBAR}qIncG j%bl|/ (nPËmj8r0jzNKncx,昳>^9sIRܶp1pl6W钎I>? +ҙqbb@UG rhnt.z;WϏ?o~|{9q U7~ٲ&sRn_Ci5L{C0OO8XF_Vgͭ%.ć=98D&iwAn%sҒzAPMxxccro4YvXrǍRIԐJ5Ra= xȼ`0W,Q$iR)'Ev2U־hBNϨ].L4 qfhJGg@sl,+t[)3L—M lp4*Ѩp1m3΅ U_^m5-+Jr4JcPʼn\I7݊vr<5=+ Q(+US\G#yMYrАÙ˙O[ #H+2tQmf(;Wֆ=5i޼3߾ug"T~|gA}^e񙿼3?7CO;=ct>>^}NЙ8_"xBU Ղ`TuLND/v7Qjr/@g7aиVN3~&(s n2B ˊȾbpu'No\F;X͖[aPK>avT4:h-UjXsqF3YD, R2 |yF:tNCA (0Rv5ao2U6KGRBto0wQךjp4ֱ,m7F.gtKOOL]̒6 "#N.\A,s]''AxrlRܚv ƹr-#y jXGUA&_}1o˥>eбq|~1S'5mH 7\."=hQZXN r:k>Kx1n}nڿL7ƕDd5M/|ݱ&; RVEi"=;Q!)87t0نؙEoDcC-/ޔ3j[Ʌ u[̮E]BM~WKtL kTobi)lB0&8&㾵_]9m֫@7gӄP&kW*IX2۸?Sǣ[cOv 3 [`sIc+L|7Lֵ" phΓ/`u:Ǒ&rFuc6,sUćh{`bew kߍ{,z/c<,g%(9a8JEJ&V_x˱ (ڰ,nlKr.oZ:3G=-E|0][mY%D!:AkZ~%3,"[^^6(AP' &{]DijxRfkfq }~|ʶr뭧#{Tt:9AiRSfyR89!gES!sTg?ͫUn?~Uӯ:|^̃"s7%ḍmbp}<|GO@I@B;Zp 6Me:7@!yO4dOΗhI(Iq؛w+@CI3-w 锲>ʏ,A;FY Cf:[p?uoPjNTThhKR+],Q#L ,_|l mS3'ڙ&;=XHɧ Do)v&K(*6II!'?\#|"4]#DQj ˗/#v6^nsvW$YR-1Sީ0(R{txH25v)?0…Xݔ'qxQ̼slpb8GDt*C*|nppEi}DjxA+tNr29iM`tf2Wk)IR+m6n̰ ,`K~6(v l@:lJ{]T6u-i=$` @*f\Z?^;,m򹤟hsz .6eXfmAm c$>2Gr<s-Q.胢vx kL%܆S"dX|!Z.6~F$DH&6w ǎQ1;4fЇ!!a7 ~Y-& kcϷVPe״6gԀ3tnY|A`RɓQPJ2+Wq@D@FЄWaL,sKyY Cٻx&jPqygǷ^`O4(9uDLdڲ7UB6@; +5hj-.4U3 θ{] JvtY i N}_CުFuszP !/ǟRCQr2r!K5dt E,"WU; #Ĺt43$cjFk.e=ѓҹGSEUpN\g̕qcI*ۂvka_ٻMV̥ĭwxy Un /!Gdcq.rIz :1]q!MNx%|4 CyDx1 B"q+\Ǩ>U#U3'@~LE[ =i@۳0*Q%َX 6J V%^#^nLa0b_b0Gc*EnsHS[5f|P8H5WP!2m5k:±R?k6BaeOnPÛ5tN Ϟ1c~zf%>gܰҩvb S:%d|@չz2fVB_?D6 Ix 3:-h鞓|m2i1F|>==JkZp wL#AW~/zrDx敔@bc8p,i϶WgZhǖ{e٪l<ǒLv^@YC%a;i npS++ n57\GPkdKq@ 5QŎ1s}m# Bx08߼g4D8z5C*! c _б @8¶':d'J@h%M@NcP m>yI|M؛^Oo*jh%xe;A(uJLj P -1Ѩ(@z6uJ;AVuzRY:F&ۀa`/@Pޡhj> d lx CQUUzkaƕ@zOA y;w-J]8!0uIaGpPx/ ^Qw*jJ:($ytE )nSԲ =wB=OH㋰ .PY]AoBuچ IBp-L̞i-1x[ߡ1 @''tJh`ԠxhmfZE>th} =:Op; l\2c\t^9o쓗$!qc<@4@y-wi$qΝaPgZ,QamLA72%=ff`쒷O[U/dN1P9uu-~NU,IJsJn4XP~29]`?q0or4<*0.u(hi6JW^:rTL&geOE}e % 8-3YaDI=-zvtTt8`U2{2 `ΌZQ)۞)"  N$! @3Q5Q=>64s`!IW$P+e%oUZZc[RbhSgé't24uTMhQ>=9ki]BoK ,sKyY MYuW(kW~x7?!>9znƑW0yK1<\4ϣm ==>.jhcgөǂb$ӌE6Qq:L삅~`&?^lb^,D hߺf5[%<eą@e+V\h(ֹC4 yfWEUiNnj00>WiW r0u8s7t' Ǔ1~,!K)Fq6v2v,Q %"TbUsr'Vۘѳ5Oקd{tpDА)Jܝ:l-^aC\* +V/噸X.&ɦrƫUMt HnkVV>S澗{Zf#diq7*RH500Ym~{(fs*膲BOF(,Ro9(U[U;Tw.X\Vl&uuI:]y#3cY ;˗)*ȧ0f>Lhm,/m3QݳgLځ7g% x3['\6d:M}c|ƽ8r0>f׹VQ_xqyYhWD[BiZűHˑ&\o:L"4쓻f@/mEcJrٓ| K_"pMv=:^6Ңsˣب)j{nJGĈ4sl,+t[)3LXt4H9u:b1#lH P ;@Ԙ~8qd_@dA9+B\Hs7 ,0}1Y+[ F/n* jT *ӭW'AZjB }Sm^ |J]&~hfJZ԰"dTYcAt 7<%RH P)0h*#]ոX4Z#T[DzD}ٺKUFUPu6ٌ]xt\sjRA"G0ִ3M.55%S&jB bF/ZØQ8V`j9ZlED|uG_ LC0oSsG8`*3rh9JfF%MV\5~7rk,D3Z]-`sСޮJx҈kD](BY)%x ~ ̑O\iLVceQ"p3nJȣu(gcL4;!ߌM}ٌ@8#mrc"sVݴp6Қo%!jrJy;0V[4 œ+>]yoޚ߼zZϯ~O-^2@YU8u ;'&t@СO+d+[nÙ˙O[ WN1$iV%h.d͛f9ZU)! h̥J!Lk6gx(K6\O\3cb/eO)hO;sOa*ōÔ=pT27WKgrSpJ!AS1ej`'"p~G[tR,=DGBсЊG\rMQ{Kȷ$Kn,{v1B'pyt'(n qRZr=@m%!Rtܝɍ=}~Y$lBӹcSO^dfO7iTLq~e o<<%c$=̂0t0 {g{Z4 S~x7?i9?F#|nf:m8҆NymA`@/ۍQ4nN }H̓NICۍ\՛.7Qnzk><D{X; F-y: MFKp9joOl܈$j ] 5.> %*=G1rt &ɜw8@*dO!vnAWQ LL4'>ϵ4*G[ tݕ}"X頒M-hst[ktbt^jIH#['eEZiZ 7niB B>%J٨v}n86ԁ c!=Jca'LصʀWZ Jh#Fg_2V IQ0Ijߺ1峲(刽7|<0\}lO(/ݪhͶrcl' =h63NL]<9ьlVHp -'(ΦO:Jvp,#{) Hy djnn ǏCQ]FQe]S]RHFhoȅf S;PY4+֙]PhVIv9.%elVGaRo9W,Trٓ| K_"4C0\.>}uJ4ХIL $TTj+}dZK&wptzFm`붗Z=Ύ: L\P3>]3rE\&Ic+uǛn(2!^RJ>\Y$#ʐur8iOC9nC;L>̋tp{@xJN h(!Z]%d zaw, >;5c4R3&u4qGPrYx3Gh)@guRQ7~Z(5~x7?Q9st@R4MjN&yV0ccᘟWP׳QRWiLݪ|ߌL0d=az#eK? baB(٫fx)fm&f~?G_7^cIŠA-,8wB?hR v,HJatL}I:Vծ#hJ\o?lweMR-AG^wZ+gJX_)цK? ZK D;QÄ&s?t$"XX 싳YjdPt<*{:Q!U,Ӛzxk BIsG M LC?-<`]B^@}zan=q,(tWnv@XQTV2` wYC7T.bhnpZamޠg?:_BV6̖,UAM&Fg;Tr`prZW(\m7Qħ΂ @.U~K'wD>ZfA:1a\lLJgI(`TÏdq-W.X2|?/噸X.>ELn7K+7\adx%J[.ǣvs MJ 0c75*s<990# t$bizZȁjUb bnl`A=0;irfs4*|>ll2(U90 2ϲc'Wy`e]-)j(G*waQt˞#WXl5?F2YUHmbOeFʓIsX*pd01 r7ǢVOZ9rHӶ+oHokXܞ[\m荝YF4SR^V-hdcځk,hp;s}zw2Orh9Iv^~K3q-Ǎ[ET}{NnNo`{vs?kNL?Ŕ B 0@]2{8hce*йH'@eYSvOAWLrW|)"9"6)ػ-.mh;B…\> 1:b5,NPP"uv9;ҡL+ |}C?CkHm/©, G=<>Ig l3g-`pc#9 ovDҎcc.#=À:]a{.idˍG#W2YƠjk暣L$Yaï%Zkg*4sdn+t~7k-%%JאcrKc~z{LOL%F+ɿ!=\?ï;'(Ȭ }Z}gZZǘ7ؖʖͯCgmYOH'%LdR\r=`p%uq*v۞ :ݙbԃnD'f0tSز6T>f{y{i"i1Ҏ۔J ^!wm9QuB 5T )8a,EJjl4%4"M|f627+IUptN,5㝴C2Qu#O]{W#e0P|q aȧ>w{zL70QۺmODr|htS R7Ks 7.%J(Ũ).DȕuŧK\|{m av9?AP MkAr_in=K_(ܤ)4YbOq ,?7# N.Cv@!*W^آ=/Aa^BevyPq*,d͗Tc%7q\Rs CĤ gG_C>5:THqDBIdH7T4R٬¼:)`1lؿ n?%ͥ Современный метод сжатия upx откроет новые возможности для ваших файлов и проектов – WordPress

Современный метод сжатия upx откроет новые возможности для ваших файлов и проектов

Оптимизация размера исполняемых файлов представляет собой одну из самых актуальных задач для разработчиков программного обеспечения и системных администраторов. Использование специализированного инструмента upx позволяет значительно сократить объем дискового пространства, занимаемого приложениями, без необходимости переписывать исходный код или изменять архитектуру проекта. Это особенно критично в условиях ограниченных ресурсов памяти или при необходимости быстрой передачи данных по сети, где каждый мегабайт имеет значение для итоговой производительности системы.

Эффективное управление весом программных модулей не только ускоряет процесс развертывания, но и оптимизирует использование кэша процессора при загрузке приложения. Современные алгоритмы сжатия работают таким образом, что файл распаковывается непосредственно в оперативной памяти в момент запуска, что делает процесс практически незаметным для конечного пользователя. Понимание принципов работы таких систем помогает создавать более легкие и мобильные решения, которые остаются стабильными на различных операционных системах и аппаратных конфигурациях.

Принципы функционирования алгоритмов сжатия исполняемых файлов

Механизм работы сжимателей исполняемых файлов кардинально отличается от привычных архиваторов, которые создают отдельные контейнеры для хранения данных. Здесь применяется метод упаковки, при котором в начало файла добавляется небольшой загрузочный модуль. Этот модуль отвечает за восстановление исходного состояния программы в оперативной памяти при старте процесса. Таким образом, исполняемый файл остается полноценным объектом, который можно запускать двойным кликом, не прибегая к предварительной ручной распаковке через сторонние утилиты.

Процесс упаковки включает в себя анализ секций файла, поиск повторяющихся последовательностей байтов и их замену на более короткие коды. Важно отметить, что алгоритм стремится сохранить целостность всех точек входа и адресацию памяти, чтобы программа не потеряла работоспособность после обработки. Это требует высокого уровня точности и совместимости с различными форматами заголовков, которые используются в разных версиях операционных систем. В результате получается компактный объект, который занимает в несколько раз меньше места на носителе.

Технические особенности процесса декомпрессии

Когда пользователь запускает упакованный файл, первым делом активируется встроенный декомпрессор. Он считывает сжатые данные, выделяет необходимый объем памяти и восстанавливает оригинальные инструкции программы. После завершения этого процесса управление передается основной точке входа приложения, и оно начинает работать в штатном режиме. Весь этот цикл происходит за доли секунды, что делает технологию крайне привлекательной для массового использования.

Скорость восстановления данных зависит от сложности выбранного метода сжатия и мощности процессора. Более агрессивные настройки упаковки позволяют добиться максимального уменьшения размера, но могут незначительно увеличить время первого запуска. Тем не менее, для большинства современных систем эта задержка является пренебрежимо малой по сравнению с общим временем загрузки операционной системы или сопутствующих библиотек.

Параметр сравненияОбычный файлУпакованный файл
Занимаемое место на дискеПолный объемСокращенный объем
Скорость запускаМгновенноЗадержка на распаковку
Нагрузка на ОЗУСтандартнаяСлегка повышенная в начале
Требования к ОССтандартныеПоддержка загрузчика

Данная таблица наглядно демонстрирует основные различия между стандартным подходом к хранению исполняемых модулей и использованием методов упаковки. Как видно, основной выигрыш заключается в экономии дискового пространства, в то время как остальные параметры меняются незначительно и не влияют на общую функциональность приложения.

Преимущества использования компактных исполняемых модулей

Основным достоинством применения подобных инструментов является возможность значительно облегчить дистрибутивы программного обеспечения. Это особенно важно для утилит, которые распространяются как переносные версии, не требующие установки. Уменьшение размера файла позволяет пользователям быстрее скачивать приложение, что снижает нагрузку на серверы раздачи и экономит трафик. В условиях современного интернета это может показаться второстепенным, но для глобальных проектов с миллионами скачиваний экономия даже одного мегабайта превращается в огромные суммы сэкономленных средств.

Кроме того, компактные файлы удобнее хранить на носителях с ограниченным объемом, таких как старые USB-накопители или встроенная память встраиваемых систем. В промышленном оборудовании или IoT-устройствах, где каждый килобайт памяти на счету, использование upx становится практически обязательным условием разработки. Это позволяет разместить больше функционала в ограниченном объеме ПЗУ, не жертвуя при этом скоростью работы устройства в реальном времени.

Влияние на пользовательский опыт и доставку

Для конечного потребителя уменьшение веса программы означает более быстрый переход от нажатия кнопки скачать к первому запуску. Это повышает общую конверсию при распространении бесплатного ПО, так как пользователи охотнее пробуют легкие утилиты, чем тяжеловесные установщики. Психологический эффект от быстрого получения продукта положительно сказывается на репутации разработчика и его продукта в целом.

С точки зрения системного администрирования, компактные файлы упрощают процесс обновления программ на удаленных рабочих станциях. Передача обновлений по корпоративной сети происходит быстрее, что минимизирует время простоя систем и снижает вероятность ошибок при передаче данных. Это делает процесс сопровождения инфраструктуры более гибким и предсказуемым, особенно при работе с большим количеством конечных точек.

  • Существенное снижение объема занимаемого дискового пространства.
  • Ускорение процесса передачи файлов по сетевым протоколам.
  • Снижение нагрузки на инфраструктуру хранения данных.
  • Оптимизация развертывания в системах с ограниченными ресурсами.

Перечисленные пункты подчеркивают стратегическую важность оптимизации размера файлов в современной разработке. Переход к более легким форматам не только решает технические задачи, но и открывает новые возможности для масштабирования проектов и улучшения взаимодействия с аудиторией.

Практическое применение и этапы работы с упаковщиком

Работа с данной технологией не требует глубоких знаний в области реверс-инжиниринга или низкоуровневого программирования. Большинство инструментов предоставляют простой интерфейс командной строки, который позволяет обрабатывать файлы одной командой. Важно правильно выбрать режим сжатия в зависимости от целей: либо максимальное уменьшение размера, либо сохранение оптимального баланса между скоростью запуска и весом. Опытные разработчики часто тестируют несколько вариантов упаковки, чтобы найти идеальную точку равновесия для своего конкретного приложения.

Стоит учитывать, что некоторые антивирусные программы могут реагировать на упакованные файлы с подозрением. Это происходит потому, что вредоносное ПО часто использует подобные методы для скрытия своего кода от сканеров. Чтобы избежать ложных срабатываний, рекомендуется подписывать исполняемые файлы цифровой подписью после упаковки или добавлять их в белые списки доверенного ПО. Правильный подход к дистрибуции позволяет полностью нивелировать этот риск и обеспечить безопасность пользователей.

Алгоритм действий по оптимизации файла

Для того чтобы успешно применить сжатие к своему проекту, необходимо следовать определенной последовательности действий. Сначала создается финальная версия исполняемого файла после компиляции. Затем запускается утилита с указанием целевого файла и желаемых параметров. После обработки следует обязательно проверить работоспособность программы на нескольких разных конфигурациях ОС, чтобы убедиться, что упаковщик не нарушил внутренние связи приложения.

Если программа работает некорректно, можно попробовать изменить уровень сжатия или использовать другую версию упаковщика. В некоторых случаях может потребоваться исключение определенных секций файла из процесса сжатия. Это позволяет сохранить критически важные данные в открытом виде, обеспечивая стабильную работу приложения при максимальном сокращении остального объема.

  1. Подготовка скомпилированного исполняемого файла проекта.
  2. Запуск команды сжатия с выбором оптимального режима.
  3. Проверка целостности и функциональности упакованного объекта.
  4. Тестирование совместимости с различными версиями операционных систем.

Следование этому плану позволяет минимизировать риски и получить максимально качественный результат. Тщательное тестирование является ключевым этапом, так как специфика работы с исполняемыми форматами может привести к неожиданным ошибкам на старых версиях систем или при специфических настройках безопасности.

Сравнение с альтернативными методами оптимизации ресурсов

Помимо использования специализированных упаковщиков, существуют и другие способы уменьшить размер программ. Одним из них является статическая оптимизация на этапе компиляции, когда компилятор удаляет неиспользуемый код и оптимизирует структуру функций. Однако этот метод имеет свои пределы и не может дать такого значительного сокращения объема, как постобработка готового файла. Часто разработчики комбинируют оба подхода, получая максимально эффективный результат.

Другой альтернативой является использование динамических библиотек вместо статической линковки всех зависимостей в один файл. Это позволяет разнести общие функции по отдельным модулям, которые загружаются только при необходимости. Хотя это уменьшает размер одного конкретного файла, общая сумма занимаемого места может остаться прежней или даже увеличиться. Кроме того, это создает проблему зависимостей, когда пользователю приходится устанавливать дополнительные пакеты для запуска программы.

Выбор между упаковкой и динамической линковкой

Выбор конкретного метода зависит от стратегии распространения продукта. Если целью является создание одного переносного файла, который работает сразу после запуска, то упаковка является лучшим решением. Она избавляет пользователя от необходимости искать и устанавливать нужные библиотеки, при этом сохраняя малый размер самого дистрибутива. Это делает продукт более автономным и удобным в использовании.

С другой стороны, для крупных программных комплексов с множеством модулей более разумно использовать динамическую линковку. Это упрощает обновление отдельных компонентов системы без необходимости пересобирать и заново упаковывать все приложение. В таких случаях упаковка может применяться только к основным исполнимым файлам, в то время как библиотеки остаются в стандартном виде для обеспечения совместимости и стабильности.

Стоит также упомянуть про современные методы виртуализации приложений, которые создают изолированные среды для работы ПО. Эти системы часто используют свои собственные алгоритмы сжатия данных внутри контейнеров. Хотя такие решения обеспечивают высокую степень изоляции, они требуют установки специального программного обеспечения на компьютер пользователя, что делает их менее доступными по сравнению с простым использованием упакованного файла.

Перспективы развития технологий сжатия данных в ПО

Будущее оптимизации исполняемых файлов лежит в области адаптивных алгоритмов, которые смогут подстраиваться под архитектуру конкретного процессора в реальном времени. Представляется возможным создание систем, которые будут анализировать частоту использования определенных функций программы и распаковывать только те части кода, которые необходимы в данный конкретный момент. Это позволит создавать приложения практически любого объема, которые будут запускаться мгновенно даже на очень слабых устройствах.

Также ожидается развитие интеграции упаковщиков непосредственно в среды разработки. Это позволит программисту видеть итоговый размер файла в режиме реального времени и оптимизировать его еще на стадии написания кода. Автоматизация этого процесса снимет с разработчика необходимость ручного запуска утилит и тестирования каждой версии, делая процесс создания легкого ПО стандартной частью конвейера разработки.

Интересным направлением является создание методов сжатия, которые были бы полностью прозрачны для антивирусных систем. Разработка новых стандартов упаковки, которые не будут имитировать поведение вредоносного кода, позволит избежать ложных срабатываний и повысит доверие пользователей к компактным утилитам. Это потребует тесного взаимодействия между создателями инструментов сжатия и компаниями, занимающимися кибербезопасностью.

В конечном счете, стремление к эффективности будет только расти, так как объемы данных в современных приложениях продолжают увеличиваться. Использование таких инструментов, как upx, станет лишь одной из ступеней в общей эволюции программного обеспечения, где приоритетом будет максимальная производительность при минимальном потреблении ресурсов. Это откроет путь к созданию более доступных и быстрых цифровых сервисов для людей во всем мире.

Интеграция в автоматизированные системы сборки проектов

Современные подходы к разработке подразумевают использование конвейеров непрерывной интеграции и доставки. Внедрение этапа сжатия в такие цепочки позволяет автоматически оптимизировать каждую новую сборку проекта перед её отправкой в репозиторий или на сервер раздачи. Это гарантирует, что конечный пользователь всегда будет получать самую актуальную и при этом максимально компактную версию приложения, не требуя ручного вмешательства со стороны инженеров.

Реализация такого процесса обычно включает написание простых скриптов, которые после успешной компиляции и прохождения тестов вызывают утилиту упаковки. При этом важно настроить систему так, чтобы сжатые файлы проходили дополнительную проверку на работоспособность в виртуальных средах. Такой подход позволяет масштабировать процесс разработки, сохраняя высокое качество продукта и минимизируя затраты на хранение и передачу многочисленных версий сборок.

Leave a Reply

Your email address will not be published. Required fields are marked *

2

2