From 113a33c5398e2e673853e01d48703e00c17f6bc5 Mon Sep 17 00:00:00 2001 From: drh <> Date: Sat, 24 Apr 2021 23:40:05 +0000 Subject: [PATCH] Make window range queries more robust against corrupt database files. dbsqlfuzz f22df3a7b2aab0937a415484514fc2f68a293c99. FossilOrigin-Name: 506333742103c1f440db5da819a36f3b518f7b49e94a7b74419b02bbcadc5a78 --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/window.c | 31 ++++++++++++++++++++----------- test/fuzzdata8.db | Bin 2101248 -> 2104320 bytes 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/manifest b/manifest index dda2d26af2..9c94a08655 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Treat\sbyte-order\smarks\s(BOMs)\sat\sthe\sstart\sof\sa\stoken\sas\swhitespace.\nThis\senhancement\sis\sinspired\sby\n[forum:/forumpost/ed8f696a20|forum\spost\sed8f696a20]. -D 2021-04-24T12:24:08.900 +C Make\swindow\srange\squeries\smore\srobust\sagainst\scorrupt\sdatabase\sfiles.\ndbsqlfuzz\sf22df3a7b2aab0937a415484514fc2f68a293c99. +D 2021-04-24T23:40:05.083 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -634,7 +634,7 @@ F src/where.c cb76c17d0bded653040cb16e2f4532fa7b20f5f8c205f4078d346562821107a2 F src/whereInt.h 446e5e8018f83358ef917cf32d8e6a86dc8430113d0b17e720f1839d3faa44c4 F src/wherecode.c 992bf0d7520bffd345472fb9bc83a1ca0134e46d9e904879bb21e1e77957fcc3 F src/whereexpr.c d8cafcf6781cf871082f04d7540862cf0fe30cb381dd1b2145a380376364fe8e -F src/window.c ae9fbd0cbaa39e1b384c13289ed769f9981383bde7b2f262c70ad6c42e5ab226 +F src/window.c 35b14e7a53fe0472b42679919c474de3a5b5c1615fe90a2c41431f37e4ede1be F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 F test/affinity2.test ce1aafc86e110685b324e9a763eab4f2a73f737842ec3b687bd965867de90627 F test/affinity3.test eecb0dabee4b7765a8465439d5e99429279ffba23ca74a7eae270a452799f9e7 @@ -1057,7 +1057,7 @@ F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e4 F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5 F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7 F test/fuzzdata7.db 0166b56fd7a6b9636a1d60ef0a060f86ddaecf99400a666bb6e5bbd7199ad1f2 -F test/fuzzdata8.db eb5547e7aa31b689ede8d23c038e5150d319ae80deb2bdf596afe1cc1be5fb3d +F test/fuzzdata8.db cb843f55a3ab450c0ae82cb86731019f8180a0bd59de9f3656cfff5d6ba7a0a7 F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8 F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14 F test/fuzzerfault.test f64c4aef4c9e9edf1d6dc0d3f1e65dcc81e67c996403c88d14f09b74807a42bc @@ -1914,7 +1914,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 32255e39cbde65492d88177464cee9e10cb20cf3105208416be131e2c89b63e1 -R 1d0e571ef291122bdf317bcd3d07015b +P 3d55c21c167631f42d155aadec544e629bd078de9992aa5a74694d08bc52052b +R 046b16c6ecc6c0794b90790e7eea9c3c U drh -Z 9d760c4ee05493d61d6146a0ceb36fa0 +Z e9d04fc2504496c7597cf6435acf852a diff --git a/manifest.uuid b/manifest.uuid index 5733a0c591..320919c064 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -3d55c21c167631f42d155aadec544e629bd078de9992aa5a74694d08bc52052b \ No newline at end of file +506333742103c1f440db5da819a36f3b518f7b49e94a7b74419b02bbcadc5a78 \ No newline at end of file diff --git a/src/window.c b/src/window.c index ad3b47dad4..61e57cf374 100644 --- a/src/window.c +++ b/src/window.c @@ -1570,6 +1570,7 @@ struct WindowCodeArg { int regGosub; /* Register used with OP_Gosub(addrGosub) */ int regArg; /* First in array of accumulator registers */ int eDelete; /* See above */ + int regRowid; WindowCsrAndReg start; WindowCsrAndReg current; @@ -2246,16 +2247,24 @@ static int windowCodeOp( /* If this is a (RANGE BETWEEN a FOLLOWING AND b FOLLOWING) or ** (RANGE BETWEEN b PRECEDING AND a PRECEDING) frame, ensure the ** start cursor does not advance past the end cursor within the - ** temporary table. It otherwise might, if (a>b). */ + ** temporary table. It otherwise might, if (a>b). Also ensure that, + ** if the input cursor is still finding new rows, that the end + ** cursor does not go past it to EOF. */ if( pMWin->eStart==pMWin->eEnd && regCountdown - && pMWin->eFrmType==TK_RANGE && op==WINDOW_AGGINVERSE + && pMWin->eFrmType==TK_RANGE ){ int regRowid1 = sqlite3GetTempReg(pParse); int regRowid2 = sqlite3GetTempReg(pParse); - sqlite3VdbeAddOp2(v, OP_Rowid, p->start.csr, regRowid1); - sqlite3VdbeAddOp2(v, OP_Rowid, p->end.csr, regRowid2); - sqlite3VdbeAddOp3(v, OP_Ge, regRowid2, lblDone, regRowid1); - VdbeCoverage(v); + if( op==WINDOW_AGGINVERSE ){ + sqlite3VdbeAddOp2(v, OP_Rowid, p->start.csr, regRowid1); + sqlite3VdbeAddOp2(v, OP_Rowid, p->end.csr, regRowid2); + sqlite3VdbeAddOp3(v, OP_Ge, regRowid2, lblDone, regRowid1); + VdbeCoverage(v); + }else if( p->regRowid ){ + sqlite3VdbeAddOp2(v, OP_Rowid, p->end.csr, regRowid1); + sqlite3VdbeAddOp3(v, OP_Ge, p->regRowid, lblDone, regRowid1); + VdbeCoverage(v); + } sqlite3ReleaseTempReg(pParse, regRowid1); sqlite3ReleaseTempReg(pParse, regRowid2); assert( pMWin->eStart==TK_PRECEDING || pMWin->eStart==TK_FOLLOWING ); @@ -2752,7 +2761,6 @@ void sqlite3WindowCodeStep( int addrEmpty; /* Address of OP_Rewind in flush: */ int regNew; /* Array of registers holding new input row */ int regRecord; /* regNew array in record form */ - int regRowid; /* Rowid for regRecord in eph table */ int regNewPeer = 0; /* Peer values for new row (part of regNew) */ int regPeer = 0; /* Peer values for current row */ int regFlushPart = 0; /* Register for "Gosub flush_partition" */ @@ -2824,7 +2832,7 @@ void sqlite3WindowCodeStep( regNew = pParse->nMem+1; pParse->nMem += nInput; regRecord = ++pParse->nMem; - regRowid = ++pParse->nMem; + s.regRowid = ++pParse->nMem; /* If the window frame contains an " PRECEDING" or " FOLLOWING" ** clause, allocate registers to store the results of evaluating each @@ -2880,9 +2888,9 @@ void sqlite3WindowCodeStep( } /* Insert the new row into the ephemeral table */ - sqlite3VdbeAddOp2(v, OP_NewRowid, csrWrite, regRowid); - sqlite3VdbeAddOp3(v, OP_Insert, csrWrite, regRecord, regRowid); - addrNe = sqlite3VdbeAddOp3(v, OP_Ne, pMWin->regOne, 0, regRowid); + sqlite3VdbeAddOp2(v, OP_NewRowid, csrWrite, s.regRowid); + sqlite3VdbeAddOp3(v, OP_Insert, csrWrite, regRecord, s.regRowid); + addrNe = sqlite3VdbeAddOp3(v, OP_Ne, pMWin->regOne, 0, s.regRowid); VdbeCoverageNeverNull(v); /* This block is run for the first row of each partition */ @@ -3000,6 +3008,7 @@ void sqlite3WindowCodeStep( sqlite3VdbeJumpHere(v, addrGosubFlush); } + s.regRowid = 0; addrEmpty = sqlite3VdbeAddOp1(v, OP_Rewind, csrWrite); VdbeCoverage(v); if( pMWin->eEnd==TK_PRECEDING ){ diff --git a/test/fuzzdata8.db b/test/fuzzdata8.db index 92bd92d253e90652ee64b48380eda5111135a3e1..6f9754a2ec655467e30ee2b6b0bdf700cda2a3ad 100644 GIT binary patch delta 29741 zcmc$`2UOL^6F++QTW)XP+b;@S?465(y@0(7c4Gl-u?u#Mg?rV+#0EhblUN{XVl*mP z7-NNK5@Rf2qG=Y?6k`Qry5-GY6a3}(|GjhGdFP$;Jmy*lX0f*dlwNze*)q0{y5o2KrJd1d>!L;Ypwm zmA?ggQ~5B^i^^Mpo>cx2=uYJ~fo@cO8R$agXMxUCej4aV<$*v4D)$H4QMoVBmdb5` zHdJm1w5IaSKr<>K(3Hwo0&!F>2n#f!pRoZVR2UiXQ<)rSMCG7B!@Y-etp!a)kZKXb z7e6t)^2EUC66g}?lIW7@Qq!fOON&noI(1L2prX3|P&Lk0{I#@iGzm16RC^`@8=_mm zVqnz}T_cIAAB=wt))_=NJVf^v{4rl|hY2s}_6kj!LF7=~1;|;b_ky#lt_y1h!@KHg zM8x`=>-|mqv3`FH{qy@{oA~`ro6vt6)4is!sjIF!ONHZIb&DL$nm3JU*0^aLy)c?y z9PJ{*+U#Fg(I`sFYHW=Apl&^E&KE0seuqiTnB>%hBKToHmP976_=u4ZH z`r_o&i;An9k82)nMb zzVLbnYi)S(T~o9^waqABLhp{gId!wy^f36^Y4Sk%LtTC7b5(1G>E9dbTjtKI-AdoB zcfU@3NrqIa?4*(ih+m?SA*zKjLOXu6uSwfBbNrBX%;1EBM+^qY>}S$vA1`Ps*Pb!G zUTsMDMIR1LcAKh$ww|^F99(6J@INE}|8bWRAYqUv0yZrQ*Fe1ik&#f;Q|GkLpI^JS zzE9tdo%;IP4|&Ej2u#zsEz{E{jh`_ldHR_2nPaAm8UyJDshi!`zEl4}ojUdQ#f3Ud zBhd=-R);&hb87o)`&#J}`u9)h(AC#_K+m4Ognqu%nRBv}YCE$_QtSqQqu7`+aSdW) z8^l3ru{KIKX3nTdGe?gZ-3a{2<_Iy>mkLoqO?{Vd#Z}I-*{-VD2|XI>M)^8+>er!_J`U1HTdP3wAdg0w(b(6oQ-9ycHuYm#=}AI{ zp)^eQRAj?ZO5wjFP#UdE(8(m$r;?!bHQi8{TBg-PqkvY8dnfC93i43;EER^$*A2p< zX}U5E^FyOfN(Znm*F|CO99LuL?IfcF*4KIw>_rpQ+ zbrD9nv8)Olz*M7N6rlWZq#LSO^)Xs{>&4gV2V(HdYr4iv9z%bRgS;2?kzjrhSq%Q3 zqKs(=bZ(JPzVUeYj;^B!=Z@+Q@V_U(;c{I7PK`6Hg3NafY1rz4?jr{0KGYph)8mQ$ zkzh#{+>m=*mr}UL^N1CGtb2v=FDGGOpJ$N>X&qfe$V|^zeseMg4tTB$P~!3Kgs^kE z$^7ONsPKDRK+!o}Je0kovtdacyiJUVgZmeC>-dXl5Ff1{59MF#tgvaK&IFg$`Up(X=@o|YU+cOE{H1gVe4w*KN?W}V z-uYJd0xrncy{uu=q2NhmI_&<P`KBup%0Bjd$zPrgfx~hb`tEwl1blKzCo?t& zS$At&hL39MzhayXKe4%Zv<`2FI^7X`e|hwf_N`k3C6ay&uVfw`ZNMKtZKU7MJ7{Mw zL5W&l|9S6@3v51|oo4f5_$8f7CpRHkI0&WTws_1p>w7ZrS46Jj0E6; zni3lN3`kh5s}Aqm_5C6Kkggl7KBP;Bq701{&pPynLfi`=2}TUVqaOWdp&LOYQHWuo zq0jkPca9Ug7>bX3T7|fP#04M2K6gFA(CbT}^u8yWvq50s`&g$(YlWvc^k^xR{_Kf{ zCuen4!S~P;4*8pP4fnsHpCGcAp_u7o-uYa|pyW>v$wveI2STA%KTKkAINYe$3-Yp4 zlLE0g$*j+2@CI6DP9eknoOSHXJ#o>%cqINn|S^b)YaD zed~0aLM&N{@%ubQf6MT<)%A7QDyX=l)WWp)Jefk_SzQ?Q;%{0lyz8ss*k)Y>QT?I_ znI*cIoX>Tg`TflQ8d#)(B@zEedcbhPRYWG!(9skH znxZm((NrJJST+ zGRy`8&W_iw5Dhtg{%=%l(-g|)(jwfYYQ zwgZcsO05`{+;l8ukTO_t=eWddczVm>fq6UK(NJE;*@KVj`;c|p5sB5;>&ry86H){A z`Z=G)DAm4sT~kL`k~y&~J>9CJ8uz!v>3k?n@k zsrD)uxlR9_$nv4|MVk{QJ$2}E_Gr3hmmF1N+WY!!krlx5HKs8*K41T)$o4=%HCr_( znc%nq4W`*<;iCQeB?8+ES-aF!)d9Urr*6xYKr_zl!Qg*eTNkXI$nvCIG{rJFvqs+n zqK^|3-zz*p!^hfT{6~6HBM9jchA!CSq<*WGb%2Tz{b%xr`RxPkp}3T|e|TMoKmz#B z(|AuRhw?_<#5s(vUg`dYt4&5l6oDYXM8 zmFjyzQKlmtUZ|@~#JgpBm&lGn>KaD^l>Mdm!QJWxJI?t|zg%R;AhWh%B2K-jUn8<2 z*d!WK!FNN^;gmc2wIVCdRwkunrybp$?VFqg@V&|G0cgGFcf3rim8o5<`q zq;F%-o3o3Mk!%k&R-K)|G2iLmqUl=Okje-3BN%g2KN3pjD3SQXP5pEM+A20byn0(d zn>Rn2eT-x7=qC!0xYS|HUVXS1-2F_g!EE(`+YHJtH{B%fb zV>bhY8-Cy|d{XE!L`tkP_^KLi%BNRO40J+MxZ!~ypQ5K{FtM(ZBtTk$IR^f`uI~)i ziDn&~TWU5#%6H}zD2kHRaO8%*LuDsI9CNX=DAh2K{GWs9#Z|qKc~jr)SvRKFF=T33 zDN26+_&iFn{P%N|n)BZ;P-@M8FMu_{FcRPuM{CUOYIq_*ZU@6Cb`eXu8NO$b9O0}3 z6D#yO4C`#Dr;)lysy{>a1royz)p18JLw`Xop$>cv?7Sfo&doPvV__n-EO#R@%mgJ{ z8xM(p7^)lTrEhcE2D(bBoeY#e48zeq#BftEeMJv0g%p(EuZM)~Mkhu~zPbz&3}CvUh0ZJIf4I z`HytniSfrl;GDL8NU7#D)xU`EuQv=5*_5d%>G*lOmx_ybUpYifsLkh#u z9~i7UxtFARxe6y~5`O=oA%d}AA+?6_U0BuBGzv0{jUBP?M+Sq2^~MpW4SAyc3(@-r z#+)=B7x0twhSp5{vw18AzA=tvIO&1`1ojuCTcnV5o@`FB6}@=d}C< z`86$#VBdRcD-^BLSIOR8MU6M~MxV@dkZ{IO7uvpRXivQ~y$^|x4Hj(mnxUA?`w7Ez z7-2VVWqLTf+Rzv-ziG5UkAR^Q#D7jhRDO^;y!$Pq1FJfXKMKqMrH4$>u=} z8VFOD8eCA;*;oa;d5tAHsjs9u4pB4hly>J6fw32?I5F>bf*{w$`78}aQ{zh zB4q9gPlC*gQd>wV3?GJL2N*X9tO^9K5I~TeY#fX;2ODc^*&y7IVk~0X$Q|myKuL9x zI~p^<_f5DKe3H+C&B-nt;Naf|AKxIjg zQCSpNMCG9Xx$xqFzyd1w2j)|`JMa>f?*`^lxh1e@4*jeP%%*a6U^V;#!)#uFqX;z0a_7@iGfj6b`GRc**Y+S z$`*lPR5l9G3SF!l7(!*uz+ft?1_lw0s-ndaDwXDk#Z{^NZZYvgb9u3s%5N4EKQw0- zJE=Ui*hb}ti!D^{TTJ}WyuX-?pJvBm;)-VbV&aNs%VHgsZ!OkPnX{OCLE?wHUvLuj!xb1n<^L;)arFOp7~}sv#F%|Z7bb{4u+Ap@ ztGuhpgsGE^Z;Omzk)Ebq0`8e+Op;l3C~YRx$D(CM7p=RCjm4;*XMD_94aiz-h{3q| z#uTkQSW+En!4=jAtg^ajFyydp;O}7!iDfn7MQyn9mmva%_xjtu@LD^FtPYfZYm6qJ z%1~Nq&bwjsWn*u$Hvd+?O;#I!mgOOm>X7@tnmfs5zZPBffqiP+1NZ+jnEu_;CcX+5 z8vr|F90_I3O^dOui#ml*Hy9;BY}lo4c5#6l&i!Glf%W?>&6}qgFZ#hciw)q`%`ITsE@L($k zY2;y&YTr=ai6$ZILTXKHg?T?1`D*wxV+mxwV5*Dx2}X%w%D2WkvOGdkU9Ha@lu;bMQ)R2U#hR zZah}ao4_Fc3&YkB@r6moGoi=vkXLB@39R*u&4J907u()7ek8C2i0N!>iEYb`ABn6z zN)L@sHLN3)=2|?MrZ<@xEb3|+j%51d1c*lyEf7>IWN{RKE_?vO$a1Qs)8ZBx6^oMI?&Y>D#p^avMyJFl~{^$;y(UHGC8miPb-DG{B__XnDB-ynJ zSXj@rT9!u<>8YIbLdJ(B>8){rk&+5S9>McrX~sK2VGOY^Dvu2_LcEy?Wqv`btbGUX zLqE9cFt&k`s-{i6m6uI2fnz6X^ZLU>Vlr^qxWH)0>|&ZKb3;A|GR_#j!b@FEwM8}< z(-Vw!gy(`<1;+O=y~&2awUwqpkhq>{vS0hgfwK}#D>ZB=R>YbL86F&B>L##Zpd`^K zhYvF~(@6wmJ_FXcceNeck2M`(@(a{lGUTpcZ{o&rrZFN*fxNxOWFVQ2gVRGbW@zLz zCgE?BOkp~C9AO*NfvBF%nKJUtp@A1A)&6ITDPAW8XPXwV5ruR32#p5T!}u0%ns3^p zmBve|?Uf6uhWK%osVNOu4wEl1dGm_}jz9!WE_;BzdBwDy4}LZWsXZStdm{ zer-fx0#%dn%$uhwS_m>XgcG3ng3|@7ck9!UaE3V|n~2gn6Rj&Ip|qa=PKHgJOtIKJ z*Yuf&O@-8Nq$r4AX-LJFx0x1cWdd{eCh?Z~!-xXY201-@MqpCm9@A4Mb2B^*lg=1+ z2wXVT4ECd`H=B;>2aT&46fxrjC^>HQbMgF~6&~gtp9x9ZOmSQ&a~Pg0HpL2T7Ni_E zw#UvVOnr6o6iM|#6W&}B-aBJb1U93v#Po$MPnA^bdhq)_u*OBxw@l{V!b^~L+Vd)u zJg_WA>({2AIa)emw(vIG_gmLutIMX70$YH+Vy&N0ThlC240cbqc7dM;SUu3=hUoxX z2qP8=>mYZgWda-+WbKN*zc=j{*dplF+Dhw`o2IKG%YfCJgu0NXwswO$$<}k&>8`1l zMoyDdk0Uuj@%ZIKQyozzqb)9myv63BnEbnGla8go`;?glIY{?khO8{Yg*=k^xK5r% zus;PH0_OHu&1}BR6xd40mn|tc+GpM*5{h|EXGy?LHO%)l@^ne{WGHVW314eqo+--9sF5tl zTBkk-)+TZ^q<)0=VDKtYF4E^Nf&*TLa2IbtIH*F=s<=H?s>*w>CEu*;*_pQ1=la zWv2Pd(0z#SU_Q=rFeA-8QmCxs)lj1V>|OKI$|hdGaox;U)$(k@7L$2b21EW}y_ajt z^_dd_v*`Aa%G)kJSKeGvJ1`U5C7Bxu`ZtOu1ZL2>JTNH41vuHy+>B)w_BWFdz6Hlj zb{B>XHvgny8=&A+m$c69*V{aTtkm0PJIw>(I9>0SLC(T*`jW3&rYGjH+Y!Bzez6ky=jcS;DO09)@W^*mntTO-3=<>W)GxIG`GW{Ys}k3MrL!LIvg_hse9n0 zb!HIR`&in-98H)Psw0s`ZdZurozQNxxft5LO9dZo{$y&X&Rze$*+;`(Lf`x5J50_$ z)F&_xm0jk0Ox{Lh7GPA2`6|`CMpkgupC)6d<~0{TTG_V%Y<^Xo(g=^gn zVHn@YQpE5|O-oIIkjr!pfg1UCOCtChTC5Q7rT>+6GhC>ISMC-zu#`xQL8;%eSy%d~ zOHf5q_m5}MgR+377F;+@u-aP+?z$XCX1zC9p4G z;SS3}47RoeI1;*WwP)&ywtt?78BjjNA!O>+Iv+`I3 z$9Y2CEq?MpCs-##+gB_fu^%D9AlHGZvnYvT;AR=@Deyk$m{1lZ7nhy+VtP zg*pdUyINwP@l{JHdz@3v9D};79+*tf3c98CqnTQ%WqKbu^LhHhvkvL zBrKk0i4Hk<%`iFKn!{&>L?G`hn)B^`Fuj41%t~`X4aM_lc80gL1}J}EoplS98tX7M z)8Yn`HI`|$2lYXXqR}QQB9id8{1hINQ6#T?Pxuua}{cX zI!SfMi8LG(l22JHn(?cv!Np6pe}G;pZU83si&T@(XsX{-;!7C9;9DB0}<|Ii2tcc)nU zYgi;?MamPQXo)2m&yKTF7J#o(QLe%PldZc17WG^=BI(9`l6l5%3n`51!l}H3`LFxnZ5b*U=8e{!jYkvmK7h6A( z2||==VayVXNrbYV)*2A^iuEk3jZu?ma^Qtmt&IeNpQ6$%=kekSYeSLM#i$t;y@1rH zmw<^MOv_+*HdR*-qvlxB>CQi+2l2zK1&|gd&xU(7tkFn;$tV+ z)5RVe7Boq!r)?lFU>Qa3veaPTgrHGU{WRp+;9~ACrkQ+cE!Cu}VF)n6h+j-`2ND=1uAV|LV*QWm*>`FaP2%JiahJ@cNlQ3LPQtk*^nwakN*BDa_627WLv=$2GJ z&#mM^WF-%B|t8UlqfMKcAPCn=jnmI@Y^G7ZoEV5WI=f4QQ-m1w0} zh(SmU`k67xtqW7i!PrE32s<7sI%u7#tjF9GWjgnhq)|{|vem+RbCgwDxr(H^H0pU5 zk-Atc$jS8DSSXIPg~LI!*@z97C>KTcA{2ithGFz~W`z<3AL-q2|DF;7;c3bey!o0^ zg|TtZY2kyFf`?WpT}3t?N}DLrAzF}VAsaG*@OQdX_LE-1J9Cwn86H`ypjr->R9}b4 zNye|%E7b*gQo-n8)tpVrQ=Wh*O-64N>}N$PcFlX#7p(Fku4wC=s#INpl#q6>L}eu+F1Y9c2I< zt6?*Nb%U-kWc*~7aKjzNCg84%$^b^WfA{Xtiaq`vr3v==O4%n8m=##9L}A23MJ-_c zD+;;n3m~bP5>BREUkzISu4LoIGNqx004wEnkH3-vn!Fhh{kAgjf3!DNlmq@|En+C; z&Fti@eSsC_icMreOmARY#&E?i%4~rx#&o}}n}EIkR0?HAX?%j(lk<}@2oFcu^b8j; z+sgu_@MTS);KPENwlv%#*^))}3ed!fgvVbg#Zcx^d~mfwF`z|fdnmAFaBjP@A3reK zx{K^pJhw}UVQ9Io6f(SRvr$^+YjAFlQUmKaYDz2g z8RSRE4Jf0}8X>@vR<=cK4PIFm*&w9)Kj*o6fxfm&SQc-qF0vd*jgaH8MMv8ykpWzL z(H05!2ijZ^eONI=Q8uM{rgXJ!*047)tHL^w5@D~37D)S4bV1}6+YV^g&vt^n3F*CU zjUm4}rFdt~we7%P``b(+L0Z=yJ1G@pu#Hkd)Lp9d*T2y&ssv8B*^tZh3O zhuRd>jR&dqP99Y%$nT=|i0nxNi8HDY7P>#WpA|4G|iom7{gtY-_COp`s9+f6gl2b5At zP?&TOeYb37B;Fg9s)ZMM*A79k(_RBw-?J6KrWCIR%f8}*dKlPFc_^fOOT&|S$#z2{ z*OOFd2)Z}f=YjdD?E~ELy^RvX2q=?|VcGY#ssgW?RwzYKpp_$_!DluL#@w-;r(`~e zx+3-m68he-s7r(fcb3}*itIy(*(Z0dY~m5a*}vL6T2>!3pV+1{`6yNW5qAH{)`@Z6 zj3KUWR%;-mlU4$2HCuSjMO$rrEZEhAhe4FXPHIE4*U+&B*vn+!BgiM{`%hv1=e7*k zX0i8&j0-js4*JQ~oME`l{sSWrtm2}r7UX|sYX^re+J^D}8L`x1Z!8iJmj116H6(s( zOMuJ+a(5sm48!<*xeqzx`(zJ%*hX6wABXYQPeal{nezOr+U;7_2&dMt?_l!T9o>Qr zF|wAujL9d7l5-H%&Rz%4w6#Y+_a?UptOTr^A_>}WVBf7_=i%HXD`hvw+T*meV<4%u zeXH(^wR3~f6!M(Sty2%|-p0OPkV~n?3y_-W=!*m6?K?$6uPDv3D@6W5>Y}KQa})mA z(XQhVR^WjBXGmNwDzKAa9Y{+O??diHXDiHzaTu62rbTSixY)QRO=9DkQ=MN?Qafj4 zPy4qb`x>tONhBv;a@?fQ-DVQM#r^CV>>IrH#2!hZ#jhfq*nEKfGc_Sv*D@VTaM>{X zOCq}rc_j|YGflA{5ZM(-{n@?=N|?B&vhAuATeDN}`6@*9lD9(n98y%ihmPeqe!Trn zf%5pIN%nZHnrFHP$3T|PIS+F6kvcdt!`@TAxz`qKj1e>KJDGfak0Tg^C9{a7^0!3& z4ZPM=qU0spTst`h-$C(hM>{C*?0kT63+!hFO7<)0?wo?tGVEC*`vD7jJ8AJ+6zdp` zFE6z(5D3mHXy)icv)p+H+r4T(p{8`dq)bPy2#dlcid?ItTbQ)Q!4*LlJ7vzPq}!wz z92E6>@_j^OIM?0z4Q3o97D46^2gTx4(jC$fjt>MpveDj|vAa-uJ|Z15K6BQ`++6!8 z%Iw4VEsi2eL_ZkO2vSbkc`lT6AFkPHS55LZiWfE8Wgm?%#mLNaO{dw7Ye3oTU135g)vFApT3|VMwdx*iA`j(jP^2g0VER8U6Ufk=!zr z)Ac7si5wIq${bHQvH3m3_PFt)eGFrNVZnZfmNG?Obmqgc-r^Qa`NqDPQDR}i2acT( zdC`#u8G{{_|e{75@Z!tOmbLgWcN8t;Ja_XF31e7@icG}AS-qECt(1j^cGt}MnlIoobbTD zjtPXWmv(p3gw8FKB}kk|z(nSo_H^)HlO2$M**+P3yCT{^+Lyu@y!ETy%LukA?d^QR zg)SOn{;;3tu$8jR-iW-2%d{Kh{m1q}0+T^mVTb*1IVS3O%KmT7IIG^neR@X^##0$( zEe0H-P2eN1ffoO*ov*vTWy4$s=kZ^dtOJOux5RtwB(=UB;{kaa+=gUQ_;c?{1aIGPH~ zm7V%tjqKdW+T00pK}t)b1}AlNjL@l@lSHozf8HYl?+hh|$zCkD>DWSG+JEdem5hENJ>b|A>Rc5p&#;fAte*9DLgh$NX7LZIV!=a) zR)omQj)(m3a4h)UQIq{Q&+)TSjxiEzi813GM#`1kUoA+^%dJqZ0haij*U6myJpeN~ z%^tdZn0nf=Nra8J9F%LLlA|EC#1W{}FnQz>68CBB9SQt#HB9}&ag>bO-`u|yqPjY! ze&ryXnX45bwelE7e67=9+B^rPCe?t1M0)~PEVQ>Od4YrMU`nZNNB(bh zm;h5wI%o!{06 zTSL@t$5gHVK<6NBj;VkOMk|!E-Hu4P4!s-$1-%U3|LQ^YP!AeI@j0?)G$vR6Yb0b& zLK6t=7p92ibgDiW4Vq6=$k~- z2}-6r!y)4xeN!l@A=&pg3PL2cfQlqX39Q~DQ26jm`xHzpb?g;LR4WEJEQDWV*yrQw ziw+8Rw!(@bp<7ExmE~@6T_EYH&<4qde9CZGcPFWa=eEP&QY24LC3gk3Rcs6;6N#ZEv)vRg zk8!+>(SGNB1~!Ycf_1~Z(g?!uLY_p4;%p+Y?vQsOq6*|bCSfK9)PcLxofeAYJ2W}P zf)U)m3Vz(`aE=f;`1g+8Pa%iaPA$XMVa{tZ@gTzIoFMl)+Ar7+SNfdOL=GX!z2T`* zapKTaCr$d~>v~&GmN^pI-BOHL^oCv+VsalowW_hu5JH(t^kYV;<0ehOKB7LSo3lIb zP$Hjhw*T&Mer4w_`ymPkLBegpiy8eL?F7#A zcNrT@TT>m?Vd_L@RwWT34lfT)wjodv>qvs+uXXCs%y@1FhaizuRUjm>;Ia?{3#L04 z!<1%DHISLp;V1o_twjzbwsveIPh%{p@nJ7GgKCz5S5urmQKr;fc?4#Su(t|H#oT{$ zZF`8^WQYR$Rmk7XbeP-CN$T()3E4|PW9c3ifz>8CuZb)b5>7eWK>YcL2O&lwF{-Vg z85u)6!JM>CdFXGQH?XElx7o-&1|avy_ysR*0) ze~mZLc+ckgY&czGA+M+UAVe03Lm}-gy%X~tu1E^c-s2nNawoet^9Emptmf(>NbBRy z1m9SS`=k1HRn2G1h6$|NTl7)nyy zxXMXx;CL)J6G?t{M!;_5Tk*geE^2T}_eesn%UZaW@CGM9%ma~@VQZY{G;#+?b#FHB z(qJ?UiL4MHvZ{Isr=L(tc`{k7$WN)Z64y=K-CNxw#P=x>m?}0v{}$)xB4xqF-x8O? z)dQ}Xkbf&u!L;5kiuMP$I|GcRLBa=)rkHuywS(3V0XuDzp6yP8jJaZSPSZ=F>e8WD zEj{4m=*7Z)&W|L%Z|qJ&B~9Oi%)=xiX9jJFcPt0%3${e=2pz;XjyNZ9P&03glg7G; zkM%5wxg$`3;Dqygk#_%{o^<{wvN_O3OOr14wDW5%>k8%zG>;c&wG4KF1s9wj z=>j-2NLy9!hrrDauLug2vJOaSF;jU> z6{%acwr8*#EqcTGy{_%Z8meh2YF z*KrM74a#CVlA**&P<-Ytu?EC{=AsqMZm}lbzvog|PA9_M{ja!7pxrxeN=sD9nGiT7 zhC%)w*HA7{w9H8B<{Av0+^%MLf1hg>AuiFbSe6BWv*PbqmgfG8;O(E>&ot=kkk`kR z3@J=9;?!8z8j&*XvW~jiLA@wfd$>PWoC4oOxh7*u3s;ev^~9)nmrc;E-P<78LsI=P z{2ANsjds_>ZS7ryn7oPz%7Kc`*1niu$2CB}9i3f+8NrPKr>i&i?dmEJ**XY#U5&A6 zPuCfdy#aY`)YUP5gPx$4Nl7jcDBU%1hfhh`?3#^l3~)_Q6QrovT=OVo;&useI@xXk zn)cbyG}(2AZ2(^%^&GhRnOGIqrMMZeV6aLpNaslQxbvF&onOusjx)Uf@u(zF(-+Dzh#syPcFEf@$Xq4+k*jqOinU#DgsubISD@4aNT$xT_a<&{Re6Lus5k0plxN zlzoxeOr3@q+uR>AOEW*$qK)bN5yJoFcc8R|`dvsF<*I@oFLAXI*}IT_TcpXk%te!P z8&sT)dGdir;=%7@(*r8j&fa; z6uJvjJM;I7@+lNfifJYGdB;U~_HL+%afG2YPd}02)w}M-wEek-yAvyX-$gzdMUwvq zZ%C-WgW;3h)uGW|*9F>;oaJ)8fSDUyX_RGcrYd;rdm$^#bs3_kxu?U?grZryTN3KDI-?-8KUB!PJ;CFGv#AtPio>38ug_}+2fg3G5Uj*>Y=Bn)sA zEd)xYidDc8bp6Vi{UIbC(&R&Cl==Y|!n#m?mePeujr1a@xaqdNwQF&daNtf9(vJJ2HBMh{lyO5%jx_||o6;SlL zt5cywM}|-;VUnA`@r*JzZ5<%m?D&b^-I}qJPy&EgGPk-F=YY*Q~oDK~DeD11TiJ*JXa} zhx{3ZKt#%Wq^G2wVa5C%BbVKrSaWmCiPBzl_Vn-Li)D!>k(aDWd!_eR>WG zHacU$`i84ISlxueRdyr9;*h&g0$HDlHDPKWb=~J2N8$J9IWJQ{|(K_d^OrLCcoT435M2L}cRNUC2T^|T=#_`KjcuQpFCkuTD9 z74oi72K2k*+{1YKV)0Vv5G2L&j>xXjQ5TdUn>Jn4Q7RhQ%7eR(fn}~=Nk?te z(+qBV#(j~~bOX}|yCX!{3GRN-uF$=l-z0crSfZVz|aQ~$HOC*35&K8t(2OWu}GZ(zQ>dhl+&+ zKwSOR_3`r_aK|*0QpBEn&EH2<1K&7TXogo{LIfF5+7j-bz-{eQND10ag?rs1ot5=-R(t{qf7>jWO6bzIp#hs-=!Y>0tIfV2cJ<>C@G-W-C3Y4 zMdI-540AqmPZrp3V4We(!TBfMuZZk-Omes>4Tgr2Hd6h8NglEvl>@mEYoB*h-twQ6 z1?RFebYF0LHEamRTymck<%iVTV@%I?y-72_w|Xr!x#2EhPax3E^*ZK!=O+B;DWo58 z-Kg}?pE068Ub^M3#RRnqQ&)<#H)`=+(sF{DVd-VDiU4JgbhLrt{}=%-Rce9aC~_?% zjl7QW_NwBQU)>-=U&w_e(3KGyMNCf(+)U`0MpFiR!Vxl=x%)|JxgaC(P>0=an?G| zn_4ysl|0Wqfdhu>Mwl?gbBLDSzv~i0uSY}7U%GRI>I)hync=A=7QXMfCQGBKUp!SY z9(b3ZcdH8TRztcd`R-#6ZF!--6bL})I8m~oO5FsDPtjc{QLMl4Q?2SVsBzY_q42P0 zoFvnJxuQXr6F48p~AE*Uy z3N9(9Bh(0AO!a!{yr+krfqXxy`9sggc)W-0<7xL~(!ZbH<^xUpN!0`$exysLJ)VEd zUT9yex;y55%J2Rod)Xn;?SXk`baQ#k!4sN~Ww21=4T9xY&l=vLo`gc`l1Yq9JPTp! zbU}x=!o6OB^~z2SYey>!yM_)?3)AH+v>I@P&%0Ga8H7n6dv-HEW3IvXUwHyh_NQ(W z?5pqXL%x5~DUVFs+8TOkTN{CaS3G1y{9ZC5eIZNdEeBsKuNEK0dQl@!qEt@Pzk6r| zLmO{%UH_fFAUQJM{HJ6Rch1r}%Da*A>_PPa{GhM51JQlbCS%V8FRIxf=#tHj zVxX7OO8H5F{O@GQpXwpiJI?zp-$GijTxdeMo#a$^pXB|3BY6c+wRUKeZwtrRG;a?r zqjl&U?_)tXYTMW#Aq=H|4<`}ihD$Gbt7{2|Q;!}K8%Jqy-j3K~zL)IJ7?@w|C6Fk? zOCZr$nE#QtIix-E8nDX}FR9-bQCddC2;(U8Yl*iC`c`-e*QN}a(_Ye7nckZ`?Qi}C zUc(w*1D)XcGXG;8{UJ_j5(AOzy&jBM&!0_(q)lNCNQ)2iVoa`=vOFl=FV9P0`4*~F znA#jl&0%)*Z1d8QQE71P9WR~S^}hFt$OsqP>Wu^cZm%9Y)mHVv-0!>U1|E{r1B z`@D2w4V~Jz-AlVK4|uOq&L2vLIS*%2>M#GD1#YJ?U-q`d zp(nkx&20`Wd(BIUM5nzMM0su#|5!b&SVc_gS>h#QHV-mirOrow;r&jejJstybVOm| zQm-02e8q{GkJ2UH$^w+iII|Wu`@1LK@t!O~=_cLPWi+RwL`OA`^+Ulo#G+bvyq855 zK&hO68l)ZK{C6=*zw_TEkp7sr_=sARm(o|wLSOB#7Dm{?%UCPd`weX=$n{cg)fO*5 zx<>tqf2_X+q(p={uVCQmO;#RFTrQVFhVO|#ai$4O0L+$ zY7z>Tx6K>Qd3!_zzdOtbx7=Y~!oCW2d&&5E!cK_dipDKqR{^yckN;O~*B)0@vHjWS zoP7=;=t028-ZOh26%=2{QBdsqfWoUL3Y3<0O(7roEbx`xOR0xUEmIy|mX;Ry&P>tF zQS*VR`Bvzn8Ja>`SsFp*qifpz&em(?@7~{Ezn`Cv8_wqJS!>p;nLV@SyS~%30mT?v zOYy?irtjLQMQ0>JHZir!h=_IdXi=h_NBdNQ>M|lVpu{4yO1pgl44U<%7DZJLqlpuv zw2$mcE-7s_lip0#T8rd%8tj}$O0?F2N+Y%U^w-{6uow`dePCDe!BVBcCoSOX$8;7a>whh!Wp zuca1E*{!waVqmg{NQh*#lLFqL>H*LQqU#IqKn))HCNiqDu9VOYw(OS+_v<%UL$6ta zzA7JBN{J~N`e?d_KKd3CDzsLj?Fj9(M8Y{n%Wp^`I{CAhnvK*nN_ZX$#%5|K?8-9Q z_`C+^pR8T52Q2Rr-z6TABQIr6fJ^t9rtPu=-L`SM)|hf9;TdnXRA(hskJk{zouMI$ zD=F+`(W@zAuGW%ztk;|(W{zyzHMAiQH7uK}H55tnwB2?E8K4U^*<&^I*tN9r4Hzwc zp>{+jc#a>bq2Dah&dc0R#}ZlOd$i{zO{c22A*@T0cGPZPAJdWQqR{1XSL0s73T>~X zs(WX%1}9ykp<9#yfS|Rfb+s69yROrKRoqC5hC=W_j7TZb5a-<_9GhkF@6(?5G&tf` z?H?`#cXloeL|C{~TkmpCQvGJ_nMBnNqbHS|cLmbTb-}@ue^4u{$6r|=>6@tf%{$wl zyod3&Sa(RvRz*Q?UzTWpSo=g#H=`SD6^^4)#5Un5lRvkM!!;TJm!)55^Qq`Nt)uwo zNezsXAJWD%nkf=C>7|I{yrySU=^3;}Or>Tm`8}<^+R+A#19%^DplHY zJK1aDqp1~Ick$ds4UyN~!kfhK=I&6bwJ*G(sY1P?-Ifrxji-UIwD0Aic3Q8QUxGc9P%f2b{?{tq)c{pJ;9=FPR`;f;F7`sQfH+ zI9nr!K=}t$tcm!(S_`p>!?(4rin5=|E8&Toy|aLrk1a9Bh1Vm+zB}r0JRRQh4@wKvJ+i3gQi1K30u^_R zgU?k~Ws&FQ=RA4G7^vPimI4=$4Jz$1+>*K2GT5h-7{+=cU6r+zMF##S1un_LPE+y( zeXtmktgi-yPE^M;6QlbhEQwNYYP~ST>j?VzIV(k4GUKQzV`*aIAU#h8WkR;<2W9DP z1q>KqDSTGyhOkcrJ7RtQT%@`65q5%|WR%Q#PMV{+Y?`?U#YO9u#m= z`UQEvg%pE^fN~aJiu0mqHcLNmbp}@W5FO5W@!tv2y@Z7d&} zXg%~bRbSFB%QmjHn*Vn#OtoY53RwmcNIU2)XvV|3DR%YMAGAqRPY_q<>-A;sC^R&s zh6926`bnE>75lC1`U~#*wX`*TOL|k~vPg*4OYM~Wgx*b-eC2-kmp1{|ll>0$IBl7} zMtVIqoBrsco#j`*m%_uPaDe$yhm)4@T9MGlk}~0rlsZZ%*Fj!Xq92#6e2EUW+tRF| z{q*SJd~Te8mFxL7vRCP$ zQm4(NZs zRK1_&OdAWkv3lZQv>tzd zHCQnM5OkR1`8LS zO066`SUYqpvE9{3suV5tJ8o46nW(?LqX)AP+I2>2NHgZ@QKDZm+X@p5VeO>AhN85+ zo?yEt`|b+^!-=(r<-&$-t-e?K$_#5zq${!PS+VFbHcml!DkE2a8x!cyHN?mKTuiof zTd6H_I^iNoV#Y9*<3Jqh=*w&@ofyyD;-wL6mOaqKSp)!8%Y3)ANi2#=CNV~-uQFgn zb}*M1I-0GN*{K_6<4qF0oq;ZFD(X
    t^bhpA%nc(wp^XjmlTossDTo4~xWaM|-a zP)yTY7DlNmS)llH5!-3EMR%sUsi>)Cp7(srLuD^9 zgO0q)>eGa`SSU4^&Ke3@!N%Ja&^A{ytWwvoFYN&_vBP8Iuy5Ou(%)qE?36|A$! zDP=S4N@rx_%YwSl?h4kNib~OV3yx!q>2?ru{Nv*~kL(f~8%tT|SqJgJQB18Atm00w z)}nnGLw?=^w7ZIVY3c#iNc5|Kry>|twiX6I(NR^w*^I`II*pM8VX3@55CErfA(RKR zbUDk8$^eyehJmiCihX5QdeApz3~Qo`3~QpE1sk`6pzIRcZ?Bi|K*rRJG2`Va6y&+i z!U|^0nj_X;VPLdKq&>B4ig=-xy=tM`>R2JjGuRlQ+X}q7jSD<^?F-iDtp=MfS~c)z z_OlIPsp2mF*k<{KAy>Os!Jb8-A2jCp_0OVNAb(8}3sgQ?!rFoZ`FxS@&$H}GpMv7I z!$peaQz*Taf!(iHcxRCk&Ns_6RBty!?i)1a*f&U~j7Nl-yO*Y2T`HB23aiA+lHs?SZaGg&OS>5<^0m}2Dx)(QW>LV!o zajM?In_*XqM~g@M@Di|#QSM?snW{eJZZRjB?{%rukd4z{Dm7i47|5|%jrfo2FXX*p zR*2Jsd0Pa3C@;n6LCM$oW=bvP>%_9Bc!ta&eReO;r_7#4kXV+^Gwk(-PMkRM*~!Bu zkC}ipha<>fYcYZk4N(7Tg%u$|vb4L>-+kWq0#Z{sh@`+q<^pIZf*X{X&%YA>SsbZH zPgCku{%5h|6+Qw%t?S$&ML#E=pThy8!V`dgbvJ-*na20pl@TIuK1cdq{TKOFr!opt z8bfj_%;G=VkUu)3wSlaoIs6?L0wK+E`FN(s zY-NlP2a0$%89yp+V|*dLTEV%5UwM}DM<`(c4-z+{4HY5iTfCpx^bSw6A)J)a3uzh) zt_G@P{^Ir*>FfA%1eOZwKEck-7LN5p<_11qOx?t9sp^Xkzwbs0=w8nza<=nqMFr-{ zHJKE{z#?#md=eXVr}$xUyp+eu@KRwqN8gJ!22pSZA7CjVy)uo~XW$RhzvZ#CoAH67 zY(M|e>6q^D+b#D$EkBIJMuKbF%C5eba5M-!%VF%7FfSL-RjwDXLCwcu?K8#5lg;v1 zVDUYN#IXwASq7pub~9RtR;T${7m!wYdHfMEtemgHVG`BcWdq)7z%>pYn~Qv=J!tx< zyZ^B5Pj&rySE~Jpx22x#jfcg~OZ-@XGsn;2x4)N^KVES|mLwJR;oJDv(MxHq_`6b# zVg#7EOANcp0l?0YzIux4w>1un6+iP~HpH!vR*6hXX$ih1Fbh~h)VlL6z6!bQ2#Vtn z0)T(f`>Jf}ObD1QJ6Z?P$=@imBh@pclrI)bgN#v#PfRT?9Dd_H#dHCA~sd$ zGk}AMFcAG&K;FJ^l$0m~AqoVgDtRj^JjG4x(SqEC{7K3!;=$y3g*OzUzu`cyy2jg4laa<$ur%=)v1_F9vemV4NW%)g zUzDX84 z18T61cN0B_8ash?(2Zni#r@K0^6`HWc|YO%XhT1vKjqHis?hoy;BQ(iyrT>c^jg6O zi|jOGHV|91r@i#(fyN?#70cQa&qxt6_0hFtr6b1)hqP>apU_fdo8T);<){+*U-fAt zRzGbFQ4kh`&mzDy!Z?qx807^U;C&cv6xfv_$_p{V>G&WcOT0SXc)^93Sl%qdyl-e| zAfB0GEU_ueseCr?AP1_60z<=1f6P>hXBuPGm2al!_zSnsz&Q@ZP;3?D6*T~F-pj^i zd%$WO@MM8ou_0h2h~znja3LI)w%!$vXg+#aey-6tz!7*i2eOB_yx0h{DQgOs7)dI2 z0_P*0_?jzT%v@sBIFulfS#02?v7W#Yia^{71A({=;>jo`8eue+|TKW`yG%N<9}ED4tqxtWppm%PI*EmH7^>ktb+isNE!|mKr`K;DZl)OtFQ$$83pG&q_s@A4@+IqS$Z@!vbNwGKik=IKrgfU2Mu$N?aWJ*?o!< z6g`jgQ;cQGHVnazP^#HrG^Dbfp?Eoz7+FX|YvZt%HQQ<9h0wN?USkXrFIO1T<*5(K z)NrJqxE~9hBQm!cS&DF;F>X1OovR9vFPk|mbg-3tD8^MAi)=XcA?xW-59N9s$h)La zP&xt4OeHm8`84#1u}s<(&bBRdvsCdah}8aI&E**G?Sm=PD-L-h)ct*9vQ%=A zfNI#w+ape#G`uk9UKKNy{zY6A@Scg#rzy4h9y^M;|?B_Eq>pHOCor=XkO&3Ac2 z1m8BU$?#frO=#zP+J`CPDaBl6Q$7}Thm8ixA9ej*yGwIQ@Tcnl)g3o7soMr)-#xwO zSu3l9RQHJiVDOP}u+jWp_oCmtf>|{@BPW$zYdjtf%5u}3xuPsUJDlsP}3 zd_h)D7+6uB!7VS1Zf(Z-pP2Vp4tPu!%hy*Yak{nH%BCJeh027Zor&G6PpIxihPhv? z35ZRF@K&fjl>d(UHl;02Qr6~1zide~?J_6z9ymkdY}$zCz07Kx@~Oz$(daM?@IQdl ze^+d$V@0zjjpy4b<+$V>^>ckjS^F9tr1a^4*ShB;MM_OGF*|7lE;TdN9`p}<0I}K=A!3lbDumw!ZF^&^uAg+GUd-Ngk!Sl4wftAL% z=9o5{r06JYfX}T((W^MtNBMHgJhQ;58Zh=0+>W3f`R0QG-^`to!_k<}{reW9-Ua4X z^=s(zEt2hkQmb8PhPsq1V%-I)`Gl77vJ#PwzlsIy(QIn8kWF2}_6(*HLz`t<*W8vXx( z8Qt02Hx_}c9=_4I#`-{w>x}V@z_p!kIIb;x)1Sr<)0d8GBOe%6oDF?)m$klc2(E!X z5XL+0K1{*Yo4zM-{n0lV*DJoqasAwfRe*ZZ2X^g6lG0 ze_R*(l5w5wdl=Uje0^}8=u5(NobMs9MyVrwpaW8e_!4nV_9ejVKaLze4hIQ(TT#d@ zcPI`3GO^bFiL$?OV!wKaNiM*zimOd*-e;dOJJE(yYLIy7qB+zWR<4WUFU@Pf%yxCU z>Go%8JrRD`tWf~VD*nby#~~oc%(o>htGZzm6NCFp_Fba7+-z=B{z+M6M^3_1jk?hE z3bppPZZA>a4qAV~d_+LtYfk^>KrVHUTWzEA{$Y>HYzxGbm!319R^(wJu3MCKxKUS8 zGR6*agVYKMIJ=iOa<8aCKz02=`)+#>L(K z^;clO&bzwM)EcvOu)p6M{c>6W$E3%txuXa{k)Qpc06<#EANKBdwZ88Fu6&!#ACbBb z13mOyYG5bv_)q3KyJ8nJXBiO+y*&{#;|@QY70A$~nOFSdB=hVs;k;$KL3!x#Lw-f6 rzvp$y0~6%`v}2~?3(jdJcKCbT3gRWl0z9v)DpGEJDffNt1{D7nE+H*x delta 29024 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