From 6114d370e917cc30ba1eaeb8c21d1df25443d235 Mon Sep 17 00:00:00 2001 From: Wenszel Date: Sun, 5 Nov 2023 20:14:30 +0100 Subject: [PATCH] added new pawns icons --- src/components/game-board-components/Map.jsx | 57 ++++++++++++------- src/images/pawns/blue-pawn.png | Bin 2048 -> 1501 bytes src/images/pawns/green-pawn.png | Bin 3259 -> 1410 bytes src/images/pawns/grey-pawn.png | Bin 0 -> 1397 bytes src/images/pawns/red-pawn.png | Bin 2043 -> 1329 bytes src/images/pawns/yellow-pawn.png | Bin 2062 -> 1375 bytes 6 files changed, 37 insertions(+), 20 deletions(-) create mode 100644 src/images/pawns/grey-pawn.png diff --git a/src/components/game-board-components/Map.jsx b/src/components/game-board-components/Map.jsx index 8dfb3c7..e4e30f2 100644 --- a/src/components/game-board-components/Map.jsx +++ b/src/components/game-board-components/Map.jsx @@ -1,7 +1,11 @@ import React, { useEffect, useRef, useState, useContext, useCallback } from 'react'; import { PlayerDataContext, SocketContext } from '../../App'; import positions from './positions'; - +import bluePawn from '../../images/pawns/blue-pawn.png'; +import greenPawn from '../../images/pawns/green-pawn.png'; +import yellowPawn from '../../images/pawns/yellow-pawn.png'; +import redPawn from '../../images/pawns/red-pawn.png'; +import greyPawn from '../../images/pawns/grey-pawn.png'; const Map = ({ pawns, nowMoving, rolledNumber }) => { const context = useContext(PlayerDataContext); const socket = useContext(SocketContext); @@ -9,10 +13,25 @@ const Map = ({ pawns, nowMoving, rolledNumber }) => { const paintPawn = (context, x, y, color) => { const circle = new Path2D(); circle.arc(x, y, 12, 0, 2 * Math.PI); - context.strokeStyle = 'black'; - context.stroke(circle); - context.fillStyle = color; - context.fill(circle); + const image = new Image(); + switch (color) { + case 'green': + image.src = greenPawn; + break; + case 'blue': + image.src = bluePawn; + break; + case 'red': + image.src = redPawn; + break; + case 'yellow': + image.src = yellowPawn; + break; + case 'grey': + image.src = greyPawn; + break; + } + context.drawImage(image, x - 17, y - 14, 35, 30); return circle; }; @@ -62,6 +81,7 @@ const Map = ({ pawns, nowMoving, rolledNumber }) => { socket.emit('game:move', { pawnId: pawn._id }); } } + setHintPawn(null); } }; const getHintPawnPosition = pawn => { @@ -170,21 +190,12 @@ const Map = ({ pawns, nowMoving, rolledNumber }) => { image.onload = function () { ctx.drawImage(image, 0, 0); pawns.forEach((pawn, index) => { - if (nowMoving && rolledNumber && pawn.color === context.color && checkIfPawnCanMove(pawn)) { - pawns[index].circle = paintPawn( - ctx, - positions[pawn.position].x, - positions[pawn.position].y, - 'white' - ); - } else { - pawns[index].circle = paintPawn( - ctx, - positions[pawn.position].x, - positions[pawn.position].y, - pawn.color - ); - } + pawns[index].circle = paintPawn( + ctx, + positions[pawn.position].x, + positions[pawn.position].y, + pawn.color + ); }); if (hintPawn) { paintPawn(ctx, positions[hintPawn.position].x, positions[hintPawn.position].y, hintPawn.color); @@ -201,6 +212,12 @@ const Map = ({ pawns, nowMoving, rolledNumber }) => { socket.on('game:move', () => { setHintPawn(null); }); + socket.on('game:skip', () => { + setHintPawn(null); + }); + socket.on('game:roll', () => { + setHintPawn(null); + }); }, [socket]); return ( EX>4Tx04R}tkv&MmKpe$iQ%glF4(%Y~kfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb#YR3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9V`W(-J|`YE>4LKlt6PRh$_2k|IeU^x`-l!$5c!Xx1I)``B@sCqVESxYFDHjRr9NNqW7l z#gBmgZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zQljiNpLch6_V(|YR)0Ux`Eq8zs`qsO000JJOGiWi000000Qp0^e*gdg32;bRa{vGh z*8l(w*8xH(n|J^K00(qQO+^Ri3k4GbAdsUU+5i9p+et)0RA}DSnM-d|M-+g+>q|($ z_BBcnaV%2+tJQTZ$5+pXQXw*t&#R?VZhBdUPtBQwU0Y3t<03-wwqJTiGXw?@@ zTM4O+Ba-k=lQ<~>#hCE&uwceOMB;1vzBtlI$JU&C=hK;)^SEG-tOAYz*MY1Y*MY-8 zln+F{0cHU)&v*jt@;byJwct=FBvvQ0f)*iY5n^>RD-6SU8|Z*nAvOVdKqPxk6#(Xr zWX~xDk_SGq>gAe+Ab$d#t!?3A&|G%H7|kOR|~424i}xg;z7Mqe+Ndr1hNAPAat<_}(iZdx3p` zmT29Gh!@{pBAzFaNU7`pfE6&6g7ircQoUzL=dYSJOp8BA_MB8d_sh({m4H|c+yJ79 z){P}W%oFAB0L{QNr#-R*h-#WvHiYtw434XSZEkF>uK<$0S1LYa$=>ry-RAVx3IY!S zpXuDnT<-M}SSAZGM?BJQ;nn@N=o1MsWa)ZIi%|BLj9 zE6s;C;BR1YI2>kt*;q-&_0wS{CMJ;i)p}sSt?c&}@DsrJ_&C8)!+dHmYA6VRAA#F$ zrSVDWjY5;HF}}yN@tnDz0)GLWPH(L(z;U2T(=-y@83v}y3dpqAPVnz<4XTEJ25bdR zI{~s4I0opENQD0kOG<7U9z_@%8v}R&YzI!*3DO5#0DQ4njNwH?mPW(I=P^b`MpPF3 z1#sC8kf=Npbxlo84Cyy)$xmW0niw7)hS&YBPP38TEQk*L40QYbejb06#ZFmz*H12& zL$;WDrH3rJwZ4|E8`~iOa?!_1?UL`dr z23|3c?Er1s0TUTUJtXwLW%r?y>Zy}nRX<34zqE`&^%ae5@ z6YXZGnVK7F8n~5I7cDcv+%@+imt6XwI^Q|pA2W02nVEN<_nq@RL-TZZQB~Ge27y4T zt_0j+>DVS~Pz7mUe6-{)2qc#rhQ)fiVzEHP1yV@Z`Ct&pl##&LM|h6j%s=H{iQi5M zfkn1?{%xL?ZnIw_<8)qy#<3X78i`8oE@LE$PC3`ql*KPf$|x^UE1>{Oa)aZ;>~X_w z>lVn0wE2(KTW4qX&4}gJov9B)-a+pDd6SXe$~zzK{aeF*MFXfd+B2~5F2N$?qiw^? zz|iE0?9e#YN|Xc{cSG(E#wGeh3ZCoaP#!jMXOSlF!$b^54MrxR2&-)|???6u@TqGK zM=Y%$#s!j(nqPd}*Tf0>hbQF0@!h8VtQfxmF5j=X>*(a&Rq6ouDRb1W6V5A3hA?3U z`6<@hAHxc~jrh3qg){o=0j(_KoP#CS+P0dWROR;hr0-3$;hoK0?Ar*soXFzonw2sn zmK-8_+L%SGivvUMlFf>zOZOzc_xN{`xZ?suLfWA9j_4-dfQn7bGdW>x?4tZyqNV(7 zMJM5inl@KH{#~E=*osX8$hxchvuZ>H^e+wMWzmo*Pat03C;T+4XgF{owW<@kCVdu# zzymHgP%7vZXl1|74ulj@iXiw!fj}rDS(Cd|;CN9ADn`4y;T1;}pa@+Zn%CP_DWnsP zKN^iC5sAU!(ID)F;DG4hARsm@`Yhn$>gMT7R?`B3>}BrV@NjC}ii@VO>A+c*Ws(A0Lu;{l~xC$7LKXeK5dl}jZuHNxJ8 z-y=R^&`WZ*Sojy$O_|o&)}wakKk9sG8#=mp84)d*zSb~n?-KIKXWapo*z9Zr0bnpF z6aoQ*<;aO>GyuR(r)6Vd#RZwED(lO+FA<6^K&2Koq1MV#^2#TS?I zSQ;-#e2G^>_IGi|mZTVZ5jxobL55;YBS(=w%|mIQc4h*rv+|b;{Mz)Kc#-;FCt9wQ zwYEUng+nkJIuPj|$&0%U33Lko0KqU(Xoi%*7h2rMFpbSK?8pFq%K8 zLV4d5$kmC`jD8l_vrIl-T1nQc%bLJ-h>o^4XMAkSWQWh{PWk3-Emp9FidZknP7*iH zxko65D=1v4N<;^89CK8PiFMEa@^jPpKBZHhi#hjU<~8euEgVb>-OM6}DV2}yNwxev z7vD5h(-|NfEjEM`Rtvp%oJ!EsKQ6)T(z7&fqh{n#-EKGT5^W@0(Hy?qyO^?~Wlrnd zv*S2-*VJlRXY&c*O~=@mfbZla2FDf^B-p2(yv1=9;Q-bo1jWb4Ki50gkFpcddYP>^ zQxjGe><@uyA(Eb&N4vS@SI?ZUvWl7`9IcEe+9cGzQ`$rramiX<+>yR^v7u`I#^Zst zEDVXny7Bw<4!XYU{P1TjSqhdmOI0^au794KeMKERd0eA3v-VkU=t&_Zf@3y0ti)cW zZ=P0ete8E}cacPVAC7<%mLK@~`!_VO>n?TapIYD?!T}?!lg0gWPJvbZriRy_*u_1u zX9yqV7Tv%P2 zdrcWVP#9N#DIVb4x85Z8}PysPg4sy<;CMXh#s@3jG!Zbvx%*81_*u z(z%XWPZ~Vn<@g)gm83tsJhDjkaDt9x;VV_$QOsOgBY4!xc1;AAn-m2)#>czc-vT4+ z8<`OSs-fTZa&u$mv{EkiYwTFVO zIy80$G<(w-=)SlNoooCN_d@jk(&Yh{qQEtVyGOLOJjTGo@$1>M+It0L7?k?5=3EG& z02Kv5Fb2Xx(J%mIOFjuRX{WAnmwR6n`hpFTJ?9RUPW%UL^J+YDdbnbP0nA(=-;7^c z6~<=jgUiqsK_dUsP3p4S7YsJZ#1}l^c=A}iorRiIR~$!~O&Q($ zVNt?O5U^BIl!y1F)0x^I>awcG0BI+IpB@$!Bb9m6xT(zBcnFA0m-`K2urzzKU&aBz zn9nvSk*iP3qUIOM!m$4rrrPP3DF&`*q5<*YO754M^M!(KiEs$hlEP^}7|FAu{JcnJ knE&UWKjB{xxoA%P09`>hW3t{+`VoL!@$R@1%xTJh0gFe7Hvj+t diff --git a/src/images/pawns/green-pawn.png b/src/images/pawns/green-pawn.png index 360969344dc4c67c7088f137129f2bc0bdc345d7..3973cad183236dacac647831f3b3c3abf3740279 100644 GIT binary patch literal 1410 zcmV-|1%3L7P)EX>4Tx04R}tkv&MmKpe$iQ%glF4(%Y~kfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb#YR3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9V`W(-J|`YE>4LKlt6PRh$_2k|IeU^x`-l!$5c!Xx1I)``B@sCqVESxYFDHjRr9NNqW7l z#gBmgZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zQljiNpLch6_V(|YR)0Ux`Eq8zs`qsO000JJOGiWi000000Qp0^e*gdg32;bRa{vGh z*8l(w*8xH(n|J^K00(qQO+^Ri3k4Gc0maci#Q*>UfJsC_RA}DSnoCGjQ5b-~JL8LH z=8kCT_@` zk4$T(@d3`Xm~*EY$eBAc_tg&v4#TO3s?oh zo3s_+tkof|C>wUW-C+hR;+ibWu|Su#Tv*a@uEW4%Kw_{W@yO081k54esTPadG}eYx zd8R4pK;MzQ%1gYe)#6%#c!4^A$?EB(gU4DHlx{t+!%85v05+TY=_Dz7s`pq4qyWI_ zbgF*9<#H+ALMwqR0t5m9)erdnex>`}N+3f(I1~!0ejpqUE0$}>N+8q9hKhUFlMXKG zSyQ^Nfv;8q=>-}9=I7^=4qjM@TCGOlk`^1VYXs2;NZZ>RSn5>aV_Ri>l9wN&-z4B5 z5CWc?>DilsN2FCeoD{FMk`zF$1InsFWm$iKdyfCmCy5P@H2G z&~66E34rje@{B*Sm^lmwaVb_xV`&7OMuOC69685Y(HbK`3eiut8VRzZBS_FlkSQHO zri=uc6a@yYWmU{=7|5#d=vvD|V9jVhayKT#$V~puanB5g_yBmNHgs1J(!UfMF(qiM z2HpZW9*>9FzU-79F791tZf*`>UF7cX&B{k6l<<3Yb{1Fnvii`Vds%@1cm{knD~zuf z-^s4%FR6y|@!!`+pbZ!{66Cmm$d)82jLJ!5gB3|a0kdLEiJ`=EkARs z)hbgm>>v;b*nwlfC*Yl)AkE@!*}YybUoM8wN&*LL?EJ8erKKesa1?k0jO%f@b?M>Q!FxTI@$qqp)Vu1`dU`1Z&Ak8`9S#S-Zxo=XY&o|`Fc^eLiD^Hup_TbP zC6XT9Apn9mqgg_OSX&c~IDt{1B<)H`W}(YGk!rs`Q;nPlO6+z!MvGXp2o+a#$uyEB z@&k|I+KAW6j4(DE>1w1I@L;}_61mz-`)Hj6D7&!FG=k!u=v7`vx<@MySO#)UJ67?> zYZb`fEb&UDkvbw}QL9KE39ji9fiwWP-EPwfWLZ|ajcJ4Y?3Yak`8D8<+f%9_yRn|s zrUO!LL6GuPL1e&TK@caK6uE5)EQD1hrM;E0`QMbxZe^)xB*(%U`De}P52nllNCZa@ QBme*a07*qoM6N<$f(|l#1^@s6 literal 3259 zcmZWrcQ_kb8;=S?OA~vGh%FSo*Dh(K5)`*KReRR1SydW)l!(?IMT~N7rDi`G#fNIm zYH%xxhKd?RYklc`p8I@%+&|9yzUTLz_dVx1?-{=oGZO=LHbFK30KksL=-;C2;a?5J zOqcaG4J7~oL%cT%Wrjtepn<^w9^St00Dw$Zbe0b0wVv>xqx}oC9L@tAG;CI^kesS+ z$dl$&*2ZHOdZly!V!>6otYQZ4ZhwE~U~ODlYXe6E4tm5u`SO|g1txi>B-@s}^XaA7 zHcf}N#Bg>a;km~g@R?6eR_YMR*WdC|Upb37h+oglrK$v@F~revh?`g zzHDSR!?mo43~C~}2dUlaO)WZ1VX`7{Q|?iM;uJ9_!=dx5YH!g=r`qOMRGvq=JhD*; zYg*|4)2)UyMS`GbWd14*wO#HRw5^}E*(^CpSng>jtZ9xzNX_v;0$98vQAMr^TxlsW zsGoY^DthKTR0_{EZcyRZ;5AEN8`+6F@89+xADAW~vjM{&c`UZS%Jl1w zyZ|hDBwxSP_Exy#A{e+Iz{oe}cXNqRF+8?R+Cc?w!1ivRkL^Fl0@3Ci{5?$f z=N6Xij@6?9D$_H&?16!xbROBL#g)afw@YU_QybeXu;t*Sj&aZ_y)4WwMh5zTB)|mV z*iZn$O-EP*F}C*r07Z#kjUl2^H;fLlgkW!?S=N|A+ye4G4b$;-NFW4l6M_ox^Kpt2ip%!dhhLRd}g(SnmAp$1;T` z^UpJhEqcna(M~+^vjaY}Rar1u@4+e|WHu-JZyS011zydr=Uy%@lOMcl-xxsHT~_4n z>YOf6coC!BMrB^ktQQ@MHpOUduhqlXXf&O}-%3qeMraG&hi9}O#S=yMXe+lj>taN} z0PgBk7(fpU05ber3|Az=Ksg9M>9mJ^dtUMhanPsID3$D%JzethZcJ47eFfr^ zc&n>*{nqM1`=XZ9AGIJHe=-i5{7A+*vDF5WD^U{-16_&)h`ON{o9kx7G$oipoG*nF zJgafge5^Pt4$4A+V%$L4!p<42NPaw*5Kixj9FzbB0dU{OjpcDr0O+VRAnd!% zZEk%q9LeGMNrx)RHLd?XUBe5>|5Abl0jg(pfr84R%nk~}uEhrAd8Owil>JOW-Egbt z=8iNxZQskh75;c>GHiFtQ0^6UV(dNc2-R&s_QqdLq3GjZ2DK)U?ev3S7+;LXEpy4o zhk@C3GM2y;F0q4`MSNyN5U2EPWKS=4#JD!Y1&vn^X;i?f>MVWL$KGZ^;=j0#w0u6b zt+vB%mxVy!yB}KCF@krUrVh=zK%6Y1%F`knL@x-OW5M66+nkWk-HF0uF256k-&Ae; zQPtlJq8C6w+8bBqmkCirz%Zmv`SL|IJ+PyVYals?cr5DzOi|fN?9eTR-N4syysI|y zQSB*QbCa5JBLB{m0e$c6^r-;;!cfpX!g>lWd1qTEn=B2*d|2gw*N<8xgqwnMD%{t4 zRy8AP>=_xy5V274wcwan2V1(&R>SMRo8#RHZ6^&cK6aePDjptYgMh5n!n)*MYk8|s zxvZR#i}49Pd%nY|mc{pj=0xF0{I}4$gR_nBk4@C6&de&Kf~_f=*4 zo4Fw!V7NBpZd}rxnbS?R^_Z{g)H$-`Z)-74JIjdsKPHX^UP@q^KD5_M=nMtBW(*i^ z@_i>1T-3eYxyEq1V;Tdgj)lOlDBk`uH8t^Ivui@C>TVqzaiH;}95K5#Bs#bJ+5p3i z15VxVIr;Ck=;KblhV5YQXC{+~Yf0uIhGi8)Ce)Ee-HJ56V+=p;=&$=B4}8s=(ewjw zpdmbDYtnZ-V7h;D_>kDwX9QE-PMOW zJC)MKyx~CbWSf51zH4vYT*KUEujk+HY3iNRt#{7VgCns6c2@ogI#Dqw`juJhwvIYD z>-y5tFaL$>0-GPYlc%fQznTXL-dn6&FFAiSMajg}a>%q%{jJLBXho4$c%Q}LMi~Ir zJu`0TVBb-<&FR?&CV_hcib6N;ShA>};S;|FT7@6#V&J&E<&Bv-lQbXrIOs~-A1Q6! zLh$f&ie#59$R&}!qs6?73Z;&o*0G!RUtb+O_N01`3;SOzI}VnBF3*%fUnBC0jXkYV_{lm=UUd& z5RyLM-5Hj~LN0&r;p;`PJ@XP6NWImU>h~i?k;68EYmtpG?tzuU3hv&!p+6tg-AgJA4|P3)!7K?_6WE^CkLp+mS0@3p*XjC}EFztgw%d4?P?I#%tmW?a$(UnF`_<{DRQ# z(SO6vrA!O-cp)TyF}BDDYLb(+N-qYEcGU1_;7&<@z|t%}NyEThlwz2E7nTpA=wu4d zFVuJ~fNgf=VvI)NgcRtK>u8Czw=eK|=mW$+`^2@{H;K%2_{Im`EOkCjgw2mfT9)SK zH>DsX&|Mg3^-BHGz4f=SGv?!a`^;{XUR{tMR}m|8#inyB;|!hmQ^Z^2X}<6 zCe|#hT1!w92WDLjTM`st$;$reHa$Y#I$)CNHJ;{(zal+W*L6=h=npl&$g_zIvqQO| ztJwPog<5Sj(bwo`UMM`(VL<7@!#d5`1}j$y&jv6_K?IWCc|d({ia>J!cjB~Q{P$kK zMMd<%D=V3H3C9rfEo}@lgmkszhWf!%;$@`qz3_NfvBELpuquw<9ZRF{r>JTHVt2rG%pbMi6H zh|8ydNqYf{2?UDDqv;1KsZa|!PpNDZ;7-AiONc@#yck4rKdd!ej$&EH*kG(6Bvl35 zo2m0!L)rP$H{E!V+Wk3;4PT6RR&sXey&hP`q0+ciJ&3|Xc8xH;h>^!dytfXxr5ylq zM1?^}7e8|M%067U@^~7SY>gvjDUTTYh*Ht`tQPS%LvM6!K`JhqE)RS+F-o{}x7a1# zJyelV4kUgjNmUiAj7yK_QP%Cl#&In(;4Y=T%@cFXCZ-Stkcp~iUbh~UKotfn+=P&c zsEYC(j{U3wCKOPB_p-%skfPKKXaKO7A4C+Sdn=1B+$8t_1vpyeKC9QeNxeu9kw`vn zoHq6`PY_YzvXdCbdo?z#tPW~|RN%ClrWFUm7|{o#g?s7llOPh%OHq?$!to2njAcEk zX?ooNsg8n>BuBX?417md`|_tHl7;$imkph2+;Z&8uivLx)+a5>ljB1D#12aBGoxC- zM1>0Gn1;1zk5$X^0Ygs>3;ihI)49hA2cT7%_If7zCtB4}w=OsXKo)srhoC3Pum4OQ zJX5q1sE3U%fNuFjlgoBq<_NR!Q^B+9-Wsc?B zFITV5L?Wc2!{_Yp>fj=|`xD|8UBSAxEUYb(a*>_qvexgnoRbU50lI?FWG+iWpW`=# zPwtoN^NMdSm@sborYIKZ#P1{&2AOuAE6o-#;BHTRnlJRPWq9(FnJM;48EX>4Tx04R}tkv&MmKpe$iQ%glF4(%Y~kfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb#YR3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9V`W(-J|`YE>4LKlt6PRh$_2k|IeU^x`-l!$5c!Xx1I)``B@sCqVESxYFDHjRr9NNqW7l z#gBmgZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zQljiNpLch6_V(|YR)0Ux`Eq8zs`qsO000JJOGiWi000000Qp0^e*gdg32;bRa{vGh z*8l(w*8xH(n|J^K00(qQO+^Ri3k4Gi2i9G4dH?_eb4f%&RA}DSn%_%PVHn3h+qBgE z5HdqkHjvmrgElmj(7S$(#0YdKMCI%sh`I{OK)R^Epc}oZF52#jh#+G(MTP~^U5v@L z3X!GcRx=~l#oiNhPW}^J z1vY`)E>{+~qIRPumFv3=TnA`wZf10JbjOe3aF~sa4e53UxM@U?Q@}I8G&MC1)J^-7| zCcA*$ZkLiRMgsW?kjZ3Z7f7emQZi*EkOd&Oy}d2FKrWY)X08Pzfqar)C=!X3%{)Ip zFD2gqpN#}E4fF%VVzIKBjAPC_y{d;Q}t|G1xBv1cSk^79K_QW*{xpPW!b4$<`3$hn6788iFLX1WAYu2DP;*>edWoQ+RZ>^#u5- zwI6v<6fafl*#REv;Se7KujPjBGD7-S!Xk?2ZKaYHMVHst*DaY$2A9iKQ3a7mgyrRB zM0_<2tm***@Ete?bgiwe5sgOa>FJSGFcb>0va%xGz69<8zx3!@eZYI*xbz?p2*@s6 zl=lSi4rN4pHnM|62v%p&*S_=@TSc+PQhKBHX zJgR%c*49?6Rx61_!VH`S9s%Ff9PAcRX^Yir#qD<2EYR|JJTx^mNl|b}?#Gr35)_Lb z#>dC0wI(Jeq-4KnTa{VMCN>$`tKDQ!7`m*I-|bIVYmsX}yTxKbYl$`wAmga6oJH!y z`k+l~YZO`KiEX>4Tx04R}tkv&MmKpe$iQ%glF4(%Y~kfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb#YR3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9V`W(-J|`YE>4LKlt6PRh$_2k|IeU^x`-l!$5c!Xx1I)``B@sCqVESxYFDHjRr9NNqW7l z#gBmgZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zQljiNpLch6_V(|YR)0Ux`Eq8zs`qsO000JJOGiWi000000Qp0^e*gdg32;bRa{vGh z*8l(w*8xH(n|J^K00(qQO+^Ri3k4GeEumBOpa1{^FG)l}RA}DSn$2qyK^TXhB=&=R zl+=i{Nl8^i1O;1KN&kSV1bgtHJr!+x6g-G}5wt?2cs<>u>Ye1I&MCX7t zK&^891kSqMX~^aFt^yYU_9l}|#A5&actKJ4R4nSZYi&_CXg@s2PxVI*3`E$@LOO} zCXg{82Qa#{RQKi6%gcJP54a>t92o^Mx3wnP_6=lBM0B_H82IIP9Jy=A zmz+j+fXN^N;v?XV+0@-cO8;6|B#@+WAMhS%oJ^-_vY4(Ys>(>AfXJ`9fe%4}M1hAu zKR|mT!OfNyQx(q?i!7CwyDx!bc3rR2q17v_(XT%+3$e+&hk$q3+fs65kwG!p8$zLw zZx(=ySNmUut=F4wj*s2G!3X%t&0AV*FHgUxpzyR>v z3y`ds6DhAC3@|HV&dj?x*(1O`AQdwl6?ma&G^%I8_eI~XfsBep54V#^&q40Aw(7;4 z=-ZW{6&ITf?OqS5Dnslm+HSw%)FS7B_DCdx-x7Up$HY-xJ&SA+>w`AGtzocAK{%TY zyB5givp*0NFw?f@iMc*TKL7IW1$fE(Y-A&6NJ+&$Zpk`_u)71jWfp%UV zw04#=NIe>iXvIEi~AxMW+kQN{&AxNAmo7~|V9zs@G`nC+! n|E3i5m9b)xMu{!bu-U^uYDwg*Pw0xg00000NkvXXu0mjf0c>2n literal 2043 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 literal 2062 zcmX|Cdpy(YAK%!Rxy?*cVwj&xNRy)IOtwstrNmqcG3l3EuFH|WF0*o1;V87wsYLwT zbBpG7T>2exNG=(nNefGA#_zkF-}&RYy`RtXyxyPp^ZLA>o0L;FvdCRX2m~T)OC~yk zW4EXwB*4DRrMv(FfhPD{TT^VUt+ByZgJ}L&d?66s%$Q6|@+*RB#|5_Y$blxhxiJBu+QgX3ZV$S728rz_L&pMGU-t z1**hJtAluJ?V{SIS63k}=VUp4r}+*_BC=;Weyfca*xx=>d=HZbo!D0^+>eAs0`c}^&^Dfvq*T`*$^Q~ zkk=5w2^B*Oh)4yKsi6>vk(Q`Iqe^~>071zxTYHk^oCE^1%V26AJqtoAVI-F@>!5%D z-@q`4^;KW5Fkc^Rq<`2Ytc|Tb#Tk%OhCtwRwnVG5QDaLJ9?Y{&keACQwOsu`YIfRP zFFWEI>MWmf^zqqSUn>w)n0Fi*O>*@_D@g&`ch;ukQLrqGBcDYb)sHz%TSAW2?rJDq z>`GI2D{K5zo?_lyZd&>%bbj)PK+vqs8IOLw!84yf)#sDV>y~^_uVDm5z+hrxP~ZlE zfW@Lv2n1~5_dm3mBM%qlF~U`+GDUY)K&EBq)6kkklTBmi4W7}Skh$1zzHa!3daWs2 z)cx1&Y-9}YtV~5W94ZWP>c_U5b+zur00?W{$`#Dsk`T5qkA^b3E`ENFd}X#D%P~vl zx(9eY=;}oHP`WhG0M0RsLtfc0#b%6GN+ldPRGR|GAn|s96$cIw1VA0l(^PUl|j)pYIgHMEm)K<1_Z2L*6Tw3#l<~=ukQ*?;qCCw zO!>yVyxt#qhsG_;KV7~o_r2+P5SkqKmA}Sdbmn`l488bI>)Py-a26}XZ{g#TDN4+i zrdk;ARQ?UEPcCsnBip{MTBYh0BlR9hGh^1Ulw0@f?zw?jeD(-WeYOdn4DMWT4V1!} z?_Tk+Z+vAPy5nDSxpRgtm|Ee`r5U4)C?#ZKMV;>jgXpx-->y%+nod%Wl~aRC;|}KM zdrYSe2g%ou-+b5Jm6Ko@y|zmiV4Fl=c{hogq&6O{>>7Q+^K@Ar;|6nxIZ#FNcfWM1 z{D8woNK4)3?TXLB^kdG>bykXGx?g&A)a9OJQ4VI|+@N@!jD@d!K4U(ojC`(oepJx+ z?4F`r-MmZz;bG(#O7wb(zXLZdI#f79QvisqO=Ip`!|;iYnKd?NzE4x^=5=~a#DwG% z%j;E4f@b(97aRQ?XQ5wad7wiz44t{AWpk#XiTk|a`yp|?j7#?|==cUf(P~QA8)Y}c zDi}Jo*-&sMR_=LAODEnAd*9yeot3f`w#Ri0*Rxq`EpZC#y@xFPE6CjdxHH+UFsu}! zHWkxq`KP=pEXz?*=X}n>Oz$`bKfn4dFLFyQEpo%30C#kK#gHw_6;j?o1t{RoXw67U zqyns+V5Dw&*aGjj2A`NX7dK<_hw z-(>!e)rF-+lU%Wz@8e`u&`*=(9X{wR2*V?O)G7kR2c?ZieqCRFG*oC4G43RB23wNT zyQhq~y70-u%NXu>EwxHF;?!!ZzrXkoO0?#bKBd2VG1zEYr_p=L%d%m-M?pjxJy8=){D;f?gfIg-_CHC zsbH?7_oWlIrdJ)NOrsHOiRN6>pk{Pn>(?DsNrd$}TiP{gg~%YkidHhVB2DtUk`}^KBc?*bf$6wdZMH~ zC4d8c*iu)WdQPs@ws&s(=Rdb%QUABppAdnxF3B3vV$h#@uY=zL#Fli5Sboei?th0( Bm!bdw