From bec8f415bea0952a08f1a15ce48e98034a82cc85 Mon Sep 17 00:00:00 2001 From: Eric Soroos Date: Wed, 13 Dec 2017 12:47:11 +0000 Subject: [PATCH] end to end test helper, more end to end tests for tiffs --- Tests/helper.py | 35 ++++++++++++++++++++---- Tests/images/copyleft.png | Bin 0 -> 5144 bytes Tests/images/pil136.png | Bin 0 -> 1883 bytes Tests/images/pil168.png | Bin 0 -> 6800 bytes Tests/images/tiff_16bit_RGBa_target.png | Bin 0 -> 13096 bytes Tests/test_file_tiff.py | 15 ++++++---- 6 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 Tests/images/copyleft.png create mode 100644 Tests/images/pil136.png create mode 100644 Tests/images/pil168.png create mode 100644 Tests/images/tiff_16bit_RGBa_target.png diff --git a/Tests/helper.py b/Tests/helper.py index 38eb98a94..b8b44b6f2 100644 --- a/Tests/helper.py +++ b/Tests/helper.py @@ -14,11 +14,22 @@ logger = logging.getLogger(__name__) HAS_UPLOADER = False -try: - import test_image_results - HAS_UPLOADER = True -except ImportError: - pass + +if os.environ.get('SHOW_ERRORS', None): + # local img.show for errors. + HAS_UPLOADER=True + class test_image_results: + @classmethod + def upload(self, a, b): + a.show() + b.show() +else: + try: + import test_image_results + HAS_UPLOADER = True + except ImportError: + pass + def convert_to_comparable(a, b): @@ -99,11 +110,17 @@ class PillowTestCase(unittest.TestCase): try: url = test_image_results.upload(a, b) logger.error("Url for test images: %s" % url) - except: + except Exception as msg: pass self.fail(msg or "got different content") + def assert_image_equal_tofile(self, a, filename, msg=None, mode=None): + with Image.open(filename) as img: + if mode: + img = img.convert(mode) + self.assert_image_equal(a, img, msg) + def assert_image_similar(self, a, b, epsilon, msg=None): epsilon = float(epsilon) self.assertEqual( @@ -136,6 +153,12 @@ class PillowTestCase(unittest.TestCase): pass raise e + def assert_image_similar_tofile(self, a, filename, epsilon, msg=None, mode=None): + with Image.open(filename) as img: + if mode: + img = img.convert(mode) + self.assert_image_similar(a, img, epsilon, msg) + def assert_warning(self, warn_class, func, *args, **kwargs): import warnings diff --git a/Tests/images/copyleft.png b/Tests/images/copyleft.png new file mode 100644 index 0000000000000000000000000000000000000000..c0c63b887f377c94e34375b838292b316eb9ebde GIT binary patch literal 5144 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 literal 0 HcmV?d00001 diff --git a/Tests/images/pil168.png b/Tests/images/pil168.png new file mode 100644 index 0000000000000000000000000000000000000000..1f752ff5606629fbed3ed51db602a65edb2d8000 GIT binary patch literal 6800 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 JA3AsaKL9?AA1(j@ literal 0 HcmV?d00001 diff --git a/Tests/images/tiff_16bit_RGBa_target.png b/Tests/images/tiff_16bit_RGBa_target.png new file mode 100644 index 0000000000000000000000000000000000000000..cecc295d4b801d955ed3f4aa0a870cc132a37727 GIT binary patch literal 13096 zcmV+@GuO4Tx0C=38mUmQB*%pV-y*Is3k`RiN&}(Q?0!R(LNRcioF$oY#z>okUHbhi# zL{X8Z2r?+(fTKf^u_B6v0a3B*1Q|rsac~qHmPur-8Q;8l@6DUvANPK1pS{oBXYYO1 zx&V;;g9XA&SP6g(p;#2*=f#MPi)Ua50Sxc}18e}`aI>>Q7WhU2nF4&+jBJ?`_!qsp z4j}paD$_rV!2tiCl(|_VF#u4QjOX(B*<2YH$v8b%oF%tU$(Xh@P0lb%&LUZYGFFpw z@+@0?_L*f5IrB1vJQ>S#&f;b8cV}o=_hCs$|GJ-ARc>v%@$zSl&FIdda6Uz_9&dgda5+tXH875p)hK-XG zi{a1DP3Mcn%rFi&jU(bQ*qIqw9N}^RX3zXt6nSkKvLZX!I5{{lZ7prSDAa#l{F{>Z zc9vd*f9@GXANa%eSALld0I;TIwb}ZIZD|z%UF!i*yZwjFU@riQvc7c=eQ_STd|pz- z;w)z?tK8gNO97v2DKF^n`kxMeLtlK)Qoh~qM8wF>;&Ay4 z=AVc79|!(*9u^V&B)*6*lto0#rc5AAmbF{R6Nm+wLWV&2pPKj&!~Ue%xt59A_z}>S zSOTRX8bE#?04OREAPIY9E70$K3&uwS`OS;bnV6mX&w~DaSGY|6$QC4jj$=neGPn{^ z&g`1}S^_j607XCp>OdRl0~5dmw!jg%01w~;0zoK<1aV+7;DQv80Yo4d6o9p$7?gso zU?->sb)XS6gEnv&bb({wG&lz?fy-b7+yPQB4xWH1@CwX85QK%u5EW8~bRa{>9I}O2 zkQ?L!1w#=~9FzzpLqbRb6+r8tQm7oNhU%ea=v(M0bQ-z<4MVq}QD_qS6?z9FFbSr? zTCfpp1+!pJI0%k}7s1K!GB_VDg15kxa07f0?u1Xnm*5dt3O|9T5r7a8I--j(5f;Km zLXmhR2@xTykP@TC$XgT!MMW`COq2`C9~Fh-qL!gnp*EwcQ3p_+ zs6NzH)F^5S^$|@*Yog83&gcMiEIJvTi!Mf2pqtPg=(Fe%^f>wz27{qvj4_TFe@q-E z6|(}f8M7PHjyZ)H#*AU6u~@7+)*S1K4aIV>Vr((C3VRTH5_<(Zj(vk8;&gDfIA2^m zPKYbSRp451CvaDA6Sx_?65bH+j1R^0@XPUK_(psWeh5E~pCKp{j0vuUNJ1)MEuoUo zMmS5jOL##f67`5q#Bid3xQ19sJVZQC93{RbQAlPaHYtH5A#EY;C!HeQBE2A!$wp)k zay(f~-a>9BpCR8TzfqtnSSkc4@Dx@n)F^Z+Tv2$Yh*vaJ^i*7|n6Fr&ctmkX@u?DC z$w-N<#8FzMRHJlM>4ws@GF90|IaE1Ad9!kh@&)Bb6fDJv;zQw4iYWUiXDDM-gsM+v zQ@PZ2)JE!A>NpKUGo}U5QfZ~MZ)k(GDHV!}ol3Myo=T0%aTO^Yp&QWy=;`z_`eFKY z`a4xERZmsE>L%4T)hnv6)#j*qsPWZG)Y{cX)ZVEx)P2;`)VHa3so&E;X_#q*YvgL| z(KxH|bPjEf%N*{Uk~xRx+}4CO%`_u4S7`3j9MGKB($@0R%F?RRI-~Veo38DlovOV< z`-JwS4pqlZN1(Gq=cLYKh6=-zkLZ@rEqJ6vJJH{f4iNjE!Q9HW+moJu+4^4lvF)ZZ*DZ zLN;+XS!U8;a?KQD$}&we-EDf=3^ubjOEIf48#0H@9n1yhyUm9!&=yV>LW>5A8%z?@ zlbOS8WsX|XErTr!ExRnASs7TxTWz!IxB6&pZ=G)4Xnn_qViRanXwzf!tF4(W*S5y? z+FbHn-?^*jcF%ooXKu&0+hcdro@yUrzrnuO{)2;~gUF%HVbamSG10Ns@dk^=3S(_% zop(Yzc{#0iI_C7&*}+-teAxLH7p6;^ON+~+dB*ej^BU)kx$3!cTZVb0Xx4mvs zcU^amdxQG}4}A}wN0Y~dr>SSE=RwbBUe;bBuMV%*Y-jdL_9<_~+t0hid(emC6XjFw zbKh6bH`%w{0a^jvfaZXyK*zw9fqg-wpantIK@Wn>fV8I2F~=-fTgudr?_nHF76Ya z2X6;&lJCkd=T9WLCY2{WN_I`&o;;c2o>GzWRKONg3!bO?r`DyuP76)jpY|y|CcQla zmywupR7eq~3Hvg&GxIWsv&^%Kv!u(Mm+f3OB?=NXWkcDEvb)7J+0WE~#6+@QGMeL- zQhTd=lZbfxFY`c=@XrK@^Z>#r_a zJ-)_o&4IOqwP|aAD6}ptFMPQ!W?fH_R?(WGvGsoITZV0)e^+=6ZO?$0o?WWq-yLr2> z?D5#sR;N{0TK8_RVDHU(zxvJwqlSuon0-0>9yUfd_J7U#y17ZCskG_Ce&K%UfrtZr z&5q5@Et)N5t#GTPb@E`s!OP!xf79K@Y^!glx0fCQha`s{f1CL2^}|7jdylY=w0&pz zU2O-oqofn+T;4g=mC_~cj_V#i8hEs~$EBy^d&}?lAJaWnb6n+k*$Kjlq7$D^=AWEC zm38Xr>EzR6y-RxUoQXYituMT9@NCf8^XGieo$2@NKY8Bu{ILtp7mi+JUF^E#aH(^^ zexTzA`yV<69R@px9EZ9uJ6-M>o;Q5riu;w*SG}*EyB2Wm(#ZUg;pqt>?FMZqM9Va~FNLGD$lbNT*KP&%S`^@CocfWZ2GB6c8HU3=m{L`|I+Sd?{wJo{Z|>UW?q-PQGavbE$eOnyO?(qGr8}v?<+r;e(3oa^zrVej8C6_ z1NVgU`=rcVIRF4CvPnciRCt_KyVX}?jw9} z$Xy%Jvk`TF1R4t%hvkFEe0M#-;Wxg4{Tny&mw)=N@oTrP^6J$Q9zS^s)17er>>)mR zevay5inGg#(HN{6gNM&fnc5cPagS}QU_{WQhSNobB$}gMj>V#+QVNq{7w5AjMJZ?s zMQI3y5*0**jzmz3Ap|&**Y4fnn=J9QH0L}J2Yqrp>LU0+F9K>Z1R+9%afVIZq7A}s zZuqb^803a1SGZK*E90DPj9Ar?s*O}sAi!0#yq^%BO;slwq(K`Et< zW)Z+eVnYfNmoybYT1(mG5BK%W=GH z*<=wxW$38@E&^zYAPt|c9WK@-t}?*;0JU5)X8`gco}Yit`1B#Rw}&`7{siNG#uw8w zY;6y5GM(}0=nPl(Cd~5=QYyhjY8oUFhUF5;k-0JO;!%0eV%SB!T+s)Cb3&~Y0)-+1 z(Ta{l@Ne6?aJf`4N-2C#Z4Up#|4~7GSK)Z2a9`b5NAFgcUT^WJ@|gTG z;#2<^_YV$LXXLSH0`ewe?En zS_@p(Fs)mdR@m?NAtG?hC}@$W#-Of$<3C>l1AqBIg6wRV6s)LKJC*wGq31U4an zB(+wgC6E$r6A(0+G7F|aZ3t-tB`CU{g@nK)0#RTLkvc{|85R!kA@b@@k8M<#Ue+`a zGAfu%vsDT$G@%u#0o4V~_g>zN4?k2mJyjU5?&JRb&CQrDTP&(8D0drV)uv3XMjng7 z80&h7xZfgg0@Aie*7lI?do&j_oOKE`SqI`HigAwRMN2!%Fz5{sKYjuqhUk9fHN>*! zXFvH6)3U^CuiwJJ^e``LPS+7dQ9v6@Kx42o#Ls{6KJMJOLJ>i;TA`l{o7EakN;Dk< z(SoK)6yKt0TZ$;SEMo`(wHLI$qShL|s#vQf95uCbppZ%__#liT&_af&ND{fVqzLki zbeYAovf1~@t^#vI#1t6nnqmy1B8!fJC{UZo%i5!_kPrdo(hfwMbjK{~ge_yHb_yG0s6lyxb&A|e_-T((msd;CG#iBx< z-@q^{k!2lNo1r|ev9;~cts2yIgKO6&sHzsmSS%KaUG32~2FH!ZH}9U})mQH!^am7r zymReUtlEHaLBz6VpvL^;53xPT2xzQBi5mwyIO=Qmb;1{JZv!#$$|T2h)zUOX-Z7Y; zU(y(Zb=fk{4amf;y*<2m@dC5uikZ@=#8YdHf_kGJA`B{kqNqe5K`3eiBQy=A5IBHE z+d?!rR1r*u$&e-pfJj0iC}Drnr_vVXdQAvXw~@|*>sGKXJqL(P*1%ZJWHdtSDYc@6 zP3bDeeYEox&6{t&i4S%Z4iArUcz9op$459mo?tpq7#s}H%MWpIs8n{*L4LVF+pckV zc!<@igtaBgvPNlZbW9Is+{4%y=%Iyi2F^zII}J1qdc8jS$1l((h4YxG7iXaEV!S^_ zuhl5mb8?s?C!rL$y|V-4IYNjSbPB%x`XSKEu`}-T+35^*OkB5uaWBX0Y|e4Jfa~U5 zD}zDdxU6eDdi)GZ0-XrP2isiLEBHE4lm;mbN+3Z|Q6NH6M}{B}5h|^~+)^ZhDX?LV zOoIT4AP5ra3?M-TY<|GE3fdV^4wT2w3ZznK+ekpDoP#o!xv>aID60~ojWmDo2ggwA zSREbBFrDsWu~=X-DY0IUp_Eeneu=6#K)0+>*A0p*UDQe);cL+AX8Vh4Bl+^5XdkDthuU5Z=(GjXq)E$EuBU(|6Rm7JMJIJyei@KqM zMwStC<@n*J&++EHL!Or&xfsNhSe70-*Yskr(3;&mht?UqUs7ip#lW%h9!*oTX)J_7 ztu&Gd6}c%>T5&w+qAW|Usun_$LiCD0Gb#)_WK2RW3Q!{EMGPjX+h%gDH0a^`;*0dpk!Lu<2Ov2nKL@gZTn&$U^|M!*JxGX58@b#}>#rF0d zj{oQ>l#0NtJ-NDrNtzb#~iJNI7Wowx7ePyXOf zFj5LxE=Z!FljE$eapw!y@uly+ga7UK{}`#R>G}>L3RWza%@S|Fb{qfTfA}Y;qR>Gj zkT6MD*EK%;>@n|L9YVK)Rl8;-1}U}l-XqhR${1)7AbDmk!(gz(@%9+=`DZMO4BiVV z+`xF*LtHFZr0wF%U;PrFKl&UOj~=m`S&)IY$k36BnFW!ks$`H*Va()vH(G zeZ+rs|Gs+tH{V8^5{8q6!B{XDjnEq;oKI)Ceg9S5{pvjg5$tvaokEZo1x9&?%hOZ5 z`PMCb_1C_DBmy@YL%RXpFvHGpi0Q1ty?d|VTVJ_H=M-*Cdbl?3a&K&LYj2EZ)!^b{ z#VpGJ5<0b10hkPi+|4^^)@!`7ow26{uG?jn=cp>rIw*J%2+39LQPqjXU;tm&bXp^K zmRc!LzZ7s0iYQtV)9I9d{r)F7Iy+-Gw=e{wQmD#`ITBM;D1#6HM3WK%LyQn@2ntML z=}DfPt&m4grpO?I7=$UQO-T|VQ$o9}*whKyWz3R7ijmZsT5H6RXxck>aK(ExF~Y|P zb)?h}K7WY8Xbhj8qm6=)1U^ReWQdE|96$Tn&#|++hld|LMM#1m1=<*ybvlUaH9mOv zZ!p-;kj6Q5jKol2MIl*%uWS6xU%tod2NSHfde|u}wFry|l2JIjnDX(Hr?__e5KYq( zAevNi*v;_WFC4<#jH6zT2QMzUy*snIljit4gUDsgt^mF#RIr7X>#R!Vf8O_~s0j}0u)e%++`$iK&h}KL{a9Pe} zD_oQ{(0WR4s02tsNN2#>Q$uJRp@NVK2r;rLTR=dNj3Q{;idF;WzyC+yLU&POHW+UN zyjS9~Gr(e9;~Q^WMb_!UW*yk9MOn2lE=SdP)Q!itzVnYTv<^O1Y_x^;0ll8Zd=ao% zuJD^*d!5t<)DhGMq(KnH^}52kjQH(uy~(Vj!4Lsz#N-J^EMku3Y)$8gx)H`m5DC4# zAs@Y%Viw7i_0X}7J_HQAU3k$9D!{L5YOUc4a@{oOILE>fUWCgw!dfA9zUgOzFe-)I zI$BFuYe^*tqG+sTmSxZ((i($77tEceb{S&bvS|Wb&rx#6)vQF0NGS|kSX6Cf-vG3l zeqA#p1u8I6K^aYE4mz{EoUW*Xpksvup$urIixQ946%Geu^~+U>j%u(zt&tZEVyBDq zszD|z*m(za*1|0`jPqz*hNkuSe7dCe0mcTj#=)FhXd96PJo6ELzJS&i)CSUk)Db}& zbh{a6F`_zMgIXhrBB?ov=IjYLN$geB=--V6~T)h55nbGva@6aAhaiH`6~v|B`kOcL z=GVW-fBA=hjBLGzlMa#yVlMFOl3)4FUq|oiHvaej<&V(MG8mhfL_tJQHNt=RU;Gv> z7d8Ix|MO3=y*;F~EsV8jM5v9yfBoP6W4?OtI%YGXDQg0R50R(SC6ofQYzR^?-kI?H zVvhNIPOTLBMaHISFr7}hyVZyHHMJ0p1S+Lyt$o=LDv(0a3WQumrfretB@xcq zsDz#UG2`qKUO?wGwMyXc-aq&ijL~F*I2H^?Bb*D`9KP>ZWtNi zyn@cK;Hqt5iUP?P>W;yBz2-+BKLJ3b%e$Jd?-`swc!1Tq+~j*AjET^>=`eXgRkf_^8chfcDj;m)4>;!- z!lnr%NfAO6xn8$u8=)n^m-aVA#cEYkiP{(fDj4Uelh6haX(Idm4z{)m)@#qQP9TK7 zuBntDX>eWzG(nhaa9!3|tv%bMa57zUS|`jK;Yk%)y9~7}_+p)KvMf1k6;G>#^8jA9 z38vSy_{!}&`1aN7$h!fq<59Ie*w&-YBbs)G-+KEN#$S!FF2}NNX>EiF8Cn-%Lcl-y z$6v-kX=>v@W8p)DHVKvTytCiKSN`F5(akiW6R0&91&sn17gPMk*KT9Kdy}9>63}HD zp%J{O0$1}ny4^lwY~g)PO9vJiO13O0ShOv*)9^tkAwX-Ph(gme6zL*_Kq}29G!P0M zHKNt*<{GQjCTuju5TRvM0#RgC5y3|qW0;!&X)E^n9mJ01@ny}{M|cF*L2=b2OnMoO zHmE|wMbl9CdZ85Po!;B}0sb<#(nASq~9q26<%N1NUqVD#7<)#W67*TY- zLbr@C-He&;fQ(?S5o^U!t}&=;G;JWdJtXnO%SKRZ!>v_`vaH$53y2SlDIui_!B{$1 zz(i1MjjHx+)(x~Kor*}B>^O&R&oP8RYd1nnrC==yS_r{)?LkIP`i9mTv~6UJ9uU$1 zG+BmRA`46CLBaX7B&yAGQi$y57Tr$90AOu3x!0#GfW5m{x&P{Qod5h&7N-^ZJ=Xbt>Kl}a`1R()*)G&F6 zbQ*2)+}qnjis193Bh*0{LqzUK(lP}9EB8c_v>MhJT3Ymrj4?)9L!2#Z*0o2GZCqGX z3fgKG5DYuuVp$T6N0Wq&j|?$lZVkN_cta*7)RGV=ymz8J`i))u^!*1o*y&R%K}y1^s_^kIAM-okd=r)l>kyfc z5MtuEaF~@XPtPu~wUf~)4Hp6@PUAcTI@h5{*pw`*!JsH2AVE^YSVdz=LvA!CMyMDG z(IgclGn@>%u!A1|`HKaoiwa!_8YnsoC=J@!!bPyHz;&CjJsA_oa4}!;(Jvk#jSqM- z-eUw{29_NSv@udAVeWv;I2r<`@jS00pUzfLA~fBz^Gzpy;c@%!0Zykg#3a}$3WOwR zU1VIX;bOwC-9E&VXV0)d%F%{MCxX%m)(;=!wbyUq`PL&&dJT%6MTnMqXpkA8|a$@QuBKU2KL?s);mE2vL{-UNj0}RYNW5$Y855R@T+|7> zx`A;yk!ffZiKr2^#-%t;vKCw01Hw7bH&jt$QI;sPePX?FhTtf8M|Fm~gl zymjb@ge)(39wKy1(AuCfX)~&f3B$u(oHd?0Y6P8-YXcE5#)#g?pta!nvVj;d(;8p~ zFM*C4WzX>VqJ=0BbRaZ*(3~BgLqD5yH0mHUk&lkoI6a-xiAF=q5K3s0REpg}j?-1U z2@kd9`DKL=gf_N7ma!F~jT@V*L@*g-?B`&I#CW*N!->P5Zn=N!9`{~-9Y6VtKcz6^ zDiS%#VJ}0usu%!9MMxBm3xm39SVv;evCIs3xoWZ1D|qE#gd4L+ErDn~A|hi_h*2m; zh!CKZ@W!AIC5li2^X?DdM@YR*hh8LXcM6ygc(Pg}&vUr{pMYCBmti`uV3WW)L5PX9 z2*%D~xHIDU#S(SXz=#61rig;Eg5A9>&Sq=O=4zkmW{L*g4D9ws)RP??OP71E-Q(if3pDGR{i1+rGqzR9 zs;&`&r*#gK$%xH(3zxGgw}+aU%U}sI*BBNVZ%lH^Vh&AG(q<7NNF=z)x|Am7i;6xf zcmd7rZVx^tWSs<;1a(-@Cc({d4x2VfuN8qZkwF4%mGEj`V3I%?OPw~ekTxdj8X9Ip_RxiNWnF99+Lf4~^&*$2V_dbapQE^xlxVAH5wpXB+8BRLFaWA59Ezt_D-Mq@!>v4X*!u40Kvs$lU zsR$K$=L>J5H|Vnoj=%Biw~?=pSU&m$#r_@M`t{%7ycX=dCTxPn%bUgv(!K^MGp~S-9}uQ^jSAZi06CV^ohpx{YT z6m-)v4!6*88FZ)^wT4NFZR?@)K8J@_Fv=7!&Zan@&bh8PLO!3DESDun;UFh=`#E2^ zI>PncA-4-6*M@BZ7iUwbRn6|TYuI`7Esl1^wEZq7`-zYi#wY5k;&5*Zt*;njk6EX{ z)}%+-{~~S{JFL9oi^~S{qh~yN@CcuO{3+YT6tOPpuHEJ6);%oOE%&aC z$*$CxbT#X`W~LQ9K&3S#3ME8zx;bC(Xy~-0mzKtM1j%Q#QDE|fJZ^4<&jjKlbrNK5 zbNJp0BqkPCpshs;iJg})qOnLZQ5yl1fkjKF1wu`Nh)H0XNNpe~5t)IGi7+`bzk<{y zt=7;;OirV%h7PHe6e*WQyY|f5w z{OBPsPR}vO9dBOUhq-#2KmOziPft$JyLOXBZ-9KVMLT~^FA<91susj%#@(Fs&`51V z(VN9Or2%ani%g@bR*V2sN-)W1w3$Fsf{6l?WiUz5`pB-^Xo$8BOdA*-v$+X16SWoO z#)3(Zm>40TF_0*9u7frWZd_G&$gBHT*=U1yw%~*F8J=9!yf;j|^~N0p zt=US#iziPxKD_EDajgYHVjnhvb@%-~oP*yeTa!omZ25QS*r-S0!0k7^)aO36; zJ~%#Q+XmF@lIz(y1_#$TUzKzcQPnNm2!y0IgGrSj!z~WCM(`;y?{-nuo-svaMVCe1 zWdPA1^l5Ci(TvRH@F~G0LDG?3WY9?Ph|jY zU{WG1A<%>-Bql=mD;N+30jV`0hSVaPIdtAfTQywGPGFbMsTU3J?hdfG-{bm1<8tj8 zR}Gl=*c%YabjkjN+6hcdyj)e7UCgN^a#3z!DT)aiQTI5${sl%!IC*}~^P?l4K6-%i z?35B3oKG*Q#(RWHxH;LP&MYpL6$hOh{jD8-^!OQ1E|vf^ttPH)57`^_xSURbMZ?gn zp=g+An%&G{wV1K)jIjImZ?L*pqAeUh|KMZj%SU|Wty}CL+{El+!379ovK%@ln3Nz+ zkbI-IhqaJEUOBJh8ZKa_lBJ8O!(Y8 z#N`>Mbwqu+ zhOgc}#N*QQ!C(J7WCWj1FLCnX1#ev&@cH}i;l=y!Q=o8iKBLibv*sh|C5)6omlZ-1 z&^pv1k*R@}jhJg|A$0?q&8^9Tg2aS236UBI6Qd{~*YHh4c!8%7+Q1_*hyg{QDFg+p zq-iOTB!t!=$T~Ebc}vN=*exQb6_{#^Dj62tfEHxkM09gU=L}AdPM9t$+JiB&L6--w zzm2Wy*SUB7HrpgPJw4?wK6!{|j~>yUAJN7J!(PVWa6mggKvY8CG&oz-qyhK(L#$^F zn?}JcfKr65nfr^RN zS~T7>BtjJhRl8KE*6kbE{nCAQ53Ykxp78X^ zQ-1i~zrgDFIZtOR+`j)s4yqYf%^U|eu5o8PV(=A=v#cABr!UUAzkfjQ1AhAOl%g}V zmlgZ{E)p$s7l}|~e%8=h3m*bSgf7n!>xN-=fkAJJv-OJO{s1G@a@_A=G#N2-z@%uo zySt65_3UJhF?mpfA{vq+MHKRmrFnAWn*cgACLqQLV>VlaKt^2{#4^JB6}8rQInY6? z6gxUcWCQ?`5y2}mCHO3ZGKML&2*Hp{FiJ5o!I5Z{*$B1K^i_pSXS8;++-xlnlqMi> zZA1V3h@)+T3-4J63yr{v#EwZ+QJ}2j)wkYZe$(K|(Fuokh$lb(E6#rOXFNZ@M3!f) z%NkdAhE%5yd9c&N*1az>HyxH`310=$8dPn|XVWFuK_i4n*e*mOLrAEbKmt@=f!4AO z0d*U=GwE|O$np8}3)a5H&wloEzWMcUv%9?o5zFfIAx8az#uz{wZfy;4Fpd22ho2Ep z=yY=S`#lJRmx~I{S-K*FdA)Ng7NR>*V$bq7fT86z&1 z31_pK7a2L6yY*tTCu|x77j^3!xpVXRv_3_?B)qp6qO|?irNU0 zD3;2wJ=g`ij!!>(gy`42xxa1WYR1>!dJXJ! zIM~|7+3^b&PEi|RHlNYbGDw4_uBfvf)@8-E_Pl##0;e?}pEh7t&@V0!M6(fa&~unC z!6bl&rZJjT6HqsSPy!znKYH+(-JJs*T))F}MC`=KvMf=qGVa}d6+5@?@>cwq|MUO) zukiG2!C{eOIO_6CuU)}AZ`|OE^Ev+H2OrY>-TT|<(4z4Hxi;`d5i~%ESSQ6S8v(4~ zs|0FG*VC{u;)4&Laxt4>J#F~P?jhc|H^Qn31QTKzxP^qI6-~zhrGhPT=6MI8V$*so zR}H(}9&#(p@*bigGean2Suaj^&%L-M|MA&iK)1&tZP}!7*0r%?#Wray0HD z?-&#U_B$G7n4w(M&=$mGfW=9|^YaC#Co{ZQHl!phetC|cK3THJGW7ZdCj*Boqdw7= zXx0~Co->Y!$Df|_{QMHr*^+);!(^7AKqau-?O?do=gx4%{jEOwM$rk7?dIH@WH|a| zL$h}anZM-xv(IUQz?u$6hA5iIv&WBle02{-DV{$59OcDbouC&gUf&zAY&^X8FX!}$bcWU#Se-UgNI0(R zhDi}xTRwhvguPq$s7!`S7MqgnGS21|S0_&~?mB+$jjMR~r=L;@(9JVW#(m7!4VUX0 zxzRNL^q>AIl4=meQJlbuL#Jyw?pnNZb&TKs&Rf_jGNPa3U;OBo_~-xfJ(^aK8KDsc zZOqGL)`P}uUWn;tys|gKfAYKEz-zDGV9Y!Cga79T{KG%|f6>vJP7AEwOy| z{V&lQ72F$j(9yzv;n3}9b~It^W{WThnIzJXFeEQ$m-zEP{vo$+-$Z|Fm-E>r$`JVU z*)j873+pT&pG@&|{RzMLjjuBg5#?V$c8`-44zd z73Z@R`~4he^9P*G=UA_19B*x7=gM_PrAaNQJYI&FEl0f}C&L0yPiC7%IO8}P6g;0@ zV%V|V8ujq$@s#UwiKC-q9$vkUI$2)1b&KuEQ@GGF^~N~DfVXcA@U>U>_}-JvQg@1i zx^C&i<~0aYq{QSlFqkZ@6{JF7M4{g?{KfkZ@o)dtyZEjD^grO&zy3vh^oxgl|GlT^ zTh zO^DD7VIVB5MdiCZI$z-Y@gx4d|Mcx%9| zQN(gp@?u%DZq|5yyyCJ^aGB$DzU0O15=E!OAPG?=jyewAti#28j>Wp9Qa$cm-G}9x z%heiXo3ZGwQ7-0u>+V&|lBOY$01|>bHxC%Y6#pMF`g>xG?