From ba6226edf8357d5b5f61b15b84600e70f04cb81c Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Fri, 4 Mar 2022 09:46:32 +1100 Subject: [PATCH] Fixed reading 9, 12 and 14-bit PGM --- Tests/images/12_bit_binary.pgm | Bin 0 -> 32822 bytes Tests/images/12_bit_binary_pgm.png | Bin 0 -> 20516 bytes Tests/images/14_bit_binary.pgm | Bin 0 -> 32823 bytes Tests/images/14_bit_binary_pgm.png | Bin 0 -> 23481 bytes Tests/images/9_bit_binary.pgm | Bin 0 -> 32821 bytes Tests/images/9_bit_binary_pgm.png | Bin 0 -> 15604 bytes Tests/test_file_ppm.py | 7 +++-- src/PIL/PpmImagePlugin.py | 12 +++++--- src/libImaging/Unpack.c | 43 ++++++++++++++++++++--------- 9 files changed, 42 insertions(+), 20 deletions(-) create mode 100644 Tests/images/12_bit_binary.pgm create mode 100644 Tests/images/12_bit_binary_pgm.png create mode 100644 Tests/images/14_bit_binary.pgm create mode 100644 Tests/images/14_bit_binary_pgm.png create mode 100644 Tests/images/9_bit_binary.pgm create mode 100644 Tests/images/9_bit_binary_pgm.png diff --git a/Tests/images/12_bit_binary.pgm b/Tests/images/12_bit_binary.pgm new file mode 100644 index 0000000000000000000000000000000000000000..ffba26561a25cca099c733c5a6829aaf41a29e44 GIT binary patch literal 32822 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 literal 0 HcmV?d00001 diff --git a/Tests/images/14_bit_binary.pgm b/Tests/images/14_bit_binary.pgm new file mode 100644 index 0000000000000000000000000000000000000000..46d6acb18adc44a1dbdc3dadb07a4cb5067eb1bf GIT binary patch literal 32823 zcmZU51(*}p_cl9o@604wwn#oeuFp|}-T z+`cne=#T!t=Y2ABC%f?QzDMr4=iZ@8vQ{e9rhN-*&n|7cb!*Yl+N`&=X!B0ZT3D;J z?$oVQ*VdhWT4GJ|`nB;1X;%1X<5LpT617w?E=K-9HKKVs8U2j287reucAP_}(y>$w zoyv4#4$y<}WNgQ+@SpS``Xy~ei|OV#&Xkj0&C%F%#8D8pnd^nyY6df#Q0d?_*W-wX zSk_Fn=n@k$cH|Vv`ZbHo3eHTAAFi7by3zPY>;rvQ{U_rT!*zD1agH%Kwz{#s{;0m2 zvAMB?F~o4lP#@6P(AhBFa3S!WY?y4AY~8E;gB)JxX&b*YnX3wELR1PVSZTi@1qB|Pmz#ex-=|2tn7l*% z2K)z*yU{Yb3q1?}gpN?h=n$#`y^e0cbfs(KcDNWGg11tCGwrCG*hnp5EL<-`m#|{a zf5H=KJ>3W2rY~xbp$icWUAIF$s04M4DT_yGGJ_8!_%dE*7G$a4FvXN@)EizHjv4+2ZhMVO*b~MjVC~j$-3Pd1+|TB- zF4kpyXxtCJ5d!F7Z1OKx)#3s6|5Jd~8V`ft zDb#&H4mk+;AE!U!QRorykEP=2?Q|FBEIks>$DQyN{GM8<@lajRW$HF{FrtE%jQYn@ zJ#;+2L5Xx(sxz|)9SW)IUKl3f>NuU2=&JO2`e$Fg>@ji}f7JCnldK|H{8P9!PhkX5wa8VGdz3hIMw=&8CC!PG%Kz zf-ZsVF&&)+^h>HdbsjHg%F;`8=EUL&m32+1`Y4Q^NdKaltgICWNBkpv$Q)%ZLqD_h zcV$NH*A-~Xg(&(BrV&P?@i{wz9b~*%&pA7p-;en5nbXd|LXKpMo&rD zKx?Syknc>iiCIOj#0In)r{muEHkHe`@q4s`qVNe^B0A6gG(7iG2H{L)BT?OHYQBl0sV$PQ?+8AW^~Cpl3O}yp?D&9zH5dfET?~N_pDd0 zgIZZvJw(>eW)B$j25c&8`e@u}7;SvP9$@={&mRE(t5`4auW#&Q+-5wZDger4LPTId zN%aa!uVv0M5WfBoRf+K$2dAsuB!1ITa{f1j0@P0>}Ga5JC9ukXbTyzzHtU%U4Vb6 z@geY40qnmbKfu3)5dlho4l99wbKnnA1nMmWe_CX60sEGK#io1Mhachc^bP7d@J~T! zsnK*CUJUkE`9B8!{WJ~fi|7CK8@3I)t7;H|R0UBg#Yb z)FxAuou?!5VtNW>k{tGZN=9yU?sE}S`tVMcelg1|d4{CO-;5KSE7N{Si*wd9mWcUa zU1nJs8E#BqdIyiqlyVzopGuf5>r9Qo`fp5LQxLl!{C^qS6<`HM3j+##U^T#A3!YKP zct7wDC;`?lVc2Kb2mJG3tn!yZfh%l-z|UK-`%N71U#zkR{u8O6%xyKZ@b5T@e1nQm zTbW+C7*e!G#td0tC0Mo*#o`Sp371C{`0#OR40Qz^LACK!nv43?btU*b<)vpaiA;5x zq>w>!cp(}FQqj6_|MHxm+%Gxja?i8l=-D);n~N6Tp6uw1#?r=&it$I1>nD_wr)GCZ zX`bwl-c421&DNCgR?WST(=B&=ZtJ8m{4I8kX}2lWSiyYXP{y3h769W=$c3qp0n|L0 z$W||8ui8Ek3HiWT_5DKY?`KN_^E;rP0@j}i8f3EOuV}$8VxO_kaCJ?Qgu}7*nWf}H zoQP7H{gg=jiS}rw;baQppJ~aMf&XVzK(0qoR8?vnH4u-(2kBZ=Luy`Rx~oL+E_{hz z#bm?p4aIqep^kF&Eb_;w^=Wr<%I9{^UYL6@XKu_qDvv40m@UEHCn<93M7I}t%0cjAOHP<=vOt!Q#~RO`**$no7s&IP*3m{%0l(g4!}dG6pE$h(5tXOmcZ@kIPxrghMoY`ppH5U_U{J#GebsG z3cVDngu}qUjOhT_ze8;AoPykYIZbn%Ic>7$r}he4r}=}D>7^lqlDj23k{hP=O4*+> zF)1cxbw*~Y5=W*ii5R457(7k4-!>-q&zwoQ7jk>&zRJCx(<|u)-;6zIZeZGMXwOxI zY<}2y9Oed?2f*SVSu@l_s>M~-Y6Rq~o)E|Y>T^kWZt&IKDsK$_(-!InHBLH0c6ny< zp*fm$@iVd#_%G4r+(EIYsU+$cz!k&~J_f6yl3mef9qHQ&oj%B_(*D(gw^vE0S*Ih5++ zV%g#BOtahAg>3-!ZwIJ{s=}wau`d9k9RS<|3aHFf1XO@~K6^EwKqky0{h)4I3jEu` zxB1`rQ?+TIe{;^K%=GlZ{=Xv2(0=?5ourbP<8dSPztA7>GNuw`#FOwOIwoj1@P33J zQzUf^`zVewge`RK4L4H^9m33`OVIIDZT6wDD6sCkIWUB%^asRKT@Tr&s0NvfSw#b#~DejVFogX_3Mq@ z@piH*^%F{@8;6Q$5tWSpp*VaoY^AGe_({BgYRBYL`+$EFLp}e9%o918=_@Qd4bOB% z$?oVT*&MGScaV?hMfi*Lma|L3&2)cS=iJiSdvf+9S4~>(_a&^<2hlHd9iZA8gr707 zhH0*bDOaAAnE`6`9GFS|G6|;Drq!+s>9evr=Nht^^sAf+1=G*zFXR<8Nb@#1I=O$$ z&}f5iaN^78Xzaxg(SDR4jKuDm2B-k9#$Bm`uv*UFBTC^JRCi_-)t+XllKQ;lJ6Z2C zBiSh-)riOB6XG#(T0huajESO}pcu^-etecSqj%CKM_$^ooT=IGebZAPRK|vNb8c-JbjWQo-R#SK_7{|xM@hm6-19zJT56 z%JRPP_ez{;xT~uYwwIY2c~|_K4mSK_8cDTeDnveTtjt`TIWBD!Z)Vfkr>3+(-Zw-3 zHwETERe^xr3-A9Q|Gt6j2mHbJmx2OEz<*wT&!1`fv1M0EbogDdjj3BqWBeiV zg7de`{uvK5+Gf^BE(pzHVqt}o9CRJyh??oO2|nUi zv@!aGH(c^jGOURPQRCgi6JGeuUZ?!P|9cwFc$IuUCC1Xhb>@;J2Q#sZY;GGZGnQCnlz)WDQ1Tw@O7`1>J2e_O11F`_a zOb6jph=VG7^Kfz~b0cbE#wmUd^@#c%XHl0mbM*^7-qg}L30c=OKc%s*irOReXL1T^ zg744<)9}oOsYT;b-Sva}Q^Ry;91UW!@Zb1%rYFpj)lp|kPu?Q0p{*ze6(c(0Mq~&x zH;iNFgjkt@acuk;cNKZ0;Zfx3u(eU`gDXe=7SS~7A8DI?PO>|tf^}b%-n7f~1(`Iw zVUO>n>!p3GV^y#wq!k^6N|UGQioqP41FOT|jU!Dzu@k|v^VcinauG=%(} zFp%eP1=O3$B~yu&RK1W#&{>+o=wW^NGhH8Drb|+pXcF@~9f7CoSf-NBqI)0uDWZp4 z@Z9zVh25fp@G|`bF(>2})0T=vHK-QE8d#x^)n~Hn*nHy&VD>Ytj<1@q3Bw$(Ld|py z0@p=g_eJbo_J90U59n`F`Gen^3T+S8HxH+7(_cb2%Qxw@^l0iRs*Nh)c2qQ4sp;ZB zkU84C$yz3!N>~{3hN5)8$FxhEdk-ub3u)FoH}>{EIh{y@E;YA};^iAzKQ(Ev>*&IUce zFUe+P5`~GMQ3Y~H&?2;e{EckLgwZGQP;?$$CkK$1@fBpmtB9jm0{^Z-_oo(7ceG>l z#^5ko11iN4PE?aL5@xa)T1gB;1BvIjS=c4xIOE^!dYH+|vfE7ufX@LlWu^k7hJjW6 zY`8X5l~7dxix*;tX@@!6JRsorrGfb&j!{9?W74R-(5E@g?8kL*5=GD@h~ac+O@2ax zF`6ks-_~|x&T2YQ94P{m>V~|`UVg?m(0?^}9Lds~^nxrPCKhp!zk-S$vI6-y2oVAld%(;uc$rs}}`T7Z9PbLjy8Z(3Y~ z-i8X$!JH1r1`U9}YX1P>_X7%);mV-duri6ELo}TRMR)*>Q*dz}%!8 zGyUie)Q{*R4ux7SnXj9=HtLL~wd~<1Q}gjaDTVV;4%C;pOWH6Z&O+puLc7Qy^a9l< zw~}kgXi(q?3PwwcR7AyzqGS{?kr)|tn3zRYC#pfL>?9r$S;VKHnL#rVLF|D)StF<_ z(Uy1_w4c%tb;$ccEf7tNLL=Z$pCSi^N11l9yMX^R;KxA^L$$u@$*KngJOM`6zQa4y zy8wGN{|6KR6~1Oauzwk-%cnxGwj6UwbCeo@UQ)l|KTvJDv35LHJeOU(<*k5d8er**BUI@-@Fr`+87iFXrS6xMPXd1F)|FkFKupQ z{uN+ReZy>lC+Gv>$pQYAnDv@bu*!GhhEywjnO;I~(qvO>>BIC{#>|)@M@>VR+=@)r z6Jft$3>i{`8lZ>NCd)3%2(%jbS4AfB7`cKdiiRRPF^qVR5Yz!Z5Q9kIN)YXc`Q!q$ zmkffZVu5Qj;J=w@O7sWL6XBbpWMwjp_yO*dh)+aO_{k13oM;$SF6a)in6QE(&r!$F zWYad&P4jBgA6$-UF&7V(-)a5~*aRmHWBxUD$oI(k0ZDr ztw+dbfjecz++~RGl;rG0g}i8#60kWxZp(72Xj-dl{uXoV7dqP zKWP5U6g`Dn!4zehGIy|x zEI}nx7E~KnxZChf>I!q0zDxfF{5#;~WXQ6x!%&3GCCiW_NfTfe{GAQpx*Ixg zCDCAX7Du5U$R_Zc3UP&KPE>+ecoeiK=nhGMQoo~MvX*wOd7b$ZSH)Cder0ZCu>#Wp z+%CX?uTaM$0tl$^offKB1o*28fc4b~_!T-GnbdIl4gG?-grmqjY6BHaUd4aVA1Ri; z%FJRaGnMHx)FDieec@m4qz2Nn(C^e<;sS}tjrg{ClsJIgk6M$#xPzCUU0Llb1KqFwT;=1`du0c1Zex!e)XELjB9q0kppempv(Dx~V z>#32?3}Z^syCKtEA}5dwfqw=3ncj|~2nIbvA5k6iJgZDDg~<0qmRmp$K_W3LXd|(k ztW9K)ubH8dgnl)*!s@lIx4sk%)=O4BSA*lsK0~|Mhx)~_cMR!?fmAWN16`46flHB3QFUrGj)th%jczfsVE4;Q zFQW6o{-wwfz`q)vj!IFx&?ne8jUxP%WNBncLj6b^ae!7?Q&3Zl9CJ`g zvrTqHIDdBTah`RBx})6ZJUZu6S6kOI+c~AWjZ@6FqqebN_R_BU?&|Jpu8Gdhj-mG9 z_7%=@_KN&0{S4*}3Ja=7%!I%7CAkxIMWxK^xG;-k@qq1LbMGxZ3Q?#7C{d_^s)8B` zyFh{eLe-%$Fjq0hVx>5GFI9t1fqA|s*#B>&q3WWEXb*h_?}W~OeYyqsMm}{L4<-+h zBT!k&PpyD`(0XJwNVa$(YQM^ky%VzVZXlt zjbQ%&o$N!7M2%p#L=WA~G0wdKg0ID8=>qyICz8nv`vrq)bFjMj4@JMZ4^bl{x|Bw!t|5i|) zsfBcHT2}V}=^yYUnB%7a|D8-nY6^6~k0LWlM5DN&kpE4@TXZUDWRYFWo|p@<_UH)H zep`~u=YHj`>lyD^8@JLs)%P~Oc!HeJ+<)JHJ>HYBD!!3#xqrUzR)Qn`e!LXl$KTGk z#yi_v;Hw#b+&#*f;i~UKPOI%FTOYB#Fk2rKs*qDrOJV@Mhb!QI<-#pFoZV8@a-7$L z2dLby1fbsktB2|rUt`2F@L%kI zglW3(`3}ltp+V+-fmTi`Lyp_9ddCh<1vv{-R z3UB5c1fbsGS^XxU#7u~dHFOpFrt+UaZFgksUfub&x10u$A zKjU673yM^GY8UKEn#7BZgh!k5YPWv&(@wm>uvA#;)ioUxE@xBJ$hwk?F1IkRL zyXkgpF?~X8P2+sabGeI~a8z_}l*>ui>_wCf=Jwo{$O7$jd?B>1wW75Ncgxa)f5~qL z{{4WjirM_Ne>G5_uLUsMN?9rX03e?)$zy8OUwr-JM(=<9>_} z_qFi0aBs06lZNo4^n0T_#k`Ngp>4zI&}Sj3VHu(CBOXO=)RX#fLtk_C=tHnVtsdD; zXk$HL*~n)J>DFGrMzwn(dzJAw6|Px175p`8DL|nHD)W*7Et&xPxxjv&^;TMT#-Owc z>DyzIndihKa(>jAw9}a-*%t2nw2^{_&Y{LrTdDJ~CT@UwkbB7rs2Y<>^&tmAEj|<0 zxc^w+m> zOSlzReNV%9UHlM#n0ttvY^`U$X>f%F(XT@$M$I-fjCIC_M&)QLY6qK+$L`YRM?}Qz z*88+owBfPqg{AxjOKZzbevf4?U&(6VFY(jhQ;2ESIsiieaOW>sv%i7=sCt5`MF6F& z!>k9b2h+Dgmv=?loMdyzMtU>y8&0SElEr0QO`ht#uk8w}{&&<+@c9AwD*7Av>*!Y@ zAG8P1L~;(w1fN*MH|CS^E$H@^32kWhm~I(H$99U^9rG$;fv$n>N7y;LK^I{TYP!Q2 zk+a(AArE7Iwd{4g_FV*I#=lQ^;NR@&CeJWW4Syd#+SpoN&vmwXMYmjy>nsmTpT=&a z`s<2mmIgP9xEo^)8x?xnd{J&CEE1xH3f9uR0M`IZ;0c^nB?P1OvUPeug>U@(Tfbo# zaHawtp^gIZoX#{S4oGR4F~nt}R)r3X&rhF|Ha{&ad6j;=CIbCMRiH*tcDgg!Cvt1> znqZ$a#4(W0!HL9AP>ml)V=W@LoF0l6GxRs@Up_hWwsjcRw-m$LI z;y|d=y2xGS?XgdyGDEkSj>>-Td*7J2Y>(hb6gwDSa@E|4LLKt}-3w;5W_iflh&PswGsH2 zM(-m@6a39_lcJWA*NGaa7Wss1j~ZGUnUB!f!5<@+ay>05c5`^&ke%dtsuS5=v(d7U zj}t`wq>!W9$J$03Lre$7DOBWV3q!>@j(5)G&H=JdJj`{5n&m8q*<|e>k+-P@!5Xbk zQ#N#U3>|qg;)lrh;RT_RCP#BRY8y939_~6~PvdupRfL1qM?#V~!FnygQe|BTU@oMq z_^Lr6^G^Z(D);OFe_$@qLTRD2xX-(V8K;SdGfi!<2p*P0~-Nlrq%aTB6yp5jVzBCqx@N8RgtxpGhPfKB3o#; z5X;~MYHLk%ZQ1a1kt1T(aP17~Q8l6(#;mj47bh9tTU$A2Td#@B`JvVy#M44~q0x8X z1Wx!Ba2=rD8^Loxi?3>^DySatNyzyIF3+?Uzoom=HSu52X&j<06aO+jFR^|4tc1?G zY_b-1!|HD@ctL(xUv4Lxpeave;aJ>{(2*j*eqE zagS$>`3{~(m4P#$&Cwn5eAry`EnYE}4BAE-Q3zTI(ccEuF)b6k^!li|VtDlRsF%iu zYzDi}n8z12zK(hnxhaATdl`Bq{8YpYLy-QBA(E%8ujEjHjm1J(zVfdj)DR{K=l_K|ehgSHv=iLcN1C>9+N(M}hJH%lfNteGttMeb z)CB5hrUQLGB#$~q&A|uZEbwi-JM>0u9j>v`I64iy|1?^PUZMo@D%Xb}ja$WLvk{R` zjq^+~rVhr=(ha4f=>t1DVt#n-kW=9h_>$o4V-FPv$+N}RF2Z}yaY z`~@|pJxmug82^qioN75kO`&qoKHMCQqtC^(Wl!OL_$BckdR13Z7+*xtqYYtX)TFSN z<_~O`;SyU~cxivcPvU>pQ&C@{Yq7FW#ogL{*i+WgKpM%vbZ_-=G*F8rO#ch3O^Eg}C{&IA)*RemB9&ADn0t%081Am{*(H3`-+RHkm7p=oFb z>wPKTvO4BEKS_Eh?1W5v&}`I$AM^Rj45=kQ#N1d&_QSHsdCI)imf`z5VM@Yye^f#( zag}ql`({Fh*RFJyPw@wY+fdnD6ZX1FI7zvld`x~SwHM}?-S$fM-(&lTA=UzMvUQV$ z#D!utal%)|H-P(pp?ZNutN^H~Dp1HhFjDz{^#NQ8&VTlX4&XMb0(p~c4ZB=f(7%X) z74RQ;6qP|mLw|HARRvvz`u{$0nrw}lqaFAi^gkw|`iL|2wBAI!sFz%;h#X~r_`tLv zb|=g&hh#yhDhF{(^+`~nKeHAW4ofz-H=%I?@4fA~%XRTw@-0eSov<`fNgV9%C&&9F z|0n;;#H;bqUdCBL8DVSUTIgQr_^h0lr^_BGj9nkToB!P|T5|bZ;ZO0XP)F!5Zj<^+ zytq#s3fKpF>0CA}JOZj{_#F3VgM_>H`7KFTCP&_%r?k_>X{oZfD{ic=c}F zpE?LD;D%U-n?Zl5JDiTMhr`K-s0G=F7>CP|7s)r^Hxto%bdnn`UM8C9rkM*2k@h@E z6I&4bD_@DC>m*b#R=J|?kb(ys|~{Ergn$&Ktyy{~;s6DlSZOFR(2 zHgT-&FXtCue*CHUAgGDwdmp&pda8R$IzHP>wlhkGCCx5ajgigREZZZQkV;AurC2Oq`%;B)Y%LoGZH_&>)@!Pj@d ze)n}yrWh!bP1mIA;>+k6^r*W)2j~Y>0y?4FsdmH+P^z0LS9FEkw@vdI`5VdxB|Ek^ z7b$MzK3IQ~JITLV|28&Sgyx=e zmU*siz8=1d@$chnc;-7vSBO)zndHmzJL`|a1N%7FQ1)kTn^;3GBQ6$Oh)Kd9;z4Pp z_$9zUVD|v$eNvw42ZdwR4+8v0i=)8<3IUN27zNk^{~B-|CS?!!zXR6#bx|j>7D^#?=s0l-+fWm<3Dtr ze*0Z+j5$g0h}-2F;tfl_BRhU_VrXK&_$uBT?z3DQu83=8-0Ot+gfjkji7gTf5XbEp|N$Jw9_%!v&Y7BXT)r2jyPQGDjpJZ#1-N$ z;f7SP(C<~o0erJR+~K*9|8d|y8E^scO^5bk05}cK_7A5d>J_{PG6z;QJ>hKE7Kr%k z@J>uC>Q|`$NKnXt8o<8ATH<%;@iv0KPji$&Ehcr$Nb4eJyzPwVvj3wKJNGGD?dG^S z&I^{m%-tdC{ZcRcApRHYQQL($ZQOZfG=I&oQD4e#bb zqNP6D)wEo{)liEsa13+pa<_3rSzie&f$a|aIFD7r<_*eNajBRq{v+i9`zO*5;>_>( zmnc*q;Qx8w`~ZIMe|Rmv7Q27N262P9Ron`@JVuz|C8{0P1H+-f|A?9oVCKIMaX%UQ zK<{A|D1~OhskmyyJ+dbJMqilwD-yk^B9`N>x2|PMlJ`Y|+qKhv%X!=$=CQf1ii<5h zEm!$Ov8Uq)rJLnV?BbaHhBJmMh5_MI#T#*1u0K7?e7Om-e_8zG`18Id-fgZk_N%5E zwi_;^V>8T^P3(JYwQR9sZE3zxU)k8!wAQFh7e#YEwZI6#Voto}s$C~cRwHJ*ws#hEkjOo>RdOy>*AicPdQh*w#j~3C+TA;j&ODNY>LCK zdbZv2Ir*IOBkE&psCme{F}lYSe(p& z*xyd>B9Db3`)+qf*CqEQsj;tf{19QQoa?9;*V?(wu|!yEsmSMxFD1S8wo=75!AZDB zcz#hf#3~Wj3_T*BN53^6vP_d`S&~PHciH9og~2r@__L-4=CjSFLUv= zlp>{&Bj_01AN{OZgt`!)Q67~}l%Y~!%>y$7Dhid+C^!-P87ZhJWC{cEqgwZ1GxkQt zD8*cF-EZ7l*G##EZv&j$DV_QXV(X*tZ`fyEu{cXV`eH5$O>d8LkPe(K5igHmb zYB^6}r~>Q@GhHEj z$Ql690J!&%HcA_*bJ&b{W*_Y5R!2>WTt#oGVAzQ*plV_r^tEO|JSfPDoTww(g!Pak zSYY4JP}{NEvEDt(z0h?Pymy_is@I|vSNc15I|!wxW0zZzTk&Tn}fGL$TGjolyFk&qOR>E`;*zJ8`h=mntjAEmwmN=rWBX`L|+(R9hNsyJBxD z|LHJ#2Ri?D_p)>D&hmcoFw}c}q!8F6{8M}-WdM`^@CWvw##i>L0__XudAO^7PZF53N`X0H6W58e~*qC#`wiEWI-C5OqAly;UL(J}hU z$|!pWTZ*Hl4LN?Z-4Xw?bh7%DjZ!zIhg2XmR`!`^Xa|IT(f`9fsZL92m*b?jp z_uaVR_F|p|u6p7oaWHV23|YS(Sf7;o1o#(PU$uW=^d0*`A5iCdm3g5je6K-|@Ln2; zFCCRhmBL-%JjP}EG|A&~5c}o95B5OLpNos4zsPmigtoyB>~zMjtaM*>opHZ*)^=}p zSzJAwer2N16IaJ^l*iV$alyX3aSQ#gT+f6vGG}|?D5b=U`-IN1{X<)dw{4QWwxgW$ zko~UXp3C7XV{hSVZOc<6E+)C;FR=Pu;T_{@WFZ2-&7kdgua<*zEBdVZnrtK7#2#wza>U+w=*gAIjI;Ou6bBRr)(qGUL2 zv4Pl0?!pC711`qH$R+STa1FJ}#YM?4@bjkVUPzdAnC*;vk-LpM*AwCX%e~88+i}Vk z?U%hq`ySS5eC=2p_arXf+mmxym)fdH=Ug4-M#?@@m9Sm0&!ky)lVi5~scWRCylYcj zw*PnUM(-~7756sVHV5bQJ2+*l_#$df_%Z{{r;4i-)-gokrQ6;Uo-ej;wp96)D2dfY zqu3p0fDsS@Y83x#br`|;KkQW{c8UW6I4B;3%4xV*IskQaP`oYPPPpjA#tu{)ayq3a z%8|RYgCb8bBcSU2LJWXPXff>jKgGS!-*5`Cw&tOUv7NGSbeD;H5eeN9{H`bHt?&B%q{MFG=d9M(B+lasTXEJBk+ds;?r~}fd2yVws)!PZLo|RQE)Pk zSR7{M>%~gcHIk<4z72f+;tgB zYf6G$M zI?R69xmt-5Zdv9CTg8FGK&gmrp;Scv$LNr{I4U{bIxZ=^^1f{)LMe>M~ z#NWX4VcjS3(pNimB}pS$l76f`sOf9&DNlD__H_0faw%~co_yy+4KaHgGXfYgwxltDAe=Q_j}I#j{RLtf&P095 zc<2Z8fZFIItab(?gxbEy2Jtl?O0dlh%ragIG~CV8`| zAS?k+6W!H3VBSRz=AVm~lwBU|tZeIJoo{a}A#n=**^-_Xfj2XmTlpZ*?NS&og(oku)G!N_^0keNS;GPH8 z9`U^bUs*E&UqAF8{wo6Wzd8?oR|8U;a7D2AJjihE$!6xp)?IWMX3%k9eTC=^9nk$~ zJ1R@M$xU=8O&)zy6K!teUg{a`UgPfM@w&D+38%+4%CpF+gMA#0g_mlIrMUReO;j#E z82qPst`sEAvzKtaaunfv+8p*+sf*CZI@{XYGS&R2sj{)7-e&mGbeT)Gp0npVCfc4T z7la$O*UD#GO|gm8nAgOtH@vab5O>QZU^TTs*2sG4taMSDD-8rdtiu}M@P9O5!0G_t zKRlqtH~SZ^0}AT^mA|?Ug837=pVLuAd=hr^h7(2cVNeM?*OXJHmZ@NDV1sUWy1 z&X0Y;FBb2J10DI0sd%NBa?nxTwo?8_sA^hcFzLS-niyWkwlj1vt+8gyi=~TVh;6Ad zSza!irRLV1;u<*V--PRCZYFGkntzg9O@dbmWiP~uB3ps=5~;OZ_U zw8xoH&1T(G{wHUetCs5w_;t2R<0vn$^u##(a^<+H+!ryFuLCCwlKAra`N2)2o0?zC zVL}D5v1O*MxIIEVF4(26k{7DG(T+#1YL0Psle|+Q#51s4ze9Xr%d-!*3(`dUO#ZGg zLNrF*U|(CCT1r6|tA)Ho+9#EfO>!l9wR}LHCVQpRQV;nD@QFenQ2pSrJQA*DfO{Y+ zzykua0L+dmf0er@aBVLp1E7+mwi171EuDe$iD5;Wlf{BYq7k?!8G#nTY2Q2K1;_-G zP*(*zcJ>bUeDwYpH`~+Cv&s|Y z{%D&eQSvS5oo%x`lh(y>>IqfO-+V+=m4Sf%MyZt}=8oT#-9zq@XIc}2ci@Uje zLE@}KP3Zy&eZO*+@#f>gC#gUZ!OzFS=c)Wqo(udJ%hlzM@*p|y8~<Wc75!1k*33p3!i_|L~tu)eT1GFim9%F#mdk(H)_K=UZ^^Co zkg2;Vt*|x}){7hD!B8VTk)1IAjg+3sCFNd_2|Fs0a_aZ&Rqqd2|EmV@r1nEp{{LlP z*b4*=P#5$D*7objaj>g7np}(8KrT2)=Aj8t1sp`nm}!vr_UdA^4K%HpB@EA;)~?rG zW;Vrkv!ywniqUc>{|#xRrHnb6onYO=b+hL2tNDpa9@jmVrb@aaU3Hae7F~=j@=0us z*t%>};k0y4S}s16hFKR_+gpC-w@NwC({Cw^6!uvJ!}`eWVcmi=!U`<+9kVRg$-hFK zmc~++R9<=`S63cMgJ8ygD$8;{WWU|g2YLVh$A6@%L7@i(Vj?o20Pqi3zHshWec+q@ zCj|J<3Gn|7Z0-baKyc2fG`R?+(%IT_+UDBpI#JtCvyC~Tfrsi)#-SEzksJ{~XCHh)q#o!CfzTjxCoE%{vX}L{|!96ua*dw4=GdLM} zSZM~cUmM7Qn*dE9_y1q(mz9smBLn;)4+L`J|KYFtK>#UGKLX&rwkSBqRT0jv*M;|6 z>LU`jKqJV(u)h~hw+ODO-3X_y9%=VzXKC&*hnN(miPo(R(zer<=eEkd#W%__U%nD% zsb(&1sK?Lb2MWKKv&34K0cZgc!#Uy|=F3W|c%H8seGuM$+^x+Dbw)VC>V`x@Hg)Un zhpq_g5ZqDIQWL6c6mmN3ZA8t`rXfvCyQR}gr2V03H;K`4*pms;Q%aotL9Q>yTV1n>xd{IoL_f_a?Qcv^?Ph&fWiI_%=Ux!g#g;8@5qp_mhA#-a9=bW?ZHSlp6Z=tVbO^nMcSv*5 zA#xfTqB$9UKe}sluZS_m4N@`TfbF`y4Htw;5lzYW6LbriUo=+Wze@W-yIs?d$!DUNvD#ei0!>Nnhwu%`UUso#TYRi*nBkRP7xReU z5^LwubQg&Es3Gx&_~>ipIT#l1C@tq%_gR`5=EYWwZ4x~v@|~`h#!l^_FbW}-lLT%; z|E^sc{=krE>>ax=ww}4Rm6d*zN;{5 zL8aMx#~0^#ZzRI@X-32T zX%~2Rt0BD6*peKLh@>&8W5cV9er1)A&!1y=7#13}ENR#hofI}MBwzPYvz95&G}P<} zUKj4xe`L?cCddA1ZX#aedn=PXtJ8*YQ^^ewl{MhHg4_w`Z(ooPiCtPrze4)mo&>ee zMtFln3#)?t@&TnXWP?i5P5Go!N+|_ZQd!83^#Oz6UKX-uD!>cBJ3`8Z^)n0C5zss6 zf-$Uq^yFlCyR$S=PP0px;bENvt*fKw>23i3ee|Cit9FnsQK!}1(L^)ZbV+RmZBY%& z4AjzmP0Kz@ym?IoMu&;w#FU`j@aETD*dr=V#=}`^OHy81-SD=Y(SF{#jcWqyJx)K= z_*wrnszJocuy!G{f=h*559h;vi&z(Pigg=K#AF*6^Y{6+a-1zZ-Ic!3FpnHT`~y}g z5AQ$P0K?%e%Sc=q<%A^ac=hFmGz;`s{1zu!~4^N0ieQ)85rw z)BdI{&|cMCVaC&Ks4+}|CX30`Y!5aCr$=no<&!nZ7lb{i59x)9aXLh5XFw8Ul19X$ zgo5-Kt*lR!rz%&hqB+Cx(e#9M>z$FiqYi|>4yzgZ|JwQv_@=72e{#<`H*M24ZIY&G zlcsHwo7F)}OLr4QSwAXM1lhYSEg+)|0ohAhWN$$bDWjmWx8hGgWXKR?DS}GDwkQb7 z_WwOME%^T5_w#%*I&;6zex7sAb5Ce@=;Aa(wGR!N$ST7W{RvZnd6Y#VDe8~UZj|ZN zJ;b@mb>L_m&KKRps~vHf2oCa>Qcri2b?UU}D5;&T%x0Bl+q+2@ZOftUzacm32+J_Q zGyW!RLeAU>+M%}n4jy#01%p$C;J|p`m%9V3C%KCV*j4CGQkCDh+;P?MR%f22tE;ui zUp+Z+z5n0s?gtxHNXIJp0pqm$szrOLyGT(6risJrQ%8( zlPbZO6qL17of7(qv|q}OZW_J7^r7jtv4dfp_CEG@whK)T?TAU3PJM{p5z*eHG0rhY zn0rNEj@{$jl%-5xk?|zhN{WI15m6BpUS&?uhKSa8P?y+nR%H|WQuTerY@5XvZy9X+ z+}_D{)xK1kC=HORq}J#XECynp8_%{~1p1NCe~!N%GAE9I2I|D->=^d3{zAjaEjCh_ z?dq7|P58)lQ5qD_9DWg|fIj}a(aCzGN)B-PeU5W4L&TnJCOIf<5>C)?VWZ+Y&U$tt z%V;uU)EJzC{uEZU4yPZ#qdMVZcf+hMi9ss8d5ttAc6`*Ls4vWqqFO~h&|lHF)wR@q zt9yjGkE;!OLtnM` zSQjyeNm!L=$0~((N>_Mq+Z*;fQi4QL544kl?Qzl#$RBzDyfaZLaogvQj#wYP&2fVR zGtf~QLZ{GysCdG0^64LC3+Gqv^!g@uH@7xna^etIzmN}9u7GI2(O4yXi-rhi1e;JM zye4cB3Was#1TmBG*b}}AwZlOn6?qxK47ZnS7^s8oeh?o88kqQCEr`%PY+} z(R)n4m=_pN8a~iB*AETb5x&_d7z*?^4f?2P(;34UWAB)GrX`O3nR7C(WWQ5CNO7C0 zaHg~^Nf!Q)@m~l2rc}vLn$kSPstaN)&Wzr~S)8uoXX>_*KUj06&C*l*E7D?AOhM59 ziM8G#9eV}f|4}oYLI&Ly{WI?WoYrLQWPHkE$xdPx&iS2kABekAKQZoc+>FG42Bbmn z@c)Wu+4r!yyTV%11or(i{Dl(INKv#Or`|8Z9{M^(jZA*V>F-OZB1VG))xvh+ zKjF7iu4T7QZ547dN^SW)D%;f7{B5*gbQqR|RTu)o9vC(la}A#vk|PG0uSboH=xR!c z-fDg`tyyMG=8DWiW(BDt|B=tsb|#TBe(nK8aG)8R!Db+Tnhrj6#sG{Ku!(;35PPHy z3T&2p1qD_laS=xykG16oE@^e@4UGr3>l6!&g& z0OwT4l5u1-@E;=Y5|IVz%hD>dv^l+_CWP#Z*=m^@b=!0+`pd{Qh67<05g+K45si#X zF_p0}GTn67xYW=wVyPiNp&~0QYiw3r)})Z_!Zw_P&V&9(3P*5$yhxY@&(a^#e+^f& zUUaeB)WN=IJ{8Ml*VYW0{sHL*sk@0=_){21i}Brj;Ry1HKeVgUpQL}CyC{8v`iqFWF+F0A zn;hn@=B9?O`V0D!kUd5c5e%kMz zp|;1?pKVU5iRH0v0(gK`e~=9va9X3Wk82ld;2}7(uMvkhXU3DHMb2SL7cHTm)*Hy2 zq(5-)fUV`U@$5q&CGCb`QreXcCPCE?vZ-Wlw^+V8p@dG?(i*`|gb(@Z&iaqe# z6PY2E*^<#c9%FfIMQ({oa*Wl9)z3=cZ-C4vk9z5J;VO%8eU}^>H$>Tv#S6n=XFGwg z7c^iyxdF`O;6f=dP6CaFRw!_0|1fObf~&g;$#lcx4YB}q0<$XCQLA5m`rYh^?1kR* zIsZvp6VW_oOzgdw6VYcPAA}Dz)Kl-)H4gtmCx&h{y>8NnoiMzUsmPYR0XfmRQf7); zFKC2U@c-iQiH(s{^Z1WR5Rq3)`;QaVz!@t z0bKK0Z{=6&d$G%<1Y3~x7FH0x=J+j7u>Rv``3L)&ZNd`F8M#3YP_?URVpDA?QM1n! zAL6s^h&T(#YCMhtdnIzv(~x>Ipr4NO_zWD_0+}R3E0VB6W=03CifkgY@K_@>!Ssh8 zUH{EU^R&-BhZ&GFlfDn%ZMp9#irsHk8E5L}s*4Qu^j_owDI=yO_o&UxSR zG|ldlTt#OI{Sf=&AaQPQe6Bz~_!@{BozMxm>KN3mWAU8LddTz|dyVyFGsJYZlYP$C zVz>4$n5^=O_$BsmOvDbpmVx7<%WZwIYEl5wbNpBVJjlAx9k||V*wr-B&oRdRoXl3X zQrHBom?(c{Dz&neSsgL9$V}bAsC9ZjU2<&8sC&9r8J~Ezd8l`d=ZN=i zZcOxcaJw9KS1P~eDLMbf_B0=(+a0pamNE|1O{&>`icB3V5&v`_2_NqPUwpnJIUF#YuCB_ajO|(RrV$9cKK8R?M+1vAb?o96*??SJ~yCd7Ix{ptO zi!4R9$300g^z9&d4sG@VZ&&F3Hnty{pGfZj`Fz>(xgLB7KTyVkKt0$P^zW|FRj}RR z%4x8LZ0zJ{Y@TNA0}nU@_%HbIM>H3IK@_1l-CazRViyKljX1W=x0GFX}0(}P(y@gpM9{_#( z7x+_Q^*qau1P9)Qci2RV5CblvR%{j01kiFF#!g-K;N57YAFDYkVV2rH~{|Vq94_eC_ z(SK+Ga@G!X6^^rZf&Ft1v|};AjA3AOIi5B2ERDqPY{A!Wu(q@%?V}t`oS1d-o^>>` z-Wk?6q5l^wrIwS4?W}reMila#4Ei`oAOpw;(7D$^@yPeEHVCW7TpJlX_e7{gWL<|I zK>H6s6MBO`d|C^iYJ)BJh}IrCT2|8$^rU~ohJ&)C+^(MAz0H6w)6*~KLH5KW$;rz2@BO4VNIEZ9r~QLwduP7tk`u!$&o=hK-a7(g#Km(E5JdJf_qkmFwtUBGwvJ8&TqT38A1y_~M1eSl{#S)}_j_PTARrI~fS zwXku}-Zi;bxosOyvR#U8$_(0vTG0W_$MyZF{DCeD*q`R`F3jzj zvE08#bkX&+m~CNJkh7N3YVmXA^J{4r@L!ef|0-VjyDp*$uQDfqei^*lXUG^j)9#31 z)##)?30Q7hYg=yVZvDct%6iyZ7PrE6!F?*Kh&E!Gto#4KzvBh|ml}{q18E?n?ZeNX zeey4rV*s$rRXXPbmwyHPRv+DbPM=OQ|%B(iM!caWGa-DiyP4|TOwRk zj#fR(G0gG#AJZ%v zjVzr=bVI(9B&64r{9uSXb3#rL0B`FKaajUWchRa zwLE}d;P^}b#eqCo{oYP^zr*sajar6db#$>cA%2>xd0bbih3+5LU2zThoezHnko)i>>*9Hk zj2gJ>UjK!^lyd|5Df%;Vmg=(u9wRvqO2u!Z^K)JU`WBGo26_u|ga7XeT8yglGPh57 z*$82{UnVIIdBpCJV(~ZdB!O;bcktK%;ymEC&UODBr&p3&_^b?O)~q z(7(h#9d+Ivzx%fH)?##+8(}|QM%-f8WY<7jq-g+qgRDS4%kftLb2*61pXXjO2V|*p ztaaqGf!b*B0z1!zxEJ8~E6@k1Qq~W7l>KwmRJvK_PNlF8Gr~?{7FabcCPj1^)e1FjrCJow)Jz%BB^nFD^~|snB#_-&`~T?(FavbZ&_2g4Rim;Gdr0B zGJYTCmmKiZEr0-iY+_*Xvf$Dix)^S|QWpUWTq4;*k%hf>WgNNkOo5Y`XtP5`nyLKW-l ze+&1QSsCyYdVCTwzJ}dlt&sb0ugCR%AUNW)e=h%BkU7_W?)iN0;Q!?;V4keyZ4no_ zR-EN=AH?H-XQ1cAEp7*FEfDk7F8Cd`d2Ci|58FlS?+F2}Nv^%XKLd0B(@^UIzl^R< z{#^e#QvUoBz3=Nf{IdLk*{A#bFYQ^*7SA6$vi`c za3vC&{}}jrEN?0Mqb#A4Eiiv*jk4CD7xYQ|dv4;~W2e!#={BJYQ3F5slLuuC$A#^9 z<;d&MpTIj=-nAUblYheX;U)HeAbp} zf$8h@pNoTG7bg&3UPs1vlG^}0Kr6=a7l3Cw&{YYQrOJ5#4+tN)3wi^d05A7)ZNVL` z89w~@4zSOK|4){4xDw>-I?S3}CtMO1>ccI&u@rs{66$`QQwE3|D2=dRE|$8$E(l(qiaC-!3GMrEsLW_Ds3n}j60X!gJbuY z@R;vupBlv8?8t{Wl zz79V}e-xfC6}8$P^v*GxQ)m;cvL3h11AZ0ompN7TUZz;#78#3m|964KgUtRWIKb;1 zF58zVInp}$^Y6a=$xHm)1C-a{hwS!}e8l`M;K1MFugn%Ps=;(md*EM*M-=KFLv}?* zq52`}6^^q2{vn9VUAFuUc=ZvF^<4k!Y`-1$Cc&%u@N-E+*0K)Nq4&ujS8_s@X9#)| z&oM{wAiULhBQxPIk_+uMY1jdM z7yW(mj{}G7G@D}*KM`A@HvTBE+Icj+6sR*jqc{&B{mYpf-B*$IY(_4akH}vqckcOo z`1vc(b=x8T;d*}#UTz*Rmmr?a13}&|@Z)_Q;Wu~=!#lSgRH|lpBo%t9)38=kKlUrz zBEBjZ_m%5y=W+Xd&1&@cf0eC2AAd0&($DArU&ha+egY2=ypxXu96$X2i=T7(b05Ho zzxU}sx`yai7XnueD%#3`Lfg+Ni###7Cl0Unj(T=`PiIx7_S1X?Pd^A+B4ZYVac?E) zJ%}Us5%2XP@0an<$GjyjarlJVI*@bVj4Xd{BeFHfzmdu_Fzjpre&G?ic`8)#B05$R zOq*?IZS$qrxaQ8m9KU)pNrd<36(6@@PTY&%1inf54_^X5e@sGjDwBC3qvu{7#5wa4 zzwhsT`7ivx(4RTQjpA-nty*B4p3*j}8!F*7o(yl1H`9AMXH1GYZX>gatq=hm;y840 zgT>aOKajTq%@zlM(CG(HZrA30=Wq=jfIgp`rybDs>LGi)p{R3)qR+Jz&&j}ko-9O< z;y&=_qcYDEP76N>M}<9Dp{Yg=5M$UX*=+TsT-PX9Z|8Bx+ku6cS$Q10O<+?zGXcqx z6b=ca=zkUIA|;Q6iSVWZx?b1mM~a`IRlS8?ir?5k>>aFvrzoK#FsT*sUiN@>_-lkJ zaR9F0#R}~mlR9OFdv%^p(El~4h<^9vq|QkEL#-Ew;{H&l=vHxoQir>59E1E5P$8oJ z6@$rh{4G{^#8f%o+W&kcq887PJrjpKNrD9^e{oKsv>E zJpn`|h<wsgGh|Gv-{Ym3+MyS&$t3;ev#HJwcn zni5fb4=XT7l*e&{qvljep0f$UICzrhfLyPURdfuxMFp}Z?x0HgD!e25#lT+zS*h^c z1Nr|oJg+1dLXJs!(tYV|_hV--#{x$@s}gLuZqBJVVt9ey4ml5xIcu43jWRDWUI-5j zQ)>c)904{&Wo{q+kkMSC%g9p2Pw1nk;IDUpxb4J&E64$b<6dI=qW*P`-<9{s#89yrQ!KJ=_H3foa%}Gl(vum(jyPrHJf& zDxHm0u5Lmyol0Ag!$KCFNXsyhxeeP0J@1B$?`NKEq65Dg*>)tl^LfxstWnhAm#e`G zfm7{4(nkBM?!8WhW193EDHIOFHg>>b;^dBIkt~0^@)bc7+as|;zT(%cRoKHj&{;oz zJ|>oQcXx4Q#14%ihNs#>vZmfDQ9{1_0zdu_@ROFv?Qa4XrT3J3q&rE2vW|P3dB*0% zr%iWgB1VN}Vs?B}@d!>GrJ#OkhkoActPFkJQ}BnaSQ;t9O2!Oywtr>K#X`;CAXRW{ zb+S5M9Tt2(c&XYN5)=6|rl@bg`t>m(h0cKnrxF7+&Ww)sLE0ADuHxU}_6f;<4lU`4 zdZ4Y}I%%GiC_QpjI=*qLEYpcU)^|I>V{obQj&3b}p`Y?w>#XE(PkT>QYG3pFwuRCK zX_4chYjQ%?g#y{oqHsawR%fZ_ph|M(i7-fuZERsuumij>yVMM{5t`C z1=i|6#~v?2+6YHkm8B6nLC;)+9e+A2OdUx-a#Q9~k&NGG|L}l{c>zP*p@|C{zLqhg z!6avfb-ODwZePNI_^k=U;)f<|OBff|1+#1S+1qL7;hX?p9Y9oqB~_sM2}Cxx6Zr4Z zp=>Pn5cCMx62By=Z~C6J6|U--#+Fl-An3ds($s=2D2q%G36*ZvVU)^$H10=D82{ODq#NbwyRNm_}N)x(~y zgJh4qUQ>jg<_^>%g#1MbJoE^%nc1UGN&eC(SDf>Jb9z`G@(}Bd7h$)!Zb&~xu7VKB zS%={9?klOkrhJstGkuQavFvwGsqfc7m3+K`s{WJYk;#qf|CD$wA-Dc==@(slcngb+ z{{gAS=kZK_C;atL&=bV&7^;lzlDsZ0J>gL7yY>x9+1fI6v5i=rxB#8^p&x^x?Kwa{ zk{ts67!lEj#)^HymG(OkZ%3AfCurN5=IJZLOSC&8ztJ=_PqOsT?~WcDp$h928WDUc zWKQ^YqhI78^=$Oy&yn|m=qRq`60YKP@)z(=fiK#HOyR1*D{ZjPa@EJV(`6y+se&wk z?pNY>*VN+Y5fHIl^Gi%}+?Wh!T7SuG?i9P+-qZe*GuC+{j^Z5ak@%@`W87CUZvcmx@OwfX(zjCfu2*90b=P5cy7UA>m^_O0XxW`l>=fmNCZ>~D0b z_pz&p08OC*W4Q;wDo`6%<^R2Qg7a8TclYdw;jw!RJKZ}?LiE1ykdGHSX*1)x1F|kbS!Z$b-m+$ z5-+(XyR)2^Knoo0?H~Io<@I151u9_w$dTkvPDXAr26^f#MC$|br{aoDN!ldqgn%&k z>x1ab7LiSea?$X9!;~W8_&%NsVx8kSE27r|mW8elzZ3se)Td&#_ z+%|MUn8DD+xH4*HEY3K?Cyua(+WT3qEBnj-m)A|){~<5LC-WXivfPL4fSoJj_5H2= zLNkKfhW8eZ(S?X=WwZkggU7xF8|ex^b{2mB7kV74Qd;I!Ez~83U(+|$mPhW_8pDE2 zjimFIo>3dje@d!|TgLZeuNzgmi{UoS0o~Bh?!jNHpN8Di4lrHy8;{+HtKmD3;`2wq z3iFVc{e!y}EQcQ4f<0bTEtdA#AGtD}rIx1jPXX&Z$d`_S2aV;m-Dl7PU-zGT#3I=* z@EZC7Xbtu`tj7HbuH$#VBg5gHFZyj)1q9_G>R!h^Q0^mdM(mUQpM%E3sw&A{IVY{8 zZ;K;!ErN%rv;7RheqA69^=w65`!TzT`>LYmr4Oi^N&cFkrcr;oOXFP9t0Aq_ zCquJijEE$??xJE~`(6U2~U7O^xlft2FA+<{^_pT8ElL!Zb9-t9%u`k5m?f z2*g)_Wc-Mc8oUprm~utCDqGmM*$+4;IV+-83%}sL3(v9Q3m#x4?@!#T;F&DReDFjC zJw725uL`(s^DK$y)+OLXd&OCzr4Gdxil2bJ7QGL@{Mik`FTRrW8HiV70$HFOq}~6>2bG%{CbyPWy7;Xp!Si5^J=d^k9-i{*p0H6GyBM%Qm{V+>tDOWq38znyc zkTc)!+8;gbi^6qLf}Nyr>C2S^&we;@eW?H^czuLb0a&}8=KFURo6tVUi-P3+SAEG{ zSy%2M?#;(;{Ppxa?z39$PXjK7jMgm;$q&Ab`x6ZHI~XuHI81$AY4-okKQz?hH_rd9 zK#PAaPA@*DJ6HiNCx;kjkki(F#l$2urCrcZ$(Hd4q8_@7DISIJ0b5~lXTk4T(g^94 zGtU0Lt_^x06M_E#PJyW8y$yUX(=%K>uk1bo4_`;!TLwOq;(Z|gBk#tc`-+~_GTg_f zvk;EVXASne-G_yw*5OAF@FpTJUrXTq^u1Ws#^1_a|4Z;Dv(a68Os-LiXcPzu-C~Qy zM4Uc33u{=__rFS)|A!Rl)!|7q&G9^>7%_uf$4_iyj01eW=9G;4?-=-?ghxm)}MyOd|)PJ<);Ld4z37nb`aDUVVko5`@HQzkfdEzMlf55uOqW}N^ literal 0 HcmV?d00001 diff --git a/Tests/images/14_bit_binary_pgm.png b/Tests/images/14_bit_binary_pgm.png new file mode 100644 index 0000000000000000000000000000000000000000..1e2788237aca91ed614e666ad7c9d2d11b721298 GIT binary patch literal 23481 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 literal 0 HcmV?d00001 diff --git a/Tests/images/9_bit_binary.pgm b/Tests/images/9_bit_binary.pgm new file mode 100644 index 0000000000000000000000000000000000000000..14736ee92dc3bf5d90b724141c872ed00cc07923 GIT binary patch literal 32821 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 literal 0 HcmV?d00001 diff --git a/Tests/images/9_bit_binary_pgm.png b/Tests/images/9_bit_binary_pgm.png new file mode 100644 index 0000000000000000000000000000000000000000..ba5a34474da87792ab261e1f841b689c8920b2fd GIT binary patch literal 15604 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 O0000 255: if not mode == "L": raise ValueError(f"Too many colors for band: {s}") - if s == 1023: - self.mode = "I" + self.mode = "I" + if s == 2 ** 9 - 1: + rawmode = "I;9B" + elif s == 2 ** 10 - 1: rawmode = "I;10B" + elif s == 2 ** 12 - 1: + rawmode = "I;12B" + elif s == 2 ** 14 - 1: + rawmode = "I;14B" elif s < 2 ** 16: - self.mode = "I" rawmode = "I;16B" else: - self.mode = "I" rawmode = "I;32B" self._size = xsize, ysize diff --git a/src/libImaging/Unpack.c b/src/libImaging/Unpack.c index 694acb07b8d..5711d29dd16 100644 --- a/src/libImaging/Unpack.c +++ b/src/libImaging/Unpack.c @@ -1182,22 +1182,36 @@ unpackI12_I16(UINT8 *out, const UINT8 *in, int pixels) { } } -static void -unpackI10B(UINT8 *out, const UINT8 *in, int pixels) { - int i, pixel; - for (i = 0; i < pixels; i++) { - pixel = ((in[0] << 8) + in[1]) << 6; #ifdef WORDS_BIGENDIAN - out[2] = pixel >> 8; - out[3] = pixel; +#define UNPACK_IXB(NAME, DEPTH) \ + static void NAME(UINT8 *out, const UINT8 *in, int pixels) { \ + int i, pixel; \ + for (i = 0; i < pixels; i++) { \ + pixel = ((in[0] << 8) + in[1]) << (16 - DEPTH); \ + out[2] = pixel >> 8; \ + out[3] = pixel; \ + in += 2; \ + out += 4; \ + } \ + } #else - out[0] = pixel; - out[1] = pixel >> 8; -#endif - in += 2; - out += 4; +#define UNPACK_IXB(NAME, DEPTH) \ + static void NAME(UINT8 *out, const UINT8 *in, int pixels) { \ + int i, pixel; \ + for (i = 0; i < pixels; i++) { \ + pixel = ((in[0] << 8) + in[1]) << (16 - DEPTH); \ + out[0] = pixel; \ + out[1] = pixel >> 8; \ + in += 2; \ + out += 4; \ + } \ } -} +#endif + +UNPACK_IXB(unpackI9B, 9) +UNPACK_IXB(unpackI10B, 10) +UNPACK_IXB(unpackI12B, 12) +UNPACK_IXB(unpackI14B, 14) static void copy1(UINT8 *out, const UINT8 *in, int pixels) { @@ -1701,7 +1715,10 @@ static struct { {"I", "I", 32, copy4}, {"I", "I;8", 8, unpackI8}, {"I", "I;8S", 8, unpackI8S}, + {"I", "I;9B", 16, unpackI9B}, {"I", "I;10B", 16, unpackI10B}, + {"I", "I;12B", 16, unpackI12B}, + {"I", "I;14B", 16, unpackI14B}, {"I", "I;16", 16, unpackI16}, {"I", "I;16S", 16, unpackI16S}, {"I", "I;16B", 16, unpackI16B},