From bb29d4fd0cc78e028b90ea5c394d92d77b58fcce Mon Sep 17 00:00:00 2001 From: tsousa111 Date: Sun, 28 Apr 2024 22:28:32 +0100 Subject: [PATCH] [PD1] digital envelope diagram with background --- Projs/PD1/README.md | 6 +++--- .../report_content/digital-envelope-diagram.jpg | Bin 0 -> 33942 bytes 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 Projs/PD1/report_content/digital-envelope-diagram.jpg diff --git a/Projs/PD1/README.md b/Projs/PD1/README.md index 153b011..9441786 100644 --- a/Projs/PD1/README.md +++ b/Projs/PD1/README.md @@ -28,7 +28,7 @@ Esta análise de risco do sistema visa identificar as potenciais vulnerabilidade 1. **Comunicação Não Segura** - Se a comunicação entre os clientes e o servidor não foi cifrada, qualquer *man in the middle* consegue ler o conteúdo a ser transmitido. -1. **Armazenamento Inseguro de Chaves Privadas** - Se as chaves privadas dos utilizadores forem armazenadas de forma inadequada, como em arquivos desprotegidos, existe o risco de acesso não autorizado, comprometendo a segurança e autenticidade das mensagens. +1. **Armazenamento Inseguro de Chaves Privadas** - Se as chaves privadas dos utilizadores forem armazenadas de forma inadequada, como em arquivos desprotegidos, existe o risco de acesso não autorizado, comprometendo a segurança e autenticidade das mensagens. 1. **Autenticação Fraca** - Um sistema de autenticação vulnerável pode permitir que utilizadores mal-intencionados obtenham acesso não autorizado às contas dos utilizadores legítimos. @@ -177,7 +177,7 @@ Neste processo, foram geradas as chaves privadas, certificados e *keystores* nec É importante destacar que, para garantir a segurança e integridade das mensagens, implementamos um protocolo de comunicação seguro. Este protocolo utiliza tanto criptografia simétrica quanto assimétrica. As mensagens são cifradas com a chave pública do destinatário para garantir a confidencialidade, enquanto são assinadas com a chave privada do emissor para autenticidade. Dessa forma, asseguramos que as mensagens sejam protegidas contra acessos não autorizados e que sua origem possa ser verificada. -![Digital Envelope](report_content/digital-envelope-diagram.drawio.png) +![Digital Envelope](report_content/digital-envelope-diagram.jpeg) ### Networking @@ -206,4 +206,4 @@ Em relação à segurança contra ataques como *SQL Injection*, é crucial adota ### Verificações e Testes de Segurança -Para realizar testes e verificações de segurança implementamos também um *Fake Client, Server e CA*, que permitem testar a segurança do sistema em diferentes cenários, como tentativas de intercetação de dados, manipulação de mensagens, autenticação fraca e outros tipos de ataques. \ No newline at end of file +Para realizar testes e verificações de segurança implementamos também um *Fake Client, Server e CA*, que permitem testar a segurança do sistema em diferentes cenários, como tentativas de intercetação de dados, manipulação de mensagens, autenticação fraca e outros tipos de ataques. diff --git a/Projs/PD1/report_content/digital-envelope-diagram.jpg b/Projs/PD1/report_content/digital-envelope-diagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6847d5041c4fdb8995d4c42a724da331dce6caa0 GIT binary patch literal 33942 zcmd432Urt*);2z&_kdJsL5e6)L6lyENDmkYy+bGh3MwEVC{4Nof^-p) z4oXiDQEH+H5kmOJXUn_0&+fJR?eqT2cnLa_Nq*%%=iKMqXL9u6XbE7wq-&rHKp+4B z0sjC;v%m#_lH%9#>nA06P|;BRI_PL&^4kIY`G8PRQc=^;($O<8f-h)f1t`GJrl6vvrlz6-UmXTs2dLPnkDWNHO~Y<_ zlUCT5LoPC-h)(2uZ6~MMC|*?F(JzXgfs32xIIq}A@l&TI6cm+| NRr?AebckpKt!N%VA{>^%muijx7Ba8r-gRaoC-y~K@Ut1^T+JGPmH11Egf|$(whWy* z|1AeyPvEB+lql7)>A_XJ`%%F-K1=%u&`d3!OXxW32Ri};3!zmLes&tQE`Z*$dcfQ}oo46E031?KvC;`ezY&h$`cKCFA587H zmq26SOVtGpO11c`CD&a1a#!fxCe`5{+ox4e9&s^>hI+R=eZdg=G$@DTP5)cx&k=C3 zHt7S|@DZ{So_~?OO$;C0%UctR)yq22o$0(Udhz{UYWU8x7b?z7G%Ut65$f&WU=Qk- z_DGzI%gtRi@v7q8v)i=D;9imQO}1)bhF5cz>;@>9bn7@#XU!qOg8G!|BeZTu0Q3cM z^a!|!=yV{m1s?&uBar{_9PLZ;TL-+Q10%_Tkbsx%$3VYcr+qQuqQCRdW(qqLt&jXx z%@lLb;9O74#wx9koEBV1n~Cx?6d{aI5iB^Yk_OTJD|0IrMuM5 zP^#Xxs}@r)cOo(K{C)fPt^VIP*R^1&3vhx!SqdryXUy%fe=XF$`ens}r-@acwyo9Y z`=6}h)K1+f{;I{J0GQA=qkzNIc1`lwjBYCq8r#mst?C+0*}8E3vNX2kg$Z3la}ZCa zAB%5#Mc-%p!E{DAE!q(}W4s)5T{5>5&9a3RWMS6{SJb-oF1Pk@ohK&3=jGZZe(Gg^ znUy(UJKEv-_U38Av=KqKVhIyJeYP8`EoFJ(>dB$9wiN6};W0@2l7IF&#uWL}E=-Uy z@&Nj|Z147rSKpqh%T{g}R+iD7yUGK{>}1mDzOdkYE^~^ffW|O#qz0n;^0@g8=)yK7 z5`Kvowp2y?I+VZJ&tpMg+`FMdul3%L`~@mQUT*)re9x4E>)oY*j|oJJ8sGr_&@bfb zrptjc5xx6_c=j1dcFM=>E#W?*Axyh?aaWQ!8RN$`@s#P!Yd`Z@4hV@zx=EBING>U- z%Cu1v^t!oKl`3ux)g$Mb-`z+Ti_`u#aJ-)h&M$b1GNBNvMHIoqaPgbaWp{O2d`-9C zT3&Q)CeAF#_Tzc0(|I9Kx`+b5P{5c2a&RAyCetq;oFSn;(5DYzDwOlWgGQuUdCR7Y-wr6<2zze@=K`{gI(<`BMOJ?y5q&)s-&c(r|3>x zUS&uE_%n^4ias&|JgLp!Pg07DQ$8((m|wej4U&lz7(N+6ZEhNCB4@A^tN=9pu?76g z`a|9k53mK@!%2B3@T)xqR9_yQ99KrzdYipfi_z;-eu58DJ}`{ZaHs4lJOZLT$UR*9 znB5XIq>}05`{~I>?s)Q{VkhPZ5GaI(;+4CHDNu4Fj`;rWVcM^P{9`v)ycGr&no|n4 zStER$=F<$e+$kxSWa4tNEVDK7$q~>K zE)pl{z(#yBt2@3S74Q+8(9_&*7_wy(z>1MlNPhXCk7J3lYP7>0Du8k~2*5;zvo_Yr zBlQdjs$MpecvDXVc|y49K%#HKIcX}T67@Rb?2VpSOJI(OI59y~d8B9!nY!ykneAaW+?cjo`60`KHHd%yR_Eldw6;~_;hvV?Q2<0OH`^2ZD zIcjPUyKe9Gyg4bYsm4X zElL4FZ4l|(UMw%sB%kYzQ%?Pxz|K7bCBOp-R)gg1ZU5!PIpRL9A=Ym8A?s^ zBv^J;NvvF)iLHtA4zOLHKi8Cv{VKcC7H2#AvDif4gX^P6>|99ZT@%yGnWt#t$_}jE zuLFdJ0;Wc9L&Iq_mUm*OhG|_j`v^#omJXa9TyJQGyEl(Lj=hL4n|bVE&t&T>^JY%h zowAweP54C8nO28mXVLVBY5Uvyld?Z{4$$`$Z1W`vH@pqLb>4f`WgmM>e9&{1KT=Du z@ejCN#Zgh+G##c&Iu{Wk%mpn$y+ZPkCeO$U{xAky;h?8j1ihWuR3z5+Am3VHUS(NV zpQ7${vsuZdPr6yg!qwcE?Aws*u#drAU$GjNuXDrUgrV(t1WLmf>#cVA#l(#>?lS?M z+G!u8MBcevOEojhQctL8IK$K#q15JqXYbaOCz$uAVG>Z<#mIz*a)ttim-DD|ujKV2 z%v5e#J7&-$e@K>>SX*3lzO9s2LJ7Tcm_t%7vgwqK3l}D?>P#n2A^lu#YA&>KJg^*eALS^@zoOOj}GTXqF>Lf*pHKFMUd9l4e{|N-id8H4!62mJwX*W*+{Y>|geMo(5A*wOn1O zRi@x(t?GVC^{ixEKcS3{n=yjLczHWwCzYjdufHi*8B>ld?uRpbZ;ND1bo0(2A9p&P zjVOu~cAd|;wdBPAiSp%iI0MqMhZ)!OYC`cEXqnw+V~w`k5?1}WG6lP6QJs75ISz9) zI-A*ZI_**b$90E#Shqdef|ymg*j}@WGOdm3x4771Do~yzmNMYk3J>~5hxJfKSh|~J zq(nhX;jZ>48t>GwIgm^Uz2y3k;1bVci*p8L2yR~gH#Y)PrMX0@#gO+oDL8*dCDNxy z_z*>w!ZVgMf|w025z3N%6dsajnQSE%drLq=)^Nkd288XcwSR) zS}sjT1s+=V&0rFw-6o0%s-n#Pv&NA86zH9F$h>4KD*qs{I?@v8WTH73>zS}C+Mxm3WUz|TE=%{IXn;IQ) z1TfZsvG)i_JOYmWC}5d$w`|uSP#Ala+1cx;=d_^MsI~gIkrRV~Vm}7V9cgD?{%mFd zb}#)eP{?1w`Bgb* z`fUF#tlwj|rY7&Y;~Y6Jgw>Btnt)ovHGn9A+q=e1AC)h(w7W=n#wd7DS0Pg+w{-)s5@yqg>x`vQA;; zh%|@tdd$}^kPMu|M_YYDPpBvHJ8rwjflVo+ytC3uadRb!(d&!BS-ZaU8DY@`gHDFC zSxLYLI4xPk1N{o$yeYmM;QMxVJ&4z$)YJID;Y;m%z2^_zDOA)Q2&=Dw!Q~E0kL%|~ zmyZD3XGm$6=8n`m^&XZiD-*Ykv;0LK1@&El09z<10ov(sOd)5A#D5=G){Y7)cocg1MsE%-=)a^8CRl^%+L3d^gzhUh(yt`mF8I6N$4iYy?ciQ z0E3ee>SpIi#s>xsmVMv0yN>|6l{v>aZudYKckhV)7M+*3O5det8PZ+pR{h6kg=lNt zL%9;M4^K{Ofwak~4%(_VqjC&C5q8a( zj-=I?BG#NB?VU{?=UwJ%Cb)!8d)}7kV;$Hlc3))H;tJ)skooa=wkih02O*?*rrl9=t!A(Llj$@J9{$ty5 z>^f2r%KOt9vq`^lVpAaw{(WH7=1wesgDc(efV?y1N0GF1PF9a~E^2X_>rzCHKt7mI z{?9%^RfygAbyI?3V{V!{)2Ize3!gL;h&{;luASR5{rq)LJY{B%>Y6W!NhCWQIWapJD=oKddk7ffrNF%~bWdHN z?6Y}CgK7ADN_H$QPa4l_060ZC;!gRVFpfXXi3p1tNdFm`q}KGhMczxdF4oU#H+ON4clD91hp>TFQGlS=_?b9Hcec)S;w@} zjwf$q3{ZKS8PkqMNE`uOpNPKvx%JnP9Xj=6RSJjjt46NNmi4xL`FBR;wFm>Bvl^;e zpSzk{P;t0*Zvu_7y~D9*kaw;SZXE&aZQ_FQl~<$#HjRE%-1G=JD@upG*FM0Xt~)7; z4?9Kqc&yQ0-fmo4@fEvi*LPha0 zPOo8tD5E9)_}pURvN3|!!xzmIOfVE^fA&mG@_4|{=c;YrmE;VB1e^Z=m-`LG{2e{$ z#C95@9=3ycSyOm@u-N_a*1}uEuR=NcML8ixSMfq9Jir+?TY8a4yO>}}@VuCuVXQ+@z34h4wQOBx7! z0%3ZEs8&JDR2*|`9BtEHs$n}BU*j=On^79K<{>NH(^S%c;JGTq52wjxSy5Nz*40am(V@0 z4EqJo;rp_Ji;+poy;C{7VY{U+9xSul8~xmBs~L`xC!((92pJ7h-oxHS02H!u1pxWP zb)-D@*?Ks=lb2H=>hyt~vRPLuN6YznjV0v6Xqwp4m~0WLD;#H;0IGI{dUWJ3f+5R~ zT<+#IT1dr7Vz_OrJoaX?vrE(v9rgTn+mCb-D&y$QtRj`ASe)Wa+W=@0+%=5P9KX7O z#aDFCY{pEf=GkqPFW`mliaG+GO%g1R00uaDT8ox+N_M}>ffJ1{J_0rafPcI$XntT4 z{$5aZx}6@G-0i^9rbpoJ+h1tr4@HGuFT%Yz(a2^XoamPQ#N19d|Gw5Bf&#|(t0 zg2f}42ubO%s;04k5t<+hOp>#OTgycWg&9b_s-)esE)eD|C zU8}c&U33DhK|F>m=(!&kiN+oQY@VU9seOs=P5a&ra*FTvE9-kb`0uP}XNlF*$TnJr zK3MiOVcIz?-C@i(v<;KRuBHY;*^PsrS`T8qylgK#oq4FbD}RH{t^*Wv6e>_&Ow01Hwwu0bz5-lPqv+H9E$z=z}BvR#ZZXh^UMv?x0hni zd?`r+w#zB|Iy{U{5tHC??K~Lsj&aw?wh%XtU>nq9$$M?BY6EjUp9HE_x=72B1yz9i zKW_BD1H%9Ebx77yD$E*h+&^1D13GIo?iKpdOFVLdlFDm=zGdri@8W5Na$0M|&dBne@fSbQhDJ!&3nd6WY5UQ8dl* zyZ$c@3w+v4<$HY}+q#kIkBTuyRdmaHCnXBFV z;?a$08ltY~2|tdH4}9mkNYd{e=~V z&~|=?v!HCNNffWtq&7H7+E^M5(NWjjy{3w7x7%dP>nHN2Un)S>|JMC-1kU>#;NK^f zBeNVjlKL-?dAqc~YPpLQiV~F-O$pju9HVeSI$&vnSaguCC`8Xw8go zY6*&nrXCm&AI(_}e! z#Tn+`&ph?m?3?}ur>WL}=p%sg72tOS;F~nL(4&U<8ZwJ_2eAc!V{f6Pj)2FxSO*gS zESm5uczqyR9|1bDT^&S~rXv9N1pt?|7GF#|tG{b_|8zL#5zsl*d<1ZVfl(S0Td-qBk~{*U^ATj32)G34!oeA0D0(&z7N?59 zGz1a_o}D4MOq{OhQJB3${o;GccrJ^Gf#8>ro0fZzh57k?3Zaw6L|Ygm{7WejjJUK) zizIsh_W$lg1TM07`!fYAjf>V^Dq7Cqk!#6F*XCyhrM9rYSjcbG@$bbOLGvR(+2{xe zI0Bc@PvLJ1AGC}F7*-}@d9VU{?1QJWrXV3Lu37=XW+id>WI~DYf^b0&?&BN2r7VdL zRNl9%3;D-LHwlRD94-eK>SPX=M;Ec9n_%ew_znD(KlhO4qfqF=&veYsErVVl6cOKM zh#ltkIJ3UML7>U6^2ilAv+#A=cdk?DhqZ{9@sc~`CD0naZ}X4>iT+E6rfp|h8uE^S zB;SJ$W_LEwa6GH;_(aLyv#i-ZdA9G2!3~H4WXO&LC&m&QBv77B4fwrioIw4TCV$f1McHW&oR=8-Gg$d63P$WRaKQ$kL&B3)98eBl1@F=ddhpM>sk2{sKPS< zIT0$x$*^yR>MlosBN^mOC1WPEXYut|w{AX6oF?ldbi5{arnQ2A#{8mwv(!89kxYXt z1`3dIFvykt0_VkX5S%A}f%DWaa2kW)Oe_PzX#|3^#{`sE845sfvK#*bXC4U71Q48@ za1fj)AN>NSA_z`45S$Wd5S&KpAULDE5M<#9C=skAf;h`Vf;gj^S|sU!ID1M44MqVp z82YLXViIUDS4qDN#sf4Mc3U)o12mZbCMNkTJf^30OX5>R-Q3ck&+zi^EuEl=l# z%T1q8tmkiQ7qS#!;iSxAkOF+@C_{f$2!Krft8fqF3SWdZPt_mDd4+O!ImD2m(LEh( zCB2sR!x1P|aeebjj*6*Tvp3iC0&PRmwlY{}Z zQX!Kp(RLAU2`64bV{d>vlQq%N2(Lreg4@z{>XGF~(zddi|HIkV)iO_D{s@Rm2j8L> zJ<8ewUe`erp8;Kj{!Or$Pi;-~zD~B~Eukg?MnKYe~d40U+T;@6M zJTHVc9sxHyW^=n>jm?JbQLg>9 z_V@iEdN+tDi<7oMuo^E(YA9R3P$@7U`JAucaTg4>fzE`>^Tw76kVkO0DhXI-H?F4F z)~baLR8-{KUcBB}R0B(jiMI|$C}1Cpu|s=;rzh1BxBz%4GomlFYN!Gn#P=R1&DuO* zTU~4kLxZHfWDkA4aBQ?qqwMsXhOtV=#(2$E5fl0CBw+S8xo$;M3Oyi2$URKn$B?rO zv}n7~KgAv~9|5)KD@VYX`xnZJe=h5>T*dW+8+{!8p`-i=_^NOhK#3m#nbu2-2i!Z` zhbPk_R9pTpBxo|@#p4y3@7PVi>%s@iK4^^_E9X9&(LXQ^Q8N|5)MaVGl6KLwXfMpi zCtHil!6Zo-KT?v+7E)Yr;InL$w;<^xl5kfooo3pD%2|*vTy2DQt7apTP-A)c814q6 zLEW6*d7*GfX{@BJ(7X@V2kz%8X?!(jrw zlXnTwWIqB1r0@uEL4(OzdRhYZzrX1h_3Mk;zSIXUp+0{y_ZJg4SajdDt`izf>7o&$*_Fvz@+B|nlX z2i;+m9U43%2cDTGKazE)TzmF=Ot4V)g`dU`r;r(l^*w@Y1eW}&uerQ5CBkjvTbVd+ zNrcc10s7-qth#=5orTQCF-HLCt@(a=>xZDX9vz{z{KZ!w-zVvbadq>hZMNhpwXUY7k?!3DMGaPC-l3I2{!RH1OBtsuvbA?tM8FKZ*CCO& zAEO9LQ4|H|qs`l=+YC{8aV^ccyR{!YIzB%ARN{!WQqS}}>*Q4F`|M4Z(m69op9icF z-tWMQV{a(7(d-@S+R&Wg1H?!LU97CG^Lx!Hw4$Y^ zf!>WG{3z(NMbNnKUFT~X*;WU$9J=a3G|O5p&0CB55U!9P=LsJhD&(*m#b#KjT!kCJ z4>~JMS_gYTO>}N}2+c8`=IzA#_YOd5^3-M&>{cUnP3D`jG5B3PBa`3|-CznZl+m?+KCHJ#ScV z;6qJlKL?X!K`<{K9&4>3ovb_p`apPJhvBU|_Qir7h(=({P6fi457j4?0=jbn>lmK=$+T>1T-MORtAs#>Y2o zJa7`<82zp#;PT6d(mo(2?}iffaIgFh9H!b71HP@*mF$<6@b+#t6+C?tc}-*G?p5i= zaqo*}uBihIg`YqiLUC>zt0lx$%9iH^N ztPR~(#aaSfGDm_W&myGq&PvDywtIetOM^hcvN9L76#@>GGfFMpNwpu#Y2b#NsZM}D>H#2Vl*8x9+bYMTo|Su00C z|6=y;BJuEh_;CHhb_XzuUH%THO8=vJLH^htSfbEvjbH`34#r&5=rJ|6;J$NjIR}w# zUlQe>P7(U~JnJ2T7VMeApEeK$em=Evdws)UT=Np#NAebXBl4~b)$n%t&?pQjV~FhV=|Pm)glvR({GC&Bn% ziw3>tn8zuA2*x?l`p%AB*{_THMgl-!z^`HO*YrXYLfyJ*C_S&MPwrG1nl+7IX1KMp zk}&uF`{ne<;txfAKeZ(fsz%89Yw@dwkE?RVl?H-=>^Mo4P!Q8N=n>#zFMlnq%i8C} z#E(-AUu1+c$JX3=6<*w@ihjpZ@xD8qj@BWVfWh81!r4kI_Y1-%8`1Pua}H}WI%&1; zdrh@nB^~*Em)ea*j^BM8rTf`*2rz_!64I(wJ$|ykN0w=3y}9?8fUvjY#Px<$CV#pf z;q&jv*G4tD;Zh0RCnAM-+W8NQHR+MLolRuTc${0@Mu6d~E30}@TStIpW0Z;vHoMq8 zJ0;&xX?_hdC{paibc*s>8(}Xp;LBF>}MZtXMYg>$J2|DFdC%jM)7fezq&=J%d6Q z;!bteMll2CL^pzXmjkytTPf;1Ub9SK7gN#wxl{N}%3J?9y$|m=C!!cug;GptP5-zV zqpA+P$(@?e!{^dFuR`H$23Yj*FD8mrk1CtUDF0b58KFlSZ!cBU%hjb{YYp4LMQC1y z;SFkLvbD?)tDgg}DV9x_j{sp43NVa;#tViowPDh|2{ds9Ok%%wfWa&6J7{r=FtQ4m z`l=#+g~H-CkUge?TsX~yI#rTPw@Og%nVC#MABTGkraEXfrVog6)!NzF37)y=ihZkV zyw}t`GD7<`K9ax^uQ)YUbm+z@p?qgnFJU<*vvU;bK>zxP-F zxs5?SJ2VtT{uoY#(F8716aD(US`T%-)ul}4ldYLN!l*K{b37aO7u#Wt(PmSkclYU>x6BWN~m;eNtS8jQX~Cox3G4$>yu?+DYUV z6Wejt?o%uR!tQUIw3mehj5;>C@dvigZ95nihI|!5-=~(^&8*D?6_pGhTeFm8ZtFU| z8Ix9%bGE6I{jSJ6ljC;ZKmTyJLeU`C)&7cn~#P22$EqAL#j3yLY2N^eQ7P_1``!Yfk9j9ZY8!Y|qT@1>+ z)FUCf$)_UXuEGJyUPjMkVdG=fp%ujLORcY_KaVw344F5~N~>;GQw2?*A2YvyQEKX) zjI!>WG8l5eiN2_(^FWg%V}V%+h=YF z{!EI0Is{k^7a3PoEnW-7~qS|KG*)@i*ZhU&8WJ8gc zQgsr~OsHEiAIoq7Q*bUBcq2(75SC)2I6C>*LGE0@p_$z12hn3vkdG~XTN zp0O(=0h+nb?|hZ={xm6F*xcrxQGKHM-Vldhy0V1+o7f5dh+dA2=!O7*>(pPF%zwv! z{(9FRO$PtTK>k)A`R}Vx|21a+c51(0C2(*QX|2T{iSZXF6qqlnG)!!|)E78;BV;a~ z`k;|U|2aav`^w>ijfRJsvzNfGJCa#*Lw&6DQlh%vw|?GJ=B5Yj5#U?&{~HzmkBYba zS8DLH7PZ7_ta1Epk_#~>Uxas5C*=DoMx)mKqtQ}aw&#_Cb$mQ5$`=L1lGEkP&o zO%1$j$aN?aGTDR>lh6w#39Ab1zT)xiyegd{*Ha?c`T(-X0U-o69;g$&EDl?x&>oTa ze4Ii!W1?k`au5ukXdhCKOp;HS9iY^_zP*#VD&;)adfN}s9L4NDBFa-erA;L1lp{6u zZbXxhZL%C_r@UM`m9x+D*wNUiT6;4O*jeX05HNc$pm+II)E4M)(}$^|^gmr4&CV6V z_-e8LtJ?qX=-9vCst`nCyYxD5f8usHABl79mby01=xmgiYU)mPo@UggPhvf_QR8;$ z;3Hf34?=J7Pc3fH?JR!$-o4-W>ADbc@YxVS(k`{9R=|~t*FGz)zCI4&9(K0}EeW4L;mijL>D3hp2&++&u?v22 z*&^#En6n)7ymeJ~;+9MB=novXnDk0IP24BI&}Ja#^-1OX7vv&Bv;UE-{`=MW2X_0X z8$x7zYB-QteVUTSQE+C&YHdp<$4i1+f^-42@ayoy+VgX`{Ur)v0Y{^8!3QULG;35jv>{05qLeEIcaa&v};fE z7=e0l<;SMV*_PA!DT}sIRK=A~n{G~-MEqYo1wosSjNZ*Ye26;zOeqnEz`&saRl3UG zJ~gxv6z^WuT}Vq6k|aiI31H&Xov<)Ik5vo2TT(!3Xpd62{}TtDK-ODse9MmV(c=n` z+TZ61zgCieu?NlX0oLi-pq0o)v!Y&lXQi)Pm;hN_KIof8XlyLMBYK zCiO%cU6un4MxQXrfwe9i%H3Qa&aSSBgLXi1vWvTYjpvG=ZVQ)4q1m}bfya))0A zc60h%>U~(q_JZpZfb!51aOieO>R{7^5+6;2gowG#{;4}}Y01-5neT&iay{M{Tvcj>mwDwe%kPo2X$G4i-j>mb;GtqI~o( zRf93qA&DegHOFVf-IHfdT8q2DS@p^9g^8AQtmv|+|JEr=i@z&NL&b?NI`Ek!L!vo; zvv1ua@JcgOX++)%Q9yFB!>I)gHAy}s z70zUmVk4%HD_pFt?t4J;s<%o&eo3tQoIR%DC+_0=Maj3K1&dBp6p@F|+l9O=cK5eq z+8CvKtK#EH8kLJ*O^^;26RQ)Y6W)%kd33T>xf@g0ugRaBdH}!olS;QZ1egS$;uBde zMm8Jc)rgpG)w10qAO+>ZF}>GfKef&%ptP@O^;kO~_>sJE;NZlAxsNvD9v!H$F7 ztMy$r0pUyz^nL9-`09*mFSnjx?#%X*=}f!NJk<++Q=P(%t_K$v!av_G)iRra{7?i! z;9ZJf;^u{O=yiy9SDMwSm?746X^zgWJ+HloeqB?gNUvE}aCzh(dXxTzebBz`z+YYD z^$ce?Ol}L7$x!R|tvtl&$VswZROUWgIoR)-{O-a=UxX$LSf~s_cdEAYlE>l9f$(Gp zF4Tp}WVWY6C0}QJGH$1zanCsZIZszl{626E2pcm{0RYtE0U~_JCV1m1;qw7DEgnbT zm@4SS7iMde_o?V*+JfVnaKR16&yu>!Ld=7W&*dW^OV|E9PROezV?km+7L&Ad1n?ti zdzAA8TT9^B2a*`rMS=Sz{KbNgmLsCkoW_T5x4|Zz zUwsgaKh;n?#AoO&>tD?`nhu9G9X{|R7@)3$bx06o#|O1P;%$k#W8~HyetI-#z=y%$ zxNU{?#Cy_31bs?`gG*=oVmzZCC^w-QsmJqk&Nc%$h=nx^TXcK#;9*PQu4 z-_uT_p;|3UxG#n;_oVoG?jv3e0RiDOMA|Y5)a8kAQTIIc+yaiko{2z14Vg86s-WlE zOk5+0O}!$@TQ+VdEcdeB(CCR$zUUy@FBx4~H+$7S(l*c-=43Rz&9`|KsziSM+FR`P zZSI?m(JMR_AHUNKIz#gGx-fvdaq&Q@yWjY9PzTUWkqV~hX`5v=pQt8_J}W(ko4{q!v# z74?W)NLy@w*FAMT-(>`YZLjZB+qKZ*K?UBnJvLhhyE^H8x|Ax8E5j7qTE#3pOY&!h zjyD(7TXxzWgbBZ2?i}9r=6cVpN+&WYE0Tm8JAS#=cK-2Ou5Y3l_jA-Dg`+mKex_-G zQlI*xsf$gA6^f_Ql{WRTo5_YTYWhtR)lELPZoqb)o}nKYbSirN9~xY8_(wENb-QNx zkf18jrL@1pynVcPA?Ib^!K?=tj$_z+oAts5_+<%9nv~?JBcK7k@ldm|kfcZu-?e|W z+0Cq{KXEG)$Jt_>-jOTx&M&pqz)Ze@=KW{{_~=FfL9f5yILf=6bdi{ilT1Z8O!6r9 zPIOwvLd@AXs4toT426K239Y1-;Oc=Yxpz?z?Wv(`G1bmN41epbtozX02O+y{F(aZT zvwfO=z?I=zIxQr3!h{xVtwfO6jsUxHk`rh#h)rXee3`7$w>56qd8O_5_UEKV3A;7_uswWp(PjJ7vdVJ! za83j>oJ`Mr0JkQE=HssIzuHZo4PzFpFUL(8m|wF z;93-f;iU3nHx{Vv?7Nqmsd{AgoQv&z7N&}$g!^zv8Otcho=a?OTDBA7iARu$^~afu z>9(`8eIiLb6F_-VA+-tkg(?x$fYtw0dDIX3I)HX4NuSW3L14tuMpmlpRek{lZ?|!l zC)aT^6I`w`P4D}l^3nxoihLVy>yAb+6|g($9+r}5pTY+bHAqW`QMpjQd#le|V)dp@ zZL`2X?2ph^jL`Nw)J^x6-)fkLb_T;6hC7qpXM1=X3-PEaZPa=DA8HSqa95vU7V6JP zk`v$DPx){pM! z2a24ypL|a!#PL`-mehoKi}D7Bh!`B$bYl_R!PS1;8rj-2m5lGWKtQMJJ{2s!on=H# zelT2eVU=cXfTP(a?{U^QrCbQ*%6UMggU54$mjI1vyaQz-SrQzQ+W5RmkWSVFox{Dv zZD;b^$!Xih#dfrU;)A%kxdFv;XMOdAg299ccgjL=ki$lrA``bXB~aH1;;|^Ey!aFc zgNco{3;s^K4=+iZh@LroqRcGc?-Q);X`N#~7QSV4&xDT8oLKveXxR&6LwPS_csvB9 z@ioyXwx`v(UeD&NXRO!8JKK+dp$1(x!_Q|v5H3|GM>o)jl~Znk4@Y8{V4Ij3hyJ_= zsLn#7t=1?d%e0v>I#8~_mm|lGObhnMTK*3#{;H>#{>qpkbKa@{`6VL~*?+oV-SCRZsBV-dW0A zbN74QTzYSLT3N3IJ@A9(BKu_`0za*tY%tPLBFtl+tk%lkR;Tjwk*Dp*_B8tow*}E0KauvH@|buolZQg z20(3OYd#(zAhBmRg>bBYK3?^ywdF;2Q^}dW(uW^*A=;w*U)AT7t#DUxmM;Ql`_2Rr1}TCyQ{> zo~s-C;kjPYn{%_rNiQ7FZ_QrgI%h5p9P@px0O=&c!P2(%a#*k-_~2m}j#1-+eVk#c zga)E3uPH4rNi^K)Fwbz^J=0I*=i9z_K~W!GgET+_Wa)45(@6@lJRWskf&%Ra_9d3n zEnWjF>c|%jFLS1_XO>`@?k<;?X??C`3#BvL0B>6eS7P08scN0M%Cm|OZTh~O)i-^6 z@Uv;E2Eo7G#+=+(z1c@k_45G*=W|Gf7VK>JTZaa{F1m04#gD(caOy?c2GX#5Uv_5E z;FZ1dftIy4TLXFI%wg8>cXaT|&(>zry?KyosQtDs5mDfySZdwZMMlA#b4apxffvM- z$lqe>n2rz=1d?%gDI(;P38lILE|sxMiPbawMEikQ-Qj-1q-B zOTl*->P$KFmyi6H^{R6qxeroqDeIEu_h|8cuos*g&Ns2t+#Dq@nx#KgC-GR~Q~fb5 zz|Wu%`pA{&K~U>7BMA|V7Mho95*eLJ7eA&ln$q(xI;9HpVLnZS-jTw%5A zFYDwB*{ulK9U0{CN%TGWt*}@w!WRrTw-vUjt!7bIi6@r5EwxpRlM3L0iMP`>w@t>D z)QI&axz8x@7VAl1^2T%zoc*&kZDRtn)Xo(0-bOJ_|Cqn>9XlT%`$K?H$4DIKdcSCR z_xOp1vAkvT(baJ#(dswjC}SxJO|ui;(VqN3Xvan=x`K28Pg6tacNl*%rie(K?l-j! zrhHdd7sXNEm=ef$>GgQzu(CAxWk+x%Umu!Par;9DwmB}GAE}44NW~4YceXfnmRKXN zykFOwam0b-`>L~Dm_u0YfS05Vh7}qthg=IU+iN1zOO1KK~_eJAH`UTmDic87p*hdUg z3Q%q@2dc(oIIEqGhxDttmL~y0aSJO0DOF=d?P+uRU%pU2lamlAjn$L@cK^pSM2fv`UYnmvHuqW!HY}CdjheKj8-59@Osyv2-(~cv@2j(i1s+`Z z$~&=0TROg()!&knTlrIyenQ6i<;augZS|2`fgS>dFP`6PtYFl4`c~B~d%ymzlNLX7 zO&6M12S3|sBeg&=xkKD+=ln7w80*E|oqupJFVZv0mpv)g zUfeDBUJ{JO4aYZ+A&0noI+)Z=Ye>4r$%4F-A_O~L>7E?0Sq!67ZuR^oGRe^pS*&Z> zxWMqXN(IBcj`Pbf+oSPFnAfnS~BU#YW%n4!S+jrxe%hC%xhxE3!@85}&HqX_!A@BsZxeDLmf z`uC1n&>Mg808rSprUWt>r&KE&+2MAO%-7hQQT1b(_nd92yspUh1s}-loltplIZQ_6 zUH`en*J|4U5&X_2Uu*@M2^lEv?i3;;BUA1C-KVCy#PPe`oWYbqiJx`;OLefRp7QZu zKII>Y!9S7)f^ob<12i#QAgu2snQ`70THB1Xh~2J6i7fZN{DB=_TFo+wbwc0c=x{d%l*O_bBvkEe9N5kd7tP1 z|Ghh?y}V!^s^^Y970L{Rjqjg7pM;B+dNnp?c%%oE&5!uGxca7FuN0^?I)siHR-RvH zUp~wR;BGBAE{<1;K-#6PFT} z*fAIVd|Zmq58_&%1nCm&7j5QehxgT96}gbvbHlkY4chKQsL}w zMdDd)`zp{yAbFA6NXG-AvnQQzpm%9K_t{?SC+O^nMbzxqPunUx*{%MV=L^#z%Fq~R zkuRGI=(9Wi9TVz%b2UQL*!~_aMEkS88h6CTvqPG!PW50mnh3?eR}3+bBvD;gDq$MY zhG5F@NL=1+l78`3Fyu0(MpAeFy@WPMqO^F`&LgVSepN&{6IuGk&OoxMp&{Z*B%e4x zx3(qY7`qvB#qZzjKljvMkFGdfJ4>Pa>xnQW97&lggCz66#f zJBn}z7I~#j$8a4C?O~HSUVCJ_b)88B^ts)Y0FC~VG(jg?7V&Fb#;VsugvZX6%RO2H!GVNTZnvYe0Xgj+@yz7sc2N?f7bbqb%Ez^8?Q~yn zi^=<}7LOv6ciTY)#Jt+sQ<-k(YM5Ih9Fz&1^-4-gl}d+dpWQpy)R=H3Qrh9LWc=ZK zZ$O|t*0R5j>`wsAw-(ecAa>eK&f~QF)wkrIL$9rxSq-|0D`9Cb709t+S6lY~!4~-E zQ-3>xAEEP%QeQb!bvn9#fK+pL?bn@9dj{|tm1$^d{Q%mLfu-@=KY^ZU=zmv+M51tsm8 zj?i~T0NRghDaH)a_?rTV?@#NAUpNY|{sd?lWoyYO`rr>xROjafpsx43YxK7ZaQNFy zwm!8qGm<8NKWYnO$!Tb7dZZ5^*=7XtHzGi`Q;}S=$BwtAvkcIGN=|Kw&fkUWYiJxv zwBJP5bv>P*RlJ<3qEPA>kke%KjKF^I81E#XKu~}@D9m2 zS3nLsScw6Q8PBl9%{_IU-yPe3cl!RtDnrx~q%l(Y{mBzO*8W)LHi+u>RVyB2#T>CZ zPyZ7ijE^0AoAR604vW*I0aC&OC?JRf`aBaxR|h&*WvL7H{SfdB0D;xxXFov8fM4|g z_Y=iN`#3|e3{_ep=*Eo+LQ@DaM|?lsus8{q=KX=R@WLHHJM9B_wi=!P2cqqNd9(nx z_A`H4#z1%Ht{h$B2Wa9p-yhwg|B-p=FLU5m?Na}Gk3BSf>H>LyC|gHd5G9?BAp%o_ zCIh>1AUhyHv^Y79Tlng`=7EQ7+_Kg$-P!rc!FHf+&NrxKLEKWbGXsW~;0*cLiMOk{ z*TzOf`uJHa>c`?qj&Sh4^6p*H?*N={-j{|bL%5##4TT`;|N+Y)AGv_13NuhUqnpjkKpe za2FN5`8LS8w# zf6zL_g{^VaFpKpMSz$7aH8#*8M1sP!#r6LnYxuV(!hfI({k>zaP;vcEf@IF94FHNM z?!9C@z7E=!dz53F$jz;-Bvr>%5zD5+#mA$a$9cjYm4Fp`=+V~JLbWD*qq{XWD9FX2 zNYebrUv%}AJb~G~cF$s@KNDouhPV=v!aCVI#72}h!)T%|o@EZ$fmfyS$ZXxW%fcBO zSGI?4EG#5|?py-AETYT5ohxO+zZnk~bqOf52W$b2r9wy_-8aj^ksCa9y*C!bO+YtB zd?+=9wfbrQbZ34z6!LOsMqi4e6t11pufVsjLB?`bwDRJ8#Ps>M3ZT!q5bAIbU5mWe z6pInBvR}(^e52(+PQ@wUq{_jCewQtiL)WOnKMa)G>Lc6m3unGbkV`1kP4T)1@dPMCh;&n;f5x zKL)hD!?h2|@5(I-0$c|#mJL;&PYQLh;>s6FE&}bG{ypMm9Drj9j-JHL7!T?UIqYme zjmHC{WzGY3?6Bx{-3XOF3Ecz(88cT59c$kl&}M<9-TN$_YcMJKSzz>n=Xh$wc=i^OWX<5MA)tFlDK)&Ka3e9Yro~K(Ktc z8(CgBQd#n>{HF3J$p<4+c%i3_9T*tueT1mT>-@yHfbY*1%zQTgq6xJ&gKU*$X89RrI@VcO+a^{>&(@(bAS(0 zb&(y#gTH#wd8k8rk_Ic%sqo&hA_*LQq~wukwl+>UW#i!|)N|8T8%~1a$8kLw$`J*_ z%UB4y$$DyK>TT2HmpvDZ0^c1g3*C|$s_IsPRHKVUm` z8yYiQLiHXn%It2rP?`bsIMb)0NczO_08x71JJ(N3-U!ca_}*>@3g$VY&9B88{8~$vTIxq2 zlAI$b=qnQg9em9crx?Y%D|1Ch=h`z&_$c4F1Kjpn1QQ-+opx(VTap3YRsTg34>RZr zHMhTmgRGz7Eulj3O~|u*F=r8EK|f;i<~vJrh-`>F)t*#};}m;wh-})6Wuu1bWywCQ zv|mU~Y%^FN4>=wC`!oB8WduC1?=@!}Lg@2SR0L*}orXX<^Pt1IAGA&x!AflJ-;IvV z92hujto0Irnf-bBLD}5btHq0Po$Qcc-lC~cz}0O=L;?%Xge8+!sR!tTj3SIz({WQn zK9AGoZ;P>CF|K0!mYAzCdK4CHjFULEVHv@))|8=E5_Km-(eC`ydHXrj8>;$g-}?zq zB3m;b9NssV+=sm!gyUa-^nwF+eKKlSLA0tj}Ou{1awgn%umNqrR1+6ewijt+jbdS%xpfc*FJI-MGG0J zn4E0zFc*rucHW5T@KFXdcE=}WrQhiYMKB(2U;P8*=Dm0_sqa4Z&h!><$-*E?yu3c+ z`q<;JqQ)V*-MQM@*yC%H;C$$(?mQdYxjD2y$vUxKm=OBaR6WCIAp)H4sH zhlImTjYsdylz9WM_!{Lws5LtdfB?_8fms4ZiA*i}s4n8O^Q6#bsmDi+ZJ7Ch7cDDBQZF4d3XWp7}cAx64|Ch+`iu8TURi=f4*Ccc!t8) z9BU(!Kx>Y%m2_!QbqUQIgGfO?4HM^}a+k*F2dNW=6jMBG1BSWib?d61(wW75%tNoF z8w0OYDkn;ZF0-3Q` zChYB`1E!J^r%^BeYa|=bP(88alc(4#n-A-3$TNOkp|j2a_Co~8vY$wa59x;5s1Jd^x9(LHW5+H`&;er;unhm@Bj!I6 zDL7^K9*=oO7pJ#N$=udCbE^U1cv@PEHOg0TlZ@S;>dq-4x(z+MnX-c4%%VZ(;nM2*MD68T?s_Kmx(Lg>N z$Qq0H90=A(y)dc8Wlwd#t$E9iym8Mp=!u=_jc26Y^XcZT$>A5zzTcOh)^(WS`HjeF)36oQfJvwc~M-ef8&HmR1|()Yy9O`jz@BV!kyPaXq?=p zvmA(dWgr(1!!0|u&bU(jZ}<>%*{Om3*5$|&r~Ylcx4+=ghH&@lM~byUv3CTe`7!05taHUH|GDHx)T3qtKI1CquFYF+pDq?iMbC7MV+ zmZcr;$J-k--5kxOEP_3_aAMx48AH)Rd7RFBfNPWR*qIaSu@r_SHwW`mmwE-Sds*L^ z&ZvrPSLLZMSBajsk&rLML5@5)Jj-sw-NeMWUGmR_;~tQJ1@^00a^~wV1lU_JMT%K+_;60EXWlF53+ja2W7r?Y5lqo#P6cDWZ%h~`syM(DsDY~3iX zh6za*qUP41U2#sLl)YDldu1I5XRJolPHplhi~~qcd&Q!VGTfDjeSC*Qzz+$zQA=Qq zj%uf12b)PD`WYQhT3ay%q}E^6GY~tqA-!7L!H@C z^?k3a+f+J6l>J&8lGd9TdDhl7yg8C(v3FTrk1IB|M)0(!w#fxyT`J3$pKp`9@mevx(*ozQTTVn0~* zQfbCIW47~d8VjnfYI$x`>q@Vzo8nC!*%0LqKS1DM{;PIQ`30*vB99dtGzFXw%n#~r zjxX}=mC}U}5w|_3P;d*By=jxW3`V?ih`qyZ6IWbrwSqXF!f9rh$AO}HErlbtzmjTb zl75}^Ge1?b{zOjN-p|RoFB|m(lq~<-tWzRato6UgkJ?at{x<8-qPBM;UL0~bV*Bv- zStoc8ODMC;jX6j$?Lx%|?`xUz`}V1ULvo;3OK{@-)+T4VDiS^o+kN5M^F$>qxl_wR zUK$h}MU(rVkW4+m69Vli?akL_ZFX60ufQ$k)%ObnE_y!May|5x34G>*Mzm}3;^4t%d!?FUGd3N>$i?OWq#i?JuRUr=SXJJRU?5Ompc z%JF?f@;zpQeTSZdmOHQ3%ysTW?UlBvyAw8JM0TD71SAb8 z>#09;%A-c!F^Zm;jo(KO9`YT)_i#}=CxGi@82?QJ?^Xk}TgS+~tjog6ez0cpLW z0yPV!+f;>WjKXWU5_!O}4M=6i*Ix^uA8KE?-qQG<#ksy`A6p`(6Xv@JUdS3_)B;Ae zTP&FEV<&r?Cb1?GaFvt4#@+VNZ=c!JbEvM4?|SJOe)N*NXne5K*irr_&zm6#QYVdj zf>0W*CGtT_oN8IUh(`9^l{eh*8y=rAej;_k9T|NO?BE_Nv~#cLzQO*GAoE>S`fx5# z&Tvm+lnd(+TeW@Oy#IT3?ahjrmaMLzZw?3e+}0DWSFm;sUeVUP`?nYRK9rKh&Z|HL znGCh&gaXeeRboVIBOFZF1z!uDiiu0ySPT+3Ra8 zIXmx!&ynmO8yg=KCfW|wTxJHD?5eJ%dj9~`ZQ@$v8rT9Lk)IS%X4qkkR*owusmQh2_xTfgmTlM1k@3$Y2ICA-~9mmZH@XtgBj-ryLXuy)?bGQ#njJ% zM$+wbm*wI+gs&ngfU$;Rkc{q-roZW+BFpE!1gxu=tbEuHOwUXVB?&)vc$jtU)lu$Q z8^%$%21R1U{I#k^QXIgYzk$_AVrYQ?bP2W6D z9&AR2oY)wt*E<<2qkRBsMd4VyS83!)Xly z&s@AlvuV?L87^@<0h@Kf` zuM&$Day`7JVyT3|}fg^Vc_8xYK1W$D^XmL>9wWZCZ#ZRoB?yE?uU;WA~ ztjE4brK2*AUwEGWMqELK{yD#tIuOQ|V5AX}%yOuGGImwpT zGEtBiWVBxYWOz78S%JlT(=${qcH|swuJpEOux}Qy3u7s=#kVRT$kj!9+^7`prJ~jr zBYfQ8nL?t0SxQ26r>c9%DW=eUAZ{q%2V+tZ*&I-7$4soQS12_-py4Y+Rb*+`c0aMG zv}P@fjj>dLJdjR+Y*}LmT;@0%%lg!k6X#tDadS4L2@Pbnsg-5_8P6ygOuTE9Xk%v?q#&_QHK z%pr1Q3&z;5a`cLt46tlhsQ9RyR-z~LkdE^?8ZT(UvUS=FqE8qVrn-^@Bd=jx2@7_b zre`NDGZx?Rr{0-y^K-v0EbeG)E5u@D#l)~LkD~=tSb#jCb!gnjul?w}sQruH+Mt4I z`+yUIavU0O@^N*hKq^=A9lvb>YA3V>O6AI9 z--Ob1fXxA+2byBrTm$@3rEyQ}`FCZrZw0}d1XZND^u+{T4=N^Zy@=-L%6gi&UkgNS zAUMa=d8Y;QPQvI51**nntKV~y1Bw^%0r~MJG7WFd&sPwkNIv|WC=-FecoWO_!D{jF zGxDXGIlrp2rY%!SRc)nO?p1B~&#Gp2y*bf7$;cF`u>}T4g9>j^*m~}CNH>$?mgcpp zymmP2?QyO*U=Lt+?u{O9y7@M9CTVi4bt^|6z5rlcVov3hRAOU75jxCavh7^09op5> zkTg{&3NG7MZ+YubVvQ;2)%ku1 z_!h2{!MDvO36Lp_;vAh;4C=_Hu`@Uk-zrbVs0)!k9!9sz_BUc$o2%gYJf0&F7hZ>! zgdA^xMs@Ok!3yCQ(W$1>k)1(;;m)|zWn|5b;xe!MeO{hBeI^&zZ`iLkw;Inh$KK{R ztaa?fy9DjiyQt6%rF0zjz{l@jdjc9bY-kRx(`u2q+9^A`pY$9inRp)28Xt5$9T8QY z!b{z6CO(daaFb_EwiF0I*^#^pR_RP!N!{x?zC~LP= ze}LMWau$zEn)NocWY>eI&@f_BbY&^kJ^+}S8~HWVk2q((w=ERYX!mjGMf>7h-S*i2 z@519Ctr4+=;xjKRp0GD|FQL-kn?YtLf2K};q23sfln^YAp6ko4FI>ZOCSqI&?OF(M zpEtfb#??j9pLegrYD;{xN?B^YLT}xqCM@L!V7?u-pn5I8X;UNa0my&$N#)N~a)uPy zB=%cqMvIwu=}vU~^KCWNNYO_oRa0++OT+U~lgJ zj$@;wBq59%xj(n;tXKXVGM5Vus}^d@w8iL`tw!P(nNv3cVz63OcZPEp9xFXc)H8#K z=g|&MHza86s-GvPJx3BhW*c`~W%Q?e5rAa}NB0dyyGaX2)5G(QBWk^?kVneOuh00# z7Y)n4EQ1sTPhnYUYFFXvkjP-6L4SAmQtzH6qeimHtEPgHn-u(6F%(Bw(T-rSV@q-S zn#&<`d1*HW@CRoJj0RwU62|b6gCCZxwk#%B8IzJ&92}~%8|mAITVDbd&WQ=i~w?gB(iB*(&cuR9hOxDVD(tQTAq zGuZIjug{v?^jsqv1Pb7@6G$c@Vy72RQX9ye19qdKU)XZRjQEQO!fH16tM$D~yylTJ zc;z_fiIZ~2HqRH{>=rrU1{x=?;F99gT(#q@$UCijbx4V{;JdOdJDCKG!)06Da zG+Ty!WrIdSyHd9qv^8NncI3sde5ciNcXDRmq9{ePGn~*sDXA%+9ra`>tb`=J+!oOm zv}jgVhOQ?+=9BW-K0wZ6OvFYaxZ2by>I2Yvb`g)xDjX3NeQ^m-H84Tk_HS{(TRsr9 zi_FPXAGuqob+KF{ZPA8{hdj`O;77NT9^gF_>a&etU$8vrWSUO-S%UowKw^WN zF<&fhZ+O+9HZ!}@aAMo8=uSCnnlR5%S3R*5F3yX4NvVA~vJDi@UQ=lI!Rb%>rMSto z3z*Miz4smGVR8(P2FBan?_87Q;z68+f3JaUnetLi`gXDcu!RP&M(wXRQq9Rpxt z$thBSM;+9@gw?W&6V39MZ%SoJzAH>!xqM)T2q4R`5RB>A#a<`&X`Zd68?huogV^^& zH*npz81G5*D!jP**7EXM$&l0De-D*%qk$!tI2osd6j>f*0o`H#N>0$v8uIm4PyE4A4rHr0|>vv4Z7gH}vD)#1laaIzP11pw;R z5pq&^nl;aTZkrg^T%JysH4YFJcW^wzDkd2g0ZOF{&hO;Pc9PXejj8gxuYZ6p z50tsmAueh?(C(ii!j6^JZ>pU4I{6#COc#=NSu_y{vc|Wnv0z1c2K6a~m#GM+oDr}w zGF{XbvDiMX{Hm#(c|&0Q%>YW&wJ@_>TkgT-qg|p}EL1rn0)pgN7B^Tiqgcm##1E*) z_^n!zs7F8&CqZodS!cy?zRCS}AIbsv7?FRp`#)g@|J!5uhj{>u=zn+gtAWN}e*Eu~ zss3`Qe--5Z+s*xz>h}MLW&U4o>)&thzum?E+An_@LPlU`E18)XjBpJ=Z8R)=K6ShG ziM*4A?vY_$$+UyK@lRiYPp)fAxDb)1_*9&P&^TNT8qvW&ubk?Fx*`kMZ!f)&Ot^Rh z>T>ec{IV*ze6M&Ha2bqc{$w`qcLd5^_vJzK@!ycmCR9tn&#hee1M~veg~2O$@(1X% zEbTB*wof+)u+jTLi26pm^s7#2#xWz;!O3#C~H4;arCSWX$lT z2xqFr8iICD8?uwWZu$eHivmE;3Vu+!b{^xd@lRG}zB zt_3<5C(;>NL~iP7^_!|xR