From 34cd913216d78e6ced9a32113c9212d3e7ffa765 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 26 Feb 2015 21:52:16 +0100 Subject: [PATCH] TMI-99: JPEGImageReader does not ignore incorrect color RGB profile for CMYK data --- .../imageio/plugins/jpeg/JPEGImageReader.java | 18 ++++++++------ .../plugins/jpeg/JPEGImageReaderTest.java | 23 ++++++++++++++++++ .../jfif-cmyk-invalid-icc-profile-srgb.jpg | Bin 0 -> 56060 bytes 3 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 imageio/imageio-jpeg/src/test/resources/jpeg/jfif-cmyk-invalid-icc-profile-srgb.jpg 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 33a3766a..94a08464 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 @@ -226,14 +226,14 @@ public class JPEGImageReader extends ImageReaderBase { ICC_Profile profile = getEmbeddedICCProfile(false); if (csType == JPEGColorSpace.CMYK || csType == JPEGColorSpace.YCCK) { - if (profile != null) { + if (profile != null && profile.getNumComponents() == 4) { typeList.add(ImageTypeSpecifiers.createInterleaved(ColorSpaces.createColorSpace(profile), new int[] {3, 2, 1, 0}, DataBuffer.TYPE_BYTE, false, false)); } typeList.add(ImageTypeSpecifiers.createInterleaved(ColorSpaces.getColorSpace(ColorSpaces.CS_GENERIC_CMYK), new int[] {3, 2, 1, 0}, DataBuffer.TYPE_BYTE, false, false)); } else if (csType == JPEGColorSpace.YCbCr || csType == JPEGColorSpace.RGB) { - if (profile != null) { + if (profile != null && profile.getNumComponents() == 3) { typeList.add(ImageTypeSpecifiers.createInterleaved(ColorSpaces.createColorSpace(profile), new int[] {0, 1, 2}, DataBuffer.TYPE_BYTE, false, false)); } } @@ -246,8 +246,8 @@ public class JPEGImageReader extends ImageReaderBase { ImageTypeSpecifiers.createFromBufferedImageType(BufferedImage.TYPE_4BYTE_ABGR_PRE) )); - if (profile != null) { - typeList.add(ImageTypeSpecifiers.createInterleaved(ColorSpaces.createColorSpace(profile), new int[] {0, 1, 2, 3}, DataBuffer.TYPE_BYTE, false, false)); + if (profile != null && profile.getNumComponents() == 3) { + typeList.add(ImageTypeSpecifiers.createInterleaved(ColorSpaces.createColorSpace(profile), new int[] {0, 1, 2, 3}, DataBuffer.TYPE_BYTE, true, false)); } } @@ -274,10 +274,8 @@ public class JPEGImageReader extends ImageReaderBase { // Create based on embedded profile if exists, or create from "Generic CMYK" ICC_Profile profile = getEmbeddedICCProfile(false); - if (profile != null) { - return ImageTypeSpecifiers.createInterleaved(ColorSpaces.createColorSpace(profile), new int[]{ - 3, 2, 1, 0 - }, DataBuffer.TYPE_BYTE, false, false); + if (profile != null && profile.getNumComponents() == 4) { + return ImageTypeSpecifiers.createInterleaved(ColorSpaces.createColorSpace(profile), new int[]{3, 2, 1, 0}, DataBuffer.TYPE_BYTE, false, false); } return ImageTypeSpecifiers.createInterleaved(ColorSpaces.getColorSpace(ColorSpaces.CS_GENERIC_CMYK), new int[] {3, 2, 1, 0}, DataBuffer.TYPE_BYTE, false, false); @@ -385,6 +383,10 @@ public class JPEGImageReader extends ImageReaderBase { "Ignoring ICC profile, assuming source color space %s.", intendedCS.getNumComponents(), startOfFrame.marker & 0xf, startOfFrame.componentsInFrame(), csType )); + + if (csType == JPEGColorSpace.CMYK && image.getColorModel().getColorSpace().getType() != ColorSpace.TYPE_CMYK) { + convert = new ColorConvertOp(ColorSpaces.getColorSpace(ColorSpaces.CS_GENERIC_CMYK), image.getColorModel().getColorSpace(), null); + } } } // NOTE: Avoid using CCOp if same color space, as it's more compatible that way 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 169d7bbe..5ac66430 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 @@ -271,6 +271,29 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTestCaseS-Z5u|Ep0tN&GQ3<_62!tjb5{ic2#0Clo2ncMt(vv`t5|Cb` z2na|Cy-V*X2qNW+d!KvV=iGbG+28Zr*Z2M7%;!lmW?5^FImVb{{^nS7Kdx?` zCyqP26iBM#y8G_m}d z|?rLxCL8M<0X?`2zT~8ui_M;s2$F=W&r~h=Vr@bxl ze$?Z{a$0XMdtzVIKjiY%$MeUvG(X1AWP2C&gMLD!Wo(_SiEU_Vh_uKb{1Yhv;P&_- zKy}D%X$e_rX;Dd02_734Yg;6bhpn~CkGuYFrysidHmW#m78 zC;)2UEWiYu2QC17z$HKwkOX7^c|Zw(02+WUU<8-~mVhnb1h@hyzy}Bf9s;321n>fg z2a2IW&qy?nqq>ZGVqy*Aw z(pA!3GJuSRjD_qXnJC#cvfE_3WN&VQwdWk zQ0Y=xQ+ZN_QYBFpP}NiQQO#5BpQ1U%eM<6_$|?9Mw^NT!C7i;Xsyo$pYVp+f)8|eL zoR&MSd)n@_-|6Vn*{7>c_ne+T{hgYgT8LVK+K3uK{gC=MY8-V7^*Hqx8X6j28d(~B z8fTgZG{4cjp?Oa;L-UQ6ffhu2o7SAxi#CcjkG6q!g!T&^9i1SZ5*?h*lP-!5P4|v& zl5YPD;~B9t>SyfE1fNMcQ+}rJ%*NT%X9dpQJZpK@|7^n9(z88h*Up_jCwT7mIqP%x z&!wEJJU4W1m!6Scf?k*2mHs(BhQ6JCiGhkikO9JA$MA$9i{Tx^Cq^mAqH1(pj+7Z4X-UZ}gU z%+1KH$nDJilDnRJg@>8vCXWlxZ#>OBTNgPms$KND`1)e^#qYdAyindpyhXedeAIl` z_#F6N@-^{o@pJQQ^9S-{`9}p#3tSU$5=azi6W9|J5`+mp6|4|k5@Hil7xEXv3XNZ) zyL98yy-S&w1};-xzIGXTIqmXC5Ge=@ass7*dW1=ZrG=e^(}a6PC`4pM+(a@(hD2#a zZ;E=0Vnt`fSj4o%9*I?mZHV)W!^LC7+r*ErfUme*$-Xis!62a_@kpXd; zazKhsN<}JI>aEoFRpG1lSJST!gBiiv;HTgw@R78PG)fvLy)45ob4MmsX6PEzHN9)k zuf3P0ki8`vEL$V{O-@?QQ?5jAQ(jaaDUXp~x-N9x{(AQHPYS#W)(Wo`rWJVpcS9H; zP)IUlQiWH=Q3b2Ar3zLJP;F47P}5Y4Q5#a{Qnyt{t8Zz@Xas3AYtm{OY9?#WYJs#+ zT2y=r|*eLejY{RIOFgFu5eLqGb6n9{EFn12Eb*(e4cWu;dQf;+URB()QTz0zQl;E`HeA_wMc^jdI$Uy8Nb&+|<6Bn3Ek?Sef zJFb;(3~orbX7>y3zV5wuh3|&moxUe`FaF*ZN)wgqLE>TI@z#@xxWIhyy5tq&HRG-5 zo#MUkW9(DvOYiIE`@s+77v{Ieg{X#LL(hbwLWiEpKh1bX{>=GVcbHUI zQrL00U3f>tm579h!{@foJ0c|_e~Ubca)|1VmX1z;LHWY%#bC^hnEY7!SpV2haoTa^ zFL_>uzubwpif>Q2nvju5o#>S~{hQWrZyDjHh4my`THzM~a&n<5{-ypvkErUj5 zI5E*!Qmhwtxxl>OW1({4TbwBFbrDNZ#2es^*PE5%JH>+~nk7x8*Gh3^0%fUqMtpcV zNx5J7R)tf=^jp)ny_Fi3O;z$$_-e80yqb$ODYeYC(RI{yPwGzU{p)ud?l!D7IyQc4 zvT7Q8XYy{KS--ivMYH97t4iy;wwrDB?-kzHw9ByQRC! zdt`dvew6)K)qB0SuJ1-)W505L>wx+|CqakMI|v;d9x@-A9=01^8gUuf9`zpmKK5Xo zVmy4}+(g18=Va#8<*A}+>FL@T<(Ut&hO=XzY(K5edCVQoKUtt#NLb`vL@!A$)hw$l ze_SzJnP0uT`h6{Qoqj!a$aO_3QV& z@cr}q`QNU6Yde4)EPnSnq&ocV=<-q3vF7pkiR;P9pRkD-5ti`$#3jo14%S{So;*JQ z%WZcTcP|u=;azK6dmd4qA0Xxr0P(-}{S&9yBmqE02mr8+{wyPQqxVNwf8e&?=|ADi zzhi^+=XGQ(06->1M6cOD%iJ>o;My*+{Dp_JBhQa3ZyOl#{7DX?2KEm2D0?^JP>r4K zeVpAKiQ{*(bM|z0cjIw(`+?qmis|oq{$I%a&9~@b`{H`6;4<0?-QJ&6Tt|B~=SFXqcfQN&WiilOH&eG7Frlmj2z(9YN zo}Q6~la-N)otd7V?IIgH7Z*1-HzO-AKko&8&I{ZZP8tBFQzSbi>*TlT0d0D~lpfHe z2Tqy+E+YIVB?7TOsf_9r3FT>0atbnHwdpy4gp7oojEat$mXi2O+;)(Vl93Zxpg(m{ zf`Rp>zVXXGMm8xKs5QzfCce0|pNWN6^6IU7594}IGlQkC85ntZ#=b7$yKVERaf@HT z&@NLjt4V14WE40xyJmz{***SQV0F#0S4y@_N3){EWUyRUA6bCb^*Qk97ds33pFK_q zpZn(HcepB}M)&Wo|E7_D3;f?^_V3B{ZlGT6jaLPlZ^Ewoy?#kCbfrm!d||igeDZt-dwd1kcUQ|3fNRiyk@-(F zY1^Ge1Tt$Du4~k92)^R_;CB@Df8Z-8`=eB`6*qN6udMS`+BH~PQ|68ib!DDUhgk4q z)8!`*x1-Amo7)qPxO-%uxLvVRpQ?Jyr*-yaN0XQK6XFP02fDO4?)+uONUE$aoS&@G zsR<6lburvPXDVVa_T!BjE#G>4f*&%1Ey+iNkflEB9E}zm@KdEKxhReK_Lw~OqQkq% z#$q=1gm)a3`wL%;v2vMMXJ>2efn8nQ2XWv3qe=TD`&QBYO_bb z4Qh(5Hi|9e)^_b1U|ge^EOdO>*WAw_^G9)_9|~$bvNvIdBOknVlMKz?j&_4L*L0U| z%c*{vm}-gu51ixoPFqSBC4k8+wrn6H{2j@oll-F_v~ebK9CtS?#@;5naZs+A-uk4~qw|i|{$reW8a^kRG_8#)GKnM{0jjLPR-|{7RKbh9$2_h84U^bi}+9 zRMly8oP*O=@ij{yfL<133V96@Qo<7Xd9@diX9n?_f_F9EkQ%hr<=m-oHPaZ!uM`GYmLo=2 zDveDSlg9Gi?~Y<#?Q!jJXRawouTx2Rek|p3SmyGV-Ty`$V-p;7_o$=U1&i-{s?wG17M^UMd*2r>3B8Sj@t6umi7eZM4Uo+qztwdlc{G2AuXP*a^7X?SHDtJ7UpZ@>v9@+GC4lYeYjW3NY zyO`-~QuMx#10~Tzao8B}F56Iq!*Y8u*ww-;iqqn>IE4+Afd5c>(Puvj(r)jwB6AFT zyv!3Rd~Yz0rhvJ4&D17+52l)S9r0|TPo=7=EUXRfBWi&yvO#jOl!&Yd3wGs|x{R7Q zUs}#`(Yr}QUl92$iBF%==AumhJEn6bY3Z7xF-pFc3Qf?QA$H0vd{gopK(~JHmz~TG8 zi*0fOQDd1n<$bCC4d#F~tIGGpRi&}hm&5d_^zMX5uYIX2e?HPIb#g}vR3Y}gps%KqgM0QR(hK3(cW6fV z z@lbDcVJ>-4V4oqcw-P0P6q*(>Xfrf%9>nK{>QxZbinCmttv&#W59p4bo}!#cb;~PR z5nS<1IFiq|NS>R-WSkK=@XPyeGClXGL)#-f{8kthL=r0j=0tioP=QY>uCA3$`828pB z%&Y2^F7bHw%ZKPogV9a%<}r*RP?7-`mUk)Kv~FBnqb12B7Y0`1@ft~T7%%0C_q7}3 zI^@c?8ZD3v37f;)raP7L;vphQb|tmm)yIrAs73Z-_TlE$Z>D~(FcBBjt{lk7+coDQ zvk!e!y zqp@J8Nol`r46(PrQ95+(C#t(E6v(-*?HQ=4zLJb^$fbMpue+-z2`W3=WNguiu4Be) z#uvG?RlY`!;nL$Cwl^;`OKs`bAhdjM_%J;BaOefS0EN1CFj*8tL@#?!Wr;~XS)Pf| zt??-e7-PZ8^R~vxElP}HK>bKqWO3&FjPTnREFp}%N}!d;JijwS4G4E9537AY0q&*v zt|9KD-G?RWREi_J2v^6f*zZ+JPJk6(errt(uW)w7o)<=&RuyIDOo--Mz8zZ3~0%`eYtnf2$vc0dSX_RWHw*Kug>T*?rA0 z;XdMR%Gxot_j9X_TW)c;AT!ID#md))gSY0rJz56{j6+Wwt(I~=f6U?>^B4K;?!hiB zc(qJ_!(}Bb4OdQ?*9@JB3EQnirw`~sKRnykR12pi1yifDJpqG3vPx!|J>vx^kbKQ(G}U{SX}9)B=l2IZiDCT zoARNZMNepJz(z}*D%vP}cn?+H+!hFxY#F8jGcI0p24CPikFN6iTvVCU4t2gzb?_wO z2sfkLiMUKPEBY~Eb5Im2Z2n!+F*tM`%W#~P__0Pvr3~7pA);5kULqRCn_K&mUZ~2Z ziykzbTvg+I)HQ7pz)V7cvCDmxy+nYHK4|>gH2*o8|Bm`a7+%_3tm@0u_1kZ7ctxjG zjq+=pn*)(Bnd%jU?ES2%>cPMSe1)o`YPuIg7PH~QYp@lqE=MMJWmc)Pu4DcBvE^Nv zvEDMfbIR?J2jhjh1zd>IOUnh{<&qyo3ASi!Gg^m)6&E1*;9)zw7wxR0u36hjfH^o_ zRU{Z6<|pxTCX}s$TxnEt>q=mnhK9nqNvrrx)J7_H2a~T5_hI+Jp9Dkl#U1?Aeo~&Y z{9So|W?|{7jY-}km4#@;0kd@GIz-uU8<&$;n4J)dW9cF<9IuVi)_B@iZ9Gqes4K## zmcoSakD2iTk9;R$i`$nW+8Qa$%zB(deO45%<^r{+2M+MAJ$hj|wT>{h5g2mMu=J#6431-5XF0I#a z!LM2%*^55oa;Bm5rwbSk{?+{XeT3A%#Hq605fz$Vt12wp<{hq;YQ=Q2hw+9$!ThC| z++YofqGOxe4c}#jDnRS36<2efqIymr)Sk*QJLL62e|6v(-h-c(5ids?o5rxh-;wgp z)oYHooB&SZ$%4uadU#5uKdFjH2GS~3Nek>(#SbC2400fJb^(dJ2v0X{*8tXsT^3Gx zc`hSm3HTInh8cr8Ejo4^@5`C0@pS6l_X#(1J)dAdyky^L z^nBVX@1fyCo%B0yg2Tgk_s~UjiIt(RD`F!C;@(KImeM zq^CP#ZlUO7K5XT!KrT8q-FHyd7FE1vQD`)f?|Ix(mR}eFN+6UXvM`z0khuOX_Jt9) zxh|Y;4#{#x%*KO%7{Y(a{*p}_ZSF_wF%rTdMR9CHV|A9@hCVK|{h?*p!6rgsiqK)Q znx(!WT;yOdA6pWibOcH&+BJO1w(D|yqt$Ez=@#FWJebCYJ$Q~PuJ6sKn?A^m`Y*$1 z%5@?|m^Z4|pHgJY;mT1BOVE}#qq9v>MPwO@xidv2}ozx4i(1($zDNq>5(M>yw+&k-5ZgZ|ckf)9Vf+l+N*ymPA*1+sUw!BU2l!~b~K zzt0D-*h>z=uMR|_z>Y~VnHXZw`F+M`zee`X>-Tu)icm5gc}30xIb3Om#tYckQyILO zVx}8#>5F0ns5v1x|Axo=L#4lGgP0>JoV6fi)(x=?R}t21Uza&sQ47Z@y!+f0eE^?B z)@Aioi0l_4c`@Bd^rrgkrB|xEt(BAF?zu|iD8VcV&4-xhPq=YD(~9%hv}mX3t70b z)RDsj-i5SiQ2{&J{D({R=c5s_*f}Gr-219k|ApzlFZdK; z8+}0AbMDWqTetsac&YM|Y-JwvpzC;BwMH&m{L8@s`cV-A)_cyl{REf@uixPLU|!l6 z`b}4u(?A~bwBlASA@32P>T64g6;ioP z6cXpupNW;u&A#vIZ(rnv6_fOCye?i?v9z=)$Tb;}pCn6HF|D}r+HKP9^ zUUI04kPx7+B;8!&tq=j@y1-`*p-W$@I1STOp3L2REiL}ty#6L%&VIFwW&fiOZK7N* zDd$&@8Q{i23C$r#J8ou)_YPSxdFLosZOsFDYX|+ICWBtI1)VdZB0XViR=YCSN9#2h z@FPvG?Dyo_G;gh$e1#eXyqq`|$0nS%9!uD`ijs|(5v<#%>MXw+TwR)3n1~!T5}Qr* zkP60W9%1BEIfN1`D}tFCwgoIC>C-M4(Xrb&^?LwW#&%+f)S}qQ8wlkHb}th>JFYBryK4> zh}K1Wy-=vI8}$~*5=}#n?0N^;iH*1G8Zu_ZL`)%a?{J4-c=n$bbGc$hs5r)XBV-!s zh2Lc|kY84*MIUh;skLz}2RD|i>Vq@eX%gShodB_O_vs?+4Knv8_T;a6Twb+x|A@0q zJg7Jz{f%DV^Y4uRKkxpN_$BtZep`MSc?TUWI&L7XvXGSPRJnE#eJQ=Tqn!hfgXrcT zB461l?Zco@qAq(jPM2A-t*f;@p-rE@GF> S{rEoi9cScz zk*#^gt=!Ifj?SwEh2`l4{>>|ktWW)ud5F`awlYaShC zGG6GxnR*HR=4(NUN>xW0dYwbM#9yw%G5bXid3amv+;AZZ2?2_SZ$9(%nGGAV+-=lW z$a-th1C3+>wF(l(aoPTN^Ue&+h~IziJ7qt+8+)kO440#>_CSlxfOwFv%CeM+NKY%) zNE;D`2j`lCc(@}s8%Nd-rUKc#tV9!?R4{WnD;9mq&sQYOe4=Bw7;C3ZyD2OXo&QdFpFe8|?eOo} zygxJ&YPm%-+V(GdtV4`o>UIrn^9Q{Z=;{N!=6MfL?UyJILvo$SXUVgUBSzpu

*@-_%q|chkmCoeiqn&q+@XE1%4ZQ02)+}5`B^=KvU&Ox zT3@H&&cxT8=Ib)WMHa#)ErpLy0A6WakcIU|5RLWz4}(#!XwNF70p zp)t6sAJ!7QDplLqfP~+?lQY&5aN5k^{gUX4H%M>P#l|hU5@DAr9tnGlaMi*ukOze% z&JI=?e>SJtiH<;5@?~M-N3x{$3t{4|k@t~rrP>2N;-arr_-+mES5V&b@M5I= z$z~TXWdFIx(5I%&-%fy(bWQB+LwVi>vjyB8irb*^2HqN*CV$Ny&hoBj@6n=V+Wq|^ zNw7&D#0^u5}9kW|puZtja%pOxfOi%oX)XNm#%F4B;{_ zi@)1Wp)78!&J@}H0p$w0ol%a@FtZ!=lD5y%1dG~>;KF_F5%}#|Y%JdJp}x`$KEm%7 zrR48_KU(_f^UDg>d7r2juATt(5q;U;URf>E-JCtBH$HRkg>`T9e`|byD*P4C8MI%C zHFyeb1x>1qz7+*O`^MZqT>d1+4fg1=WK0IZGD9Cc-GVZjkTJk49H@_v*Y|Bc$@uIs zwDriM&D4ZISN^{DjhV40Y9lVxa4{pibSnDf*uBu31>*P!AV1J9f2(btghT@bDK0yu|1P>$JUr;`bWTh5f z^damNOO&^8n6Id=P2|z)SPD$fnkPOF^~`S^bup;aO@73p>Q~Szrz!2KR%!cEpIwCH%PhKmyyuWXlhr3ow* zFZXY!@kya0!*IF$qqTb#?m<#IylreWS!bmD?VOB!u>xH3oUgK&QKRi5{bf;l-qUzB?NSN;veKY1MpP!5yC~d;b>E_)n@jFdMUdW$U!_49_5r>%Rs^b9X?MyH~ z-Fj*P!QZX=P_qT8N^ZuDcg(q!J+f259G%*U?x5M}v%U3LEQj*u0{|$7U((wZu67v( zO?WX!hOySPIxhPs=54u;Tv&VyOBnO?6SdFblD9}02){mb@SX&mP(yZR*t$I#P`Wl^ z4>gbY?qDPEtOY5U0VN&rTFqgZZd3Q^iZ%>n1*8`TVoi6=@n&5NtSTz zoZ+2syc&>gwF`zlA@wL;T`trVOX$t^S4_vSbaIrA4hcG$r4+k-oTRCBG)u4x6J>s_ z&82k~GTMgc%&>fO_U^%*3!tQQakphj^O6Gq8)RoB#BFT%eE#1F& zq>+!FwA}6rlGtke%`058$H6e$n7KTvAX6n*J8a|xh+yy)Gw;0teV+=@e>+7K1!>BC z2IRf8TT2tUH)ODRMe&tuS}7c?;)N%`z;lVwLIz>6hpcey0?Lm)W?Tg0 z_O%bjs&otX3fT8Xyt@RlE(Bow;D>P`^j>*!QkKmT721Jf0u|n%7`e1Oh=3gEa7b2> zrY_G7wnAm*lDvY{_>fcPG^g&2d2RQxR$4Yn*#q`I-xTC$n|^9B$=4awGQpC(LDa9<1)odL;VTp| z@6cUBB?uW&#Jbv4a%PZ@YTk>dJ3wvR=vzmp3F^HY6Fw-sE%HMB={Fsig$gUiF#FSb3;YTUU1;YL)-!>QtpmtqGTv6)i{ADy4Fn zHOh6xdCOim>n^5#O^G_+BWUy`aOZ*;RGCnA-c6&bu}k4Rf|BfVq>QYX5-Qf=Psx;gq^3hT)Ax}D2 z+x0ferG2NUG5Grc%VoL|>NP++zxK;zJRl}U)3g#OT3uX?ir5gW^trJDwfZKPl({Zb z>3P3W-wi&#R<0iB9SDXw?yLgir$qqZ%6cd#3B~wAz)+vTaLM_&%Y`Nx{I1jcYO%Ri za0Tk8q33Yi&J%tc1AdU3zRUCJlv|)$wBC5#Q~t=$4|LFPD)Ir~0zOZh%QekV739dJ ztP|Egi2{jd@3?+f+>>bXR=ODv{0Z{BRkhyzBE;$$Oc<5y3iQK_MZ%ltW z!m5g9I1}`=!eb4!_ASGc>k*<*`YN=8z`p%Ga@4C?X|7F6MJFrv8FfNo0l@ z0lk|ZS?|Mbh#+K4>5Rnyrk*Xt#saQvF_C5bK7CF%?1JC>69An* zfAFv!se;R_tII6MK@u`EVVc52$n<$A>KjyJ?0R&vV<%sHPe6P(bOt(@2X`6O@TaEs z2dVXe{C!iHwA_f{xn~2PdC7*ZpS|-htm{|oe2FZOS7hG5xas$t#nsiQlPlh-=&dN7 zADGWScYbxc8db02&>8x5YF567yrj|~Ie5!)s2Ed~wkxKg>~CVdvG04sS>K>37G91D zsOur5B&hZJXz6f2ndl3Wf8n{!s(*v?ou1v@B<)JTJoRFHoOS#}ATlMWk=-%Dj8Q-? zD@(Z`g+xsA6Vyoa0_7^9kWt_`{}qQdA29}b>%lFP@_~}=zIih`2tsG!Chr=gL%Vw_ z^H$z6Z|lU7*qhuh#mr$Q`^y5}&E~nrV#w(aB+|J}Llq86WISw!XHI|@)Q}*P;mx%2 zRxtZOnPWSnqusrBPD@+97PApfS0q~}qL6(+TP@9W^nu0G_lCyWuX0a-C%Wg@hee*t zzRtH8ix=fkXRilKshQMUE|2&mtFTSD^4aFRd3_&ml%6Fp{ViLTg}l>;|655LV` zmnK68DJ>wN0@pRA`d7v)6u&>zd|yzx{N`_ebMQZF{1+)3VAJ!=yB(;db+hU1p5{&~L-dQVHNyPeg`s4yZf*Tos20jjM0$)!6hg4|=GSIpJfaV$q{Iz0*lFYNWD}f@E{l-*r6DX z;G*T?ITc9oSax9<2t@DO`&qXAh>2Tl*DS$nygDJW7Sa9UMx_OK=jgF9x^B z-x8%+XM^bQeCg%ds>h;e#`~UUjP})1UCh%nZsnbRV=f%DcYo`)(L6LK?ocivkA~U% z=u*{jrevQk?Mw^p6 zR%<)cbMw)!l~Ss_TbY@!@7M;|MV3gs|5{1kg%WehuV$Jj5QCduaRyN3eaDcED3i$~ z*(k(Zq0uJ@gla=~^wL=5iZOmXL0OeA#gq&d!a7}lkOf;6bDW;3?JX4e^mdn#SFNqQ zFWUw;h~Y=g?|@Y5O~^l+-ysh3l!tm~350pb;Q^2ZW|Xy@$YwBKHn0$b%j-$|;|s$>)P zE%b^nCTMGwc{-<8XiK}eS=|y&+W{*XqzY!gpU*0Plze=S7KTv0z%qQx29M!&bypr%!;Ury{X7@pwvY_R_zh93Irlk{P)?(w>MnkVn2wkN{_@1Hq)<}k3q?bZH zJlN<~{fxlZqIcuBO2qBc!}mURr55wf#VM~FNUb6;L9*fi#fR#zc)AMPe)yp0dU8VU z)mRxJR)%emSdI?GZ469odxW)oP0v#POd;ObEAaAF2Ep+}B=j0*L^9|u2m}O?D|Qf9 zUDc>UFZ-Q$-@#E<+oG2F3u^;W(U$iO%ALJi%C-$DU0B}ltb9HA@HMwkJCOa$C*=u0 zC4pv%Vn2apJh-e;%8*1 za=S$vgNw3Zh(@$J?kIE*%x|+Wnp_wi!x~bk`-m{JuUV|ePI-M6niMh|1oK^GjwN73 zq=P`!0{Qty7M+1i``wo0I^bJuwS(&llg0K$DMISoJYldB1#h9=rrKGV1{ZMIw(2>j zjd^xOkg`$oM~uqC%bg{3mCuuUW^@xK_59<6q0r$n(N(wd5j-XXYGEdom!Gs+xQSZ8 zz^X>ktDt!dI>s&;hMk-r#pD@??M6EeON%l`+Vzzrgod*;>e4V8vJJE|9&bHf%y_t? z^iM7I_sU-a%YW}FC?LhR&@9hy?R%TefT+T2$L^8oU`po(bQ3|V*D!=x?`r{OB|`e+ zqq>;yVblH!5mUPRiVB~r%b{!4(jgP&=)TOJG9FLH(x(D5kZF{dMnpq?_?f&rlRT!^ z;_v2*Lt+;yurl|cx>a2R{h5Lr-~(10qO;pdU|%!4TD}`em!%!c*MIqZ`rFAAc>SJ( zsz`D4*>#tz^@Kf}L1e~&MRiVor{F-tyhU@^PA<_vAv%DYUCNXFNGJ2~`EZpwTwB`v z(tbBQ-rH>?J==%f#qw)Es<(*CHB}IArLNCe9zTNhm&1i{Z)JIRV;OMS!R#(5LCx5? ze2T29irChgL8L1UOO;$c%&-@%2tIns}hy62?8++ zuf=NiK(&S<$7OfOUt5@J-c%Q`a8))M*cNn8fMvl4HZcjLLwJ$z7rK*s@kr+-r&n$( z@bEB$Ys0CC`GE(_-`VbkiE8*2aOClgsPejjgg+Zs8O^u^ULwq(R?T3H;q*O(3jUf#k zY)LYB+MT*6$T#q*wx?5*|Mkmn=}o)U=F3-oq(<=~gVAxK`uJe|XPB_o%A!-erRD<4 z|9YMf|4ZuUX@>u!hgpB{!o;W(&h}24Wh%GDNo&!f8u}r$*8x!r@s{?^)TiI5SUtYTCD*VQu)8H*Gp(m`cCc)4OoO+~Ah!dG0OAH%9 z%%X%y^W_ZHuY<2{58RXz2sP&W6caT8UN`DuW({GMG;be?LXJk;#&n^0e>`%?Tr-lz zLTLvG42C_7Gs!|&{>b(5N*sjvQ179>ht|XI7uKT@aAO4zVdC5k2PL?~vSMLNmRC0~ z@3WYG2?LvAP9(w>1%WkJwd{;1(likg)%KD8&#`k| z*tuJ6<6KhiX^Bi%hsxiTuJ4b;%4M1N}K734LZT&0%Q*VNbP zaFEWF?kKPUSLU$2KS zu@e?+WkSDb#f~KuLLBBjT-?mF+&?zAqv!YzZ#D;P24l<=)@!`V)8{?xbWxIQhis$I z1`b|aU})#OSNU0?z*gUUQ5L1FJcBzY_zHd4EM z9MJ!?QRj?8jjGa)T!YtJV_Wyg)hzcq|KXBQs!Y(xR#Df{r?^kzUAm83smH6jXiLN0iF@D)W;P8pH>7CZV#Q&Ms$C5 zoxTNa;us>Zja56TZ;fW`yQ9{1*oKZ3%VsZor}@fH2A(S!f?4{x53xg7v-<8z` zy{UG!sZUJUpFQI7U17o?0#ho_G=zayU$@1UF>37`q&v@!>MrMKXUrS(rC;?Z#F*LFz$yZd_mE*FETo3I+H49!K9p4UB45FOr3%5Wj#&j=%*_pn;4jtK zv1J?3B6LFso~0suJHA2~=VI0)pF=!S=ZSBMHDT`WFvWujcl-4FI}Ht``mSY$h40mN zR1yyr7eaksFd1r02;|kKuU7g{=WJOVx0yN>LrY-yic>`+4ytRC6L_1E`>POv5*JhE zGAkC-e#6{P%CqiyOX8N{@T-lUgRuuzqYk?6^Mp%liZ(3M@ld{! zK0ZA*sz04P|EH$#tKLTWg9*CmGw$(~cQ?K07ODxt6s~+<#mY5W_Iqou!RH3*Eb{8D z;dpOw9^LEPg0oITPi^Buu&v=p-$)M^&2OGaT-S82`VwX&!FhYupNLIr&LCDH2jyg0 z<%-v>ca7=$XTh$8Ty%`YJyb$`XH{CfT2fV7fwo&PD`|xgLfdXxJ7CRJtY35lVMZ>z zWx>80U^in!-1zMedV~)*1m4VP=^%!YO6+ijHoGR6kvrM8ic?p#2G;+oE%@${Vm5KX&ENO@mvX-<>i0V{RH<5?(JElfBJsFgSTZL4owG$)H1l|IMCO9sq=jF`NrktHPs3sIodkmv@Z@8`4g!$u{bQ3{Zd?z@Ri8D zv@hALG2e7`Z4@eHKiY4bZ>C7DtE^3%$9s{OuPiTSqhphE&tFU@Vyh?>ta%$RG3sLB zlwU&)ldJMu2HEAJL)9F^R@(VuFhdgWD}|w~aF96ZgZrv;e@SeAYxL{3c>q-$J7!K< z>x*G~BoxIf=$B71`*Bk>bofQT4aGre{jQ_EK%%40RICg_n-6x_G8$>fo!HZv{v~R22>b`)rZYUE zkeSt3i92ln!C#mEuZk!FBy)pUydZw|dNRQ~d$2}{6{*a{8O)p`Ks>v$qlRAz6HT=L zFcr6z-G{#)OarfHMXa_ntUEoaYuHQQjW2w~_C|Rpa`Fx)#*|?}@1__&8xA5a7 zaZ65OSw_F0ikTyM3TBoxJc9t)y<*PNjJ$x}Y!QWgsX7PI^_#J&!;rT>FJl|{%%7ja z^(97iW|1i@bI<)FeulEw=Hv0W@0g zmAFlD#}I;eyq{#&_b*HMf6;Z3q$bwRQ_83}*C|O_?!BbzyC?pFmRLmQnW{NQCa~$J zG$F+B4QLOT)ce2E=-~P*hqM!b=L#_rc|AECr`!&OSw{>{lC|DxT&*x@a9oQ+G~uN*oUN~oEtO_@vMtmcy07I9q_j-0yDIHq#7rVl(6M({Z^3$wT7E%1)aVl08TXcw!Xk6|2j z!H>(RbCS2?HNl^N#{W?I`Bzf0do{0Gm#-zhr_`MM{IE(#;4{gOBDc7(zz24BncNOs*WPTA*=UQwf^2b_$y%%c+ZU zp#o57SS1EGSNs)BM^oT0BudAN=~uyE$!NW0AcV0R2qYwYxgg~va6m+jpEXI-NWuZgV z9hpshC%7d&?ICPz#;Oz5sq`sy`2!q&M&zSC)u-xlxD+H*z}mc6tBx{2t46wc3ZOkdBMv%T z+ct}Q8==EP_cHYYbLrWZ^GJRa@g{BG?nslQ3#B!ntN0yFc6yAau6`(Kbuhews z)>iE5S#KYl?IoZ_PAO03JEyZ4T>@$-wD}Hk=?BwWd;wtqWcfUQECYp#l7?s!pCrga z@VVGKDC!GHCsMmer7ocz>2pezgHMgN7JO5$Bpl+v{5U)HUugsC;+UR509Ie}rJo5N z^>0>RMn*}Sn!`hjDEn3Q&IV;Q(ihE?xCo#mLAG(YttP=FEXf1yg#j7DtovjY@@Ejc z)B93>ZN7$yg^zv(GWVX4Pe<+u4Gs-R&W@f^q01HbalI3J1|#|6{y%w;z@a2+mZg^- z=0Mf8(HSvaxjq2a*|a??B6sf=egQqxUCrC_BvzfJClQrG4BsZ4;_oBbmu^3h?0SB4 z-qmqWLvcn&+m&(!Oup3SX+-Z|ZQTux1i~Ab%H7F#ZiLJJd8594To=JGnwv#RQ96go z98HV(lmrh71>?6T!-GPMbumz1=SZEzlV3nu9clx&?hKqyVGup*cVQk{))2vb^)&kw z#)&(#DwO7dWzcDu_M_f&cwAXY94TKJb*t^1)Mpj2rqppxphHRoi`9KqWXZ}VJ$C$K zd)EZehKV2WIW@f{D^gKwl5KU%kKQfre*wLb&e4?5YT|KpOY~)n%3R&j!EIro26FK- zw{;8I7uQBk|{kWAC=eF2>^qn37z zl6Le0L}vnyRlZM`Kt5bETHQB5Hi%u@Mvd*DkQ6Q4G56CLsQO=h4zkDobREAi z9P-I;abSxd(y;De%j}?2Y>VH_d4r{eznFGB_W(UmMfZkm2)ksO896gECN+bx9Y-%3 z-f;wjFCV{!C=5F{6!bJFswFLyu7lDEBGBA`E`SG)$%j*_@688Srv7!4B&zc$z$A|~ zpLq~*>Chy%9{*vIdnH9_uC{kJscL*5I8Hp@2Tm!7DSR8GxI^a=L8G|Yu@gv^LQ)}N z*?Rg5sC$H|QbJzBBN6XRPyJYEmS<_5K+A6HJq0{?i zvbn@LhGb8LUBy2n_K~eyl6PB4j6afdcsT-PUr6lhbUi2X;{dils8S}yh`G6-)dm}QwG6-*BIKj{8dov7oF~UGM z1J4<0kA^#Fs!&VK$iEVwpz1$U6+lx+s#nwa&`QyRdH~z1G?LG(Z{^yHHPKf@^GoAP zR%E&d=&s8YmUJMhOBI3aPNmdbOLGmuHX#d>@XQ0F8BOUPfG>v>b#wdC*qyO{?#SSK zVd2r(4v^0-g4WAOywooT-{kHN9D+bDoJLFaB)%*FG~~y!b2(64&ufI6h!TF+G) zENF~sXup8wpI|5Fwkj@?BxlBILhQbp?POg)T_0ICGFkFj9GG#ph@3&CO3!HKKFXFw zc}n$WBLC`hkcj@XcUDf<8>j9#&HZ$UGd2K@0F@ESX7?!opo#o-+VSi#roW04K$^Fg zo1s^6xH3uM}{NAfv!&^&lCQGvUYUMmdSR~Gs=Yo;WuqWxd1mH z|DhXjE%qkhDAa$-q2ME?A??VW8NgrW1P&#T;>IwSmcoN7|Sr-@(Y?>@Zv9dyiJ)dWP#T-2L1h_j6-L4{x_I%+%2Ae55KoBHbF2IY*La~`e-`NoIIGe$?uvYpWnoi;BLricL6)bW55E8Iv_!ziM z$x=CLSWjf!>Uj{sVkf|cA3IK>anz}`XW7wPlOzdvc0@0gJ|>$I6@NaUH{en!dpj^& zp$gAdMWI}H)e*sBwqMDKQ;{fBRd7vUS0P=Q)ATApJ|L>!P$lP$AZkWsiGk;RzaaMA z1N#Tq4Iq;bU?&9B_`yD|o^}7L2KTLN=RlBpjxnN;cF#_}64f2A6H1>rOuYaPw?4yg z1y#ooUA!W_5Rg@dGLJjNhWdzPOT+kFXDT$U&eS5=R$9VV|IEGNG72FF4W)i~pL|Aw zR1~EVf!ZWdhe=&zOKUfs?dYt!!Y{3M_iHex;dsEeP>=dYaC$- zHFq9?j}P}6Bez~vjJ?$%I(Tv2IXm;yC%e>VEkVg3(y_1AXgbP(lz*AsH+!Ok<-d4T zF@4nKuXNgcH^KI*A~j@je@{I5x}smB)cwQL-z5p(QjieH_FP_PM5kJXegQ>tRSY%k zXXtvqM{oDINqDEPhn`?$R$odYwEz1OU`dm%C(YK z84*=zMlx?H511O<+e{s~VI>S~PmK{j8_~QxonBsJdx?MvJ30s(H80MWtGQ zv0lq_Dc948_>%<7(ARIBiqtLXjB^fSD{?>zE`#*r&)Gk*g7@Cq_nZp1h_U+?FgYAo zM&G>SfJG~Ev#{BU0kBr(Fiph-bJeC{OP63AD?Px+!zEYh9h+kN7^wJGq2)2E>3c%6$+>{1gV zT76_Sde>t)uOMA`RD5H{khDDMye&P;9@nY4p*Iky38H6&A3~RQ?m^jTb<@y^A#CS% zb~+9s7u<<7YSkS??o-0DQ-zc+SGm>&#+09_a6+!?1EVaQ2B}_?P*kR|!-mtBBWmAc ztg^uR3H?G>;WP{(aC{q>gAUTR!C-w&$XG-D@#J5&m^e9OopgeP2r;t2GSJUoLODoR zr533nsNTWXfP*2LG%Z!c!QFvqWnP*mj0?l@pAwb^X`jPm^P*!zRWczwIw?j^mb0ss zVMOxTX;DQJVHaS$%7x>ZZ!I9Xs>U*NDd|9sQZZSv2qCau*XTs?lF7f=?%|1*VyA?f zavJN*T25bxyrFwfd4M8l7uy+4_^YHoko+r8F+(96)jOxD15RzCssU zr!5ZxP~=1#dY!fw;!W^S<@@KvMIJD?43_BWRk2?~E@ECTpt(7_;}tqh$8{!(Z?bBk zl5c6vnwn(bV?F!)g)kFpo=geLi6z z@<96Yhs^F>HoQ^iU8QXIL^HlvSqKx;jsd(#`SW6Ovd?Ylk2}?lNkF$f+;U1hJi+h?c59z*!GCGhW&89l zsVARhE78zkI-fwz{uLX~#o=`dA3Z^JV8#-#9rMx*`=GXsu=@fE%UHK!v2@ytH90s? zo&TlpfXt?)X?TxJBI_~x^7$BGohe}Z`$8;4zNZYXk7DNgmX&#t<|cEh^_>z`()$6n zOcdA$2C8%rmoDPPgyE&b%K|&b8*Y&6CKZ>&UpyIEIxxsNU^84)&&9iC+YH`ncVu4l zkj(!A@(tcS$LPJ4aB!dK7046>S~21%rl90+2q475D-RLlfNPWOvf<8&O%Hhjs{Fw( z9_VO)=uRl+I|lg4c(E(;mRKHBz@6}WKiO^W5#}csmMOl*j}qaPf8{|<#~SM$*xWLCk&K$K7paT^%?1*AUHpk8LKoifjMrDw%Jx9GTLQDK4@9Nr`u08epQ z5(8G@Tj$A&0!?C&lG>)dls)Tf`Rce1xv4ZiElxwa-eOKYAmmN;7atSj#O?x1R%N94 z=yWq9&gGB-@l|%i~Aav(#@s zoRgFlm|xyut*|qRa+KvgsY_8IWZGYOMP@uYE0ChtB=a&UYRm+BnT((23GKpzs5bbr z0WG?TfJQRNuV|#IFb7bo*x+{|1e>GTIfo3W02z19JVldWbf5&UA{?15?w&O>W@I%G zy<3)VaK*kf4L|}}UC-O|4X&RymK8NGT#8;^c$Ej$ z->FL9mYSQAAkgQm=)9?<&6&M#+_CJNSkm_%XWXjsP-^Ej zJjVO(*@%8@tC7KOk-W3@{u^qCc&+As^;|c!tralJf!qa+)FPhM?wIoVb_2Q!Gim)t zkbEbqEJFb6bjI`*g3(mOb7Mj7QBs=SUgxaA4;+dWo%@2e)Hm)9iO5W9%SPYryPnoP zW?kcw3^SmQ)Zt)8IJWB&!?=5qe5U}u3ZC;W#MnExG@@!vXBrD!dmEn5w z@&oBP_ehJng`jKs?kAFJIb=1MfE@7-t?5#RHO;$nKV_6&#k15%-~MJ(K?fuxWT*Gc z6{nx18DE{yOsobfQnLDdB46`FHe29|TfF{D0tdO3Db)%FREN#~u5=KhmnW$hoU1~+ifn2G$`Oc|TnU!DUqECu z8$Z{($;|sc6}5uQ>XDbb`d1!a7uY$M@k^i7MXEV_%Udy!~Qrl(s6DcY>i`0R8=Tq?y{|-WPxlx)LDUDrEzAg z(54-tdh2kT=I}@zRK=FTEe!%a*A z%p-uy-2gRwOAaIzrq;NETfb<_ktUxx1IlsHn%b2Qq&jb)h@lc7z^nNo1|!1^PNg@y z?4QYGRoFyWhZVdEmt-Bos@);LH2y0Dzgqw7;?|Y(sU%O6IH559gh`yCnxvVAq9Rn4 zxklhduFlqAa0Eupk>gscu8L1yb52H5!8HUTGdyRTsr>DJtM0MIvDChlv$uL*L9Gz+=3KZg^*l`- zl%{?MvcF!5 z-GW%ZW=XAKLsZdY~TY6<$no&9g6~nETdvmMHhz$eoH>h?k_H+8hqRJU{1Lj5o zGvy#KP8=O&Sjcb4%XPPGrEg=e2h4B6KyPh;kiX#as(K9z%fZD6@P(bvxxj9)ZMExR z3Gm3!P$6FR)L=0sBNu%Pbf%u{O8adP@inAU8UhrxW?LI)bJ~V&x=g)fQAZ+JmXOp+i@3K*)u(6M;$aF%nwXq5-?b9Z_2dpDT-dWtGglE0{1CD*{aI&DhtZj z05=VaP2ThpkBlo(3QL_>h`jvMExPL;`qN6$HG1r>W;yXJc3COPcXiLD*M`c>LC4@R z{#Wop0Z0RZSCuotF6b?9|F#?OjmrKRq=u$esyQZGIbH*RUcf!|61OZkGO%~2BudD7 zMg7WJB-`}wp%-Nu3}+YOqO3VXNon1enQ?E2Q!9KxrZaB>Cq~tP)EU!@(m@djWVB*L z@*6|zfua)_g>|_^Wo_c`&34SKfo{eX;NCr(a ztY`aLvyk%V9crrc$9Nv$cjVSJE+0bgaf?((dc09IU4w&}m58gzBS@7RE-j?hTB%h_ zKF8ouRmBDRBEJs~@nm-{+cq``*}zb+*5K(Y@$^qcJ{x9JPzRo26{d8Erz8wiuwa^)x5{E z16WZ%%=Vb!V{X5n^k!a5eAvA(1;JP8g5&ABr$>x1IRkQ&GtynFc{_m@rh9C1t@l}D zxjx1&F(;R0WCX`WIeSE87`v~eRg8j0!8h*%O?ln?(aIE~thj8q^S*@X zZu?g#{&(_P0TtxyFMTBS_Aeu%_;Z-)G(8fDR-qOmWqAh;rm#V<4q*$*)J<&VMO&Mh(*mi5 z)Ww`>6Cirw;0(^fKo=1NnbgI=fD0awR!?Z&9I|i4txK?(gZD==qPz?9)L68|^pjKP z*d%!O&i}sj)p+Rs?>^?$6}B5V~~};SPKnr@=ikD$+wNj z7xpMYh8mgh6a+(bwkqSK1J@x~ltR ze=N8Ptb$=mfax}6(vLvp_~bFPElAM_ujB0K~HZmFQo61@STcATLJb zj2GxQE=5aB_oAYi{2eGg9?^q>xUI3T$x5^7qy|DYphg^)nv2PlS|Rt=Egx{dVI|YE z(}^)fLRLSev@uY{!XjApmGuLVxfO?ZPYFvEnX5E{)&TQ^n z7YGfb;}Vs+joH$aC$AYoWMZ z(h9<-fyjDwqQv{&6AM0q(v-#_A;z=;Ar=}}q?7{!D-EWAHGc$ecH{Xn0`Qm{Qoy<~ zuR)BDUY(>q_aPZ1`3~p1F#sO3=6s;oBkh*a7jJSN=GWsZSjXbPTydp=#$T&IQ(9p@ zweV!8E>7L(ER!q)crM)t4dK*apTE}z#x&%k#)0Hum^5H>m$UU-U;~5{Q1gQ#S27TB zx{L$rl5B=2;SmTx={P@#AO{OBI?U|XdQpc&zAhc&Npe-cWAs-FzsRw(?VsL znacvkr54lf7qgG`WEBShyM4*Ar-wh{>+U3d5Hi!;pBV+~B{En;w{1jHOkFAMf?YJX zu@ZIZ(9kvmQ))0`DW-FCc4D*?q81efn9TVYeG~x<@dGfV?hr%NztLte8i;`%tvWxH_xX2%o9F9mHqbLIul#GHN$ zH!bP6vn`x2=sFQXlC82OUue=D0B>_(E3-oP%8gp-bGysX4>xP*+X!QW)jN$Q8D7=& z;!##{yKcO}seqY1@bP-d4S?*;Wb5_F%F{&>LVE-=ySuZmGU$rv)v6}qvpfZktiF`5 zCwVn9v*LzTwQua1Uvb1iM!Ex$Kiznrcg+&UWT#<0xXH6%p4xS#RX^Ky8MS@Z4Dd+~ zaw!pv_$sxy7{Lw=naoaeqgKEt$pZ!)5t79}uifqV-LwDp@~dSR|Lkv8 zmjBKfZ-{A!X8FpXrv2O81t~XS=1esQx3gPf9%Yu2V>LYo@+FV_cJN(xb6-F#<*Plj z*QypY25lz%lTH~FUS2T*4qqAIE5~5^cO~is*5@OgTJ>MNbB0TePlVXBH{v+ zlP*Z5Dq#;mlR9`eS$jsCTC^vfO(2$lEo`>DV^+c_H zg8q>b5HiAUiy7kych_j4aSeT&YcP=ZmZJOB^zx$i@a2J51K5-l&-c30^;l>Sl>t+H zF4zO?x1AqOp zYo1c&<^FrsobR75>b+9_wH;$Mu7t)~f!`Z_D2Yc4e#BBx>hPp?!3&GbSwnF4_+Pi| z{K4D~r4yM}ifX}eT(vw13#cD3Z*LYLZcoC_XD`qUTqBrq{l$5qAwlt4*?Jhh#FhCF zWjDFxUp`ohVYi+*7`?S**Bgh-U>s~`6S7UV+T|9g4Y&i~FP?FoVUDPIqoAW{_j=NL zB5F2n!e!nr#@BKGl)w{LiX1jJgPujQVPtbt+%@E@OhRBpASAHzwFL&M^X!R~lz0%W zQMT*XTsaEA$cup%5Bx64yI8_RL>klZcTQ=bWI2U+AO+r@-GlL};aKDoHhnpXV^iqJEU4d+sTp zqi2M5EaM{D%1OL+<<=rMueJ)4ZNjRjfEY+*J@-^3&7*C$>5z4F_GHh2towvZpQ4t}iy!|C>H9#Z(vkgk zURSGl<2jd~RMtHlZHR3#wGg+;bt%6B#Q?(S`TOdo60?)Ci!A#yC3R&VFmtnWp8hQO@CE**Fq#NvR1V>B|*$POuOV}-lidO^V;n~uIKOvk< zfQamZd!2tbfN&n9f{@Hx8;=D~zb>UG1H4X^Ni<+o?9X;O$OzC=#@mE5f8B`uE%h+3 z9BZ2Hop5c>m+e)O%O5K(`W>s``_5_%-#9!(8mwgj%;!AUHZOOtAFXbmDq}$>UWZhw zvo5>Z#S(y8z%(KPyiGrx{Cl$hgD39zg)SZ>v%I>rtXjdzv20X~GIcrFs?9B&e zg1IKX;$T{N5k7nwm~x3tO>yDWH!Hpg;NU1>B0r4C9eFcl8dO!DpzT#4(WfS@<%q?3uM%?U!D(b8G-?Y=}(rvLG>BL+tt~2Fx z#Gv9#4~EW+OkZpWgxZnv{93qQA#SbLBQHyv4#|w+RxUs3z{fjHy6i#7nt zWnF|o^l`A6@h-84P0NVzevZ=9xs>YXOuQee-z#7oM+^wJI0E!WZ-~Fk;&rL#X1Sd# z5an1Jv069`sR9@Zhl33eiWi=y{@^!EQs3wek)i$GK2tid6bGU<_IYBgx+f*gUi6vU z6746+sc|l}XYF4+Z3Cu#{dxQEbX+$qYrc;L)(VoW3$EIBso0A3EK{h_UMa3{UXNwf&>=^(A%T8(j!x-8OccwZvfwAMUfL=e$srw<4>ti3QBCnII176)u z=Wt2xaV*~*Wr9~XHU(e^hr?$I4jqz$(aCX7R%Y-wVS zEI^2^Y3(rlR+b_OeWXJOzjXlNw|XG_W(tJg+H8RUuTk>r%>pxyx!GS_#mnI^f>l8E z>0`~IRnWyer+N1bYqCse`;ahl5xs_RgTjQYr`ZRCx^#F{sE6h3h7ZSsHure}$LQ^5 zRd*W%=Ll8}>m)C;rd85r`#6W>P9k|rH$4CDnMLK}0!w)pnF(v}8egnU(ZMG_1jY*m zrC0gdr#q@=e)eILrUDjZdkzDmVZgeFfw>enK@uA4AP_mtEml#zxtGVvN3D6ZdYuM? zPd;vG^SRXqQz%%+Cu2WrKkrAC(baK)sU6((6E8Vvg|Ow0D2m_)JIFJ&7ekRvWbVmb zrhUT2Zfr%NmibF=-0+sGh9qZvpKx3Bnb&Z2;_b!Mi~_}}LLtCJ#G1G$N^#QFC3HOfGHIKyF zm*p|ErZ+rHeSMG6xzJTN|ib5e%X2R`~lhWU!1V1_p;l@9(bqGlCdSpOFj*hzHd^gxrV0_Pw)qpiR0Z)=LV7neiD3aQ*Ex!kB+C$RY zY4LR>Pj%+2pi?s*Ng$$;b)^_>!tUM)?e& zwu1jdkCuH&`;A*@YUSE@>uC4#wR^L(qk8S$G!_?2`Jd!`Tq-2e6Sx(=GR^5=629O% zB)VYtx;QiHek2$&d<}n5{>r;&j}$rkH%sK{Cxz`G5aWD^!HwUiqQ?ZpRDVhH~wi5sa0Y`oiC7rZ=ENf|j&YXbDsmsgX&=WTp{{Di;%t@OvvPWg=z z##ZmWA*|q+53rzE*cFH2fyQ;$yd0%`fKop|H2B59ir8_{QD6#KQ) z(t;8M2j;7lWQ1;s*)>pJ*#=V2TdxPN=g_>S`@~lk()|TA>0V;5+L1#}jedtO4&$p(LSPEYsd%kxIa9Rm~6%TW(|Uis8{K>7B0N7P2X_IqSMFpj-1D$s$Y3 zPV3f-ab0Prv?nM$Fe9taT!>xia=(CDcI~G^OGWkfb+Hrc)86=}zZ#;QOFs{K4c5+i zu9gpou>38TCBIZ~>%*g8He|u0AuX_EVa{G`)M$ft#J(wmpOCpuMi&$V5nQ*|D@Qks zpMCYNpy$=}&)7V0wzL*EaX9^J?UdCOBEQYvr3b9@h!3x|&<@J6A`3jtaI=m){W>9JtunFhr$ zudO1dT!R_Gj=aH_8_$1wUcj|kA$%>NqQ9oA*y(JuLXcN3doj{drx?kSBpP=4_gxKm z4X6Sh;+mEwuVY!$PN{lMS{!jv=e|nG*qw ztA3!iQxlMyih~S;Vgv;Dukgeyrmvr;uiXs%eDzv-W!Blw3Ave7?!ZWOTv<(f=ofAm{Si$2rf)qF^oi zugQEK@rEC&gBfE9eNi(x-R-@<`=C~I&X+IW64xz5m# zHu(?z#{5EG<{|oKxtAWIucl^_bZ;#$X}`s)D7Tl|HAI9q)0I3C+2Y3UePopVWqSix zScEnMOaC}fFsc~>g`t+coEbsq5B!EwecSif4wCPfeaLC;P z`B^$yccP@&n~%P|N%hyiclduXH|~4$-~Rq>m4h0INzRr&sI%xR8i5NbshG%&C z0l8>n;w+9IN)rT8>)EG<#Hv33cI|(7B_MWrS9ZweJj4YfuDrC@j`;%eiP=?NlpP$T z;jFVS&n0S<(tDY0R(uUt>oYdxo$6sQS~Ul_+aylXap2;2Zvx0+$YN0O%hEMl``hgj zyibNV0G`eCr$=AU1G{x&A|?Mv4h3)<bIRT!_>y`de+sfUYd3<@sB2YKzrO+IMlwXTc*d780nw2vGs=qd7O&`o*n3Ec~5 zVzZt7?V(#|pSn7VPLs=dh`rs-f3%wBKI%#@Ge$kRsyA>>sHG~wU?5E7PCHYWrTARW z-gKh#U>!yAiKlyALQ-U_Zzp4lj9Xr;`Tsb#P;Rxgq=6^6xsBLuPI!F2do@+;=dF#Z zh33ST*v*im3;&-G^~uQ4cfi!>CF?CUHA6+LhK5*}2L0U{v+B*VCfZ~$1p^$l%yeU; zPf)Z-r!$mO%TJz3o<#@W$p>jf=2G(8S7wP;yu8_9&&g@6Kb)54)14NfZIX|$xY!v^ zt%pK4P~3d~5p$V14SiA#LYj=abfTe+SZ=@d-O}zk&JOP1%<%2Qkep&9V5IK?M*7BO zXqwJ%p8T%?Juki5Y?F_$38EjtIp;D5m`2TPrn(md&0`;Ig$qKB_Pf-IF9~NdxVtF? zz5EG@{!Sq{@G&CNg)=pfCktZ6OwRPU(DHItX@%pO_}`SpB}9Zd16PiH7_b@zfD;gX zRA#N(KRZbD`EWryg%Y-2E%)%SO@lTJCo;oqINBt_1t_E2^O{$xxd{o5W203)0p7?@ z&w$@FvPdj(3zfl$6BnYwRid@5-dNl}F_k}8LJOa1NcLs%NnnkT9p|UEg|S&=-V2l#)>Re=uBHCm3CVkvM-JZ0+Z7}I}wJVWc0TGAx&Vc5PqUR&)ThtUlyif#UcRB3V2Dd z%Xi8T{l0|+zi+urnTPM^yJubnSL#(8fWEq{h-;d{N5<;`GH!RMLIE;9(}q7ZY5zfm zHs&K*!k-Mt%~*@oWy5=T|N+w~cTkaB&=gi$gi)0i!ignPnns zrG8Uv5kjC;dYKrAbEPQxw?{xaLFze>WO{19_vHP5`l1q;gzex3{O&(*e;Y~q^Qr%E zWF8ZnPNS_r<3`onM`;OY{Lt0@L*%%R#UXl? zfHee6yOwhOj01~B z;@;dY=ntb(bNH)R|DpxJ7FWd06A5f_lanCUaRBf?ASe=KoB7A17F-7pt%Jj^tVvwC z^dAZF&&U5hN6Vkj{pTaZ?8TR)>yJ6V6-cT+!}8Nav07t9FIoS4SFeY3(3NB;Fg9{uOL`j3wM7rUG#J&p!}{AC42nn>zfi+S4CC{pW8_q<#|0HDn?QZWA^aAe)2MeMnwYAt_3?O)uf`sEE^^ z{>FBgE-!Pg!&s8e%@krmCw8mI`E0lIye^%+{2;7iHV*+`O|n)%AEjuE(Mmrxic) za2=DcDHq;Z9U?0>GcF|^2<7T}PD}l%{g?gjF7^66bIaM%DfX#1KHvyA#1@k!rG&d8 z)e5Cp*}-35Eh$QjzcUvWgU|Jk$Cd8QFg+yC?2-*|Z^r834PhcbTKMbKGCFCku4cHu zV6b=g@9)Djn{1?@jmd9iKHcsVuXo6LFzH|;A>!XdboBKj(S7e&N8RRV$Q;4N5mf$v zt0q$4c;6IqSYYA)HFwtPX<6^vbwdYby1ahtl_uNTgOcT?^M1!a4|KhIUUx%wByc2wBMBTy;79^T5;&5;kpzw;a3p~v2^>k_NCHO^IFi7T1db$dB!MFd z97*6v0!I=!lE9G!jwEm-fg=eVN#IBVM-n)az>x%wByc2wBMBTy;79`hZ%W{Q0itOb AzyJUM literal 0 HcmV?d00001