From 504ff55a0006ed587c427e4776e7ba2792d1ba42 Mon Sep 17 00:00:00 2001 From: "git@daemon.de" Date: Wed, 26 Feb 2014 15:27:53 +0100 Subject: [PATCH] added buffer_get_chunk_tobuf() which copies some chunk from one buffer to the other without a temporary variable --- include/pcp/buffer.h | 16 +- libpcp/buffer.c | 14 ++ x | 577 ------------------------------------------- 3 files changed, 27 insertions(+), 580 deletions(-) delete mode 100644 x diff --git a/include/pcp/buffer.h b/include/pcp/buffer.h index c3dbbf8..cc76aa2 100644 --- a/include/pcp/buffer.h +++ b/include/pcp/buffer.h @@ -293,15 +293,25 @@ int buffer_done(Buffer *b); be 0 in case of errors. See also: fatals_ifany(), buffer_done() and buffer_left(). \param[in] b The Buffer object to read from. - \param[out] buf The destination pointer where the data will be copied to. This pointer must be allocated by the caller properly and it must have at least a size of len. - \param[in] len The number of bytes to read from the Buffer. - + \return Returns the size of bytes read, 0 in case an error occurred. */ size_t buffer_get_chunk(Buffer *b, void *buf, size_t len); +/** Read some chunk of data from the Buffer and add to another Buffer. + + Works identical to buffer_get_chunk() but copies the requested + chunk directly into the Buffer \a dst, which will be resized + properly if needed. + + \param[in] b The Buffer object to read from. + \param[out] dst The Buffer object to write to. + \return Returns the size of bytes read, 0 in case an error occurred. + */ +size_t buffer_get_chunk_tobuf(Buffer *b, Buffer *dst, size_t len); + /** Read the whole Buffer content. This function returns the whole buffer contents as a pointer diff --git a/libpcp/buffer.c b/libpcp/buffer.c index bf8c11c..4b5510a 100644 --- a/libpcp/buffer.c +++ b/libpcp/buffer.c @@ -136,6 +136,20 @@ size_t buffer_get_chunk(Buffer *b, void *buf, size_t len) { return len; } +size_t buffer_get_chunk_tobuf(Buffer *b, Buffer *dst, size_t len) { + if(len > b->end - b->offset || len == 0) { + fatal("[buffer %s] attempt to read %ld bytes data from buffer with %ld bytes left at offset %ld\n", + b->name, len, b->end - b->offset, b->offset); + return 0; + } + + buffer_resize(dst, len); + memcpy(dst->buf+buffer_size(dst), b->buf + b->offset, len); + b->offset += len; + dst->end += len; + return len; +} + byte *buffer_get_remainder(Buffer *b) { void *buf = ucmalloc(b->end - b->offset); if(buffer_get_chunk(b, buf, b->end - b->offset) == 0) { diff --git a/x b/x deleted file mode 100644 index f8433c5..0000000 --- a/x +++ /dev/null @@ -1,577 +0,0 @@ -7Vpam^-b.NceNn0E.Ki&Z[#!^.Irh]@[..UP])&{yD*D$T2Rv2lL0+5!b{DsxDxRjb(C8s+ -gfizuI(BMGI2JmAn?PLB9e/*wI.Fyi&QPk4shbuv88QWhUj8UtSO4%u9Z%6s9i27k4C7D5Z -EC]XD)IER<&#E(.8gcd:B$ayFt}eis#RWSt+]D3(2Ved-{B]7W2g -)>qj4-(43P@jK9{q&D:YTO8YU?U5KgHI4Ps@P3V -%rbOXOo@GjKrg -stibUPgR7$W>VZvV(d7en8UHjPH[qhTD*+eeE^v4F*O}7a!8!l*+RD2TLTwlq5372SaVtwD -b!D%^[M&6aD-RyF63I-0%RmncJLWVV(L2.HCIgNJ7UlCe2i+YX2<.(TW>5e>WGTl=hk1.mA -Jr]?)@GX7u&/*z[+.!%9Pqc%bkYF!9pSj6tDM[@hab/d8i2X!>Wp$>o*iDgO%/6MKZIrrpV -LKI]3*}BUqFJJ^q[.DNliJg13mkf!tcuIrK%IRo@dk&jNz1K4IZ.b.}uNIyx%K[G=YE>(q. -NCiz21Xd!D&Q{G>3G5{?xOm8&cT:}qz1zAUrfQv4K&6wv4zVsmUfBP[$VMTZK+%siOz{cj*EXUvmSuKD1pa3uVxDZ2$$z -f.X1MK]L7Cu06JL2[bbzw1t#>R/p$+P]k0jGohyE&} -A$t@3DGAS7Pcv/mOIMh1cy?$(x^iLsJfHecSlrrO)*6&.o -C})sr=cjV/?[jGj>/N69q4h!uDsw?f^B3RE^c8Fj^n9daXDp1C8?$k@9BN^zsxop&U%h!*-5{h/www-ApvQkvaj@N.MVCr/}KMfj -r8J2}DP+Q@&UGAC70H$ed.FYlJb8U(]ubcD)%30Y4ZUlO}q(c^46zT}Y1b#GSu06fW9J8C1 -uqN.tAmRWT!Q9a+-VKMsP#JIFWELRv!@qmY[i0ZcnyETA{e%Xau5A2AZca[+hnfRswH>Y[U -Uuv1!8zaszH[2ePGIG^dwrQ@+62MQwCMogvId87[L7+&[I5L@SIPZr*E9%)2B!.2&}TY8YJ -ZHeyPu3(:8TY4Y-n-yZ$+GF(d2q1+}:)-L3hZoB5w.v^aXtOgWvgaCG/RnsKvuh$op=oPyVJU{Q815^apkmjIv[Ryt? -?nFHw}hSb(]Sdr&K)+^4kxQA!wV9d9E]0RaCdffM9Yv.m?cn1?IJY9hNGJVjLAsG-#BCiQ/W[+@2fQ#Md3 -AM65M#doxiwk/eM]Dk7Y-JtgJIMSoBF&%5cUtUHlQi?)H!py3+>x@3pI]HV*}%&-z/lSUPi -j)73:0*Acj4F:FT<8N=OszDn$6wI=}S6]EajJER(=?@E=O*EFf:xMc1VK9=dqC}b@w=o>=p -.2Lm^u2D&Nf5I.jPy8EiP(nK3HCir{(vWMJXYX{^JgfvvHaoAc{kAjH:Yd]TVyya9b]XGi-z3Z#QMhiq(]x(qHjJlyC[ -M}5=fx.pfy=QV[L2Ou.)FG7*sBC}oHk9T31Ze2?.o]z]bx#S:nHXx{jESD$8JlobixZWm8@ -4cY.nOCL0hqctq^$VN<[N=r5nv2Gi)YQuHAY&M{=wG2d>1{Gti8lIN:TeCo0BT.22:!BmG. -$^yB%CtLc(J$L0u>QH3xj{kcH6}*4Eicf[LKzxq0a(0q5{IP]@6CFke>%ZW2&o7q.8Yyg^T -BML3Y[y$+@O{}bbt3XvqhTce+jTBMAx^:mkw30:6SCuMr7&Cwbboofu!jlt36i*=-2qu@$@ -&l)+g{r9=IFbk@ml*i@WIXtBk@NIs9+{cn6&koM)Ir?2aXiF1:@rr0$H{s3-MVHwZ!quh7a -)+VGD+X#mk@r?I:7+Xo8$8kE3{Kt}RG8]Ca@}I=GAw:03fE@13FTP#BzIfc3}Fe>j3wi<8X -na+z6f*l2>AU?x]h3m@?p90WBS9cW4]+SBh^1CSmQ/9O^B}jZCi=n%1 -QeK3p7Dv4&UcURBjv@c:0X9A44wA0W2^?yFHjHswf/A]kp:==pM.w+PwQmGM%uKC4g08@xGdEQf?8Ual]y0pDJBmfx(c(:g6*ZEAlu#iKq.4ojE -[]5Ud6VUO.(.9EcBW]2@?Oz9WK/6ytRK&6j6o@1n[+Q+0Un)@HqV-KjA)KPu/B(Hh8.Nq8i -Lox+}^N.a@}6kMzxZ9uJklW1?=qVT8C:q5o5JObo0T+9-@}+D2cRfbqZ89}%}Dqitk{Wtn# -WY.6NBlAbaqh)BSE0bHm^=F/:tqnk8H@ -G9a+B&G0azhpH?M2yF666{3Nlp -HqieaHCT6&n-d.7(Y7D0XH+jh8ZVl8s-OJauHzI):Mywf[U9:M9AbJO>V5A0sE6jlIFHG%] -=j4@ir=dL6jv.im2q6Zp)b-AgencJazA+DcQNC8j]8sZM%Bw*=gRX1Ir=l&uqLL=B^+Rv$7 -dFDkY?6aI${]]-Zps4zYta6d>fTiKM^YP[[4AXB>I -(0L?cTJ{Dh/HEibXB^Ft&uEv&+4@b*Tp<{z2{Ztl.5z*JEtY:Nz3K6e -L)-o?^>)%N3mIlT0Q38v{mD^Vqwx2D(OgbK28z]/e3B4jaN>spKc)3Y9.hDv4?M.cfh*Fwl -]^]bJV4(>4rS[a&6CBf}Y2{9i/04mb?f=C-pl>KVh0 -[u!DRle50WSx%Io!1=%qfhA0hjvXr>fXV:75!}N%4K2RO -*5enSQPF5-SLD?F0qMv#m=ePq@)@u=d(-AUGv+B@u4PY=6*:/ZlmZp%?K&AYY0Fd -@Jy.()NL%Pez5aEJ$xOr{#wh>nETDTuZMN#e*tXOI}W#46Bb[}B(H]MuY?/0P^dKDymRT.o -VwP>pzO/jnOPuS=!-BFK-[CMP1uOjGf-/k}]Ttr7F-XSdmdH1?a18B688g{L*KXzT!WWt}w -@d! -mlg(21YOImw8Z2iamk.=boz9!&{Sj^rm7WHtM:Er:{]3p6%68jlHMH -hS68&{](p2WlX9N1b*zcBCq^yz#qeSK/5U4x)}ZpR@wW>)Vo$^uYE)Ru.Bs)JZQB^beS]^[ -BPuIi.HJXpHoCO%pic$rhF}k/8s+a+(2H8An[mqf7p50N$wx%yJ8Z*u!BpNmdNt6y)gOh7T -Hu?x}>e#jP?EWD[[PqFk<&XwZjEEuJ0ok]^pRELxMolUE$#QZMZ#H(6^po]MouU+m{WKgLTnUFZ7V(LoHyPceU0j(eQxqcO@a5-MD -P@GF3{s?N8s71!U[c!D%->gr-1D)Nu1]J)-ngLk9Yq>%k.7&r%G^nsmr/Q]RVT/K2u<4Ic[ -Xeku7+v@!gAlg!P5RuJA1!#l.x4xQkmjv*o5UCnXXmR<(Vzy36t+>%dXEY3CuR3mXiD==c{ -RVbEAFgP.>BA@f!JC -!gp%}L(KDspu&BoVw{q}S+}hgO>$(}szwJ1?N{X5L]-En&ZiM. -FsYC@>XV8%4&FwP6&Wsda&XSMhvBX6QJq{r -xs3RLz)8tDe7(jComnTd@D!N}4yDN>VfnZ&@t4)mYcxB^5azRTsy@Dk-q{(9ur[0Q>c[]:{Yp6}Xp}OOcBeY&2E?2F -++f4K7Uu!x=re)F.UncA/VOnW?E]n}sSxLk>aVxZwi}p9.L6k!m0FlTeknj-fp#Fi+7u}]YZ*0xHx4lc -*$L=@k-0/RvLr^>8tfo]@K1^5}b[RBkxodcOhFXwJ{SyHY=2:MWL8)yO5LA^N}H{hh2yIZY -g=m?:5+M83LJOW)8LD%/hX?8jgn>=.?O2mRUYTW^%[f.OU ->E2bh1&qS0KUtiL65DAuKP%@b6[8ImK>d6}OQEzE%Wa%?]u7J58P@$2sR4&99>cV?i5!E1v -@)9T!R$e1Oy7wF+bUqH3.u!+0075Q2{{PAlcEH{/D>rpBD}W9Xz7H)-aWz[LNYjF#RbmK8] -6V7ImulX5=I^se4mvPZ8QRHVY24?2IK5SnGYSoE(C+Uma6L<=]^&3Kx0zx+ZG/n1=kiEVyn -}iVXksoFtUf[p&YO:sjoka/{9khN1Kf/>3>B)6DnT%Df.TXc$5J-/6w8ls?nkfMT -xn(pd*hY]vgbw3H?i@bjiBOYV+.M7VY6kK(XVa1-nD5o[P%9heCXdgzQ!]N{!]/jpn0W&wxK5$(^&gmtw5rF@hrK2MrI8)U6bR!Z+a -XqAm0E2PBwS-6P?m#IT6h27T=bwWBfe%]AeYOa+u1Kg}uz}DMR/E!AX0egs3a*PUEa/0gDe -FLmXD]$^$JQ>FU2WLwaCJ:yV+#2wt4ilb!1zuaV%-

JHqo9&-+2ic&8tFr%%]q@%Lv>8^ -awdcjH>t5f8U^5x6)/dx6vE0q!BvI4iEqFqhqjg.{PN:yz[}i -iIVl:nlqyz%JX2^ez>i/Bfy/5?@VPEF8-74:N>m/OM&FK8GRN@eYzMyL5:ngl&=M>!kAf3M@g8UAfbpHIFRb-yFn.hi -Yr/7v7Ev6{SYsybp8:RVk$K}BoyiJ8P*S!7CHO[5fY#gW8mr5!YV5[w=*W.n7[Z7YDHlt7S -XH?=R(rWA^ULq*rplo=Qo.W0l]E{Nl&oe{Hr7gmQ44{l)0%P?D=kw!B/Q@]N7%O-veD{-x1 -ld8ksZp!.10G$mqlq%Is#}fdna:u->.%aIhZynQCgRM8aiZgkqe4 -knDhcc0g1CEi=4U?MOP0AO0P=u0U9*qX!q$34b4O*m}uzBf%hK4]Tm[P(]&1>G?c*BI1WT5 -v]VuuL:.ST6jh55L!m1yu%r1s9lXE+67l&wb4=2QceqLKly&eu[1Y<3g^o{k2h%QtQ/GrX7 -g>$IS&MVN/p0qV)CcAmp{cdOL0vSbs$^crc0*qdt}zA08Qa9:N3lG6T[.qpA9RNv@nf9?)iZ}XIrJT{+/6tQg&Dq)lhw3NooZ(bDht -m({X}RNW5!t(?c-Xb65:Rp^Bnci1sTXwT+ -[>+O8*]q/pV>9LxREcmUgF#Y@HhjoQ=ojtc2rGK2BKHUO/M+7TTSoh/()Ox44I+[nB7}Rob -WwG?+:OlIn1y()a@gBY(m50h&={^B1Rbr^giL/vD?AOOSbsM4w[t1odnh5xL9FJd+cb3X>$ -T0fot0g!Q&m$Ogh6HEhT8q@MD>ysy/RhPl@)OOpZJp:G%p@?>z}yjX:ef*bZ4FACKny{=(T -i*y6D5bLIoUOZCifgKgRDPoK&n@wh.HaL+Kx{Ke.9sJ3CV)N6q^YaIcz[b)a{G*-1wa!v1$ -rTAqo$e0w{B!FG/ZF#Y8DZLQL27rlAl4]*EUj%CsQH@.fWbGMY^E1Xt18>xOq&n5yA4FA#CU<1a1Z-10i}g@1e*Sb8RPqPo^DK[9zu>Q{.E5?TZAZfka/cHPC0 -A8Y34v7UIzckbOxP<8v}4%XK3pU0Kr{ifhTRyn1Xe{a7AcYM3@u -}[)#](C^*rP4I>m4{j3mc#dSp.ipz:]l&3:6lEqg4o{p(J29uyEhlwbfG))/3:5gML[!Wp: -72jm{&jGwQX!nd97xh{MXgH4Gv95kejx)b?X4JGRW(v?bn2sN[@tiK}Gw!TW<.w+pLSy[=b -bT#Tm(MD3W[JcLf5/L:vzlWlEv)uR8UetdC?6lnF!8*goGN%k]NKP2{9#7u?Sz&EE9+=!%J -&p+HIF@*+rIr10qu7f7Ro&swmq:UFEpb^/wjv{QsO.w>ILH9 -(]zBHN{y6Ftm[L8nzHYgHJtA}h%42kk#^@s5}EL6&xigO:w>Y39bgMcR&??P!N.^OQ@Y7El -qCjcj@l&Gi4Ds$?[7o96(6qhR@v1aRC3D]vPKr(@g3ZY -Lb2fY*G+Fz^MJg{Gl-7[]ynXYeR-)(tNfG=.xl]i5x@T)oeKbqu3ueNX6s]xdE./b3Us0Yn -5Q75Kmv:[3q-TdEnu}ZXBo^LnFEM{27aTTL(E8rU%Aa^TP?^I/et:0lzIvr9nu&%a3g(u7u -RN=]C8[pmr[Z?u#^vzj.$=05ku+2eWx?2sKidg.5GUxsLu1uY]g-XaOA@+Yt*$14^9LI{dT -teL(HSNyv#aRv}7sQ*o.FqFVeWX:C:*D>?CMgNq*q]bELb:ko[->veCZMEZ=G}ni3jJ=jDe -Bx05)GBq.ffCJhfi?xP$-[}+v?d5s9qpGZl.LKQ*%}M&vgo0>)w}Wg3-&zgkRlaPVEZes=) -wAaknV{up15e&kL6DlM(@:#P4>*MPgsk]&h}[%>4U]^>.XLyu}CC0O%paLim.Dp1SpFKDPV -vXamJ:Qgv?=A4N8:d?3h8QWUsuGqB@N^0o}oVHO]f(}M1L{B64<$}^i0IHo())x}OF1[{C3 -9OWa0z:}({^1koo{i8I(k#4g}NOQ0]nHYW!(ne(y{YSP{U=y-D%RmgV@ZZqphC]fA:+giX/ -j7o%/f)qj[3GDW/bhtEm8GFTkGfv3+[.9Q>.6Jl9E1SepN5l-2<1RMRK!Ctg.Z0HdN!{Wdh -e}5WY7)wR#(/%Vy#]jVL+RT%nWQV&FzS0e9Riei2uu/fx+Mh+xy5nE${}V7>tA?k]B?-yzo -w#yJbH#Knxk13wsV0[hP1:H(xyv)MxkW^x6/H}&GaPacBzJO%nGc+<0./Xr91+)Rw&Cp$bB -bYIW/2+!mLe2+7.A<8d4moh$l>veXoKb<2M{YWl:BqUjtY6Mh1}^juRIo{<8pFg1j^W#[G] -H9?3MLJ2B03IU6E+v0/}ww:(yB{h^QVkYJMLyv*XGHbpl[9-L9N=Bfy&v>W?Bfs^.AdMr1J -S((ikYlzHFuYdpr?Z5wN+4!iX*x!!jzhp$x0gU(lg5b.K6Ro1UwT6v2DSpJxYY60##oktr@ -NrFj]Bj1t#853UN@w4eETD>60&C -&5cJREemq)U{Gqz5v[?J@[&F(xVK6}8%9e7Zi#9V{:![nl]8--f:u1bQ06*c!JW(8Gb[Kn% -i=AG4eu:nr=dU?}V:I4y$/KS@j-2WS}o+&l{uL:f2=q{r-6#OrS2Ai5WFp7ALO3yDm&R0P1si}cb4NV.qG}/@yTQ1&3k -P@f[H8EAHV}Zlc@if19mT:ZL/P>n1[<5mHz!E5iDRg<}Cn[?i{La%8=1qRs15mf1ke$sw>= -KB(]/wm.jOw9[Q-:TyG=>693lMJT?oFzV=SR*!5*!7Cn{.N@ehmsuv2a0WL+(Eo(2sOM$0W-$+WPSr=OM$UNz3G-8/:vyP -<>r[raHk1I9ocxe-z7P0=3*B*Q(rIgg@XN0}65S$XnDD7]tIvUU^8WvF32A7NEle/s.K2rf -O:rl&@!I}VkAG}d:W)DFReDjpyzRY]XR]3F-=qcSJ]t40b]yRN=<2zvM6gf32l^Zrry$DAV -ij2]c@VTRl7S+e&mzG4&?pF4vP4KgbJFM/SrG/eaKd8Hl1RLVsVRnB96R}mSM-m&=hk5{X$H^5J3M({bg*U>9/KW[V5@g=oQY$rOvfPhHf8< -{B&x-x)#it3ow[BXiZN!-qnq}NVNw3!=$JeK4.#.D+Aq^nGQyq9pW3wSm7UPVCnhGCC4Y:Q -v:PWgbNY1$ygWoWN84A:/3GGt*ba7#6:onF)VzQ<8h@xl[ImhyQTNZvhLjOu4!TDN82X=*-X[fH}^#CP:Cd$VyF6:BW[TBa+j>*VDh*@TVqd!40@HA1A75b-)J4sZm?{$7k -:TiXzP6l9Jyvzny+e0dJKL/i.W5J+9EOvCu:jI/Wyxx/d6D2!O{B3^W.Ft:iBt}L%{4ioVg -8$A(?{2#p=f}dSFc<.p9&kiWoWr9J/nkf&FA$**Yvq5#+&7Bh4h]T]PQiKm57t(M.8l[k!l -u+i/=X)rVxGco/qphZLE3$$MTcQe2by!70dbm[0P{NX=tX4EnFT1ZK%eKJzF0Xf -4-B>r2u@z#El&D9Nw.#gCPdZPvrZ7)W.W^z?=cHzu7wS/%XMAUB}&m3Bj]P&c:dXbKl@kWWfHx@qW6rT$T/6C^5F8 -pK0T6o>g7-3pG=X2RLJQMjgGNi$5)T!p@}vr:!%2e%7NuOMH#=17tR@-bc<%EIdt-jzmgp@UTlt#5xKTgJG#3ZKU#UiX:Xw&=oBWYBX+vmKXmw!+q@$>?fkJ@*Fd%}zNl^!7qR6#a0+k?4(tOxyhNsJV)Hgk[OpT)KnpFSRwyp2Tn&bd1> -/voO/K=bM:=md&vCFJrxMOjRd-$v4TTVt8i:ONBK9C1tM-H&*3:(YRXIeL=-fEI3.I?rbvT%Q -mg27KiCZjyU}bG+<#Cel+-q&J)Aa7SL6NF)YQH.nGUb+h@Mda>OrH&T)JvXyo-10xSP8B4X -fIgZT=^9p%<)%}bV]N=S7l&OPZ&oXv7Hz$?!(*x*mb)g(PO0W<0eNIA8?7Wa!3%K37kWF+q -k<2Rgjw7jI8}Gyrj>k(8dBIpCp(Th3S{(Rdr3D841t^SIOD7kbNxnqy$YWdP8Aq^* -[azEA94DSDQ@uw=LW5.vD#dl-HD0:j8Oh$e}OFn4azZ -)IXrqsL:ir^b?hM] -?$:Vb0[/F2b$E-i?>-2C!$ri5tVY6EM&Aw1oLWnkJr4KH1O:aG6&McW<+xsdCcn*GGQ=-UH6 -*imF[Ou^(K9W5h/cp/spoPm.}U5Tfp#xizh9PQRX($bUH-a2ixqzWV3]vZDc*/hNzmn -s?d!+eRtA4@7cI-?bQ[T!:Z3L?Db+[8Sqxp3::NWTB#VVJQR ->W$#=fDd[2Mcz{<.HB4O^RHmW<*>DwIW5mXrv-IL#UA:!+f(*N$0&$ElFpVtli1%7M=TV8k -r8(w2O3nPczKs{9m0ydgVRs3lJ)%<-i42L0Spr7a%:tUC}jtwT6[4Z@.eUkc.q$5y2[ZH3h -jVj+]&DS&RH9*v<7:0ycHy=b?)6H&eYtBl1:>E[5hg^PAEs&K<>d&gUYa>jWzNW[%q0z5uz -0k-b7xiwbvUMbB9SffXqcCe]5%[u-p}hV{^=w@6FlC8Kjk:)Kx7)D{&Y5Z}CueE(NjwQzm0 -][FW/3fVepT2/8[luG*0L6&!uG>LN:]*ja1FoRp*e2inLfG<1n0sgrY=s -xlGx-txS%r?M+fCG{n1QRpPY>7r56Q/zbuSvwzgPG>WR1$=t4@AAcA?C3jCe>p{i1$C[xAe -C{VKe!@TIVR(7^#[=ULkVi*S%YYa2dzo51NsVd7O>KeF%KF#9O8>r=4Ge[!@nYBUR%B^j$L -lpdZQY.^%)SdJWIy4p4#LE=EYv(-hA$nUYx -O-?@x+BisXdeB.2byG9l8w{l>0bwpc11VSL@FMt^W5p.u5OrPR$miaK>X%?!}:y5rG=d5gh -xkG#+]MUUtZ.J@j*:VwPh8ho?]}s^rHP7-yp%&/OTAN/$JALwl<>)6wwG=O0ubtmry!bARa -bnyM7ea6S=Do$E@cpKqjS%tpqvPR=a:7[V.5JvK2:3*zY^RQFQ-SLqmy*o*45GG:&HFsY9F -5@[eK/(TKY=X5F}$RzH{3sgt3mPAam[pMz7I1Zp>&w1Zh>D$RwYXG>l](}-vF[K5ztkR&k8 -M32#Jzw*V-Ec!R@Z1*9v5!/v@ -E2*0+Qgwp?P5O$<3q]KMLYTv3wYs4$]Rj}^9Whf{SoteR{kL@Ht.OR%K3YFLFja2Y -+#p2-OD(F8ZrIlxW.em$x9hgwL{1*z.V!/(LY-$ViQJ9M$+SZ1SFOi9y*yNI+>NwLNQ7()HVPKji{WkVpz4Gg&)?#Inrx$h9KWr>@Pzs -dTMQ8v48Gf?1[GFdjMxEupNsNdg^s[.V9(aoD^F@S(00qo6KIJ{8bhk$}? -ReDAU$Ng

    wjH%2!GM$VkdQIs^Wz{SEFSh]DjP]A0?#cg]FA-g?dys -eyAz>B+}784p-/P5}[P*56Uta{P1x+(8=aT*%7(%ruhM*L--o1xh=m]QK2taOqFC@4@-.Bz -ehJqFmYV9LJezxaFiDu!-2xU=!}A8GiD(/!f50W48}sx{IpEkdaLky3!(VbSEfyMJ^FrZv. -wev83y&@^Ftgp5tmn&(1{k98&E7Nj]lQyb/RlWfxGP0rTwa#0OEo=w.u}!SL#W>)62iIX8< -sODZWPhg74%>MuC+!#tk@8=@1@MNSeFoP!jHbsNWL:k>CN&yP[#!0x1f5M]P3(==0IPjioU -hjO$X=#BUL.S!GA@%t.6*3nZL{!NH[(rM[1gaPKewMA{+LiH/MCy--CUb9abrOa??p4H)4e -hQDf-gp+GtpXkrI(6}A%RLx}Mm!]OL=H/[Wc)sLh]0lINeC:=sz<{XI^rO^1#rOfMPUa6ll -Ix>QyMH=F&QoRiiaXN<9V37qC/C<5%N/7FS(zLMaY#d&wZt-ozrd>cNINOA#gJoR%qIR:a[Zt4Bm*78TmJoYQ-a<^K#Cwp120eW -D&-HORCJQlsTgK3s{Po@Wtp*pO)6jpQ7[s?j)/}5GI$<&!dhM:hR71%/:cad6^%oA]10] ->D?^q&8m])k&j]sQw4A}L[.6ewtR8(foG%u76D:$e4/YgM9r$)cGP+AR0E-s[C>Aqg20t%u -vCrB@Z/0giefoO=t=MnE(/44uT^N/Id>8&v=K[^nL(SO%2xwA4Hkr2NVM9*Uj((06if4s?:{p/U5T3XwG@ZuMI!KR>8b/V(?A3QlXf -j$x&EECv4E!#/{(4KK}VODk4&GIrucRPhQbx(A9}+qs0kAA{/>cNgpq}[?D!xJZfu}po3lHIxR{-oY+pH(6owur)I>?{ur+Tt?OIDtR7<])Rg-=P[Va -*@=jVoh/O7H0Fv{K-&WKOmuh:P4b^VKtdkO19lk>vtP$/)rpgzZ0+G*8DKD?x05tx*gDK}# -W9qniPa(1ZJ*bjX8b5s5(z*![RcNk!LPMS>1*&%QWNRL&-:ddNb%aTOdRHUNJsjEkeIe37-Ie16-.URycuHWAus42+(Pjc/Eo!%X{iR5!#c>V -5{4]uz)ZcKp$Ofdgv)b>qp+wgErm?%TeE3M/Y0bA@QC2XY70!czYCu-Mp^eX6wqd58iflr/ -IAY<^7^[%}e]qL4Up2voul.adI%2Se%:=D)/sD%Uq}]U6@Q=&LjXr<*-o>epK=pUk-gZ)4iP5F=$P.ltsimz}TJp8FA2a@ZD- -etVM&Tx@{2>RxGb)QL{yg5zlO{.I:b2AYvxPyf>?w1^(?8CYzZ?^xB$C[lp@E=r^&wAjN[ -z@pYMe!eKBzKK-.7Z]n6cNM[RuZ NWdNQB3!fd]x5q%6>?Ft3R=7GWXm1> -BznD})Fr18b///7#5InUV!PG{pd6z!jLqM+$vUM.=l -gn9PA6(.1iuzQt7%5E7>*NeSb12.ORk+$8&oQ!6[4BRb9M1coDYIWTOvgHq3<#z?DMe6h6U -2FOJ&7BXN7ze%vP-JKCsf2>wS2saW@JT?C6)lEyluLrbS4DI!(J]61qHlFj*nJPVIgK^yck -+Xw+m[LM/84^.dYJEQ!12Cv7@(5Ls(BpaMz[L8Amn)&7umT1CvOxAPr4t[$LdnoB]XfR94:Yfk{=C1+B?Q -Y:^i)?B5eFmMEgW:JBmB:A&+vRz?Y@+n>&9Se37WSz7{?RolVw^/ujf??WiOZv@pW:!<+*l -*.S*S5Mc0(:L.{F-=xKEuhhs^U[OM>Rf*(nLwe5tuO!^F&{Y?#5wQ/0.]*f>$y/2F85!Bq* -gIv)VmFEYSzbuio0AOFhOnadm8+s2z[EcjW]Y{3X(zj$f96ko--q-!E^<}a%6BnM=cL*W#9X -Z9Y?zxK&W@Ic:6GFir4weO.g2vWMCj/n5I+kD!e/G(#oAjJXppboXjcuCi0@R -+vFUMLUei!CcX(eR66r)79}*@FGhM)ZX167}AqI7%$wDwQk@uaKWJS4RerO]XL?naqcctU# -pOTUslF-4cf+Bdo46C@QqOWPX[TVQc]gMne -jkPUX[cex5U*pvJPbviFq8w6[leVkRR@{Q*NgMRv@l2DhizW^!:>f5u9=w?iMShhT>mlV}f -O1O:E)XlC38g>ufmAk[rM-K5eG9d.M<+jf?c%:RZ>O{>HHDoFa2OD#v20>.7(&KK&.Vrzi[sQWu&RTaGkVUtqNvoSOBJ}i>2DSl&Hgl7*+Y.B/%1/Y:kfQ@qj)DH?aO49Kc -my-Z+?8WchlUq{F4-.x%8wiov$A-7+fO=Hy(usl=>Z^V>qQbTl7@YHuFr{yCakJeovVH]E& -s?6kTGY7)hV[qa6X.<=.97ftO1B$ovDsKqcxx6*[.pLbiEHoR)??Cud6^:K7meL}=Fveq+!{S:?[H -nxA++C^A]KuY)Kw1I=mvO0$]Lp15pZSZ:R^[{DIb#9g2fXgFI?#OzDq*eHadLA5{=RKvA[z -owHkV#yWTKH3?1C>&o8DfnPxEac}zAw)?ioFV(H7?Gp0hYhP!=n6HgCHDIMX@mt-!2n{8mI -sI:XZQZm:T9}D%rEY!N3h$2KFFf0aDeJS7f9>e+W$lZr^B?vy&n*OCwY[b3SY}DY -k(v+=ah=/yHod%uFMZPauN>pK4c.pwI6HgHg:yU]hDj8Yin8Me[CI$Aei:pB*B#P*tIlo%a -vj)!S]vKiusO]-y4%/RJ3Yrv:H)viLQDWSGn*SJT+ipF>jt)jorUGJ5(%6)#RR+x#pAZGT2@NgBJlT<(VtX-wOKT3=W -rGnZSj0AY>VTrrGCsOoABqoYZgD)9LGVD(lm-dfP?8@Z0I+HIWlOIGUmL^O?hFE!tDC2t!I -=%(xqSdsc/]k&e!+ea0aFGlO%wXY22}z)jOGJiQyVond!70Cf)@^b]gAhTqHZ481h(UFk3Q -xa&$7!OP!A<:9Us^dX4RPj)3VN(zEab]GvG(wzFe@p6j@LKz3jT.J.qZe@t1?*qO6KmwsQO -@/7G+U4jXN:x.9BnU(3p8F&a!ME1Z+4>o]o2zCY#?L/0M{c/m{YOzaES$cZQ0[atiY5U -5utcXWEX0^fqDXaDT4>]kCq^dbF[tW>SW:md{4+hg%0L#b-@8!W3QJ8h)sVNsIqGmH}NXpb -UgPUDWtk(wV:0cgEuK2%2mh*ud5BKY3)V!c53 -1@(J3CsoP41%lMHd}vTT}-BIm#.Ps#5DMP=2}jl3d[/?j&l)y+n/p69blr}C8.d*EMJ:3he -g-C&sxf=g*3l{-Bt1TXvrrO1A)QR)}trHClCp55Oxb!$e7.1kOAAK/5Mm7.@jKIVQlRoCXp -d:=K6i3qx/t65GM[VGn4l-[7/WG4%lBjI&3J.l6Jv>1Bj4NkZaiFLYJPYtQUH^mI&U- -]yH8r1j++%J+Lr83K(eWOUZ09N!Hm)V5P%E?}TeqNdbVMC-t4FQUqppg3g!pLbJUP-f@AQr -R9^2w>}y3Zd]&eY43/a-RD5bU$Y2(DJm}(d[K6qUT.}bFX3$is?.(xK^qSxy9bPkQ9DQ:64 -[NiC+nmqqZ4w%^0Y&0d*U7BLq++rHIt84E}]1s0j3?X1KGf1{PTMX4rQ&xYZUhN3y# -/H&AGweP6VyyTGGl@jGiA.0iO-V)AAnrvdlD(xz):lrcuPuxZy5P{gwf^rb0rus#pacX2HeCcKs{/Z2zLQKqif}NrUHzMwQ&nsmNyPd9&l1+MALHjuhA*?q7M8Y%YEbbw^:FO -WAo.sXzJ)>nMPWIf#OW916kKJI -pDuv(*!?6%RM*QVkIMeq94h6Y%hV5*tL+hyxZzu53iI@}{.P+)/XPJFA![Ay)k<-y?>GubK -bEcj6j>bGjK=vOA?P:bPHU6%dl!bY[qVs{!W.U*>3]*&g@B0&7:2Fyh(KQXhFad/dFZVEI= -e<=+p)sCv+j^-yibNZcVo:%OEx-7w{3@5xjQQNH:B..jh/maQz6Y.W3mM^!yq{#)oLemO7T -R$6tx^>]sgZP:!g[.YAwZ{ewm?I3}My/%:Egk28c-uF>Gjecrs:]e58-2&xV@q13K#@JWMd -%NezZwY1NfgL3nX]A.g!>eKyHCRneGlA-0yd -V:UbrGSlVWP{e9mev{K)oW0$Z}NMc%}ni&Ygv{EA<8NNqweYhZJfsR]NdcE-th?eL@^A)*( -$)Z>4u]FoFPxEq<Q -fukl?$p$&t1muMKXaB>RG=61Q5vD)cL3B4-/d]=/050bZLFPe0}W}rt{g6D{H?{sCo0/*$g -8#C$#<1rIj}sgK@hB&bmp.he/LF4ej=sAjOVGe>TezXM#8/GUViO3:Vlghd2:Ek?mlLA6JC -?snz)uEu1.%Lg>4fMMn%ZqbjEQ^JS$H{+H:}Wki6MWj0q]Mk&9A&W>mNT#kehmbhU%Q%Yt} -JKt>N?Yi+?fDuqp}&UU%6tL}!kQfVVS*YXxP$lfv!FdYe)GcXiSsFSm(5F7.Ld0*?TqDZ(m -Ir^aZk63^-aa1mA-gHs])mr*nQ^69.P*:nyn@c3puh]W<)DrUz/w%B0Ifz/T&d=Wy79J8{J -R#zK.?z%0t-c3+yXKzVmf}HvEc-Qe4I?N)izE45G+nBmE3yS -7[2{k6CT3Y*>eW-L$7AsN<3^tBDSblE]5WoWb>b9qzvb9VYng3>:zI&j!&uc0*Hl4G/[o*1 -=!jSSxMa($Wxbt.q*T0.$*ebzjH>DKe%>c)XxKB>{}}5FzJCo]SJmdfK&DU?+t0G4k7SGX* -bQsOND8wBUYWFIjwVS?=ffK.rj7{FG4QO=uJ4@ZiVyGWyT*G*o&I9E3Ay7DPIAEwA0]*L1j -%[$?qE78}:kewo&VgZ5pE&}}co8?x5aCBA.gZiYi?y^@Vy{aL]8lwueVD$+u{XQQc{=eAiO -kxOH6PD6LI({3zIjEBJYI#@PigUNx-&byGeiw/VviI?C3[zYOQZkP!fxS7238sM{ -Ze)l]ObqAO:?MkbZj!JH8EA-293Vr2s&u&@&HL+@mJ8=KHF%MLhIR)j*du.UVeYR0@UxI3w -05@vN?A1khgWEUm}!.tae6kk-D[opM=o6[@2!F}W6e(i5UO4hQbBfBvKzYJ4Z8rSZ><%[n( -G@mLo6$gx0gSuh[bk/HKWf}rx-&STEL36[YQ#Vp*]+T}CE$33{wFNz-ZB=C1n/y3Q2!LsxN -/b<0wZY5(JI-X3?lH+!+FZ4IR{JUjrn&5Rz$R9rn=/F!BE6eh4ky3ji6}#37g8#K#y0D=9K -Il:5D[sq4n[vRTkz{R&GD&/-KqING8P9+WbxbpRm6sw9vVIt*qxyQ62DX%Eh*}bVzJi7!8D -JJ#YY>r+%1v(EWTkX*d>Dtm[zv}kXEFV>5+8TTi75hkb:z)*I3AL7GV?>c%gdAjhP:49&OtRnc-@.w/(xQ$o0Q$8LGmfFpq^YSpF+a]yGL -kx0PijVNO$zlVBFl/[0QR$&m$&26jv!axYZuSr/TB0&%b]k<+vVI>rH}+g?38Cm3$&GcU:6 -dSB>-#8/k(X2M#Cj.ot24OIPdK=9BK&Mp#$)U@&[pz*K!jKi#K/cD+A5vlK0*QEAgt=ZXOH -Q4k4CjAyJ*6{mc}fJ$x80hdJbc)*OWh:C#)lhs3Ig4-v5wd*?Gs=zfPOD=Gx9!m*YM)Sumr -^38suhwSQ&NHvEWG8hkD+Ul3tf:lij??9RE6{.k4.Z]V]GB@J}VWV=Fd05eR:%mr?/D>XI( -iLuN3[d8[%(&@O?b9VWDz*HFt6$0Rb8uC[Ghlr!4gU -gkcVS^0D=nDC+Vq{7QpW]wxY5by&{IqQ}f)A=GaAp?Tf*S0ZXt6hJZU[@ZZL3o@P*Y]=r$M -5b{u2=*}%3Va[PtF(mBRYtd5?ehsi-D=.bmpzQ.y&TtRW2^&By*2N].Z4x+Go44FJZeOO1o -uFwT>nW&hoV&S^?HUV9{L3cO6*jNCSZ:VYN$+WJ -ZShRI5AgW2QLYkWCW]oI0Z[1JHycfUStdZw=P{S*eFwwS@GDFHLdVKoEIh4Rr({UC+SI[@x -W!ZzGkrP^?w5SrWmQruD}-TG7}BN/}$V3cOd=W5LXc$?BtLWZO-4/hB/}NHDe{BH$}cX-.EUD!m#w@0P/y]eMgsI]X{SYxdF-F@zu9DX/kJ -aFfhbVRe}{iu>7mE6wg/#m%?1x]t./N!*IYK2D>By(2Txe9j{5x@SrOIoXb}G*EC[xn1oRq -kI}U6uE3?!E?nBsU5pOfr4k(H=DZv0M>F(IS1H%a4Pgz{>F3jTekplLycb^ygh2&)znhE&^ -bfWG#!Ta1O8swz1ewkF-dZi*:!oH6k06$@.>je%+PkM(tDc1-aNT!sTwWVXOw4p$G]4Cpt)yS*64lBot6WQ4KaxZf4l -ziuyg>y:K}*/[+b2)CC7v./YWY1E!TTloIR1U&NyJPi+m()*j+kwXFduGJq>7itBs -*)<5dFPLhPbH0RD0!i4@nQTS7SxhKiCPg2qW^]8tGBw5XD-$MrD+bFdR]jOY*CkCCa0+k1. -K:sNyA3rLEg2(SK07S}@*ar^TywfR!LIwz4>PRlkR}59B]H@l)%DliIyd2l:kRFBp}76ziR -{^tk=B^T^ubX)LJpZ[29BDpyKQpM}D/oSN.}rjd<44g&ILEIg[ObW5ahfrru=ec7c.([3N6 -)5x&iy20<}ycDvP7]@d%Q1so#ECV2XSma^Nq(M(x^Bdmk*+vT(IyWN=QE>-t=GHrryK/yGr -WU?}&xCyAGa.DKy@QGYs)EL2ODBmfeY$^bwBF>+{gUGnn)tGiED4gBv&/@Gh6}lAJjK/rkI --o6qzX)>Vj![SvM@ele0T[/Vm7}[P?5t-ltjnn]D#u/w6TSM5yBH&MGn6t:RFR&Jd -d3aa+>TlY8M0AJL6+*qzJas4eDFfff<^NRU+*66RCiK$hVHR%v&@UdMAd=Ua3J-tQo}-zY] -PV0gukOQ=L>2vN!NCQqFWa&8q)Mgv<9{}P^gW(Pz5r2j.bN4J347rhaVErd#64d${I]-U-jlv4Ag8+G}3[k.^1={asOA2.Mhx2D#zownXL?(8aKP -&f]Yx0=MKfhMY(m2$3xGQBWN0MwjZw)MH(Qnx-vG=2Yi]y&kIp1rT&)7#Dav5?OjEWex3B( -TRF[6R>}Lq}]UJ)FF76xN!.H6GVaz!p9!2Jdxuul06r&HRG8a^ZV[9nZUEr=6fvrf93!?r+ -5YT/sc@mkem.p>HQszk79VAAo?C]BBB^+gyXl7CHzLzo=^0%9@bTQSx&^v{}gHR3amK/cCE -kymeR@i(C^b3A>5U74$lG&9&5YDu$xZvDJ$?Ew8]NV$@G79sSiK4/9Dkd?SZ@x5i)F3 -F}xgBH7oHnzMNPPYhZsjK:)S -{5&H36WsGZ-ftk$E)QOPPc8MrmzKikdoL:*m.w.9X4T/mcH/dwlX{8ecYvsO:SHc49zjL98 -JKdl!QHr3RwibC%RE9ycM^iOSKov&XREh.qO{/.-E=JsijfD.r@*JiiCNIR+ja{.i>TFWp% -l&Fnc)LJJFZBdIscimgVBx4@fNerPEOwAZ^B[GvWmibd()lrOl%?0GBK.4@DX>t..1ajtbR -a:L=A=+t9k4bRg2}s:(zlwcja2-9^5 -Z+m+Ie*Q[TfTL1g#@p[7i{B(r3$OkULsy1[644Dk#}q7xik4d{Az]T<4]r09%&*+QRM:wn3 -.+I8.>%U>g[KaVY#pb@3sdN)Oy7TT.Yc@PP9M)%2Kr}y+ -f&R{SyU[Q.kJ-uZ#.vdb{YctV0^mdo)+C/slwHs-Msw-Vh}iU8=jmX[&+55y!J:JD6y31P@ -hB%xJF0EW?O/ef0lz]U0<3yPr%KWz2ZG*$R3diUWnD}s<8r}swKh)m>940s2LPe0&XAelF! -z^j8#jF*FZ-fbt0c&m4hM/a6[7w]31}H%v{UKmg!.]vEu)-5E#da/)P:Rzkmxb=6vC!lC(Y -M?AoEKn+$7$8.Hq$1=hN=!-LEl5h6k]#^ScZ(AX5Bk]t>pNXHU5:@6O?eqlaNPc/b@H^e2s -2u64wTTXK@(N5Szm)?Zn].V&v77D9n)<%Yc@t@-}Nb%v$?&D-0yyAfogw[2p^.gLsr*l1)f -CX/oYzh[Uys5:sc{x+qtCPL84MZe?h09L8&YnL]b-(/u*HfWe]MK%2SK!@5?88=<+Dp!xf#Xco/s{M -tWbeC5Z$DCe/.Txi<(NhRg7)U*QeHD(OjZD#cftoi(POR]N}sQ7VEqaZUv4GRO0e^jEqcy?8WfJO.^n)KiCgruJ7qPga -#$nUanfw0NzKv+Tz%R6je1[p0Y3Or)R7(ht&+L:91FH7?olEKsR#+HGI%UFKzAi7Mk5%{e- -9GvucMG0Cur3>=t{vEX.=oaIw2F4R7<#czIll<29jk)<0jrlw#2aG0uIZ{neZW9zzF*aaCfSb4Uq4YeZ}eeX=OPwP1XA*4LtoFxJ-J9o0oDMeMKEcR?$T9-/ilQl.G4FJ-s=JRKf -sohTiQc.<8v)t@1mz6@@e+=-/^D+cUMyM5{%eM6IWDt%JvgQN92cYLa3}[H4^S5!fXJWHh@+yE0gzC8O}d@>NI60!1[Yz&$NC-$b19r=l.8X[unnX -a0nOAN:Ac[DzlEE[Aq2CW&6Let>7l5&kLB=I-sFi/HYel>ILS9QaD6ZUG=ye^e>s-?#M1yq[J5K=vLil7u6]8?5w{?CXTbgp=G#hf}7uSEV?fi//1VVvgR3YXG<SCbo}9M4eD6&>>lYq6YAugNT23({?s17Qjzqpm&)JIJEl4WiNJDSe=hA!{G75]pgTYRw)dz:vwl6C:<9c9NFHw}/^D -9H<]%g(?:xlGqtA0Czxwf.lX{fED5y7G9sS=wo(KH}-JdEd]%41/OZC:mz%ftdm8->=)iT& -)zGRwBMsKr?S79G7EY5KRz[QB3skepj=i#45*TEqgfT0k(hmTzH<9wKGRI37}1F<1^i-kVI -EW0+*3(#P/whp2OO.Wxq#&wRh9=gx6HA45:QRg*}^7e:i<[7liQt9vY&?719PuZ>QcYQ2Gr -^0$Kc)[P0!mVE4s!+*BdF0P=48-kWK[yv3r%05MX7KBCxr=.Wy>11l]K%wP=4Z>=*e>9T.SOncM#1{%uo5+v{Nnau%l#fRsq{?1@utB+QwMv8$*O2TfkX(n&}HuQgJ*dwco}7d%uouYmgiXlW(5:gL9>EyODSo&zo)Bs*69q+/Sl -KrpB.rw.Tam/iTX$gfi:i1:4utE1kQw#HJvx8cFvL.MdH*+zZJ-=wk*I9b$i[{$]k@:vu/e -yUBxzTU/[C8zw+?]Kx^p)hlgcdh?PZr5dM65G/5s{@s[?xEqkua$jn7-emKN)D&kV}gIR$ -Gb0?rC-*Qp=Rw9GUArm4Kt:k0y=eGRSiaF[iP86zdNfA}?1$(sUW)Hn&<=SYCEkow3A?Y(] -}+vSG!lStEn(mfF-R1HZI.PjtZpX/XlcbU]EzKT2e5PT-tz28/y-DXAQ:P-@S6^ygJ:l[6i -((t:-}oR{IU$Cig^m9RzT.Ju?R>i8Q9)0mz@Q@2[4KPaOc[-lF4$(0rgi*yeP4OTEEh-j./2H0g8 -jgejQr[2]@).XVO/NnRvyq)ogDW&RxSt@dDaP.5bK%iAcu)Aa?V7qyh*!1fZaCP#p^ -zhbp(qnR)[Fyw4>Yj0JerDz{}U[#wI=xUWA-^$ -8-z8Gj6kn8T!5EdZP.fjblKs5M1=$/L@uKph2h39Vf0YO=wN$d)2]M&DE#%bUVgdw#ZJQSP -IbkMTp]VvZT0P1$8Z6b10mZurvF6H<1M9pVE6B!3-v8.Sh6SPn{FTv58zUc:Eza^7R0PQje -9X2l+p}EEq/Kee4PXH?A.&Nfy/d*Vd6e?(Z?fdN#x{O4vgcCyaDBm4Ca2[v(-nc1G)da+bkNcz&j}^l7%h(g!Gt(5D/RQ!6BjCrFr^LLgoS-yBAn^0clHzzO-W-O4FB5ptDQ2@% -ow9s2!BF0NHb91R0QHs#?qv/!&($>QbgA*>tabrpbUZHd5Iku$iI1Oo8dvcO}o*!xDedt:l -&/1yoGIhbZz#(PK-8rls3}NT*!WAE5kMCQh#=in5kZ4)f4MaNDsyIXKlH6:9S%kNe9ZVRgxF45s/q8GtXJHOUs[CqQ!!O^DR)bc082ajf.tqL92b -@l(W7cYNH^ODnYl&.0=bJ[!Aoo}25282{SuFcX^[-8aFj<*NXIQFAs{y*Cv810@m{cxg*}+ -RRsNmVajce=lS@@kbLnVWnqhp:UMB:6+C+O?T(612>2?ub*5TPvx)t3UIXRVif3k -X/2ws:8uTk8-23(9)VHp7kQ[iQSuYS$TQxDjZ#6!ps3 -+2aJJT6eK$r6Hs-hy<%]+e:npasJBB3SvFI&quedvSbyzE8yBi)hJTH8==nN5xxrVjIAn5B -Aq1!#>zkd^/xf{Me+r8.3XrbV00AR:g-O$#f-8a9nRT7j!P::=Ye%DR[TL^7Q4!LkLk@4<&hxn)f}eEO8kCiMNwhE$75U(PSZD1Q@lQhwq8wij:jr#-Z-S/K ->cxhUM.BjU[@a!de:tFC7/knU<4HhK1eS1LqP6s*G@AE[=P1U4zaEw2Ciw&8nav}rek1GBd -5IaRciY87qhnc.h+W[}FeTn*Edm/$wce)tr4[hfwsnkoibvw?qyk^dU6FtN*1bai2p0dW&k -!sttEF7$[pr&2pR}C%]o6{XQd/6te+oLgWjd7elv%:bYgwhV4kmKL!T-f+s<#=2o$H15hnSAY87g!@Qkv>TMu4(O& -4^/d>.d5QT{q4e)ZnW@aJDs5m-*bIAicLrm7Ig@<9Q-8!)h2iv0E0H -lu]5-0UNz.Bn4&]E[[#3la}Qp6U0.s=vGGY)^K&0izYhbX@rfoDE>OM20(%Uxi$aQ*s=Sbm -!nk.{jIF)nEN@gcfbF/V4.O)Ubb:8nwdy%rOVw -8Un16KJi$J0G5B/54yLo9{)Jq/ybT<)W]^1F]mP7Jw*]Sf(qWUgF2+[rxF1]yFGlV&OQ.WB.F(eG96ZGqX]jj<6 -zqb-Vu6}NebNPdQ2o5[.j+pThSd -RQ2dJ{KM(vZ^lCFHj&]AZQbz#4&P>NyWqu.6sypV<$e+<}nsc&V>ZF<-8wn@-Fq{>B7Neft -{cJ1.d4RqU6m8aHk9Y$A:AGzm -p(}/-&LwiOr%]eeHmNh^y]U[jO!^9p8F=J&b&m{!dr%2UywB9wk!FB8(OAq>WoNV-=I -^1rwJIVR&rYIaSe!ti*p7.1%AL9Iho^*O=su5JOg^WLZ>=2YJq3Uc2+e$Wq:XoxwEZ*-xGp -V6j*hlI3EmS*/!D&Of+Ot]AsNiOk+cTLGWk}W>DJC*V0{a+6S]^F}!d#vBjkIUL>c^9e!BY -rOK)6QB=+vd:t%Y-pYhw9LPL8?U*&)T![aDP(Eg/&KjIo6rNz -}m{Qux9y]3b:s0PqfPs1Y47Rzbd:g8k/Ts?8XBl&BN0j}f}RL52O5TF-e6*?Z+72Pr(d+B$ -VzKd#KGzMNEN}1RjHBKc%Nr8RG)Y -1=PMcpsX7sOt4r0t@Oisoz-<4@fib8l*6g&JiTtxVUkw-pXj-Wr5/igm/KVVf7Cc5ht<$!s -=3LG:(Nz2{jhH6h0AKkxhv{O0T?o-ui-oO]cZfCH%=GsvlCxv2X8Pc.o8M-7D{R>+hZX#HK -@{.34%fBT{)bQZWOqLK*p})xp^1ePs<6sKgQHkviRHqCYb0*tYkz.6p!3+3yVJdp1LQF/ci -^vAEh}m.3fwAG3?%D.OWJoC{iJx#HF]Z*+Z0S@r4>9{F)*o0D8zMm:=1>=gy?QNHJq{u2lO -4C8shZ5Jw%Zvz>Po2TLR!hD4dArIkE^H3S7x4.4mTJrpGLTDRzsT4UV6?w1>M.S0hAZSE -$j=Ud8A&7YCrLKQQEhI6I19!d?)O7U^)t[lC)=wWv>)DDACb?o*czI{N^/=kAg]e=O0Y7hr -lO3-8uJ{Gw40$tg]!w=kQ:J$j^Vp<1{{)[7-g11oEF0=M-X.G4OK1s*ZcA]^d2lhH^G9}Z:lI3j#]agbJhU9C>WWau%[944)fRp]$XvJPGK-Q -5-m1GJc3-^og/(bMMKI%=CHASYS}FEp[7Kg:=5GiynX5wWRzzm3U6uuJ+p}#ZGMU!mojmvA -6JA@?tH=i=)Zpo(-+b:(-c/KaN>>q{N}WImm@a?Wd1rDsYy^9$Vwwb+C)c4[*fGO.je$9f=oA(Nmy*!zu+o@HhiqggpLF -VG1qo&7v?v6!&w)7!MdZ@^HC@fgb?dQH[ifh7PC%tsU)jKuD+SY=T4:W1>=y6:-J=uL%}o:wSqP0t2IXp!gB./*SV:Yd#PS0&P}YnaCM0p5^4J:TL$q.Y)PK0 -f9fLV&/*gO4lU/<YVFk5DsII4aX] -U(-%}/7$WXdBA!:z*VkNx9h5H6EWDufhrf&BiC5=%!6qGOv!hX4UZuYWgds2%fV%15X%J@f -bxE)=8Fr][R0Wr>5n8vEa8net{$1tP-h@]&tiTS%BFe/o0=J@n>w[2l5fdD]Aq(OTK)D^+q -vYwyS6xe98t1G(/ra2eHCK3bUcn:?^gM?h>y!^=NJawrws]04X3!wC1wti:@7g6ZL5 -XXN8&cN$0B=6RO+-2bt}W>QtW5gh.]#)Hwo+6MWK]NQcnUdiw%(GKt28hhH?frhyN -cHpHR7KgXLF+0fa+Pr.Dk:nSg.UjF[(@G/DZBc:*HjUbjUEmPtQtCMd4SCg2=?+KA21zdVlct%D0%ntG0@kgJ:ew$vYT -W8I(R%0-Rv[?LfTP(t7h^EZtTX.Y9l8JT.a[aNQ(Mft-ja]k^(f!R(l^uf>YIuTw8>/lTf -dV[hR6sz=@]1NC+PqVniFj -k?$>Og31rZsM1bWO4MX&OKp0PJe{U{FCYNHnE5GyBUslW46:?VqnqEVw.j -5YO-9d-5iALyHRVU{[A!dTOFgl=*Rdk*U.eARL{XdkC=6tbN4n:32=V]37d9M{Cdv -3[S^S0Xd[j.-uxb9H#4OXg(cYTyvg.$FOcD)!6rTocpkV5UZdTA=Sl8/[8SJoZ7/7GoqNKO -6YL(DOMBjgEGWNLO12*u%G[PSE@r.qIjN8ibclheA-&?>.MAE5.Blzjlo*6]v3MzNS -@Nt7XfLOl(6lMsF:yEBfh!)9TKb&erlUgL}oXrIv5w6GS7(a@KrOP{J&Mvh9O$be*qE/&@.jp0&xa*SK+BvK6fX/0Y.v!{ -{MfA!-mQu}9Oz:Il#f9t7N14yo)+steOAQWZxAxC^Q{F3UO%alpB[iXTK>{Nr*e(}[1@INf -wGQBWlRL<0UgP2c}XhOj/@(/de:Laq3+g1n&p<&JZsLQm]l[yyPcsf[k^6bL&((U$j>]+OK -mCX*$J#/udN37iKbCP.JU-Z:%h<5tYMK[A]D1fP)*8ncQj3/r^9%-Dt{DrK(CBYen2o[qoT -7@x(1pAgSi#zLxpE766bR-8>&BjnNa7m?Ld#eDm!LRi*NA3PWh2@yw!X7/>R/{iO4Hp#rY6 -zuBXNseDFtK=FM!*-mIJ<5Cyvr#hR:alz7V)ZXugIbLBwp:n]I%@-KpF$QRX^=r0-%> -52[Y(!+4rj]yAz}{]ObJOmJ2ijF(c/ohI)X[TLC]tDu7z/vM4NPs1+}P?tfOAh6 -Zn$zl9vOqxp+N%H&hfOH/3Rt[)7$%Evb=&<8A0GNP*bW0e.M!RsgiRtm7I1t#=u[Ig)@f.@0}k$>cK!t).PEK2%@{I#Ns2p.*:).%e*:+}D!Y -3w}^nTe]M(fyxa{rq:>LLh3Z*a}ls03+W+JRZO^@j0&>[VyUB*p%=w7alQQ4X&/ox2>v9&X -J7KP!5{hUD/ay&]e[]G+Nu:-%NZN7gmjDB-TE>jQXqUjvFL4u^O$LAxcH?1e@[Rm[86JvAr -m{f?mrV!BTc?hQFpA-$#$q!3os8lN@x0qexk1]iQAGUNIiqO]6FUYMS+:AQ!^9jQLwDRaJr -E)1jZV@Uwzh?>OxfG+oVWxO3Qhg%=yCBu!n)w7XIc9a&v#cAlxvquPVa[np{uZ7qSVrBNV} -hbhgY*v(3wiJ&+mB(f^KFMsvh9CVQOgHWHXD-=#26$5NU-hjBD5%w4D&sYlN81^@GU$0>$Jc>yXHBm9hOIJiJ^uIAY6jN@ -LC9(T.wb=N^nFdumcVcxP3/cs5(Tj*LeY6UdW(9]h9S-g(cR)zLsLB!Tml*bs6P9{l&> -!J(TuqUSrlNVJ3}fesp54&y!xZPv*kjpGF$Y6ER%%Aj#).wkT78xNb)9XgSgfK.]uUn4Z.C -T5BErUQgH!1:vu.z9&/}O*qBSZmM]6^v(wm=3pXauDPo&oHP%BN/CQUz?I2kvi6.yJ[1(Pc -y=(t1W)655MjHHbyAN*}gfx$Ni7^T)ctgIbjhCCYsp#UFM=vYh/4c6K+Wr%=@-dKg>a+jrF -[ImbAI=Cke4UL[Qdkc -we.jbdEc((!nk8lb}edBkBNXINypUFN-(?pG[2npC45Ug45w!7aHIZXbR#(KZ-l+exV7<@4v9(KwB(/+-b>otMHtMtA]a/F=ze2T+ -T0/%afmKh]3j:)Dm76V@Ny*pbaiz[BgvY8w*ERzHL=6 \ No newline at end of file