From 031853d8ee22b895cd6a67e27a6616cd726354b2 Mon Sep 17 00:00:00 2001 From: marcelb Date: Sat, 23 Sep 2023 18:26:43 +0200 Subject: [PATCH] Hack for non-guaranteed send and recv functions --- .vscode/tasks.json | 4 +-- src/tcp_socket.cpp | 60 +++++++++++++++++++++++++++++++-------------- test/client.cpp | 2 +- test/client.o | Bin 87368 -> 78712 bytes test/server.cpp | 21 ++++++++-------- test/server.o | Bin 70616 -> 70856 bytes 6 files changed, 55 insertions(+), 32 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 989190b..b2ee7b3 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -6,11 +6,11 @@ "command": "/usr/bin/g++", "args": [ "-g", - "${fileDirname}/client.cpp", + "${fileDirname}/server.cpp", "${fileDirname}/../src/*.cpp", // "${fileDirname}../include/*/src/*.cpp", "-o", - "${fileDirname}/client.o", + "${fileDirname}/server.o", "-lssl", "-lcrypto" ], diff --git a/src/tcp_socket.cpp b/src/tcp_socket.cpp index 4fef6dc..f1fe0c6 100644 --- a/src/tcp_socket.cpp +++ b/src/tcp_socket.cpp @@ -324,15 +324,28 @@ client::~client () { */ -bool client::push (const string msg) { - size_t sended = 0; - if (ssl) { - sended = SSL_write(ssl, msg.c_str(), msg.length()); - } - else { - sended = send(conn, msg.c_str(), msg.length(), 0); +bool client::push(const string msg) { + size_t total_sent = 0; + size_t msg_length = msg.length(); + + while (total_sent < msg_length) { + size_t sent = 0; + + if (ssl) { + sent = SSL_write(ssl, msg.c_str() + total_sent, msg_length - total_sent); + } else { + sent = send(conn, msg.c_str() + total_sent, msg_length - total_sent, 0); + } + + if (sent == -1) { + // Greška pri slanju poruke + return false; + } + + total_sent += sent; } - return sended == msg.length(); + + return true; } /** @@ -341,18 +354,29 @@ bool client::push (const string msg) { * Vraća string primljene poruke */ -string client::pull (size_t byte_limit) { - char res[byte_limit] = {0}; +string client::pull(size_t byte_limit) { + char res[byte_limit] = {0}; + size_t total_received = 0; - if (ssl) { - SSL_read(ssl, res, byte_limit); - } - else { - recv(conn , res, byte_limit, 0); - } + while (total_received < byte_limit) { + ssize_t received = 0; - return string(res); -} + if (ssl) { + received = SSL_read(ssl, res + total_received, byte_limit - total_received); + } else { + received = recv(conn, res + total_received, byte_limit - total_received, 0); + } + if (received == -1) { + // Greška pri primanju poruke + break; + } else if (received == 0) { + // Veza je prekinuta + break; + } + total_received += received; + } + return string(res); +} diff --git a/test/client.cpp b/test/client.cpp index f98cfbb..f4a51e3 100644 --- a/test/client.cpp +++ b/test/client.cpp @@ -29,7 +29,7 @@ int main() { // cout << "init cert " << endl; // client myserver("127.0.0.1", 5000, 5000, crypto.fds); - client myserver("localhost", 8000, 5000, crypto.fds); + // client myserver("localhost", 8000, 5000, crypto.fds); // client myserver("localhost", 5000); // cout << "init client " << endl; diff --git a/test/client.o b/test/client.o index d18a99473b8badad8bf832e53b9a3225f290ac8b..8a01c9f3dd0e03b519a8b91cfa9ed38005251248 100755 GIT binary patch literal 78712 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 IB}>uxKf42RBme*a literal 87368 zcmeFadwi6|^*{b3WHBn5Xi@RLc#SvA=0;G^a9P|yfS3!Wh%QUAA*;EWY(nrF4Oq4z zZM34aUW%=@d@L&Uqlov2Xz*6iqDDoHO6?+4BcevD&F_6?&OFcTlYN5l?eCB8_r=r7 zdFGrmXU?2CbLPxE&*r(#TQD^-Az_%o*D&KeBLVk?=SV~zbdAPU6$?e z`AZ~TLA{=6uaoQ9VA9zVub^I!Y}5aur1!rQ3)6^*YuZgy4~UO{z=8i)4*Z`w@IM8^9TKPAs~qGU0l$c+XTAgfEig_z{$IhE@$h#z z=()%NeH%e;D3btcz%_$e|$Mn2mDwEJJ&mm;};J4eBjWpZyoFtaA-H% zVZ0u7ke}<|=W`t7&v)>{ryclz>!44HL%%4v#T&=pIoSVjhj#CFX!k9LamjMf=XMAA z*E!hp76<-T2Yj(Zzlt6F?#oz<-y6fBxG6ztO?YZnS#>+OS`}7=Y2nD5I70-85!+ z!@+JRLjDQJmM)ti8ND=sxNd`=9AX?}@)NbuTUcH=y}WoVtU71r^gS1sQyr{b5U%nzqkeHXBi-*0 zS2ffv^h>lq*w9edfCfMHgrW(&|e>J$e&s4S1p5*RS~QVG*yS;b=AReFu&O2_j(JbHaC-6#o=-A!kSPm z)TF-cjio(Mr#w&}C=Z1fd28UsV2z9mSep7ikAFk;2HkbH|bK!v*>6LX23j+-meuRLA zK)4Q*C9q)c#si(31+&S@xuLp7KkOdN%12x` zwR`J1fnu+WA<_lek@hBBWs3kQ^uYM%#u&4qA+X4gpv$pqFK2yDs1_?w*jvLI??p^C zGN)n zb<2cqnDK#Xx%`oPAi|GRUR+(b011G$LwYhU)_6UA?M@^|%@qHEM!2HFeEFpm7dJ zbDA>4nn0-5Xsj#0JQ$WWkt6{TZYZx`!~)=|EupYcUX9@;3Y^85kERVQ%T;xa;rWYd z1JIxf6&sCe%0z2X6XMG+N4|8qzcLW2HtLaKg)0p>8#Pvk)KF*~sHkW_o%u)u=^QeX z?q#NC78}DAMM-`{8~#FvD=-oh-_U_%{(a`foVs#IwI~fZ!rdq9{2B;@%}F^zU$E1j;0f?hise zDI-x}sU>QAKm6}t{Fh*)h%(7b06sx*$r{9$1pWkY(D`hFu@ie8I?r|Ezrs@%9cZBT z0r;0LqHosd?lb6QDcLyGq$eAnFufD}f&SaD(>mC2gHAH9c>O`#9b}x%^?U?Mh%5bEzTy3#!vAx! z#3$SEZ2^f-wc-DErNoc2;rq^!_%s`S6_?X(_!Sc+f36Mx0^{>+_<~82ztD!?#N{#@ zKBrys&$Hnx7++<>-@^DcHhe2N3$BeeeAi79-($n~-XihIy$mHVR5{g#@8bH(P6^2iZCZ|Wk7isuj4PT<+qZ)pWh9A`{3)HWC4d2Rkpx8mranz;GF$nKhNWk>> zWdX+{n48v>tKkta%qvgBVkNJhiQ^G7V2{t81QyS96tURT>@v!My4< zJi>x`wP<(_9fH=X;YXOgP+c1}{9y_SxJknwq2YTp{3s3ItKpB-@KFtal!ouq@JDO-ehsgl zy$dou$iPKoeyq5Y|0HYp<1~D#hIecDQ5t@BhpHT)(G zKTgB2cv)A0Qo{(KE@a6Bjf&(rY98h)aNPu1|83JB^b z4bQ2Jz`Hg46irT=hWBdtbPYdM!{=)F3p9M5hWBZBpN5~N;R`kVbPZpo;rZxYQ0Hm* znHqnUhM%S3>ot6#hHugE7i#!c4PUI`mumP@4d1EZXKVNs8vY^;zf!}~vo&?C((pf5 z$bE311@>8Bp9S_=V4nr{Szw<9_E}(`1^zF!z*i~9eeY}Ak?d=Cz4)ME_?C2q69+c= z+BPIVCwerH{rzgg*g0_WzX4K?H;BKAC_A@(G%zsGDav#JwR79+W|A+~`wgj_G2Sq!#efb~NUpgQ{|IIQT z459yKnGS@|f3r*nLFm6(rUM}K-z?L?5BhJG=>QY`H_LPYg#MdlI`~2V%`zSMp#Nr> z4tmgkvrGp(=)YN}gB|qWEYpDw`frwx6XgW6e7q=s`J?K;Ta-UC%XE-~{+s0!MEO~> zOb0sXzgeb(9Q5BT(*X|pZ|7MvERxti%nGRIYf3r*n zDd@jhrUMl8-z?L?3HooA>A(d2H_LQTg8rLjIv_#+%`zQ~p#Nr>4n)v@vrGpe=)YN> zAj*fBWjYW+|IPCGqWtB*RsZuu`6IJT2OsFaS*8OI^xrJgK?nM8mg#^4{Wr^Wuz~)Y zWjfG6|IIQTWT5|MnGP_}f3ut~$`_htI>95+#&)dpR*~*XD%Jr z{JyRHrmg&{t^B;L{FJTyh^>6Tt$eSoe5b9v+*a)ED{K*S58^1SHln2>=qaNw|FaPF!clXCoG1XU!Q9TR>FjIYCWGl6ma z;lq%M=FmM-(ftQ{Q;u&XzULT%KP33G=My;XKfXwx@7d4K_dVM`%$M+j@AdzLM?!#$ z1tbsjR*E>S>QlUKoj~qsG@ViEYnyQ2J-GEn{t+JGYoG893eh7G=c5%!{$6mA+a+9r zx@P-Sf7?RJ3`WXeCxuODBE9FkZTBlmzr!Ghv7 z-;oTnflIMuGqrs==@NO1Dt(KD8R$IG;Bs#FOsm}h5@1benh?5NvU5{HP6{jo{iOhJ zt4~UQ59x(g`?G#i2VcjG*2nQujOt%G5)YH}1&sOAeXLM8CuD2k*(cho?()9GvXMk{=0NV}&jeinAy_9*_L;qpbE(bvd{Q$HceO?&k zlKvN;Bf;cq6HAJ*Pph{%SGV_;)Kkf*-j$^J9PEU;z01gLwx93oC|!mTXa{ixJJ@`< z63{CozcBQhV(f{dJNn*!hSBa_*4C8}@h-#7IPWbBAM5sZ3VFx1mv(CP{!aB!=UmvW z&D)vK?(IC+drQN+N|h_H$rAqSYcHjt87Zbj%HlU6Y}?EDhb@*L*(??8j?P8%+YgAr zi(Z`qQ3a7+Ut51d_&~PORx*$ruJ6cQBkLihi#>7yOw7dbbSo(2Z!_uHo7NC}h6p1wQ1)(o95jd$;bo1qh4ArQ@WjrVuy^}; z+}Ee6AzwR0KV@060e!S=A%uK|jWXN01k`8>sn)h3Pndz67V7mwi~dWVvs~B>WE3{( zg-xL1B~dU4X>LeEFHr=kJNhJSFFN^xFY;lu85(s$w%e2~Eo_tKh2-w&HsRBU75mnFuAnH*P5eN?KC)ga zAbbo_m~2k7TKEWrrV0y1n)<-jN2k~#g9 zJ3UR~`wUhABl;~gy~JEzbU)OvZ9Cl7V0imQKwsPyK3EOIS;*l{$|NAZ2MtAJdS1z-?vTu5$~2Z?~bJH_gg(tGq@+x zwAmhrJG}oS6W@)=)b8C(zj!uK%)#7&y*o<(iSG6IBCkvFpu7MJBi@QiJ9dg026}gN z4Z1HztmkQ=2~h7trZ4g=#75Rrw0b(O_V2H(uq*UH ze)5G$eIL~53Z;VxEz0_0M9J5>Ng1QlvW4B#t3k$~x}vW^Fea%fL3ylk+B_c{` zA9{eY2y5sNP3`!#VmPN#-(xt1cj@ENPYJUOg_$yVp{Y{L2n3vSqDP{sw!Q>l`puLA zdfx`aYhuakh03M0`1JY4txvh73+wVA4S6P(NVOd4$-AL%fTDW0%=W$gDQibItLZI4 zv{__HA6dk)M{EBjG&bpKcEHX}y^&46$c#-(F~Q{GEW*)9;d9TTEl}5sgyKWtFDXx# zf^i1LLokXw!-vMVA4ffv0Za(Ef<{xibQ*?BE`z2ukP<|iwnj>O+r3-cqDVh?ZC}`4 zN~(mqj$g9%>Hn3{D0!(Ewg=pODt|SJeJ35cVv_leHh}Wzc0!2*&ov7y9Sc%0* z61I~XGPhKiWEr2wOfnT4cn*yam1Wl9#y#eP>0S1ClQ9&%y^u_ZiJR=h=%2PxZ0y+z zz=`IBm;HcMMHaiGCt$H0s>K6HJ0-*?rBE-0paD%#D0V8-yzpVLHp0GLadY@fHbMuG zyQ4d|)3DJDS!d0V`)MrOuIV!9SVQLaD=A5CFYWRrY})QxM@u7y21YN%e>1wIG@;ka zpy|^{v~s#g3wo%*kEAzP`(6xE2el_NOml9jk3Hx4;5oULxN+L zUL3J(($*2;0ewh}YF!Lmcl6_U?GUY-!k!$^?mWtr)jjP+VpcD-is__#mpf)YwO!L^ zgpVM_U{v_{3?$aVpiK^KYx>LSWS^UA{#8l=aV^^+eZLJX+%%dM>*KXRX|sWRDwje( zdAXmUSR6>88dl{)MEP9r#_)c^S>Q8d5KvMO*_tNNKq5WdCY*|#5i&)y zvqiuq&%%Fg{VB~8a2P^( z(Q8o`VTB8ua&C@dPC~BcpXYARlB+^@^qzlG1t~HOm7{;eKa%)d^li}w6zY!tK(t4N zO8RMt7;xcwmLHHeb{zIZI}bpFg04kXeyDO8in_AH-(jBV%eOP#eLaYVX}mI zsmOQ2<5B1(`@JcemFr!*hg2+VekwJ zT&8~vwkSH3Ku4GDmq-hvd>|&CFEWaU$E<5#-?l+BEge<tTQ^%{91ABh@)j{xjWh+d?g*$peDL}k#`82 zCtF1T_V!}*q~ce{)+`n^(JEyCO&hu9a8;8kwU^?*qEz1*NE@F0ewauUq-NiUY(lW0 zTdAT65`>A2`*psKky@813_$n7)K1)JaoH6u-AdtDoJ?tcn2v!Pv_s)o_p&(XAg@5` zszz>u9JxN}Cf(8FMAu^dnqH9_MM^1+up4+hfEt zf~;&!I;EjUQ4!C@xu{$k57$qDUU-J`qG&!6aXw-y!cJ?Do_df&*bwT*tcBE?53OxP zYj9M@lj(DyqujxPvpaer6;FGPVm~=JcGWj`Aq~NEGkHoK=oL%4;5|9E>fxe@E_J|x z>7-gt)l&$Kbus}6F(XCYZM39}^Y%6z3dsWVSH?8cxs$;B9+>S(C}GNIj~9>uw|^AR zlgY>6@YaJl5z~+zTJh{jn&WZe**Oqs4YSRAWMsWb1dUNb9T@5cQG~Pf_)gm-_Ad^e zL;+f4tF$@jM^BWykEia*M9*q^&{T;~I!FIemJ3nrm}jA~?s@SR2y^;~Mny#tJWoa4 zSf@^hT22FGgnElMQH7M=u-FRR$C^PJjLCkGW5y*8)#{n8 zosHBE^qL(j#O%Ka+;E0uYyYeD-)C&0tPb{A z?BHO_?X_h0HJjgzUBytgejE~F=&JXe|7sn!S?|~J+vb63vs2T_d+naP4v7$5DZ*WO zJtI?~jHL^+5NjHTs2W1U!nP#mT`6n3uyaUR zPQmpkQ^xT`ZFWVkdJh|-+3)hCqL~L@`UXhNU*kO*!;v051T(oix)Je7d(ie6g)4Dx zjZSw*@n#$OCzv;3pC=zPM*mDm_4Li0ZRn$(-SZ&EbT(#Yyag%F^M)P@YgCe^TuRR0 zAw7Li;}ofLRq&#HHcmCW&?`W1bo)8V7@c^2t@ZwTQKa0jOPu0}Gy7Sh_uiglq!m$0 zD|(PtY-)NEcZj_94G*yT&ccjIJkswXAZpzl><@i33V7ujYEiO|c~0Ia^3WscaRSYG zaJ(&^LCc+;TuzSxM)LxD!}Qj%*6<*M+4->)49P#SRQg$qFY;6i+*hAwJ)W*7P~DjL zB>n4aUrr2|R;@g(o_~8_;0a7EdX55Ica)qEhuLRZtSg!IcVM0PB=Z7^9hBe=Cr^Be zu-k`Ed;7@_bC))4)3; zvO}+aI8gKk0vf*@Q!jeTJLpZ@h88@Go_I-&zo*9wI6UvVAcc-jI%sQ7XXww6iK8J% z6!YC4WV(86o-&m1@Dn`D|dk0=EiCYIj67M^7cyFg+*-A=vl-`art~F>F{SXr-lTMPD zWg^7UT(Sz-?=h+et2 z3IaVhuNS!PXdim4&DW=`XS2V-Y_Z%*PBSt1k-kXjCIqsLl@aft=a}SX-Fc(P(C8=K zyUqKyt~4^!xPJ&6^x(049+gkV6E(q0$9a*$QFLF~otKm-uzV1k@+cl(BLDw8)h+F* zj7%CXk_fTwlRn(Uv`8XJXg8L0T{q_$YCU?!X0j-4lebcXBD<%;0A zP%+&myvOCfM%nK07L)Hicwx79tB41pDUABoiR-Y@grwIWPXQEqp{-u9s)dxbxs&u1 z+I&LVJU}kp;l({^Q*UYWZ#te7gzo76Qk$EvR@y9GXlgTq1dy#ed`YtBkBfI_B7cMQ zyf+30o{b)l`N6FpAKQ9*OzWpxtzVA#OLJ2PBscBE|f&Z|_Xe}gx0c&N%CKnBhYYQ+8_diG)T zRWwx)`DFV7i!KcPJk#%I`UN)ny-e?5`l&Yh5~kNM-F&Z(Y|p-Y#1YU?mW8i>LB1~M z@>=w!6Etn^yP^S-*|s5Fyir8$S??&NA{0jPK$5B;gt-xF!pE2e*tz`>(Nyc_(q>l zyo=~O+=r0j5uAdGb?b$K$Umb#CB368O-T|pxV1}(jt8xfKt7{L^qfdeU8{6uVC zLRcx2EKoqhC5qkAq7NzZ_aO53oa^0?a>Go-!*1^u(ti77(NITW8odG{ABJBbM!Gxt zAlaW3?Ub;wE#kzZL?CEN2fC z?~XqD0hy|YZs#$T{Du}#7(RBhAs5dc;X&Y^jn<)FOkmbSrSX~^1%9>U5bBM%r{Hwe z8Dv8dDlf%hm?U6ap)A6~*CHqo-}VNRZw-wq+QWN8c$@@jwqV%#H_$~el<&U~yV+i* z)!yeHD*~R!kdE!HC1!h9S?%R$IygknfuJ5uuS_al)q9BVVQ%4@okoA;??R3aBA*x z1M!+x$vVyK?Q3-I$5wftEZOd=Y*JR4TW|7>7LC!avOD_7%Osn&S(qIL9S6XQA}X8< z17LLSqO_6~i3(m2R?RyQ|PtW~!ykfe>Kxl@-G9A4Xfz6#L58=#Gu6 zfw|^bT(1r0DqyZGi|c>DHOTKuh)*qsrr*VE31tYq_(jyVwvptS*Y8*(#_y>zglS*o zkwSpTrbvemuplCSc2F5vQh?H+1#5|@VkWJ!$l>BbQmI{`eB?Ig0cB4;zu!n~%SjN; zZ^2Jdby2yT-1k9Y;l@kq!9r5jk>Cz4($t-GvgsR%6y6oBJ9-d}cDw6V5#)$MwP>W;Q{TTO-OUUr`Icivb}Cw;*D37LV-G$}ddQ86CCUnMFE^HE~YGGso>w$xJE zVQXgD@VjmVm-6kwC|UgfbC0sG_LfX z*WYK%PnEBM4M#a5T5De}$n=(&MheVxcZ^N9-*$Ov*ca9m~lXCa#mo`s#Ok}; zWIc$)v^_qX+4G znqA+OCz?t$;`qYsOLz2I;jFIxOnrY0nXK!nFYNS{I8KcXaniWkGGSpej+zd8suWnA6Z^4ytrc?z~HbiW}_AMMUk7HLrt~I`N|4j zprP8u%*9!S8$Was)0cT^nE_hA;l^|Ew&pmyYuTspDE4g zB#Yfljf#7k7+IrDNBdA7VF;#w!6h)an?=+jzUl=gp9cckmyj9a#V>DXyD*V>#dSBq z3%|~iofJLlj32gkV&qk5=EUj2_0Ucv`0doAE^wenxF=1&Ki<^zAlW0qbhPZzJt9UC z-|s3-K0gU)dy0k>(drBtt*AuO|6o~|qm>M~GFq`l$Hr5h2)h zsHsu1rO~TGTQTDFj6ef*%o`q@_lC<1`3Mxp|*l26OE`wAvRkRHE3u?tQT!N+M zW_gq%)clyb*6zAoL{KtZAZQxy6iZF98SJP}hP;)J3IC0(muF}<2?4ST*xnKY?{CKn z3#iV)%|-P!kKyPB({BAU;-t4Irn(Q+*KqZIP`1&ztQj_>ho@5w>`6wUx3)tY(W6wR z_jgJ91y+4Q?-N$~FxtcPQ*HE3Okc-zGbZtn@a%pJ2cJF@C3cE`B9sh2{}$bfJ-PWa z3BG;;~hEMO3F>XBV~`|wtN{1wpsg~=sd+C(cS?u?cHIucahd!P`3BE zh(6?eTj!hY{g3J++dKa$(oLM331g2#Id-wcYZOz2K>g8{XhK3SR^dd?{MD z-)Wnz`z3FLQ%@GyHau2L==HTFqniL-05~TT?{L24>zFq10&3!y2fmJp1KSV8?~m{@ zV1m#X`;k(gp74b&MTl#VCn=BzP zV$AQ<1cjs^3h;w|!O0Kj<&t~rkbS@sO{Ng98aeh>J@kjgQt1UT)=$0(Cw$B$w8ephhnyZuOh(xZ{hK)10g>-`5eN`v2FjHlDD1RJ<1#+!(Ze zEKGek8pXnZS9mN(TP+1>eIxEDxO>3`?!08*8Hl#@7ew$|FYyw2I75)obvjd%E(lIB zMS6LDbQ47gknh{VE%&mG(U@KF+c=Ua4s8sw1Fd(XV!I|L1$8m@R{_sa>K>tauQ~;D zh)GZ9P7)2P#QjykFGOAPbJXdMc8j9zR{@DIxnfvDo*o?QaDj zA?DxjV>Gb$K+*bJ0r!x%nuq9WOyumgNtAt{6LY+T?)$mYn&Ly$*J1s=fQe>%ViHZE zVTq`}7vMu_aC_7z{q3khFZz(9#=MF@Rn9V{u(?!;fEeS_^eV3IZi5Xvs5RMB95+c% zi)r{Un>bl{@cXi46L^&M&a4|1VJghF*mt~#uhrjNA-}AGIaXoHt;7UfG3Y!1Z>4t} zcE+LFZvdj?LA(DAz+Xv$2zENLzXAAEqBlXeRU+4si^tFKmH@aBbSa>U1ZxGk&tCrq zpz7abPD<6$FT{M3-=2;ZsfjLrlYg^R25Fu48-OvfHUB9LiOL8i)^7lQr)tV>pesf3 zegm-TduSn9&@J*^>U1y8NRn}nN3K8ZHvkttOk!f5#9`plF>o=D;pDGD#59Qe8-OuV zX?lqg(HOs07hQ|>k5B*C?jLDr2Jr+T**4SP5rz`aJ;m=rY!h>pMXo_Zowi65ZyH$U zfPNwsdHW$<9h$hblxUMz?R_*2<&u0Qy`SGc3TB4l{C@ubi2d8(UkR~T@b<|J1g-4V zd-)HExj_+lBN_P1Z=l0z&pE!A|Kb|q9)kCI;uRY#QCusE=t}H+`M;u_C3Xq1@8w5` zIp)3m(?}6utoQPd07kro3^$H_FaN8*l1#gIxoOz-aPZUL%l`ueS}X40wGWoLNu)$P zI{%IL@-M|=x7Y9G&q8H=rw}h_i`fR}+uOJ8fBhp_d2m2(f)B)L8-uLvjchiwei>8R z52^CqgD#kqCz+L7t9P{Z%$=&Joxzar-6x3zqC5Hgs+9-ZsA z*1#E2l(Bk=Z1+-FK9&qp!X|yDDBot=R{bYttQ585umfk&+E2S%T7Uttd;QDMX9H_# zoWT3E*t(&@EDVKH+qS=>?cnu3MjJd< z*0tEJ_T@4Bc723PKPU#xTvHb9qA{e-4E%j4WqA19F%6hOj?J>$H}uU8$iJRPf4ANI zOYM-n@7ia9J+uIQ!FH(2lQEXQ4~(w>`-1r3vU_1&Lv@AQF!1$xd05z zHTY0XeKo%K?$7n-*EZK(9&E@j4rhm(>Z^nK)8=H+SD3w})t7nwmwClCl=?<`db%e) zBRw-cD?K|sCw**sZu&S+y2sv+Pvpv}v*_qi{ z+1c4S*<-VFv&ZG6=Xi25ax!zWanN5=8PMgKGrifV{GQwtg+c+bH%(~ zZhEdKHzPMQH!C+gHz#*&Zf@?laZqs_njZ(z<4|oJP)?oPi%)QSN!G>QqM}(vm$>r_ z-4pR$>0o1{dnSf#YF$%pg}bt$uEt$aN0uJV4gd7YzJZ=dP;{*1Ah3 z7rNyawB1g8`0Ta2$Xinhy~1EDZn+Ff293f6`jSxd`aC8)(6fZRYeT)JWr zxbeMjnigieR=)*J)iLRl>9h9KP;qgA8*>NW4G-(}3+e(DLXTiWI8+%b$GmV?hG0pw zL6_>k;=?z?n~CT0;3DSJG^nes#U!LbXbd(qqoY=Ri%ZxfR1?I<=-sCH7&YtWUq)i6 zd6S_q*ic#5P@{TM6{xLftO{H{NKdPsKzVtvKFkKDu9I#d46Ts+)BSAdxFUq%pFIpO zg;SdgbL7~2i?jSzfJr!d*tv`MGmI}Fv;TJk1M6^~ymDZm7cdR5pWwX%11kX!{nNle z&;Ew7XcZnq;o1C|_YDkm9cUOC$Or53$3pV}Hv#?%upjVyz@;hpMmW;H!b1$B9?*>+ zGu#E32ly)BJiwEXnYRM^09OK50CoXB0Js(KNx&rJk{955a5OyoL+fa?G|0q?^mavk6Xz#hOIfc=0cU?)Bb z{Vf2@1^gpm8Q=!M7Qn55D*%&l%(4#fM8GuI#RupETnktQ_!i(&z}Yw*S_3!<2U42= ze+}3NnEVLzgB`N~(*a8W3jzNG7zX?ta0TE)NUZ5^wa}kGO~y;lBOXP2fX4y)0Mh}h z01E+^0^R_)3h-vYjexHJMgcznOvd<(z}_nja1x*o@E3R{(+T)Hz%_vD0FS{Rul*Qs zJm3gCQke%B23!nyBj7!NW1fI~zzKj+z&gNWjQei^(*Pd?^Z`BvSOwSvxEgRI9&Ww@ zm;ty0un=$ro-fY_JQMIHzyiQO0#*a|0xkng#}n7pfS=(&Y7=1LGq5Az62MgW*?Pcq z!0!R;0guFk^jiRP0UrjO4Y(Qb4}iM>Hvo>rA??F>a-R!m;LU_Gz$t(&fL8&o0DK5= z9pDDQ9>C85`vJ>vYCj6U38(?g1-uTh4Dc?%7QmMPR{(wuxDN1V*vR$(W&rjBmI01J zj(ia{$)?&IarOtOx7|{1xD+!wh3JU@qX{ctNWSFb%K; zFb{AA;JtwB07u}>w=IB21O5Pb7T_`X(aLnd@qi(~xqvGGuLisi@D9M^@pP~YFaxj` zkly1oFhBnSxES+}UI@Jh@IAmJ%)9RZrvM&^7a^Ad9*a}@hXJny+zj|O;4VPdD`+1Z zwTl7A1BL;+0DE79KLNIE!nor7kWp_83}gXT;J9HfVDo0Q3;6k4@CQKpUF9Z%@53&D zcYTC-a}508WB4E7>QCTDfQA2nA7MlIC&12A45JHh9<>M93TS+aI0WbhyaoIPfDZ#! z18xR<8n7RbephzPvG7O0@qlvx=K^*DUJbYo@D9K&fKLK`8by2p9KH?qIS&2^coLuw za0=iJfE9qZ04@ex4|osYDW73}0sazj2jCrmBk;1;lfK`C?fR6*N06cvM z+6AOPytoDMa=;$|mjfQ-HjF<5jtATdI2SPMU(g%y^Uu+Lz>+U84uB5;ZUy`VFbRp% zH-IMrp3?`t0p|i%02X|SaRyugxC(F!;6}io?Zh|&P6JFn0sMezfG+_00Ji{E0gn6% z^#LaVt^%wA+z5CpU=;8bz~mF*SAc1N^J$L?7zV5YTn4xl@Jql|fMs7Jz5q4@?f_g0 zI0EC|2Y4pn!QUXh0FDQ&2CN2L4cH0z3g8;R9f1De+B5xppzVvp4cWBs6Jf@R~8nCp6+*h%_M{()nDot{pbGkz`#zxq@Tgzl@8vv zVToIizYFv!pkqo}`p>rL^f%~+qGt_3CmU8ne#RXG0}H^H z^dU5w$Ybei8#ZiCqG*WtsGnEdH8AiHVA2=hQ}(`K*|4^xVSh*fC-vtZ$oUHPf=gRG zb1i*0fZh*!jZROj5DZj*E9g@l`b&Bo!}M0%C*7{;LF3+FwR7e$%sI%}0X|dL#81q2 z3P8W?fAGf+V(3#$dNt^`fxak)UT@Nuf!+uD89IHw)&6SGe*it+xVce>`bqQ)ai8=F z79wTOM4u2sJjsx8`hAFB#PgiSbDeC5>~SV|W`gHA;`yV-L-u&Y;-lw>6&SzaG=3f6 zQ{ybgFY$ZgB>Pt+VNHR&Y}}hVRZBTUUkrK==+w4Jzu2PR1Ns)wk@8sde2cyT^uG;3 z-wJvc=<)1E?I$4)5j{hfAF|}11o|7GBUQB8pK8&kfKL4zr_<%I%Kn2sl>UoBC;i9h z^@EoDd$@i)`;pDIpnp42-%I0gJfe~scZ}Dtu{4Wh{M-RKk0YKVRkp@Tv*U>2*pL0i z+0JKz{xRss>Ux$)JxPxW$ghI@nYd4S1_@TIKTIM{H)vtV`4#x8ac|?9M?5qpE5LIL z+KLwg-JowmTX!)%=_0hH`pj{Xc(y>sJ>aRry-6n@o+EXpb`0zTW*lupuY?H zD&kdbkc{71GNyp%($&uXQ33i4(4G8?_Q8J8uWE&#nyrzc(@7~H_6 zfqpgUk717K{U7!hYkn1g=TPkRD`R9_B4kh>szIkSgLw0p=*vK_0o_T*)u8_p^s%~p zj1z?_s{ab;be1CGoSJ*=>u%7KK)(U?iJo*Syh)9tw)UsuT;Lk;IE`aE=vNOxF9iKc z(5IsfQ$BROhIOn5{ZF8e*6C%!L?SkHg1!p$FLXNj;zyE)`uQ+;!Ve;c)_D>q3kITZ z27M*ylXW^|P^w7uU7&9OJ;si;mi&=8>v#`zr~E7n^qrtP`DzL1TR}fvZ=d55wJ*+A zKo9BkL=pN#?7Ic^b8!}Qm`*RS^m`cevp{!he>3REgYLB6?E?Kc(9h82Yk9`V5y%mS zpl5-e4Z4$$lz^T&1U(FT2I!~g?aOH*`wu$x|5TlRsn&nc&j;Np7HkH6Cg@J<=`PUc zg6=fFBXI`R0Q!k~``Vh31$r~+PWCNfdc1fm#vk;0)OWJqEuhy9L4O$ZYS5khXEW$) zL3i?xU7)W59Y-eC9Gzv^cO({)m7oW8dZJ9Y-N0pm{twU>=yaL$iCqTuu?#$EIHz>V znOZq$^QZLJ3x2x^JB2%UkN%gdn+&CwZaY5c+jc-G@VX1%Cl@V4?OF^19Mw4 zw4AdQ^fjQLpwqQjuoCo#hM;$W{xIn0>Gh!lE$!6DUeMnFUCc$bCTe+!fpb`jl}=;i z2K`vjo%}Qp^ktBLzO8+=*31L_FGIB73i@kU3!K_t3HlP$cd}m>==VFUMQ-Xp=*6gy z4B49Ng>rldm4^S00nb$=1G!Do&(M;}3-UXLElX;14Ku79Cmn_ez#f-SWyO~$Hvwet zLeTGWpwk{Z-72+lysHXb{lJfGSKo-J#UUlGq48V}iTg0vsC*#|yj-N3*h#J8WuCv{68 zPU0JdK7Izig*ZD%+KGiRMz>)L=(NTSzC7@qgXbqSPm{jV_OWi8KlM9{!?9Gz? zuJKG0=Q%rE+~zXyrQ(@KM-uoFHQglNl}XI^F!-9E#~Cs8;V6xd`Z`ngm2}&HLq+=4 z|3kPp^#@PlJ(g~C(3#tfb8V9KhNc_Iy4CW#R3u%CUv$om(n0S8J)TdIE>&oU=ojKX z=|-&`?F?oac%BB2k9aCI9zKI1-=*g!AA{#K+?#!pDWZt|^gLz95cD3_z=-WqO9* zj&}C467&(6gIKDpHng*sF3^8~e5bRQUeFImeVPuYj@tS|&ykWrAEVRx?8OaSF4wQX zebUdgekMv|5Dz`GnhhC(=PPV3lr5Nt`dNi`ZgtRuWGn@JDd?+kZ`LOt*3KDLgJ;Am z&V6|W^#3@tL1UH#dLQUTbU#beQ^q0ld}bsP!=unny{?PoG0$gm!BYtyr*SC*y%cn( zacu#80q9P9q!pmkAIx$Zw{@VGgYL9f?g70O^g_K4+J3$t^fjOlwVyu*i{{k7#oy1n zA$L6J%Rrx_w?Sj3?bYUiXFYhF=3y)7Z-b6dXN~(b8Mnx9R)YQ#=#zCi+EDpL7wDgZ zK3b=1`{`cL`#}Ffr<0B!S#2aCIePLn=l%3aphrP>(qRhdBQ`njrz=1|5%e5g2km*s zV$jb4-D#}v0sTzSo%TB$KyL;eA<43#HU?Wkr@!krR;R-T>f9s=3GQOh&(i5yo_!MN zH-ql9U!4Lv{f)bLF@(mj0`xzD?%03OpB$q7dqAf@qUhLv&<}mx*?wC=PXZk-Z`nuN z?3Q4r;G70)sdF4d*dD6Z9m|o%AaJ z{Ts-4@_}j)c7cArt^F$yifD|Nf&Med7kfdqhH`#M^wpprHiUk!aD6BJc7X00LVtR< z;b6SGgOF*>6K$_FFp!W^?D}(pajon51fwf~d;z$uBG*&Hj3(E;!;Je9Tu&z%FD1A> z7-sBDaQ!LCSeoeiW|;9%BHh27c*L)gjCY37R}}_s_avNL;QBIQnBVnI!m!^b(Cw{> z$ecGP9&!CJ<6FA@{V@Ck=4;@4Xbf$QI1RC^)HN5)i8A5nzk@S@zj#c0f^koRq>Q`- zu+D`)1$kS7>)iz7O`$H@Jvrg1x#f5XBEfZIV!{{1{oBL?{+MVyLM@^(d9hq2|A5Kq zuOt{hvh0*hq@^DwxUNq$en+(iE3hZ+Wba6D-QhBBNp#&Y-1t7x^`y)A!!WwNLy^ab3aYKUZlSE^A0!}5iCAe-FW~@#O zo3=_hGaYMcf(svO+n9j!PiTH}7ErJnelq$Bq3%y~VPo=UB5ofa=K9|x8Bp9S_=V4nr{Szw<9_F3TnRSTq_ zD|`0O$r82&B>dZz684=Vq55~#yYg!r`dt!T!zD22@0-)bY8nr) zehdt8h6cJgYZRRFAFgJMdS8|knbwMT@94rKA8~P!9y^F@9nNIvQuw9Z5v6xJ3*KL{ zneF2!LtKjQ-vhFL7zcsEpH&e3En~ysshlXQe)nYS0^BC4MY-QNVa3#Yv z47(U^V%W>DkD-yl?K5;UOlO$Ku#n+AhV=|v8Fn&U$#4zBE{2;J_A=~aXk>Ex4BZUV z8Rju8WH^suJ;PRpoeWnpT*I)7;U%;b}OD-@cyZ1D}8=(}f@5M%+tSD(;UkR9u!=yc2;NlB3p5g#ky z!v7gJ@$`R4@E>DbXlwUb;7R^Dye`vkQRsRL{}H}K96}@RCkV8W2pA7f@2L=ePM+k$ z+cDyz@7NN4ZJsPwOJJ;Ld==xxc|U0Mn;YUkVWMOtyU>*Zy$EmTuVB1g{$s!=U=?t) zU!_SghJo=WIV~(7M}gwX1fKX+zM}jDL&qYFzpm zKYX%eJc0SAVSy+4TbW_#7_*0wjDN<){~+Vv zVZ73l-pMC9Dql478{miX^P-QWA_=UIvgcU=iBR?&VEJu~SMrOH9SkME*g<~Fm9g>z zkVE>b{8q_#iZdPHPe2yb^8_odfq44d4t|PSY0EW6+&&=W9BJ6|iAM$gC^P?3wGIaU zQ0SR?sl?DbZgjmW@bX^&_gm&)8I;(S%zq>T>j{vvo+mV?ZH9;ONE4|40Yg;8k$#fxcCVl2klXw-Ej$-`Z81G{_6BuuoPk)!-5a!WA zGw`Y{9sdiKQ^s~v?cU+Q{|NK{qfkmw^ZiKd56FM=7Dzn3cSlzm@YJts=g6|+znJka zlu7&<5*Rly{e`E1Y8-0oG3|7Mv)C_UFR{td6htMPgZ_;`BWIl(a8u$$4# zf*EWB{~=VPQzEdOiHp8VKz2A_mMovn_(`b}|Kzn2F^2KbyP*%b4iR%-_ z_s*1MH7HSQ)Mjy`o;=rKd&o3Fji~Zp&$!RKA*on|SS}0Z;83JTB)- z@x~R5&*J%5#rTIDsEnEl7B-}kbH9+oLN)LW%YUI+BI%uYx?FHP>hC)CTQy$e z8GotG&Yg^ZjrE@(#Tf4}{y}zp<$DK1;Ar^Is9wpK%>1VVuXq?GK&u1(Rp3d_@Kur< zMR9$En?v|s2Zy@j%Rd)*lCzWjQ~BFs2mX7QKWUC3t{e%B|1kcIxf0RD_}tNGH}Mcd zojWtyI1hMgcRG*b$xNtZ{Ik4%A#94Plkw`D{zS%q$oS+UiQsBR5*#L;Jx2pi?f(4| z$&X=1Uf5`l0tdDpf8dWcV!twOE6L`|6h2x&$`H1n4 zvpAIPN`xBsV#fb6BJoO2C*waWk$6mhajj*%eZTMy77$DN~ z++Rq%8uu$1Z_fw*3B1xl){y`HoB3y6C(9K~JR5;49{+W~Q@fAmOU6aapN4=;_^UZi zviXc6#?Se=WK{9+8pe;}d9B8M4e;^WeUbU?@nkpxX*~W#z>_{%>^~{2=Q9rcA2{GA zpC;veaDfz{#3-(_4eu9} z%#W2Ej{gdO3<3zrpUo3d*}=#7HNTYYE#P*aVf@vLC4$3>k$9$*b2!JP5cB6VK8xpt zYWD%g+w+!hfgcS^sON27mP7dytuKY=NQCl}JQz^qu?-SWzp0`t2z)$$`!(ZNu;R+E zK4Sa`o<}M!xe!2<&Qh}c_Xyxg{+MfJIfIGCjGtqRSHEC<^+l3V&Fd!}Ur{`4QNl$xzaxLTSdGh^?|NIwHF4AdneI?|l8Uub=rgLGsa?|6t zTk3#+$N|3*c+xYK{RCl6T-zCMpI@0CIqvpziAlhdoO+&*H7w_H#@q9dUorl%3ninn z;Y+})dln(UC(Li(=bi-zpmrbPIH~GZ0t{2v|gqq3x&R+fJ%S2`c~LlZ~fkLu}C@ESPbV^N|skL8qIEr|$g;=0j+ z|F_J4q%EG%^D462)@8E3YAYo>e!HguPx-vNSMsZWvw8 zzk}x^!lSs3!9uBYV3Yt2z?1yNY=0Hs)-nDRoBm0d;PLX|p8-#D=5gFe;YQA5{8QIU zgwkOV%UM<>@$`FEx|RyOyx0GI4|vK~Q+p*gnTbc|%64zz{FB|?n8Nt`SRd7HEAZ-G zmwzwwSFwSEOni^=No*geA+D5hvfW{q%CfS5JrpDR+!2s?`VBE%xy=9aR9SXQU=%Xm zzMs7b_(SmAEw5KHrm}th%>4Fz`w79%LN)LO^WVquM~%zTSZ`=OQtyMnZNyaqJdI-) z=MTzOEsX!TRr1wKV7$TjLrWy0lJWhF-@yx=is$>EE9GB0M>49sVkYC&doT#g;#$G@ z!>7ygbBzCh@l72Pq3nO~cqzYRio~<~8rh7u=d0C>x371r82{&=OF2rPr-4^CVO0d! z=77)Q_5Fkv$^8&lS_C}V`O~W;!pHdAfv0m_qn8m3RtfwuM%hQP`1^(YSR9qUVfpW} z-PHJ=be{CjKk#~Y30IxZc&`n=5_rb1ipt2lFpr z{0SV#j%WOXj4!%gB9!00%lNkoCH`RMKRqvgyHkLtc3U|3<-`=lM#=m=!6rk$x690bIOn};{yqVGymmii{$8G6J6YU!jJKaBdnQXg?Qvid zvxQ|&-bGdAF16P?Ehb|u$jQelOJ-xM_5iF>p6<$JS+H9 z4g2}hCg!(4M;Ktd{kg->rb<08%a?+A*o=U}FO~RHxZQTf+vE1@z{l&?E(iR9m~UjC zF;`2$Dj&;W{AP|nDsQP^d~2EHKaBPH3*&!ty+o+I=q2FY%%g)(ng5SGPmvCZYc%2) z=~LY*%c?H{;MKjP$bVZL@HerX`+40&xE9w&2mTM4-~L?kP>cuZb1(a|(qS_2>Yhal za4YlIUn{Xl55%>J@#8sxQgQO=X;QxZ`P$ixx5wu>j9nyf`;yM)T7WK=XPfh?{?2D@4pibaZjm?}_ z(BD6yYbndIpJTkt_`?y0=)&?Xt{sfG=ZB+a#-A6b0#ACL%j2c|A70q2j{~t zvYf6Pr5*^&;_}Rr^6k$_s~G>*V#%k*_io_b5*73B6U;vx{iAD)1jeVp$J6sa%>Qsi zG6tDH6L|*p*M5%V2cG;enHg6wf1|*2K?6%1@b|L((cEr`>%7JIUiRmc7~k(8rvUSo z^t=spx=xqCs0Kb>e;;A~7nVszHIBoI;`5&hJjuV7*C|XNan&+@^rfG3)Im7&^@KhV$+Smej2Xc`t7l?{QKpueK2re+bUXeB>5 z!!fM#6DDKI>+22woZ@gnuHPT3BQ6yA6G}6ui;pOkS9>o5()v!yWKX{Sk)>%xmwB7L z-dQF7DfP2T(*3c#8N1^x4v)q6VHO4&Dq=WEUJ=^#Y9W8hF~RZS6d#;FZTGo zS>Z+XL2pb`d--)J^k!OdrXQW~dZ`1fzr*LGCTHXqr-Qj*z6bo^wt9^AOXw3+^6OLu zHR)dax2R<0`1W#Y&*Ru$PPmG`Ews1Y&KTV7lG)ZE@1L9{2i^SmSWhsYOrblB zu${DpFd;^<1Yh$C|DSc}zv2v2Jl^L2hEq*R|L@4j!FSUdnri<$!lq;hIVHva6`TJ@Z_%u%5S|_GgKO5Ly#cD(5&KY ziWB zf7HutMMb=AY^o0Dm-wf#YD%*Vit~t=qQ@|-AD#AB1*_}v89w_|C$UB77>pYm9;x%w z5Xd1L(Oiy$C(~?PeBiIyu3!m1|L4gvndwWsXu~Y@l&bEz%3`W%{?$ zVpE75`5{MW%(HyZ2!D4r zsxUq~8N;Yec`FcRgeo9;xAQ#9$zcYoo1v*IvM05|>#UT@sGgBK#z`x9Rm^H!7^sKK zT4Pe#5R5Yj<1im{)#rHG=NGkD(Ocv$!q*uuAY~p)>-a<56Bc}n=F)Fjr z4%x{}&5F#A-VKqLVRW>-ETFZht*i2@d=?E}j*JSqm+1>i4G*iKCkN~}UOA#=W$?bN zF&P;KecRDC$}>r_*=N($Xi`yIx&+ZzxS+oRsd<2M%);sAG9HGIs+0NDv_#zUWLJbL zIT`hfJQRLO{|{&6G+^zE$R%Pr0tQlf;b+Fr8E~&aIz2CHst%}EsT$H8< z{0+gD^H*mtFvoG6`90SB;tc;Z{6|Y=p_auXBH5$62P>8*t0Gt#z}kRCp7tkN>ZVlo zP8%}pXK7)7P=6b z+n}Oj4o@02cw`2O9G;9I_K1PF=e!#`Vm zeOG4ccKPO{u``-hR*9J~!06!EmxR7O*UYE5{qxJ(&|{j1D{UA-V~&Pk25cv z#+)`onSN}dDHw}jltcS+J~{lsw2iYmll(BJ{K`3f;dbPxdbnfKWUR5GyAeAK#0|1 zT2XNh>?#l{TEKUlvlN-oIAkfijny$Z2MH;JA(3|=QwjLz<4mm9k1;Q=%9~tPHgQtE zA3r3fK}9^@Q=4Xsua3tq@K$8r-I}5=i|JSv#ip!TD6B1wG|BWBPs__spYPFr#>TT zm!eNN%rdM|_Ty12RMmv?3(Yogqq1WyGNDs`ip};_5t}qP=ip=%VQiegc(RIQu_tlX zYG`e$C}}W*bDUWI(_F#pja}8%_E4NWmp3e`57*hYX8-3gTP*w{X5$nmSX)sYZySw# zDD26Uo9#L{P%uz~Qw_2m0-)|-7)X7qvDd*Brx{{8aP}JX2V3Za<~Rzo1-E!}A0EuX zeRqi><_MnY#6zrHB?ZNJ5;Wj^T8F7jetGR|j#_bLIZZ z2DCg=1kM&Kgqd&bU1vQWI;oPI7EZ0Li5PE&?Jn;WDTBy6HQnu54TedcaiA-zTa;}O zk`{TDbRn)S2v_-o4Gnb-wtWRSDQ4s3t|Ax?gsMHb3)lJSw5ZXK{eoCDu=#5)EWZr< zQ{oFPz!?%nCfX1=#QH3;b%GxLipDyB6?U%GL2--{_hfg?8SOF3#nMFEVY@$&P477=&@kFNF3m|;)Gq_A7K2kI}j()+Hedun0?PEGMpk9 zO=f{~q}PafQW-Z4Sc$KAwBzXPcy1SO^RD=jLF;Ewv`CugP`sL3ha}2>2X)1A51U$p zI5E3t%Y81*6+fkGR^>e%EDD-&MvAjEYcs%c{HKLXe&AtxE$yMEHk+Dv(pwW}B=%y{z_BonFa#QN6xb&b1`u`Wj1^D#n?1C2lvf9E-baUlc)C(q z=Z#(IF#wpca&ui>w*ZgK9Kt*eRh;t^n$PlSuZlY0vme9BL6Zr*OviCRJVfr{IIZxA z#l8l759J6`5I39VQxluzK0h$5RxZ)$tU91WxqwYhVnR5GNz%vBhqt zd9F%HkrQW#Q-5S2luTI1KH_Z>dT=1;mo3nZBg4ZPo%)ZdfCtv{;Q}TCo=b&sDk)Z& zW_@5WVD{|{E!$8k<|T|hjm#oA(BY8`@$tg6`M9@m@TB?)4}jG2y4wYZ!c@#t7IE4^ z# z3q(7DguUDUSK77oICfNFi|`bWgk6Jzu!JH-g0Xr=-Sc3TWMa^$71HV+5X#1K+dXYF zcH8OKOm7ei7Hrr83pT7+AfZ_Xv49OyKtf{4Q<@FZ`~nCYCf|8{b?erxYx}ybnXYU5 zo_p(7ojQ;2oKwE&PtFmA@z|iij{DyvI#K57pyp`Zlkp-irgBaZ1yVn2C(<8D1e8+} z1&%~k3jzta`SCb2o5`Z9+&pJk8ZN$nHbD>{Baa198$?7bwB<-Huwq|TVHK7*RHBMe7K^+fw^)NvT~UQ@=93SAD$qc%V(kkIOn7z5k1|2S(@DYV|`0K9YjsN|WtaZ*-y zDRI3r`BuzOwd*F)gqYa!{VF4*G9~x~QwxLihr^RZKn*9m7t_e4?T8-`gJEk6#jXO5 z@HcXLW@-1se-q!z2|eHOf60YI?~#*KdsH-#D2~-<*lJ zhb}bLUY5N)o18-U?(NU^dnKi4+|%@$WsL~DYj>b|5~<<9;MY8vbs0$tCyE2Et?}co zCyiaLSM+aunNw{?He6yp-E`as5V?&?Z5M+U2}x{$|5wAVL=|YZSc3QYS}t2U9H3Gi#t+!EZ?1dO@01T2N&IOkWYT$$=TLAc|GU0fCcIV`42x z5Z;bZkCF^*zEZaYu%nxqcu1R!jI0+hO%Se!0eM8Uvn0g)KZPR|Z5k5QTwhC}<)yZ_c*W+n?8VbL@7r#CzJ z9=vOCVKGpEhddf6L8o2xbC3P=y!(b~UCWCa1cCMtSNFA_#o0nv5ejE?MzJrZj~H=d z-Yew@b*CAZ|B6c^H8*RrfHc`|d5*MMm5k!J`xFWE#C#zOG66W|Ha7$paT+>R z3Wi_fvDW0v@#%afvLaQK3}#rGK+|iRicf7aK0a44HK4B5?<~m8#B#~weTruY5E#-9 zBpWfd-ZZdSKO+Sn7kDvJUDf4W-Ys!cBa<@gPZ|6ed6gcqJ$$#&8vn(tab(B%G>Pm;bpCX_B)Aj9n+b0hBgx2-)LyN_I6CeOaly|3(VOvuv83YGRQxpO<^H~mWhz(;pMPt9emYt! zjn5ZAO?<*QQbBVI%b_OV*ps%KGeuQ3sFSLw%{8TgQE#nD z4YCCCYX%c9Rp~)SM0SvvmYOUi9LC@Y!RAmxwsMk_&2~sut_qNhlwp8eQ)m?NHUU$w z3AqHB>yC@!WY#4}!t&wK>;yUbi>ifgRnGTv1+KL^^doCzhAu@x3`<**{l!)XH3;ee<`1gVzXzeHpfr0!tU z+E!~Nq!Y5J*pnhOA`gcaaKX&$Ydp1pdk4r#(E!b2;aF1Px5qOe=lIC&6~NQ zhctUUeGC#Ity+$KWXq(2fu^AhtGn)H>y|mBtCj`RG6_piS##;|*EkK+!>NRJ%l^4y z>}foa@+TA>s#L9{5b!h_FP!N`fn0PR#W15o;3u$+w7SkE3siNcIwX@*mdKu1X4IPI zSY(yJnx#Xt)0n*~@9+sNjiNLPkzWzmWS-4U$M7H+T(8G9PhF$EyE};2y}fVFbu^0X z1_!zl18B@xF5Al{uN(GTQdC)%2%YP2C)MZ7OaCB@iI8#y1*~eZ?Ibd=hWs&>)c7-MdnPuRRiO%1dmlt#T4EN`_&|5T+_>P++A& zTmfN54zSeA&gQwSh_Y13;=Nv9LLaVTaguS<05hGYrhF@sZ2%hxb%T4;QtYiL{tC(` z?Fxw?Gh>wP? zJ3KwM(yRJa8g+ryEV%w6@G;Vi>7)C01W9UPMuDP(tKmSx`{FBk4R*z8bdCXZFqyou zt(&VbIGNryR|_H*AjT}8$RV>)-j#*cJoKZihkDK~R)m8OM^kKuWcgCEluD`o!ljl( zMFcD}JZfZg*9u!`j29(%X-J5hwm@rSmQL|-Qm05BD;AXG9>amrz`z=1im&(f-=t7k z%x?udYNX$#VbQ(oiFL=Wmdi|bE$La*dW}*q*#lupB#0wg@dnnPSKbRhTJ?Q}9ard8 zAt8yY*AsS{sG#v6Kh92(vpdJtAiBa!w$9&>da4ODAqZXCj+``(k6Z_@@B|j*9ExqaCI~d1(A@HO5aoue7v$^iDh9hRg!&_2i{_v7;`Ir2|_y5L0eE)y`*1lo;s`D?; zPw)R4O&CdMbkJh%W34eKiwlCo3FXCI$Z~Wa(-T0HWJdYRPd$uovUiwe^ zw$rzr{(Ta9+fLrU3}RV3r04IwKXdv`pIA-u8Z~V({uptwR*Ixr;*n85m zeI@CC>#3dB`ir$~f6In+eE(I@%V+HWYftT)w$pD&=c3nZ(Xkwge3Mf)lg~+iE%}_6 zi`(Q8m15WL|MXS6fUu$H684|+Pt*hZZfDxx&Hq{ZGwkObzj$AM_IVuS=->ArP`{H9 IByU?E0$#vtNB{r; diff --git a/test/server.cpp b/test/server.cpp index 630bd94..edfe269 100644 --- a/test/server.cpp +++ b/test/server.cpp @@ -10,10 +10,10 @@ int main() { // secure crypto ("../example/cert.pem", "../example/privkey.pem"); // cout << "init server " << endl; // server myserver(5000, 100, crypto.fds); - cout << "init cert " << endl; - secure crypto ("../example/cert.pem", "../example/privkey.pem"); - cout << "init server " << endl; - server myserver(8000, 100, crypto.fds); + // cout << "init cert " << endl; + // secure crypto ("../example/cert.pem", "../example/privkey.pem"); + // cout << "init server " << endl; + // server myserver(8000, 100, crypto.fds); // cout << "init client " << endl; @@ -29,12 +29,12 @@ int main() { // // usleep(600*1000); // sleep(5); // myserver.cli->push(fromclient); - string fromclient = myserver.cli->pull(); + // string fromclient = myserver.cli->pull(); // string fromclient = myclient.pull(); - cout << "tell client " << fromclient << endl; + // cout << "tell client " << fromclient << endl; // usleep(600*1000); //sleep(5); - myserver.cli->push(fromclient); + // myserver.cli->push(fromclient); // myclient.push(fromclient); // myclient.~comming(); @@ -49,8 +49,9 @@ int main() { // sleep(80); - + cout << "init server " << endl; server myserver(5000, 100); + cout << "init client " << endl; myserver.async(8, [](client &cli, mutex &io) { cout << "Klijent " << cli.ipv4 << endl; string fromclient = cli.pull(); @@ -63,12 +64,10 @@ int main() { // string teststr = " Idemooo"; - // myserver.sync([](client &cli, mutex &io) { + // myserver.sync([](client &cli) { // cout << "Klijent " << cli.ipv4 << endl; // string fromclient = cli.pull(); - // io.lock(); // cout << "S klijenta " << fromclient << endl; - // io.unlock(); // // fromclient += teststr; // cli.push(fromclient); // }); diff --git a/test/server.o b/test/server.o index 65bc4f7590acfbf127b384c895018ddb724ca611..73fac41bb2cc94c8bc175116aa9f0a1145ea75ea 100755 GIT binary patch delta 17225 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 delta 16617 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�-D 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 E1^z3|Z~y=R