From eb13eec4c50408d7fe45a74a0e2a7802b7005ec9 Mon Sep 17 00:00:00 2001 From: Islam <2553451+qalandarov@users.noreply.github.com> Date: Mon, 6 Oct 2025 19:55:52 +0100 Subject: [PATCH] Swift Testing (#748) * Swift Testing: `PrivateChatE2ETests` + minor refactor * Swift Testing: `PublicChatE2ETests` * Swift Testing: `FragmentationTests` * Fix MockBLEService init to accept PeerID and remove _testRegister call * Add peerID property to MockBLEService and fix ttlDecrement test * Remove duplicate peerID property and fix type comparisons --------- Co-authored-by: jack --- .../SwiftShims-2IMTS4WWRU7VJ.pcm | Bin 0 -> 157016 bytes .../_SwiftConcurrencyShims-2IMTS4WWRU7VJ.pcm | Bin 0 -> 34080 bytes .../SwiftShims-2IMTS4WWRU7VJ.pcm | Bin 0 -> 157016 bytes .../_SwiftConcurrencyShims-2IMTS4WWRU7VJ.pcm | Bin 0 -> 34080 bytes .../Swift-207X6UTF85MUY.swiftmodule | 12 + ...wiftOnoneSupport-3W234PQLRG1JJ.swiftmodule | 16 + .../_Concurrency-IW47C06QYY26.swiftmodule | 16 + ...StringProcessing-1C2ZFCSIKDXY1.swiftmodule | 16 + .cache/clang/ModuleCache/modules.timestamp | 0 .../EndToEnd/PrivateChatE2ETests.swift | 436 ++++++-------- .../EndToEnd/PublicChatE2ETests.swift | 559 ++++++++---------- .../Fragmentation/FragmentationTests.swift | 216 +++---- bitchatTests/Mocks/MockBLEService.swift | 15 + 13 files changed, 631 insertions(+), 655 deletions(-) create mode 100644 .cache/clang/ModuleCache/1O89I04QQ7RUB/SwiftShims-2IMTS4WWRU7VJ.pcm create mode 100644 .cache/clang/ModuleCache/1O89I04QQ7RUB/_SwiftConcurrencyShims-2IMTS4WWRU7VJ.pcm create mode 100644 .cache/clang/ModuleCache/3A6TBOROFVNNR/SwiftShims-2IMTS4WWRU7VJ.pcm create mode 100644 .cache/clang/ModuleCache/3A6TBOROFVNNR/_SwiftConcurrencyShims-2IMTS4WWRU7VJ.pcm create mode 100644 .cache/clang/ModuleCache/Swift-207X6UTF85MUY.swiftmodule create mode 100644 .cache/clang/ModuleCache/SwiftOnoneSupport-3W234PQLRG1JJ.swiftmodule create mode 100644 .cache/clang/ModuleCache/_Concurrency-IW47C06QYY26.swiftmodule create mode 100644 .cache/clang/ModuleCache/_StringProcessing-1C2ZFCSIKDXY1.swiftmodule create mode 100644 .cache/clang/ModuleCache/modules.timestamp diff --git a/.cache/clang/ModuleCache/1O89I04QQ7RUB/SwiftShims-2IMTS4WWRU7VJ.pcm b/.cache/clang/ModuleCache/1O89I04QQ7RUB/SwiftShims-2IMTS4WWRU7VJ.pcm new file mode 100644 index 0000000000000000000000000000000000000000..3b1b286124faf021977238361550e2b285202a44 GIT binary patch literal 157016 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∨wb_zG7|n9L153Rz z@rvi-%?WF7P4J4x6~wF?_}jWx%sN&)=M&%FH*4ew3;qqsK9yrl33!&xDHqU3qx`Xu zU9DVl-G>E?z29p&{Srt&7K^8!nf2$BOHLFp%THIaSTMk1B*ntzjS1!VCj9c34~r@Z zvwq-`^{tro6pQ>Xx?lPtZ~G7UZzk{kJlc>#^iCtOccebir@m7j?RfNPhev%G4H+$B zzU_GCTRHPBRbTz!cV7KvnRIwePK+*hyC#xoa$->VpgsvzNbdc`KE+RMEq==5lk{q` zNWf&h*)$`F$)bkE?0fRf4~~AiNL`~I_UTx>=7|$xLv6#~EmjQp@W%lOo`9f{kz>SF zDH~EHbXC$2J^sw*S>K1weN1L9{_)v(nUu)PGGa!}JztvRb<6K<{QjejUg6ubNbJP& z*olJJiPQ;hyEnSuPjBU_52=+0SQHMam+IkUAPbu}G8R8mb^qBauSSqiGU&CkfeB;~ zm4$HNWce@GUwXJ)zar;0D+~RK@da#HjN~Je^~NE$rRk{`H)>m5Y)QoQTuin}n%m{wW7nFFdF>J&>}2Bk=#MzNj4aw7Iq>DG zXiJnayNueUB}zzh_hz~DYcm(Fp6TUFMH{lT_2ROpaHM>BP&YPY*DF7%1gcwohXtKO z1i%w&WzApFlYLvYAm3} zb{OGRQ|43Rt}6beO6ablYC5g|mZN_}-hN4Kk1aW&+hQ3nU`UCh7$sTG$&w+5$7;I@ z7)j?cVZV@!lps@tm611SH8HJRX1yhzsbdPq=?etGJBUIQHc=2F>0B*ThKV|bkh@Z| z-jQI7>7jLyoMq&TN&%EtwkEuRToI?*`{XM%Lm0ZPWT;XTQm&mKyDUB${BWKqr5k7< z_EOycEMD9mU(#_Zp3cUJD_=v1)iEu`7M^Rn-CJKoR00tctXU)wxK;cyparXwE2Z}UP<>Edcq`sBG7tDzpgcUX-YSzpfi0y(X%npEdR!+ z?Upm5cvpLSpBA`Gw)AqU^vi$2m$0vz(G!&z_S3SrLa^2*Qhh2&73(pupy(GDeljvE z)hB}2gm3#*k~2cgfX{LCMVA>*;OlwO1t)fqfe^Zuxm$z&_&i1_(1P)rnNQHI(CCwi z;(LPCg_AxNWP}OyfI!IpMIy6~GTTZem@~pAq5@ql&Ir>C!Bq|Z@QEvFE$o}Wz}WvR zl>|PlB>oRqX98D4_r~$LTXkEsFSguL+LJvkx+NrAC{f|2kS*DgNcTqeB_!+1jUdwN!GGoTaqG#RO)|bp6B|%@62cT&G$ZMX3m*2XXbg%oSCLHsgW6Kf-GQ7glPQa zcW!8)Yl0j{v-l>ciG#_~QOdoNihguWkYhsE1a;>!hs;b((92L08%&Z0c&ndHplgCu z!K$a1p(dg%@(o>W7XH#v?j>(2kT2ztH|IpfbID9G57WtlR6U7Qh33IzYE(IA)hntq zS58XFDVa;I(c~lv(fG!<5_&A>rC4zlwEM)Ap+t#965gHls8R6jJ_VGAc>3k|S@U zHVmbfr}LLvWa$=kyRp@zez!7%w65htwP0piXtlLdfOWkVXStHI?>^Vuwmy}72$Awv znkF?jaPI0qLvOS`-*_HsDSORl(G_m_B!BKjt!X5_2V@ zn&Xy%^)~e(m9w1`vzVrTfHZySqFFL#_GaFhet29! zNd$CKNtdh;#XKkZOnv&)AWxs(hERC0PMFa7l%7=O%Yn&P%#Z)%>v#p1nK56=nzK|! z&U_7Df$qXWlX?-|a?CDF){=@SMI0R@NfnQ{ky?RH^>kj%=_?lb&1hOX?=0oa@Ev*7 zi9yUS_r+e+@8`n5C5!!k3Z_aH+5g6MA2=EG4J^Gp;#bL4IAacMga6@MgMnG5K-iDLQ%B z$5a|QJ<2R>jSISoUy$>aIXy;^(?k9#4`w($jz8lHGF%pFwDJSB1{4Sa=%;t&twVD2 z$$9GpGYr1jbdI9P=o6B3xFAUDXMrHli7O&$IaKWuEk&F?y&5?<&S@&l87 zQU|tVStNZzXOcX4p{FsG?tH4$gudgEWAvX>l3bnW$xhomX>8G>Vk>WM*m~v{`p)Pm zG=Q0DyOeZj5-GK5dIdrQm~p*1Nqm>R{9rs4yfrjjG&mkY z;vIM@i=-=;Qe&t1a!9zR?(V21Q3`kpZcb5>Zdx+Qu5Oy3bJ`#>sxEM!qf}<9O|?^~ zwQC(o7o}ySiR~y8dVJj6)0EmI7s`zixGDQiAorfiz7rbzP9RTKz0+=zm!^xTdTMq( zbt`fn#Z_L9m-CwUbn8`)w)Dx?T&faaKccw{I@pEMT$>%SI znw%bLQa{vWMW0ggfgno_@is@w!%-_h9(>w$B}c*Q*lj%-%<8I`b=s9riFp%kw8W%W zQJHv}KI>+AQ}xOnk?E_a(r<95$aQ1gE7Gl}P3LOV5rX|5IZ6Md% zN#K(9*^uD#Ct*sqfFpN&{cC`%Z9tEzHxw_-T2DHu<&{mtEArBFzP}zBWtZ(yy;>Bc z+@4dkUm9#l&Z{YnhJ0gEe=_q#OSwqTT6#(P7T)xAt@q(5w^Q6W>$tBr8n=uSi%k>h zT__xi)_HL@d-YIGp?G@MwO?%phiZ$~C>+w)dC|u`vR-OSa^HczB@NItfSEZxwKup> zy{)C*8cKg^g`PO|@3ql@98l7d$UidK-R(jeNDwz8ksHi7EcNu3?Ee^&85|a}V3hK$ z#X_kYW*ygL6SJMUh0vE1$z!kZ$6in)WZ9eJpxa^*U>s-d*KDKQPMR%$b{pSYKu+bD z@B8)W7sOM#yS2g#;_V6os5omWHA&d9O_=2Kb-&^({TeuVTYP8ZsI1?kwDZjr9<6rU$1_`AVbF_-=Dcw z+mMS_%$yuDg9k|#bMTm;B|Y;HilkRsZ6$EoZAnEpLuiC-PdVlQtzS zN$4R;w^F2;nUUUvVJTO3@)cJ83M;N&5%1DxEsuceMU$x{Dpfj^-^w{BSo%xw+@w-! z`i+HkfC0H=CH}ly9<(CARx>Q72OANf%NTbt#C2%eX_$|$r!YFd(m6I`z zZ(f;RC4FtPjh}XWh$_k~AJn7f)ixNf+=js_+>lw<{ zDxzh-+Bg@JIaGbCmzvcLek%#4C@Nv?PO}sjL)+o>`P^ttAM}yhem8_J-RP#TZRpyg z8>f6NN9ZoQ&Uj1_J~sYR8*Z!OMbe{3yv1583y!H%Ipoo~uf$Rrn(J~`Iyan>npExj zN{=X&QU~~-Nw+iJWW<`E*2;s#siKHq)M(OR$qu4x&5cru<1LlC&z&SsJ!8%>r+@Oq zi|SN431gVcPC22sBH!}adIq%O$Fcj|8QNnGo) z-oRx&HK;sK^!BCrSuq)T`n;pH#Ke1pe2(n)C1y`C=ll699FvSWuYEF?@>bG&S~xdV zI)U%ZEl!U5rKVv@`nBp_+H%fl`0$gp^uOpBIg>ugH(hg%wI)TY$e#YEX1>|ya6O+sO zVXtgukju6PCYQ?nmq&A_Gr5eZVRA{0OgP9dV{*Cd5#;h@(_rD=L87iAe?>N(%kl}Y zqE^VEBld;Ka^Vr=y!4se9|u_-zDobeeC6f6kT#crDx|V zqQl9j1AlJpAryzCibMEz+`{Bt&1x+sYQ28x$Q@+48iD)`T9be2xHxNH{@hU<%$-55 zKD8#(zI4nX4MU%Y~N-HPrrikO-4y2)K6DvYB0HrmuB9&~$gQTE|f@psZ|N=DKfp~J>+8exKy z!i$SK7j*l39nLxNiOg^vCJO;#&90l3L5jVKi4`0Y7Ls&&l=R{W9=*0iP$~?I?d)R1 z6_f38sQg+tbo;2e^adfreoNl#=WE6p=6-flj$oX`HRN(hEw11&vjuaxtY1`-PCD4; zO3bB8sNW{3L;m$S9IC&7d{(M{#Lj|GRQ?EQx-x0y$BUbWzOgx?DKp!3=@UPlJO(q{ zLi#XPXp@_?IJHthf4k}VM0I9f&Ddfa7(s@#qKSMI{A^eGW>SxA1#h_J5#M8wn^ zI-ktZB5L==gY-Ae^KqK2e&zr7T={P|GQ&NWEEtiVXWeq1SXcBa>AT+FA%>*G|2i3$ zEA^VZ+G{d1#4w5MrGb*{mENh~)bF7N772ts68`z!>GcBRq#i!^DugxUTdO^|R4S>d zl%f??{N098wCg3U`b1`^7;PWvJTAr&QFL`G;ZTb;2X3as!l8^dVH1`_TG`o@B7V;C*+miCSV$16a4)a+NvRp*>wn#`gt+3^2`}hgyj9eF( zn=%>scTX4bAm?(;Hq!x(cH9W&93zWv%$}$Wj~^P5ctwy|E~Az9lC9|9oq0bt8}2+{f!mJf+LD z9(MgZ)=z^ge$JJ8P~&at^<$|3XGH+{?$VI()um%!X(!7z+`6%0p+Rg?D8XC(FZ6urpVq~+?&#EpL=mv}za$rK|OQS$L2lwux-;*iilM8XDEi1~G>%lblM0fmf}E3{Ng+jxldeaozxx0AG~e8v%y2%D1>(a! z?V4j8XEWO~R{4*r8z8=x^z26#d6JLMeRGQ1T-1%uE&0rpNJAQ?L!O6|L8@e?hrNl& zI~YP{faB)QyEiif9LaMZs){FGQv51HUA&m9EikpZ;T2o8zjX2_*RH({nk$9=Tq>!T zPuG09Q;n&Ar5i`PXWYZR0SmY~wCB}-b7wL$o) zQs3#AuTDsBlyu?it5KKvF8gRVKu^rIA|j^S2+8LAt3#v?BH6mLJSO^3h_5~+pW`55 z$ujR69IawL{TT;dJn&d)2Pku{&=qok-v*dMh zUz%M4%VR~PNU6bHyidqiwtw1=aeb*0?K$eCNMx(cWUIAZsQ{8Cl3q+M_{|z*Yf?JD zdaCXuYhofP=t=bc1vvz^oXorxa0sZe&t&9xH4CX1C&PsdD5X~>lO7deK(*R(S~ceL zW3@~xx>OR!S^1`EEVo6!Qhldk#tARUNa9F5{4rhZlPHzYuB39ma&r%%G%;10$e+Qz zD2V@}TT2{p@s~e#oHmUc{7qW@zjSeR*2sG46)0>Rq9k|m>SJx>E-sqTmhP|cN^;?h zPMZEl-B+0Oq)9i3+p3=}bTpNJ^2#AD3$^giVSY+xwsaX!d?;m7+gOsJH6%j?jZB85 zrfqbF0!W4)euE5!w9*-pk_;(7K!#dc=nPTANq!$ehBBMz49PYr=3AU;V=@%^lg<#g z7s*g!83m1|=Ys+Mde+61OEt;oV zG&xMnNtQ>8H4V2&g2@g3w=wtc4gR|WU)#?`-^EeQLOGw4kt3qY_ligK_JNLJ?Si#~ z^@vmIy2ZeCi*iKy-ukh`lq5P9#ow-2%a7rfC7(Z_?@Er9OK@*{nW6AGX@GkNbvdWj< zjG1J?CRmz9ngzZb>_Vn* zYJV@)FZ}8qs^xnYu53qkNGZxkxY4)o|9hJ%F9_FVKGmM9I?&@c@s-@`f{73GJDJj} zO9JM&9gt$EhW=*MC}JQ}hD&Gi<_qx{uXH6IBmE2U7}pFDYd+W_4pZ!vjPm$<{wemw z@$nj%;w-*El8ToyYmi$@ou7-dXkvM^xojasYb|%km6P-^*ZGNwL9u`_kj!ZAE~5=3 zC{uK`R&+7SXpA?ZBi3$O=IwRqs^{BIB>&4j>4MNb_RFmN z3{#y0LpKLpV6O1w>2035>KJCy-SB(qn;x0QjNi$B&wY^WQD``vISwLi`fho4xed%r z_f=`rKXDdb)UM?=FmGl0n#o_R@g~R315Z0jX%D-{CvM`c;%D4!tz73f%u#rzItqt| zN}NSQ%d`DuR?Jb*pyU&_bH|L|&Hs>;Cun!f=&1?qoJh$DI?hg%d}yfDSu(Lc*I%|s zpFV4~UyQSJA^9db-_8G+^f-CnF{2Pu4*5x;SiGIfqeSF@9vUilo;R`jvj0`G5;?^+ zjl%4R0RswhG%EyQrlj;y*gufr(nnY-uoCVHvm;M$=;OkndY&I6)*QQy?E3=sV0-Z= zrp*|gxG;u1eV`4ZiOLIlFSaKU1KER7{YBcKa?^*>8=>FSAd}Q6ubb?=)arGcgJ3Ju zl0=lEEm+fRrQT*f#`WT@bV_C|(xQ{kGRH{iIPC8+QcOtW;v)xq4#+&%B`c*AKev*Y zrdXBkIz&GYB@>_8*=rcbu5?6FEN7_Cr3so=Yv~)On3BeyG5Yror9+sqk{w=RcBq)~ z{~bynkR3uFm>+#5`+r+-We(M!IsZRYP0z@oTE9&ZCf-^;a0hp&C7la0nq#%I03G=h zEAmS@<5JK)_VW#PYWW%TtQ#X5N{$`<)FJZeA@Y>fhB;23od18EDkf@Tw7@+4lrzc6 zfj$U(EBe>oR&@XG-c(^j_#$R+7k>YLZwtR4QZ@Chd=I*KE@5;&=%((@6mNgR|BE-E znH2BLHpN8c7QMGSl7=v6f*vKhMs|3eK7wi~R?00@9lh9(Zd`Po$1-KHc+>rFS;SW+ zYx;#RHptiVFqqOdrrwY4?;}OO(n^X>k|#)GE!MdRo(`fb%l3wTCfSPg>v)nzL7x83 zBz;_DQBI!Q&{Ilry_E~8b%{~t-&$AL4(Hfuk4hTtU6(XHT=VRDdP4#APQy9m6&c!K z=KYMjFts%5QrDlDx|V$3`S;9HRP_*KpBL+7VR8Itl)v_k!y)^q1_ z`s1^DMIkuT(LNnn$}Q>0LUED$0=sy8TmUodqP;kOf^ym^E&BV!vn#kTGv6mxknLX5 zYJlzj_jw$>T_xGBpPurf*%UqH;vQr~hj=?hXIPub@D(k+?vUaC_STw3Qt5HBH&>nO zeU?*}uS{XKq6c$OUG2o_3La(V#GyYNKsHrF-mlZ(Q3JW;+VfW6LhoZIagvpBOpj0R zZY0Ve@1^q@LkhD-i!QT98;9;xt{zT$X2??zp=6D>wBm|rCEqW6o*|_iA;0uV+K;)K zi%9>4^z+2kFf;uZVzSH~WA=hitueH3auY%9PWN+D4=OlhW@2};oK6C>a0;8$cqhqO z=;%}hvO8b$scaJup?eNI=A-*!a)wo&VrJ-zNf}m|E;Y*R$Dxi1W)-)~X6_`^8`7Iy zY8VSM^k!c%j3utj#}SmYf6@LN9&vEU$tEJ59pUO`DJjw=TZ+XtRQ*4q=E|bQmh`F2 zMD{PQZ+dwhBYUzy9%+^fDH7*;{VUF0UQ32%EF_;;6&CFHcjrO=g0Oaz1&kXGO=ST+&hUf@@|LPPtAXokQlX-IWDQcbWM3tD!K{2bT^D zr3cAc7ALhNdOl&M3en1k-N*)J_>o63<#}YA6>Kjz8cJO;|)QPC8P*0*(qH=U0y$kA8 z)Kt`)sI$!=ov}ISBuCKIs5z)lP`OTE?}0iEbvx=U)L_!TMo+6yi%{3}hTj+U1)bsw zYUd96(i8Ny59qbQpi9x`Xhqc-2EXTy1XUjeYK1xiH5T;{>Zfs#u0t@W^90bO5YSVo zwW!CYpgjWg9I6sk7zw}I%>-?o1-dyJ^x<4kUJU2})a{Faub{S}K3WXF^W#9hP`9F< zMV+w(>^o5(pmO8k_kO4$sB2NLpngC#L9ah?8LXGF9P}R<=$j-^o0Xtps2kP-_t*rg zo&x$}3#h?X&>^UuQ-Q~z%24&T!|xwZ_0oU`q2}!Zmj45qun#m7_2how&KaO@P_+&L zcgO_Q$pZC3or-FI1b!cjy80w=4r<{k;LoUCPXp`ZgZiMVp9gk9y?O!I;WB6->S5I9 zs6P~7Zz=*ERs#A4wfQPA#W-+eOw$eEYE-9Nz+tF6P-i`Y-?^2bJy7{ifTv=dlZtv5 zwc87@4|)Z<>^10_x1jPW(61jrrPZJnA3?dbpo2bx{zkR^0vv&=s0W_&9kd1YP9yNk zW>EJ(ppmFWt-z$0mbtzRC6N?8P2qzsRRg_Gf6#Ar-Ku@7op?0)@ z-+fV+pdLW2K-IQ{bl#}3sK-#1sK#9(-2l|P*1+FTzuN&jJAp=^Za^(UeTS;<4C(Aq z$D*!5o!lMlsi>Dwt59`a!0w6~j=B!@3~Dv1eh*0RhB^^-E9ynmm#Bt4A-x~!EL5r& z{BDOj33Vgt%-&!h(g)P4FK8iZT0h|Ps8fveY#&O9b0)}~m9`(+lpcm1zDpT&LX&XRvkr&-*ce)93JDVxQ1-Tq}HiEef0eYF95b&3hAYbfVGzcizZ>3<@xJ_ejgk*-5B zb}tB?;Piw=W5TC>L0H9@yzDu;?PN-#Oq5$fNN(Hl+aUl8a!U{~LJjC1Ag&kl!1~Sqs1}EyDB* zf#p|$4=e(nb`AI)GW8hv^J1_o-U62{0T$PwJs$1#z>&*Ue~r@C*z35vH~j&-uO_g4EAUz^;2X$g z+Q1vy!2VGOcpQ0Yn4UW60-JMyN9h5#ASdYqmvg~>mKozf`m}h!)y$J(@;4>i~-_fgRfc2XzH*LY_&#!bqm4x?oSX27XT7?e@dIs*F|LHegoz%P*<(C=7i4EAL%U~fgf(*t;)3E0hh z0lS(4&+QF-A6dZ+7$T3*%)qWs`lsn>XM5l&uE0%GfG;99E&(>8M@En-dOh$Q7CtyrTAQUA9A@E>{1W3GmrVmUzkQN90K+eo@n<6zBT}uLO*4b7&sXH zj5ULS)zHtVM;4=>kvatIag$(sCc}UwQ;^33S4{=B3`1}ZRAG!%?2`A9R+(xci;r%78l^1*A;e+VE>8SGY|OT0k9V%Px}ho@f_HnbA?R)79u}w4}1qXqziDj zd`PdH51fdcbRD)=iL7=L`1J)yUwjLgdkI)t3f#32*rN>Cw+NVj7kFw3@K)rgtH2$~ z!9L^XLj`b54cJ#y z0#|(kwtWU{ehH3`4B726@KfX)g}@(QK>BD4P3HLfyaaZ}p*wq!tC96ygZ)4^NIwJl zF>*1o=3cOOd;{qt?SK~|4|fEf{0{85x&ybX0?u{;?pzHV&;xkoM_|XEz}r3nzv&H} zTL)aw2e{-5a6>=f`(J@ax&gob4s7KPT>k_3C34#@;0zD28#MvX_5|+S0$e-**tZq9 zQVhHq;|_%na2Xf;-em)UU+{qge1U7#fJK9Vn>B#H4Fw0n&T62ev}qjB(w3kr`V}J)^eEtnN4S6(qO@f{tBd06`*7yx-84K!=g3pmgWVkC@9)R~$SXI1U5aeH5qK|h zCURel*8{PiD+T#I@)hLR&9J`zQpm4;3UC_oMdVw^!|~bkX^ih@ZiVz!$j!(G81HY` z2KF+HM>KZ;|3n_J6FAll{NEeDgj{~dnGb87}{DQ@!@fr7UjDN~c zL;7jR{9IsFe562DZU4pj|89Tu1>h+dKTW#`EJxm5033+%QbHkcG;)6huxk6}MgQdu z$g?rN+Fbl!`@#}nGmM{BTmkNl>~;0O>8-B)m$xE2W4yKf`hV^5H-LL${G@dgcnb1f zWbH3de;00n-TxQxu-m|^egi*7&O#0^1$zy0EwV=wq))g5_Dtk!uaoOEpS>D*c0l2<1zk=`V9OH<3D~qZ~?}5 z;a`FCFy4CK0PJQD@j^QG>pw@Hh<-x61K4|@A7F;@nV=EY&qdyf_x%7TNI$X(?B9@0 znt??aza_Q+U%>cH&C_kOHC*5@SKv$@a4yDk zJOQv2y@&Yo1m7WwB&%MF1C_Wg^?b8Iil^5)L7Z?2qwamLAx(F&>Q62Ua4B41f<{eE1x>5#z&QMquBK@u9jg@W>&s z|5y{?YsfuKk=>zvhvFC$OHbf*81_ir!2Y;X-5`A<@-G`;GjB-miDOajRl_t? z`!m4(s@Rals$mlEu1^QFB%rqKR)sDuncr1$pSsa9{ z+TJ)82eWuQvZ_8OusDRpp)3w#@kAC+LROuZlUa5NvZ}n{ES|#R2o^`Ocq)shv3NR* zqgXrxS#|tovUnDYXS3Fy!{TTb&t-88i|4U;K8qKycp2p|oip8f{e1^rjEI!NPJQkm0aXyRBv-kpwFS59R#g|xo znZ<=HRRqmU~wgjpRo8Ti=VOhIg4Mg_$9KcJ-lMElEtrC{D#GEkyYh?$Kv-a zu43^A7FVsb7m#a~!l&*HBv{>I|(EN)=&4;KGq@h=uPBCG1> zH;bEC+>ETc9=9N?j>jLCy_L0o8;fz6+h6~e!+`{<`sE_4^2cK_pT#)r?XQ2XhIUnc zaoF2my9R50A&WIxti@s+2KP7rIxIW$84pqOfas^f#h z=>8sm97gw-yRp`{VKEM?`@4TT*7ogL?0~HD4{+Gs-}RkX>77}O!|?v5$6s)VR2s;_hYdui*eZ9-~70-?Cvb~V6i8%s=fyxPkARgm?h&;R@nYIRB@T( zEb_OJ@OeIU1rriGy+r@hApfQW>f82y&m#jOmy_?Kz%&*$5H$#O9O_`yA*g<+Ls9)v zhoKHf9f3L$RaJ%nH^e-sEbf%q0UB)M_r1#3^f6DIcg%R6jg>Ai@F#!4s{9Y zO4MZ3Rj8{`*PyONU5C0JH3@YE>Os^D)I+G5sE1LrP>-M-Ho~jbua2asQXa&qsmd!QMaIOMcsy)inWEDQA<#-pk772hI$?K2I@`JTd22DOHuEj zmZ9E7El0hFdLQ)x>O<5=sE<)AP%BZNpgu)?hWZ@!1?o%GSEwgZ-=V%otwQ~PT8;V< zwFdPQYAtFV>Sxq1sP(8{QNN*nM{Pj;f%+5m7iuHwZ&W4fYt%QWZ&6!N|Dd*_wxKqm zHlwP1JC#qT@spvres`D`j*P35Dhd_R@Xr}C{-K9$OsQu$CS-$~^&seC1skEHUA zR6dc)7gG5^D&I%t^Qe3sm5-zHZB#y^%2!nRh$`PuA{R6d2umr(f-D&IlnGpKw8m5-qE z4OBjX$`?@i04iV0g4_^hwxg)6YI>Gd1G(*eR`M)*2sHG!T6hoY6wqF%ab&MxrN$PE zt}=4u0+^E}pimS3EV0L&xsi)zPj#9R9Wi@R+ZV&B2zdQ#C znqQ{x&J%4vYRvgrR@o~e^@?o|p9Rg+R*v84J^NMj?^n0Bz8!k{vh&Mf>Di7mh8Zd! z7V50u@qR?VtsjS#3BzyY%OZNTR&?3Z|IdbfdcqG?6DsW2tPbdSBxu%S{$YoHjeD+n zl^5mcG{;W*Gf;DpN!anMXXBzR(tX!w&8j&RuUqot($zlKw^SYMmp*-N^2M0LBk!$W zxte=q>5bo?E&G{RFa6za{;0lZJND#6XCx~Fdp1Ni44CKO*X74jZLgT{yRt=l>%E)@ z77j7~LP@nq`8=j9nlXDJDKaVSbfKBcH6Ho${@(3j6Xw2kHCVoXa(JY9<_d4_KLey! zsSUnQcBfgN-PGxiWxnCB$}^ifyAECarSO%d^)L_X4^!PszI2_CZ9mR<>ionmyAG~z zTekGo=a(n)nhTu=|D0Rsb-ZxyuTP_c>SDe29h({1bHwJ0k6OD-efGWPRmm2SVf&|_ z?IQhd+^(sccP6xL{Fl`F%|E^_T3X4A4Ig=8i4a zInVU>q=oN|q{dsO94HPYf3svr@qwyezl<*kkA?1iA8xRDc!|XQpyh;BleWLscoDJR z@RF>+s_eFPmD(K9y9B!u?adE)Q&J=>IMvu=DPS?gp!dp1vDo z>wk1=*_n*t{nLXUPMh*`zz;;@ny#cUA=pI&tNJx$h&5c?cHM@gTLNroNBh} zh`2B}>yS9YL-(!xT2KV9-OB>s(Ia*pwG(wI>8aD_lS7$-e@@`a-Zw*&4qDWIAKoW> z6Sw2g5i=goo)@<}{kMVaRkN!`MA++Q%fZDbX6D(hHK=|+^_=;jdv)^{PEz zFTKq7<@Me%F?CQ(pGzrOUgt*5a(b2L+V9q~y+NbL8|gPj)vjKXe{jZ=O}-a|A3B$u zavD1&WBJn_v#&=+T)8t))-mMJo*n7K3>J+~-PC!cSB7_a#yPRClDqqf?ZD1T=Z5vk z)VuZBQJe*(qVVUOz8B@TYd<*koc750qlMmD?R?)~b&)1E>c*WU>xTOZXDRZ!ysoFiXy z*QrYz+-D8a37)auqh;Nwqx;;-;@-GkyRy%$S4E%enW2L%gZum6T-(bv;EB!XkjUj` z{0~lbzT-CW&rr+rHfaQ3ybvuvGwyKb_0=vydoMeSzU!M$UQ4p|P7YA(r#DaCTKp%d ze}_R$nV(uF3J(j1`@h}JEj1lFP9ypEk;xJ5do=BhH<)~1@?+J#?9^!CrFhX++a%Ld zVP8`WbZXl*Ck}r0XU}krw5x_UbuS*)vd%xG9LMnyPFC~wD;W5`s&QxHTCf0CgGT@7QS6WLXy#~=#~p6>r4;+oN3Hm^!(%A%5Ao0X+0;V?7H)H z#;S3qC-;+hcXTsEglF74Z> zGrcyYa_-#?r{149naMG=t(ml_%h8&zXFqi)YZ^7=YN))WH*a!mpKYtH{$s2Dwj>R&&fnkBC#(VbNV14B0EbrmQ@soF{ zJ$!paZ;pHZHKXEx(!Hjn#Ws!#E<3b!UeburjoXF}FNwVqGWJAo!!LrWvk^NV&#u|v zeJolO(EhD2=x{zcnoT z{dwJN{^#LyCx)hRt{!?_>R3SyE&XBqq0C0u+c_p_k+V4FnjkE+c)V%K&y31{swHwbrIk4c5rGdN7(p3)!ed@U7TK@x_ zFKf!?=^ircpuTpMhgHpjEm4Xg2PWC9RlDRHGPH2N@4!t4I`NvpANzjjbjNi4?@k{E zB_D_}?>^7bJWT$nAyBtZa{1e7i;UVIc8fiuuk~a`=(Xs+Q`UM+J+{ES#^3GK)?-Dn zKJzYjIA&w?fj8VeJh+p8vYYtu$16`}t|{v_QY|I+^r@0ZJ8QmkQl7q*EgX`6uHM!&f^$9{WJ($L%6UbH*=BI9Z7({XuwHU>T&`K&nh%oh7+GeRq(``%wN;)8CV z$DItqf)`po`jxx&yG7k8`E1Y3Nk?<_+1(;k@^xjH7$c-)hVYrKagh{|>(^}djC zb^gL5>)%%!nB5+IsE3cRY?!t8+-|~n!=WyzLqd}JZj2f8bDI9RfI$W`4&SdzNlPDL z;WTiMcgQMd8Gps^u4evSio`!PR&5&-Sh(b1MD_i_ z*UKX}N<=gG)8B89h^F#+?GKjp5w0*j(_M2O_gBXHX#Wv;)f&4a@9FnGf1qpD*g-L| znHmFj+a}38^tChBZc4vn;P!iU>Gyk`?yWsALcjB%Jr-{3`g$)kdf&sw=G^jfolQr3 zm;CTved(v6O^#zgzp|cKYW&NO z(~Faq-(B~|{`#PxNbAdkwp{rkOWi(6|K*gXl5TSoi{(46S>3ul@5kNmGaJ6OUO2KZ zc=Pp=!&*P2raL?%XVhx_{JzgLJ^#YP&8H_1= zz3)Wdz23*ajN9v-VSLl&`1ub#O5JzFHBC91+4IEXh)$~>MRbroiZGKsi7;99WUkSw z%IOBHGW%%^thv|ow%g{%b2T+AZ$+i7dY9*Ud)bo#nojSopVR)`d+@2cmb)fLU-dMb zzwdDIL$3;lk0+{MKP%k)==F!?3Cmv0o;*NbGjU?Wk2=58K8fdcUs)V>sj%~=PcPzs zTm^4Lv;Kq^Rt=G+{b`Qwcl1q@u1QjxRj-2VF6UmI zi>w_VrGKNLth@D=!jK&ClTMcLTerDe=Ut6dZ})ZE#jv%q{i(nFGd2wDljCb1@%)76 z%`e;Q!Y}wu$?jx7{NWhmb2Z5+zq`eN(62?A-QE zF!kk>TEDxq#~pk7cJPJ8!+B#budI|+1&uM8F=5S)f;}9Exw{%&?ETEvMjV_y!J>Oo zz%@@h`JM7z?(Oz>xcQ<%v~obA+>0Mqo3f{TiA>XR#J2dHD1Mv6^CQu#bru9#2+Smb zsqI%4GzP5~49mD`=~a?*c)6g1M?*>IoDTyWop-n%JGsHBB!BuE?WKaB#~ke?WM5e^ zsM&ACq1NcM)wzDTF2$$)M~=TNj{iL-&_v5Az4M>eFH#b>t?d)@M z|GuTRKGW}gsu?_~!;5VXZjJNZFfRON&yDq$Oxm7ZbjnrkD4qOrn8n83&WUS0-CQld zZF&2kv%kalu92U*Mtv0%&LX~s+XH(x0jYyG8E`&s1N z55IMLgxvSp^>O6q^5>}*vtQ=>oU`3#e%yM1`zdIO?ZkN$(L3 z2EwWO(!?Vd46ft_Y8>Az?xmb*)n3@8uh}i(;| zEg*Nir|$)4-|s#n_SM`p@g3diZM5X#bY=gLH%6`1l?mUf?D*4`nO6+!soj3jrn}?! zb*XAN|FiwW+?SoEYr5PGxFGF)uY9Aq+wtvvxDUHe_?ocAqHp6vk^Q>tTeo|U=$SQj zf%Ym(ck^}y`h{=zoDx;~wBLR9%iZhm);cd4>CtP$llBMKpA~n!{l`63Fz&s;!tPY) z=4q|nsq9y+x{H1di=&bo&6w|udMt>TAHFamO0*y*JYwnq>iVB8BwnuDHbSe|MSIoa z&nL}Zs<*px@nLj>eA^tiuLhaNLd^b|-MOYP*lcWz>l%%bJ63nPZ#CE7Zx|KkAATdL zeETV&+aI%4=x%dEDh># zY~!vQaR*QP+}?iPVZGCmw3O*KrfZ*^vJA?cQILA%;gDgSas!e}16MDrYMnhqoA0g1 z_r82nI5=VPND?mxe(oTepwE?%MKMR%PQ7xU)|Hge<&?m-wb{$oDRr<{%S+b()DW~cvuSe&G5*P86I;!;0!m?z!bp12V_B>vv z0P*!YYWO4B5>uZyNxPqM>dx{$Qeou_-6aoVMcPtsX0&?mr|qtA1H_N(sN17t9lNjS z-6;AJOEuPr{naf-Yu7Jzrxw^%EU>VZH^wUJ>nL@joMrCR*hP{)tGDJ$T4Kdjbz*m_ zeZ#AEewRCI@Z?h2bI!$cyi=4>3i(h|^H}Ad+aevGz?+?=%boT30zM_CrW9({Cu%-? z+kww}xZGHeZ@gw+KMl1Tf9$0i_9?sP>S>oZ2PyOe<=L-9W}?Pply#PPLb11t_-im{ zM1XABsudFHyOUhGoSR^#UPRrQEEw)Bc-pUB66ZjnW=@i3>VZytUSOheiokeHM1Qj3 zR(oo*N6P9@FYWR_L6rFt`Q&pu%|tE7D35RA___Uih<^uj!UALgeUc^8hLha-8@%&( z9+gmalLg8x>i#*$)^pwzYAU+wuAFab!h4u#Tu(N9bsX7no4r`uzWmw=lH;}@ar;0~ z>p_WBn!{}^=SS^S_tta>7c@*2MlTf3x7BixcN~`Ua+tdnuV9t&PBoiqp(N>b4mTx> zzu;r;l}n0|6J$?fk}gx-;_MwL9s8WjoD?m0$28;mGV`5(T>MThlO~Ax3t`>ez5f&nQIzMS4Z@|vs4&_lJ%R>~@jv0bZ0|lQ4m>kuc|3I^TvTloA z`tWor4~hg)AFlN3k}e5F$)%%?30?3BGl${U&{F1&y&)2 zUm&>fRwz-+QnTIbAX(z+vU-}HiO%pcNrDR9LBl*v{T%)mgg2J}?z_wHIAs2QD!cHj`9Xow46zrou8W zF%|ZL6ye}f!GRx8VXv49dpeO+*u!9X;(n&W?q6mqYy(|kvnR`%mN6Cf*`Yjp6kTBz z34)A4f|pN8g?(#gDr`;%Qej$&g3RAgVa;@fiT5ug71kI`SJ=-(qSbE-nF@11ODb%j zMD`?+sW71=n89RvXk#fS6D?6_vZnw*HXH|nk00E?Hb8cn1dr-VL!*ah(p3< z3yYZwBfpUf%arH^^0ZA&*4Q{I1@aD}w>i?qqN4Rl-lSx)n39pN#*$NU!Fjr5 z4dF8XVy0wXj^!iA(qiW{r7Pp@&EU3uGz`-C^pASuN%d=e%_|*~TFZD>_o|=e z2J(g{nAflFmi5ZsFa67R>1D^Fm!Eu6O6opvUW`xL@gh0aPfbI^GoWcnxuJq@oUSe! zEsVZo8uDh6d|rdtqS|{hWw>&aIn~WLE^+^jfB*<$CK*O^UaG7$lg5Qt<2KFOUgHBT95c+7h2~~$ zOC)DB+{Wmp?lFI;N!tF7ctw}pqDRL>$z>0DO{e+I&$PVTRUA=Y7$KZgX!_Kmy(sdB zcwUY7D9Z3*wz<^TI)6e;)Y_%8$B%i3j;bechU-0#7v}~_CYD&5##YbuRQ}@`v!fwp z(r;?DFE}PvN;JUVY+B7AH*zCZ&)!{ZJ@Bak`UIIGj>1;0de3 zIw#GPDk^y=bJSgUfxNKm<~arC`E~Ic>(y>W=p3$-1yQo%{Sh3Y1}^skohj+J9bs8AmuRk1j>ibKb%8 z>IGCF&#}(DzMa+1idb^0`YhJ<_++lo4$z4yT&nmMuN?f;Hm_8@?|S*MU*eCSy^oVacIFb@;EG?72KU*M zZg6+skOud4Dc#_VuQLs9xvo(Y)8JlwVH%wCYP!Mc4hZ znrU#mb?FA@zKm{g+wYMEx42R9xt?io?Yhtn?$2Vn!L8HP*6qSHxN*zq2KV_D-Qb)D z)Q?=oG`Oo@nFd!uH@J6=iu3hMgX`R-vGV}B!DYPVWgO;yNiYf0n01|LaQ~z1P2g(W z+V}Cbck>(-QK?L2j!0;p6iph)xZBlkph=UWs3akDaL8OZ<{?vt3}uW$97Bf4$q=E8 zh48!9+E4pzUhn(;|M#bBo##B(bgy+^_qv~Zt^Mqoh9KOjI+^q5#e_371mP6l_i-)! z(LxC~Wu;@@S&w&&aQ){~!nxacFHEI``|}bbTss3wxWdnN!gq{tgAMI$bXq1KqJ&$+ z2=~>75-#yQBitkq?)5X7`&Ss@YEmiTvY%4IrP!D~Ol5@o2U$V5KPll_KbO|MXM`Ji zoe{3s5QN)QFEjrNBV32H+LF(VaGNxAH!1JlJOPArF{Fg^nnMY}W z60XFC67I-%O1S1bjBq6eAlyEUR{}#yxE~)G;dWEP_5NCF^obE}*Ih=qqApO?^w%=` z?urQ)Wk?D4Z4M<|vBtV7hLmuRKV|%AV1#>MlfI;P?5Ri)?sys{T%~;`2v=j{y*-T) z&Z(Ia?)w!G?l>ddj^Q9&q9G;R^h8Ry+BY&!A27nzq*20I+-HP4qoF;+kPp=ha5HV29?oWjd-|0TuI~a6?!&jz&tDkfP8+s}Y}pFeEVFwj|8%F0Sm7EO;ZAj@ zD_pb8`8SMkqs|+qA5si1z)GHxte{l&RU=3-mPZr|CVTKbe#|xEPr>j0l%HOoey6Lt z0-if%r}peyW$mRHLKH|KY1dCBym#4qJ34;kH+{+) ztd`kj<<5>dyOg)=K~^jO0e0hbOdCEc%IEK#QoFae=JJp2RAc>5rcd!VvT5w5>%D6x z?}T%AT`Qa{TX8}VxZ{+j6TYWuM+VyH>FyeEPSabKXr?cECjYFCH>_{(vO%Q*@iNfW zCYPl~^DaD-$I4eSt*5>E#Vcx9`5r!Wr$qecn0-{dBUZi@RzoQf?+lIr5wF(E|9Mr7 zu6%kmb^`yv=hu65ObTBbO^LWXZ5fCd_O}{VzK1J4GI_VR>g^sqloIiNf(%x^VH=l& zh{?yxP9(_Cl~3=M8dkp0R8Oez(UrIiPk-D{O2lclN{i%o?$VnyYA7XQTH@Rp zFS4=nmG6sAFXKqUkl1h*>|fu5=AQ7VYg-Ly1^Wn<#U0k#~p;PBH14`ZblV zI$@kmdckSqU$IIziOJ~^s7&nAORY6rEA%qo;&l?<1rJ(f&IZp9mp_FOR1Apct^8q} zlRgkdIwuIo^Eo-j>8iviT~?)2$WjBolBo=|W6Egxcfs>x`8boqSA4%NqupKO4VmUB za&u`|?G&B*iJz3^%MGs?o$9Sw@k&Rv%60=U&ELrCeji<<0;{=SciQbJ9%p7}pCbRo zKcjf$>cI4@cdA$aR)4H3YyM$H7?yx=k)M)}WuI%HThoC^ohOQE+}q{5k2P~lRUa9^S!Tq_eU@(~rT!$0OHPBGy|rc&V& zmonkjU29U@NQK+=zSGh1a$^loLAdvysc?NJGvUT=q{6*=0pWJrI1Wpr!fm<5g!4TG z;bu3OANpG?-1Lo9IH%84xRPsm5gVCsO=(oP!&X$d&o++T)2MJK9)-DXW5Rv@s=8(m z|43g5r}LQ!_k#+zyj8XF6BF*kQz~3}4HfPR6Yk7(2)AJ)ow?RJD%{vl=2p*{aMxy2 z;ST@BgnNChX(tn|;#;TGiE^HaRJgf6*vu_p!nH8rQX3&$lda?9Ic(;>GvQ{OhH$5T zm=DJP(wWmLqQc$$Muk(Y&QsaWgi9`^!hQ6l!dVA8?w-SDPBqfCl?k^XL#=fW|DYFy z8zQ4eXD;9{gxj2qDJ2PHASSm+qBiOpQkNUE0i zt03HWEsH}vr!wIVGvPuU`#`wK)p>iw!r7gr!VM8o;R=P0gEz668yxBCag(a$>TI=# zd-?ljLO6dlCft51+`(+MeT$fIA1oqk^;H#L+)z^1j;^+w{17IzGfe2RsY6>FwYKb9 zE!(T|R&>>>9+nfEl;gtp)X;!SW9=>VOQiX*p2al$)J%Th<0P5xz00;Q8HWd5)o0Pw z`)cTeZp8z&%zgYLT|)7ooA5>+54zJ&>_cQC{9X-x(B1b;M^*E1iSdLPbM@1CJClaC z@Y}b}n1x69T_t)45{J^5i(-8Zjk(-^t%E0nkI|-2YSKHwlpdZj_vyz{*Sc{5gNyE$ z6xz<{R+Fw#JZq?5L-e5zW~DP4TI(H|eQO1g9m>u%W=B0-Jb|~9 zcVjjc?p)Fu*={F6uI?R#^Lj{U?#ELq+|UZW;^j=Zh!iSZ{U$bZLu0D_nQ#ry z)Gie9_eE0S&b_C?y?w%jOJ%~HZh&x~PZ+;Tp~Cgv$b>7Q!Zlpe8?;d@+(IT?!#g^2 zE-|LrV&SZ3QsHu%sc?oT3-6>*;ViZe^|N8ZUHl+_CLp863Bnb;U^DlM3U~8E_LX`j zoX<8Y+=mi6b6!liksl!3b|&1#dMezwTY8_iG2!;iq{1ogWiuy;sou(j``VzkeLsKK zQYxJLCo0^)W+vPfCfxit5N_>BV~bf-xTy!3a8YRxPUXH{+(EH$_nB}9Khl|tjxoI> z7Orp>6>fWG0ED}KvQTdp6)x%c(3_!5IIm{;_W>Cb$3nQGH*DrQ1wpt;&Dk}tnQ(uU z3^fgs?Vcx3h-2ky^$jod2Fix;iEP!N-E;f8IBBgRq{GeouZ><`Z8w_q1xY_H8lihC z{+yh(W!zl<2E$-@a?-uA|C1*UzxukGugn)m2y#_+X9 zeLec-2%k33Ef`Yv?fC?6HO-c<88c=X4ZYSkzwlGDOyeiJ^&7{VIeuwWc=$Ra-}zu* z_L5qSyaW8iMbpZNahYLXk=#t(JDI#unYQ_!Nr$kLo7cWIj})y9m$TMib?e_N}u?vc!X_b_`6%74JKya7@G?H1bts6LE8D)5ihS&h=9&ja z_Of^tjjYieQP%d|cH?(VF|+$|SrKlYx4|)^dCOO}gPS+txtw)8OW<&2P7FPgl5kMcU?k|FMA&zYXY^WSQIP@p|i`FNapa z&EuJOgPV6@`G-uNa;S^;<%Mwb?9Nmw!p)1Ha1I%j9h+QY`HRkJnyF%xcARdvvh$c>%6K7+Q&sCs+0*~H_T}LyG;gq;A+N-;y=(dq z6gj3cDrdlwbDFVgDDrxB`xUv}_R9v!5LxerZL)*vTs3((9nDi5FyOISR=ElW7$Y42>0^6@<72kZ zN4(SQ=9I3pPiE1$b>*k_G;YmqH$9xP>EKCO8j;`B+@6L(y%yRB3^w~XWmDYA?x5kb zhocYeTSX0M%`Bzo<1@Y{T`W*Get%LHq3b!Tf=WZ%?LM_CKW4xV9X$CPoyxKuY;SvJ zO5T}KsY+?%GxgHW8kHCJJ(U&Rw`}HVVHM2GzPCNLJ|0b1Kg(0HFf)@b3#-~U^GAH_ z5n4C;3qQYh$EmE=-KC#T1=9fb?Nw~Y!AJE*AH#y$Q(4U>WixLJHC6Ls1zoS7%7Ufo z{AM&3z!T<%^7cbYtJ4;^er-R6?BvBYj!sr+e_{~3?KpeE!>{f0v4UNGH#%U7MrC6! zw(l@|!M!ib=)Obcfa~Fc8+6~{bC19Xxn~2r%DEK<`Sys>TQ#oAzcb(kHdWq!YmZHp_a5`@ zX)ycSs{DroUeMi#AMI}*;@5RqYTy4=(HFs)5wilb#|)%l`eo@_*jJf0d%it3AW9eb z*=f-Y2qnwMbOU0JuIw!`muC{h^I%&m>XwhO5-wx62gsNlm+@eG5c-xvx(BgSH_KUO zxs1uqAER%mwFD;BI`t`Vo5quQpuR3|w@&h-6xE%Y2NXPMNV}xBJWT4B(gow~m(!I# zQ`wWQ^s`>c_1dko4vXQ@@xxU!^+&0A)?aA9dxU}f>paz_DX~EZsl@{x^dkuEOPRomItt$(A(w&wX>|c!ytZ5jy-Jv|jvTTlZ(~&*8 zbW1|RWNRl67Py~f2~y@gJOEO*#8OgzdQC|=+me#9cm^Y-RH`nEql41$rT;qDZG$N(ix+B9QjS_k zNjYhH*9|uqDRUQTQBtzoO-a)?{e6Rx@}EUol$4(tDbuEJT6Tkxa)9R{-!+t!-_9#d zo0#$b93^G9I!ekPrx__j*5w}=%t&cgM@i{%6{MVcfsyhmC8bpzCFPgrjFbcPOtzYP zP*R51QBpp5$4FUXU=ljSgOc)CUDl~RrLXH4DO1-`QhEe1Qa065QhxbPN!c>J>)XE> zDQ!I|DNA}$Qnp-NQ0}G0Na^57NqL;z4lZ9X#aoM!($SNWazeE6@rEGfx<9liDf=#>q#PUAAm#KCAZ0~26H3ZIG(gJC zWm=S!m10u6i5$^-27zCI?${l%mVA4W;J?GPoU zRzH)SV>~D+w?1{6wv&>9~U2vX+7 zQ&L(u4g@JL52K{KUC2loe09P2NsN?NhEY;3-NH!ea&5t-NsN>)hVj<)DOzaMiLR8^ zjFjIyFj6)SqoiE9jgqo?oonL|wo-0jqD*SY&vjsQmzeRE9FR&(D{s%FY2=j_Lja_7(!Rd zF6${NCr@UiGu$6KvBjxIaY^8KwpC4_(R?6*KPmc39doH6Z zW#>dnO8Hshm2w9oeNBS?5|eVna7xM>?DhbEljGaO zq})B6lJepywo>|=?A**qS^Uyz*C9sAvFkN!bdo18r=;A)NZBxel5*y)1>>iRNx7Gj z@Bb2QBv+>q@329k#cro(7St#lm{3oKlf&&Jdzmn{T?Ib5l`Jl<<_Te zl$7soGg5vRlkzwtWl0~pQcgBmc8rm7M*~|a?=ey)te|PSPl`Gvov~R{pp!Phwb1fa7B-xE!w5WSGE8zna9?5kK)Q3WWxv+z$33xC zST!VxkDZIu$ph)O%*z8>SN`dV$Ar8oN&G*@)$Z{fggvKGS3R-GyKcLsJOYkQDM@D# z-=7~mP*Gmjdc?q)(GJ+W*cN7j-NFl9I?lzy|KruUm&cUolY(!A37!;O*lnXBug?uR zu0;2Fe?*vIpZ992{#=Ckg|E*YJm!Y5+@am;Ev<(}Ah?r%SnJsd{;cE6>~+rEyr+Z> z!<3#E)30AE6<-cn*Zgn*3G-J{a(+qS2c+;k=>*8@Q60L zk+<))>;abm6MW}U#`XIMVT+aK{03dw(fnH(CZ^VM&vZ=Y&Q2~2Y?2M$SL%8;q)J1@ zNp(Z%E1iI_eAO?7naj(x_MYU=QC)6t+g;N<`AqS++Qq^__49dC<-NRTD(@cbDgXHo z^`>FTXO4`ky(%13zEp0kf|qHta;v4g{O2+DO|?o*IP#Hw$;h@#P8TcQqdsQ$%{o1~ zs46$l#3@bgAr7;&>KYX`Q8N>@D@b#TnQt;RrtT3irr~|8s4;zXh#AwU#|xs)P-7a< z--;U3HAk2+_5No;%^7M;kB+j+c-g1u-9TzgmoK2k^n$>E8q@FqD{4$P9)~e?>boJw z&x#t;h3Ba;{h_}E9!^nla#!EC%$U}mr^fU&yB&Kyc~kORW=xAOP-EJyatVxS(VgT? zL*G(kYN6-l*Lwr?aKh@8;sqIc8>lfo`j#5gUB$t8>~J5tp*qBh8Plh4v$lV*JGv`a zvo-Hia^?-+K=qVC-N%$POXR~_FP1Vh7c`Iu%a*`~*u*!FOWM#ZIrM*+>P(0;5%=YmP)B5nEkG#EV zp<^#-!G(B3XhGF%(|Mwifu^w^MGx&u%k za8Q_BqJ=$3qIu4H-9d+{HGx;&4#K{bMG`IWp^z5v7(oksGGhf2Sb=W~X@Qfhfd6}1 zVC+m@Sb;8UX@MWC zfaoJ_VPz&OaGDlKvu7<#Uj(;r2q-g5@X_SnteQn8ga5Vg+_>qXptvfp4t9rzNz&hoiK>o{_AD<*a~F z1nrXNURq!|D=_afZK1<*S|IBkEpXC}wXlvA2x0|Z?4tz^u>xveX#tB>w7@y*(I{|b zG;84yEr2tWWK)8XuA+RV!>yO;=MM4HopEcT2K@(oTmbqLK`&DX*_nakrkR8!0oMT2 zxrAf@_W<)OLUMtpfXzHY)&p;VA=!j10qz5)^9e}=ZUW{xgk%8~KzDrMe>!jqP+5rY zjsjIcuSJAp0{4Nz*v486JOga;h5UTrEih^cA)A3#z<((rdjW+!LIQzfK>I)N+eg4D zpd-FuKNYwHbXbnQ0A~PWe9=A|xC`|BlaM*U4WJLcU_TqE0ea(0_A`JgU_d_l1>6Vv zuSUOsd%!S6vOKqKI=o{&P|4KQK@AuE9QfD2v@un~9%j42>w z1Mm$PRY=GVKz$P-LSQeTuo=Ib1{?(Bw-6!%4gf!ZfWHVi0?^+#q`zrc4Crjbdp3YF zKz%zQQNRtL#|}c`fa^f_orKH?0%= zI0=R6?^z+GU_1?Ud&5Eyuo zkUXFca43hIzyn~&CCCXp2Zmq9cmgeea|QSXGy`KRAt#`H1#=FR0$NuwSHO9o`!&c3 zoB}#lK~CTjpnn}Y4cr4vZeaX@yMX22kQ4X>INk)`fscUSEkd>d^0y%;Pyl=e0`3s9 z3-}Ia0H90wHs!EdSp#{k_ra2L1?bbNx}{sT?|`cI)}z!^aA86oMw6=2YF z^b2?hIMzeYfER%43qsZcUjUDngzN@B11=5FGvGTg<`sSe1JHR*$SmM4VEYDh2)qEi z8VT7B@S4CqU=Kjv5;7h*0I0k}|9~@q>3i5b;5Fd#0c`-XAJGO-49I)}AAyU2Q8RQI zs00jKpv%B@!0a<2X~1Qm+ZT)_a0?jm74`#AXhk{TZ(!Irv;oL{$9MtPf!;sBXW#)a zgz(4`;4v^9FJD*=v;fX{LBmd<85oO~G?W0^cZx0q244@;ovfI0bZ6 z;E^QY63`VdZI}hr0{!sfhGoDbzy>c#*bKA+Zg^3`cHk>80blvw1E}I<3FCpSzz<-G zI*;rJlr?xH7$^sH@S=yAz(t@ZUiPpEcmfQ>3m@`;I=}%hefSgj0NCTj4@-dOfD2y! zuo`#=jK&KfihyrG5MBbY4^YQTAmV{apc7sMkqlG-z40=LG~fZy3onF70Q}5?&557B~!aHbUJ%DPU-fF$Asy-SGm5xj+?QfR{cb0k;6t z?x-8M2iW%DkzC*{VAGRF)&qPK9+?Pi2NdvLR%OsM4J3wy>9$5f907l@Y5;?#vpg&$Lu^6ZYZ18f4EdU=c zmk0;00)t2J$Qs~1;BLhuy8u~h9+?aj0~&bIL^x0aXxpM~-~wQ1hqi&+fR#OuYyyY_ zkAwo1Ko3VAnGM_ltens{;0-Xs8SMc-fB+ZB3doMcoC3vwk}KK+4g-8Q@B%0Wv_|nr zBybrp8_gptfmR^M9eNA&_u!Egz!$*RlSd8!23|Ze6}Sa-_2!ZJz&l{f7#`UG$oN2i zfD%C67y1K~0&0F}3%Cw+_lIr*4}g(l(FX7Xa32Tm0Qv#oB2W(W8_y%@z*E3-0`v%= zznwjFBKiw_1w1G5$TmQJGPn(#0(wn>UIO<47Xiiucn6FN#QXyqLdXeR1hj)NCO|3B zBN%f4TnF$~IIY$3x~b~ZvmSKa2$9EcumDT0$+g% z(_n*u_K}buxC{)4!rTF$0heg#3h*5Wj=|gkda;;0;4q*)okvoDN}xv^k7NOjfK@!? z2R;Df6L{nt&@B=D1a1MQNzhlI7I2;c+Xg%WY?5KyfKPx|3XkjsI?aT>0oQ>pv%quU z4d9WAegZ!LpEMph0w~Yskr?0vpfm^l1g-!^>F6g=4LD|ipTJkZH4`=y(4EU8Gk|kI zuPh!(1s(%~=fNHU&j9mm^b=?XM$Jb*0e%j+0vrc=EPy=%?f?!8!F%8h;JXO67*NTD z9Rbb)nv20b-~?d21a<_t0`y(VBddTXfL9)mtOIy|Ku>`RKzAAD38(^wEC>IA*TC=< z(0kw+F#1pEJ1fGq)T0bLJ5M}d2Q?ICa!P&$k; z1xf(*V)PZb0Q5NmjsoX_?nfaz@BkQb3>*dIj-y`S8Zfv7dIYop<4!;afX*i|w!kC6 z=@iBmP&~~eVL&C&rxZF1Gy;BQ=s%!)209Bo07jfeJHQVhMUHjX@HFKr%0KE=(#dP zUVG3B`4cbkThpqhmG{*G-m0k+UGJ(-dO1e=`oyfDw866dN6XG6&`$V$`j%C338XaL zLG-kI!_#__&Xe0&(azxNb#zL({rYY#>o?O1lShx-M(Y;q4UJ=P83}g^lkO=YOOX&O5d#Q*S3m5EYKqI5c)Ct+04cm#urd z&qQ6`BH@6O>J-qzo?42*>sPN3Ij~DkeKc_uh-MCcH ze2rE(@q^*aj~i))CuR+5O&uhM3hlmxcT}X%8JfPP?EVwUvroaxYiqzB{dO-H}dKCs>6=OU>Wqo6BLU z$Y$;I0yF&A0{_=1%Se~ETaz!8EpkxIZda;oY~+HQ1?*-py}5+mw4*nTI?CFO`lii#~Z|vNV~c=`77*X&y`SSz5r- z?JO-~=~0%Jvb3C~RV=M$X)R0ZS=z+X7M7BEtp6<4WT`GojaX{RQZtrXveb^Ht}OLt zX#h(DSsKpLSe7QUG@Ye6EX`wSK1&N&x}Bv(EIrE7QkIspw2GzGEUjf}JxiNd+QL#Y zpY@-mnk?02sS!&}S!%{oOP1QP)Rm>)EDd03AWOqp8q3mTmZq~bhoyNe&1Y!=OSiMM zh^0qaTFTOLmR7N}nx(ZYt!HTyOIuh<7O?)aRFkE;NM+@xBn(Z8v`ixD_%bwEm3-HG zd+e(K2NG!-V40+xPFAVOsa?D(CtI3*COdc=S(rRNuzb;_%S-NF_9U`;$_M{kFQb?) zci}|d$I85xN@7=3X!LgVuyo~sz$z7$YpTPqsnTo-8&=C~PnUB!c{KP+zUT_gW>&F= zWvf=%`*-gBzge~;+g7vMP8L~QX|iP5YNv~{)vDCo&YgKjmFVj!8}99-qL{8Gr+dep zx327Dq-pK3&<}R>j{BWTV|3MF>oj?F!mIYKPPn3--nqIW+u`K2XMBEO#vcQ|Pd48o zFel!Trd20H`x+4o?Uz%`6*P&Sa?-v|mP9ttk=HoHmrM;Dpr?Fe-)b}@mwl?b-<2FQ z)*nrwxIeE{QctO_KE=8{C~dV&K)Rg#>87HJ>f;rpbbp~{#H#)2q}n_0P=&T#=MNRx z{3DZHG_r7~_DF?39o`T3MYZ@kf!e$|CGNbUjMI^(ku{?JMx=x8k436cv?K#vscT+V(!Z8-(BAR@iLth?}k6wq~zsB z?#*4gmt`}Yyjn&Rb9brg#pU!@EE~Bi&X%wGb#t!iR+epyyLj#{)mvW9AHlMj&49h< z2L!gL=B@jhr#Uio#)fbD^FJYos{qmzLw259zMfREb6Pfz8Gmm>P=u6EYs(uN_ zMNIvyY6da&+ZZiYKjYi|d`V<2)bCrgSp6!C0xPP6SbvJni~CclI_ZAyj{9s7e2=W= zTh9Gsd|;L8f_tia?y;K_4vTf*N>#V3MLn)kkpoAs6EiM%-y_wUM=aa%)8bjXQvT^m z&S$ZPzhBF;)#g6@M>VyMi9F~66M0^zI?A{!k*2RYg)x!mdDJnH`P-(8MQ$2=l`^g} zn}2G$m~rOamzeKd${6>+AdHFJv_#Cfl#61Kg^iY!apro;w=RlBzMB8~N_ivePu`=o zz0%EfSIb?vT99zHJc-GY_j(;uttQot7jjQtV6x0wEH*ON(k&}%hcmS=P0VLH(~@g- zRyE=*%XTB1WxH^#D50`ob|qzNX=6TPYyFH$ZPK}=GCT8Du$Zkyvnm-|A6SQq*?Qul zJ8!rBwMbKM+fc^Vz_VWm2Cp2%*s3F9Y%N?kh_N-$d9|3WMW*I*Me^1M3(ZEaW^Bz` zta2gOM%?YRTs8&S)kPyJ%WYV<^U~05n9$tCQ!eM~!`p$;v;I@8bsI0c^U5=-BTdhZ z6&t;I^_STcWG0BjQ&6zCQrpfT>q@r65)qpMdyB1o&6E4HDR7@CHhSCpiKpP!O7Rpt zzBkC1Bx+jdDO;^#Q{Zy9rF&&nFV>#|-+b{DWZ$j&+NJt?7uodvg|(lpn^X#htyP;> z)0jaQ2!3O8DK%Dw&9l6T+LB1q@HrY7A`9)}(+V9miHho>f%e|%Zr+ONA&!sd7u0sN zi$`;lWaX$apVvP#lU9=1(Y}!Ae}SFsW*T5e?PNP`eIuTQc3&lBRHCQ6N_HO2FXx_l z2Ko8jqAJ^K*J^9?jqZB4^fYaet6Fy@n{R7h#(J``Adm;MS?lF(O6J>GXj>{Pcc7IR z$jK?VqLQ_&lI$}c_K#_P-nN2RUf<0i^RcbBToo7jAg_JqH8)<3i-k1e*;Xbpd;#S4UuDluv0hhGhK zEPP}wWMk4OuB2s#m$u#9-g?UVjSJXBEMb-K>!QkiG*bOF`03T&IXk*&mtMzYS>BRi zdDgwmkO_du<32Kxc|)TgYFR$gB4{Z5B-ha6H{yoUo5c;4&+^hv*B+{;yjI+h+*Q_4 zmUFc04Q;!d+I)B*M)^>uDQg^zBNGl5rhEA^G0V60(k>l{f|^6<)GMjf6j}Aki|i$v z&L?(exUbuHoLS;KO7Oo9 zuI?cj`-cYEDxb1d=4nQnrq0n;r>lQzUCEa83tO<;md#)6_LyKEuMeH+rrdLsGC?-? z72<5O9qYEFzY%Av5odclH1d&FP(7Q4*wfrB82=E@LctI5EL6|IbjuCbQ#Sh`o^IVQ zRA>0z5&|dcgiqF?JjyxRTg;;~7yZlHQ(inn=nm?t8SgLV(d@lq9(j+GQ?LV%cJHEt zmhEucpUH0DuoJSI3ELUWm@M~UvK$G-7Xn?v9C^jN0+nbz_fbzyf`#^`5^+5@CeIrT zNgaj9cjd{`>F}PR!$x&yiLzWl?$zuwGscM-dTN(=zRG9ls2jt!JS!2Kg%6XNZn(e5 zE9sJcvWsjfwsiuBZ#!66lmd#CqOIZk6t);a8ThY07HDSvy}Ih=Vz)QEJ#Xys-3Ow& zefjX62jLZ1o67D$=B~%Zd~9Dcm!CW~%+Yx3EOEP)2^z{7cI(yVt$o8-&-WA?J>zXK zdLv&(n%X65IPs`~+VRHT*a&qN+_FBJPV!5O)N2}eKN{?bECyr8W=z5NJ98cE{KEKu z54Sn0@a(7p(F6mwEI}oe(>0VIyRMhZZfKcmm>y+F7pdAiHU-rFv`jPfrbA>`tf5?x zjGkQn#OqD?MTN0vsX?TK-5D$@<4 ziQ-D~`x$Bz-w~kL)49x0*Rx9aXOrw^Y6Q;GAf*uDLl@3a@8gz?JF~=wy1_a}&gd9z zx>4M8aWk_p86#{;6ke4mP*c{D#5FA}5tk~hu@>9IH(j(zP&Ym0k2T_^zp^>vcbjoj zTL*uX%k}EJ*YF>#aUhy{%4tL9@pGQQZXDdoT5lTfYnmQ1!$LcD8dWM4)rZEDeFH_l z*llw(KC{)E=+#7;HdTxHJ~L8TF7MUV?94wssAgtdA5pMf`TKUp<<>De%IP;SeT}tG zdRIN`Eer3f;0koUZ$by%({oqt4BWU=69hkF<6lTjYsLqrFTJ{L#hY!~)C;Zg+QIzo zmh{J$@CUcQRMYUtgHHIP_MuLuA(G$^oSmE6GO+{xs2{sR{!sZ_o56Ej@JB1Jo$p?k<6fsoD{rlSHsbEH5p*TZGdyXn zangDzt^9qr%|XVSgWA!`XSZ0Z<1Z7H-(1?~>heBUwP@vE-#%UO?&%6Tp3`mn=PKY2 z^fYT4*)K(YXo@_^RFjK-SIMLHYEDa9SncdEVpQ#2`t7Q|9dQr%Fn`WC`;FreG(=GD z`d#nxx4qeuY<;qhGU>WrO|IWQ=3|^$InG#(QmOV`?=3val*v<=6CyWYp99ZyGnSs` z{@`r2clrC?;`L(IlzEPn)HeIXhHfJ>M;ZHV4^%2xUSW)=THVHo8yq7dI7SQxBhJ`j z;d>@lOHbx7@HfvX->=bnK!XoP6oeRx8R5|PD|4dkSEezYG^?;NP4D4pp`Ch{I#Hn2 zD_V(M_K)p}ukeSRUg2lMVU;q;m2-(AEQ?*ZBX4O+tReAa@*cmw&$V3+UvuO6hC1k#W8ps^$0&-t2dSub$c!HmmokD6c9*?L3ZV;J?2Hk; z$^0G`+Pz~&ioMMvn;q%HugbAEsYM@BaekxF==o=6ZSvozYTI?!(oy7h5fNvk1 zPXZQUF*WH&$XP(ppOCM>ssT7RgJA15VA?=J{xZjTh#@$`0W7z`d8nc24-jUF{tUwz zpAk6UVuiM?5u3HaIR_xv7Uz?IVGd~95p6r6ZD*X>8j1U^IEUhfvlgQXvGBy11#g^l z@gbzIKh9%}!}*K=LMBhZS&B*M!(^Oe2}FN|cyE3%AqF8hD+2h7a2x|z9E$TW;W#5Q z4d*$caV{ek=OE(o?+K7A5&fQl^B=&UDL88}3uh?OaNcGP&Qbxo88~y1iE|ip;k^OD zS?C)uX&%}DI%H!UfhwTid_ooi&jF_#oXG&b0}~ezaum>6i1RwYHK6YzoQnaT0gkyi zX9Ii#CMvxX`3ib_;h+>t${Hee*1^s0`)by2q zE?^%YFN#Zuh>7+Q#m3+wI*c||_fyG{-##UFQyZx9b4d?Tf-ppwAoLXl)AFpvhM&rr z+HIR)sOH9Xu}vT!ZV1|X+4NJHORjQ%8mQfs`ME6&bELQ#+PlV|N=!X*=z#1`-tap&($eqoz=p0#P`~&A1zAp z7AAz#-n@{?9+hrGx1mN>Ij%@U?0{?QS^F(D!+3>Gc$NvZ&L_)kB$+C}X+Z495b z`h90ageLeVgoKDfX_5Co6&bT-VfQX-vsHdyBtoo>AATybtl#T-25M(urRXQ|uDD}k zBjO{1A|fLaQfMR1Kb1JB`t6jV+G)PH#IOAdiiwG&W#0W%M!O`?zLVOVUv*v>9TLMd z`1Mb@JABxo(p7EkFOs`}PEadolw?Al{Z#Cj|8P$OwE!4Z`f1ZDSCKFlvj`=j-Kv)= z!6&I1CeM1Rtxyw}XcNUTCQkI5#-2zOJu&p^O(QkIF9SU?GA2kEDQ=8u{d1`zd}6&S zbE%P<=P!kvqk=@3%@B!DPo)agsQjG@n)igcyI1`)NJr!tPK9R}4N3^vCg5XGDbeJGM32JFEIN4l~K%UYJ z_Qe?_BnVF}T? zNj2cX?T|+@JIw&PU6i+Q?rx^Al4vHU*Ci{ zENSkd=&*!vuTTeCm0PrPG|Vw>`^5>PVq+pBqD4d?)qVumzEOUTimW2UBbk!MySMHi zqN*wojI|fo`;7Dz2*@rj_xB&NP?MfH)7MFBJ(G`Vy^K@~{kbwYdz9zasrxUzPWTVr zj}#>k928+6I-1?NYn)9B*XYk_y4ImTf0qD9dOu)QIoIDuoNFh1T- z7)IdJvJdU*aqfC>L2)wliM1w#0;piJLqa zvb~oo02i5kaAtY~&CY%TDk54CCyEkAM5AY+vHyn;^i_LSQji;N>vNQ83Qgezd^H z*~Qt%+0)Tk;9>7G+Sv!X;*O!Tm$ph+^Kgd8Pb0X;&qFGRO^6dFCWH&@hT{VrZR55+NW0^;d8kbAe=q#ymw4d>lA-_W(cb;0KP!+#Wj$k}qY@L~xkZOT851zK8C*G9$35*=-p}&%1Ok#qAC@dnH zT##sw$Z3#Or(ZNXBEC(xneRqNkq&1NH=H;znESgGhZ0gwN(+W_`DI8%_dQ)TI5C_9 zpo5+QM-n5|#jWsMBVu!l%zo*Kql=haj_^toM6eKHq7ZMWCuUmw4`hr~gF>#sh~x!U zT_iOzzoN}Pw^c~Iq{;<|Q)+uDbDks=L`K9XkYij9It)tOHJ?OB{(d2(4(H!e zC8%ReKhXi!8uD<1@Gwd=xf$S-*rQ_&wWL-Y>YcE)^o6(-8~ZNYb!^^W%VCKA*OExr zH~2%Lq4A;wZ(#}+XED3lj1QIJ6jvP%mu@*U6Rop_r_BitjT4E8NNRwdO0p*eeweDR zD2$vTOo@lb$@~~Ii83W7`_&El-@WtVTvEqytdm^#$T%rU&q>;vVXC!RN!vRvCLso{ zBYWha|3>>SC&`q&-F64G=6?-{Qv`lsBO)pyT8NRsvruS)=_l9@km8}6Iac8RvHUU)8cQj75_+7~>ZB>J7$=OL7Ef+S#%x~w*C%xP zJ$)S!&`1zQ;}M+tk7O~|FWN^g3<4vZowfLQn-OlCFF3-!kT5oZ;G{SE&@ydaJ`U(M ztxT2EX0uwxWynGM&m@8`El*SsFN1Kt&8Z)^UaE0zNxo${wi@jf1;Il6PzfI3?W03n zB86e`L|r1y^6E+3+H(WNJQFt$Z!aG|@>OaqF2JziTR&zZqM|5Dj*Y`|N0-5DE(;E% zub9!Qf*}DD1`eX0x`LEg;@B9iVSQ7(1MRiNnj43}P((Ca#K~Q$+z7j|4^FF_ZM@ND zgZw?+-9|gRk0&3cx)sX0Rj67i>>&2T(0)in9G>ps)x{@9CXjSV4>wzpkX};yAnlO- z#u{5oHPeClVOw|e2LB&Spti zUGaw&XyvZINeb@Oy}?t!E(7(YNqfmG?u-4sVWSrQmQ;my+%=!$bXLhzN@bj04PkL@+UxbmnAuXl)m6irqZy zM>-3f1E?zdiftv0esK{=5yD6|mk7nP51pF*l3tbO z4@qcKt)JWpM=yB!UjCj=_I_?&o?;inm0XhQf(s@aUmHuOkB|}ZLedtC<&z8NdX8$N zrC1Dsi;tHF5lNTE8hpXKNB05$KddQp+uEL;sT{=;IWBJLI7vk@G$OLik&WesR)$=& zY+T%l8(JTKPd_&gX8|Xwy|){_$JjP5n&cBK-!&__SN|^O;-~ERgt&y5$PhfH(NL9$ zlt|66CU<>p%lHC~wnwTsQEa3zco1=tOmJ1@jXF(5aUjRT-qFWPfG1G0l53n#u1}ho z1HY478mEbauOmg#qPU3QaS;j8Fk61YphyvZ-!~+V=tyIXQ&AuYMQjamhM2^#aKtd;xO(wDkVv28uD`e-SkfG@V8^9k z`H!WW1qjDPN!3o-PCxh-)1fc3)i6!IWBr+Ap!;9qe`B5k_S)D7U!~Kpx9%xrvwh8n znFWZQbb+t8y^ph$`#eNy^v5dDW}X#YxNpcY!_(IbeG)%)u$_{z+>_iqsfOF0hVgw? z)ei4e6=#Tq(*zNSUf|m%K@uf=m0&yBi0jl(Y^RU;zT-bAi0 zR2J(t^goic#rI{%yL87JN*HY#OvEs^a7Euec_i0n&VJz>dn)v_cPA&Mn(2vV-j)8w zs8f6TT1rj}?i%02JEZ(f8&8o`D}rNV1^)&)en?l$o+Vq)3128HB2F70?@6E26C@+T z|LZ?kDf0jG>He5pLgcQt!D3n-A{#oJV20Z%H`=nHIQ}NQ7o%;W&V7@Gz$C_Ux zrCOHUHA1+Fq43v5$%u~-K3AKP2a7ErWfNr+7?xDjEPMlF;W9} zTQYE(*6mEx6tM=y#IVebnbrCHfS@Uv79F^2#$#kjfsmAMhAnHo|1-j z->#UUAr8&Pr$h$}M9C2d2y&zO4^$vdQg5f#I%j%IanZ@y#opiD@4r6Ie&rgW3wM(YrVvpPil&> z^jG@YW=LKlxBiR25(oa=9^zT9<}yRu12igbyj`vByN#Aq7YSKc)Lg%MaGVVkgT7!?~S zqH#b`h+A|-0=yOM1jM;TyI?6N`=p5CC+T$e#7s2>?I`gU0KVbJKGdIY^ZpQ|-t$?? zOtZysGgqE2h8-n!^)i6_qV4PKPC7~bJ2$(qe7!~2YJMATarSUK0LU!$MTj1=bub;nzFAeC_Nfj-|a*kIU zjIZ4ATXXK}Z0`+6*4fby=KQ);Ir;Xq+@Q(SXG74Bbe2r@&==F57-@3uhcGBYfGrNk zws@ICL_$1sz6_+obXzfsL;XvtEu@(B`-su+-DyXuer?5L3Zm7EBZeCMq9<6I9fk2C z56*p$k|jD7JaTVt_+*K#b(ybp%={-4^ZTGVdungn5v6L=6N78}_Rcm_sR3=P$6_#| zZU5moC`b(avZ&i|~ClEQ?$#_L8>uvw%SKagyZR5D6@YY^Egx#f9&bFQLx zQY=Cx38AEIH#`ktmN$}`e8*3V!(Ig!+hTD*2b>`g38RUl)HvW+68j)p9kr&vnbchW zUtu2cE=xD5QQ3+P;Ee~zhUTln2NSo99uh^4ruY{0b@!eB5$0s!O*byw@VhW4PF1oG zwUy!GOSCg3&8UmCZc05cOCFa0jR`k$gGV)c66)g8b5Ts z61K$SBf_HLoft`mFKl{!Rok8(7S?b?5WI!hQ>9Pw@uW?QXt#HZ>x7t*=g;)S0xj;i zWWOAC?5E9gRKd;`31YG9L8PGZujyW zjz{>?a~=O>+t@!EAwA~!xl_vd`N`sta$q z?0k|l-geIjDO2+Mb@+d*LnEc;P9A#>IR;Tjr5|6#To;EgetmrXD8=-9=pNn`QTBT? zOg+adT&JnL<`MyN{c~ch|G$o6o9X&#*MUSyRb0wl=N_It^;aXp)~HY@Q(H9Wh}4j3 zan~|raoL(gJZ1f)y>0tB)D%cIt^B2m2XpN%9B>u^%cS_ARM~LqTjlS$B9% z5;oj^WfkcqHH9C!=GUF?H&s*m`I2q}l51Q}>YK!JIr(J0N5$ig+@Sd3)QmHpEqw*z zp&@Ujx*-p(p^J!w(NjE_fPwE>*Gv_ImIlp-zT5N;rlfUJvoEIdO-0WJkox#I{Lp z3nFphWP3k9A2$boKWB1Gs=fxai$z*}ltoP=wWyqd^ z)wagJ@E*lkC{`Hhh>hW}n79-&L#ps_?s|{T8ia$`E@d1y3wzd+hssdmWbS+g-3g-~ zym#tF7xUh~v=b5UoGc2)4h%vs?h(<`u(2BL6=xqxHE*?4gI&05>_F^U%Ktw?=;9q( zYIRU6ivu=JG3%?RhiJlXgr@xqdOAR-oTEMFsY_HaMySb)#MwM zSfbj7=J)3ZI!YB4NZP%8{`bo)b*Zm$x#*zUN=jTQyR)xtFN8avA{guD>*nC*?&de1 z%#|9_o@zAkRdr?WJWa`29eO-18kK8t4l;F_p21#M6-MS!OVc)1l5=U2ohA*G_{4Ri z>Q>j4o!i2EapJS`|AueliMwPD{&o{$4;$Om82UkyyLYa58pA>R>ChZ^An>b{)IB6p zS04-NAiZWu@1OoYHZekKAf7S%cK=fRp5N?*d&GuQQ!+$JYlDm@%?D_!Mnz+M_z4*r_Z*z z#~wR2u}KcsGwg(%Uw)!(<2)i>e1wul%x_8crxSOLosYwO{5GgP$(59U&h9vnCEOi8 zsc$FO8IcEOsXTpMgz@lED96QT>Ty6zMCM9$e?E6z&nj{xrzCxUIbNgR|KYn!hi}KS z9XPSq$qeZ*saD#;3w-kG@OATF!gB7^DZtSHS+!uCjyu`hp#%m3v4xyAe9VK!1E zi4QS>+Gd*8b&#uzPnsh>?P*)vr9z8vT*TJcg9bx=@J0zKk>s&K-JH?>rsT92P8mCT zM9`;p-^8dW?6nblDFx7wC_qbLQe@}<@TDYY(8znKMl9e?;jND2owjLlC7gYHa83>3 z2*me^P%3K&6`J*HyFMG~_MLbgqF?bKN>aU8EEzuDl6HlC+SV({L;Pr1R()Kt= zM=niLja>Aso^%lrx5qiVZILjV)m<{k@;Lv^R}>Oe&bG>r;%py1wky#D1(qv_sB^jS z4FPs1m}pAwC|_Nm@*hDk&htCZwMX0TDe0zqbcAEu2FY(u9|)Wx=pjl3>2dg-hW68> z1{Uu%!N6+1biLS7@u!3T|HkK5NV>1ZIvY*4OYU^+>K%^A8h7%o?JFa+d#@xzqkH4G z2A`U#Z&LCMNdbg26ZV%2ah@>+GuS#SdP(F11!0Jl)(RhplYP)Xo!iz*Hgqs!0qt5=hDq~%`} z48=v?KCMF*%k&%ZRHn0UWGY^)X-G({jyx3i%M~DTIJ!AZYq)DzFPd6Y-5e2U|DcYd z)DqofDVmO(SIvdI*0^|7PJ{*F=e&aXU% zH8~xG@vNrN#k$;IW2_T}#kZ8valo2nO=Iy|?;0&r=`yv<~ zoescKZ(OzG#y?5c4{sTsdhfLs?shxzi9@0yq3J$~-(-ER!Q?3J$|Am*{-qm|3_)cW zJFO%Oh*?l8vPZPC_m*}r{k+)ho;zH6=!B_hTGiBc9$Z{M4(sW}w>h^>tfQ9abr}^e z;9j}byDA`20OT#5_W+1ZvQm8xUcRmt%h;qCM^b8HBFHOff9;4&N*aq*L1dJb1Ii?v4{`S8iU!6q zqo9$&{z3pk{-WJos6ALhZ~&I?&)SyG|*IQbj_G{$|mv->r-WiIyMLheO zY0OtiNuLC`>>CA+ny7OmT4?~=r?uKI{PtqV+|3`l4j&y;DW8lmyH>eOqbx&r4oi=y z80OABFel(Br9A-09QM*`chE?2*xb3r3O}hx-Pk0p*gJ8wv@(16^+nzPQ^ueiiA)C~ zonA8a)3W|T+U?Jeq2nU(n#Jsh0oLK;9?K07$4#OoDFKBITWb6rIdEu!{M*%$KRF8r z3D)2EJL;(0od+$D7-n42c3ajOHB(yK;S3pYuk{i*oNTwLwK{lYDvmL^X81@8Ph{<@I^;8Oh{9W_s;01>WwfMH5bjg z3YsK-Vv5P-ui3E!*H00Rwd!m#sxv9Ma)b{ZN^rAL%o-WB$ve1egK--Us;a__lIbkY z_?;i#ysBHO(nvdqYKfpUIhLqf6O!VIvSGj0H-b6sL_zYk)HZwNAW{wy=Ds4!nm zQ6QSkQPfby{BRSiRq->Uic_X0h7&THa2taDyR|k>aQ5d4eD2e?Y^^0{QZqJ^y{46a z1;;_osMihe?tt{cfFWA$-3Dmx%f50h&~+YX7!X`hXId`p7B=hW`o8M+kw1aLj!~T2 zO0Wr6_zjAq@aI-Gw^3=NqP#QX9Ae}6!4p`A@3iu^ssZ*nQD0T6!lxra(!SRy?Yw~W zPjqaA+CsU%2&${4dl3ED%H}6oegmyp+C(RJJ&4pPJE5 zcy3Ve%(8kevpgaFKr%+`2p}og30ie|=EWAJ|E&=S@jcIG33r00A_iJ?sO&Zocq`-v zApx_EHym?O$15_{qIwtWIJaEl+735Od07SQWvv8fjK*Dj)cvYKbISp(D1D6>ORkNe z>5bn81shHD@Ib#w9c90yg+etEKMJ_tlm4Rt@eta~i!FO)#rZHT5p7%RzA?m=aA&Q- z=~eu)qDOwdzMBq$TYQ}U(u&y}tyEp59q&EDd(UqwL1G$6sYwaZLqPcznG%VybU_2b zCVro>_Wl-2)Um@nUkfY%9^Pb>77=~kboM_j_6mNGUKg=(oWe7fAM>hs)JI=1YWQ@e z&=GeyQK*MdafL-73l#6P*eDHN9~!A`Xjga!r#w+uxoyILiZ4o=oC8X|C{T|~QY4IQ zx&}LiV1(R(=bMgkp;0vOO!6tFD$ocdtI9K0E001{SlL@iH~cHrVFBeMo z)>@)wBNExw#-Morm%n}QaGfmQMyQ&^WYM#&$#}ChIIUbc%7F$qs=3!o81C6>K`1sX0eeCMkZTEwhqXPQrh32n>4i1kg@^opfR?@_@>2#Gb zT?5Xy((c6$y*>E1hVF*Upx9AEBU1)oxE$7UjR3;?(55Na31{Q`exTfnWYP%x79{HeuspWyc48mfBmJNdF5V zhL}?mv@|1pAzQ58k%!bJ0?m(NYSw4S_F9Z=j$-&G_`W3yBPw>_c<2!wnZh2@g5Hl! z2Sk{>)Ouu9Sz!50ZGjeOI1ltgy#SpMhcA~awJy*=+9Ca>=h4+QRs9o3M2@mMBqh>d zE!7pM7j6z#EdSD#I0IMR=1a2-ZKTvP+UR8Z`d~E-qoc)K#eUFw$o)7`d$H3;Hzd(p zkkW#*scE^Kq8-~}#qs5I@S(groP0q0FeDqt?Q-PQ!?fD(m-f>$JB@UuccSMcKs4gP zxasM}My*!VnMvX9qtcoC{e99w?iz_lK0u?f0Y>*dx9fONbMt!~y7EuUnB+ue+S9VL z*aF0^BKw^vleMzT&Dz&$SWydc2 z1){Iwsw5h$1lUjV2W|Jp^UQ8cC3;OP_EqHkf1~Gt7eUh@*DKn^V=2J@mKq#}P(h&} z6{yPDF)lCW3>2oC=$Y@Y1c7XZ zbHrf}8{YqX|9B7MD#W>{DzfJLw8BOhjrQ-{Tj8cHa#Bq45U^Izw#se@FVAQ&+ks-k zIibV2AUP=2f!qi7dnAlUrvon@5>&PX;_)%@Y@#+)H$77`5Dp7}JS92d>r%g434 z1Byy*EC@w4Mr*;hj2851U9<&nTnHIZT!Q)FC0Q=8KzjexoXER8cE&iV`V>8yysx{C|*sZK#x6gtb>sSl@RX}248Fc~HSZk!C zKv^`5j`gc6r>fF|!ZMK5CTkC-f6^+p&Zt#F?ptVipX*I8vUtPjzR5wQ{H}aQou)zk(Evgn9~9%!V6f>hR~O zGF%BeucsuD7{8)YeVsNoZ4D5Izu)NHR;n?higGh2WT83f#kq+FoVRIhtxbbD8me<^ zw<`r9ITc=ZlP*(0QkFI-H-4nnXALYLhxI=?B=T9oWb4iIE@KoESDIwx+pOoGnH%21XCtjOUYJ zEK`6NcT90Kgmkkry($w^0{d`!LjV{*s>P3zb}LKlC3t*bB4bq~L=%e%?%DYz5Z5XK zf|<_dQ|2j#Qxp1WH5_Q9nL6+5hQ`&mT&gms!j!5c4KDM}WwLvyMp9l9?cr zNo{@Uuzo1fmMr&Y60!OHQH>YWE+dv_Rw^b&au62%V9Hy;o zr2XJt)d^1B-_Rk1k43d+o>Kyz2~^B6UmnRYl@S=Ox~;6 zITRExCeBioB2dh6GNzS{`Qdy&b*y*b9RZlnMaR*-NHo}HvRDm*>QFvr!t9iqHJu$= z?n+QLP%>~uIovDlkRe!n{YqsTZrH4{`;C?#f2(U9SM(SdJ%H(832u#w*k&zjMP-H; z6xG@uu133<3%WL0iCmeKS7q;5+5yh)o!sm=q=JxxvOzrtSj+M?@ z)aPYXE1P&CzO(E08hD8T;5Ar=-G~XTq9ssA+9y8o0#2H_#lyiTFs|B4Zv%1f3V>et@(B_ zmfdd=T5Bm(!nyr{=B?w^R7deS#jE?MEw!jevC=_2X!DwD+&w^a^6CRaHaj+bF|kpp z@q%L?t*EuMlK{INEufN*qc|%sn{7A7*&`WU z*U{a!7&dfDgYal41}+uE*MSB6e8uopbmdX+JWTW7QR$Xl!}@&7o0t#qa2v&ios_UAY7#tD%2>{ znzxoWs9Y1Hg)ScsOYdh<*|SFKPZw6c2nK~>E0$@r(z9o(y&hzorH!L>4K14_BaIDX z(pI^>u67a>qqTn50Dcs$Wn~)+f2gPSd#2VN9GenJSamzvjd;!=_AxE?3ZM%&-m2Om zSkAq~;zB=HoYYFW-YDg!cUtdq-RNO5l{DcgM2NaTi>Q_!FSez|iF*vZn|f~GNKJ|y z4wP?XRAMYk)e6@N_@*s)yOE9P!u+(jDX?!jb7@>HwcjU(5)R`*#7LugUcA1@tAPrX z#tE%*i6snZ%>{#U*2M_>(k%}Q8?8Ii3x2l#$ zO7T-8#h3qF!|re~p;DyRP{sp=1g(4rq}|GPbau-ul^BTqu0?1r?K@^Ixg$v#?Z8;6 z7Wr#wx3D+bPvU4~jDl>=dy)P?OtO7Ot7-;8Jbn^AyiHDJv~9f~XbLOa{Y02|HG>X7 zV#V&2t+PAh`In5Yg&9_Cj`hXmybMVR`k;G))l;|dxlN4Iqu6qxAKO7}4W0=KkMyY4 zmAgqhcr-0{$I+DFc2cW)Q={r1JVeVa%^r)5{~*}iVZ5x>?E>nWR}WgcQ=zJJmL zmp7~&z0p_;teV@x4t)Mhfg)ED924wdd!0lyRP0r4$Yk?d_Kyc0?m@^)bvuhqwIU?l zrd3Ssm#yrReuFA061Aw>;{cZu9M^-0h?pu4y@k5^wX-f z#sKJ%NnP!A8#wsuPhgWJqkly*$?9u`tt=CuRwo4xNhbzQO48r+%f;8zH8Ay z-Atwj_D6-QuDD&5un|fW3k%kjAGCT62L*(cowv7Y?8A|tgm-^R=6`-(!>*mQy%52k zU#wSjh`lW%)8M7a8~l^bKN}xZQ$a$BlQ4L45k&r#HL$Wj{&#Mq;+_VkSc%vK4M~k3 zz@}(rK8im5$N$Za4@*yNEu9URxPZX#=5}JGBhVkRSX9JL(tb6bGbI9JZ1$wAs)b!& zmw@{Th21jdrxArkndTeg}MM=zxn&`Q&jdE$2y1eonfw){Zv5z=Jl(e){sk^PUBbwLu@w5S$yYee!-$kXB%jrqo!qZV_ZgVR!R=3LWT4grF{w;JXg$UFVo1pnU3Hu4@_5<8Wb(JRB$HM-B<|eWaL<_zh#PW$%}>}NGMg>Ei6ehh@U0D6yfJ5yrpOX-)2 zUDW}#v(f?tDq;oc=hYD77+R^Rus;EP0Qy_apZ@>u;wHZujpz%xUeXjU@m&nREt>xo z*t;|q|JJ}fDD8TjGj9CqHvw5Fv{Jh?yYeH`)>L;n?OD=)lgt0{&75I$+avIA)ZFPa z6!xE`dqxX9GlbUF&(eJpW}lYMKeMELC(M9W;OP#%0s06usi4-vRNq0GI}`R*n)@5g zuEM*TQEh-lgC=ztrdL~GPnV`}iSOgm?`LUNZRh+uP}&!0ekAu!sk53ryS?%i<_x&E zYJPu6d&>@tje;h%Qkqpd3O9Y*!#)an67+r2|3hgu2yupUwH4ss)7t+Fu#fJ<*kWi> zuS-+7oZlZ^{9A`Y)*JLR=m()mt(K;6p}$IZV3_j3<1o!mz6o&WL%*c?2ZiGv61o?( zQgfueduPne(4-(Zo~sSg{8^g9*ZI8x|6W~$dlAgF&{v^rbQOLNN%IS7lJ9NUQzFFw zDKNK4yYLa;y4{31T$&eP`gdonFEptXn2Vu5hHlV9_(e;TTrWub0hni?>+}?1JblC5 z{GTNKmcrZyeFpkAbfaEaAE1@`ShFj?%WnMWUt?S@^pF<}S?Zzz{wrZ8*^90Fs1(rl z(*CaI7u6SgHs}YTb@jQ6TmPr*Gx`B8&_6@h?~gtXO=?MhZt%|u&F=Jd+8RYV?f=y_ z=?-z%;r|USOllPNV9*aiyQ(8Dezl^p?}B~>TB#G#UMB|q68ZqNt}en|Csz2xz?>!R zn_#BKIYUl?eY@s%{&Ctq(*FC$qn|>Pnl8;ZVEzSNcK|Ntp|hY#ZH0MG+Q}W4KwqcY zE!{_@*?FMzpKeQZ@t+3w!!CXlegpi@Ko1)PxI(*A8#Vt6n!R%(V{@S0sU7gY?BSog z@UDK%2QxMZdJ*)y(7L(_cYG3K0K5{;aug!ro-G2s=fZD&|({{to6J(%x>2_&WmT0_dI6t>U;dL+)|sTi$OH z!tK+--jwzxVnZf-(4<<7=LTCRO>(6- z2yAmC)(3~3XV?_XeUG58w?aO?*bC*LANK3bSXl&6L)EZfMY?ZbPW##q>wjIiQRb2m z#$M}*dBvNt>ge~A5dK1A#%9-nEH3<8T^ViJ0&8U;&ca?0jf6ItXMH^O!Q8#FI%82)vA;x_ZUYt@ z0h51gK$t-v$m?y%*pF7oQbySxLcgim9_J^(=q%uR0sjY~oC`5u9mJU3449k^Lpl3F zE^jE{2)GRB3-(|QQ9qRbp?2Uf2G~tUoMg1a^C-_}9iUP6#>nqCz_TY{{wn${g0P=Z z_IF^JkFcX^;mn0PA4b~^M*at}PTWAgVKn|xCa^nY7kV&Oh&HD;6-B=2XQTNn>p-+n)Gx0IxS%XlQ{V3Nm zz~wC9@e;x{23#}H9=A{qx=i^AWgQrcGY9%c4V14r+V>~4)w_VtnEJqj05<6eyU~tz zX^np<$8?k@0&CxOz~N=Ueks~z+X$RB&_+)qOjGom3;sC&q7G$XpeTt|9O% z!M+4x6Hxz&$m=<@L9c3pJLMAKB zjpI@NQRp9j(CtBgHxhjieeweIKJ>@;06T^@_`HXpuBwB&*wBB*pl(Gddlce~LEW#T z&aYHLpGVoU(IZNwCVxI&jTLMqa4BTd$$SjAt~4+jYAxibvf#kgZ9lq*)mYJfyiex{?~(c049@T zFdrgrJA_$?vVMiUTBD7=X$2VCkw4nDH~=t=0zA+cs-lfgpj?lmjExZYC#2H|b-UFC z{S@UJ4w#=sAAb>kyT@QmAWnKt9dU&drg=R|wk-u$qE)eg^PNLz&mt z09?>NiPLW(V9~Tc_7I_%PY{1F%CV;%+7J2Cqx3+u$p+XRFsDG@9*n%aFussRH{|&$ zVB9wmU-sqPo=j~BQ zt1{q;ww#4NH4^Zd3B45hBH$B&GjrQ2iYw)8#L;={*ArZy|^ zz0|T`Ab}ag{)y&nQW!5Xcw_6|F-e&*YP7j55EPAc~@n(zt9t|0{yZ_Dfiw^~N z>3?Yakc_0Nk9Pg|=;X2Q-?yYo#Q5VQb5HJE65MU-cT1?-_smc;IBWM{4$o zxq9~avojxQ&^P7gGkFx zG2boUKIGkgk+J()KK^Y=a>~ng+t|m~q<%4CWtwfpRXyS=e$-Ip_SmQPR39#?l) z))!CsX8p2Z<bhsX^!ZYz%vRWa_UY7L~Oewc^O=iG>NDZXEN((Q!}BYFlmd^3_+0_I}=W z_~s|pB$h4v>A>pEyVmagU-+NrzT5oex*M}ziLTP{xz{%gcXy31`UbysP_G?cauQK(8;Fk`*S^fNjufI@pThyLkum5_X z{grJcU-TR_s9VQ~*RFguaLoBxTZiquc>JkJ=ilzw{q=jl8$JD@-#gxV{p_U&_fP7& z?e^|ZuiSg={Df`S_ME*@R@2ugIN@F0lhVV3_?7<;v~U%0zuM^3Ja3C^bI^q3(47p zeBBF*$C_)w+y}mGJPC+q{{?PEYOnn06-s#_^H_5b)>V%D{qS=VON8XKf?E<`BXyBq zVs3hdN;?i|yWW~pz)FY*(FCBm4atckyJUz%|0oY9jYUY#hvXJaCRMUb_bVw)ClUAD zPr$1rlX!iR-zLOWewkU>$`49K2MB(@YzmOcVr{INL7JgBix|4BF=|c1gUIJwi zj{=^?{qP%ZaPJ7oS%|pq+G{iXJ+;>aq@lOh8Ms~Bt2N@gYcC4x+FlFcr?*#Yxb^m$ z0Jq*=@krZUdsRj_)n4&r*V=2La7&t)kevPGc4;r&Pqi2MskTw=wOR91?WOyv_Nq+b zWP6cawHLwMU3*a)uI;rDetLVI44jSLfxTn@{^+5m8?~dED2W2N^WnNE$G)#zXbiO45n7~gJh~hS_7G6esI2F*@WGo~f0_$^swT zX$>@&9b!lC&5}hg(*g$``PR3VsRZ)PjSz6e6aQ5UZ(+5Md{v{4IR<}Fl4Pg%WLXok zig+aKJGl}Sty|}*w7Mb^f7XHd$@M`Tk44*AQX*Epvs)Lq)PvdpEZcctY>&ATft$2g zUA4QpT!Icry%7)uXhX8On1%!p;ESh_&IbcL(OgratsVgVmrT@n?8eJrbWm)fwNkWQ znozfeyHY?HAS90_k_1O$iH&#A@mZo8ElgdaV-CcTy5`7V*9j)WypU~7d4^BJqht{! zH9v9dvVtXNLia^3OJriZok2cyMtOB)cBVVgi?#K@$@kG zv$SGZ*sz)f=i7@Eoqa?~oDf9QZg_d}hMHsQ9Law-To9n@Es8b~oEtmypk8vUihh)G zrQbm{(s)SsBWmHxHwV*{8=&Kz2!1xrX|fSR=tSFN*9sjGBshb$3;R7 zB491J68$@O+M?c#B(P;yNfceNQ+gl<6B)v@l@KH&;xi5Jm9jpqWmqac*Bl+Re0IrqTz^t5D$Oa6uxv? z%1OCA35a=EvK70D=p0CdmyE1v6=TgIid<-*@0763}dn3ug5$ykp(wBy=4*Gc-a7< zPTDUEo8O?MUnfx^=hS>B33kR*vs9)oDUYcI2@T6**0xo-?U$yFj zv4SHbZE{*hZprk>f=psEiH$`CV@y?Bbjjsk-?Lc`e*r@Ns6f!W^IZQiL2314Wq->F z+2KG>=gca3xJstdt+^ERicD5?bZ`?!-{gxu55CqEd~N8uL)G+#OoimQL9vOWc-X&8 zMR>M1%WSKM)nrWY+;?q+Dw)IbmWmB1{5FE7+brV4CnFxYOdl+4 zgC5+JEM`kB+-5DDg>9Q$!9=eXwEm`Qyu91fbf^{vpz*m9eec!zmj2~-R$@!V8`3S~ zNDlm|vZ!Q0{?I*VuDTo$(KU%d7!Mq0%Jj`08zJ+S7bKG;C}IKw`-WVw_%c8)Sw%aA zEP|P!2{wCjvVW8-w-_{Tm_iVGjA#FrsjP3G3fk`O6lU6`Nw$DSUwhe9gT1ryGLGRE z1owNz;Cn$`KH!#kaB#hqi1Xr_BnN71IoFEPy+;!hHBatAVE3LwmQvEB}gC zc`x>PcgV!lhpysbE1%#-4o%>(zSClT-rM$@%PvW*nRr`V0Hr3d92*c$?e;9HvvhH0m zZFFZqN{s81dCAk7$-GRZ#L^gr{X)@n$?!5a3riKwz-SUJ`l%g%&8(`5Y9F48v23h? zbwog!(dhr%jC*gLH63H`r$^_6~wtsk{vCNF`c9QHv+_KB#aTjUXgKyob zA8e*+z@}-4f$T5!`dJK;Jn}^un$h<{tp96cJmt9oNN@BqBjZs=& zS`qQTkiXZz_@B zKMxLRu6GXCEq;&TDj(N)IJK5!ffFbyYD_W0^77Pm3x04!v!GsU$THBnA2k zX$NYvhi&v7PDqbwNqBjx@ft0Vh1I;;58SiFe8vmt;l!b~MF}yS8$U1#y!xMu+RN(K zI)1fgL(>ebn1~Vkrfe|BPAkZuDZp)?{MuBoI)6M?CU=M&bzD5XAj6S0Emus*Q%w2R zU0G{yJ5dSew4fNzRkTICPi9GmmDPXwQqSK12^LY)g`7hJ)T8M@n?B2In@GhPf%AX)l4z3~styd57}WdPO8AQ)}q^;8pXemxu@t z?en8n7AtFX!Q=X(Hh-WQ;ff01=(zV(U)F@&N(vIPscH;&xoe)OD33$^X)TbIbxVEg>j+ui5eacA4(%M}f;IEJ5m!l4%H7UQI@LsWN3rY^t4_KK zR#->HtdmzbKtp+2S&x7AG-xU!i@2V*Q9Slx0u2;_w#Sm(ZVgQt%iAlgIMHBaD;ZPp zczsMT=$Y?dYT#t;!{hP_)0}$^+>3HWS@i5UzNUF_U>b&e98U}CPg*wKte@rEx+)tv z?WYVbQN`xW{e#@GZP~2Op#X&cX)lfpAgTvc|<5zXsFxt)MyM zirUG-lJ-5j*hfT>vR!$JE}8<_M@=eH*DRvD74wr5@j1*&6Z>b7{b|Xj=06o87e*%_ z?u2S`-V>=KJJrs@#(bIhyjo>t_7Z{15x0t!t0x35QGk#V6&`nAlSbv5NIOM)K!=oR zO=M+`KRiy~YD)_8K&~iP$9I1WQ@dtU1;k7o2YQmcSYk-PVb7;Aqr7PgDn10-^{Ypjp|>pkF^wv6XjzG>#CF6U5n}hlC-uorTTK{R8jX#lBTe{w|lye`x80OWYhozv(hALysMMVc-@L4p-Cv)XLTj{^Y0HdR?S+xgmCks1Z;8hF0t~E!{vGoVj9oNJUdc5v*+O)mI;rt-=`? zOU~31g$I&#u4wXD`*?@usvr_yJ$`1f`jedzDNqx8BUFxx$|;W;gwg*}(MqEyZzqP7Z2CQ-!(cO%}2-^#dT zSlIJRhW?|5i)j`xP)RsZ@LOcaKj-n=neyHm_H{pbs4yQG5uf8{)AFJrsCzw%&;Cl!ukdts#Tri|4GF$cYMy6z5-};EP(_Ku@0(C(1 zB9b*Q2k(p4lY6~459Iuz`Wl}S_ zmt|m0wdFR!T;EM!&>~pa?sMLK>+2(#PLh0Ytg#d1&7*{;QW-7my{!?q-J+P$Jd!si zXQ$7jcG2o(VehXz^^7sR6~P1vM&n^`n2NXWxf*lb_5!f1bdmJJV+WgZ`e^K-Pt_`@ zx`BsV7C_%&%K77c6)fgzU)|3X<+JyWZ8KewBql^9M<$PQI2oGqLcS*pNro5u;_1Al zs$UpH9OilYnwHHMpS|Rcq7qyrdD_0($^472nysj3!r>JOx@af<*%JcqlnIW96Cg^Q z@v|B()~TU@r*MB)`lTu2vCkm>(sh0%ia?DLvZYoz3;X)b^x$%e;`^)XGQ+%)>vi#EoqSO19@0QEDs90{Xp!)=(pBJaDsZM8uZ1vO$p3gg; z5b_uT3r!jQI;vX7yEz{yj7CCC)b!!}woGhJjfwCREm`KewzpC>-2cJA7nYMii#o{iWAOW_91tmt+U)2(`vg^6mw#wTzQFY=p z4XidXn#N{G(76qc9UK*#Z0D8VrB(j=oa#r+q;1%!MGwxUv%0-BKOc8$mG7%*ec?&Bv&HOfP&m;(@lmOLIX!kE{R(} zhk^K6Jgef>eA@)r+RcXMD4bZDBM4v6i0~YdUUT zHFp%T&O@l&JV$ai))HIwy_QDPkdWANSU-)0rhCMUakN)hd1{QN)>Kc&1ho_BrsZs5 zEutR2yURzq>fp8i&J@4ZH)}v^W+y)q)pX}Ogq2!v^*9+mqXn|CHW8myDThW;s4Gur z8AaYlDOp(PrsfyR5dmo+_PkcBv${wpY;Rw@N*5R)eU3GzQ|y1~dBfneX}S5O`Q=d` z@0g(1`4tG66C_#bg_+YUCdgW*0p%_ZQXBQ)6&$3tXyNdFV``ZTMT&vP#4Bp9Xwv9% ze~qzfyCh~bf!dCa1J)-?oRUUs;VmrUo9SPABG(XV$@^Jvty~t?{bI9w z?&i)y(xn=hjn_*@EUM;}^<60(n zl*!2+Ca|*=U&HcNz#D$9#PT-iPz5WZT64lpQHIRj{Gr>2 z?gA9f?I@>jD5Ztf=(z_?Ne-Jkw^;5WL~|==$bb% zE3LQ$r}f-SDS*&k&+^xA;R-!l*%WYU`j)M7wilhxj9ueNe`D%`_hnx>Cvmhc zGanDU+?4#RpX>Xo12AtaPK|6P8%9GtXNoj0ApMha2Vk`+5T$f?yRuj-rj^ZK@t3{a z&P%)1yu;25>l{~P%ullXrl_#eCjK`ntobq>F<2HBJhM#hLlr8>xR*)-ITO93=TK~~ zMe|~d4wZomzu1}>*cn1riIe#i4SI{x|8^xeF;;o-WZ{a+vZ&t0IxefcC<*RnATxs( z;*1s^vYC!nFxRS)-q#dm$+ZzU@rWJd-CdtNuGibsd3voD$O2Z4e&9CCfg}0`ArDn= zxdR#aOqmiHUSJ$^{9Ds0l~O{Nakye3|EEP;_R5O$^4iy#y|(>y-_M*^uWHjwNiHjT z>TF8les=Hb>_6=?+0)l0O`RHC<% zZunOcU6>=$c!u7lAn*V3x9{ED(MrmHML-C7i~K23VbS2UqDk@^ZI70+m3`3jfz{^i zN2)y~1>&K2DGqAQ_rcVn18U_p0WQ0&2=e#ndatlloFq?aSy0oBS5eca@AxhM>Xv^xev$jXptE+URM z94f^X8HYAa0bw-9y=2ShU3Uim7*p*J_l^2mUUJgIGm`xVs8#f6`&U!^BWsT)O4J-t zZ^s#FVD+!0g|xEc^^QCwdztHm>N*dr)q>(5ANX0SB(`-%`!Dnq&MA3=EDsqL_D%48 zOH4>eu|3BVi|9y!gxqHef8wRqBV|oRL9~ZxdrcvKs25O4{Gr(?3YSs?)MkRnRF0uM&iv3 z9?*Cg<3~(2Key|6ki0K8x5CSB+D(GWDl~F?1LY{h1cp za`^3wW=u4lVC|ew84xL1CNgCusz?;dd-=FlcZ2^?8wZ8|dCSx`Ro;I!CsOt^o~?)N zhZ76oB%f2XTk@FAEBB=-_3GPByLk?2JfY%`u@ONuba3NQ*yHo(kc1@$Xe)XK`MiXp zh+Eqn7l5uP?hB^44NfF4Du?z}+y1!Jq-c`9>6W(meyt^~tYLJlpX{h&$d?w7u;@%p zC?^NeIt@e(yL}dHo?KlC)e{TLs1xv*)lBG%#^+~VtYTmxIFf_rraRyv6#0&TTg#J2 zUyx-MWK!i%3Owh0t<1o+_j)j>JX;OZ;1X+#yTdiMbzG5QW$jO#nQ9$J4BQ%+%B!{)7}z*I6~)_2R3omLuLjyx-_uH35otjVj8` zoREdr1YkPmFi}PuE#+rwsm`rEPv#1@7;4Hinq;TyGmd@~jY>|4iI0`{tSOQ45ai1t zr7#3kWebZrmhfH;L2sjY-nr1-{7=hrhGw_0*eBM+s!MiJXN3r-m#*0+YRl>-2q%1= zv_o}hKA-SonG><5J@UqWZHp<_L1%hZmMa)1l*9F%T#}+p;ZioAax<$KRKWwaz*d&p z`qJTYo9#PdZ=72=VC1+WBX!=_4dqN>KJI2t$LrtRVh0~Xcu>aqHQ*Feq!y^HuCnowW@(QnB}x>tjaj@D;lulro2Z_`fG}L z#Zi|sc3xb?h=^x8PK#<~VD?*E(+TT3~&ULFYmU7v#}uo4Q?=*S^&*wbGGLj#AtiO~72tqnwU$3yoKCi{KvWX|+JGK$t@n9hMHA) z5c*AvYGL`;E1JyIywX)GFxbA_n)ah?Lesb|;@m?ybTBNr5(`90d(Tss!U^>@Wl?&5 z(Q&s7=Kz!F(juY`;9KA*u;9rQ>soy+ODnr?`LsUr(4Zc&YrF!dYMI^Vw-I6jIUNMB z2KglP9uU0KOWiqIZeDEWwnx5qJEj#$H%5}Y#BpKFm#vj#=C)NA+;-dC{QSZqJV5~= zHHU6ZE%TW#7~B&C>fp{t>3g*37B=hrtq-e;`U_TAn0f9F26Ij6%r0KI*He?l=yKm< z3rZwaPDfJ$bL@-G$?2%vk=gaAy;{a31Fs+EeQ!09mC!;bNz`zH^}LN(t|jw8^VadE z`IHjjRG*&XFVo@!B~8L(J*~G8l^dHJn-m?3f+g6o7mSIGN{x5$HA1bu51Nu&50F}GK>1=*R7Oub#j zFzg^>i;=&weg@<IvMyKWF@os-e8!HyJYFqeH)0C^|`E!dC z3ZkPNm@iU&><8s0)U(ru3gKtbDODPN~vuCQkE)RNY>Myge6_X<1gkdQ+55@3h{f z)@{=SjLA{b8K)?^$Ie>Oyx5jAm&VmHZGDLofeDlr&gp$$_h$!nQec5)aGt5OR6Vhd!mpU&Rfw>MT#=Xm;YSD z?&cyvB}s3KOvLmDwB)R8$E+oHM_@%eCl27RwfH+aduCLsICgR18xVQRKEn;Mp(45l zNj_Ji@pflC|B|`Y#a$L=XVJUg1lU#1K6;cSjC<{o&CuPU%W+I1N=XHKU0T|djH{-l( ztkH6}up^VY+UtsApl7zIXz|J#OnfxEg?)cw(C4P|tIJH!E7@$V{1*1Z3z3)2J;<0h z;y{EeUfj+w^E`6K zRNbnXDFT;x@45=pO)keCy1%G#9v;=zlBf@QsW13FukD#wy>++JkKcVV8OTDD6tr?T;9FhEx0ah z<%Hhz9D$?bisD-t7kF=iv#F0rsrNjhdelYnxzu}8wg&Ze@!dR?o-N8CE5XIy>xIyG zh&jx!!**!!f@u5yvR9MM^RSk}t^Fe}mZMYAuKqndoPR<~f@ImNBxR+@%dMISUq$7k z2k=IE>atGvS9aA&E+AZUxk#vg${gy!f1~DqRI^jO+FmNQ(;O)Ml$`q?wJ=er*i7ip z+*Gid&6!3d>8y7mH%sS zUvly5%ug;V1mwTDxSfBTwhJ=MlWKW!{$k!WAa4xXoyvj#N;m(Gz^_J4$U%d~qp1I+ zNDdY$l8yC$qlRno9@FfHV8`1JuGXjr)>;PNX@0H2R_GDvZ=scH1HN}D(4L;9`P{(Y?3RnYS;ezohXKTh*r>F0wh?V0LY+xeTFcJVvaQ2QyZ zjT)8rBcEYz{HIDkU1q%=`>GZvsxjodL6f>HP2qBW+ca_7m2E8ij%og0P1PT>Y4_m& zxb%P5<$ruLbA070gMVOi<$~-S*pEp!kU;Drv^y2jlCd&qSG68~e?gDLaeFWHpV019 z*VazopI~p;#_1lb*`2;-+bV>?V@9q*+JeU=G^r1yDO}?FxAg1QPPj9qNv@}*{X5Ms zu)PRJ-#E>FPP5a$W*yM?p_N*r*$+v3?T+fN(=5~cHc9)B((D%E4CiWl8UIde|HC^$ zmL&AI(4_oBh3Wc@aPcSEb>Q-2Qs-UVjlxX7-8!-m=0WJ)Zo;-y#PNuEk7lpeStK=D znr}?VIt-1+YrZma*k7g%# zXm`j&gx(8H>Y_A-OMFSb{cPwvsaNh0<`4XD*AqPFph-P1O|l2~qOV!?bK|E%Op*WA zx`a6lcb(oU6yzI9`zg&Yw-00tLtFYf!;x)}i`)EHxV-v7t}8UDNibiM_LI^i|M33w z^{l4$_x$fpe?GWF+%xze8R<-A1MKaiz^fSARlV-wcN6Xj(U40F?W(?nUs?=gc0%jw zEx3P?ezjvEQwy3D$+WK?C+zectl6EuX4?{%Fz-nB8EFQ`Lsl&`sV885ChheGKt>s~ zQrk4U@+0%A2Y(gDo}g^PoDKJG7eD%Q1AhGniZI)yDO}F)70tihAg6yR>?bw1^AFAh ziI4*d{r^NQM*PpA{RW#;iIwg-F8=0F!u1@&9F^fFCPC&XG^t-;HXS1D`gegFzuhi= z*WvCw)ER5LW_S8Bb_)KrhCvP;bVcd`{J#eMN;1}B=w5cup-Wx<{SEh^6wl$+pGRbv zFJV?o6}}Utxk;KTEXlhkIQy@Ea?_^?`XGv~`?t_mZY?nZNzvv;51*WUl-8JyX&rdjPRUynap$0j+<6os37WJnx4`vg= ze6(OT$lCQ`2PB_SUHZaWkJ3kyqfvQp zn2ZT5XCS{nrNws*_r(Z@XGP`)_z{J9zRId6fc^_ zSCKWPE5W_5t(GTygl>%)oZNI_#7}B)0Vmu>mZ|%dprXbu^ z{Is>H)Zfl?wL;jts+g^n~)(7U>rKat56}M|0+iuvY>3k!a*gjD9 zZf%(NK{(p@_H<_2OUtykmT4a?)4p1!{j^N`YnevYv7J;IMKxjGzr!)WH`ZDGI8psK zsQU4N9IzZ#1Nt-X03Yl*dh=WE?r0aQP*vQK}do8+EiXfVJ&{) zwr5q~&dl}#>@?{75`1j0!%hJ9O9`~SqwJ}5Z2MtPKstUSn%KTp_K~5stI9sAzpaX| z3^RJDt*)|<8E>>i;Ib0gI5T|NF32 z`zVn55)1OD`Ko$#eD=Xv;{q(rp=JEk7r?TG>7*Xe=f9{6b`tXanxMg8IE(={wKG_+Y0@&oNpM3)H10EciIZtj$qp)rFT zLx#sDCq|BPL=GJ~2u!JChYpDz&?nqOptvEaNimU}!dwLG?ml3+!yX-*6zfc|v-@z4 zc(9uqitL>s!#sqv4^2);(NgpjE*iYyC4p*%Rf$OexpzwRfIHN9D6SnrxgBU6$i`*09|s9129$JL_4o;q~skmMA*!wz;G zM7IK}uINO2A5kC`GK_cStoMDc(pf9xtB; zL=HzTBO;UI!X4m&;sBpb{Ad5)_xw(!#YLU+a??BUo7qmB;MWim1Og{|DhA;P1rwUk z$M_>S+u@g@p5?#IVGx@LB^XRoJnm`4)BnOwq}r@F2ZWKPINaNaWB!j=xcg^2|}$ z)nM}q7>L>0EGa{9Bx8ymm*p2`mgZ%J2qQmjGRw_moJ<}c5I+bzmWJYDrqi$rxjQIh zWO6d*QhUPaSVzjJp|K8!kzE|ve8hseNLCSFG(c2blEv~hwhBy_bi;HBCq^3X1uPk$ zAr4~9K~3nC8Cik6NY`InUZf)R(1b_I>|KS9GA@;rm6M?;gLArc9!JW!mJ<3HafOm$ zoDVHD4kk>=>0!mhI{{VE7*Uf@56+c~NmeFgipNAUP0+6CiD{e)^@2HbHlBFszja0( z(qA$Ra>};j#R%o!FlLg7$0T(X8b^@_R)*#s_G9HUe5GK)*dBmbJ^QWz30Z{gvTVbl<-##Oc3F! z?xYjovH|u;5Fi2F0ZqzZ7~GBb+?+7y|Lrghkw-7+nldkJ&5>Uv@a?bxH3VD{cVhz# zlm21jjKA2GL*rD!%S54waw!mIb!bY9&`S-V8$maQZVufVx(#$&==RWbHVB0dg9e_2 zML^RnQ`b&U&1l(X$`axR_KG9D3q8}>^Gx@)L^DQw)IM9@`xSayMepSTAKPgqHmF4Q zMz6d`a2!efBvB%vkjO~VoQa(zF|nlAzQpHf{pL?@Uh4F106ng_IeEoQ;vGtYEJ$GG zSC>Wy5^rH*>0Gq)i<=~?g7`F&JZ5@pMelxmGqZcqgPt+Pi@yz@Hi~m|u6K6p0^;FA zB!=|Tv&;IO(=wVoK7&~GkenGJtem^2QD>s6u6^XI8uW6Xq{^27unVD|g5C=KF7#pO zU!ZS7`vd5Wp~InLp+`bbf}RQeBs5{*2=(?g^m*uip@VQ-Y60C1dLZ;z=*iIYpjSXY z2fZ8mbLgL;uR{BvVe3POKohA@3iJf%d!d&=uZMmW`a|d+q5p)ggpSYzx-)bf^eE^& z=vmN&+uI2J1~eVezK5n`9QAEN;I)7WMF&IjB4ncUA~X|u5uPcS!Z1c>L-Kma8H$j4 z_XqU1#gOBs<+FyyrY<&zN!qexyy zoe>HDM_#?~k!cbBjl77%hxDR@BYDxWQF;+J5H3cTK_s8;3{1E<3QTmzGBDv)C@|qz z5SUOT@(a4=hV$T8XQiieh= z2n|M|8X~mxBAfzw5tdAPaSS)Sa-0zfEli=}@R6Z7@*7^o&QOHdrclp2y$JU}UWAHh z0TYVQ8RSKX4w)9ATB&Oc6pco>Qdw1wOvfKWl*qt@w59ljhm~H0bfWl#fI`HDPPlL! zKK>AfR0bxjEX9AqnG4}R$cykDvXq36B(L|K?L|0k@*!zCJ4gADXxNgF94ZM(Cyt}HfMORsHlL!t?WeHP=jUx1lLq>w*>@LTmS`esZ};bEo!W|w6zu# zcT^Nqw6sD{i%J!J(5kg9*0ok^>Q;BZ|DBl&A*Ijre!utke&0Jk!_1v~&bjBFd$xOK z63@MS@U}U_2pAmXj}<-vQjGzVd?Bj$6r2)%zZ4bV%R zI5j3Ren#}D8ZupSr}lpf)Y+_$7x&eNO9BRMVNFB(ow(o0U6#X?xp^ZbZI z{1-2@jQ>b4Iw@&-Tx3G@jJRZ=TGD&N&#yDj&&W*vqTyu0A4iX@3IVaC=f?9x>CO8u z(qs8cijJ|Q7i>ZA%l{(1lzB-_&NrT?H;kWO#eby7>C5!^gt(^WdzhzJ$kUT$@fQuJ zM)LE=eJ6Za!)DsmLlGcyza02hRVMVP6?)|w{Ytg&=u-uS zHrz63J*%`HIYOVZ4DXvpQA&x?%b@is(t5nsdSwZ{UuSp}5Y$Sy0 zs?vIH)Ovy(#@(Rx1h^{bcoTPDYdsCd%7}stuX3$V4TXJe^xBZ&Q4KDQ-m0Lm24-@! z?m0qFFj}bfxM|GXf_60kjeeM6nb3!&COSy&8vQ^sN9a{6^ZU!AzvB-vap-lr7rHp!b6%Efz=#0TZ#?RxPslekDN*=Z8*RZ3*5)RKIK1b0hJ z5;N2&`yG05zFNFhAvva$Y?X@-D8)M(LFii)DI{AN$pMpii(Xu;lw-aCpcn7OOryj*_2L8OeebWf>?@IrA+4>ZqPCbU#Brcpe8eOH zfnr=6#QEjoop~5Ze2g0il55?8s*8J-(GSXK(0XjtdXyUdaDmmSHfAPQ3%zrV?ggx> z)M$OnwOG%}jB24zme8lb=v|}r%z+k+vGd8z@PfXgeHlxMWrYkfyb1`AS1HkxGv2vG z6Wwc|g+{-!437;)-0`V4iYkf13q7IcuZ7-aMi_&xwj8=^bT8BTz&>&_pvM@`s}_11 zb=DhqtBmf@nt3b+Oslh;CSe$9niDkx~*TN2b z%7q?~ADM#IqYfe@;;qd5Uh7e!btl3z63c{PLq@8kD?YheI0nDk46;C2mn@6|{(0s}FXV+QdaMp9@HZ!r+l*a>@rrPPUGTlw|IBO5I#Qj<1x z@sL4WY~XarU|j$$DHrD(SdFO@=hr|xB}H;#DaW8?X_B2vqEg4Aa3R?V#m0SDlTr*L zDln;ML+`erTi-ywUe$|DHOB?~9BUzHvV=sdT3K(=OA6#-m}?QRS(W9L)g(EfCx#-+ zb;{F1bVSgvA$Tnm*F6s&gkO!!9@g6!$uZb8OrS=b4~uDVCW_S+WT8u0;pPf`F)B2Z z*Ut&_VfipN)&w!V5^~MD7!$k^VW`-Y^xz)})LV=$!WvVDG`7o$q{%ucA%1utiEMS- z!VEZh9~cbl ziX4aw$zCWKTw9%(xFv=7AY7zg0vZJ-{V4(B7qO6Xvc{~wqp9^Ohx(KI zqFy%K((W;ckLtz$u;gh!Y2d}Y5nyVK@H~Fy84x&YWU%>q-;^V8MQnsDp%EDCHKM7} z4^F8h!yS`=&u?M(?ePO2x#n z)U4S-*${`YM$nRDa`9fdxX>WMlw`368{Qzy^m!XmC88udOl(LY5+t^WJJ35s#T_R7 z3xRhz>(ALiSr1Gcj34pZMtG7;r!>0k++5kHO^BF76wlqGPr& zk|L8NUx^ix?19MZNQ~YK9f6&*VOloYgZOPYZKHQq1}xlfsn%x$E?}%$pK6eS16Oa0 zlJKEQDLJN=>@!KW)`)i^0*>>{f}7WR7D1iKUwB?$3||J7CrVVW<{E>yzStx_sE`n6 z1O%VURV3f$vjDj+pdz#WlpqkXVciLob2ik}Lrhua+Dz zNMyC<*icKvXoOHM8BvI39lDtj|64a~Z(og=WEMnFQ025%=EITI#v)VK!t<0Qcb7PL z!{I~IphvJ9VxeZqMhGid7(R>vI)>N^<07Gtjkca75)-5JRZS3*wMQ7qA(W8aVKE3C z36by@M$cTMu2myqMq=B97>P!nNZnNGW-JY(S3@evj;rb{A{`hBP^CsqjkgM_u-VLW z(R58Iu;_rkVA0{+@mDrdDLJSR*E<;E<5@2NCD>^a?=|JwSzsTm5pRY-%f(0nkEMx` z-$2(7nB?{raP=9V%(0ur5F`*ZbdR>^hC(aE2r*D)#0ii#~9$Uyo=?bVoMMzws3G;!*@BL`b4kW^-9@ z0f#)V4jHoqksm@sYJ9|$E+!Ah0>v@;;+A96|##E76A)U;CVfbYky`8PjW^^Z(2~C8V zn{6%h0!U*I@*B7ZcqE7{2|I=cP}x|s2Jj$%lG(7Hs{u1f?k$nQ<+&Ge0RUkn13uR) z$LOgF5U?=;2_>dx^gGVZPSr!i-_0?4l?c6yz^_rK<8o}0FOuB^38JbY&3Hh%_3$%` zR+(`W!wV8D(vpx#5=Y2{*eF~{=4>7!!}}i~M2mR{1S_rAQX)?CAw+BWZlgQA2niw? zUPP!FST=X;^R`lKIBBHpBt#>z2OktdbdYiYRBtRAmpRvWSJrp4ZU~M~R7+`M5zQ0% z%3BoH1F;v$HJiTql@h1u4c7?Yq|(cHc{O%^w7Z9#@8&3xU}w}ho@e(qeDp@H&n_0c zu}bOC2pk(1m9iy&3nIqiRS7**?vDH|r2n;A@X(5Hmu0x`FuEgG=N5AV95Xy@Z0p9| z#s(j3zP8DfD|5vXW$|~({=$7Jar?w_493j$e20-30@jHbQ$xmt`00!E7jlB&OR#K| zj87>ECf;R2Xb{NwA)|qLZ8Yi*Q3%gcE<&)~WCKFtQ++wY`Jd(@y2KOscYNsXGzrwO z?<59}36cn=(s$s;!m5!}UWnWRYff3&C~%^a^vFdP#%`D(cnd)^O?!GY-IS9=ig*du zB_NGpGfeng_)_dEj+ly;QiCSRDKRr$D;sW;K++M`pB|G-4w6hxyv;zeTUl*AXUIU^ zk!ryg0Gn<=L_yX(0fb1Bg@}=tu!*?RI*#&1e6SK}BIzJoJAfhqqP<8f4j`{#kfFi- z=WU=oW|7j3mnvd11w4p+Nr9*!K{kZksW^&k6ZV+O^Xf5#J}~0~qr0j{JVhd24|6B6 zr*20BpvMj*c357RK*V$k%WpzxlQ1SnxFliM1K6@RvUHQZR(vXDUYyu zflTIt#fH-Hwy6b@ClpZSJ{$drh-_kq3_+Gd0omLLo*%WV6iN~6i6C#1kjMua%1IEA zNnLr;8Rp(ZmrIdM;>~#^Mn8}O+2D1>SH<;UUXPlHqc)CK!8-CAQga%vTk)$byF19uR9yvKMgB zmc&yc%z6$ue+|zML!wKenx6kRVkD^rTTsk$l1w9{@04S2s9Xjc#6lWT(qTOv>xN;Q z*k7U`*^6XqBwSKa5_w>0vCA|__zH!o$UteJ7>O#8!KjO%cr_S7A#RV9>FZ1SK}#jLGvHR&(X z!AiC6*mu&hfFF_|L`#%LCepF>#2cZgARFP!4@Ndt2)rIBhvXq!GJ0Jz>JD0hBgJO3 zO0s^3^kSJaU#}p0wWggv5fhtDRQ}LFY_Ec3rqE>2fImElT@0J=a;}S;lxqd=8B%a9F)`^PUeq~4-#RvX;e)FBS1PY9X_8WNGrSm3FX}p> z?`tEUm{e(fkP^W1Rr;HaQK5y!aI1O=a&(L;i|F%r0*HRt{j&*$E>_Cxtz5hXn`><4 z5C@;|NNh0%jJ?q3`5KXWfho@jud%5)k zD#k-_;*IBIUZz8383^p=&0zh+2rIJ>tY1smInp^)l2lP0 zHGDKWV77@vO#y07N(Ux!0V)euR6HubNvOAQBxen)ts3%-as#C$f>n~r5S~yFziBf3 zMCZjB%u* zsVWyCuILTKCMq_ACLDypVX@PXK778ylB zlpLnfDD6$FrLcIsp;GpuMID6af^fz$BK14WrZaAQ8d6 zFYVlJ0xx3Ozi7X?(i{Cy+$QOAfQo{Xj1l%yCq4){4<1g5!fhbugKGAtfY1=4Cv{@k zX$r;1by3UKyws9NILTKc6D?YLf)`nd5lVy|nJB0=l8GWXVYm!d+pu@oOCoJuZZNSt zY|D9Nfoec15tH8M-3z#b7LbR2Y~2Uf$hZqlX`c<@@!%BdV6?QXKuUqg+M&HdFV&dI zlnlx}`>+sfhJn-uf`-E(sZE=4#BeiE#`Q#LaU&!~R20=&Gcx*kN(OU1@OK*PDGj50 z9>K=5V!}Zq8s5_=jUu@iGT3Wk_S31e28z8FsZwGQRQeedwthoH5;!o-h4_o(d7erB z<(q3HdwLQ+jf4i-#z!Pk0(4_XD%;p$ZBa;eLj6s7Rdj4iyJuD%Z`ohE*ZO3BtJG$eHFIoTs2OWwli;+d&D=?wQGt|mC4kYd1UVdO9vY&7w}ppZr4QmG0$ z7$2)p<8pWkT4Woh(mPQX09qNW>}C!MvVL&j!G4Ekj`-*|5#E2IkQ2KI4X`g z*#=7j@H1sF9q7N%>or@&#eOZ-k|$Dr#_C~q2v&SxF28Oeutu9v?twa6ctJdvaMXgi zBJm-lS&ir=J+Pn$%}41=3lE4#nw)CsZnuZdlekHxPae^+g$6uLAd}@pUz5m34kIsm z_>>yBLSv?tt0e(g0o*rve?z|bJ5Cwt_L?C1K?_iK?P`e!8$wcjq)v?Rh>|`m3He=t zNx7m)8bVLhORpI#N4ox9d$7f8w8-b?QRdyb{T6&19vZ58+@-;f+o7?~*OXi7cwBzE zfw(IOAH^>CgUYRRJT5IYky;y~6_=dCdtu(Pi}R^cvExDPS}!CFAj5m&9KlD8AP^9Z zKG=@ckeK52`k#F9kOy?pIey`hNi|4;tt=SG`(_~TE;zg0tYFc_^2XG zjmcpBAbXOfv%$T@6m_C8C4<%%KClGNtKJJwdDNH&q8%5-53td{!IRf6Xf#tcEMPTW zqml-HU=)RP;Mb3nr(9g179YSX6ms@m4W1#x#l{So@2%L-!V$|%rNs2a7eS3l`UZ7m zy$Req%`ED!H>L-M>fO89QyJn`(4`vlqVZ(mpe$AFvxSYODI`KCOGzR&d4|J>jw!Di zQ{taLv)O7Rm2I`CF+DcT*Ls3W?!GGGO=C)25d+mET2ZZg-gu69M+vN`RPQYCSYtbE z(x-L_e zOEtaI2tM!Qw73|HOrjWSg(O=;o=WM}7#h#^B{f?5MD? zSOpTv;daP&gqX7^mD1o{ujDZJPa_6Us3%Y45y0`{h_!oTPN7Y(_J+#3lCQZnq*D_O zlrX2x5E8?_(?rmSdxOb>1ldnvDDJ%=Q{B$SeAi|`R36nvuc8c6nue)hqYgdf>O-pO zUX8gz{s`+UHi-+P*dzqc0&7rzhx!-o|M!H2US&qFLcGsq%)Hc?Z%!TbjWM$eB_k8|*iF_MT z(X51GSwM&ipuBEF`mN-HGOZM`&ay}>8^4ktLCd~mgj@^xmDckvqCMgYsz&uDI3|$N z<6qG!BAWrYNh|;#!`6OI+2vxGPc892WEaBSS4B*#r@@vt59+bCWu?fkM0pzBzG1(N zmyrxwcW0|=tu@&lBCXrU7bbZ(T_Puy?1pzt9U1cOUBd$@RwH4VSS*qXjtnD!-aUN zPhNq_GHR4QV_F`-eFSO zgDI3*kocpUL}9oH&LB|Ra!jv(Uxb7-SPilxvha9S3f&RWL~2OZiw&ec0>f{Fy;dXM ziB}2PM-Ui-RB~!aL8!<;s_?~l`Fp4%!;HoY z(mcGUUVf@7-?>iXdOF(KnC^Ny-T7*r%W;j%$$a|@(XPgP`+N9%-TCx&FPnLW>^X+) z{)+5bX*ToRvuE1c%y+k$H6?S7+-9~@cCXOvdA8ZTc96fx?%CbkDST*lYMM=IX!gud zoB2~j$vbT3IN8h(&7PB#-3z3gY*KA)=7AKsV{_W&=Y0E{`OZIUT*1{%@KE7$A>H+A znhTh@D`nZYoO-la?Q>8GN`4y z7^7WpYi4E7nUXoH+-ANZJ84QL=8oy~+JNcU%&#JJ@(6pE^C3V&@GQ#}_`jC!3XxtQ zG&#;)?_CGa&Q&Y`h~Gd7T|PWs1$*sO%J{ z?3BFhUdrsGD4Wzgn-na^j_hQ0_8B6y(-kiF^1+GowS3pBf0Kif$idwP@TpjWsB9vH zDVa0p+RQ1+o@L0M$1Vp)2UFG%`SZ#^2_AQIzMb!!rpb-Y3r*C^9xG&t<Gg7H zqCxtHQhHx6yQ!B7EJg35lSm8vpjt#HzsKY)^B6SEaj@3Y<$TREEmF zWtzZhLb+cVS=N4Kn!cr#0Y$n%tf{R!PnswfLqwR!4Y~A*K?*@ZM5RjUL$&l)o%MCd z)?~c}QdP@tL57fzT6`-?b_*)R$ZkQG)RKoL>3ya2u3Y+?IW7T{Uf0X+t7QpkvKwld zIas|O{-%&7DrJ8eq_@>rCh2{-^pB)QYAKYL{x4R`g3Nw7qJFhl+)Bpk=>Jz$gz#^a zOP^xZl#F1&|3*Em@V;58g6n_>DAM*_nyJdlRNbs>zac}FrR$el83^Z4SgEqrm}LK5 zon$0Xq$g3*hYHyPXl#x6x>AY~U1^;)90k0@ZIkp-jnq<;m6C!YF_eFgTzUiPLYib& zluZI-lc1E{EP|FwUMOYoArDN}g|K>s?7Bks!em{nm;D+gek7MZ&`bXU*&^vF}?AS-J--dV+Zs}WsLvK!L z;m{Y&m95<>(9E5xao9G_aC~R$&VOzS2`%5=!r^gzmet4Y+*a?i4!d03!r|zQtm6so z-TwU9IxMeD6$2mLX%_D@$KfpXnWL5Bz=+LbK)nZ z=n@lRX3v@xmk={Ad`kQbd?8aCq>quI-%o?DX~xGyr^F{FB>RntNsNv2#WyYefRPfH zkdo{d6qgz|JuxY6mY;rlbjqZ}Su>LThDOH>4(xhN4HcgO+RaB%k(H3z6R5_LS?q$2Xl>sH9{njs)(w9+%>49~~j5GoAX>xda z+39x3&PsqT>R+l0Bw#lbvKxlN^giXf_MlUe8Ca(|V0{~LxLkUhkJ`s zni(jcRxW+4m!4=>szYkl&uJPXL&ScPCar2m61q&dYNRUrt>NAt>kHFWIbex2)$n$O z6{0TSCLp&`G5`# zMXp(#JRhhF)BERS_OF(EB8~fR=8;8ap~XCkBp|!0k4AsXK8w}j-R2=mVUt>Com6N2 zSS|e>xzYc=e$jo4rqu`>yT>EvLi!FC<5@WPI`K z{We!vm0SHicKA+V>fvI|ARP!*b*L>k`kXVIoWq=a$-U~FNF0B zZ-p-8JQGE($>Gb1gh@b1pobe`X%fDFo@skrz4X07OmsftE#M|LSLk$QL9?n1cIvK7 zTYo`SsBKhiQ1f|NtKC|r4PpFag@)DgwB~I)b(%h=rCLfLtQ5K>Ii3Aus|;?Pde}PR z+`_-aPLbXGGX~IZx)6u9{uhF5{A074uNB&M)OBUh0jy5mOxw>Ys%%rcra2S3cIqWL zt6M08#EKjqwPjjPt-QQyY1`$^Y!yozZhBu&&rwImTG^ivHdl0Ny2HDvjx1m}DmrE6 zDEI*}qXSts{=&tpTLd~vlG1W=1R_kC%w0oxY?($zjkS}-T8TS#n(E$Kk={%mv;=4Z zBBGFWCUr=j(tq<}N&S2~xv80oNzLRT98^_DUC4&5f>~9eki>>yOGoro zT-UsbuGWas@GBokWlC+B@(r2R%qsQ=4a#LqS~nYe##O-dV3@oP_$3l)J4PjBk`Sv0 zFw9Bk9?V>1g#soGzod}UX9{CN)Q7TIL7VwbIXV%BDW(CK75MOEJ2OmO6n;2?9}~J& zu4I@fo*}5&6yylX+j)ZWPV7&O1mI^?oRVvpx)w}%dyvU)psd80>TV6l@z7XL>w31* z>;ZnFVdVS3EHxwE2jI>PZ0q3=@?sh|GogEK!{BOk_irH1pocltKs*P;-BFjLoTGa~ z12W?b$Tba|2VmH8{I&$0Hu<@caSg=t2c>}VVaQ;;T=V}bAhH6mGr-9h=2IA#}^YabFp8zue zKbt|t(ih-E8aPiPoMYLjHatOh07%dUNB5=%;%dVA#RlTJAil$lI1tB}A)|M119B8b zozO6HIh1s-*|b3Q2T+&cmM_la2;)vn2PwlqYuQ7<{C@n+S9Z2+z#w-h5H5kren=XO zvU^tI0l|HlwY6iM=z};BW14nmfqVK2v5nyR=hM?(WeVPA0-#1vUYFfTm7!ov8|*W> z*)cu33Y3c-l#3OPHH*^T@1=ex$ls2yNvL}(t~-`5a&i(dMFTb%6;{tXq@`mg^9nPX z*j(;jf@Nar1WXC$PmWcd+_{iHPxs>5U-0Kk{P`V!p6DodudM@28X?3TKk>9^dl=+k zejKxCE6K*l?8vuhJIKvCakui?>Y`-+zv8YfEZGBz^{RU<`a1d(bwVVxu-(K%+KI-6*^j-%rhl=AyKp znkj8lGoo#3HndI6gtnbIo2oT!Q#Gb-sRSVjtYCzk(8q}}fdluvIYEj?Mt3`dASA+UC@1pD5-WK$H zEZQ`FQGWa^`jr;#ZWe8Si*|R5b`OhoPm6Xhi*|2|c7R2@k43w$MZ2FxTV>Iv^Q7ng z7X1S(+G>lo#-gpYXzMK6K^E;`i?+m~ZO6B%96~Jm2lDOV{5h0APrRwvGBKisdk+$a zqZo$bQFsdHmd-HW!3lh7E$`S_Cv2@YpXMy9`!!xf9o~@?od3 zg`T5Y#m!pO;j=BDyj$?mFMs^J_t2|jz9G*Nj}6#!Eb*`3-yiuPb-gsJj^w%div+=k1mT+qlfKXF)ilFGU4dk z$CY~@OiNCk@!^NcpKj0mP4HujFV;nGjAh1jG;B7G4|?8upmFo3)>bIri*d-sXy>9zc%vUYHNiXYs_Dq-C)-x10KlZ3>zN%IA$=Ru#K5;{Z+>h0HTz2lnCiWu9r&2@+5 zZz{jI`DVu9g`%_f9y}<0^X%=Ry}O2gb?6sq$(u(bHqX!gDdEj?>zRM7IXwQGZ%^*N z^K|RpcUzWM+b?(T`*P;x{vQm=EOf8BQ2FL}N%PW|*7IXNk8XeSx+NA?bL z7#Th6-K`R>_QUjFH$TcKtBN{v=fI?x1vVjz?Q>hX-Cp~0#+ z{$PjMV{%uz3>#3OsVO+D4yqG=e#KqqQs?{Rlf}%bG!*^}! zdv@-x0Vj`da_as=&+oR459v6%&!AJwx(Dd5y!ZaN*o973cYGcMjaq3{%q%>#(suOM zM-%djM{RfcJDK6GS**A2EuU%AMg3-EpLW47xBdS51H0{ZLk8Vg zE39r4Hp+JKi=B}%ZM(hPINu@iLe$eG=L>Ta?7o?=_|!e4&Hf308XWBJOJ6Mt`SHyc zLu}WbXn9KZ^>#^@(yeu)1X{aDYfWgG?$+)5)em3&@L<5Jr)w12D?^j>{^jgjd$(Wk zFFo)2Eq{9xw(;^Bcc*p!9~eIS{?GU&quT8IqVmt7 zc~{m2t@(Ilj~|(l4=>s8n)$o+#nRcCo;_TGniXF9?&dY^x2{a(H=9=2Prh%soOmv0 z|E<0Iwh7v}-}`WOhh6vnJotONvoD7aJTX4+bq`TwYR@&v45uRM*tKcdgU$CdeBIhDU^JOpkFJaiKx_KykdmD6SCvuT#C5W?g$@r+h}g z(vyzHFY^aXT$lQM_~^4+Kb@H|bo`1nVM8iYzaJOAw@1r|&2Arz*>Gw4y&TQ%1ckos zzkXDgY)cYuD12A4z2p9K&sJ#Tx{dkzoK;EjQM>IE&TJUlJ?7({?|;Ah@C(C-wwxg9+!HMTb`1 z7YKQLj{Pg~tN`<`77-=vJ$zUrit%_fXDj%j1KboP0gTl}L= zgB-uCs4KgEe9AW!MMGMB`1_f~{tNC6yWZi9a@mR_S2icV>FChU{-Y(e!N0d(eX`GH z!Na9zXUeuZwX<2aMAi9T^6Dw&12=#8-ZJZNg2sg%`zlDc(!qYdc=T_*?l^zn=93rB zcY+shPIC2|>Fqip@AoGWvYv};ZcLi(*mis0)Z!MBEAit`CiI%POcl2~+4bI_zWYDj zU6HDt`E9%1?>XKP4e1v>+Ii68zUuA29ltVl>DjKstPQCL_E%oqaPP6eaP>xdO8*@d zFXt*;0-0D@!mp=hc&@F;2s^XpC+WeT3a+MJ9d+o76%kj5{b)=rUhVl~{P-UddR>?| z^p33OC1-~TqfgX_TjFQ3+)Qmd+sT*{(b8puRRs>cU~BDaMR_q zp=*CTddTZY(MzxBQ!kRv?cAC=_UMH8gFQn=d-)tXd3WO0gO{8>*j*B_utTo@xP9O4 zpLBM*YX77Jj|W>e-H6_KWoV#y$KhcgPhGQWM$d6yUA-AIe#NEjyNw& zJUl((>bkVQKFrzF?XameCkB+!RLd#^jeWL;@PAY zqx8WJ@!K!lHmu7Z>gJ>SLNjiOZ@N|Hi%w31I#j5i*)I8X;J}(&(hpC+t*tnY-+u82~^TTQ-|6Qzi=61Ck@+0!nwO|hSNrtq(VPZ9f+2)}wT!O!F>$|*{ zCdKhqxA)#Vys*Z8<*pu;Pc_-!JZt%0k+;70S^wwZ&vS-<`}_5F!+%}6;ChVTwe#cm z&%6Fn-pi%eN?YzdG5_b^CL1#ro?HIL^Sj`Yv0c6mUVZ#&dhXf}Tl_rnWo6gIMaI1K zCp(`$GxO=W$5Wp?dV6%|rqQdutK2Smn$~80U~K$-$+O3s+T@qMIlt!T_>PB9?NU^} zp7H+5fs4`u*9_D?IWoav#M$ec_V(JS+4FGJMomGhQ_4L@?sTi}w|?%+iMzJ>@4Xb` zyyRj`yY!1OPU%--S}(bh=(yzaWQQf&dfV#mo%cV}ch#jtv2DlGQw&RP9tu3O;7Wh7 z&&}@+H-FJ1WdDQL=UVUj#ouYxrtQYs0Y7;Cw)gJ!ACIlNc>T`8j~DzjJ+glb@uCl& zJbe&)K)dMh=f~$v_~w|)%HMyQ|MaNK{c|&4L@QkOe7o=ZS2teHIM`+0&P6-kL?637 zFm2tNR|&m${rXbYI^$jE?q!7?4*zmE_WqbDEvlZJ_3N_w*tjC~73YrgKV8$W%b^po zHqt-Wd_7@V`d7Js4Jydd^(+cbP@sIKmX!9iS%R#eizL_7C8+Xd(-J@o4KTo_LdT#ot-8XK89Gx>n6#i}2<@DPl zN3@O~yL5fo7Xq)u&z>tiL!FkzY?(gR%`ZcLGSDOM`Zd1)tp1Dg23XC# zZ}_5SUb@(O=$iROQ>@;3UE7(EZJ!+B*32m?BDd|5vgac|X*RgvM8^S@McWrPYo~fr zIex~S{@%Xp19tDr@u@7GytMg8&7SS{_J|pfbLY{cQ+}IDPFr8p%nEzx|JJT$(vA_k z_dW7&pQnr!j2P2%UAt3uYv%fw_CI;xOLxJw9_uInny~V;!zJa8jN9)uzqdM|+pyT+ z)gdd2-uu^N*PyXqW_0&^8jzHpx6c0b)V8N*(ISRO5=e+!^V88 zp8sM*L~Du9xRbT7<;5juhkDPF^v{j0ac%uc7hmnZuQq+;uAO}T_j@59w)<(#zfO+| z${7`X%72CFo7V4s{Mx6aZhdv+&x74oeD1qwX<*-gj*nK~_?OEdug9HYfA17~r_;^f zvSVEz+nmYWG;V9si4vRBa_N;*>+J>Vm@ZdBQo{fIzU`*$K0Bj+6m|O|Zsj@c{jEN~ zR(Uv;Jqiu$*Xwz%riEMb>g|(S&Fk~(cv*OthtN?1KXDWs_YYS^F+tWs`ah|P8^P2S37!0UiYCF9!UDkTHmGe z$)6tQOM}pi}Ce*7D!E{Q)(k-dz1`KRf1+0_9nQq$hfuCRadGWpdT z`yG2vd3aQ>+24I{>(_vpB#DCwzlMF z=gDH_IsMVJ9_MRTxc1$%wx_VxZ|t8RuXgM8yjJ14yzumy9z*?i#3eUh(y^bbw5-Lk z8(-{KT-LVz{NTfL-`!m1J8zh(d(M@%TRu6cZhz)Yzuab{ZZ&iB*gt;Nq_=)d;V*Ax zv;P`Aml?Sa)gaV?Rmm~4qElj~D3bA`;&J_%@7`3{%-#6l)NXqQ&nwjeO-;DeD@gc?GX+Gz$4aE`JM;$A5>b$3&Vr&btlP@PX znawE*CtK?b?MQ)o;5xEl=Zj!uPrV!kv*jraGiVMTIN4uTUl+~Xk)0An-l$DUvKf%{ zJj(fJyo&3F_kW$s@#b=c%jpVPTC`lKU~WIL6RL-O<&Xsu8I_<#_SEFq;+U34>MUd! zuPlX=z*`w4kX~W%&zAIWUeLnbN}Qn`O&a7FgQ^FRm*aA?Bk4=mwuM~Oq>mKf_#%*i z`SkJG?VasUVSi1Igo`Vukn`W(SHd&rC^CI=up>4+pCI+XiQaf-;D$<3`F$2dz=$?n zWgH#({|_KCIW;~ZrB{!+-6K<&@hk+xynV+owALhG7Tqr7-Rn=^p<}CAJ3E&2B zv?fX5XgyTGtQYiO&%u#N1^|xM{s_3RG z**Dg(I1>{Sr?WGpH6=oy%16L_F|G-4GCf*qBjB`*C15t@&Uq~Xb#T$mpK$%L857q0 zwUF8Lv^ZDBNJgz@cXF z9r$Yj<0c&01U#AF`)2S|Gy-Oe@4MNK^6=4NArXN`AGUJ>I^P zGf}t_Fr8oT@7cV0WaKDKq-Mmx@W@DpmS^9-v%-V!u1jZbH0PBpT>z_|^Egthna~n! z*F7)Hw4N21n;BRe{#w9zxGa@eIfe%hVQkF$c_Rl~-j8q2X=APc{0gv2K=p*I0p(V} z_)L+t`I}+Dq>1{{5+cEHuV-TKtA7}Th?Z7)35up3WnWU$gAk0tW;0ROW9%;*)xlhq z>*W`122M-h0>*#tSVrU+AIqehb;H}Thk)t+o>x0dOX78Hh8Y4ac?+46?x$K=BJj!< zXNJ&;zwVJbr@``jky%kCCvu=qJ_JlJRg+{1LcAGS>W~CX-xvst^Q%xN&j_7~`6zTsK+gu^b4ilT`5pOwh)r;0doEn88zD zA!I`3ZYs{L=@MrrqyVmk8C)=b9r{hvuAA^d6^8IlU80B?wDL@ugtN8b`UsdBALPKU z6?1ya-2TV^yp+(ltThPfCGmm55CjS zhIqa3QCfIYfYD$@z-Z_ke4*)BLE>T{Pl~|PXC?yXe0fTP#;_LO)(nn>a&icmOJ|a# zQs?@(&HlGOc3daBTqH9g2Q^gz^TYQ|Mhzn0nH(&O*oD6qFk>$@i9kd$+YEuuL%{rW zw<*U>1_(EUSMb+D=9hL-b0uc&gZeZg75bzu^3SH|5@xMd;`nh22zP!}y=5~erp zmI+3f*&y^$o`6XzZNe>+8AqCdyYklpW@hRTf8r8I_~UYhMP_g`h6$NR9h>yegzz*o zgwFi+qw*%WAaaZ`1E$Xxh0GJpix*Pcq-eaMPu|sMZ773>Oz~=RWI`;_j2L~GC}5uU zZqkJlkxe#3plc*x=D4@qV&|xzm6(zklQ^C3C|Db8#v=%r1#uE{6JZ?!bpm9~+VPM$ zrQt*U4!ujAJY6VypU9((Z~Q@T;;ayuHJZ2#MSl`L`8-?=&hPl^u0n=cgbz9P@#kM~ zmhe%>i$9b8472OaxW0&w4VdlAGdvyVFYq~v&+q&_EtLu(fFl|0FD>qIJ>1`8eBVP0 zm=1hOItS;cG(9y(#PtxWf@b$qaBmxb{|AeHTYirefU|+WF6Ym8aF+AtsHSGg(@o;r zn{YnQUyHPj~Hpw0wWStDd>KuYa0W!8nTMH8=V*-z)lyl=k|b zRX;>c&%9uNuebY+sI{33r73+wA4DA!DP^&NHGic&$oyG0L2uGkI5+#kaY*=-;T0jx z!du-RsThAfb+Kb>(->y*^{vf*YCUQ~U9#J?#oeq0@^;{-E9R(OB8aWBU9Dca)XL7G zGkIS;!^+MxNYLunH1TTn;xTy>gA94vA$qsIJLK&nmdZRsn%Q|CZ`P`lsBNo>SyHtv zFw_&$ zAmfR6#~p8Bk5G5pS432g{eqG2^u)wzvy;fzn&K4fm!A}=akG-~^(I9xUw=j1q)Blx zDekM21*|48Q6yb^u z0!E0P3z-RycR2V$14Xc`Hn8wA4xEMOD-9IBq1?bi(o~F4W=jnej&7{Y>J2Oc4X+$4 zY^|Y56mAQ_q7d~U2ZzEI8~zCe!H7knl?D!ltu|1U@KH!%2N`oaSXOZQ>~mMuC^NIFMQ=5~WDIITDkaK7r$1cKR8b}-|GFFQ1i zKquMT41uo|SR&LH3|N+Ep@6W&77Hjir?@0tVBu(1&9Tl_3phxW3|IizHG6OXY`K7v zqQaPHRx@C6JR0G!^#V&A7KJMsuqf`0P}qWjB})A;R4AH8IBdnh5{C{$QPho4*ph)I z3YM0wyRd9|HiBns1{{2REZYx{$sU|^*rI_YJ+dxlx{G=*WNES=28V9N#+ zo;6{zH)2_#n|zKHwr)TH=|T}!K$v1s-^pRHg#(HaJ}QJ(4_M-~YQTZAl>-h`N6H5* z2!g7aDA>{grAEic@McTy)(C;E9W;$V`K5&e!USJDpa|ik_zD8cO0XGawt7IpC?l*| zU{R?1d(R9($W;g^%HPWb><}crk%REUmIx@kU zs78dbir7D}2(&^#IN_@V6oplgdQ+#n0}hZa6L3YR`donQb3jvA|3)AI9cac7Un`*W zDNDS^r_$`w2!kya`~wCR4y_b$tg+PsOAOA6=nx9CA^36uMc`Gp-Y#gZfY4^^1r(5S z&rznV&|(3{3R^H}0>MoFUS_QD6$6UE${%%acAaRsfFsP73>x4@vP|%hv|hkLvNZz= zNqHs`52#n)j*VDgiv~?2&`HvY0XG6$HJ}Jo-}%x3%Q|vr_Ta$TvH=CB4Anbls+P27 zz~QiU14|t0oGA+3i*hJz;lL85(X?sRfP-f%2Na(5bmWl(%Rlx3_5Aat0}4p_CkSQ^ zp|cqVTRX6XXBna5q=f^*2wyy46of*f3IZO5**E0foUMhKjl&ieEXU#bq9f6&0yky0 zvd|QUnR?Q)0*Aqt7B~!AUtlGK9TaZ9`_SxOD9vTi6_4vL z@u|Vbif6bt&Xe)U#^(rs&w)yYCmMuyqQyP)@jm7IDlK51@au}>z)a{hb(=WG16J+)sBgz3+>XW*RAU)SPng*~VbKIB+| z^I!b62Mu;y7yEa36Zc4m8XrLmK^JMuW+G|E0_np=QhA&9(p!rp`?X+G=qeCN(-%n7 z7D%!8Zi$9O(pSj~I3a@B$Z#KHOu~m-B3o7~ zg!E_5grxU8K5DGD=rI1+3Y@G?;2eva0&L%!5z`_af_BydH`Z!w zSZm{UuB@M^-??_{jjbtmtL)vzKlD)_OdD^y|L4Dt&2Ya0LVxCi@f(?peYW4!=$L7K zsqquz{3gcZJ&5QOrlU_#WF))Kj*JZK*-fcbc2tmiVd2Aj_2?BD8p$>5+ia72$ce9f zM-CqqJYtAuY@|l79~>4D8LS_!3k~%D2cVGQBZmcPBEp6b;{gMj2K0{%*98v?ZXnpb zX}HLNnxVmZ4Br6R?H?e+^&`R}%qad7oNoAt;IN^Zfx-V_DnVi4dQF5b^gn>dpB5gL7Hm@b?LxO8;fjcH*geH&`0iHOqPogyu5hEhQ zN9y&%M?{22h6iH-v_pa;gMxKK!UH*mD5!4uP<_~t;1Q8n({L!A z^B<^&4I5ZbZlF#V8LAnDQATS`yR?KGn6$k{cr1s>*&qVM)?_!$%>7aT^Q;&yIB9$!r7(!a#;-)V(i^-(Ryp6EH gNHP70`M4lQBrWDe;{omTlo?6>?B8zeUnTQ@0Hoo>G5`Po literal 0 HcmV?d00001 diff --git a/.cache/clang/ModuleCache/3A6TBOROFVNNR/SwiftShims-2IMTS4WWRU7VJ.pcm b/.cache/clang/ModuleCache/3A6TBOROFVNNR/SwiftShims-2IMTS4WWRU7VJ.pcm new file mode 100644 index 0000000000000000000000000000000000000000..55f7e4215708ed861e98731002f9e83e9e9d1661 GIT binary patch literal 157016 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 pT*;4`iv@F0Lq2EuN1pk3PH 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 literal 0 HcmV?d00001 diff --git a/.cache/clang/ModuleCache/Swift-207X6UTF85MUY.swiftmodule b/.cache/clang/ModuleCache/Swift-207X6UTF85MUY.swiftmodule new file mode 100644 index 00000000..020e9eda --- /dev/null +++ b/.cache/clang/ModuleCache/Swift-207X6UTF85MUY.swiftmodule @@ -0,0 +1,12 @@ +--- +path: '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/prebuilt-modules/26.0/Swift.swiftmodule/arm64e-apple-macos.swiftmodule' +dependencies: + - mtime: 1757258659000000000 + path: '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/prebuilt-modules/26.0/Swift.swiftmodule/arm64e-apple-macos.swiftmodule' + size: 14166264 + - mtime: 1754189697000000000 + path: 'usr/lib/swift/Swift.swiftmodule/arm64e-apple-macos.swiftinterface' + size: 2261306 + sdk_relative: true +version: 1 +... diff --git a/.cache/clang/ModuleCache/SwiftOnoneSupport-3W234PQLRG1JJ.swiftmodule b/.cache/clang/ModuleCache/SwiftOnoneSupport-3W234PQLRG1JJ.swiftmodule new file mode 100644 index 00000000..87a44797 --- /dev/null +++ b/.cache/clang/ModuleCache/SwiftOnoneSupport-3W234PQLRG1JJ.swiftmodule @@ -0,0 +1,16 @@ +--- +path: '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/prebuilt-modules/26.0/SwiftOnoneSupport.swiftmodule/arm64e-apple-macos.swiftmodule' +dependencies: + - mtime: 1757258662000000000 + path: '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/prebuilt-modules/26.0/SwiftOnoneSupport.swiftmodule/arm64e-apple-macos.swiftmodule' + size: 18068 + - mtime: 1754189697000000000 + path: 'usr/lib/swift/Swift.swiftmodule/arm64e-apple-macos.swiftinterface' + size: 2261306 + sdk_relative: true + - mtime: 1754191141000000000 + path: 'usr/lib/swift/SwiftOnoneSupport.swiftmodule/arm64e-apple-macos.swiftinterface' + size: 1224 + sdk_relative: true +version: 1 +... diff --git a/.cache/clang/ModuleCache/_Concurrency-IW47C06QYY26.swiftmodule b/.cache/clang/ModuleCache/_Concurrency-IW47C06QYY26.swiftmodule new file mode 100644 index 00000000..b9a985f0 --- /dev/null +++ b/.cache/clang/ModuleCache/_Concurrency-IW47C06QYY26.swiftmodule @@ -0,0 +1,16 @@ +--- +path: '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/prebuilt-modules/26.0/_Concurrency.swiftmodule/arm64e-apple-macos.swiftmodule' +dependencies: + - mtime: 1757258669000000000 + path: '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/prebuilt-modules/26.0/_Concurrency.swiftmodule/arm64e-apple-macos.swiftmodule' + size: 699544 + - mtime: 1754189697000000000 + path: 'usr/lib/swift/Swift.swiftmodule/arm64e-apple-macos.swiftinterface' + size: 2261306 + sdk_relative: true + - mtime: 1754192470000000000 + path: 'usr/lib/swift/_Concurrency.swiftmodule/arm64e-apple-macos.swiftinterface' + size: 364219 + sdk_relative: true +version: 1 +... diff --git a/.cache/clang/ModuleCache/_StringProcessing-1C2ZFCSIKDXY1.swiftmodule b/.cache/clang/ModuleCache/_StringProcessing-1C2ZFCSIKDXY1.swiftmodule new file mode 100644 index 00000000..8a3b6356 --- /dev/null +++ b/.cache/clang/ModuleCache/_StringProcessing-1C2ZFCSIKDXY1.swiftmodule @@ -0,0 +1,16 @@ +--- +path: '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/prebuilt-modules/26.0/_StringProcessing.swiftmodule/arm64e-apple-macos.swiftmodule' +dependencies: + - mtime: 1757258664000000000 + path: '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/prebuilt-modules/26.0/_StringProcessing.swiftmodule/arm64e-apple-macos.swiftmodule' + size: 83568 + - mtime: 1754189697000000000 + path: 'usr/lib/swift/Swift.swiftmodule/arm64e-apple-macos.swiftinterface' + size: 2261306 + sdk_relative: true + - mtime: 1754192532000000000 + path: 'usr/lib/swift/_StringProcessing.swiftmodule/arm64e-apple-macos.swiftinterface' + size: 24507 + sdk_relative: true +version: 1 +... diff --git a/.cache/clang/ModuleCache/modules.timestamp b/.cache/clang/ModuleCache/modules.timestamp new file mode 100644 index 00000000..e69de29b diff --git a/bitchatTests/EndToEnd/PrivateChatE2ETests.swift b/bitchatTests/EndToEnd/PrivateChatE2ETests.swift index 0e04776d..5fb0bdb3 100644 --- a/bitchatTests/EndToEnd/PrivateChatE2ETests.swift +++ b/bitchatTests/EndToEnd/PrivateChatE2ETests.swift @@ -6,140 +6,110 @@ // For more information, see // -import XCTest +import Testing import CryptoKit @testable import bitchat -final class PrivateChatE2ETests: XCTestCase { +// TODO: Remove once MockBLEService is refactored to fix race condition +@Suite(.serialized) +struct PrivateChatE2ETests { - var alice: MockBluetoothMeshService! - var bob: MockBluetoothMeshService! - var charlie: MockBluetoothMeshService! + private let alice: MockBLEService + private let bob: MockBLEService + private let charlie: MockBLEService + private let mockKeychain: MockKeychain - private var mockKeychain: MockKeychain! - - override func setUp() { - super.setUp() + init() { MockBLEService.resetTestBus() // Create services - alice = createMockService(peerID: TestConstants.testPeerID1, nickname: TestConstants.testNickname1) - bob = createMockService(peerID: TestConstants.testPeerID2, nickname: TestConstants.testNickname2) - charlie = createMockService(peerID: TestConstants.testPeerID3, nickname: TestConstants.testNickname3) + alice = MockBLEService(peerID: TestConstants.testPeerID1, nickname: TestConstants.testNickname1) + bob = MockBLEService(peerID: TestConstants.testPeerID2, nickname: TestConstants.testNickname2) + charlie = MockBLEService(peerID: TestConstants.testPeerID3, nickname: TestConstants.testNickname3) mockKeychain = MockKeychain() - - // Delivery tracking is now handled internally by BLEService - } - - override func tearDown() { - alice = nil - bob = nil - charlie = nil - mockKeychain = nil - super.tearDown() } // MARK: - Basic Private Messaging Tests - - func testSimplePrivateMessageShouldNotBeSentWithoutConnection() { - // Intentionally commented out to test - // simulateConnection(alice, bob) - - let expectation = XCTestExpectation(description: "Bob should not receive a private message") - expectation.isInverted = true - - bob.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 && - message.isPrivate && - message.sender == TestConstants.testNickname1 { - expectation.fulfill() + + @Test func simplePrivateMessageShouldNotBeSentWithoutConnection() async { + // Intentionally not connecting alice and bob to test + + var bobReceivedMessage = false + + await confirmation("Bob should not receive a private message", expectedCount: 0) { bobReceivesMessage in + bob.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 && + message.isPrivate && + message.sender == TestConstants.testNickname1 { + bobReceivedMessage = true + bobReceivesMessage() + } } + + // Alice sends private message to Bob + alice.sendPrivateMessage( + TestConstants.testMessage1, + to: TestConstants.testPeerID2, + recipientNickname: TestConstants.testNickname2 + ) + + // Wait a bit to ensure message would have been delivered if it was going to be + try? await Task.sleep(nanoseconds: UInt64(TestConstants.shortTimeout * 1_000_000_000)) } - - // Alice sends private message to Bob - alice.sendPrivateMessage( - TestConstants.testMessage1, - to: TestConstants.testPeerID2, - recipientNickname: TestConstants.testNickname2 - ) - - wait(for: [expectation], timeout: TestConstants.shortTimeout) + + #expect(!bobReceivedMessage, "Bob should not have received the message") } - - func testSimplePrivateMessage() { - simulateConnection(alice, bob) + + @Test func simplePrivateMessage() async { + alice.simulateConnection(with: bob) - let expectation = XCTestExpectation(description: "Bob receives private message") - - bob.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 && - message.isPrivate && - message.sender == TestConstants.testNickname1 { - expectation.fulfill() + await confirmation("Bob receives private message") { bobReceivesMessage in + bob.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 && + message.isPrivate && + message.sender == TestConstants.testNickname1 { + bobReceivesMessage() + } } - } - - // Alice sends private message to Bob - alice.sendPrivateMessage( - TestConstants.testMessage1, - to: TestConstants.testPeerID2, - recipientNickname: TestConstants.testNickname2 - ) - - wait(for: [expectation], timeout: TestConstants.shortTimeout) - } - - func testPrivateMessageNotReceivedByOthers() { - // Connect all three - simulateConnection(alice, bob) - simulateConnection(alice, charlie) - - let bobExpectation = XCTestExpectation(description: "Bob receives private message") - let charlieExpectation = XCTestExpectation(description: "Charlie should not receive") - charlieExpectation.isInverted = true - - bob.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 && message.isPrivate { - bobExpectation.fulfill() - } - } - - charlie.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 { - charlieExpectation.fulfill() // Should not happen - } - } - - // Small delay to ensure connections are registered before send - DispatchQueue.main.asyncAfter(deadline: .now() + 0.05) { - // Alice sends private message to Bob only - self.alice.sendPrivateMessage( + + // Alice sends private message to Bob + alice.sendPrivateMessage( TestConstants.testMessage1, to: TestConstants.testPeerID2, recipientNickname: TestConstants.testNickname2 ) } - - wait(for: [bobExpectation, charlieExpectation], timeout: TestConstants.shortTimeout) } - // MARK: - Delivery Acknowledgment Tests - - // NOTE: DeliveryTracker has been removed in BLEService. - // Delivery tracking is now handled internally. - - - // MARK: - Message Retry Tests - - // NOTE: MessageRetryService has been removed in BLEService. - // Retry logic is now handled internally. - - + @Test func privateMessageNotReceivedByOthers() async { + alice.simulateConnection(with: bob) + alice.simulateConnection(with: charlie) + + await confirmation("Bob receives private message") { bobReceivesMessage in + bob.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 && message.isPrivate { + bobReceivesMessage() + } + } + + charlie.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 { + Issue.record("Charlie should not receive") + } + } + + alice.sendPrivateMessage( + TestConstants.testMessage1, + to: TestConstants.testPeerID2, + recipientNickname: TestConstants.testNickname2 + ) + } + } // MARK: - End-to-End Encryption Tests - func testPrivateMessageEncryption() { - simulateConnection(alice, bob) + @Test func privateMessageEncryption() async { + alice.simulateConnection(with: bob) // Setup Noise sessions let aliceKey = Curve25519.KeyAgreement.PrivateKey() @@ -155,161 +125,139 @@ final class PrivateChatE2ETests: XCTestCase { let handshake3 = try aliceManager.handleIncomingHandshake(from: TestConstants.testPeerID2, message: handshake2)! _ = try bobManager.handleIncomingHandshake(from: TestConstants.testPeerID1, message: handshake3) } catch { - XCTFail("Failed to establish Noise session: \(error)") + Issue.record("Failed to establish Noise session: \(error)") } - let expectation = XCTestExpectation(description: "Encrypted message received") - - // Setup packet handlers for encryption - alice.packetDeliveryHandler = { packet in - // Encrypt outgoing private messages - if packet.type == 0x01, - let message = BitchatMessage(packet.payload), - message.isPrivate { - do { - let encrypted = try aliceManager.encrypt(packet.payload, for: TestConstants.testPeerID2) - let encryptedPacket = BitchatPacket( - type: 0x02, // Encrypted message type - senderID: packet.senderID, - recipientID: packet.recipientID, - timestamp: packet.timestamp, - payload: encrypted, - signature: packet.signature, - ttl: packet.ttl - ) - self.bob.simulateIncomingPacket(encryptedPacket) - } catch { - XCTFail("Encryption failed: \(error)") - } - } - } - - bob.packetDeliveryHandler = { packet in - // Decrypt incoming encrypted messages - if packet.type == 0x02 { - do { - let decrypted = try bobManager.decrypt(packet.payload, from: TestConstants.testPeerID1) - if let message = BitchatMessage(decrypted) { - XCTAssertEqual(message.content, TestConstants.testMessage1) - XCTAssertTrue(message.isPrivate) - expectation.fulfill() + await confirmation("Encrypted message received") { receiveEncryptedMessage in + // Setup packet handlers for encryption + alice.packetDeliveryHandler = { packet in + // Encrypt outgoing private messages + if packet.type == 0x01, + let message = BitchatMessage(packet.payload), + message.isPrivate { + do { + let encrypted = try aliceManager.encrypt(packet.payload, for: TestConstants.testPeerID2) + let encryptedPacket = BitchatPacket( + type: 0x02, // Encrypted message type + senderID: packet.senderID, + recipientID: packet.recipientID, + timestamp: packet.timestamp, + payload: encrypted, + signature: packet.signature, + ttl: packet.ttl + ) + self.bob.simulateIncomingPacket(encryptedPacket) + } catch { + Issue.record("Encryption failed: \(error)") } - } catch { - XCTFail("Decryption failed: \(error)") } } - } - - // Send encrypted private message - alice.sendPrivateMessage( - TestConstants.testMessage1, - to: TestConstants.testPeerID2, - recipientNickname: TestConstants.testNickname2 - ) - - wait(for: [expectation], timeout: TestConstants.defaultTimeout) - } - - // MARK: - Multi-hop Private Message Tests - - func testPrivateMessageRelay() { - // Setup: Alice -> Bob -> Charlie - simulateConnection(alice, bob) - simulateConnection(bob, charlie) - - let expectation = XCTestExpectation(description: "Private message relayed to Charlie") - - // Bob relays private messages for Charlie - bob.packetDeliveryHandler = { packet in - if let recipientID = packet.recipientID, - String(data: recipientID, encoding: .utf8) == TestConstants.testPeerID3 { - // Relay to Charlie - var relayPacket = packet - relayPacket.ttl = packet.ttl - 1 - self.charlie.simulateIncomingPacket(relayPacket) - } - } - - charlie.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 && - message.isPrivate && - message.recipientNickname == TestConstants.testNickname3 { - expectation.fulfill() - } - } - - // Alice sends private message to Charlie (through Bob) - alice.sendPrivateMessage( - TestConstants.testMessage1, - to: TestConstants.testPeerID3, - recipientNickname: TestConstants.testNickname3 - ) - - wait(for: [expectation], timeout: TestConstants.defaultTimeout) - } - - // MARK: - Performance Tests - - func testPrivateMessageThroughput() { - simulateConnection(alice, bob) - - let messageCount = 100 - var receivedCount = 0 - let expectation = XCTestExpectation(description: "All private messages received") - - bob.messageDeliveryHandler = { message in - if message.isPrivate && message.sender == TestConstants.testNickname1 { - receivedCount += 1 - if receivedCount == messageCount { - expectation.fulfill() + + bob.packetDeliveryHandler = { packet in + // Decrypt incoming encrypted messages + if packet.type == 0x02 { + do { + let decrypted = try bobManager.decrypt(packet.payload, from: TestConstants.testPeerID1) + if let message = BitchatMessage(decrypted) { + #expect(message.content == TestConstants.testMessage1) + #expect(message.isPrivate) + receiveEncryptedMessage() + } + } catch { + Issue.record("Decryption failed: \(error)") + } } } - } - - // Send many private messages - for i in 0.. Bob -> Charlie + alice.simulateConnection(with: bob) + bob.simulateConnection(with: charlie) - let expectation = XCTestExpectation(description: "Large private message received") + await confirmation("Private message relayed to Charlie") { charlieReceivesMessage in + // Bob relays private messages for Charlie + bob.packetDeliveryHandler = { packet in + if let recipientID = packet.recipientID, + String(data: recipientID, encoding: .utf8) == TestConstants.testPeerID3 { + // Relay to Charlie + var relayPacket = packet + relayPacket.ttl = packet.ttl - 1 + self.charlie.simulateIncomingPacket(relayPacket) + } + } + + charlie.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 && + message.isPrivate && + message.recipientNickname == TestConstants.testNickname3 { + charlieReceivesMessage() + } + } + + // Alice sends private message to Charlie (through Bob) + alice.sendPrivateMessage( + TestConstants.testMessage1, + to: TestConstants.testPeerID3, + recipientNickname: TestConstants.testNickname3 + ) + } + } + + // MARK: - Performance Tests + + @Test func privateMessageThroughput() async { + alice.simulateConnection(with: bob) - bob.messageDeliveryHandler = { message in - if message.content == TestConstants.testLongMessage && message.isPrivate { - expectation.fulfill() + let messageCount = 100 + var receivedCount = 0 + + await confirmation("All private messages received") { receivePrivateMessage in + bob.messageDeliveryHandler = { message in + if message.isPrivate && message.sender == TestConstants.testNickname1 { + receivedCount += 1 + if receivedCount == messageCount { + receivePrivateMessage() + } + } + } + + // Send many private messages + for i in 0.. MockBluetoothMeshService { - let service = MockBluetoothMeshService() - service.myPeerID = peerID.id - service.mockNickname = nickname - return service - } - - private func simulateConnection(_ peer1: MockBluetoothMeshService, _ peer2: MockBluetoothMeshService) { - peer1.simulateConnectedPeer(peer2.peerID) - peer2.simulateConnectedPeer(peer1.peerID) + + @Test func largePrivateMessage() async { + alice.simulateConnection(with: bob) + + await confirmation("Large private message received") { receiveLargeMessage in + bob.messageDeliveryHandler = { message in + if message.content == TestConstants.testLongMessage && message.isPrivate { + receiveLargeMessage() + } + } + + alice.sendPrivateMessage( + TestConstants.testLongMessage, + to: TestConstants.testPeerID2, + recipientNickname: TestConstants.testNickname2 + ) + } } } diff --git a/bitchatTests/EndToEnd/PublicChatE2ETests.swift b/bitchatTests/EndToEnd/PublicChatE2ETests.swift index b3a49a36..fcd52cd7 100644 --- a/bitchatTests/EndToEnd/PublicChatE2ETests.swift +++ b/bitchatTests/EndToEnd/PublicChatE2ETests.swift @@ -6,439 +6,390 @@ // For more information, see // -import XCTest +import Testing @testable import bitchat -final class PublicChatE2ETests: XCTestCase { +@Suite(.serialized) +struct PublicChatE2ETests { - var alice: MockBluetoothMeshService! - var bob: MockBluetoothMeshService! - var charlie: MockBluetoothMeshService! - var david: MockBluetoothMeshService! + private let alice: MockBLEService + private let bob: MockBLEService + private let charlie: MockBLEService + private let david: MockBLEService - var receivedMessages: [String: [BitchatMessage]] = [:] + private var receivedMessages: [String: [BitchatMessage]] = [:] - override func setUp() { - super.setUp() + init() { MockBLEService.resetTestBus() // Create mock services - alice = createMockService(peerID: TestConstants.testPeerID1, nickname: TestConstants.testNickname1) - bob = createMockService(peerID: TestConstants.testPeerID2, nickname: TestConstants.testNickname2) - charlie = createMockService(peerID: TestConstants.testPeerID3, nickname: TestConstants.testNickname3) - david = createMockService(peerID: TestConstants.testPeerID4, nickname: TestConstants.testNickname4) - - // Clear received messages - receivedMessages.removeAll() - } - - override func tearDown() { - alice = nil - bob = nil - charlie = nil - david = nil - super.tearDown() + alice = MockBLEService(peerID: TestConstants.testPeerID1, nickname: TestConstants.testNickname1) + bob = MockBLEService(peerID: TestConstants.testPeerID2, nickname: TestConstants.testNickname2) + charlie = MockBLEService(peerID: TestConstants.testPeerID3, nickname: TestConstants.testNickname3) + david = MockBLEService(peerID: TestConstants.testPeerID4, nickname: TestConstants.testNickname4) } // MARK: - Basic Broadcasting Tests - func testSimplePublicMessage() { - // Connect Alice and Bob - simulateConnection(alice, bob) + @Test func simplePublicMessage() async { + alice.simulateConnection(with: bob) - let expectation = XCTestExpectation(description: "Bob receives message") - - bob.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 && message.sender == TestConstants.testNickname1 { - expectation.fulfill() + await confirmation("Bob receives message") { bobReceivesMessage in + bob.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 && message.sender == TestConstants.testNickname1 { + bobReceivesMessage() + } } + + alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) } - - // Alice sends public message - alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) - - wait(for: [expectation], timeout: TestConstants.shortTimeout) } - func testMultiRecipientBroadcast() { - // Connect Alice to Bob and Charlie - simulateConnection(alice, bob) - simulateConnection(alice, charlie) + @Test func multiRecipientBroadcast() async { + alice.simulateConnection(with: bob) + alice.simulateConnection(with: charlie) - let bobExpectation = XCTestExpectation(description: "Bob receives message") - let charlieExpectation = XCTestExpectation(description: "Charlie receives message") + var bobReceivedMessage = false + var charlieReceivedMessage = false - bob.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 { - bobExpectation.fulfill() + await confirmation("Both recieve message", expectedCount: 2) { receiveMessage in + bob.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 { + if !bobReceivedMessage { + bobReceivedMessage = true + receiveMessage() + } else { + Issue.record("Bob received more than once") + } + } } - } - - charlie.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 { - charlieExpectation.fulfill() + + charlie.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 { + if !charlieReceivedMessage { + charlieReceivedMessage = true + receiveMessage() + } else { + Issue.record("Charlie received more than once") + } + } } + + alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) } - - // Alice broadcasts - alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) - - wait(for: [bobExpectation, charlieExpectation], timeout: TestConstants.shortTimeout) } // MARK: - Message Routing and Relay Tests - func testMessageRelayChain() { + @Test func messageRelayChain() async { // Linear topology: Alice -> Bob -> Charlie - simulateConnection(alice, bob) - simulateConnection(bob, charlie) - - let expectation = XCTestExpectation(description: "Charlie receives relayed message") - - // Set up relay in Bob - bob.packetDeliveryHandler = { packet in - // Bob should relay to Charlie - if let message = BitchatMessage(packet.payload), - message.sender == TestConstants.testNickname1 { - - // Create relay message - let relayMessage = BitchatMessage( - id: message.id, - sender: message.sender, - content: message.content, - timestamp: message.timestamp, - isRelay: true, - originalSender: message.sender, - isPrivate: message.isPrivate, - recipientNickname: message.recipientNickname, - senderPeerID: message.senderPeerID, - mentions: message.mentions - ) - - if let relayPayload = relayMessage.toBinaryPayload() { - let relayPacket = BitchatPacket( - type: packet.type, - senderID: packet.senderID, - recipientID: packet.recipientID, - timestamp: packet.timestamp, - payload: relayPayload, - signature: packet.signature, - ttl: packet.ttl - 1 + alice.simulateConnection(with: bob) + bob.simulateConnection(with: charlie) + + await confirmation("Charlie receives relayed message") { charlieReceivesMessage in + // Set up relay in Bob + bob.packetDeliveryHandler = { packet in + // Bob should relay to Charlie + if let message = BitchatMessage(packet.payload), + message.sender == TestConstants.testNickname1 { + + // Create relay message + let relayMessage = BitchatMessage( + id: message.id, + sender: message.sender, + content: message.content, + timestamp: message.timestamp, + isRelay: true, + originalSender: message.sender, + isPrivate: message.isPrivate, + recipientNickname: message.recipientNickname, + senderPeerID: message.senderPeerID, + mentions: message.mentions ) - - // Simulate relay to Charlie - self.charlie.simulateIncomingPacket(relayPacket) + + if let relayPayload = relayMessage.toBinaryPayload() { + let relayPacket = BitchatPacket( + type: packet.type, + senderID: packet.senderID, + recipientID: packet.recipientID, + timestamp: packet.timestamp, + payload: relayPayload, + signature: packet.signature, + ttl: packet.ttl - 1 + ) + + // Simulate relay to Charlie + self.charlie.simulateIncomingPacket(relayPacket) + } } } - } - - charlie.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 && - message.originalSender == TestConstants.testNickname1 && - message.isRelay { - expectation.fulfill() + + charlie.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 && + message.originalSender == TestConstants.testNickname1 && + message.isRelay { + charlieReceivesMessage() + } } + + alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) } - - // Alice sends message - alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) - - wait(for: [expectation], timeout: TestConstants.defaultTimeout) } - func testMultiHopRelay() { + @Test func multiHopRelay() async { // Topology: Alice -> Bob -> Charlie -> David - simulateConnection(alice, bob) - simulateConnection(bob, charlie) - simulateConnection(charlie, david) + alice.simulateConnection(with: bob) + bob.simulateConnection(with: charlie) + charlie.simulateConnection(with: david) - let expectation = XCTestExpectation(description: "David receives multi-hop message") - - // Set up relay chain - setupRelayHandler(bob, nextHops: [charlie]) - setupRelayHandler(charlie, nextHops: [david]) - // Allow handlers to install - let sendDelay = DispatchTime.now() + 0.05 - - david.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 && - message.originalSender == TestConstants.testNickname1 && - message.isRelay { - expectation.fulfill() + await confirmation("David receives multi-hop message") { davidReceivesMessage in + // Set up relay chain + setupRelayHandler(bob, nextHops: [charlie]) + setupRelayHandler(charlie, nextHops: [david]) + + david.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 && + message.originalSender == TestConstants.testNickname1 && + message.isRelay { + davidReceivesMessage() + } } + + alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) } - - // Alice sends message - DispatchQueue.main.asyncAfter(deadline: sendDelay) { - self.alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) - } - - wait(for: [expectation], timeout: TestConstants.defaultTimeout) } // MARK: - TTL (Time To Live) Tests - func testTTLDecrement() { + @Test func ttlDecrement() async { // Create a chain longer than TTL - let nodes = [alice!, bob!, charlie!, david!] + let nodes = [alice, bob, charlie, david] // Connect in chain for i in 0.. 0 && i < nodes.count-1 { setupRelayHandler(nodes[i], nextHops: [nodes[i+1]]) } } - let expectation = XCTestExpectation(description: "Message dropped due to TTL") - expectation.isInverted = true // Should NOT be fulfilled - - david.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 { - expectation.fulfill() // This should not happen + await confirmation("Message dropped due to TTL", expectedCount: 0) { receiveMessage in + david.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 { + receiveMessage() // This should not happen + } + } + + // Inject at Bob with TTL=2 so Charlie sees it (TTL->1) and does not relay to David + let msg = TestHelpers.createTestMessage( + content: TestConstants.testMessage1, + sender: TestConstants.testNickname1, + senderPeerID: PeerID(str: alice.peerID) + ) + + if let payload = msg.toBinaryPayload() { + let pkt = TestHelpers.createTestPacket(senderID: PeerID(str: alice.peerID), payload: payload, ttl: 2) + bob.simulateIncomingPacket(pkt) } } - - // Inject at Bob with TTL=2 so Charlie sees it (TTL->1) and does not relay to David - let msg = TestHelpers.createTestMessage(content: TestConstants.testMessage1, sender: TestConstants.testNickname1, senderPeerID: PeerID(str: alice.peerID)) - if let payload = msg.toBinaryPayload() { - let pkt = TestHelpers.createTestPacket(senderID: PeerID(str: alice.peerID), payload: payload, ttl: 2) - bob.simulateIncomingPacket(pkt) - } - - wait(for: [expectation], timeout: TestConstants.shortTimeout) } - func testZeroTTLNotRelayed() { - simulateConnection(alice, bob) - simulateConnection(bob, charlie) + @Test func zeroTTLNotRelayed() async { + alice.simulateConnection(with: bob) + bob.simulateConnection(with: charlie) - let expectation = XCTestExpectation(description: "Zero TTL message not relayed") - expectation.isInverted = true - - charlie.messageDeliveryHandler = { message in - if message.content == "Zero TTL message" { - expectation.fulfill() // Should not happen + await confirmation("Zero TTL message not relayed", expectedCount: 0) { receiveMessage in + charlie.messageDeliveryHandler = { message in + if message.content == "Zero TTL message" { + receiveMessage() // Should not happen + } + } + + // Create packet with TTL=0 + let message = TestHelpers.createTestMessage(content: "Zero TTL message") + if let payload = message.toBinaryPayload() { + let packet = TestHelpers.createTestPacket(payload: payload, ttl: 0) + alice.simulateIncomingPacket(packet) } } - - // Create packet with TTL=0 - let message = TestHelpers.createTestMessage(content: "Zero TTL message") - if let payload = message.toBinaryPayload() { - let packet = TestHelpers.createTestPacket(payload: payload, ttl: 0) - alice.simulateIncomingPacket(packet) - } - - wait(for: [expectation], timeout: TestConstants.shortTimeout) } // MARK: - Duplicate Detection Tests - func testDuplicateMessagePrevention() { - simulateConnection(alice, bob) + @Test func duplicateMessagePrevention() async { + alice.simulateConnection(with: bob) var messageCount = 0 - let expectation = XCTestExpectation(description: "Only one message received") - bob.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 { - messageCount += 1 - if messageCount == 1 { - // Send duplicate after small delay - DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { - self.alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil, messageID: message.id) + await confirmation("Only one message received") { receiveMessage in + bob.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 { + receiveMessage() + messageCount += 1 + if messageCount == 1 { + // Send duplicate after small delay + alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil, messageID: message.id) + } else { + Issue.record("Duplicate message was not filtered") } - } else { - XCTFail("Duplicate message was not filtered") } } + + // Send original message + alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) } + } + + @Test func duplicateContentAsNewMessageNotPrevented() async { + alice.simulateConnection(with: bob) - // Send original message - alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) + var messageCount = 0 - // Wait to ensure duplicate would have been received - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - XCTAssertEqual(messageCount, 1) - expectation.fulfill() + await confirmation("Only one message received", expectedCount: 2) { receiveMessage in + bob.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 { + receiveMessage() + messageCount += 1 + if messageCount == 1 { + // Send the same content as a new message + alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) + } + } + } + + // Send original message + alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) } - - wait(for: [expectation], timeout: TestConstants.defaultTimeout) } // MARK: - Mention Tests - func testMessageWithMentions() { - simulateConnection(alice, bob) - simulateConnection(alice, charlie) - - let expectation = XCTestExpectation(description: "Mentioned users receive notification") + @Test func messageWithMentions() async { + alice.simulateConnection(with: bob) + alice.simulateConnection(with: charlie) var mentionedUsers: Set = [] - bob.messageDeliveryHandler = { message in - if let mentions = message.mentions, mentions.contains(TestConstants.testNickname2) { - mentionedUsers.insert(TestConstants.testNickname2) + await confirmation("Mentioned users receive notification", expectedCount: 2) { receiveMention in + bob.messageDeliveryHandler = { message in + if message.mentions?.contains(TestConstants.testNickname2) == true { + mentionedUsers.insert(TestConstants.testNickname2) + receiveMention() + } } - } - - charlie.messageDeliveryHandler = { message in - if let mentions = message.mentions, mentions.contains(TestConstants.testNickname3) { - mentionedUsers.insert(TestConstants.testNickname3) + + charlie.messageDeliveryHandler = { message in + if message.mentions?.contains(TestConstants.testNickname3) == true { + mentionedUsers.insert(TestConstants.testNickname3) + receiveMention() + } } + + // Alice mentions Bob and Charlie + alice.sendMessage( + "Hey @\(TestConstants.testNickname2) and @\(TestConstants.testNickname3)!", + mentions: [TestConstants.testNickname2, TestConstants.testNickname3], + to: nil + ) } - // Alice mentions Bob and Charlie - alice.sendMessage( - "Hey @\(TestConstants.testNickname2) and @\(TestConstants.testNickname3)!", - mentions: [TestConstants.testNickname2, TestConstants.testNickname3], - to: nil - ) - - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - XCTAssertEqual(mentionedUsers, [TestConstants.testNickname2, TestConstants.testNickname3]) - expectation.fulfill() - } - - wait(for: [expectation], timeout: TestConstants.defaultTimeout) + #expect(mentionedUsers == [TestConstants.testNickname2, TestConstants.testNickname3]) } // MARK: - Network Topology Tests - func testMeshTopologyBroadcast() { + @Test func meshTopologyBroadcast() async { // Create mesh: Everyone connected to everyone - let nodes = [alice!, bob!, charlie!, david!] + let nodes = [alice, bob, charlie, david] for i in 0.. 0 { - node.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 { - receivedCount += 1 - if receivedCount == 3 { // Bob, Charlie, David - expectation.fulfill() + await confirmation("All nodes receive message", expectedCount: 3) { receiveMessage in + for (index, node) in nodes.enumerated() where index > 0 { + node.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 { + receiveMessage() } } } + + alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) } - - // Alice broadcasts - alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) - - wait(for: [expectation], timeout: TestConstants.defaultTimeout) } - func testPartialMeshRelay() { + @Test func partialMeshRelay() async { // Partial mesh: Alice -> Bob, Bob -> Charlie, Charlie -> David, David -> Alice - simulateConnection(alice, bob) - simulateConnection(bob, charlie) - simulateConnection(charlie, david) - simulateConnection(david, alice) + alice.simulateConnection(with: bob) + bob.simulateConnection(with: charlie) + charlie.simulateConnection(with: david) + david.simulateConnection(with: alice) // Setup relay handlers setupRelayHandler(bob, nextHops: [charlie]) setupRelayHandler(charlie, nextHops: [david]) setupRelayHandler(david, nextHops: [alice]) - let sendDelay2 = DispatchTime.now() + 0.05 - var receivedCount = 0 - let expectation = XCTestExpectation(description: "Message reaches all nodes once") - - let checkCompletion = { - if receivedCount == 3 { // Bob, Charlie, David should receive - expectation.fulfill() - } - } - - for node in [bob!, charlie!, david!] { - node.messageDeliveryHandler = { message in - if message.content == TestConstants.testMessage1 { - receivedCount += 1 - checkCompletion() + await confirmation("Message reaches all nodes once", expectedCount: 3) { receiveMessage in + for node in [bob, charlie, david] { + node.messageDeliveryHandler = { message in + if message.content == TestConstants.testMessage1 { + receiveMessage() + } } } + + alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) } - - // Alice broadcasts - DispatchQueue.main.asyncAfter(deadline: sendDelay2) { - self.alice.sendMessage(TestConstants.testMessage1, mentions: [], to: nil) - } - - wait(for: [expectation], timeout: TestConstants.defaultTimeout) } // MARK: - Performance and Stress Tests - func testHighVolumeMessaging() { - simulateConnection(alice, bob) + @Test func highVolumeMessaging() async { + alice.simulateConnection(with: bob) let messageCount = 100 - var receivedCount = 0 - let expectation = XCTestExpectation(description: "All messages received") - bob.messageDeliveryHandler = { message in - if message.sender == TestConstants.testNickname1 { - receivedCount += 1 - if receivedCount == messageCount { - expectation.fulfill() + await confirmation("All messages received", expectedCount: messageCount) { receiveMessage in + bob.messageDeliveryHandler = { message in + if message.sender == TestConstants.testNickname1 { + receiveMessage() } } - } - - // Send many messages rapidly - for i in 0.. MockBluetoothMeshService { - let service = MockBluetoothMeshService() - service.myPeerID = peerID.id - service.mockNickname = nickname - return service - } - - private func simulateConnection(_ peer1: MockBluetoothMeshService, _ peer2: MockBluetoothMeshService) { - peer1.simulateConnectedPeer(peer2.peerID) - peer2.simulateConnectedPeer(peer1.peerID) - } - - private func setupRelayHandler(_ node: MockBluetoothMeshService, nextHops: [MockBluetoothMeshService]) { + + private func setupRelayHandler(_ node: MockBLEService, nextHops: [MockBLEService]) { node.packetDeliveryHandler = { packet in // Check if should relay guard packet.ttl > 1 else { return } - + if let message = BitchatMessage(packet.payload) { // Don't relay own messages - guard message.senderPeerID != node.peerID else { return } + guard message.senderPeerID?.id != node.peerID else { return } // Create relay message let relayMessage = BitchatMessage( diff --git a/bitchatTests/Fragmentation/FragmentationTests.swift b/bitchatTests/Fragmentation/FragmentationTests.swift index ba3173b1..b3b41e7a 100644 --- a/bitchatTests/Fragmentation/FragmentationTests.swift +++ b/bitchatTests/Fragmentation/FragmentationTests.swift @@ -6,26 +6,125 @@ // For more information, see // -import XCTest +import Testing +import Foundation @testable import bitchat -final class FragmentationTests: XCTestCase { +struct FragmentationTests { - private var mockKeychain: MockKeychain! - private var mockIdentityManager: MockIdentityManager! + private let mockKeychain: MockKeychain + private let mockIdentityManager: MockIdentityManager - override func setUp() { - super.setUp() + init() { mockKeychain = MockKeychain() mockIdentityManager = MockIdentityManager(mockKeychain) } - override func tearDown() { - mockKeychain = nil - mockIdentityManager = nil - super.tearDown() + @Test("Reassembly from fragments delivers a public message") + func reassemblyFromFragmentsDeliversPublicMessage() async throws { + let ble = BLEService(keychain: mockKeychain, identityManager: mockIdentityManager) + let capture = CaptureDelegate() + ble.delegate = capture + + // Construct a big packet (3KB) from a remote sender (not our own ID) + let remoteShortID = "1122334455667788" + let original = makeLargePublicPacket(senderShortHex: remoteShortID, size: 3_000) + + // Use a small fragment size to ensure multiple pieces + let fragments = fragmentPacket(original, fragmentSize: 400) + + // Shuffle fragments to simulate out-of-order arrival + let shuffled = fragments.shuffled() + + // Inject fragments spaced out to avoid concurrent mutation inside BLEService + for (i, fragment) in shuffled.enumerated() { + let delay = UInt64(5 * i) * 1_000_000 // nanoseconds + Task { + try await Task.sleep(nanoseconds: delay) + ble._test_handlePacket(fragment, fromPeerID: remoteShortID) + } + } + + // Allow async processing + try await Task.sleep(nanoseconds: 500_000_000) // 0.5s + + #expect(capture.publicMessages.count == 1) + #expect(capture.publicMessages.first?.content.count == 3_000) } + + @Test("Duplicate fragment does not break reassembly") + func duplicateFragmentDoesNotBreakReassembly() async throws { + let ble = BLEService(keychain: mockKeychain, identityManager: mockIdentityManager) + let capture = CaptureDelegate() + ble.delegate = capture + + let remoteShortID = "A1B2C3D4E5F60708" + let original = makeLargePublicPacket(senderShortHex: remoteShortID, size: 2048) + var frags = fragmentPacket(original, fragmentSize: 300) + + // Duplicate one fragment + if let dup = frags.first { + frags.insert(dup, at: 1) + } + + for (i, fragment) in frags.enumerated() { + let delay = UInt64(5 * i) * 1_000_000 // nanoseconds + Task { + try await Task.sleep(nanoseconds: delay) + ble._test_handlePacket(fragment, fromPeerID: remoteShortID) + } + } + + // Allow async processing + try await Task.sleep(nanoseconds: 500_000_000) // 0.5s + + #expect(capture.publicMessages.count == 1) + #expect(capture.publicMessages.first?.content.count == 2048) + } + + @Test("Invalid fragment header is ignored") + func invalidFragmentHeaderIsIgnored() async throws { + let ble = BLEService(keychain: mockKeychain, identityManager: mockIdentityManager) + let capture = CaptureDelegate() + ble.delegate = capture + + let remoteShortID = "0011223344556677" + let original = makeLargePublicPacket(senderShortHex: remoteShortID, size: 1000) + let fragments = fragmentPacket(original, fragmentSize: 250) + + // Corrupt one fragment: make payload too short (header incomplete) + var corrupted = fragments + if !corrupted.isEmpty { + var p = corrupted[0] + p = BitchatPacket( + type: p.type, + senderID: p.senderID, + recipientID: p.recipientID, + timestamp: p.timestamp, + payload: Data([0x00, 0x01, 0x02]), // invalid header + signature: nil, + ttl: p.ttl + ) + corrupted[0] = p + } + + for (i, fragment) in corrupted.enumerated() { + let delay = UInt64(5 * i) * 1_000_000 // nanoseconds + Task { + try await Task.sleep(nanoseconds: delay) + ble._test_handlePacket(fragment, fromPeerID: remoteShortID) + } + } + + // Allow async processing + try await Task.sleep(nanoseconds: 500_000_000) // 0.5s + + // Should not deliver since one fragment is invalid and reassembly can't complete + #expect(capture.publicMessages.isEmpty) + } +} +extension FragmentationTests { private final class CaptureDelegate: BitchatDelegate { var publicMessages: [(peerID: String, nickname: String, content: String)] = [] func didReceiveMessage(_ message: BitchatMessage) {} @@ -88,101 +187,4 @@ final class FragmentationTests: XCTestCase { } return packets } - - func test_reassembly_from_fragments_delivers_public_message() { - let ble = BLEService(keychain: mockKeychain, identityManager: mockIdentityManager) - let capture = CaptureDelegate() - ble.delegate = capture - - // Construct a big packet (3KB) from a remote sender (not our own ID) - let remoteShortID = "1122334455667788" - let original = makeLargePublicPacket(senderShortHex: remoteShortID, size: 3_000) - // Use a small fragment size to ensure multiple pieces - let fragments = fragmentPacket(original, fragmentSize: 400) - - // Shuffle fragments to simulate out-of-order arrival - let shuffled = fragments.shuffled() - - // Inject fragments spaced out to avoid concurrent mutation inside BLEService - for (i, f) in shuffled.enumerated() { - let delay = DispatchTime.now() + .milliseconds(5 * i) - DispatchQueue.global().asyncAfter(deadline: delay) { - ble._test_handlePacket(f, fromPeerID: remoteShortID) - } - } - - // Allow async processing - let exp = expectation(description: "reassembled") - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { exp.fulfill() } - wait(for: [exp], timeout: 2.0) - - XCTAssertEqual(capture.publicMessages.count, 1) - XCTAssertEqual(capture.publicMessages.first?.content.count, 3_000) - } - - func test_duplicate_fragment_does_not_break_reassembly() { - let ble = BLEService(keychain: mockKeychain, identityManager: mockIdentityManager) - let capture = CaptureDelegate() - ble.delegate = capture - - let remoteShortID = "A1B2C3D4E5F60708" - let original = makeLargePublicPacket(senderShortHex: remoteShortID, size: 2048) - var frags = fragmentPacket(original, fragmentSize: 300) - // Duplicate one fragment - if let dup = frags.first { frags.insert(dup, at: 1) } - - for (i, f) in frags.enumerated() { - let delay = DispatchTime.now() + .milliseconds(5 * i) - DispatchQueue.global().asyncAfter(deadline: delay) { - ble._test_handlePacket(f, fromPeerID: remoteShortID) - } - } - - let exp = expectation(description: "reassembled2") - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { exp.fulfill() } - wait(for: [exp], timeout: 2.0) - - XCTAssertEqual(capture.publicMessages.count, 1) - XCTAssertEqual(capture.publicMessages.first?.content.count, 2048) - } - - func test_invalid_fragment_header_is_ignored() { - let ble = BLEService(keychain: mockKeychain, identityManager: mockIdentityManager) - let capture = CaptureDelegate() - ble.delegate = capture - - let remoteShortID = "0011223344556677" - let original = makeLargePublicPacket(senderShortHex: remoteShortID, size: 1000) - let fragments = fragmentPacket(original, fragmentSize: 250) - - // Corrupt one fragment: make payload too short (header incomplete) - var corrupted = fragments - if !corrupted.isEmpty { - var p = corrupted[0] - p = BitchatPacket( - type: p.type, - senderID: p.senderID, - recipientID: p.recipientID, - timestamp: p.timestamp, - payload: Data([0x00, 0x01, 0x02]), // invalid header - signature: nil, - ttl: p.ttl - ) - corrupted[0] = p - } - - for (i, f) in corrupted.enumerated() { - let delay = DispatchTime.now() + .milliseconds(5 * i) - DispatchQueue.global().asyncAfter(deadline: delay) { - ble._test_handlePacket(f, fromPeerID: remoteShortID) - } - } - - let exp = expectation(description: "no reassembly") - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { exp.fulfill() } - wait(for: [exp], timeout: 2.0) - - // Should not deliver since one fragment is invalid and reassembly can't complete - XCTAssertEqual(capture.publicMessages.count, 0) - } } diff --git a/bitchatTests/Mocks/MockBLEService.swift b/bitchatTests/Mocks/MockBLEService.swift index 6d564725..c84c5d2f 100644 --- a/bitchatTests/Mocks/MockBLEService.swift +++ b/bitchatTests/Mocks/MockBLEService.swift @@ -349,3 +349,18 @@ final class MockBLEService: NSObject { // Backward compatibility for older tests typealias MockSimplifiedBluetoothService = MockBLEService + +// MARK: - Helpers + +extension MockBLEService { + convenience init(peerID: PeerID, nickname: String) { + self.init() + myPeerID = peerID.id + mockNickname = nickname + } + + func simulateConnection(with otherPeer: MockBLEService) { + simulateConnectedPeer(otherPeer.myPeerID) + otherPeer.simulateConnectedPeer(myPeerID) + } +}