From 8fd80219709461ee4bd2c304ea8e3834ae1957ad Mon Sep 17 00:00:00 2001 From: Peter May Date: Tue, 11 Oct 2016 12:12:07 +0100 Subject: [PATCH 1/3] Corrects bug in skipIISBytes which miss-skips a number of bytes. Added test PDF to demonstrate this. --- .../jhove/module/pdf/PdfFlateInputStream.java | 2 +- .../resources/pdf/InvalidPageDictionary.pdf | Bin 0 -> 61838 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 jhove-modules/src/test/resources/pdf/InvalidPageDictionary.pdf diff --git a/jhove-modules/src/main/java/edu/harvard/hul/ois/jhove/module/pdf/PdfFlateInputStream.java b/jhove-modules/src/main/java/edu/harvard/hul/ois/jhove/module/pdf/PdfFlateInputStream.java index 0ae321dca..8c888e81c 100644 --- a/jhove-modules/src/main/java/edu/harvard/hul/ois/jhove/module/pdf/PdfFlateInputStream.java +++ b/jhove-modules/src/main/java/edu/harvard/hul/ois/jhove/module/pdf/PdfFlateInputStream.java @@ -321,7 +321,7 @@ private long skipIISBytes (long n) throws IOException { return -1; } if (iisBufLen - iisBufOff < n) { - n = iisBufLen + iisBufOff; + n = iisBufLen - iisBufOff; } iisBufOff += n; return n; diff --git a/jhove-modules/src/test/resources/pdf/InvalidPageDictionary.pdf b/jhove-modules/src/test/resources/pdf/InvalidPageDictionary.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e777faa666e86a6322549c4d483718efedfcf7de GIT binary patch literal 61838 zcma&NWmp}{wl*5v-Ccs)go(SmySuv+2<`-Tcemg!!6CRiA-KCcm$kCbKI`6Rf8X8n z$Ly}E_Z?L|q-yk2)#M5yV)RT5YzX9A+mo{hus|RqF(a|Pkre_D4?xV)#>LbLAZBCe zVk%;4Y;R)vQRU?9Ld?p{4v;amGk38d=44_9$Pu%#15`X5OabynR?056e0PNs&o z2(T9G{b@bXcl ziZ^>OZNgt3lyRfR4a*Y4@FdIo6YEjxrTI7Pf+7Wz>B-Q1g^LSUZr$j8eWk zKYpU98f7k5Y!0CnfLh!}YFL?&0c)tb#+z5O)2RCO(&+x`;;`Y}h092;kD_(8(~HOJ z?e^l9?=`-(D-z;-{o>8-{_FeZb|2FBW~3PCMgz~n_Segc-OJZE=rLLYF8WU4Y%a+| zU3tApq9?+1%)?om+O@S4J0hg>_obY(FU?(@E1k=}yqyCnUqWa5Eaffl_g43Lr+m-s z?cVYzZA(h@jyw>3zrF%)UjT0@XQb`F`F%Ln0nww4A(#3fU7myhX>}u|_lZRVpJ?qi zpt>EME`#v}6PXAT^mIme~`BBeQAE?U}bncyN;l9QJf>acz8##&P3H_7#Y3hlz9t;OiueqCL;_0cT!*qd?Ls`HCWvcMIHCtmLl z3~|nRt6NmdJ^;5}ENNEVoip%3+>?gyvZu`W)$dGMrDsFnX>@F}2y>leyRs=!kRZH` zgb?-2HEb$BmlK;{M0iK<n!n0<5W>$-koWXP~$MIAgNVdN#SMw}rBGX0>oVU}LAAh5jEtUqny z>==I_?0NX>^}TDYDCp}?p&&&O8)uzxo1^ptl29g*u;7EA9Wa7b!%;&^`v^SLWtUd< zQBA`J4223#niYod&rMsbh`H1P$vQ_>)q+9M@T7yxnx#rVd84IbwGOr!`z14uw?Q1N z7~o2*=z}dmMez3v53gG4(_|Qy>p7(L)dS0{tU+!;ecOP5copkBI zpH`H2K(-_K5iCGO*I$gwyud}@@GpsDp57V?m+}cl1iYuFcR8$21^9NCy$xloIjvmw zc^cesE{UhIU}9)){xPHfxtJK)08DLc zEFGLJodKq{CWg)yfDfPe>tbeO{~;J)=45E>V)-!~b5~27zs1^^nz{UM$;r~(!UbS! zY3J$;a4>apv9Nb_HncPOGmH=MMuyI&|1SJZ{d<5PEq|DQm;Sf@AC-T1_BY+d$K)QI)2N<%bggdIqgO6(0(-F?Dvf1lat6+M5EL|FnGl z`$Ejb#t0B~b+Z4sVF4JsI{jq=kBfojyt&fPV`%ws-LOGdO!E6Eo9~ z2e!2P&?`F-U}JA?X>4d?XYT@F`1mt1H3K-Anp--5ted7L09!-jzl>>OYVKre3UIJ- zb^fC(moN6tt{)1sw08oySbVhoyJTqW>S7A8btPuvVE#*`mi8upnf`BS#-=8gHa3QU z54-;x|1ln0LuX@Go4*Id!SPq4qpP9QU+ebAt%aeD*`FT%Rq0I3#0dll{_Pk5!9TqT z{=?Y>|8^yS;J+VT@NWkb6a@(XPxqpK$fAG9qW>U^{+lKF2P63hBl!=ESX)jqeeE)0K-3A!#~Z2|KJ+_>DKVyA`JglgW*Sb{*M|yZ2A#g0MkEY(|?dZ%=9mZ zwETmy{DZOl2gdT>7}F0m*!}6w{tw*#58VDAaQlA&{>?J6bhG?O$L#+o!SxT(^$*eY zA4J!GGd%t@e#Gd95#wixAP&8~ zzxy(=d;-V*#LEdy@SkQ<=6}qj{~=TTmv}bTk3dp(HFEhYJr$M|5wo{*`D?t4!vE~n zOW9fhO%wN&!sSahcG46)S-J_1BL*_^g@4uO{Cp}J0D*#H95{3gc>E{SQ1c6jx{hEF zLD_DO0b$Wg5MXY=hO>an5d9*G=Ax^)OQT!yk@eo-%4z>=t!jJY>$XbH`TF@<+izZ| zAsbsp{2|@mu1Lgh(Kkz#3N$JsjEz=?K|D;%ta7%RH%203Cra6=X@SfWO_8bM1*1QC zGAbWg10RC-M>r-77AB3M`l@OkWD+JvZ|DZ zEO&u`!=pKsGF7e5s-vtaF+0DRLe<9RkZ_ zvM+x3nL-7x8lZ=o#^4D}hapjfAa?ZJaH|mTb@UzfkHVaVc`2lJ@8+(dXL>*2-@ zBONsI4h$a$4MEP-=z$RBjAipIQVuo$^DyU{NB6+Isjjaj(RCA&xuYFXDCZUnh8f=# zQ>0O{>^I9Bh;lJ~0oI<_J)e~;C`_{^#u}iBVPvqTTU}%f@PUev=p?nrCX^opWr-R) zcv%_lP()X8!T-1Q=)L3*F%$Bw1>&Lbt>l^Ta$JW>P&?k(wQyi4%)<~{(-j5_13S#|2jxXyo$BBo(( z>E6e;;Iwyrz5y0VJ-rM0`3T(6PV0{7MeXV207S*hGBjg(R_Ag7>lL@nrHvQg(psf|lom zA4H$}j*gm~CXinRFFp}=e^ODI^K0)bs|o1)Gt-VqX;Ke<0MbNmd$e#La;PN)fj7ah zAZD})l_3-v@h{{9D!#fvRQ%%K`!5IymBu{YIZ-R$v5L5WZ9-Cqc4zAOXkQJ zu{Sc}+54*@dW~`c;zcZpjKj3ay6C$CJyxQ>`~dw$i-;~io*U03hbDtvnWo1!ThWoyJk@9=>`^wo#dY5xArX*k4fFeNS) z`tu7mlohD}S~}vlr?ah7$xQ(5*<r#?Q z@ue0lYPg~S(>=A|=Z{RQi()6tI6$%|8t-p!28xb)dXnqYFINH8*Da5?DZuJ)gCtup zbRPKLL+3$-k*G46yp}dr7CUV0i#QXoT}bVX7M_({s^sfvQW|?8guIbZ+_87&_-0t( zv%G|n;ykQa<8H#&ym7SZ5VzK)v3*dl%bWt^I949>o8h6oj#i>bQAR(Zx?A73JJr{K zqukzbuYnt{8v3W7&h??!{U~RJg&C;bSH8X*u#&h3GQv zlf7-nHRF4&yd@PK1q~JTBsZsDV7DuYWfB5zWNoIc*oyqH)Us2Ur*D}ue!`)oai{YLfxbqFV5S6r= z-_wuaf`YHR!55r2#mpQ7%Pc$!_~iPfyAFALCJAKv+;8#gn8q|+8M_;c4zeZ>+^T=S zy|(wL`z*DVZC!7!r8P4y_X=wW`Y_XV`1_{W0oaToGza%N93QU{#nlyDHcXyT4{HA{>to^<956@ylN*w!R&P>C+*HkJ+(rld1qA> zl7?BT#FssfRg+ce2upz{Kzc6s(8xe1P` z2!7(gcU4S(Nc6T^)6*)ml9Z#UM!|O5yW|0oem`l2f+1Z62N1K!f-p2$7riv`Xb;;h zB=__7-<|i~_nxBTxg{{zxJA*L26xa)x6VHS{TwlY&16iDd0s8HnMcX4VnkSrgXh5N zk~~ETcH*Z9eSDFa*9Nv9mj_PfUFqi8EO19O4__d+2P zj*C%Nt(tMcw{MpV8&N+L+c(fDfYB$IsM`WA)+LMQFL#x6CILJ1Ut-;1#Is)TN^-9o zx!>(;{4=|ZwM*HfWLO}^AbSip(HM~`A?;G!ChM7Rzuw`mR=phSe0MQErNJc>3QYHh z+E60)I~E+yLaA8qQDI$%9BFezu>d$--Dg1fVQ-svxbO$haG|tMI(hKT6|y(!93GLw z>=+mf0-D|g_k4Ws(HOJ75<0VYh~AF-hE=SA<*A2so4s*u2K{da*QhytMViZB_CPFrVPBRtb0X~;_`4;1y04OrV)(- zCO0D_ZY^(BDOn%C$GTIwD(30!we^Y*SGf&aIU7W{O8vry0Db$$J8xp!z=()Ug8^x} zx64r68PpH{bKpoy`Uttnvr)P0v=yT@V4>`IgPeo?_r>@=()Q5QSf*mMb9inK}&>2r7 zX&E5JuhORM0(VF}R*O(wjgi77VYTWve#|65Z|}Ll+I-|OZmjha-%4DJK=ccOl(MVX~py_oJ zk{=gSI+!7Yz9g(5p=&64-zOG9g`;M^O@|<$xdG+4Vk}+_*q`>~uwR^fQPr(n7UUz_;ih9r_OR}8O{ZnZxan&-8p!U_eeq#n%!u@0d zuoWS>i{YxBjmCcd+c-R*q}6U0^x)EJXkNoi!HI8Adc@v*=WBIVH3Mz`HyYibfl%oT zYlV~wo7R?*h0>GUo;AwP_T6*AC5uhW)?B3N=SutOfVKDOH(3RYuf^7JisD+}r)tE4 z(H^}OlCE7(cI-(MiL{9}sJz3_MQP+iKq`8?RcO2)!eQinLK8`q9w(ZNigWrCMa-jYyzmQ+*l zisueCr7F+K!hAaSIr>bBM48`wFunMm)VtHD*sc_9cFc4^&$%FM3k*QC09|&UolgjD zZMh>xX4JlSbhPdkaZR!>cu z;7thZ3*46s@npsCr@d4TBQ6Gd0o$ z`zCXtVHLLAe_VPR@a1tY4C=Uj1vd(6=rWs9s_22CeAyNSzA7}3rXyY*L(Tf#OK5+w z4kg{=_{yLb==5Qi>^*NGVD^jb_ZPZJ0#985n{u94BbM`e3UV z?x0FjB{eP`S)#-ghk@%UxHR4~cyD))ylV$n_iOIfsY-&a!j8jaY#-*rGto8hVL0LU zC{%pE^`wOxH=dp!+N2c?>Nb4s4c9p%)!KuwNlGS3_Nm%W#J7|~t0=3ZkzSzYaI02E zUCSVlopt(SgZglC<#pK@Gb#r%g<+w_zRV6(hW2j zxO`&f6~zmtXz3ESsOkv|d7U95=YUrx-vs9$ufJYTJG;Een9B2cjM*y6leL*W8^9my zJwt$OqItwBG`h)=E9$^QD9)Di&8-qZjt475*l>#CFpMZnFSMz#vaGH!0xd(OHB~7V zpSu?d!_l;xSz{OhgwECF2v^ha;6kfW0qXbe>2}}ag{7sRq?d0kqt4E+C6i&=>pt|| zmvYTmJDLNh>0d2TF_3Ye9-})0jZbB5o6O=O+=L?@D`Vd$jWVvkAgbH*WQL+#e6OyR=a|JgB^S%^C$e3NNb0L<#S_0$>v)P83QWPymyQ|9b5T%Lf)W;@}D$1?NdRnMx#(XR%She&PY;@yT-6UI>#> z-zNPTq5hP>?5h^VV1vmL)1K80We-Lc=kHLV9s^s!SQ4pzvKe5M)OVT1!l|J0ZUO7k zNK8>#PU}ho(d6QaX1O24xPT;tO_mq%{KU}tP>TTHrke3X$8rr2XSxdE=!?894h+cy zRm;-do^^^7eyR2um&|tGggUV#S}cK0H)n>?7z7`K1l?SFCMQU;;WUz1@DSjd(S(pN z`}6sa!-16hw8J_aSVHhgp`p%MvUHtRiE^%NR~<1O6%p4U7-e7sC#p?anI^D^C#40B z6oceQ0{8k&&)npN8XfG#1yUdD92^gNK&47?N4FGYA=>BJ&tV3$Q#i88m{i8^Sf&mE zzxy|vXpg~^hD&~p)ZF~y;@s!VIZ zj#=E=Q4GhFY#*%4@ZweKGq+=J&?tG1SXV;yO3~4#&w&2c(3EG4$<6px2VR%=Elww_ zeR4R$XrE}z0t^yy&vhlxNYcGvH!~72+h^9pR@*$Zd|E7tSdj@+^*d-ZCTW%@)RA6 zx&}}@8%U>I?3rvx_5XSwA1rL)ijW!05sD-b({pP>*rDcmA`+a(U(c>U{#+Aie>wJo zw;Ktz^DAv;Fy2h@N1Qa@e8t=&WL`8iwQ>Y2MH+RFL@oxo1!q%uOqskn3RV?nC*Qaz zUbh_Y_IIqJKqv>DTxFA^7?>|MnIY$W#%>==7SSbHE55WG~Cj?`%+RersNSkaE`nKUDtsW|?p>C=$A2uvm?@wP2 zM2WI-RYnVj5?0cfd+RGBeKV^ZFPCEdtUirLD2@&7~I!=E;h}^ufWtIc>5Y zMzh?yPCLbko0~3dc<2s0FG(VW>610^9&r{e4~eUU>*YogduPR)sqa+ApT;)EDSkR7 z@ZOgj0A~$jNLxz7-gH0%lbM6jv8KeY zf3_&z9iTj(&)o67#He_w4cMgD-&LI^75imr!&*A9ce}P?RidE&E|d6sBA&WbN>0g! zus}9PA;JU_L-)Yf&y$&5F+#1xoYZo`y2RzTao9?JEP4P!R=4n3iQ%9@*V!2tdl-#vg120TN)*eV+%GlM}_$VjI6OxGS?=q{{WZQmB$is%DI*Fy_%c$Wi<0Cx{D=(XwgpNH_J5XaU zs?QSSAx(>C4}G37oiam0bwEW_h&=aQT)l4ZF5q4)8z6VhUvLbGV6jaypiYF zYbxs7)RxrU)h#@gwVn8uj0B}yHQzscFOo-Y$!BetR?@bp!l~rnC%Wa}Qq=Y+Ff?I! z^Y&>gtv+Htl15*4v>uiDGscWDEU9+I?5+aNDUL1ce6d(UsafR!6WHRoQ1!&~g0vfy zwj&JX=kG16Fm2A(Ja%je^%F>W61fu_kb~4a`Y`;Pah>pU>I$ zM-cZ%*kY{t>k^>MYcykWRRc~bUBEu0KU$POt+-n8Y}+U_mcq--X^0I`Ukx{Wy`y1$ z;s12@3FSSpZXt=V1WKOG`x%x9ZAUs@KoZwHOphg)5beem3TMa=EB>}j=?=d*bYCqO(-E_IjUiOz3pE=5mS6PiaZWe2!kC5eUQ!ES8o3aU6-m53) zV|Oht-`vu+JQfL_ZCX_xt6eUEQS7%3R!_oS6IVpWXhTihWhMN_uk|DMi-r%8`%ALr z3Z`Z0?lOTtRQv9a@KyN$p3AIBOImhkx$ zNSYc{5QRLOucoCygO%nk{Zq6zhkhIS?E0;Y9T|47T0+0-fitR@2EK-uja?<4HOOM68I2zJaYRhuQ}2 zmEg4KG@+al`P9QS>am+KbhEE!u-@5xd6To0)e3&@^*r{;Q)iY~E4-%xCBE);XxUlF z*>U?gFq1#8Bk@JENrxC9+=i#I4xDcwp76c>`NZ{eC;u-+#oV9F%$-#ClP{ONzxf|r z7|N<=3x7l#b4l#=S@Q{=nTxLuRA1X3KqaaDdavvHaH-`?s;B?xQh#lE{{OlZkolh; z#nt`sD{u(vv3vH0@cRVz3GFvn(SH=q`rim={_6Nh2sJrYKm%3H-v$y@O_Z*#nuc^cKuy~VvV;J` zF_UZ7ypq5+=dO0U^`>yP)zD|`%Gf9KzV-ae#Ql%o_gS6_{iYxR`3G02ytQ30u%48p ztjwzEIMgXsaPh?vncT-X;hKu46b2m%gMGm$Ehrbx2O2$%FBXp8XHD^&^roQ6Og?rM z>Mfm4+QBV#PS9AJB>V+-R5(=e6yd@mTQa8QN{!+)%EQXaWKx?UwyQ5*nJtEd>=WC2 z9&21NAbh=1K0ZFzEslijaQlrx(=@?KnR&<|CKQspz%m{|YRvCgki{i%`$ZT+tr{fB z`y7GqN200a$l=OKsI@w&-FC%=b&pQ95~YchVf{ETS1fsRt=B{>kM9~V%FMx)$&3`t z^TYW`HVPy%KhYoSXl6W8$SmE8m9lBnD(_#3pK_%rFd?Buw|3ss=(x$z1=aF?u0n5x zlDWoP9gQlYf`UV4;Hp(Zd_X=98;y~Y zc!R+rq}^{hX_Ko8Wdg8af=CH=4bO$MZ8DKSw|yzlum^j+FMR;5F_h*E@f^l_iBb!K zu2YLi2eP^Gow6IQGCM7Jq z-P6ks*wgfo`a7sQneU$Uw0USXG#`xjGro?PZ3tZ0L^?%;r~yk;+H=|AG3U2}n_c6q zc5jIXe}K-X;d|D7KCFwNdG9e9q9d0bzx~nY8Uf{Rhj8(mA9G1D6onvB2SX3x0bLt? zVPK3c{WL_~88*_5l~@{9!2y-VP)lu~LC4+#iUNekh3*3(546PtCI>93Kj48}0xEQ~ z8U#YvQWX@WhF^%?9X#Y*>l}>NEpXm|9XiwdnqVAk?MROp4@_Bj!pdi0u#*#O`Hp<) zRVl(}-ADS{8E+ObhRm(en@!rJ#73}eh3@yLc~-Zl&=C7`(D)9@42~802MKi3Uy{LR z#3zjXL97i>Jq0vr6z`%up26ih*n>3$X!|pMCxCe5h*gLGH9ObtkBgR zuCL&3fFrdbwDgsn6~!29BktY`9?0vHwy72ewl=+Zr{fDHD%GC@+lw^1<~^wEy_YDI zYcFwzO(G4Oxo^rT+B8kMHHkv6uNshyol@zy&#?UV?>Desc*MNYsLtHz0W>s=N>;9Y z*a%IA3FKJvH_%$9ILRV3KrVz?*)H&p2r((2_4Q8XSvbCV)l)nT#^HMfEita)r0$XkC znrmAt;_MpPG&ATq&dc4fUtEypcJgPt!8+h95W~!0U>Ji$%bKzJk1yeE>c$kl`nkXx zYTo;5^GN!$`oSq+>b`UZOFPX!2~lU^OV2IKFS02qD~A#jF>rVA@1bY8NqGqV4pUF1 z{mvGTRppIHs3*?d14P_LSPQ#J9NPjv3YsL}c-))WxDeMpN>pr{Gpb}%lqDd@YPxy~ zm~EhcFJuiy4MxX@De8-+fP#uc_TED1I9qRbx0mUD7I~If1AF7sN`{MXdvgB8-6Mqz z&GRsn*0U<&7G)ifS9yjx%+tNa$_?8mb?I_aHKBni+)Iw#)y39cTAUc**;(d1Y_9U1%4-K_LhFDIQ!nifOz^G{mhvZ`>IL+F>CXWJL zM>$pRemC#0hJM7EMknbzfN+Zz>UMT(P5c>4h814A@e|K}=gbduOtk6l1)&}QQ%k85s$QoSnw>)OYOBYoi&7xwOTADQ72Q=f~ zOT+`rJ>eM!`^Vg1#Cu|we$O6$HfFLg8_75E@3@9isf?s$JZePh->&sZ>4($yM63e8 z;JbXoj_gX1-Y=Umb>viqfDBf(9km?Bo8Nd*7u7tf1QjLB&d@KMpeV2pt#Qis^FnOl ze_#`Zo+(tdoQtEmO{18xYDgUqkn%JZWgckrzTR3nUeB*T!hBNmsBbJ9TG|;-7itf| zw&zC1O-&$sQs8`i=66AKo2C$_>fu7jESt+JX_uPZEsU)lLj7{i!@{?2R=auv%2qqQ zZq_1oX`tfDUe9|kFL3aNT^Z!nz3&UP0Aw>NtnhT;com9&FcFJyp|the>-waJh<| z%ASIAmaqYV`5lpZt-6o7_EJe%6dDG}xaa8#j7t!AFfi0$VAh+{`T0$n(_YV`B|}xN zo%pHw3R(vmX3OkbnG+Js=h~@}nh^=XqC%a##iIt;Uzao;xh)b|3waIm8ON1wZJmeH zSi-)2+CyW)%w+D7!PY`>cZUvyGUaF4tBDbO;9iIv^&NPt<}-`0(I#&r$+#NWyL7k3 z6AHCCF8F=DH>Ppq6G}ZX^S?HB>7GC@mYer_7=DO%uko^RFX-rbMu0Od-HY?DXOhs) znZThx!XkKj7?<~F2dWgyWMs&hW9?y>R9xcFk^0*AD3%PRPAK4u_L|V?=%WloZ|BIU zTgzyhVk0u0eld{6;$)d1bdIj85v?bh_y$83JJ1TDLERD+mH~!uz#bc2vu=^c{?&Nx z>t-URmX-!J0+hc?3OrRpD{CO?|#5$Y}X(_>%tNsMn-hsRaN+ZPz84*q%GwoLg`$J>ls^i zU0W80k_wU(zWS)+_SA$woSx@qOR*?oMPK{U5_& zi?P{(SLB@`SiUKpQLRLQlX29g8`Q&#xhm=ldZq*S08>1d%;Yyu$V?}5QA|oY84zI6YwOh3PDe2Jn4xBRwUgQ$0rq>qoWu55G5*GUAzd+hAP*A(A=PbVB?dOO+HT$0AxkDMgQs$>zOK5`)bTfz`#3-TF-bb+0EW(2Ic zN0`WmCsYdlOW+uq+t=7!i3>Ac;tBvQ_>O3^WKDE&aHu^kTjyu6bw+w0gB6|%NtwQ( zZ#8VsD1<+yu{DM%&x@*Cjk@_-GS_Km^sVAJM|79?a?+n?r8xbyiU!lXFJ~V1;m5!V zy^8MTe#@rcj8;0e^XPgEacuCUu&u-em!Fok__7ElT-AOW4G9#1xL5`+ysF=v@Af7l zS*XMP;Wv5^(0Fm%kk;6t6Cjly{N+2Cm~_IC$aO_qdNf{mRuj}9PV<*+a*nxKc+7DS z=N7i$Zd>r=sd^Em7FeXBTnjteHpU%&BPNEn{73GT(V8Bvhn07KWwiwhJ1c(I!`!1A z#igdnu}7X}FYKmf9J-|tna#H86?uiTA*xB^gL4P$Otbds@X5*W=| z+j)MTW747Lq6?;M#o)m33-BL`k9OVyx%V181A+Grf-pIQRF#?ESAc!%b5#`}w z;%K2Sln=xBp|3AyD{};Fs1l;H9TviYo+6%hCOw(FHRPf8DKC`Wp9IVh=>Fqd3EO}5 zR>H#e&vzc3nbGh-Ms&!HPWd>~b}GFD8Nnbqz=jcnj5%R9#ZWZkAo6K%b53fPivf6W z%nq3^&$s*AJhor`TVL2qnPn?aBi&dK*-OH74_4Bs##7JcT+|=Rf7B|TL`+_DDC%dp zg^k1y5cxP{u8pa2^Xga-4A{#h9FHY^|8cj^8ZpUk?ORI8TpOf{F+2AZtcUx&a?`)1 z&{Wn)bYASSZT)8EHIb}=nMoRn%M#V3xP$9lR4VhLTzj>XLql5d9%T+{nxf{-&LAWI zdP6oGZ>6XPj=|ZV2f8A-n#6d?2ttt7VwoGB7~iFxW6qP&x&JX8Z(I2IBS~MRWW&wrAo1GX58Dq^f@%tHnI~M4rV6l(ao@0okJz;|zu`A9`DJwVrweo>E*9loKL1;jCj$S2VRie*z6AB<}^+reIK z?2)h41@%Zjw3EZb)2mNq zViFX@dTOBeaW*!H#MQ+qD>8^ms+rMZN9mORs$rs|S;>u`A#n+3x%E{VML^XI1^=8U zfqmskhW|}~G|qwy^4sm+%up1@Pgr@BW*QMsU@vTRc+Ak_1 zV_)2D#}>P>_O(#nYYL}Lc%sw|GLSERxab`_!nk^rexY zjCm**J&N7;=kMfO<}ZXAU_Xf0CX%JI+RTzN6-%gbv9W@?I3T+ybO>a@?7SnCs#Hr% zSxwrhNy0`>%>a^DK}k+cAT{_%C3VnE4q3eN+=yRXiGv zdT$1BGp+=#*-(8Dk-DR5K8g7y`5UahK1W-z&pSC9OsvPiXmjqe>%RHDW7~M?o%HJK zfr^JYdyW{>V9U(%ByfpuRr{SELm4b51YOoR(p2E^0%Pa6sh_Ma1|zY3A8nt1=&~k` zsxaxebvil7#!(M>)#29Dn9k#np$DC4;W<%$B}?kncQq+U_{KZamw$Tc=$WfNa~%3; zv>A4J2Sf0@n#a@W`_5eBi8yJp{Yi`p9atPj$EiH4EV~Iq|LIHMr|0j?Nfp=EGR4a1 z*_vgu87@2i3Tb4~u)L|CJpA)*v1V7Zbg?pZxAL;5D_-@D_8*>zS#DHp?ZB4VezEfk zZt7m>0Uc?oE!}-S(RFc)&2w>Ctqi-FJ311mX2v~R`T#L0LaF+dB{m(m(H|B~*ONGr zS&tF){F6kybRw062*=XWYm&7mvr66;V4LK}B0@~OYvVO2UW42{MP|5(zUBV5o&Pz% z9Ma_j@WEOm(~x1tbD!cxC{*hbO=If zh*2d<9(mOj&Yb|21Bu^&VV&?sHN_+K$wI*MnzjqHa+PDAi0IS^d2|J*7F9^$mT#Ta z^~?w+`>&hY+ld#R5feqmqWUSvuRSZ`e(dTT5tKE{e&SShDj`C350wMMSsd$3#yPdW z2fAsR>-40LTnAdMr1F=&Eq+5*M*hAbcq+|n$RJ6Ivy5X>`HpF8du&q|Yo@FyhEf!~ zuBnh45Y}qpD%@CK+G`}{Fye=kg^6uQSIu|_V3H{zseU`!pBATfE73u%^Jr9`EISx?t?@wWI-0aFlb(S+}V4S6W?M8vBp5EDLMM~!1(f1iY!~j z=_(Fclx;V@yKQX0K#cB(mR%#_8egL=Zlnk+=OUqt#p({2PZ#%I;hr``Qgc?L0^o~P8+~t#i%7@`vk+$ROx_o(fITTFII5SHb{(h9 zlD#$TQ-9wU$)qUX7Oee~Psa(T06e&e@ucK*#D373P&Hi>^ZXt4Lvf$9=F6X}IUleJ2ib=Qf|xc=ax z5lY=bBI0Mt;Cc+yEJm<8AWTKT6{_06RH^T!L!8FK?Ui;5E3Y@=p=4ckg{mfD(s{vM zVL+m}VrZfZF-BqfjR;qQTp`>cdAWoH7OE?UQfNN$F4>U--InMXrCv2U1yYR1aE7y? z%B9CvDj6%{P#@j^ey)SXgMtInP zC*MGDXg+EnEI6n}WqxU{5Sn)`F>V-kl9f(w@idv%;vBYYLBTwvqeqKO#u1qk6Sb-i zbrtgp*`U}ENAa{A?Rgh(?kt7(m$&=ho^Q^Rk7r+!;XsiiVX68fb66}SxaH3vQKcE=srm1$cT#WTCLFU>*#9ptQ%6v7qG`j7#W!N3N65k}!IoDOU<2Zt85jTae5i@1r8a zE-x+u|@;X{PJ-U7+K?Q##MS0H5?ws^yh*^~$h3MbgETWbc04{@k zi+5D*3nsoEPMscGQY-P-(f|g3X;-#W5JRX{r*oh$pse8i_U~1Q@P@$7KV`P+eOj{n4dAQ+-pL;bWK` z(WmA7KCOu@V{hmS)&x`1?ugvT5d&v*o##+a6`4VCM= z5!Ms4_oN+*pjky3de`OwL+i9YDOzYP>g3n8q-z9Xq)q`W&T!sv7waxtBvyW=-Mz$C zc=o4oJ5Z(FF`QJ=QmkzR{66!#WsP~#hPD&p*gR3tP2)`jg z-J(|>vWQKzi=O;0q>wBT(3^N(Dg|%Un?Gdi93V7LS<*h~qgXJJu%j-kVeB8lCRt95 z!msTVT3QS4L{009=Z$(uZc{=E&zojRD~?YIw_r$`;n5P34xX3d5*jLvtD0@DT<*yV zE}_cqp>;q3urNyUQ+`95<;9K#Hm765Vi;Xj-etNdccvDi(6hW>k?--1x6vruP`W47GT4W z$ZWGqb9bqV6Z4=?qvSD%%&J08Q=Ms+^i_J|I=d~;&Uzv1)__+s<#>|bbi9F0d$m&Q zcyd8kJZ#&1@@xM)SJ=xOPSy0ca%}F{VX0rc5%}_>4=}IMpG(C$L`!9ohN*c_WroN` zrKhM3GWvEM94Ujq-7{=2p7FmIA4tsO!WFJ}w|2yLE(s4^2F;Ssj;QdSZyZ`>te2u4 z0!IcYTM&4~fbrCdMqgmA$%Lkla`{$mreRfN)nJ;LDsBiO=0y(!Vfv2%iPHDf3GL9@ zpFQZ;>JamuuL$We+*N_^#_0hZ-qPPUbFN(DFpSaWf8xaCrN&IleUr|d+qO=WBr5IE zkh>0w+Dz>`&&Nt}0u1llyacK#n3t_lqGqh?K!0DkfM;=t7J21y-SBVFxoQBfI3#fY zDNpGT!ft?#Q7WI_`|_Haex}?gCCW?bk=CK+-PPZ&p^bf^>;&+1sS z^!f3<&ZWE7Vlu{p8q1i?R`K_go!p>1dg&uiINNHBOC2svfHzDE^9*|}`AF)}mds5GDSVNc$$$coQpctL4P?@MDpPMWA<-M)Iqc}_;Zqq!U=@2v zrFe#A65qMr4bckNReGW zt;;b9y)l70is$DgNp~ii5k$qU*E_+z1_WB&YnFYx`%fQ>l)gn zbEl3S+K04j+opAJP^-WIhou!0JZbJxUZ*e8>(i0$^z`WFwL4D)c|Q<%eNGXL`mv7B z>1|PS{#Y|fGzj(tkB6#2JtHXpb|^?ex{Bx}ATZ+zC@<{;O1Xj?;I)WuDP8 zU*9rsBXgHaHaOF|7Nt6UBpt*meLAW!)G~@hA@Fr`A|+An3I!JaPF8w zU=DT0bJTxsZa}P#H`|K6l;a#`Wafl9|2_TVW>l;QYV^>;oMW5%dz-Y-(Q(Y|zW4ih zFYovLerq6gli`k;OVEIMjA0uv81oqA2+;;zRHhnlH zSxh8Sw?aS|%9sL@q*TzUlMLgXC_mN-%ix#Bu**0I9ywxg1GzlkP3UC5VU6&rl7EaK z0@UJPR#Wy@D7Fay7!i=f$x5gJe;GDnF{7b@ga|VLJ_Q+jO}xFS@udQFL_N+cFoF5d z4zTV1bax!g9}W`-Uo7b803gQMovAXepaa2aq{m}vgUS)ktz}O29>O`h%vsrrFYG^GsYa~0bTkF3JV{LU3#1u{GXDLP11 zASy_kTnNg&D~kz|avGKhJT^0^4;B~}qSB;bWys)jTgqeF9uEJXn+i)GlU?TYbX!GC zqdT@5e{L1NN<3$t27xV6YItNcpSQ2#4M7FU=Z92fD4)ykFD#uspenqYpM?e_nm<06 zTlQ#S>BhyNF?1;nN*u=B5Umv2G^OJ6JEwGfe)ni^CPKgXl({^o6=Jn@KUo1 zLb^$%R;UD12!@6+MEW#zj)WDQ)e$;taxEso#K#I4nKX8phS6AoD${tA2EQigTj6fB z9I`^YgBUb4Wn&81c^%5N)j|Lo*=<$;W@ws{Ifl??Fp}8qrvtHV{Cpz0nApZYNhJBj z1nNsHCdk{`(k6t3NLUCTvY-WpzO|rR(Z7&lxdnaFpO@}Y_pDa^S#*KyXI}2K@4VYQd^%GuF$-LG3^Ip3aU#GXnyY*~zPq$5LX>C=z`XR-*&h-VVptrWSe-GaE zt?N5mRkgKML!1|w{TgnuaB3IbU|Rv*baSSzE?U6y^|g(Uy|0mW zG_=bD;f!-C(P)!4J-QhvVC@|7OR_j$Bz{4C$zoq(UY3f1xLll1@I_F+%io2|(?oO3 z^%eeh0I~dHkJuFtVE$2j{`LeR-iC?4ogjA2qHMU%R<>bBv|?O;*}^u4iAL30Tea8k z+1ODg*;E_juUH=2faPmj-$9S)qpzQuIsN(P*SvA0c5`jaE=aEG{+j;U!9$}DdemKO zWw*DkrMK%-Yh`(DX<%gR-0tIB$6ou{g`-!LFAdj^ealx_si> z0kO)*PG(>5d&B@`_nzJ}{`yxD!c?}j0R8eG;cIb+UboKKz*APg%VQUPHk+0A`#jaX z9&3{0Ja4)*gm`eV6uNr@TTuW@rv0+XMPe)-VhlnW!i!j}iv(E~ZxF?fvhECgN_j=U zsb_6nl!{W>#1HG7E>U7$+_&#VMiO1l$PaY<_Y;`HyHrO&usiRT3RkX{3U{2KzM~dD zUqTo+l@_Qo6=~OT6emlRBwL8YoM`j=c&iPhwc9~xkk<`~Lm_$1l^Zy@EbkK{?;Hqh zin~f$FGVqB*L7?Z+c!{kW%v1gqK`WBU!{F?qO?@{ajjDVY46}ISFYkMcR^anjM5B9 zi|$bj{dfd{||9K__4+| zHq_Fn-tKj=-muu%Q0KN=EfLhzq(wAuB%*1m7E!fO&>IQ`gK{t=YaY?-@rWGDYNFs3 zMWG4W%#an;%g|hMRu`)wk!!M`NP(txQDDRj%OXZg1{Lu=tzIlvdQMFIuDoMh^o>+2#l#>^V>S}KV% z;c5=V*#7`503dU1Tbt<#0uyg!(HFB=DAy(-vYbHHFV5XkU6i!%(v ze$?W`PDx>Rd@T?|as1R?@S0|uL%f+Ri*qmo1gZ*NQxzd>7LB&>veMylRiM5>)GA#f zsg6&YDxM@TRa4q)(ysVD9zTA|ECu@rOk}@7F%}PX25u@@ccNR61y)M3jQxmQMRWXp z6i$J4CC@@t3WIyQ^fqCmM)qCVIaS$$FL z(K>hR>>$IV?Va7*$P4G+U-}IFC+jgN7{~N(j`LxOqdQR-H-xux8SZo3OZXIbfxW=J zfxp9D#gp6&n!)emJKTr(K7PnO!Jlw`2ZtR6{EMH`j$V}E3V0fX%CPUnX-xl0DByRe zZo&mOpIwCdJ%{2&v-)N+uEYi2Sh?2z&3LuOMsZ!?d+)wxcE>xf-SN!6?e(r>uh;9> z+B_ETIK-qtz$Svk1U7DvQfPt%R@xHC4}uV+JR;H-Dy4*mCb+_&Bw!b1p%7?QN)nog zrb%d;s<;)PfMh_ap+LO5J$H6(AW^E0#`oMiV_S2-^PTTIcR06L^op9DyzX#0Ma@!m zyCHRmnCRxW4pzM%#l^I)?&%M2p^-@@+{=tLB~%+ccfh*z-kHw{@!ltF0> z`57H8(tZS{MV-BeKc)(7EqyVWADPtE-3G(F#hA%oa6`q0tfnR1ZByscpWL7F4V6;B z&B>JEOHhY-GE}FC*6V?TR?M($6~ZpW+7Y(Xxd?LxiOeEQKO5N>i5)E7hwS($;>gb- zL;Defj}BT7<1E>)+Y|6VH3@aC1E~vdh#@V3Ril2-kBq>Lv{7|L6JU6ODJdEQ`b8&n zQ!+039L6PuT4LI&I7F>-?1qW0)I^6u9>ll7DKt6Xo$r=m!htzGi8q_SZ{h%PFKQdK zRl&F1)V=O1-l2K?<}L}t%}WU>Etw?ES863QnZ6Y5SQ2w`Hz@DNb8p~kx@To>95b?S z+D^y2=HzWEC5E*8g^GqD92ji}RG&6b-KbX{xBi*?k~7_d=G`bS5)EVl;SL8NOHrlh zmXL+sVn1ll;e-`i0od;60N9GVfz6%&KY+bc(72@Y=BLMgU?6LK8VHOBa3Ty2vg_Yt;X{BtN6`E5qvubv1qtnvFPYq3}m=a0XPK|Z)4+;#M z&_ccnZ^T>cO@#T{7_(Y9T6HR6nh}~A`B7+NXmi7kP=Dx9h^b?IiWWo2uMox(!`RO> zgq)`Eea@y(wZA5+R7aVBKhW6Jq%cHb!V#VeatSWYb#cAi3eLu5@p`=`9zmiY5?*{s zJRzPDhsA56RrIt}-xt6}Yj%xNxOvuU0J^Sd)_tW@N2U*`k^yN+gMz@h11t#I+sP%L zhT;TK`8YKm8ylvt)&o^_lFROpqp?V>D;~!YdpM5kq?$OYazx`8#bP)H*SdAOm99+>xR`@&yt$$vE8beZz>(3)TLCSG}b{+1W>Grc)6bP5FB-ctD>GHibetmIXuL{ zR7QCpzUnLZh_AyGMJ(=Sce7{MVfGqpVUy8lJ&Fr)63^mxU4d2(;Q;%voRF?c*Jy#a z&RS6{@YI}2KGe}mZ55%*tl)W778*;`C*&0E@^~}eqiAgDg#xfQge=+f#+6Gug za=gVTCZ>5JYo%T!S#jrgN>A_tvXNpx_5{sNpOG`uGxSOB*Ep^g-9#nHeDJ2xiTsA9 zrkJk$Ir`*-{On%i%@sQKLY6Lo?_Po|1<_eOo-o&2!d$2<qd$zC3-xYAPe3tCd9bBtn#(q`{8f#xG^7(?uuQ9|}TUrfk_A{zP*VXP; z5n4gfuLh%<6xCEhq6{B}K8}Gbh+W{xT4?LJar|>|AT-J(of@Hy+qd}e|8i)Y`KCMH zBhJv-jGJ^3$MN3od0=-B;8uZ_>yv=iNlNPqZy*Ws;ssiNUSe^Q zvY132UP?@!#jGa`JC!A^vVXO)&7wG5%mA@cbLd|0aA$%scQgSuBYqoiN(b0aNIhl3 z*mvm$-hJ2D)P?cQ;JE>h7R*2XwG9!ptZ>e}%=`v;poYiv!h8HljYt=ji|Q@mmNcr2 zYSvTAXToRFr^;FNl5k0~c?6H-Rut8IO1jP8kWIVT9o!x=U>RWdaPM2+XPEV5tK~)J zd2W-u$-SNIv@mVfHl~?PaZ`k5sact#GPNYeC4`6+Q4;D@Vmrzo7Y3z4dC+}8Ij$bj zm^b)0g?{NZ`E~amOum2 z;alZ4_hfZ0KTGJ87>Cu)c&%QhhOd^Z-8QRR!)8Y2%go4D9x=0G#BOp%sBni+1KN!& zXq78s(}q0L*Oc1r998U*bg>sSjzxXOMU|GGk22F2_Z(8}J~1t23pa)!3eda`Norc5 zO{~-9O)IM6PpfobvxVUy5IJ~tnMO;t@ae?bA<^~kX=F=Lrm;*+yXoH*o$AZ7eXiF|YktVv)tqTwrEFAQ@NDvKo&56s_L-p>9pop$ z*Mb8bd+-0G{9^g_avPihZVbw5YqszYePK+mnKsp<@)j4uZO*2Ku&KUgL|xIvpl@no9!0I%H+705J{bfcx{AxK3~k^Joggqjz>K%PkeN-e~o{e zzruggukf?u4x9l(%KQ)5OsW%&>cXBLB=rRah>=Ko47rg`gaEW46moN=X9x!j1povD z&@a}K^YnP(SamARG>BHoP=0^Mf06=iWSCEgxk^?EaGHthVXD+V*A=OVaOgJLp|pm8z0H%$S z%9~Wp{%BHl#w&APJ&URO{)J`tbzwPhv3=dOMj}j%lwOcL%i&cGyh_8X%@_}_nEF0L zClDS9F-O@i)v)=_ek}v2s}0xp9Bsezy$w^6$pxnzB*mz8 zMf;~#)RYJuCtS!|H?iT(AC|tothuOc-`?Vt^?GWoC)CJz1cqi|PBcjAs4w-XGcy z)PxR+WfI5oS*pVdNyc_qJ5UGU`ac65R#@BLjQI4$B*@fcW{mgE^u6Kx*m)$Q0W@ho z;p@HU6|KZAc^lE8cuW{9@+insd|xvbOwml_XM!1ugeswV11wZ5)vUl*saNr3!bbj# z@H=On+XD5pt42flpdz2*EvT=OwVn+OutykFLd0X&3$qtwr`V1f1_B@4X#~pNf7Z2? zUl`)k4&K|b;~rY_M?E($_I`8jd~esqBWMuIM@a*_rQ)lvD&T^OSp~Z@2{JQ)b=8S# zjUEaA(|8CzTr#)0|LAQO+Qq-RAA409X0PQ3jzV{#cZMV3p5tAtU(CMc-pFb#NcP_` z(X&l6%}d-1y-zuXl4B_|=coKeH@AuUklJnC#T_vpfp=XVqe0KoHh{?p9cyP&%8G3; zh<=r(R<5*v#E349E{~X9DS++5X96y8AzJjHCRciZ-XnOndt@Fqcz#HqA=?T&Q?aKT zjZj3j&W@CZrXmmOb-#!%Pe2ugb%udvKt`2AWmIB$4D5!Yb~pomBg)=BVIv_;t>jLl|coV?oN^pOcQq(QAu zg!P7Wa5zPp$Fv$+g~7SU2&5wk;7kO73%SK4G`EdlOKmWaOcjZGy1c(WFlJEshzc-O zbauc`H{!wnAVC7LU{bZEp9Hl!!bl*A`HmM&SfKAojf3`{fm-G1dsOQpGT1?l0s}JR zlJp4S7Z#QofU;=_l;wCzVs?D}_KmW#8}GF3mj0LA-L?Df-QBzH${#&jhP353EoJSc zKfk}S1>8#^xw5UT5+NDKlCZWBh-4NTtn2Z&)Rw(wJPRL#Ps5Awi}*#;751L-9@}R7 zv-N@SZ%Z0$57@Kuk^IZH$--RQ9HH2@R9J1>V%uxq%Qq{btCA1<_P3S?AJ6+@ zv`I%; z$ZU8M!sD97`z?gUXk=u}(s66h4r2W;dsoX>Lu7if7~td4adZidw~061Ps9%QGqF2E zxx~M0SW%=XwleJ({^hYP{$%Wc|JSi9e`V|pufqwX1`8yCAQcLNbmABvj9MKO{zxkp9h;Yy$czH|q0sMQo%Nmi3GJvoJ(Po5;NkqVN_35!YBc2}jV+9f~h zy5?$kb-Cm&Haqb8b6}O!0;NRQ3@8_!1szCI3-XageO@sVFO14&%+}Y9aedu20U`_L zk{X`CV3w!}5t-=6uZ^M2VU`FSdn1RuQqBeB3`mB7R_Sn8f4dk2{T!qscuux4mNis5 zWNTBiFT+|gxA1T1@$WB}dM)d3AAk1j`0e$rTen`hvUO`K-m*_pjHc;hLi2pk{93`} ziGk7IHUUsq2e95rJ3qf#zVqr;$b}h@3(FuE{zH1%$F_0Sar~aMedl-Io$qX)-_Abg z(m1hWCq5@>?8aAxI55G|jzw)~+?O;dYFgA~?Lb-?jTopJpwX(ErZNVV#`e!ZY)Okk z3rZOoVt*BBR3b$zX$1(0rt7Lu5N#ZO&z1e(h+**NJ?lC7*9?kvmW<8IGHi z4Gpl}9fX-?>{eS$oC_exiPtqpClQaeOlPlT$?O#R=j7(zeJieywZ!O(s#!k%TVNk) z_#55-6JC0UBD@(>bv?*>nculxYysjr_vkKymV z6u{pSJ@&6?C@5Lj+1cv$`*+qk6|fBU{Au`RXQ0mW>*E}y zFMHqgk~1o5VqskN=Lrc(68=ypQ^KRh0DDS<2}zO@ayUVxbGlx# z*|M6==2SVY=2?gSkK7r%+wHK+Y)H_12v0x?kb%HiJ`fOiImCNY^?1HFnH*G-$$CXj zDRoL+T`aHi`MjFoy_`2jBzS^I5Z-(pZ%H7z5Dp845LI7DM-n9t7EVm;X2!Etb4f zFoxTWQEW9ve_9_W_=XZ_5gr5Rq~*DplkVm~ljS*PCO}wMb^LJ#RK5Q4A;~{_Er|J{ z<+PhA7FUeHyF5P`tW$X~hDi^rda*&kh;IrU0| zR&A@T`p={ysxiYU#t4k?O^DstAmvz8JFCegfzSrWKJ<9% zK73Zajb{thSI}3h-&xl@{THRMfbeJli52So*lilz<;M}_AFh+pSU zOijQ^J24}10pVqql>-Ez5rJYX!}KxJjEND&^?rb@;1hh{ksfgRK?k^l9bg5X*V!7} zs{r>p4OCJl8?~aR-P7UT?CJCrJzG4Qr`ywG~;WW;~mE9cY zam#`t=}}3@j7-Yqs4PoSS!v4}lQ||w=E|8|E}N0t${L;=nd?T~L#i^xdzIL}Q!k@pb)pJz0Oh zi^#-EU7E{RBD$u#u5_8Y#NNiA8NWVi(*1a`(o|d>U^lQH4gLXfVmV?e zs*F7I)mpB`8j=Cg?lfB*O47VZLKaH2`z6$1X_QdF8N@jYLCX|z)E=S?I|z1BQ^ttzWCBM04p7A_;BfZq zecW0^C-iJyi{`|}tllWne;hizbtv9(v~yQmZ!fOYS0B$cAJ|&fPy1TZsV&|5^bLG4 zR+xtRkM@+yJ%!JIY3Ty4X7Uy7$)1s=5A^fX-8&-5VdG*A$Dzs(LzVArXp^Ipqh@t(OHxf6~KzSU; z+HLk&a85)b4irWQyi?h80C*y%yESO2v7J$zON$T|pN8fBKeFRPVT+ZvQdW`*TcF@V z)`&rOjXK?}6x)Qv!&^UmC&U}&H3n!0&k8V1Tdnnas5&03qK5!)$IcfA_V#t`((B zd}bf-_nF>D?>nxNf42OEzUrV3(Fa*_gd8y+v>vpNx(>4=-UEKC5I1?^Hj~3fJL3e_ zi$^T!quZ~KnoG#PO(2HI5_&rncO5^`&o5VR zBX;^SVym}*^P>;vUi;zv9PCZH`VC#Z3ekenTB*hE*}Ms!`Sf@!lz!TtV$ zNZKlAYH5UA$&9BUgbPrq?o8ZaPsY(1GfhYZg{qHxtjHS7r3iN{>WTD4_C$_E%n`A5 z_lw33t|+wlIPB#YU`aTuh!rut~0uKclFqnR@(PNlBJb) zZON6fY$9VhE9{MNC~1O8C=^IgNtq@*(vBg8J_0G^4~9a3Kp^qZ%(xQ>ZR}zScyM`? znI`2iO>5eC_>;EKj7#aHo{)~GWhRl`dv|4UnWodR=HC78y;|G%eBU|eb1ar7KT8{TF?SG$N#j--{L>K->CY{xY0!W#Jlel;^Y6bkQ9l3Y zUGF(1)pgG$5pTTzde6v6&ub&Z%ATi|Zy0`laANZGgcsG5B0yhZIfiJ>E5ld!zH)UK zGH)Mb-Y1FgKxU9^adQaNQ48p`{P*}B{6X&uDtsmd3LflOOQI}yCxeVQ!YYW5Hzm3x3qjdEdLSwPr`)oaTWLm z1u-P^u_?8!AcSB^)ud}&>P!B2oN)Z`n-4$wk|xk0!N_aPhc18(j?MdKJfbCjeF%-j z%8^$WKNAsPPijP#_D$p+Xn0P+&sDT=c=9?i0jsG4d}41G+hPyl{A1WMY)wbM-rxMA z!h6D%_CE>NoEtN{6# zf)>>h;ZQ*Atg;e};Lw5SxI=^l+#v?SZ87v7cr)nGX(U1-8m7@PRD!&dY*X2mcKn$H zg%16=NthPBXtSxwJqq^_Ei~oRHD-;Ig)@oGZs!AY%3E02{c@)@w_)2r$JbW;_R^&- zeu+U;z-x-p({;G_iG>rFwm&wq{}_?2f|zxdMk7>a4q0f{J@78gapsqlAk1f{uE$EO5(yS$BP~U<16u=}Jh2#L;)+pvOc#$nTEdcLi z(0zmrvnUja(t$vPN?>#}n81)Zg1LYUPzg*`IOmXVvwPJ(_vY{RuoVcPHN5N)abe^7 z#TT1JhE*B;U+ecDJLDK;1O~AZ6?ge}kF0z^XEZL%BPZVr(~4>(;_X!OcDWI$1p`kewC_aIo&_(1HK{f(a8)ntW&1OX{g{ujyd;O zc5G|8SYh6l|I46G(XCAb8{!lCKb*64BOZ6aczNO4 zbME73|4Ff5m%Io=gf_}?Z#VtGYK4U8h3X2k1Vj(fcXo}zFN zmC#a~8dei3u69-wRuniK0G;PV*mH;mhUtPR3W6x`0HcwbLQ##f7EM?*$a~}g`4{qac|!L0;>Yn}obZ!=NhMV&gV&N7DXkR9f;5ku zCoLhDh)boV+S1Ik;5l-&v`Sf}t;%d7zbm~iA5`AL`^X6fE2p*7nJe-o zjuD(}VA-6=vVxdm zL@Aj@OLgl^fSI~!o5XGO)N5WfiFM{y6KBoGP24nlGNzf%q>>pd=tWB?Z;$sR7P#37{XaP`EkB6eXo>b67>JcX^tEzHZRaHbw>6&@~mlb_z@=Nwii6nH< zLz22AicpR+FzHkc=A(uKoB+D2z-QR4;egO38J>{w3*ZK9%{IVnx&g0W0yk`f#1;WS zEF$T&m5f-rU@=}RnACNK33|I!puVGlA+XD?!S-u*Lz8A_vU$y}PQ#%p4hJm)hcK7d zEc@vU$eaa7VXvWpowgz`#_h(IJdV!c=p1gdTpk|+M{UNVKP>_29g*BGS{`UdPBb*3 z>13fL?}S-5gulj_;TxP8e&3nl%g}7|vXb}MQqvaC9uJOr7I<*adGH}tJFQ~=St{Mt z?y*sg9W6!JG78G-O^q#=BI=mCIersuVrrX1rO4$tZg#xLj-rS17^*P;i|o5_R_{Ha z*{!*3R{b~QRUg~bb;Zwl_Dk##$ItH>ekUTL*Nc zr3ix5712RJ`=d@*df%;n_=xt)Dc4mqnu+Z;I z?wQY|;}2Tt%ka0a!b)?}+u5OdSG_8!i(G46Qjl1odi^EduI`BJh`yA&z!#K{)sG_| zML#k=On#Vi+Q>)4x`hl@b1pR(RrIJ5Np=_4L>5fE_Qi@Z~ z6da|NQd5ysI2CA58L5U;G}XK$l}jy5B~z(vE|*!fC=-pw5{X!5y__87#F=pJct#n8 zMhBVY>PW;>T`iM`J)Sx~?v!^xH3CZww2wrO$5gXlu?}li**Ds8PXhjMR7q|J(b)bayEbEqQy)kc}#x z7_YQou#&|{r3%B85XLAW1iXqqJIWm9#83o@Q?SwijSpD`^FwA*5tV+%2O8bZKz;s>Fp5L@vHXO2f#p9B1)N$VAIQJgprQSyxX-q5 zkn6Sx6S^r{8~9TGaHR(UJ7P#LFV6o?#3?@2;i<&K^qV%b1vUB4*;TZvYL5+8HI(0H z9fnmId=9|``Ba}CcSO7kd7*2CBkR4Z{a2r3*OqC$dLQ?>c5A!!gW5rT%ynKH*MF;D z(`#Uws-e0Jtr*jU9FDfxU?!-C_J=rhOb>;0J*Y?H?dWnQvA}#Adb4wkM55i$j|e<4@M{*LBx(~H9jpMz)aS8l=mWzx${xBNixW4;``i{G*(;&RCwgFVR? z|GxoI`B!HDeG-&r{S|#)vLNx z31{(}&_a)1t0zM!XWb}7^@fB?RV+@qWkWWD$H=JUJ4<2PhO85%Y=puAicKb}C#`Y= zV%Nz)TcRNn2~Sc$2}l9I@zogbC12chhqxHcCkXN>Ws3Z5ZMax{foVV3MsV{`#9O3& z0gRR7{p|62=HfZv72I8VCL|kUrg3(4cH*b}g2NjQJu9S6L-j6cudi|h{3{kdyQHJm z|WywIP77gr-|=0>aE@RV~f8fTkO>^KV#`;?(14+wRqf`$6{U9#eLt|>r>V0 zDvR9Pl^@P52UbV(_biJ|tgdFYW}Wxwm-T<@miKh7ZJF1a^uY~hYfz}uk=2XLYX&2& z$+-YhaE|~qf>boU?UBbW4y1WaEA*( zhwTo(e`WI7Tu0FB4JMcDUhVf+SCxTo>E^ygy;h6ep{l-)XSU>rO`tWm33PrKKx=BX z-68|^t(oUUub*0dK$agNw@e@?DNNT8nUd$&IT|}$kYc?=}6&U*#BR7 zhUa0PpF;A@K)#Z;No%NvG`b5U<8&Q!xv&R8>wsP{^_gk4nZ`MdHPif*M0}dZImMGe z?**(m24t?%w3IH)&;iUog!Ni+dNuq5ex5g%PF$SJUd$ zgVpz&v>!80MxTj0UATp`cQoR44Kxl|SB#R?*x1zOMZBpR~1HKysGo6wbSmEJzaf&?t5( zVSn$i6LQ;eDyYVJO`uKUSNIh=1>F!Bm60o>R77g;ENz4CZliACJn;aX$A~k~tPg-y z8PEMCJj<9C@!T_uWtrwd-^H0;GuKz4aVu#jtWwmM3GL9YG#!NW)#x{ef|3pTF~K&< z7Vcp`J%ul+xiCq0OiO(kD_%9NbUn}zHu@9Du?2c_5i)GX3U!o5>t@=7Q#-^Hw3e;( z4SsgA=7{W9cUi!)qGuX7VhM?kNenmm9sX6o@tiUNNZy+JKlMMxmL zMK7%@+@)RAg!Be__#jbHiUCN`V#=|e=93jkoZVVzw+HeL0=qZ=$A0<8R#{$g{G9iS z?JBhtTUsbT1ln3*4WQ6zd!3+*Qa}bqQC!#@h&D8uIZ>)c=wPrcHVP!ORU3W^aa>$j zt-)&18tNbjDhsepP?4W*Q{skfI-}j^JnwyPZ!a_@i+?Te`_1=0_x* zc6A4B4rk?{My`}0^j`r@Nj5V71$^gCa)S&7lNo)ZES5r9La!(2ZF;f|MQA2NKgEvK z(4(3+H{ju8q{=JONm{9uUZHLU4cfrJ$zGvXhE+Fs(a7V{qPwx}Rhld7WsNS-N_MwO zA7HPVr47|sivJCiAM*d7@*nv?*2$Z)S$4}Bc6ljxUzdNgzaR7bZ=8L$aj(VkU58-g zxhQStxJ%ubHezBtUBHesb7ix4z1HcSTBtj8hkWJXRC-A3;UQfQcj-a>i{6E@eXfi2 z7X6;4YnomrPx15#Z<6lS)0(N5X*N6C>3_Sth^Jme*XeT_(|h%1t~Kgxy%XCja*tdj z7rH0=Fb_MHv-0L!c4PoMHldWCNj?0Gr&i$$fSH(1``7DriSB3S&+9IpAH+V4OtiuO zZ{c9>jV{88BNHn@$b`}`pd+(2G`=>dRDtiryJcG7%%kK zCefxIz2oZ>Z*>6so74tti}fCGZ8QFE_tWKm*EVUByZ#MUZRe+%s~vog`<6}ekUPHz zA6+bKr4c28UVnBQyO5vC6jtOQwvmYitY;-=$)(bZeb@!|vl~meYj0_kM*W+f(KGmW zwZ5dE>rpNC=CEp8@S6!ztcSUBR8Q#}jJShUSjD^kMBebW?9q8TpBe6vR^}MRmVb=} zX3Ht8y%p?`XV8yjIt#o8TJ;(IuyeH&t6-L5>paNWgXoRmb~!EY=@;zR+gvg|MK_tl z(|B#WzNKyG;G0-(i;l!I^7Y61gUDmD)Ae7i+jN6&cRoJSp~Rshfp%6P`MeX?@ia`t z&+}z+>^K*Xqe>Ptg6MF*OpP4Loa6EipEd`3M>lOsff8#VP z`*O6^;@x%3nX#~kI{lGO)Yrj8hXu}y%n}1@O!1=gZM*fh9=!0JtcTAgd1!Y`_1qpj z_$-g@sWp!d*bCSZsAk;D&uRlT?V(MmLpN=p7Cp6z^+Z+3I#0X*v~Xu)U%O)#UK&@^ z`2PD!WbGY3EaFg2+)h+!(=}cOQ7%U^yaI2aR&(V6-L3P%3o^!3!7I?V)LjTx9VKsa zs}~{CH_FyP=aR{I<>Ycpy}n)nb9h3&)J&I))Vo|ImprI1_BNgD;{s?|bU*HvI@%L4 z@?*PFD=*=xKj*cz)FZig(@~e*y^0Fva@8`sDBjhNelNPruASUzCCX~~auhGShNmo3 zUh8m>Y@{8VTPdZ~G$&;)6-7G8U_R;iYZ}PlU3jjJO5}k-&S`HBG+?dNVJm)LyO+TX zEZa=g9$#Z#>5_pO104vm`xx+Z+GTRm%{UmvJierh{+PB@QNxXJ8Q47jSv@z^MffWD z6?hE9@R(WW+H$@$a`(lYPOxTB;*JseDW{ zRB|J#HvQVW*t?i|YrLxhACX7AG9pSVzfs~;tHlEMM1wJBlLx-B|tzCp$;8Z?!(;^RMVW_s*dohIaJiS^Y?8IJHp@Il7&i_g* z_(rl>fh*(+Vzupc9s95vjHe=~BP!d@`L^;PYu!R6vYpkAk+GkoN3E-Ws`&j9+bQ9^ z96x`Gy!>jXpV?M%p@5eYSFC*)j~qlrVQ(71?ivS^-;bA{&@YECwcd*uvzb+ndYN9P zC@5jv+vINNxkWM-4_)peR~~tPHpsw_Zo|K=f_oC(?F}r7^+KzR#}n~xIQ2wz9QH)M z4AJt07n%2&4-olW4|~sc*1_Iy3_Ri&WL)3HD+1a`9%IeNGy3pF=GD{D!3^iGIc}Yp z7rDx0JwyfaGP%j0^%{PU!3~j0IU+eaLl?4-T#=8+wl;7csSm;Uw9VJm5HoIH#@7^uCxrr6vWggpw+g?%*QGMnhGT|HG6r{X=Q0bi2|Au zrSeIqqn$ig#?uFzF&3c>M$1@?rc$P30dJ-MRa{%nx6V#M($P`SQJ_gkzK0KVMM^&} zQ;(wxPdR32m#)rkS0usuG=lbyb{CtHAszEU0Y26h((y^h46qOsbfnqb-5i;V)@sa+ zYyIun9=@@sZ#kcLC&9eV1KId!8S8*uCXMaIQSEa65)?Sctu9M~Z5_9J{++}M>;l%# z0oId@26Zb*nolrh)GI+1p2k*#V;g!=jJ}o236y6j_3S$Q<`{b1iV|1w{yqBFI80$H z^%#0uPK97k<$D*$$1y9dp#CVr5@XP?T(+v>NAI9g7QGh37}hpi3*G8(lqF!J%wR_O zL?Me=H4JQ=Oa0w*`Ob4oX5AN>D^@FUumA~lYfvY^+g$`XqgVzi{yRh zxVfiuch}2;nS8J9Qvfp=s2${k( zZ?rxLW|JL9*}rx&tNmQh!FF==7M<#>XQE!B+1Sec4rBFtvn>4t3)|!JhhnU69D8bU zaS>4=MP(StM{ggg%BH;{1A6xca zrYl*-QW%Y~CQ3qy?utm=S)%L`S)-&vB3mTMQkJaQmz3Z0^*%G#OyAr6yPNOh_x=9< znCm*{bI$oJ@BRILeasuZ?efirp^}F|3vap74MC;qHzkK*y<3C;~{{E@qOJ~h~(``O;#F=}RH$T{U zWQ$2tLlaw!7~bmRhh{unJ8@3C_0O!$(PDD5%GbX7{HGNXf3DEKP0Pa{&j0n;=^~Fl zn7Xp_>l2$6dgtwZm#dV_f1+N6J%K-dyLhrfFL(F)-*R_cwxn!e!if&sw$3>^f7Tm2 z0_FSFY1;BYgG;-|^?9N8pT5_w`DXT>J|%KizPZT5jXSIL4gWC>!_VzZ{Ts*gK zXN{Wg-t<6nx0=uHK6t24jXAS!E3&NVl&&wYY5qrInbtMt94qVJ+hD@>?=F7wXPbMf z552L7zr&h;Wb5F{_GYjBl$18E+1G=X%pN~(;YWc>yZYo0myEyZks|jOy8O!8JNjOC zZ;5LIzIpk3k6U@qO@9u)v+SPda{ajWiNl@zMQ_h}tn-vnxvMYjJT>o>4!#j}nt#12 zvFWM>FE;;fPLt_P!qJjre(2RZ+HA(5CEMfqcg$sGY<=kPx{Djm_dMQb?uljLKgZ>* zJ*mm5&AD&B(sX6>kM6m@eAUXs_LqEo_iHUK^uCn8M9qsW?|f?BfCjreOL^PX!M3bIT}3j>|JZt{M2;Krv)2qd1lSjL%Xg#(Pr|I zSx3iBa0ZutsrJ#t_wMQYbdmin->tE&Y=zDroqy%yRdts9{OFRoQ<^!ux3^AeU4Fsd zw}xyRJHCE$rFZIf-ZlNqV`YkcTe9i=^{sz9P`_J3q~aUC1uKWVR(tm&^+LmP)fyHb z-L$Of>0djPcs6o!0Hk%Ij%R$70}+n-hctme-jj%YFTja#=B9Da1htldAic`eV;oS)`O>{$4%Xoudf z?Wpn9w>`hO5PxCpj`F469QffM{i8>=?0H~C{anv|K4{I@wJ-j(y z^S0UWZl5==8*x*hf8J+ul6$dMhd=PjGFRI6{^8&GIM@ltoszfk7x z^$W|NAAIY8>t;Jsm#-eyw&m1fV;8php~j=p(E}g3^uVvbPd%|{K-=ZRW;OlcmbMq; z?w(9m{M+Meb3R<}gOz^_zrM|Z6Sa^3T=Dhzd)nj~Ri)(($M+XbzFc76O&7X-G5DDa zUv^!yh=m_l4o4Az4W>rMLWf{ zn)2|(Yo54vT+TN~=h`v&qt~B^q*Xg|{iWxhe&XiE`MO?P;MBpg&$oZM&B@aPr%u?} zW7(YxpIy;nZKrSdUrhS0U!{RFJ}x=#Kz{fA8q7diM6nHP^RXUHzHQ zs_*f|75MRmRln^?c)0Hi#lJaUyZNN86|XOlV^rN=s$O|-{I!vtdHNRYb@Pt?9S-08 zUHb+V7o1&FX=rll&}jv8%>3-#<}=5PUDD$54Xw}2__F)*4+s7_=Cktsy0v(q%-X#J zb|l@mviCdBRDN#qM}xOKwsOhr;df3RUT|LF+diGz>iY2W*RFVB({p=QPFp?g%N}hz z-_dvQCpR=aQQ)gGUv;{p>>Z1IZ=MW(?VPO`Es|3A<8ljUFWl8_XV;xi%^x)N3*Y^t zU#jA3-fYhY&34pTJ^hL4?cTd%`q7ll-D|)7W;pKHQ_nZ`o&DB#c9HLFDc{*zzFrT$ z|M;lsh1<_?-aqjD$j_cydZ|`)`Fk_pTiU-t%bjUwXUz#8dh)lDBR-lrW%Jyr$6jC9 z{D;GAj4u3U-ZBgFJoU!F=_O`eh>qAjId9L>Tk9Th z`X;_~W3PF`msGCv+MVMsZoj9`sN33HT=?jo=I;6y^=$MYnim%;K@P_pTDz>{l z|6_OVY+zJb7{tWmmua^z)@=Jho}h%bSSNeeW;*$c51_ZO${L?yM&JYaNU>Uv@O#%w{j2sne%$^Pz9tbGgXS{h#cc(DshE zj(pXt`iGYT{?pI(t#_en=MK3~#Pxmb&p|!+?QAu`iO;!cf1jZ9O6Q@!1VRVuq^-++ z`jd;5m-kES_|@LJRlXV#|8yYj>zv14>374Jn>HkE|LTd-lk>k+|3J?xH$9PK%83v6 zT=jPY{eS1TAA^Cv{^Ir<>z-Vda8r%*f95T>v&Ot~M>bVUm{KR_qi3pa8TefLvePHM zHgeyCr_MJ|tClbHeUFWu5Bzkp-ilW7+gD6T{PXsqy??%c-jQbu|M;}~;t|r z?9@Y-dM|BqY2mPr-<;~(uV~{6~SDkPNf~|zU#}=1IzFJvcjO7?>@LG z&s&QV>s3fQ?uKXQ8@YQ~*A`!VaQpn`0}g+4@%Zi~{>OG6|6%U^Q+_KmwD5}$9!|_# zW>T&-RbJg#alv!NC*Btv_U^>hiOJWLn{-S6!6g?Ap7wa-x~XMSTXb&Rd3wDP(fgW|4wP=%ETLJW#PLr}d9hGpuj;*O zRL=iLvz}|JrET9BeX+p{4QiCS@t=*Rg{N&x`+Q@b`kZWZ{qE+=UDi$5*7w7{8~?*! z!nB3!f>XA4`Q(+Sek^lxS-xWr3|V|bm$REMx4Hk*^T+#CSlzbJ$!+`B54`S<99z2_ ze*dbh&+`AJ604SuubterH^R`YBOjgO9*9qD^6CmNnCk`7W)=W%kpV1KK z^GS4?RH_tTGo^bP*X?Og|30Zr| z@|*Ehd$!l*h#QHoUMI0>a$1}(U{i>%-nK{WIA7Qes<)_Jtl73(m#+Ov*YDE3OG@{+MyV+ec+Fk9CI=YE z$YCuF+ICBhZ``s~omNfDdUtbkIo8vwYui-2qiI@da$5V&@eNW^yS43VO)b6Y1rrkD z>!h{q+NFKf?wz_O$MI|DY02GM#JLIa&HD97wp%s*)Gj^JQc~kvrLQU&;MZ9*DVybI z+N-tgnJf-Y?9DaWw8ey2Y0KNKrNx=l};SRswjSFy( zeFuC|ADx8lS#{@HyFZc?3i<7JeFvOKoD&Mfg(E)N+_-Q!6z2p&aiOpq7xHt>$9b5E z1buM<&cjY1E);O%T<&**0sb8B)psZ^?B~Z(onTy;ah(8DO$fwA93P@XTYx{#1Kbw~ zc;6xV^%fh93kD(_yKzB3{WH~|KNRPWFnP^`XZ?KpSz3@bKl62c+^?~r0{%mjF>kG!_bR*DP6J|o3`&nQR0tVGDM2I-* zJ8T??`dEPviXp{(J4q40KhD))T1hAY>PC2gS&NFS(x@R$_@F!;g+x_2q!ooQFj}n> zfD80*Z9JcG?5$qU2CdEGZ2Gerk3Q7qB=`{^Uz`sylyvwUCn+43P`PnFm;2!e|5kuM zZ)~57fCd9mp9^73I`l2#L97Ux4(B8lJ_zE2h>{2&1V<{Oeu+F|OA7o6;iRD7M;n}i zyCw+|dgg2E_Jxw*eAMrgpliJnd|wirkNTmTAITB-MSQ7|Xn{h|C-)+Ok~lFoh-&#^ zm>+2tZD3H6)*0csFp?SOS)-vOS?AC?v~IWz8rIb#(!Gg6`195e*Yys*AL^sHw{%CSfeXfdSS(#1E+p z)FK?FORRu*pM(NpNCJ^O-RqC|l0ps(j<8VX>WbhI2%0YVei(rtH3m3(1~VX)5+Oqv z^B`jd8At6>^8f_!!^lvGXR!EA0_rH?vwLNYcwYUXA*Q05EA(+#YAD1XeT!yczBBp@ z=^m*w8m0Ci#0WCJD-(oSa3GlkK*X0R35(f5F-`)gKjs&Z@WNbBNvnHFiJ?$KD#%jWEIO#+UIahMO*KnLE014v5{A_QTIR6B@m3r0AH0YQgvY^WAy z62?M8*h4!O0YxAd5VQd_s6QHjAwgR#=RSXuG(Lc~2121|kc9^&<#vz5HS939%m?Gp zEQAZeLTqFe{E}eig``J=l6s_8TFj!8Ok)uUX;%>9SbNZypdrX3ghiLm>R?i*>%U4`J9N%`n~p$_Z&==Iko2y*Io?3-f3f zq|VYNIU&r4oDs*-kU1cZS#ZdY$%9~aER*H>qNWi9EnzuPX*tAqS&(P{kxXd}k`~H% zPSyY-+t|SXi(w21EtBm^VuSMQI7*~h^O4s#Mg&7qbJSduj|ssL`F0#O?L21;VI0;L zf*I0)5DbwqF--_VI6q@yok9qwvrcdFjhHq)8$xix%-PngwS?U$ zmcz8$=;r#8FkDg7RD0`m<-#j7y9^xAliYZkD`#G@=0w7^Hv!z@nFpM+bEhBYU6Xhu5> z;loT!+7%AENeCD>a4ZX<$%Fz)n3bqSK`>4JEF6+Q3ev`Xavw5l;UGZ-Z8EW(o2d&& z5ExmMa8!O@(U+p1uoF!3b50aQI|~wXMI0EDS2 zlCbzu2dn1DqFEbrl3NuW;elMb`f(GaxWTB)oLyNtYm-rN_Aer*C;G`WA1z>zUt@2eo<14$ovsWyB<-k^vb?=x<7lJW94QvVk!7 zN=e}p_hWdZ@KQc_;3x~=&tw4}SpT9cvgm3J@IZaK;Q$Km(1u}^F7T`ymXTB&Ytxv} z(S`OdbcjGJ7mw;j<;6WqMNl}=!W1tlCY3v9_A|ivp z{36I=gf`qiCkR&rMYjuB?FdS!g+{Q-S||@kBUsZ2$C_{iWmbo>a4w1#kh0ATF#K=aiIQ@8n1t*gnec$tS3FXws^y0ZQYLCY9tQyoS0xEz%BAQ>4Qdq z)_gF!jbQXjk3wkH!=iwVfZB4Vh{hhF7f9=kpj?u(^bxpAC7$$I``{WiA#_7?@nI-^ zJ}6>yQ5A+WSZt4A2z@>T$JXbAB%DEaji>Sg9|(XAg&U$dN{fb)!?4aJtm24Wf^1wO zMG*acL<7u3*1--4L_?%%ESQ^XD9`LipN3{Es3dOFu52l zilOD2!bazZ{}(h1j~I{pA4&Sn+D{P8}s=^ct3_fPM8A=+sykq zsyis`({#9~FixIS-dCPV7Fb?b+M+lYPs{YYvW((npA0q11Cv&OIS&b zG@aXIpsY8$9k<25txspQpK#o>FDywE!XW#Uhwvc*LK>7lBB^vK9g(+0Ts1u=9Kg2n zkzN=GAnVlmJlDX1ZotWlTpTdDfW=#S1i#@^`Xd2B@EIl`@<=NJ$P^z4tc@Un6>&}Z z1F<&%Pn(0#nFT==z9+qOld=6NHm~HwLBnl+|i_*eeEK5YHI8ZhM z&3QsAFs{(8x=ptQkEg%%Md+Vd0G0|1ZHP!ii!xo~ zLw?WBC|VKB(W2gPCh5&uHO|DORH+eX$buw;*eHFmDkO#Byfueqz{B`q#dRD&2vQPJ;0`OKNjRl{3YLu0IQ6i~mA4eL=S8q|PTHP%8N41o$9qjVI2S1#D1Abu7GqHtC zFd`HE2>P?2A2`z(O=9TB)u;1cpbz88zlT1I*nc1TKj69CmW}JP*ph<`6xM%09G=nuoKeyQ7HT|3aUyFNlkhXknWdxRzVZX*IeKxNd$4g>y>#dU zHpq5i0^o-^EeNW~i{>h#iqNWB1ThooeUQ*#pcHg-k;npDYpY-&gFi%ND5cPs>_#zM zgbo9w76yMnkpS*lzQo`U%t#=EvntT?tm<2i0yA+NE;#sRTeT=4ugZP8uIHq=cAq#P z>qi@0n`cTjtm{#{8P*MJT(VGzy*gHZg-gh3F73>d@+A{YcBOC^C&EELjMQYkC!(!cpP zBpNIXL6NF@vAfz;yOJkYaZ;+R;-m!wEK${Zi}4{YwI76%ITGqBG72j%vNA&YGg5Kr zsCH!-%B3TiA1Q*1YnMqd7zClFZWs-)W)*<_SVSZDB3u zEeL;XJ^1I4>Oq(+tK0bKQ}r0;q^K`owMmyY6i?>L+8pYY;wQo{^eQaI!=wO2Ri+k{ z#+l>iTY-rpA4v=YTe!%Ag3<&P9i+`NBM?tE)w@rLVK@enSYLujunNM{6gp=>BuX)Y zRED*9U;x^Ama+WyjagD+PXDqXhJi`aLpT@_fkjB;4Ifehq9h1A>Om#63o4;F8G}k- zcqUZBb%ZS_ZPs%z%!5kQ4pgG&5L$yu^qc}9Ss;xkbEt4r&ylToP>I@sO7xr*3L*6C zIV_9^mFQc4Xoj9sp#p1T{Rt}3a|o9~C3;T64Bf8^m0;mApb}|3@cX|)C3Znc5X6-F z$Dk6-jToXR-%M}@RKnt{>X%)pM9)b&F)h**#r!zEe}zhrzKFC+CJ_fF2PrFK$&s`S zO^LxJ^dU^RIhRu&`heu*?`NBI~Y-6aOdIOev`c#RnE7cms3fK_kM@ zfGDUec+d#M)c~3pW=8>pK_Y0W2Z<<^pwFBW1Mzl~tBQPZc8d3CQ&?PE zgGN|?1~fvpAA?3@;jRXaDC;(81SWaVh?qy4U=V~Q27@rR!5{=;F&IQ`SSehT2ZKlu zaaA$+!vq%iL;WDg^5=39f=9xfcnE_%tc`x<9Z>uX*h8*Tum|2D277pI>97a9 zh`}DnR0ixJcPiLJL8thtN{e@lOcA(xP)J4_)-%Bub%}@MR&}o%2wME(#X0aE<+d;b zL6-qE+97Ak1|$O+*?`KMmQ5&wpj~OYDTtI6V4TJj2gg)rgpbvvX(xDHY zHR!`hh(RBEHU@oQd@`U9YlqebeJJ!nM-2L4&Kb}L0X=~}LS@*8E)a4V_QBvW?1Kqr zVjuXa81|tHXtZG;%*?P4R*G55#6Hw6?1K(vrc|I*B&n5~CP5vC*=e?BZjdxZkOpAV z9#ISt%z}LoVH@@#Eo6M7HdIre5vVGPN2paA#WAf0R9T+{Z5CH34j@Qlu~vPelw$5d z#dtWREFh>N4pzbPDT_~NGe0dZA|cE{z?NAvh^OF3z=z@%0kw)X)VHE#b4AQkI{-8; z?W9W_@R5-)DGl`thOt5~qNk`U9r(bmaYBPG6H*xPL0?&b59jRbcfDh|P zRX77aSW_0@!>-wfB768q`laXKjAqM$`cyn&BS3J@L?I=D2rnO`(AEKFm@`JV5tPsv z@Znvf7Z3PggiPQ=BXF0(`Se+XBydK&XmiN~KI~4Y;sGBTU8x~C0S;dyP;S)+JoC=% z8kB}}Gy{Bycv*lCT^H~{zuqOt<^dlB%Nf9j?1G+0Y(0cS8EFjRkkFbNkP3U|JA&Y| zOfF!1ZOa(Jkal6QWXP*<4$(9bBPp|ZTgHe<$bhgBkfayy;b9yw#KSnSLE54w-)Z|b zB$divvCFCsSh#LJhI6FSc3FWu`uvC_A6O$5BiR*)LST+iUIlnT+<{EF6;zplHjQaU zYDY16T;w*mL!33Z!}JxeB5S5(O4d;$DipHBi-jl|L#pLf1?0%HX{V!NXO&`9cW@Do z|L<@Ij4&GjbN_E}2e&EW2{HW;n>;e%4lOJb?vUxq0(W4vvcMgZpG>%e9<#t5^qmFn zKy0$W9d;+|@Zb)qKqlNFp4hHx%e_8Qfug#^4T8oh)#NtU@N-p)5NS z?vU!l;0^^HnQ(`~h%9gif|v<+$mM6k9dgcD;0{@+zYTY2%>T_i+w$_O#S&hKvb$y0^bJ9nQdk zirQ2PWARuP7(+s#{3IhJ%Y-o$lx4yg#v{QP8F3llgr+Tjh>mlB$uby&IE({e41zNb zG&DCTWaB{d6N~}PI8X7(-$agE5SFF&M+h9D^~8 zLYXjzND-Dt6pUeuioqBrc&e0mFoul)(NvBln8%o^?CO~$KV&yUj}^B{vAR{&GYgCX zQ3PXz6rsRjm&YS4T`{qCo5~m{!`8PY!1^{w2J6DMrmQdq;h9%aXIHts=8y%(_|-!Sf?I0pN`4S)C#?{NsS$%11vX;Hgjy~bH^ zj5=xm0mXnZe|d$YoX?;B5{Kje4=_d~D~xfqmpHCAoBs-8ctFg*dw;`7{r5o(j6K^{ zQDL_6>irEB6WPKp2w)<=doU0mimqLu#(;ilh`w;A=FlUZb$_DG{(UGUMG1$SVLNY`dEjgBj%vz_8LM zYECR0&|twV00vf&pj5R02&RmI0U?sAd7`%}Z2?u_pufyUfQf2LRD@$9a%Rm8{sp{X z1=_o2AcG<=I1*ts+7ls8`Ek(f#$bXf9zaQqM?fK!xC*tDdT5u4?Qc{Y21r{mJRxEA z^r`ZmuIoA5bisWVZ}P1+lFb-+VL_?h-3SO3!@40Al8_j9!9oqZ5Ktkrk3ee9_U;Dd z#MrwVtSbgy$n`;Rq#_f%Knet2u(=`=ypSYF0$97PTi`_iaDy0G?{1hx=-mzG76UH` zHDllfoHy`7?`lY;NC(6u1+0o!z49pcBN?KHy~6>Gl^{#n<%Nuvl6Ld=NI9<43$S4- zJd7xC7eBaPjMiQ&c~uX|LZX>ZfHrF2^r--!1{X1OAhw8Wr9sP*;2K#OLy3f3Awf`K zgWKVWfl(4P%}M-}z*$iYje~Z!*_o(ZM#A_jSy0hLT1EHi#T>8;XsL3x1XFm0rK4PD z&8kMm%Iwk{m5^~g3MsU~n)~@ie&uYG+CDz8}UI)IbQYs6e611!q#ji}f!u&EaEBz33K>jA{;Al?J zN<|DgTSqw+Jl0+^dwYWUy2`{9DJNhmT}*{aleWne)91=Wk>*ehv>Vy|&yA?Nl>y1X zv}sDct4FhOx{*%QrkP?EScVJ}L+HJ&fX-1L%W&vOn|{2PK151vMLLOs5=+?$u?-ee z)sM<{*fv{Kk2st95>*XYt{Rdm`38;2PSJ;|{6Y)VZpf|3X&DwTYlt-pVbtcM>cM>M zSQQM~LSnbw%eRB)LF^20Ro}d45J1$;WCX&X8T4(KNhMt4< zhGghD)K(Q8T~}x)kt62hn{^}FUOU_6dCrg|nH{OKsyv9JT}L9k@SW%URH^8THQS~F z50zqVdIo+=N0zw*0Kap7JxNHgfYcHdq zA0bl->>tqv35n*7eLxr#>}zYE1VZl` zs1KDL%qAMKxsQFJR#Z**qrk=NKNF%sKUiKxKLFAw7xyXJk$t64ugu6=Q9cUfY-l+282SU zj0K?WLN3q%+UP(A7;EDp6=*O{7Q{l^GNK-0A!96JqVWiXIb~S~D$H7-CTbxXSfDnL z!kl#E!V4YEpvwxe5WsedZM?vM1JXucgQYxY4q-tFur_)DL>AP00fhO|zwN6r4U;fZ zsv;oJiy$VLtk-)91g2^XJquG50@|J%IWCO{}9?cjb9o;9l;rRZ8tke4}(zQm8r@gxX{WK`UEYc%r0}5MRXBd?X!?Y)dmSy zUJJVM{wN!{X;;)tU)q4}BEWhn!>$93a-BBj2R*&E5D1H2$e@48kNPp=Bbvz{>kqoi ziE9%jb#OUsSHY*+kYijeZS)BpW$D?q%pYVIf+0=0UC1S+IXlp>eL4T9$@Zqj>>eS-f-0tGPG04m|l-EvqJ}x z@Qh?kbzb=og*sMog?g%Ns5&m~u@%5My_|3TOWL&=4s$6qM16vYnE3+{;aH}Oi6O0e zH!lK}BT!M#Mliz`n+h!Az=9}QDut|2kq?QwqFMBT4}^)SbD+QoGU;`ebbtavde@*d zJ`Xd%L^vQp5I~{na-b0qO+hvss23RMU4sUo6yD-Fz*fodD;Y_E0emoL*1>@$t?_=kqu6FoGIAUa8&mZI4mlpw$}m?P^Ereev0xi8b%J30IlLfVx`{vytJi96d6g@ zn3+XaimK$`mNbz>6Kxv zhXV*CEUZit20>&N|q|e%q`Ql78)LcXw+dyb{LKV)WQEEp2_)t7*XPO@3k`Zy z!NaI3T2V+U23p-DU6y5NwWG_nORzvMB*j6o1_7=Lmz4!8%op^nC_|u`2`JOkG$g=s z&{m^CxE0D;=8TE3Y)^BLW6?4>mif|Ko=Saex48( zR@@dtPC)32?Nef4n1MBWZ#2mS%dT5Gu4+U2HAQir_XkOUTKXLbsR9Q~KxvJl2@Z4( z)ltmAfqh6)&5K2Q^}!YHD!ULGIeV2QRPNoIz0%7JuIgVC_p;Eld0fbO}!J1WI;0$(2W(n{u*yRASD%4MJRwY3NL#c$e&>G_v z*5hE*lb%%&MPSGQQY_IX;mM@3yO9*&>U11k&@~SZ9Z6y&0jKSF}rtQXQ(Q7)2x-icN0a~L(Y&nj2#D} zkj$ISQuaWvRoj~NZZ&84HLqFMP#K%1!f?(|8I5Oe=_%^A5!gJ0`M?S)goNfwb9Ahl zr6;vsL0MK-1F5EH8`7DA>Us)o#W9TNzyHDvxj?L!7}DhT#gHZx>aQ=%P279&aQeVMDz=D$Eq#uDBxs*~6(rB7-7yG~vNb3+w;hI#B%Vj*;be2LI+5Suo|l`9!vPPEeBF zb!40881HP3fqBgC6WQiDmA34Tk!_yisIogowt0>p%^_lgo)dXycZ_WFoS-keV`Q7>1S8oUBilSD#>(CpdQUF9Ph^+ps*PlKjO_B9-?PZ} z7}@1HP<*z>$S%+QM9SHvRknFfGMUXWND8z2M7DWOaV)!IWSi$yA+kG0ws}srm)$Y4 z&2!3wu`z0P>6(_zkNI|Oo0goI%#S1|X9R+5{m%?HYrnL$W!*VD6K?$RV4=qgcb+l# zSdN0%-!iDdKc01JJb&)bT+{00zpwSTFSVaIw?^T?#cGu3H1zJZi+*1lto-(tu`34z zM)q3&$Li@HAMD(1OTV54=5#y0yJ5;#eV=+|#JWST_|`r1*iWmHi#)V^%R9@aMlKZ@ z+iOz&(?5OCXMCXN`1!PM>HoLwltQ|BiVNRY2 z%WwO1Vf`0A+;S<$jn|w$dNA+1gLe%c+wfew+E)UD`ki>9=Z-sTK3w?mNu>t1Iq_+$ zj``lIe|pE+gDaN2I%V#vA4-QiR94`G9swXP#Km^2_Mr$Me1UP5TGk+-r(&U%WDO*Pf!zlKXexSD<@^ z0&8*|DEg0E7Zv+w_}nL3R`30FOZg3XrY4Pgx?aC8et322iZva#t^a(x|HR7r`#xV< zfBL(3tjlp%_}B+kpSkPIEjwR1J-F3Na|S=%;_Sxvj^CWG|G`kxy=6mRUdVZ&#bb$M zf2{Sxz7g9S4!P~%F`x^tfWqQ&Lm-@Y^V z&T|t^w%Y&Vp?!5%bXqZE_3^eHDmR%q|Izcs|JkS5&~vvwm*?#3Pj-kFUU4qp?j_s4 z3XPg}c+4Ml+l(rB_=Vpd%RA?$udlQ|GV#b`2@g~_8=3lh&)K_LG(5ZX&Ek7HM9Wqx zGGRui=@&0dt2yE9j54))?T((VGOJnT*BAfRcXQL857oW0_2BqlW*wj3xb3@RDiutf zd2GzNKQ3J!y<*;sE-MEge0=V?TXII;p3$@I+?4H+a=zqO1{N#W?fjslJ6~Tl`K5d7 z*W0x9@dul&T{PGC&vB2>=wD@Zm0m>?qkSH#`RvO1wK`NBcYa2@{%9i$om^Y-mhjr%xfXmix7LQa*Zfhk&{Id-)~r12{?Drg(yABz;>T`r?bQP=sir@zxFbg+NzLjDccoEuW`(#yk6 zeYCCdoFd8X+rL_UV4jD*u6XZ?Y9G&SxvAKw(|rpkbto_)|E}^4J|A=W`<#_ppB|R> zN8Fsz`ELHM#Q4*<-Fx}ocN?azJpN0Af2Q>QXl`h%Ie)7H2Tz_Ue{Rh2ExT9s zP262@{m8=Y>MqS)`SU^7eLMfh_=Oh=xr+{*+EcRjtV3rO?QGM3`_{8(>xaLtzxD0! zTF!jq?XSAFShQqXO76qAFCH}i$BUEGrmx!H^ryGSb}xPD%%JnhHNr1;`ryFMb`86p z-qG-rl(jXNml{;$(fLci`*m(~NwKHjzk6f(ySDZ}-7#tRzL&Oa=(c(9%+S6THGbdR z?SbTDPc2&i>%dFpKFhK9-tQ}4C8ZQ>5Hl5?d1%x&wOdcp#p)?tdv)vHGcFk4C^fl5 zm-hUMH}!e@h4g>1D0LE(9u8Lvx-~!_@*+ z+0YlL#xIdo4^|B(RIA1tO}-jV%}C8eerGIPDVkxLf&n+aNlHo@1Ik>Ig?H(nOmQdR zZA)#{B)KD*Hzm?IAIWw`%G~**HE9(--<5kqTz zmg|MU^LzH>441mS)~*iigZIBu@|#)TbRIJCLX|3oMh`As=GCJ0g4eg7wEaX%xgm?| z4jVM^;DGZ#zVUXmSN=?_*Q{ihYIR1xux(T1%#Gho_BG=d_xqo@BQ&w`*5Nfb_B)gN z(O)KxICRg_A;l+l3=a9RbH09!u1%iUrgY(FYxFBU^wg%JWva|Pl)H7+M-P=cH7WU* zT5UEqK2zkj$qlFFE_YA-4^?tCy6d+0UY&N`vsI>czIn`~^QE7=z0pnU-@EDM$?ZEA zC|2u4qe%Y|A8qQ>?D>wH@&sRKFxi=Q%krAdI~Q&KUduy;##j4bQ^~yV Date: Tue, 11 Oct 2016 12:20:37 +0100 Subject: [PATCH 2/3] Updated gitignore to ignore .iml files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 49cc462b2..4fbe6d49a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ # Ignore IntelliJ files .idea +*.iml **/*.iml # Ignore Maven artefacts From 0e3715d7443181e23f77833d2d9fe5345defbac8 Mon Sep 17 00:00:00 2001 From: Peter May Date: Tue, 11 Oct 2016 15:14:16 +0100 Subject: [PATCH 3/3] Corrects bug where object indexes are not stored if they are extracted from an object stream. This resulted in Improperly constructed page tree errors --- .../harvard/hul/ois/jhove/module/PdfModule.java | 5 ++++- .../pdf/ImproperlyConstructedPageTree.pdf | Bin 0 -> 4272 bytes 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 jhove-modules/src/test/resources/pdf/ImproperlyConstructedPageTree.pdf diff --git a/jhove-modules/src/main/java/edu/harvard/hul/ois/jhove/module/PdfModule.java b/jhove-modules/src/main/java/edu/harvard/hul/ois/jhove/module/PdfModule.java index a82c6ff9c..b18bd10e4 100644 --- a/jhove-modules/src/main/java/edu/harvard/hul/ois/jhove/module/PdfModule.java +++ b/jhove-modules/src/main/java/edu/harvard/hul/ois/jhove/module/PdfModule.java @@ -2426,7 +2426,10 @@ protected PdfObject getObject (int objIndex, int recGuard) } } /* And finally extract the object from the object stream. */ - return ostrm.getObject (objIndex); + /* Need to ensure the object number is set */ + PdfObject obj = ostrm.getObject (objIndex); + obj.setObjNumber (objIndex); + return obj; } catch (Exception e) { diff --git a/jhove-modules/src/test/resources/pdf/ImproperlyConstructedPageTree.pdf b/jhove-modules/src/test/resources/pdf/ImproperlyConstructedPageTree.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e76c3fe1a81461facd4819ca12154f4f0fb7cbd7 GIT binary patch literal 4272 zcmb8ydr%YC9tUs)i%c~5Lez+wfI*2$HtZ{DAwpglh=@F-)?y5>A_$};i->|cwG3cM zDT0rnP$WWiv_)%BsYtyAE4>2c5%gj~1SFtbZ>SI>f^xBXum0g5p4r)%oip>@bLM>J zcjo+aOv;s9R37k9v+}iL=}` zGK}8Zx#H4uxe>ZK)=XE;yh1@JrBAfl96dd8Mb;^K|JraSYuUp2XUtP}5uq)%wi1ut zl8{+0OMT2g5NNm57lg?m-`a#YJbALp(K0JQ$yE?{G5v z6`smT>okHt$?<8YSyYu zfBfY2-h+F8@PfQuRH0Jq>;w5wElrj=q&uG9?K`)2x}^JvLnh)G);&$Qnda1OrL(T@ zNnlzMp-UNAE{A7?-T#Wd_d z^Yb~vDb{xws$NIxY}Cu>rxx{ z(SKxg<<&GFQrnMYwx!>1Yno@KhPySU{^ehoUBBtkp$1Kq+PU4S4sLa8=q&WyRy~^A zF!KW8(;`bgq)b{%&itOxo5F%4D<`~yIvLCgd!4W;5#?+n0Y4U1A+cRReym0h}mfbl1?|QlN) z9li*!;SKBHeb>y<&Fe24PK>r`%Nxgg>gDk-vJ|t|d@`H|ulabmUHi-3=g~L2)T0-8 z!)Mv@JDc~VJZ+Yq*X1RCf!GJ0<9*jEKk=1)ojI@Ad}R2_iW9GAtugh5{1($Qy3Adk zA241_-X3!;a9q+_G%;}T%+|R-Pjqq7`Ozgds?I`l^}meb!`BE8bYNI2~lrqZ1U?>xpF+on(qrm1UusI5Bjslybz~(5hISOo!0-IyN z<`}R!25gQ2n`6M{7_d18Y>ok&W5DJZusIHFjsu(Hz~(rxISy=&1DoT(<~Xo94s4DC zn{$E9xxnV!cLZN|nt=*cyn3<+6)NMB;uF+#gdM0NqGBRRrHan+;PcczO_>~{AB1@jb0GlwIB0&iR7G;i3&T8#%;J&q56F*Jy*KCpC*{CUyG7;YR2IverK^4t2CUYTg>|2M5cdp`pfDK%(PP0-Lm6)ahqN$Cf9~N zoZneO{dwJBh;Rp)QQZ{&Tvnm?OVSI>dYNTlF52YFDnrngX|W|1gUsI`Fr7Z^ct+!R zy3qKL-_UGRP-FLOu9#$`3_9tZCgt(;);m-b$)GryRT z=sYj|*#qCbg2JoB>cdwLBusZf!-RKzwa R1;#mCDuu}uua{6M{{=9^1(*N; literal 0 HcmV?d00001