From 1f6c44e896018c81e1337a0da1921d26f380789a Mon Sep 17 00:00:00 2001 From: David Huggins-Daines Date: Wed, 27 Nov 2024 09:58:11 -0500 Subject: [PATCH] fix: resolve filters before checking if it isnt a list (#22) --- playa/pdftypes.py | 4 ++-- samples/contrib/issue-1062-filters.pdf | Bin 0 -> 35750 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 samples/contrib/issue-1062-filters.pdf diff --git a/playa/pdftypes.py b/playa/pdftypes.py index 49b3ec25..2d3df00a 100644 --- a/playa/pdftypes.py +++ b/playa/pdftypes.py @@ -376,8 +376,8 @@ def get_any(self, names: Iterable[str], default: object = None) -> Any: return default def get_filters(self) -> List[Tuple[Any, Any]]: - filters = self.get_any(("F", "Filter")) - params = self.get_any(("DP", "DecodeParms", "FDecodeParms"), {}) + filters = resolve1(self.get_any(("F", "Filter"), [])) + params = resolve1(self.get_any(("DP", "DecodeParms", "FDecodeParms"), {})) if not filters: return [] if not isinstance(filters, list): diff --git a/samples/contrib/issue-1062-filters.pdf b/samples/contrib/issue-1062-filters.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c7f21cd3089f5e730290089aaf9bcf06ce9203f1 GIT binary patch literal 35750 zcmeFaWmq1|x-FW7Ai)Xl9^BpCU4z31e7H++2o~IeI|L2x?(P!YAy^3R9_|O3b7t;! z*4}HK=kEPH_uLbH6jj}Czg1mTqpSL*$ADB`Sd@l=mI)4;^y~WQ1n8HdlCm1;AQOQ+ zzz$#ubO74fa}o$k$v+-9frDlwpeL}_H-m%b=7xi&6E(E}84xgm4l06*(m*R?2NMG3 zpG96?IB0tZJ0QRk4%#`zKu_=L;o%`qjxU}2{%&I@uW)8XtNDj(@3LF3EKjrD{rMEO zHLu5y^W%xp+_cW&=73~Z_;VS)Ilgt}htO#IIIWb*tBw>>^ex)@IM?#?C*^3u3nF0PL!YrTd&`!wO(#F~fXyrh_4mv1gZDDPvWCJh&5@-_8Nmv;Ioq>h~bi%-QrUpPoF+l=G z78ZiXNuda8{eK+s{Ztq)WU(&?UN#lw)33T1kKc?i=*1PXrM-P0A--YZICJ@+Y}}BR zr*UFwD2R5^J(^xfBZW0QsXWtsxP&YSMd*k4e`2B=ni_vt6xym9;!CD`qt>;wsi(eF zkT|6=tSgSzjlOm@G#uPmAMrxnOdHp8N9eUv)RKxfFSSl4mU$F;@aV{;v846z6!+QN%U1;^Wl1R_b*#pAHMXG9$?6c?oi46=xG%bDz9Q`_}o3C zd(+m1yY8qNDnt{0f-zuw=NdC|daHZW*R`ZS^>RG}Vo`p42H{G}?NW8N}5s07r_k9NdVF6L*oi8PCgXo0mZBIh&18GEk>1Mv!;&bO<9U zLQyomUOn)Gi9T}Q@!&e0hs9S~hM34^1yt2<9dE)&zp__89V>?#t-q&@+9?dRK$rM* zRRk;Zs^)9JxD-Xcmq~DWe-4R)yQm;p2d~A0sg)FrgSjJGdSa$Oq7+1J2yxXnS_zc& z_{<#Dq*DFx2N$I%BtQ&F@MxcW=8I$~Rq~!(G)`|2gilF4L~6PFq&?vFRB7Lgko4YF^?z@j_?Kh!8R11z4V! zk8ag7Q1Uc>Pz-BWP@d3fq^6G;iB&#mdC!esoisj_zkNUn4-YqzYdsUVqtlPVlWbo> z(hxqrAd~!R@xxV(bpd%F>JZJ1%WKX5+VkBBbra2^Akdk2<@%u1?OIOn(x!#oe7k&@ zDgWa3YkRxbcJYaB&)5b%qdOtpxJ7VWfm{&T!H=V~Y9LyF=eI~qUDxXy1I`;`NH@1r z-`=O=0-Nff_tSHHzuhUe7r0< z(p8%x5H2sb$lOlvqoc3g?^gPkudHuZu2!y>b=(Z^%=lWSe&Cs|q>p;dyUzATjP!JO z!HnvX?*)nrkLSS!Q2M0nD@4wR6a+-3n_N`#S(4$UwI5XFH-#y`6CRmCt^4sKuekK& z-WRL8ksP1S*h`nM>TO01&lY%Fy`6)1wd9~#skI_sZ!2u#2=%ddX1zWKl&L9YQ5jnH za1o_@e_isx_stlc+bxw4cD2%@D(8Z%Gxis+TawJndWNZS(DS-ZdRp94M)`nG(8{vMN)*L|oZFp;MIuO~iV&BrkbAR%^ zuUBoy;5$UZHPp_x^zj9&tbWvj<7fpZte9CI)^}UqS98JA;KoK%_FlMDEpzFxBiOLS z>of(4D8YqG>2$W3YGmeU{1E20y}))*Rw9Q=u%DMrub(g^6}C9O44UE4!Ni8AU|jdo zUBew&TNE;!kE)rXJF5e>*xl`HvPkXh@&**VvPo|IYAd|A2*{)#8hOoTq?W#y4<%9h zajAzqW${5!0eCM(G+can#cJlBfNhC=UduhW}=eNqz&3`a;rcn{TOXiTEkd^(=P z@xvcN){hYvrbjVGz~jd720Fyi@@J0xajGSchc!wkg59WONB9wk1i>{*ZpO*`5e1RA z)*jq9TtIEe)a)ptWp`0K;q`Rg!sdWE!jo*`@Wh^X4rN3+Jmbpv7N5lQK3G{ zFS8H;RtMOMC{(7t*`<}UvF|sLBljw5x0%YRR7Q>2txLK94tP26@32yA(8E;wnqnfo z-Tr4y6a|WN80`X4`Lenz*n}S7toHtdx$tvP{Qnor;(|4D@v)?5BGdFGbhJyvH=p)npUc#s+#Nvvl~D!P;% zV&EOOrR}kvF4k0fC!C}cUOM)th|(n+w0Z2N_;ow~32}~XS7 z^hupW76skJvADVV8b^TgDfF49*~IbA9<#K!rJ|uDh+YA2s9@{cwmUkkG2Z1Kw0I{o)GPoCotSh!IWxETH zlONSnK!$Jr+Y#4G%AJ6{KL#O zVjF+#fKB4=FYpqM=D<#FOd4e1GrICXOcGg3)Oo6rdJkdzK|-RLqX|2m9Uuhto8cA2O6vL1MP4pb5*@2ObT0XSq&~b2`J&f}FG(xi zB?yFB?^w&nu=;doyQl=tSi}2eovBH#*xXyxkSQGH1H8{B;ULs87p!09Lpb%d7lP0z zseGuSv{flG0u^vL^MDdnpV|+AUy+BE)NVFX0w++>EJb&juUZm5)qt>@VknwLjf>os z1yew&pp7|LXA9gv0B=AK`+#rvCQgF11bnPXJk0Rk=alC2P>-$<-`KiSEb;Urv{#A_ zJ`*2!Eks_Ep(teQAQ#+zbDN%40sy}|D9hYdYQ+UohQ6v6L!Bv)1O3Z}d|(r|KcUIh zjw;=z=2oO(7w=88LTXZjp*$IEZIZ&rB%fgMFaYNc32e_**}{3pJ>n+n2T#^F(z)s%)AyH{01eZS?Aoq0F~bOPMLB=J_0c@ zFl!Pv-R;~8-H)5gFf5A5mCm7yDussRIn4}AorHExvbK_`v1_gHw86ud5QP z-)J(#sKEH-vKG{F5X!=;+9mk8t6Gj}O#N%mxbY^KE=q6+(Qtr}jHvi{qG51E>er>A zxN7$kFy~R&`?iei?nT&!BP4jLxN)c!o34t4wh>bD0|-mkN`Z@uH9xl$wIaXTiJ(#2 z9wr_DcJ<4hV^N#%PhGKb-SqT5i})5TUsI4wBw=2%`=>zoDd=`L)Whd1`PMTjF`AL+ z>^W)0A76ZMcWjCjQV(GH))x`LE_PDK=!yJ%Fn2W0Wnxcl-XrH?e8Uz7D*(3L4@#=S z*)u-KviAcqRkz(V^%v;?OXNY*#Rg9*iMuFMjR4;uXNEX@1EMT>gQ+UwDAdfu;KI87wF6)w$78Xpf)qY^9UekPX#Cp zs(t!1WkE8nMoT<+Gey|!$CY!UI0 z;p}8@M&j%Fq><@i=GqWisXi@%3gH=tJphn3&LdkR^8C7^Iwkm!Y%3q~tODEDDNZr; zr7K5o$br0O?(nNa@9F??JM3sdKsJ4)FIxmX(9g3Woo_V-7>mTjq;7@w0uR!1jz?BT z(?p(Ymu;$gnxmUWi+utklj+VwX6^?NO)Z@M4PH>Vdvna*frPyfe^E*uqE@}SiO^Oz z)AtWoy36F#wQ(ImWg--gDA*>$e?hinSiy7b@!kYhcuCi|I^c@XJ`BcxC*p7}|zsB5~m_au8uqFHz z;tyhZK9o!|2gjqFQ;c+K!1C{k#W9jQmZLh&i{8>WhfOzZ9V{d1nR${+3snY5`UrYW zsI>b>hlx_&SNcJ$SxLEAg=)%{r_=8Brgy4~2vuaAYUSIl8RM%zMh5NGq6r%g66Oc} zq}|cFYy0(@Uq_B>=AJZLX{T-%b^9K^e-9q*EaOUB1GPu1$IZCYVfNf8u-D5qqEDjK zAaIt=wVax!{5a>5m1ks~2P1SO#er>JFs29c=7vpdvac|&R$2XXHy8PSkhqj_M-;EB zQvZ^;yZ+8v?2x=l!ztlC0^6l4?U2-1asEC>+`9d& zdXKXRS{lmarnV`5QgMU-C}$D*QLgSp>1i4vWO&1Ot+R@%f|gb-&ay^k%F??i*c9TF zO3#Pq%l?(X0=wb^Sy}GB3K$4*no1$7U6Kna*Di9e^Rsk4&Pk{EWSDebAr)|?E?yooQu=<#wE+xs@VI9YY%h<8taP9;Krmz4jItz$yeY69=McYa z2KqF-=b`XVeKsyUkcS!x@-6(!UAdR8?%5g9LdYt9nID>ZT@#Vp4kmHX2gm3*i~5?9LuYj+l@1>(LrnrT zbd}pnu}a)3`omh$?c>sB6SL(7E+Kone&w)Jaa+3qPW%(-Lh;%{+Zw&p>0K@`co-f6 zG{xzmjEK_ax(iIF2*Ok&sdNOk!;6A4Fatl*mr<{1VnkQ8JZkB;@K*tC>3%_p;LqJM z3vi&>POHKaY+gF7lYDC%W##ZLe5E_1C-@7h zaXXxyYZK9F5#IYX@Bnal7Z3Z+!4|9Mm@mNrf$9hL$~7LL8y1yC0Y;MS!$=V9nh&eq zz@b8i=G{G{Rx8sHIpEy5#tg5{O9Yg@S0Ci%sL6$!Ut1hn;tkRkTBt!Ki7=Jx$X)q1 z#=_aengePu6Dt$w3pz3YiNOK_?{2qb2qVbiNJE-Qi?Y)iQtfZvPkl@b6xc`&TdkQt z5{zqh2x@UWuvZ(jBO+lc)0?ii<7%ogdVSxjiM#rCl;TSl`F17j?g!Q+o$2MWJ0{Cp z@kD=f1+R41<)*mM*fOrt45F!(6G-+Jh9TEC#H(}C`6;zIV~&E_QRjQW`dE^K4EM1F zzcn04Wwp?iCGw=X;ws6pM9ozmVhU!*p0tV#r=@3W;+>P9AinkZNFb1-#0|AYwDjCA zt@^sXlK@gP=;*~{bbj8(P3LkX2Mf-;7Q|kIyePQUz-6rQNmw3MQRcdX!fAW&0!uGy zO&rv_?N3PR=M+iY)4INEiT1kXGbZoe{ketSk?G31Na=GQp^**BAECi+7(cVY1|;P1<}T zxHjyZI?j!sqY2&|LtS%NRml*S&qa@zomm}hhOsvXas$HC4rIEL^&GWKH|wKe$JYQj z_X-Nle$UpkQ|kiUZ9XhPGhzXT237)^sa~=DzFmIVPRwTIo|WvdimJ?-j}1!&azJ4XhcLknI3tfWYiT= zxmGc)es5c}$vn*ynLZEQm%*ZmZnv^}UBr`fQ<%bfNF!>Ve{=kZ2UzO6V3kY#Zp+M)LL1CtN3nsJ00o9R+M=)(CE6xlc;U z-A7DmKX~D8ea?bF%F*v}b*MpWix`-L=o3SmMv0J9*gkFUyC9^F^NzrCN~_X=KwBUL z3=`Tp_zBIYY|61DZ#G%Pgsb?iMUqw(^|vPsd0gZxv2dJkJJVc}!JFVON%vjb9K6&@ zpea06_j8wz>=Vb|_ON0$bPSh_XgD2ll+7)!d(dBnKL?<3eB$g^82lFQqg`_$Mz_CH zOgr^obfw*#?^%bJFu?@kjMeBX1+E=D zZzT@SH#5@TyO86CGB83-v(z~9NRQ!&8RLYqB0t-@mr${oocdVA5L(%ue;?L)1^Cy@+-Y%YM-yd+eW4i&@=tN*mRAvI4ACS9DSbEg!m#S|X)Uy#? zN=U;qD&$H=>XxKxP_fCHGaITarWwpBEDSQlhdqfznVltw`9u93O3PFsM+YGElP`R> zVZY=^m-)3@elfr-qgO(x7;Uv7>TwhbMDH2OWk_0YW*VI93P5`+O9UhaOf!7BD2{Z9 zfo5acR*nBoWz3)Lg&R(eBg|f3cu*V5&{~~tzKcge-RbcKJ^4^x3VVtLU79J5ziJBU zV}dpX#*~taJ5b}bT#?~4B9H_1pm?r-Sk5)(vtG|xW%09{yS=2z-nLhq0(jICVCTg=dqAec%l>tRGw_Ftv43uVGO%JVI-sJu3c zU`}fmgqc9yON;J z6KFdkOT9fam5ML~v$YS|8lrtW@?0jz#)Tpwd;pl2G1_>jwMQLu`KjxaNBRVIziY#G zv#9v^Qux9wt~zrhP`{?fc;q=uEbx_3!uO$QASn!sj!yN(BzeSqfMQS%D$6U=_cEe2 zLWP;f37PLCH^N3ab?mG}c3=dDv#`52=jUsli|FM{r>OP}l!i8>;LMutdDc5Wh zm{zV?YD5rn%`d61olbcQ>%48Hy`Du0(}@1@TT5C`Y&6`w(;JdwiA>%zoh1Zx1~GlK zgp(+;p!#Hgp@%3h{<~a)Eus5w%<)^WBS46fi!YrtbG#-1i~v+Ad#>>0G)E}9mNO`1 zTpg0oW!)7h`Z5zXN8ZM|ul^|lWoK&)Wv^}`z&65i@b^q8a2kq>eGW3+GTwCy2_e|V z_dDyqRF$`XUyRQ_m}>+lBicW~Uvxwgs(|VD4i0#;$N#~M9dO8u=5lzBI)OK+V`M@3 zu4edI^GZyjOU0+AUa=#bI%Ni}9}(CWqgZ1oR?K3yCn?6C=;`#NzZwuEXbzY(IK~0M zNt{aNF2B<&+NwF4|Dc8w^(B;-g7*lHD1j^VA?!5fxXyAQbD-=!2?vWV zgC%C{^T8>xwMgC$WUZl@!CC8eTEoI?0jg#nF!`ym$3(6Z^myfR$2E80$|tx>^ZkHG zb?%BW^4q*!6w8V}y$u`O#Ip$Pu&YhEj)|ha>J(RGI6s)pBW@(y(HHVFfNL;n8A#2R zBIIu zG1gxv)nJ8w@bci!&*XKs z1BJ!=FnqRj+n@qwH03D|mr)a_ip54}5pd6FnVHk%TbSYA@P{G?51= zxQ?F{S^~0tL;+CSc^^!-q3RjB6q{(E~h1Fe#m~8@ALT$&m&K9M*6}>{sU| z$8GV8s-kF^hH~VTki5b(>0~BhcZB6iN5r%up+oc(lCT(?s% zU7hX7h^BX1jv!IYVnV5)BvqYBz^>74$@T}9U`nEpx#5qh)hjB@Z1fm*k|*cfb^kIu7&Ra608z4kZ@g?tNk4viQ}i%y6qUqUeVlI3m|ol?QGMj-fNsT}K|qYF>N z2|s@bTb=kK?67YDo0}&V|F)9{MOK*d1A~arhV2)pci+FwpN6H#+wQ1GZ5mV|unvts`Xi1m3q z(&E8|9y5gW;w1SLTnpZ{E^6)Pg&a;~j31*p%lRSf>%xHE8^GO@qK$pDWF6O$Wd1#S zH|0$Zp;(Jmfy?Ldy9>)cjn;AdlQg;mOFEU`DtV#Z1Qo>h7q%=OD&=4R0azU_3NZ96 zZMpXDb|Yi8v8Qn6UOMF>Iy>`8^`SKPptp>S_W_psM_F{L{M=AW_>~sWWb8HxN^Z59 zum@>KzId&E_1wLC~sQ1PBjkh%ur`&#(*;YfWYZt(T0p5R1w|`i~AT=J>$ezXI zDP0Kb>R}4j&Q$N<6&1$uTp>~mXswK|uw&Y%T9-Yb4xz@YDsp8*L7G0HwNuJFHr6|# z{irHbCM=*|<7YGZqcYT(*(Dkb_ke_2UZmPRzkCsVj^~7dUL= z5^wYqvP#@YX+mDPkw*bbQLo=#yovDofX$tjjvnf*mwe=0j^-&rY_4OjyE873z~ZTy zH{E_`(2ThY%Sw9uKI=sWr-DHstkmsn;d3_i#%)<*B|N9)7uP3{5hu$UpG+zkd37pF zW0gpF7v&eO_CrpCKiU-TyyHuA5vq4l@kEp@!oy+wyn>U zaDwR=gV)6;rXx~D**VoJor_e8T<=%$a<@6>RQ)1WbnH0&WAypVl07}6c_S@)=&WkX%P} z-;G=-y7=HsZI*-W7Ht^F2gzK+NWEN9IEpoVq$Qrr;*FG@1|Im1S==E&} z_<>L1WsoV0Mb0ODEdWFIQX-X&hYgM|@z*&F7knZ$HCGc4p|kG7``*f9rHEF19_}#g zXXkcv@wyla_~`_BIpuA|+OCk#r{Tz7g#)Ql=wR_Ndsww!7*ORKw;*O7jK$(`biUq{ z?Cr}$7Ah4K%D7#$;~eq?;tCBz`0kCRS0G>VXf_B+CFi&`PG{3$+zN-WqiEE@@1?iN zsMwQ(hw{6#_eA$pe)+Dkt(H0t4L7SUO%4>6-z?Y1-an9U}Ewh5n|0v@& zZ0Cn6s~?QBk7W=>K4W{RnUl@&YDWtF&6#*nVf{7jmY$}}xxn={(1);QdzQLIPgn+x zBBmcMU<{~Xhr3CG_$o4{OV{k8o#{sAlnMS-de=DeH)ax{q*-hK@EcYA)LV^CW!c04 zD?{dI-ej~7b(wRGF#g!8^w2!>(bkn*9W$doiEklR$YWi+F)YbBIuQ4%WHSrr{6{z| z9NSs3!}4WP;2_pKgv)$8Oop=A6&+)`bf&(k;!2oGPgE zBdoyfI#-LDA9uY&Miiz3S$NcYc}=IPojn(?{;R}`N`yDOGfRN?;RSJ`_2W3kp`A(s z-77d6ZAW0V+JFIgbpI)Dk0L?32VZOL3Xxfp0MuOch0!*RczJge;2K zSKNn*pF#zBDKRg$PAn~6io|~gw%brvdinz3sjI!n$2+(D4IqU5Wru4=kkw55$4n?V z8q(bK7#vpTRCA{4%QL{^mm>GZhf)b)-o9mxQr$l9e!W}oFpl1nGy*Xoj%m<@ZBI&i zo1gJww*eD*92IB$m48OOuyOc1S6cY}raebHhy%*$v)hMUrp{QT^^eYrA9zu+cH4hE zgHS5YfJBcvx(JIyUPQ<_a4=pKVamk^MKsKaPlD*#?fYe^I7eK$=F-*1u4BvcF)KRn zag8GvHokm*{~0Y=$S*>3deG@oT8$do!@z|wtA~EcqG|2Q z$qK-yv(+z=7MgFsii6x}%jbXBB8v4&_ANYk+gRNJX!2d(qM!> z0U-|(FMYd&IgU_8oQiR>z7@hVG#qziwWc`c00JzJfuId8k0fAVRYSc8fvHJ>T{YEL zC9H)-3OW;4zEe+K2MQkou=laj#MDGpmYPvEfTJAc3@13eHP>T1vg>0e@+1a-Qj#pU zs7;>DG}JCL>-PqXww?*-4|i>gj?;Vm3;xwJ%ZJz~HUw{VU5`FSU)zub#$G@l*Bvf4 zjKfu~zH>x(dY@^xf+*JYhT1+nZns8yGyl%&sGOi+V*qX!{{u=-3r0)PQd)Md_jTO* zxDe=jn`q+#K-$)e65OVVvZh=fv|XObJ6JWRPH4B77sD-nAF*OOaT#pvwCOAWx3SC%~%>7)0@>Fjm<>6cewoJYBEtC>G@aUK^=ROeYs=W)m z45AE)oAyXXBijITWXccpb{}I9EjK!ZJ!0Ozp{@?ZUB&hC;R+C)NTNs!)?gY{aI2Y) z7vDb0H5R&b##{aoP)0>g5t}C= zJQvz#u`4@>tM*?EB{{`8JHoggaST?P7kqnw!)N>=Zdi_VH>deBYZ8acmmLqebuRAC zwNm58QVwIfdV(IWud;vi7;ju`^eV7&m)X?}g5(9JQW4ITTE)`x>A~lr4reE0wE?SY zvgpCi^W+~dRn(c>c9a`Xy902PlWOGF@+mtl`8<_;>e`WMJz>uocAxW=LsLPB_Golbh?*=4XLcuZ6`_(dqF9x0xkjlHQX+Tfy}kHeq`8 zdhncEY2>Mm>otb5;7Uk|>$$}`Wnx)nQMULf>Ea!Xh?bXb=2e_Mm6@!>R)-Gv`rcUO zPA!u}-5C9x%<{&Z(V1@$Y9Qti7qz3UVyCm+fRdkwj6wAk{-F|WQ{OJl;(e#q%Cg-fYipO5XjXWD5fkbQ8sEKhuE-J)}5_PPxN)A9{(V+q*0C=hTh z(%kauNMI=tmZ|&XC@Hjofst}5;rFCYD7%z9 z$IR@!Q7U4v6xxwsJSk%yb5zsvt`i%j_|c`UD^yx{iM6cG4mwHEc}aLFeMo+;aynK{ z_lWJn0W#HTCSwF+d;u|ZWHW=(_Np&C&+ z#rjx&TdXGwF^cl_6YfpS=tmcbHwQOi)hjMt+7=SSP@(xCU6D>Nd|bS71YsnVtE{e> zZpw22m?#li(R@#sKz^t7!}ZuPe0y6ut#}EC1pRB`8HH&99I~&+HoXQ675&}2^=tfG zc;jbomDCUYtIEDd2T?3O$fCF!+y+b!#rc|kB)s;X8w8RsRpOT*Ozrcg9d~kDrCZ(I z&h#?5+ji+jM9hfNI^@KKfKD3E2QmJM z`DY7Jrlh>J+8iaeIAtnDlT76j4&D`Ns-5dtLx zJ5w76P6Ci)8eTdfdU^&pX!bvA`5R^7(TOn7{>j?f4n!vqus3*Q7O*iqaSH%8e-IFU zmLDx2&(bi`vw>_u%m`z90w%`CEXa?bptUoBCJh5CE69M6g@6IXXCUBUVgT_Dp3eVd zIfw%--T@s<4FI5{5)J?hQv(4jV+$a`BiljA0cfcTx(>vGcw{R4Nz&l>v*93Wgq47m zy{U*5h>c-tW&F#8f&NdMf4I3vuYZy;9$6ZoexMTs*aM$>4@9r{)tH~n``J}=f7U?o zSob4y=82SH58{Im&@-}u$RAG$6AOqx!tz(b&JOBgR#wm`GjMW7~sGnCnwSfJxeLpXIwEO9W4KyhKtDi^TPv<$9L3jMKg2xVEeXQkIGoNzIY#`&O z3Z6RUZ#Vl`{jcKBCjHf`jE{9ZB~Q(K%00F4*A>5VKRrMC`p(Flkt;-|1LZ}HS-AySpM6PWM$+4%~+wo)=n1I#~J+B+R4E3x3%+;@AtR0 zlaUF8NEUj~^2|FqR07yktkf7SCB1RvRl{}lvT zpB9k+`;x~c@&D)d{=W~wN38sN5d3TR`nV>VK5Yj7^Ocbq1Vhl{{hv91%1@0Ieu+`0bWuu?u^=^tSF_~P(4eElIF!0^W=_fOV3!yoTN|3D_! zSO{JhMf5<}z`p}uZi#;>rAIyJBFpF%iS0*Ccw5n$t~5oX`LR*z%g}2m!=|)Ymg zDxCNC`)p*yrK7FuV?7S6*Y+#v#T?)>spMA^qv=O82oQY74)-v46bio)^w?cauEEut|sC8L5x8Ln>nIV{agBFOxMTL3H=IW|H?TARXX%FC^u0_FUfe65c%Z?~2)CE1N6(fe$Pqd9-1ydc4th$no)R>91Pzs)K z3t{(ij9u(`+&yta?N+{o0j0n*HC05Y(Dyi?PsT5CkRhk5;qeu}8p0pfuU6Aov|A#W zOrtJ4FWGEtK$T)%iE39>6@;*t*XD9K-@g88yQQYBC1_(hY#c5S)4=XKTM+U}rEMCg zRR>*Z#J^8D#g3F~>w8L)B3Kc7N~L`Wp1l!=pZRedVM$dKYVoH&ui8&NYl zlfI9Z%znlJ^8TIR*j;c!!Y=SvY(!NM?!n_z$IXN_ubF4YB$LcZRb?`W^T?*F(|QTh zbW+w5h)852%Tu^G{9aL#buK|{>bu3>^{STvf`k0WY)VD74TXCth%Z^cDB1ql%`|EZ zH*Gl>Ox+V6m(uZ>ip-|=+B_}2+O-~iZeu)-Gxnuo&gSjc?@JEiD>?QE_=4Pc;~k6x z!sz>kK_v3+x|CClYM}2LT+3=yUugPEO20n-p2NzgMb|m+54oX?&l}7dr)gVO!ZXg3B0^O^o1MJt>6n}b^ojo36Iu^`JQ#+s2DapCX>~+}?pY=>>l`g*sKU-m>5y-Wb zgY%aYxNCf(f|(K`&=fSj%ubxK@2@zCz#klFgk%$nJ;i6-X#*lNhf+D=FxH-}tU)I? zY~cGkGnXA@Oax991<#W7xW$?W%@np?yXMUL7Fq9E^JJO5&GqI!i4zRM~y}ge%&mF@Z!?$N?CLmd1L-gij`fSXvU-^ zxWd#baVf&$;ZEe@8_LTY@ZrOO+GE@tkB<(Q)Eforg1(3+WvZ&L7K3$}o7-DGkY9T& zRUH#V#kt`KeFBd|EE)_YcO!dKy6dMXaa^?R0}g}2!vkx}7W)1O^Q&4zW;r7}nw+7~ z=LSV^7!R9oV`2}AXhy3_s*a24V45Gfdo0+l0d&O9zWU?Y>(7f>o=E|Smjy@|E(Kve z0moA<$O)XkUqc&3Y(Rc?-)`d$Dz)`x6qOgyS8$R2z<9GNf++(22_;_~nSCp~E^|%u z!pRmdIRFewQh!Zrv+{)&JY7wld-##ZsMHrpheSqFIe^P9BAT8*Sw0I@A$2 z0J9u(^APu5f`Jj2CKbNaGpS{A!Xo%j?Q@l0BYrJWSym4{gD?-L5t4a|~M3LOwj zQ7Q>Xv$gV&JXH${83!~N?GAHfm3CM|>yl|Gq9M&krfu4|4LgTPW-Og7)lF6$w-02p z1{VCS#w^h6bN#epD|H(Ne7YrEbgehhutn69aAQZskTo^0QD#*k>**Rh;ldD$m-Nc< zBD-IGw=L0AJXxePh0WnQYLcakjX+OAZ^By%oZPe?nn!C-Y#5Bt2+`7d(@jhnhQN8$ zUt1@YsxzTYKwKId=b=cep!Km%E0bA=)DE)#d2d7WMgmc3FkbrJnb*lZW&g~r1IhK4 zzd2Qb>%@C41pZ7zMpIfW1?wB8ZW?+jZPH7O66X6b&pCt0}yPxHJ*g$lkyk_le?rGe_O6MHLS9@NB$OXMO|cb2QtO z$PYN-a4#V9){Yxejz8m;hExlM8t8xabMf}KA#I8Feu$>_ydD-P+CtsF^>}gpCCRg;TjU2iJ&)D(aM}0Hm~hAKPVp(TEl2a<2OK;!g#BYr$Z9 zGsj;jz9U&peI~L1{rfQHX(z<$!IzCB z$>$>I!lWt0L=KbA4Y~CA)pk^xm{v?zJHwu>yL$i~QZ0v-x?NQ@1Puvo<~R2qpQi*e z$YC^D&>W^!ItnHDy~0D?j%fKjRkr-x^+&<9LSQfeNeCB0)TMf%w~O`I1}^@3@}p*) zKIL_ScwgYV0wC$*-VWgv7V1%Ry1GE1llpm2!`bBXjWV?s##*b7?ag%roIgCDVk6!9 zry>2P&CpZqo{^F5ZxTXJo2Gve(`N+5CI7bF`WY#c|0x(G12i-RfCB2Ei1VWr3kN75 z!2A@U1Ia!;#^4`=grMykog&a46c;c6f@0H8FB9^1)&@#IP_Rvt4)mu20y<@&vja#M z=uwAA;?H=(AEuA7Zcy;=4@aO9Bf(Sf?$Ir%#6$pk`T1E1s00cu|Dj&=xbOR=b@Wu} zlXMZm-*%KwHbS7FAE>GJ1W)_Qf7ok2?!W(b^MC9$8K0DjK>q(wssaT>{@SJfsonH{ zsZ`ZdSNt*4{x;E`dhB0Kw0{-|`qyezpuge#9R5ECbGFkZ^5eHf>pl-t9}bs{T8hH zEm-wiubGFkZ^5eHf>pl-t9}bs{T8hHA5?|< z|M0&`{x1cq82=)w|AS)H6E)ypu@3$zn;4`w^B+kC{|TFTu4G*p(L?Mj{t0-ZPC?_+ z7pR>cTW5#^{P+BVp@>aKw<$_X>h8$#sa(V)*@Q!SPG1X@ZuQ@JdE5?<>}(&d*z71R zH@?%|U2aVEtDt)A#OKvfi=SdI@UEB7_8#nq7XFW8H=P5a`Fmd&L<+07CuIm$m!|Jl zCk_yB?y3X@v}W@hq`qz$62s9CAJ7C*m28W@-^PAzEnkOw?&Q1~VYgLFDr$Cgj(&d; zd&V0&a-HfldAwUX(0^Xa`zGFlwtkD^c2yq=K7C>nI{i?`s}~_}hNHG*0gGair*aL6 z4%2=>$)%ry{S`oxL%RKW`{ynqju>Sk_TFzBfBI=tj73R!_ z!+V^(uP1G{)R87y@hA<)bv6Zbc}c-keING><_|ECwro~}1=*-(X{LYQHI%T>_TUADxMMY3`^r`!tcdg`X%r}xP z=Ttxl&|!aT1}>$NM}&;RH@&l^${qpDOz~}?O}RG(YtN|oUGeiGm#ly?ZE9`T+?%TJ z^}-bm;2&!R@e~G=OUx@f1mWx*b-!RSl&*;x_@&{Zzm^L1&#aXkxty$cUl9GAEJRvy zAK^PI%&-W~B4^r$hEDD==4%%)!14T#Ij9}X`2uQIGDcYJBUFvDoKbMbsfpn9kX#Nl z*OB|O=5&E)3;+sIhyb*p366o}*iqu1d*gPh$^`_3s6|#qyj1#ABPemSn30$QXW!{& z#6ZgpvV=Q8YY-{$5sOEw0fZL+|&)q#VVWB2ZH`4_Oy7p}%!zZ=yfYlY#G9)_nAXY{M( zSw_wPKb%dczg<6vt(laTi`0-<6OPOO9K4xUU)y+GFs<46iEtg3G{RsIWy&Z;uy(U) zy|Il!1nU#2;yyO6hO{OZYT^9O|Fgu|9%_%5s_kpm3#+`EwTSP!Sn64}2D?x1K0Dm* z;Xn1`#;>9~nV#93Rg*K<+3)_eBq!|e3hA8-`edix-^p|`)&9GmpzkrERG&WWK#l3E zkIRUkC^eiE`7<=p_3qc7{km;uD=z(v(=(p@d`BLa&{@9+3zQ%2SjuOs-EsDZQRTK{ z@3{_%s71Uj>)Pf2bi++?#RWD~-`!9>A}+nbGbX$vD!HUR&$@s6BHv@)x9_#Tl@s1r zpp&GglO2%DrsPxH>~Z?p8HKs2Tiw!*99ulmQg6*yzyC*dC*duFyWt6^&PIucS7Dz^y?)(P zdGq_OSMS&tt@nI$TE(#3eELl3s|NAc7jdm+7daK(+HaMe72y#z^ZlgKjl#M7orkX* zeRs7vQs+8r^*PU)%{QLEE!*()?vpo+K`*>Nt9zW8uh4tCtJ=8tr?A)Jkhu@$FEFfj z`agYgnBKevhV_r0^?tPNt!E6M_3r}KO{GSlIuTsE8k(B}Pb`ETgb1!X3DmmALuFGb z_HCp_CJI0V-}8yOkJJd%qCne6YK*#%)UmWABfm&NBiJ#($uY#)LqQX?nYAc2u_QA; z&n2-WRYAkW$_RKwqJc3G8h}o3f~x@Oa|52EsSxGk6z}Be6YuF4=I`n3s^I4XQUlys zn^Kyb3Nc*4FSR5*HL(oHH8(K;*`f-xGBYnNKe!~Zs6-*e-!b0BF~|`p?iT9j9OCKk zXR84^s1u~p*U`_#(Jurn0OGs2`T!M&xI$FGQ~}M4_jmGgb%rPe2?GI0y<-p#35fD| zPZxwq5M9KOAd}tvgM3NS4%6fq7gd}z-e5BYnx0(qQjk&;C_})C1Jsm{*gg*23a;;+nF6Gu6~KGUfmucYTrL0^ zpgrKg6W)M3$c<3Xtu)4VZliM|@KmmR;6bbUpnd7Uo!rpIJBa6-pOUJeA6lI1m!Ahb z{tDS;6-B9Oyj%tf#=wK)KzqX>K*7w^)Yw!3Bm)A*CKe{ZtPTPSc?fkTz`_qr%-9^b z4IEv}6zCQ-F%!@UgeYQ$M&=lLfnpeT7#dlCPH9BdYYZ$MFvWm7@zK>;fQ}tR)oTLU zO^+^S4(d;#sk6j%Gw{Gb^e`|qwZIfJGqFSu7efmRa}0YeEKD%M#R7}HmWE~+{;)K$ zz;KJD3Gj$tG=Er{g1Uq#els?-zz8d#81U3lbalW(g3-l{fyW