From 3580df6593fa16e7d0ba267cd33350b9cfef07e5 Mon Sep 17 00:00:00 2001 From: xgiovio Date: Fri, 30 May 2014 01:37:12 +0200 Subject: [PATCH] Fixato il bug del makefile. fatto alcuni test sugli errori --- .../client | Bin 9760 -> 13964 bytes .../daytimecli.c | 26 +++++++++++++----- .../daytimecli.o | Bin 2952 -> 4344 bytes .../daytimesrv.c | 9 ++++++ .../daytimesrv.o | Bin 2412 -> 3624 bytes .../makefile | 13 ++++++--- .../makefile~ | 14 +++++++--- .../server | Bin 9644 -> 13871 bytes fun-corso-reti.o | Bin 2396 -> 2944 bytes 9 files changed, 47 insertions(+), 15 deletions(-) diff --git a/11.client-server-test-error- read write on closed socket/client b/11.client-server-test-error- read write on closed socket/client index 423dc807544dbe18a7ddb2869fe98dd8ea766c48..769765d060afdc7b688fff512868e08a1f036668 100755 GIT binary patch literal 13964 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 ICCu1=1C)FGt^fc4 literal 9760 zcmeHNZ){uD6~Atqk%of9XiM2v`d|cwP3s>vx{ftnI{Mg)nnIurE1jwr$9`#^>e!zB zyr$iv#ck8&VO-4E3aS`nQ#DmgNYPZ$KOb5OsLuF6+i6=X7ESpwur-h((M9Y2Vdphdw%Dhd+s^s{;_>;E`I#M^&5l;%on16o)DrQdALT10il5s;&x;M z*)-cWeox<_KlTW@GgDwD{8U6ejTpc*x9Qur%@mRSIdElC7`6$RBR;3vOw+M?ooPY8 zz79Hr=C!H=@q%e_g8oWqnkgsUnVMqx^&Pp%(-&0|WnAu1tMpCVM}20u6-`)42>JCb zxY^V9rcyx6xKE{7_JvbU(vIy?0)BlXO5ZuvPF$I0=thHSrek~TSj4nrU2%zL&d1M! zo_(BiCgRUZrfGGXUCB_7zi82 zdsg$!12B`OHURCa)O8ommDN%}h+5ROnh?#zDjAv(w5j7x2!hA;x(vA%9W~U)?-rsL z?KgsMLuR7g%p8mSCCGE7TJ&%Hltyk74S5mrs&p#3Dr$GGitLR>fSJCCOgqGfJN|Nc z^LM(QS$6r*ho!e4f;w-G7uE@Z{FO4MEE2}*XTLm+t4JJY9WvYKV<7MfTnJ2$jq$hc zO*vN2%I~g(9d;*#knTao)QK^~hxNS*j{`G(6`6cuX)l@8^nVk9cEkO-^8|Y^>O3CoAo>22(D-rQau0 zYJN94Ia$y@A;;~TFx>QbtE-O{^!FvFV7PA=7eVPcc0L=Rls;JG$7iN*f(MAJ9}FJk z>Navs?|=;>F5v@Ketx)mfAJ*(u29)oj$AB&=jx+P;EG`G4zF{;>-_9g=YgNVw4w=o zmV(9^u1h8(r;iwJq1cJ03;G}C8CiIo?X54~2}YNDK6vt@;x(8mhc$BTBf*p7T`vCg zw^||El1{;FkwLP&zNH4^mO3cPf45lPHc3sR<5+Vue$@?9A*fDGTu@c zLC+hx^eH2A0b{_$fes421fk%`zB9nvi68NNSOeQmKOpJ$d~3Fb>nC_}qRYjfez+yO zZd34_ei#Nn!9gGgtGBWLgTP%ftqiU>$OgIIy^hy0()IK2)do*)xqkkm+JzUv4xW5% z=NtLTRNhb6LFb@y5>{V3!zdIRq1@Fcyoo(5KfiKKPs5#TdIGlm18W*Pt#pB%)OOqC zjgS4Qxqa8Lmx`ID=im%e@acY(GSHZgUvfImlt0Pp%N!cU!WmLsx zG-TE>jKPC)2N(1ST3XsoeZ!zKP4|@t87NCoL8%3Wk*jIsU~UZ;Wwz!GQYbjE2IZ6b6%2~KJ#9?;$Y3CN zHhm>?9iNX7gK46)mBqJEWcse61bc-9a=hTo7_3E0=`IxXgMOFpCI=Y{epD^^(bD5+ z!L}c{06`jznFpl9&2;#`@fUuN!SAa^*{VbQ0tIKWWk%3=wfI+HXuf2qBWE>mu>*yg z-?HVGz!IhMR7#^M>Mfou`e(OXHSRrcxTrihVgv|BNxR2{uZSWt-0m@#-wiCI@$06 z>U=kurFUUjH^2RtMoDpPm;Oj<6{!(Y>q(s@wVBijQr{=_GN~?7L!|bQIznoY)KjF6 zklIh`7%3js-M=RlBgIpr6d`q))DBYbl4>LMPf`z&;(92p2esASm9P_*77jU1IvH}} zbt0V#?Xn)wBB8yG-D8ELwzeKWeC(vXZ(qEnZG*Nx5l=dy4O*Q@#lyQTN3)X2c(P8| zG0VYkhIq_lXkGE7){v?b;dm@&g{Q=HN?Te4qs1Ici-xqQCC9E4MqJWyO>2l~oqHV% zy&F;u;fC&Xop`X@jz-wvSjiqc7ILgeojh2+1h1GXYt9dU!hQoa^K)EeNThMz;p=Mv zU;nrxWeSMJWoqAJBG6kOs9$tLZ657&@s;?T)nfJg@(xuus`@@vuUGX$s%}&D4pm1~ z9aD9$s`sn8i8sAsu8G0pc;W{1ga6JMxYvj zY6Pkgs77GU2;6d)*1>nqTbfNig-37)k`Rw3>+=f7(@sL$NVUN`lPV6V zkZuFrmB0hI(?z%)P~OkPoH*W2eHlxi8++XBA8pM%d+BI4^uTiiFkonHc_mwXo^CgiNmdla(FvyF2q-Nez;>u3G&-3m3f7PquKQ12G zx^+(|(GqjktQFX}*caRYD_NM~m@|vlneLj!^ZplP_HH!&8xMyF_T%(06{Or_UW?j$ zJUJ@%GLBO3AOuly1Xi4|9w`r3??_aK;nXqc9e`6uU&W#4k@C1JA9Up-u6(%3xQL45 YjO6q=W_tJCV(R2Fr5j?_A&+_c4^n%~#Q*>R diff --git a/11.client-server-test-error- read write on closed socket/daytimecli.c b/11.client-server-test-error- read write on closed socket/daytimecli.c index 811d59a..f169889 100644 --- a/11.client-server-test-error- read write on closed socket/daytimecli.c +++ b/11.client-server-test-error- read write on closed socket/daytimecli.c @@ -1,6 +1,4 @@ - - -#include "../basic.h" +#include "../basic.h" #include void sigpipeaction (int signal){ @@ -16,6 +14,7 @@ void sigpipeaction (int signal){ int main(int argc, char **argv) { + struct sigaction sigpipestructure; sigpipestructure.sa_handler = sigpipeaction; sigpipestructure.sa_flags = 0; @@ -58,12 +57,13 @@ int main(int argc, char **argv) { char * socket_buffer = (char *) malloc (r_server_local_addr_len) ; int ridden; + int written; - + sleep(5); - - for (int i = 0; i < 100; i ++){ + int i; + for ( i = 0; i < 5; i ++){ ridden = read (sockfd, socket_buffer,r_server_local_addr_len ); if (ridden < 0){ @@ -74,8 +74,19 @@ int main(int argc, char **argv) { } } + for ( i = 0; i < 1; i ++){ + + written = write (sockfd, socket_buffer,r_server_local_addr_len /2 ); + if (written < 0){ + fprintf(stdout,"Errore durante la scrittura\n"); + exit(-1); + } else { + fprintf(stdout,"Ho scritto %d bytes\n",written); + } + } + - close(sockfd); + memcpy (&r_server_local_addr,socket_buffer, r_server_local_addr_len); @@ -90,5 +101,6 @@ int main(int argc, char **argv) { fprintf (stdout,"%s%c%hu\n",buff,':',port); + exit(0); } diff --git a/11.client-server-test-error- read write on closed socket/daytimecli.o b/11.client-server-test-error- read write on closed socket/daytimecli.o index 3753eb46716a25b19fa468b4766c269192eac56d..459d3bd92d315c1bb5e211a9ffc90de2fdf5f513 100644 GIT binary patch literal 4344 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 Xz9Mj&K;QlvQ&jJZa7%SO)nWeuZ>KJh diff --git a/11.client-server-test-error- read write on closed socket/daytimesrv.c b/11.client-server-test-error- read write on closed socket/daytimesrv.c index 12c17fd..8dd6a37 100644 --- a/11.client-server-test-error- read write on closed socket/daytimesrv.c +++ b/11.client-server-test-error- read write on closed socket/daytimesrv.c @@ -57,7 +57,16 @@ int main(int argc, char **argv) { memcpy (socket_buffer, &server_local_addr, server_local_addr_len); write (connfd,socket_buffer, server_local_addr_len); + int ridden; + struct sockaddr_in t; + unsigned int t1 = sizeof(t); + + ridden = read (connfd, &t,t1 ); + printf("Letto %d bytes\n",ridden); + close(connfd); + printf("Chiuso socket lato server\n"); + } } diff --git a/11.client-server-test-error- read write on closed socket/daytimesrv.o b/11.client-server-test-error- read write on closed socket/daytimesrv.o index e160c2ea49a5b74049148d48fd4d9d1c59d0a5ed..f275a5af2065cc6661db829a3848a4524f10d6ff 100644 GIT binary patch literal 3624 zcmbuBPiP!f7{I?xVj5%9#9FOdg%ymZ)^3g3qETwnFlLa{LUHlWCC={7W{2+1tTS(G zQYf{i(F~hFz#QVi5=yT^FA`g5vgER!O7-BugL)BK(1W)e#P$1T-rM~$-9gX?Gw*x9 z@9%pv^WI$0Cg1ExBtW$U9Ea9OQGh$0EqOE$N1+dTA+7tr=@)-rL*(BqHX04x|K>yN za(cCEa0sdHYum%Mxj@$;_HB~y9lEuo8#LUYteYKp3$(trICp*#X4^XGOWK-VCoj)Kiei|K1u_3AuTqR-WO^eWa-4+8hE*QAv9wJZA4$+fDscw>M<`M0EIzScf3 zT5jBjmj7Z_*Dg`Ky0$=FRa@|DD!cB_&rnTE=}VZph5=hyeQkN}{Br!1Yx+{T3#WeV zdRXmNYqk2?C8(@n3SWNx z&zLqxk~w2mSS8bQ&n90lJFYN}gXd(=m?CMquH!<+vU5@_TAna%IWV$Wv#g8;y}|5Y zq0$SJrVvhYFqh2C3e)R_@q$(HoTQ9cG*Ic8?pf0Xm>3@)Ne-nm6kbIs zQr>Jy7#ZvZPLKM6l3cTBq=Y#mAeA$O0jZ4VLCST)LDngiOdEB!Bh1vq+v&reFtTUR zfZWW&RNgg8rb_dF`y>XSFSJ>=3^*$LU~W>Tu8YYe9%#deulCX%U`FmQ51>qWf{z;e zNAaTe3|_?9HbfX!X-(U-X#VHXhGPC#|6%l{{LyqO{{__XMz*}YiUVRVaES7LSL@6r5CMMNOGF8H$% z!NIVz?GvLq+Eqfl-3k*Aw(xsWbb_3GMAO-v{Z2*aJzp;XJ-)rHPW2r>gq*hXXrt%Z zjz1a0pN`?r#qc9B{AdiP^Q>JxV=-Kh;iqEw`!RefhUa6r9mCJX@QX40^BBGu!@r2( z&^lRDStuEn4dsgPz?`v!JYu0B9J>g3Dq4Z)1*a{9=PbGui%u58gBC2?6jQcv%7C|m z2cF0|6#@COYuO?X)25(9)}{lgWR|k!S@_tsgbA)`MMX$yMGrWZn;$J~Au@pYb0Ur#(^G|H1fUjCafPi8^}Ml>JkT(?62p2PIc^rcp=jHD*u$mC9aYoc3bH X--^UhAJ{2o&(}GLzSKx9O@i@1+ir8c literal 2412 zcmb7GOKclO7@mZNrXkIm@_raBwK<^5RRb+5g`z}crHN!jL{h2Zp}{!oc-zFb>@{%^ z7Oub*i(@Gq-~bm8Jrqtz6}aiaX^Iqc0Hq)V9N+*F5Tt-|C@4i$!uRj~6Oyf}!pO7V zeE;K{e`j}Qz3}(%t6PO=xlZ7MPPj~i2s+vw=&upKN;^dfXrWdgHHW64zQs2Sr5vm1 zFaanvY#tf@m+R5{tV4Q~d!~&`*&@n1hESe zWzD=G-KHlqZ+_X@G{5!&s^+q+7TZ00(w#Hvm%O2u7ekIwUrxICnO{{)OEGue^Ioe6 zXT1nK5P`)1l$F(4P4gs`-882Ns^%2eEnTxLYllzbUQR(&ay72Gc&&oQwDc^k>I}(3 z=o|^jHhQVGmQgQ#DBa3)I$qZH!z*SEaz?C5cO;DZO47y8Yz$Nn^c%BggP$T)r(~@# zT`euTm1ovfW-#&^{L`{pD)-~A`rUcyemn@fbia|+H)-TnVz_$C1qoR#aO8Ou)w|K- zRt{+DR`y}|+fS=&YsS50Dv#bjzrI!6(CXZ;?MD6a)wxUU+ZJFp>gS&Qw2+UFS_dN| z@kz%XxAM6cB9CM;q!YM>~Nx0sq3BJAgj`JB2v( z1rT$D=Ya@`egZ_T(YJs%0#5*OzC>RJ;yno;1#Sl)0^SOI7)WuuffTn3h_^4i19%H~ z8~gu6?d1Ohh$AliJ%5h#3ueqfD1Jqx6?vp@eOy9LRm%I5z61c@LA(|3q0;*Y@ui$3+3-% z${QQYB;fP*uuyi|a#Y&MWbvOs<(-jC!ND-8g-0!iRMYe&MgWu(*-4d19TRFIXFD(^ z#xi*T)w9P+iJ01he-;cq$a!LDXd<2+NIN|bvh{w(2N?G;?iZ%?Kl*z&=aH@u{{WP~ B%R>MF diff --git a/11.client-server-test-error- read write on closed socket/makefile b/11.client-server-test-error- read write on closed socket/makefile index 16fdd6d..a9beab6 100644 --- a/11.client-server-test-error- read write on closed socket/makefile +++ b/11.client-server-test-error- read write on closed socket/makefile @@ -1,9 +1,14 @@ +CC = gcc +CFLAGS = all : server client + server : daytimesrv.o ../fun-corso-reti.o - gcc -o server daytimesrv.o ../fun-corso-reti.o + $(CC) -o server daytimesrv.o ../fun-corso-reti.o $(CFLAGS) client : daytimecli.o ../fun-corso-reti.o - gcc -o client daytimecli.o ../fun-corso-reti.o + $(CC) -o client daytimecli.o ../fun-corso-reti.o $(CFLAGS) daytimesrv.o : daytimesrv.c ../basic.h - gcc -c -o daytimesrv.o daytimesrv.c + $(CC) -c -o daytimesrv.o daytimesrv.c $(CFLAGS) fun-corso-reti.o : ../fun-corso-reti.c ../basic.h - gcc -c -o ../fun-corso-reti.o ../fun-corso-reti.c + $(CC) -c -o ../fun-corso-reti.o ../fun-corso-reti.c $(CFLAGS) +daytimecli.o : daytimecli.c ../basic.h + $(CC) -c -o daytimecli.o daytimecli.c $(CFLAGS) diff --git a/11.client-server-test-error- read write on closed socket/makefile~ b/11.client-server-test-error- read write on closed socket/makefile~ index ed76715..7a44636 100644 --- a/11.client-server-test-error- read write on closed socket/makefile~ +++ b/11.client-server-test-error- read write on closed socket/makefile~ @@ -1,8 +1,14 @@ +CC = gcc +CFLAGS =-std=c99 +all : server client + server : daytimesrv.o ../fun-corso-reti.o - gcc -o server daytimesrv.o ../fun-corso-reti.o + $(CC) -o server daytimesrv.o ../fun-corso-reti.o $(CFLAGS) client : daytimecli.o ../fun-corso-reti.o - gcc -o client daytimecli.o ../fun-corso-reti.o + $(CC) -o client daytimecli.o ../fun-corso-reti.o $(CFLAGS) daytimesrv.o : daytimesrv.c ../basic.h - gcc -c -o daytimesrv.o daytimesrv.c + $(CC) -c -o daytimesrv.o daytimesrv.c $(CFLAGS) fun-corso-reti.o : ../fun-corso-reti.c ../basic.h - gcc -c -o ../fun-corso-reti.o ../fun-corso-reti.c + $(CC) -c -o ../fun-corso-reti.o ../fun-corso-reti.c $(CFLAGS) +daytimecli.o : daytimecli.c ../basic.h + $(CC) -c -o daytimecli.o daytimecli.c $(CFLAGS) diff --git a/11.client-server-test-error- read write on closed socket/server b/11.client-server-test-error- read write on closed socket/server index 65d3aab96fb5539db3aaed12388f97c4fdbfcb4b..b3461798c711adace1597ee3e3ba394ed05af9c0 100755 GIT binary patch literal 13871 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 literal 9644 zcmeHNZ)_CD6`up#I1b?qO;R^B&ax zHjKv2+qAvfGfz`GHwEUx|B7g56*@4CUD}>qbF0Yq?AV(WhHnDyh|egUVOVB|HCxed zudy71f%+sHArUWfScfhWU0!Gy87teAnGyNz-MH7W7gsf0>^3M@_GbN~J)_Nxr_3}e z`R(mm;@Epz86aldXVN_Xq8Te4OSGyAetT6x$6iwDiM?r#Z72*Qn>Z9pG#jx*3)}eZ z{aD%KoHG%BQZfv)&1gwS+D)gH-`<$ASEGy&W37E`;yO8o2{erQ&AT>xs$o6MStss# z@vIZtb?4eJ5^*DQxVuV2}#l0kGDy0Ieih^2CN-#2W3 z>N{Hfc6ZN)eDeUz^c%I`=$F^lN}MY-tPpZyQ;t$%%8+V9kfTBPOG2c8xn8S~$AQ0y za@Qk5?1BCs@Quh!^qZM;RDtY`E8v{;yN8AN@*If+uuY$m-X9&1|Dd^p|= z%(NVteysTA*;DHt-LU1vsc$SC9{Au6+>vLbxEnnqf5pWpnO0%EY{zrQo7hh+GIbnd zAaDjl2+a14{&ybESZ4d`Evw;2tO=En9!0K1?ngXWKBn*xFw<9&DJQ1wQYuB@{~3YZ zy8REm`{o#Y7}4&~6T5Rtx3iPool{)*!56rz_1?OlVfXfnJilvPkkxvASS%Lv2Z>p6 zFaUC%n*1w}+1kxIf?%&|f6!^4nr+{~_UnNMSy4aFZNa4XYGb-Rl7AAaVeQ=oBidCd z&S{f+uA@Bv0XAZbeK9!jQJ$U3b`59~9GGme@uywMb>3{Shx39)wDuVg3*ETK&msb#}H@imiSCJfgiuw@0+&EOOd$_}vY;Zfjk7@9x(yme*la zhd1jWwzd3RhmJX>_s*J*({zZKQ9VbqFf>F%dKttpJ)B<#COFV}TDN=lv;J>ot;cm( zJGW7_XvmfQ4LCS3)nemM8{D3&tq)$%1`&W^d^Ex8alJR&m+Q>iJ>Qd7C_M*GCg}V0 zTxVB3MpbVQ>-O13$aVYAdhTU%c25In{y8*)2|brpHQ$0$VQOAg8oQ^Ka4VqQvkq+G zz3E~xxS|V=3a&rLziA9;`r`ZL!GRsq7e6Y$`yGgb14H{R^?8$AuSaiI+MRbUz*G?< zxOJXOFTaZRwJ9gQKarn@y>(9_P`T_BhWsJIX={^(VKzGYcICcH!4>sR|N7CJA-nSy zR(-y^ZX0686g<%dS|F?UKCVHkpLahgbDg*HXJ~K4u3HXGcahbCy$^%t!%%eBa;AbW z;LE7cN3ft!|gS3(L8(-vgAfy(wR&zxK74E~`;&^CHidzP_FZaeX;~dy@dCS$@y2+=YP`C= z`?{Xnokux3qD{zlQEfv1rglAe^yf6+o4v;2Ud5DQxSiwOMOF&-tOb2ZyM|6jz0T|& zJr)QKX0LTm^OHW<1J^`hC&>no?#^*gh*wA;`}4(MJv4=tATx1$gc4+IuZc2tZfg^T zXAu!Sr;QGyA|1xe19HG&4*1iI7vsK;agXb+S1O>82 zem{tsUw8J#AQA<4DmhsNR&^Fn4()S0#`VW8>NW}oj_Luz(ZY|MaljGp0E*RL!zwCP zua>k%(yvRpPSW*~)=Iij(oK>+At_g2v3iT7^^$ItRG0MIk~T>C6sQmly$_v1TsQA5 zR=J z!&a=_%%l&7Hl>njEAm8z$Rwi&Oe~JE+3EK3tYlQk!aLR&D5*TR7b1Z zvK8W6ZLxTBsJc01nd$aeB4U}%74jhX0{Uk1mW(IAO0Gl6{5}^25_z0Y`1%^a*FP>| znF2H4g#*t&BLW?jfy%{qmG?n^pIgHxSK@g^v-&?Zp~?r3jQFP>Mh)0;LF)B2bDz zDFUSklp^q{Bd~O3)qcKnE)5%e3U5wkt(5p~y0S0K$1wRgZt#i&kJ(*$+>6K*=o9HG z*+O1|2*8kp?Phy4b=Ziu9iVI#WX>fBQ4NumjFGPePpjm^;G^+m#w5@I%#N5vz7c#& z3UA+53*jEXR@36`OM=hM5bcL3mM|?NVI@-(v_arp!Vsl^+9UCJGD_4zWVUBaX}l`{ zIBWbEVcLvHkNOClTOKxih44@$W~E|MeM;hV%%Tq>VBq%&i;VU*_-#hBmWj9j2*b6Z zJrYZZx>hq|#WK;D@qDtqDQ1c-Y14`sVjFLE7K*V-kgf;tCMY|9?hwr;L@P881mYN* zXj&+Ss!*x_K{=;mm0e{ujgx^%b?0;YuZwvl%Ilq(TOd}X`6ZBy;o6jnN@DQtJ1{Rn ziHD$|o^O*9FLiJOa4^7D4&IM4$cpzkm{)Mb?(Z!Qxmf9sC>+MaC!76L;Tl|E5&r@i zC0Ut%4eG^beR#-+M}7FR4`20RUiNwI|J{dq1?bg(=)(&fC8(1se0Z4;Kj_0NeR!1* z*ZA-T9}fF4rcSiI)~*-WSXlC0;HycDXu_H&Ys$9FlR3ZJn7^}d z49wkA*yY%2v)y=DxrZE$+FLm1oKp*o=e+V9f9|2>99PakrH&})aGE)m<{U_#qsTpk d+~dbRc-#|521B@K%*^3pNEgMtlb17u^dB&BZ72W$ diff --git a/fun-corso-reti.o b/fun-corso-reti.o index 0422e80b487c5567112ca6937fea2cceeabd6903..5b8cdd92bfc60b55aa5c99c0ca0d4290513ed60e 100644 GIT binary patch literal 2944 zcmb_eQD_`h6upy;O&gnLEtW=7>iD5;(TuIF)z%=ZVeI>e3N32|h3)L_#0+LZc&mpBVaK7Yg09AL3Vk^jBHfeyos>MHb?{Z{FLTJQKgX@ZP=m z+;i`{^XARlT{NfP8qhS5qQUFX_aq9ilq>p`Y-L{@ocW@7xI?8xj?D;+I-YIHff zj`Zf$G^?6TZFJdOpBxVNw+swJI8v>wY2h<*mj~oC?yq9qnz_bqu-D90|GSoUol4xp z<_Y|-mO4mWrPf;S;`20F?d=Zl>le`%hT5!JX~W{v{oM_RS;K78=CpeIJdTCh?2w5i zP-|ufvzicoPxbHLB`(0!tTR{CpDpTv?Ux+a3hd%Az^SRJllsAIK6Hcd#c70nPd{cH zH;zsm2|4)kq1cBf<1(OKJPq1HS{vUvwEa46=sv`0keD>Ru`B)gz|_dLfebR@*d*a7 zH)-m{zwO08Bpl@{ntJgsdhttyqg>>3vA=mJK2eHU==<_0;Sorxf$Oo*|g;UAvzYJ^S4bYmJ$Bn z6imoq!X|SZhl&yY{tlV}Rz?2fXp@Os&t**L=TH-#xE^?9azGFirLOe?#;K;7pAq>7 zmHu_5-VyYPqAn-%_b7a&9GnpOhZSB{6ntL6WxmvJihP9zOKL-cAoC>utjJgCGXI7o z3N80v!l%(t_mpBfy)cw>dJ1q`8O(G0-8tE_}H^#7V&rr>aw`w~HGisej!90CY$0PCPHaOA(vKk=~fjy)#?j zA0SS3Wd2Q&OBdN@bw1ew|5ViZQ{?lz8SO~m7sNhX7V)o9Z&n{>LU*Fz`DJgyw*$v0 zfNxvHT)_>DW3RmQYV7618S+lV-hAMrcl0oPWS0Y{TySz1y;9z>VcvJ#Ut(~r+Nt{r>leJ8M8;3{r>m*^jV3^$w-UEuW1jNs_f zKN^(d37m2z{$2v7vm|jVfz$p-{4;^my2RIoe?@3om%e$)uO;wg{V%t`<@ZQ+lKdYO z{+M`=w**f2PqLq%6u#`Iz6IV;@O`5GZ(HDdMV$H^#Ubnen84}3hs5tB@Z^5#$RVLR XG^AvNA#wR#oKtXl&X*Kip7VbI38B}E literal 2396 zcmb7GO=w(I6u#3YZBd&yN`?3{WUvZ$(Xjy)MG7x8Pp+6k&_wE@+?mY0={(F#!ps{I z3WJ%ZEqQ&6RdCUTD{<$hE0Hd&T4@G17F=W&S!7}DJXBD~B1laA&i!d#CJpF;d(J)Q zJLlYU?!9y0{Pg!9TL&3S>}OyYB<+1*X$;U)7##xkpfmjn$WjdGwLT@0lhM#H6T)}r zeT5MhV!}Byv8|iguR0Iqqg2-pF!lt2eQbe*AtCZLzv@-aX+v*5ljli|ziA55x?aYl zLp@Wq+5?U18y%S#**4g^uff<}Xp?k`nWc{UX3DdR>Vr+Cf8)mf8pasbp z%c4Fqy@*ZId3Tg3gj*8DYOd_6fZl!=biS{3zBQdstL#z6N@h-yk`H2VtVjD>I>gvI zB>dPo1`%x;4M6O$oajgus;kLaH9mQ=#} z#&rY#8QrF!#UGMqZ&^dwL7guhG}d`g?>0|v0+%VSE!V z6`CrdbrhHcn)2FO7pY6W>}*h_(FahX>zKtBxnw+mvFI&wZ_ySp9!L>N-cRw$z(a}v z{3CCEPkr-1UP=4PFb_|6?WJK_PXeK{fkxA3ZxxHhj5TzT;!MA`?w1FXYdoCnLbjKk zRT-CeR{0ywnzi^DrEk?&V(m6M&HLnJT^a_z;;dlNcD$I$_EN(7roPhLdPKTW{n5L` zUI%M7I^c*Nl8Ri<+PMd>0*Rgjd$4cMlLdo?&T2m`9yqJfd)N^kI_=wVq=IqsP^n>? z8vZZ+qVF~I-QlLH%k+aqvplS~0e0k3BJ&-tF4ff&z~kp@D!&6ei_B5dVMXMsE>DQ~ z@N|bC`;G??N^SE5sqN@P)dvcRH*l)tO&8KH6wluE z&#ol$8^u`Ce!9+w`c1=c{2!H1*ZWYvPvJMXrTlc=yZkPoFC5VEGUVfs^Qak5)$t>c zc@B+W1F*jY2}(T; zmV};#M4kh-mT4^^r2PxX0VFctoi9m8A?CYrQ|se>n1Fu9Abeat7>wN`9dq-JV=ZP8 z)0Bm@fL}ul(NPS-&HeF72mYc<4aek&e<+)7E!NqU!n{SPmw|@zJYRXR0w| z+N&T^I?h!+->o1G$zAC)ZYdVFQ==r?7L|weF_FQ4ig*~6A@UV}mu;#ZuQwz8W)bUf K^^vCMg#8QrEZLF(