From ba0bb7b9039ae66a093afdaf67b6b2495ba254dc Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 6 Mar 2021 14:15:44 +0100 Subject: [PATCH] #595 Avoid infinite loop on corrupted JPEG stream --- .../imageio/plugins/jpeg/JPEGImageReader.java | 14 +------- .../jpeg/JPEGSegmentImageInputStream.java | 9 +++-- .../plugins/jpeg/JPEGImageReaderTest.java | 34 ++++++++++++++++++ .../jpeg/JPEGSegmentImageInputStreamTest.java | 25 +++++++++++++ ...-6d6dce80-7d84-11eb-99df-4cb21df3b09f.jpeg | Bin 0 -> 39906 bytes 5 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 imageio/imageio-jpeg/src/test/resources/broken-jpeg/110115680-6d6dce80-7d84-11eb-99df-4cb21df3b09f.jpeg diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java index c8c7b7d2..2a152f92 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java @@ -173,19 +173,7 @@ public final class JPEGImageReader extends ImageReaderBase { private boolean isLossless() throws IOException { assertInput(); - try { - if (getSOF().marker == JPEG.SOF3) { - return true; - } - } - catch (IIOException e) { - // May happen if no SOF is found, in case we'll just fall through - if (DEBUG) { - e.printStackTrace(); - } - } - - return false; + return getSOF().marker == JPEG.SOF3; } @Override diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java index 350f7384..35e4805f 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java @@ -572,12 +572,17 @@ final class JPEGSegmentImageInputStream extends ImageInputStreamImpl { @Override public int read(final ImageInputStream stream) { - return data[pos++] & 0xff; + return data.length > pos ? data[pos++] & 0xff : -1; } @Override public int read(final ImageInputStream stream, byte[] b, int off, int len) { - int length = Math.min(data.length - pos, len); + int dataLeft = data.length - pos; + if (dataLeft <= 0) { + return -1; + } + + int length = Math.min(dataLeft, len); System.arraycopy(data, pos, b, off, length); pos += length; diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java index 64b0d300..3002c390 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java @@ -61,6 +61,8 @@ import java.util.List; import java.util.*; import static com.twelvemonkeys.imageio.util.IIOUtil.lookupProviderByName; +import static org.hamcrest.CoreMatchers.allOf; +import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.*; import static org.junit.Assume.assumeNoException; @@ -1959,4 +1961,36 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTest-B$oz2EoDnVBz(U;FlrqQZ4DR> zE)EVq4nGXG-cKc~?(gaZgK29YfDyxBFbWtY4le8^fbN5v3c!Tm*B1u{qXsZOfc2%M zVYE1SFo43|%s2$t-;)5rvI(C7FwbThT#!x#uhYp=f)Df&XwK%ctwZWv*038 zK@pu@OcT62pVZRaDW@wjHJ9s3=#`rCyILc=2=XQcTJ^$GdT+X4WhkvSf{Eh6V9&s< zOIJ)5v`!BfsQutd)OI%I=vo5@-t^fU@@9{c8u{0az81Ewbj~N<@SJt|c%zWuo~y)D zeV4W1^Ts?ke7Yka?;ea;6v?tLi$L5ntBSGeCD<3wha+g!8(o%fDDCR7=ZNV2{KNaj z%A1yb92q!YeGY2ItFWe$HkjZot-TRBa$K&wm5-BJ`+lYd=`m6f(FWzE6sUov1)B$z5l<{A5M;E?QgD^#H#Cj+0?H$DdolPcbCT zpNfBo0!2HZJTcy`_C6R;kh`k`#3mf!?2SZvAU!c?LAWsziDg;ez(iYB9q#1nj)Xh9 zqBrs&9ks+=kDN;M)+IVL$bvR84LBlN5YaKv5d*apm3ao^!K$ z-u3Im5+|*z-z?W1mWx`+A<0-cvFf&Fz=0X(dGu)sRXvARS+zD{Ob~@X>iS$OhxOxe~ z^igiE2v}9E0F0U&_TyLC5oM2r8@iw{D6|X83$AJ`3fDt8xOzfin5eLbu&l6@te6N~ zL_}6xSXM*?W{mPc!c9;<-k|a@7y~RWY@_SE2Yn=Q6aENb?(mJS;0?M4>?#qq+X;(` z3gcbf=sKey4gMy)24I}1jWjq=7m6mub{$%v*tpRf^qB!n9KAskB1y6d?*=gGW*QEV z26kt&ED>R0oI6|H5%&&0EEN~@MHsLYFgy@~U_Ef-q;65g-3H@rgYi>0xHtexAl!y0 z+6DtsSege_s9>xBCI$C*35rTX5)>Ad6%qXdj>%QfyQ@H0hfrrl!C<+kV%W=J-s@Aw z>-%}I+tm@F^y|!_1&<1Mzh0n?F|FAk&;__o;I~k1A@8Rv4j4Ohg*jDEf(IsgHBX0! z@~Z71>!JOgZNo!w{D6`vj)!_|fs<3~@G0>&5858s@` z*CaPXJmE{T?==YBo6T?yluL*$4F)TRm;#qHxSxE)+b=(*p6qbst3bax6F%B%{#uI7fTD z{YK$5J6QQs)(ymZ6^w=$^g|~+91a*R4Gta+&Uz0}GotlpI7*K07!)K=zAvmsl7(vHzJXDmB zJ_^Hk;29%NUiIkE^W!ErLQYGXt@)GF(W%_IctG%$IDs)6|E*#6&Z9xMdYU;H_UnXH z3OU@(Q{m*=W%SfuOx!!{tt!#JXyfVr83(ikLvnt>Wn!`AHxHiB&JkpPS+0fe)fr1I zv~ksE%E`w;6ll3oDQ91Z`u40Uy>VV6F3uw0ff^%zdfDw!zm)NF%+pWt3>r<6XU_4Q z-miAe#8JIE1tZDWZ2A%TrQl3Wi_fQ74eslyXCK{o);chkR`|Sa@T-}V@41`lMYZii z^HQ4T&VJ`(GK%XuJ}=M!y##{7$BKi9kU#=kdv+08d{Fn}9CQStp;7cuMV=bHofhM= z@AnRiRyE$`fEJ(GN60XK_xRX|;_GuyiCRQ&Gjkn%tTT7A+TdNI={+Y2(f0fH>j5ri z#}ut9s@2Mfj+uJ)r#AbrjTzplWNwHmI3=BV?LkftT=DaZg$7QEYIPRXc^#C>I_#71 zh#HG`KJ|Y8SjITYe##B$AHM3-QR>kCr7IITper{QXvda(B&9f0kSF@nd!Mfd>4(V zACGST(H8=rR^BJvs9Pj3Nvg7$swb{F5nX)NP`^6%(|R>g%FF6J^6_rhV`y%z>2$=N z^1M?SG+dWPT5q@q!xXf1ietR)1nat#$ytc! z*>ctGVh=1gXEJEto4;($a@N(s;4QzGZ^H7b!o`+=IvcU#j57UwRl#i{nbv`9dAqo? z8Ox|*%jwqn{GXqnIUD=Mur!)R>e0$V(QCqm0>$I4re$8wc*zn@pl%D5g0oX;lQuOH}x=( zM_|+?XH^bXTeLUQvzMd-AHVpx0n@@rU*y~{C81o#9m@aFylB<8N7EA172Z`ply& zzdC1kQA%_lB{IKoL2S7ZHM*)~5x|Zy@yw~hd!CDD*EIAbxcGfYOc+n)`7wFF6%)Ow z89wHu%vQD|HY);Dasm#8Ult^+oGeeC7tRe|vSwOsZXOsTPVW9XemgZfV?I>j34K)V z1KagCJ#K?#pS$Q3t+U@(KEjlpKDRGrfA2IVx8_5z&w~P|HlxbNjj?4X2<=&fl}^wR z8&=z1d_U&rS9qDSqw@5Jn36touhJelAxNDeuvx6-y?bjJVX0j_ zLGa--E}p7G&Ft!n5=%2F#x|dJ6IU;EqOo%K2Zaf*CAOrwxhGU|EXdOnyJ9@40v+j= z+dR8_XX(y7aHa1WUe&HJpqmhIyAPXS|A=2V^m^z4k-1Zyhd<&p6~{rP@)EbDvnLoG zKRVc~xLNhp7-ydgdC{@AbnVJu!uVQVC^}!P;@jQ9urB`NSEqv3VFkrRbaTNA&xDfQ zvbrT#0=gT7UO2xe^HXL|t3o^QU7IjFa>V+Ll`>`Dw;Un4he)Tn&!0ZNxAb{Hnf$(M z@_mO?s|%`mO{47<0{QhxG3l43#BaWn``I5cS5}Q1(lE4Z+B==)$grx5T=`~Mu#{<) z`IX$goHaW>@AwzKVotV0_ubN7O-!1(`|R#x$wneuiUUtOMp87M9kI0G?+UYaD~aQn6WOcVuqm`TP`#yay+WaKcad2KYQ#X2|0+ zl}kD;eOaE?WX}zc>r(q#9VNcXS{jBrq%v2$bepe8T3xn@mb@Rl{&py@^tOTEuE$;0 zw9NH4>(|Vu_~r&$9$V_IUDNpZg1vlMm5g%gFd8-T4k!Ngh@;nQm&HkPb1yIN<713@ zZLQi}h0ULpCqGLK2PdV-aGDV>8&UarPZk`0D(H}%`72j;J;BF_#!^%@{HNnKV{I$gsTs_3Z3ds2m1q5b7!8}5jFfjwM@_(CZJ zXH*b}jb6R!eMjNJ#nqqCm#X?I)}*B#POq2CbHz)Iz#%kX#ga2&d}eB2Bqf{Lu!55J zk4!9an(?x)8>8s179!7Ud3sPDT%iDoLA$x7HDhi=h?Etyz5;B=AD_?xUcb{ zig*|-bnWKLnBdRP%bY0p6*7EmxAfzeyFdxHqq zdylW99=wN-(7#7pE#7`|Fltc4-2KV9_D=*oCFg{+Vr zWlyJ=$WNc}`?9K0)&jct*F5Xt)k9Pa#YDY1S$u68W};{NC6z;oxRi$6(uN*>tFFvF zHzYB@i__(g8S~7o;q`kyckp>(tG+mG0sXx$uk;y<_31}vuKAfNSr&g9c!p;ls_q`G zwNUcLzukK3Z8mFMsowR(R`)%3q}lw+-YcFPbQnLS@C_r{0Q2{PKYDd!j^Sgkn!{i^ zQ`hPj@o+}5LZk%E+P8yo6Xn$R7jZPJN{8yX3Ez%%*MvUQCD`p_^+dMIs(GFCw%Q;Y z;%)-npzVM@p>aF|i4?2FoUIr0JmXMPdi1-ApyuG}0Ohh`ZWWE7yLP_p=3kZDOS2MV zk&Cz5?K?jQde&jgT~J@=kXTKD^0XS4Q1O3xASISk6M>Zx<>!5x5W$W(Sd=DV2fcV*7N?Q_#N zI|&q%Z|Cj?VwW@cU+js_k+@pg4oJiy{mPf*p5#^FjlW7SZuMqu;J;b&FkkhAhv~uoQkrqg&%l<7V=LxeNDgxHG<5M3}`FvnzML4z*S;Cmy|r0Qz>FBn%+UD zvFFP>Z{ zy!-WZ>e;e+XTKClUWhI^tb6lu3&uP|C4czc+sO8FLOE!?8`SnAM6dmBIr{oK5LD)p zt?S)#E{vUMnV+3IRkjX`)84B@^;CQvw%+VMdFg1APb)v%zHDXa4pf(<|$+ zgRK(}maP1y(bfYtv0sz3&y$MzwjNFM95b-|2^FO65H1M! z40bT-rLN5py7(Ykp8KL)PG0Fk&xOGEpUotn1)eHci8OS#Bm2+?dzPeZpqIUDdSb#b zMd8}9Ggj`ZLW1+s(}I1E_XY>lTcdOFTLwBJV7U+F(KP(-i&l32xnXbH=tJ~HxO}}c z0)wKn8%7vu>+K?4IipVyt2D2}UUJP(8-=yk!|A%BlM6~QJ$V{rNBz+sSoQB*mRRXw zxYl*!s7(Xg0xjpt;Q8{?_1v>38HyNfUevN2l>9coJiy6hI;y@Fouj}UQ=qu$v6hCJ z_pl2go|;_JGIglTK)vuUdK@x#u)A6_uj|Q|LuNJ+X^#$OKfk4sriFi$u^^Mkk@i}w zf`q%u(UT9Ji!Uepk~-e7Nvi71Y;!B=^fPn`D|0QK$-9(We}!kr^Ek(w*aErN+3zL; zZJPOV?23q16?)6>f5kKN$l!rBAEdlj+dC%KNiZuNVm{^kpoiLIAYkc5gX3CCGi8k1 z__#^S!i{xU*!?%{If@3lO;pFJKGfd~9ef&@GGS#AJCUAl>O)W~feuxi8kA{xe5$#* z(GHg=b*gV*X!+Lk=aBie@hGMGefP*)?(n;Wh!?f>=oIg%OsWkR>8i_b8kJ~C>i3-0 z9qsG!JJ{7j`tp+Ul2|vTVNYPbQ9y+lpKxXf8L7lkyPHeS&+n}H4V9Tlf7x3Gk2dM% ze|uD34;`itp4UX|DB=?ylt@09#ceYzOd zCh{ow&Bd_0GID(n-?ccl7^`RIl=EFZq&#LN^w?Xdvi!2fTQ46{e2ms-@o;xxQB@ZC z6KTlW={JY8okGO@Pu#J5?>Mu2^(INLb1WvZ@RBZxfce#PU(Bm!3iCoa7O$v_OYvu< zgm+vvJNy2q8Ch%6l}FtU%mk@!1um!79zG#DYS7-;z|qz@E-q5x$bhy@S%x2{N%mD6 z`;;17JZnrM9_@G|XW@{In}3VG(g^P*>!~zBA{GC)Y7?FNxgWh$d61|WoA@+w{+Pp1 z{O9EMPe+W8j25``J|!d}Znf^9JJM($GTnS$~%Gr-i*jd>)rG@;P$xW zLl+r`d_vyzT2Jxe)bOwqYn^5h6Y?6lK8q77FCE1RE3?j@PHB_fzbk?%QLt7d!O}AL z&6=_5TD($pUQfsf*Tl&%atcM^8z0hJlwN6lmD(3S)$^tg7O)c5WRer5y1$WB^XYh z4P9$>0aokXdjBqM7YxQrR!GPbEr@_tGzA?{9zy;IFCh^@VIi2jl0R5zc0*#|_DE+} zPX&&tvL_sHS4Ra7a|u0RJug+Hi>p?EH_|vj-^3xn%|XVILrIY|JSeY7)2cNhh?zk{ znxpOIqoBJjX-iR$J!V8(7t-W{4E2+GgG5wMnRmG_tR_we#S zVi0hD4|h+rtiJ*WmMK{PLuermI5r8!O@YHg&k(K(tv`zkiVF%0fPD;KQ4U2?xV*Qc zldO@N#wH06dMUJ)9NM-!)4Hc=AD@hI{5OdaRvAoRGJ%3uQ`zv)W5mj#FT}P?c5r<) zul?=2lhC4k5#gkC%nnbgs*IKE+AgujDV~?SnE35=OJkXDwrf-Ka-~sd^CvHs7$t)b z3LKjf^z-u*^b-?Ac{>Y<$jHbD35yDeiVA@81<)rvF$jMFNw=w(`P?Rr*z4u?6YcWs zs#oOr>qZ8TvVY-N>LI@CZ%jEz(x0zLN0a85cs}r?Cz=zg&qjsRkZ1?*C50!Etjec{ z=>_M_lcr`J3-sD(<6IjHGplmnGr4+USO1~fBkWN=7zGXvkQu%y28^qd6PDA3MGNos zpbL>bu2G6C)u81?VQFERHR|Jwfw!{^_cGk=L=n(hDkU6RS%!@tbHr0LX{GyIpn^Vg zK*b`9JFq9meMn=cvOuJ<+OoYoB-mE^A(nc)MfU(9uB%>Atat z0oWDULEP*6s{fB{JF562dP^*jkYo+KUBQ+JcF#e9Lj=nJ7H_F)uj*}xLSy$Pz&6B= zNDHHjL(+`hftI<88l^ZUd5jMZHtnPRBuj}zquhOGY5D#uK zaWPRjVPOenNnsfgQArI^Wnnc56$xn>WerssWn~E|QDJErP>nT`4yj$y_QZ((NpUYN zoV#i7AJSvI<0}|E{H3&o`*NS%Qlur%iS!z-XC{)_b1LF+MTFfN&TeJ&JvbavXY3}b z8Q3nuHU_j+gOv?7O2Zw2cJXrc---r}v=yz2az}X^0~-q@y`d4-!p-x z0ZJHv1P1;$a;f`!q0m0w*x~^D8|t^6tcJdihdt685R(RxTRa-O_+T(dP;VsC(G214 z165u|Mr?z^Rx)KTq&KEl5hYPn*7KCzU#a<_>s4p-Gs~pc>p1=Km!+4>5 zb@s`lq3Xy{xg5=8`PXJb*DkyUY;95&m63ut+ajwAZSWa`eK<(y+wdAF2ZXyW($g8^ zqQD_8xr1X>A2bG)n-6<2X4xBsNnZ&`PXF-rkOQr*IO@*J^{H950k=5E+VO^pQIecp z*^yT+zW-!1)8te2GRswmV)Z(qe8&ey+3Go{oj zfu(?*r*!cm@zcrYnz6;p)Vxf3Meci=ZW`OfR!%)^y!4WZ$?s%+$w-^)(>&pwGBXDI zx=2-o7Y1tX6J9%6(L}g5_7ThKr5UmTUi1C4B1FVTKzqo|{RzpM4C{Li#*mx1hvha&bs_#gk3@j5AZ-fNn z)lSmiqkw&t68?icc3LtqNoh%OesN(LNx%Vk0vjbIBD(Pu#bP#|VgN58vXMrdAIc?# zeFA$1Y!$$OC%}kHO9*41z?K0RSTgXG%)b+$vu~V}8j<5r!_Mbj(%|;u*z&FJ$3xi% zEQ?aJS#zb0yi-mzGUagd&V+r*QAZP$E6!%0VT%p0x7!yU7`xh1PBCE4$YZp6#tqfO zMtbl?0Dh&6rA4x*-3zYR)lUxrb7H{sLQlXDc*;OeX}}72LX{B%h8TK6)ew^w$5STC zSm%@=pQ3U-qd~X!5tGonXYunwbCb87a&f2={UzRyVGU1s#?cbCSL3b^t-V={diT(3 z7jB3A(A(2wuY5GwnVCIr1%{$Sr{QjWuAcgB`HV5_rLX0%n<{A5*fj~XT) zJdVtp#O+GJd0#EZ{BO?J|DNzV71x6U~1mlpnh>SFZ zm%-+hk%schVDrjILuq7WuxVsOurQ#eJNLzDxOsT0FRq^#vTayARJsh7z6`__FtL!% zg4FyH{F3}q{L=g~{6IZKMEFHS`9;L|fy#n$3?vef;s=ACC`b#2LNF2nRh9tbC8W@R zQ88gTF%>aYRb^>m2{8>ZRTXJ*HA!($S!s1CVNfeki4C2{&Z1=1P!2xO(F~|Z`S`dx z%1TKqYlsQU2+OF8%7}=lX{ZP*tE;N3$f&ETip!{osbTxeMqX`CGzKy_Kk~{*i-}8u zG$60?uky;OdLzNW1dTKQX=ni@$pUNV>U3gfYB3RL_`)8g*fxA&Q-fCnM+64(8|m?u zyNJP**lU9yl(z{AvRT+&;=ek}fvvuygY3q65d{uc4}>#P=$IGM85{FsvL}lj%Qx(_ z*dL;_RaFhWQP9yB1rD^4rV3nJT~$&I*J;ww7zKx?$?EH&Ii^VXwckSdRR;C0@L7u$=XK+7pW*bN&`ZIq6ut_pN_;D zz3-BIZ*t+#$+K&=JiX7;oW4mP3Pc`AREhW_TaM}{kQg=Z{IFnQcw7{SQi&`%J;$nzkbwf*|NFSW<0(S zcARYg2XZ$M^E&g?7|a9)ujAo`>?@tT)8mcTL!Qw*+dk{bc>UZ~$ajuFA-5Z8YnIMuy0@w8FP`b}dwVJX;r6aW>9xv+ zlKxyYDz4s+aPUfm1V^>to+xi{m|D6L7wA7!kP-4FAor5mTViGZeAaBn0U>FtZ$S)U(?>>>I1AutXuz##lZ8V3}R z*v`0((D%w=<*`-wj8haUuszNg%;^ghcUTuAZJ%Agd2U7{y||s>by6VN*O@89w~sAO z){eQ;waRD7s4QQ88iQx(gTH4%@8WF~W$3b^Hf=VSC2x9}F5`#W{6iA&@h`V5)f%kXGF9=lYe)3cu>RpnKX z+tYxv_Yb&#PQ7L3F+GrfGBIvPE&j+=Qozk!wZT^U1M0;!vb?V{scV#9#q7xOPX+#1 z@;^oQI~~@{Won*`*!G*e>MVVwFSBCrQR!>QH0M+Gm|w8st&mSs4(!(A5uD`ul57)r zz2aL{%;KxPxGF4f&cT-rsf3o2WIw!0xOBCUml_f0zE2HH_TT0iTS&C>T>F4#Z{D8k zZw(0T@3k?RFAVOTbPDhP*lH+6YMd?f{Ny!Dhv3({BR_u#F0=PIrzAS^%*MQUsggWn zY&wtie}zdN&J|z1&>eGyL2>rACaAhIH7OhLPaM*J~dp)Y;+-cPUv=7dZ-%4NNtr0WXJ><)2{)6*h)&EDLoxr~HFws|JDsy9Fy%Drh;auUD`fKM9;+$#axrhA% z7BcWG`dA614c^KvclmaDO$psyuTd=)xaWh1_PwN_qfTU74^v-xlGd=3>hFa92h9Es z*_~DgB=Uz3g(J9E4E zsBQqo`gET{BYny`HDS2LmDIgiMvnf*t4ve}&&kphoWB8!ugX2fFm^=UTvKLp!d#%Mkq}c6bZY%VUvbjZeC-ncjLQ1WJ)6XojJ-s}dz^-q1 zgv9HHP#fjT+u@Sq6wW(E^LIo4r6}hvW#MC7+r46^sdU; z9iDvs_xSlQx%g=zm#h3#%EgYy_50sz%)EJ{s{adh0;Xj$qkhKf^~A0uQc|YTo@3L= zQmml^d({ikFL@c}_K@xUYRgD-1Fcayb28^6-zDFd2Sg2Ou@B>@D>k|ho48L!N!NmlHVbUtvdib2EOZ;)f z<^H)Bli)ZLhd9&uz^5==UQ2Tfti{DrpY~KFPabnHNjtoMf6Q)OhSxNb49T-Dr=%$J z4waq$M4HE9eOEOGd?5g?R95g=1^Bjt71tjo{>xXw2y!;w*EQ0e=`NSuIv%ipkkxmiCW=mU+h%L8mw?AR<3#_xgTx4|F*X5z@_v3!_NufZIK}hCNU|}PwVB6 zEXIydN0x~Yoq@ji|{!y(6snYGF_u-Y68en+mkKhdbQ&``#AVx8;B% zJsrUE9JG>QYN8<^4ej{Lv#S}XnphgD!@baWrm5-=*t2zY|^L49_z&*3*XGo+czZHrS-uLO;vQY zRpA^0LPE-3UhYUCAvF^glHkK-Ue+SozMmR z2!ITNju=Op-}Jol|)sC_Tuwnf>SaF|N=F3c<}~lka&*F0f&WS&)qnX%ldRjj2QMKphw4O5+gyxXFq zP+#?M6~U5==vZ#PL5dRedEH-04B`*0OSvmbiGpPS2!L4rWo5z2GX@FPCc$FIhSZ_- zpnZ_eNN+`9d7nBEo-=57tm#tFKt&U#rT`;zB>ufN`$G zWZA`4<+x%F@%AgD8oZ`2;-u3!HC7Xuj=f@kkN5RU1~i~-i~*Y+{BIlFzi3yNWnFF~ z%G9FQhI-$HhS=K)K0WF06?zN4cQ?xoqQ>J z0*XAvQ@d&Xqo&?}pI2Z9dJ=6h9LfsewI`+CcCnm9=|t}qb6sgaj0x?}TDt+w82({n z!@&27<;pj6$;^41rf;rQ=EA-2uiD@w$1K0r?4-+icrEScCV$85=P!iyL-~HwD!Inp zapEb_`N9;gkaku<<{lNvP(9FiQ$XIiRGw%W<)$2r@{#S zyW_uvX655+$L$Qe8TJU*N}CICQkp)v#OOk;Gz`1pL48a6s`vXZ9V#Yt zVgrLWyPRGl5X3}jiH8I3^^FA%F`UaE<_(rlc1s6aDkdAFjhCr?X;tEJ?a}ulpS~<4 z>h^pT?&P~hZ~4iGaX}~KnHVP30pW#oNz2G3v^IXZsI8sgmds1!dyS_;^bS#e{js7X z`Y4W7;R7)6b_WhI)pEYKEW;Z&h%F zNFU)LIViyWHpEe1yP|mTrHfO!jE2T6S5kXm5!h+koLK!({-3J^wm78X^fFtNRi=2S z5lz4hPqa$rWd;U^0rxY{NXwSJ@=fntDpz;)^64FcTPy zeQB}R#e0CB@|J8tU==)F%6v92l(|PuZM5^~ z994d%*?&2;1y=P3Q(Fdh8+MaV6IYZo0^9DO&9}JRs?pz>$o{C=*1OS9Uskp^0g$yM z<=5~#Y)z*1S=kh2&Zxk^D{KvYHB@E|BF5JRpY8r;%vK&(+1=p(+>*9z&*44Q6i)(L zsADmA2T7y5?ut+Rr?K}xHPv5;fTWD)Y4hz8R^cz+wA0MX(Y@?TY1xboCFLvkabbE6 zbrT)$6T-VPXzb*f;u?SjMyLR zsh+Phy?>E3;$VkEQGWEJKhBK)_;$OYF?DdQroHF;Y7m@V`uimZ<-H3QKk=q~bV#Z1 z$lDW?AUPS^>cJL})whW5dOVPivQ6WBc#k3LY ziBns@e8JB?-zyaP$M@!@*~KVciL-KtI`>?;aIWu^>+)#V69;h_2JV&f)kBUazH+d5 z)0lD1?DwJ$U|Mf{!q)FUxX>=r;vFAoR5Yc-bUNV5bO=1?u%k~sj&bI#181B+emAPy zI`Xf&%%7)*zgExx*ha5P=RUH@o2=Q^#7yU&rCwn2B1;;~)yN3iUHL^U6?v>?!O_a& zrws`ioNY!7gucHU|9DOAc}#YcG$Ck`;}p@G8d)2Q=0kPp!QlIHU&Deg)Adt|*N+Jn zi185tz=}LKf?(g@uI9V}Mcag?^| zbi#guoQP93yaJe)*8%Mx(@ZRHkeU9YaQ{6+`^S=YOqaI08W?_mqp$s5r~0Gr{|^=Q z#usK=wnt<4t4q1iwWTMyNr{UhiFWlkQuZx%FG(MR#+B3%~LF7La%YQ;bn6FL#n7s;}@S) zsou#BC+poDOh0MT#)i>z82O>>SR&G*z{F#r?|lFpkdTtvLYGAxv%9C?O#9pp-B!o^ zJWQd)i$A5;hEo1)H?zUh>KI197iXKqnQnhMkQVW@iH|3?L$QXeT<(Ag{e0ZDtg%FNcl}beWG@;tHlv)zL$<v>BHv8^mis8|9dlzE#^%<5r1#W@e4EP&L4`ixxBqu`z-_f zJ2TRaDJ9OQ`pV_R=Tl~dIPVlnahr5W@c6#^Rq@Ve2`A$}ZM=AmYMC9bz=YI({(+ud zeXlIjxx?XVcQbjKkHSPEl`(6qE8)D)J9KkibI>{o{!Z)v&F21v#IUB1*VDZjMR2<* zCob$|{V)!3_H+Knz8B+tf5lVNo(M+GHg7WWoL2mrdt-PQmzP7AE^-ZriPu%h{2m&pCYtyiRI7jw<3GXZjnj#stm7r zy(GXUknm#r!&$ z`@66GrF6G!;Q!DvZr6#OvxyhSyq1-l?}dzT>a;3h&v&!Gw~DClCYW=;*B?7wlm`}r!`UzMANS3T%p zbddN(7ZN^;kBQ9B(JAEU)aUM!m4kegpO4?Qda&1Kq`Z`E^xM(#95qC3T0vZ2BmI@V zrx(Y&*Y3mj5yH#M@o$a%xKjAF`=8HT zt}gOF+03zXkpQS~ymlb}z5EtdMzy)H(Zfr(4vX@;lcue>1;a1RLI>f0yzl-PKz|G& zlgzGkGL0|y>EC*Dxiut~y0EgCT^2)5l>X{Y~QF=1grQSf35RWs1T z=n{FHz6)&8sL^EY~OIZ zN_FVfMvCrqMpqG--tCvAK@VO7S5fM@qoenxtyyYj9-3ceTMwIO0!9$p)cA!J!hkO$ zf7IeTdq1>mQ&WGK8WZdaae+vaoW-NG)OwSV#EMspvzg4Hq~1Vz{f?>~1NFQ<4+yZfXl|4`uEKy()@=^Xv8F?&b7Ep-@-3 zx2-?^=%>Hpd`Bw~vWOjhiR?Ulp|Hh_?45L;vblb~c^~0eb8tvvsl{!n`R1;xKIf}! zUJDg-W>6nUX|ir7+?`2u&-P9jv&2f?=aRL8Z~mo^EYH5~Ki&N{{kCM7S_9tG5;L9J zqN@rq`T}n^4oz(8<+kR-O88f7Vm`+8Tl;=QXij*2qV1L^l%SX)ynLc2=i8Rt|61(d zPjPI>eM>^$1tc$oJsYA(iao@HH-bGK_igi8;d}vbP3awABPvS}AD&sj51mg99 zvq_t-Nx?CtPFxFPT~?H?_t|&twI;dGj(_MZ zV`AK8ms@G%QePS*Orq?oirMqCLF98aK)$%)hC<-+CaGEbBW-XgNgKc#kX>SSy~)cSMLx01`! z?HLz8Ox3BAmqgB-9abM9+Px05Wg{ahJX@G>OHcxR0ICx%hwHF&^g2MN_-`tXKY01f6y-R;d`MR>n$N5(}Qn3eBh^Rl9bl!@H z!MfAMX26@p5+K1o!2@T5EaVp$3SdLr)Y#C5zhel*GKKdQi`9Y&IXQup?%)YIr-gED zVD84o{lJJ~@mApZJ&gnw1G&WA#9(Fn4TNDZFW`Unrx)HZ6#dhvb!;4Yb5DdL^Kk4* zau=nU^qP8~X!!)@`>)8(1{Ag*bzCYmm0FZNuzOIw_uj9l{2~r3WMYU57$g-SA>4x- z_hy4Y?$;p~#NfiFWriR;5AYy_$+5{3T3n?QYQJ^dDADYUA%($O!)eNq^A{gBDxt(q zYPPI~kqy`$&;MlJM30NAHh+Dg;!+Go!Ro2OTbM1yc=4M9CkBr^pYigi=T~qK4}M?w z_14Q9Zv~No94xa@8Rbw(8L&~b~HYi27EB1sPzZ%Fqn(F(|X_3r0a zn;nDQ4jebjrPDZPg35pVKEEo@&|>~k6y2`QV6~Qf!Y>P99X{q6itp5!$vPelYkcYj z=Q(iV5T7CP;*(iU3UP60C}cnK@Y zI9G)Dh_KI9xJu0B30!1vQr%I+Mq5B_vg6t`RXcE-ItAf8ecav4BbRg6FxB*>w=EPo zZ2BNG2bn=a;C2Rl9A{vEY+GH7955mv4y$=4z)iY4_#hvIv6n8=39~({fI^dIFv#t}W@6Hf!~k>TLIl2bq$ldV9XDg} zhf=zmuRW)bP-<-tXE^xzw`GC{+|`(!Ch7jS7F+n)*z)?D^ z)=$Z5-%sfbv^@4kT`8Nm-~{i`=wM~)9q|bSD=!IZ!6=POiq_fY%;Qf5%#Wh0%yP>- zQyLXN&CybpT-a@_JKtwBxsX8fJhy0p;7DXz-MblA9p(Cu`;dSiq(4R*t!1L8YY)D+ zh8QJw*hKGOg2V;o9iZ&)>ioS`s5S%*4qa}bK~5s@@vO|l`zQxZ`4|f2hFRNvAK!No zu9h)17QJegj1+y1<9aPF+_5z)ulV*u!r81S#-0bN@vH~M_XIhcBX3Rx&V{lF4Dc>J zVG}y1MS7*n^9$lk#NGhtdt5-B#21`l`UwZn!3QjQlY`CVWcJS3ufBmMsAwP2D0%*s zlK8qM*Yz)6#S8j|ZBHn4pI;zFWi-MX+t=oD&b2q5qcf4?$xjVWyibA97 z#o9`ASl{`R_lYpd?;1w4QE?T`@8q#cr4Rm}1H>c-ICoH)= z3Ilr8CfIfbUDXbfd1;`R{-Ip#5W@p;1tSMHj?y$1 z-WYnI|NgOI5OA>RpcF8&jd{fnn}j0{gIT8nJT+`L@ZA2FuHfScQwdnx;YYvJh&MbW z;y*$v{yH+Dtwdh+JU#0GHPP$A)aUypCOAn_x+^$|4_ODY(%t>U5@0LSHrbla6pVM@ zpP7R;6M4AL;mgt!4KLvTY{RkqUwDo`%Y=A0?-fJ+$Vn~5c}4?{L;Hks*e9+km}AMY zbtYK)S$@nSqnGvCS^ycWeDJDErgB8XN_WY`A;G=42QZ&khknoX{9pKc|HmB019o*3o|c#K&k~kf z3O+rfG^!JQgNpg4g<{*qaoqIsZ`1b=%RbOOR{llPx0>O<@LRvlZT+u&(Es<&;xoQGd*c?G8|zK4#-4OeEReMjRX4I-B(K9cFX2VphA`lm+~*npedD1AC&F);UUakJnwIC za%!&%O_^?=eMy1#-Ia__JvP(fua}jp`Di~8YloeDrF^T)&w=!nOYt$pDh-M&>I^=S zg&5wK+P2DI;G_S4=6F8f*6GMaE`w*qmZB3%h7Ff5MGE28$rS%v{^)<{asHRi;Yr%h zpE*-@JoFGb%d76}JY0=_>yYeIC2J-giYhbok+8QJc!NK6Apf5o#Q)i$```89e*N-^ zXgcKSgXu{wloFnTXEGi}GIvi7$AqQ{a1;htL>l|%rprH`nSJ)+seSmtHbWX??SKdD zO~Q#4yIU2nwQ0ZXyz@CruIrz61s@wm+C4mf*~%faW0$M{h@K_pvxk!*dD;NaIsI)x_BPB9l$%$KSxvQsZd+N)Z%D$N_K zNId3Q$oeE7l^%9Cp?&_}^)mmD`EKly*&OFV%~qQwX1-P4a%kC}4+)Mb1s zs!{o5hR)JcZI_tbkfYBt+9HoscBQ>zt$Q`}Gfy$&52z}uwU@(U{^4#>S zcAVroj?5yN47t+i9<;7+bLMIm^V?_c4_p`@E<#e2;~Y?o-pqa*O?EqL$v9363`{94>LiElA2* zh8*g&dOH1UfA-Zu$8uw)%fjMhcyBJ+RA1nb0&{|I=mvR+KQ)7vV#W>lX$c`9t0rP97rAfvdav#GO$m zziJxc$XL6qI^Sygli?db`G3nD{6FH){fE!>f5F50cmL^s^pIZqsqix!P28A%UL1OMcgwufvBL*m zxU`as-iv*8I>ziE-+1Fxce!e>+bx`jcTkm4x~3QLwUHlr(sb8t{jGRK+dj9c@AvEx zXj*>n5)6wok-8LmvrHzmQ+%;4M-|n3a$nxH`8+9=u}7NA7en_(AFjM&`$U3*alj-l3bOl&&X} z8vmpJb%Vf=dQZE zW@CxV{@*)apPkE0i($RB>{xT+QAE_Y$Bp7&bH0X)w&pf9bH;fRej4qkdVAv8I(5Q5 zrPpk?Ne=uyXYKzhzS;j)S2>#(*1* zg}`nEjP5_AfWuT_#$ZJnS{%fdu(7E@1jC6$O&FEx)aFs#HNt&YoRF90Vjv2>`nCwRVkyh3RicNNjx8_axOCtAfYGRen?}6F}`Vh4$o}P!Nec$!rB|e zi!++b2U>Rb)@Hs7VkhE_z1XiC*pMwyE}&%yhi_5(OGqd}JJ#csvd&|vCe->P+yil0 z2fDsq;5#A5-64@kIij$evtm%L%uLFn}d)ctWsmx1i#QEXajLBopi+a~C=U+B3 zZ_tR~JjheYqPA5G`1gx64qo11VG+j=V8tNMa{xXAV0S-^7lema#^~+cAQ=2VL;!mO zX#p7e=bZG;8!)ssMsL3XAB12>4^Kys1`?o`qlY5|KLc>MuMf0Tji(FXbH1)fKLED^ zn9JSA!xg~LHWs}H@S+En-=I}DE)3Ga1;D}pCigZmQU$O)Seqqx#=>=ud=UlG@m!TN z+4raUFPWZ8SbXBgwuhB%?-1YWX!>GiQXsimEzZJ0uMET((kaIEhNfwQigFymEYqh~ zap}n{2&oNn_S;Bfz)~HqFe!RO388YH>y#BZY`ht7ri;i+0_dn%%h)Hpd zEbx-WMXyKe2T=Oj*B*WtK4*7(B4PU4>Tz|#0~*8UkNNZ7oxH;>P&dlZg7d|euEAZB;0+{&28STQ zf)gMFLU0WPceel`Bsc_zG(~U;8iEIXmD6{0=bdxdb(nm4)O#UpVtme*fes7g{cw!}pbH|LlXPP5?v<_t0!0^{L=2y+2Vt@a?6FOTT;r z*+b=pB$KFjHS`bD20%`VCG&o<8*av8Dp{F*Xqj)ciY~nY`Wi*Q+>T!9&c78V{-JgG zvo!2av;Ua#uMGP{fO0hv;a=^qZOCR`DiI10dMS2OE@b=^m8@q_g3qzgVcaRMNSg3Y zQG(&1d~4$-W;@A`Z;_xF9X0-0`z@ZJdx-O|0VEbY0D=(`0C;x@03pT(fX%YeJwX2O zEpY?Am?-t_3ag5%mAiYH)6})g`D#xzIz$iUZ_2(1`WBc5wtl8;bZ$DH@ZqrAPFAV|g!ATxz@3a~UzIo|xJ?dJ!H203#svjv|nH4r}5fDFGnIFZX z&-8A`xk8T3v?>bB>+@mEdD#ER_>DNvJ)hxUP^GTN7^~bs?Ho>oSNa$M5zyVjc{}Zd zD8*YV=n$=-f0rKV>F)KLuaF-HD7xw~KDsnI1-eu^6M!9EmbdNUfhz~9F>=t`%p#vI zy@t8s(_VJC-o#11N;HOfCxYgARdqeNC)Hq@&P4)N;p~!7wGD-a3C&_7)Sx61F`@)fdW7=pbSt6s0q{u8UrnXwm@f~C(s`l3XB0J0Mmgl z%`Z~3LWxziRmB9lb1O_os~l=@_i0uG3$Z+ihR!02m)4^C8@|oq(KGe+Gf}=SAHveN z&53jS#DTwn>X2G|08 z2kZxq0e=N90XKmMz;h57gaaZ0(STS%ydX501JVH91^oiD1-XHIL1Cchpj1#Es2tP? zdIuT=O@S6c+n{4G0E`VrfEmEtU@@>l89wvZ*S6KnMGv#&A57J-y_^N>fK9+QV0UmJ zI2xP`&I4D1Tfx2H3GgC#2mBoZgAhaLA>0s2h$`eB1PO721VWxc(jmo=M#u-q1Y`-a z54ncoLaA#>YX_FQ`HKae#ashOI`pNMBQRDj@na|mV#ZsjBFz*xJKdqq3tlZqA8Bp}~UCs{cIP&Y12&Z*W=PN)P_ z4Qd3ng?d9HpvlleXalqxIt5*Wp1@!*1dI(P3R8s{!ydx?V9#J#uqs$5Yz(#nJBGvI z6mU-XBusv%0z*FAk?mTd;T{nAA}z-(*5XU|L~5#*D+v z$85zM!Cb?$gV^4dj>^RI+$#DI#y0PZ44zaPZ8L`E&^|0-+gRoPvtFimAm$1L% z5aDp(DBzgkc;Y2rvm)2^0wK69f`u5VR1?5F8WMt%c$4t0bHt z9<*{itD5zCPZ8RcR!SB|CBl-LUS>AVGnbk%5*`Xi4DP?QNnmW2+^fv;7!Q6v+1c|5 z^ZnWjiwEAztGH81Cq?VTg!~z1%-`ZKc}Y&jX*aaw(%(*cKrb!8pu60)CRkXFes z#7=F#(vg0qB1i_O*dg-h@!)uJ(Tg}RC6Z{@;2c;rCDb8wB78N~A<& zMHEK#n&>^z3Ne_NiCBRcNgPU?PuxwsMgk*YBT*xHND@O*LGqDgpOlDHh}3}8hctt< zopccaMzA8(5RQmAL@i<(aZW}~2mWW25K0b8JxXuNY|3uR9V!wkNh%~&G*vCtEH#Ll zgIb^3kNP$B5cM$)EsY9|D@_{Bdzu|u1g#wHL)t{z4%$sRVmcW*d%8rrw{%U32E~b5EI%X|qf95jgSr$wdF%~Io!&+HOc|v5azJs$lw^^1aX%7C2RE5%9t)<*y!vD^*WBUIb;t= zZRe*MZSXfqwvTMuWSzD?-4>3RZpklc37*SBZs4eoW+mvFhak4UXm#$Kni3CObX(niy1r- zY!>_`#3^Jglr8j0m{?d#I8wMv_)0`n#9gFPWK)z`)KWB4bViIsOjqogSf4ml{I>WL z@iy`A5+V|hBx)tTN^(m&NR~=|kz$jwmdck}k!F-0?iSc})~p$#3kBtV6|u+Pdtuxb zOMYKES9(!~UdB@9mCT|ngY13TJlSPACOIp)Lb(n3Tk;R(%jNfO^WAp8-EjLS>7G)$(!4UGvaNEN^1h0&il0iSDpXZN^@Zw;8jTuKtwe2KT~s{) ze=oo2q)vU(oWby;wJg&lL1sfRukir;OF%7Rs&e8zx%vkU9F02~=^D$L9GdQ$ty&;0 zb*-0LbJ{H0&e}~n039`*mpY$y*>v4>-{`^gboDay*7f=I{q=kA5Z|%5Q+ns*?(MsA zcTxA)?|I(qGQc-5Gbk}QHB>ZAFkCd^H3~2qG^RARH*Pk8n;4iBnjD)dnI@U8nF*Uk zm`(q}_KVLi`GQ7Z%YqrV!^O|@N2O%;WW`;qb5*Nt2dYR@d;ggyK-FAL?7%<|e8qGL z)lP5xA@#U29P_KKdp!N-l;)1+?H2eJ_buuyp_Yc0rIwfXb?)cgKYpP0AoIaKQURHQ z+_sXlO0?RvmbOl?-msCjNwE21D{cGIcGFJQF4=C!Uco-y{@X*V9dsOu9Bv#9 z9jlx$oGhJMoQa$roIi+bH&77!wIu|O+8ttRT2U1Hg`>KwD_AT&( z_#yqe{2Ba%{g(pd19Ag_fe!+^o-jQLd$Ja!5>yf^9Ksip5ONf17}|>IF+T|% z5D2|pVjV^k78JG;t`c4rffwN(F%u~nne!C#)c)zmD8Z<-sOxB}=z$o%nB7n`VC~bycGx@eBiiPLDP=FK; zEQ%}SQGw%iJ4`7tbs=)w-yt(XRWmz8XDv(4Ju#JEW5na6cfQ(i!Xc0C7edO&VpC&p zp4&YC7$*{!9S@6lj-P%Z`=U63Fu^xr<)zlk#zgwW=)|KWi=_T!q2!zttQ60b#Z=AI z<}~KC__WJ(yY#7y+Zk1v)R|G4r&(56|cG#RmpA4W6eu`4SVhN zdOhDDzqdfFprnwpFsAUT$hl~-Sie{|bofJwXh}&ab!l7~sLZo$v)rtFv_i3>xstmw zw+c}eQw^y0tlp}zteLLWsO_o~tE;SMsn2X6ZisFKHa>3LZ?bDzY&LElYf*3MYL#ql zc*FCisEwg5qn)%pt^=zhtmEdb@7v=}*Up`Hw(nNDEV@wdjowdw(EISQTcf+LN4e*H zuYB*@KIy);eu@5;0kMImL6O16A>pBhVd3G1k0Ku%M?^=ON5w~5$E3zO#%0IfO(;(E zOsY)|PHDe#BfMn~U&jh~)%aq>aA&)xmg6M4{(`z6gA2+f?2h-7?);+jiZ)*ooLB+|Ar$->d&B_jPFBXn*aS`?s5e zXNMGrMMpwMUB|k|^CwOx7pKu@6y|i&pFNca$=qb7^<+lw3yly)D-_{=M#UPQ6@M4| z-g|C%zH#Aw3BOFex^>lht#Lhf-cYRwB6sKE(PlKl#2P+0DFfgH2dSE{l(YgHK9MOiW5lOiuV4^7J2vf6hPs+wiBq zNHhJx9Wjyx=T&j9jB}_6DyhNV(^Oj|(;$kVTTw)PcjUf*QCrFKPD%^2pX+WoG>jY* z6ZbNq=ta9Wz>}1~VY_7O?o$%@QQK3hD?Goy!tk&;=*O%e! zFbrF~c{3HyFxmO{`fsdBWyFXeXusVUiJ=0)FGzk6SMT)4_63QO;M_te_4fsI#0a$#f7^!f?ge@Z01-xfA_gI{eQOt~Rs zChV4^lKbmpnB|$$vdd~Gw$JmFFns3bOCLGtU3W&#G~0X4_02LX)z4CD{lXSw(>ny( zs_+B9i66Z2PUWk^>3`$hA;6s8!SC-z$*|FkpnbTo&aStXv4l|J_V3OKI|?4qC)&5T zu*XQtcrFu6vs-M{zxp|qG1oz17CVYGWe;M`tsfAy^d;VNrWHATfGV+G)s#H)v!u&2 zece>T!=85>vYe0VTTvQpDz|RQ*zWE3lgl#we~?j<;;1M>4kJ^LGp{s~lEt6D#OZbY zjD7b`!1-)%6vDoaoa{~fbi>hjv3uCER{`S`w4@CPyef!CikhF%)TR@@W{Fc zwa&VCgBdAuFPReEKO~a`G;1zn3)+f5Xgb1gqVnS=;L$8|%3 zPKUb7uN%+CL&s6O6iCX`JNnB#y4kq!85ZI{<(-IS$?qQTu?a;>RidHpIJC2&Vt^0^<1&nPF`*5Ys;{+P^a8EJm$V6yoBPI*L7-wbW*^>eg1;&n~1N3CG{S?*d0 zipwqj>t|Y*5piILNB>F>1N1{fvidGpOhshhys4+FqMmNI#%#z(&Dz$Rs$t)n7#aE6lJVY zMrvxP{qp0E1>KqR_Dn2z(7syg{r!5!#xgBNI%(%Jeyuz;eBb)`Z4=hPdDfZN-ft9G?p_E!KbFt>Dd7MDD?uUiNIF^X%((8n z#H8dH$FYsNJfp_#fU}8-PNUReYRLGyzFIW^+0U&35J(SIZO1cw3%3f;H!HSa@uN45 zZjg+{qv|-tJ9?tM0uj&$()47y4QpD`I~fnBJB9Sr=oAd^?io0Gk}pz~TU$>w`Gs1= z;SPpxTA1u?rirVRHfE#(u6!e4zarm?{B^c$oqz11Y{QlQ0f1`>6>J4G@6fQ!pLRt( zNa70pBydMV36}$L$)`C(U98wYH!1(k@;0wScDU8fE#A5=mQ)ipa@O@g%;!0=B8N}T zkKmDmn#!f6qHLrEQwCd~76XQyM^%o~5yW;|T*TOXwj~jtc1H61a-(DbU zIPXbjhl<5Y5#6Opa!M3snY0o0M&|z`p%$qPdf^(c{R%m{B+;6q^IyW7aoWD( z8o2ha&hZhje(iYc%*_a!GS^~Hq6MUt{t1>OlztO8QoJz2R3aOX-AsAvFk)fqACch4 z^dT`o2cuU5Szg_YK)>`#e~~`6^Pli!R|@!9IF>M_vATKgYnO!pttP3k_roSUR_B#7 z%l?LXvu6{k^5{jHgNb6%DLRGY6gm^b6{OxeVe!GQT(vg6bSmnID_MOKo|Ypb7*-4= zjMpbTVFtI0kqYxS{~DI|?;+CuKXJ0;(koFD25)4Sl_p@wwDx0>puw6roCPPEM*j`b zfZ$S%*K>fCrPkm~oMJ=&r3*n~Q^8Qmla1~-Hh3%zh~;TxZ!XDKgmg+5?Iv?KfI|dt zS(LIyF&Y;`?PiKT`k5I+Q(&oqrQ+ju-!h_bO^O`M)Z3RESQg#M^jmUTa~%TZ%%qmN zE%~dj&Ky#pJ1Pcso++Tq>>=+k@$RPvIIyjE-<_0EMO9y|+aBtP4zDs$8P5okh%8Nyprj0?Z{~^Sfgd0thmAS?6C_C>zK(z9fCs|@=ZQ+|< z-5@W=%`%0dQwyz$3%(#zzVB)xJF>W}t<N4Tw)Xs*;18}Kv*DtqP56H! z!e;OfFxg+izCsVynPKuFEYDe9{bD{qcS^)`xfa>AK+2iIZgz#@D@b)qBW}B9}g&#^#`Hxw$Tt8r0hZ4THZCV0{C! zBE*llzc}2!W=!y7FA+D6bJ!A8U4M2)~kEXe&Ji8#ooQ1IFcahy6{YU*i?`ENlz@MTqQYB1{0YHT{Z| zHClnNoxMgXT(z%k#!qz{gW`!zy|afWaTT&?NSscJ2_O@eNoaY~lseH@vFsPnnYn(E zy1x;0a=r6Hwx6XKXW|u?U69cKatMr(eZsb89HmNA@0tOz%*i;PY*~7Ji|Lu~+V>>e zf-V6CDyhc>);;^98frE{LOzdQ{mzK}>u}e96|6NMw}KnRCV(q|M|JU#rG p#>P)ZukR>aXUHbhd=A=V-t`Z`!Ij}lnlGG?9acRS{Z|pP{{y|5*A4&x literal 0 HcmV?d00001