From c0d2ffffd36a313166cabe11f5df733bdddc522e Mon Sep 17 00:00:00 2001 From: Ano-sys Date: Wed, 29 Jan 2025 20:17:35 +0100 Subject: [PATCH] Seems finished --- praxis3/cmake-build-debug/.ninja_deps | Bin 13536 -> 30224 bytes praxis3/cmake-build-debug/.ninja_log | 64 ++++------ .../distributor.dir/key_value_pair.c.o | Bin 8376 -> 11688 bytes .../distributor.dir/zmq_distributor.c.o | Bin 18320 -> 25344 bytes .../CMakeFiles/worker.dir/key_value_pair.c.o | Bin 8376 -> 11688 bytes .../CMakeFiles/worker.dir/zmq_worker.c.o | Bin 17848 -> 17864 bytes .../Testing/Temporary/LastTest.log | 4 +- praxis3/cmake-build-debug/book_1.txt | 2 +- praxis3/cmake-build-debug/distributor | Bin 30488 -> 33896 bytes praxis3/cmake-build-debug/worker | Bin 30336 -> 31488 bytes praxis3/key_value_pair.c | 51 +++++++- praxis3/key_value_pair.h | 6 +- praxis3/zmq_distributor.c | 117 ++++++++++++++---- praxis3/zmq_worker.c | 62 +++------- 14 files changed, 184 insertions(+), 122 deletions(-) diff --git a/praxis3/cmake-build-debug/.ninja_deps b/praxis3/cmake-build-debug/.ninja_deps index 117da0c85b0476f3426d472c2e9b768e2098e826..e070d5aaa2ba9e9ffec26f2084ab13fd96230cd9 100644 GIT binary patch delta 1399 zcmaEmIpGcCh6g6HEQ|~d`3wvU=fYibWX$9x3V>`TAkGD1(aEwx&YT`VmM{>DOm0-3 zF6Iejc>(bepgthQuw@HZu8i4cJ>^}DV6zH=Vug|4V&zCM>j2QKBA`CY?1DHsv(4{h zix?R_CLa_Lo?IYrzz36c-I!}&iY^Pcvs;oOGn=rTsxbG%{4LmFe~}1%82-Nf%psy0 z;%~SMZ)m=@oP*Vcpb)NjxY+6*i7o_%X7YPOru&5TVYpCAnbAeZ92_%n7v5VuXO6Tb zS_s3_0Ncl9Pp4WDOamxk2y)>}$?ZAQ2J1l;6;& z^`VE9C;RlmN{|ge-yM0ddp3t1gf0ApK}H$Mo)Pw4%N@kt#Rv~~HLYuf5q9XNnPmuk zUJuoE$@<+10ee(kwO+PQE$z{D9dKq6w}z-x1m!r8FY`+BZ|<{4^(Cl`0hKo1lUtOh zz~c$#KPj$X(++^lUdN~jQke(Du>8yD?~;0uDAQoEZu0aFPzTWUa*UG$RHk5<7*J`Z YeGi|Bn#g4c$Vc~{*zd%vg9D}m0L6(s6aWAK delta 8 PcmbR6hVen>h6g496$%84 diff --git a/praxis3/cmake-build-debug/.ninja_log b/praxis3/cmake-build-debug/.ninja_log index 76ba147..bdf4d3a 100644 --- a/praxis3/cmake-build-debug/.ninja_log +++ b/praxis3/cmake-build-debug/.ninja_log @@ -1,41 +1,27 @@ # ninja log v6 -32 69 1738110893905418822 distributor 94c57781821b8eee -0 30 1738105442283119334 CMakeFiles/distributor.dir/zmq_worker.c.o d5e5fcc0aafed156 +0 30 1738176530746206084 CMakeFiles/worker.dir/zmq_worker.c.o 8c7caa5d8888f06b +0 25 1738174736280547271 CMakeFiles/distributor.dir/key_value_pair.c.o 3e4f10264f7b6f9 +31 66 1738176530777205855 worker 8cb044e4b1d208e8 +0 25 1738175279560635771 CMakeFiles/worker.dir/key_value_pair.c.o c815e7263f0d0a22 +0 36 1738176456536753826 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 0 24 1738158788025158273 build.ninja e4e5b46deb631549 -1 32 1738110893874419033 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 -0 22 1738109440578901248 CMakeFiles/worker.dir/key_value_pair.c.o c815e7263f0d0a22 -32 69 1738110729233524838 worker 8cb044e4b1d208e8 -0 22 1738109438872913564 CMakeFiles/distributor.dir/key_value_pair.c.o 3e4f10264f7b6f9 -0 32 1738110729201525050 CMakeFiles/worker.dir/zmq_worker.c.o 8c7caa5d8888f06b -0 47 1738159115534281752 CMakeFiles/worker.dir/zmq_worker.c.o 8c7caa5d8888f06b -47 88 1738159115581282030 worker 8cb044e4b1d208e8 -0 31 1738160036073886257 CMakeFiles/worker.dir/zmq_worker.c.o 8c7caa5d8888f06b -31 69 1738160036104886135 worker 8cb044e4b1d208e8 -0 33 1738160039499872677 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 -33 74 1738160039532872546 distributor 94c57781821b8eee -0 36 1738160280110822932 CMakeFiles/worker.dir/zmq_worker.c.o 8c7caa5d8888f06b -36 72 1738160280146822763 worker 8cb044e4b1d208e8 -1 32 1738160366603408106 CMakeFiles/worker.dir/zmq_worker.c.o 8c7caa5d8888f06b -32 67 1738160366634407955 worker 8cb044e4b1d208e8 -1 36 1738160545081507330 CMakeFiles/worker.dir/zmq_worker.c.o 8c7caa5d8888f06b -36 78 1738160545116507148 worker 8cb044e4b1d208e8 -1 30 1738161121542863524 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 -30 69 1738161121571863155 distributor 94c57781821b8eee -0 29 1738161228788554820 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 -29 65 1738161228817554481 distributor 94c57781821b8eee -0 29 1738161354145148561 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 -29 65 1738161354174148249 distributor 94c57781821b8eee -0 31 1738161531871329808 CMakeFiles/worker.dir/zmq_worker.c.o 8c7caa5d8888f06b -31 69 1738161531902329505 worker 8cb044e4b1d208e8 -0 33 1738161877544183345 CMakeFiles/worker.dir/zmq_worker.c.o 8c7caa5d8888f06b -33 70 1738161877577183062 worker 8cb044e4b1d208e8 -0 30 1738162098218341663 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 -30 66 1738162098248341418 distributor 94c57781821b8eee -1 30 1738162114935205702 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 -30 65 1738162114964205467 distributor 94c57781821b8eee -0 29 1738162161079832549 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 -29 67 1738162161108832315 distributor 94c57781821b8eee -1 33 1738162779063038217 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 -33 72 1738162779095037975 distributor 94c57781821b8eee -0 30 1738162800215878405 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 -30 69 1738162800245878178 distributor 94c57781821b8eee +0 30 1738105442283119334 CMakeFiles/distributor.dir/zmq_worker.c.o d5e5fcc0aafed156 +36 71 1738176456572753560 distributor 94c57781821b8eee +1 35 1738176906572438705 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 +35 71 1738176906606438454 distributor 94c57781821b8eee +0 35 1738177322476383763 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 +35 72 1738177322511383506 distributor 94c57781821b8eee +0 35 1738177499044986064 CMakeFiles/worker.dir/zmq_worker.c.o 8c7caa5d8888f06b +35 73 1738177499079985789 worker 8cb044e4b1d208e8 +0 35 1738177504174945811 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 +35 70 1738177504209945536 distributor 94c57781821b8eee +0 27 1738178070086597299 CMakeFiles/worker.dir/key_value_pair.c.o c815e7263f0d0a22 +0 30 1738178077557540733 CMakeFiles/worker.dir/zmq_worker.c.o 8c7caa5d8888f06b +30 66 1738178077587540506 worker 8cb044e4b1d208e8 +0 28 1738178081021514508 CMakeFiles/distributor.dir/key_value_pair.c.o 3e4f10264f7b6f9 +0 37 1738178081021514508 CMakeFiles/distributor.dir/zmq_distributor.c.o 8386b22addd5fe65 +37 75 1738178081058514228 distributor 94c57781821b8eee +0 25 1738178204604580869 CMakeFiles/distributor.dir/key_value_pair.c.o 3e4f10264f7b6f9 +25 61 1738178204629580680 distributor 94c57781821b8eee +0 25 1738178206986562907 CMakeFiles/worker.dir/key_value_pair.c.o c815e7263f0d0a22 +25 63 1738178207011562718 worker 8cb044e4b1d208e8 diff --git a/praxis3/cmake-build-debug/CMakeFiles/distributor.dir/key_value_pair.c.o b/praxis3/cmake-build-debug/CMakeFiles/distributor.dir/key_value_pair.c.o index 39fff00af31e6cb5b4304cee0c149006622b5ce6..10346626389d28b5e71667ecba1043b222e8929e 100644 GIT binary patch literal 11688 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 diff --git a/praxis3/cmake-build-debug/CMakeFiles/distributor.dir/zmq_distributor.c.o b/praxis3/cmake-build-debug/CMakeFiles/distributor.dir/zmq_distributor.c.o index 333437acbce50462dd6ba2fb2ff05e091a68e59f..4c75fb81b0bd90fbd5ce853280179735a70d1c54 100644 GIT binary patch literal 25344 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 diff --git a/praxis3/cmake-build-debug/CMakeFiles/worker.dir/key_value_pair.c.o b/praxis3/cmake-build-debug/CMakeFiles/worker.dir/key_value_pair.c.o index 39fff00af31e6cb5b4304cee0c149006622b5ce6..10346626389d28b5e71667ecba1043b222e8929e 100644 GIT binary patch literal 11688 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 diff --git a/praxis3/cmake-build-debug/CMakeFiles/worker.dir/zmq_worker.c.o b/praxis3/cmake-build-debug/CMakeFiles/worker.dir/zmq_worker.c.o index 60ef8065854cbf50252806ec1ea5033ffae9668e..d367e887bb93e4363411b886ec130f061e63156d 100644 GIT binary patch literal 17864 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 MWedFD-ctMj0UF5oxBvhE literal 17848 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 C83jcE diff --git a/praxis3/cmake-build-debug/Testing/Temporary/LastTest.log b/praxis3/cmake-build-debug/Testing/Temporary/LastTest.log index e223ae0..e239c5c 100644 --- a/praxis3/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/praxis3/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Jan 29 16:00 CET +Start testing: Jan 29 20:17 CET ---------------------------------------------------------- -End testing: Jan 29 16:00 CET +End testing: Jan 29 20:17 CET diff --git a/praxis3/cmake-build-debug/book_1.txt b/praxis3/cmake-build-debug/book_1.txt index 03b7c77..5d89e41 100644 --- a/praxis3/cmake-build-debug/book_1.txt +++ b/praxis3/cmake-build-debug/book_1.txt @@ -1,3 +1,3 @@ Hallo Welt, ich bin die Beatrice und hier habe ich eine tolle Besipieldatei. -Diese ist für meine noch tollerer Hausaufgabe im Modul Rechnernetze und verteilte Systeme! +Diese ist fuer meine noch tollerer Hausaufgabe im Modul Rechnernetze und verteilte Systeme! diff --git a/praxis3/cmake-build-debug/distributor b/praxis3/cmake-build-debug/distributor index 6955b18c886e499fcbc4935b5cb6f67c875445c4..1d7da1a90e8a594c1c949290ea9e4d43ad9a9702 100755 GIT binary patch literal 33896 zcmeHwdw5jUx%b|CW+jvR9TKj?9YvCG5di^%5F8LOa#8R$gk*A&ki^Uk7h4nwRCCf; zXlu1S)MC$R<@BJ^i)WE|~l=ok3D%&9-uIo?wl) z(g1rUPL)@w1f}Zea}raZ#(R*GuaucV(h&-6nbcUwlzgd<(mYjSQY&A<&P+Pi<*#jc%Q~b@r^Ovu2iu+sda)6KEGh zfiZQ>iZzzA!|El@@Y|N106R%AX=x+r$6cCG+;!&< z|E2lo>EC~HHi|5oKLvl3BmJWckhLOy&O6Oo88#0{_Vr_{UP%<4J*kB?bOFDdZQVp#RSl^e?Bt z2UE!TSql2KDd<~L(7&95etQc1k`!`grJ(<83jB{!$oWbNJjac};r>E! z-16fu`M4p4oG1tfvu9EY`d_4=9|^o4f62#XK=_l9fL}}@e>3m}R+&|GgJLq*0V}w4 z^>xAeP)De-IUEUftiEnhOIvGbb?t_hkQEFzZfa`{h9k8dkzi1f4oY~}raOamEp6eD zC3BIjkQk11v~7#Qt)VS4-w~?YEHmM@x{aZTDsO9T4b`c9IMiBifwiuEn-y+t?`Up~ zG+6D?NZ4u*b#%0Ku&kAZL7G*!F<95MG1ySs++sC!ghD*k)?1;i%@GpTN87E2w)Rk~ zSHH_N(a`O>Qw1*ezKjOAv;b8+N!F!2gw z{&{4MXI$NI_To=SoS`6=r3O}cMQ!6+W;mI8t=}RR&2_rCxjBbd(?4ijk%Yb0pEdlg zy`RJ7&12cPvXLh`tQj*e$I6yhI?FQiD-+M{MJm3J>-m$x`!&8YDgF)Id%fc0wbV?_ zh&k@U%j>KnvrfA3<1~&*p9??Pg+JxOU*f`>{>b?RuiLSM0~d~T{J|Bm!{@?l7s#@F z7v9VzSWxQ1%XzStkRl4wc>ML1hyYQJt2+}GSKFfs*0R>S@OdtLlMA2k!neEd1upzn7v4Qy?{MLD=t!>nU3kvZ%(2IXFEL1@ z54-R~T=@Mi{7@JEfD2#h!XI+s%Ut-wF8nYTzSo5x?!q5;;oTF&lP)~3Ip*kd;YS%H z(o-({XcxZUh4;Jg=Un(PF8p~HK4E^T`zd2{yo=uF!cTDF^IiCfE_|sAKgosnyYQE~ z@c+ML-_0BKmq6#6zCgD)ag}8ScK1e{3nv4e-}AjFU2x&@mw~=8;RiV9jjlqDa1+Z0 zPF=t;;RV7Rng&iv_y}PRNdvtS{sv(Vr2~f~{58THng;eu_{)SjBn|A5@D~Vkh#lA= z;ZGB0^AEI3_#X&!NE%o#;hlsz6b;l!_%6a6f(EK2+(DQ_&p@Sw?;y+}XTUGv4TL$= z4CG7rX2Kj|1}q7$B+Q{@;M|8mOjt%ZpYSOOUro4x@JR{JCCnjYpjX1v33KQeI3(dq z33JF8*e~I+ggI0U?2+&=!W<$7c1XC8Fo%YLb_r(^=8!P3UcwGx4g~`>68_5qz#IYw zswDglVRrq2N(uj-FuVMKU&6m3%&tC=FX3Mh9!1!a@Q(?PCVcL%tpCe|{e(|R_yxl3 z$^$1Qe1tH&@IbGGzd@Ln#(_f;{u*I+<$?Wx8GqCMu(a!y+XG#{33Q%5SF^f$TJN+I zfu8w0;N%M>#D%>=RE=YrNAp6Mv5WeXY-T*--S~Rd7~G{`Dx#d`6Iz= zMQ5xDbk6?=P+EbmGm)G?_x!h@_d>~5p!)0Jo0r6UK-jmv7`OMuhIpR+hw=s*LAwSr z(D5n*UEBMfdmZuL{|ej@=&C*!=-htJik6{@jcBGo*RlTB{_Dbp!>rZ7OmwtB_nN*y zH|V-vIr2*|KFiKWGPV~4oQHt(R&)Xctk42J2LX!ZSpQt8QNn&lzV0>WP;x$CpL~f> z_4&?zyQ})mv);~4Z`z&P-?X+)>;JZ7x4PH78K`?%a@a5DJzW^cd-lfx8~;z{ecQ_W zcJBo4TA&raPquBB!mYoCX98W%ADInJ%FG_|d&DBGeTUVBJ}B$1elzfJpr^)`HpVRJ zdI1HOob2p%0(Hkx)OSSH^oL}h0h^#}ENc0RmU!rccr8~Om!0)e=!qAlzwdo>Jw}#5 z*E0wH&xH&1fo|^v&dunvX}y8&-NXjEcK0Ib_sG`ReVnMyXP8*g$x!w&t!$B0CTVHT zX@JVBe?gN#7CD~fu*cF@>AnAJj29_($LRHp(t16QW(hVmEFeB?<>%Fa7fJ1TM?q#)7@41 zo#&m%-8kjlw-3HUIAwO8w};`o%dPMRY zK$r^CRftXW(0Oy1JSe$)avn<3-I^$SG&Og<0Cz}w6;|ItwPldsiPFyV7oxOvleTqa zqOH#=(AfH<0*$TtiMG}PRJJ~b=>(d?ux*uW;@;WR`}`4Jo6O)+qV+yVQ9V!Pqq;i! zrI~WPWZXp|qH8yu)AnnwZKSUJrW2=dMtO|C)4K zBWl@3p{8ev&yxshKjxyijdke~ceAKlY*7?>yZ^){?GaaK<8Dec?mWRBF-9xBM3ov_ zmnGWzj{uc>{*ywxMWJT<@t+{2`#~A}_DMDRi$Bc*jT)yqD5q<8KU=c%875YACDi_6 zC`pd>zaaTzV`iN)>XTByvHs7hQe)Ip%0}bBG-K4+>k%GOMVHt{*7zV?s03cA1ujYy zSf416@?|Y?bv$1mm{Ke+ED_Pa4{ZA4)A?o%F80R*UD4h^*P6qD?&`xBx#!91$gtQ$ z6u;tn>YnRn&w{t0JMy66e$I9B~SO*lKbyZZGcdu7F?ft0fl#GTczL&fV? zR`-1zPEp=G0sNj=3{=S&=-htXie{>Q!82$P7{~gbc}LoEiUu6vtS~U=WFYUF7hqq% zl-E;3rbpP?p_du8fQ|h_I_o9J71DL=}V>TW1Ek#lSRH==md9m&LA2Phr7F z_x+XT$Pho)|8DJU!nAb| zewA{J>>@LeXZTc~O6V88c{{&|YNibObIL`rpkEFZI_S|kuB<-Q@$ax%y8aau#pAw` z3muGo>=u0{IDSn7P1lpt>k(Kf(^04YDBJCsN(F{MsDk4k$#Sf^AAZ9Kd5X!vyjW25 zD1ok^_$Mv!GZd&TyMk0bV!ambiwR$V96jzH-%iGZA`it~CMbHuA`D}+wUlmEc-Ihz z$v{GAEJSGhu!0<l=bA?Cw0abI#;0bDq8;lDXOpZh_^`$=Py+aaSCHE zh7pK?Aw7Y7taUs49r#hMnEFr1X;jH+GIfgwm7>NZML(4F6VGYMpQ2=Tr*3gjqn4B6 znD{(E9!gn_Q6`tw=&W)@JzY+gRo^X9f*Z7ySxPX5Ik8Hk-hERFu8Ij3Z{xQ}PJiH# z%aFbYyTpu2#i`@wi0FcsjD33!<31OiJU$~)75osnqpu(V3e0O-A6VlMow4^ z+ETT^pnRLY@X?If@`BE5GR>$yiNUFlt{!+t`THb7v=q`#!o~|f1_c^^`zb40AaN=% zPY!T41$>_s9RvI+*5`R;Eh+F*_o%Bp=7P{_JWNvLx2S#Q)KD5Ss znl!wgy#yi=s_-WV1eNWs$(LDpuSa$Cn^ikWLipg{P<$$&wCq7XVMsjLZ-zt@_Xs6i z(7P~QVXH^7!GS=KZG!2w+@?e^bjs{;WCy&sRvR+(g@GTa21a<%G(;Kd?YbF1I~mG zD1u(h+w~RJUat0beIe!utO~08qn8;v)v8bs^B{}wL~);P%CiU#CDUvVN7kHO3>=~o zS4NU!yOzF{0fMlXsca1vPLZ-Wws+;99Tnpai# z1nn}Szrrha7q2|hx3FyoXpd|5Ronp{#E0~)@w4=2v?S2=`W|rh$0tDR&aMP<;C=*o z|6$tkQO=I!VLExh#_3^u;0CZk1))P4wSbZykdk=yjQ#Ey`=yaC|NHTG5B%K&|C=7* zy;?k$;MTcNy+6|Cmp828<~IMP(5AMIZT^O~4*!N|Lqn)T(t*t19QKDcwMVx3QPkQN zX=-k5B(5dY5TOKl@12xtSu5K7^`VyLP0bM!)iu?2)YjqlLjRW9FeFD?>-|#~_#?F& zS-PdE4Z^jqxIw&;&EMSWZ-8p+meqlk)e9Hj=8u=Fd-42rZLPRdFQWCPrqeeZM(Wz< zR#f1|x!RVdws2(bgnE|`AWPnfXvOs{QYhu4Eo~heLmhMd6T;?Rr$O`$=E#oFol)Eo ziQ59(CxmgYU_H;x?Jhmnv_<^U)^N1Fy{#hxZH6PJU={9+G}yQWvEsO2cnhT=jMZbV z|E5~i7Hrp!P`JIVH5|%}mAm|kTQoz>n?oRKZ`r2Z8mFV3u$;{oZi+@^^VYX*X-)0_ z!TbS7)`xLhBwV77LF%FJsC37pi%mu){CC~Lr7QeX{cx;1HU`tF?)eOBeSbS&ZAW7` zl^z{~N;D-Kd(gzux)2OQXfpJtD#TRWrHPRLC{r~P!a&h$xl_?56#G%^u9_y=^HGel zs?tHpd^gp0w8HSYranPs32tg-eI{Q5%OcT^R#?1Z&GO}lEA8Kl4Ni1fjIQ}3+fN$D z2)GP)`Jy|u)@`#UgfCNlaZR|kF~n}+pU3f{JhC;iz&}s*S3kRye_9eeeSyEcygZSn zb%Ax=!kW36l)18c@tQ@|D(@aAbyy~il&HS+Tf7?%7J?f?+k%^GTcV+0du_8CSO44b zH<5no0>Dy>+n$fsGj)N~XbHqs6(t@zx)QmlfuBE16(VSYm0A(b=9ydFP$-dEa}L5EB@|9 zUE3kgT9}*v31?AGnrEX86|(%}K)(VXY{$JK@$#){rhFgJ<(SEOX={xCLX7{rKo??i z{~FR*x$|SPOZl$@eFEiU68J|rM*e@H{AKv~uL<^@kI5ea{A2KaFX-a(kH+M4JNz2# zbMTppSh?p@lHU*1t-v2eo85pNkmTnou5=<$mDkU+#jhOtv8qw_!49dJ$i*B*^$d zOhy3ZcOu@#xqTf#J%&hklk4xt-#zem5B%K&|4(|rJm+GbYvEAI<29WzFrT&Ik*$*0 zgEu)E-iqH@c$BFm_B;)43zP>gUGl&UZ1OPA)r`=vDgV=l7utyG<*ko6a0`Pxe42ol zR381h+^nBUIX>es&xn*N(85pp35RC0`ma}L&1RYBmd(5YzZ=Q}x5mh0zZPup$F*W( zcb}#+&$Jl*_;pIw2gQ;UyI2z5s`;_kCt>4fT#6*@*X6ivNy5f%t>%9{G0%@DE1o51 zPnbvQ^hTXF=ybDAKcUml>GZ2QeOjk4>GV~dzM<3ib()4>E_n>m=|r8*(&-YN-l)?C zoo?3YCv^HboqkoPPwVt0oxZBmH+1^GPWj8R)UVTtI-RA{B|5!PrwuyYtW(8}=bvs+ zxoZ|Jn(Lp8C$lf{Pn%gjy?mN~dgb()m2;+5TI@+GELCuA~^0KbDz@CrO?Y31HVI-dw5Zqs=mlJjs`Gf?Rp(Se=M4`+U&ui$v2K;dymv0EpZyAhKxy=d5`|d8{Ez z!Pe)U=KCfHoop0%XQZ=kmh(0+-dP!+Lf+>*O&wQAAm8~UOJ+-;)L9N2ymKVrcXz!$owxswK08P$%@&u&S?aoq`ER{gSxt!)K%W8+Zt~}t- zfZL=w2b@2$KDTGE=?^&zSQ0F`0J6i*YdCw?OWS&#D9zd6^Md+&R{C{NB+|>+GLx2) zXG-o+n&3Ic6VbBeh>|S_P;gP?hvj9Yk+HWO`ZtLRQK7Pq3s9lO;aqGLnsuCE3mhmiT2!zH>RnkIlFd zJjKp+(40O_0z;femW(eBAt|-eM}fdMd^iJngx6mH5ji)&kg-0l|8g!tcAT;z{WvMd zd)@_KF6k~=0I9Qmv(uLtrnx?uCDWDJ?7Yf@H=oPJW;B&qMOER*Ckt*N$I&96z&dP(#Qp@ul;6}2`61GW!PL6CkMQ7y5 zaykBFWh^EKc5!gV7LH|?u3TD!(d6GC++(Fb0@kctj~_&rmD<@E_afso<7DS#sPQ3} zKyH>AAG!(TWm0Col|CJ6?R=*O(5PGBn8E^9Kf|+LUmQj)LJJkAlQqM0zeb9obYYGs zo8o^$dGgeUoaG_EXCzLej{z=uhsCjz<@qyUPccq{4_ahntAav`QD>XOV3{@A3*KQf zh@jRuuT30=XXgv3cjiI>xi99DWQ}3A8DLgsDTC^lQf@no80$83mWN$E^RG~leOQ*W zJJ{@BR%SW5UY6KH#6HE-b3A>Ir+)yA<)Nqo7JD{8NWl^2PT(|>g8N9vjFmYa*}Rql zhUZ(v%GVN2Ed+Podrppx5V2*`2)^7Pr%-valxTX=5{qe~&z4<(Cedl2lP60&2a3FZ zb#kexhGopCs*75RTcpG_#>8d52bSEU(plSymF5V(Kp|(CBK~Zg_%w<4Nk=?sh&2Zv zhRpwgolo0;#xki|o_NX9bs7ib^G_(M4`NgYfwf&!4?#xmLv|ifg}#_kUTDt_si>$R znysTlL;MpZ_bSOtSV+~D_%zWkDf9+|)+YZ7?AiA!dAnF9gDLpj8F^T`)QSC0Qh1qkLOA@wcRt_OjtMF@J#1ynfstQRd-9V$4_I z#Jne+v<#3?x+MmnE4$B;uDFb72AlGgbXXa5SYtj;P4%7yBv1|b7ub=vUq!+iq5~9H zKAI7?(H3l_(c_4+EV+S()ZX_L2(!3XxzR4J2gccZYu4>BV52>TMb6$DUoHe}vE_K- z>|O8Mfzo>n*kpO=!Ljq9`!+i`7I_@K@=WnXSS@5V!_?bsIl4J}14SD*TesUK?D-T| z1kT&-VG6AA9R&Jzd$I!8S{3{a$*#21Hu#lHxpj!Fz3;~qy%(Y@?E?A*qO*RBl1h7` zvb@T-5W=R}`Rt)obpn~^-#SRR z(jG$9&fX?8d$F!DXKy^ff1}}FjV9*kJ668m$zI6I9uB!ViWI)b(k*K(W!pvcqG#{n zdt{9)dpwQw>^*dktdeEVVU;|458NZ`WGB|iXX;cV7o!=ban=qypmnzC3OopnFfq%R z7|8#Yrl@gOG230mp?;W#!&Svg4F7Ums%-?%TQvWUk&@1myTi!Z`=(@LEMEc1Z(Yg| zW&OOjz$52$8`OCJ3+?x|X%X*YK=0~63wXZ`miKkpdheZ3b6%Gu) zo|l(RXYXP!>3`JBb?0pOsSeT_s4~M-E z!j5Y+*co8C9sPc9rK5xk=1u{`D6KKvFbC$!|2)3Fi-zYlm?0OWYg zcltB1+#Vt)6=t0$f51Soy>A9u#~w0DHBZ3%I*_HY=D8G{qYHDYxUE@j1TyeIOjl z8K0Ap!Mv5j8DFN%`*Jwp%Nq7L(D^x>?`3B_k8`Od9!27)rDXy0a&#`G020{bu*5fT z%IEyg$??b`Nv(Jtwc;)KIf@;%;)N(Kbsa}8b<2Fi(!FO;nqFbwVq=mt8!|9oP>aSWQ!l)ikwOO;d~2EV)?Cl8efY((|UlzE#E)GhCR7NKOQS*ktDK4@Vc0O{kZP{BWSaa^NxK|ULUC>DNj}* zuYBHm&+iS|D&#dZ?Mdgqi1`ahtZdGT(l9F`#2q+^R;qlQ{v4H-Ol64_>dQf^Jt&da z5Gl=9C21(>ktMZ>CE2{-rs0B1C0kjxQ0nGXMqnz#Q2SI&LoO$>kFB|sB}ms3x=GCGa_FB3|?;@+2NbUwCoBO0y*H^T3TJ zF3<9>he-Q@v|X0~#PNzs;0vz6Goa#u%P7~`yHsx-};FLtVdBQF~>k}`=m8y9KTN! z+xytYzDnK3>9}>n%G8?CEVi(gV#m_Su{^nRv#!jVleM&HHYP-#JS%IAk44^@EE;30 zGN%-=U2b1hCdtK|tVv}{i{_QtAWR!?Wo0eM@?gUzX#R<^26AqxtnD$em> zg^v}9$;28vscI#LMmmC)4k@xdxmj7tH`G5A`%k&^@XJXl1p7una2d#~VM;A2hI{P= zW74z6c$XGQwlOxbBZk@#BkdlOLBz-sn-ykulyQ($dsP_~kJg?UlYyF!Nt;xryzDQx zk{yQWbIglk&X^oSI@U;Fl_`OKsVe=rY^`zeLWobNCGO(!1@?s8qAbto;iHMp$HZ!a zZeJfZgApC5_@sC#$_$7Jg;G*p%~13?lqmkkr^Gx2!$Tog!y z^qN?YN;AQqeo?gfv>jsv!#my|GNcjiPMB%JJj=v)cB~H41*Ti-{^F?q!oHnrl(0`H z$3>pIP+DMI!M4edw>Za!0@e2lU7F+JS7dr@@x`%J5|5>eJ6Ljjl*T(snF_pN=wVq| z7)#<&Gn_3mVzACJGRt0r@Es-FnjOoG6#kgmuE4lU_KtXmx+oqjZodfpI?=^YuRy71AjgE9H9DB5rS1=AaTb{~zop}$S=dU<g2 zRPuBcPBzz}f@@-ISs)kYX**A!;OSF53ERqW%u2yC#1_Mk3g2rYW3$LVBSt?ee7<)9 zoDum)Mb@LD^q?qPATpMTtVXdC^JP!D7>&eUCdMIg8kkR8t8i(~}*B~;MOZnMbgnjKapI;Q75hbsQ^rIrX zzAq7yp!l-Lb*2=)`h)3TLL!5C?>r5<)>m3Rgy(j5y z-%gQntug0Ok@W^FTqn{aV#qpCOv$H3c2s0VL=KIXYUh4gT&GG_F?mFkFoAo0ogxR- zl~h}V`1u=eoDtb?2z#Aa0Ku;%3wl`Nu&x<)1{>Ya%Cl=I9wQX}=ia zo2RrM6hk_-{!TIO36XtVWKoMVu2AG$D~6mAIXgSy>uI9o=(VEEbH_3b~50KRP&6RCbAO@JabgUOlxwPHsYg98@u3$ z7CJv{@;#%S7e_-^g0d(y4x^~<~Yc0gh9ta zuNen92FAue-(iebwmiwfjpLugam~Xa&BGzh!vW7Dhcq*t9VVuo5R)Tf5!?Bon5&w5 zHWFv2Sk7dgC}6To_>PK^EN1K$rB$+pi%>U2BRbx-;>spbazbQ1Au@M~(d$InPLXv& z6h}o4M#h^(QB)MaD<=9%#7xRKEv8fG5mClup2$Ne7evuBOOJ|z%_650jw?PY3OyT- zh-?prRr}gI#FTgALvP-Gk)s4@Dd0{w6VE zrzq$Y`4KT*5#>BC3M)m4XX_C$(G!Khg<^P>$XP7x@uIns!zBEa*(tKF71^B_Z+3GG z=RoZ&qX0w;1ISL}=!J}Drwjq_BVueLFGo2}MUfbV_Rs4R1$)I5XHu~!I3gyXl4F04 z>rta9^L<7P>lCG(VtA)0Sk9&zvP{^XoOvS06T#&udzV%u2W~1Vy;kI{6T=@BWipfH zsa*?(v1^?ybSd*Nh<+}h8878-$Lg&ePt|O~o3ZuVtRq%1+=N@*@g$9<9+wF&TzSnZ zE7;x<+KfkV_^#`v*Yhpc8-o#kUBJI++O*``So~8rMWU^t`Hi90P)Bnez}k+wruphS z2>z*!emufZKfkdxI&B(XInB*c{WfdLhUy^S;2mjOB_9mY~O zTlK@zO!-!8DJ;lWd*hK6^}I;1p`{iNWHj+b-=^m3J>IYsPv^w_VP4kFmxu>lkB&sz zs?|doFmt7RpduzH;lQ4q#=c-PzPS)txTso6=+N5!Vf$_|%1kH?=qV4>3q^l$qruKhBut!(TqCv0(SlIP{)#JYaRU33PF}`+UC~!&{k{BidAcBYOY_o z8o$j4H=&l6)Lpv?ubYQt)rN5;4095|A#g3)v92lFx-qO?@op-n8c4nbX9AN^UJ$X~@R>lx&EFUBaVq?nn z3<;};hv@3nJN4Q1j0fQfuCQAAecC#6n(UM{RqPQXGlDsvkiY4RaU>wzbrodYUJqD0#`! z<<&H&wxzwP7DGU_b}XID;V0H#R9HpO(fJ@8f`jk*=cfX!Sa;)tjmliUgI~s1gdZcQ zt*<8@I$EQfAV5B(BYVgo?T5C2zcHBd{rzCt&{EsFk+A$?0Y`K`85r;1@z%i4eC?rn zgb0Rq{iy+bLZA^n+YI-s@IWE_3Sq63rUuXHs0{lx$f6A5mguHd7|BP=Py%yi&19F4 z(vkHbhSNB(%gB$%iE>XE9$dmtFHi+P%&>8D`*h^#f~2}yiJ=>ewCTskEOyI)0-cL(a+kt|h(Z%j11QnF}Nm71-3GyHepkyi}DiT1JC>hW-! z>TQ;KZcC5mstMG{UeVOHDO3?@-qcos@v)_1<%+2_9kpAV!!s({b;?MuN4M%|-VlY! z<#pEIz*M)Xc4KJjhG;WBMpPf#5N-S$n5>FuxTB)EwXP*vAF9~UjBBaH;2RJXjdgVu zxQqv9&79g^r$29m>v)B_kJT_;ETMuSujOdTXoLFtP(yhW8zWj5k$nn~>Sj~J=oO** zsgf^FBjW|29%oExqSH|>zs5mf9ks1tJbsLCiQv;1p|F%x-`o}#Au)XZP!*w)$nd)t zO@D){Dv}h}S=h#s%NQh<_dD6I=6d^c&tVVyzdNuzvAovX7m{fxYcM?N2E&h+0tzhi zT`URWbOruw+zp?6A9t0+4~^Xq4^SQ(uoO$Wby?zh*WqAzZcgRnC)e5fZZ%1a)18t& z*Gj&FfHyJvK|eW(J_`B*NHX6^!!IuK*oE_0op&c(2o7e?HzYpS+Td5z=7yGfIGW$D zF?ZEr>scO8<6LOvUUciuQHfVH?lU*w3b1!;?&mgTuOmY_W|e7vH2IUpn+>&gHaHI6 zVn+JpUyp_n@8ntLxe7%MpGkTH#nbsI@V9IE$@dKLRu$?^zFmg5rw!&$-hDL~{!uL_ z`NzO-X?*feSwBu8=S&Lx92tkXvF{0TyPpSdHXh6#{#ZO1J_o-94~CzR0)Isc{7T{- z{Dg}TbsuYiXFMdwf4!8GYbF1f$RD!l|Kz)Q9*}sqWR*XZ0{=n^{7+KgPp821&gjAX z32%es2o=KTCY>MK@LP{%yv2@?8kWfFI0G-T^uo{+yPR{A)k&XCACx zayp+lRl4Xp9SmacB3K;=E?K$oy6RwH@k%SWc-@MH*DYOS1+Q6t{nZPX2d`hUWL5R* z;Od1}FRu=Amcr?8mH7Y`zi<@{$#n$pl#^?_2KEwPxo88gkyDyU}W>hoZ+ za@JX{z}#CQdeX1fxQV2CHOQ@%SOIi=^t3){0uGm9Sr8LJGvqEx@<-p)C(aV+628n9 zE199baTbGRWAf{2uCKwx3TIkDxi1h5uD)(juzJN}e8+CEC4pI8D~FhMiCGdWhw4q6 zm~1MRtLj7y790r(F3b`T{5)L(LVYYQ0cGq-jF~Ve-uQA{0x4n)%VatLYgf8feq&GW zDAD(u62o3EqZ1^^_K<7$#0qo4n?RUYOvfe^%hh`VCK%ih4r|l+6~BZ+v+j<^fl0oO%TOwAu>}KWi zRZQh_s4DMhlOt?-s0kZd*x(B`VN)aqDUM)mM@KCTC5OpFaP6k%I%sW!T%5|K0woOb zWR=&oZQ6v*Kp4w)G5Bg*8?i*yU~_9jo5|O1*nrJ%1L2##A(MyqOqOVNc>{N}HgXUP zyRO6k(=6|M#?;orG)*3*m|yTP=?DeJ&ZKo8;{f0erWik;QR89KDhb6;W?f`3vygG~ zZ`J%J^&3K+;&PpEEC%G}e^~RIbbJCe*S3krO#tzp{WeqoUd?Y(!;jn6nFXA()aa)LLIs}3@E?n?dJDuK9jCD71JDMd1lhbfOqrn(33`! zp2y8)?!)jI9B&nO^P6?KNplRLPLu8brsj{CS*Zzi$|rH$hw;C`aUX*E4ZqpnF)44| zbRWt3PoU7v|1di=4wJSR!3rH~KMh(xL55pcy4%Ix?_j=*o@}pyP5K|;&2#aa_dgt; z42;{W(?+2jicI;WO>Xdjd#e_|11(d#@rj?ln|N>}>c= z`hQU3<~Q$;=-2#JTE7us_)O}c+|6&+$CDQ-4r6CBe+&jQWf}X;I&`+?uQ7x=^(VnO z;KzTntrjaa{K@@~v^-2YMDr_b{Jd(R%CC>3WX|vzG#^h-#zFJ1qr& zAvYv(;GW8aBbi^`7?MDtfa+UR+H4w1(tM%*d8k6)yoyvaE1YQ!qk#l1T{%bcX zh7*P`1%HF)*Tu1AVXl7}z?s-XHg-H5 aQQ6Xu@P7fw2ID`pP4RQz(S0O=*8c_ke)JIl delta 10548 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 delta 9255 zcmZWv3wTt;*`7IP&+ggXY<4%BWV1;i34svMKM4T}$SnZ_8v%&|6}$j}1QNL>CUW`3 zMFVOKsjLHv8e8zUl@@)Z#QIQgL=hs|Dp+dKdO<6?h*dzvSpD7q{btU_$Uo1sGxL4l z`(5UnIWu!kvhf1n_;0>7V=zl$vXrTYZCqh>(3G*!%!7I$%a2Zsx(Yo?ROpGmQ{+14 zSJW}TNa01!>4qYwi%MS1M~ihlp7&g-;$7TsQf#)V^8wAvM}EH{bz0A_q7QYJ6>VAk zud-)8s{a02LTLEq?J%`G}w!| zQ{qlan@7Q|5Fy7Ay}9WoankX$c-Xv3d~Ozs6lX@Q3fRVOMfg4Kp!c)N)a^A`C^7E$hoL>E#UUfL#}SlGevt+P;5y` z5_^-zrRDTdJZXjH5XbDneV(J*KHpjHi4Xd00%LXL|8%bSw}0Rj|1+Mkua^{gbJX$( zw~v1jh;X~{3^ikVn$p5;#vK5KH+MBT<0rj28_CN-s|7wP@gwgR*QI3hIbv-}|DiX4 z#hQoD3Ac=QL6wDDPc?bMZR3l;kEivFV=T5f9*-Y3Mu@JIu=z2WZ}*%MzCeF>yYUvn z3%7R1QpJqG;M6Vu8;^%uE6$#N5{3@gP{r1Xy8;9FVX-Gr6j_By3b(%W0{ATUA7ByY zAcQ~4GIHk+P;aX^O9uam{sEfQ*oWw~RGj2(6(6@A2D(t8_e(1_2q73-@wsPaSi^-QQ!R72jfn6<>$j z)3#+%z;97JWzgH))$EXN&rG!dYkmUcBmfljnF0%N?N5Lo#l*CHez#bhRu-8DKe2(( z2)AxN(SxStd1_d52m?5tsd9S!Kk>M9cY3N0PMbu&Kv|`L>`MEj(x!$r7ef05OZz@( zTRH^4A0Cyl|7c7MNDoAI1NcI^vZj(b2bggC_OoQNZL_qj27f7RwQhbK{FdjbW=*5u zX}#sCzw)H;-LVgT?%3Ds_$EAP;qJ}*$pB;Gsr15uRnqWYX_#sj@x!psGW^JQ@%WiP z2w!kWWEQ$efB$g%W*@p?xf0$F$yBJ|Ik6!n?-=hK%zo?Ur(iR|Z0XX&t(#-g7x8uP zrf(5P%kzr3Q^&+9Li29AqgSGN?>x;S2@z{bRv6w?cKS_9Uc0eUg%R5;BiP<0eYVpu zkwx+sZhf6XYNT0g-Fy_B)AuXYGE23YR1@It*d%Nr7V^w$cqoWixGNQoQvGLGV9&rL zLKrzUgA}@Bw<@QJsqiYeTw#!wfjmHJvHJ+uZoF%$1wpEZZG$pEF{&KDDIt+=mE_-i zE8|q+?$}NuTVD#d{Yi4vnvsD~Fy|rN+~wW$GVKcO#;+}Bdz6htjLVhBM2rvjhVqrf z&FQHLUy|w^REV&fjMxG3SZDx$PP`f_;HSj7P~k71y8!EB4mR$`ll%&v*)M~X3i-?q z$FqX%C>Czn5M#|H*c@k$0;g>baGt+N98HWGT8(s9agri8zZI)8gXK?P8n8u?qU|Te z-4`i_`Y1k+V9q2V5^3g1(VaOoceTWK$F=}>`X3lZcg5#42`b@tToC@OoJ)WE4dtjx zgDSQ^8U1-0SZhTOqVHkN0VU~0XHDSGiiff;kIV|Ud|nrB-LN~{+PpK|I%fw^ z=vVBu+E-ND9sBFo(%8{6*MqZ{#<=fC$vFY@CsGDOn1ypLulEsmo@oiirXrVhWXL(n2NoPTc8MAG#UHD-4$Il z{L|-Afsc8s%8+eqcl=EtPQu7Z)(j&gEAx@k=|co=+0ezB^T3zc-SbU6LJ8{n8Sr6c zwTmKp=PN|idN85z8j<`2(#*jELZ&&5!tPxpMM}~gn?OTsHwLG{FHF5bx|ZX7h~%0% z6KMo5rec_LvX9XZN!x;dqf~pxf?@1u-px9lR&qq?@Doc_e(C^Lwyim+*lET2H65N5 zcH0d-M-I-xF&%C-H}pvG4PsiqQ2yKJVNnkE1oCE5*oTRQA!DwHTqEx6H<*7Zp6r)y z_NcI8;=BIY*{MYIt~EM@23P^DKQD&mq-w{%5>s<>2R=gf+6}iQ91c=N+msmX)~`fc z&Y*tt2-t?j3$HVj(iZ_W#P`pMzvg6XZ9j@LIi&+XKW724I;^1I?!$umtLH>{?j~)- zInkZFTuVPEM&=DjOF2sc)718kHU6boo|mCjoD+BCm1_gebsotZ#5?_izI1h#464%a zEg8g_C@7hf#8ynuYnIoqT$+1z#pQj7$|^B&Sf%J! zI#B$6*kI8!tWX>sRw{;;-W%ar`q+(FZeILq-iybdLVNiK@puQ?@h9W)chUai!+87$ zv|B!k$Fnhm*L)I>k3;+4pT^@0(cTe@$2X$g_*p#uDB63_zKk~g3@!+0lRuBgO`MxI zqAf)G5!x`?5nsgh_;OABa`=FLJKvAT3*duY?vU5$f#{CFZ}+?L_(`#Scz)hIMD-x7 zvGQc!9ol4%UEj`=945m}iQR(V-^AO)bMopC>uYqN^r8;ygvtf$Is5`5G$Nk|#P|`x z8N{QvjUO?d|Maz7(W2{TrEzI}AY{ieM#@pI-7Cl{lXfqM{Gix1BFjaw)PX8EEj}BO zX{Q%}A5RO{$V~fgbT9i%3`O@9bnpF4Trsl0{d07?&WM#G(>wDAtu=?7weI+dyFSFS zG+LbmeXBSpRQ;)h_WzEj{y6NHzAfn=$n&GOeG2-)ti>-zS!rhax}e zBy8cW!!&Nj1Uo-Kz}j2Ea!4GeqXkrdn^C{Ai2w}%IDEEgm@J3QL8;0yQ)&pw&0HLM z4$ZL(jjvI%>;ojrcnEN3EBgA5P!S}~A|DPo{edhZY`<67A*4rrH&wLldME^)r8`CG zq=LfDFk&0!d=xyNb{3v(qa~4{EkaPXF_OsDip0iAA)YTDoK%qfJ3^I9L6tUNygn%u zc>`W-Q&Mk)N}cvP$-|B?Os>{GAW5YpnzV1o*%j_BkgV0dCCQ8w8q-E?2uZH=-U{M& zjWTbWX|95`7VS%tT;+{`xJ&zvhts1kj9oj*0ZUE&hUIV%7Eyx*n9fCU3Tq#7^T+hJ>GhLq$)8~4fs9e{*fU`2! zThwgyMuFtsJrHT$Tfnk;7lUIm+d7DCw}F$NJ`2)Z)8Ts=)WBu6>zHX$#&L1gTo|M2 zl=(NcV^A?&nFRA`_YmQBp8%1;Y`3EcL5C5|3BhbfP&>)CnWU3k4#(y6z<=tDa=f>u z(ss#Hudb{@aKD3!&YUX%bS3Mj(L{U%9n^%%^xH?G;k^~JT?X3r9$@A*7`}UZ@}n?t zErF=RpP*!9(&Ra3<}V>ErO{Z9UeX>dxdwte(dX3R<*1lBlR^y`w3Z$tQG{IdacNG5 zBh%|A_DdupAIg!rAI6>QlSuajiKxTO2hnvuDr0h}`#c??|);@~cc3c(-Dn zBiu)-mk?X*nvy!ksDz^DWiBmVMeG{LC8c`AV>W5)EyU;fi?VQw_+m;%#Gv;EPnTke zgf=tiSnwQD>?ad!D~>~uCEv#7SdNkGQF2Hrl7KX3en3Xwkb!=hP-ez&iF<&{y+p@1 z5QH}lwai53C<^Vcl$mq}xjUr&p@i#`#_fQ)x5|WFAzqvsh?pig-hWDPErH`u=G0?0 zN`&zSye2PG(cYf0md3Jl;F6xywh@bfEQ_A%BnaAQdLzLjo0f*rMef5z|sQ5Txwu(H#-{8AuKcqbE#{ZjIQ-p>rS-R`gvFeILYK zZZfY&cSiJ&q4uJ?Mw0s@`dM^dN}^S$May(Qgm0wLbD~FgN0J(Ao7gc+b#EklofXdY zKvS83V00aMI^-quS~Sd(4LZ^(|L0{3z+R;1xCN+6zE;T@UD>H5HLY09-VZ4KxnTH5 z1OJ#D{wRDBpyGxLD!k(i4WGJ?Wz+ECQSSk@$4N7xMX#69JdTKI3ydyIzQ?k#gmh4J z`jYZTE0{XQhQz_-+w1|nYEz+`3l-k6+6hlIwryD|(fd`Rx0R~I?p2B2R;kF{5j_py z?J`+fv}%6RvYXisnMo}=H+i&W-}+dH<;L!l`;``*jv>!QRFfSwa2!sP{+Yaz$v`&Y zZelM-P9|p%K#$(lpl69suedZ)2j`7ER`v$G+E95?HEat^ z=~;l}ChtX;p5^4J;&0OnBZpwcVBFk@x$u<&-ft~DQu*nEsOYsoYU(bSM0Y`5-32vu z7xb&UAOLh1)YM%tMP33lhpz)B0(1$`Oegi3gYE!MX9u1IW;*B&;L3agwa-CU0Jr-^ z)VKlcLZfjz-2qdnZ==gg8d)F!CkFYQu9x70oolQw-DHhl{1d6Jc*!^~z> zhIQ~CC$@|&xQw>;751~a1Y(RbOoew0MKlIBfEAZgFM=IFK7K38i$P*{kWb%=xrz!q zpMlbvG=kEiu^k3!BPy9LHq+$F{dEpm#`6yERCq@hWaML7p;8P>7t_Woqh->?wAn;O z@Q_AaA6gb{mIdi`c1S5#xl(eaUG^K*F!!SBWo%xMvWDgR2daiUmVX~sCTvH>K&Jat-S%th!vOF(@`jukW=ynI0RAu=EmT3eVGI z1RwBI%x_v}DQ*8$c*n0K9P2+YjHZW@P7gp}(iBBjxnV1T-bt2F zcnA4)lvtT{-_+E|oI;y5aYPZH7}Aq3bB{H~xCe(S1LHy*+ko9*VCM0$?lJDlfR=%0 zZy+A932r?Zt4GYAl`h(5jSsoGpQqr&_Z9-4jXlCwz$&5c7sqDx6F<(%gr<1@m%$;h z_n16R9z$uI+>7P2Gqd}|l;;^7QXyq4XQE^F`Xoe^U>69_ zoZ$6?dsU>UGC*;aWvrKjDU?D}I+J5m!ds+p$j>$ViiYN4FvW&gIj1n&%iMV;4Gq_1 z-TYZ*?BcI;f)R&DW=vC~9F1I3Y$d3HQO>1XO`~chU1jsT&fKU z7{)Hc`H9GzJI;B#VdzQE7@ki>-P~ud^O-@z^MsLv{h4b6QVh>DBg=fv@S4*Mr#aB@ zYtvGV;3>3&1J}xqIj`gs^VF$RyFM|TyNo3B2x;2QT*HlyW;cIrcv>Jf_%5++-m`p~ zsJeEvElqbX5$mp-eThR4J#ILg4c{rlSOe`6gHJQE>x`sL2A`*CjPoh9OX00`rZ{|U zQK{o0+B{`7fO=nIlp1Z+`ju2Ip~~RQsU;rBkhtW!aOd&swsB3EW_a_x8? z7gsllTNdmJRW~kO%$79P*0S|08Wt?7Us=PJ-Mo51eUliu@L!^&`sqO+OX&e_TD5%D zn%YLTpmOGdHT5;M3u>yHs@am&jrhK@q%*W=B)8pMy}VgWUpzo;SRBeDC#%;%Z3IH#Omd;v&&pJ5%h_LZYP6CVr@$ zjz3;hE}6*xTQt-MomXMhDJ+?d6452WVLjI0fx(oe8Z}8TzWZN^Oy=Uej)}LIEN~`P z#e<@J>EKY}Pu!LX_KIaAAZ}Y4#H2m2v^aF}hUr1F$&U~pE-j`{V<~k-&fYf^QCT<9 zfAOJn5B-%tbTtAYMO3mBSY98I{{yf`)(5Gse4kusN!aHsh}C=yz8`zt#Y3krOJw=t zqrgUK<7u)kko6dGtUef;j!1lzl8aI}k1!$nH05I<=A(S~DNCh=^|JnztRIo}<05)v z5FZ4|*AZF2BkM1z7F{=H;4A1kAaX?BvLGKT`&UvOnun8z;=cIuUL&qr)=ylxF(nkW z5Eow+9wS>~?=qVhxGdFw)I#+hvYmO$@8ja{EB+wvUm5YO#{W~4O`TpjY4U>7qSB&~ zooTE3@y?3XOSm|nRI#sdA?FK4^-ab8FwPh%iMCVh0`~{(TT~KlSbTU>u``VK94cWE zY8vI-VNpB8yrxmTpG6a&NB4_eO%Z-l8^IFBZ4V+QhtcBv8bp_GAHgWm- nR6kp!WF_)70-yRs{rX~8NuA=J(#0d|f8k79uE-_GWzPQri+ejm diff --git a/praxis3/key_value_pair.c b/praxis3/key_value_pair.c index 14822cd..34f707e 100644 --- a/praxis3/key_value_pair.c +++ b/praxis3/key_value_pair.c @@ -1,7 +1,6 @@ #include "key_value_pair.h" #include -#include #include #include #include @@ -17,6 +16,38 @@ char *key_value_pair_to_string(key_value_pair *kv) return str; } +char *key_value_pair_list_to_string(key_value_pair **head){ + key_value_pair *kvp_it = *head; + + char *ret = NULL; + + while(kvp_it != NULL){ + char *kvp2str = kvp_it->toString(kvp_it); + if(kvp2str == NULL){ + kvp_it = kvp_it->next; + continue; + } + if(!ret){ + ret = strdup(kvp2str); + kvp_it = kvp_it->next; + } + else{ + char *tmp = realloc(ret, strlen(ret) + strlen(kvp2str) + 1); + if(!tmp){ + free(ret); + perror("Failed to reallocate memory for ret"); + free(kvp2str); + return NULL; + } + ret = tmp; + strcat(ret, kvp2str); + free(kvp2str); + kvp_it = kvp_it->next; + } + } + return ret; +} + // initializes a new instance of key_value_pair with given values on given pointer key_value_pair *init_key_value_pair(const char *key, const char *value) { @@ -133,19 +164,25 @@ void remove_key_value_pair(key_value_pair *kv, key_value_pair **head, key_value_ } } -void extract_key_value_pairs(char *red_str, key_value_pair **head, key_value_pair **tail){ +void extract_key_value_pairs(char *red_str, key_value_pair **head, key_value_pair **tail, bool doReduce){ char *it = red_str; bool reading_value = false; char *word_start = it; size_t word_length = 0; size_t value_length = 0; - while(*it){ - if(isalpha(*it) && reading_value){ + while(true){ + if(!*it || (isalpha(*it) && reading_value)){ char key[word_length + 1]; strncpy(key, word_start, word_length); + key[word_length] = '\0'; char value[16]; - snprintf(value, 16, "%d", (int)value_length); + if(doReduce) + snprintf(value, 16, "%d", (int)value_length); + else{ + strncpy(value, word_start + word_length, value_length); + value[value_length] = '\0'; + } key_value_pair *kv = init_key_value_pair(key, value); add_key_value_pair(kv, head, tail); @@ -155,6 +192,8 @@ void extract_key_value_pairs(char *red_str, key_value_pair **head, key_value_pai value_length = 0; word_start = it; reading_value = false; + + if(!*it) break; continue; } if(isalpha(*it)){ @@ -163,7 +202,7 @@ void extract_key_value_pairs(char *red_str, key_value_pair **head, key_value_pai } else{ reading_value = true; // reassigning true is faster than if checks every iteration - word_length++; + value_length++; it++; } } diff --git a/praxis3/key_value_pair.h b/praxis3/key_value_pair.h index 66d6c6b..2f0d675 100644 --- a/praxis3/key_value_pair.h +++ b/praxis3/key_value_pair.h @@ -1,6 +1,7 @@ #ifndef KEY_VALUE_PAIR_H #define KEY_VALUE_PAIR_H +#include #include // Structures @@ -12,6 +13,9 @@ typedef struct key_value_pair{ } key_value_pair; // Functions + +char *key_value_pair_list_to_string(key_value_pair **head); + key_value_pair *init_key_value_pair(const char *key, const char *value); void free_key_value_pair(key_value_pair **kv); void free_key_value_pairs(key_value_pair **head, key_value_pair **tail); @@ -19,6 +23,6 @@ void free_key_value_pairs(key_value_pair **head, key_value_pair **tail); int add_key_value_pair(key_value_pair *kv, key_value_pair **head, key_value_pair **tail); void remove_key_value_pair(key_value_pair *kv, key_value_pair **head, key_value_pair **tail); -void extract_key_value_pairs(char *red_str, key_value_pair **head, key_value_pair **tail); +void extract_key_value_pairs(char *red_str, key_value_pair **head, key_value_pair **tail, bool doReduce); #endif //KEY_VALUE_PAIR_H diff --git a/praxis3/zmq_distributor.c b/praxis3/zmq_distributor.c index d59654b..d8a6339 100644 --- a/praxis3/zmq_distributor.c +++ b/praxis3/zmq_distributor.c @@ -2,7 +2,6 @@ #include #include #include -#include #include #include #include @@ -44,7 +43,7 @@ char *get_file_content(FILE *fp) if (delimiter_pos < 0) { - printf("No delimiting character was found -> taking whole buffer"); + fprintf(stderr, "No delimiting character was found -> taking whole buffer"); delimiter_pos = (int)bytes_read; } @@ -88,7 +87,7 @@ void *receiverFunc(void *args) zmq_ctx_destroy(context); return NULL; } - printf("[THREAD] Connected to worker: %s\n", addr); + fprintf(stderr, "[THREAD] Connected to worker: %s\n", addr); size_t len = strlen(params->data) + 4; char *request = (char*)malloc(sizeof(char) * len); @@ -117,7 +116,7 @@ void *receiverFunc(void *args) zmq_ctx_destroy(context); return NULL; } - printf("[THREAD] Send request: %s\n", request); + fprintf(stderr, "[THREAD] Send request: %s\n", request); if(zmq_send(requester, request, strlen(request), 0) == -1){ perror("[THREAD] Failed to send request"); free(params); @@ -129,7 +128,7 @@ void *receiverFunc(void *args) free(request); - printf("[THREAD]: Waiting for response\n"); + fprintf(stderr, "[THREAD]: Waiting for response\n"); char reply[MESSAGE_LENGTH]; int bytes_recv = zmq_recv(requester, reply, MESSAGE_LENGTH - 1, 0); if (bytes_recv == -1){ @@ -143,6 +142,7 @@ void *receiverFunc(void *args) reply[bytes_recv] = '\0'; if(strcmp(reply, "rip") == 0){ + perror("[THREAD] Got rip -> shutting down"); free(params); zmq_close(requester); zmq_ctx_destroy(context); @@ -153,7 +153,7 @@ void *receiverFunc(void *args) len = strlen(reply); if(!words_list){ - words_list = (char*)malloc(len + 1); + words_list = strdup(reply); if(!words_list){ perror("[THREAD] Failed to allocate memory for words_list"); free(params); @@ -177,8 +177,6 @@ void *receiverFunc(void *args) words_list = tmp; } - strcat(words_list, reply); - free(params); pthread_mutex_unlock(&words_mutex); @@ -189,7 +187,7 @@ void *receiverFunc(void *args) return NULL; } -char *map(size_t worker_count, char **worker_ports, char *filename){ +void map(size_t worker_count, char **worker_ports, char *filename){ FILE *fp = fopen(filename, "r"); char *file_content_chunks; int worker_index = 0; @@ -235,7 +233,6 @@ char *map(size_t worker_count, char **worker_ports, char *filename){ } free(threads); - return words_list; } char *extract_reduce_string(const char * toExtract){ @@ -256,7 +253,7 @@ char *extract_reduce_string(const char * toExtract){ return extracted; } -char *reduce(char *toReduce, size_t worker_count, char **worker_ports){ +void reduce(char *toReduce, size_t worker_count, char **worker_ports){ pthread_t *threads = malloc(sizeof(pthread_t) * worker_count); if(!threads){ perror("[MAIN- reduce] Failed to allocate memory for threads"); @@ -264,16 +261,10 @@ char *reduce(char *toReduce, size_t worker_count, char **worker_ports){ exit(1); } - key_value_pair *head, *tail; - - extract_key_value_pairs(toReduce, &head, &tail); - size_t thread_count = 0; - key_value_pair *kv_it = head; - char *extraction_ptr = toReduce; - for(int i = 0; kv_it && i < worker_count; i++){ + for(int i = 0; i < worker_count; i++){ THREAD_ARGS *args = (THREAD_ARGS*)malloc(sizeof(THREAD_ARGS)); if(!args){ perror("[MAIN - reduce] Failed to allocate memory for args"); @@ -291,7 +282,7 @@ char *reduce(char *toReduce, size_t worker_count, char **worker_ports){ continue; } - extraction_ptr = toReduce + strlen(args->data) + 1; + extraction_ptr = toReduce + strlen(args->data); if(pthread_create(&threads[thread_count], NULL, receiverFunc, (void*)args) != 0){ perror("[MAIN - reduce] Failed to create thread"); @@ -299,7 +290,6 @@ char *reduce(char *toReduce, size_t worker_count, char **worker_ports){ free(args); continue; } - kv_it = kv_it->next; thread_count++; } @@ -309,7 +299,65 @@ char *reduce(char *toReduce, size_t worker_count, char **worker_ports){ } free(threads); - return words_list; +} + +void rip(size_t worker_count, char **worker_ports){ + pthread_t *threads = malloc(sizeof(pthread_t) * worker_count); + if(!threads){ + perror("[MAIN- reduce] Failed to allocate memory for threads"); + pthread_mutex_destroy(&words_mutex); + exit(1); + } + + size_t thread_count = 0; + + for(int i = 0; i < worker_count; i++){ + THREAD_ARGS *args = (THREAD_ARGS*)malloc(sizeof(THREAD_ARGS)); + if(!args){ + perror("[MAIN - rip] Failed to allocate memory for args"); + free(threads); + pthread_mutex_destroy(&words_mutex); + exit(1); + } + args->port = atol(worker_ports[i]); + args->data = strdup("rip"); + args->type = RIP; + + if (!args->data) { + fprintf(stderr, "[MAIN - reduce] Warning: extract_reduce_string() returned NULL\n"); + free(args->data); + free(args); + continue; + } + + if(pthread_create(&threads[thread_count], NULL, receiverFunc, (void*)args) != 0){ + perror("[MAIN - reduce] Failed to create thread"); + free(args); + continue; + } + thread_count++; + } + + // wait for workers to finish + for(int i = 0; i < thread_count; i++){ + pthread_join(threads[i], NULL); + } + + free(threads); +} + +void print_words_list(char *list){ + key_value_pair *kv, *head = NULL, *tail = NULL; + extract_key_value_pairs(list, &head, &tail, false); + kv = head; + + printf("word,frequency\n"); + while(kv){ + printf("%s,%s\n", kv->key, kv->value); + kv = kv->next; + } + + free_key_value_pairs(&head, &tail); } int main(const int argc, char **argv) { @@ -321,15 +369,30 @@ int main(const int argc, char **argv) { pthread_mutex_init(&words_mutex, NULL); // MAP - char *word_list_mapped = map(argc - 2, argv + 2, argv[1]); - printf("MAP:\n%s\n", word_list_mapped); + map(argc - 2, argv + 2, argv[1]); + fprintf(stderr, "MAP:\n%s\n", words_list); - // TODO: REDUCE - char *word_list_reduced = reduce(word_list_mapped, argc - 2, argv + 2); + char *word_list_mapped = strdup(words_list); + free(words_list); + words_list = NULL; + + // REDUCE + reduce(word_list_mapped, argc - 2, argv + 2); free(word_list_mapped); - printf("REDUCE:\n%s\n", word_list_reduced); - // TODO: RIP + char *word_list_reduced = strdup(words_list); + free(words_list); + words_list = NULL; + fprintf(stderr, "REDUCE:\n%s\n", word_list_reduced); + + // RIP + rip(argc - 2, argv + 2); + + // print words_list + print_words_list(word_list_reduced); + free(word_list_reduced); + + pthread_mutex_destroy(&words_mutex); return 0; } diff --git a/praxis3/zmq_worker.c b/praxis3/zmq_worker.c index 10b3df5..f6009fc 100644 --- a/praxis3/zmq_worker.c +++ b/praxis3/zmq_worker.c @@ -1,7 +1,6 @@ #include #include #include -#include #include #include @@ -21,7 +20,7 @@ int main(int argc, char **argv){ exit(1); } - printf("Starting...\n"); + fprintf(stderr, "Starting...\n"); int worker_index = 1; int worker_count = argc - 1; @@ -38,10 +37,10 @@ int main(int argc, char **argv){ exit(1); } worker_index++; - printf("Initialized Thread: %d\n", thread_count); + fprintf(stderr, "Initialized Thread: %d\n", thread_count); } - printf("Init DONE\n"); + fprintf(stderr, "Init DONE\n"); // wait for workers to finish for(int i = 0; i < thread_count; i++){ @@ -102,10 +101,12 @@ void* workerFunc(void *args){ continue; } + request[bytes_recv] = '\0'; + char endpoint[256]; size_t endpoint_size = sizeof(endpoint); if (zmq_getsockopt(responder, ZMQ_LAST_ENDPOINT, endpoint, &endpoint_size) == 0) { - printf("Got request from: %s\n", endpoint); + fprintf(stderr, "Got request from: %s\n", endpoint); } const TYPE type = get_request_type(request); @@ -115,17 +116,17 @@ void* workerFunc(void *args){ switch(type){ case MAP: - printf("Handling MAP\n"); + fprintf(stderr, "Handling MAP\n"); ret = map(content, &head, &tail); break; case RED: - printf("Handling RED\n"); + fprintf(stderr, "Handling RED\n"); ret = reduce(content); break; case RIP: - printf("Handling RIP\n"); + fprintf(stderr, "Handling RIP\n"); // send errors are redundant to handle because exit - zmq_send(responder, "rip", TYPE_LENGTH, 0); + zmq_send(responder, "rip", TYPE_LENGTH + 1, 0); zmq_close(responder); zmq_ctx_destroy(context); exit(0); @@ -136,14 +137,15 @@ void* workerFunc(void *args){ exit(1); break; } - printf("Sending content: %s\n", ret); - if(zmq_send(responder, ret, strlen(ret), 0) != 0){ + fprintf(stderr, "Sending content: %s\n", ret); + if(zmq_send(responder, ret, strlen(ret), 0) < 0){ perror("Failed to send response"); zmq_close(responder); zmq_ctx_destroy(context); - exit(1); + // exit(1); } free(ret); // NULL free is safe + ret = NULL; } //loop } @@ -151,7 +153,7 @@ void add_word(const char *word, key_value_pair **head, key_value_pair **tail){ char *word_copy = strdup(word); tolower_str(word_copy); - key_value_pair *kv = init_key_value_pair(word, "1"); + key_value_pair *kv = init_key_value_pair(word_copy, "1"); if(kv == NULL){ fprintf(stderr, "Failed to allocate memory for key: %s\n", word); free(word_copy); @@ -190,38 +192,6 @@ char* get_word(const char *request){ return word; } -char *key_value_pair_list_to_string(key_value_pair **head){ - key_value_pair *kvp_it = *head; - - char *ret = NULL; - - while(kvp_it != NULL){ - char *kvp2str = kvp_it->toString(kvp_it); - if(kvp2str == NULL){ - kvp_it = kvp_it->next; - continue; - } - if(!ret){ - ret = strdup(kvp2str); - kvp_it = kvp_it->next; - } - else{ - char *tmp = realloc(ret, strlen(ret) + strlen(kvp2str) + 1); - if(!tmp){ - free(ret); - perror("Failed to reallocate memory for ret"); - free(kvp2str); - return NULL; - } - ret = tmp; - strcat(ret, kvp2str); - free(kvp2str); - kvp_it = kvp_it->next; - } - } - return ret; -} - char* map(const char *content, key_value_pair **head, key_value_pair **tail){ char *content_iterator = (char*)content; void *content_start_address = (void*)content; @@ -253,7 +223,7 @@ char* reduce(char *content){ key_value_pair *head = NULL; key_value_pair *tail = NULL; - extract_key_value_pairs(content, &head, &tail); + extract_key_value_pairs(content, &head, &tail, true); char *ret = key_value_pair_list_to_string(&head); free_key_value_pairs(&head, &tail);