From af9d31dcc110a67957e548ceef662bb10592fdee Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Thu, 11 Sep 2014 14:53:47 -0500 Subject: [PATCH] Fix incorrect data delivery skips after gap in HTTP Content-Range. The logic for determining whether a gap was entirely within a MIME entity body was not asking the current entity, which may be better able to answer that question if it was using the Content-Range header and thus knows if the gap exceeds the length of the body that's still expected. Addresses BIT-1247 --- src/analyzer/protocol/http/HTTP.cc | 6 ++-- .../Traces/http/content-range-gap-skip.trace | Bin 0 -> 61038 bytes .../protocols/http/content-range-gap-skip.bro | 26 ++++++++++++++++++ 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 testing/btest/Traces/http/content-range-gap-skip.trace create mode 100644 testing/btest/scripts/base/protocols/http/content-range-gap-skip.bro diff --git a/src/analyzer/protocol/http/HTTP.cc b/src/analyzer/protocol/http/HTTP.cc index 0009db0e55..cbe8320ed5 100644 --- a/src/analyzer/protocol/http/HTTP.cc +++ b/src/analyzer/protocol/http/HTTP.cc @@ -609,10 +609,10 @@ void HTTP_Message::Done(const int interrupted, const char* detail) int HTTP_Message::Undelivered(int64_t len) { - if ( ! top_level ) - return 0; + HTTP_Entity* e = current_entity ? current_entity + : static_cast(top_level); - if ( ((HTTP_Entity*) top_level)->Undelivered(len) ) + if ( e && e->Undelivered(len) ) { content_gap_length += len; return 1; diff --git a/testing/btest/Traces/http/content-range-gap-skip.trace b/testing/btest/Traces/http/content-range-gap-skip.trace new file mode 100644 index 0000000000000000000000000000000000000000..1bb026825995a5c2b6f9adbf6f2543fec0cddc69 GIT binary patch literal 61038 zcmcG$byytBx;;D$?iSqLVHgI7Ft}TAcXzjt;O-EDyF+k?5ZocSB_z0$Kp+GNf!~mQ z_PKZObDsVE^WA!Adfx8p)o)k5wW@km%`6Nw76JhXfIrj20{{RAGd@kCC<@7<0AygF zA2$HW_P!Av0L4=Pt{DX&4FEu}?xBDnB#Y|a3OKvrw-1WFk^nXP(!qhp%t1hEz|uVc z07O7+hJ%L(!oeW`3oLbw9#NlLpa3Lbc^*2Sbt$*`#5Qci9h6An7Yks`! zF)5mT6nw<0%-YI=mmh2{0I{?(7Xm^BJc1BzK@gY&wukUSxY;2fSc33#!1iE1K`_h)3v$E!gMfIr1-Kt=UJwr-2xjy0 zfVe?0TaXuaA4>U81#65Fw84n*m*FB9|8fxY;F)Y56oXMH|#Q) zzhG`&-rx44pRoIbc_1(kVdo(*NBCei%u9X&n9a)v5fFsgyn~UfKfCV718^UZsups{Hn&m4&CBi?a~5qLq~^ zhq$Aiw-qKDCYnVBFXS<--v*-q_+VlFxcx`NV>ZTrYt@)}&Q)`y9v%c17tW91I3I0-)?YH?N$0p_>Ol|Js=EPyt5Dizqh}aH)5PI!DD%Ai~O~` z2MPbIwQfNG027Uaqn(A>WB72nSa@1_a(H;UTbcb4SHJW9Z7;kFgJRno0zE6a009c7&nouO;%8xf@|71mU4&{nHA+qy8eJKkx=R-FoWtI#>bv-reojw27; zUQdU7aijaNV$Q#*sIB1gGw_A2q>Tw9pIjPGfl5dxRgQuc6i@~S;9<+k6n}iGAQnjg zpo&!z0YFFNj5agKV3)eMiu53SIm&6%g%^1DSh^05ju*k@p*~wVBB9OVw zFp*VCld$BFv*e~^Uhd3T8Ix?C(&>>i?Dmm;FhP=>AFpV7k6Lkk!RRDO*~rGIKE|7r zFSqsis04e23ms~D4en4T777ymvxSs6x^0EwvMbMGutd4HK+9|UMV4G`GQy+7PCf$} z5huNtb=z`_`B(A$DhHm-Wn>gKIfui;RBLV#YK4o1>jx_NjQD*;$!rEsIZLWBjc7^m%xS8*Z#+SfI|PRvSnXXW|%r)EH(sA%!Mk(D}$w z^Ec;kn?1ka51*GT*_0ZeV}Cg(W>iI`Hpmt5K?$Yv7-=lR;iGV4I17mqmCPU*c%UEm zlk?f2l47R9G#3V8;0e76UQx-Cpbwl53>T~;s1~eDzo6IgAeNsBPt6J#=FMlf|3duB zu%X(|{MKge(31VEbBGJ15N8l_5ZA8IKBGaxp%X&F1DW<;&d zUYZy_ZU6@Q zxrW>aI8b01Uf-(Kxg3l2&@7DxMoNy)L8#3xu~14#aV_~K)f=w4J5w9oV@EpN^Z`4lG7N`hLC2W*U*WTLd=Im_c? zkF{gVG-55g=}79kqFO8ahBEvyyUtdl(8=YS-ln@6W=Ijhp9SUc#tzmJp{jDQmNcJ} z>=N0CF%Gz+jUPY}h|_uR`AXaNI=a+2e9W}*KcXaX+Xy25+A%L8)bpF677o$iMhq~V zXdJ#tf2U@yfgljyOTg17WRFg#S9#XoNg`lelA&BU;m^lc!#_OZ$b!HLea$NAD63vQ z-Y-CFT<(awWO02mI$+cRHsV9yS6qE<{l;PP^M^MR;>jei{c-o+jocWS6%BGG*EsW|m;gVbB6xrCTZh!DCwxr3 z5g6Vgk;EY~k-d6k>VZGW8F1tsjhOsfq z-pB@^00+FZPmUa7o&T+OOA<@X)E&-J-NrNsgWPaYi6Hs0+XrX{ufwGUr)8Q|k895N zzRZHeJDRRR?6Tq==OK;YN+r_hhYFti8PaCw+xuFVo-0_o%j62U`X28Rc(JK?nzPo? zxW7OCDL{~4I zhdS8kp;)_F(MR$L2^cFl1VLFF(!*{GMP9E0+m=`Yj7f?x%(b;N9Y$%9cX)zx5G$cq zLk7+4R&ZFB>~ro0!X!p~Bu@^t?GU1m^_lo$5F^NxSfuiW*9M^Uh*!aVvaC;jcARXW z%S!xgM@W6Oo0am$R{=HCjhYQOU`l}oU&uxi(T*|hYs^mMZ~Z|Q!b4ech)_->N}HSx zVkMSO=wD48#yO;w1#EvQ;CZGThir)Hv2CqPSm`oqYjr?Mj`T(SXed#)EL1eq4@atc z^O-nJqU5m+q&%{m-g$1PpHxj=ev5!Hn10{~@rE0T`#7BPuWd7v=FD)}#Vu=7M?Vk` zY?Q;SbTEG}Mu}#Cyp4^L_u*7c`^OPnLLM<57d+;>=9^@HHqKfmc~A2A$OeQ`ciiRV zFGXsD{2ioDPUme5_$ZYOdu6#-6z?x$OOpk+PZWjTOK1lptWpIn4JWBB5*!EzP;?7w zVK$o|6i{)T)d(>oig5%bS&cH#yf_KN5&K36&E>}lOgO4XOvLnnmaaATHGVlfS;&y2 z&cF}^aZCy(5leeGwwm})CDq0H+EQj4Cbt{C4+kJ+nl;?A9;GW1{Ce601@iWXNflxQ zMnb)4gH3{ITG8VWe$M|?TAng`Ywl_;#6l9}j$VoKlw;>2rXk4G`Io2W?s?x2QErwF(&)=|){6G2 zSywv}l0@7`y@Q|C6)oOXv(OdaO`ol;QWt3{IIED^%=`?@#qd<^L#KDVQ?lR`o%#|y zR#VB6RACMRL}z-G}xuTo;&WvZ81kt+KLDPm6%6nq#k z#}w=BjJMWOzVUq@$!Ntvbt4RmJ*mc5G808Yq-Ce8x^O`WY^H)}Vq_`(fwUHf`{P0Y zI`Xt@TKxvSBjQQ+=YhIU)scWtUMo0zq~aBRH`(>OUn14gdxkBz6poFt5KCXI@U$JPtg*_JKZoOjptBzB&>>rw<*394P zL#dI4yn-6TUj^^W%P7DVx^ce>#OFLT3I;`Yd&H|cJ-?6e1&*@OMdBMzi>KY!s;>pS zof!Lga=Om=^@r#bey4mxL5&Qu%Tt|`Cl;+fZNTpl8f<4o_Y#ztpCwnQXl(Sk7WxpV#h9hE_$ni*lkLeaIbLSDSF7hAofWPsY z{yW}NKz#IXFxWo{U>DOP-s|Xp#Do8h*ZAM@p!G4Uf8r@$DE$^lE{gu~9fJ6G&m{QQ zo@qho&z@-zCTMU75}{UqEn&I$$|wDv6{nj|?2;E__vvIYAf)uCE4R+hu?}Njoz5p0 z>$MjyZfE(>@;lc!rM~3RIzrvjdGpq#byYz+54xmjiU=QGm3=A1SQ;)MBlWxXf-Tji zR|BL$GKsUA0Z3fiTdE)7QSN_?bQ~=6Le`&W9-KI|iWyNZ(no)g*L_7OYPW#(OSJ{J z1W~dl_xePF`85eLh)c5(>hU5g(x2_#`!q|+vR7z@9e8NFlIU2)s8fSXcOEvw;BNoU z-7gs4MWc#A^ zH=pmeZy(YfpWpRIydzufCVq9%Gxw=m`w3#+dTo#XYR9t;#l`NHKtJ?+FZrlw_>lf?_l(BI*~`B@G!vUHD46bV`1+TS*HjtC>wN zxfvL}=+`-eUi7#%kun~R%jG3z$0^Nfh;CjzLB{Kwni}w!1LRsp8b!Y#4N2*ex1uGpymM;1Cc#SkoW)s0kv6!QgR;qb z-*C9_p1r>~B#qxqUbb|XXv)qE<4CXN#t8W&PQ{{;-fhHrjZNgLcY2G@e&sxN@m|{p zQb?^Al``E%Y-MV|9WKo2W9(nZ;J*Eyi>T%F=PpmPr`TG@{YVGJ9(LJNm#2|ijP?2! z#_OYKy-KF(y6dAQ6l{2Skn?tOL}7`JkJ_D3^7P5i#V^OvCnl#<%Qm7-w0lXg5}-2O zkzMk4sR&n0A~FvC(a)@Kbeyw@`NFj!y@N@Cp(($!;q`6iYoJzm=iAm!#AMs3EubvVHF%D**h`;_xX+LdZlend2WqNycq^+-c$ zImv4V+D}V~!X@oO{L)M+UTf-shOhixC;?Sd~zMd7tmVgKdFb&IB3vi z$TOW&+hj{OBc~k`_adc?Eamd>FiT{D3chCvY&g1_E5A~8uHXMy{#7I%RW>qcr!`G5U0 zQAFAP8% zVmKT>_6H&X3NHTam(F_ORP}*p?EfS6RH0QB!7NtNq{4rTJutJN=nu80;2s@tmk+pp zM+2Ccd`wEPKcz_?e2MpcL%jJVDROt5rPbE_*pm)3*!t-z8h6exu({)K9 zH9C~rZJVw}Zwn}s+Gi0nJ5{v76n3YB6Vpip&@uz&QO!B&+8{BD6*4cTJ%8=?AeL9C z(1P+ufp{VekJW@wXO&R@KF|8ol|t`l{H9^(ekq6&mU!GiRl;mBlIbHP znbv1uw`SkQP41_wj?blh!I^1`XY}C8^DX>gwgFLd@TVA;JS7=HvSj9Y##w&ewUXOW z9jXqN*=kiJ=b(NN0v!_$p_Exw9|At8Pr#w33CNN(9>kSuVb-V=5zL*02`>>Qj>1kY z1*m~5BEle`*hZAsP<23Ue~qI3RXEQ5wPk0$Is%kvJwcIVhO)cMP1iwd!_2-(kVI<( z_(|_{MbZRLoT(+(_wY20ZiOe1`;39Q%xbL{PQEReTt0p5yJT#}3-xV4`Nqi+njg!r zY+8wjvLM5krBTKLG>w~fYN3Uzat*4^miV)1RwJA!B(|Y6P=oNf#Zl)BnbAzeL%twE z?7WfLGJDjp2uTuW0?6K(UQV8)@N75UxZ(|Zjv1@k4E2?Nd&qzvlrAh4ahk5-*oeL47 zvr#|tXjerwuHI)(O;iKQbFnWh+-})NSaAaScP(cgBuGc~3;;nA+Jqt#8`T?u8u}p& zQ*Nz=gdM(}C}VcwKyd~#C+-NSZAeRPva)NxbPUGyGAuC;iIBB9o$;(QG zRI5s9nz>yYOxFnsT$IPf!w-&8Z(Am8Ql1+Un}Bb0q=8aM9X%|qvYqIx&_WEhxx{Ft z{1ub+f}JtZ_`dm-r{{U$AE`Z%(CKiCN{ggb>d-5fJum|OXG8}|d~ALR8h%z>2#|T_ zdY{Mt0cujuH5-Y?iJ?TgD zglT+sDG@5T&-l_#1pmU7OX)=N?M`fM81E+%y~!?DJ4A+Qcd!`uw{?N1mTo2>U1Q^qfNGJ7F_tu$`fpJm`8PbWfe|j)nlkJS1apfE=M< z?)@v&8F8wMYLsCd(AFn)Nq<__$F9oL;6y;b%#hX$u#aQQhLJz ziy*ay(4U=oSIjms+uY?#f^k;m(Hc{8Z{AK0b1z^xY)5TV4h)Xq?Aj}lGQp3S_RRpC z3N%p6kA=Tv9u&?tdzRW+dkh||h1oKiB&tw7g!+1>*&ygO=KFm}&?X>eu?yxn{Q7NB z{`k;nq-vmgKo1>USN6-cD0e{dFok;P;_kcer%h~TzBd)%iYww-GKUQ%n;M0*i>syg zff?fXjJgKwY}8AnHNNKKlNRkHTe!a}5Tu0VRpnC3`Jg28;EnqR)=qG-@xl(=1dj7E z>T=lgt@qzwo%=PbzxBCZ$f!`}#IGHzlm+aF$~p5sTXf9+QP@E+%F6WaAz|{+fYmWA z^Xo7IMT;+Ws6HceAV!Q$=>g8X@2pr8D_)sK>X)y^3cd6VG93v$3k!mxH>>f{XNwsg zCaO)yb|FPIB%+Pay6?s-tiTz;;>TqM)*)T=DwZ1JDyI2WX#&}b{+gnsSEcKp7Yp!Q z7rLI0>`4?gBItmU<~W^7vo?HC5HLAZsS>dOpo8zXF()&!i*SI5z`6~6iI65NAm|`q z=iCrLjj@2b#-#;gIvNmz4dQ4 zE)f$=8DK~B`VdG^)X&G!FDZqIVJFB*$vf~2*6Z4I&Do|Us5GPB7)o%B!f|u^v&r4d<(eSF3(PsXFHk>I*_-zrgqT9&ZEO2`5yap<14JnyoBuaa1WZnf(zlKWajBGW&X=eI?a9$)zFE zL(;1TYa~G+M|cA~?I^5F%lY7&b4@$<)m&xGY()wJax1^9cj_dSi;X^@zxsytQ067V zb^2{uJrx>nKkcpYE(za#9P2}wUyjNS?waw)&0x+@#8C+6{+Zcv;HV=`(1rVS(kCgZ3sa?JJ{*2kZQbraZ~E=zi?^REQI6~Y z&y47$o=xf4k9MPPeJ=(0GA}w0QeO^ZSriYTy;k2mA`NFtVzlGaIh*%_2K8;MI`Zk9 z;KZ?^JJy1}DbkJ})&R`-*4UB+S&xRXQ0jxXp~wit;cAFVJwUtXURmkDM8(+Ggj^iP z`rXaGcIR_jr9*5uEBGBV;)+}P#6J-kI-t7gmxf?BQPm+i#xVi}R0@EpByFOurb8bK z-UVC{A))RNUL|@R#Rqn~HsYt>n`MSBt1X00Hy+H@68M2o#DZb0`>z%uOL)>1i(k97 zsoOM7W?^%vk4#Pc&rD7Bo2mK!%G5j7e=@Z(%Kyoj`Y+2S{&P%?eo+AWw3D=S|$x}W?eIr#$l}Sxmwq~_wF%T zoA)W&dW*sGo6y5f@7)8gT!F3^xq*y{(LZfI_q_aen(FfM<+~UAI)`sezRNCBDgV5; z%@Xj-yBcevPb{OMfYt(ISak*E5DDB^ktc=@B7@^-F2h^Kd2=x8IfaCS47JcD;xQ;> zS-=LG0u?V2fORWp*ceA&D8*MSNQy<&AAq)bfBV4a#V?K zzfW>wI-x(gyek}wm22M%ep~yu&)qWLYgArB&XwVL5dyGeRcTUtFNNuEp{>K;M}Hi7 z$LEpeXtCVcEA>wvwqr~kDvs&N(7Op;48)3rbM3gU zAzO7Af=?yb`&GzZwq4IJm*v9;nvr9JGi|Tr)jeOQj1y!{v7>Rq72a+9O51xss?Oii zqOoU->$u}goyj5H_8#Nek7wLC+#YHrT*|@b1g1?^R5-bmLxWoR(7>Ja^5(38r-QLN zxbAe7{8`c>@54Ih1;KqAS4>BY)tH}YdkTuGAW@7^JDgu|ASaAqkcqVD+}@i)Auu&2 zUYIhxAhjqxY0wi4i3RE&1Y`-i5cobLKnyuxX zE5}BS2J0ke)HKmba8X~gbrKwsGuE_Fmd$BrnQnPh6OdD=)4l(vJ>NJr)MlC zs)8Wn3+gw0svFlVm0T3o8HgU5GFb9--%N;$rX>ldn}}ss%Y5)@H?6;fwsZwc>6AEK zqSY8TX^6zWE$j`Z=HiY$xU~doVf$h)CEo%frYfVvbA4K$=-xdE&9E)_#BOFvq04Yp zqZwMhQ|+^h!1>9B>YbuZkROAzOcl7WlIMNUaZ?h`8-1t~eU{vQY|)&H`0kTJ-+;{8 z57u0>`SBZJK6K%ENY@+-T#`Ey<59AM-I-SrSSXZL-GpUrEGs!X*3HpjG#(pi3>nkG z>rT1Og;p=lvrxMW!w;vW6b9kwg+9(D1?Igo46W9_)U6Pt9Vx(JXbdcZhvaE5W0Spr z2Kn6nkPPqZdDm@0b~;1|H?T#D!m(Eje8Ix4+Q~|cnjGZxf1-dj@ zY`j;GUPRR(%lV6xyH1cRAyQMWPIK#e@x~Xq70G?|_ncN%`xgb+Mj@l_{!wSi)b+Pn zhkL))zcPIsopd?DDG-1*S9QNQ@;p5Gz$Ew4vMp7BdHDlQ5)wJ);n-H(eBkaomh*r# zS$mf!R1;V8`}*gT+1{F}Y_-+uy4py!e0K$B=hl17xqLfU?c-S_dNL4d1AHYh zj(oVa;9EesO(e%yEF9a1-{%1tHo-!B{d2>S^g(=;YO<9&06 zq>Ot&6}-V+_VvkkMoEbdQdT?~XwJJFCSyE~O1CfU!V5|1#{R54Trc#z&9dju6D_AT z)fCJgnVRvRnVS4JQ}h0nsSn5hWa>sc0AM{@;gq9W8qvD1xEs%`Vj2>+&lvQLMM9Xz zg%dBBoo0+Y^UBZlbGo71F6)=<#Cr@T+8mE1v5`t`$xOrTMZVcnw_5ssf0+VOI#HB0 z;r%l&)7MSd;g;RJ#b@Y9f|1(wwx)@8l3WXNS8Wb-q)m2ad8@?mF`*h$Z1z-ew}YQi zG+yS&g}=uN+IV;|gn#n61~~SuS8Ii*(Ir0T?fpsui?6ZFf}7EqDv@4`5vye4Q44Jq zf1`c*UX*IC=Pl#plex*9(5LLyXNKRm@O(eU*?iq!oJH(Xslk{aS4yb!?e!`w)~Q`4 zM+H+-k+8j+W+yOG>3FF)nMsI_I{$iC#6pW}mODjCowMQP#q%KsF?w2#ih-CT2jRPC znBTJRm9Bz-V~ZJ#74%)tdz)lZLW0CVR zYkv&Kl22Vvz_*80YW_`L*mpxIk(>PgKnx&XrdLYd>~`Ck=4sc)uVdLA zz3?LEA+D#hy2vG#%|Z!dZ?RgujKV-&=kBO zsZkVLty_>?IjhDj-jI*|n`BX0f{3|Qd#Y9uGS>Sm{a*|m$yZJM5ruHhi%z@p@blz? zMM@dhWhcykH6&SyD{?@;7)DB7*r^#pjd8xzGeid}-gNjtms@|a4@jtLu@AX{HmFvs z1699E(@=N)_-1pWA|2g^eaVGB_{~{?Tbs=uTsKb%Ml-uO*0i(G{Hb7aiKf{&*}gHe zpFHL0`6gZX^Io48(PDk`oma^_y#y*x_l+7q0OR1=KyRwE0fqO$qa`h20-^*!PMc`~q3qI6U!>6?sFyP94n`ffO; zDk&FBMIq_8Q>+UVdPZ0CkgU%eygyI9wy#%2X-Z+zE*H#&P$Ya-4;N$N>tD%b7DCPP zo0;KQS@BO~1ro^^)9H?DV&H{N4AXD?d?FY1IHJRIIH=a)VQ8wo!>v+tjKp2F_ITVV!KlXBzn}g8LOvO>Yk)oZ^!8@4gJ@w2tB!6zR zK-Rcj`0=f&43f$-P-xt%14?gV7Dsg}Cdwm_Pf6Uyo<<2i-$$Ke0v&bB+d1N|3=T`3 zx8tNEpTiW-%BIBPM_A^$msdZN=tdV3MWwewv7!^|A-UMfc4D$WjNTdTvGk|%wl>5+ z2dM6IeJ*_Gy{PVJgS@U!+DxWL&a}hHt%He~;CO4d z2_d)M7jz*ITsQ!=>z~UoQQrNhG|&2|)3cHW_5Cktz6z&v6sE_+LGMfe8xL@2Vq$>j z>+3PrVG&`rQBhIdRiicIvNE@|QNvLcUk<+BbvQB_pc z(ZlCY>IieW*Sx_iMik;3_EXb}>mof-UM!KR#bjc7!rBkh{4g=7b$4k^wg}2Lm z5!%YC9c#f+VtS31UofnJx6vIOVB#!DntVt!I?u10C-F9cjy6g*ZWUpTyFsffnsun) zY3Ob)l?kfah(X@TOXZiw^mDcG^s58=G#`K2Qd=wd=!KGI6!7gjgH{%Yo4*Cw-}(?n zX1=CBHS-i!_&^vn5K0ztFlyRAcVtMT&?1k%iHhTn{EisQlv5f(Un)R3U`%OO-4uVUaC9#LF#*|v3ON%4qFHXo4ch{LNRePbHf5kL5n-TyT7cH zeo9~9MbfrNe6Ko%j{TjCvgK-g(TaGqj4Dv&FQuK!w&mtA_TUg z7$Q84Hd1wsG6Zr3HgPGr`)NM*v-ILr!_&+J;fPS%;@}{Niv{&;(GF&MnqcE3mV69u~Z$xuIl6o`p{S1}2u-=kiZp~MsEyj*9 zNDEP&wR1x$Lb+#ye@tA9kHl2nmb$hc@I4$+?kIT5-7MI~4DJLSU6+thZTp(Q=1J__ z)zm_}%s`XFBD=`omYqjQsf1+Ii>O1(ohVYW8B2#;INA=r`{ zps`a>z8u2$ouWALR1IuzF5MUkMX)KE>U!fxe2saQba9%XfUm~l5&=D@n(V&DF~wT% z!gLCXwG73L;{fjP3$>GR7p?|l-Y`xcx{$N;Ll2##)3X=Ca9Q$$Gu`3ujXl*zIlHf| z!4;FOhdA6jk_kbdh=p6ur?o8S<#(UFQ${8xHb;Kyl5R7%DZv?#EX7|$$PowO3%u?$ zGhZ*Oc`M3J_N^n~k*THsnW-s%Gd0g&nffy2Po{ni0RWOL@Q3Zm0L(ujrk~}m@EjMZ z%|41V=r|ZNkfnI4Il6m%Y(C|a={AF!kqJ5CrDyALeGyTY^si|>+zI-P%>yoWPd*0g z?7*i(lkZSbn)&(#BZI$KpEkZRx}dlM_6Ua(;^7JlmC1{~LqeAjPv`*vC7M>H1GT5A zEt;*HD<&JsJEhr8Q_bdNL=rWlP{-M`)e-!7mDGGg+D6S$jkc*x#KQ^XS1^pmNws*^&r{^haVOrW1ir8Eg%a=bl3n3zmKVR>0s z=-q|J+x@KavW?T)=@TZ`gLeh)DRYrxbdN?7eG3ioFNdXjBGwEFN5{TUyDV~*%t1MQ zPO6FtxS*A2(`XH5cP(JmK+u&?7isNKm%!UPPMnD?0=*t{ek0kf)wk}Hh%GB@b}IMz zf(A=L2Gi88><>f}58|_JjoBKfkv7eHnna&1ug382ghCqxts+}7}Kn_7^AWDMib&Scc&v``mcUsJh zKZ1R>w;mW@Pdt!yGuq`Nu;07%ewn?KEy1{(X}B%;dh~$o&RG3G2Y*s-S5uxgr2TiDb?-{pn=0+%k5kC1wzM=7*#U z?T3*oze``v2UR|uLWEP0HUl${bqnIdtlj_;gA_GJf-YgbYWt5vRsh9K!)n5L=t2tq z+3TH`Q@14UZ@%rg5`&r&Suj1i-G!#2PdpvqF0y3^G8PqH`4N102%^g{Hr=njuX=Y> zcl+<%>}VM0tFB6qthFHwN|O8vcg=Z^NtGzE*`G>PFM$IWuI1BtIujy|E`W=;FY5OMUnSpH%;QEd`a%@+U{><%5SE{5XbA>yMo!*%~PBP4eZX(U$l7KP%|UJSnt*3+^HfRw5M3U&0u zfySlGI3+I$e3W47b+BeTw~ChDsCrFhOfM}U(j~Dgh(`o5TTN-mP{4*H=q~Lom*6H_ zJ-xC9eKK*#?=iK;KQlGeZ>9$Sm8oy8{$y&C$JHdBY92-i8#(a*7h~(cesl3Z$JQc~ zvj4Mi{?o{#L@&}}6NAk+P9N77OLX)##{+Is-STnayzZF_(nPnwFX`5wP)JCMMleSLhev)u1>QiZ1P|Jm=Jq7X?lNu|KfDX4$?-S1W*uB0l1T&o zXTa$ND8BTV6P9tV$if%+QfASyT&L)DY8~&@{U{x4P+2NMjkV#x#hSH|x~q9$b4L@# zEVHkNAlkawE)ww4jv=b;`Am@_t02Fd_fb4#`I{S|5rwaj$>d6_l142)aVmVGK_ez~ zBd$IMRXIaL?UPR5*h*mIjd>Ow%4AKOucTj?07DIn(ygYxpAPc9ttmd%TK{sx7&*R- z9DSF2HgOW5=Y1gCz=-I;JiY;(DGgEu7ndJ)_9rJo#IKP7RDJ?pwV17J`ixJGq~j$` zB;U~+S1FQsQ zK}mBmbsfVE8O%@$|0AE^WBlO_a017SqUEeS@J>l8Wa*X|?=O@PF4kiOx z7~Grv=X6iGQ~FG+u1J+t%@{4^sp1Der%KA*!)sbQ2wn$PBujgsJeLdJ;S<5_FcxOcGIO(5U-)F)u%4j-ANQR5O_1^uJfWBN@j&zbAJk}7-%poRP_|2a5 z;yNXANk-ff*zTiIxN~%cFdigtpCZ?uvG7hKL$Ipv{k6jG_fS{pVGI=mMPz>$zHm$^Eu<*tq4Z>Rbf3O=gyqcer(lL+BmZaQr^Q$;9IW zFL2l-SaZ{Vy_nR3hNen`y71#&o|v|nLWvOD=2KEs3I)GD!{$ie@XZKt+vR!eTDW98Xyjy&Dw@FI8$=EY_9@ zXD7|@bDGBOWl2LjL94)>LMQQhZ263^661|mSU7E6B7KNrca+Vxtr6^Q3x)8!TNk?) zX}==yo-DIH!EnrXc&qwpRN>jz6tYcUNM12jE($K?zLmR*|#xUPw=g|fY>kO zS@xf}I!Z*ZKQdeU?T=aPmNnNleZ^5^975lJv-Vm7y7+(~n*GFke20YnL7ubfMV9TX zs=128NrWL;`m95%!r-gim$AeGK>6*o3GGFKdwkMnF$a;CjuqlF_8577Kg6lh; z&DH44!-=8@MZQ5pts|Ar4UY0%$=u+XB}_u1*~u+#O0?U$)n=gbE}b5QN>D|~UXO8a z2foNyo`P3!_{70~O#1SWDsIcgjR$_j@Hy#cyy*{oy(v=;&lfzk7%e?KA!v6h;c_fu z0gR)>T2S4M!`nhU_a&v0uc;r<=Idy=Gc^f1@45;dg#tsq78+?dj-m>TGL1cd5kUGS zr=fvaadWr)0Kr__OZsShoatUyn6aEL_NXZ8%yjpg%P)~K5VMA5cmzMNkN>Q!hvTv^ ztoxPKb7RXFhGSj$EcpN*>(ksRD*kSdsS_gk`=o(^2r)1Aks`IxNYz?bs^H2DZ&mg# z$LHT!dS+5X3uYi+lSd1jW%|$>I}r@c78}28Gz-k{Uw$5lo^v0~%>*#w`P0w^m#DQ|y(O1!i@z*LlF5w{h{k*4+i-4@LZN zt=hA#hq41d=*hM6k0PMnW9$uNL+6T2=(|L1(KdzO<_Q+^k)qOHk|XP?-TbIOZr-sa zm7Y82ULF=3EE88=;5}T=b(5eZ-+%sKy#ESSXzLB`oWy(>^Q-b#Mk{^tvsVd|ZH&>I zjc%Li>^yGrlP=Zm87QvbJXDCocL#6cs$@Ad(tboy7G_m8QkpOw1XPS(ryqb;=$DAT zd)nuhM)ac2=!B2Zv>~4Js_-(eh3R%CwHDxWJbNHAK!6~SWsgp(Dl9g1;ifnbYSHb@Dz{}5}qjfI;@lc&qp;7sd`0;e2 zk_l+2K~Eo_3n&vlCgZ{$Q4hTJeGPMISjH!Wyny1Kn18qP$00J?5dMOSF_u-6{O9nRI$Wdu->b?|dV_-DgCqbb;Knnt&-5=5Vpx%bF}_dMpdtc5!M{h=u(tu6 zVK~(+V1dZv7ykd1(7U=CAOG0M0O0?vUQ<6R+P6t?XD{J{o;~0K?o9x$_t?PSO13<} zzq+fd+P|~BD!a_zx--JMq|=rZk)a`~qO+_dyQ(w0suGsr@plEXZ7Zs)yQ*OyJG=Zl zyMF()KtS0mxIPJlCk3D%PyiB>1CG_gds&%6FGL2NHxi8Im|q&V6kaCoRlPD{@Kw7D zx-HsO%TGq5)%o(qf#@{gl&)=8C)zWkvGb~0+NxuPoFuZGZSd}J+$|R&m``qQpf1BX z%(-aZEfHvmyV0BgJfY3)*&l8 zY86_~+e_#@iC1xa)2bw6#9`fX%dXMr)o7*gTIE=Ks8We77reS*rBQ|*PD3WL5YcL- z1t69jnc=noNn)Iz7hZ&Bx)bAYXDd7LX@m|fm}|51@#1Cc+t{!4cUE#}#{nJqI+tq5 zGI4cV`s=;un#|F{P;d|;pg1_dU=^$?hyF6&a~~RZ951#{^A$7{*1ycjXkP?7yl6s& zXZvc-$ZPts?Tub{>@xJi`I*I;vr&^^sBeYS)E7py#*apeRobK|I(kF25%WlLInHU- z#Fl^xt#rGYnwY^Xvk$$XoKKQ8Xq->%sUsy$yHv1(@T@v2RJTQlvtfNp73_k7_v#1oz$$=d2dXT41!4 zhwGt36_+>=4@C8QXX|2d&K=>(gcMN%iT==jLnB2%(Y^) z(EmrIG1^IC?Px%#spMgNL<7-^@|{&#G;g7lsw)VHEvPL^p*4-&{F zVx_=+%&1?t)kt-tV=W|Q)CbR4LTvJ_RQuvB$c(0oBq>rg(`Pf-3j`}rxS#4YFnxVx zb33SF0|~5cMUc?D0dfepLPSqWoV~KUsv|URwMdR`Md*?%ko~~CGY{IlJ#0>_c{Gr6 zWOp~~TqNA9WFwyObzi>vWBlPFb-JbZ2MyyMD?8qdu}fOKNUStdx{(G_>%1I!wOZvg zwbw8Ql2~5_!0PN%#OI?bzHaoMU%#|b2HtmY6WIZuLL47tc-e`>f1z8H3(zSSBDiQU z*u_B0Y^@TH)h+wrTa3nxcKf5HI2|GAm)}C5?@$;5df9SO81i7<)%`Ot#Gm~pb<97L zn(7a!+5S#yWU9YN?I8*P293~x7^IvyQhR&6>qHZomz&MDT36Hx*`m2w(ewes@_}pO zSg#_o@LM&+ph_yBiEU>ysJ&)Qg@Ghp3Nrp{)uzb#+HG;c82#4jkH`zcEpYjFcNvz+ z#2jmwbNy~7Vo6+;NT%*`NR6();3A6a?WPHvWWT(rAC5+0+Q!+K&Lq_2sg4&Kz(?A+ z2)@*uX$lK~`J|5t*hLOr$9lC&;-*mFBa7^9BFScq>5XCCs6}m5*lMQ@2nLBVM*Or^ z?=k7s4|JL{7kaA#K&Xg7kqzh-Twu6hLzcboNIhZ#Uf>Z({J;|NxVy?L)?A>%c|D#= z^t+=bc`9#8;rR5<WQBePY4r)HLUa5%>v{_cdYUMOFx}z%DUA zCUt}gTEZtZ$wXtW8Q^5 z6mrU|WM+T2NT1>V60rLn2_hX7%dH3@qjl0G>}2X~^M%>hB;RXcLn;Yx7;?3muH4{P zIQMnnNWXR#$}ek@j(#Rb8oUdG3?SukJNqdxE!Gc;4-?*l}N!c?HTEwKjli}L7{XZ_+KA(xor=5Z3Y|d=Z$F0E zR3Dn@Uwh@)vMl+)XVh@i5_s4>Y~%p^qtF0mgf6rgp8Q()^Rh2Yh!X9vleY`2J2u?#05urjLOOdPBKN>BPKIC|K6@q@ncq zYSeDy7r!q{($TPMSg&8IKC0J$8#=A8g=xb~-ws_KPts>yE$(1pd3ZndZ1|JebaZ8J zE!Q1};tF$We4xw$oje80Ir^MPD_;4d)|AmM^xF~E<&T6es$QS3c}gsK0A9@I$8hl_ zAV?|v>76%q3S7TWs6rLdxo1utLo~m;r1&^;mYAH1vyxl&m=G8iPk1V-S+ubwaT`xb zERxxFd!`f?pM4^No4>JDc#Gjjn} zP@#SAL2&6Bc18$IO;aBjwEQJ-t4woS7!;qE z&Zdv=5%E>}W!$wtP~BhlP+jkp*$Bam65X9!hjn&i5e1Ws_foJMTAyuncw^m7 zl|0>*MSA%`#epph1fV~jngZ-^yk_b6Gk+scP$XggKt#Uqc4X&70{LLI{VDt{@X?h- zS-@BI^<*gS6etsHa-UzLOpz+=H}QT0k#gta|KEiN*=xQJ!L<(E|H@Obn*!xiWrd`< zUfXOoR-+=!Qny|cUj6lDjdkui`i}99&^JM-07Fk4jhlW!c*=E&2i39MPn(a!_g<@H zP|A?cl#sUP2IB7;S?Oz?2&S$=l@o>|_2GP)C^xgsdvpRo3D}Y%V@l{g>c8Mghgm#e zaxUJ)(!}F@G>vGF{PE%X7_^sDp3;JQH?u!#4EarJj=q1?k|6%kl2rePmc$k#Ocj&= zhqnBm1ncSHY^(TBHHEkTALD`l#C!k0#}ic4JpU`+E|sUv@81tH_>b|B{=}>L-{V1R zRbu~&2Z++C|Bm-&^&hn^)PH6s*1yk87-4_SOlDsJpkH1Z4xMm4?=GA(S?fA`%qXqP z&KG(gKZIy0$fn(I`+uT^`Fkh9|6EWc(9JadYe4~*K=4}&Q=_=`O^rG{(!1`hnU6z! zBKK3NO4jZ#Elh3u@0Mi1zpopZp0qIe#KZx0|Mp@5q+J%Y{s;@~cZ1gbLC^;kOknNN zrz0aHkupEOu7awv{jmiR^h>ayptA1i`{|%-`yw=?Cy z7KhPA^pH8QO@l%*M}NR>RSNq99f1sjh1tpwNVbSI(SW6v zf!V5A)^+zyBSG;|`(y6S^5DN3j_#BfXg~?8u-rZA)hoI)c6qMW7 zOQ2KX?>R}sO*BN^C}VM@?G-7fOs=R0LPG?EDm~7Qb6*et$S3MG7u>oOwW{g%6pFFz zF&u8buX=1cK=EzY_R8tfo6m4FX(%{IrJ?_te}10F-j-gIK0{I`mm%qxqD(a1&fCr7 z-#)jGJH{A3qwc)J&P}7_kwCasFdW>3gJCLW0z^mVGL#MypC+86ANNz~0~mv;@|2uc zz}G4cx;`NsT=tf53d%VNkTG;y!~_bw20dwMlJftoUVm$80H#WDpj+p-WxxLUhU_p~ z+$)7NEz`O&1yO|o1*3wrH<*#shS|^3>~w>y>izES#v244bFEC(x@r1g9`3te=~73x z3>mwBT)Bx`Gxj(}i+hjYxcw;(=eECj_uE$IC55`BkF9BTLZIuFeng8|znv0ar=D4q zjuIGB8%fz6ye<*(0YT80+s1EGd1{f5*d45vYitXS6o8|r(~E@#=c97WO=AX2fc>VX zbc1!dIKUq-08|NR86=DngA49Qe-*pgJNM3y0s>>qM*^VF!^!C*0&nh8YHCzCURNL$ zidy>#Sqlw%_2C{3Od}O)D77e~g+SRcpEOshfwkhIK?9VgSYhX1Fr^%59NfvfR;GDl z>IeP3_-N5f+#^4Vbva@ZB=a?HOpWxHlj*`)jnLI`_PEIG@Jer?fn!l% zH4CuGGTcPa7Lgr=7`Z0c&KY|$k|*-)&}FAeYh}O0k)8GvqARngLQ#r!u^tF!RplsvMC5%M?4dVh!rbPlOiEm zW4`eI22gps?lrP790?buDiINWGVyOxNB%RZY5tJ<+22Wxd-xZrbDvb0iD&>w{N5vi zy@`n)7(lA`o&oH;Gb^#1Gp3iH#ea*pSrP(XaMHQ)3pR_kJWLQFZ8ANjFTcnnmGcK1sjcPX|h%k#jE+tct zy)t>W;xNV&dK^+YRfPx<3R`)nO_pnsu3Gnz+R#S>GS=+(`f?wev z@#UfOsI`MtjonnYNQ$vnqS2j9@BcA1F{m}6Q}3Ga-42gi-n7BM^}Pl!)xL~;i3i=A zDo;egj1qqFY3c&jm%=u;*lYC@JTR!uLj7NRSxBraLRCYovv*@?DKI2?BM=GoJ=s5! zy{b!``nswkkHBS`MMgzUG|Hfn*D-NYc8qRc2ryKgsbdyXXUVX%aa1fKLve;tJJw<- zj04?U1Gowb)FYJfml&npkifZr38bgYrhx@z`LoNXmRj+ z(+*iu`bmP!`-X!xMNQTxd$Iy~VJY6~%edu3?gS#t;y&NYwN6y3Rd-_;Ngfu*c})86 zcoI5w0(QS}6AAlu7zxP9;eM<;t*M~9AGuSK{wi?W{}7$iKVid9hGMN4=YJmb-77mr zWJ;Y;lUrdn^#hEZ>rBpvr78>oZkjFMkCDYMj-!83XfsMY-ewZt^I;#Dt?Bx*>fKSC z^reAC8q00qL9woYSLq{ESdd#`3zBK6@u@M8;bUWK6+udI7Mif~P*UZd+@L^dH*(M6 zH=9rSYgM!f$-BpoPf91|$QW4mwi*>i8KZbhmzu~gmp-g@xji}R=pl+#3>3j3?_!UR z&O_I?Fxdem06ag8QbzS+nW^+A8^3fkV$u|w5I$;|Gfg4DB6xZz@F?^v|15&{`r81E z%bp-oO~M4ura5DP6fseC8p{+zPoc_ZkbnEmqjfZg`Sq_eQ9aX7BfG3hO1I$*66N0p z1_dU+KaMvZ7<>=JRM2W-?L)*BXK-YZ1CF30;UFaMobwdf-Jv+Et+k6brrZ#7Jz*xpgnu&$S{(=9| zBU+_FE$t4Bo`hv-=PL`I9NsniF%rE^XdcnJl7uSKs01Y)WBlfyy&Vju+oW;GjpPx@ zSbsEGk$ym*?9V@nLMI8nGW%g`ICBTimG`JY&11ceL#$c|rJgCKc_90a2fkP8^q;Im zL4vv)SVg&x-+bIBP9kX9##jtuB>8erpUS^xjn11$(0erHJwj{TLVMeVye3o4SG?hT zlXqg}duP2R@y!T!J(-vS{{b7Yyt)&C1Ds28L)GtanZ6goy?AU9+2$JT>FF~a#rgb> zWnKf%M`{?BX?xdn08=^m=khaH_MYUz2?K;N)L&I_3HA%Fm>Z$W>W9pd1Q%C5JCD!Y zA1HKl5q4i-u5AeVhM%61edzbRM*r`dXmTTuZ~px*)h8L;ae?2=2jU7nDyC+`zQA12 z<%v><3q#A3f|jS;9neiF^Rxx>&MQ~? z(-7CL+_BsP(L|<{fRq5%M0r{JZvn6gJH+ zt#O{9Uf&|^3DkQPHy+C%q(61}#D69=?H^LJ{GHUq%72ks-tDPE%X)X}n_wwi10rz9 zHDDL1eNW6jM@;%8j&$Pi$=c z?*GiR^TK`K{VUUk3D|m4#>~89@jtFRhw-cS%mNAzwBf+;Pu-*cT6uWQ04g^i)ql&W zE0CG~XXjt!r(Q6?qa&c>59)amoOhD~qbDcpW|C&R%I3RUX3|dJ5JDlxjJyF|Qm2G@eC>gkw| zJZUijA>-$kHRy)1Re=`+gDN3f3v&^|a<3gWriL0J1Cm3a#+YILr)Ri?EJRo!eDd?J zd4&fpf}q};;IM9Zx_X7MhNX`I?qJ;Fr_SJ-o5m!;V8W9~NnBHCWIpTc;c1TAz1mX` zds2C02*3+{moYto`saO6G=KqOQkN)o>bEh2T?Xpi$~oi=k_Epg-{L>Bur808CRmX-Y%KAc zc`NNuHhOF5v3ljP+#>d}aXxyNR!4nGpu8>#Ti-8wsf7&4g4US?2`u=|Bhe2O%?tWqO?!nR?rUqEdSXNGIwljdAG?08j z&F+&cs$$@2gtH0+4*aZXmL`!}5(^(_vH)B=`l6KU1#%=YIF4M1C`0S9%NxLhmgl-- z%fUIt3m+HV{H;%a^}5w8~C=&X4O1Z0^gFgyeI*tAC1YJ04XbUE8v(+ z{XHaBPU};{xRw*AK_YX|8WoGT8dg)fESmDGgl(oXepVZYXqwyNQo^6dG+LpsZ{*x` zHc2}=eM0obJ`h(%op2&)3=a#uzuP=Fo(9Wu)`wQ$TTTyI?s!=ejto$b%1^Ks)kTgO|QAaHt{9F zR8eZ8Gcvm~KV-0>#2RaWSovhMs`VK;Pqb2!Vl@iUt&}!WzdTASD~f?%WR)LQD$rF2 z7W>S&9Foo4Qy_IN*=p;4*E5t@jB>1}FN2 z;=xwqaWWL@fXXR`k@cmHWfSEosPle?f?7#n>fb=S;`2UX?{~@jrnyb1tF3o&8cIRv zsWafeg_`D7B*&ywTwN-LlIo5E4EAV-(P)|Dt7c0Toh+MUxbE{2A&XMcR=IlC=dzZE zTWn@Yy|ePW;*Rrp!7ckjcR5PqZ$8=$Fa%`;h%jQh|IVrN|C!Wue@M;zcT!W-|3&JB zrybN^=Xy?rC*hG{_yYLZ(#pItwV~9enerjMk(WGSy`J#3P}b-DLn7B@l=oSAzhrP> zB&V3DH(zaxebi0qK2BD1>B2(2R*rIO-4WQJW-18F;jC(a9pHH&c4Yq%6ok_qRnE^H zlaYmo$&Nvtl9MT2@VX+W2WLqDofRBxEjFF9rOGf(nulwsojoM0tp7o0F(m$t7wPdQ zi&yZPKi^fr!9~Rum&zkzvyXZ`UJ-{TqKNvo&vDQ4z0@frwUHob-YdpK8g=S_kCnZC zMXSF)eLd*h`}~qWg23iF{&)b{a(1%cW)&v=ehn#n3l&lL%M95GZU0ig7#eR4nL{?o ztIlY4eKLG6GIDuw(wL9)pTm>^aZgWOo1nF@3Xw(9L)COa=$5OMp|Es=n7%ne9_e(r z3y)Siu5&0@D;k%4TpNQoxLCpvP7SkXj`2ASI$>%6a@el9*;&KP5&WbdEiS(?UqYh= zRl@2S_A**IQ{E34ffTflh@=HZ#?g9_v{>o_0w|m z&8$%Kr@&j%X(u16Rbv=2>lyBghMtw&YV73$ywH_1{m6d5@z1+?XtWD zqr74uy1~ShZMbhB?B08n+N)DQBFa-fyL0hf;lvMStDqS1Bl=+WQ2hRuWshxLsP?w< zc(uVhetR#XG}(LfLg6Db?mHz0K2WO8cCO8L_(k4h5rtoz4*@R6XHG01;66yOm+MA+HHL8P(!o!^^1B-obhXKEh_5H{lgoYD|O{s!5ZeN;;xwfE7Pd zZ^%7n;J_WvMhxo2pT(t^(%ll!-B`k%_Q*Ye+TvJNG$GjboKqEO5Bb78(ibvv_6Vx@ z)hqj8yQ%j0WZ>AUkgyV~jxdK1G3Y&EY{2#MM_XETb)E3uQxH5{Ka zF?9ztZ3WDGWwJg*$;7&R&g@drvWTVON=ty*(5$n>PA_5V<5OtH%VvBACivmp%JG}bJ0raJu4GlX-xJUSj+?3p6;*B}_EF8L6sTJ7vd%8yH(E)LF$iag(4s1-g_`$w8M$S+oR>m9+@rSoRamX;uMzT=ej#)i=clH|#*=Cs!Wt7BeS9JDVwXafgyD+Rc=~F6 z4EHK%sxQd*0c_D<-4dJHcmnKCwZe2@^~y?QjT=#VnSYP8BMohsK3tm>LQfm6hAzU@ zZV@v;&tWobCce@%Py67^T%e1qhH5M3D=AN- zfP>WOg%A_Y&p!EUi!s?aF2Bvr^_x(lQ0MFV*Km6B#*`|8@xMu3{m-PP|3hk~zmuBw zU(OgMXaHdK&U%%RO$fs%KM4t5TOl3A+S+4Cidd>dDo%=0$}K7|L3rId(dC3z0tGP| z;oT>MXCCpLw5|&IY3eNbIrv8K^EtA4<|?5(<}iEx|0kLD-`sEhmrNV2^xteYdQgAY zv<1sQR@&M&AdgKD@%FfBJo^j-0JYhFrP>KyAQfU5_P?dtPpuc3i1QNv{WS>Fe;w~! zzfpNQ-U-+9cn9dvS^OTvrWV*(baYsz3K>FMvW zYw`>t)QsV^d*Jqk2hgsibEU3}V)162+E~H2cWa1XgE33^+H!Vg`dvzsZ_|*z*8+nnLqoO9<&_G{@h#ej#Oky zu~JyA7j-^vF;sBmRDI*f#y^v(xY|vt;J<3SceebiX-!b{w26gZWSBGa#a(7GE#g!n z8LdcN=d+rO3EleRC5m4rbZ?YU5K(oC>SLgAc+=nwJ99LTm~dF>ePo^9NIQA)XkPL+ zdaF8o()=8I1I|40p_3L{0$!V?G!Mqj6GP@^A2*!og?0xN$s2Sx(y>`u50stykis$c z_F`Ur+Ia29_xi~WD<1+5G=`H#R){c$OT&~V9Kwo}!ilC*WKnceqfz7rwFDTY_h5U$ zEMf}uLfMf)LB?S4zNyYv@FgQ^o1MUJc0NZ}4+{*3$}3$$AJEp1LH%esO3O>F(l}Nf z?s0K#f&ojyB*fdgE;~EQmP$$s#7z{58r(3?As;})H7)?et_5>Y@iY-8E`mlm0bWf0 zWKLiil>wH6hh!O6mx=SNf6EIMvC$$OU0<^gwS}0U`XxdP7c%t_R|gip!p+DIe;jSy z=cIX?wu&a9B0XepmIEluR(qQB_|DtUGYaawFAhr%i<8Hr8H}V|2+XRBt6GI?X@qp0 z9V1sgHTzXeOcjW>{`&PtK;!Uxv10}4|>3x4J@{a9r$K)>qc@V zV7(SH9|L=s4803ST`XMK3HL2`g9>vYsW5J?Y)>CFj~P>X2g^UNhZBWOz%g3cE`uaC zp7(M$pwtk$b&T>Moa~Xlo>rk%7^>_Nl!dDuJ%ADaDn`E@Xvnrve%frM*V08 zKh@rtDB_UE^_%BgS)Uo}V1r^}+>tD!YI;t>59Zd-BtVJwBbrG%kNHyRo`64jR#2k* zK8o~(3Hk$h-|43ZtY`h6VF@}VUIw9d61?WG;k}T*7D`HlT zu|&cpbe0f7MUAHeI;V`X@~?AY&KxwBcW~THBCNm2GAaYFW5&*FjbEBt!qUj$iz(aD zoG_@8vv^91UdP~p%Ez%{kE0qI7P)|#56qI^57X$RNEg<-l3a!b3MVR$3+DNzj~LPD z!`|eR&kJW=I3RwfE0NgIFf>ODVB1JM)~Vqo z`L)^XdkLu`?#It*2|faGq)+3Yj}@z78ZovcO|%a3ja|uYD~nYcT~c54F2R2p{29UA z$VH3bEE!w{25`g>nu1bGvUeL7UJ-zzWR}6%flq~UM4RBugdc3coS45doyP=?NTM)L zkx-!{c4;!X47Rg?{SZDM#H=9z+pNK@31N1X4RgZSX$EuQ<3fb+!y4K22dH}Fa$j+u zQH>ef%l1)9;C*B2CmmrU>vP>u0_}Aos{DDoAwxMV+8!HN(W7_ku&~Ops9nl{m-ArA z6a`4t%3;4^LYqHeQnTI!5eG(G1F5UA3j>?5V+ICc(zNwOj-CN_$QFB`z8A+?`Y%>& z+AZsZ-cR;w90{CPQ5%av&0c;A6?tSe@kk6koK1N-2&N1+D99IaTfR&1-&oc~?y;H^ zh0hOtF$`bNDjty*HfN3TAiYDvJDbJD2r%5zF{nR{iFQF%9ff0g$)LpkE4`qxZu{z4 z5PlI(%6WQEQ~Tp`7~Kf!EB;gV9Xb1bMjJEkUF+6c!A-k^N}2bpZx?ZIkdjn<`aD=p z2?K;t^vUK;D{vA&IrZ7I9MA*^+g6bykFEuYr(iP*fR%XUX2-r3dHoeIT9qoQ}0|k;P6lfh3}+1wJd-sjESG$QUEvvjvCAiXw`LmD-=ErNGWk5H&o5zzi9LxQ zLEl&CZrUmIF^>Dmd23%#?riG&$+*3krx%i1^|T+dl1uJm^3v7rB5TUjyJ&Rt^J5~OQK@5*Kbmf{4=Q;|B#yD@1$m1{fpFGoKM=1DwCyJ z8&zB55?HD=$vVb5#)e2W4YApoUqIlDEl5w5LI=f`av{oA&W^Teq>YT`Oxep8s;4Ms zX`-4$MWZ@awgGem=LQ3a`RJP#*J-*_e46W4#TR%(LDKJSgo^v&nP3|4&q^X_3()oD;0v(x}{K6&|r-838p-2bm|1CUYR zKl1J;Ey>^9?J6p$@)G~J+x^y|cLUe{Pm+@V>aM~CBt4!_7Cj}^<`!X3yV=4*a5bn0 zBV!d6Wf5gjWg{cVlbGMe!3QYQQBU1hz(^>$lAtaSQiaRA#@*+cJ1kd5A9J475AI27 z#MdjDcOac2nEwz7_=Zc^){7s#=K$5tU!;4@yNJf)-r}Aar1F5;oPFGfcYsGxb0ng?Xx?*|at(dwAb~)zA4jq|a z9&8Bc1K!bbY}PkdA2PJjYIZKzAM7y~eUc1y>J4zquJ{z!acA-J^dnPZ zTd%{5;;X>boZ+G8KHT+lmdaZp0VUFG#XHVNm2woEu8&PiO+KV2`Ph*-1Yv$WJkgd^ zd(RaSH0+}JU#mupDHA6k5hK229(6d)Yb~{|$KZ4|Q3zY>af_9zy)s6XDQ48bp9vU( zb5qTzCv`7mJg}%X9ZfU@^?kDutDxR!?d5r;Dtz3~-c=k%2DAR^pwRL;uCTxc2kRkdV)l=a5M zjjhe?j17;jd*O)4gEdO2f zk?ky4p@Jr)csg&bhzmz0$%gnO>J~V2m@oW=t4o9{eUBGtkxd8vP6!up2+m9pLQo2t zg(1V3N{J*4p>vFTNCmzhW?N?JtZ>6MDp^GWLP&e z_ohHVHycZ#n;nG=H^CHf)xj#np$nA=)SWbfjAewY1dG49g(yo1pdD}*&E~NNw=X~e zxur{E&RqL#02x7ez4AgGT7#$;NIs?QZH#y<)GCg_%_|J8xacXJhs`y_pg|Fa>Rdog zr(i==Fp8Ljp>UT#*)#~)FlkV?oVU>Yy!C+lGx;~Eeb@g{^@sdN_4hx_nV&q2Y@ds( zV)A8j?EO^`5VU!|`a7Q2#y`eG`4g|=KUIXkPTPrUN~ zJsz}{ar&=#-(9-Oe#h&*`$ttG)1R4%{_iu>bMe1srtR^kHf0%ju>yp7a6z3m)NsFI znvkGxx>gH_L{0+~M0w)df5H&fIJT4fk^u=S4T3-(k=5vF-mZcn;&a{a0s!RJhQ@=8 z3?OA~B=L+ee$m$mL7>`wSscp!{_?aNeM5231Lz4&*$4DW`aQgN$y&$Upv<$BMUsf= zoMf_NA9#X@uF>=41%T0GDk7T^@5fvx7HsV5AJmnUK#{Dmu_L)y#KmZw03oMUo z$0DXY;!m0T=}fGJB`MxYGAKKYYs^$F^r`c#PdBnKl<N@4N}#kCGoO4?fx~RtV2-4e9|1MTHeR?%Ho=B;bwMxJ2d`08)OB0oLi|q?@)D6jjFGh@rT&5x3uVci0 zI60`-@sU=a6XEVc8qZ!eoQ~Gwla7=M+^;fPO`S*qy=b!_piU>Ke~1jI)gl!D=8ql) z=09&bO}28N%+@7lSv&(_npuR^;#uU9Xi+1iyXQ54xMfnjf%Sy09+0> z3rV=r9Zj>jTAy?OV#fqn65HuP@l3T}G{G5}OQ<9fvNc(l6#@i;6Y1IW_FcYn;cPEJ z&W)H9z76PAWroSmehP~+(sfn$$eU%J7U~;pck zsu>I%6lEQ?Vd6VPaoN9|g>(sSDGpneM!;Pc@j+unLx-jlZ%|A(eWwuFEbV+0o+>%{ z&O1aQ>+R&Y`KO=|R89;W`WO2HM09MD$6`Bk7Wa@Tmo-_x82;uZmH2NF_f(f^TZ?*R zkSRS1TfeHyy3Z?rJsJM5Cmaj2k}6q#?G=YWfgb?JA`hmU?Z9?x^<=V?=Iu2f`>5ye zftk{Q(Qk8Am1J7%UC$0mw=!QsKnsDq2x5@64hNxr;$?Gwpm{YJI~ayFXCW5dE_cVT$a+Vva3Yt5&GoDHUbNRx_|iF@cR98q17n=x5J}N#@J+jVOlKj(kF| z+yq{|bsuD1nOpzCE4Wbd0kgVQ-tTR^8i+F6>G4OWjd`FfM!qxvW~Y@#1mL*O(-b@f zF9ep$=Pr2!0~QI*3twCnMLwgCCG5|GsagH%#IQaknSl;aBFMV!pUqHqBh=SVi^(K7 z2CjD5CP4%;(|v!{(`i(cNknlr2kx}Ss6|*3S0^3NI%kOZghyX2H4ZwxlI!wm&_;e+ zL!J})4V{pjn*W8hVonrf#swj==w+4#D;W*0+d8jVnHl;rS(t5)KR}uX3k0EumI6gj zA9{UhMAbqv%m&Y%s=2@>7exIxWHDUs0UuXD+)9YDOJwV`Zg~q|KHbb?fs(&S-DLs*7c;$cNRz|}L}eB29{4nB322hXfI|ap-XQvjL;FG~ zs6*#8K&K8Ch^qlT1MXS0)W=#q}ka3Ns4cQ|!ld+iB%uxpS0_LIxnUy9D5 z?!yD3fP?XHe!=bh`XgW(WCD-?#j?qL6)YYoV|mj8bc7N+O7nufGw0LJ8NkGO7lIvVOs zMP&>gJOI&qs`LLD41FLKWSGCJX`YU|=7R`U6EprbklL((r{0Zc|FzP{B>{#Wue7*0 zIk~tbB;DPA{v;<4meJIdRMFDXdL^axN=r&xl1KZ})BV!ILsQE_OH;ar53GplHWCCT zyz+$M2D6F?m?!xh(Q9uoX4Oj!)krcj#e5Mri@cdkKIYjrG>HVc@JT#Zb-~Nm4!eDuIeu`HDS{ zpeYhXqnX*%Q4?kwc95 z>G1_x7)}AsJA{aKJVUM@%w(j6^d@5g**|Ac6GsM4Nc$)ToU^wM>FbWV)Uw^x=t+7r zjEyI`X$!7DM4q~eYO=uLmP6hoiG}YaWiZ zfDxj>6jQi>FnL{>&lz81@Y7)O7c%q5ZIN;c+|F|ifD#=bH3}*g3v(ZOsM(u#h41)U9scCY7t#fD_4!q{t0oblZ6T%%kmP3COEr+p}>Z?$-c7187xm7G*< z-)bx5WP&Q4yI0Vojk7PSJwCjAhI=wF(KGQp;oEnwSXG6vu=u#99tI>K_9yuhxA2qv zNeH@`GY!W2^Ql!Nf&mnDiRcz@YTsA--#4vXvimPk=ytzc^YUwO4!?BwygZ!mkLsE? z+*p`D3!^kxus!{@X1GvW-Ce!nekp`?!d)c@+=z}GMp$0f_ku(&|OsVNg7P&R_aS-S_q!m$pEx1cEO$$8@ z3V9)faJUc#OfXE~n-GMw@tG%NRU8AElQIiLD}ql(YGR1B!q~@+HGQ=?L-ou ze^&IVLV}A*krNceQ8(%QP3pyeCN;|+Qq%sO)KKKVNNuAJ0HeaIG@re2ewj^%*Oi3U zmAJ&Q@`TmZP@I~kLpy;)(ptarC63FJHI%K-Uo6!d>7XF zFTJF+4&ULi7fS?cu&k1z_!D%%wfX_$wn$M%*SbZ@)^*I7wQL)t+E+|o&rym8pG~yA z7eb_&|7Zpv;Kht%YQiI>4=58s4RoA!%?k~S@$CduP}fpG*8F9~r$Hps5xq`%OKK9A7nydh)Rgi~778%>ro zpMjH&*NV_$HyW4R^0PW`29^=hjKaMd6k0VL2(+vdh1FC% z7qVB`hJb3U`OM?7q;fB1;e{b#Tm5p7d$)6?3vjenZqe|@@zx)%^eaX7UCR4pqQr(S z-V2%5U!n=SshK9tv-M4)$7DD5adT~#JIg`W>Z$i@SZs*MrU=wUM$NZO-wQ~%cZQ$3 z$h_BrhPO!{633$^oh>v=TGfRL5z1Y)?7oVCo0ZC-eX77 zmdBM`LiqU+)cc}5^2m5@+CzbNu1unKJms7Nu z`qh5hNfd6-PlPtr@v|sE6!&FmH1FdcaU59&m}Z915JGG+@V$Hf!?pP0-P%(1bc<^9 zxWhqDCL-kL&{f_Q;8k(zJ#e@yy25oXYR?HRK5YN=zou~gAu58Pall1^={|?=b1*JL1kT2~AWy!OdZxye zEKgvza9kqva7s1>eP<#ZhGcg@`VJWeXIo|EOEX&bwI{OdT1cBg(yCZF#>l%`^j8WW z{3K9V(z})W8^jjf8wZ^9p@Q{OE4o$pu&c$R~u}7CrCp%u8QECyztn@c!AY?`^eRBAd-zBO1tPb zwX0Ux;VB#GQpc8Kz@mjTvx(6d1XAL@cY{c*FzO~6+Bc{f7-KYk(E&8Rl04rH(p3v! zD33d#1Q8~B)q*Pe`O9+aCvatclX~Z$N&V~(scHUBYAJ`mNL}z$?I9^sWX!t#p^p2C z;iGDOdG`+N?RU!Pv9N7;Jfr@Fv**5O|8~JaJN*GB|FYwqXLRI?+QD^ZwBw3jSIEOk z|HxmVhQ3D4pUe`F$=0!SGD@X@ZRoAD#K%FsLpMjcgn~=Iy1h1#d`Oi2iCGBFcy#8Q z_|PvaHbp_};xi+gdm8P$-aIvxR=vGLf4#zBAuv#F{=+{!q{H!Sj^xp2ci0uoN1AT8 z+}=}VceLE}tkaIVDV`VPWo)*?{eO~ub8zx;@;>9{zrC(A=ypN{ukL~G1zaf}L zD6oFl^fT6%ZR{e^R)sC<pXbMvGZzfprL^j4~P{1##rr)4yy^C7whzG~*!yNXLyyLxHp$#+!}#0ScKVx*<6e%A_4HnafFZ zX6Cqy^U;Lp6=-xnKiQi~WcOf~<|};}h+@19Ngao3LY za7>?Aue1rr(}a!Hy*>;EIlqwSg{k|lHA^lF^*g`7ppMMp)lMay)Bpm&;8${C6!nqis(?nhHf zJlv2l_7Iggq%fpc*diwK>Dm1zR4gIom^4W}eesf1JWL-5i=P)ZJg2spG&SLtwrxa^ zjU9`^Dn!UP!;~N#z#YI`4NvHOV-2T9*~<6k;HQG3F13I`?N8$RpS4q(+5}2C+(@(B zsTRKi_7lFrCU_f)8;0+ugzdn*AP!4-LAcNe=N2FutI1(tTrxhRXnrKmcW9%;=S^_Mvo zO0pT+b1fG{NxTuz674$-7vCQd{nU=^pL1nx=zvqVt(>Rcm13GpJLS3{Vux_>DQi@I za#g7+q9ygySv;(Lu}^xnu#kamYQbV=_ADY3G4vEgmDPHOp?zeueo z0swN)gX}R>+fmnj0E$^TTs(c+z7Y%o%A2C1B}Db-i({$%`s*p7=sTA&+%WuF*D35CP7dQ(@%D&~CAxU4vm^Si&Z-}k*DD_IhEB_beGJkrX|K+2pf~Ar z&aZ=bW~&G9VCNL+3emkX*O*5I?bhH8i_gV2Q?E&aWG)mvUn1NVXR(rGvM&|SIxLqI5;s2xUEraUVw)O9YySux) zySux)ySoK%I%7GFdYXooxGafzzA0M)x~Cal zC!gudQ{R#JJe1)aa1Gi0=gH(DjVXi?g>Ln)YFjIkB)CL4IEEsO+!-yg+M9~OTguxY zT^7j}t+^NRyE;^NpBA&v^{Rny=I}e4{zAzHt)w8UX$f{MMLW`e*g)`m+S0~0^K-MnA_5@jq*b^uZEDX-5 zTp5o22~K}z7ij6ZqNr123u^=VOLFZ}FZv1_3LSf(Tj3^4&LbqNY*cp*I z6+o18O$olCJ0c0bu2$lJlK4rS&XL^fwrat8=6K4RdI$I{p!&rcMx5y)q2i2sDX^>@ zkA6_E(tSH;M<0bJ>O7g>9xIY=ak1aw5))X9R+^xkp!A3QsUWf{z^G1(?p1v4Y?lRv zH@D}=N_HCJCbO}dsQ-P{Bn|o)AYF)lpQl;_M!(69b`jLCrNN!81k1bQ#l1Q{XW9u* zJ9UI1_e~>?&11Bs94GbZB+hsfKmS!L?M+{tyV>`|R|Ck!D8Z2|lhZJg0)%5XOS6Zy zJkW=!TM1qle9~Q$d>!jI*5tN(!XCzsOZQSKgeLl_KE!M<22Mjto*SVG$g9J9kMwV- zU~vdSbdbNwCb8$bnWh=&ksNV7MCrpJY^uNnV}>Xoh_{L@0g5z$TpeXf@C8!v^L0X8 zhu)%Lw0P^yq&+LAG!UQF{hq=jUNFw2IoZVvDJTxe-PCFc7=(JfVA(G)#65%wxH}Az zo&|-~5=1$uzN#QymPt~Va3=e?f!BsV@b|ir7!R5Pf(bpUdlq*`sAi7>Jafl>m#FAG zL^{J09R>NoxP>vq@PM7|t-1)rZg%SDRuR*?%z;Pbr@k>1g~8x^_CUjy&@+T zEbcS+_9|jLT};d9x=ex@nPx=ClSVQsDr?AG$L7S=Basby+gY#%paruruu=IS^~*n# zn&A(riT_S&MfSf)4Id2v@Rxiq5oG_yx>NMjYRa-~V_Y1d26Y%Q1FroYecY7>%|3q| zxVczO%Djgx19|;=x_>X4CEYfzpw-z0x^ZkNWU#^WScSH{7E`=CsAzx^uu&1$Us%M9 zm?b?LMs6wr)_c;157A|>^A7Y$TJl^;o=~U@*BR4PL zV5Y|x5&}S2^#5sbKyB+sEc|cj?$p%z?@Ao&|CD&ad$H;NIJgMDv3&G23V3w~plWz% zcuYf%49lt@DWNH8IM{|Lzn_s)LYRhC!jMyYzpUn=f#Jp`=jJi*`i(2EKR^W%c>z&! zHkd*~lAKW=4rJ~sU_NO#nkqH)=yP!lw@d}|sM9Da*XZ*p2~ULWSK@%Vi!(&mJg;Dm zwHPjvjA^8{WNdJ&W>iiH&v4<}O4FEBXSS1vF7Khc)r*z0w&2{AOP!#mUz9m&7(5Pz z%8d2G7JWwartlVuKOT zpir=nWb4fS{>|W+nBKVc?z#=ZB;I=Uj>}SG~q#yK>ig%s&Ib-W#AY zvU+A13fCEyqhuQbx$z!p$^u78$?}dHHX=hi^@pf$Ls5o>s`~GI zU&KT>X6JS&50;P}D+%ROEEoI;Yxpq9C%uFgSAfTpJa~2!R(F^xa1Dj=B6`|bPVX5> zOwxr`ge2@fD^RaF!6acuqL~ILAL{5KrV_BSX7QwC7+fHqL39ERmOoNHM~t;RW323F zoi&H#3Ryzvj(qq2JwS{M$4#3W5+DJK8w~{6Z&`*IVp2Sr9*93U+Kg-D(1^VcY)mu- zwNu(@-^&QHJpfFdX-^Q$>a#3^DXXx+rFov$Y(*-mqXVtj!)du?9}ucoj2lw6wK9r5 z^d&q8>aiTSBA6fT2dQCS{xSE1@eiqq{!VJO%)dyDX$Al+6HSy7Ou*i1Atplw6pUGr zpS!kZl8v*>!yr^zjtea?v8)tdQ1G1=T05MHB@H5~u`dcq6J+$?QhG)aNd$JfBVC+B zBQy!}y*Kx8Eb)5UiV0p(Edy=VixvVzq&FX#b;Cj0y$aGf7U+Us`NDv9dm|ya`K>e9 zIyzgMplSd!G@4?t)h#AHnXO>9h3ZA=nldX26rI_tgvilYV*2B`(L3To2ar1-aOI~v zZi&3QCv?8B2WgIbhQh3k7?*_12y*p6P|=I5baw&7-wFcOVv(>83d7(~Ab}=UeI@gz zrm`OQ%=`&5%7{?w8j|UXrk(@My8{tLSXgr(t&2Kmh9vl|vQMfIloBQQ>i8VPFmAv! zgPC@e*03sn>D#m4b~%HGvpP1^@cJyE42fe?3OuOs=M`+|%P(zvq0bp6)rCSAXZCCF zw9wdA!N9@thY&a;_9G7FdJoQc%Baa=svDsXq#Xv|d5vx{_tfA&Tn!M|Qa6~q*T8p? zCxPbULp(wwRjdpmYgcqb{=8Bz_2Vr&rQWNSWC~zJR)qF+9)Jyg^pRVV3QkZ((^fcl ziq0QxjmE7HPr|ALs&?FB*!`A{m?vIQ_f&m*SSY{S(nxX-Wf?|$7gcZg&2~8mc$?Ta zqx9}c>bB?USuMC&s5a_ZO$iP{-z}^328)^sI!S<3eQh*o_<|KR<#YKEd$2T<3N*1e zP_VLA2+8PhLV9X$HSFTQHjeJ-{CpvK+u z)4gpKuE`<;j^A_q_tcsGs@xUX=lxF!-6t>1I7JlDkogf{A}K-IH)3Fl?tbEqf(RrV zd{?En85qK@5Rdeh7~fQ)kC?FQR{DNV=Ct*Vf3@Ivq*~bdnx02M6nD>b^gEsb`q_%@ zdu|=lCc+e3=1qcU4+UC6hyTWLD)_fX#K}1J-tJL(zs+8zynHP!_7-$?V{ znI?HV4PDisSpuDMZymwE-Rvl60-$ml5ygkiUhLl>_>dg$BQPI=#>pB{Wsi{jN~}ad zmvED&GLVLW1qAnHk<-FA$%&M4w}w10G-jOF^Vxf3-aB3#WQ`_gYv>vUFuV|4Zt*Z7 z(8c?!e(B?}=95OSM7AqGp0?zyi)0^5hZ8f2qf>xFAY^W}ZT8ul?gziVw+oYseTt;M zykzv9J~!E|foLJh)Pav*T4y(?qx4{H`rTKI#g%eJKuUW~w7p%Av4-H9__Esq7dA(Z zd2r+a`K9SH1?(KAl0DGGmcDB#_86mmn%2an(1bk|zdfI~Jt2ae)PBc=dLIK3$vW^Z zLGC^20=^%>jPn_2eQe*!!shR$en(*(W)_(nq)V!Wy>`!qMmy1&RcJzztVVJP3Ggm*L~r)V=(<%PMRYs7C_P1SN!B zb1#^;=7iBz?0&Gf)x)7*bJ^WraYo>X^c3Oy#H~rH5;qX1hb%%3u;g zb87p}LJ06Fwngz(<>w;LrMNwa#S4k;C|ARIZ0KK^dg;tx8f$sfoG1zNxu6VC@ZL(;pac^9uq{*N!C@5u=IL+Mbo1 z-l~)MAQHkbF%GMwww@I`KCYU${PwnrGi;Wy91tRW->C{GEA=Lts1#J~zDmO*IysZX zw1^a0a7@fUD1IKCy_xvaH7RRoT>?(gnI zN=nW)T`p;*T>CT&SHxAL#FSh-hmvTj*V^w9_cCp$4A4@R39fm8J4Vvn+sFtN;jsA9 z8bjbY3!}>$Sp6ol+&Pul=D<@-mC|N{fHj~1ns*8RZrTO_1W>()?WqfaC2;~^2wfvt zx98&KlBOfFr^)3^YU)k~v3abpDdgq8w3N+y zGNDqqZHso0DdNe@dRO4_z?(vpk4N%_lQv+4Yg5Z*ji*jTpMXX;uqV4Q_@nPILGCkguJf1282|5%6RSprN1x+?_W@17j9u#FHWM`SL)Ml%x z`mDwF6>Z#RJyXpk<0r2=WH(SCq$mUuq7otZy-vb!#G>1L&%D~*13NK+Un)AlZ2G&z zjg)6(ND3p~(o3`XmZ2@~S4Jry#&~|SWZy|Tuz^z!!l3hVW_j)(jky8IGV%}(Y@}|b z!=i~KfhqW@;yyZo6?J1l4pUFwgZSoDnwr-m#lkg)_ z?w0g$A7bwa=e#w5I1+X9$Y+P?=W8s5ZFqz~eD4{y?i(@6g0StVS3+1%y9(g*{mSF; zD9p~Eh68x8tK`mNs;~pglfw(NlW-v+bG$ClkR&Wi?n3IRpM_p$ja!~Mz6 zF8%lXY(ry3L=GWH!jF&P$4Ia9jro|b_3a<$ga0$%*Z({pXD0a2|I7ver0mPJe9Tt> z1O*U$Kl!o!hYr&Sf95Os&+`e^zSe&H*vFVBIh6mH4;Tjukoj&p^|1jUT{(do|7TW6 zfEWNQMxXi5or&P@cP2yQzwS)mzX1S+Rr)%vriE*lMV*~3zep#uq;JqsnhUYp*OAgX zTx=3K@7XmzhrDoz_pB-vZe*(etSnuEXO?p@?g` z?{Mm9>z8N$y*4hyn8eDpB9zt-EHpoFBH9-W&OM4qTM#!2&}6{E>Oct9iZkYYdD@WZ zI1R3CYu!Y$wdehk zjZz5uu>q-H+ug~>LPL}jeX(|6^i;ysNR$u;KpLng)Rvb9m_3yK<27pcK}EyTR`J{4gLu%{oXX*88{1b^2#4XeHGV7zS`Mxg) zv!BN&9phZ;H-bvrI0uTCU-usB`SwOn(bGR!Opf2aP#7dU$%1U!qbczqu8Ou5TovUKvsGQ?(1JT9F^oGg zyqY@6Is=YYZ`pb%O4qXMu@K@i{b}kZbHD|ce$Q%&S<*9=zUed&sL`oC>D`(ZP;=s< z@99}=LQt#0BeY$)qY_Okp|M|rKN7M^F$@TCz_|gJ{z@cTB-u6 zAY&@WhrdNHAmF!_p$ttu%>2#_7rCF-h z>g_p0E*dv#P(_ZlLTQf-%7e#6q zq2ofqy$ZJk2`Yk~!AgBx1fS{Y)YrEJeYAI}9CZ4^CY^}NA0DU-ISeZ}0Za-Kw56e_ zwLM*>?{5e-w+CuRQfetoIz&e=}R2>h7H~iCY%6>^vX}N zG2UACHS-lHv$P1xrP0nm$X_xxv)q_BO)q+aYPc!z6sW58eX5}&Zc;ho9*$tkuxjoF z$WMe`UI>KJ*vd8Jz>1n!F`c6ctMU?s6aYFx_!!8&q;im8B@0Uk+UBrA&`x^lbP>!7FnZ*kP$SMm67v*)&IaaTnQ8AaMGXg{juYuomZJka<9{D4W zb5B1=4fD^WX8A*E{J)dhZ168q8@#&(gd;OZ;$m7!=1c9XfOvi%TFMSM1{EgbmKdQz zQBTt%Z=(GT8eX3O5_4pj$j|#7`L55Ix8S8Gf-_bV>#nd$9*T!BGo11YGI8dD06ALu zlH!mc+54h4Tl|J|1tQ_MQ7HlE9ZL5o&y=aZV1@P7oB77b8;&WBmcTyGgTE!o4ML` z*kr77ZVt{a1q%S^HvDUeV)*{}02^5F|Gz}R#&(?kmvh*ERwyulOMk$<0O0iiJmB)J z5G^)lDqG`J))HcB;*i51#?q?1Z{(KVwk;om(UDT}TeS!C@L zBTgFEViP^hf_@T4-C|%6Yz<5m(68uW5<~mSu?|JR%ritigGDT} z1G>-x{>K4T2$J^6uCqnaS?yxk;mUk;eszpLyA+}z%$oKFY9#x#?hvzk2;J2BC+z7i zN#%I_8qfKm6J1DKm|)g6S$7`WUK-@vS}*7Z$YM>ERuNH+4T#G=JYPL`7G9{=z91C5 zASM7ToMQ;Y1Rqtm2q>lF_O|Rk8H_6`YFH3y?xLEOgr+hsydS|0Tu_L)6P#pa4Vd8} zc;qMj*F;v>B1NnZQe*!!sagM!8t?Cn~dm@9@jwEw+>N319MCnIl!$A47J2i?;AXU9e)oz~kumGJ97}A6@#?W&q!z0WqqxY1B zKg&WTdDTMaG>ej-##ZI$KFi)y)pR#TQFJFcH~0;rV8|sO>%QiENwk_;B^sa-Cba-fc!Qod zU^^)^F%+TCOH|_>LaVrhIvHw>-=|w)>oQf;M4UbDcZM~_6gA?c|>(v_JTA@$YwO%iT-0J z4E(HASTVLJa!C6O9nKpxOG(?U0ynFq!%)0nG(k0Wp^$Hky4&uyrXZ}Y?L48p-l+4M z21;cTvk`UCcFU_a5CC-@_T~)ZLY=<))nioE)`wv$KP~a*?WIaf!%oJVwQi^-a$lSa z^%-2MVl`#1RAip4! z(hN)*L}|^)KyZ#T6S_&TQMPuqul|-GI2K@q0uz8D9vT^aGxCU=3O>PxgMZ@CNgQ$| z`1~ZJa!Fg*Rneitq+j^?7mC^&rfU<4=XW0+gk5|`rb;G%4r(6XDv_)ER&XFkyW_Ki znhowo-_kr>=>h-4PdR9d4~YvB@JBII05qoc#p4#fP+^YUp@vchoHSBJzZ7}( zhe(%3LUA~X2U1SAY;`zB;e*G;!^_+&P+!&&@EJHZ$viAB#vDQCOuR(q%J_MUTzJIp z_jyK4^@C{suV1%I(3at1Sguedj13lDhxaMuA{n-ms~|Ifwg=})cvk>(CebM3^4{Sl zZdn-JlRqdi6uh#y8weH|xLwqZ?U5NOew&n|Z0+ZM3$A{eE52JGxPst9HoZh!Rbgap zjrQS5UCPrhg(x63MtEXGTPpkZer@N;g{t-G?~i~!31pVdqAC$_`227x6brrk!nvX$ItiEn-aky#7CW|O zy3X2>=%(q()H6Tgg2eLAC~pc^_h0CF!?9tx@%LP^XBgoZyVGJi`B9gWlfGoR4QF`& zsFx&*005!Q4w!-5z(P0AFy985;ZXfqBbcopUX&Oi>7DctVShiTKlotil9~?n%u4t9 zo(MS8*{iVb+D2sC!WS)JN_V64zNFE`1K}xmnKG*h@BG($3zXMiW2z?@kDG53W6!+& z^n9mT{r4&p_gNqU)Y%0`VzROX+KXIVpYh$h->@Op4HjtlTV1*OCzAF}tVEx+AaWc2 z`tmnUkf>3*Xl5B$ea08lPgva2omAxiG#8wJ!bxCe_!a{KuZbXXVCeoc0Te$EML|Z6 zH`4rYmt_%p(W^j~V@8WUkr}28C`hX9fo8}50B|G6D4#6+?6<|;;i};tZa9W}<67hy ze3qHfP@~+nu^(thuJHnXK{3Hj^_U9;K$Fuxw86jcA~BweXh;Bm{#8fdlzN*5^1BbF}hpbZvlG~=U%M&^5B4tyU_pE%# z4>9pEH17cl)PGL~`gq{*Q5n1Xe|h=DNNvOK);mCkj|c&;5CLziK#I?A3^v_ta~mj73V;tzJD2j z+N>}P^dxE~W>a(RMGGg=h)|1#f?e%_%qU{@DG*4}!R_Qc;;WMN3XK9z7Fp$3T!Sj}6#?+Oy#IuZ2X6GHx)Q#fBZruI~cJ6|Op0|cUapkYTc)kl|gj&}( zgHC$?*tvH4(tkgk+=zfyoEh52Y2i!64b1Hb*Gll+hTa3iCYVV5$hf+6Qda_BXK`$3 z8^SRL@1^QlOV=lyQve=9%A^ns7M>V9Z`%L&BFk}2@x5MyOWic&ResSdQA2sc?K6e@ zHN~R}{e}x7aT<@b4Y)>zR313w?jk1QuJpTtI{^%{G!Xw~+4&t2o>VYe_P$B~@kw#oF$)AVmB@7;%2; zs0qj)F_xU;Y4s>+n!SkOWJ0VFT1sVME2pAz4Wc4Jho-Uei?-N0c(K~`*y}94uo~mC znA0ZwN)6+Xk>V&5q;s%YX5Z%L0$>1P(87eEB8<>z7}csnCN0dgFueH5204&=m!iYU z+-O&_`3x~$`#CttZsQHr879oxlV7-=y!P=J8C{rrKq1jUg~0*|p#!IuC#vvjKvKu$ zZc9z|>4djB*A2yW$Je~ zb42ke1Lp#H{faL8NI#nb&lJVFFxqP}&BBTi2U9`CQtNDCQXH)+Xo8B%`Vt~qg$m>K zF_R5h#aO0-X~iU2$MrZmmInpArKn#zW?3Rt6(A%~4LjC@yK8;6`Yei=F`b!59@;0W z9z)XgjR9qk9jPB3!cdMRqAT*4H3HIFh*RbVwPPD4us|d%#az-bu)HX;XJv>;fITl0 z0AW00nVeVf2bEB|5#c9ub|_OyO)>zuupxOwzX(uLUb*Ys7`?n1AtM|^5?~;1((udi zVY(hoOg99{L1fU)NEl6e2;}J2EGsN1^`<5T?1ShUA!_e_gXS8 zFVI9~L0lr-Fi2-LSH5!GIv}8>-r>}RkX)$#jUY`*rSu-cJe}C+-nhqM2<9kUT3qrk z#^fugeG1vmsUH0?RA7DjmY<uVZG8$N@5Jnqk2cf(M_gHo;~xe zM)5lZ4L6y#gq(;^S>xg6xda})-s62Q&8iS@9LSkr)p6i*GniOfAaaaK9J2SoSHpR3 z7vR=lp@fI1hWo$l6pi!|6%%x)5H}}Ej8*QxlfasuLhWT78On2(Dyq|P$+lmuj4(k6 zszzyEC4>W_9D@)MjzTWGWn`UYU1zmD;uY|+b~w6(uaA6n{Ou!t5PJ30ltKWf4x7?n z6kjoW3Ru2i=|auKn+<26>qJABGuc_*AmBFYZNGTlZQ^C_@I&bY0uFBK_Cee9vo53BmWa>z*9KF^g?)XH!phJ4J6u- zKQ-!CiC{`DPTW3*m!?l)lHa$)-@-*7?$U#MuRVrtANE2a-m(Bc?llyyJ$4pV6jbkhI5GVO zrN8OWWCE}q90O_|Hm=`Aj)c?Ai^oQiMN=M8HsfI-nw6KT)5U}2;mmZ(jbk+RIw`nq zBxXcBU=ih+Mk|36c7YQeWgg{=1O}p9HfIgMyQ5GE(CtU+#vOnIuVtxs z3N#-t{B5KHgw2KnK34$W=&75Kp&S(qWGk-nGZuy`2)UEVwe>xr4-@Tx3nAe)3A0kv zrSSd>xMar<<+;ma&24y+mUtvZHDXof?6g9SDF$nF)~Gp{6bUd)Rp5*LBp9H;@A#Rd zRp8O%Eg@o`bT9kgW=G}8q|k=p-W=>rsS2O3WuA)L?!D3$QSh?qodC6Bh5{M20~iez zgy$FVQT7&ILc^T_6cy3tdXK)3vQS@(;_ba8p$VO6RTj53R6eB*)%kuc%w6Q_C-vT@ z&jV>OB=Ge{AR=Ul#{k$_c2?XlFd>R-;rIvWJ z2grk{Bf(N07U-y4fVf+0dFbKuCs{2W|HCFxmqb=?pz`?yO;Ib^ zk6Xuh%qP*r@_XJwXCp-_JVIwe6N`sQk8Ye1_oW6H(F`%=W4hJQM1T%hI7D7!m=b;B z8NZV@d@lblJ>AlPc?=DCDE1?;%GQh)DjKqyrhpGptN$~pIsT9u`|qUoQU8n77^DC| zf7PTr+}Jm48>Z_e@^5(|x2B5)vwihYsS~P;Jk`BktDYvdEZ8SoI-$oi7c(jFc+F7 zIhvr9E9kyZ&0@6}f1+J9{hT@5&Ek&trfV0ECv4v3cizL#RsDm_LMMmwEKY$9mJtY6 zy=~Jv2BRgDT<^=@iQc)tC+=gV6GEiZxu#*ym0t3rPUtKJYqh9=Q>)FpXMnM5#)gx6 z-Uc{G_I{N9sKhdGm9`POBjhPEjdm<0+iynv(IP~;iVaPyK!R*BXWU;3}PeB zGRkSHQbQZ0k`R!dNKy(SFEWu37a-K$R+<5V{LS_!2t8jPGN(CHSC-F*aGrlsqVMNc znZU_gSojI+{u?isFVvL422bk{?UYM#kPwjB%HLQ>j$z=niunCrw)%3a4F2T@@h;U{;K&QkDFH7l8`D%uNm*5K&44rv6rJ%(t&PjOOKaNddeLt6;=Y`0~J9M&Ty9z{wsQ)lZl<}y{i;6Co3xl+rR65!_R{M=Ys>< z&G@1Bt)+iZo0@ZcFH`$U&b`@BS^x|J7=HRA_TOIu`hXOq|6Ymv-c_o+96KKfXDRPP z`G1Ue^ZRn@Hch~kKS;op!@J!kG@yV4Fw*`pcp4f$b}T3?@9&6+%9we08vZ)@apB|g z`!~pO6M3RI7{=6=7#Op@Wz&>rnRF@&+Ovqyu?!W|e4L>Y z7RqRlOebo(sAUk8++m4AJT%=68FkCR)I`Q+AfU3(FobBc&HyXiDZ~hMFs!bpjXCac zbcvE*8fPA@xbXg-+fEXEi8%!T&w?oiE{X(J$QWP)dM0y$8;KhM1<(H#DV(`;GY#Yr zcn~QiK8_Q~%~I2HM2f8gSQcy`9sDw4r7#)1JO50Q$3N2Fah4EB@fLlMAP2gMU>>+r zqz{TNHcWYNS0{m;5I`OUcat28^F>FIquajLc1nufLDE)}!2&$5w_mnRJ!2^iUDHB ziul==3(ROp)MbW{hl+RALeSgzYPh3^>Yluy)`cVM#l!%avr|+cAO7r^Rm77xZYt)L za?C1xPW9qTxjV`j>`A*k2z^7yp(*f_>JA%JNokJ&icbGLx!w%3kgIT+0106Rf4?~x z(5V+O&$~Ub;=I*awhGmaGw3W%iE$JK(iY!m(#0Os>lyO792ELG6mBJzRsUXD4RHBV zIVh?OEQNhdkTvlElQg5x+rbpx`z%zJQQ>ybo7}OyC7Uy*`>}j%)4Md6#1bRD!>W=6 zD~YDUO~_wa#hI5)N3)tU_)VAy7zh1v$VqH@uIA1~n8TIU^Fh)S&!X5{@s~aChSYP(VWD~_RVt0VS-tmc89SdE%#4X1eYYh zHQ$dX!p{TagEM!q&9XWZXWVX881vP+-nJb>H*Pok#<^&J%xGzsGSWTLbpf~V`Fp==3^7cX8> z%jW}`pvXAG?q;K4wq+|p(IPk8+NHD+*yUTKGWG(~rs9aP6c_3eFAnI3F~VOBi1kA7 zWh9WOg28Cjc?mIscA%_~c8onI!A9ph^h~X*Abf@mz(oEd|(PX15MTLOvQB7>Z+#Kh6Z2^SzYlD?5An-`r zwvDN#0sN7WIODEuDIiZ59$2j+ym_X^Af-n)lt@40O5=kXjKAj6yGffs=2mB39ilZ= zt+BtAG7Z!5C5acJF4B&Lc-K45$2!l1jnMI4)2a#2#uqpD)MI{T!J3ARu20s&ftY6{7kuNLLP_}E!0PY zbKp|EAI3xh9i@$eH(R*zN>Oq;6Ir%F4PAo2+Q8Se6({BZ{RVrztk@FkT5k^2 z%bhBv$`Yel(N>q3%Eb4wu_ob9g?R#m*xc>%+PK#Dl@D$`r=3KoO|5yIRsHsiT(;^V zV!^~N=Rh-6&;nBW)Or#F$!bF5nll6%oq_+HLQgi(w zHRj(*9ftoGslUF5`f5=3Xdpd$W5}1oFTMCjYpyDD@51@nYwpzJ52K&&7rn3Ve5Goh zix~uRhc4K@-?%f}O#8)#pDuszM)0cCzl+UXZ|@k^@JnMj9N<+_ufOeksjIn${duY6 z2b)8ABJ~pbX*bx2J>R!E{?mH+?@s-|iAvrXge?~Tc8vQ=g`<40Cy8UIUhX5lc8}Lu zjmMe3+hP89AEa9ugHLq`=%*+J2hZQWUc$%s+H~ArKP4=BFXgE6fWmdK`T-z+DZ`B#WEaB98+WcH; z{$1twpLYg{;-&aIF4+>do6!`QxCslX9z-q?=0jR~Z+$Mcb^XSey1~*IhNXlVk{xY) zo6wGJ0-KXD`d~bH&fTa#Ao0G790|Xrki+jk7;-wlo87*E!4f;!0EdaIw7mx5p!CB> zl91{7Z((mjhlvqlV^0lf85*qy;dzY;h$ca5qCjO@-%E=5?9#iwmt>ht~LQMLN7*BpaQg%S19&zOP=|JKtfrm6wxYXasFF`itq1o!y}Y zwLqB6Arv)bP>dRg2K8Q44gWICIdVeCY#$8N4=fzjQYKUsNrDa|^EWl9i)5feB&aWi z(o_S`nX-}9HTdQ&nr@%Nc1R$s)D~?`02W$Yg2-6Kd$O7^fMN@$QhZ2IUuSBpGorI2 z%5PVLG9N%}_FSiuI@C_}DzLo)9GfcQsIHMmW7kus2v?o?->LuQV&>xbFyrBRZ=K5g z?@NG$z{ZCE4f#WMO9X-h2m^}8*4_z?t?{WV>r zDrn-0xJ_2;IEu-Qx$V>~*O!D@TxU5I;$|pSKTD%4Ei8wuVJWLT+rt(e+?_LIG-YXp z8_QE71~pVi9=gk!1B%Wq4S1FWVaRCY)aNuDBm@jc5#ipD$n!y__X0l#256y%^MF%c zz;>Z>7KE@idNpDRQz*-NHnwVg~U^vMOEo!Xd+9qroZMBiRH|-9ylH zQ$ZFL4TlgH-k>QL5JD3rQzRghNt3r#7bZK4Lvp_{32~P&#l-Az!-ueV=pKyw;qJ%& z01zn#B7z_%0EiF+cz{n2R710HA)TQF9drvi8$$&kTfV_Wfy4?lVovQQkZGW-b$3E- z6E>M(>^ol&h?vVPB~_{S_cBWX@bp_x)mZl!22`dCc*?XfDO4q?my_$rU2#2Ne7F!Z zV&|O3?GN7kpk05aA3(% z?4Wo_p$}8t;T6;3Lsyv)1evD^f6YETR~-5(-=aYNpzz~iy^Qxu!6Ty3S?IJUG(ADE zKMhhllvYRA5DcuZOt?bOfn3AJ;8`JEc?@=`1Lc`kYM{J0*!10~C>_IUP10_((@J2w}gFY1UG z>Ku6w8Cn9PgCZ3BOw)eIIaxrmH8CsE7T2wn8tsCDIv}nm#*4au$ID?D{-sd)$vBCNa<`N}-T^@jh&#)% z+X58fYYbDghLRQQe3i1LMCF-z2`>h!=4c%1GDx=ej44g_(iX0!JSyIOin?IZMOD@Lv+h!MGWgspi_hwhcaGu0ndY(Fql2}8nxkwna-eXTWuH3cAAFqSE|Uy z>d%yc^t`gU?1>U1r&)qQ;?>PqBe)J^3pk9w8RkX5bFeJphanDMH_b;;R_BJ-{dlfD zPzrM$`&z6R1MF~mxCc-EltiwI^s^BWY2U&ac?+YPZH*!H_u$BDe#GYK;_%sY5ma+m zI{o-K44L=7KI*hvWZ|pyG_QluD<7dZu{I?%=9j4B5zm{Ef|*{U^*Zo zd#z{R&*JQe1F*dlwq3S&S;#zlUN|nj4j@ZIpzyZI(Mc5%rq?wq5AZ;1;LV6y{1fr)tKc zzD(1yvC1+QQ5{6CtnInib^EE|`IaV8gJDjW3TFSzWd6beXF^5Hti4Ek6P}XUXgjwMmy1Nx01LcBqOZfsfT#PB_YgFGg+4XL$<6w43lse(Ge! zt^<{)JbJC1BjCQr(ZWsl6Ws@ci(6g-At0eNabL^h9C#H1rk5nFH1I%4Slh}|Q&M5L z^u~TVAP}YkdMF{4Dz0H|VP+5q-jv%$jNf?m&`mRQIauIKsez}d6U3>$pS3?YY3LDv za8jGHe>-W?Kj_eluMzgnZacelEK^^c@s9q^1OMWc{+S0?n9lzX4FJemoBib+dJp^S z{1|@mFn{JD>PLir^DeC%N1e@2LF%tgAL(C_iTR(ADgDFm$Yg;70Ol!1ip9^_O4s+v z_p0=hJ>h3Lnp&YJ40akR?5NMvkzaZAz%lx6N4l`&_6=KCqtDtY_eaVp;-99?iEcT& z^x58mNVHpcZBI-@+s&{WeCB!gU9Y zaS}9dzCt0x6*|ih+|y@w$bjA##5~)g3hEHmR-QXj4fI)CJ@_<4j`zDPGpN{Cn+-hbrpK53si2PYpApG((8Ou;YU z*i<+rfzIcti*3Zn`lKj_jv3RGLmNy>?v=zuWjG)7daTs+iNzVWn6n-922tF~MK(MW z38C(|_tN_LVU17pkSVQjY|=7Ay%>5a#;<$2q+JochQh{ciDYk?GO#2LH1-ClS+Mdo z3fJW{E|?McRv~ST%!30RsM}&J0De~H>fSKBx+Ob_Z?$+{yNl-OT86@C2DwY#kjolb zyVec$T0ABl$iYYt1*rzJaFakPobBr!<8kDUSV3h?XRk|wF)3r!z0pYD0rS%%yMcUg zY`ioXZZTHx_Vq0^IAkHxqv!S@r~Q1G{^yYx_>5Nt?#}g9pOT5^V;}pVzFJo{X-dr$ zJp^B2fsABOcZ5324tq0a8BeJ{xd=OV#4AuG((LYh1NwGW=ioLWKgh)?}8K8@uF9@ zS+BZHGNp|RC`j8A?i(OCRMHG-;#1O_$D7XM9`#u5rHE##zv}NIizw>5L>}OF``z?@ zOXxqlq<0$a&Rk0#OPotvdLxUn0SMUj4kcc{d&e2W?)Hw}*e5sn0s&KTU+yfwvE>}) z4T~!z+S&#VRDOKQIH6stIK|=^f2Z>U8c)~6pWP2`uMeLm8bCs(oAp8uWfLFb4QYfF zdE-YG4+uvQiN)#}^vk3OCEgK*&jR6a)fY|#&nC6zj9{BXZ#s6XtAYa5W)Y){2bBW& z^{$z(#>2|?H!0IQ;wdCm?+c1a-d}|3rJln}bgF!xO@Q3--)h#Evz+1K*Z^KOWYJ00 zV9V$$GrM)$kw%8b z_!zzBYx?2rZ+LuBoAev{oNVJOR0ez^sNKf;^VRD7n1KxeLC6;I(~cM~n79#A&_~sX0`$3W;(3+{&9VWz0YcCz?@b3Ue41O;w@hn(HNl zd>Nj5mKN2F$4hSvM2Zpe}ea7E%qkqsu(ir-<3p>9Skt^3dpIq;ma)Pc;KCB1)>LY2jYVp%6GFV-9MkvT z$?8jGj3ZRp^e1t!*VY{mxUHkCExzvYZwepbz4&9F3;F^SBV*oPYH^NS#Rvov#= zNXVD?X_Rg$8V>nbHQ4z$@@0)jL_F4V(DtqvGUVI8X4--Z#$Z%baQTh+Y-N?FrGu8j z>!m*Gd#G})q&b76xXWT?HM9dd+Ob}aKvpFLIlI2Av%V{p1T&tA$DZDvODJTKJ9!JG z!fF)_CMCn*)^Z!W$+QmgDs+0sB4KB*cE8-vtx`gPy-KqJ`W~+1=k8nO(R#JXxX-=`Okf?nGgr^l>hUK3 zi;5rBtZhy2RIO|yMwLd!En2mqMG@)ZFI4+_yp{&I@isYP`gWyhZ~{>svxO0G_Paux zd-|iXx*Ov1K$2wVACJQ8w0ghaf-Fa%Vv-Dx$8x6@>F~Vao*GcUZm(F;YjlgLd#*C~ zLYJ{5f?Y=Jm_T`OCv&K5&*Se?Jyd17DIYaVtd7faeYC>gaFQ-_x`)>1!7kk|OB$3U ziX;pBFu)f=5S0>X<>-9J0ZmSm$mb?35ol;_Jqw5{Y*LCJrIzz|WOB|bRn5&kX-Sm} zX-}1Y!JWAThWX&DfS)`49OLS?wggDMq645l&rgdaU8kO*+Z4UFk*bDQ=>Pfny;8z1 zt0o&6l#T_bRCfKtbKLa}#EK{NODnx#T1%}G&u`a>?lGb!XAkUF=On&cQkxJ4}eFUMx_?Aw^t&@7gW;UVIbn4 zd+UQNu18VESLmWdB1VzD&e~n=wioJrch^Zd17m2v1l7*<2aPsk)33RJ;4fn?&&ssk z2KgqS+{7iF?ZPv1%V`T9sWgbvS5kgq%_L+Em=)5%`M?FP5yl+Uj>>*L2qVg3uh>r; zCIjdzA1_szb^#t6pL}55Fln*j4dyp{L$>U>W8%nWZY|`IwRwX$P{#c71Oq@Yk1>@e zt@_im3CjjXOF#ZQ1RONz7K?SmteUip^V*G^`E+6Lj-ofpi+1p${!6Y1!A|cn=1%(} zuyJgHLiqC(WeciIrDIT|_VTgfH7qZA;}s%yObpKx7Ne=l z8W_;S8Oq!>3Vj*fS&|_1nNr_6Rchp^bN;OT%RMh^A^S_IZT_j$`L(~4nvK*_5(@x; z83!o67`^VWUsk(gJm!NJUf6ggA(jI@XZ3>DE4s?lM|rK&!F?Lq z=V|9!CjFOK{U{=W`M&c8up2OqCo%7eN0*A^?a{6#&L)05oEoK$XfAo}9l07QHCL?h z0!(k{)@ps-85tmLfqW{<(+FZ+m{Ci|`q8+ieU{k%672v8H;m}>218IPMqMaP(?A`i z>i+3+zjjvSwo$#MF$X1m)RWgtMG^Z>O4V;$W({wh=vhCf=Ur5(nE`frS(`y_T=ZQM zf2e#_wNWK=JTh)%Wh0P(XIPi19->)kQoqKZ;kW6{(`H(l141%GLl521_tj_Fj9&2+ z*v&IWTB_%^Hhui`s#ZN@zZbGTH5%It@(onG>&w3l9x<0spxTy0H-Cw_vZmsVHAAW{ z+yy7JHcOdD5vX!msxP||X4~EiwE4Uqtbzpy|L`Z~F{?=7BmH0=EoE_XESu9WzTMHj zQ1|wpHt#zm`TAr-<%XiK`*g9DS2aKEv&l5D?P4os-;{lK9-QDY_LgF;t0%OJIewZ` zPlwJ@b?eKbhA_!`Hiv%SN$g8Q#q0_)bRQ0kh<;U332? zOh%D1F~=W_s4#pwIaPQ^!N=}AJpmF?lf560%Vdc4 zmFZ+`#(T-roKmb{-mr=h9uL4dqL7Wf{Fg^$`GN20#$JQ^y)T{wcu&K8l)LX%rEba7 zo))a#3-f&P)Fwa~s*faV2AQSv}+v_SD(Xh;QnJWxK{nZ zD7wb+$JS7&Jh80q298>OO}6yl=FrU%vRXQ?G`oGpg%t8m#`=8wy~%3ri_Xf{b{;x4AnT`L>>7MVT&&HraX*y{h?os`1n9By=|tyK*>fc9Tl?vES-ivvuK zAUk!=Kd>_+`8;8?R8a0c@(gqYHMHwx`G|uuAd=|yNz~dX31~TPn|{~(&HbBQh;n`! zWf_5v1HG|!Kyla>jDY)l^1CsnS8u}%!B7etqPr&3F z7r>~nsOqz{7ywxLk&Sz^YCMavq#u=rJ`dwHwa$rsK)oSU22L_nJAI2#1bujOimlka z+~nqcQrj|+m>wVn%Ai-l;CYjJp|D3wjhon0YLh6hsB>Pt$(=T4} opLz1mFS3905;eglXS@mZzw#izctwBYF#!NSzyIbjZObM94~VR)!vFvP literal 0 HcmV?d00001 diff --git a/testing/btest/scripts/base/protocols/http/content-range-gap-skip.bro b/testing/btest/scripts/base/protocols/http/content-range-gap-skip.bro new file mode 100644 index 0000000000..b96b8f02a6 --- /dev/null +++ b/testing/btest/scripts/base/protocols/http/content-range-gap-skip.bro @@ -0,0 +1,26 @@ +# @TEST-EXEC: bro -r $TRACES/http/content-range-gap-skip.trace %INPUT + +# In this trace, we should be able to determine that a gap lies +# entirely within the body of an entity that specifies Content-Range, +# and so further deliveries after the gap can still be made. + +global got_gap = F; +global got_data_after_gap = F; + +event http_entity_data(c: connection, is_orig: bool, length: count, + data: string) + { + if ( got_gap ) + got_data_after_gap = T; + } + +event content_gap(c: connection, is_orig: bool, seq: count, length: count) + { + got_gap = T; + } + +event bro_done() + { + if ( ! got_data_after_gap ) + exit(1); + }