From 8b969aeca0d00076adb464eb95228b0dbdde6a02 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 04:40:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 04:40:44. --- .../20260509/20260509044002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509044002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509044002-Diff-Config.rsc | 8 + 3 files changed, 4647 insertions(+) create mode 100644 MikroMaster/20260509/20260509044002-Binary.backup create mode 100644 MikroMaster/20260509/20260509044002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509044002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509044002-Binary.backup b/MikroMaster/20260509/20260509044002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3662d794fb5eee2d30c917ac452b2dba0f5b5feb GIT binary patch literal 298264 zcmV+aKLEh*sF8CRjRXJ#)lm&E+%X1F?f^t&U6w@v000O80004Z`T(2&Lur`gjK8Pb z1z$y>B`Hs+590rT*`az&D*8&QJ8KNM9a5_}?yis@5Q`n;sR%Y?Dd4@DE4Z% z;H<#_&h}ZXU`V_U8*Qp^902-Ic9AzV+I&&4aGA9*`grlJ_X))o9qVsEFBL|AP>0n! z!Yg`RZSC-d&lr0x+$?hrHTLU%MD2<*wL~cirY`$!l(<5mE05NsSymB5pF>x$Rj61o zn!#GGR%(wjW86QJMwfjP-VuM%J$Bt*)Vd12h;M|EX5poXrtzwplHWpXXrj}=q!Unf zSFM3ww{r370VW^hoJGB0#*SkBT?gEUhXwIz7K31t@k8U5(MN`B zHY)<9xpLn?izFpQcDi1xQoz(W3$wt_AxHtZ7dALULy$KY{~Xwymco+7FUb;ADNjhfS&z%(pJIeNz9HZu`SNy900GiXt z+iupeN-2*I{5XAvxsc?Hn2>Xe#@-5Wp@SpfsPexl40I#5yS(-hn9`O!y27_EM_#rO zTD2B}qCLyyJ%z{5g4OiPJTY@a?<}U$Gx5TV$1Muynd$qqcz;=nSZg#n-{)QmN{%hB z$qSbJ2JrV^98nt7HoQHfODszlm0vB7B_;NTVy*B=kpm@TgBDZ#TgchZ20p3F*;@dRIatFMP8p zlHxVRxqg(b9|5|lT|C5ZmqzMbe!+1|XYQgy!lzj<12049hJ7*+lV?&kt3rX6fJQRK zSvrwSz9FE8;Xc0&nHPX}Cr_Y$qWg{8{AQZD)$<~ReeLP_RZ;o`i^THkHee3ws9j_t z@@E=b=^hZ9692+QsXF;S?WN(6y1H-GXh~6t(S$qX7ifok)keOP>dje=dw7H`OEY#J5aH4NIWUy5`Q-9!MiX?zbQbawe4f z*P9>bdpu-Z#BE22E6h)!!3YzSQ>SiA-SkZfU%jCR8-xNiETFx!qccM--TsY{6im13 zepQM$S2Y8i&k4Kal`x~%ZJSbTcM;#Ho9F32wRtQLNJEO5xB!dkdY@`U&DKTyXp;(9 zFFNS9-G=(HkTVMv3cBr690N3*|2fR8cw1{= z7X4LE`!qL~WZB-q#~xuTRF2mfHcLVVH5~9xgicryAcUoE5NT7!`w$pt8X`?K8g}p| zv^B*W2ScMbd zek<-*Z6hXQtA-H7xiPIMhl29Iej20yQcV6SoFL#$91@8MQYq9*7@_j-+lAzyjU=h- z=1r;!cC@J~ou$2AOf^m2Uw>^&ra#S%rejLVT=`4{AuZtai&2+%hxi0XY&gr z2F=0Hi6IQswp0FD)7whumO3_o9~!eF$x$FdS3jX{W{MAEgH$iwcuRf1TUob_(Z$99vM>HXCv4>>XYT#19Gw4Gj;qUy0vhw37iwzv!Zgz^8nIrqB|UMA;%Tf#YNXZFNW_oIlLL|2viDkQQ0}{G zFyegVsKjF;doh_Or?6|y6?g5#7oT<1m-a>-ftUbqMoA%NvDiEqXya>n?U?H{*eBV= z3}u93m2HYK0UjBtWwef#H7OtFR{PT~ND03<7;QTXphZKaV^dj%ze3-wYR$M-EY=zl z?&e)u#j85_A4YyLp>ngI9qA%fB9H6$Z{?Otf^Lu`KrcjgyG>16k+rRmL0dyrGgwA@6RoqsxNi1WPmjML8zU9guKUI#4Q5+ z?;a`f2M5S4EtpZ04V~RGTcL4;1>69Et8btf)gs{THC&NN?P(PqzSN7;2_^er^|*`8 zdx0F=3+peja{Xm~pl*gTAvWdBrwfg4 zIe>fBi$yB=&W^+`U568So#{Lg-jcWoj~lk>ROk+IsCm*~|I~ZU4>A7E%X^9+Gh$rL=pK8TO~2Q2GB(=X1fY%Ms*H zCj*tDt9-e2;vkYW2@a5D|ALYTDJC{RDS6qbd^jyl#AJ=@@|zk0W#cgFB{{70O5(8T zHh!@gtT>3K`LhTfcj{bNAD=)yA;5&^E=r|7Qh$pyZ1!nh;RIXf&t5&sOvK^<39=t~ z(6&l%B0UKw=-Ox$sFxGn89e(P>*RB(yN(hUV(C?W-P9JQT=*Oe^^N)js8uB}{qk4H z(&hknn!WaPrWhn8zf@)Xq=DR_B4$x7Oc)xxx;d zICa2vvPbDrZ(+sP0upuKod2dZ64?+V!mbqQopkfq1@PIab0+JnX&!Xui)-WzFjE>^ zhnYFWNUJ~hK~Du4z8aT4@U9xVV^uDP0+F2!4 z#tmh{cA)w?r|FlXGsoq;esVFsd7aH<-@MLhP)TVroBR?<+iT1-v5~Mpnzl(rRd5E^ z3i5BY1Vm1(ZZ;wicnDFARzk}dE?U`&Cp>P8shbLhjK)zdJ)EvVx1yK-Cy4w>?E+()p@KSyupNXwJ<*{oCB{U{Xj;OKv%b?!A<1TNN7?@ zKSt+1T~nEgX{(|uGs&b{2Ms(h>0mdJ4~my%HJZzdIP?WENJ} z{_TOo9DCLU3Z1i#B&5y}p)1$|ITqpW_`-yKE1h=C7mj1fm(82BZcz272X>uNLo9Mz|_t~!LwRy1O+w;Bco(_o+xf3ew-c90Hyd%%HIjIJswHbm${g&f?=7WxD#-+MVLp3{>#qXNlA z%pnKopbL=RXO3h>17s@_4GBlPiNmPh0%BGH&Nw{J94DvG4!D-QZ1+Flz z30@=Sh3og05}TN{K{E+ZRb?2uyh|ySRgK8I4l8>a?UVY?3?`~UD@>F^;N1BbJ!I|L z&`UVa!Z-ma-%dE)J^|3}!#@vDMT94!orke5=2`JO;=7GhT3&yP>Qj(E;DF$DwqWMH z807$B=StQz^nnLXl3GOfv6fN8!tS^zmHnujfd;EurBzSe{J4-_i{KFu2nz_6!MkVfFG}Ea(e# zBEvzxDASvPO*?^KLfxOn?JR1dYsb=%2K{!0|B8~nf|ATVgjmZww%Q;_LGTvkcs-Lm z?9Z5!g|)@q8V)hJmgNMt8FRRbDJrnI9*e;fJNL^F5TpvQl9Va64!5Jer?scRJe6ou zMh-GN#gA+)X&jHh)NxrBi;NB3!k$!&iFaw5&P|lk&k=H|=e&}CDRXq&jEcS;p$_1{ zC)=1-Y^n~2(x7Q{(k?Y4R<*Tp)cy!gGeKM0_}~yKEeRoyZ@Y}qN$A*pl2i_)0|A6? zi?cCHnAV&gcf*xjHfB}?<~Cu&7@Zyx``ep&NcKXU4DzmgeUuW<$)+E$;lBg8zKt!X z8A{^Kig5KegR1aFaQ&d#duZsBuHj3EMjfHfLFxx*P^V0k6OkWpjOvfGqjNzN^)tUD zl_&>~lTYS7c5rhCZhBD?u&&_E4KD^#y7_jjrnu6avD57Pm}?D$u}mqs@Jd3W zr_)sq1w3J<4M(5~}o2QTwRX-(O|f;k6%HCqGGw}8d{92&V|!a?4P6SLMD7;Gc1 zE%Ty|TG(!MTuBz0tG$Oz0r@kf17#8_dV2`$fB#f=^N#bAEuoziZNwQ}xlXjIMKmX^ z$7SbNjCqpCZ~GNe(4Ypvb=?;@)i%P9ahD$qGTmndo3+>+aCTSYtH+3H{f>9Le4rxcm!jrHo9n)iQ9`5>+zDH@bKqVq9Ag z+PX21Z1lJN!xPqG2wdV2eVVx0iZvyoqq67qb{`nd!v=teAGJ+{yi&Z%s^gBU(at4! zb*TVL_}~pg-hmT4%VB}Vwd?e+2?;>6L>)aBxlKRnAD1__Tc$hfbs6c4YefEu*nv*dE0=;_`iRW70n&(fuzR^YHagZ7-v!Gpw=jy9@e zEZPnI84=~YP9Ct_(WbetrJ!Nt|LPrrPp@62`(0)Z=HQ7Qo-%yZkQYvMg&lulIgHmE zlx`sBi+>{-Pzsk+Q=8gGglW$S`-4Nxki1uf{{ZKNFX8GQ*7b2VFIsf`&2jP*5XLuv zK&OBh02`A-gPut@JYPOdmTLZ(MYiC7rD2IqyI4u!S;dq?IS)ao-wwiI3Z@gmb2xCD zguTMcIcuOTnqdQ*r&*8c(}Od4En@S~D}pRrRwhzrf5Oplq{u|Ms|QKqMVmG`3fw#s z;)ey-9L|KIqSm?JS*cM3b>v|%U9O-^zKgWBxGo4|n3oo?vL0k&wF}A$Gu4L*aYvboEH^J#{H&I3=02KvA+ohE7pxqr02(48|^(3js zF>VCOsY&5NSz@7CdaHPx!DX@YrJBT^-nSjjs8q|K`HnWzWF<_~{!}aPT23xiBf0M~ zA0V~l#%h4hnpX~QMq6@0Q=GJvN^6HYTvbKY&ejooM+#LNE37_pKnW$}dK{NDNMKTQ8t&KqH{jnXS(HwTh@*rv zDKWIG0B>u6-KxEc+L?dbPk=xE%_pXZe4Zlne(}R==#3VepCUAF!5FM-1F!+~GoH#0 z5^ew^I99=A?=bnB!&)NE_b*?|;eAs48&Ha~@cH!M%@pBE=!Q)06Jf-~0%~H+wYeYl zFEl+~)e|av7L58{+hls-YF!2jxf3?A(V!njmPr4b1Z!{Qmx! z>Xd%s3*whqV+;Aks$X(|Q*@>${*9Xp3kP^i8`_po6)mD)pT!ILw;!cv``ZkLq9g|C z_x0FqDMJZS9giWvVo}Z5h^d6JxPvpD(z}X?@Ys+!K``Q%^N_&HS^(O9OrkLF$ssAu;`Rn_#B%NN z;FcB~o5ACB&pRPH-TV6cRG9kvSae_s=Lq{zX;wJFW6f1W*qB@Tl4TMlVKxr(UkbF_ zR@9byxaF+Ue*3S5_)xklWG= zA37%^0V3Fv{2D20ap)w|y;BrUrbo%5@9~POK#-)DRZx@s!rfK@uBE9SCstlaB!u5;qW?K8)?0=l z@*(OyT%~aSIf@&|)yGDn7Aali|46m()}A8myG|y%CY5>9j!wGFA$t@Bc(4kg2m*}- z{-;h6~i(h`yb7ur3WoEOBkPBv3Zbm&l7yvs)(w zn|&*BlXOmG&o*=b4@ARmMC5(MRebgwVi{Rsfk-ClYR;s_%w zlxzJXZ?Sfsq33i#jmRn7R4K+nl=^7yPhn^~rqp1xFYHK)IXr5dtg%zmQ$jnmxH7Pn ztd0xR-6{k_C0GUai>%l0-C~-)T7%44-sG8pYz2lH`Ue*6QOx$ufr=8N)tz@i3yILz zbk}qfER&*9^prge@J4#7qad=Q2s%#`(Ut(&?8XF8_v<5}*iqVoAG$!Cee ztsH|S%Yk#Vy-SnAP+?A=SG1Kq5CG^*H zT-sd&_J*4fh1N)^_!02!f-56k0Q-@O`dhB7OCRZHaem0_cQ0%r5u2NH(_{%0|LNotiVEZkyiyDxjjflGR1#EBELIq6_+dTh?#x-@insMG`HC=g_s z@Poi~*p@9`X#*%I-gIYl)FRb5lRxfx;~zltH^n*?u!6|~5n`E*c)%@}865%%h`b-L+1U^#V8;#lC^)*!k5TgYMww7O z=-jb3%loKJv(bti^tU=P8B>omz6l|r>FbM zA*y54fdqezSRocWg`*AjLMtigXs~`?ATr4ZOZShk1;BRkmGVmUv49o_%03yV;WD@%mj>1t$d6H>OtWV9R#03N6&!a{0u6yd3ahE|HtjGd~%u#4$dM(^Iha zpirw)Ut|ISftxzAUEHskOr70px`d1}S=*k^3^=@QuZDssL23P27Kif z4trof8kF);&gmPe+1|3^Gm-B4AAeVxWs+ty@gE>xJ;ICcDQe-8_=#&{uYUe|u`2{e zb~3Qs{2-cKLXf$4o2NqUXEh@Ld6#K%_)u$z#DdSy&1ai+$6Mkzt((uo0 zh_j}6IA;C_FK@OF>8xf{pki&meG&sGjhYO2Fc6)Brp_HsmwG%91@9}m=h|~I%s+vqD!gHz|7C6QSLj)ZQ{6yh@?e!<&Rs9Z+jObR)kv0du< zl#oU(QXjqUAwVlrh*YXi)y>ezMY4u;r{gwfJ*DE-$*^SDLKctbuQC4}!8ZAYK^9Iz zIR6O|ThpsP{&^VueTSiB*NNYw8W`pYfcpYWij;N#Pp&8D7I-laXS0(wo?AZr#s%O} z`+aOLsH!D`==5=S{cyUVMEogXZz^*esI9X%-KJPUvs-^{l_~1obkYI8sZ-B4$G@#< zeru5{;ZDfDLTWFC8t+pMi%Qo3+z?I2itS+~u`%+`+fu_2YrY-tOV6)yO;N{gJI<1M z7Ay4D>UCvR0sqRKy{xIsVnY*ffWLe*rR9f}mZ9&i#2#J(c-WN8bA+}BLfP_rEqH=S zFB88E>L6!1%S>W)Zwq;O!p@lfDQC^jsSQ4J1F^uWfzDD;b2?C79}YiSBUEaP0LeBT zKk(f`_$spMEHzL~lK@_K+iMG$hKj%1x#%J~94`DF#Ub2k&$nf{U5`K|T=Md2_$ihk$+A~8kuU(dfPSBYbb7zS>$80h zw0utqs7#PzGjPdhs%c!TnXmfKWuqJQyaOEtd=ypo!TDcP(aC&$lbzYXVW5b?-D0#8ymMlkOt{gv&~tB63AT|LQh~TP@=@Qu?6qh-~_< zC)aot_4Rz0aMK94)n6G<(+TD{jDT%Tv;2aEY#CkX^aBTO3planQjjg6aYd@wh~1v} z%?-BRr-k1&mnRcX&tgSSCj81UrxZ{a_1OErzF-K3Sn{Q=94F?6TmEw;5RXyjtqC_} za}N(6dwX|VG*Sukl?VS!!C9}dH{?!X9|^9)l|{Ky^(Y11AM-jvP80wCO6U`+2FVz| zwiZOx?H1Mah?N>E2v{C8u?*E?ZtesP8yq7F2$^`6sSZcNT!;F?<=xr4fOWMaROUed zU@fT4-E>gSmuHBGX!*<~pFD5CGeV^21#9wqfdjXm=#lCM_Day4_j8h;2mf+0JNCU# z9w!%mkDZH1jt|FbUbMPS9xk)#`FG+Rj{2*I7Q%uNVM}S{@P#iRlR|CpRu3@dH|d9_ z+smF*!}++U%(q60OrZ^~y$OND?I-ddwo-gs_Ap$BkURTBmXf-u*(`Q39C_WK6yC+u zow%{Bf!QX$xKKVQ$0le>?xg?GBDwX{ThxMYt+y^scTkMlvF7R#$A35oM~sblbq6yl zYD0&T3`Uzt>PC9q(F+EV;gfJ;qPPH%8RXK?7T(v3w!Dq9&RV6l#hl_MyG2>WZT*k& z6;=HthHZuX7t*}dH$?MIyLf~_-vn;wv5;qp6Zw39U0*JmCvY&ypLDGZylta7G$*u#^w*%y zKpBY&4=eP$(5HM(ldNqU_qN{-tG)5bNV{;ZPQ^eOxx70Bk}8RPc85 z-DK&v4%IUyW|yp0P3RBck~%x%jJ9n`=NOupX`sJz@1ai6n9q7E-~wF8h-vKWXBxZE z2?|zhVR~n7KK@5;5>m{bziQYs=ijJVNkP4Hj_GO#NI-*Uw-#0?%S1((A+8?oJor~} zWxXRRj8U3@qt92)aAtzJY-r=&Ucxb0LNd-J%+_cw80%>2Ix`Ix4HbqKo$6oH2GCvD zQd3ZCnH&axAN|Jo?=br|BD^QYfHCC{kR8YpzpwCV^iX8iHRtzpv+e_0{(m+3o-IOb z;~%zX)T+uPb9ZRFBaSyvD20hg{1I6UBBEOC%|=9@Zhn6bm2?N%3b4V_ccANIYWJd~ zZn3NVkKJS?tXIY0-xe6`ML2m@67xIU#qL&z5KWpaea6HYe=Ak#}4*a_|pK zw(&fPZ(eGLM(S-m3sql?HLnWM%k0Chg%LD@I8orQp!uvZojw}4{3l40z2UNWO8X7 z(|xkzj>*nDR+%$@1z;8q_(zd!s35N+CNUety9t7kd4E2*x4=-FO<8rpd~8&u(f3{# znZq%GcC?so#6VZdGLQ_g5e1AKzb_y#(uV&;4gXeF;^Ao%`X%`{G6APGRq!;Q)_r#qXIl=qVyE^f)Yac zE&KM@)q8ZkR{GO7(t+H7lm81yhJyqQ7trrD01#EBThIo9a~MED@BgbGY6*@u*{&`A zc{Wj;1*c>Rhf_)ma%xBI0>kuN?&hVemaTwbAu)QTn842SFfzV-mj@r|5uv@-?d#JGIone5uSCx^?;q#eE9xM@zEqBg!GZE+7a3cg? zDW5acjXnBCn;G8hC!`aCYR`L0%GOFCL!&Xy5R8EWN(LO35A8pYm-UoK#{(I2F52$;#o*#{yu#64tur@xj5cmJw`0NHC_M zx$!-9IFl*btxCh-8)(XxzkUO0sy+{oN{ITP2!1NTsDcMO``}>p)XDIO+u>ElyB+t< ziFaS*49B;_X49!H=D+!LCLJv3IhJuTptx0)+164b)q4s7OfN^T@#JY+k$F!{bbijK z2~jQ#byJ)4;2-j{}ky47+&Z8sd%+cf!h|( zHE?)*;N0nRB5`8zQNP|hm2{%=p;)tJq4%p%!%v~OL&IjkRwYKG9jBkXJbFMXYWk@` z^S8-EjL~s|Ouw$>gnWp|Top+{Jd7%ol*tPVT1Vel${-uwx>$=zOQ_ zNL8CITF|8Md&ah*s9#Er+0|BPIHm%ZQ{_s9l97xbrJ!`1TKpb|Za)vQn>+=}(J1N( z))2lG?mS0I2lG|O+)Ui8@oBMr(shgxr?X*C#+x$=xYQ|=(A*>OC1tA9NFY{U>{d(> zSy=U?B?u!Eq6S_!XaZC*evtM6L&QpFn`Zr4l()g8HIyTsl$P2n?Lw-o891d$JB-*$ zI2S>w(+j>?sccU4bk$NI!TKy>93~ZS$^Rv9ehB)Et`Y10&&(3Hy!3Lh8qGw6B!{?R zR*s70y3Qg?T$4TeRl6Qz<0;n3ww9)<1?52aoUjCc8F|W97U)t2!9%};FSQE)*l;jlw#_Fo9RnfKRilK^b21Xp8*7SAH zLdVa--haLXW<0>ha|-vtMbb;la&{x?YeIT(b$x(r`;cs_wXDkBpSm+V2fwNtM9+L# zPfs;x73U&}XfV!k)tRP6)S&9T5ow^i3e(&Seb6FBHMd72wP<ZHlF)`1=`IyF#2LMgl^!Camf~Ir=X6 zV8DfhQgzJelW5Kw$~t!1fQgYz>}8hPxYaVj6Oo77b4tBu2fz40ay{7M+U*^ru{ow~ zX!M&noprGmGHAyj&UM{9Q5Oc;hX7=))`8)paVMy#*0*OFnEXa@JJh_QHqN9QXO-h9 zK$5Be+`m9eS}u?0XVnBIG|IAEFe3_Z)Oh=^v{nij-3>V)xU_N1Eq!amsw*J}suRB8D!@Z`ns7|MwjTDvJD!+**vA z4Iu>AHtEb3gmS}acA)8go2gsTt(|+5hFedd+#T%Qf~*Kc{CffPn@3g(*%oo(50J>C zEb%|Rv5dw4eS^Diy1?>+;aca;!$NX=o6YugZz0T2+1)|hLeIsj%v4Hp|5-(YORx$_ zBh_Qu;EsoI?Pvn%pb`F+1Q$nJe%R;gwG8uPe0+#PapRICc8~B7LjXy3!(;sOh+9jS z)Ud-D6VGIoTTXJmQNNTd&o ze#pt9+sKS!?KhgUO+(dC7l+$-6Q0XQ*eZFg$O(?PLJGZ~brSG(sDE*1QM9Mb1Pl zuI5YN?Ly%IB6f6gzt`gSVoh-62ipz){Urt{9!I?!xLj7Lc*9U!cO9*ydN@p*U;y&B zg8D~}xx@#|r9iHR=8b6S(wI!sscaQTR&D}HaxN3DJ8(ATUn-dtfc^^aRM4c-^3hw{ zoJC2>*(_+8x!JvI=#fs-pfNR$5wlI*ELC_8iTp)ro%AK#ZF&lK1DUVw1f-f}f)3`E zkvic~>Vh+@Xxa4T_oiJwB}>#L-Z2F9boJ$On4cR(Zc$Tp*sm)r_yH6tg(Hj;(+BOU zt|VH5>>s&D`Kf<@d3bCuhvT*e4yQ+a*d^PHlN2_W-3S)gU=%~ugzE|)mn`I#EIE0F z{2AIMao)`Y5GxI_hQ{G1#=B5It`Dp;i%KK`t}yD7ak7f&8i5*s# z7yZ5OvERrBA6TiXU0s}@?3QTrNVdifA}La+=`9Z4Qxml_O&efVg?{oMVk`BXA&}Qf zNiGD}6dh$7$%bLNq)%J1Aijbh2Y6#MxCOiaV*GS}Ws`Dt6n zX-iuHP-o6P|6-^G94~>`BhhO^UBOP=z4dR5;(HCMS7UY+vTk<|Nj^=*lO9i7(<8@> zE&{rm9~z!vngcw|q!_ASOvMATU+t?c;wf`a%C>*}kAzQTncuU^c#`g6!OVX_vGx z_u?+?{<)C(?RlQuR`L>iCP4^2Em11!anT^QdacVTX@IzJe@2jRmVMO~o_yhFx-eA^ zwcX3G>x@r=YmDK-Z|-3ZeZHJ^fN}q=58RbubxdoNn?Zs6N~kAshH~7?+^Nf-K0rC5 zijM5-sjg-Pv%6$9lG;XLhphUo^fRJQ|5A1we|GsWVX_$jj9&A^HrL78J>ES_yZ@q; zDH_5{4-qrJE`Zflq>-csa;Tp}{w42+3M?MVdK36=OeCrIW_@bGH8Qk*Q=94HX#P1U;5%{2hWudW%G$4HwxueO9A@~7iSv# z(sA)!D$cJcwZfTrC;;LdxP8&`AR?hK_Gn1+auhkZqGxu?xx{gsnja?n%4>P@eOCsw zCGc-h_CLPdHVk^(^E2_96e@N1bce!J?rwk}aCn0lGkvM58}=t?k-f};R_t&Wtb~2} zF;dGp?5Es@IL~3PFbTN3QXitwPwRs*FEvpr%IaYyA{-dC`qsE$_b%ViVZiD62MqS5 zFp{nky{$5bZ;Bj_j(g=q(DGW-MXC#{cC>7b95xXB52;s`V2iR3EBtWKl$EIFO7x*l z823|l4|B0MJevF&s9Kg}dD=dXZONV-wu>E{b`LecHI>c0l|gIYsOKNX`yAX0Ap?~2 z6B}Y-(;Sup_REU!FcN5UaBDKR71}iv(+Am6svW2Z|gD)(^Sd|3Q;( zdtvT2S~oTpPZK+MJ^_tsH5bcl1Lj>k`@Gp*+JDL`Uv0BI2=}Lt_<%!D?-25CdTkfY zoWe&u7S3*jv#$MTGZr*Owsyj_YF~EQiBMQ#tE=aIl+qbWxY1Tc+F zI)KQI6!i<0$H0-#Eef;ZT>Obx1baNq0o~5I3MS{UX8{jIJNI}Bm1yV-cf_IK8OcpB*TyLx^6YHc;)4zS``%; z#D)4{L|P5*rPrB6K!NOR8{W1h<&a@(cU4>)baHltJ_EC`G*$T_+f}jvbls?JJu01U z38-^%pRjxDZhy~HiIJbL($?~;+qn&e-bTR&>R^wx{+Omo--oj(4QD{Q{y8^s7nxHTkLv_imwl53AP8MJg{2 z61zXd0Z=mdd=?d%%LDW9ARar;B@uTbU{>d-7$ z*K z3SXKC{5w}zml=ysdxJnaX(!;p%r7f>uUg}%jz69nxiU(=CVr-|N=_A>EF$$R$U};j z{a`J+qOnW{htefY$D@-DDj92w(S)f0J(79Kp}e@VUuEcYv-D-K5?Nk7*%(<<<@`z( zhra$5s%TzF!)OJ|UoY4CR&xQel5;{*w(s)P)6I9>~z- z*zM{x)-_<-#7z5+7#WM_nN-TG@UHJ){cJJTJ^>0ouCfq&9Ct+9BdseE;!t^RsZG9g zTlYc^PxLrCYP3zIF_qn9tBX7QK=EbYYT|gD`1wn~rhU%yaN@M$)%+3pkP_9;DtofS zN4|vYB)B>EB4#iyx7X8!LC@wUe{Rc?B|NaCeZ$*6Dza^ss_c*@!xNjYsH$r7f$4nm zVKXx)-nXtjs-zv2@M$`2qtZ^Z2csq}gZ}VC;IQ$FI_ITs6RNK*|Mgf=HAOvouTZ4$ zgrtk*nOpBH#$gOuK86A#&ZXCI9k=f5;T7%3ENFK2#HnkC)!;$%(Qy-N34U%N75pa; zamR_>JO3C4E6lJIm*LX@z}B6QC_%mjX_EH55-{Mv*M&rXot6Zmq(#@;_8T*|>=+b; zx18}UV9xjb=-{~W)sQS+0JBbG*snE6tGSH{%XrZB7vMHpVRt1Xra3ty2RG!r>#vxh zYc+Bw!Xl1lP>~y#wN@-+BJ*UQGdU{A* z%##Qi2IQr|Yj#)4tt!u-TIS@1^qe@9<9%_DiamdtD^4&ScK4MAHt{W^P!r%pJ+v$6v%fLX+YI0_W$En>z?k*h6nOiOU*e z)HuzxsJ*Z{%?{py^gpev-Lk$eP^)A3D%}=%a0PoUsloTl8Lj~!n5F~V99Yb&ky9go zQbf5tWh&aX;nq3oeAbGC*;sUyA&T^^wf$^4_GIf)-eoV-!R2;xh72R-`+6DZy`__{ zh${5N&K~pV+32Sj8gRgS2S7Q%r7s}<63r~HzgP*Z`rr&liSm4mU1ju&?GtGQ}Rq!_3D<48XseEqoM>#T`dhl&EM%a<}o2 z8E<;zn_MDg*L-+HA*5%_ev3HRg(ca?6BNlN`_?^DiF@mNmB}Mth5V)WrR}S5@w>BO z_f3VG7X%(<#C(PkeMiJYj~_gAD#~woy>*n~?oS7r?I-Z?gbf6`9nvqJUmL8@bA}k8 zY(yL0r3MPq_tHUZ_(!lU#Ds2F-@n#=hD1x>inM%Z73ZTFtaI7s1YhJ)C zQB=V14gqe=lRrwOWl7uW+w|-3{@M|-TWjMU_AXv-09&&(Sw0#C+qf#eTXkw}x2f17 z$%nu?eMGV7f{5r#5h71V+4BPaDi)G>GXM#$a{03Z5?d&@Ny)5 zTvdnj7 zWD!_sjw7@Bct_wuPvB}Am~C^b1bN)XHZf<?^2akpAGO!0gl{1qb$=zEGt^C{ z-8j~HXi4A<AAuy6-XaMQS|O{J5Aab(>cFYdilE?@Y|zxq z5$IRc1|AV&{ka?UOuCy@e6Ql$--1xGBJ81*tbeV7vCL=TW1r~k3PlSOjr4~{)odBH zhsCBn5q@k8_iOMrVfcRX=l7d@&`w?Nm$cWEr!HLQrW(nlupO z{u6}uV|08wQvcqHrp-UCwqqR`!xdopsgjNh-m|ClVk03%vTJ_aH5)D%LtPV|2x;^5H7H!NgSCu#La?abs3ulp&a`c8jvg&)~ z%heVPXv3$;-^)SgvQZL|qbF@ExunFN%)!P-d-*QR_^lH=-}VB z^7{}4gNCsu_m*62vbYZX)?tiz34jB)28 z8O5`x5cC)%g|Jvgu-HwX_9+ZiQ`Y}{qy`NWOO`Xu4wn0R$|*|@drsGzMZJL9&*D+@ z?U{upCw||a>0%KW7*Sj<$Lb2hb0}m~=n_o9_$mZqpQ!@Z<22{f;_8!d2$d7G96Sbx zTFbT0H9k?qZkIo?m#7=bwtwx|&S0<-5;&1gJUPii*GT2xJTym&LsiK+r^!4a!4H0xMh*e&g2rh~v{doOE367EBQqYk~0$WSO_k#w6PE>Ft zUHu6q#xBzJwV&J-4#{^v@OR%!0ihJbGpBT3AC4XfzCvrd9*A%dQ^n~QsIyRs`O(sr z-E+Y}(P&Vi1o2&12UTlvo)`fMHqC)U+)GvrF6XRHMxdB_tm#%cO}6NjO|5MmKwcKMv-hELT z#%{;2)|R95d$_#E>JesN-T)g_2#u4)hpe;Pb+c&uQt3-z@OEdw1`Cghc$-Vk-$S9cIJ<5FU55402l4(f^QU*<_-_oop#xC54Mu<{!Krk zc2VC5m>B*h|70)Vt6Fn^5e(xp(+GU%jOx@XvM*|hcLK}>$eg29@NPgY z4!zGgt5%wF+V+%uj?~M^S*i+Tb8o}M=k%5t2FJN!8_y)a)^Z4vnS)f%bkFOThX}Ii zJ9aX?<0zhcr7h*XhsURjuUh0ZhqA*J%69VP1q-Y{hCigi--=#T=h_kO2%Oo@ zorEr7$ip{`lZ5QDAor}Zj|Nz*V{Kd-P*k)r96t90EQS!ursZ;fq+BCG3im0LA=yaU z>;A_w-1AFv+i)jKw@?`cMw79g5ohxMk!j_iH8&G~p?;57oPY# zsuh|JehG?W7EMdYlV2ZvuF z{$GhyP?#-sBcF?gjceMwrdF%ez!v2%-zXI(kk=D(xjO!2ms@PZz@A)+MK>v5UjWJ5 zE5snYASK9}noV9)$d$O4tMaV~iJp&cBoHPp?yGP|f4b_D@D_BiM+Ayy6=w<=&4DaVcdrF<^UNudt*tE@vHmD@#30x?*CAi%j~_kN zL(Sb1&rxg3-!LD<#fD#6jl zllMOpglF!tD9yNvadCD?SU4eri1<+oEM&>(fejn{LHZXg*L@wdTjFn8+ANq#hiu6x zEcaUH1K=-G5&l$s7$wfrX`>-Xzj9b%!VU$Qdw8oueTi`PVK-V*|LcO)#%1Ei#sP?0 zQ!3!rmxhoUkCo2ziSn2an|(CihUN`#5b(RyPJOQOJiG}@W~Jy>lZ5=^QX$s@%WnWv z?DMz}Ocuc;9+DNa6Tv@gM>|Usl!j1AQQ!NeQ41M}Ia`)iKvGPI!w9&8G}aN6(v$IB zyv`VwRkWCwt_ynlb$aSb2>b!?n240t<|AGWVZ6E}1m9%}Ho)A`jP$~1O7zi7X2?~v zM*Y6-2Gc0h79)HZf~k%%EQ0W)nY6w`O7%%qo5Jmjo1@0PO9@%+_oUNGcj@`Vd?L8jmofV=(l!7r7)WcPG{W{ zXIez0JaniVDEH9w01i?_LuA3AWac9pblsVYFJhpg1tX;?5-xa!d30gUAV8`n5r_8+ zMT5rEo#uA-dn(@+EsHFR*^&VS_O#T12$o1{jSIvLR1BAzla5ab!h z*-cpNl0c3SqJdc-o#!Vb4M1bZ88Huq^9Oj3?qL<$|10gL;h7~E_TyVx;wXUJG3Hue zJgNnR(A*o5_OmQ1st=u;T^GgX;~>(FKPi&M1YnN-uIlBzu^!YavZhgL)=H;%2|O{H z@J^zx$c&AZffuhiwvK&L8E_tJ30QN2>3;Q(=OG67Te5?UytFFyTq=nZJ;+idyT75% z+})Y=2l;ZpE3S0nlw7Yhp>wY{lpB-)+Bkh7<8j7aE-_wUkZnqM(l&>$Kq)w6tm4}C zKERX*()I;ga53mfTADA~S{Qd7tZW8IAKI&VB=iE`&+K zqzF+X9<=%?3_NT{h8rt%F{O$$6pY1w%n3G4E@>?@cqia?f#s&Sc`OJN>i)douKq;% zmLkvydBMD568U;-%`e9Sm#%9aaKe3>Pt>l@xCG1KKZ+#>CFTt;=~3v63DNal6FXAF zGl$0Z?e4)c9k+A+1n{X~spB5`zFIO25Vb+NZA=MM$u{pw6Cof+=@sRCv)YXDbpe97 zi%hl+8U&VVLveCX$?CA%s9+>C0r@x_+~Ry7+qG*mU5GWb`d8D?qne{uJ|qN*l31&> z3bDNKVk$9Qo?`gQ4zZGwOX%CZK{3OpzEm@$ML!k>bzJ25vTaF9$-_IC=2^0n+_?EO14D{`ZJ>mLUx^WAZUrFZmBK@_u(Pmh zT=+AK{4#C_$I3TcwpcAPZ`-%;%$G2pc#U^Z_Pqj2|(a@ZIeU!Cr$@@2%+P%ag zGWFw_NDI|WF$gulqG2A9q{f>S)J3?9O>8)6@dJsH&wOkPHgXQZUG&j+)ieh%mW z!QMiuneMS5QMKZ)mhwI{;SWKRutKt7Yeo9-EXPz;gT$y{YQG|_u3hA_;D^5=Jljv` z#nM!b*xCWlRh9D}TA$XUl6=03C=F{ORw<*`cLwPs-AJ!^=P+-pxz4rI#9EP@U`NTW zVvJqLLHy9rIk^{C&F~1E#Nln9F@!CfzaT{dK_L0~F^(&|PnN)o0-ym8QKiv0Nm4G^ zC;S%frN67^O(g=nYCaW*l$tb|c?@dRw@dwujF-EYZm6nGMr*a@ELv0Xc*nb@nATV8 zboMb$c?cxqBP!*vBE_-&2Gt>}RnhNAH5tO`6)At&&|6+;-(;~O!tQ)qd1m?s>=vYH zdZ;8X+*&B}1Uu@Kl+Je6X*k)S@4hvSI2tLksDmxy z2y|saxi&Tl9k{_L4Zy)^7BV#=LGUbtcGVDog2KjV+P24dccS znOxg2nAVwG8lftXgUSGtFisyd!b4ffjq;FUsi~y^d+Aq3(|L9rG$fJv#~)#e&qk{y zA94-AuLNv7Dd}g+#NAZVpWUe_sMjX)7%`Ee_56s#?TV7Y1PDn2@Gx=r+L(|S3n*lR zi(WV}wH@ptih458JarI04bfHjOPv>mcyV z2Q{Rj%sz9VcW-lk-Y<@P`lfW!Dh^{vGkE!4$s*x3CQ4#%5r3o&8aTeEa&iihd)@iZ zU|qTr(tzS5ZhA1`ERR1`Nur!MKgzp4`4&1?^A%{zScS0qRk-`nlS&HwI7>Td2qrrQ!KLL5mR^?J{lyckSh zYmSZa`y&0UeN#qc^wh^wbbJo6uO+ z)gd=hYR39dK3KT#oA#Tr2Pj%zPemLZHEo5Z zO6FewXP4VPb8Nk#uw^5B<4IhLl{>yuYmWu+;4YyVXSo+?^e?%n$OL8&02(;{0{cB9 z+~A+@&0`u{)%v)l0;9ugCSM}cXh3^UI=;R064QUmOeD#+2vP0F~CU%k68(oorw87Cb%dq|gVkqV{czOSI*Axj<$|1OJ66n&D4 z(l4N;Yv2SwAjoo;5)PfUIT3Fx?m>6thR7%4gc%V+I6i@@cCMZQKN1PQ?@ji&ZHD%V z$aR+K%FS5hh_t+H$vPE513titOhAQWHn5^WjUsDih={@&?VA*i*-(y)UV^BL$`XOS z9-lG=pbFzw&NaIKQvUkDkOkRlLpUiNCXGG`d#skYhc}f$Z*Z=`4&C{p8ODTD3d`pd zQ)BOSGv@?*nPP=+s+txkvpD(J*z23gS^9qVH(UYTL*&RbZZ*#nXsVVoOQhpD=Ofr9 zleOv;gt_8>2gmLNHr2rR4qOW4cna+;K9idx0Yd)4pOdPil)DbQjON#Qv*D2{?%AHF z!Nj zZ+(#mTM|;6UaUlSv}7fq(!NHxO^>E=S6diIS>&r-P#MhVL2 z-Y?91UIs12=sR53?_|h-6IZZjrDdVd8sAj>cvR|8F=6LSV$=MEjdbyJanhSUTn>*y zFKfDaza$y~pk^W_M=m_`beAQo6b(hrq8`$OZ0W=C1y!kHxumi6RT}TrZ~n24tTc&d1XHiRUty5O`qC{N2ZC6`NlmSd`^S&$GeN8sd z`%fsQg(<_}AOGxw;xr(1?ZR%{j)HS2^ITdiRJ`~n@Kp8Rp37jco*?`G$M1x>g{pr; zw7oxZygADRI(yI2jrvI3ZP@k3?T$QlRtzKkA^Bsn4rj{a^)}?4LiK2t*e=@c$VjKH zS!|@MP2HzRk~dl_ypfd$e~~5dMy84)^@l{$o@k8F0k0~nICo{!e7!4nHY<3yid9R} zvNo;~&dt$l8sXPvUnFBaOs4?rLKp;ZE&^BV{$u2;^sq>$ZJKP!n>M@9Qh_$}%UX5? zU33)iN#k}^5EmfC`CTO1M&0U!3m6ryeE-iAJ?6xN>@7tF@F9T`?82kYp{bAkYz4C0b>!Fd8Y6}UO zI<7O4`6k<2q}3bp6)1ufW8YW8F#cqf6}@uUchGR(Zgjf^yUeYG3B}=DjE~CFzmW@!&FC050VgdxpBZT+)F{%EAT*B)UmEesWJ`20rdiT0W;!|YNzeP~8VCMg8< zqZ^4WM|9ho}=nkKB8N5P5L=|N=h4WS`N7XZ4UI-9EL#6CT7Hqea!y2}1t3$SPuU*-B@8@sPt2*npyCse& z$<*Rt(2WB&|Hq|0+8MWMb0L~=@y)-GK+dH8gM_qh*^tJQ31k|m2ZxCx-ckVME2p$% zCA>I>CJ8Fnv@MHW{M!dPTlb`8-))ltuY8<4_*X&dxC=$9l5D;<<1o2(@Cx|igc!o+cBVzt=a2|c1CXyYV@AnO*ak@z;2pkB@RWG=>9 z5Uc$z>A!w9HjjLMTQWN6tpry=i1FjAy4dM>^T+V017)04F_Q~P)(EQ{-q3adQku4U zHVcutPyqiLwS@_QJ&jOxCo(xV6FP(DNe2d(;xRp4e<0c&$9_LkS0R#Hk{?y4eS@LA z(rh(v5fCE|r8|kbt@Mmc*R~gYsbH}{6iD*}+?B+1 zeeUmh$3LW%OlB1Edev53#y1u_#GT+#_um=A;(3Wfc!=Yz=7yCY5ya)$fm_AG7!-J+ zMU+D~#BW7?w2uIkLWr#zi8yOg9*AzoKeTMG<7t7 zbz((=eVi+fg=b_^7}sdE(~#jaq-{Jpt(81^K0-LDq&vwH%qh$YTVvV_8*C*y_dBV{ z+}$phfn<+4##PcNjBze#W0O_wk@`$?6|Ajo7x_t<^Be~eYg$uF=ctDh#~w6oNK4p@rKfX6=6McvH%nn zw?OM4+}V1$5C<+JM@bOG`?_%>vY0&VF35NpRr{xxWFqW#dxt##8w5Xrn#T3br$sr_ zKY|29I?wgc$X5Wy#D4A>U~CZzSFh{!BZ#AAuDJ>Tj9s!S)9;!g;i{mDKol@7KXw>} zxg{Nn6kL6`^T{BC&TR41IwAXjCI!9$PE=y2c;iaBC8d@%!XpljcF9Sk@cRQoQ)BYw zT3P}&$t)6a``l8>+>;Q|d96Ty&y@sSc&h-v|9bB2(LOwnWU-9ETR{%v1~I!|08Nk3#?&>WJ1z;EhzWseVgDe3lE=?P%OgEH5IP7>|Muz4 zz_JVM=0{@JSkAGtfRT{8JvcLiOpcvLW_-Ach<`u?Q)^FC|1)v$@gC z7SIE97YEo6jIE!-0mEA}@X)CRf$}_)ZPK=)z8V7UpN8bp*{yEYm#j5?$fHSfKsi07 zHj*1kIl2BMGhsQx+hO~w5?ILEKe7kI^n35Z{TM-qsjdaAQL$TPjEb)--OqR_wp*0} zD@*qlgA*#4Bwfzfru1;JU>ix^9k{#u8&uQ*3n2JG=)k}7)5*@1l3nRnnz8lGfFwGQ zxU#PD8&rv}<+~2q^f`5-Y!nHD1!J9}LW4KQQA3I>d4Z_UAF;c*rV|*XmgeZ{RTipk ziVXB4oV??CA$n%;v-n|ZN32z4ofX@buV_tor1!m^__<{3-EVSlRKT2}2MVBi7+Eo( zD+-~Di5Wk$KU{gBPgVTMN6F3Q%jMB5l8^YbV9#?;3}J{DB~y_s&p0){Q2jG&L}2U; zz2Vc3F3v1rIt+xZepvn=7e%2m6m&h;0`CM`LQ&!246QApr#@(b5^MYD-%-c3TN<9s zG_0tJ#WuRciNr$Z#_Ows!iTKPp4$F&L%yBZ!;{X*2MGc}_NRGPj&WfhCk9GM$bHBY zmUjeDmH}wXQO^fv&V!RLspGx;|A&`v>tylC_(c&Z^w}f+4iNyF8DI^e^J<;X27E?h z2OgGZ6*a%aSBPaRvvgwWkO$C3ec42Pn4Q8+j`bq0h$cXd*05wux_VNB)vQsjZtE}r zh2l!2gF9@hHt8&ieM%lP-27f(I6?tg`Sj;cVLyE7qswfom@`A#yhGx3ZsA`i4KvbY zh?Jujezb@2_KqWGaqAy-t9768*Lc+QEG<{*-M}b1TkMmc7I){V1*B9VJcJ>O-Rnbh zNcR95O%bGS2#yt?HK_cy;-RVF+Kt1%V1#}3ksKsuKJFhjobDP%ERguWgaB^oYc=fi zc9|V{Oxo{Uzr4XK3|2A@yX4 zG=#ZD?3IBNYwZ>SUg(R}F|X+Ej;qc7-<_fgOubWa76M{eMgxS(w%Ds_(g00*eaLo_ zh`D2dK24C411`faBbg#|87@jPNcj|bu~2=DR$`+9w#e`OJpA>jY|iLhR5u@g}OB0HozAFN@<`t&-j9?#p^D-0$C=JW`ljfjcKyK zarnL*UMeN0W#Bf>pz2>Mgjt*}u%r){(WqYo%ExB?f=3i`FiljX6-{v_xb9b?Q+BFq zyu3AoV)U^?5ONv{D|0>5OGWSNmSNP_X3uVSrKDdn7};?bc4p14}J2X*u92qR1Ves(V)is->8HDU>$n7Ey-!4~dGOC!}E zq^4uzuNDVH#sX#M^0u52e(8?C9#-D<1)WMH{!b6CC_JqRFN<@3l0tV8q5o>V9LXnS zkp+a&6wTo2V>z(k(`yn97dc7evh-J=+sSYLjReAT{+gL%PMat>Ka9EM`cN>4J_aE0 zm)-j2rR8Au-SmxFBoKDi)MOt`VE-Y{blRvl5f=hGbx z7T=?g$c(YJ(YAgL);6n!I`qEB+gtOIio8l;mQMsE;3k+e+~)p(*n?=oV;O7qff%hu!avcqPesLJ^$O7g_Qq;H9+p6A7_yL*S1Eg_DTfMhEkVzdryH9N|2G88#=68MPcg&(V-w>>dcL^Kyx-_UE`mnyo08teCMeNT zjIYqK%lP4}j~QXaf@`a>JUSW^AE4prbDwTET}k)mWJxG_)2I183YKHlZw1`tHCjp z5%Icn7Ws^aaR7LPAB&E5y%L z9jfxYor}$&T1HW!S`@I-?4Pz>n6Ylx^xC;F!huvREd;k%Ca@F|;d=NufFG$1oDe|1Oz4ULq(!byh<#y; zPeOqu2=|-D%SSqm3G^b@SRq@~Th-l1L#?^Sm06CAfa1wW+QLVA-u!h+21=D)`Y4^^ z(8K_mt3gfO4PrmG_l2e?jcR9#J_Mt+A^*bJesKc*;3VgtCW*b5J44 zxUD8)8uAC*bKlcD&K}c}IY`i{%$-{s^a@0p0%Fe2L`dMONHZ0BvEBMfCuz}xDW#Ua zFf51#qR8)rY2a0rQ^;f5i$d~wn52;@>EvIICn9`Arscs=!p*28Qv|5wJIa*p^%>Hj&kNy?mj<@ zrp8XzIU-Mo+OC#qU4a}toZkZ84^i;rZ)M8Kp_>vKRo~*CK;%k7Y(sQ{MrlW02^th~ zOPa>9RL&ZtA2!QR=!N1uR(k>t8kH$MmKY4y5roy(bj;tzW!~UzfrM$Z6@|%9;7kq% zY8=taVN_eN!34Hm^pudm@s?g}xC&+K!zMlQV#f1G%lbk$G42IJbbPCEE zW{YP20br^lNZ6BAz62LH!T`ga<*Rwr(q1?utaOWd}U?kyl5nFZhO&} zf9t%tj{zCj1c&azRdFg`%2W)?FV&Ws$bV1PdtT$c+y zB>pIF`ki+>I`Y9dd9E>sCGxzhJ>lns3M~;+M6p@cJ+y}E53tRWAPz^mK#+HM z!F0tHrd^=*&Jk&seIGOeIC{N`r%73e6JrA3JZFnUU=VwZB zwC6^)7ngWt^@qYnnkAh(519wq40|%9lScXQ#v2^HNhj<=;mpIlp@AEjU^@v4zB4vu{@?3lxq|X(Zc+L zbhFb`xCzuyV8o8F5o=VN`4D!PPOT>~Wv2g)D_V7oB8@2m8*8sW6CP@bzhV^xk!{<+ zKA584{(1j5}bk>iCCt2$&%v;JBBf~RQ=z+<)hVNS#JRZ8Y?qmoXE~})I z>(%QSgGw|56_4vF!7y}JLK@n5k`tYjMmzPoS$FHl7CqwN=Sxd9i-R2n0H+vk&qqRn z4Mg7-tilioNm2`QOjejOKo)52**!?B|DGY!R)-<5eT07EXnnFnvh?jz4Nl*w$A0&1 zZUA9%GSjv6QDnl=lr89B)fOvXv3^|2#YCbg@L-Ia0b4x@L{Om{n`aws9XG;*AWfb~ z>uS@D6Bb{sr}tc*SkB=i0favRSRM7blFIhnhffm{^%zZXWMV1-pt%FUP14jY zGR*E40OmAn5_>fWVW?rxT(G200Mv9ro)>qQatOuFEcc$SfSd$UmvyeDb7(=OwmS=& z*ieB#c!W7(C&{et>`TE1{dNi{B+h|@xusA&5sCsk-S|eR?QwkbvnlW-= zmBNZ6E5y|D@5a(H??k!J2#7CgtlcejXmI4HUYgZ15;Y=MX0(TiYwxj5=a&Fw%x7~V zTYm_OjxmLa$LYDj8ix}a)e*bdFUcV}v0+?y%W+p4jv!do{rku9vZXmX&3jKGeDp2( z$~3n-&~)M*HG!2P%>#kC^@wD-JFoAfVb6$BWeyF~BOeEVF6f@mrE40nGGvI>R)r2* zrZLX++R)Rm_%|f^Sz(C}j0@xggCa1Jk_j~oNy0=iQFN-&gSPQD^`l8x$txq}pXqq3 zt+f=aAwYdB+};;w<%6M`|KeP1=^ra3P^6maHcz_)yJEiaeKMLQ!MHTG=U>i^e=XVE zVmAh$Jb2i2MNg2TSHCit@lRcOzqtb11`J|CBZ7NJF)5er6<|8B0ysdckf->0`8sJ{ zDp{=+Zwv_%7H$px)zVVskvpSTGSe8uEANjhDeC{oXo4QlF8lL>yxnB)@2{Q_Yu+3m zhzW8TwYmjr#EY8-p}`oA(-z z9eR*gku-XVdEKa9gnCba)ORUBvnTagRH)qeid$kD__#6pj{8OGsDY$=9jL0U-yTs- zr=FPQ(7}^c>pk({I&@s2c!l@amYfT(zs>zF)R9h(1lJ9u_7HcA92DQH!v1ujtU7GP zji>FFstEBI!9hd$S|dul`k7FDYG1`*7;^wS!R#*=_=oW{ zHzV>~LsG)+`ZlHv%fV3jws;@aGhoDLXJ7ep5V~Jp+BlZ{-IiB|xL>msGLUjc5WLZ{ zuK=sa2Ems0xsZ5eK|?smQ=1J6x#{DQKe7Y(Y_OmTuLW?toOvfxUe3~yA?>;b1Au4Q z#yU6YEx`>CS`G2!?otPT1xL%XmuwiKoK^XRFtwAolxbBM5d?+Ort8fqQz|@Fd9_!1 z;im6l-Yi;gB#^0NB>X_J^>cgjTJ^|653n@|qkDar<7a1q3E~yt8c_`+cMhYZCg%D} zuXi$A&%76SRR1&}fjMt)46vZZE7p$EZkQ0=im}zIq|{;LiGizjjdJfwPU^A`H#v%s zop6afwwN?#O^i6h3Y@!9NcMH^-Fs3jEFpAOUJ)P*5W!b;ZnsA=P+KPlfZx!F0tk}7 z->oa)K?GUaYj*HN-&D}jQ>_CzSYNGV>fRgp{Gp(pfMV^Z)y%MY34_o>#?7;Md(cc9 zPPP5WJvzs_REFvI;oiAMU#D!&XRo1C+=q`R-{>QQG#7*;-rSlz1M^8zf%PYFO_)PY zNgD8+hRXW##n$y1D4))b%3|GNuoEv z#4(&HE?T>i_{P!|5Qdm6G;rIibmDA0tT7zyu2XZ;SvIbWAT=Sj6uzuU$dMsO_8ST9nEu(M?2UihmqjU|8)n!xF-VP6T zzrI!06z`&GPorx`$%v!budTQ&fLd#Hy35Dc9U1ymHSSYYM1~4ENA<~xPU4Lm4cKgr zdwQQCA21N-(n?ibDgG5~4~5JI*h#@nD53~nLPh)|0jw-kvkG%iXPwUZu;~tCiSE1M z%MLlL7KEnz4er1C>WV21YV|YNlxvqrY2gVr`Xy;LJrAxU{sxaQjmxX_Zk8Y9!?6=B z9IgoQMo*>@{d*l;uN)=zZr+qXt@^Uug4dN_zWh$$o}-LI*qX}}1}k!I0|@zqCn3Q! z3CEbh$+M}wz>itn?V>U9vShpl(R*<@;z)55%YI-TbZT{B0dv-p3^BNoJzIB8Fp=ol z_n6Yf&8BW7&SC&ZJBz1f+?@!qIXCB2M`m5jw*$b}fJDvW zQfrfTYd+hCKagbNwn05$Qi@Y&=Vj>OxWi(2oR)Dw8)6Pcka&q?R_&W>^Cg zd7`A;&^hK2izOh@)#<8vny{2r0xv7-XeLZU2P3&;m4)7yAz%Y1H z9hPGrPH=yFr^PfiKza)O+di~TvK0S9Z+Lr{r!xL&^~L-Y5?;Lmddz`$%-%r!peoG} z5-*7~14uwc*{`U^+OnPjv?sInCr9+DjRUqwh9I8F&4}r|j2sP#@lR3l8fy=sOiU4T zj?D7l0dQ~wLo6S&ufqzgqS=Cs~w;F@}d9LWnD6^xoUG~?s} z4Iwl=Sk2^X?@@*GjaLd7cqyE1A0HR;lgJZjF{lQIId@hFG`W6da`ba+oafhVt}zd2 zewPAHJ<1!%l08mDr+n+qUdH(Njaatn-(Pk5nU4a`aOQF0&`L_u{5+1&wZv&ZOKt4r zUZa)q@F@@>S=Ux{MDM(^4d?K8|0ASQ zZmAi;K5lfAN;sI-V@Mv5JGdQW{fS&#lc9*zvMJ2sy!{sttEPZ-_q1iu(jKw*l-3`p z!qa7n2J7K1qC?Ud;+wAp)7i(>Tv|1)-`?`>Z7^%lj*UdXgNx%(#_y#yboG^r52RwM ziYE&kc||c2FE!)sXiUA7l<(o{1W~}E*ze$&`{ciHCDsB762*#d&#_ttkUIbWrd8`& zOsAOnHRoLv{vB>B31uvi#~xjZY5guEa}F1SiJ~_ZtBd4dZ&~WI_;tC;d1sOtI{4-x zGf(|11e(ZAOGVA_c1pTr0vd@)FT*|CpKMhsK%@XFbuW7&vBlktB@cE-Ob&p`@a6<5`!K>vHHvbswwD))&eogJ73AqI#}3ic5uH&7?{@p%pfc7 z{dGp~Ac4bW%6KNMZnGGu+Q<|jcTpRpsWGOvSdkhlH$zL|SRA}y?|4R1vuy|k-#d+v zvjd1U_ous06M#&8HE|)(99Du!Ura|f#G?1Q>0&f0^>4megYn&YS6dx?oiSvNcE3dw zhFDRRB^FGyOSm=m@;nRB8dqpd@r4|nI8}ISOWVWXsYpn?97UN{JVpXOBUn1d(Uleh z?UH}yNp$udUdw;bwGNxX$#Zd@G&fZydb_hG8Y*S~^z{SsYyKkXMTv|X9)Ji53cxxR zqUUXP^;^1*KS+@&&2D}vd{O`^!DP5$7Jq|~xJE{?ke3Y(k*fUxBpHha1RN6hj{+5; zGcI<~mFu*nF%wP!=k8jQO_5sMWAUm^bz>MS#F%3|0iK`S1<0;vD#iXKx8}r%_|*!a z?@+96!ATzQEuP=p&fYOR__$)9g!`1B^v9Suklw4>B#W`pd4pqDNVjoAdv21mzYEUZ z_TVxn1@C>(yeL5MnF^lQxoDbc*K01V=i{)&0*dmXi2Bw|`|P|Q}oy-h(awfwu}s`v%?O!%1IgX0`dY)Em1$MaEJFSDFVi;iLC?M%TU- z+K7jPRFX2*{@oiEUmhhDVOeUap$IAesS`~DzE8y3fkr*HPL>@ex&|*3j-2?h!{d9W z>;!0ayK;6GfMdHiw%$C#EqxV%4GYt1Im>!QGLQ-x zZ>ip`MPrwxtv~hoxkCXsj|8j*s=ajr>;Kk8F_Jr@4T0K4rMxO2f;adFdNhPZ3VHOa zIIBO{|6H_4X74sU0Zsu$HP8JOPZ zn9R<@V!1K>K)2dK@8-lUEXA&Rh1Q;1ZT)q93FPZi4pZUDGxiHS`;&{n7-yf$3Jj3K zcEE@(sko8wQfM}OeYgXAb_k&1qi!%QQb3kJ6euOgcJy>bkwRF`JoIu3_ou2MXYM_t z1DsAryK)*QH0OPn>lW$9Z>}MAQ;|;rTK;L*7KQg{2O4lY1u;oN<>sJ($LleQq72}p+JiB2)sBlLzKbr>(GT$0F>VZnpfXKhRW zM_5v2eLcc=>#dzQ-u#i{h1aIEKpHF7SzsEEG@!aJbCrYw%(NFBb46a!?2lHC%p?w_IeYN@5K_?$;QveE>Rp*T`2{Wn<8$1a(+fTzaottE@UzB^9wCEDq z%c_lY#Z_9^+HE9?TcdTAtPE8_K|fs%m4C>SPhMo4`5EckMgM*7^pDcaa)F03qpvGj zq29EAWv``cBor^TUQrg^rAfLj5zl6JE`92h-=-NqWiE^%{O#ykail3w9%0p}F$ zxa@b;5Dm*$BO$7Q2LFhzn4b9^RCQ=Rq5xrn?SoK|FV145+DnQ9?EG0^U0ShJ*>2}1 zl_#x$cZK)M8jH#Pkb`E}0jj`JZ25v(8tCiRv1bG(lKJQZ+3zq1zDlFz_4V=dx*U1Mhc!ipd)pHN^YU z=YEF;Lq`bgo%I59ROpB2YbIYHH8jADWy5w%OC)p0+T)Q*1DVwj&XsC zWwDeYE`(WJT|2@S1h-?or%IPV)x;6nkp9{!yScu-7Kx9>gmD>h0#RC=Jgq%-4=aNA z1Ig5`t5n?)=Pu%LG=w(rCct+dKYx(Gy3|>0AU^2SzHR!keQZpIu}(v9);FM^Tz9@xH4c8)S9^(yI*52h>HLW72o$V%1mroYmS~X1tbu(%oZ;T44gzjJ}?*DP-c2 zGEbsCY1+2AwLocwt5%h}h9#=0WVO@|LF#H6K(Wqz_6#dh`r;v-g}%j*Dt2;qc1C(< zOQUHb&gTN@uV=dODw*6pjeF_IJ9#8Rb4>+Dsz%Ri)s2`Qm`l|+!B$UKqI2&q~Lc{W$vHPIP=J}Cc`}?W zj6|TKLJ_1G5um-Vqqo|)Wy`vSl-~cO8g@&T7;2K;&kGV2C$&w7PHE~{BTc_D4RcvE z`E%pYm>xjQe6Y4%_)z(*!lEE>v}RhYBhDh+Sx>N!i!#oQ9a~ED=d5qIzOU@pEfVqu zK6ESPv=jV`mczsB@J8TGugPz_+6Q%KNrucmZPu;iHfi`lh-D?8fVs$`xZStiP>krS z1$}t$Q%eRdOQ`s&6^FIcY1U5q02QGC=JW$oXBKJJ1jEFd71|@Z!jTB@__qI}fPRrs zv@X3as=6mmb*u7cMUr$S@1UC88-$GPAu6l+uNy#sgQlDqC_V!?9OX27Q+{3SyI%yo z6!9pEQ_@}9j4zD&lzlknJ4^2n1;t>-z)M7_!IFucCIZY3_+m3Kg|H8BK?>i>5Q~%5 zC8+Hi@GB_1$7cvIjU>UoFiGpX3=Yo-wH#tWUy6sc2*LUqotl(nQCqd-Q3(Yow_b8~ zvqfE$smZ-ry6O;CI&azmmBjOG|5g|DV{bjA2dHS?vMG=OtdeKP{+X(W1HV<8VX!!5 z-qzF|g*eNU(9O@RD+^QPz25=D!!eB+ccj=p(naLgl_%lpucJNX{Tj_`Y1h6S`r^L> z`n3IiMs>ED@0B*AE9%Q}!0!Jy<|C^&Ka?wl_VD$E$n*oEtG@n%H_B2Hpe1LQR1-0K zxWOQ$0*Eh}x^UL|ZjR?Ahw(W>v}8Mj_p%C1iE#KMbsfGqP7kIk{#C>(iN34p89q>x zkrXC(x1m{^eyD$Xwt2-CkVouRo zm85D*xJ~EiajnB||4gAEe*8qs$h;k1RjE?+?}nM$7FR7>f|V z@;qyR2ug1UMW8I?iG2MN?IpV@iql~xP1}TF^0hc zUpnPd*VMK~*DS6S5-R&Lwe+0L6K7^S@?(r#bt+CtzlOj{wpxv?ICp0ML7FhVNrNbO z=GpBF^AVKP{&YG=By3XI3bjAj^XF=N!ys6pRqt$t$`%Y|4G9^1l$XAXLwM`XFG$_% zRT-U6%3&$&H3nTJnRa<6xuFUCse7}-=+){X4EakHzd{pUJ0JnhZ=7K}ay2a$(TcHE zMNvWXH4nb;A?seHvn)3zzfwm)F}rbNgVMF<^4vM9}{nz&93?4ZpVYG#Qr zAq`oBluiv7E0jE#xJCV$`|`&^I(}`X4h3qB6pr(i&;ssqW4gXX_qoJa#H^^L;$v6Y_I{atgAB7_%Qs-#IIfuu^>4@ku9VbE08Wf%A0V|ERNKRQ ziM(w&EjgfyD*8?%c%e`^&qMv9)6n;(E;}7>lZlkYmzjI^+(AdR{`uPfLPlc~h1iJa z?+rAN@-rGQX^P?MaA4p%FIegH52QNULiY~duqG(GE)XDo_+XpbbI|z$6;1^0Yx{bM z5-qdN%;Na(`+lY(vinsgA)21oqJw&-{gzZ5PjIKq6YJ@Ly#e94OAxbiAy z`0S?bXiPkbmDw9ZM}|5(uiiwV!8|KL^`HoJUp#G;s`w!M?%-jXzPUF93=>| zrZhcVUrm-r!}^;fa`-*&@^yfZ)X%2xB^AIG`|D9?&fG%33{9WivBOWshi-TX zBz3SxY-{9{{gHwQQEq0aRa5$N1a%(@TS}_Yt_mc_`{ZTs{?nb*3m$B1uSTiR*<+yP@|C1B{j*7~AZ zOzFhnYFay9dlJbi6}sB@r+z3No~AB1B34;C#^;HcF<6SGtG_#8_dI^*2rK)cgJCPn z>!8}`FB6tYs{zMIj+&6Co!q>^RnTat9rkFXu%GhLrB-LE354JOr2K;eC_IRUio3u3 zb)+Edyah?Ds#H-Vp`%9XsB@zGZpD=73Wy)8+IrO>Z&urOG8I{t} z;$jBH3P$(AdUYA;JLqIEqtHo=R>~%J%Ps)qA+-SCiW{&fh`hv@O<4-xpbRvP^W%}nqjfCJ6q>-Qa!MMJVIL}374dHVhl+*U4PXC&Y#!t*}ionLFt4R-H51T))ewPsd_tZDH5U6P^Z@Xb(MR zMS%~}o8(g=wtJ;yy$y_fdImWdz(Vdn;JKZE-hCLXT;%!kU`01{u5vNTp^pf zv?E*M(!_+5!jYWCMzTkEjDp*s>f6?mMJuryVU-9jjYzI=6~G_OxtNAP_11RnAU=?_ ze9JffR71+7XUD-z_r3JRw9TJBsRmMKI-{p>4!eXd6SSr8+J?D-lxlckp1w^a6fGj= z5wjmPpBWf;E>p-S3@v%&b8m^VKD^VWc5>D{{u_pU(gTAl`S`t-+1a5gFDva??O>%^ zq6}`3eIQkS&WT-~;^+oaED)9HA>BPICigE)G{*xO8MyJ}`0E$(Es1dVgZ_MmbdXs{ zRB@`^r+4Il#k=a&i~+m!13w8Lmg!rpBt%K4J7a?t?o6WPR4tMhOKgWvb%EibOH8yh zI(Z$B7fqmaXN|N&!Z-om|8b_MDk^t+Q|&&o z*YRBz3ZAe%TFQHUq%7Es(U!k1vc*|3NnCqjN;wai8|s(>4C8+0qtzN}H>N+h(f(DoUp<(fyky{@zxw@hRxJNQyvF{^Trb)4ea|H~; z{vl(A)gF)M4Z`|Y-(4pDiv`{u+`FIewwB^DJ?d}}D_$Z1GltjwC8ODr02&{cI#HP< zcNG_41>o?6GM!~^L_=k6$&~A9ERD$x8nSc7*<~LKbFZ6khTp{k*l-ofj)RS@Jc2l6uH7&i%~fX63CTb9T0_A16MGebB=kNPhFBjlPUAPE*8&a!+o zG-ule?Go=KT&JrE+KwZpDLCZ5;FG7o5wm43MjAa;1Tq<|yT1HmfInLR$%W)zP=@gW~#>p)7%-jl`WwB5UVWwM~&`7n8Q?Y?3 zm1>H1fQji^c|QLs)BvCztGU^>C5}GY6N6{kE9{{i>(~2hK4RKPZ-sW!AhM79cy@l+ zHP1%9TyykHy0o{qW)0s`G(`?ahDB*7tkx%vx(XinL&4osQtKY##^FhAMOfVQWLzZ8 zD2Rp8=!-PH0|@a>QTP`^=qEB||)9YMqRqxlyiGa(*(_ z@u&r=-Iq=(is*+L=$a;!W>SyrZ2k@aSM8wk=v&HtT+JcSuu~mLrEVI4(#&MJd)+d^ z^!Z&e2GnadQLyCUidio z=d(VruwHj%d}0q&-7w|yr}}`W`X8@HbY|iIT2z}28n$XG21G;RpBC&wBZm$?!W-HI z0CJB-J}mNtUc>9fxf#+7<|HzxbMKLw)=5u{nB{_mOGfjlD}HE_w1y6$mO&OyEdCqc zCbM4DKqw{s-9oO>9L4k2XQf_eJtt-agu>2XvzJ`vqIAEx*E?1b2Y}h@lsvC|E)CkB zF-LS}`@1uH%T^p4c={Lri&_F@8D^(?-8Y1+QIjD+rio~|d&VMnqCbvrVa|zH$@gsrfGBFk8nupb~OU$;mB~8w!Z!g+|&lq+7 zSb|yYdobm0vg&@sJ&`b8QAl|lqcT?+0JxUzN!u#va1fezMLIWkQm=vbz(E9GCgvrg zs;gvk6ej+eRniPC)ca3S1X2SKe?|j)7}+oQ)n{u2P~t!-3bvJF@J%O_iMjtaZB<>A z7%Y1;AS9GADz1nrS!t8g2t7H^&VUz0Q46DCtfh{;cZ(uY-kWXF*AIUT+)M?_DGe^< z;KbBnnUUTu(=}o>_;md4vK;cy* zpi>1)nYqcW;r&Fgsx5B^NJtyn{~s3)nf2ZuWR*-cs_kCLM-AVg5@w5uSocpee$5z~ zT;nn%OpN~mMpFXb=Am?Ho%J3Fme?oEt~NpdQDO&qA~!2NDPATI@yEQ(x6#qLM0K%z zQ~FtnqmzxHb;N%Zw!pXQ_W=y?ET2_)naTbLWL+H;qTlS-7bC(3uOW~UwR<9 zzd#ZF3IQyr3<$+& z&USeR-*WzYMr%v0K~Z_QE&N9&Wlk`@+y%xRK2t2NVn5lh8U_o|Dgqih47S5f&xYGzcxHsu#{pOc3qWziQnHBmCm5#hp%Q|gb>_J(x zG)GH_1#s*Lk`Vyk{ohDNXkdUh%3ZZfbxCD}2 z3hfBT&H$9x<{JWqpH=RzDO;CQt~jLMOw!2y8ugGXr zH9Dz?NLzeIroG?Gh>s=nbNA%)e>_wDeHV5J{Hh-U*iUn)+fQ>>&5ik~Q9!?--O#Qa zSJ4fJ!M0Df>6zA}`|9CLDzBk>P%uH})&an>K%Zs#ZH{06HpJd%s`b8_Z42(+)7lA6 zcH4?aqX*sj5Qh+ghZk`jeF3MNRzZ`lgb*6OIw0O&dOOo1du`&ir%uAOsH<2;ZXT+h zoDy}2kzdSLZIm8bIdO!Q^OGoJ;SsMlB{WN;= zgzir&_mfKLdv7`FVt9i65Z1%L_lN*9Nc*SZQy|soSUNQ@#C(N=tuSk)_NE%D%xq&o zPT@Yd2wKZIyY7F=r|~HyA{HNDn2ZL-{l&ND(`+9NqhqX3Al`t19lf3>7ND{b4Knno zpY0v;$gWCS-d1-=(tLmyIC6m5p{sH64rIAqLj^hoae%DA@z)WFqzbdWBd0@&L@OkNb z2X=*$bNcu}apGLsLL-ISEtcKYZnB6YRFk+cXjWbmk_+g18fq3MVrf#I@)nlv9~Dh$ zbtBkzf?mJsFWsFLUZEBm*}16=3fRjDC&H(9_;O5|?gX*JyUipBC+#@ZHb3@-Z$Kk~ zchq_D$!)ZhprD$@e8EY~5a{nAY?11qh4yj=z^fh&Hd_HB#nR{k-k6dD>d{((PZd4S zF~uTl{Kdc)Q+apyYR+@u5&M)S9G=o0ZX23$_8h}q9b$LRZvQ{FhVu4}N zCP6sm&3jYAY%UxoIJqUHIhAwIrr>s37_IZ8eCcdos5o<-76Dxa;vY+cMP;8#}i6(O2mGi5S!dht6`jP__z3_h@9?CBG!gn{iJX78c(1a+Ed1jV5f#; zRjC+{f&Z_CDH+eE(hZUtLXF+M)*XglCpW7OdNN%g&^5!Uy4DEdWp-Ki%%7{ksZEcz zYFs_)yVestlu`zZZEu$%uar$Cx93lho{rV*=b)dY>6rfvl}-svN4Os4Fn9$%(mYJ> z;5|LVzoH#jhk``CxV3XTo$`|^kB8nPkCI1ydJD?Y`A?$mXH?naj83mBv?Sqz{uU0I z!aL9^OnarWj(1lI`lUbE5Ne^AvsYrhMtu}<{68PzJ*)=QSa^485VK=5cM}`*fGja( zYt{S6bnoQhA-jP-f@c1v7tmi#wA%w{F3d*`K;694@QOE}d9mLRnNV4J)e&<5$wMQ8 zrJ@D>a?4e72w@@$lb?O&!d<{sMkEQk=SjE<+mq3Dls|+#pUGXu`-^J^BeY0_5}5^y znb=D*n*!N?Nl$0Q>vja!B)D{p*fpzGlC#}w_r0d;H1rAV7$oZ`uZg? z)2t8}6)^@_7f}opB}`YCsA@D+_YJW2;?>R5O=W?QSRQW{3Yq+r*aOaf*fE0pA%8qi zZh<^lQAUpi8e+}sD!{i{@s>oNpNfIAa+?~=nyVzdLs$o>W9t(*S0hX}^(dtR&+x`O zpzXKN>%_32xm@YGJ__SGHEdvBHPoVdK{L01X-MB|SHG@v*K4+}(5_CWk zQ<=Pk?oprQ-<<$k(LL#6qd}*t#r5YGCmX19u_~F4Jxb#Y@ znJ-%Q2~sQa(XUp(%~+6P@@-HuTzL z!a#&l6E3kY91-77cE1Yp^f{<+Hp;mcxxrO|c8eSqj@a& zBKq(c!m)Dg?7J+c6BdXmtvRRWBVOi6eJb4L25-z4 z-Y-Iyr}YnJ%<%%XERiq0CP7p7E4$PTLm3fL`MW<_3oIRz)JbthZ1_JSp)_2jx_s(( zZ|4EXdjC-{M{_0Ya5Qrnpf*|~YvZ$=FfIW|>HAfVJMc-{5=@6_7TpF1VF@!!N})i3DipeE;>-a=lztH6}pPH!ScltByK-o zp=KWT>((6YQNQ7wm}zpZ{Z5$Yk(!uI5#($~M;4&9rZvb<$9&qh9aGO;#}+3+O{=#H z&c2Hn(v2aP3OD62(^@ax`Y9+_yP)N*2oL7uLyOrhQ}ad&yysP83wXhV>VBOeltLa6 z@~p&>6J21JqUx<}rUugeTZ)7dvHxkR1WEa}yD+g8lFKHKL*+8T3BbmBHJTzyIp==n zDt_9{NKd8_`}l!>@$@OVNiolVk1er)ozt24Mt^G-6DvPyqU2Myi+0=VCT3b=Z&`SL zZI7oMlY#%7DV?urw-+Bm9G)~lgLG@&7h%_Qlas(0wr{%@W*)-d{3pL}Np22ne~9)<)L+A98pXtV`4e-D(8~ zphebc;P&J)2oxi*qUbv?05TWyR)@hGj}jkM8djVAux8vix|^ocr8k6(60AxKno#RX ztY+TajPm`@O2+}*R3uu)N@C!104IfTBSXdP#9h|D0Bm!OOaLpUGNR>kvTYuS-JLVY ztFb9nc#|!JdBJ$o-Al_ozxR_B*&V1H?_3Y#d82{vfv!8w_nT9G2#gB?2Lho*{*SP1 zkJPEAZay%+e#(K4sOAzx)%priaI=CS8Qcs=t95VaJ;x{`FzcN4Cb;@N?(wXAv>Ope z@1ivqrUBIiA|FueoW3Pwr7s5;wHO}KfQ1dQt-24DfQOW6I_s|;>gdD!lOS%*fB~8S za^Ct^h()3+kg8}jX5>~;;@#zbD68#Gp>KlE**GoNnAW`dgN!^KM9<>`cvt(ljtYFT zR+J93*@{e&vmMe#Do;t&>g0D41lH65d*@#!SU-~`WGv(2!SVMFTT-}uM_MJk3)#we zL$Z$sd7>(`um2&VBfVHiv{q?|%Yjbl3EW1;G!r5yL&VZ*C`E`wBC`~73*PV;?-hA%AHHENdcoRF^d@f>8k_k&{0KI*FXKD#;^R*@Ht`zBf zahUnC4_SP3YURF^sto~(hnd<0>3aJYPRV%OJ@+N$9}F)lP1u88JCNpbNhe9_@4UK-G-?on5u<>yRUE7&ujWuYRzcaryYYs@f4xx+=m$U zPP@dK)LSB2R+Y?jtmW~5378myrr za>wi-kW8&|_8M0222rEsQ80+G&$YbSe?G&Jq66S`M5w8I|8)n6h)3w`ou0y}OUQ~{ zEy952Ftk}i8hKSRKq~1~){MS5EM8P-(7k{KUqti}0U`5ha~g}aaOrNzp@YadmrZVB zO?XPv0DVk9umdV@8Be438&8oZR>lRGv9Srw=7A^563!OULjwL{m|`4=GU&1ha}ZVS zqN>@fOaY@vq96|Qsb1i&SIA;l&!*tkp=kZZ$d^|YJiBGR*ob!))*wmWRx2}`9E9%F zm))Uu&24N|)X~6r1U9fuvklxyezU zhCV%9$*HH9d4j}$Ee#S(TQi)EF^Ag)X<@3)&zG@!O}C>8-jFJI>C76CwBE6G>spvL zadfUiWST3{0KpzOxwZqHnPCYdE$qfuVWg%$3yhrHW7Cv;pY`0?QhvXAaUD5SF73VK z59xwLJc`LO4erY^fL<9z+X8U$t?a3CN1uTF>%(toUs$7StP^jY*cn=_&txTsXzyj% zzOBM`xU^^RIdMOtY_XyGJ$eWh7v9z&fUF8b(WzpGhy0#-a3rrSkef`ts1QekQs6e0CHr> zHRz`+k>ku*b}t_RW1)ImN~$!l>?}hxGZEe|cTmq(&mD88YflhO&Y|hi<9m<{ zb(m1rvvxgyVPm+e4hhkyhS2pHZp$k$t8$tHtd74JffULNAownO1F7IRngy+hin3k^ zosS*je>Hg!ApksTNBXM) z?#5Grqv6PTauK^3*4>QD1;NJ}ghWjCZZOykM8$C_9XqASb^OA_PQL&9#0PH|FzOmp(Wvfh44{gRz!{TgUdPOWta#&_ z#CJt58r6y`Kawhju)WE%>FNp;Lax%nAwTs(5`ZgA@vnn(;g(d8i~qM_^Es&Jc5tpt zA1~5G%UE0(M<8>(Z0kB8D)2X}M4}Lqxq`9~d_~ZT!WQx+YiieFd8b2U&-zZ?^0yCY zhQi;+Mon}Zc0JQ11IsSdVc>Pao}SG3vfm4EW@|z~fqt(_z=ZrY|G^Wo9 zmJpbNAy*c$yQ~3M^VMb!v9w-H->skK#zJbxcpGjCkWNlnB1UvRH< z4fIXGt6UO_H$zwE2{!W0f-N0#U4|wNPXNq=QLmZ8Yv-E9aIMLZB$Jk)?ydi|moF(q z76-xs;0exrG1ln}hc7HUeKH96p!GL9SnLxGmWQy*pP4vMZf4T!&ByycZS)4NN+uT; zN5G@~*nL0nkMqDa)EC~j%hid*{`NflR=k6Yi8q2jNMTaX{`mnsh@I52O1$vLn8SRV z7WB7=MAb6pjey&)(iu2t)N$o^>P5bEiYeLaPZVYvu3+6QgnG!QYLYe239mZWa$_D~ zBXqWE5c8-s19OgOEVs5#(Q1i&5=mVRT(bF{@0ULZ%F~wne0j_AnDj3Ae2JD(lzwO> z2_)6Eu`1D@WlD;*4BhQGbQz((;YoUBC=R`%Rv1ieo*U~~0`5I+7?c{um*2lC~IMyH|=XeVNw43rjP}+?;YBdDRoa5?rW=yRdVaJ&urb#0`Cksv{ zN7>R%e?84UMXt@;*|M;^H{Z;~R{iG=JR`P9;)#d)QeAtur>)L0T!t0$AJ@b2vwCmo zraDbIwvm4<8`^_N0QC^hy(km@+~nop*vmcEKz6q|23*C+$s->)+ovd3iv*2UgpkFs ztBCN|`jd=R?8Ymx=>3vLmXlMtpZRL%V69p}I*+D48S(AwQQ(JPrv;mS7XD(9yGUoN@a} zkdBNN-m&vvkW-b`ZY+EH5hXyzeLmm9l^c%o2g9%=G9J{jRCrSUSm}>?g|hEW+;w8z zU)kXt%>x<9Q5UVVt$jc1@?=X2pzH4jpC^^ja5yThpz5>$mgiiZFc4b2HFr7BNHb?h zT><&bB+)jM#*VcDXqbyt8Z{>GHP>IlE82-%S0yj%)ik2qa;GqMlZRe%8W;f|ykrTo}|rw$AnWdF6TC={1(qJxI7wALpqHxm0Zm~Uze zek1T$ec?vaF+JH%`?eP3eCapk3j{jhD7Vq;-`>!_jb_PebG?;xu_tXz4l;>#sGD&i<8whUbeU(0=aVa{=W zbI*sWs5FI4u>WJRebZ+LF-X};4pB)2rfltRCuP_#HC55F(9#ZP&$7P!-LlV+SM95 zh$KHXN5cR*86MZ)^v3s)XhbBv-C~t)|A&_=0^kR%{A?h(4GMDPnfS!WTrn{0v5xv? zQxf26ts1I9`u55CL9jf$3F;>HS3@>Aj$iGTSN66{Bne2DtXo9ixiWn<+?TGl{@m!d zEe^|FaCpq$1AGNTKf;^FbQotst6TY5^u~pedvG_0Pw1Figv3-h0s>H2Vgl@oxOp0A zctAjg_}!Ofxwnpj@@!gB*lxj`&?IO}P3liOQm#6uqQJW_KFwyfYJ7J3w$%VMi|OTiiI@jU7on#U!Y;!J|&LsbyAYoQ-X|EBQHrO;970>916Ddv8$7Yzny0 z92%EHAWf0Q4MRV0b(H^Pdj($*YbFrn!JCL*bs&Ip$Vm=6o6aIV2Y(Ia_D~he1M(8OXN)RgUa?3duYPQf7vn(GrMZ znII}Vr|)KCgl&i0sWADojgF8UNZL{pORO8o`p7xRTs$dsDY1;aUyk4U$2_G)H#9|EjN~DUgPNhpQn{1rQNo6&gm;!A2g3MSK(4mB^K|*a)blc2QJ{5vMB(Isf6lH`-6 za6CXd&;9c0m36SrWzfZ6G|N$ocMMD$<~gVkXAtx+rn!t3LUoHoLFA9j!d~#YC3c#Z zyQSA)t(H^DId?fk{ORwl`oc-6A~_P$GP1|Gy`I2%vbb#W28-S)i`MpTAbL)vCuego zR26*}>{t9p1hURGaqp$^o*qheQzhMU2ZF?p)uV^9BX0JRjtd!n4>i+2#ff^f{zm|} z*Hy&+xl#G9IQ&@J2z|JjRX1|gia}rWz84e#$aInMdryziaK~W$EYUj{6*-8&a-9vc z50a+zefh!K=vvCwPZ{^h0v6Z99FGB6?$mSyM{+2wz0w?<8v{W@XK#ky;j|YYK(zWc z=)N4SF^HoZu{p^ENQkD-gj&`gw`Vca1;)Ip#C|%#`R>j_awMWwD7@74*VJxG(Dy8v z!iP-r1(u^H6n(!6k!XTgdN@}2v_{kc)2zk4pTU`M));)`ZD5EoYpuPyoPgv=CpnK5 zghEQSS}2AWsCrWu8xM>3t3jKAR*Qzd7b4IGJhLgul^rVB{qE|dHU{s;KB zdE|p*H61ArXF{{3?Tn$lS3Jy*yta;Xt3>FfrC}rH?1Cs0>KO9O_-7;LKt9PuRL8r@ zb+U6_o`a){P>R8CWg){OKZ}RXj=M)W_nKT0@GR)MFWF22j@2)00v^kubJ7>&Duw61 zLi`mDJEpSPK`MO@sg=PU5UBRHfthr7O{+=Ut%te9ja*~en71q3D@17(<85K4CQcwD zh(Y=oemktJys0Pu^BqB0WTX||JkC2m_t7;(h@&*gxi8WMf9xes)9A`ebGxy$ae>yZ zhg~V0@p<9ga*q!hzPD9xLCCjMMKz2tI=a5R=GhwlL1-^)er2K>T*+QTp~#f?prX zv+4*dxj2eX)JD*q0)JjR0(I6_zsRNYuK3A4Y_8&_@Nt1eZ(4+?E_!8-X*ueJ|63kN ziz3HWyO{O`6DMxJow+16>}M;}oxVXe6)k#Dm>ALk-?dcb#*p+c0Iuh^Kn1Dz-CcC?x*cU0CgaKM6 z37ItMy&h)k!!lSc0W?JLH0KB{J{}0=Qy`YE8h2d6r4~;Qxm(v_leL(YJ6VC z2pp8=`)=xLT&g@1Vr+Zm_fDUR({i!RNDOz02sa|gzFBPgvns*lVyWp?#IPjQn`h0U zVmJve;Kxnej*;W#Dx*c-)Hcrw#C_M zHuSMd-C-Xe<;pe@AOdNLYBVQ32vXO|g-p~xx}lQh)BA*cwM%&sgl0pk*q)n<4E6;s zQV~E?Fc^qlSp4q`o+Ln*`h})L0d|7`D){W7w-=d!#-D%>;3zuK?AT>%6&trNRE!50 zdhJKinaqqxmn#H#`8v5w#PqKH>LlCuh@c)l{CG5&;M@7w?S*<_aMulChhaHD&U%o7 z?uZ)XRdm;-GR0g0N2OUJN_M#boC?h zJinpLO8#nriafy`^?M5Zt{3gxpZ&GJkW^JS4$js|%({!`7Qb%;3RK5-tvQ4FrphRK zNOCa%)<|N;Ic9y6r59$qHJ_};L(@u+cv23edQ98mlb;abVb!M3Zml)TYtm}JJ=krI zGMiGC-=L)wQ{?&{|2Be-1BMZZiBWvvSZDkM_R53C=u9%8a# zk|_9cq$tl-uiw`YfLZ>$JHsY&iY;f*Exut14w_TVxaCN9P7wJ+J&g- zGyL#ujIB`6+_|0r_TYIMb!5uR^LhHV;EVcVjHlvCBJ6Rtc(Qmd%)2hyk$Y@OMQh2bKO$eBy8VY z+xAT*$MMQ+?C~xJSHe7w2FuAmrLm=({cZM+S(J(j0sDInzs9xuW^xSu#+Bn{Th!|h z9T6>)VGk(I|CjCDFOWD2CWF*2pZnV)16l;AKVV30FRj3TuSwgG$;y2DZ-=Dty&pV6 zViCB*&M^KAX?#%P7M`U@vG|Y~anJsPGQgIJ-3@mb0ggq9UbGX#?jd6*+rg%SeVjk* zPGBn9{y6ayZq_zi2a)tg)@YvkHiA@-Ew^xXBRCp{RCC?yfT z=L?{zm|4@O6|FbL-r~))BoXnegLSSkCi0-KV$L!4(INopo~~^Hp&#_9fxQ=&!nqzGZy}b%1-Q2DbF8y6!_Z-8_ge{g8t!c* zOPb!d#G^y(=$yN8sxTeg@J_#!v+AyuhX^k2E@CL@QH`pxbkGYJmNTVvfBF(I6s+V# ze7eCl4|-w%)sN~yy)>5i%eF8aQTPN>PB1gJjw{fOvc_n*@`Tf2gf?C8RH|WR;QFy3 zCsMV9shuF}O`p+N{4?f;?i7j6VR{0O9cN4B-C8$vA~YQWWF)B6EMY8f-p+@7tdRVV z#K)kO|GtTyHbC{LwdE#We}rquLTZYCl!^B^Xlv#uM_Af7$$MH3j*wrSilCdJk5>Mv z+!fsyG*2GUz@WANeL1rLuUEYnNEy&dB|Fc)$(`~r58U)nTVrse)WGJg%OCv=&M>Z3 z0i4aly}d;EyfV#ffr>Mra}EmuVFNQMuRqe>Yo-%BK-dyq--+;;J0hk2hW8Z+vIKuv z-$PfccLf)a89dOAU-OgwGWx+5NsXJ@*fgM<_9HBLfA|$*pw7lo*>JRuFzFxi7>X!- zzT-%erXRLpI@yAkCgmsY1!X-$?OSc4L~EM)r; zzl4)snD|@ksD1>7XZZ~(Is%agN7dzxZOiGT4{mGD3RB*F;?MFu@(fc?tP-L}PjsW1lIK>194DL(iZ_IB$A@6_i1qw%oy@<}F%;w^ znGq}HTp3(QMb%aTcuCebb_($jiI<7aCQtb>No?6Pd-FLgaLg0&2w5(|$r6Cv6IlBk zu#QOh`Zc6w666ppj#)H$K_1okXeYP&7g7(%=23vH__D3kjEv}Fv?sHUNCtU%HGoiY zTx|VzRaR=|BzT7~4v~tRJXRA$H;o{NY<>W|#&^mv&cfO!eeDg~zZN8@K1UY$_Drx$ z=r%Te4+ti?8jAM$N50zgZB{x^AG+Mf-X8&PtQl0$=%ZaH?R9-yq3sM{L#B3YiSLM5 z{6O+jhK%T{lVw{%eLQ*E9KhDKXrW-4>e;*pn`;zb-8W0z=Sa1w#OQgM2DQ2HROEPu zNW~kV(P2HrJCN7MNhP|MOtpXh;hN+BZgiyeA0s2ghu9$sxHtaZ%30xf+bQ>wS-Qpc zmpCVY48xJ##JvXe!l^=YE&bW6leCV3Ft7ejSUu()#35e@A^ph zt2mIO%YUIl`x3T{CvFqabPcL^k(ZkfUzSw?!$OrnK%0B_h53w+Q#N<}uE}&niue_V z*OR8tLgz8-b~AxH$U^j+thD|chXA1rq6Jb+H?ayTmjl)82?mS&-C5W8+*UkG|HJmW zXub!6*4NUIvn&+VB=)`7umj6Ws}Yla2{@N_6Dr8Z-E$y0J@vB|QkvZ}$9PqP#ex+S{*6)mJ2JBJ}x5qSzY{`uLFvz&JNGZViLU2d(YInlInd=WqZ@=v0^Z3N9uV_~h_^STuXw#v_}cm?^MtnY8uGKvmY~E% z{NO^2uSU_cg|Be&`<@P>WL?GB@Xq}eC~vLgWQkX1y9~4FQYfT&#*}c0$R__H((oz- z6-j}NXqC)RMl#klp? z7O%?&z`<&PkdgC|A`GPpg!|f!*qKP>tmdDppSXU{!^!paS{~Oj?I)2b;-Q+w^2hwE z`gxXVTP|P;P^|K)HpcnM)R&NJuf?*lE09W7k-sz0hoIl}x{?pD+aGpI6_MwOQ|7N; zQ$vh{GOfH}oCl|IIWQ%Qz$98RbJ)PJD&5KR$N5nrLU6(k5gHkKyQh``Qa|F$0SYd3 zkfv9(f|T#F{?EnGjt5KL$Ue{DW@*5eNlhlc$6-IEKf2skAb^r!|LpS zdu8xeb0f<`@xiI|G1lT3^Z-MNJt5GE_#E{A*HBquZBZ!qG zQaPCShN8p?-{H8-=Eo=aHl4Fcled&ZO#g{zXzOiikJ~q2QLEL2B4erovwFQR8-(u{ z5~iB~LZ-6nj~bPHt0NU1%npJ?Xzyg}x$IPL1uo6E>3^7hekMaK1he@|LcwI zI^JA+jLOz+?Jq6xd@oG*&SE>c-!<#i_oi88$V*9J-BK(|qA0!6dP~78)OtJ3&#Lk? zBevxsG@>#hM0&p(``KJ}uZ7#90#Yv3h1_*~PfJxA5F&)%;}34m*5^q?|2znoVVm&Q z=2~t+frozj40WD;JfvV0%5Y)iVTJ6?DBzSM8>B zd*iiqzdnkJc7fYarTvJAl?y&3OcR=Ej zGDUsrhp|%zD{97b{5V>!5r`7EUZLk`TzMf=Dt)199Q8oJj^D567tqNlTmB4afY$>cp@`=$Un9qQ`2vW+WLCIeYi zayO8sTNNZ%X2>{?Vxsi%r4h-(pH%vvfJ~H^CY|%uEXv88?-D`aUfJA8l39a#Ynwwe zMKrTgq5{KWW4d+~J!_o$mA*74eKnHHu)huw-3D^B4Zky_SQG%Dtl=sewzJq4_B3m% ze5F+2?}=^snNA8-6_oJ)Y5Uqyovvb?e#fX*`GO3r>>N4mR}to@c_k$O3Q&oSe0E3d zU_6`EEjvRD0osxf%I?ttmj=qQ>6eRM_;jtL1eWro%GlYMG_}@o2yKC-*CESjPOMa4 zUfawxhR;=K);elh7DgjN0_xDtND`@%z}Vu{G(?0Glp2KDDvhN~f6@Qwp9tcVh#9-C zE{YMJ>8k=SMS4Y8h(Qv)5i?2-2A(LiXsJyTz8s>^5eUol^NNxHS7Rbr`mnG~9w3l{ zEt=o0d{KnC9C=`iS7C5cVP_H^2~;Ex)czm*VsQ4KXiwV~<^z(%>o-w-S;Q5vw$^S; zu`J;!DnoYC0(Y7mvxZpUwsPk232=%UB#v;skz%<0_ovzrOjJ1d&qoVSS z!Iy+LO@CN(FieK=qQ1j~-*;ZYdbw*siJe}!r@dU9Kx3_sz{qs1Myw76QWP`O_}D96gJUaCD&XR2>ER zQ+I`>ReQLSv8?(WHdtFUu32>~tYX8FpLDM)C)sr&qXS8@ATg5O&R>#eYPYe$DC%x4 zO@hQosuP6pnJR#-IFY*VBnrok?&1~VPen~RiKTxEmG#5bZ4^2N;DWv0N)U^}QU@2i zqml_%uMkAf&jb6Pwt9{?5vI7UnK3orDX|nv2||a;>?MZ-@%shpa^(p42XulWa2_x= zFhTn{3hK+P*#!6!+9|r@e!wgmTmIsQM6=7H3+B&=-_@X-=bt=R&kVXW`s(%3agj5fsqEY;CdQE|V7Q9%`2aR-)34IUIpmWtSKS&hUiXDeATf`C z+uSB4ruq21z)&u}a3sRh2&4>%3Eo)I%;s%!nn!NqEXr1ZD1)r(|v=afE}3@&Q;oN0eF-|spv`9ZW=j*3)?yvwYx&3rORQ)NU;2EuEj_O8ZaKFN zP?wSh(%FvS*1Zr{tW2xaZ5r*^{vC6S8<+6A$_CbGWi})l{I{mUzB_Q+HXZum zBOD7UglfpaI+O+Ux$f7#*0JHqv16lUo0-9Q-LoL&HO~i&y_Y2DFfRR#t?}iGgbTSY z4<=QH2LqG>APKzLiJwI+Dr4XBL}MAGd^EI1CLl`d2Ps+O%`M0EmMSI0fy47HALFs1 z+T5ZtG4)4`P5?!4^B`Q{^1D=J7oEuW4jYXTk8520M`0*bX{b9z7n(V@0wN%~gKN$u zUDPQaG){kbe{NHa!erKoqd1Qm?KUaDF``vf0Y6ITUMtL#Z=_&&IA5~JHVq!-3j_5{MG9%-}a#kt;^HbgeL0v?O2oX2y zzCsaMY*J}WsdoRl4EZd;|E&lwP0ob8-5`=}RlOJbvu^=U4nTp6^c?OypKz60poS}L z%&qwgfpX#0Fh8tHDAp}o=o4m$|0?iVcLVA|uLYmpaAVg>-8dH6M@J5&g#9@2ZcZIy zd9$*_=H%iZ=(x?A58Kc%KnPfA?39XIpod}JDaq4I#UZ zI|zC+gQi*C@)fprwya}mwEh0we@DxzMS4#BI@zhpQ=I10U@lldfZ9yOk*9wWg!oqK z!S=dak887pA~h@Q;3?kGQ0@)ukvuQjN8WC+PO1@!$u1!qr7HtGq7cZ9(;Y8+)Tq{- z%3KwbG9|u!)}$r)Lbj5;3E<{TH~WR)&#-qU`6M>EXhV=g@Vb$4R+Aw6rpGsm!?bI8 zW^cX+8cbv!^Pc*`Xyaun1R+(U>-LlhX*&LY@YxhitHsC2AqneYH08%dvldPe>X`k7 zm{q9TPYBpYOUsIso%QN%;w3E?D8-Vd09xniJO$vC(~tNfoH3Hah&aOmtST^?83*k% zjH4#t!3>@C=MI&CaGtOFdCbVI)D>Orf{BBCw*6bb z1qbo?cd`_eZ;Q>BT6Ht>=Y6n>>dx}!G)8jbrPe!H%#OL{Htk+1Tsm|ZufKx6Jy zdyR4lB8!xWhy)-&dlubhg6%gpde$Lo)oki)er^^1hm`4XDC)E(SH{EQAPFw{e|mcr zGXmG=&%hq`Bb%II`Zc%8^s1Yb4grI@T)`u!{Ya+7!F^~tNK|MFAf$>$T40mj+3U<^ zbMW2J=BfDhMwp#%ZWp7Lr%g0KC3HRQV4u~z8#yoK1wb&0fE&0Lw3(~_Ep>DXjzQ*r zfO%B6Al~$24J3?!p>o+h_7_ zmh)Z&52=}1D|45hpU%UMM+XD zr&eP`SqiNW`>54eV8$6?{Y7qV%2wMiBxc>bj4GSkY0|725oi06J!Lw%zzL%I{>go2 zcNh1>fDM)9BF3?x?2u2L?Urc5J`_BKKHICp?d0%fNqp`##eDWB5acq>L5N(XOehQk z+h&hCu1ysqN}m9iz%DJTA!uc?NU5s-V%jy_t*n#Y#wD?PsrrrAHou)8gND2 zBQn9)pIP>EE(IF;E%j$}@@j4v5Xe(F?w>@#n6VWwfubreT1vC*hkJ8fp4!dN7^D36 z#9@Er;=jRjvcm?TNhXVD4X5ROR2}2$y#Y~{(XV5!diCWop*t1T@+t!w0vQ3dCQy{K zgRt35N-w7fM+?5vgOQTD8C|>FeZXCR?5PD&5JV6V6$;>;NnoQA2!}Bt9=MccEIUW-7Q5Sf{yga2YEsz-Dl7n!k54L`aX;f>97r}entC{KHE8f#Fdsb${1GXo& zUuKgMI-OHVHN)?&g&$H5vv-PZmT7)>F29WYg-C^F-<4^6#dN;sT=@%+f?yX=P2y7V z92O$4g~4-%_jD*C2Iq@45qYv<=fq#!dPdssVb{XqvLHX< zdxrqW|ME_rw5HRu@vL>(757!g3+k>Lr+X3M_1J0?{Xy*+mJ1XxLrHBvaWije zKOk-1xAXEY5hC;dy~(;rPm{x7_~X)8BgGWRnvBZl?8_w++($i=d9n~Y?QpdagKzvq)P zM}Uo@(;T>sqvPlFay9Cr{GTK)@68ocNj4B2-<|dR2O(Jll}?zRf7L`kI?OS((&?ZU zTHBCs<$u8IDiQ1m?B9z$o7@bD7#=3Nu6~Zd_dmR{%;m6<{DHC=;|yp=NJBxVcAF_1 z$^4_52f0MOTvT||3nXJG6m^T`m8eJtKC7f>%FKaC5^*|@<8~eujT8H}UIZ}Ud8Y$Y zVYDBY5P=)ykbTNR-+950S*TSlJU=xTV`35lhYvkQqn_n+{*s%c_mGqGV3r3e>a_r) zQ`gCEwEm8rG2VgGAuX$X@%}Cnoh9hv>hbNoVJ@MCCy4QllDkJTHP(;XDNjpN6n0vb zu@e0?e$bbx=Q>0oL3OQa$@lJy8}ZK0eXs7*J0~eVvHv6jGM8dstY^WZqnUDgF5l@k z`!&B-$LN8ke{V$nQx*G( z!U+Wfbz3k!#v$6WUnxPWZ~ zgPP}4RhRJUaWpw`8x)!0GoY$CIl>LTT}rWz8`I{r<3R9a?Kec4$OW25BO%LM8oS$aREPz?#q;hV@)f|ph=!AY3D!*u3V!&KhQjtTH$ys ze!018Gw{(CV?qFs?lapKQ~BQfM=DqskO~BbGT4l)3qF()d+H%SX9t2xy?hko+{gOu z_DXB(`w&I?abX`L(IB93jesl{uOeszL+y=rc7U4ljm&IG?lfYtQXt=2l-z6=`K&R2 zz@>iy-}fvv+nk31DkLd-V@@BT^@6GRZmY5bSUIPda6 z@_$L|qYw0EJjq#G2l}dD4CG7l z=Q#a1n+`qc*MZl$Uw4b_#v=Pc55-P`FvEE~X*SojCeeCPVYdKT%0Ya08-cl2ae4?6 z%`$EuF9q7B1c!boi@8OnEQiDpeEkz%ZaE3(2OTEZ^=Rr-T@olHzsGvpr=n=5AcO=k z%O=#z=#i>Lf>$c`S71SmHP^eSClg7O(y>CGB^>9z)ObVsnwod8Hc{G;B)OBKbH{5U z>GPQ^`)^f$V+hKj#hA^q$Ilb`D8~aheR&H6!F|gbUnVq`>)qI&i{%cWdYZZt3sW0d#Hzk-sMQS2|so zGpRYb*m;)0%;K~jPaN|qDoA_u)5+S*o1g{)uz0esD1-=T!QEizO%c}G zPQgo7O_UXnR@v|w5arysUc{8x^l(5#CNi{%d2UuS!|XuTJiZy0+Z4G4Nm>MII*I^=*Gn!j;*ROGnJza-5BiRiX?&80 zKfb?f6~10ixAg-#9<`I+aXQTJP1!!Dk`|Ht?)W)AGY#?|}bXc-T!4g~jMP~w121~c4Ye4%y1x^j9&=Q^An_Y?TB1TL|yRWJ^V6fK%T zuO0O(FE7V0QsdoY>JvKd++F!I1Oy@R2ylv}Jz}m_?@nAvqo1|se`Wb+vSttd`d$@l z>9&(Z6aBj*ojLEbW82aNB8g0&9~xxHj)U3nl_#_y4}x)d-ef@RRwv!_U~Sn93tVeM zIfx*OY|Y0@pW&OUju0$U;E8B9LzjW>wd=+9(D)qRPY0T&dHDDFMbiV8h+AylAoq2! zof=7fX4fOBJcTcfhG$p`mH`DlPvG(6wngFRU*q?v+J3X-F0(t^#gt*;TC82hw7$oh zlZZu$_`7#JF1E>bnaW+5E|^LtgC-!qr<%v3Is`z=tQYR;cN>7L0_D5XH~E6_rOXM9 z67%gaJ3BcsvEM_56O_UZJ`AwXY>g}$?+~u!oXn{dck-(qr%q4KFar{jA{ENIBRn0( zYa<-NUGVV)i4^o;TY(JKe%zOyJawCnGfU%`0>HOn>=-25Hp$1NzQ^rN5t6ArQaKBO z92GOGIQ&o-d+Q6x!3V4LSfCZvTpj@#WVD$>6SrA6Q&BN+TplIy!Ws3I+23blWBxdz zzk8Ly(&M1t}|fn29aY*-wL!3#iCY&d3L68QZJMA7>;{s&)h?wjugYNub>ixA;OrMU!$|{ z={WFu=_q!+JI~^*lS21fU@h`p#G}M(0}5KbcQyZ7;zGq3qlz-!v5-ny{=O# z@6pwpG}oIl2*C}^vj9$5G#)q@8VlTw(tg#-W|lO&p4>lE$trdEFECBHmW!pqk^EWx zpc}@^Dw&Rf&)I9qpB#-$KQ=wWNJ3-)935VKY5x^sUZ+VL&>O=njWX0Z3@Jp^9;l~E z*XB>tu6a|zUunr6b~>|VvK4!#j{J!2!ax~tP`0&>a9z?AdBy~`l$om%04uA(*_(k) z2e%9N%=f>a9oJ!QC%xJM<1v$3Q%+5Q7>%E)2Z~IT<3>z5NY4s$>KhRVnHdJ%qC!|N zh*y7ao1tRuGuwIvzSqLp0S1TbQh!sZ=O+*O(|Ju&B-6R!it(kGNb2UNAdu6F1<_BJ z{bI~rL0KD9|2t6RxSt455?LlhEN-=+5(n+15dKI4e?e6a^DRMdvGq@$l_pZPk0I{it6@r<^&EnliwIJUFfA)M;__J96>B>YMe_b4*&lW797GKOaFz72pk}csd8c$`u zi}ZC!IEZq@1;Pa1$fPet;?{i2_^&oFlclCQ;Iq$WJ$IGIS{#e(rASDi&0 zTTtkC7tXGUR1;gU=hLQnh!zh8LjfVgo--03E%>|qeohibG~n#YlQQrQHzfRp}ir{*s97@YgcZ&dfuHHaQ1~3UTJp3 zJy#*aijbO_W(5qXnbOTq=dom_fPIUBFpceVXr`sMhm_LC=%y9<-i;Ue^0bpVm$#$g zYOhZD%fTusR2A#8BIt8_tL4&1i}r*yjU1dsjab}mKXIy3tFZNZ4sXPxY_KK+`#HeAKggR@;PH2O?&;Q&Vb1pheZ}6NDV4b1 zN(9Ui%>Q;&cz47T8>ydG?@^^%N@fWYH{JBcN~f5L8)&F@2g>)`L*10?k2*iv89V>W7BJDa@($|;{z|UUdjeOlWS5&5A;{Ch#*rczJ4}T<`BQa z)UE`us&p)HVkRTYf5=k#{c)d9g?#hE7Ysfg*(Y4^2kQdaIiOs~5{AOBHMQFJsRwaD zY8)B4(BG=sidKAVc@u=F+UW6ml}7d?h3XRglk;Q?MK+N{HangIjY@b0g~s-B9U-j2 zlO@^>FbWm)rAt}0$qBhOuXe5{QKt4Jd3EeQWI)PaAct3T+_$~2&5#+_brW22rJb+e z-5cZ^(l;mZm-80CXwx4g|M9?!p8#_$#f5@mG%)EQc2hkDhwQrl`=tC<(ihq3bx&jQ znIUsRSoGbkdc#+#LWFo{Ax8aVol%kCl%|D@Tf*Qm*9wd=wmYJ_M%;_{$~I!)<G<5N<|mc3uyV}=tBvd%RKfhkCoRTJe<4Ah$YfpxI`>bI8ZWq`h>cO=|r(R9olbumCAMV$fWy zsYbJ_%d72*CVK_IOa(2xdMCJz+y1(x(S!%a0ku>)t9oGSQ$#xH{H3j@Gf>GN>M*LJ z;5oGwTyzT5df(5!ps48HoaVgW`L!mCQAQxkO?yWOFLLLj5!Vj$s^+otB5Q>0&ySU2W&MO zLATVgAr+`3)Ak49D`dC;Krcb_BR5wQt8f?w#Pf@CNSk4p=m>=!3k}=W zcqZe3V)g!Z``%bo$eRF6&U0RBtr~G!jw|D%ViK)w{wooGtG^Q(fCjaJzjeG}>kcfd zoGJJNq*0{R?5&L*`sXGTb&^LWf-ik2`Z)!k&6BIbqNduaLe?*|cMbcEF+4eMtxx>D zj0^ZedRlg$Z81-gfq-&Iph^cy5?j%65QgRs)&WrrIyu?Y{*T5;8gNDxWcmvKGT)n% ztszS*LM}76KD*pR1@D z$5_`SPiVI#=q`6(!^;Dkge=&@sb}yrxmHI4 z-E#5E;-d>^-&Nd0av!271a#s0f`BJ&<)~HwqI)pUorvAd z$6He3`3oTKRGBc&-(oc}B`*F`*ZaU9ouI+0kIX9$TDoqw(iTvm9f4k!EzGiYxSCHq zl>rs^aajYXMLSPN!EcV9A;H#vtb*nwv?||`3 zznq8w!Zn-n0=XG2Y-p^?Gk$15jD2BiKEG!aFnWLsxva-enN|gLEH$_f|7NE}DL;-z zen7rTMJQyP$G#>Ji>3}r7#%5zXr1lD?8K9p5xfRGR0~7DZXQ<=xYfK!sAj-Io(xfIdR(A{O}z zPyNN0PduU*dK{F;8%bqP!{7T}yv0~nW!BAu(+opl&zgH;?2KmGYOjuLEuqhhIVwNH zsdriv2BSV8#+r?P?%oJ_&eTkEXtnf;frXf|bK+4_Go&H4#18@wM6BcF<|Sl3UP%~g zjdWx~$;@1hEmQk&M3FExJIdwW2u)#bU64PS;vdOl2yMXg|F!k(m7xmFR`I8yJOJ|s z!O_sqOjvHi1H3G>SE7jZ`s16G>U^Takev^DasBM)OPj(woSMT=W~l_Gbgt;M=u?cX zgR@ymvwKzOc7d^w?lQXIyPo4Hh6p4lmKg7qFm(^^6Z#fGNXpi?oEMq0u8cY#86JZ0 ziny2oc?)>vlu&$!y$+Juw%(lGjyJiYLqw_W1;uKxdHo40#*FwDYnDeFY;W<6Tr?FW zI>rHP#6O!p`_NtRd}Wh2!@3?S7PRw<@W0VVs9g1J6eNWn2~DQoC(v1*hNj#bpCabZ zU3I854DVJfjcRJl9M_BX!U*Sd=~`&G;ey_{fHZ%suRsPy=Z>hVQ4B+ptAon3oYzfN z7jfaUs!b}2q{oP=m|==HPdgp|4(8XqRe(eIM8zN8v7?LxH_1w&&iek<=S-caD>}&a zp*;@z@^qwBBvSTyFqa&qc?bDheMZDnDr=yuk6PcxptdHN86SB=qzy;&h>C}x^IrA{51~pr z1tefG7x*m|8am2_d!bl&DJT68xBW9cR;URWJ0YX_+uTDn=UR3b|2V%u;FyQzpkMtW z)kHUR3k;n!e>YBM(Cgiz3s;I~Rv*+?)TvIBRT%r?zeJmrChE$8t)?;egM-P_T`vac zPq=!9)GuZgGe9bJ>naK&+Xw|nvgxsvTg#guZ0E0z|b+d2lq=Jh`hk8=vfvMwzJQjTsfIAA$SPS zJqTONv52t4~n?!yRwXe8rtoX~?np zA0F?C+~oWe!((GeF=wWXejDLc*FQrkSYYafDLOoOA5N67lOTjqZs0y?pjveuUK6DtR z-@_JHit0u7(i9f%F)yynAE8v+_RrMe(!?@#7!=$53S%)GYMeGSN3#x*CTkyfc&hKB zil7Z3V2>opGawscq1Tl=0zVxmgrX-XQhDH{)P&UQWvU}qpt?m;Ji6tJXMu*?oHK1U zV;W0d|FT3G-NI;>t27;KgKM=cG$*VUEG9aHcxJ*#Em5#= z6NwKX^z?eD#yAHl77oc%Nv}ZP4_E|yDZ6ZhMz63ixpX`V4bT?OcXVrQPtW`0NiPBd^)o7Xz+))>{cy)94|ly_Nbb=g+l z?fh}aH09&?!hq(Xf_Q@PWgi|rcv_C%I|KR1DauiS1RmFAqc(R5s-H#qgQ^KlU;vjp}_mZ`$A*(w?h6C9r9Bp-W55y@c$>i5NYgH21U z>`+z%2{8sbhuht|3_`j!aC_a8`f2yN>8~H2Gq_vl!@6&@>bFh8s{rVYZRE+$eQlo) z?y}!tx)O2+$1i~~U8NDo5UfK2mzngRt&rGG+8F)v+Tjr(cyFvbZU5Ke6*Q4t9GPe! z!nCUXhdu`z&(P?}Zm=L$r=)j`X$u1|p93QYR=7%Vr!19l1{sRG2;roYnaw6H30~c? z0&k@A?cD@Fj@AVL`1LIZOoDN%1-&QCmNNbiwfiD-+iH@SzEl%TptKNZBK6>o-`VN7 zFK>7C&2lF8Psf^O)to++7c-G(z6`FD6k*ws`*?YaJatEpE^7@Qv^)5zWR}yqYuB7a zIS9aG#_b?C`@{|_d~w&r>rksbJU~y?wOzrxHN@r;tE4$(*}uclFm-m#q839zVY-Yu z_lI+f1cgC?bPpXe;q{pM!`KwV{r|hn!7if? z(mJr|l4Glc7cGAH2P2bMc*#`nAF}J$0PsY1y030G zJIz(dAzoVfY$}Yko;JZR3}9R0r9s8+pv?<9k@;W`xRhcN+0ls2Q>g|g+b+oOUwoh6y|!v zZ5PbrN-eEPI?Fpcwm}}s2>V{`$+S^yQMTahUrZRB*qsLlcEzsXj-fOO&mf|O-X6=( ziSLN>;_}jC_UF~GhqR20^6G9~BV#r1wp@rk-+4H<>!8G=905~OhNw_UF{XCv4A(?9 zcv_ON*UnBt!L8~u$=BM_*>5i)up1D$hA9##h z==-?(9=x$uWNN&c`0E62UA#X*9f$;IN^yE$G1NRd4-$AW2502nJ%EUz`w9MZMxz{d zs`J2@$+h~aAr#-?@D{wj9H%Sb7VX6QC} z5Qw0)=4>pj%L~Z*vZ6ITn&>}x_%Lkd&~N{ zpa!Er8)279BDL6@)bH%KO8@a7fMLsxUt7*$bw9-yYY6p=1}cHEudACyHvrvymdV8+ zJo3)>**j1YAb`dgm8wS6VL2WyU%Pp+wGrxLDSge?;kk z=M!OlJVOpsLJoATHb{p3$~(E;+iwFfAVjNkk|Inx9(0e>GB5?5y&c9?y3fkpODyUk zhBFZYNq-y)%2JEj_~2M|rCZl6F5)8x*fPmQwty;G;(Baahmf2DObx7s`~_vYfZ~C^ zv~cO&^(_Qupdc_gkLN=mCZ>#_Y=apMfQ}GGZDENgh5kPmYYHf1p9R#%Dh1Ad4%_vJ zAF{ZVWX)#@MNj|q=R9Q;hX3k}PsaeBOJD%t10RiD0e8zZv05`vNSS^V0eeLI^@!u1TEpGFh!l9Gr!eB9;%{ z`oyaT0_6Ji(+N$6X7@YTHJ0_zEftj})~P4|461h1^Ima*q17ckY|kFc*-%BP{{KOg zqHI8nFVtkyG$Vh7m3t2BS8^|ABsi#IviaG-Lq$rF&jkkW+jrjh1T%`T)YBr-$Jk1{ zsKs6;(V}K4hdI&*FHC=kjha`VJhfjd%e_%+kUou7le6i z4AKp3$S58lSnZQTgi1+0Xf#Xx_=QLAsW9S1vCOh-Rn~XYJD&vWd>;^Jw?< zYuOmWwVFT00?@I~6*?uM?5J^rHgCo;eMo#7WxA80x@Ms1dhk>r#@M6_z>9{0K_wn; zg_{ELKiNssoo7Q@e-%9$m4|LilD_iMM@B0%&RWWN2{9) zy;$CC*dR6OT%c}drm-F1$=rGW37xy>)@Rbk$~u`j?P|w(3ED|Pu#ru*_{1pS6s#Gf z#c7>XPOP1^)|IVQF_dVwX=iBds@dl_nQjDb01A&HeUp!33-k+XQz$$<%UWAtHz9Dk zZ>k;Nj&RrbuiWh0HsN-W_|mB^vcLFMZdpgOT*GI z$colwIY^=TR z%sqJ+%Z-o`G{}E!#jHSE(wzl4luBO}c&auPR7i=XmJlP$!HjKgYw{FI#QGIFYE+AJQ-%}7qL523-X9#9% z7V``&r`foe;k*^d*sIU=b3xdwsI*^@9Zr(g|M_zb>e-h%4%$Uq)QrF1Zdhk`gsA!2 z{F>aT~>b$&Wy0Ul$jJ4aFTRfUN2ymXI&!(KDzW+1$0;J-VsY&syqay(b*CkQs{NvV&$oSEZ2pB<;iLU|LOUj*eS;Rj~g{j^c8A-UcxJH zu+3h$u=7yRLX2vh_``6oKkPI@_qkgsT0LV{&edGhg{`j5S!s2I%*gZ*v>o-@Lvw0a z-72$#X5?1kRomyX#_jg)v;1Sf7z&nmo}~)siyk9KbN1&`6AA=Tx+}D*H2>A$^m^}m zp&`JZjT$`jO0RhKwCP)#0Adh=YiwKBCx51WrKw#Sq#+)Cq8ZQodUnh1mVtJ)a6LWTuIk;5HVkLTw1bt@bYQv9!= z(8@oWd69&`+MFrCQ^#I84i=A4fv)}T*sR+gm9=43%^18?kHP}dWnW_aTvJZLDiXlu z0yGUpism4NhE7E3fH61l@$l>I{p_vft!Z<(xqz4wa&C*;ssP9WTYCp!0=Z1FcX5Ls zFCfpHXW&|eQ$4CCG9)<;0hu>e~#qUQe(mkk| z$deUqo6)c+@#hk8Ah>UCsAU^ZeKguA%tMyX`ciPJpmpV{c<-|@IPm9!K6iQXHK~jl zn9#;nZM2I#;=O6}iRDYp7xqY?L3zf%3OR86PkKeOsLWln85$V?fM~SBADfs+*#(}~ zr}8B#i>#TH?vBvfYBmL>g0tk|+YLzbq9c*zC7N|oe65i_y@i2H6g;%XFv{@JaRX;y zm1v9P`(jgD_Ti3rfUV@k@lALCm&h!w+?A&kL{Cb7uy64svK9tk1pSpcimy%|8 zEtTQDMDgSVN9J18w4s`?!XQioND5#M@A?F^ofiDM54HgRKLEfedRAg__y*VF0hb@1 z1dKW^-@+J8n6=&?;T#TF4S8^OT?;piuXGjx3yH&gE^)K zUtjA5(Fi38DxO7tD$^>ffI$65+9Jq5^4^`!lRVyn(ZqLVL??en5SMr41n+q?3(dhZLG+Yz^jpFlIttDdWq3wluMscg z1;C3@tujHUrjn0x!cjL4nOn@IGDmO|&p>GQC8&9hf%|ufBbURch*nNNKZmLt1@BJ~ z6Idt39jbNJP9?x`9==C5Pw)PSCDSUJG9b<>(zcOO09 zGK#w284n_fzO|sYiC%6c!98%05^A z0is17G2-GdX}kKColB9h9M@{sijX}#1&McPTo-{itr8Pl-Koz76DEgW<=s;%kyd{M zUz;Ibo77cmE@2J68_4s+T=+fCom(IZROK>Kk8um~>aM`D{_ikiJNuDQrz^Qr!7B}* z(#FTJv^}hhjF4uezm&D`jw^XY7SLeK}#LhLXzXC4_6{wH`o`!V!L*T&0=I z=PMK05ml^c>#tVq5Fyjagy}Ze27m5Y zeBMFkBSSMwUmyJnB0R)PZTzBn7kpqG%6h)jqL24sIUk= z6=_E=0sEZ!t!Vvjz>l2(Qd+D&jX1F3dS#(J&R*HqwjW=c%{uu6gp{z!p*O&XDjoLUWZkEf*A34UXWFJ#((|=DW%d4>>xN{)O$RiUd`etES#+0J{#nlZaG^FI$b>rhl+0V;L)J6 zDJ2%7PcM*xOXo0aB-n95>y!}FJiO%618I<~$!C*&2rDL$_a8jzEXu=kX=67F8RJ6o z^X>%-!I?uYHq+vOG*|a=@1N#7Vx+(F*^ImQZ2tA`N!|wu|Dai7TE$YFm}0b71IX#l z7Fd!EC$ZoS;)DTZM%IcV`;lGb)Nyzp_wLgw&FF7V^i-Q@4f+g@*x}5!Xm^iz`}ip52sbN3K6%*<6S;M}XV#fxii8j+IFh0-(AyFl8q3-Ymnu-| z6Tu;9=x%H#D8bG7q1Tw(P%YitTzTf3?de{c^uA|$4h=YY$2_j#%E~o)p(1j3rXR#k zZShu9ILW@0z64P*s|lX2SWQ4KRKra8d++DYXX`P`n$d7AIrUe337_=Y3~v znX4+AO*juviv8voe+I?Q0${d$-vG|IbA~^t=OMS-3&B5^arnHRK0x7Cj@O2}M0i)E z*OC(%81mSX6g}hi>63cwHZu35u#&AihJi+xN|hH z-XJv(3DLzAi6jD*AVnNo(p*fbP5Ik~o;R0z!*$yH5d&auFp{u}? zH^N#cogf}Q2`|@!-G>`IkW(|37fdxe!dUSTom~jAClP|#P3rZQQD(R67qbE;pz7X9 z;Et&aw^_=kTGOY~(+IiQz|A1#zKr@k4)kOGfsT!%IHcgKczln6WA|W{EiRkB0jXFr zaWp|4TbVk)fiM-rnbWLumzWzXTbpHaXK=k5IuwV1YE^GS#}VrA>K^*?64ifKMf!`= zE&d<&mvX>U7zyiJV%tI{692=vP`Paju9xV-M}C;7&kC73x5HX*^Lw`g4`*MxF@NWg zEj5=aQ&#ZLU=N@&(YVjouM!r--v%Fs6Hi)=sEX>-FU#HMdMs7Uwe1!M)~{r|y$VRi zQ=>}|eNnL(`C(V@!h=S*hO#Q{mo$bOPANb$Qbdhdha?82w_TziOFfOF{pLU=6>WP{ zxw^Zkw&Z0gGpV&bE~##WInQ34OGR&6gLA{${1j2M5gH2?XS_`p!<_e%Z%P}f9lC2b z;_ISY3Je#)3?!$;YV@KJl{2U1l`fodSOKV)haNE+deM8bOS6a#=x*@-cbHeJ4@)nAv3N`7iXye{rkZZ=u7bStHYE`nQPshdC1nzVJ0W8Kr;i7xPT!u zjo2WWijgX&s;_8bv|@A-8$U!MyCAPlh&49G;BYjGg+f<9_eg8WYq`2O*&Izs5Ir0j zw9D#4*$vz0ZSA8f+NTNOg@TvMd`wNBNdR!>512Wi zjA4#G7e=y0APsmKlrIWjY5s+N_`r8w9-ssSY6NTLpH$0@t#7J)=wfH^#N3?MicraD z=2my+uc6_#$ZH+nB07d5vn^PL6#0;_+DlzpV%qDLs9|wl0pgkt-aRY z1*twRilPxc6;luQaoKCp*M<8~5OB!*Aq}T~QsPRqt4_<^Wf2g^;Jk%9I_bjB;@<44 zA-jd45P(^Woo2?h_wRQ77)kT+UpV{5?dZ)Tls**63-}Z*U6}Eqbvy>aY>c3F9BO{x zZy^X+=&GfHs0P1-;wvbsK`t+05vJ=j-t*>Qja#U~3hM4}tnV-r$g z^!ZWD5?Km*j5t3sa;)p5b8@!$HT+9#+EeJDU%C9orSFFhiRWYz_V=aOzraIP^Lji* z^>U7myqV{0wg5LdnHDsSM@uXSh}%%u0ts99Bu$o?nxqO@>!9ii#f+b{>|&lwy%QzQ zT0u~L{+Sa6PiOYFx!uy?sjjw+TyH^sD5}@E(`r4}Ar1MeNxzm73|i%4U{K_`y)S#k zp84JoA(V|&ri6?y^AY_qLWvke^G<*zU%1iOh*Rk!VtI5*TB2X$;<<3KTY3FF>z8D> z@hGnKLf!At>T%nQI~hgn36)kl;C$3_ju>?~bQK8s!_iVAoD05(x*Rti#RxOXnfF5U zf#Y^{5~SpH-6@`2ie<`F_UyNWQDjSsrN=NqVPA3CMS7E@ zjGa)AAldBt4ezIq+ct*MC-$V4kMlU&)ky#qTy*vnoyW`|S?993%Y*M2Gyf`j(FBUE zH^BKS!)`0V%7JIER{#PRsRD$pYgFB@eDF@S)>pu7zCgy9^4mK^KSr5R$5#2pBK37YLOAJ;FNOh9_ zvU^4NY!|8w%`7#1gcPq^;i9l{y7y??8@J03$>Kz3<`<|9;{ao<>`Pb5q-K5O3v{A3&@SWNB~&-QqkA2Ln@K(&kXjR zdfeMtn0iep+F*ZXJQ@T(r%01BF#=`z^-jc(FGj!moLh^Y*}uyO0lHimr!(xH`y=3i zmjV>Ifc$)&2^4ECTln=LPL@zU{(j8(Fii|Zil5EQdhS#NNAu(Ak^ZVB5~!90&^y1( zE*LMqdMPw^;BMN*!`q#FA|CRz1^lsje*J9o<~C5Wz1GR#LPguf`xcx+r|#p^Dua+J z+Xulz*dfnbpk{T1L&v9PYf(AGg-r`4{$q6zyX{tjucIgk0f2nquD49&O0TVoDIL0f zb{m2a7ASq#2xyGg%7@IhH$KMt7UwVX5tHp$u@D8t* zYk;#y<2*AB@cwx(kK9hCJN-J( zX1J4-Y!jgDrz*NkmkD3FNvCii&idWlUKQT~SDS{lr<`*avBzq{5c6ME*dQDK-hG#% z5X^i{+3Xw$3~UyvyhKWDhB~%zwBbcGNNdv9*TT&W)(6Dr?q}tMA`*a<`wX9*ej?E^ zVP01AHCF^}C=r;r{llp-xk=Y)vfgIL!uk%wNE+{L|MkXr{a#Mn?oJ|nc&P-M+bI;1h6#|6whlD zlE6Inz+J4ot8?)89Rw6l`a6_&b?$=a1nR*612mDf@Us(ng^J|MulH(S@t|J-4U?t# z?TY#T5}(6nl8stX(!(1~x{1WJP>-Vg5)JO3r|EPd;JjDE?XviN?wsuebhEjED$EVK>97mdv#JMsmQ$p>Hn0G4z+!Hnuykp?7P|M@ z*Mn;$DF|wBQ$CvaV^2_cFQE7@G7m>P$iYsP``Y2@7W`Al~25G)`j>Y%IK^HA{q##&8xt@oihHwJcoR;f(T|8i7m1CYn( z{#tnhCX!5EYnp&&m7-WgEGuXwzg)4b+LYra`|vpyF)gA6(7+IsU3tA?pHj z2o>UP%ZiboAl*dGG zK~+U-y5F7ND&FMpX-M%1A5INZn<6e@B_DkWi1^WlYSx&1Zn}yoUN1bgz=tH33K?OH z=jnn5@Bs&jen7UIhTU^X_Bfg-*nWADpRS7&vW)Q!AQaR^YeRW=dglUFZ5?7{xNHdN z6Bl!-7veyopap?GxZ4S0@0-bpI_jg&{%{~7AUVQVf2sA`1f)CslLo%kRtcfP)emzl ziC8T*w*jW{nHgdnKtGLo_Oc>so%lYd914F=WYgvWnpDwm!;bL4PjX32yzN%enyI=} zX81%HuMMDFml158ux^>j&vp@XuImXpdxiLG*2h{=xSi>A>8?`59ooM{+PNM>aN+{s z+1}ISmmtgEd z3Gdf#83>pZA0T*uE5RY}yru>x<3V{$&tZQw76QxZ0K_ba$sf3PYp&Nao-5ieWBqEqWiY8P zxyoG`s4mzn)mU&~OhSZM2dE>9gsaOw0`Q_PaQhi`&&bYDqsRp%O1v}1=ouMoAj1Pp z1lc@c=UcYYEMpXsa-H)_6%Ho^X+FaCPR^HBVV8agpy%w3bs3|2Vq8-~X^4A(KywD;$Ix(e1@WAX=AvFq35Q9;MATe;)=nj%HO`W0cjEO<5%7(fB(u#Dnru=>Dk z5EJVIM;^>pRVTLlQmB(J#u`*_q&Q4ept2>rHD({B!S6(g{NJ5SE3}e|UVyv~*OkILQ7bUDqW(yW;YJnfDj~F3crv-XKP}>k`h-UlWL$)oAXWwP_rJ(g&F1nPa1&DWVP$c#KnQ9 z(>rMq2dpjQ_E#N54CYgIKjnpe4vOQ!2dFcNLd_lUoO8hkqLJ~V^r4SvC~AjS;a zQE2|2GS&}BF1?Yr--j3_;6_M70|Rl!wJF1*!`iEXwj8+-Cq<#nIHgr@kb>lOeR9k3 zR>ar2s}$&ARj=S2Fm_jr8u2Z&JG#DKQj#~u>OC62MPIe{fP~q5j_@+S(I`Ch@G5Ce z*sw#w@3Rv>0=@~IZC{B)9`^(j`)*cfReJhAntG|K6Bjkgz4>R>P`jRi^Y^kyd9@1L z6^0naEHEl&q1G}P{EHERwc&wFMUZVdr+g^)Z)XtpUDYBt0h%-jQ%!Tcj(b5AMrDFj z6$y)_T92k=GD7VutsPobl;YbnVi(B|#L{;RD+SDZ9z6~txV==ReF5u2`n~fAzzdfQ0eZmB_Y~a%*)(+4WQTPFVL(g?sa~ z?5AeB^BolH!J)~pY;7vkbn#ef1wAy9MCmh|fe;oHUq7;bBrVavQVu$DO$*Sjt<0J> zj>&(dhb%gC`GxP1ncwSiiB95q<9}d{oOmv8$ETDsnwQk|ckJL(`T7iUrag`D5KEmc zGrG*gDhG!5YqbI(Ar^c+n@{!!U6@-#$uhuE9*+cH3ILe9u6Ti=X>PdawzYq~9CMCh z0?@Te{r2rOZ$zQyGjo0FFgbu@XIj8$YjM9kigKBuw6`V(Zc0fDcasR_dGR*z$=uFQ z-Xe38j?{*QAlu%4nit@}O}cdiRG!(43WJf32)1(_xFdCBJqN}Dgh*g-WTvg|4pKR3 zSJ3~Rj0d2E;*wFbX*JXoT&Q7T z^Z6){;H?SB`Kr7}yHqgdvH#|7DtXyMa#Yg#I6NKGJDGdn6XhrW?YA9!a|vCaYm#di zM^T~i3^%9uove|IYqyRFlvPU4{=I5Tnv1L~g^lE~6j)0(8IOWtYn?jj zgRfZX!WKa~Yk{Bkg#3^i7fX`$72M#skqy}y-V zC-uHL-&iKjb}ai-auyLADxM8!G|c)Vgt`UMolXE?z~b^!6N6I>MhJZZ_%@%bLKb=D9?a!O_*yhW zJW3D03b1zv0l+VcYJ(!RaFquvR2;_phCuPZVSNmya2zu5%=CX+;9_Cq#w4#@7$1C(M8K}R$es%zEnb<@V5W;Co?D_F^E>pdQ ze9P>L1bP3LqyQ+Jzsl7{a%*%iZXYYU@&P{V4DH?+BT9gh3-G7jbItxtCncxzUrDfsO`=_ z*W)U$X_{6REG(2+^(V|N($14XDyX&jGuKv`?7%W@N2&0Mfie&^|86_o2^UrvLj%4~ zN?76gS(yTs+w5B;i_3ozypaIun_6MHG*~3T@j`+vm;lv2fmme^LnLHwu9R23?c96( z|LF2g4rjad&!8ZAFIQ4z{#E9lNt)_`7us;^7V`oR0uSD7k4&BX$0c<%3}i*+J*@+P z$%Zb7iQ%yBURxeMUm#ydRDZ=%5%bAlPdo;3A2u*7sTw+%LvC!dRt9_rUFdA7#XC2l z4nBWb0tb}|kh-uaw3phF>jshSOGwkAmW)o!{$pkw8FD zu$V!|CsJzGan|X)-c;sZXC3ivJZg#CNTJVHrSt#$jKZJyoXn|}J@xxHsk^FEQxjf( zcnpFhIg`nnD+o=ZXu9D>_D(N^`4pA|MVAQ3Bsz_;{9$WQKp^(&c-h^|#{&v;#VE|G z2PG9ltaL&xk428yvwb00SbitUWXc6lBg}s0PMQ@7d1z7vRU(HB6bus%q}qbVC=o>Y zoN>q)#9=f1Jb&rS&}Bkn(_`bqOtH9k@Dl|U>?wi6o~Rk;RNT!G{>C8Nv^bc3x+<$~&?mPsSx`vvX;kWXam7>Nch; z@)FxmQy;bgyJfmPP$(O7;AyumXxqSNN^<_WwgNKuk{~b!ac_}JtmhL8BgY{9B0za- z4_6!_df*15vT$|Z^VzWK+I%qtGj11@xTFo*D5QQ!39a;qtwwc;?vnXyG$5U{0lURC z>H+A3Oh-o4CoV}Rp{=Q|8rIY+fQB`Gm9I(W63QTZ`iT`KW9G7$kSR!z2Da1hSGGk( zg=mN*Pr-g3PEE6+NIEf$^t?P0D2sE0~1?4 zHk0xfEs$6`q(UvP6!}Ye%B?@iBS>p8uTgu27}EgluMLm8243SQ5D#XZv%Nby+5N== zwLOZD67 zQQ2JZAX_2yIlw=jX^Au*QAl9r%*ROnLeKt99O_t4Hg|=)4%70cS>>lt33@FYzcex4 z>KCw>7YAaa9R5>K7$wSr)Sgs`9vBggIBxJq07MNV@7KCRn>a_XiI87e~Dqy;g@|{D(Q*ENuf2@eVu;zTZL4*d+b?f+C^ zwnk>Pg(ZU12`8H1L13NCgx(@1!>d8PPER?x3ZULc#3tQOd<{K?}g_kC9 zC3g6^CtT$65rtGU%yWj_5UKlq6T*)({!0N#V zj)4>#e~2!rg&Goi;!DM}Mb^y>pU8OkcS?_Rjv+uIsMV;wQiuI?Rk%ocL=)!SF`j1m z^ktcSzcn~S`^FeHTG3D^@>;Oz*;Q$oTh;;1V-obW*BZT->O7zcU5CTfjb~-BAbDDtzFX?wRcI%-y~{u zZ}tinwCB(p_ITv8q@{=r3+=mQ))fc)F{T8T&^Jw~+^o*CQs^iKL6fdqCs{RepTYg8 z%=%$q=4z%sX>Hp=xRzfquWV@ha zO*!nA@Vh2j(onXB()5?)WBReq_RdlChx$`WQmqS_RmmwQ1r8$sO~j1qiVN)u>Z0y9 zFXoHV1^_ZHuo=SBlh%92L+#oGRPl%gRnmFcxc+h?`-_Wan<7t^%z%O>9yl}EV&)ecU)Id)bwQ}JB*faLL1 zCNg_BO=TySq)TaEk;N7`dH0if;i)hb0Q=Q0kOWPJqbXK+4rR#6I#}jxA=UG`Qcgi3 zKxS<-bacK!wiP0%)g1y|=YcMpvB)f_p5k zoVQjZNA6HoUmB~fHA1i6;Exf6C6;IS05ok%C);>cM}@gQ{Dk6gr*g*d@M9w9e^UEB(-1dWMH; zOxh%lBR~kp(YY@da&i2MQiM>7Y_OMe`$;CrLOrcv|6t5BZShtO$uwQYEpk$`Ljm;46^%kA4pWDP=G?73OL*RBgM3fK&|yq>GNAOau)hIQtG;G-{-lR)g^~ zh99^S{Z|4Kx5lp~V0Yd?q5#qmuz-Pp{%6Y@rM!I}O(fvLOK-0o$7t^L(2ROk7#!5;%ur0zBR0SsIlZoObSjEUCTw8*Rt>Zo{MzfV&kWT!4V#-~ zX|{c&8r8KS+FW}w4>E>KdQN(Ra@uV7>Ozois`ljsrU+@@tLnp=XnCznetz}HDgOU_ z^;eDW@?K=Dp{(An6m^?&Zp}_>HdcM!z(ZpJ&nS&jDjbw+gJ7X}LwP0y$5cGE$M1Q5 zszX@#8cr0W=sYYEJoA}c*Z9IV&_5K^Dw!j=yj7trB7*q~edIF)kAyOSPmBPjOod5I;TpATaU4 zfe{hGgjUC32B~cl?EG%wyn}Au3U?`%KVr^9)C%p=vawa)Gr$62On8!keb3EiVK2y) zYm&!32r`z{Ml<15o%v3D0U6$N=COvS5snPaN>7O0#*|Bgx8l)+_$)N~JX6)dCxc$$ zbn{t>Z3O5)m}XM{uNXF~qWugU9z6TE0Gk96J{d}^ z&>m#x3Dw|UG7Rj{!uWOX-4Z*mgP}_>E+|t%qqO@z;5R%uYV!OiY?+vftg$$Rew^#< zY(29Vd-4qi^Cn*GS)T);TBrufs`c?(J0@0^+Dl7w>)m>L+!(xa3$B=OyBP|^V@k@l zo+=0bL1eztIDc4Y#{y4F>C+-iwwB8fvr+^+g!H(4-&>21`;c1}x<8t4kn# zMY=V%Q^JttqtjBCFX;xWzdh6UnpPnHrwr+fX_l0j(3 zAT`Lgcefzwr;}f?qgcN6M0`mOhW8+P7KPB%kqTq&vZTlDWsz#5s3d=OPe+U;*CKr3 zQl?^YSd#lRqpZ^m7Yfe>$x!JGMyN{6M8QZ4HSJ=Gpjf_@NpM<9`INqv?!5OV18js3 zm>03grn{fCT(xx)*}f04T<1su%}AGn6ghaVk6o7!a@Z)`uPa;aJOGh4+Gu`-JlD|e zG-M?@KgeY*t5Q0*i{fZL@4XV#(5)&yaUHN)Xn0CaOq;#Km?dYHgb?a81 zjV=B-NjzQIr0g0J-AH!GhCQDW)r>QoUET~&(Nu|Odeo!FT}z^ z(+QLzruSy%JBc&!YVvTW_0K(8z9>H@q@~yVSw1$I2`L&{T5E?8TEOgdTE+_KjJz#sonr#D zl4@Grd^II`c`J#TyF`gbt2O1Uiv9EHSVhA9ot}o6ljEGcqM3(f?^Q#*+Np~aQUxS& zO1bAQJB|0-m_nW61>Y~WdYGU|U-B^I5x@KpiSWk?sPm(wgyfTQBxX`uy<4g`AL|i3 zXCoCV{#ul03#-q8JER$+%n(wTyKf`Mg-#S^12k+z)>k7GZ1fiOpwEo@V#RSvxHg-j zx^W4D>PkOnvnVMO9&I%S(s&MDaX^zI=AwdUU9(n>l=V(A=E#UW8U79DFHVQ`{j-O*qF*Wsj%@bv>7!3w%S~3N#zqRs zd=<9l6s)zY8q&K}CTLj1im?4y>W6zUqlhb*@L&~C7Jz6wciXh9T2h?%pKb}WM^9u!Yb{qVBhXFx( z(k5-KZz{jz)@BhI0o+XeXC8Di7~hBeyVTMGoX3%z+- zGad}93q}4mECfXI6*f-@s*HQvGmp1#J|N^tR&j!v)fz3dI6tr>fWiZcHAqpjI@0s+ z?XfrgR1q{#ffq6jqRk=O1%HD~@F=R$HtwZ-5$*2gNREelA281ix0BmQ8 zZCLOki=X{h{2|phv)5mX)5GRW&=eYua;R;SaLVuq%5M{Ifj{-x0%J`Rjp(55{)Hm= zRQR$vK6WvFN&2bG23MuwVM>$>gudFH5LaoFx3i~${Z`%Mvj@C<2}v#MYg>`q>HgRR zF2iqEWrOq=^?(Sr31BDEHWOV{p=ly&j(&kNNhz;|UYo9=zr@Kr%`6UR(`JM`SP3Gsx=>D5 zN=y)2%AGSC_pTA7a}g3aB6lW$*e$>$KCbBQNHgc&n;YDrIswT-?X2>j;1;vh(5Ko6 zo=eqzlSU3LDSU*|_+OTKwU1W5LSN3Wq>T}+Wn3L0kJ>Ir8Btr`CwU_=5rnDy8Zl;{ zt<=o7He&B7NGyY{?PmXwGeDB(@t&eDiq?%wyGLOB6+yb!DKCqi%LuSu^x%;v=%?WBeVm>nBnRHR`*+-CfCZAS zq&gDXgU*MfL3PB&q#!MSld=4-590wZ#(_0KT^ z1u(UdF~k!2v>52>8*q&mHn-`oI*lYBSgcD}X=nctCTfi zH-^5l!1(OFA2`SoG~^Y8zu_fSk-sDqL&$oN&lbA$|v9;ibao@3O zbEnn+U=x*;W@XSp$$Xa*DO4tG zyv`0CHqGlTO=_MmrRI+;J&4D7hD5+#nm4bwqQM$jKfTR)*IUQm+5yXm!bUly__2Wn zU~IH!qN4dV*K^f&MM_9tF8L;Msh0;D@*N9r;h5(Qg%tvQWt$-B<27U`J&X^B)F|1h zMAn(Rc94?FL?`y7A@*a+F!2D~w%EVUEx?BtbG$^@R8_Y7r{0y7vCZ8P17Tzs@8Jf9 z=AYa;FRTqSMwkf%3qV(i1jMEI;h>G+?3Ml;Fzp}hF|)&)`fZ$#txTJ89XQ<@>#Uyh z1cD=vI*bEU(r!*U^|`Yds!18vN3Fwc=@L_0`^`B6dbJk{BRQOd{BJxp$UY#xMoDan zdTG5)BlD+l+A}+1at=oVbdq&yFuGV}hm-&N4o-`Q*I@5T8U}vez*GDR6);D+v}eyY z*u;nl9Hk5o6<3^kFOBiHAi&q9R@R2poYB=hlK?f0WijT;YBz%8`RctP zLx{Qy4gUN*&3G=~qT&RYx>#)o6;?s8Z=56+$4T?ayBvt_uRCJ-Km^}a zeds&opC1U@2Yzsy=T?eb@M&&AD@&H?E?9-j_Jxp2 z);ZTvcG7R8j%)$QY-UB7@8a*`5I1W)i}zUzQ*9fH;$>rWD7;256jmM*ftgb~Sfvp$ zY%iYtFN0I%ZX-2N0_s4FkwXG^2}IT!a{k^BTG-kiSf_;n50dWOlAU#tmM{<1W3lRcA`{uY(SAos-JmdtYaaJ(6T(g`zprjbmJ0g$+j)-Oy_ zu{jhQHl^1)he!cmpW>*BF^mIBtXuRwkQZp)_`(HdKb3+5M{r=%4NOs@{Cj(@*g64m zCYsN;I}f|-2Bc+(A|iopBxE=e6zifO*P*CuG?Ap9+BES!3Zsk0(gZ-2N1h_tBg%M& zC|zV*_vcruBG}^E5!|nb$2&BIMYlvo7Dk?>&~f+Gw0O|V3OExCy+8}TaYcTaDk>89 zotl5rMjbVw<`n5wh8VG1w46=stgRBJoW{=|GKH>?7W=GaB9)0cAvFs{%P^VZ^fj2G ze+W&qK^AC8S$EldBY;x^xAOx{UWQ^^CW>i77(FK%HbceCj}e&3oR!GdKjMsv<6Um%y*c{dE>k;OC9iR-~Lo=@&4p%N_Q|! zg$H55J2koIA2|S4pPnVgr;c==!Me6HY)udm0h%jOVR^#wTf;uQsfZ-bzGMWzzft>> zX#tg(Ec>T-Mvc2y?tyXe%nGwWz#%bjIEU|g@sr}W9#d^x#B%nfB?F2G^;%tf!JdK& zN_?|1_^Erg19H7_EM=4R8@>a*F92yu-*l8wa=~#5I3KAwLAGL##t9|yeme1Ov_ymd z-xd5@j{56m`&+OEy=2UUj!{WyQgRlp+PCM9y{g?-j#G$bqT`o+n}FhM!D_Six`7t z98oV|Sc1hp=4>M9!3<89nKVk*UrU`#feKlGINa-$#MI%zlX4A+p3D#z__H>OQpb)` z_Htn;IIJr^rtfm8uzzAOr|@1RlxnWuuKy0($Y}<$4H3^U3&rNwLiK@>3PHhiPLVE* z15+f}T1)4BkkG^U3X1O&KGpam11RfZj+aUVneZZ_87hXqry8iA+(si#+s4=U+d17~ zc-r_FXZ%zN81`pc!x*=?au|ax_xedf0Io*bakqiGXk{-x-UFf9TO)dgL!{piRF9i; zYQE{&W@(b3eh130a^E#6((dlL5%ld|=;a8n;ICXJvBxoZUV#zG|I|J-!t$RsLklcx zYx8(N-xG&U3xa@xwEZDbB%MC*iI3gS?bAd)k}W&A{jT@)Ipmo2;2Ev;3e}Ab&D23V z(oFrVU27l2TlXK{%J9(^hyZpyxc`X~G|Qd?QWG7MM!&j+Ugr`VfXt7ngWjHP+sFE$ zVOsZ@dL<u=?Dy&l0?zk0MK2mH@&W5Ix+!2lhc2o z?iw_>Ko};x5+y42Edwo+_{fzOImq?n1fa8nVPo#zH z$&~4pYnr`0ny}uB9CnrTa^~?1Xe6TXAIUY^Css?lgBe4ietN1QO6UOpKLEgLrsn)h zCvUapbrSzuI~ptfhDGx<@^N~bso&5#EctmI88$J>2ilvoD6*Mz-_nJ!l{EEV9{}QZ z@>}+Y!MGKAMmxkJq1Q#8gGZibiDmX)TKZx)k)jcCJ7(ud7;+RcIaWgY>$(*tS`f8`GdXC(zK}%o2pH=D5I>pe^DvZ-bjy zy_0s8Y2T6S-ap{GVy_5%VdTf;Y>ZnTU;6ts+I{g`gnH<3vwtdk_v#*#TU8U$LfDvx zCI^bkPHBNi%s}k-ilaigR-IJY1iayeZhRDZEFsMX(1F|`=}p_9;eZKFsLuEG!bR)V zc&x*XCap?P)ie$b!lRE(&PhiIn$!m4%@)JX7M*pAxTXD%jt^fswf=Z9&L*-3fi%04 zWk^KNyO_h;RkW)4l*e60GVjqR~ zv6Pa<++MTx#pxlN`hj-tanb!qU zd>#;6!|m&W`lvWMBp?Ei`%IK;!jVd7W&y_ zsk1&V{fvBW7jxEL5=NFhkNh=tc|TABHr0JKu#(5;s7~U)kx-+{NQtXA2%KbZY}jnp zn)m(O^$o=hgHApTQ1R+6!PnS<%1nlOD)s(;i|4y?VXKpa+8pQxC|&FzXnqE|MiMk~ zN6EET0lek{9_S!NHNnKMhcMQ#1d)`cF77$aX8EYx=r-cLqH+Z235rd>j$AdIXI2bk z@%mUVT`Jw&>K2HyXTzw1!)OhdgBdfHULEmXIpn&YhJI2%OWVs<^=vKW8og`-Ejt`n zA|li<{;3o~^H)JDWzL|RiGM3Yw*g&UAMb@0H7Y~eJs3GEbUXy~flfP)ybB46&a5T% zkJ-cV+=s@AFZkkzx|18Hs#y|{_Tj%_j^9>XwaW*@ZNDaptn#PMUkyO z?^?Uueg$zP!MMxT;X|9n-{T7E^9jrGaOCkeIR1eW&n;rKty{ekvEki|9P9|jjV_fwQmU%c?Gk_=qZYN#lLVVWGTsfJ<0+^$2it%&vr*iP^ z^L>}6c7$Yv9!!^(=aM}Wp00Ki4%q;y4VJAHY=ih(pNhZEq=E_K|NE-|MJ5%6%u|6d z#Q&Wz3=O-abw{}M!Ba{kwq$UC&CIs@K7shc0eR6^T@PJMC^Kz=DX?5D;bh-^3xws$ zByV-NJu{OwI)r7{yWx-@o&~$rY5fr;>-H1!K!raQ`6;&FxJ_rYJO!;TS~+qMUCIP| z>+G50<%GkAH~qHM_b$TW!RC;S(o;M+;8Qs>A#3om`(0J|<27FGJc@!jd#QaNE?jqq zXNW~SsEnyL;FoD^+$Rj4yk8w!y5;jXQ)e3Mp~SD&3wp)y6bx?#_+eUT4^(MK$xzJ{ zBeC8CAyoGGY%d1rBF8%pq6=ukAiFH*#V=2`FxCO^3c@&@0badEbJbV6D8L}8rf54ftfl2WX(*n>h`f=(xQM%EA@UP z1+R8uSbyvS^3}`F%|{o{nL?V9B7)tzT8Jg?wD?(KyDdDVOGWgeiVHA{`v~M>uOA@B zDjZb88KiZ$Hs-B`rlyddrgnxtcp9mRahrAKKj`;DpZ;d!Z15PC&f;bvH46QRx@3-O z&RtXSxVlxfdvA1HdKb!#mavreW+3|?q2=i}c~R*!Ju1V@^9|;aY(|(%N?*>605Dc6yFI(Hdy$QmfgK2V zcha)rjc^14XAEvi*RvQofiEAk!wLZMjyJDO?!4wR3mbIQ2MnhzewInHjrHpKU~ZsY$+hm7`mHU z#HMWuz&!};L`f(r!`!C*?a%irPD!1DYA;X z=%!2;!RoifO1pgsvZUzATZh=Z(CT-I)bYDnxB@6Zf>P9hHh^Ki0?9a^yI_|m&iIXR zv(_{}(t^xTr_EdJKQ*Jkv+Z#zGk9Glbj_)#5=I+a3MNk%CEn5{-B=ceMd%8b?dEBq!Uwq~;@gEOGL)aS}43TDIZsL+1i zYM?tEdGujFKXGWfFEbOMc9#(8ZZ z0oW1b-I!tRm}2>ywG;DfM4$rOF;_NCR zOcn=v&6o;<(CsT&Ed9)g?%FkawZ-1*04cnFn>FiyQO~qGHD+p&<>^?=p4yV7j_tL9 zrfRqA;BV+Nnm1Hbw4V;}+U9;(yvUum<2EcZi-ty{OC&yk62w4Ln2;|hB*bb!F^+)T zDL@XixtO5!82oQ~oNO-sX|EUiI$HxocLS=2P)7Pr0}c%OJm2Ohx8=}%>++~pA?!@6 z!cIWD+H+`F3g-rcMP)@+pPci`?8wnMQe?iSh!%&NJQxZEO;u?WATnAZ*R=HAz1s*9 zIeG|toAu=yoFUSeYS;xr)ry4ZA}wP?FN~C&FaQbgJ$y@*S(HZKwGdkYik3X7HM`@c zq(X~P#wNzNFvsN+HOU!>mH7oR++Z0V49T@}BN z#sV)a`8y?P<;IY?e_Et?MIh@`0Pkh*S9|tz-p|}}0>7!OshRg3)4^U&QN&UYVLbGg zr&qYg-WcE2)HWU@eztMhf(oKshjWhi7>PL}j*T|m^fHJqYCKb450Ki%nJfG30s?)o zG&Z-_II&gd;+n@g3~^dNR<0+(y*)TaWuRx9SpIVTmW4u47Hlhl3C;a>gzj>n*!-s%qTz*%L~G*7dQ8bH;W zP@kJ)FCx)@{py19D+0lMg?4g%o8ziC-^U=oA{OA0Wd}W*6=;Cu_H+2Jf*87kKVrSk!ChONt+U>oVtb_vChr4 zL;A&3o*c%=6FNe&LJ(g)l%xtv5H!dX9O;pV*mnU>bOsEM7Y|w!7iMPN_70T5jpXux zLNUQUlOkG9Rh$vU5%Wj*Q!9tF{blqG2Fko=47Ufm9{rmNMLgd_vgz;QagY+C@!DVJv*qA{Nx>N`AIYY~}YV zFn4_^{h?qd+`R>FI|FY}UNX2AViN^__F60)2nd9=r;shBkp8!EhIf6X{59&b*|{Y@ zGKLRt>*(Uc}P1A^6D$z}CVzknwdqfFL&=n$BUQ(aKsUAB;NXFyq)3G}_ap-MosBjWc5>Xi`3bJOe3=Cj*KfxxVumrChj>dWdsMkT1+}5^o^XvjCVz>LJaq>RU4>!(vf5 zD!yq9(ENnQ@MPb9-vl%kFABXz7>*xPMjUs(J6M1*BkaNn0|5+>;Oc&_;G0rD0qh=ARs))d_z42^Z( zX5}=OlSunfBfEQLoW5an^N;}(qBGPNFV+ZGp!fQ}+9?L660eX`b6bF-t@k%Iwg^N) zOVmJJgtVkSq3XsoDD%;7(jQQ#G9`<+ z{_}jDP1ZV4Cg88 z1ouQDFdl4Tg5GgbYLQ7a(j)Rtu&MJQ41qkq?#kUgf0Ilo56l7WMnv&B^=`%+#c<`uB>U7DU&Icrir);ydBEkB1=M3LCdXH4EUn2)!hr46gI9X|h zB;9w5CKKuLY3bR~nMo{x%ts!3s%we7fdV~wnkhOEdXHAYAQdtj3)wz#6BBOLI*Ba- zT|K~5n!k^$ZtDsbHd^dyzHFfVuXdlKDHbrsVk{Z3?6JHGvex)Mfjnr;oxAP zkyV+HLhdbhuip$>m%XVF&zBZw-|k(0?>Y3FE9XWZ&UQtSDwECwVyIYwcPMd^+Zsy} zE!(rvgbLc0t`$X5N0JDz*B=XCBWqG+{DKavV^vSp%hCvNoQZD{V;Vu`(I=f4s(RfIma#xTwGTY=?Apc z;9_~bMtU5!0YL%(4JwCR4VGokWX);_ROiUCR|-bTz9M z(i2Ja18o~+*@7oiYB;y%#2s5I0gCL~iCaLk>F;2F9d%M8X`2;1XDN5Xz!^x0BTLJ(mU^2FM1k4nIP(7AnzT8^m}kVC z$-Zh1QDCzxjc%eR?2q=y{IQaRBa7v#(@AkWtX7;I!TExg+u{6i<9Q@AG^!NLt9H-K zrhx(o2uhZRsf;n9hv#-4pw0%Vy_vGfxZDcALnOoiOKNO=f&juc7YHbix38i(#nb9j z)A@+%+Xu2X1xYRWX#pL4WQk*qA9HMq6k{}`t1I#`nW-JXPa#+lN{r2uLyoIyf4br=~a3X zO)K*c?X4NfXydjmFuDPRz5I|qQSs~uKW0#Uu*>#EN?N;2mNR6?;Q?%T=PWcC(~?z^ z%6-=Um6Y1!Jh^k^4he+xZtWwo#y}w5u0;gs_FuMOcc*nQCE|Vfi$OJ^*T}LXOsplb0=7&;Kc0@L>ud9)Kc6n{P{h3429r0?aYBE5@^E$+--Ky|6C* z7D7rm%uzB?7`$1Sni*pqT)iUlUt;BcSZKURomvrlS3kUkwX`O86GeA)=QD9AW=V!= zG`?YeIIop%6mmY5rTPE~L`vhc8(ep6cC;|{?j>kZ#~SLURJPoV&gsAiEjv49M5SkR zumzZEl~j@qRIg+u{H)+HV20T#RlU5LSbNMCA=%e6cP=N{Zu9+ZZC{pK0>9v&<-;4* z(XM2jC~`2H#?JL@Z669~rkimgs3wy{vsu{ePG112ZCi$UN@M8hA0dZ=Or8AGS_b}K zTu$u4<*oUkcX!3u2!?PB157#*;qpbJ4!Y7j6L zC4p(oswGFiJpoLmUPiwk`6zd9pS7n0pbnRAjKGdF<6h=);}2cLE1pK@lRL2ow<|c_fDm1#%#02f{N{y;p-0V|KnhpP ztCK-2Vb$g@r>hn?cHfe9S!{_9XvJ;QNk38j{;SomfZ;Bf-cMkd=3!$?u(5i?aIOyS z3^=XZ!-}*tHtokQD<&$6cUX;W1SR;MznbyJdOo&8j~oOcL>)@`j+3&J5TgSwj)czy ztXn=#+H3CQdaHnecQT&_shq7QT)K9H_xNV@EuNc8jaIqfHu1hl^B76%2ktE_t%s4R zuiJkp1;Cp{p?<`55l--Q$#)v%O@!%x9QQ%|zUSf4b_?x{%Qdcog$#u4hlML)>W&cP z&epHr!o7;4O(&?e!snbG;CLExMgKo#LleH6Di+7tf87_!0! z%MN3n9!eXn3mF3#oZoJ%x^IMb)|eHCYLE0cZmyyUR}q-QgP${XEY`KYgB7n*$?(e0 zjdK&I{iITaQzE3YX2{cPGpC7toYg8BCnJ*s3IN<&~h7gFOYQ^8C*z<$VsKIfGMA-U*;n>&OICWzrEB_^EiB zH!e)SHCR_JCknS@Sb9=|e9Y>(|t*8Vz`ve1`M8p?8GB zImL~7c3fQs6yMX@;I4@zgt6yghSbPyp{g`^JVb_b>`6_A*8NT-#1Me5CVABz%0KlI zRkY9;pU6rC!i7}vILiw8U$I%d81O&9gM0S?Bko+Iq;u#AMS)NeobTAIJymw9J$R3M78vz zzv~-7*5Zm+0v8RSRy~D)F}m}oi}gOZg)Leacyn#bM{JJS2)m?QVK#OjI|s{t8pzM1 z7?h_1-+Tpwcb<=hiQ>zS;lIb(Z8uwumjh7-^y|xc$~Yrq1*3tSIF~4OM;dA|+@dw_b$%fh-T!{FNY)6x|n&cTAxv3&AuAe2fhL2 zUKb!+)5itY&WWLT)0mNHMQC)IB4;9C55lsV{S|CgVaCBn8BLYE?pljN}Zw(1# zW`4({;qN4zKSa1Uq&VAz!1@&8);f!Whr*pm+pvL5{!htTR7X5C^C9|;DU514A4v@a5(_t^pbM$c z+~0)s*S*o3vW-*f}rbX3e@ggBi)wv`zlH{g}%#iVO zh~6)s=2m7w`&in!oY!TtK24F54jR%m*~t_I)?PrA^QF|deVfTVI*=368Hp$}L;l56 z(}b1z?Y7;|?*3tK_a(@NeKYRkE<*t~s(GkDw5M>|^MK~#D*f6Y_6c4>+(%}p{%u>@ zESuuT#*uL5T)XPdFwaL>yx@V(LVVi0($Cq^0;=n6Ucv8i;Rux%lUwpkU#x*XrxpR} z)oFD3L$qn=iW~#~gK^=YFH3tbob%am&RRS+woipF?@sCr7BA!Y(K+SMCmWK4L@iBb zNE|g5j`eSAd&QW2>r)}ef0~GgRJe8pcfH{E3irc)_VcQcxix=rOAVkT=9W>ECE`^e zfNXWVgB&h6S9NgJ?E3|-%};#_5Nm-*wN!BM#Gr;TnCR!@-AaHtoz9K7VO8k zzW*sPAy7=K0wWJf2*?JDC;00zRuYj&9A_=wHmNssZ1@n9u zUntL}x;wn{F$xe%A?(yzdo8{Eja8=aDH^}`Q=>@&Is zrwEf=Su=BcXJs(VbFvOnvKuX{P>95x5ZF#Hj%~@-V1zn6 z2*$%IVTFj$TDzgUTPJQRa$vlUBszk2#FfN|pG47@cyf#g2?LXi@Ud#`%UwsA=(gR* z#l=G}NKRcwKv$UrRPuL4)Ll~OjEI`R4zQ`VZa`Q#I9djM{Sh!&w{(V8MWidDRkD7lX&Nc7F-sK2v3pIbWKaSbZA{i%zBoTN=R++$V2_>m*=5pu;Eux35`hdvvF(Qob=-m%f8ZB_HK-m0n3S!hK zDi^W=93Rr!rD#L>2%2d;#i#A_#7DZsezChz!0OlOWkV?BdiIHL1=Y_{mg0HQ=zVO(Z&y9h*n3W4V_H-g*=!-@bX?~#g_QRUERc4JQeBlW-&;2ZzE|>8l!b2Xi*x14vKbSH%|u!^CIOQ!@DNk#HusFbKl$UXBP8pa z(j!Uy(;9wPO!JZ7#tdB_gI$K)8uV>t6vi&P1t zG1!j4#up$mLo_b-CV*wEXv*85Q|J!7r>{TntQMMRt6Noj*meBA<+h>FW1=7m++7)4 zt$cEJ07)ZG=F0Q$Z;PrAmQ|n8J1FEcnP?R zA*>LV+wZGz7v(H0YTm>V@m`mf4#>~Z>`ns}Jg9i7&PX@n!kd^DBH6iD#HQ> zS#Gkn>K%;7c7{%f{V6MCu%{ijMf)|Oz}tU!E&(JfWIY%gyR}GD{`8uQRYMYY>7u%n z`=BMCoN^s{zk7IfxP4qaL`(H)vg!*d&;2%u;~^{XYS$8OsuqEY?kjA@*#u28>7&AP z+v91NKnEZ_u|JCMwFOMQ2kv2K0z&aqJs7U^A(k9Ju?Tb*qS_s!|CpVfqsE^DNT{g1 zRH(>65FW-#HrP6`BIQX&;yqj1Zz+gT4_ z3xv<*r6c$|$sFT>L&ab~mTgLA!?j&GA^r+h3AQ2%PF7PK8<85{uIBA4XQ6=^`dRIP z8wR)9aVY%N#6AmR^G+h!_XDFUsE~vHA{r&(IneeT7hZmrl5B?@O6Zkg;&klbKOwbBo3m*&6zSjmk1Z%q zGSQ48ScAJnU9frOiKHpwgw zu|qBtgyQsjoJ^83C#4`X(b@h4m%^m|_h~V|Qeu01;+T6Qu6kAO_^_Z(sj{%8xwT+v zM2~-;EbI~V*MRr$Zk%?*zwrcz;%4L6P;l4e-Y(kW0l;_d>iBZW+V{tX&Yz3SMJIyU z&L0)bxzLQ)E*jqT&22##c0>Gh1z6L|LT#W!tN-f1{}=gJbrhh2hxwiYV(LzF9HWyA z5s9uL0Wp;5)~`~5T_ILS$ZW`~9HFN#_gJQ)RnCaSgdz=Ga_Zirt{G6E=ir>6y3?^WItX}(qOy}+?MsAa-$z9+XQ26U_fx`q z!_1HDIHT?_StqIsHauKO`-xld9Pc~zQVQXtxu=^!i+fL(2cuKUBuGS$%O7r| z8SJX$`BWt{6hSPm)RST(7GqQWa`SyE4iB|$UMMdpmIO^;Y%yaAb&4rOu=n3lLQ!x^ zGhZlzVN9r-`Y{EM-smA8Y#1{aH_wkD5>i}0lmC!WJAs7p2v${4IfekFhB(_r34|7M z)_%djdLD+CMV%9c-0}>g+5oa?2M5K~8T!sBUxU@2RP%GBsLlY@>(XhBZG&x;KZb`F zxijRhHrqEx3w}-??;F}oLKjgZEg!euH(`9U+A9}3oTLd24bVEuZGuyNnz{4w*`@Nu zvF&2@fMc1RD<*=d$%Url^f--y_fr7iUd%LIssR^O^opd|_;sO@B>U%&D{rW|%fwt4 znYe58v-cnzocG30cKkVOgLD$<>3uV*cT%#rb!g5FMN7V0VGg>EiW1VwekY`6?PXKQO?Y*QX<8DA*%#Yu`S@)D5?SgF;B( z-XTi0Gm091IJ$!bouWbE!=TQD^eHMbWJK{wd}H?cRlo)T4+=Ktwx0g{rnsFdS$?F%v%NkvT#DK|)lGSMv zVNULE?lmJnz7+J(ORMZuMfW9__3~r^A>jd{-2|}b^ zKVzCl)U-2?Ty12mlyi0wi?sDQ_i;bk~S{WY7d{L zj8^4^3j%dIf>Ff%Knl&YD~wX!saJV_CtU}DoI_PH|J7&{t=|ztx!AxdXkM3^I0BWn zEO|u5R|aWYRkY}8?4qlsD&vtf@icQkBst{C1GflijGNbh$?Z4%AXz%P ziOX_effD^UO8nrMkgI^r?%Dz`OY6!W>q>ahhe+j%o(bM3M+?r7cz%|Cdxe8f7WI4i z=PR)r=5po^t0C!BW@8GtQImf)x4`Ed)ATFH=}QY@#O3^TI*~0uQp1V1Q%x`g0W0_Y zw3b~(r1{sQ{y`s+9=|dCAjpA{>Nq|`qE6_y7l!)Z6a{pVovZ;xW)iP!G0b!InHjtb zK<@j8PCNc)%CKIUn=XeO>)xi!F^h-lJKF;DMmHNCvt?YdT~6rbQ9JAXN9CE8W8{V1 zq+9@WA~>+S1>t!b2m{Rk;MuT7K#n^sB^%kZCbFUB^@8xYVIE7DjqB0~t}I~+e6fAE z9D#k2_l=BXR@vNS6~*1C&`>a+5EA9M2eVGcJScl7S&U`hje_Zdq-kZn3s7QOh7RJQ%%*6x zetltyz*cp?8REfcKPbv-?qe8h-5ShX2ZB*s9=x%)_0BgtsT#wj-u#mDv=GC@2M)g+ zGxM!r8s*_XO;3Q1!p=D83lz7biDQZt01-ENbX=es5g@oRYAgQzGxFZXI`K{nh#TYU z&}thtT0W`jsQi}zz7M6)NmY-v4yrjVz?6{f4gmo^Ay zs;fDAIhwx*Rys;XUG-f#`{jZY;%9@Yg#Eb~O?TJPg}Ay-QND&+@IeV>x<}PEGsZ{EbWQ4iCm^-V9*R+~G%cz7ClI z;7E;(Dz~&^kgC^z@9ZV;Cf}N&8}R%1ojmEUS4E zPN0|aoQJhxh=%O1weX|YlOTTjIsmBnta75v;N_Fzbp5p|d-yBg#y66j?&(V7+r`?} zL}B^y>b&8Tu`x^L1}-6TJ-aA}Z_3Zg)a z=$F@rasnMEIY48Wr2ZD?#N(Z@=`lZoUb0_u35_5IVjrRS5Wmz4X`0qD%B}lvcv8TI zvBXxP$JW?^IWA!FK}Fd?$Z4qr0mYjh7xtq0OHm5_LPJ5pf7t=7K1+tl!QP9VNRD}! z$Ybf=%mByb$a5JmnRh>856u=bN2TC*Z}opajFxlE)-Czgp)(*N^ggVM`IGF3-%l60 z{ajeqg%v{E1jhgDs& z0i%pw8NkQnNE5q^4ay79=@DYESxv&}r^3a`9BwjkdR#?|nST=2=ef+Ms9LeJ7fJj4 zsb>;J(AN|#@%)VYm$Rj>+$q$pIeZ(7J7!3lGLaE@DLZ8a_O^4@#tRJ!@N&Z+MU#o^ zI=IWXa--5>ULk~z=lYqn4%kponJa|1sTC_@sOLAt2|{kr`-9qxn1%sSbB@EfQN^eYMes;;f3uwKoYDrym0p0lG zY0Rjukj6s~Tn4&U!U50bX#wvoCBWd8aRh<)=2&3c2826x_}l4b8Coed2MP$6vkxCd z?!QPpe21FY8m8Dj&YuCMs0!anSpn~#nVMg)(1en@QGSrcecX6s=~g(&Y7E`S16CKD zn*aKd|J8Zb0SPL;I$1PIwL@Nkt%57op@0l_(PZUUl@<%i_UIcHb3%;M4|3jDZWi-DDqdV1`aEegKDS#7>d~~vwl-5CPKImbZmIaoomurq|*@zpZ z_U`OnQ4;=gO=Du{NS4VVMJXgle6VDf73YDJ?rjTQJCQMnNi^TmSp7?M!W6cnUBiL& zIC_S0jnOc&-ipr!e(ki=Ms``n*YKX-prs4E*0-AGojC2RmCE3#GM2y4NGGPE;$(KS z+?jwaVl|x6WvAp|vS<4OJhDYq&kbXlXaBpwdgAX4{6!1JVA&&aOmGbZZFds%gt-1b z97<~ne|R?Qnbd1DR-@e$vIXvJhfKcEARf~YtS>2@@u<}k6tQ42XrldK8I6##>G|m= zM*l(j`3wQlYyC&O$CZUxR#5K|&`}p*cvjdYxD?I34WYJ{JO+#)5+Bjn!-xI+7{Qnm zuC#KA(XbK+ZJ$9hW9F7Y18OR6YMRDq!T!c&ZyRa~FE_b&pN){MNUz9?qLi~D2-UpG zXIp0YfdT=^+0eVl96D3CFC8tH%t~tIuHe+oyVUT?z#GAOmC9x6$c-FlN~_7{vI~O3 zR}qeIu2Xtz@yrNn68hI)MdK!=P8VygrATgyp$4ka;-~19j>{UFay9&mh7Z7W0yc9o zQ$<1MqfX*0M_TQ>@8|6#3xjtst&4_Keb#?&Lh&*Vov|xZImF!ueFwTgQdf={%K4;N zDiX@vYCjd(YAg1tsjQo4YW4{7Dw?#~5TBqKSPCa+D2^&Hqv2l24^x)%!i}e;QUs=o z7Z0bk2N29v)TE-M<4%rgNMaNLy8%9Z;V9-TlLeTycy(^#Jp|O`_>B9vtr7Sc1OVnq z!6W*wfwvKoxR&#mu!r@;(AQVLS6BIA_c8_8k-EKC9fK{sgd1{25k+KGJvIC#28^=Snya+xgo0r^ISco<|HKCL z0n7J_sEvJg|8f4?Em=MV{jHzRyon2runAR~8d1#OwJf59mI^R~jPTF}$e)6fn$=eB zlL45C_5-LW;YmzVOp=i2 zM)H@|M6y4-=}JFEl)73z7F4y(MFx(FPR+bOLW7UqAlzH{$yzmoKEO03ae1>5MRnp! zSYN->J`|onR1;4PvvK$qh>RW`O$n{lHW;-J6f?9pX=ANxy%EL7!_!A8|lXlO0Elas;vJMpHCa@^{ab><8wmZ9v4sCP`IMKrtCP3e!k%Dlu?~w*5)n_Tz zqZu9WN|Zb?yH;zBJPS3T&@k}1a8YbF0x_ZT=5H<70%r>L6WQEFvqf8^&q$e>q2#3& z|DFz>X)pEYhFRn@IY~nJj&P@WPnLqLe+KQ1m=N5jkNwo18jKUuAJi(FF5NW!qv=FW z_s(goY`!&c&sq?|ljM;wPMw4VB?DX>dLW)WI{*;{qHR(5LA@c*&3}-ks@5i$D%<+! z1xhMDTTM)+VGJ<6V@&RA+v#^A|MSJF&m_pbXL)^pUk%Hae9X0aeNkc$HG7}Gni^#PZL7sY7eRL&pg!MR$YN@wBcE9?}ng+2M3S1R`8+s8hurZ7zqR zVk;siK6NfF%gM++P3BLRTs6G!Kgs^ReNPn+_}p?4JR@0**CY; z$FotAJy+ptLj;)kzt|;tqcx&IK=#toQix>jq^Un;TJON<>5f#)`B~+$b#@crcSss= zT72vg`G>{E0yW-F)<`MvO-N<2{-1iLXR40IP@llSC6r<9qOkpIM50cM{ly;uV~78~i`J z__Y=<=+;HaDD~-cE?J>huWs6Ry^iTz3D5p`G;Bh~0x`}P9s45(yTV+3A6^he&TvW) zy~rVn6*rJN$kOmG{I@_Aslr77zw95Wj&h7FUrmPYmId+|q}Hg2HU!H{Ji@{3$+pjkk@DsqJcBBUPvKPJ zpO1Su8dE9MrG*r?8;5ncfOP){3=^{FL#_Oo?rd(aGlECw#pmDm#T2GK;59%0Eb*RM zwz6f!UjAo?V@^QA*uFaR!2;Q+%b0uJozK11-fT1ZRMDr_VodAY~?9K?M zPJfq6vn5#dar4Hb)9|uLe%Vd{$9&5aO8TE}&5>lIecew=c^2+1y!A2Vt`7KP5zF;$ z#{=>ZB+LZ`+5BzU&Ek8WhwMSE9I zGAYhyyam>9zz^stm>L;LkWL$8=L8PXDd}E;VK3t;bZgM<3IG7b9oa=F)peoy&QMZh zYVAcxvA$F`=Z2BrV~I4pB?#!4QTKKvFkY*J68^cK&RAngnExn~p67oBWIFd}wHE;Y zKLEhLEd3cvN5>DoX&3HE6aR6*U&f&Z3dmBw^e>4%2m`liGQaE(z zb&qNalpe1vc4EH4plH2;qz3vRz(F#V4I9B928ma{C;>u796XQhU3<`RdT&sDFdDsk!rBJ%r; z_*8~+lhA}Ph9BRhyHKw*pXu;lt_7 z|7yvuEZ!bHuhUhvi7{b0nnC4K5WF(+-r6fwiGYP&qD{9`@Ch?|wqdI3&01jpoKU6r z*{d=i6ca6ourBM-tUd>~TyT!cIjj!Hr2-2bNgxv|vQ6@p1d@6+L+5=x!+B$u&r-h7 zm2#SF@$WF?Xt24*2hJoMD+pTc&9{UtF&Q613#M91*JB0UdjY#A5hVg2DoxyPL36Rq z$}hkV8s65ft+tDFTr#p2;CM6KQF&$2J%4acpQP^06IjZbVYwK4AZ#`a>lf8T>2FQ5 z5qJK_30P<~;!B_E!CU=Ck(%Z&7m>JAj0EHsaH5g<)s`&TYooS|q2iu8PT9x1-tARb z4K@eM&0V#9X&J$6Kzbd(1;+~UkJjA>A}J-MFY(esWw*VKp$~noRx4)aN>RmN+b(zN zxqzi@gkE_%jhbT1Ko=f&Q8FORHwIJVA%WrvPj29ES3XNzFfNaLDZ!slVPV5)idFK^ zxd0sQkaKoJ7%%ga#VCK^ zNll#2iKKZxpC?YvIu;_dcIZ#mbd3mgblK&p6*41>mw}Qd@IQvqs~aPqA%&`@^h54| z8L_L{jvxm;TLG!;9;68>bW}xM=9fv1+x>e&MXjDJM~VKXmQeEH;|${2!PYiuTl5${n&C(v8gOf*Mixl)qnU^nqk7bG zRG3H`0?)Oh;CYF>Qo#cwDeUofG@LMEDuz4d@+2j82wjaz zZmN_y=d)T3Albmn)5V;A`U({o?Mq{JwgcJ=ntA?t^`sE%nm&+-;kEk;g|uLb2lSSg zLS%ARiYICy`N-4WfukT|ovXUF0M;u~s$F6f(G`5q&Ph1}l4THTOkF)Cq-nY7u6?=xbh@mcJ;8d%A5 zYwy0yM}@2~L#<4{tXKc;1x{MW)mKk`h(23%xdUm!n%$5u!G-Ec!8U2u&H#gHbJjZZ zZSqIspqxD8m1s80NItG;I{)hxj67J2QhlAUKmt_z2{Q^l+Y13au~pLVG5UZ<=x@n27{|=_gfZ> zclQ9ifa!Dv*a8aVv6s5X%%KRKA_oQMbu1zta`I*A}ZitojFSP$vsy|Nr z_PS8F!;9QP)s#QGmmWk{6aiinqAA zwTNOdw<#0h@ZJoFng$(=vU(1mwv_zavwa5jGLh~(#v~vnkg8MG+Tx3q%wB5P)ssn3 zMfYy!*W9S1fTgBE)!MlYa_0<1vZvB^4Q-~HbR8+Lg$t5M*=uZy7`Oi$!l84}E&g-b ztJE*QI~yxupm5cXZfk7d{tUnJEU))o~L8}->lqC2Q{tGaJV&W&`JD`i5hC*7g-&e6! zt^SqVmo^^CLYjMq`W6XEB6oU#1C{%ZGV#-iy;-MwJ7ljYrMf%i7$+*$$u*R|PEd@{voryF#f<4 zQ1V{{`PzU zQ`R1c?;4*_VhYBlzZg_ZmJG$;j@}a-jC4r0E)!5C`Y(&Uw4FaJLa?qb z4&rJWGGUxOE8as-efXps!C~@^dlnNnhC`-%SH9#id3#F6qxf^hO}+sQY}Gu&sX}P_ zfZ2v_$7N2`n4Y`}Bonwl)hEbw6!vbK5|7?mbOfDRyDG%m3G6ga#!mhZi36uokNXg+ zyKXlqL>e00Rh3kO!n4fkT}`;EN3E|5&k-no#`f%LYhxVa|5x$)Go)3U8WA;+B^kIi zjU}m-g*vLT%yKIIk_bFqZkvwv_`EOen}wmgjhhh|n6Tc6j7Y|T#K}x4=X2=21pI13 zv(!HJA0F#^!HeC`dAwMoQfe5uD->CqiQ~421zGGo{>_U5+gckTF19Eq*6&8slVceW zIFfV)%&8@xAD@O2#Pcy?D+l649K7`GV#)JpB`@p6AKv}gE~NJVB#Uq4y7ET6Yu{+n zyVoU#HgJh~ljeB%_WKLZ)wgRBkCcXQ)J^-2&U21oHNJL=s4fQ}A6vb7qCkpL5}gYV zE&+t74t9*vJ#I>tS}$oo@P0pwbRULS&oe^ezn;f{*0#8!h;EW&*czj03#}mB<541lvek?3X=nsxXYT3XBzN@g9o_BN zSAb7Lb?M+SJh0O|T|aN%W;Y2IgSW`;@bJpoYXS6FE(@kO<*p{`Mc+F5B?EivP36HP zF8|H1^ErV~Hrv zw6EXawu7Pi#cPW-eHp=!OG%^1dbqfNv2k6AU^s#ScQqs)Bw!<8N=7V1O{kksYO?*Xb3NSU|0nD#3Fbq%o!|f=STwZFj|7vnk3V9d zw%#~)z~X0Y<4ggRV`X-MvGYOvam~WW4ITPjGI6p!LP z_@h!f0bU`|Y&3c4d%ph`sq??6X7RUVqJlB@$fuT_VOZ<>$NpstjqB;Y?yz4mE3(M> zp5~fOjR44Y9XAw2Y}p-vlGC4JXrhlLG)yHHm49OST!E!@k9{bTe3g52w-kTK$;6Hi zB`{s@!7{uP_KqFmhuhRhDVK}lXzPhCKIvgekK*#_YYZf3V*}Xh{JZqsoW~CWhGKPZ ztBesjzBE|!Yh*!=rs^J1We>V(W7m&MUXCPC@5@A(i$HrE3-ox8=G=V<^KaXknhAIr zn1`ifG)qVx7}iNC$XsY|9OYSSrN)Lz6hr;Emx66_fD2Ct##Y0&hK_~r4?BTvi^0~Fd2Pr4@a3!)7BZP5p$!&@I*MAzLz}G$ zfZ@RqAE1=Q&0h971rb?T$1D{!7^{?2@7;z5C3`MyC9S0&!Jz= zhuA34TE$pz#Fy*6jWyIzGp?o69U&v@u0?U{1Rtz~o<2q*eUOD%=(6&)qHSl-7V5@Y z2=&eRwvN9)&8J0!GMI7PGX;1kesEXMN|WVaERv7g_z_|!RS>Tu)b3gD)$byY;k`y_ zo5qzA;CpCc+*?mjAVbh&zS&(y z!k@~m?I9+_XexaUO&TZ01qQ?GNl>O*<6i!`bkbo^;E|OVJUU>tW$XmTC}Ee?;QNk<(7&65;Iy&Idb~cGkwWoQg(fjf$|1 zIJ&$Ud)T|Mc8Bk&WWeX=fVR>he)LQ&cq2I#cY$e{YrOoGd9W-=n<3_rNu)JX3hvGXsq-dK;S z8=8l;yRdN%+7+}6uIW?!n8#gSC6z5FHzJf|LfF>)v9 z4du!yqe3`@e-y}sHpq-Uyp{wX6nW6V+~b!Uj^J5dO(hAIQ6Gc2I$N&q7-|ks1ctNg z*CBq*!`gr3_6+z8fd1Fw72l`(qr}^}qln>p!Sf{0Y@Rf@9BdZ4o5{wLSS*B4o$3~n z^uPhT;;sA3{{ktI0q;7jAb8o2j#fYx$9qG!7d2Xda)8J%qx~L0FK=-mPMVYNmf=cU z4Yt78{=_=?cX9yPI;T7&`RuYT^SCa#sq5oB@ei_uj(4Q08bdf6Iw22UQFL7}-k5z%d-u#+-=$Qc<## z<<@vmLDn0$4cNiLwy<2CF@pJt{&Qk< zvauhDI*(QLeg`>|msRAN3V5~M15t!r89vpszjE%IO=Oy|NEdm3z#4Bmaz>J5r)V34 zHlqMq$Dmn&NpzOZ@Boy%1I)+I{kcj=IfNY#^f_Y^Pp*JqWF`Q8^3z7iM+`>zB{R?L z_P@)7*e#I`_O^T2$N|dt?oE}h$z^044gQ20IlAH_P)AI+hJZZEj(nYuImvyos)(WA zJSD*^YBgk8bdBC6Z*>u02TVDbaGBr&L%lcOE-ig%r?_#Ux+_^)kxdm+ z&{?>ETY9L79e>vkxwo zDx}})SdoF$kZyw1!drW1R}~o}DbF+CUNRN$mo!0g@{uRcfo8b>{0(i!&&~KfzyZt0 z3)lw|7yvsA;EmRzY57f|BYy=U_q9&(VHHG@(719MT6^9AvRyoK;#vIeEwQB?1F$Z# z9o5)lD2{F2>{02i3z%Qtc+P@lEGFbKu(wF`>(D6XZLmwO$ukhw8m{99ZvNGeh(P!) zN${9nkI{V|&$KZ%Q5f(BmPCKvonOsj6nMWorGz|>CyAAwQ_e^!LBkZ-)tKam{u`=h zV6{9V#YT&^&%^6pYhSjY?&A|wC9e>s1)hvpT+b8s_#XuCkS^oT!+ce{bw$`)kB`gOc5mjJD`bb)6b?m@Avp#G*IeC8Oq#bFG!5 z_c>&4>>c^wJ8`gWLrmSw3b?pnkoibr2~ywiU~yVNC<8Q=v8`H*nZmhWQJ*H#AI1R2 z3@>qbw9aeG-tQR+4Z)V|iDmxz5S(mU(%6yeq#7A^3?S?~-|>x*1d9W|#Lr>{4n@J; zYNJ#R6?3o)dN3IPtvq@73|U@^mdBilnR%_TlQL~?eukJQsslVVI9(<~!;WxsL-P&s z-z}&H{#IkoILZ%bx=G@CiS0fsAQa*rcG^Gr;-n5MN2k3KL}ee$^+tama0buJF&cVp zUE-e^Kf9v|BbQ%JR<|Q5>RKS{V{Z{!zM|4S5YgUo)+dia#m{-wHpLcIx*3ZYavk6c ze_I~)ozzIg+E#!dRAIBKl^=D~H6XBfyh zFa~Y5hu2X8=^xz)aD3jt!cVP?p)S<5nBZ`RiOEy+Z5d z8q&)h0Di!sA|^mfV6-xBqaNjHO#8Lg2c%R9W>`P!GljW0Iqn8YzkKHM3wwdbKhj`K z??ZYHnbWO9K{xs12wyMrpJPx~_`G}M@N@{fGYEAv$v1TUfJonzrQ^#Z?AwEJ$AqoI zMUCpV<5EU*VHx#s>HsQ-op=nMu$Xl4+_-yG-V53_tL!OR0I%btghxPIhT7I&kbbhj zZjY%zq2*t(H$DG&PY!8V!iS>s@96LeSLKXyI4v8>+301W>Z{IcBYF_Vj(!bm&cpZk z#J=si=ldQg&Bqpkn3!Nhs z%3;Px%*X`CZPqjPZ0`8!*$>)jsMw-huG&w>Goz0&AFHO{>ozHTIMPIX(Yb~!h|o0Z zm#0uDYy;Bm-C%FPpf(VpwvHj{7Odmx_yp7Jl{^CPgP6Zme_4H7E1AYx-*C17h7o4c z6qlYr7NSomQ7Z%tP&v0IMwRxX0$7bA5+m&)_!DLxjL;#_pRe?Db# zP(4mlYT{A;Gi$N^zQSqHGSqL$7ZgSuur<){gaNzpIXwo-o6}-)HkU>i09)elF9g2e6_=nX3aX>vX{HL0eVRJBxm9#!2_Z~60u9+4=sq4ob)Krjdvu>VjzXoHQ!2{;d&ou~M- zPCu_nD_$y`j{`wVTOp_&C35O=S|FxIMwbUa_LGQA*cSK$BPAUQ)st-_f#f3VP6+#z ze&)@RxY;^{z2J|b_!!ELMT!oR0+I4O(W|l+OeF}WZ*y%F13U(x(*t{`fc+xy%DgCo;ZR(#Y)oj1W6Ac0L+oA|#X#bzkvBd@&s%2seCu#YuLG~F7}2Fz@P zY-LL6uoi_=pcZA*FYTd4AyE_7yqj)&_y)X`Rm9zl2epfp4dbRon&Ei`nQ=^uBk}Gu za_+eq2DndifSW$YqV=gf@H)T|jHL$Dx3g&k7Riq>QJ4(bMBlQ$zX@&DasbopJzCeu z7GzH2*MoYw{<=)%+QTRTps0!Y8zMpS;p+9r&B1WrcQC8bT6!{H7JG1fKAMb^|ChKf z;8yB}3@RZdp|uqc`6jh&GS9HE@Fwy+!m+YrajOcv#}*j z9r-tRVon-p0~kxQH3HEQB)?WX8?H;&-$rgn+}NwNUhCQmHR>>8E}+B+?#w5}CCthl zY3He-i&nJZ)A%Q@MWSA?VzX;kP5Nsp;O(BL|I`!`_04Y{uHb83Hxt2AA1&z9X@ZUg zE=Or9i|R-S=QiosN>2|+533oc*q~n!Lm?cfp6R+2g{(C&Erx{x`@f(}D7z`kZ5mFyALgEjN8}sYF*`3~=1(yVomEB5cBR|y zAx=N$?N8SRvFlb?Z-tNNXCE<%IYMf3BEdNXWXMmk@h0*YmL()ohVEz`{`?U;dxK9{E?}vQ8wgno2|4W$pdho1?L{Z#tAyH zRUV)335TspvMarBZ?0Iz^Hoh=<#WkXDJzl45t=RLQZ%SdO+Yi) zR(iv?EvDryamv*~cSMI8%io7cD~9o=bLM|cnU-b;>aM<_6l8!!PZYpWNf+Asg0HQ( zcOD4J1_sFObC6y~phQ68BcT7K^ECZN&WyYL0#PzH$@|Ps5^t#tIk*?)ge8Cbh_-}% z_d_{5Vr1`v!1C*a=K1b@$~~VG$`o$X=3kcWZ{Y#9lW+rk2JpOU^_nJ|gl`y7@y5kadkIobgO+EVX9=*{Z2ckOb( z++(1xk&0eZpt6205S8JLEGesMTWM-4Awp8$G~b7bN;y2qAOmDw#u&OvgQypfxQZt_ zON8bvqXiKI`J-`6qqgG5MGlTDV!R213`(f>yoAd6sSLCA`uIc~~}uE3-2J{MV`X6$6R zG1P@KetNAQ2N_-UvSdPR$&OT=5X-b1_o0zbCoF50x9`m_N8^#zG2MrGo8?-sH|t1)a#Y<7+rV{F5(|AYce`xt@_Z5=kpri!uEutn z8mxcMowIInFix?q?%R)8SZ8+tzhK~{QKS4i@JdC)d1lTtiky+!@u~o~CqWt z=UaRjuL>rcsro1@W*io1O{^(hsZ05K!1qNyTLtX}lWT;#fLC+X-T_#GZB&Rwwa7%G zQ~K#&c?$hf2D9L=)Dhyip{lF)*IL_P)JPrfG5X4s?x|)Si334M0QPjQjsK}|11g(dbYjmGuB7%$MO*ojcGPL^J4Lmw?AFt^nqE|3M1x7Cjbax-e`Qw z^$k`XXfPx-*;6YrIH=EWL_}sKe}QUF!^xXwD%5`HrIr_lq2!YqE5EcI{T-HmDZ_Tb zsqxjtB*k8r)^p)qyRtFDk*zeD!+JQVwP55A(ZcSvBeIPwSne?RMHU3p(0jE+FOJIS zlhjj*Y83;jAEg6s-LF6q$f1Kx;!En%vGtf5Jv5D3yf_dHvb?n6+Mx8ig zkS{#}hf6iZm~a`ofV?gOE?Mp`o=PTfAxGa2F~c^ z?a^!@oD^%cy#wWOQkY-rgYCABRI0y=NdqLWW`aVz7pl>FFp2pH4Uh&DRl616L8XK% z8r1)&5SIIeEjyr@uG$g`5LzSXCRKF=FX&`!vDpC2jIh(yHg+i7jxhmQ9T}m+ecHTU zre8EJ0ku(%_L#&MN_l(%ZU-ilSkEH;^ki2g-xTMQK>@A#UZQaChhGdmI0-Jju1Qt; z!uVLE;tvi|5LmTV3$H-#K+(vy2o_Hg$)lY>$J-SHFq}aR|Z=MVj zHuwIxR@5veZ^6K-s(JJllGk`m{_ANy`Lgo))@{5^KT7SA0V1_?&av|I4x?UC1ZCWXJz)%d8^FT7FKird8z ze+PHXlVlTJ({jaY_z^Ut6@s;~;2K|33Gmmev*(Olv9oYJT%B{Y-LwwA}*kz2C z9-l=*zv*j@W#$6xUI&w5MwgU<@FG&P_IqSZCqtkQ+SQ>F>bFs|e*j6?>i{JznO4j?%1fZDE_s>J#4Id!#O!!7DsUuKulVNawwHS(pusT& z6J9<=q~OakujmUA;3r@--OWlz6S?Y=wC;ZVJ%3;0FgIvV(m4IWd}q>M7=De`47Z9% zFz{Hi04OQ26|Xra#fdg513K#su4<;~4*(fKw_Tz@1T?TKiwZGQ#>4T0^{j|r)Y*cp z<-7z3?{M|t4Uxx`tu+QlU9+mLhSkM%QyeGRVPYzk3jz% zI3%;Sz^QXD$(qx>x%E)pkv;TGPZZq}&uYa0ksJ(1))Z8%od@*nqq8-ki>$amduy2N z;D2WNRAzC^L6Wu4bGxD-s5}2KZLUBxCWFcs(7lw_6M^|fpHc+Q4z#EwEq7PM!7zvo z(3PMw8Ul@X3dqaGHxRn~3)=b|oNab}MK$SnDeD4`rJBh(IK$m5HMFdY(C@2>fWyWE zU=F_SotNj8RPjan%+pS9qJzyrCCkp&PucI~uZ3Q!s;k;NBNIH595M@8Y<+$fdWk4k z`j8uS4_LCr1&J2G*#4TtgJZAFqI}L%Bx{(G?-Ob44+0Z1q%g{AT36SRq;P~2pf8|K z)UUv15;NLS;oe{KT60fwyedi^Rn}*6H8qB#iN8}kw8Ewvl?=-|Qg-=q+-W)4#xke` z&dFc)q1gDplsFU@FCF%0m(n zU6AY!Z(1tl5}YJkUJ*!l8{cWJ70MW*<-)`e*fXB=Ss74rsavk>5qKGZ!tdacNW||IgDQN)DV9S)N6+mpQ$DSXbNHfYKkkbeX?Jm z`o@zOa-90DaT1LTn_||39uKcYqbKR@Q)rX3`*9kBbi^Z4S+u|Cu-?LmFC1j6ZCp5P z;?|Py;25VY?m(9m($i-kH28AwyLQp=HrJFAnHIx!au!RizKdL+Nq?y6`%R`?|HX9% z^}dk$(Sd>gW|v@RCxR&fM?)Lcw~So983Cy+ip{UwymOH@N0Y^#wbWtAEUW%z=8ebv ziKU2$u5neG8s_~6hJgfYeW0~m!%i_`w>XJ4{b=VuFZ?D>^~ne(9bAMyL@5=&D=xt^ z-+oB6|0ImIsBJx$m$@5+&}()m%_C4!!kuh?`s);W{+h0Mr_ZmQs6e)%^K{)%$hojhSE!&wp zO29o5R_|auRJx$>be%c@=)seR{JK0nnBP4MkWP=#8M@?dLhI2u4Y|ZmH@??X(2&rB z=l^NFJrJddV^FqS_hRW3e24bn9^+~qjiq$}3c2rNo}oYsv((?FWHpfpChzw|u^7FA z`EG`N|5{LUrClXeEvE5}i9w90==}1;x_DdRUSY`F_f1hj20ACsVx&vOVPU7qLR&hM zu|=vUHHG_Y9_Ix&GmZPV>;?(C-tM!&>VNV>Dn2ye7JIcBndf8x8iC-!wIZC`1{&%I z3g-^L?Yi*Me)Hoyb4Ebc<79D${cS8*BWX+W-`_$NoglN~%CDKf0(R`3E{G&4!5R%} zun?vX7d3!x>6TK_%L5EA9)|4-aqFnL$&srix^MC)8M^I#vi3KNoHI#HStz!8robXB zVQa}j;`qUli)@j?_4^2Kh-SiAA@P9#^Hu#d<~L6MnK(b6yg;ycKzr@5b0a5zvc6t4 zHGatWuwbP|uMpw#hi;2n{~9~S3V+x9aL#mT)5$@cuRxEer|xoW=M`A(E2QyxNB;VP zU+2bwT6D)E&D-hghK!TV=}qqnuo!_(d>ybMI#9(RBuYs_tYyyECXzY$;j_Iipeemo z{lHz02O=FuU1}ZBkm((_{5lLDsjaQn{h9y}5ZLiXb2nyIx3dXQFuBF~_J{zu^quL$ zt8G=-16`Wuw7@a$Re<@c^4x3h*RkS#G)L+1$GRZ1Ij9^1*ZwZp@d(a&q{P1Pw}PY9 zhL&iy0PvCZs_VX+Q<5r3zr(9GH_}fgS-?*=WE8%=S}U-K&e|P>td_(<=5bxrXFIh+ zV#R8;m8>2eV@&T7t*Z@swV0eu_dkT1<}&K0dU84Y&kUDtA1;J~>mr+OU+(CR?UB*xXE1T7OLiGG>bjx!rw7L`QY>=JNdACsgH- zxl`#1aek0R!K9MUdCkS`Om6`Uq@Wz97FzF9;9c-v*noX2T(hvQyXVpLSex$;5#6ru zDKA+DTAuC+3lmTL)-ThVNhCD)+yCR}D+%DEKeQP(W7W zgrCkv_vG^!{K+Gt=3UqfO*KuoVgg%!Xr$e?=+kcUxu=VcM-3jKgYPd%Uob6y#;z;5 zD>q}#8bX74pdx9(vCtwP8gNPw1$xH)8e~+Wa!?mi&lpA8f*I+Uv;5s&?X*XvWTk_Z z|7Kqpy7I+SwG&?j7*YjB4Yr!7`lqFQ>OkbG;uPdj#oa}fcK5WLigtIefTBM82cA&C z6-hY$Mp~;*_XF;Ok)lg^iUh)NoziZbHvVI0JsidON;o#alOk7a-swRiN+48(4P&0I!!DoM(nz31{iBI6?m*0NLF_hkmJG^k*&pONpy&<0VVGIC ziwk%dR@YPAO|Qo91eAOG34`&E=k2}Ffg}&?=lkww=n`p%4}Y2iew%8Oyht=gw>!~P zwjghT2I`xLkrPaKD=jn7R%Tj5@aA`BRkRi-#kdl?n5I}%)~Qr#yw^-YkN$wi9TBUb z9hz&<-#2nrbtxNBR35!LjGhsYOgI+3b!|o#Vcr?a;~D*EY^Z}5@u9=qT@N6J9?XD8 z?26;53`Vdume@9{mbVg;*|(v$x`dvV3>?n9vD8in-8$01Z5J>~G)D1~^M6B(oAhMc z?wx{2j2qXOgN67R_F|=T9f2;*C777a$cCA^q5YNa-wCLV*uqLuR1&pM!KsSA^S5!v zUD&ITZ-L@MR4%AMd4V$I#E1ZoO5vv#WR*J<()*-({RkVr(jK_2q)e#AKj2RTPFU1g zE-lwdntRP2fl?i(4=W@6k8BDSJ@<63#O!1g^P7Uk69W#Ja7LNi?IZrO&ik>`SX(Ic zEpxbikY;+fXUi_KnrY&3#@3ur!GprStqq9nEP4$$Xus;vG4DTFuj@z44LiWx`76xD z9is{rUlz;1yAbmX-%GOHkBb=VQ};E^!$--@ixm2>QDW@hjt%vkBpeXCorU;*mm{s9 z@EW>CacsccZGY7yoOMf+E%b`w&NDizEr39_7`CD4TXGPH3}|quJqJo7PIT#TYO7S? z#GWU?hR4rpel4p}9VrP2btw&IMVNQM?*ViMaGnf)VxCj@Q;Cr~O!hq4jYpT6}%{p)3LkSJ6I?Cf~hbW^MbYLwSz2MtVq0ze02z#}Jaa4P^EONMr<&P}781xVQ z^PV^>UZ;4f#-PI=-sCCk+ClS7)u2?W?FLnalTs6yr#;2(7>bH@yz0<-{l=es55L=r z8*w-%gLbd?A3a%9mtE202{8Kv9T?MfRnDmWrXb+}sd)a~DRoi8?Xs>X0dzETU(-;dVWzo+FHzvsymMhGzq32ezxu_x!7V(^gMj@;G8CS(Q~#6% zc)i>}x{IFtL{mx+Z84-Ee4uuyGUdBlJY|$e?vx}Y9s)(3a5rGr% zh3d8TKqv6s)C<2CvPugCX2Z*sioqb=0t9i_#E&q~g7D(-uTvw6XC3U~{BK@kaX9TY zcU1pzNR9aZc~>kTZyqG5>gq@~E&o?g!M3U=L>nZOA#!K)8!)QSic3D#T{IPie6!mdyP2s=|+$L$1K%55qUR?-S} z$W%0ir@p~qA z@L6umgyiRt)W*~6N{rfOBfC00{I-`|G5Kj&pT_myNV3>;)Y!jyAHb|wj8D@B z=%Dr%b-28Xd!Hgb5T&R#51<1%3WO?`urY$Tb=;I)g#u!qeq0L!mJXK4Yxw@bnu9+Q zq^a35E@80;qwC(*&w0iH1v=T-B^DvRY>gYY1{i=pA!zjUNJ(hee`<{*7BJ1gW7iG; z+0fh}3nZa>pa59g=_+|qNSvH-vm>;$K=O>Mk8_)# zVR@tmOvbs}GMF>`s--WftDYSfe|L}XRukt6Z_`<&z^C8NZL1kuY-6i!^a?KDJ3HN z5vd{1baTUsjVxgT3N4uE)vRD$fCu?zq(9JJB+6Vwo@8)WT;uWwg&e1p?fMM1T2Nuum-*nL9^oMxdP6T!qMzA4#!*-ynZx*3bz0+ zi9U(V*g&ROCm*q~s?xVjn~@jaf2i7h;@gCHeyLxu^u0mh@M9aME#@jb=fcQf^DTXF z#g~rc$T_2v_*!=woaksA119w}zo3bZDELpM3zUh=&hnfz7$OE|R3Iw_m$VOxd{3Y> z(W(uuFI2=W4Ys^8cw{$`@vJb19szrK&6``ssSBaSRmXQw3L(!hf5et-68V#i^MH;g zb)p(v2+W(Macwk@Rm@9O*cf{<_Jnigscr|;HT?_4VYr<|-%y*UEaEr2WcOx^A$3pN z%vk5x|J4i!&>NnbkNNVx)G?={5hE+YkZoCwfRv3Vl}#Z}arz>4D^_LB;qPz;f6W!e z^99G8JfU_69(Dz#ssvE_dfSAMck#6(P<){?`=ngIODcnv)eQ6><|NfF&v)E#s9@81 zDMvh>6T)?5VHa(OeZd)AXp3R&aTzC+4saLgDD&x*2xBKfI!ol38!V@ znwMhRr!*j210?;EQ}ExgWej0Bg84V+VN8?wBX1#<-d;+Z)h1c*;-hL&(un&OCQiq6PVf2Xa*ur^j@aiRWkCp`j{vG`wWm>Q0A&5W^;G zmqwUQn4|Y!^@TgmQ)i<2#0#2_8UiuqUOLG4qSh!}5nH4Y*-llgOdD>;?C=+ihQIQG zxnu5UDA|C^G#mHf7crW(^Ggr^LG3LR@yoT~d;fEPmfv0?f>7a7(eO_{3ug2$b(Nzh zgOUzpI8n8Zht4vo*RggDw1<>UMy)ddLD>&};%re7;!jF5RkCC_4dEQ_rCXv0ZMfOt0(M{3 z$r0yt&w<52LYhoTaw6*pObl3d`|@Jb=xNCZk%bP@SFR+D?r1lspio-_D7?GKC4OK3 zmw=R_ZP@Q2A@tC_R@vQiwnBYI-6SViBP*EkIG5p;kCI(9{`~s~nc0MIP2)u*7I}_< zo0%cw)o9=0kAs7M`D$B$7?R$Dl1RNk-2o)pWnzIImAc{+9NAnzjJ)O=Uf4s&PG&{I++@l%keGNiVZ2;a>KWe9@(5#P2R7$1`2w7atgUzikCcEL%;gSIsFGYMML&1Vk$og`uHEg` zp$Ry$>mFrd=R-d#H4=>`s`%EnVfbu3NgmeTNnaKKRIriQSE<$R^fFs8(LN5U^aIyQ z7gt{Gjm_ujJzQGL{C-YYS;ypu;z6FiXt)3R4AU{*ABg*)Ix-cgAM}kR2Ci_#=(Zz+ z`2z?n1F--nqF$pX?*M9LDj3N<+CcjGLj(ID;R1HwI-zSM^zfFd}qW7qj1t*B_JC_p#^F<(0VB!F2 zTNP9rcUHQc1G?M0yUB_VqIv1f=e2UIfEOci(J-pT1iMJ7mM4Lrmtu@5ihtfAHhi<< zo$)(HZGbWtbozd_Q%&!fGSULx+sw|(>aR&gv?-u~?I9EH$jg*bv9`&zMSMvs-;w`y z2!{IbH#ANivU7vvVXIiWN8y4z1HR)0@Eff#xb`iZWy3OaJ zMT3zpVRvHXFn}!?X2T!^ppA?J5Ay08mvpAgy)+&5niM-B91jp<#Is!k@h%c}D+Gx1S0MBqO9WEBq3b6n+PdxdQi z0Y{yjqI3WffHzv?@`jUP7B|6PUW40E+Zn>}5ZA<3+D?2LrFJQ8>ID}y4kybgg? zSrXlr=A8#u+9>vIA=+M2UpIJRwRl_(M_R!MpxC0azLl452;9|rS5r~-=uuQl&B3t8 z@EAUVHF-EoAQ4K&M#Po8Q8$Kk+G^u_YczOV&hRznj@EA?t z*6FzhHIiVPL8kh(t#_}8UreR<|0&uhJW2FH;S$j){Y;#TVv+?YGdT;=p#{;g02?K%cA)F1Wr&)P zz3*^UZY!h_hYcbMD0;gZRDO)m+8c?uH5830VJ)%`>P`7AB^lMe2K}4?Fa68(U3*n* z;MXuK^y{6Ju?1L7f6Oz4PSF-5X>!?WFaer16O+$$x&R1vxs!adW+*69ik8HE8-^r# zBlJe>aXnN7d)3*O6UncXF#dN~^bkvJ!Mz3+XYmno_@K(*HGQ|7$`rosa7-^x|AhHQ zyW!Kxim$AmNwIjoHSqV?RT*FSlkK0!IBAiCB*#N}yO+W$6&M)KUu9K*JrBm#q~y>u zyIestdDpisfX!F!Xf1ap*nNcnmhx*l^>P{1wnV8Yj0wAU_=GJ8(l7{>bUJIsB*#{_ zS9+8TJxHX(C=xjsX`+VCSCp2|M?J;qZFPk{^S@RY9rP2bf|B-30O4F4thaTk^Clr5 z(~=!P=jZii?G~9K(jV;8>Q?p79D%Q8JCM?Rs|GXxA@qsK-(*#W%wUSbUYGXP@oY+? z1$xxvkC2%JUk}tO-q1M!=hj3T1T5omW<%m2#J;v&zV;3a!J(j+6iuKFLiiiu(r7C$ z;{N+{cIim>quMYCpbBTG&CFdUAi=OA+z*=E0_Rkp6CDCqhVY&{+zo^ztHThY(-A3r z;*G` zJlPXFO5rh+vt-OkTW&V6BqVQ$eYU zVMS=C_Jqi7NznJByqe4Sh7wV9fu96)X9tTylOLmj#|41j_U5piWizw14)z+>N}Jao zy#?uoXQeN)+Auy7;M=S8^?tlxM0qp(K-%TDY%L8E5{9=USWZ}I42Ceh7{c;&9){2{K-?Zx| zNyj6TKCd+#bVCTSzZrIf`xJ{fjnB~}ES=WZRfBKSc_eM^C^%x(8_f{wf^=oD$7$y< zW%nW5q!tz=u%X-*DA?p|;<|oH{}4O@mYbBuYq|r-!k~sGSm#B!SwsJJ_Ve~l83AAq zg5Mb5-L(DuWJkxHu^)>TV^&7sKJmGdv`?(%1QOgE;A&_4Oy{%H3TI)YN#48h*W?&&NNOjouBl3k3}U!y%LjZI*ZFDuPTlL57QD1Owl9??)l5=UbLg@>A@AMF_iaI5aJ~did$zEj8`L z=yRoR$OPuMT=3$_NRyB*SIo^~zNM6=E|2#%UyG&iE`}HWD2&bz9(h(pmcQRy8CZoA z4m^fTEvTpIU5Z@-ns9Ym**8iLgGvH;Rf69)S$1JOY-7+AoKF_V7to-1fxmkF{duA9 zs}PYEBcv|byT@*M48usR%w6U<60QI#Em=4A!;c2EQWUhYX2*+L)W!M&!cv+uk=%#D z4*z0^4;>{P*8YGF0x8dJlrmt@4z)aXlP0N$sTnnGL)v6MmyPKhabcKrU_+0Ss7|>a zLaUG+qE3&$zk2P^4HmW{y!=t{aK_p9XG=SyHyX233Z%t*@)x^qdMFEHKX9Q2BuLEk zu)8o5spiU6-@Md|ey)2!3X|+9#?Om)tER2qa>RI0*{T+wZi0%=WA>>SE!^$suuimP z)|gFBbQo4-N;_LOm|+-I-qOXf^wn0=dm-E@YVy_vZ&MG>1j{!JEz_=(`eQHLhx-P6 zJ)QrCKh{lrI_ln`re)^Vgg|%pfy( z=Bdy+h|rX7>0?P5_{)TSk|9Y)>XS@G9$RJZ_^ko9_arG4@RHF#H40z0ysE!~4o7^d zlOgJoBQYA~SW?~y(5YE~HV=skg}jc`lPjTfuPZsu_;uK=cILZvpvVJz<@K3|oY?+i z^}{S}V1W;$KFvI^*@Z6g=07;(ZrB- z1DLC!?sj?iVE$VlHdPBXdLKk!y^_^9C0@^EX)0fdxiiB|;h+DyE1;Yl6082F?({|o z=ySHNVuDKT$Ln49CWaDPTB9RIZ%Co2`Lm=n|8^z6%u4|W2NkA zsp`T(n!qDFcI8q?7$h~L{(*yE{VtF9X#=&3v0Aoc5Gb>sU40+VwATz-Q`#W(lG(ed zrz^G?6LerG5@sT(5l(T;N*aQ^+e3FZa&XT1Jihb(q3;YRuw@ipB5PJbxCH&w)5UOz z7ESXfS~2yWGNNz4k{e8Lbcr?D54?ADVEPd96pX#2hq`2w*)Q5s#yl+bx~hYKz-aVs_isUTffb_D zq<)D2=6N;b#=DLQcgurdTCi zq{xM%{Qhep6ds_p#mO|Qbk)aV-1y8j9&6tzcV!!UTmZ?0l53?^cJ%l9iOHnw*Isb< zgtg%-mZ@Ch-52Zco$}EL$~@F+eN=RR3d?vQ(9l7YNU)lj(of^JpnrM-l-FfZL6d=S zSA8VISG>RC)AuqS4f=e$JnjT<(70qa8cxRQK2oL_t;ki}n8>m&>jo-*+m7Jho!c}? zr-kwj$iWksmQ19+SEt0MZZkr?yH!d9NExsNxcs1#hP2;i8aV$?Q!f0+U?}zr*iluE z_}D#s5m?DI5Ur*XIu#N?uD7W>mhBA-u)bToCv``py$$Ng^EdSD6+GX>_u3juOs3gd zj5C2!G6c({mBjk{1Ee6d0do$p5!joEe{|BqCNC}QE8c??h`vBfp)L7 z=ay{q&00CzgTwubwRa-mt)sU^T#UFaAjo~WqlGl=E-q^_@>n$NIFqfnHvwIi3U6`e zdHW@?RGZRuyOhF`j?bg0`Yo@MujRU?9{J9G#JWV#g=^W3Zf1Y+90ui1FGpkQf3p~R zt7%tB67ft|`NpOVrj8^^$;W_HbwfmUliTW~$uWdq8L7K zOQn!o`Vy&A>qr)^%lTY`(_r78^=1+ses9<<0zq+#rJfHSBmTe+N1K6T@sJq+wSTL` z`MX@3Nx?S6-cpyNh4*@R;NnRmG0)5H^v^ueTHu9H9!a-)WJKX_$H^&X{HUY=n(zOo zTeU`MDgpGgtI@O|AfK`3!*N`e?G(_7v$GW}csAFj&n`PvC2-^*p{OJvmdEmJ_eUg~ zlR6?_Od-nmZtLei9zcx+e}~ZB2%99Z0d1tx%@S%*f`Dru9g3F^speBBU&6W?j?+_+ zGgko^?_35-)rTXny0DC)B{toxQjW@qRfCE@cQ=}tRUMb+R4M#w&AEg!pCz%Pp~tAL7mqPsKjc_oDH{gr zy&FcgDCVG*1sr_5)^q-gDOXZS!yz71l;iK-lB)!Cv8f=uO73eyF8(jCiZ>Oxx-ZYIv>$YuIfE3Fth*UB)%1@M zvlwZR0jvnI9AWT@_Zkik1TytChk2 zW&)W&tG!x0r#bDZW5f46CygLzo!(TcZ$~NUR3q8Q?+C=%kFmo>5@SXV0J*9!@kXJ- z$#FE2i&eqnnGfPBG6%wv;ry8(ujGWfm-1||oL?Smk+MK%H>7y4#lu`XIedZ3-{z?u zAd@RAs9ZU`#NqOpICVxAbw_{%2!|M}^e24cBqQDCZ0^~kuCFqr4rCO&Ke~MFQPki-Me2q@ z6j~FNJM%i-c_E++FneIv{@$kp?bzQAUPU*^gNxG{@agWWH9q z7`}h-2|l~t>z0O6d$z>ukP52+(yWAQ3ZO?|0Xy86Ru2M1%K>07%<-WUDbaLsPlMq- z)2;3NP~D6CK?jDTr4T*SV>8y0g$5p}nNnLpxLTf$cQoY)T%hp|s707!puZ?xo|0Zn z@y8g)Se^ML^6l5%2v1@uVDCv)!2_@Rp&tLxU`g9TpIo`eIj&{G+;^wJRABxE`6r5B z;0?cs{I@Y&4OZ^Zi3Qim^SJ$vZHwp)6v(Bd^M#)5JOS8vr!=ZxTEXP2WiK-(p z6)ILux#oM$&+bQZWct<)gm~kWHU}+{!fwDrDI_mDFf7fizVu%8yGgBp z+of`@g;nv{rbWTiJ{f(~1}^#F%w&r>|KuySo285%SK*I2HcsxoVMT0G#r*^+Ci_hu z4g*yHr*^dK+eyaJO%ESBc3md|u}31ZCnJD3usUQ%WRiU*e1n{cXGVyEhfdhgo1+V$ zR6U*opslw(2>-?qe2Gw#`l(|B(uT(DG+;)pPf_9XNCEh#C7r9f(%LY@$E2>v!=3kk zLL%L`iJ6Y=-d@GSn~-=hhz>sU{mP=_0euZ{>aY=_lpnHd6AvtbK#%|RZ8x%sxB*dQ zF2@`w8q=*cjjeD4-1&$c%)n`JHEV{Etx_#o{PAV^1G8ke#Js=L!PD(zPRUeq>nN1? znen7UQi_}Egtnqyjkp>%)%#&F{F|#}JJbsI8(5%ab}j1i*&r33$P<_inXgv+bRK}Gb7&;D^_;bWs5{Fii?+nISl?y|!s!2`!14UbfwEW*1PhfNYNPwMv+2=H zQ@t_h28~hq9qg;jwz3Ja^>1LUfr^kAQA(mLC23IzZi@$CES|05865*7Nr5R%|8 zII;ims1+mUIZY@;TGwqc6Y$iU4noz=blYfv1~bgKQK%tC*>iJr3JC!iO{89YUwh6Q zNnJ~R%s+}Mr9C-{F*WE=%+u^2E8@CCB%kTKX`t7xz%g$?t0-g9Fhy4|G*6e%WmGbi zdMQ+<45dm*P-PoN_dguwvK54m6YnC9h`(qnhXiMG?Dx7Wx?oz~IEdU<3J-wK;0g2y zICjuySb|$;@PN#bye}-Ta*8|aGCsb=jUaM|UW?t>>UD94F~(LFe{Z_@V~LjE!WH~J z&xJmS9Rp0khk#voM(@6aH*JCqVGHUuvOH65h3e+Hyft<7y>othvZK-w4$9qN+6WkRn-O2#tl8f3|}}SpRP)TNo7&4^#95d ztjYxxa*ph&Zoa4K5U&l3S|BBvA>oK0yEh!@#mOQVweJyfvuqpflPag`_&dH@qG9Xg zLqzHg)$7883o$_~UN1JLcIgV8-*SOLE<WjXsDgcCDNh$&#R^Z7 zK^wwO&h*+df{*wi;~;%h-TsKldGHi!;VO^nw>%=zw+!fB~XoCS&lQ!LfMD>n-^ZulobK#x=&3Jl}4sm1W2M3d-$kniMt1b3l zzF?}(W};igrjL1$*^=8NO1fZ0gKXk3XFUF9-z9Y+nUx4^%o(jC3l=93tgNW5%_Ao+ z!OZ&fW+(GgoYo^rF-`$w9p@mZmr{jcy#cRHsmPtRhaYOAbGXp1MuE0RTQe5-^qudTp@dwf$|;caq(pGS216L=bM~P&VP#&J8Snq>P&w z?)I*MKGrkS!U6uCCCK~p*DH`Ob#H<$T02Ihz+l9a$E3P#Nvk0R6;8i_kHIKREdZ>_ zqA-Uqltpa->t{{0AYI3y_itqjsW%fgTOD*_b?hJk7=O!Ty{cnE zYAC2$*~z>OSSCYlNct?nY#Jr?uh)%EjRhjaC4G3Js}oxfE(4l-SAQO^ z_Haftot<$KBJw2v=?nabpatkU6GvP?gA0FwKggnvDJc8CGV>m(Fd)IOUla5ns@W5s zP%xt?pXlwklMOyGDX@`VByD4`jEA)qtCW%pgT2|{sgwy^#1qWqY_?Lc@xc~9n99G* z!wJ8~$)GeH%P7HOK!K21bQ$t@KmTz8*OA|{&;D+-r1!C_ebN`I5TEvckAMcEcI-rJi zbPe3RGEF+FkV}T(71cHRddrusfC|0ngid&FaG_+548`WJO3Cn$=FN4sG^ML^$;}|m z>L0Gu*~0kpp5drA=Y82#O{h-f#TdsbprxijvAil-;>f8gi`1cr0XMP?BD`)gm{ z5pas*r(Ud0pfsu2Oz_<9@L@H>m7YKj9Z*-t8K2C}ieLOP`C2^e=+;X`*@R;1X~U{o z*1A6Y|lgfVfnXT9Uh-E`gJiVe8h#?%_HR#aP0`}7RJt_I~g zRbb%kzr9Dcb#+U{`_IeGJrOc-^<3&i@hbVfZoa&5Ma46k0Tg*t%yw$l)i$-`h17q{ zY!W)7>42PC#?5GKTU1f1ci;8K!+?!@9G?*{Kswqj(<*uzlRQtwxd)8XkOyc!1$2e} z3-VM$llfV|q{@_eOHUGI=Zy?01EIj8)RCU3B%l)Q7h@a$mlh98_0_HzB63xcw=9P& z2Km$K#Q3HHR|5L9+2oGuksm5v^l(qCZV}aLfVa!kY}y%8ZJwmTN^h>$!0lyx>ci$} z^0UjJ?j(JadhK0qvXDLZLDwo}KIR6%<}l+1)csJ&aOQpnuQp>XtP?#ZaLFwD8}yi+ zZ{DA*exhBYo{+&B5w~oIBMZbyke{}d&CvaXAO$(;oY0Pdkv#Ak2S;! zT!~Y-GN`R2nCtNE266yI(>jvc@o%Z+!&^q1dkMB@1+Q_-8^Hn2U)2J(=BG#SR8n=! z?~Y2J)5?ikAfClXzvx?vdG4j?|Hz+0 z&WlE`*j_Or|3|#XMc2t_kUd7xzDnTZJye^XHYLjs@j7^mPxb;UGj&C@Fhq=P<~Q8G zWjL;AUur&JbU5?3IP0%_^Pd3x4(v2Xrlp?!_d zK1!$U*Z#Bc%vgi4peMAEM#8GsJ@&h!P!VfwJ4eTluaql=RBsnm% zG)7!-1f7dYlCQE}uEg4!Z9?Pf0mMs#zmiGr?(|y~_iLZ!ku}z<=ANUOd8m6Uho?fD zwH;!TXmCd_1b!^it_P!dGbZe~*0w~MfiW6VtIU!wjseH^;Dq#jr&krIbDJ7woQCP6 zitFm@4f8xZJk6Ppjn_I_bH)EBnAYq*iw;C2G_lFua7vN_$|M(b600rkdzb{9e+u6; zgWxMfy~3L}&sHq3>8KZjDmGnKFf-#@-`F{{snQkM#PW6H33dx*Rk6PMHV}#a(XUw# zMO$EfRzb$U6)G>`8%-^GA^i{`?~;!nngTQokT{InD4D(ocJ^nm;36j)y?7_GepTA? zH(`iMbuq11aBBRwK}Tq`u(%PYBA`M}zo8(TLYKgOP3^i-%Ccv=uKb?!zi2Q0+wVv4 zl0`95Q^q95>wOh-3L1P<_haKHbfm*!FL$Y|bFJhEgJ81LT6pjI37UXuU%-0q1!L6U zrp)UW>*RaOJ&iUK&bCUJ3D*p-sk?h=R z84>j+<@bId(DDmaIMM~I0Kr>DC!SpY9(n#+bm{x5u+(lW*)uX5gRGrV6de^9g?!>N zBJFpi%})DM6imaq6I-4GzIFcGYB-BB+_3Ykjei!}*2d4MJ8Ax80v1B%3ORb1wS-}VF{ z)L8+>JtfkkS}_TDhB%yg`z9rPP(RN?YmKq|;@bTSPAXLGHzy0qnup~;xS!IqS!qNY zH^{?W`S`Z}!gS$Ib+;;mGcsRtE0>*J5h4Q!?G1@$|E{B(lVlOn+wCoHit4WPdH<#> zoI^je2E`SH9KEN#adT3_<9}WjbL=6zx59Rxj+Q5T0 z=0?l%P(C(xHceQy+`KEKWlQ8)yf4w61~*~-Av-Xcw zX!h!c3_W8F@EKf^>6sR3DTM6~_x@VNC#qXA_ zX7(%0o-+XuuUx7xen9zE@^6H13zSK+R;z{BM5u_Q0X^4x?Ec|Ut0Y&CqRy&1Cv#>X zT&28#wm@IQV#?T1@`8@P6MRVfqF7!CFk_#Ar`MP|tOh33y6E=H^g=BBG>;L|$dvJOR1}RLq_jg!E z1FIOXE=(!8{c2|t$|;3g{@5zX^#QLz(uoJ^b*G2)`E$loURki9hv#mO8jdk})A_ZX zy1wWJgAYq1b9p;;AO?%_edc1`&pFl6gTUrs9c89E>JC@{9kb07yf>d4t7g#SPJdvN%C z#TL!(VZ?Hdy+p@;u92{72{#@$v#8-?5VytkXMvGE_d>{>(6rznKZP$jY!_`-!CDZd zJD-45xzEe>2ZFus51vZAfzLVWMb^oB)-DRNxVmF(X?cMVOM{Osy9DGA`CX|m3FkK0 z60W{ecQ)LXDi}u&yg29ntOHr=?*Q80vKmh*P3*t+(2v+Oq6hN+|P=Ll6*s(s0DL;eYb)4fIjI*S6O8V<`dKuiV;`Eva zGHK`f^cwklnPz_uz-nj3&r-HlT1Lp%vm1Z4!mHB#<*tjyV+NW*U?a^L*{J^S>e&q% z5I*lGbQ!L_ko;^IN5E+$rj=D((^AZeK-J(0!c+c~g=GM@^hDr{W}dbCE%7gXWFRJK z&u--too3$$UEX5_rZYsC2Z`S~L7It`Dm@W{^|B?&6=+04E@f&i@pQfIkDk%;TU3`HQRwO~ z-dJ4^q5XrUpehLv{$LnLF!Aaw2n`Lb>yO_eB5=Z!DO;l(V1R+asOP=^Ay9r!uD?mL z59*>o0l3{btgfFUKnliY*T_Sv;jAUD=L9Fw~vm7TmCA$!%Ig;^C!;@qpN!F?%7Cn877@$rqgFM8F z&;Ax7zQTDBR3@PmPi14mrK5hCcykg9$oYPb8~9374$k;6yr-ig${mhKUExsMw~W)6 zopFQ(Mo~D?vQrlv^~eCnlWquv*{@r5HL~5K1Zur;Jx{Wd=OnLkbZStqh^x{5jCunx zo??4B2+&NbINPZnNzn*QU^kuPt=$>3f>;R!m)o*r#D`$B(-PZCxE8lnwowGxe+kNU z8g9+hCt}jUy-9eg^IOx)5(zbzHLh`7Zz;L86xVTReTcNxq%iE*ZTKki!*+60s9C>E zDkeN@B(z3Jp864nF8Pv;Q0K<8-t%+Qa9S%( z+(#1FbhgS%K{@^pH74r%-1OSdeK6PVe;wOsso#8>N|Jj=!A^vY^uG~-sVF*=QWD23 zufsm$SD{ihrM3-<$p;l>-pPqE>@@rXM31*dmSR$Qk`RDE7`1oZtRS6lVR&n?5m4D- zhiJCM$gddA5_nMm*ejpyi74kM@Cik`7G{2k0*;$GvX|)R7lZYR{CG8_D3Jt;NG*7r zw==51RmFLkO}Sa9EHohnWk7WqRt`_TrpZ}tunz|eTon%XtcI@RpJ3c;w8-gNtMnSi zs+dV%Nfv6EuhEPW7Lg^56(_p{LP(ZKIyUxML-D6@)}7Q*ltK}l{KBi!G6g8q)#|~$ zP>@OD35W{D8-g^|oH-8pZs0Q zE8scfj4PU2PuI{{! zdKmppB=pRAsnc@>WU?=W+hb`Kvohb$98vn2GbPG|Lc~h|z@7Z{2 zzHnHx!+GA#V#Cerdh%q!8NnS%@9YR;lvT6Qv$8e#OL$)ia0#dyG}5c!r()EbKf+vj zt1L5f{cRrQtxI$vtI^ji=xHgB2N3I-`)8o4yHrOKIaEz_5!W%Mj7|l@S}WAQJ~}_3Yv^~V{z9B;snVi7s6!yn$X-1 zQily({#GZ@Czf%8;}at4LV7Vm0Iy;;ON8(#N^5_x3D;ej!GV@!pS-WvNd)ngx<;T< z+f`4H;%NepXzaTVxQQ+jop$r#S!4GnnR@t+p^RM0v(79#Y?wFoMtF~t(tR@wARNh! z8-<7^n3{@tsHR{0htOa&q?M&}RZ2zW&tBtl+srfI+zcybMP87`hsi^#^f*zFS#>&y zyUzET4{(x_^ke3-t*+0azI}Dh!Ezld`9pEPGn-%T?;rMf^AI$dObFqotKRb83B%HI z*)g`CcN+PZdH?_-8u0Uor#KQr52;0xDh~a2KetC*C01KVH9wAV+g?+dRc157+_3$; zcvE&6U@&b+d0mVbl9i-7G8Kb&E4Q83m@^qU8S1^#u>g8h$9^t5KjFevs2D>->;~b1g(oxktiD09@#*C2eU-Q}Xhj>tzH~l4vV@ zBufZvRnOmva;nRvd>TEH4b;38P+5DH1KL6686zhq))&@3F2voJ3T3_ke6?^$l@DoS zyI0;lx9usNsN#~%1Z6(sScQoK`x{HYaA$aUD*os-zpipSh!%v@w zADkp?Y$aGv+i4=ftzc+p*SyC;UDu{gr4+8F5EZC01&1|tO$CSv1JFXy2K?zSr~q;j zB;G@U0?3p%oNrxb#OidR??!s7zPLeYlipW^RCo+nVt4ESV7K(du|!JcycL8{^0R1U zqBfm4Yy-^#bQUA;P&jTz3#?RI_1ns4fgxO2m$&6u3og?`Jn5rmK?@o9yqu{jFGS^T1Sr-{tH=YH5aK!&*x5lRI$1z1`qm0QI1b-TwYc)WM2V}}B)vg>{c1+eXoLL# z3rI}*?=E_P;pZeTact=O;shOqi|_3R0?v|kY7JV`p%D})sC*yi><#%SnOiJ}ZDBnK z1dpT&dFOk3cU+AE3XUf~Cx`7*kx$Pb9E+ZhWEdw+e^XW*MxHESh6v41Z9IUaq;j%w z!WUz-t;sN^(gvW;(K0k-NYcR9FDhL#mCfBsDcd^$Q`PYQyBTVXdfZMKJ+y=&EDDqR z!tgwe&r#G7Lma>DX^mDaTLL}b>7I1)@$yK4kbZ3UqO6u1f=N{cb)gl9lpKg7oU>@4 zFx@VVnPp2Lf}YHLM~Qkkd9_@242apiE^9UK^Q|9Jq9Yqas8tcxvnZrS=~`RQPJ@!NBNiJFA;zl`p$yT3EG z>EiOS5ZuRIDDqZwkOFYYOuA_HgBH;d^=yWSJhi_veAI41CZMAeXy_hhy?=J3(A}*U zi;f;?fKJ0l{&Z{k%Rmrje?&1BQj6*NNcihVD*l>2--YvkP*d-FQ;UU#hcHuC1LCBn&B@d`q2{_7*2HM8v(8s=X~L zi{$y?fi>EG`yf!K`)5@hdPQD5v{Ej# zGtd{#3MaYaaP}D;nl1g*~fa@csH@9OQVqN@f%6%7i%b(I`CwiWa1YW?X!1 zN{%aLC$0{Xw=0O`@*v6{@aJ3eeQb>Fz6EMFICD4}PtYEbCkDcP$z zNw+l6En|tqnKM}N-mUek=P4%O0~V*D$K*SVVe}F;K~j$fZC7rZdq31E61tPt+HpG) zZ2PyeO~8c`SHxJrO@}fcb`Qtv`#D+d5)iBoIng|_Bo}Ry>B?98aY1XG4|ki036HR; z6%0&#FCx5Y4AJ38;B$~n9AKSJOnD>2ZGlJCrULjMQL3;(8H4^s&fIz*89I05jh}Mg z5PF`ount0t)EA^Ldy9q5Nbo>Qzuo9MR+8IM5`t(e;I!y>sxc1>*g=xK0;?=*ENn>gkdOzM~_34DK{2D(7x= z&X&mycN(Vi|EW(*qd24L(tVeT76iJfOb<^jT}z;r=iXj_wG zMvX~7OFjzgFJbJ|5=MJp_!q?-%y?b{q;`h4x9a;WKP48Of~iX0cck;kYGNI9g#|l| zM(%?$EVxsT!0Y0M_Cp$V`Cb=i+?Et6!9Wl2EI(Th0GPXSM24D}}9hqQekNenXB2+(ibp?rM zHS+2(mpkGrhi7b)4UlKS8#8`veY!8Y+`S4C)tdELtFefcn&2$4IugQH*=j2$lEaX7 z5PO`MEr`|2N*`TwZ#}=_5RfM}v@5a0^;kgWNFST|K!phXZ@sSp7@#kOw&uTx2>x6j zzIn@1nzlXol!EsuahLlq8-JP?h4Wn_Tc6#=y@EG!qN7ud*xQspuh0L6PHCN`yH~2Q zSA0v=lRB4GDm-{HCZvkHTKFK^B?|6wq%j~5 zU^T3#P7;a3nX6WYD$`j)uoQIoTx$93rt~2EF??DgJC(M1PVAyT)^SdC`dRv(~?064BD$n~otM;l%w9UWA z)*`-Y&BSwIun$7-GdDq$pGorKUvJ??`LOfXVps?#ZMVL`L;^R$H24gz3g2XRb zR|Omc$@w$`tCbD_30$jxKvABIdyXM!ASt&-%Seng(tdJyV(s1_pFJkp8b++#TowQo z2koZB)(4|?LPv+jl;>K$KWt6I3P(`nR822S-?8wT62dsNUlDIGs1U)P zQUHX*_a!>);g9%)j;Sjpg0*2Y!S$zra^+l999{IahB2u$hn2BFrY)AUN0vFrppq_U z@jWGpoERXeFvgkAZALMVcBM(=W%R*%k}ga~ zr_WHoXRRW8JIVuNtryB#oFTfW$OJVNRg;}4$y$xICv~Bmn)PCQ0Z~=wsF7&4&{9f~ z0A1R3uwAP5&(O=~?tKvq_QBCH1PnP71ae!rVVjJcj}^X6?u>Y^<3k>Owz;B8pa``} zmp`>yxxO`BZkpu(?`$|ARs-*vt7RWV7S>Igv@9t|wr@NVpSn zB1~z~bd8JitFl!nT8$3q#m>zxPhhViLKCMt!Su2+jSD z4#^v#OfdSC?aqoJ0h|eYl%Jp@HE;<-sxI-!gziyOHboX0LZ&&h3!wLR)#bv>2Iep= z&>+X#Ad+e7)+QI|-#dk4lgy z#48@YFakx`MGpyT29YyTsa934T(^_mnsrXuxurFThTnz_8Q`N-e(*oxIU*PB#A6`C z9)r=({|%@YzC0)=l-Y`WOc$0OWMdp_-NE?>oLJDRei<)1 znI)DXUUCzgc+c8PkzwoL>xHf6rkIFV&yoZU0;%8>aY)X{N(M zMnMVsB@%|VpJZhkvMKlay62YYklNswLJ~bIXRQ2z!EF1&h^-P_B+GOioNKUl>kao~ zf$588AR8oCLte8(@>8=fid7)bOp@ydY4hEQZm&`%?gD`tyRhn9lCSswlRd4wju%D} zgvT&dxH17CVF)&mVyA6l^I9HiMKuQU1(a$j^@F71`ua7>LN5p6`%thX2*yzW)FeL( zorE#vn}yYHhhzNtAozomjHSie&qxEb6HC1D<33EWL*<5uJDbltmB<57E{FM-;b#R< z$)k};%3CV7k60JwzRjg9zO0WW%t6h%e&uS6ZGT1`wLX1+q)mx%8pTM;Y0{6<3_r>m zUI^kbhYGX`X7!vDJ)U!}V(v&*tRzXbA#~i#Lghnqlsxt087Z>I6#Bh{25lp1G-k_h zB!<>h0~FJ`+Dd?(_p#-jgo~|(v9GD0Cap)OMB(7@2v72>D>VC18;_7#1iw~*Rz^J@A{e3`P7J>B|IY(6=T~=pz_EOI zwEVzI8o0L@Ms?fxtzngRh<_O#DR1A#BNH<%j{#sPen!6sMdzTO#GcT{t*JDU(DZ$C zri#rG@)yLaQb(q2R=AArM#Byv+SXS)yw+6#VR#$=rPJ97_i0BA0BU56WY)qs^WK{T z+t6W%Q1H<*Kny(LOmR(CvcTydvQ{(IwFXf`JGjU(m1SBS?g2{u9Wi(8q~H&$b2XG= z#Eg@#Je9>S1Coe5$utu8hCx?;C=}BuwnSpry#bI>0m6_9p|L1cTj4}hv4-#z4Mvj} z9#yU>h3>Qqqf$>@MYr2*&%PKK(lXeo2oz@S0*HN@M18y;f!h`y)t(9L zeL^Bnsl(`Nz|eZl@`mJgzxh}5^A01h<4EK%i zUGUOr)l9%&N`xBQbdHKHI9NW?CWihBxMmg`>&MRLU2G|Nx$HJOES~4WwFN@!A)8i` z)-WGdKccEkQDPenuL^QySEQN#bTC+}JG+SJroPae?I6~mQ-6gs$|uPUf&u}m^}soa zOrfGT+=btxu3J6D>pjk56@Sb|p`- zCi@V&E;4%{UtYS*JYKiLvvw-Ce-78h#>P$aTbC$@k~(ooM2I2|P#nD0gZu`H!qF^l zH|W?qF(3m23J-&wRq)&UJzC;oxb)a_ zXY!@e{F_srE-6!{eI5Y+KLEhfHqCW05N4Q*MA|xRCnCKwvQ^;q>%rCaDCAfVg98%u z0ys1X;@-Gjv*S1(2s$rEbI55AZtMoc3|dB4)hrM^c%$tT`n*{Y#jc)@B~m*szYl!D zg%W}f9Fcrto{kDdK;*|#RiatKoeRdtoaA4k8)*sCDNRJwbSImLViRX-`|i=RMJYCGD2&KwAZF4dNp3WtA`|BvjLfFkgl)-kKKUPEaCd%t(<>57J(d{ zP|mNjX+6H5B;X2g1{wcJDV~#{4MGch94+Sz-uBgwtgyej(%H=|UJ?Y)KM7)ok=cS{mfbE&U-w}r ztYplcn%rV&*#g)MJf(jFui@?HJJ2rKIR_y5Peu#qCkFjE;?x+aWA8JVLHo`FY@>1Z zw+<}MSaIoBBO48VmoPN7T6LswV!-T8#l*hWiKxM-Z*;TlZv8O)ZiKn(ct1G7l5dZay#0 zLVx+(L$n&Lpu=oojn*wJ$CyKLnOja`j~mp$&)Wy!57)6)NO>`+t~mfbc$R#X_#Ab` z^J7v-dlGo*h2Y(%#s!d?XU2Diiv1bztN`?MFwUtKWc8_!RFSXGnb+3S$0HoN)|3<{ z)?G~BrNqd##1jF2l-x9reyv^aM)G4cD1Fk`N^bSQ$m)xNt7`*2zk40RgV4$}v>MATd+HelUS6D^~PG!joplqs>ohgM0&H&8Ecb_!r zy^24x2Hv)H=nP`Ra9`6jheW{wvq*%~ziW$!@u2${euhb0mBdy^ekRF==T>{ z1Dd0*LpbiLtzRk30eHSU@wr#c$6*p2Q7+I@WAw<=rvy?J^ELZ@yR^Hw4bBC$-p0=syhrNi8J<=zwxS?}CEYwA6A&vBY;lAc_|G82`-9l`)B#D) zxIqA2Dj9?`896ZAAP2lr5rd=HoDMIU(?UlZ)#Z%GQn&&QTE>Vg?i#X7ebFNpA-)M3tvd<)wk%9UB(zVk=+;wDb&-d(X+TcNNMOMqBST$G7(hc2QK!p z@zMJ5%SAS&bC5Q)d*3vpYnO5>&(N|$oY zS6;6)y6R{e6BK6xdA-zo$|XbwLTu!5EBjLGcVyb*WWc> zX9mtMk;RW-89uq6lRQa#VnxxM^0FWwBBYG=uDY>?DUd!oCjMSf)dw6SAUQ~Y0Ht83t-Dh0RxRrQ9&pL2^nJp9cA$4 zTDG(^gJ@5FRHf5?N=i2MaLq~W^NF=>m zT&&D%SjVk1w=xK8Pv6B*tBpBY^W_-AoYcl4N})wK@2vxz6$`hn=(!h%`?kg4o&t?` zc8XA*m;vO_QB&rwn7Bu5TGka+%x-sCGZs?p{%n25dz2VuWmhhdSI4MP_29Gabe&1iX zr)u%gT_tXRr}=ljDP;mxB_F#Ccv=}&VM6=+$*|Um+6Q_@`B1bqsW&vI-l%x6D_66s znqU+3Brt6@qO*(A`k!_gp6CR=O7=9)xHmmWRvs>^u7Bdh&wA@-wGPlWhj?pt}P1_ok4xAH;r55Kc*{Xkws`fglaGb5N{ zY~K-;O0)e;<6$@_Zp*f}>m)-=bz$2)2q!HkS>(^B`$fTGs>|FskhuCv1NPN%YnEf2 zY;f3IL_*qU3OI1yXree0m6Z8r%S11mA1sODq3h;6UP4|@c~*xv!77{hGZt7@6UnMYLwV4O?F zRCifqr{hWu>9`jsfqqf5l5oT>cF=@4+isT#M_E;DULi0EB-?oLEUA(RPwmKTBBmpf zBxIo@M6nmwtMR~4$K&e;bwyt2ZLD>xU-t+GU*;rDohMx8q3fi6C?Mn*>n2%k4)d??q`MEKlWKxdA21J>9J(Pf8Zn~%+< z3(&CzHK?ORNL9|n`AM&-?R6XDa+A>TJ?nAjOS{$5@{98qRKg}QiO7KxW{YR-DVIsY zLw+cBfP5j~67DmQ`n_MjcC&q&AG7N1h?T6nT$isPr5;=v42WMzu?%a&^f^q;nLV)Z zefpxZtXesF2xXVXHdEPz!}5(8D=o>W7B6Oo6NbU7cQvSi5@s~Bj+&<-R!E-d9yS10 zBZ=%5`aIx~Xm8K;)AE5wc7v3Y~?dD?z zZ0)NT5kRST%iD2K$8wY%x{@gH6I<%uOlF;zp6h|r5&38#{wW@PQ25&m@d?V|nWQs#M zKE3{c%A-at^0kw@#1-3!W;7Wb~<&wqDZmOhu8 z%KQXAg5V#!6D_DQ^6)TmN$ypEHVFdm}>q%5}&@bXA#- zNcMF)`2Bw)mN>_?x|Ta>^XvVtMh=vVYSSVPie+G;r@iznj^Hc5KdapagKLezMwtqf zHgi@(brRQksM#GSO4 z+1~4AL_4Kpl*C^ZJIQ+`Ghb(;uXJt1CZl(u{nI3kPrYGfT^Ank>zlGygr0sMAZV#) z`7+fR*Ja>8YFe3B&RT|Tt=MlK@S>wmgUJJ+(@Qo5t-7(r4E zUM_V}?^wV%Kt?YBGNTVic`iwC?%Fon6m|~~PX=ZMOVEK|&(4Y)XPL$8?iwsRQ5{Y@ zFqCk0@2#1=Kd3ANi2-#%x?(-H&Xo&nCu%fdY+7VEj>Dk|+6p}+#=buNGc;c##k2yX zKgRv1(g^Z9=$Jihg}lFgd#ajrIM3A<=bI;a#%pszg`4A;8K(COAx2qnJWAs$x#JF< z!wweDlR9sy3JrvE)m&r1oi{28&l`bj>Tnqn7?*s<%=%G@O5W!Zp>m4zmGQ~)jW^7m zVJHR}M*j$bVEEl#C?Y9@3E}|MJ?>!D~BHPO4Ps zF+v_yT6Z&*AYBYEabP66#iOkIOjXyq>%WV%YHzLh|98!C`sKliM=w>Eb!>u#kxh7s zcIkL~b;$&H{3LwE`>lz*fNYu(OCg3PMC?))$yB2SMFy1rc~;#j;D+KS?DUQ%`dPyU zB*yYcJ0~MT2&p`45$3&lfp~agYX!yxC8yhDdx zpSx!bqO)Oizxa8lw@WWS%2fvI|9Q!;G>-?X!im#gQF#)LfgOqO^(sa{-rCVVeY(l_ z2F^s0&nf!ey4NO;E`20Ysktpk1?%-#PX1%o7@jDy4kz=58?MGdVbxjjfflv#KV)R>c$ng-NrN0IvDVWmk9PL41rkqFpUiu`uR@da_-p<1 zDKQDwOMYWAQ?p9Luio~0CyZXWr$EGT|2 z))qggthnyq^JJvPKK~BU9!uiz(LL$wG`m58XNf99^wiP8Y-_ZKP}bb0w~5CpOtCo) zUjE1TrRUyKW^bXC_ z`4`;x*0v4Q)Xt?>6a>vQ71jm!w_>IiM`VCko-&%;s`zv66PO1Z{u)-2$X z-erclt7b(gQlUpCeQP$AEvwlzR=wwOK8dxVCXvkvCUdxKrxg!FSJZT{o;%JWOxwGM zX~R!o1O|W`0!&dAY!K1fu{Wg4U>jXPXUXVlqt_3uvAsF{O??7oze7UnJy1k|Dv2UW zNiZZoB>et8FDFMR&*Aq>{|0t75#k&Ucqg(7?8n?*Jy_R?SuAUJrS{Gy_TeSzPh)c_ zgPoF|Yt7^zPFgWX;tQjOW5CFI{>ZGz(iw5GK4x83qr~Gz-)~#^JTmpzgUY-Z*4o&41BJ8Vy+$zD?WN-ke(qd z9%+#Fn0R7X7jUv_2_L+Xr1;BUHWF-l9lL;K_{8K zpZF=0Qc`3nr)}@L@B*D{A=>R*$dr|Sz(a=vZ7sVsU22=21*pkBvbqrISh^|JCUqK6 z`Qu3UW&J7u#6hmzo~1n+Ef*4M8~IwOIUWS~&eN^}tbpVd%MWt%dcCcM2>;KTH{Bu8h6J+algN7<3O^!MlZ_q7d*+2Ps^N2X1uqn#c zsX{VAPdB|2%BaUVa$ckV#G__qv0x+v+&q{=%VU(F`m4+F!1O35s_R^Az5iPSr^0-A z&V$ZnVJDJPI#%;uF$%OVg(c0EeQXlOmuU;oQeFyp>PxkTeH5?Z6Q%RCJ=x(98Lp;7 zN5odvY4ee6315}qSc|CWNUeC`2Cj>BFI(l-$I~poMmvg(mj;0_*}I9iC?pWupw*iQ zIPOqKm%OnmT1XEh;HD#^Dg{!Ah7OHLc;AD3M;1yoBP`YXTE2F8=Gv+!+pOatSrsr| z5~KJ;RJHPNL3?(*9Oj_qxhOBt>Uoy&k`C-G;zNV%aU8tCI9P;cAZe#^y%_Do64G4p zHgPr+4JIIXf)zA*RL^h57Zj7n?Oeubn&n0K-L7qfJ(9GbEZj9~ru-v4iC8ZSV#GHH z;eZrEK`bY=*PA|GP?0cGgZnxf@u4tDk07f+w}sh1{~h&|ng{W+>{-Hcc3hC&12l$5 zVPm|RVy{2|3N%5jKp z@eJ8uz0}W&H+@MHcY14_Dud7hZv)?lYZ&DbN}K(ljpWbQfgDMlUIxiR*q;Gz{d`LbS2XTiLUi-(g#x+xFvH|J}2Y z1pz8VYuvG^^(Q}G3c}Jttu$P0eXQmO$ zXyuqRzpII($7FjpPBgMN=H}oXBzD<_G}#9=5C5Og*!q!D7~FjSS4qt zlK+cHvp6l54{R~Zs(O`#f4yuGpJpOGFqFl7ry`_1da2>?Rx4Es!lo`X&B7#ze-gohuvjDSm3dKzi{r% znY(ZE+1cuNEK@iakhu1PHU3NTe&e=+?t}L)w)Ye_g{Z$29MU5abG=~`7ZEMeC9e?7 ze25Vk zre?CWH+r~ziv?>#i75Gp{Ajyhi(C&uJe82FFW#3$s-oO`>Y0g5do$E|{g{Yk66?N` zJyCziOvSn<{KK7Ge#NgBeD_0;)=R$;0dcQV`px(+XED&|<1`CW)$r18&I_)Q(~zka zH*&tjK(RR^ok`C``?<{K$eQG|Nm|K&I%33nT_lMbkeVu67`zw7*L?d4!A=v{CUmjI zvp$uX%;?X4ja`?QLnlrv!*ML<1k{`D_57z!9)x|V!suYCV(txEoPOAW-Qgzwi~)-T zvolNoI)pm2Y~FD>lk9T1sMXewUGBSBqc#vqZPO|7H6|9Pr~8iWgsClhToJbo(AcR* zOr2=s+f%em;IrUW7pgQc$+@2i@@;MIKalk>sk58DD|(awB-O%E1lHE_{l;TBuih5Z z5WNt*c{{F^x`;3e#3w8^rK8Hl3*N-4$$!4Rq*~PBKqU|WpdzLpuhApG1;1?aEQge^ zg8-7kQ`3%M&IO(BE7AJLk^*%}s+lHBf7y}0Im1oxpI}lS1$E_|29+|_6x@S>&^Hzp zUgT!W)cD80*H&SW;x?`3cT*@&I4OX~fIS(m%MiV5dY!+Yh#xTGaD19z?QJ22VbLL5 z9SVM{P$&A*6iO>xqKY0}hXfTWDZ!4ksN6c6NKa^RMUOshqY_%q;`l1Qqt}sofL#vX z{`PfsZVU_z3>qbm!nA?`X+sUJeL;o}``1eRL(o={mDQiR%?CSTBL zIoilq!Er(>aOO$iaJ7GCE=%PRto5d2=Ku0yPe$)o)ZtHh6pC*}3B>d|K9!t<8FKL3 zOU*2a$tt1TY}fOa%*X|R!V0^?y32fed=<#Ij3$A#VN<@9)N>@zAUlCcsh{rIV`RR zB{*FB$J)a`3|$#uYTvQXOpyvbM(V3xy5z{!$+~@3L9`9Hm~H(tO~0UKp<#Khse6opXO&UgnJH(T(0{EbM_8ep)u{CpKO(`6!4D7`Q35pM06sdLYpEfkqyvlmXElEOyVeuqw&_ zDE7G2k=;5FSsvZrgtfGRPFeI3?Pr;(ua?DXZ1Rt&aoR!6Uk4s9+SctLc9ol%r2ANV zcH5JNc+2&Ds~Vfa9Y6kAofMc8n8~v+>M(P&?g;Z$$`C3jT6)&;FT3_6eOPV$`WY9> zW08J+n*C2RCXcd;4))N^Pp=ddPKCv{m1A*|sLiTS6PWu-8qg^Y=0_Qzz3{gW^MENW z2tqB+>|0r>DHmcgk4oeLK9CigjE>lkCrv`%oDD?RiJ)jJaQn90$tCpHN`sak>QSEP zcvY+#_mo1w3+)H6msKunuTHu91Qn`?jd!59h#6ZQ-z($2X+=#IKt2itEkU#Acf~&p zysa6V-Tz1WS$Dzt=7;SH!sO7U6`A`JP|2(N{j5f=@^Og5q2E`ALmzwU>~gwVK`j%} zOY;GGyYHeYPFnV;2>hehe}qXoM(RukVA;xx|7!@P%$}29J2)>AjzCg1aw!JP-vQIA z;ARS-*38o0$xCX}1^#CI1p(%y2;bm5ahYU0@nBvm^~DV>a~r^#(LVfXYnU+41sJL zj9$%PzX@{MGxg^P{2|=pkHZXA@34zpMp&RM!XVWPNx%Vz)~KCc&YFVy&izW{$9HH; zwx7UQWbm@AEn3~}72B~XcalB*lFnb5z~&Ev87(d_KC)^tZj~B7TeWXRQC*0Z7CqAI zW`vPnlGsnj_;__C!A9A-WQqf9aEb^XAZBe#MYe0t##5BdWffc9j|bXvTeatIgNaVd zA-nZfp~F98vm(wSnvS4(pbADPU{l95xwBHc9Pn#P>`wR6a6dM!-zF`k8qQ``ri#J* zqWk6GKIT==QdB{-rYQA!{3^d(A-5n$1t>+imcpx$n?MjjmqTc2-``;F{CUx#Rhi`r z*DrvZzzVm3{wp(%Sl)cj{l1&=F3|!#!xvoo5=lJ#sWeh`<6^|vch>wjd>gcabT}E$ z#C#-Z7U-}cYm9r%DEzflr}dfir}H1(9$F$+=YwA9m9{F zuK{E~9uj?c?i<=qY8bvz#=faLmi;2M56_K#+dD~pf*hYE7*#iI`U!=|8uFmfTq3!C zzx4R=SuzEO#&Ck#rbw+IH=6Ssd7oeX2q~`y^*!bL z0Bf5MCIFd~0gX*<_=}?s;eh>wS zh3|ES&j4cydZz8rkw1A>6u7nqaUUi_;n*?CkS-R>!PU#DK8qxUzV8F$4rJ_8=2G*< zY2Tq0dn5#CBVj@28hLdgM-wS6Y9BXq4K`zv6aPt&I&URuJST4PxSPIPW66Rm7nVvgu_SfqZ>!hn|djfQrp@$HmO3dBwEer+iY>LpK{ zWDa*h40r}qDlW-ork5$VA)hj2ywNYg_6uTA2nNxcBU1AS~@VoIhr%j6%dHmjNfW!%!MV^+; zq*YS6LI-s2xFMU0eP9-$b)>PxjV}_ui30rxlf08-FtPJ1FWp_EZbgb>$>z_;`%w3S zDb2S^?KUYHns-ZSmR92c{_@Df#smN)eU{uy~?- z>(|)O)kVtF1$R2lGa2!E9$=;r{Sj$Y7f!Xw3f_q?_3ReT`_65`3jFFm~ z`zWCMq=N&7y%v+5Mo%woie!Y;4r|*jGx}^v1~9-dPOwDkE+y$A0I+bdMf=oRlT&$T zNf7mfOd3o95(5PSvCSqIXy!&+LkqdBTf}IM9Xj+{x-Aqc9pNw7NWF&u+t8drAt-qvm8Y{p!NQT{hk=Z8 z2?bLb%@qb}wM?r~6AYxjmG>6Q#gu!A)x>&)Aez{zZX`4CqPf=UJVKUf5_iuEm^8c4 z{gK*XK>Yw-QhIfu*hep_Fa!D~Pz!WWl<0G>bgJ$*E%95hJN67n<5YAaDJf@G;Z?mF z>1Hf`nAs*ix^FWbKDY6o8JBk82={X-iO1j0j<|{0s;R9$+4I&6G?fTm7GpB1qw1j@ zi8}xxCN@$ridw?Gd&446S?-D=%)Hq-d0YKGPngO&#+q{Bbq&_2)j@I9kwRbSFWKsE zcel!0*&a!X0m--FA+W1H}s$!*Dv}a@A9E1Jqt_FjAe(Vo6k~jYCd=fu0^Ur^MaB<&CR);r zf&IFJLRziJjgANsaZSWcZR(R{l)vQI!(xlSlZ!JkL)(E?&+pm`vW-{Bn&=oHb&=B_ zARci$DPvixozC@ni>OUuk53Fw>?JF4&t#(7-nfL{mnE5@85of;EfKBH(BY1Qor(!s zv35fcOWc1kIgDhuLtBzKmsV+mT>M!2h_$?F?6YB8m#xQMcOw~Kr{hxHy9|7N6Q{YQ z`ah36rY1jsLsHzJ52RKg38vgdT`b!+o3jpXvS^mP3nr4<+#to!rsEg+wjvj#RdeNQcglKjZIi))L9T_;)c6XIrV(PLlk?Z&57NLD z;;hh>Sotf=5^ht}=q73NxwKsCQP8jJWdo5p{Sq62NpY%_mLTbgGgK6pB)(c(1LMzN zS*35hz%#7n4IfO5{e z0v6WJX3z|OwFel>LXDz@O6z=^W3Fn$4d3XGub|*3Ha&A8MIR6?xp+uucF!CAi>=IO zb>XbkuR0``vw6(ViZ*LE*MyP;Z&`ZQ_;D?TurGKOc0+4*ykfzE;O#f}+WOMJy|H@? zgn-8e!xyk#dlm*5+bT(2tQ0S{ckGqBdvLz5Z2uqoPnO8l_ZYjlmBQM~*`c&2WTJR9r|E}Hx6p|U(qHa1oPHj~zp&w%xb5)ZwW3~y$j-`v& z2I;d#HKIEAtBj$IEt)5V$b2~N#5*-?HrmE#O2GX(@>UegK#75l*R16NrYJOo9Ja#u zYIu109L8cXF0+nqpyn@E{@Abz-`gR4*-Rtk9Y2Qv^Dqq3_Aw^c$LP#@5+LFM)kYGq zz(}$pkh%A^lbT76Wi^%=`823jS&!lD6tK(GjupdzR{+S3mT3(@FT$gaN$puX7qPc< zW~Q>OAHn=sQEO}MGo$w0=6%_sm|T4#BGG0LUeCX*sBJy<$B?$LZlqB+10`y=K-aOP zlc(U3({R6{0XN#-p#SgdA~N&=n$IO~Fq16f@bvIK4oQLj644GVd1X7-U=6(Z#9s zxTVxE;`-!gsu8v!C2R7`B9Jn`x}DP{Z7}>feT$o#ff=uMDmL?I35$;dK~Kc z=b1`V`V@SP3jo#u1goheWX`|-Zg`2ff1Rgp)1jx)DB`ybArFiuE{Df6+pwaX`bN{s zD-d_>VUu>Ii*Ep-siMLL@Q4|m z?%CT(N%Lz4+lIH{`pw>VoBGK~Q!xhl^N^hEJr<(O>UdJ}ekFx-(u7Y4@#c=3%~yox z@xfxXV|m!5dvBlC0w)!8XxAf|vZ#GDdat72@pU3t<2h3poJU>;CK6>&>?zSz?MlQ! zxm5IWwb3%$t`X}%>iR&lX`h;X7Z;!(J2O1h(20ykd902i4a_6?CFBUq3ao5O2M;1% z3Q`$)oQE{!E0<}c6bq}sVNB;&Y@^e$Msk)DL3flT;^+g$*}U$?h@TB``W_~S5aFZ( zOF!j4T}j62ec+gHaI9)Ci~_dS(E7HNG{S{m@h}Qom}Sg%eVul4(Oy=g+#hK6!$XC$ zf-nw`kK67yWNAPYp#o^PCA z`dV{F4GPH-RvMG1FXKbwT?mshqM)Y^p0iEzVGG?BBagT4pyF{c?~VQV2)Lw zD;|&`5A^fg;*PH4%yjk@&MQP*s)_bAWZONyoQgWkU{Gx4LBFYM< zQkN+i&Ct}egz@%$6L>r7BHm&)7*Y*f?aWoJlYNU|G^aRpWudyKwr$x?aVI_Dz`I3} zosuJDM!YpA`n0#HuDJDn#In#pou?k(3r|I0f;NT?Dq%oz@}O5JZ?M$6q#Ii6SxbpZ zEovgyLZh4wB2v*JubtHkCGMTcj1*e(H_8Nr*ypvR(-P6QMHcJLr5fZ7sjgNu&{3W5ygpE1U}GqOM#9UI`iU@2!A zivkW%OYm#7agrGneCLGn_$Z*@yR!ob%aL^1elG4Q!sNqY2QV1xIEK}n(6E6 zx_q*#XFpHv0sLJO&YMJQn;(5Q_vybx)^6?APv0f8hW=R&@HMh&ySl_N}UIqgA*+R*pG5TOAV&nwe&*+-FZC?a-6oN@J)PP zwH(9y?00p>+;fxFz>^54mRtifzJ1kUv(Sa;KWNHcR;|0h9%So?1%F&IAC=M5@_ZoRPODV%gX5wK#8Mfs z6Kj11VW@e%3Kz23NkYYzk-2ShTEOWjvPzN{RJuj=9ovH(v%}u0*RZXYKvEhu)@WVd z78I=DG73&-C1JY5=(%2?wrSkI00GJ4PlAYa(F!EPLjL61|fcGE!(*0jEWw9sptQAg$PI>F3Hp>#F(F719ex4j*jbBYjH z8T68!WcalH{v58Bf_Wc^+|Qvm@*aD@-CErVTv$8KQ0MIxgNDp|N1DbdU7==V1~+Bm zlC+$97P0%&-yR)IhQ<+i3MHqw9etf7OiGVi{gZRSB zu_LL<$ko@^j5D}B@HDQ7zVr2PXybI+`JGT24teC7qj@my%5x|*Qzmf4n&xdQ591LO zB)I`|HD1hdbGgV$WDEVGu_ZldKjP=15_Hx0gO}7T?QdY>gleP4(F$h86o;1>dKB8# zlAVw>_mA)r*B?t^X_>46equCpFdNiz2@S3mdQp;=8-oU$alZiK46;bS>)N?fM86?h zx71W2I1bT@ujmfn>Ge$`WKS&o)$Q(VX}=5&9Yn&Vd$WCiuKIuSL%QD`;h7&dNJ%oG zURn#`m-RNP$E3-Coc4;?Dzws<+%(_0gLucZ^>u}aj=QZCWXTxR{p57&}Y+c@-+ zY9NO}&|iyY);y2M_?7>zwe*F!2wuXAVJYhNZ@0lilO`t;O>gCY$OpCamN8KcVwO?k z7dX7Do?f*ba`z!D=KE_z&b<=*jCnOO4anwy_*9xupjXd4*xZ=4l^b#VnB-$O>xGFG zMII4im3EpaZP@>ol-V~f7$z>ci24zE$K(|&=xN;^>R3C=5e@=2#Ti!MSTmfoQB+`; zuI=~plG5R^M}gKlmzJI*g0r**mg0JuRLZXdu$?@5ppR%}>IGS&K$5fNoc9}Y>b)J1DhZg92s+OA$p1!7e)cMWs2k?& zaYVKTgAD9_%W3>ql6u(C{JIBm>UO{-P}-qT$e$YWngn|Dt9w(jAkLCdB{}V;akqEG zriVUGpC)mKq^mADb&0}SYVS-kSwBZ49ep?UZ8rlbLh zyNK?Gk}in{s)BD=SqINKYW!fyG>5*&a6`tK6QxR(Wzm*zse^YM^YYt5Z<$bmxgTOe z5}EEU6Bk;))-XukLe+#B3zP3@+9A-Ub>|1o=tV#@Q)-hAzoF@+H8|Yk%>H5LO(4RbcjSDo5~~qXfna|Ukogc z{Lf;Lbxcj4h~LZ#bd};bXd*azUQQqU_m%_~Y^j2m&T3q=d?h92S{6*eYLQ#{16WfG zvdRTKl1-AER>_jT^=(F3^QLr;G?+i$ z3-go{6V2v7-NQeoBCwj42%o(Es`hrKAO9{NeVL7cP?Lxzx3MQKdzJxxDXkkD%41@8 z#1|W799f*of$UeROD}wZTry+;?;sT4!@Nm$L9|!Qp`w{B>-};qnfeum3A+kMdvXIw zM2xoW6w44zy{0qso2A2S%&K)X9ilR!JWudPlJlx%?J-07Cnc5^GZ57#Dds%d@bH5CbL>f~iDE?qcWs zt4*h>_}+4^vM>@91Y=SpDx5K`12>%xE-tI@Sk!85OFWF*oqLnHET}^J1S5|a$2ZI) zQdRr924okIiADdLttyi2F7U_9@QnH9b-$8NokdI|9uf(*iyb;hWex7DH(>pI%iMNB zNZ-XWcHe#mQh5q-T21jRPWJMErL5zjz zifr=ppIP&Zgs8x_Z;D}ED`{NCHg!>pm0AU@$YO6ujTm!er#Ekn(}!$fCX~Z9!=OkWF#bY`KuQx!j`5f#T~^9c_wvnlF1<5 z#dSq?h?Gz(PcQMauGp+HyM+X z-E(vqH>~LJI1iu&lPkeFXl+Efiw6r+(>Mp`HwaWx+YHMoqJ9OMK^W#p7>WuS&s%UV zD#PoHz&}-At|@aCM(0-^ujhQh&fTV_|!bTZ`$sw-%ZCA!&y zI6-;(8F?+8;uq6gmcPVl|44i=AIA4LlvMwmJclcy!S2YQqepnNW4ZaPz+dRmRv}vG zw8P?bVx2)~|C9YPUBA`O^(8)-k2AY3RuvGoJ;o2ZvNL(TVjbVc6rKTnZrBrd$O+!m zQu%x|z&!3+mHpqh?508o%FQ`Vp`W!pHf4uj8<(?u-JoJ?k-F?aQxh~a&QK||PB&>I znep`*^g<~=C9l>@RmIU)$C7hWmb?&2LJ*(Ka~`~rijnQ(!m#&24D3A^O^CwCh@>b4 z;(}d`Su91a|BS>1BO;M4EUP%$?+qVlAf-_4@G!Fw9lFtLVWP>&6; zn2(h!>?~o*=sD1sltPfyrbljq?V>hsHoF4b%x-~9^Kfg~Nu(N>)wx09Pr1miOw1{BV1}r0{nt^!z2$mP}=1 zf7Px*J3xf?6n{G_be$J~qP%`9Y31oX3{Mq$Qb?hddhtlhJ~g)Ce>*1bDwzCj9)IpS zZE8|wqH@U=;!H0iunNCy9RPGduxWXk{?FG2OT05)=8x8_`3(XR`N5gSmq-w zIx%MZSQaTlc6dpdIPcR!+=g2-Q+q1E#iYt!;VrV`)q!YAIiA?x4o_1kLa-p9nC6qg(er2`%YhCW8P@GZQ#)Q$dzQiPQKCJ zsud!qcI&GR+u+jo4y{})d0}5Aw6UjnBIg?OA%$@KPtX!ob*rdtj|J6hO6Pi;{Ca_k ze$CqtJyhiBz(2!eANcu9@Y1XF$*wQR%zicV-FmnS3PD zc;TP-{=`F$*?&k_!g}@yeIaEJ*fJ>LjdP-)RBChE5BSpnU(7ZNr%*c6dopOtnd| zAc#VbsVT;9>8h*X=^QWI5{dJUFwr z069vIRX5SV_>sbV8D>g&kxC7s;jnNuAHZ19cUi{khbtI2_Ar$AcS6}dh?+5vv`DL=+9x-#GX-E*f>RttQHO@3Jzs)r;y~TfE_ZPM<5XWr+ zIQ}bIzi?sY6^>GG$@aRQJFSF-$C#0gKzGTLQA);RDL*6^pkC zWe?)R=b6lxzTw7<&xM=^U{fhMTIwQ`2TGqt8bJqD(hzeyYe5YNtz!$5-c8mUg^S(4 z@PA?E`cCl-RF=wL2WI+P%2nWV09E8($SE{^1M04{*Uw*9Mr<(i+)Op0e438$GTldd zzl-gvR%vnwMUkEkf<0U-2|qLTf<3FDM&AmUvo7m-T$LH45!;j@U!X4IW$7J?;|wf% zpP!RGZ@fi^k32wXVERU#nS4}YyZ!iEEVh2`kgUfD#$X+4#r-Qa`PLeUZ^<|Bc7)}h z%ON43bpp^cdh@rt_`4p;Z!>YiWE|ET!))D+xojM|Zwxs7mKq5meYl%B@lhWl21zLb z4owq;Z`?tDEn3A*kafwark*VlBW?iyKLEg|x>)r_l(1N~W#@M?fi@`LRU}Le6q2@t zJuiP}Zs*}1sIh6F8TsoWrshOs4|s$=#^FMe}WtLaEIg-@$t?jeitX5J(UP4f@ST$lV8LISXpNW5#7-dN+#;_ND)$ z*#Uo9sCHvFbso{2>b&uZuLdLrMQ9C^aS*eYK(6vxD z%REK2YFuSSBkjcc40%jpEm%#{Wq93+?C`uAH3@vft-Qk zw*wO0vudYJeXNeTZCLvX1a!nhJutGvk2`nQ^DvYriuYqo6KV?B=(|sLHv)*}ECo;x zvrOEZFD0Soh+2vD(AM3l_1~I#Ih$(XDSc?uMZ!)T+yh16gR`md3{JVzt#_WjFlj39 zy7wP6@Z>E5`7b29`!kRwr;cG|NzbHi81}=&g}~E;pFP=|N2wH;6%!I%vZk4s)IsU! z-!tpSNm2;xTa!wLCr@OY?m0MV5w(S+l<_K>}S2w z`h#PI)4~_`LF(A3h(Y!cCBx{9fFKQi6%1E4<72Tsq*roQD-Q9tf27mWEV)1?fnEx) zf#rRu<$132mq3EM956=pyKDU|*uN5|=^SE>r(wP`jp3)_jQX4qMqlF zeQY$PI1B-KU#fMRnWT8sHejCf^p-2!f+?Lx-Fk@Y4_xU0@rHC2{bby68>cFmsI8vf z7IwrVml#&%A5uneXh~ggwB@tBGoT7t6y|+#GiJ48w28QugS9@DRi5m2eN&n2#===d z=v8?0ONyaAx8h1Af) zLu9~OPMi`fyN=UN6yz!-DZjS~ z=Q;k>?K9?JDQE>&mE`Pxk50(5;Luf*aK|OEZ2#=lVga(`u-h7<(FV11O0|l~3_kUn zNiZ?E@YF;hSC6=6Z`yrZih_;Op^(p!S+XG;WOH=COX7GIaw$-c1=S$+ZJay^Dkr`I zXa)QZeN=GVqm$7$DN8ndBz==fOBCJFPT0mOyK#|d1R`oA;3=;@w|O=Zr#BR+7?r|H zCaHej5i9{*mD_XbIF1`fR#!j%n0A2kV-9O&(pI4JYKMbF6p1&Ro_J1bZ6RR@qxO(` z$`pl4*=%3yxdOz?#FlTg(#4pNwZ55?7GvPnrJ&3`Kf$Ss90tg9gG(Ozu3h4BtNH|$KW`>tpaGw)viHdO7PJg$# zxB!^p{Xm`dPi7C*mZ}f-k{CNF#5z#Cr209tVB0$!dZP-pmyZTpM6Ws1_?O^LG3o@S zph(v5>)}lN(9&&lxr%1jb`k`dLXc>m55Go*g}wY#s7!-UOVuv>D<1J{3|uZ(=9^%| z&+TKL#Nle-W3J~Bc?v3a71=Ts&96DM`^Uk&ObQ2v!RlYp3Im|7sC7r%T<3F3&UmH8ARzod5>iyDQ6fAF z)+Qq6uwA1Y2r>9d#G8HC7uGA{I5ey*yBvS>@vw`jmbz~9qPqAZBra0kPOtIclc#2( z>|ar++jh2E#q7u3i)-mSTnl~CVUndj&^o(fW#*imGsXMd1xK2vw0_f}fA1r*lciQi zrtl4AswQd}TuK`$uCFbGZ?=_e*-a|^`H>~V;Q^MfW*;vWQ3hMe{ZZTEwfvxWE#CFV z7czgSIY7~x?K|VfTfVxPvZ^nZ;LpSfz}c_hvGsh`I~zuWl%MlqsqF+((>dp-3?6iiOT}qsF9Vi;%Bq3>oL@X4GeA^|wf-qm)OG6`FL??%(x0UHfw>Q(OQTRV zlV2M5;F6vD+;uO)@v(Lru_ihZUC}UCY`@nI2YEyJfSlcxq-{NSDI{9ADxD~~Y6#5$ zrD7Cyrk3pC%6heepDxFz$GWj^{Ql4gX2m{P;0wf>8eI5(7=(0{nzHrnPXIyIVq1$` z*L$v?EA3EYQr0LY+BQMN`8s5nAJ47BU3?5;S!vwl@PI=5h-PAb^za`d9Muu4&(2Ua#Xwx!AQuvT-5 zq#b8lK`8dok*5!NW!lYcDVVr;7S2ifl6i86MaI;$2^ub4TTt@^>p){-+K~ zNW)#!T234Fk(VW6az4J|>`IrYWvsv{!F*a)N>9Yt*Pgx|<{!pC#o`m}|+L!j^sTG4%|q=rq%=ne;i^ zwo6;+K37ADpbMDGdG;~_)=mFa{=>}t*qq0lATj19qLQjWog^H_fm6+MXUb_PQt_uo zd`c@vNJ5gOvt*4e#HNI*P&?!0931<>uEQ{LK}X0G*SYdH)&U*xmPue4R`cC_yPGjx zX9g#(9rsCqIy5yX#&@RZGRUpTsCYhQCt9=$8wx)X<^yaXA;dN(^y_wKUA0navK+o;jVx*CJr8>ql5Id}Jf^i1s{J zQz^@hY3sE7MqCvkfsmE05$Guzj?5`}J$73F=|r3~aL`88#p?{05H7UeSt@bs9g}H3cohiPK-58c6}7ghiUD?lzvO*LbPTDS5q@caI)(A4YVH&E)gJ zJk2czX5?H0hk|L)Aaz&f{A^C;TllE&b;G!jvW?iYw5o??^winXm{(XqjQ0d#7at#^ zB>3|7Gd@Nvi~P#B@QEqU5?OS!A`kvq2%N}tr)5x(qP-bJ{#DW??{Pm4ozM{}%Cf3A zo4+dEbZ&!Yq#&)VnlplHdb3=#qe-bc!YOi@S}|Kl$ZbnvS;wTXB={Ed=z8CVxdGGG zYZHyXpqVtwdR@!A_obRqhkYa?pthgAL$j?Tz;qcAlM9p7dqCJ?cI?p1zsySvjR-84 zp8}1Ey9(D+kFt#jfgLsk*z~!!Pr)VHKHPtfyxtc5TKC3Ej zSXNwd2wV?ePCesFhUBPDeM#XTgpqYDT}*v1w)kf4X%)1fid6D|=Yg$%{f) z)zCM?3iegw=3h8e=$u!@B_^qXoZ(bg&8{{jHJ%en2Uo=w7i@-(j%TN*Lni|o@oQg$daf;%s!2t*)IPOXuPZNdY7>oM5T16m}z7L6f2AitJ+rQu1lxTW5s z;aSRpP+4GhPeW#6gK7#`wy|5{+IU`OgCRu~u6IOP{hlSdWew|McM5H+uLT*70sjeY zr>G$@O3e_?^$2ag&DG(zM-wC+9MdQ808#Ep$qmFwBhoLN8{c);n6pGCQ@?5wr~^+=V}X<`v7J|HtE z@Ajb6_`BF9Zn+9tU~UJ#h0Kk8Yw-t{O%kn4-J4D`mEgn+?K0)m1DL48hbj?ku)To6 zchl=`uh1OKa93EOep(X?gj$6rS|CC}5HL$c-aO!A#78jPF&kkcohSUP*ayGhv1aq9P>-F9dGfv1M zbSvlMYHbKJpc*!~YJSnuj_iXKcfuZm*9s($W5+eHPdd9Cg4_C|0+)xf#s^3CYu;N%0mE>*RB!`UCI#lKbLQ=1*^6W&f z-NMJ5^kmOy9nHGvU|qT3*UA+y77@C&Cv(QB+qoX+V8lq5Q^}}9^FZ=?3vY4114(A# zMWJtno_Ma6aUzDf9FM~}Wm{B5V~6-#rKR4WcqKIWCyHmwMTQBKaT|7S_2GDx*MY(O zH>j)b&|Kx=Hm7wHq)~EOSrEY1^@r)b>UaP$H9>f0{kR^;z{13W9(HN<@IFYB5Dx9fn-x*0>!`D{7_9K%qJy*$iep(Ec;0zy*mq* z-j~=0u}xADlvYNtBmvOd`~#4yTlwdi&!SJE!l>i(+#h;o|L#7OUXYe?A+0wW6so{P zT{ajXMc1Y95M{|fDb1M6&3rO2@mX8^1}jfa-ZaIJZGnR>-0&8`6zDt9oxxnj$X|YJ z+T`sT7@s3*oriu!u9wnff!eFr{uC2SVN(>C!^^Xo#>i2?3A|B$!jx^=pr7!`mpcnr ze6bt`K0(t6P|C?IM=IDClpnGHTzmnh71f(_ekwE%_m>2bWGo#}O zWGU(Dm?Klo0>84C#yRvih?4CtKao)BaJn6Ht@%MJ5PN_YNSZ7x7>Y*WlWD=q%6r>q z>LG(4f}JO_j=npknbY)%KLk_jrJ~QlRIF6OYJq=)j^YU_x7fzJT-UFZCY^N)@E#ED zm3b8&;cgjk|0y73(4=tF^2$^e5`jp(0|lUyjo@f7{9sxVMpCX2ytEbedRz}xTV{Hw z+&nO6et&fDn*II!3f_Ru{geqc#5fmo21$|3fHGop-sb^^+JQy&hBgy zXAc9w7sNjnJ={5(({DP{;S*Yoy|DVW!k(8=h0~C`V?q*a7ut%}v-hkg z-^I?UK~dM0Y{Uc=pofvf@`!8%X4bHp+X>n}`ycdO zWLH^k^xjJ*DvT0a8sYkZUZ?Rnm7`w-qq`|&u|sh*@+z&qV@s!Gv6q*C;H$6<$BB)z z`ifp(T3pTzqeA3s$I_w!61$ou^-H{7>qSdtxBYkX6+qj2!w2eb15OPRjQyD5mifuej0+iGlHe{zyQmuW2`ZV2Uc~Hb=&A~*wr>Nk%!A{!P6NX$eCc1@34;)D-mzA z@@B>@)5TNH#&fg2w@|2miu&Jb96%hXXR5ub-@vsWkR;zSO?P0v9T7teKD(a`r{xeH zdF4P3mTP@x{smES3SR1IY?4SCS4`%KvDXjUnOE489@T%;o?*3E?kE8b_WiR{iVv!M z`j6R3A_q9x1qXSJ^qUtp_Vz^{{uGM%V-k4kd&8MZa{ zir$A$w58Qe2^sE88$lpOoYBC}fd}D_oN|^FBUa@3SwX+OX+1I1DCBcMuFb+vA|M`M z8vr>DR)Ufg8 zJwG75&@0D)fMB!(z(WUqj#zSuhy8%wUY;XUv)79LI?PMnZejbsd7>B?VF z>ZVm`-1VJg48C|fZ9fCsEi@<@sE_J?UM~kf?Ka_$dh@Ppib)y+)YPJRo;j^Ir=4#= zj?o(+6c)u(;-``QF)cUNkX3FoKm>;0AVPSHu{9QQehGW>2QB0K{kAL*QpLkXPDq&a zP%ey7QfAOU3E%FZ6-6k$IlS%t+k+z#cPVX`8X4Yg>6R!8FWnCTrhPQocorxo+6U|x z77_D3awr&N2dH@P9#Fqq9N+?uF*almR;TY|K38g(n0>D?Qe=j3G$86d>BAwg&NE)0 zNht^XLwG#fjmakZ#8l`1DDH>&RC{5VsC$qF#zwi+M5jjrc1oSPf99o zWg{zH0URp9*0Q)aIy=Pgda1)==0FSEy!JKA{!a87qhQ{bAte0~h z*%YR6>QN2_7`SEFItHyeV#AI2h^2S84()^wJo_OwLN|MekgOp7I-O2}L?zj~5=3Mj zy6piQK{P#~+M1@@A|y>cwcP>MoV6f!&pZam0~JxASjsBXY3%+Lbuvq5*ZGAm2^n?? z{EFY?JmiF%$eA5wzw4{#L)1&_J4r09Xvh|}j*BLtlMnKhFMSjd7%sfwT}^uTmq|DJ z83)hG0Fl5QeZGTSHET9z5T;~I&r)MMs-*FHcKd2t>_`)Z3y8?CF4lT99yu(uJgl9o zM6sd=*6&SO%Au0-_EYT05`1@2dv18#0d-Ht_h{+|z~{M7Gm4V|H7}s#0;uTc^Av7M zelE(PdBm%xT$=~RN(lD%_ZIjMzqI4`^4Se590Xv4Px9X~aQ6}{0fp}Tu14i+YH|SCmM@ML8IDd($ctW`4-lk&KPpzaR92t0rmUOuCpG`QS}A^VydYxuGNpn^NfSFlyck zVyVdZU5`}g`;rxlc@(~mcG@vLF%wxRFNeLIg;sdL9A%Ilh4KH83P4oiTm@LGkmJv( zi)1o}O|pAqY2;h%A(|epWwU`-PRP@;E4k<6xa~M=dbQz1m32)W zyN+Pt@&lep%oyVk9y&A^>QFu1318OCqas%I!{k!r^Hewah%QNsJ*eCC!W@Ctj#4t& zI`~<-+Ww4Ar`S|D$rh3ViB>XuzSX|>@TIj)q`rVqg$wAJbxkCd8|(l$N7~$OiAk+` z|CadX3&tR=$Phk%*q2!k0aYG0_SdyMfhtEay1NO^wH&0)f>P#^oo@AA>%E$sP{zT6 zrVXi2ct1oDg!tL9;2+@E>JjJr<;s&gKLeX>2l4G%w)v0}=&4w2swwd8`MSvPz-x7V zf)roMPLT#;9~!UR(D7=&_YI|Al7(Qu@{d-VfNq0LW?F%{$Z)Z6f=n#lIO9@wx7ANm z$8dc6I8XLt&^d|cn51?TyHHOjw&p0wt4{DZA+>@W_4m;(`zCX}=G)fc?_I@FjW{z;VtCj$bF_c}4 zk&D;zj+A_dxYO@ zp*tCERV-q56*jFKNX8tmPj`&`<{@C5P>Bs-GK^}mP_ z?ElKL1LpLkbZQP;qi;YHzXWK(3iVNe#qOB(W|Gx}2vRlvc7k_yfDiV`pIy3aHO=QV z`$_^TNNugwD`!e`%R^2~3d$7rDmnMIQ>5ekK%>La5w`F-uxZl>BMYHSwIL1c$5&c0 z#oBuHLp_6Yxz`E+P=j-olkfgs1po8H+<(8(Sb-(Xxst)kH`#-)n?o43O`#K)18X$V z<>9)AgX}1Gv;o|3Z_pl%RqxJsL0uL|4S_=YCS-&(c}9W@40u#d6~)f-z0pmU zyP4G3)QxxbD_V|P(Q7`a9q>b=sqddc?sl2T4}0&I6# zsu)7LHsy5cg_Q{^1{R|c%}uf!)CIT{`izUsIm*o{*-=MA;(A18gdL=9`unq>L2UU$ z!RH3Pq}n3f!P2$SlzQh48@LksaQ+ee2X`bV9A=BzbIL6JeVX=^iv2;$yQ}**da@TH z_cE{tPm(zFP)tGU#E><2!Bg<9RbJ(|WuFts$hQ{7LAiuCss*Nzk!D(5E(^a>cwW%c z&l2wuLf1)=akK}0o$Rzq9hsg!?e^$b94pSG&}A6(!<&Hiwbv0J&u{|mc#7U`L*}}4 z0wsb-1uDZ>=L7`+c~T4y(`g*9}O9Z0ymIJLA1jFZya;Bec?<#WDi6?%p3%!DhxA8=pt!9~u^6hqkb0CYhf zqzy{z$MbE;0BxCJbVpGguec}W+xW-cTIe(*-;R7D!J@={q@*V;+#de5Pbw2Y;mhRh zvSa4jY;`ovK~=pKHetkQ=h4rQ;$;Lm?eSn{kTc(B`B1x=*3d)VXk6x_jeOZnLH)K? z$A41)#%{&>3SqTJY5wH2UdWY)&zu}4Vg-$qKI~~)w1S!e-Yw~{I11g0bcwdvfJ5+k zsuM7N@V7lYjglWn0*f&&Lrz~tJA_tm>Il>H#P5b+*y*BIlbQM}KrykMAHE$Qcc`H1 zzykwrbk29Eb!NSxx_2(JIDI+G*sgA~(St|Gl_p;xj15H6y3PIvOuCa(JUQb58E{uJ zIVP~pvBlc&v4Xpd{~3C;0Ea%4#Z>k9&e^GXy5X&kj0^*Qd8?A5U74*pHp`sP@m-DR z__&W6Pqe9e5MVHlBmAnZRn^k*(|lpvGhngy%P~>eeZK%T;ZNFK{KHbxMQ`oc6jkdk zuHc)*sAV5v-*i}-k-&9C2NW{tSl`pmny$G5jcTu`AuKX+@dp8_%7g_@4ed|zE2+P< zXC5Kss5yo`O`*}mMT+$g{zE>Y!l=;%j;{zKq^ahQk4OCDw3oZjr4jnjLC-wfH9FTmg?%YK6^C(Es#xVbDsIDE6eF)>IRBJS?Ux5_G7~XA~+c_PA>V zC{b>5dAr*%@))(S=#ua?>~bqm*#{I=>r2)nP@MkMZ+H-%`N5m8nButm0pv3=>JSg% zxUDt!%Z^X3EZ9$mU|uz^!I=OL-Q*Qi?r-#FMe3DrH!)_&RO)LQ5!@8 zTsh&y9h#I;R9VRpQGN<<;ZPsW+Pl;*r~i#GKNykMr%U4D8qJVS4a&&fjGJ*7zr;Hg zs2pD5RL1^g<++8w%|BKGuC5Q%Lr6>1IALao|TWr5(f)BHY z!ONhweT(|~h+e?(j18~@E0j|L<~D7vu%cN??y4szrWKvy$`V^N3ap0STRZR=ISW9O zS!o!pQJ&<{(VF8oEFhntAEJlQbUJI`8YweRZDiQw(qxx04>rR?Y^x58a%|$R*$zM!k}U^ z2NsrS_brLi$1Mxbu|Zo^#G^nQA4T&I=0`zTX7kTRwKfYsvW7Unk>c+ggM>5$H!j%W z1@J;jZ)CJb&*T$dnGF?PCgf}&MF#!Si>~~g|5Y^@em-DAP_(D+$Z8Phc6WlTD_m)` z|92V26vgz;4yxJ@h{aR6h)|ZzjfR@m{q@_9>Nx@b>HVW^5oK1-Pg&7Z2fOGZ#;k%D zaNnwC!TKsj$L)-ODA=Yfks}YAHZ@N8Utv`@2J!#tmJ70^xD$PN;+d6b%lK3&XOp=Y?*5edq1dj(;Hw0J(bsuUm^qs^?ew2$a@PFkj27_o&FWW5(P(tnK4KzT zo3`^SZp*1`1$Xr(eAda9UqE!=%+h zp1?dqauHakR8I359nT2qA@7(lX4kbb=8OY+!|I&A8=pP6q;dW5`hJnrPBscFIXm~x z=-O5}s%&!Gw~XG6+165wdFn$#_$jYVqUL%)$0;2{tdJ34v>0t_eKW2;BNIxBsI7ez zL9(9ViT5gjCd(_-4hf|ulWt`@!S=~3qtDsF`t4eFOpCI-jFi@d`Y$ESFP<+mOl>d* zb{?Le@Hp8X_2lfVNmpAj(*gLF?cT!;0hFO=enQSCdjdGc%rU7j1vLbeJBLcvv2^>S zA8RYe9f>Y8MyVCoz1N)v#31J#c}YrTWV|UD+HZC`Pu8I+U>*S=Tu+3p0lgHk;oo|Y zFB?5Qcl@TGPn~gEMv&qGe(Yx6!(s_9n5Fzr$ui@|UBfiS zx1k;D;G}Y?rXT)GVHWa^0C*hw&di*ojxv62>)Q+Y?h*$w?`K8~Qve`$L>|!=KOwtF zbzYQ_G;4=zs})SQi){j56^;V;4ih*l=EC}wHI@3c<~uiud3zrNUIO zTC`+e0{!PXv-btq__sP?-GX(|AxNXE_``FhkY~IwNY9!n8E@ zsekZ_J4_49EqcS4lISScQk0eMVP*V9>5Q;CR zJPrqW2E%3&Ph$+)E>aY>52-Fmmc2qq3T`fwIy;F+F}ZWp9vXB4s|BQfI83O9zqbj; z#8|?;5>pd60|V|WoijAR!fVAH9gr$BD<1eeWDY2wKym7 z+w3DKFvP9c&bd5*Y%R>)CFc8?A(x<7LGx^zUXHr~ZS82H-($?b;74i_m}XEi%^ zWjL_9V9?!yT#FBLlo~XT1rLqX=8Vf8tz?_zOK-p4U!d)RM{23=tUBKv4c6&Mkr=cc zpO(4;z%0%rJerG7{Tisr~I3-Z{AJ0!H*EpAdb*x-#`I=dYcgKdQ> zwW+Vu5XBMS=V6(+_vKs|Oi-YTKYQ12CSobY$gqfZP_A5bqX7ybZ6W(asK=$E^+GRoYI6(o#V@C zM+E4*ee$(4jvupW)4KOVo7(wt_BhYiiXTzoRer{G9p?TaUI^XK6IP7_9Gb{)xw*s> zK9ZIJ5n{X~`etXq=SUp%>2>lhqI~ar2X5L2?tB}5#?gP`GHw){2f{g%{xxc6)h?yw zV2rJNFf5h>9>-0X_6+3_!m~)9UGihSl|1W`1EejN6n|bhFkk%cxXT#xxKLpu0`&EC!wT|{=wDj}4suTjDPu;OGUlir7>o&SO6&*BLuHceX zd%4D!Nq%Asg4<3fnQL-8R#78kf)U78f zmI_9d46rxG_oCUATw$m%1OZq29y&GKHRzW>nI2ft+@?eY%MHrqmqk2TS8-echAY^&txiuW`9QmFSh_iIOqfYjSG3c!jnr~-m+Y9y%8GwOaf82IQB>%%(399f zm!uW%+z;G0+F>)F$z}w~G0)rWx(hQj7lH0UNS}auf?FCgeZEzOYN6&sZ)ncTN`$jp z%-#sOWZqb?&3d8x`wsyZ(n9hUcX`Ue%XKuaa7!8(~l z$LLxd-O{WMOu-GK)YgWdJ)RhmW{zo>a6LUu>=0*Y&7Yxy0rE{gr3Ksz&rQ?EN}Ngd zlij$lqZ>fP5NLa$U3{W_8qlNNjLDI4E&VMIBH0?tLTh{({HSKRUyl{I9ZN$Qb1$++ z0d^}`QwL5>Z}OYxE*8}q28J|FfjD4o^nP4B-7qPbuL9J>KDJ%26%Qi-fbR1OdV7a; z5r}Km``PhE%8^BlOIe&07?xlZq99CtvP~h}?(lxRL71dQLHOlECT~Nyy$<6lIZA%R zIAy2?{K7rkIUyGR|8ahcs&)T9R_yDu{(l=g2r=&5`!rI_xe}yv2m|7m*NF6Ba;_{5|EJd7~BZfxp z#eU*A2e!%Kt@pEpOg`^*$NS_)lRzJRog->(*L;V9ci8Baw9UoMO;9>65F}RsZCd7h z|I{|vZ?}hNA7Tbbf_o^n9kEmgEiq zIaiJP0z(~hOHQGtzTGSRulJ#gxEubzPnDTt2wx420rsfs4JIq0%#C|m7a0KihH4B~ zm`h=9xt>$8^RDQ+zY6|W7LFsO zrf=~jYm87QYu};o2ay;gBMfGAdtT%g+?d?7M*7BI!QBJG`6$K^*YvnMdNx0&ykV-C z_!9sloAmP0R<7-(QBD5f@mhuqMo7q{V5GoR_qjPq#&4c^jpfn=Z{m!hrKKMWINJB+ zfa8t2T2si_)}%@qt8g@9;1S`G0~e4*=+Ev`bq!znt`M*TV@pMs3r8)N>u0mRA$ zwzvO4WsNp~kYsF}I##{=K-g_=X8-y>Gs=|fRnH9bMwRKkiA4#)psryD6z}P^8qR$x z;NfxR?%1B;4Pp-G$CZRd9V>haLU#!rDbt$Gh%@*3Gu6hm@o!Z4&Mr^Nw>hg}IRw30 zWZdvHSDqxXE-SxDlImnXTiF)l43L49YbbG6jG~vj!#w$M;G|y097khvt;oDBkaAu# z;=B%&>5&t}Kg+F;c2`vfZ{BuSl?M?(+?YY;Ch$}$BeD>N)nuQOH_vLbbwBB zePDq$TJEptAf8Iu2$tNm@#^ zeVG+T{ql?GCT&=5QuV_%=O9YDw3IKqT3dF)QWUCY|KHDEm_M*q-V>K>$H|4 zwQRk+=*KbG(MH1Ufbp0|4l8#W_6FznYa)}GALEH#!UTa756*$$meviJ20#Qs_nAUd zg0A1U@27GwK)Z1U(7Tilhh}@Pb-GGYyT^TD z6c)J|y*wS15;z={uzAnT8Vxj5EJKf?Jo`|F$X7p|;>E*$rJmpuEL~VCuA(X2>DWqM z*+NhoW=Wo5Vuj7H1+m1ncd+krG_V7Igj<4MwM}_M7UjDOG|O(()@*JGBMr`lYxCf* zP-&zvA&RKcN2#G07pd#UC4u8$!i_}*mrWG}Z!rU4FT5qw_*`%+PoR2fcOj&N~Q?PAfeVn7XAZ>b#Jr!whPx-EOv*84&R2}GMp^@4$>fFhF3$rtt zG0E^B@$RzB$W!QlS$BfLc%14IPf$sCND!+`*Du#ZUu4X6;G_-}RHnpWLVD?Bt;j() zWvAw=6C9haY`D;(iGMj95%xf0mvwkBDF^Uu3Bvf9!DAT?KucCRhq4JVM(HN9T@+)$jB+D_KOsr#F#Fk}Jxj8yEhGevl5Zc?-=^ zMw-sQpJuK%Jh{8*+33hoRNhxcNhZ&?C=G%5@xM9HeTJ>^zo5lLP#`~=?^&c<{mx^l zEfpE938Vi}%+JUE7j|BP5$y)SW(ZuFPux!05#0DpmZ>{ zpmu0G1`T-jR(pT!s&6$XBh7M&Y$?+9Oi8>lF_U~i=h8b8_weU#avFoof6SJ_kg~4- z&0>{8cK{iv--r%+0e9h%-04^QV)>WVz!(5XJ~Go0;wNKk1x#PWz)V98g#D}5`tC&~ zc@DY;C`Y!)Yw^RJ*?jb#pYe+$wrT~7>vbuGu|jDBLy}|8hj4afoj)CAls){!ciWh0 zXAsjraTIaWTJNxP37(CmSN z4>8j{{s6XzW!OT)&ki+|i~G^A273P|L5Qrbetdj|lf}16%}vm%1Y+Jq&br3Z8|FAI z)9oOOH~Qs>AJzSnzBeXk^54Jkha0?Ksj)#e;`|N&p0@63 z?M>XxLqKHrM9XavRc)ELVFT8bC7Bdl$IG% ziOzVVKgF(7q18)$*4#mxylg4b2HeztVzO?v#P)8s`{DH;i2Wr+MmG2P=#o=gtHZne zLZ06idbACM+$O9oijk&#h)3yj;J!_^D={x!-;-b7y(s_y1ISO`;XZr88vLGqR(aUK zz#V8fCC|d0u)9w;q4%_BA8vVY4xhqLR=T)O(soCMM~hS9)3kS%eyhUeFYKCCI&UI# z?&WWH+(IK46gQA45GrNKcP6yWEj=Kq*mrr5d_3}<>F*_Zs!Jt(F+7FgWN6A$9npw< z1VFv5Q6!r&CBd7tI*BV1G{C|>`9)Vs6w2<-2mKODhqAd|sn!QcIb^Tje91~E0lZ}H z+JHKF%t%!JvRG5q;ez~dNR!jdB?GYgIjU+d2FX()ngwt&4LsQI(>sM-g&DNBx+#S@) zo+Ri?QA#Hs(Y~nw^LtIldf>NMS?v0 z?#jPL_kD1$F#%89i)VjXh-6jx3lLFVuhHq2GKxp2uVIsgWOhoq=ia+|o#;OO&~gy@TUNkv<*V=EsuCaSBU|RC~v(l%m|1Q8Sea5 zL1pJ4FF{OzzLL5UQYjhBe0JZ71Ea z%dh3Lpf<^K4kp0WpD4tp&WSlPb@hjqPfQAJk}+aPYfc<}<;;R@eM&>WO;Fwp+Zppj z@fW5TQevZw1{pweYY$yDc%D-OTo!K8pO53g{y5H|lyD3A=LcNd9Lg|8R}U*Fj!lZ3 zpPg5DO^YeN-hITvty1)(#r89xs!_mq8Ijb=6VIY_!GwgjU4;*M0T=l}eYep=)Mj$P z7ArG}qx;NMMF`VtA>NA&Kl#dbTSxt0Ndao$sxqB3GK{PC(fc;1b5HH6=sl=K+HC5P zh+ne8x#xPmS%d)PPkyWEPiB9(H;KB*p{*>%Hw5boIxvmc_{@ACNTK5;n}^y|3-B=k zPh&*Kt-AyL?w&%G+vYqqJbgIR!m_}7ge1i zT~2)BH4QzC_~9@qW2rH`{QdPEowMO*(CpK#Yq4 z^wP}PMeJ&)o<4^pAl6;TxuHRz&`>e%^PRzK;)K(#m+VoWf*RFGdz0_dBdGz-dQqhl z@-bTzcwXo8Z*fepG{%OajIr{QO!e zyo|Tg9owCs*Hd!d%vcXMi=6Z9J>qdoltrL?%ti`Em@8{jAR$;Se(7sFxnM|{@s9?T z(+aNG*%Z!@m;89~OjC->9#*tgKvP4SNpMV`;W1oa(Z(lv?HVO$73W8bebne`%L4NG z@2=>-Upcg_{^c3z$-5Z3!DyvHY-b+}9=%BO^E3vfa=5BBVUl?x@u5CJiVF&#PuC&j z1HMZILyp>#P)}g?_q_IMQ|W|b-$!5&NdYqIuEKr8ay$>N+s@t3N-|ng3tlUhhpL!C z$`^PsFVAyEvv4E48|0Jn((42dIwpM?{_aY{a<@=F%FA?Z_!qNv;v_^Ccq_Kl^hG2$ zdv>a+S|%rG3&uulFH6VzZ1IF$ZMh7Qr}@6rWotd|@nk)LSBGLW>=eN3A_pE{7i_9| zVm?u^JG~$PTqhyf{127`uxcH8U6b}0+ZF5&%s>GDKLEg`)Yy8RI?UaIzuVbmVE7wM zgaV{}-k#2korHeqc$s`DpSD1I&SRo~oZ||s?E8*gGXSh{@`R z1RDH91;MHD_NzSG4!uaVT(5d_Tb?^&w+imQ+76eiTUcnXi9rXFMtPd5*r5k@Z186V zmJr;O31ytS_w%4muU=Ta9K$mfm zSP^fa5*e4tM94Dju|UE*c-jdlt=QXKD^(s*3D!k0j{>*HIwC{aQW^`bH5ZqQ55yuJ z{OeG}vV?^3Pev~KkAhSld>N`-rJke;zv!1~UKfc-oD?v(RPQK)hD#0} z9TaeMGJ3jjLTRmwv&&A4js>C7xmqt8M!FJeI_kmlygzoEhiA$~d5-89*j2V#*oo^P z=Is(?c-6)RPyEOtncSD%GF~~0H7pZ$A}0Z#QI0Z(=?ImO=LX;>8+g=w3u`!g6M4Pf znIoC!z1FNg;mYpkU+wZi zvl_Hr>-{hGnkpI#gE;4LdGwV18CXRs(Unau?a*Nw95WQ|{8mAAgs~NGY6^9+ZBVng zjmpjG$CL;QHPBkQ_v@L~g4w`5NoHB-tYc$<>|CSnz0-K9^?a8?R<@NGv$@r-0h>x(5 z^v^7XF9;mu8f)HyhuUp+OB0MF2C;U`KSzM~XwDAJT)d(CoL0X0V#$?UIA61SbL2$) z7b9Q@$QB|TL_*_D8W5VHVWfm*)2)$4z>2I;H<)dGp{`N= z{@MY#R|*GiL&vH*J0l}|&JRB3a(Bv%upaR;n!3=1uu)L$b`cB3)V}Ktta8Gj-gsr7 zg!VanV}*n`nc*ImsRDW_^DFA(?wE%m$?J{@U$P$=yH0sbu#Cw61(P>z>}#Yq&{aCz zeWMeYHUs7YcB->$Z}N^xC}%If^OjD<0ErU9p!XO7=%~5cB2<)wy{y&e{qU~cX)@|5 zdxkCf06X4&-*)zwt2zWct8c2ge!^XB-e!sp7VwFKe2Ll67t?LVf63WewtjU#Q@5&I z0yKcLmFqzADDzNOdIu5>f)Yiz+Kxr`I-d>tx1Jr{yFI5~Grm@3x>t>HBcw^S=Yn#; z0A+t0K6ioUV5o|2q9f`j278i|)U$rBJ*U8ZX?zy2mQlY}ngDJ}9n^6Ym{J*;PFKB6 zT(-0Z`jmUlp7G<$t<>Kc*C7WD;7&hPOHPrB$Z1R*n*i<}Ho8@iVicdDMe4`{qjyrduKXyEK z2RVhh&JbB*eF_v<{F|{Mw_{k_B=&BJs<^2(qE|^cPt+b8fB>@b?9G_ z(C(j$SAtnChkj6LB+}2Ygoiiu9>_oc^j3<9bZKt>9VrP6cQ?iY0t8^`Ej^sZ(-F~7 zUH&L(NkY&gd$^5HacD3rhE}<;V~?5yW#w8H)BTW1T$whw_uC4Ks`cgF^@4!%UPdx@ zEo}3(vNN!U#~k<-v?fY%P@i5L0R&f*ESJ_U9TF>iqUyHOD=!1lSu|60qqV*f`w)1# zEc?&D_;}GbE_fE;Sn@^NF^AP=&R!<+)RCgU-%q>AuN2S3QQMeYcScXAf+ZI1OHxSJ zbAQzI_5vs8+Ed1*boq`4Xc;Uwwx@eUf70Wy#8DL3nO8Q76&((Jpal%G#TF_l5s!FH*>DPE^Ye54Cv_WNdS35 z6E|7@;e5t)%&!nF6h_`3Op)sn0*#XbfCgpoXE3Cl&X$3`-D+ztpAtnY?o?H>T(+of z0pCDXaeDM&g&UgL&k2k)=a38A9tcf-tVcR>Q1l5oM&6Jz|DU5FVpa+Oe(hRai2W8u z6X*}e!_m6+*#sU|JWkL^Cc=9P>tF2tuuiTEI-c1aiY?j+@$O>;ux$)9im_2!!ShYQ zs8Sr*yq>2F%Xw{ZrGe99MJmIF@LPti!Tz}_gz=wKU#eC{Y)zEO@skk(`;8Oo7T|(8 z--1K{aw*gMNok;7F{t0$T-uMYgWJ02Aik|Ol91gS2ZNn+kYz!{&EjJp4OEDJMYfr# z4=H9n_8*dFC)fL@%U(4{oPOYO2$}9J;qInT0ht=)Lf5Gv z7-!>_O@mGb&+So2t%`d%-v6F6QTkA27tE|`2pUT&;Yl(_+B5GY@@NdvwL)tR#(RB8 zO`abV1^(k7Yi?Kk+bnl^9qke@a)0*G8y<$S554+GE5XLjmi)%wTDV^J)F31Vut>$d zS-km>HfU2l?nUjHvkoAk6C`pNQtR`FWP>>!6Yk16|f>L*_CLV1unhM5sUsXoxy+X2)~ z6y7`fpD`;tjT_5$DK_xMUGzT~H=t%5qwHmV6Rhy1Bx4+nrzArA9h)<({^2W?Kof4j zT@rWms`02bUcj^?DY5PIS{e@Wm?U)*up9v-8XuNB5q;~N(XekcQf0Bw$tI9Bi9~#N zcT{Ud&?wFhxp-9OwBS4y6!)d&Lf`2vWQv1&`FH>93uie+KyD7|IH0`h#uBDI=Q1)_ z0=tmN{q~EDl3?s2Q|*uhFH`Z45}Yp=+qR0C^fD){dUAH8Z^<16ctb1q2Qb#fi={Ja zIZEkaNS`iaQrA(Z_M)F;g}@_&lH>4M=WS)RM)Aq7z@)rCLk!*~L7(h>DNC;?T5H;n zHs^_-$(vO9Vdg!6csLBkZ_c1zsU9fnE!q^xgkoTUfaspvF*KIyE!&*Ea;s!Oq8vWF zPpTcWWI1^4yAy*s;;dkDJU3${G!vLp*kFs-308sWeY#bA!S2N*IDWzfl z@@gudX@Hl`8v#zNJKtZLhhn?K~ z)y0&$%;Ka@%{M#-R#(!t`}vd)(^@2f0fupLGeJY5_dVAf_gS2ZWy5^-Jg>#pz0X05vLrEj-n$M zX&WMi?1)W!7e4HKW7f3Itsj(K1}hMbf@-}Y2I=gPj=LNLIg5XJ7kj~@?vI7n?kUR6 zq0gE1x2I$XyAZNtmCNP(eU1;M7TqJ>RP#tYQ1JfH;1v2{Rn^k|wl4oZd!2mVJ{v4d zwn;5a*PiVi%m9Fd|5lbc?-x~pXEvozOI%pp17wGtZC_&t-3=3yaljr)OfV1_+8>m# z&zPCvhkoAqdCcbY7g2;xsBs@ncXZcnrREi5RACkW+6zqqF>Qya@-9Z(P<>r@34Yko zh4H7oZv&HIJTgD``@6Y z+M@WT@GT(mk`TPD(C!naxk}Gj=goYwFHRRE5|t;WraBC@%cE)#-Xmp!_qc(e@*X&CCcE@2YE5zx;z0`JKa@a+hb* znG6~d#jD01*D?JM(O1Ew9|YUYSIt%|@hJu5L{MdJlQ@{>Ex&uIdF=lDHi-H@wAs;P zN1ECf$$p;8gzU`9#wk&4ih)O;`0gA?qOL9rMP?h6UkO|{=;ajmbn*NFG)0NM$ZRJR z?*p)cwD8Zfpaj82|{FY=W3Ytlrc$%$D zLR%7{Ba`=iCScQ7jXiTm2J_n=?*wrtBn}A2SkE7Ty~}r0-3qPC^jUa!dvHs+QB3}b z?4;wgZlXZ%cR%AUw-RR^V{-2Qj^+2iSU@JgV`rHz#6gK8BqhrSuPa^ZcM7ft*`kb_ z*r=CKo3Mj%9~*y5UbGyDgva&|iJ(ME^kH!bKefpNQIqVL58%N#7>#tCW1RduO7r--EQa-2*@-Onm`#w?UhM#*{1u;lNw-)(1_xXK+i9 z{pr;n=S7E;YVO}a*;v&kv6qyUWG<6d5ukghKjG7LGSc*gld)CT*XMv1Fhw4;2gAhA z!vE~qF@>>{Zr+zu(Wa~Y2!;>!^7aO6L28x~w>+!7cuSY&lK8;j6$gTnv?p-hjwDEV z|JYGIeCnT@t$zexGD;)%pkHq6QlWTTf5{^gpvV9FI6mjniep1cbD$ox_SAEh1($82 zZ==vr#4jLp2aTZ++|D{yKExp66AKRL$_fjv=_mZ;b+DnE8hS=q@QvnSKE zdB0}+M>TYoupb53%56)mj~g+dgI|-hZJE~>IUPUP7b$-*cMl{KmN9h!JG79@+>2oE;$`U(Btr)xOsH zx=CajqkgwHn)U>=f5eyAWAPxm4I_mtz!MtcA*}+vWmb))Q3cx z;Y73%r(>%^)!apU!xXKoxuHzrh6(fc!uXZv9pEroeyOL^-M9}M2uGv&RgrzhnQY)& z+1IM_DuVQP4(X*!&KRDX&YmsvXpg!je93MC?joMC7BE^Dekc67yHFPbjEk+me3(;P z_4YzrG;oBG@xbR|@wsj>*<5#p2Q@J4s(Y)(gf!%J~v#QiHv@$2`J%`+KkU$A<_2*`x{_UuT}&`<`B4B zTJ2kldbo?x*~A46HTRjr_T>W4sw~E5$`Ie;?kIj*RnRmcBd~~e#8X#TiCv+lCndIr zvmB>I3M{)YlRU!jL}XAzK>SnT&`atd(|{a=^7I!96hX4HW8LMF(Rn#O4vQlN zk*nUeJ9pyL7a-moJ_ zHreuL4GwgyCB?3jepqRy<6VK*gsrxHj9@2az400D$%p)nfCy(A)xXR>UnaG6p)*9!N{wY4$nLLng22;1l(l zpF>Cl=CiA5TQ1qndk{yB4;=hvPvij*@I0!jz^8dV?!*{0p7He@1v{?iV#s^OT-DP5 zSi-fpJvxES;|f$PGNT!ZP8Xke)7ZCv&Q7EHJ?aW|QP^7l^Ddj<4h8?5D(W_D9tR80 z>jna!UUF=YC$CC>AOY;i=Z>0ZIl-Ahpgo!D80tFdts@L1g4OXR`2DO77o)Td&0z!{ zWwv1Ffb6%VbbGBuu4U>@nhfJ`A`m95u@j<Cq;Q9uIj2>8XEB$Hk=1VyJ+}@wB*pdDXa#qLjV3DGN@}A}Sk0d3j zM3J5ElvTg|o(#e*O9qY{^)tN*UT=Gryw!iiOB%B$$?ro|**FM2Wy<3$k?lDJp?p(= zIQ4I=Or-`Qex#w@wbW!ov2IJ7G#?Qo&kE-ZZ{1<| z4|jzGa=$u9!r6OC+^52RTk$$U99-R17pynAB)EHsWPvT$v)?5XJ5QGlL2{r2HNCL~ z`z*lH@{mYlbw;!YUJx)o)=t$OwGVUIXe;aG8B*?lDJx0R=DGgChl79YMl*1hOXY%QLe>PNYK$GRcuy@9$S``V<^P+iawlMe{` zfVtVnnx&RtL*FMuLh8-e{ZkA`ddo)%tc(?oFF)RGV9@g_2QmamX7ib=~uQp!aIl#PqW zOd@DiHa>OXlijr__siRQk#W9PrQZ`JRv@;ke&Ql8l6glVpQe8hrP zi}}SofZ}gzA`7SCW@GLJ_pv-nZBc5$D0Bo0!N3 z0^}oI0;P)UsqYTq16kXGP>y(K3T- zW4~b+4f7;wiBb|L7w$2e!f;aN-r_y>MK5JgH%YbuJXpL4;H`UQkY{=BaHTvwKDig| zoi~Ij95`ev+-W}u>-V}Mbwf#FT>AsV-C#=he!u%oO&rSd#rXWgrdhF?=x&s0&SV>Z zCKcdo#~~A1&00WgZrtxjC%VO#8wV+|oh<6ZPQ^;m{PVaYYRvTfi>WjFVv;*P^AW-- z$EVl>VbjocWK;Q}c;OGeO%dr;!a@VD7xq70k!=SFehy(rZ?EVg2wL}jn!vXr8ap6W zwjFA2xLxlzk)nmfu$VcsJYblnPi%{(Tq?rCFSaTySk!4>y1P$hCH=<&6`YKxWiKY8 z;c1kV@LVL7!>XY^0aYub(MK#A7$oYvFgGvjgVGq`$7w78iDYbU(#OIP z+Rs0ClY7)nGulb=`$I)QjNosL5q|@5iWcN4f(IZ=w39%9Jpof8D2B=t>P}3pS>YXbVa$-u=&FU-arvVO%v&G9wRCNl(oI;?J6iM8ll9l-XO zfDc(DAvTAR2+|QvZy7JPvS2g>k3#CsG$h6&oHGM0EUkGA)lLbts!;TqsHxO6thj#-3huvuE=3UdX`Pa0IDXAhF;I-@c?diR}$3*b8 zqELQZ2^Jx0qb^4*a+z)ND^bhin7FA86D3_x$sx<>I$%s`G9PuAVnozf8X*BvCEIG@ zoH+3F^0!4XEi8G^ZU(A48C0ky;@ut-v+lmQUpRCe#_iPD5TehZwP*Jl5^xID=L@`w z`$wN&II(EN7>0bS>0bFcCl8rIE6t$Y2V9tGU@?XpVJla`E5o+8AFtps0jY(l1aO;D z_?4a< zvv|%q^XumtjtL1aPxtAV>Yv*?t>kG(t%;Ab;@5g}HM~1#4UdRUhQtN~`GzVp#DOr?LOXxf63ZQ_<3E8k&= zSB>jLiib7ekCdOEosXbu#MnFY?;?*HLh(P3&!(wp>L-DfN5is_V~N(1rx9DI;j+BO z?Q`>G^x+1W4ucDh99#d#=`DwS^ptmpo;Aly|GUMZy;i)5f;{oqFF`vB7%PuKxF^%= zmHiD)7^Z#f!rsEo+i)s}B378Nvu7`df1F1l(gWa?oX$nE84%)D z&I`a&kldpyzyFc7YcYHh*_`plG@Q?FgNuoo1rC(C+nV@BhCCM_?^8TS_Sb8n&Qu?dP{qpTbKNzgHiI6YSylME8CavR&T&q3ph3SFoD>O>5A|i&GpJ!`5We z-6Ur^SL)K-mkIpDyravs*0R_c4fJb(9cY`b*OE;3m!{_%=E1wQX%BXe5mGr?Hw#Xd z$=|xR&!eeG3|9{{IIl1+d<=FHPR8uodJhk1w=`KPUcfhfWG<5zxE?APQ^=7qVQp13 zmU{oL85QE$>tQ>Q^=S5{k5?o>LaMv?`d_030=fM*x2KiNON07phiYdR(S49adO_U zIyo(p2D(;XVXTN4505Ixx>wt}x=tuL62g}{T#&oHip2Gx9Vm7}(D=H$AW$5UQNhK- z&nfW((jciCrO}Pxw25pNvs6!{DuJ^F*r$)Ti3d=x)2f38z0QSR^4nZFV=z$l-=%{0 z(;v+eEmakzIQ7vc{lL`7qGL~uRRmiAW#b}AiU)k-;j7PC`{Fd0Q3=TM`aC@596m4o z7H4x&8=f_fe+mvDV{n0iBNr!XICyJmb(}mna@eFx^A-bn?zH!iG2$xs#lMQZH)by> zhuT&^C+eKoF6IUXpw{JPL?Op|AA>Ge8T;I03W1*r+gZvWrQ6dH)No#TrX=Rp*l zosn+t8kLx!^+Vr_BVf;&jiib+V9`BQ`8Mq zVfKe`r3S5D%6<>M77FaMzZE}L2$D8v<)^{uWXEbomT14rz(T#rhP9o63^QxB>OYCN zR=1TdU8DtxhlCcDZ-y0rUct~#k>R8D%t>N{-NF2@a+|A#?_xA={9shZU(#1cSmG)8nWDDk9GMpAX%V+B#LpBaH|_g_Yo$a$`JtXE|#lEy|_f zdVjlxiiNV)zljQwOal}L*;SN|_4Nno3+;4CMt?-XNHXr;va9dR4oBq8Z>%Ro94qsb zlG3cPIv;NTT+YukJD(Jw6d3KWOe!GyCv7#|usy+NfYbKE%NU%QO=Dr}RJ9EV<6+05~gSv`jy)9;|H7q&g z!wA08qqS|z?&vn;9+;3}vq=ihvud0pQ~I>!&4Dgjlon6MX*9>0H|a<7i}b=PA$sDV z@O`V3T`#jhJVc!`!ti@#ce)FH-Q0?AXF;ag;U_iWT4V(O0#_()=_?DJNav}GI~n^C zlNcNjKA&NIPq{xwR@NZfFG~`<5%jUrba$ZeczH+LF8+g&=1lq#kXB3jhR~hP8dW`} zN@AUYg;gY3;$R3;BB_1LoTl2c>AvD5U->q(5Fx_Lv`>QU{)?ZK=V+{xcwp)dT5rRv zcR?*!SbG8=xsaqT-k7Em;qU?CcsrlePz1T)(I-$qzT}mgK1Xy&ed~EQzvPw_aOt5w zaMpT$+KoPYLs_DjwHyV~C2Rir>ptBeHv= z0HNjg|GGE5hbqL-X^8g2@}WzRhKZA7QC10gjO;;eng2I1PTLsT>v`F*_ z*#&doo}6EPHA>Umdee_D<^(r4*nwJ?oo+yy@2DCqLb4S8c$F8#!!o4}h&pIPt{@dP zuFFie=c1y-6m5&~&ZKE%S^u|ngV4_J93RYZn!tqG!>#i7D{hB^F{RO;A$2mi7XT?) zwVJE{Pf+(GHtYwTo9tc816Uuqx<{7$K2+q(p(2hy$(5BNFdaMNjNpT$`~bCmr4^-X9(1+4ITmA!K)2xXzz)D z4FjQ2cruHlhh>tMt)SYJXQ^FPi)u5ig}Ku6T4W8=#m*Y1=)oJheG+UG^1gl=X3+6k zzY-=#bUC*L5mzX)nlz|Zq@GJZ+-S&e&Y-FHQXay-ig^?u1%5Q3Fjy^Q^M$=r%HAbu zaz!w$_$uUkkFq|*{$9yPfIDSrOK9s>}X|zN+VGRO^Yp^bWzNJ ztFQ_t8 z(vQ|wrLD$)_D)$Ht1x3XFPCwr-E`2cSyQp|hoBW2n-NVe#e@0f8vfbabfZl)Ctky` zqpPSpz8WFF4Kko{0P60n~#A`|toqMsb9Vi!c7tZ*ol_Pk9(U{nOR+^`C$r&3L z>4snbmK+>w$&^i3@Wa_vA>7QITD%xD4d1^E=O)A`84@=SU%syN3mxY&>&f$tZ%(cQ zJP<8nER#pnUe^Sbf&Q&rsbBQqJCLHerEY$oZB9!9Q#OPjO%HDD8y17KIl$N{k#yEa z6|L7h1hnY}iZG>oq<$v`cewfr+?aNH)%4;<2iKOnDtRkAg(xFl$nf0#hG@7^Rq1Vk z$plojX0axyXHD0xsau#FCOGR|k`5uK0q;;nyh;BEgZNfpCQv9ew7 z0o!if?RkF2#vfGuxmV6X8pMduu*svg3Cft#xyZcfL%4Fn|Qrv-K%)bjXjc*&y>Im~QR$0i^iL6lzbS683?OGu)cQ2^W)BfZa zOsI#rwa@yi!QZ}k$2CGlr*zWf+lL;9aNYJ!9V(sYd!M*~&;2Pe69{{nilq zmP>QbA@>7kvKGw9;t=tQ!~7?y4_~o5)ocae(If!=OAj6=l4^wWDl@2HasyTvI}pWb zoG)`|;cvpbNLISeEB_crZMDGqup=G$6|L7wa(*Y;T|5p*tmkvv7%!S!Ubh;CPmk81- z2armxtO8unj>iuj!*v5SavK1@1T&YDm;^#A#(_OwcySLZ1uBGA*>7S;0acB3tuo|= zeD|lDe7=ZkMrYgBTvn4B!|!+{UW$j^sAeU4Ie+$-rUI}8P;!#YkTXx4-RoCqb@ual z1I)nEC%o~T2#-+|PMb_3>$66eL+ge!_63F-?KBH5L+Nkm_cXE8SkD46ava9ZHt3lY~yyvNv*EL??(6y%2W0u1A*wJ$OV=Ew7?}stG6a%QBtdk3`AHE zSuU=BD+}HCcHdZ9&R^BNuyq!wJ6Y{Nn&zPHq$Ax~LR|;lfJ3OkQm2SV<3+Hd;RCuO zLzZZK=%nTJo*_#YLB_ntBeWGzML1p%I?YjCB`8j@k8g$ ze$(^f<2BGSr?(A}`2dd;>J5%y<`&ieuAtRKd9S*~&etc_@1M!wxiJ11$;5fkXhWVi zPEW4sM|!EMMH((Opdv>VtO*JS8uIo_{ldk>Yxu)qgAghbWvD+x(}=9!XeF(`uMF3k z?OFHW6Lj$_W`LPKy7K^AJ@#9aB0|jVT6Z?;N#d} zjM;25JNUZRFcrQGDkv$d-JHD|h_hu7Ws&@o{0%wJsLU0u^Vr=qIgV^asKGoCRUDGi zCh798uTeEe|0q36bQrlT4~Uz0#`j0IOqBY`3=LW^oS+O=I3Cu!Cb4fTEErb_SJS(= z;KScQA|8CxMihqc@B6-6M;kmR9wjdSSO$v6;5eMEdJ5G(ts~K8ufQ7e3>*wDv$uUu zp37mI*yF}|#ZRX|#!9qMa*6kaFt}yD1+m)nM10L#$DjKNSPCu#%aqnYyK(KIIrIZtUWqWR(HX4I1}Wi(wzWu6B0%;AjXVNF_n zt1&l#i_$GXpp3D2IdYdS%U$xGWO7sR4{joAuWZ3yR`3l_wI=a1#h_?tfbNs0B z67~_g%nStYo|!_#a^nQz6_1njOf`;X8PgUP@oGujGo-Od@rs-;oH%nE>0 zI+1(03-LzmM>`6p_VQ&#;mCp}v@A+mqlOz0%XD$Pz4J?fl4gW>)FQi5W$v)A!Css} zK=l}!=8v=AmGkB3Q$ePa8R^`x#MWNDnRtBh#8g1ToPVnZh;M2n{vxbWHNM;YOeDb9emH{gVSI~TIa4}JE>%`$C6B=J}hw_uJagX_Ht3H z^^B>SJvN>aSb8)_;TBkUtD5(&IX?%63vj3Kg*@k(jry{ z)`!Yy`=+gz~we!ztsL13GtU zVC0_ylB(3I^pmpwipBcVZV)x4Vrn+%bcW%0J7r1}Xn5McUgZ6+JvW6PN=IX(iYm9z zkC=dh_5M}&2z);DA_OBKrTqXGEu5!0i&(R<&&SKSu(C&Ey;Y^m$Mn+7yL&W+#zVUom4 zdTkL!Xv7mq;gADk5kO62q@fZ49z<<#&0o@TW3zRF%smCX^~uMV^M@Kn=%o0MA1W^q zSyMUT>ZjM+OKZ%**IG(8@gg~fPqqwt2+$%QkEJR)4zR<3P6VlIq-a^tiQ!osaAnBx zwn*W0ar*a$h4^5waww>X^!>3BT8Iu3gX(Av>Cnt3w6x=&*c|!2)7eTQ{c1P18#*_S zj{d{mLHCA9gXky|zx&!L{{ozZS1imxw4>o*RN1uH5<>X7YlKixp573DTI<@2>Zn(t zewzOZR@!dW^fM=|h8vRunFCh$Gm#7Wv4Tjco@BAao$EU!VR$(8!B$v?EvZ@k9W+3LMtAjqD;~dG&gE6NB|p9C3r7j z?F2Xlts=<3qFkyncB8g`OgsN9KLGBVOUeMqfHz%RIRJ^h6*2iAP&!)Aa11}S;x$E{ zoTS9qK}t4I*Sr_@Ov=*m^;yrjsDWCTh@NJ4TxJ2OB}s z_?*}sESmAEhx21{D`X!SYL=GM^toVGW{>1R$#7qcy&sk8@J486v_e#xkLF%4SeN86 zWZMCP{tN*}>iGzrIiwfhkS9RE0K(9P1yTSjOJqQbZot2TU^zOk98m6W=s)d;gdyUm zYm$oSY4QzdO#Eg;{$SD)Gseu8r8dJ8DTUWzjyMK^!nB`du%a!fos2ed7JINdW|*Xo zdv@0ceIT)`obBEx0bRgX#{bpl!6i(~cVj?Tl!LjBZ@+9jlPEz|I}BN0s2>MyLixFq z;Gp#Er2i{8Bh~N;p9FD<@tPX$9rvtbx^$Wo_juwtjI0SyTCXq50au!**r^ZtqMS&n$eW|YtC=!o zte4vt@Qv8z5TYt0)Q@2&Rm?wHA1QK7;KP8vw9)c}b=n*)0;u$VFQSfo#M9L~FaxP; zi~HcN8Ehj!N&9FIora$H@v%wyAx`hCvr}b&bBLFnABc}BG_X0I4J&nnPxEm!raeM$i}@DAubeS zoI}r*vFb9hf_&CJG)G(9{c(>}Fxp2#*z@&8{Rpy?N#5Q;d$`6{{z~Sk!Ly`i)pg+& zq_oa?##NCPOOc{siF-Wd4Hq{lvjh-9krKeIzNvh4=kZJ&se<-IS-GigNj;~Olsk0f zq*|$R+XjHIsH37xA8@DJjy6%!kYG%}^FWm^C6csYiEA_PYtpro)4v;Ljt@pVzh`!N ztJnc5U25MuJJ1TEUpY1!4r@~90EVw+gbSq4o5>RdjgAkN<+ijB{WrOow^KcV3*%KY zq2XTi;UL1I)YegAax8%q(n_J!FoQ6ok=Fur8nVrckBzq6UZ>HMJ-~A(Xqn3!AS4P3 z+*8hRW>ta)Lxo+uV?Wem zyEv(%74zu=qj8gqMYt9z3pg7SOfH!n?~4YYQHVAC254h0FhTs5Il>6%Vm)ev)Ok)6 zlaKa>{Ed>auC8oRyf;*~mfeaC@JlRs27ip?`?|@*$*_%bbeo zomEz+m*j4*w_2ayM*RLOeXB4c}_EbS)ysy1>!)gTF0@ zR=<$Z=wbb;cndCulb-4yV^BR-g_dTp9F+Xf*x}U5W{I321xFlA7PM6Oxot;|ZOWge zb;j87jIznW^3ceWi*)ytg&aF?!Y7>0F}|MSJL+-1-7XI>Xn$AMAloT>0CvEY{XDW9E@S-=UuSp z!-w(3Q(OR>eG$kDEd7Gqm3#S!6Wn3umF;v?q*lEJv(t?E;M2gn8xJsS0j79=+Urv& zecQb?GRNT+p%Y?nXkF|CSuW0K9GfJmqJiK2EeQ8u!{smBIQjio{%ZJ~;O+~GOWA$4 zqgLSeSZeyiXNA)ybE1(IXqWOu8bragSZ15!S140B_EF_FB+F$cC7h#ZgXAP5gNK@=;_~hTV8J|&oGp} z9(K2I8NHuoG9*9lW$$KS?ADXxTaK_;LVt`gJ zlq!yKUc2}UpRH7Sj;NBn;jVmPQdStB|=;QsJ^ldh$67{;b-rKzn9OiM7}#r~Sc1f{!}Hqq9M+s@yE z#<%wC5P+g_oA+T5I9q>1N~8%is?UUQ8cQ#$jqh=bSN}BUq{FN9>NDi80+2V=AAz+o z>@bEKVNu|_z*vx9`QWTHqq$2z24kvI*yThLt?Hs%tG=zh+q&0_bN}Ja)0mI*w4H^G z^AX8}tC{^}dwKW;7Q{NzJ=UVbF4&`W{5LBkb)IruM{UZ^y2vm^k>5Q0o z-AkG(s?=+h2|-^ydh9=Qx-`D^F(qwVi42$BdGwYJ{nj?XU1kiD^UmI*T@Yp!qf7vb zJYOmHr*f693aRY_Y+-8Y*sGs_g9vo(6=7WB8%ugY&Z+Leejn17Ee)BfXlI zDK}Gt=S9P#sr{78=;mS~L4pJ;w%N#E?I8oTs;?Ed`A9P$6l+i)=m89YqS%=GYn!xB zT`rG7y(C`J%ok;OByefPfltUJgAO6cB%nS9H%6RzWBXx3EhpZ1;}?EfT<2PyypK>feqCvJhMzF9PM z&H5JyO1IyYhS8pm36eI8jYr*GhLch;DX2m6*)g$`L8c=Mb)nU1Gy_=RMP^qGKty5o zf$;#6140P{pWVBB;mSJBPsz1`n+>*CY^x9OLjR~r(ayXy7#m)$GwsTa4{7^+jBG$A zu|!rSxP+_jGXhc7xAp&J5wNGJR6?k@$)ixO|0X^=#n)6=tSXUxRkrwL(z4|1L1miZ$hwO!98n>|1;H$RzVj<(r_(>lcVb6VD4) zgES9dx;{M@u*#){FXz8UaD5+Kv)MvTMW-vZbc~#io3HL1qbF&DQC9BSXl)4kWJVOs z1*a9NCtzGYZ&HF*G-sX28IB$YQ%!;0Q_R2E0_iV|0~H+<$&?UZ1Hb*(;tGC~n=p4c z)N=YpqGC@D#!M|iPRn>?ycpx`fc`+*M6ZWYAG|y>q(cY`x4md>NZ{@qnYf7SKU6-z z>EDt~T~ZK?^*^R()+5gX{yPWn6gY}3Kq=1me|$Uqf5q*mP^>>1YaviVKM(}wue*>y zVcu|R5X7J-+1q!|#RG)Gb9v9oL^S1gs~O0NyB$6=lOe5!2P}JZwW_DoP%`AHz${5K z&d2vWQRB5CTHi@0j>@!Iw^-x#;hYy^Yv7(PMfh$kQ6oM?d)}8{vWKR1$_0|hmu=F+ zdlS8UEChdt)S_3wj@H{K+WS`#lJ%63beCT`m?n|I zRuUyx5}u?jbjvxm*{QID`5sGz=b`BQxlaP}Q{$ajz!Bp3U6L};IGV|jZgSBm?~hAk zWce!0p)N5*v0*czA_XurS@+_Ze0^To5svRrW|J6{FM*BAT@~?VP2=>~tss_1A+%r-NIb#) z-7L}AdE*;34(Hesv_0F%Dr7N~$1a{ia+E9|@>W6QjABAAz^Kei>XPU%@Kg+SJcwi& zBkh(F7g8SYLyQzgT^~&$RcY(oex3EIPtGahJTHB)JMYx*6iLj27i1gzVPm9NgD3KC zyug~qQ@=n5T?Dc4w~x@7uSt@JufChuvPcOu@b&l+iF*JNbteF@fN}{AzmRblnDY@HGPaF*D^qS7aS|ai>g`p2Q$SK+-)Of z83iVTUy$#$tOKEEw%x?x>JKDF&tWPl#S=Uu$^p_p2VJCg`ssEJpFn+E<4e(>&nRVt zRzv=-h9Y(Ntr)+_)L;hw?cHIA?@973^`2&iYzcAS1|F zucgyXK*`oY@3lcNGAPQtGOz@rAeN7(5dUqvIkjwZfZ7muXIgugI6;{d*?sLxQ&Xe1 z6t(?D5>G4O*?rpT0a^3-l@78_xjSpJVGD=x79x;b%TkVi+F33m>W7a$z%3IZvX;Z6 zmpq0`qCRK`pf0%X!j0F1s>~rL^x8zt9z=J%kCn@*UHDYN5%0~90(e|mZ--BA% zjZKhUMRo14oR;|4%DP#Bp_8>XCv2xQlAxI=iP^@vglFlkhQ1XtpEOu7$z!UekJ~FA zJYP$U{}T+6ErdLPKOsehZm%CyX{zrS!5%ovKEa4|m$Mu5rcUAt@IGVARpfoWCY&|w zwT9=F=6gN9sOoCuFWe>yD;c|(_KG{&V-j?e*Yx#dl)RaYWG)qCUDVCyMQA8$$hQFX ztJ;zK3;%M0uciIbO5LR>XSStf*F?@uqK-F!0)rtF=X-*J#>K`cs7OKrP>9pIxdnLt z+9|{i&3}jA0WEKB=qgf=zL|4+r3_tqp3q!rKD(o(t_$e~huW zwztiVx(~K?54@05jS+MVc{P@yQml9n9TT_1B6L>j<51LWOE(Q#^xD^#1SSgF48F!l zGaGfoJNznJNO^Xo)+c`OTY+>!IE8c?#KjB%%I|R0R4l=^iPw7k3KAT`3D7t4in{Vg z0%Q+;*&%c~9={%MPBcYZRtig~tB4)?IRSuQr3SepQ0XWtEM4`c-q7wtFVAZ0YgWqD z$<4Mse>LsZoa$sP85!1ZUy|9MYD4kPzJ5>#zi3wEgi^h{=p#et5d9UAKeo+D;LZ&KGXOa3w0Hr>g<0LuYw)yz>pXh(i(3i25Ex7M;CLV%<4A8tPV}XOq8*9>@$z-RU3c z@f^0%N@G{y*@Y4{aNb>QT<8DZ6T@T#o%wQ`J9up`_4HtApmQk}I3>$;l9A!`$Dm0P zv}&4su9x2IL`MzrYwAzrt^TvEZvU*al%TY zcFv3Ymit9d#wCkR^sP$yr3UzkpuWGyqTuOWs3SYmkoVXJe@^R8)ry<)Yv9x?@DFLg zU?Qfj>+n0cpQ2jc5esKZEL9@CmE)AyIJGwgaFoV23(c`RDev5@3Pxal0^xe-1lQ)L z2R+eH(dGakGs3-wKiad|D8-x>(Sf)Dv|!xRWP5e<#hholWUBC#>hN%o0C!4#GKv5( zr_!A=5p$rJJfS=xk!F^+9yNg(?_9;&9$oyOs`gs|o*}MtBFKXO&*}TQhj)X5GXm=z zoHigJRCli~vxa64lScB*=+J}-nSdGY-A1-5uWI^lNqQ|aXUq@mTXdW`sA#?ZQXqb0 zQDG)q*M1!a_eATleVg5tqS(pKg96k5?6q75Vh8J!dHMOkHi>&ojn9l~z-SFdb1tc6 z%FufQDQf-L>CI~mCg6>>xrxDxJxHg@T}XulM<&~uRL-Ow+WkbnDGYMu$q?ziMjMoy zl;C(G@T2IhHaePA3XawyR$^yP%L?*M87fh}K+M&(R=od57?wynlNr3QS*{0jCsFWU@s^cZD`6e8!U|85^8xje-AljxQhD z1fS?Y3;ye(KySS6bi@|S{TPfYWbi6cgP~15e(MHLN|>-bl#;GOy?Jcj5)`;9aUT56 zuXDxjKjH`1P`PtvF;}rmjC=38I2n;TjQ!5%Kh}>+o^!s^$kKHtX^Wo9fmgGe#0P4{w6Fd` z0UA(OaJhuyHgh9&96|7%iUl_t6&UJtX75wNseWknt@Us;3IEVFuc#_|5H*nkx!Z0b zuj+n*C?SoJ)-A27k{k$Pl98qX6lchHDdyIoxhCa?9CiViN&Pmc?Ua#L*`+PEMga-| zZMv^XDT!3rxs=ATj0XA)p2e^e>)HpFBq&=?p$M#)43Skr-e7b{Pz0*O66yJY3J^8%6akhMeHw8%n=XQ!ty8P`KGl6=ejcHFFtXg%s7Dyic zpYMic`up_qM;kGXCW}5zip#1AASIb@5kaIJWkO|k+C?y_f8|Ff(<%mEpk+R@Xr+8@Zz=r)b zQ1wh_-IYqn&jmG+31`sQzQlLrn^I1?KpW1-r?@WD(spR4K4UCk;vQTu5h&dqh z8Sq3b#=qMzA&4m+SPB|(lDtGhn~QBC;03|8q}y_Z2@!{KuZjjpAn$JT4s;i(oBUNG z97ITWUWxWyh#T4qLk5L+)?5N}utc=-9tkQ|<`a?A{fMvH5v?K%WwaH$Dj5;gBwbgxBboFPuf>-cQuK5W_?jls zpg6I|fBo7fS7R~_${rUpv@k5Q=cNU$0SZ1-WVLdkPApB}Zd4(r_{%c}=t}t5&a(fy zQ<|xz^b}lqfsT|js&f3HCzXz5<%S>Fsoy!iiGMkpG!seM_|^7}V?Ek*Uh{xFpRrPZ zKZ|0!=mdZ~O_rWZu|2Z&$SL(ttLVRUR(r2Zl)yZ&MsRkbcK_y|O2y=|3FQIew4O})es zjnMFb$45Z~mf8~`Hd?E}6Y$N3=`RVS+=x?$CM>Zcqjp^?vmn>AiJhM~oKk3#ByV1}z%&n{E~#z>!V#LmLAz9d4+ws|mUHVH?KKUUkxWnRcj_v( zeHbv0F5q&iP-aTYZYqHizjn=m9DC^SZt=tO<`2E(Or+=XL;~*UvQvK(;ZpxIp zr?MG}O|y3*$%RJYm}_oIl1ww^EuORwr6y;i;lkfj_7L^@><0CjG`|hStvZ@{oy?Bc zFppjHEs4JYwWVju`CwRM;Y6A|5U%_&=GmTLxY}B;y_z*b%W0P-9^075^o9MI+WoOs z=iLd-zHZLDA3fj-Hur@PGyC96tF18GSS9-Xn(2ugwhw!rx8pZl0<;wQ_az!n4{G5 z3??i@G96C2Qx(&Zg^W$6Z#m-+HU3|=q?X4VXq`>L)ciJpGa}ckkN{@p+te}KJ{)9J zRd3Dl&ghQ7nQXh@nThC6Cqjp^N-L!p`q`NP9q!f+nf2;zX*>XH&bVzHZ3F9g$^~?r zjc6Og#+vLgf4(iCXB7bYRInHY10?OyiieHaHEah;<6pXaKW92vDgL`65%E4&D=>!5 zA@Bva4657BAqiNMWUg+;o_W_s)<7m%g320WKjBU7wOu4c#oKe~J#yomvHN60yVYrK zy0Pq@)3nR5>)WO85jPc3J~wCo$5^)2!;$)C*$NSI|INQXo8WEQYdEQbD&cEh5Ou|AXH;IW8XA&v+EGQ0-CheJUlg%7M#EyGK_i9_+#SeL@oBVSWit@x|ouuYF3+ zd4!F^<%rm z)OT8o$;dGTfI8{08eR$JmiKQ5E7H}~g_N4h(HMvBX~^}ypFJ)w02);bOS5*&4GZk< zkro?WQ5)Jpuq>JP95X1VJ&KMe;b{oZpD*_9JL9n_&SkD50&Gx?b)4H#(t`KU5IS?L zx=QRlO4eUI4uEEUFV$aepTGG{8pGsDpGRq?ylb&%GI_xZ`BPU{lS<^;o+(G%%}mL& ze7))~Ep(&5evj*291zqte~b^1KXmSZo2hL|;Y~b+_u~i0$cxNl1aS2lW-dL6V^!#Y z5&p(CoQRXHAso*)ew&eS27Y#vWl*v5AG!*2P}4neb!=-9Rq79M+nl zj^poHH+ZP_T7jjWTFiJt-&jHOHRjWXr&AIRhPOf z3e>kK5sc3;9P3qw1y9D6Voybhy$DgUbBPH0NSZi6|JBm>TC^R8vAHLJtgs zy&2Y0d5Z?=Coki27OBU_f)|CEEGu$G8zRCGYcCYq0^M>S=?gVSqHnnYA$Jde>&uF% zJ#6u)=HZWhDL{7X$OXB=6Nkj|*xVL4*>ref9t-~mj)*4!=r7aXJyy<1;0ZNubCW4f zPb*87u;xVi-6nUI)bYW^E6_SG<#y&`q&%Z?yDnJO{U24HH#~vUfzqcbxoEqaDh4S^ zh>VQ2rzm~bR4*Ib<1%vA)QC8|GL?o{Ja~ZCU>Ol8xfC&F9syEWm&ihwqxQR8$aKwW z{<}rKOQ=ds%(ldtYl1-0ZYn~D0Db%3)KS`T9ejrP$l2J;5L&0p&qJ}NL+57U5JH=a zT=zRpG1-lQQw?6RWaMoQe6V6b9#wuO0x`kWJZ+|VWm`wLUA#jJ9%b2dRP82U^ZU{f zqpMcj6^zK6A(t4TJ*D5KkGC`hu2J%NJ*&0onxbO-){*+Z}oUOoQ3AKe1+hJMwF2t^J@}aFG?6#vTLV zK0wyg1RTn71V4D)Kih5gz0$V0F-(daK-Qv3sc!tBH_HFuz~{CcV3^u%nlmoj6qY@r z0d;|Zs`jwsOaeMtjTl5cE&3F_$1#Gdv2P@7_lTTEa@DP;c$@+WD`R!*e0BD#vQd^m zSUn@x&V`56_2X5LZW_V0@bM9o4W7dTnV7Vs+uf(^(1(rYr;`+BTLLm1Pvg5u_6xCN z@4EZO-t#jbl#56cKQ*G0Dh8IaCVKUFrD;UHKg5(3XRAjaAI;GkF(lTi!wI=l4r=@( zlQ6`B7(!N-js!jWyr)GhD2lj)zx8P?dSovwb%KQR_Ue5-_#h{VUW+^IQB??KedB&L z9+g5=^GWT~kc_Ee5X)ht(n;MLVF`GY)6z$qtP4R#%g*?qdSy)7`Rb4)a1<(YR?3+8 zv*z5VgA~FlY_8_qUneYEw}R;j@ar#tHTN@aCfQ0c0PvjF!zo8)7Ws#Stos}LlZH$z zmb5zIdr$XP7&_3pjB)|T3BO}dCECFYD?!0rF#;zR1%ysBWsFseXaw)+KaJ4P!=VqcX8au~-D_OnFlY>#AEEEu~T=CyX;q3FGGT0@d} zxE3{FX5iUp-~N2$oUj@2&pFV7WICXY@(!~rqEfV@B?dFMIZFHO=01+85mjYU{$MY* zHC`R@)+9?}AA)f}d#Ay{2GR}`hzx8g0)zNKF>x^McIhrt|4Q$=jwvQ7a@+hjs)_Z0^bhybaxgTJ)bKk8d%`b=Q3y!Y09-&>61> z<3%%kM!>~#miMEu$qFIYl*67a!<_^)wpBwr%C+e!Wl13oWvMMYP7g>6j`kZ z{%UQacSYUU1iB8UCzvdXzUw4w;gqrVbn@c4T`2$kR`p+}!kn{fSTc99Fx$Es>h^B< za;aE*1nuV7*s4|;j_&)B{X-3Lg%LF6^wW;S7gloNoA>?hYZX{t0q0IT;4dSsZOOq; z2A#m1gzg`EBF4{-o=BnXuT&|HlGD)yFAso0X~KLzI=G@wmvWgYGrF%y2*xjh^0ZHN*mcQm1^!}FFU`}{i$Yhd^@}Ed5?o$-vz|Y&> z2=|BnJ+EeX%T<>D@PE&j3xJsOY8x+0eo{N6@5(7GJaotZbgC_5P(ofY~&kW{AjAA#VvTQ{t;bcO6? zpAL1g*{wI`Fi2Qr42KGF0wPHVC0$3Kt9TFzV*qMw6H&vsBgu2?{G@;Ur+cj4w0N&Y zmVq}v%Q_4N;WCA|v_x02nY^FSG+Za_>1ndzC z;VhdqsG6^*I}TSbppECNSKOwu#6ntgEdrb%@rnt6m)v^39))b9NYKIW-Q8cWKbkTg zR1E}o#4Q#TNc@qkxE7D5Z|Zf&?tMyb6S{g0#TIzmm2r$XM;=pISBbmdw9z^~n(a9i zkyME9)!lNs62Bj+P~?tu+H#v7D9T^`EiG}@A4R*b_ok$qx2f|rC5z1UiWPm^alDyL zXjX7t9XGg9;R4LY#!AZ6+Jsf|%3N@^tf5m2>rcfUk*+WXQA0>axTwA_=e+p0dms08 z3mJn|yX~}Y*irzM*YZy72aoda1&9ps&9F26lGc?;(e&atKQMyN!cg6Jqr(DL@fqPH zaTTl79(bwAoY&~r2SmZaTpaRbv^z;>jTnhI$?uYd(;ED4#xc-jddRYid~#0z+WjAL z$qc|_n4<3*zMlTYtw#IZEEHkiVETc%?&9za4@?@^*~6y-+=EYT;z5#@aVWt1tRQZ& zSe#+_ZS~XyIeOLmupdFVmranq_x{Fxs9_rB6;6ZFR*P8(k>yej)DrNKIe@a|bvJHh!dQBXZVt7v3NYOVz~6?YI$SyH`JxKR9PfaQ0wAA|HUawo4?DN z6lE#k#qt>-;;IK+72Dr)i2tkxb4P%+(VlYI`UNehK*62V!Vm3Qg)uNXPwa^&->FpPc(~Y>3$Chz9c{r-*0Zdek zd5%nravF^JdhF{mk)hle1?7`?PvgxGEQ#=_#%RLTwC zgNezL``9HiTZv2~ecbD}DNUxrMqh)d{nwY`1jYe0X1<0oU>bgtGnTqroDH@iRm8d# z6X|88V|mrTL41Vek74>PZCc>q4>LhF>@cYnmfs9(&|>tg!QG7R;OTUSW7r)?G}IH( z-uJ;OMJ)!D`lrM=3Imt?MtgQWTiwsgibxxIx7$DS!V1KneEEu!4BgCF4+_ zGj~jT`RA+?-As1oX-ex(z+pdo@&nZy?2FCdT+jYFq! zuTa$_kFaJs)nSsX%((#G)zjoS)ma5xvkHi!Z+beTlS_+i77WKOjJi-2r_Fyak{}(Xp$4nan#*?@FE4XaT!Pe z^J=QvXa1+V4AOXSoDOHF%&z^X_{yylx>eeuaS1#!uJ2;2>v?ubKz#@I;}q;$fclSZ zp%VPxs<-62EBhhl+(Wfr?pAtbqBUdw5agGj)^t>|NMoj^Ev zkg0JS{_As3YY}JKuw5x{;Ptx`d8gaN_lRb!grJr|38b3&n!k{7y@v5^K-v##_ez!N zv9BY10u7fVl~gT%_oHHb-gGQ*!YV_^s3zUmM0)B>cW&(ZS9Se?&-J=E#Dd+CXquLZ z#)r?5ic`MAMlBEEu+f{I!rr-)Al7{QxczW0C1pVfWp%FCi`g+Df~jhk^4!Qc>wi2ZL7d)Z$- z2fUxNK^QMF#^rQ9C?# zAh+l92{$YhlCfE$bYTH?cG*%Ui5jF!T14_^ZW; z4=yz)*Vv+;Gp7gn6Wh}v`soXmr*l56_89J?n%Qk$$E;}>M?r%V=?H+S^car7W-IC< zOADk^L`F^%7}ZoN%dv3ajO_Qar(;dmIPzj-N^)mkfHQ)m`UvLd!7w*3MWHth3%#X0 ze+RP~`J?-)vF#Pt)}+8G@Yr24x^as1bR#-7l6vKXU$EQpp?9!zBIPQglE@71K!37A z)fuy*ko-lUqbA%q2I@QNdrY{m70)_I>U31oyYLXS{ABUPe}^_0AV5>^D@~qlSgn6$ zuuxSjex7dDE3zdOz@$FMi9CfN!590hjN&(lip9nVl{;stSmh-e8W8t|>ol>SKT0Bm zPYHD!J-RBOk47nZ$2xK!R=X|C)>6XAd^itRb(qF0Ya%msOO{EAKgnwS+V9LCwkxryk(40%uW(T1G zXuYixmSs(C56&kX@P6knqT8ZD=aoxLaEIgFa1y<9^(J2QJ9#ep5VcE{s{G)Pohk|$ z-`phWbM2QU*N3~z58HX_3ByjR`vuHUBQVmyrE^>hLcWx}SGrpJ05t1pXp7f;a#+-e zYA@TfS!>FGqC{XTkn*I$lKzX^-K0(AutHvpg8kprHS8TUqz#X!2l8}j98ctwiZfM} z^&h6D1t>7VUZtbl`Kq#G4NC_(jVMt#CJqEFYmC4vM%d4E@a&L0`x613{%nT0U4v`C z!~{@tmwv;P%Su zYPs*Ofs;(-v`~7$+^d#F*vh3mw2GhC-7YIz3>d8BV~LT6R(OS|GHkUJIL_($!a0Lq zS}BaiX*0E&mV0M_{<8%rlduw0QEYFkEtN!NMb{apM2*xgCd2>FJ5#99@>VSeJ9 zExj?bb#Id7c4ghQWrEl|Itt}RQR=Nz^xRw&_iY;1>NBv(Mf{P&- zQ>VaCXb6y1nFv%^@Z(N8n|ELPF!;>lEmvItCFBM&AtPR7^7SHhb$^ZJUcK#7ZMGUW z_j%+ZUeU&g|G>781eFRBvBj(_dQQmRr%-P>Axa!cu)YmDX#^NxIl^c#zVUM?u}>*K zNeq|*=*hAdus^QWmF1WV|0RZM6K#1WetYFAdd6*mBwWTm6cDn5;9yX!rX5MIiTPrT zz_c4qr)xtfl4InXRAL}fMeTL&{GdumTyTg_g*LlvCz1_se}OUUL+OR5(E$3tls!9r zm$uBHI4$9Je}?~XnhU!g9Zt6fga3v|etcSTyDJ}1%B?$fz>b2&1=(+pa>c8GY}}dH z(s__Vtsrlfb^K)LW6gU8!Brmh@LM|jfGfID%%u-B5u=Hz>IKx>+t@s2Nb$q^5ITvM zM+Gps(8&ieYHXgHDIV~Hw&+_bKpDTyW!o@gajsykY<%rEEpas}BGHH9T|RtMK?P@Z zS)@nfl<{Q#M2c8mi|o+AfJwDx2SQl9IMsF-NET!gChOZB*nqac^cn6BQPV{-|A4%gL9gx z25acr{ZeAutfyk@p8~F^$k)YOBB!(A)Ls>*d`}HkD|aEJ92Qc;9;sv3^BC3^M2|sJ zVxNW$r0PTK?YGSzOPvhAO@joF;Osp{#rITdV>(ezsiP$1=W>JRr*GbTDq%j9)glNu z0dl)Z+`^k_W@8n0;ROZDR^hKK<}Gd~2^lZOyvhm8@Sk(^O?JnE+sh1M zfhD4sI`3z^frtjXI#{efjhceN3zC9xXf4gcb|fAj9cEtdn9eB);Wkcg#gz#w0C{^G z`O(W92pM_yqG#vv@^(I6j@`y%bOusSEWOFzFw{kNMxZ7JBvaE74lCC{t5=7$@m7q% zdWILyuW<=^!mTSb=kGY|dD((@2pwnv5775uld)xfI^5yhyyUk{(J`@NIv2~^&_(eo z`LI#4%p^z~NO~@gw1W@i*ZrJzp~0(w0Nk-*&m1bXZa5iygAbggDn_p{GAw-t-4vqn z5|n9Xl)t3zeTBG~j)fV&4|S&7)`jNA4SZr~RUx%fP|BhpvU}?+4WQK>h;jN$DwRCJ zHr@>@XqrVsYn2Sf!r)#|zUr&j>uT#xX4!@~9~`I7%R02Q-+W&?*K~e8`1%)Q1R?%O zd+4=YRmh&DhcB2hN*8+qfy&N&vcg9Bj6bKe&ATN3GL{VCbkBte9Wl8lxs%sb;(oy&p}*YRZIpP4I@_0b zf|O@Z>Vw{JSslPD$~HKmvCwWWL_kv*`8=Oxqg0{xjFCm?f>@f4KyYX}Lzg{X+iCQ6 zu16STpDLL`6gf_yf?7-IH+cqDkpcrY;mT!t#JC}8%KFhM_lv5xn6$U^S*yA}daav* z!&RVDHs^S-<{);8&A>GqyVQ;AlQ;E8KB1t|`L#dHIOJ%WcN6cY06Cpw(yX@nASp}* zRd>gC0tTS!FNAhwto|SE0V%Lu;#M#~>Wm6tbI%};^G=XF6XP>ssfb*-3!wFOXTLau z$E;MU)=4wWe>1K7d{kWQhgYOh&2i@a4(z=YIr6h!-rrdNrf=9Q7w>E$VEXLQ8AwJ7 zDrsmc#$jbkg22`v2`CXG|5nQ02ft=#|F8tMqn_J!-rWp8`&263iyJG0lgl;g%Otjc z(#&iK8||@G#J))$AgP#_t?G%JG0GV_5W^XJcVTiueegJDNTh3pEE%X?>lhUN??;HU z6!4IK%~C!`AxN{nEAw7efLy?>bt=H9S;FSeL|y79b49{9`Bi8Bl^=ZOoCyq+hW2h@ z#LlBnu9?qj%YR6}nzsH0zh*J&E(o|Fk20;iRPxRhU9*aZ#2b=gU`^iuN8MFG{5`-w zk}Wovoa~Il8?Eypu;slIxikvD5s7sfv>pDn(mGw;?j-3^iz&}2b?cmJf3pEWw}G^RYnjh`YlIS+c?hmCQ3tmxQZYV zZc#STg@R~pCt=Z}%wR(eUol}}{YV6z7;Vbhjw(QyT+RNZ&=2EW@VT>Oha?28e9$y9{iY2;73Xn^11_2zvwe-B&#au5 zrqtYjxbtbJfmZSb1YEd-tS@$b7-;MOWj^4)h@X@{-zmau&`?X=9kL8pcGMVS;3YfHVaf;9%p?NKo_`bEq;D%BvkWjef)|7`L-%SWNv2yVKPd=G%0op-$kXH_^}#zS)tUiXU2S z$29?$L!WifbkS&ayso_LvC4`i{T90h7#(c#R?qh*hi}K!Q)lSp72p}9Lir@ zu@ITcYY!WKYJX@XGpC|grr#{e{ciptODl{ryiHwS3F!X6Aw(aQEz`4b_0$ z-&#CdT0yIXsqB@z7*t?jfPmiFZwZ66EL547Kx7p##_1+;-es%{7mYvdhf@#lK04n_ zL$F@{qz#yBPH+!Gd%f2R&#nRHJcKM^IzRwWPgFP zHmo=tu43Cc|?2__(CG3MFoD`n2Mr55kUfP$1(2k@s7*Q*_vuHXknwah*-;xjYDB?z;L_?r) zDm!2-6!teXs9mG1g$gi0OZ zL0N+?Umc4nH1Kt2B+!PX*0#O}Bkl5J5MRORgH zI49CF4v6OV?Mx@y2K|J1y*=L5a>j=K9Y2LpS{d*&Kr|#&CJF&@94-Ux zJqfp4TXdaZEx>{;c*;wvcJ577BGx+3b5URNasLu}&TA(XMg32C?b-WR=XHBIXBISC zn&9O-AX%yIEHqta)2me;h(k!Vgc?xzo=ilY1~ zsR;ET!vEP!h>Sgy!v_js!Zjoj+6dxG#+He0)t|G}<{c@+di@@^k@|dM2TQ&AKX&g$$($ zF3Orc`ee8kX}h5|i7PTzOcF2k?47TpdRA7;J3b#3znhmddsuDKK40x$Ha#U~Z# zZn*8(i>8Wo?ID8tp!pG!xn@F9l8wjL)+>otIFKZp0F_9#HXtSKh3f^ zN6!jv5pEFUG}6R9hGE&IP_$o$bEt5q>y#^a$r*GGMGA=3ZUDJc!Fd%h={03^0oLS4 zq*$!FvmxMS0V42Sgw-mLiM5(Cht*Cww%Jji&uj6xdun1X5}#J=SfP)-D2m`0c-^+< z5xAYBcD1~M*2==x%CiiJ{2Z9C#Z{S(g+D|Sf!5Y{;7Fgw3RurhOR8xl1xH0&1=+97 z@BQl`5AT=C_E+g3Bz;eBwqE7`Q)7Hnu1~UvB=pNS?#;MgbTRrO)}2@?T&EqHr+;ChxW@I&jo zb$n}1g@4E&))JXy^!iSNR5*C=QEGQa{It*}RW-5wa}2_VbK&r%frj693QEXJ9BcWs zipuLP4`_gZo9O)@V{I{^v;+Z;U_>r0RvnIk{6Nb-b1GqjIc>8qYP+z-nV7_0Nz`Xa#G2kd0lfAhM z^!5=Zj$^G%h$E`(%pFiH@`EoI9Ab%BT~8aY!K=7VGN&eMUArJGxv?{+i>J>E=%|;H ztvjKVu|D z%E!urGsFqc4rbV?3sX~YdMqMqp(tD@9WeUC=V+eup%tSe3kt8}rZqA)NyK!7>o_L)i1NKO({?8^`_IxzR% zmu^u$nn^jVUGT=Bo5OmsyPqx%0V{5p%y99-CA+lJ`t+(lL-SpUGK43)!hNHgoC2cq z+zBDVFz)i{MNqKI<3UVfRL28#<-HvMe3rlP^Jy2Sa?Ep@M z-*_?{Q-8T7z!KJn$NULirlLP7rBjDoxp5k@@+Y3=RaqofV`UKXM4v6)F>ps~lt*7l z4^H5znS5uTE8_}%>rjZx?K9dv)63Fbq{!M92 zWO8D%|M@_H_4z=LnzhR&GDGu~IGK)`p2|pYt)FPZF)q|id^6Fn^zl)(n}6_`?#MgQ zPVLA4Z3f$&hfVeEWs*rM!u!iQm_*#Wl|F~t;wWq}5I4I}FFaemaeqj&q|?o&-6iKv zz=a`o*?P?{kX-wACoPN$!=j#BiK!i8w)KzUY7}k1`lnCBTz)c6Ov9sD2!~mHVjuZ0 z@tRs(ny&K0PY~fKwr?@1g71CEG)I;1e0v-Z@V7Vq_8gb{F>9N*S9Ztfv;&3q(de17m{Wa84b?-xuM=UF}1GWc{F~1jsk$NJWsI6zFN2NB79w zq5Q6d3TthO-V5!)Kc6`6pZ^sKR&9@!U1229BM+|$Bxa9|5IBGPS5}agIx8kEE%wBjovCd?>&Se z?`a&VOFk*~fzHY*(Do{_ET2`JIgP!3#odd>@ds)%7h=p;E%`q411n-|6@=DT z+ugxxE#5svW>**Pj^Y1(j|f+BULLo87=Tq7uH*2+KQTi%Nu|ctVG?-$`YRKtP~72{ z#&vF+aLh*?x?)U0P2#zcO`xI6FDTLv3(`32@|hs8izI)Pv2M6XZgtnPp73`#TIjo{ zd%arkLVS4@U~3ZFT*-MDD)JP#Elzxl{hU~WC#5YZm6|=P)hoGi?|dd-3K6Wb-YZF% z5ABKG^p3q$*7y|#LJ$g_9m|94CnAaz(?_+_nPJk;^^1^s&$q4@YiGaS?>Wtbqfunn zJWM#;-wWvibt2mf@uz9B3t_0(Tqp{6QegpfeETD2@MaT`a|?e@X{%X}Wz5aH_>L8` zw4a{8qjb^&D`FV{hd08ae>W+M`4VWh3?}wUcowey)t`R>h)scKFIpWQe*g<6?uh%^ zPzPQzTjQI#NOG5mU@wxV$v=y7oh&C5NM$w}{f@~!K%X9SYgYAX4 zM(r>U5pYv;N8B+&G+2ASm&7(lF{3wvoa`7&s6_Q6H^yFn`yq+@Cv}YHi9h;`o^5}aEjuUYG9EK1qZsC_tA{P;JMv%Lm1^9$^8RzPfL>;SdQoWCX zw&iWxZ!ERqr(~kZV@!W$o@&z; zHU87ICS2D%3fL`rQ>LeDVyBUeNSK=C4|Ep1%c5?Y4eqspnf9TQ-VR^(vIU|0=y5MuwL3kUV+67PbC4o)U1n!cGo>#E!UcV&(BqYCc?5% zDhBO$&6ZiXK~KM8WBr4n@|9@B&SK#F-znZ#vUdwZ2plJ%!*Ll>8#W9KNkyip>rhkk zd3ZXGr!z)!@9oQ1956wZzi<5_A0Dh2SQZr)kFx%cck_2;9UU7EE`q%r>72k%I`spE z=d6-WF$1hRLuY$eqB;}(%xUm@-j-o$!`$>R+aDV9{I8YkI|`Nwt;JO}Ypv3#T9AC9 zh*A@oKhaUqMAAthT!~Vq;BC>2O>ss-lRPj9(r94ZcP4xJPprBtO~!1lDU@QCLs@bM z+`RA|j&BNGCX#3|NjQq`uIsD^xVE>=SBrUP`9po+q_?}(KHj%*>PEb2WQ^f?DgggK z0Kf_E&E&_daK971CHQpvFq2-DhT?I6MN(>6rHO$&2NJoX>fV4QjKgwn*JO(*0OL@nmqGR5BMrbVZbz;&z z6w0M?{0Uh3WOXVe`qe949Q@%VvS4qXTBIQSu)@XSn~GRKyodqm<{`K@_t=pa;YgD` zw&7bavKC2l5oe4ZuU}QkSxn1>4I(WOK3$#aBrgm(!jHlM5YIUXCwK=r{w_3#^zeyT z?q479ROb5U-(Ktt3w24%>of^?U_#~me=SVi9TKjpVkIbqvH(r*J1LRAuI_S0$e#H= zr(o}grSkOFS4@qGRe!lSi#rOBZhP|S|5D@%M=$>;S);5lH`)b5z~eS4P;8lyO#Mz#MR)9~U@-IL(1Me}ld z)k*SB1_><_K6+p;$`@kzq-)Xq=&`snfNP5q`QL@=u|~?HRU!q*ecKe_^r$x-b&?k- zj_Zq~RHs&x0bPoYf6-Ni12o~CH&N8V<;i;VzxX)KtE;#eITNsMand)zYE$Uc(jmzy zC}ve{u#6NWxYX8c+S$mwuOX#Fb%0Z*2vaji^A}~l`&fWw;G`p-Jg1*X?n4BWKlJLE zbcZ~!+SREELCMD3ru0NnuoKC-@!#D-~7-;V(gRea!)8O?i8aE62#|>-*+uJsQ%;`ZvPrN&1@-GnHBBn7mF?WjeCNemVR9*7gka7k#z?H{3_n|5f{)?RnlO55Y@d!rC8w3=w(J+ zz2oCZP=Hb0n8FUYP?s1_{GpGOZPCf!#WRi(w~Dh9%ni}faJM`DRWi-lHZqe}dw;^+ zJD_^Ts9u)Lt%=fusl?$~<{M5RQ4MK^CrP~jhBW{xjPT+asHvo3;kI8C4R-~kN^i&= zkx=`}@K7zq23LBnW4DbLEC?HvV%Ys$^+2hCIdjq16<_48L;Kn?2b$M;44*S!<%_L z=x{O<)QM;=#=hb=X+=$Uj8nz)l$TMBssHPSj>c}vi@7T!Z@Tocef$Ik=LOG0olQ1A z&|lJS)(zjo;!O=mQ=(wu?w^ebBliU)(zFEu6wwKmVxxmeTda9kD;p)G_hkfc&Pc$B zrIwq>8)mpT_xoN}e-AJ+Ab|vS*GXnM!Nr55dnKW6^j#R}w=QSymUjRkVO0B^cK=Yy zcMR-7z~jv3f1U`l6sc2oF{~D2$=Vtmx{0~U*~@CjOgPJU*;o)e`->4NPixL0MSAAL z_|b((*905Sh%^ZinBg8xPDTo(q4ry(&=hq5}sb?-txJ6!C$A-E(Jl&QeV2>x$ zsa(gXFBsv2CDW*E0wA2g(7*m>9N3k_M($v&jKFXtSYh)h=7kEb1V4$3B8*&B1d3I+&SC1KQF|ge*QR~}(IAP6 z-z$S3;7>HP7=vq^;-O}SQs0BRD%EYqDZS)mGMxc3TmbiQ&=n>k%sj**jlp2uZj zJ9)ZaQzXZOQa7rB^*!T+kFwJYNU##=2!c4dOqr;KuxU!K_y`p6E&ks3ZbiiGiSRPC zfDvjSp;WPbJ11B8W}^eqk6B=AFLYJvpEdjp?}vdx;S;ASoCXifdyWo{KYvC7130+i z!__#NVG^(v#$8+o;;%Q^h@@diK0N>_K<2_wv<+%}^a%)3d?Qzgw8c096a0bES#MV7JN=ZW7w_Y(^4O^xBi)Mq_Yr-5ny;Shu4++$pv`JaC zAB(2X#=Z|}Uzhoa@KNJq%p+!72OdGCAvUFpkKD;eybVKTJky{`czn?S#nt;>%+Wea z{WjtzDV(Wu1($L{2&tv7L5pHUT3`RYQUA3qG@;=LDEwmN8vy6oB+4BX%b)fBc&$w& z(iO7TR2QEOGEdKY1sjOQA4u(rpoGH?I{C6#`^7}?%qtG;Fpb$0sPykIri5Y=sTA666pgc*aP-XJ+1 zNPxbm`#^vbzOPGr;sng4PUDw_`{ivau0*gI{wv~GyWU}XBS>=3i0Qzpk}Xfc4uFS z_+Ev^aPFd6(4B1Orcb-BBJEk;O2jp~2fvcDQrra&&E~)XWkYCQS?^$P|Bv!J^2#`q zlN{*8!LS_?IX3L+EhwM~X>)LHJVo4xi$6amS()XkODD2t0KpPQ68fqE=g@WJ-^pgw z7VY5u|3{VEE)4ft2<+YukYOIN)uNcP(K*7SuMB1M@l8M5XfAh9%P_ZL{4K8Ge3j<} zI>YqJ?uDx!F$4O;$}axxsHaWx-o*kVbTAU&DwVT-hV{@mS5tx1mz~8&E!;pQY2LQY zCFIbwwyKv-AKqG){yW@aEO@&O3rt!vilO0VKY5Qyg}yO<+^|nPt2Qr?`^`=g%+Q>2 zk6aogz+VN$?3sss`Zz?W%psn3xZ8c?UIs#LL-g$Lq(q5uF>#ZI-d1Q$7L50=X7iy5 zV{9WC=>pu4)(vRIU+uxz8@(x8xnU^bP^~e~0*PAZ4wElkkRJTOewa+QQi>Z1ZW4AQ^xD0H@eSEsjY{eZD~}{JJclaGH!{Q$H-j z5ULqBoeejuB#VJ_c`xS*kb^?M7Z~y3s}d_N>JyXcvVjDkAHO0deFH%uXY8t*{e+8) zQxa>I2o|TeyxM#sZ7gl;p$aslM2I>2vNGyFS@vmZ!ZaEVP^h!EfVH1H^A`>%bF~V` zG6w$GP%Djvu(OpO435p@tUdiZohIVCzUbtg8|twXT+p0gAtFfScuPlpmcyXOkk8G( zZg`Ix>xN(W?0>AW(Mdt3>q_hSP9rM&d!J#&$^kr`qYg}%KN)Ri0iH?`#fUsRwJYy~ zerPD-0Y7DHGC$NOex4Wx*#x#&4w|uWpJ9j;Q((>E@7PoiFpjp}eY?9^#eoPzpV9;G z35HnOOMcrWf<(Q(qEs64puQ79YOt{OCDa0Qv5dZ@^a#BdT*CF=o2X)g+@b)^UHhE; z9Igx^m?Oi%%~d=F@Jcy0VUdmumcU+vDH*Vd<_jF|HkoebTum+zzB=Cyv4nA3{mB&5K;cuc`+c*aM!tRFLhEn=yL$0MKG`KP49Xr0FU zFqC_BT$n+fuI$>EGw0qZAd$I>)uAoP-S&=x<(yt!!Ra?ptI3 z`_qKN+kjIi*5^ARsj&tmQ*B{D?3PVsi93Ho(HS51n*g*G7;2OmRtuk7l-bHU$b9(+ z!=jVVtg9#82Ekk(*A6Bo_h7OmgHx(#tc9QdjUM{m`DC8&e~lEe3nP!j82nt&Y6HB{ zv>$#DNkiQ0b4z(6eQ6t@;o&@P0YsZ_Tp?xu*eDw6#$+@|1eeDGAYxz*SH2rrzNhXk zU~PTlvOEJAfL|)(wEM9u3mK`l$4kCcU=ci8iO^Hl{!#($^OvyI-z3DfzsYx0`n{UJ zX5;oRrh=AvNg+!ggFp7uJ5?uWzDB^dP54L-%Q{|HKzzW|EzSBDCkEA^)*+MJ4n1I2 zU!-mR+wFOXZ3rNPnA7wmfp7-bRW_+gq%%JXdU()(*Lz~Gsc93Ht*V95v`#9(>r$K| z0zxjjVUml*Lf(C@E}1I0L^#T?>weyzrAJ}Gn?(U*$uo%NfJv{34Y1=}*lacQID^L~EZ9DN7YpAi~j;{!sEvJ8U+B}Pj){57vwQ0X18QFHgn7fjz zPHZVZ+~|J4U3m6gLZRk;Q8!b3Q0v$TZfRJhVm}I8bk|59X0Z%8IR#1+N1nH7oG5Hs zVDt1vi+0$+L!(6~G)B3(@0pbde|01k*=cU@T+C1@+BUiyJt^6Ol~LHO^p+5R>D34q z1?}4lbdM}Sn?2y5(Qf6#!)?5U*t7;sfIuY`lap7TK9DGup?zslbJR`5Pl99!?x`*}7q)qeXn@f4)aq`HvdCaFrFL>MJ10&IF;#t1N9qr`Q4Ldg;A z+r``7bA?b}xZ~B$9oKiGI_$_ajj@*CrPw;9if>r5rWdNw^kjH&uWxI>mDcEN%8=$rL2HEc^c?QSW(0 z^a}sH8P@HZNn&Wqj2FB2DQ6ww{r0f0XGW|2 zM$C^?VDrmXo?jMHv|mgMq0-l$oH+KVvw%MCPM7rooRdr9XXJ`Zs%wSUvYW+GJWB#`?Iz9QB(Jr1%a=ZfS3-FA_)4Mx<)q}kEv49I zZffc$;})KQxRF8mK*CP<#Q_4|?@WUZ*kz2+q5X6q{Q>@Otxs>FKqEuo_Lf}KhKaXFA zUa^)Ls$nJLU9=JU5)Ypk|8sz+s1m}i|Ag1{TgOUlTB7kV`N3@^+2(?znNyIelPDlP zysqhP&pgp^pz*1%Aa&zU8LXLY;$v6g19zgoNMAxGpvj0fRQF*W#C&Qp*-aTk>P?vz z<_~RxE3Kp9^?~nEP<0qA0zPwaG2sI2bE57H?C)aw0u~3Q*)tg5w<7O}0>RU)%&++) z+OvB72Ji`#UXPFz$Mv^kyL^Z&`s%e+$l`!RU9XL@IuGoJc6ZSyKa)k?=$nU z)oc55yx+tBi0H4dAX|&uC!N5D_!qL*HE(fgrYST?ZieOB8(7$Mff&@?ZX4C=o=M14 zLt@|goRRWZtk`?-OWt2w)6&wfOu6{ezr%vXFmVxZ`&Jj(n#sXi)#oYa-XBL0>=(6` z2|@Cv8+xVG;m7m<%~j@IPx>yTND?}il5lm=-`lg7SbW5Y-XqezzM^3PrcbZ6&a?j3 ze=T#QW41lOf|JWtmI-YmWno^Hsq`OFv8G>`5Ppp&G3L6VruC&%NOw;Ek~*)HOY~lZ z)NYN+v!#`W1L$l-08p!VQNC3RZylP+RKAz4%q;83Z_a+TD;^~DYo*jtXGGU@Ug47jyWxjgmZ0|L z^@Wk=)iu4|`MsNc_g8vFO$4qsZ&HMj3F&q#bxnj$Y%@*5BT;(*rabfi%61gxMQ&X> z2LuWXr?$=@o<)rzXuZ-3PoHF$Wi|#kt)ugQkc7noQGsw=i}IOB{lC;c+q>Uc8HD;^ zM+fAMsLM5REr5P`+L(E-)fN|;@4Y1YIY2POnp(v!5K=m&WU7rK8UeF9$iTx8qx}dlWA5$y~Djfa6%Ev!$2RWr~ubw_}N4P!=Fge$%O8}$CE?H zut4S04S8_{{`7=B{_TEbKc8`oe*e2UflG5gu*CT>eKZSYOy-~&BnWqfV8V(dpr+gQ z3Ym0C>H2PAHZej}Ut7WGplteK^|ftneIa>cF6=5)OlrZZs4tggVV#8(-_B>*I}V1T z)*UF~-Owyws#cPQE+Ns=BHyLw9d(&&%;U*Z{V#%%)3Ql9GFKw3tdl|--jN%}6%hW% zrJM^2xV9;PalJ?O^|djqHZ@oOC67s+TlL-(!5SSMqS+C{nr3Rttv?V`h>&FL+5Hx3 zeObi@>Vs1Z=2{KC_}f7s7t|^j)dlY(r2z7Vr?=({Lsv5Z>gUEe5s$pkW7aDL<;uF9Uw<;}TzUYp7%tQC3OfTxz!~U)|>&yjU>lkghjA-(Bd)hR~JoQMA#8)h}Tx z6OW(h=dBZ7pZ5JB0*4~+6|FBeNYaMJ86Sc>zT}?F7Md5g2R4XT%(or(s|z;9Zeo55)SEJOmjwm z=7uH=H#ykO4$-4$H>lT*ojNX@l}79d;j$MkLb-R(YNa7&q+-L3IkOVa)@gRWN!8_D zu0KSalU-0Irf-*a3~l_`8Ro?6BE%Jr3J#H!1~}rB&L|E&4ZI=PMijs^p?!AE(7Sb8 zK>=a~WhU|fSalWxOc7=<#fb`=O$dtX{bn6s5W~&b59>6$10^sSMD5@mF-QU}oI_1> zu^H$h)|~EEVWS0yXY**h*vzXj$lBZ$36iKH-$&h3?h?3kV?(MVIh$8F4JeNxG4RYE zf>}y;B434dxsXufZDSe^U&$En7dgX7C0XSE7TEdZuUwgc+#&w8@B!N$kvDHU(iG#) z9y2y`Po+b?2g>rAE8=8T&`j#2j2DJY1&Y&_5i6&ad*~VE}&A zn8L5I=c_vjAS)tE>=F~)B@L%<+?UwkABB3}6134Z5P2f7UZuU5u%2nwY_S&Ii(Cy_;0`ZH!kN(duC{{`wxN3rp?mQxYhm_o z;o)e1M2&Nujjm7zq>^}l#*)t6msq#>G?r?mXEPl|Vm}XhV2d`U!pKC5DUF*~&w8Cy z!fe`A9rBP4@9apj63UgfMJ%8-jlVyfTZ68WV<3G8DIP{+%AO`bX=9E7hf#fg(E<-o z=fqeAp4WW@P#^6U+-@VQaqdB!KrtrS(#~P`*wm*{K1=Ib?H_JU(ReDzs!C$g7;L?> zxnC_-Pfi{${1N^MMhdYhuywn>BC&BhL=4ubi(6!ZqE8U zhlJ~`Vrs@he4Ks*TBOmhf82ui$Yam=X*YqIs)8;CNNvfCW~6q0e%oJjNlXC~k&tgY zp+j7rnn>M`Ps=Z)N1sjqfG#i>H`QY~aR%(8&?OF@+n2oDoDo|>_UI($6;N1}TH?h% z83$>fJA~A!%6Hm@-F0P}n!c#9rB3M;inarrKFW)wY*43+u_;kgU#U6{KsEy%E<9Oc zFlR?2?8AHO4bX_;-XM@3>axnuD?1WFPjH+JF@Ncm6^d+0cl;U&=h&j^8Dei4O{vNi zHMo!KA;2ScN{%u+nbvLzzN`j8bKIDjXi2tO3qvo!Uv-eQPWgRI?~7ab`MSs*EC6PE zPF0n4ATSkXAiwXW;Ph%rw-ASRl7E!*6ex}>)i3_n$g3g^ea#B@0H1XSkTS*Ea`&ih zI|FI`FO6`@EL=dl@Vx%|`m1pbZOxe?69L%Jw>_Gc=Q^+3mrx+?oT76xH4K0&)_M*c z*^FLVapS@4~WIHnbUt#ce0V1}=gx+ZYpuS!V zIQ#FT*3JlNcZF6opewZ5Iwz%c;w5+Kz}Qeo$wPoSsh!H290?P?8l!Wv_AiztyX}=AJ#)!zy}ju=W)lN6BzKVM_v2+ z#tIp+ygGU|wu25_N62-yvV!8E0_^lcP=iD`kOs_;Zl440mnd}sS2cj|s}7+YcVvnZ z0Zw^&%gqBAWHp?H`E3_KM=o6cEhtLx@T2`fAMr55)RwH|xDlfpMutyT{7lD{#+X`4 z6%daSjl5DrCnbcq-k8hqirLx@IV)hO8h z#f(Z5&Fp2SA%Pkf2)b*Ko?#h^z8qB#CIjkCrusa{Z`kVr_-SqkHQFI?FK2aCmu1V; zQQ#hz+-YZQUao=}IqD!jB`KoYLa3#p*jyPSUB12oxMCspG-j8qy@@u=U!jRvI z%A9gim>;Q?VtdUZb+9u7N8#aoA#sbaMhvAWJRL5a6{8|KnVmB^@?T6j4V* zoFP#r6oKuOXRk)TQho}KoSS*d98KZc?UrabmyzI|Y_IT$)Tj^jzJKV-`l=zcQP8gD ztXGc#I}PZuP9$+8&Lp2MNla-k2qr7S*QS;A>9FXnq@M60<~->U&b8HciiT0M?~J|? zt_P=l+(D_tAxs*ekYI+g-+0lHL9KvV2{?UuZWI)UBMH(A_Ni=QmwD{i<3a3W3+?EF zL>^|^90>6`;nC3}IsUpju@1UH9$07ppq7n9@4*0rX<@u9R|R*hm{r(4lWVBylkCkZH$sE&105~$i}Z;FHX33=x)mhPRpxhL5R5j4fB&y?eSqE z?x3l-Szb*sR7Nb=UTFPiNZqsw;>|i*4@O0GP*wK`(p3_dd)YLCxDG@`2|Cvd037Y# z8%ADK0+fPrEPI(G2wLaRG_RLYttvo=YySnyib%65h@*Nl@X&?S z6(wQ_RA(ijKsYXa{nu)Tl_~oCDZWHsof8`Rh!9i#IhT3xsJyTM5_+7zm8ekP=@gih z!XO#15Mk>wD&BdZ#`!0;+`W~Q^71hw{Bk^zPpaQob^VbIrd1Kn`Z!c|EOT!$v73<@ z-WS~MCxSI$^1>U4P8+M$r?j6~isKI}`aI~%m-wdpfMSA8ykL#bIyXV66S z$KeEQrNFtzDAEm`bE5>BC9g`oE&K9_pqh;<%Wenl!Zk|w6h~-6Sn`8HL(Qu^= zW$?}X{NVl{dYFCgbCgBtT&cps3+P>oc3<39+g{|k&*E*vGsqZEhE))HTVGXSn{`VQFNEELj&EbQI!Labz6{26Z1>d+H~7q-@-m6v zunX3W@bq~9Yz`-fEPzwmDHskj?BJ6tToZzp zOh1Q;Z+osi7p|6(6)GsF{s^v-3BhnNAtp!H&q@$@Ee=PGjG!h?1ntNt44<1H`@>Du zFU~hYDZC%rOkR`#8Lpe7N13<}BzfN4Ebb{-rEzvx$Q~)-tWn_8L)O9`bdZth1U7yd z`9BV&QYl$~1`|T*v%;YX`fe1Thf8o~2PT9?p8`z0=?+Zwy7UANdA2Q!E(uv$ii+tI zD=aH};b8_$rjM-id)SHWi}_3bM&+ct7qPz1R9IhWVgH0*KL_?&0IcsuL}~BwU2aUS z!^$QpX%eDsSBxC0w;XoFd3%MoCti!vm8R6_PFEK!Pt&1J5|SMR0MY`{2Mx|fpadd1 zm(-j484&srbPN?pLVibSgY=7oabgg9+`yvlhn(CGd$RX(_GS7*8N^6vC~1t(}Qaarm2kmjDKp4`6+6a6q-OQ#7a4)nGl_MPNTE522SK=agb9 zo>|>-V>eY=?w9_Dq9cupL3s1LOS!C^yDVt2)Mg(oM4($6cnB#sj&DLGYnc7SUb78Y|QI>>+z}TH5XMK0JbfNpipZ33iI86tQa*WB~(;$gXm44 zbnjwz0Ff}RUp{GdPRM(x#(*xmpipaOe%=@!Vj8tSuC#T;iL)4AezQw7w4H^cWU|l& zd7b(D-=kCYrVn3D(}|DXiM((Ppzg7&ni zp;nGETc+X|1(bxsgZ0Y7)aQ(92_uGJ<0>Mx$-@Dq63W91$Ju;^rC%NC^=& zNeLQO_8S_s-3Fpn2PNNyRukEFq7zkl4t#m1{v+D={~y2{biUwVlIO%7Rn|3l7kaV4I?)Kg<& z#v~T2YLhH))e1>9mA1DAGe3~PDr+DB{WrIk`4%n=z$Vp+;;F4u>qV-}q;JV$PbVW9~5-YL5Y^eg#f~uve|~l1o)O*-YWwW*|VsnBDjs2RTk7 zyH)Pp0P<5S=Q7I!a|NTdSINp6S8XX~2V#-@KwZY$0%Z!4i^xsrVF&U!N(fb2DjND0 zCI^ZdpsEM$Fh1Mw?*2s|oAy-wZWG|5;8fGf<;o`tKqhIO18^LP zs%Erj`Xo>CiSId#o5V-$b72E_b%*|oosZMNT>^~4Ce023+0cT5p9&efO;ZsjhB&v_ z;0US>FV*79FPHY2n~PPxH*2o+iZZgH~6kPn&X#&D3!N20AO1-jlM#hUu0 z$a<{DsOEjfLryTY$))3tU*-};33*cPQ?IzOLvca8U0bziO@IrLVmHW(EvT>QX0D~CeOg8Uvb$LH zBAf5*-^8bZ(GQ?6^9&bkJ)UGC!2TBao{}BdNi4=#iT!Q>E7eG+b5lLsyXK}V%GYWG zF>4nf@PE^fR$`V-T$;_!qJne8u#7PZ+)JqL$Jl;1^ zdL7#G#&XoBxEimylvqRFk_aMW_vJZCuj4is4XBhI1kb4Nef7Yl4}kvLxLD7ZA~JKH*TFd6;p|HqemjOw*lFm0-Qo(`y8@jdTH}W^ zKc{$*;OLI7~s3dsjqIen!2vM0!?-i#Y z$~s-7i#Wr$V5F#GUe#y*bL0^ubD!)>EmK=d!ntVl(e2F8m?vUg&Z`lXH@F!TU`LEg zLiV46IvvjA_+PZTX@VCbzg(+5F3XHI5WLBFBo4SJUT#9vTKAb=qun6}=ZcJV;(e7g z@}#0e>V+BAG-!gpPN{yg;}m8rz2?$OpuOiL0ozxrX(Pi?X5I<%>=a8YbX`7Dj1Tm7 zFedq85;jBaniKth#{met5MHnNg$K~G9<8?0WVjyApBx6-8*lKj72qzZ=^X1SQL_>b z992EHh5)FCYA={>B11TDQ;T$8_fhK}T3Y-cqcx61XjytnHPQSD0NlO*`y2h+`mG;s zda&W36$c!3rgP!ePx-vE=*{q)(W7=V$x^P0y3zNbd_#&?I+6xczML4WIM2s;*y0wV zv@Y|zjg6nVaxPc49&eTkN}Twr&NR^tJgy=DOMVJ2J3L&;3Q1fv$vSD$~7NF)1jdk;eECycfwd8 z(+=4-?d!L9&WQJqm3n3&!-I^44EfK&BX?oij}L|S8u6}QN%*vWOKb-1rPf7M!?3>p z#`SUMEeoc%qjNbU@px4h-$?of(G42XYx633s6TOR)<1FRuv}!W-Cx~dgLDqffBLv^ zkzp_GadYHup@`2nf}gCIDAWfFG&{;gS4HdO3z&^OlT9gt71**o^~iT?+j?p}1oeS;lW*8b zvb*Ie0$35*;YA)PUx}>5--R;%LxN=j}8Z*ye zA(9ebag854%3%+=g+=XKzPui){K>75Kb`qDT&$U!?+nYJ|YnuXxXS1GTHna|xx()8kDne0q|?V=!qE>O8wh&51f86k1fmTM(L>Ul>(P|*;Yt!WZ7S?uGp zQL@S`IE(Eri>Sm!%ZG0X4uE^Hev;ttD8N7+K;8Eiw$$^LtnIQ-DBK+`BHpqXUqA!%2f7auy%i z=5*ZBy7_DmfRoW$g>=*T?WCKuLf5d6FYsN+{ES>MGqE1csT91?=BCT_5F^5WpPAuW znILV4b?5<_?(GBK$RBA*>Q1wNi5K@9Roh5VZMd$%eA|Gjk^%2&dp)L!3ls0@(^f+O zpEj*>@;>&tgf0?afM%orrLDEX0~^SJg?q`+XW!(AZ_Tx)>eJV5F?Lw367Z-`yNbz5 zGT4G+fhL3G*gETOID$vf6F{G$c`bh`^$jK*>HehV7c2R zB;!|2I|;b(smP*azp|XDMe}5VwuYtq@r{PR0pwqUt?+bNTw&Nj_Jcp8NSOkb1j~)c z7I{t3WiWro0$4TD>$lq_say_Zq_Nt7=|NtEB774JtI5Mp!qmX&2IO_<{uDJL1|G zTIfYD4oT)6RXOm@rFkeVM5G=Z7S2`DHX8fjHznPZZ|gysjaSM~+fgC{AIyG-wdEEp zY0NZ4qo*=E0)Arzq4h|0q49L-q;05_paJN|fN<4KnyEnA86Oelori)6^>re2I%XaZ`w(RF z`(#;fXtx$0d!%NX+T>Bh09qM)V#=2q4+8Doajqh?5&O2JqN)s%792$>2jMm2EzYIG zlCj*m3h{eK7U*9TzE__2x?k-j_Q9U7;o5Mc;9ZGh(#ZZNv5eVyFd1i4NSORRQhUhX zAm@<9T3};CTY`dsQ@B#uWfJv}$wPV+(BC2iG3dFOe>6@@0}8N^3#owYglpk(Rr}wR z9u~`MuJu$lFY5U#74AG;+#LO2qkaE0c3yq1^am=lZ0c15ti261N~UTIqbO^-Iek$G z-P6f3+258LlQN5al~`BonA1j4`#e?aEo&I5PV+3t?S60#Wu7lB1UKF71h~4G#iNUp z;iQn*fk+EHxO_j~xKO>dHmIhq?)CeXIrS+%qE#FL7vx9_5a2I!2RQPl$;$ zDGxP7p&>eG3%v8o!udwjW16&!6*!4w%im)Tj-7Pee53M__RX`(js58McIUycMX>;g zg(EB_I2xIh>-mz6D1AHg{sFhh-CB}bf9+HTIrK)=1y6r{9oLxeGz8#^;z;9lxqLMH zZrmzBnz#e0GK+0_<$OmFMv+0s^)(@M6TR1P8s_;wRWct*bw4*eC|V?$xdBf|E#~_p zr!=+I9&Rc>%&M4)r4yZZ*xqBo`s{26a;mG^4ErcCNHXbj!wcT_Y{Xg>8t)h=2RQJL z$6f)?AHvZVduQcbPdjEYGs+d%>uL`&#Aq%1)R%pQpOp8mQi-_FiKaI{rK&Gjm^@b$ zKj@TsxP#Gm-kGk%%4jK*QKml^|MA3)l&gII(c}qc`rdt7XlOcLS`AwN2Yp*8G%dVq z;Mu>^YDJHi8n_mI0+kMqiygicN_%|?+2CGQc-$1^iPBcrO8(&j&+g)jby=-}{KY=3 z?E$7Xh<_YFBgh9vwQ6giQnwTCcE!mDzY#ffiyroh-FJCS=zF2x^cFE_ETv|z*bNE^ z*CO#Z5yXU^>7wW*{jd1D@#Hn|f5b^zSD-ITdj*sKA<1eaAQCCdENpas+h+lLY2HK3 zetQxCZA}EpsS#bsED#*6M`JKQt;pT(LHH-0t2Bi#wVzK$vZ80i%_bW`dS=B@OP>>b zRTAVq)4xlbYrgnZOnIJn9YL_P+8iVqzrhdS_y1L@L#dySe%JlNrJ4p7*YF4$PBq!& zx!cBLumONJU~0I>g>|LSepq#k5j|>WYx9{VqRK#puUNNy)P38S6Ne(3PMo8NdwT00 zvQb+{@wartV)$O$ohWAkxP|EmY3R(nU828q&AE>6q@}^CbS%+=H0Q48$QeDGam@3N zLUAfsd?{bVNy+pz|B4{`hJ(Ev4EK(nfsdP@P`aWdc6CNrgwEGka;ONPrcR}-Vl>SL z*|eo?vB*m2JzPjN#ZJT!LNY|`0VLKV9C_QTVMsMhH8%=%^DkX`K`Q)+qNv0dw(T!}U|u2PY6D}!Wrt@Y?#`-`D+?J_%M*o zdSIe>f)_(eR)ZDb36gp%eRDH4qo2zq$C_{#RmPe)3CntWO@d7dREJKKGh~d|-ZSPY zqzvr5)yr1^3)~BS-TC;mi|Mg|2UvY^fsQ>NlbZ)1qQmNpRtocd89!hHjp#^5sSpa1 zV+^YMnZ8is1z3sta9~gx0E_^wQ&x;w&J_)#4F;Svx8_>`z-=$Bi}&oI%$R`=cq0eJ zC&wrnPq4mw^s4OzEZbJ7iK@{|h>py4N*I1eqUGSqr3*agz{!&;Asa2ILe^isL3&z#D4>7Q95+tv@YV^$>u;9l=pqAFD8*%T%yNbHrcP_XR zQ!smg@EmTdT-cYN1^X%z&?11jn^00r$AbxKjOq|P(2{>QR+fgg^_pp3k-sY`Djv<#2GQ@Zq)0MI}*?_(w4%^(p61cUyg^FCZ9-i_YA(<(7S(&-i9-4`;L9@ z8Ak`xEnDF=)P3vDOS?*xAWg17sUr2jHGTP1?ynt-<5WzM90~Kcrf59Z)9O!h0Oa{iF z;YTCioIQu8CJp1>M$|!4CEJlSOKrb>2j^f#JmhF^|KEYs;0@HkX>EQUe?qbeNi>kE zM6SoLVTD#ETCHJs#GHy7abJV%qU|6N=6eGGWOYF?nla!B*X|Kw^!8z{zYNC5R9i04_84$5tlafkso6|AWcGGF>|0V~2%_PxddskR1!s=u z7E@|8qTbR)l2)QSjdmzN&Nv+Na^|INCenr8jUQp+=2&0H1kG*X8+CwvCt2jw&T=x1 z=4-WuS~}BJVAHbD@C@O}Ve|Bv5~3rZ)zq%;BzEZx21vP==#aaU!?0S03|`Zru6bk# z60+XF*;Ro8caYH{ddCRu@@I1kD|Hh@1A(_fp$sk!9N1tQc$SBA=i{=JOLHH47p&Yo ztZQAF<^Y2u%Z>v0EH1Ou-`V2IW(pU|x@bxXFc22AcB_}&kl%FrM`Jocll%vwd~rst zJ*7^1$?8fsTJWZMC`J%K&u?mnW@rGlkgDJ16%8u1eHOzXwV*fiSO>0a!Jt(VA4i@_ zCH?Y7S!08rs&`D@t9n%iP-tt>vDZ~3K>Dr^!-A*=Sc9;e(Iy5lZW-|Xc48!er@uo( z*o{UZ*8l=Q{lC>}OIESqFU5yX+IYYi4%|>Wft*MdE75(sNzC2^cbqly%n*TuF^XLA zVnEqNAxkGP2rpoXR6J)z8PtsR)TY}`i3!~ZT}EslzW2K`Gjcv6_&89_mK`zjj)%x5 zAdjD+eV$1p_yGZ8#NSp|T#itujX?ig-{7Tx(uw#u9{9iTWB+li+xoh0WiCBh?4_C&J3G+p z8&Y)fpw8?4Ckk}Q$@?n}>J}R+R(o%hX?zoSF;-Y9eA=%sV759ij6Nquj-3)mcI)e< zxIjcfGjBy|CCL`CwocR%{X*Sj&3J2UfT$-o=vbMqH!2JYO`Ed7TS213`Dd8 zkm88r6&;uhTz7}&I{dqP89B1;TAeX}-BZN;F*3{)nqd1D@WN6u)|+8mgZ}K;1BDdG z52?A+%yTgXtISYFq@O>=8P29b*_S<*4A%<6kK)cV93?2G+>$0dl4R2GUCgXS#*F;! zrbhfj+9>npldmE3G4Klxf$KU)@gZn2G?_xiv=fz@AhbblzS=}ni&c(4nYq<8fKK|w zv?B3)K)YJ+=2oBt_{XX-I#fmWL7htBfn&MqgJJnvN z8rMz9$Q?t+RElirLVxrR76}6IfI}2&u;72oRjh{u+~Fu3YQKy2yn^Byk`jxr+QzxdSeiLx zSyEso?g@^P3&heDR*5|y(d(yFPw?`yzbSBC;D>B*8R<4Zgk?V{mWNA{5X*3NCg&tJ zgS|&O+Sw3Gs+JH=r`MZc_=jbJw|3&#j=dqi-=!++Ej2_!)vCiW_cQf_askM1tg}M{ z%7ni90Om9bfF8WG1DGmUj)$mqU>Z6Ord;Yr?8|-I(i!r%#|^(6n4cOMZqYBmO?VoZK0K_40ydFj#rri%_m*I##MqJ;^BHu&X(KP^PlJe^P&qG{>$xx}jU^ zX}7t9-|3X<9JQ@8i>uM8`AY(ezDDx}EaQo%_<+L>vQY|RFPf`*7m%1*%E7(cBOr;A zzyd%^yk?WOIE(Ke^fCO7%=4^9$C&(ad=${Ac#*Kt?|(iW)**<~3*?+QSKm24g%^P| z#hjee)V}6-04MWa?!fgnk>O}qgD2R$Et*TICTu|PvIS+Gxn z!7q9{0)lHT*UX=&C2oACo%EC>%y9w#TfLD|bPb?%=zbeR$}%iTK{ZB>1zj0-zb}3# zO(*l8`mPO6px8Lj>eO#F$hE3!CNP2>rs^6d{V`SKN>VJet<5t-qYWgC~&e(iInHau$8uX z>;%PxrVaOS=n;AV_>k#;g_c)e*?6;SuzzM|c7^K{ss7ZnwCK?A~P> zMD-uLzf!Yz>zWGRoQ{38tL$h^cwUds?mb9Q|;zT^R9he)W~ukg}G>T>NFfLl!?XBrOmzK@7v#71NbcFE zYmJU85L!fC1!@RcO5ws$yiVL0E~b^LuOrarr2QeKgLUp1rq1>Yz_=H1bB}#w}``l^kEVL-v~qu1qjo z`U@JGWfv=Ml92qC)B?3c(=+^A;FqW75e8Kgev@Gx3SYXg@GH9HU8SL>>}mwu9RwEd z-2qCZmL2YeEE60D5ELLB^-Z6cw*c2-G$O9mc5T{2*?HEQ-tDCh?@!%7ar8O&Mi4m> z2T&Lxpbh(lC=xC1^#!>r^w(No<=IH!6EpA|NTyeF$)4vVX^*S?g?ZGb^E*f^ifMme zDGAcVN2FiI`@Z|W)yJki@ejB}{@i zLS|kVK1|CCKjo>w)U3YV1wAdMRZLM7zpD}^%COuEf>;^ick756C|TfxwHZ}xG&l@! zB3)o&nEP7oyWsiQCWreatQTZmlDu%FUe(IF5yNI0Y^7Y4eM*NrB_zKUYaMb5Zux`` zXY%}W09S>?gk4pYjtp`;?orthTyKDcrG>*TD{>ih!#=qKW)z=6gH#Z93vgy=`WKe< zEek_KyL;SoaQc^4tY5ISRhQxVg*)s%?YsDC1wRDoS4+$ARO$SLU!FSqW5&|t2720CFL5`|!j@8Py)EN3f|PT! z&WmqT3aBoR(eWd;yCeeBOLRwo;IU;~9$#%@ZmSCV17gf)T}#cStF^O|B$JnIY~okA z22)D7sADLI@St;1_=`lm+gj0PiJYL2v`;UneCDEwM2}LG@l?f;c<%)@1UD$hV~WXY z24zzBa@vQe{_QoG|I&cS;ugEC97v8Udh^PCm3Kdg$rm=KM^q zYM{LGsr^sJu55%=0q;o;iWtrKXD8-W=Sa6gNvuH9s5o)E^`L8{zo&{)^fa2vGO|IX z@v2;nJ_`%$ZxV4L300B6`?c}qe!elxrz>5tjFiNGIZ_LNQA`B=0}iXN+*d zu^EbGAR4~U*qH2>NFCVDg+&&=NhsXXh4u(r>Fbg;F@gZFs(~@=dH{X(9+A_~$a;8z zBp+pet3)^~X8}Scn^f7^XAv?pB^Z=_7b!1p#uw)RHO!`JDXHjm-&6QC12Hd;(eOJ9 zu>FPaa^*nd`W43o*%;ouCmX*=^=fLeRet4^H%Y0nc^lD7DEfx@=*a1zf{=!=%YuX~ z9C6dmEbJ*3sL^39od30DGLc*A(C;ywg|}p%JbTZgiy}kqy_f{V(ECHU0qfUQ>HZm; zT*d^Ib|RK~UijXfB{oEWs5OLjm+Hg~;Me?P_v z@ZX!xqKm@SCibOgywt!zr7d_NEJn6|Pto1h^@8GE_hNpbw=LX*GnmPVN(g2<9>QBT zl>zIwa;)v&>+#H&#OB1DXFApPIXF-;q{X%sajN9UYk6(hmH-C93$x+{s{5{649n{y zhC81{Z3%Z=h4PonadR&DA5B=$=hUPau5`1EmseE-9)utxoQ8LpKY*c zJgtNZ46!90B3W1FJKL$Z#;A4z=ySlOV=d@IL}>c=R_nW^M~CMr1@`C{DxRwH0o3DW zdw6Ugx?^Zg#+ujeIj@3!2M;u8G;%qd>X6tFrYlLqC=OY)BLAyhXDd-nRnyXl=6PZY zfaX}g0~ZEh|F7lG8)U>$DzxcT?HG`H)XA36%+`B#TmiNIEsqXB~NZ>!w-5 zg(p%@iB7kQMKAQC)Lx&boo8ot)j!}aQ^P6O@meLZb5Mc7$+0l0UNAs#N^??j;(zp7 zQLWH(JiFhM#p^@}@JlVye{2Fp$#1(!+cvFde=T#@p_#ySwyR?3TA%()9+b^kXqEDM zRuQ+E0ZTPgyWupxACR7v?%41;;|#$VSBE3`tIB4a;Z6? z5uRBr7k^<-v-nzn$umMPLjm zzi$9;%vY)~s0)YMqi#pk_>$il5M*?qqj}os-u0-$l5`~%dq)4T^?5x;4CrNV+~1$r z<7g%;ZDl#!Y#~=%Tu3Gs!6HFjHOCKdzTH7vdO)m&UHr7sRY%E4$jgyDlq0dp-9F8R zDRUouBfbIyOER2&Q>#fNnwwJ^*gAW(2rB?vz=pO2Suyf3Wx1PK7}4?kVTgD8;@qd+ zB|C6gB--Sh;naR@z9@}Tj}3|AA$Hs>v;cDYOgoSj54ssGDJOzwnTUNuy_Uf@X)4+P z4OxcT&Tcg_I(g6AGzE*jQ(W{_DOH8z6*RO`3poqlvXQ57IM zX=G+gbkG%}%iu{$By*KC!m6K7tecHtmW zHrXW89ZqsNVzHmu<3)NhL3Vu2S>5=~>g!HBisHp1AuL|)zD~Bcy7`||;*X80h=_yb z%gGic=d~&BDC(fpoY@7pYAg=+=wHI+@}&DwlE*9SB<5S6QmzXML0Nd}w_8Oy(L12R z0rVJ`X>~nYmXW-jXSgYu)vmNyhve!&-%!5p6L&MZk(p5SyZIpX998Z!=hENn(pTh< z?krRZ6sOq04UaW8o3+uYW(#~R*W4}sUn-M2rzKXv71|#MrMNRuX!vwcnf_q7w2+2d zqQy{=l53MzE~xkYgJY!+RJhbX+;cl#GzkkCDiVV#?OssldyJ&7c)cTR!Cv47M*b(_ z{`nb|LhJX2vFz$oy~IOcBmZX3nhBWRt##o@Qyh3YJntx{=6G*k9o_0iBw_lIo_s9^ zcJ65KL|vj(!E76Jc1puLbrJax+eTF_@v$_CvQdCZgydq3fbr!&!pTFZ+k<-b;(-86 z#tvg}eVbw-;wUcZ_15hPWxnia*dMcK`7f#rMp_>-kYtie+t^W=+_Jh$vfNKrQngr(ZY8I&b__T>{d9Yy&$PaxxA| zL-zWAT{&JTh*(2n>4N0r0vx*JEv%GE3kpYK=+#na5&C&Bg(eQ0@x2!ZnY`#%D-R|` znkZnA04k=n4ZKSS_Nny6&-D&+54W|9Xt@^gHMX)bQ}||Z#{Gm4DX#oet+QE72~{pd z7T?e1Tsxu%jUziuUMH-X96T#o8q^GuJdQsC*eNi!RmhFJ$kE4BolCo75JVF~6a#cg%exBHtf4M>?AxAVHN4 zm_h5i6EfhpIp=3~De2_TbH{{&LQE+TaNf7<&9P^7jyza)YuES23L3sc{=a(3aBu#t zi(30$o{H9f!4`^^10*&bO-w5Qu85W-S-JRY*meRA_`N7%d}k^pP33F9AgC=Mx(nh0 zVS~Av*DG&~8e?wYC|mn0&D-xGCchWNt9gb@tg+@Uj`j!>%O&)D$7%Ol*+WpFx`wm&gY%TR<_ql$4?YJe3?8Hb zIx=9Gr@sJWd~dn6H0QaGUEn}jkBR4N5Q?ADDDDv1Q?<#(w1q&47`w6(9Gy1e7C(7l zhHnTlMEK2EV;KNx@>~$0sx22c8fl>D&lB@zMVc9XnrdMV7>F5!!2lM#5>3E(R5*Vs z<+&~v+~ozv549GE#nMMWD(u~I!GJrS^Hlc7NQ%0+IVSibHzgZTrsA{D7(pgM;?=6q)670T{-M5yPZW>mmGHuYsQUR9Ehed784zj867$iq9z zS?zm^mBRS8K6lt?FR%$GNTFL4{NSnNw#nRVK^FQ&7{5B|T@OJe{J=|2*s`482$YcL z>qS8YTCGR!)~DR}DU+c4mp)V81br*-@EP%4+iS&j_K*##1;sR-V9a`GMBg7**-xRY zfrHw{7$E$GO@fNB@s9DR5fEEL$$s}Bhca~0T6x=j`R`5_13MRO0oMbqai6`ytGQk;o zUYiljHT`N%A2uX(LvR62s~d*Y%BO-|||(HBWe?mTVa zCQC1gi%!IuRyU?Hc5O=yaYlipNm}IK622noF8&aT-YJvY*Mds6+tC}t9BYjr9Kr_Q z>lr9Jx#oQIL?jQ!t5lRk$65vMDwiDW!{c7%()k;@Y|ec(`i zaw%U|(2vBZOgbCAs;K0})XMUX!?yJQYzjOG-qj$f5g*u+xQ%wUX8w!_Mo9V#04AIX z(voGWPi-t}yVu3lo=6&oOdw+}V+Pc9Bl#`3(SBvShDT3x?+K(AS5342>lUlpG3lYh z#{ot(#t;=7yNQce=lM`LJVBHbi6JK?(KL$jonbG}G`d~^RXLSTM^9GZhJ?B>5VHcO z(aFOUL#8^D!hoElX-%N>QoUVZVbp zqt8n#R-AhC1$+rq;XEjL1GKxRaS}sITOYq^6uC zRo1WrTyb(PizO;Ep-9tW4bY?ZCwSsEVqK*KPqb1v zMP{$EinV?Nb>wEKObM*3)rImBjv63h)_FGQ_#FGW0-AQw=)_ki=~dAN`l{WCRM1WJ zL;INRUIMTWjzIN!9V!%SYqJ|s!S8t9cg8BM z0MPo@ErGaH@h5NsAuX(=dIvq zXJ;F*FXSEdGXwfa4*R8#2jbfYOlbON_kE@n{W34r!#T${7EXPwCF72pDzqOm+*0vt zyI>?FAZV})Z@+f1h&B&S@n90Mf4GpLjU(ONUv+Up5z`^PV#pw{KkJ@g8u4IAV!(FX zT<4<(j|@?UB&`VgjyzuWPx6@(N#2ulZ~jI%4%5%$NF%hTZT|du)`+MLbVhmgpdxCX zkEA&PLAST5bZ5U-!vfJ!E zbVi2F0}oU0S8DFpq%7JCxuqbC2V8ij_j2I8#uK z*5_#&yrO@hVPnuzs}prSQ~p_FDrGLXRVi8=Ab+1hn+uKkay>w#T0FHQj|Q#tsM|yn zF!UM?v~`bnPI;i?+u5USi%~o4v1q_{fr~(s!O`R!Lf*lpi|980f)(hJt(Fy4t?HJqiMrbF{M27~L%!+; z2$e(cA=GD=%g3T+mAuyF$8x#|Gr8+RWu-yI<6%QGK+^@@bk=PMEvd%-tH=}*V6xVj z!TtOPKp6l{vv0;$UYAA6qFsXBZKtPNVG4qqS(%&6MZ(NLUbT4n=qKr|BhR()}8T=ha(D~6*X z()Pk-_jdF0034buFIa!n?=75L-8@T!fIo`)dyXbM&;JRf%YH8RvCSXfT}&X-9lGes zlhsi>B{ zx2#}RnY5!qO2{LJaeBO}3LD^A7ahL@*)I$pL`Vjt4;FDFuu3%F3)w_i`ExCk$vx)x z(5@o2k4BYkSb}jBZ-i=A_P&`gd8`lMnhI#v#7SvNQ`E=1cU8iUHiZ!p27JLFNNp^A z!JFj$;gZ1+-8N?mQes8jwloIg#H($lm=+e){^=Hhae)~g<6q#ietRX&Jzp2;c4v-I zX*AR)PK*k2ibxfHi--F!tnfG@Zfc@nukTbkY*$yTb0*R`n*j?Q2*hUXd-&*=`}(g? z)4B1vR!+!9HA*|zx`0OBBTW_T-H53IqX(}6DYt6p5*7v+b_0?1i4 zz^L?J3Z(f?_wCCc5zA^=>B5`TaEhn3GW3NKKDTQn+l61Jpa(1pe;lC;{NPDXin=5z z+~THMhiOf9fQ?GKkoL-lI)aQDh$th2d@S1&&Ci2W=cBN*f25=NH3k=>==93kEpF=K z$e2zaKcD0Erks!X%Es$bEP!1-fk`&X7MsQu_<$(Tp{44sgrMiz24P$-NXVpcAEwT* zgb9{yocqs`l(Q85%p&Svfvz;Sx(bC1+!r>-;1LxTehqdb5-pPa8ZoTU%#7amt)} zZ}zQ`ilJKw^T>)w;#q=9HrrY;Eo7t8!xvLhX$-mU+@6Eqazs%3Nc$7Jrl3{Trh#hFFiWr{xV}oOR)WcZ@Pf z?#B6Yj-*s<6pcfpIBesDyFWOJR+Y?y=@RcUH(Dg)_`w}I-{C`IFrTJA6?$W1mXh~D z^sZx?*Azv$RTTZIjj{@^Jah)`XuDH&Gw=%{H)Y;#Ob_w)_de3_%m#hVYnu)Cp4+J> z1-C>Sk<`o`FEF0qrs{V-SaQ%_B=n3@{bnSBePQg6sc=UJf<-d$mB5I5TPwN^19I9q zKIN;4GT8#No*x#~j@*b^Ox%I#Ld?|9M#wF~DrIuiRbdQbv;BHGvacSz73*^{X>Fkj zYD%!UAKNYfoLmz0Y#DOz6QDx)WsE#yYn#_YMWS2ai*dl}A?gp-ROeW6JoUx-z#6jVp>@Qn2%IqD z-`Yf(cOJmby&g8i9NC(;R9P;6;hmUYnb{Unk6YSbmw`699buSyu=d+^ ze~miY=i~4zi7K@-p$8^bm6RMq7owTL_u0h#l@t%c!~CfkOtCru`Huc#s89!oaPNtH_}WfBD{lZC2&#ZhE17pp4R0G6q#n=Fr>YK z$a-lJ-vZkUNK(S4i+{a#P@lw>)MQBNewbRi08D@CoKoUz`~q=aJ8MI$_658VLZT5a zWP9gtkBOMb29rD|MQTWo8ca3?@uSRfr$+C$#Vf{<@Me=DNwSU$@q%{zdn23mh)KYTyR|+ESM$ify@T+c((mR0t>`X zfXBk|;Ye@-Hb}#lY0KDXY_DEWAZL zP8M2gJvoZ^G1b$%Wm1-e;QGTpJKZZWE-^D zkb7kWR&ZbV3Y(9w`!~8jZ^24ssFTcR&O>0cUUF&YyDf>)tV+%U?SD2;qQDh1aRoAU zZSQXCkDMczg1zK^5FLiPedwHIUPf7ux&_GpFYBi?gLb6LhyVLvkA> z8?d<4v+i9q2o>gq))Ro;uSba1WXJBitu}0%_&HRYnrcmI>U#oE-lGji%tNQ{*JH~z z!I$;VEoId`Z(E0zR~vfs5&cR+*P!FkM*#9{q#!jWgd4V*X7gS)=HnUa&qIQ<(!nQk zDTSZDmBSq#nBRwkDez_Gj$gE|&5|)3y)6K#oO%gvuDb;GiXQcLHl^ezo*&vmU)t`+ zVDk1~qnkG+`6aCb8-!C;SfjZ8>BtTD58#bkoKi|$P1?UbL8inwBaXb*$o!UoLFK1& zpHo8amv)B+sY}*xk_mlwwC{U`;{NV>e|4P#0&lz;w6g2T=sY0~3=*1%&$ zTKyxM36Cn8ZpTe9(_e6o{G*x-n22+@{soOJQ0OlqOdRq*zmrA#dut)#C*D>q-r_gn zv2Qu~)CoJ5$z{(EReUlS1-_v=d81cykOw$C7m)KUd@XCaO+15_ADI%XGI@i(SMx=X zTs0EB;%-_R>bB03;L(>|9GsZRms}~D5z1ZK54}tQjJSf;`ZXFH7v6&LITrN;FX}h$mnPU3)}M1s zGPSYGy5bRlOvIwNL|M&j&MpvninZ%laf0htrsImS4C&V?%wnz`YNK`mi>QuYgwwZ` zZ$dgNBqw=<3nxW``uG(PT8E9#R@f<)n(-4d@i$TjYUU~Iubk|p9jBYRy5`)QW=Z$H zQnZ$zcEo8Yv5f>yBj$O|f!>H;Vr9Fg8C~|dKllqA@!<7DJM?|1m9nLWHKOkMVG==A zgi%k>s}70I$3wsscAT`mKw|603h)E>fru5<;5K&T7pU&?=dOOtKWf^wR7%1 z$9o0naOM~`(z)K0y*}kf)kz{R_Vl#0_JSA@j;P*A*Cy+^8PCOczMrUbfpAy&1suQ- zKvO^C{?$a(mOd=sDjG2L=1yS&65JfiYp-oRePPb3H4j*fb8C>HrVK~Qrr=b}4dJOy zQ4Jsjh$hM#8^+k!U=@|ah1~epQ`O9vUV+b8jd#**f*p9mE(3szJf01J`4kLrN9xjC z>tmdIr^B2VB0o+pD+Xik>1gYLY2eWT2uAdXOS#ukTZf@%U*{Lt@}BL2(;&-mL2HED z0FdifqU3ly}MGBZDEh9q2P=#?{lz2yU=Dikx69v)S44!-qJ>q$xb#bq!CCR|8gJvs$uYp}b3=S0*F5X%fEzrwimvP%eEa7vZRH;reu z{AXYtv$*j=%u>ipTa9t&n;%1I6UT?WLBr_rb+l#I25>rAvKWA2L?egx^R)}!k?>`_ zEN6!tqm|7IKR=nq&GvNjJE*3J(ssx37)@gI4A+{}1GZ%At~FYzsZ5+++MTSijZgAb zQcNli32WINzCtVonba3daojj!KRe%PpN6as4z-JB9=K_se?OK=EyHo>#YfC7jir0jEXiv+;}qbDrEx)#xW6I-l%kl}T)`ZUWUqBcBZ6Ew zEJiXOVgF1oRUTc1@Q4V0i1eh4CJx+==f2FB*9eX<}{z~s?Kg@p6 z27-J4Y%{;{uZzP@3mB<6mX2-L)Z=b0A4D98qK4mLM-UCuR>(A^KOE*mH#PMZG2g7z69`3Tl%?m-=-lJoSyDH2tn z<|FXODg=*qi)J9&B;}+{7Oz-K%O23fanIgfG$JrxWUpi)3DC=UVz^gpl#vnISu5ME zT^EE7V2=(WPo#5KlA6EsTqi)AU(B~P_p|?{GHjz|OA^EOy!f8+VZ z=01+0=T^fQg`Z97G#s6$OxJBODSfv9gONhU^ybG0G9Lye4KM3_OYrbO2E17Ggy6NR z2j0vfQf*JCk|iCR8~W({)k~yTqYCNIMKDv$;NX1D3h0ZqIveh0f?J`m&udS;5BI{ zLS#&W&WGP|?0_lokS>E3kzEp4K&n6fR)n^B(%_qV=4iGIiiGKjMEHo?^@~=y^_K0> zgwP(_J3po8L-ju!R3hDo<;ZwcxpE*HB%6Rm<|Li{)=K-8eyk0mS><}e+xI#CNLe;vL0(L6fv2c zYCLncXyKNM3j0|sZz_~^d-!Q18dcHhB4-!-KFe=F%sY0wE#&j4TmzR4lDVwfE?%a@ zNYr~KQ+GUF#bTB-DVS_ZkI*=?_*ce{C$4o5GEB4x(hLHcyc%LSqXU>=@0Nt&GJ_%! z48k)HUMM=1?FWbEzcfZtNm!wroXG6`Ch8ZxK)x*c4+fP~ZqaJ36^PWomS|g!1zKba zcX#?MIc{r369U6cAoCL^eeZ?;URkegugOb7p+KZ~x~fVkcKpl9%*=WWc^6AO&&A#Q6PYtZJ8Pnw%OAAx+#|mPcZKORxZoCATj%uWaXiZipHD@D+X>(@5!F zvLkE@Zo&O+U0^!WeLmzR@qm=gBalrt#B?G$S7!ThVfJHUxd*ONfu%q*S;(Co``j`u z{yc*uQ&lR-!2}!&{p}oAWrStyHrG26FE5X)wlfeA6xoJZC?&#qbOv8G&+fnC6vYS?U)3mh1+ zZ#8)x!#D*lsBl;QwS*3(ec11{bVHAV*hz4Yp-^wR1}!~P=*()wbFlGJD5R&};U&SN zUS$c?DxM;Jf%D>t`4t4jZx6rr9@3ICKNQ^QMwx?9RNhyv+Sv*>_`c%{T$g)pSRWk^ zLOnvG7!#&}H$!U1Fk#Fp3U!_E*7b{Df_gFlyE6AGpG$-JQm+-K&1z5e2x8viG4;7o zIlFVY1C)SxkPsLOr+Mo$-xb$E59p?HhLz=_#tKJ<a4z6AHu-$FglN8dxtDEfZTiS6zyE>QRUx$46 zA%TW5;ENmvJRLc%%fFzgFI|G^(l@{Pp}sOfgWJM@#h7zYcn&!|u^Uv1L2IA3jLm$n zh!xv&<0BgTj6IpMbac{F3qVg35mCfy9xg4261KXR-VN zx!-y@6hu(%_>4D=iJ=UvI@uK`u9H|98n)1#Z^S!kw{F76&h5kd4SJ8BGjB0y`*R12 z0}Dh-r(S|p+7+F(%wRG?71l)_to@wlcmQ`Y?@HgH3qa6zfB!+A6L-@=wAUuw!jQRc zUFH{>V^-XONOIL6KxrskHwIs*-a2yov4hOQH{cAwvgt3JTYjqPZLQCXKm#k|Xig74 z64pRwqi9n#0--e{QgI12Z+UQ|R~R9N?n$!mPpF2oaYjY5ioZDTl zYC=~Fp3v-G;NE8D^7*AvfZ}96-P^N)d7vbR>D8;K; zs(yIP5=7n*6w1C05je@qRC|(@Pd$TFP?r24=-3jr*t8ChDG=-Qev-4dS01XK51+rc zYQM}Oz>W03?uBfg4ff*3bUhVd7+a^pdHt;8t7}7uqkB{DNcP#z)I1KQTd@y`Qu#A? z#p}9JIHvLbG1bpNstR6Rja9^-?v49ZhLF-&m_g!mAqAFft$X5)$s}ACn6ALly}H?SH7&j0|206?wkl=dog^T|fy@ za_Mm|?9YNn=g(7pa{hB%;JA_CDs+>{NKO8)lyzjp9z7-w7RB04iS$lAus(cD+mf1Q z#Om=;L_cF~<~~4doTJ>ykd>k8jC_~trf&8yEcLeCs)vP6Xkg-cBxRC4<|XDS`HZi0 z6=?SJQAaZk-#0BXk~87tS`ZgdXwka#@|C&r8~&KywN4Ne*v@*QUqwx4nuVvtx=hMz z=HDB4hp?CZ88U9uj89OPsgvQI&*D2k3sGmwK3NHw731JCD(y* zZA+U=YnG>Z(El95{7#eYp+Ul@%=K+XFxP#XDyU11qlnvzZAOaf03PcU;GX~FdY+w# zSyKdz6nk*jI?|}5?HI0Hf{WaK5Ftn~55J-zTlQGUl{snFv==##P}ocwOu|wd0A)n7 z8i6Gj6ZFp({KEi0;g2e_{WyexPJ9*u378nefP6h1M^OuuryGqAot#Dg5~xva<1lRv z+M>0IgQi=>808<-lz1@Mm&vQ{?V8e*K}GQEu8WRdd}SD+W7-GbT4NQb(*|a8b0U$V zGk)Q+NM#|WpDloo>r3^pNx(OA>u<9Hly=Vrj+?$B>#8^?W$Pk@%(ocbSoq`rE~9yA z|HJE&0X=!t0bJFZy5~~?oLK~)HHhYc?f^o4ae8V#lJ%nj_5o^$}MHmd8$!UP6jxteTpqL-p-oy-)7a0!cNCx+Tvien*C06yzM zc;lf(3|FtjmL)B@itk}acokAkG3{PNtLz2hNEHqm%;-UQQg;{9$#g7^78)z$Jl~vp z>nkqprL%$$Qj7CVXt|#cG@09mof@@Jt4W5{|JO_%7k1tu%l#ev!5&C`s>{?q7X|BH z@hFz-v3XvUd=4iK+fCtY$qKO!EiXJn9vZ6Ia4o%`#RCi=(xG1gVmvnXlIVUqK|fGP0W^+dgRtc8CIE`PqdO$ zZTbP{ItIN1Z8HcWvM$3focz-TE6DFwO}iRQhH0J93&}=RO!?LH zpwLm2;sY6#o4Wh|v^}i}K_=*Y$^4XBiA#R}_l+q+3OP$Sm`#;7?(phtihL+@v*95{ z0K7#z-jRe5JfViuo#`$C9G=-woWQ3!G zhDfd{XVUNZJp2p-+-t^$!WZnBhq$1=@Cz|l2pxP(5VwUVI1c)D1aT(YC>s}Yz-R77 zkYLO~LU0M#pztr#B7ioXEC&;EvP6(m>7)MVn@7|C=&J^a-cA=Y_XA1m0KXY%)H~LZ zggpb|arg6qY_b0d>cS9`fdI-vA?bWwuu64!F;#m?@nv3UrSEgLAe0-!*K}}k@enI9 zwR)G7Y#y(G6G+kZ^9OY}^Ekt2#W0*J{=rMbJgvI%(KL9Vcs`1QD-6OKf)GCxZsr&T2EX82iU;C(xt_5dF)^}6n3Q^(z8{-WFdoA1#b+;d1 z3S_QWJXA5(Es#4Duw33*rF*w{Q4?RE8C=r-1V`#F9IYlVv=6k-jDTBSiChOYq(J=k zRlKu7#6tJvqyJEC<}pyBs1xR>xSh56)m~W(Bvp4rQQacC1<8DbcoW@~C04 z$!PTTd&5G+STSJQpWxFEW=bAXSQ97_7)e2>MY(%~jh0P2Wm{fM(S@3kD!sX=Hs_BI z7vg6yNkaFXST@fxNy4>Sp)hlx0)BXu3@lW%AaXM4YVb4}mK1BOW0oqSSxLQf)(#n` zfjz>`ryD$wWRvfl07Mr{De?&6vu~Xs$VXrTRn*;P5pD^n!76GZkacpY6QLTBVTEYI zbJ|jMg(>reUvd$+c0NsynyXib{}sJhzE&~2>Nb~|d?^W)y*KC&D9;vb$}3>IE;Y*N zPa9JrcY`Ay-osY9#`(!foBumHjR=Y0xt{S(-2v;8o!H7p>9Z~inAU93^7aOn_+ohpNX{Q9XR zPvnOJRhx=XB*l5q-7P*o1~ws&4Cqxp$x29@FNj%f?QI+fkO%l#kF5RFO^vpy%oN)s zQw%+I)~$?)?GJ0a!P$jX3E$owzPqL`ixUpk)Mt~{P*DuloFhJaD6 z84Bca6%JU_#U%uav95gwytqo<7|X^-A6QdrKi~`5o|lL+YFnlPp*V;>As^-y8na^R z$Wh~&o|R$BhEYrg>D+n#P9ZeQ5uxr0XUDlB>S@z+ML3|)eJ=m6!Y>aUL(@-i<48zQ zHHzT*=4Al-EH#<{i~ryT*BGs4+^uQ&D(}1=1w#vdFKe!+Xm{YEN0(ng2#ST{kvaL~mK^TfD&3YXdnI5H0U*+DI;}n}^uvH`~QR29_ zOA6pr^x~5`(Lz{H1p}l10RKM#z-&$LaE-vB(`sm*_?7&!mLybg#bM#pV57f9yftI1 ztR$M+8;OREaRyMN7Mt8=KsU*!K<&tl0Gq7o z(ngF3&#EC)t0^;4kI#!)1Ld`H5oAY-PJq^73`xbPj#(y{k^4#d=l5Fc!b`Y($or8K zB+-bghlk|nv+Q}K#={i|Bpkh94#YlvbKYneW!DB2SzPq;A^46wHzhJXnucY`(2&UW z58awR%+roe&D3NEfDw}Eu@{6fHGaCwb%O%AgZpKEfZ(+>)!peISidwnOjI*TN?@0Z z4_B5rfp4|&4c1KBCZ_UT6uJ5=_~w0)_{q0EkFaPuh-i6~^`(d>>PGM4p3`z3A4tcg z`GQ=Tu`UbZ&yL`w+`xP|!Yo(tB|u`V^=bXSzA9Xp6%syZ{e6$)S|92HQ32=6HUR-3 zhOey87d4Sh`V{L^3%Z*w_M%clKZniU_D;ypjSvHS@i*VSK8pCyA8MOuopbV%si{=E$bPF;Q8LC!73$8s%X9$u|+&RbeUqSwF3yKLh1@c+Z?FTke2MH=H>Ma)>~9J zNo=zTJb2N}Fz%B_f;TCa+0eY*2pN zux@PWD$Uocj;52BybEUT=8{w5p`rwvb(~mBOGF9dw>La|qCb{sW{7&+JAt&af|c<& zA-@5BWaal9VdSxh6pzu2jgu);@#s~a!NDHS%uIsIWxIu0G)lcecbe4LST(GTrMMwM zmlXU)dW&HB(C^~UiL^8ipxx{VX5?}zp?*_)KPnx3X&^&EG)4CjuftQ>JC)U!u81T~ z@Qf#zXA;FK4?N1BCX#$PRk{*3fUh9M-rM8@6!&8s!8xSG#Mj-pcR0d{7(0h&R)8Ok?$b(F>|+u ztxGhD9V+5bmo#>-gfOshpu8}a8|izn&VVhmL&?p5Z6^jd+F_+FlOzV%oy@*4{FxIL za)N7XBkh}O_w?LChX_15)3PJJ0Y=K=F?)SY7rJ( zquv)d&pJOl!_7*_G&XccZXo0?xxcBpE^J_oQ z31A)^isOT(EU~OpOZd2>eOz<2!9PdrB#;-a1@c}*Ec@pY{J7W%>-WF`j4aA)tQ+yA zTw7Q8cXCxD*~zfI1%{&bwWbc!D}Zh(GRu1S2pG>%PVq87X;`&+w))_nR1hofK&I@@ z-RAA4Z~6<|-$3{_JbKY~3D)c46?@2{O6-#vOwjPY~wX9Jo**ZGK_%)q!Nl$(dpZbqjg^8v^XU zvC6eA63e4EjQ4T&3Q@nqW(YonCZ^XD1C9q~`1Q|{gqJ@aULRX)=Oq>Bw|IJT?=;|I zaZQwy54E`Xlq++ODUtn)s~fTfj0`Mh=hQ3X7uD|tBPxI{f`_%}wI-+k+)qVM=z#g@ z4LIe4c!w6UOL50T^#akm!sBX#p(z^a8!G)f8Dkq{<@18Xeqqt1k(|FKeO#{#u#PiZc&s z=q5$gUmFwoRpyNqbC5xt7&-bU-~m|{R_;|A4!8{F>88D=*@7yefY*!Dl^6jlE6@b% z4TGO$r%Q>g_U`6=>$R;ch$c1($+yR0C-MTXt)K=X?S5ij(P~Z^XITKMeb9fDem(Za zr*=re^RVWR6N7jwnC$+aMAz6=L50AcWXcq_NLxi#)_fTym0xw6A?Df85Nwo=USXcQ z6DB0C`mgDTvNiOe-dMdj^AP#6EDQ`*_(FY+LNXv(P==;rk{w82HGv>YP-99%Msh32bI|&;K&r20x zi)@WZ!ZYj|&eEYLnlFnafm1SnDD>C>9g9y0mxJe8OcET@Z>)3y)rphqxu0h`uKgVu zj~^7PWNcMymft{1WW#10SykoH8XC-@-Zz3l;XYM8W`l0%rKa31r<^fw^lrK zx)F}+0ch%y5F$}kIbiw|RqBJ}#gn6sU2a;^1Hou5aD05MimszG&b3F5-N!8YNxh9W zC7$I_ob4D9I#jiN@NWjeHFUd9y-mS(pplyvMdiM#Bv<`)fD;m*m!8;)y*2fteRr`e zIL#G1q595HOdFN{TGZH%kUyS7p)hV(|K~QEBv-))&SLOb{>tLSKk1HSFC?J{U~^}} zb^mBCopiF?A?n?buAajVf0uW)7L^os?E&;41bY9=ss3w1RzK=aazKvTjOj+s>E5!W z`DqH48gl00AHJeAPSf8s>Qxt)*+MeEdRxS@K_kZ+!a$9+x7=Kv_z1Kz+k{&{Q9NgAdB z-e7{Zx;~SqGBqHMXi|S!6rA>nLdm%guR#jTP%;5_tH3bQU%y1hoGuKvvn+Q|FBDL5 zV@VtQm#$z;xcfnYHTC!WS8wgt0vu5z^>~k`(CbqLIMqaXL+s>)W|!d#>C01o(dGKA zU1-ys*Se}rgFuchoJx)zxv0cvteG}WqM;RPsC_&W11u$fm!Y?DaXcoYi)ipr;xb)p z2H!-ZiFNt$>o`I@Ch~XXzo#Z<4Pw?|VeO>wwfdAXG0l=ky>K-W)3q`num)@MzW)D; zShW3V#oj=8%B`g#?`<|1v6jx=sk4i{Xg@Kf=(YgdhoVPw-Yy5i+5!qY19L~TDmC)> z$aPf8+%JSA;TDJl6QGNx_KVB0p)x21?;_s01=PO)GQjAkGMPyPO9LcFqW=dKHV7sN z*QA%LO|GQUJ83r$N=0ZpuhFt*a}mp1ceRC}kO`++g2VOvlN`cj8n+9l6ZOAS$4y+L zyAX3m;X|PPT_iu%Ctpu!^&8GM2evu(u;kHJG>GGs`2yiRoTXe+TRWJ!weY&OmXfdZ ziz&8%N-d3%J_0V3*5^-w^Ml?dEWSBY+YZCms4y76zjd}O-~egvO5s`lfr(2PkS*m({q%g^bKP=9=JlwhQpF@ zuW9Xxw>|fJ?Jd9fuf)dytqFmBdJWFbRqu$d^#pl&_e z>1f{Fa9Prq8UI-!tadwZ7;#EEGFuJhRliX*CCHeE@iz^!(Xp1_OwZysf_Uyu6qTH? zibJ#I6fMEyjIa|$o<43a^}J(u{o~c`?DyG+T|`za_XZ1g0;|@CBI0bk!i1+)e`9VO zHdk)XLFK;8A2t6L5S#d!XEq!6-XaPkg*X`*wI;z^PC{rDSs>d{Xl!JUW**s#$FJa*y)Rz4bR(t&=7c)?C$zM zG`Q~8ZSSKuumRXn=bccV7R8ye7#L@=19uYKLY%pYI_2BWcoku)l3nWlKP6t_8wzM) zeR0%M9}%Si=|ZMH9Xr09ey~zQT&%5SNt*ohg9;Hu-w7LP8=5CRlqc7s4C~S1F;8NR z4f#U&1qj(;Uvfw!Ku(-7A&bLF;w;_{UrR~>Hvot}?=IZuVl+;c0R59LX{-hg?~=+ zEP(RPGyK8cYC<7Ivxl(_Zli};HF?#;DEo|yH^xp5&ASw#!#J;wY|kgNP8}4eFrU9^ zd3%G8^5e8fvzqxW<9Vj~Vr49|TAPmo-zA$(`Ld|wk2XmsXl#2A4E)OIDrT^y(zp3V z*GW(YKuL19Ef_H3QYXCaCm9g3#81PAiuJ5A?k<_~8O)G#X1NfxiEKHVVG!Iz^n${`T} zgS5oXjgNJ-Tlhk(ugdpGbw^!40l3=Lz7#cBI|!UcWOzy~et%cuLswtV zQB$TU0inGCo1kbznRZ-DxdoJ+v}2Tj81ADg9XUW^(6J70z{&6UVUUQZhGXf`hLWV5 zPO&n#n8aiO>_rUXF<8*fQX$92g~WFiZ=Jd1r=$tJyDd?vId5ZW+RYDWGhs`+ojZitY3uk{iaFTLxk+sr8{E&HML6g9S?=7z zZGmHuzlCakC}1#RtD2&(5S^V#5sq+YaQ7kfMyiH}FI%WezcHF0UgU?N2Ox6%Pin$f z2AyuC8J(7{#JW|A@1?YhCv~>XUUDLpeSV5gf^w=_{@D9apIjA26yU0M9*KWL&{d~m z7k9$uyUljILj@q&e7nn+#r`5SSK~&858DWb)dGV>$HCuip-ShsnFA_Dl)8PKCSstL z)Lv#=Nn^li97!y#%GH5^FYS7`z`zt%3=!|E6OZKBV>$UJkH_*#Dxw;>iKP;ArWd8$Vv=IacO<@0`kG2Kk$6pPM8 z|Mj6e6oe0#{(5~Fw5#={1w_-#LL^ukPrac-fh5=sPSRxuRTfl?1-!P9Nj*~sJou)m zFNMwa3$0D=2f{(1{K*Lp-`UGxf;wM1OE*2+vfp1z@NGwJ#|88<(za#-vN->5vn{Nd znJYhI5b;fKjv#zN_xd~Ipz|`?2`-~MIfCcX2rjhL_8gesUlozn0ArBzg88NS4;xR5 z+t)a9@QWiBrsJH3GkRDvizFcNH9q<<9!;z@xa^*yFBp~!^&58Y>>>32!BpG%q6gmEe}_71Wo2? zReERaMw~ni0C299qH0A~#k6{<8tqZh+O5`B+~HYSvM^wl+H;d~m|S+c2;Xgs_GTdK2UlwtA&rpD z)hnhS^e(%aUpdDLJu|F%KDq{?YJWWG*9t#rUKOVUPR}h4eX+)#-@se+zW*?<=meY~ zaOf8odIU{w$m~1&grsK+0i(p&&Y55IF1#dG3Ni_)kmeRlIa$Dz&<>D)kXKE}8T{I4 zuAKm+Qh~LDo%ddBM@p9=<`4XdS645Em&?9sCY>B7x<3jy>#*SFQPQ6Si==Xs-jo-s zk6hMq6Zr{hIwn+RDwwl@(iW4(w>16jW~G<(O_oG0ZZ++ZJ+S0=OtRJ*Im=3O0^Rhg z?L%x#Sg~am^h_DWU)C=#9~ND@BErC|gNTuJbe017*0Z)>dVZR@nd+6h{~xGlcx1zG zw~Rw%RiY`J(P2)iI0iE&Cz$eypxkpLbkm{3q4Y_0O*kTZcT4+aPz3)Me<7cwMFFpc zfowsvLQ8$434o^E+|7RQ4aMTejZ77cB7Rp95}Yug^1muiNwL_`;V~adhfeZwJRBr} z9d!AGX=B9&WsphjUoT)LdwYlvQ&zo`j^{GqEsQn%<+#xHX#wa6u6AC6A7=Bg!yk9F zezQ#~0xb>tkkQN4kA$Zo!fF!FvsD39IU*rePwOts*GzIIWGj8q!z>!J&=HH5wg26* z!TtV^;zY1SXW8+-2)?Oid`Ht;OaVtB#%r!_cENW|hOt`o9wV;hlgT~7q&4b!BnDLY z*A8Qi%mGUF)2QqgS~J1mb7SF^BObaVDVvYHwQYzTlD{XJpk||$lv@Rh2ji7vu#or_ zagACPD*PqW5V2kY5>!uVNjJ(Dve0*lzDtNXr^)#Pk_};&ro&kJ>bg1~H}Zi;5(`0f zQXQ)6_|E`6yG>45?;ULz<`Lk!@XrMvMJCl^IYdoZ&EK#9%QSVp4gy0Yf6m(@;Clsc zB#Za(DX@=D?Xu% zyplJY-%%Njhzq(ls8#$*0{LI`=k=ab@iHR$lSWP4NShxaXnkHs0SLAwd zLQ-5RHDOpDbfcXhhj5q__N#Ra?2bFx%3Uaj^{3EPKblCw( znkWEdVw!>CzxQt47QJCV1Yj5GV+EBvL!6SmZFps^|wf^OnmavwSic(_o zyqSFkAG9Ggq!*Uj-Xwr_dCd6Gx9slNE7jI7A3lsSnd>+J?d9|YMaDWxT&G2u?^J#> zDLFH2_iu6B(OjE9BpkphJJ7onyP*=YYx}|6><=~JKwWq2@FJo|dW-!_ycYKH+ZD#6 zbq`N=63Lt+4UZw|*~Mth9_rF-ZjSj+AJ3oyjTs+Ca+fZkL?4mdB$2|>@AD6;(*7qI zyQ|LfZ8oZ$%R0_PlGqlY8ySo|qvu1oP`Ov=gNT&AkZQFit!i-fazn<0S_U$)d<=dn9$GH%O(^ zE8vyO!8rHG%*pp$YeyKJjWw_Wq1}J~uQ@h4{vEytB5>S%yPG(F9^`QN;7qB1O}GMs zYHWoD^Q~-trJcUuA*_0yQjbXSH}uTMtdZvPhaY%=0hek_lKjU_em71 zV>J>y;7EQ7#Ol_4_~*c>*$+f8q8$Sx^OEp4d7l!_B>nrz8!Bp>{crg16A7R|fjT+H z*Z7j*mETUIhB3MWW7#qg=xPbs0Crik!2T z+9B&2_PM=Unw&XR8e$bcq?So`TMjsH5}BL~gWx>FIveLs7->J>tpjay^(DBZt)oqM z0e}qw#G8N*`W_mQq4#h=NsQQWDS>fi?FUGZpx6!}fU=%<4&{ZIgZm#Lr@*yp)f`ee zH_C$1LSr0b-!Zkd6dQ-pG}z($$^>|rzG3#PyAdQJ9jBLtpEG)L=Yk!t>wWEMtl0OH zxrK3+o8eA1FeMfUB2W6qklJu*s$mpcLD!2 zl;>ZBYZ{CLR>>Wfa?8V1T+O1sHnlR`@FsL@+I6)SXN}qsCfyo(T^!P^ zI9JiNL293UfGNo7{$Fe#u~eXx26a^jMI*WZp8GZDC1T?z#4auKij3A=cHtX?c^PqC zgFZ!F3C91Pb}Aw`jo!p1F%Fls)VRW}IW864v+_g0H~9M$BY^IA^o7MFnN+HgnQo3v zEJf1LUml;P)E8VehS##8WYng5%r=MJkAhyF=dn{R!fJYa!mNPhJ!7cg)F;vnsUadxLn&S@r3DFy(D%f<;~oDFvxo_LigK^LkIDNH@i zW_Wb5xlfn;p)+_iTZ3XAW0UsEoO`c$dA1 zbGPfpbM1r;p~2B>x|WFFesToFAvWJO1BU z&;|K36@OihcoaZ7y5PQlD<<(TK}>Liz9u1dJ5N@w_h4bS9YIWUl3t*<#+Fh1E=@?Y5tQTB zICZ~GkS2_V&jDgdCVtZqZV-SFX_IhmcE_x2a9Vd!&^0J&dyw)@Zt`zp)6!fDtFT7s z`CE!vA4QunJShBr9pH_LxIzC~Ek_4^+rJo62WX65UjZCG!fqgU& zuhz6f>uG|BgOyx~V7J0Mawp@NV4Gj!!;fB#D^nfM+Y!7fyDs?Xs(@~%WXtM` zzTfsTr4*8$Xt|A4p6yA@b4jqolw-r%8_FVyv)2JM*qh=JfkpU*`u66C?-MC5$eG

Jg4AX;CwOTLGXA?F)a!-la@pV9Qp!y;k48WJpVo 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

^ zuxL7%@umXw$5X61{qB8sa+M=r6W)IeJ<3C4Y-L?P@bJw501$tjdj1=(m`Qj)+80bG zqwgZt(~5ZYiV8H6k+qvs%0MGaEf*ti1pl*jhu2b^&@hEj;Nxbgdc(%sC{}l&i?W7l zz9|b~H*>cnEA;3cIn?)13#RmhqVX*4WwCBGRl88dUuNnCkmu2WN_GT}Pu=A!@vOzK zbX0zu9_L6VUJEyLLRQu174y%m3K^z*7!Y4$Czf(|&Fhd`E12DQL-%AxtmrBz@_Y zRLZ7l4ft4O|A4T=2$x|$zS#}o{GmT@la{;>ZdGbyPPZgt#D;F(^)r2$a@QPJ7Rg-Rr{L|P(-;m9HYt5 z65JX^%K!6a(sk%qlCUAa)sPMST%^R_>&7Jfe0I|%0UH|Gp1gLiKT)5zXYW1HU&dds zn9U!sP~!xVSllGkZ0sXDtX+%_FQFT^2RvljDnb$`_3hQo+;rXpDgKOml>BjR$Iw}1cTss2{f~$xk%$X_0cVNG z4`hjaz6?d?wUUPl$ut?b7UNT}y~o2tOnmPYxoliMZs+vf{5ISv=JVjP0bAvG@s`i5 zx;482fc2U)%x;ztwox8)qX3xjFfzSMwf>i52TWU6rjsJCwcEdr^n)54$@xEctHZ&= z4edh68CBw|(NaC4xY>L@70Ky=Xjk?ld-s$_FU25Fn0`hkh{%Q~U``memUZ+u)a(_$8UlEtc@R zykGoptH``R25^@gf<{XSxUK>7p~Z_JB*67ddB+5wM)!hwxm#@a0t$W&ihb=UB*D92 z)l5Ovuaj6J?R5Z}ucTGz38p6tyEmZ~DE44y79YP%LfE;kg%uozER$;4>n2*81$i}R zX6xVA_d{e0dMFkC;aBTT7zUj#Yj_9bBAQ5d?aVSP%stLhV`xfl<%=7K`2d!0S3usB zC*QITI>AVmN?fz2PFYzPSR1BdkDdpvo$zU*Zu>lRyr(vPaXNl+4;rWX7bhYgyuin! z(4ZaQ2|jp0xCktFM{msKPHhDbe%?Ur>XeiVtkc{7h%8N2Q97#MCmehFRu#**3G-`< z6m6OM|6c(imfPDScwDbz1ft(pzArF0z`Fn98;oWnTZfpL+zN7+^H$2PvNrvxUuqc5 z&(n8!zq<+BL+5}% zCR&T(88Ui?>+&>j;YM&hQ^?4 zp*FnKe90Fm8CX<+P;o($R^>(Wf5GmuAjk?2WXKSLaBlZjPi`r?`r{+}6+w#g*T~Ot z8g#iw=g_R}fOyNrFP@34ew39AuWtv;EIm=t?e_w!ABrrFZo2E(+2@C-mBhAiznbDB zL=tZ101!dfmUdWfXG+La&&!vgiSMxDa_|ru{pE!}6@2i|W%23+DN-{uRQIWnk|e*1 zpa+bx`LlQ`=s|fmVowh=VTg|idrHRUic&2VX^y%otK@kX7p8Kh>B*z_$qAsaq zEr(8iQzW;T8b-F{Gb9dcHtRZcbC_443<@53c3C5DuFLms2yLu4=P`H3I{(yi(Lc6r z)qf<3gNZ|POSLX(=lb;)!FmtSuf&sor>HqrtI<0I;J0M!`b6!E$pswTK6cSQI*1kv zUW+b)lDey{YhPi3D=ivk{3uc}KZdU3;B$A8N1V{1;<&t8MC~ zptW&~^4evVVUI=OsDbf$QqnWc>6|hi?HL}WQw#r1W1B-Jd|*a}E44?1M^&w8zHIa; z9(t|=M4|YU){E#AY$S=&G46)!L|8QkFi`NmNuqzJ!tGec%^*Aav1%xd84c&XSE|e9 zM}TsV>{o)F(_}ig5y&b>Y&V>VtXt#f6w6iy-|mOEN?4^C2IGE#zBv2X5|-EKD4!of zdB+V*8|eD0p0yp{9bHM?25xc$rwv^8Yprd)Ghv!!4nVpJH!C(><%wE+J@^I`MBgYR zXs_cXc#QpoZM?-sZBiz043(06YS*N_X5BQSJg6tYtSGr6@Rg{e>oq4ZaF1EeU>@pj zQ-L7;?RZCyAaK|Ksz>r}9%lIf3*yyf8E3;Dq9}z!3ggIn|aY`#{IMlJV>bfuiVe$r3qK4vK~*Q=G7Y*O98X{>kJ{ z8W82qnVuq(%MO2VxK*j?D6MH%XWlCxFX>m}*&W6uWLbF5bg^e488N;&B_7Wblsyhe z=BFr&BlmWU8O#yv@cTFOiZM3$g{^K>bfPa|~ zc=rf)mdj$cWRbw6iQMN9g+B0D74_vt{DfKhk9)c4zfJu981@B1^<*V2eHnJpG?X$q zFM>Zj2amQUy9T{zo)znYLkvGB{8#5tE+Hvq_jfy8yarn2G?qdLy$QS|TY)0vu7F+= zAJM~zY&15eSiMBH{#p}ESMDOh_}6IfoF#}gHLr~RfZmA?({EcX1+6fuYX?) zN-?{#I02QV5kNd}xkVF-CDGG|A`x9lrj&W@an?MRT8qzTE1w2(a#cEZ0g&3=RVj&x zf={>t>m;#d>)0*mhje77If zrb&p;tT8Bj+HU*eZz(1iGr$)Q7^)sac=PaJ6=9+1(B(_tJmEuG;xkVgoSaYdhx<~S1WJVY*d(~9@jW&9SM@v7_=k_i- zND`P=%_-5UMS_l_OGld?eJ;;Z7MRAf@ldvTqKhtCm7p+|KxwGA*K(g8y;FX?Z-8FL z(%^iT;r+VvD4Z9<7eOz020PyxzdTM00L&vePULbHTnjx1&F%76cq<^ZQB#qnSSc_0 ztjK^t0XL`Z;9hd@%SR8<{XF_c#Km2JPnuz%&8}uL{qnwpO0zzg>HlW&h4O+F1u(s* ztUeJ=5vBCb@gR(B`s}e8XH%73BGZfQ! z%_HgJaS@g3l+PhP2OXH?U4q~N&CH7$0#pVSx*6@4LQi|~QctYH-P{7d?}e8~cVU=! ztJnusMLvQLF`7`gq7Kwa$`kuA9d;H9X`4gsBz>;&t2Hy+BI zCL{<$(#j}-lp-1a`UZSjGk3<7M&>%Lv`PCl#|Ewom5CNdJK&yC#7WHY+LrRvw16tG zx9JdSso82d_XoWH!1pCFSbC)IR@(9i&4H1unfoQg-E*)~huPNXvzvzG?UwDtKw5gC zH^)~#7@y4zi-+4Q9olNq}*et4zflGAN>`oh4E9bZ+Pa($80?CTP|@6 zfjxZ*F1~|@*3FQMlQ}cTT+nuwD(-qIg0*qV<3RQBJh+L^l%2tmu+TtU^Ca3+9ynH* zR&1}W3abIJ8W3)y{%9B_^fdY}YjnVSErrwFxRvlL`5oQR9AHoau<-W3^V%f< zM^~*Gpry^+JmYD400sri5?UGbvE}kplMDkqrFU@{Jcd5#Udcsef8vU5Hta?d(FP8; z5Cy~mBUy$!J65KD7aTHA6MlUK}LjM1(C z`FRNPN=pM&yHj&n+q;B<2BS-h+HSOKl5>?dk+n_PgE(Lj^zxz{S2c(k$C&`Wnj1BB>I}l{ z0z`)LbU@nyJa{M68%(N^&5&MtEnM5J$4^Bm*SzH8mB&C7rx9MUH2AQp(=1CPWvwQ!OVX6k z-NUK`72u`{TCe(~H??cThIQFqnmcjTbrwk%0jJq3jKB$p$y3ZC@EDWN{me)ax zSNiC5DW4)goiHAz4o&g1NvD3ir;>K|f>~eem|6Cc7)i3R>TZGS0tpv5xKJJp`6Jv@17tw(Y zd1a>El5w6;BT8djOk4y1+k8K!S= z;!pF;YZ`1!6DFGv&cvsTQ+i8hXWjcBf&Wirf3|kds)zj8%^6o}IC*5tvK1XE3=jlT((egL1_81wpP1>CmNEbfeEtt}ZK)UCkP^4I%oMfyBvfI&>^J zEyJZZUiUU05grWyvdnRIBWKk@02^($)*>x-VIAy2pDjF1IdSHW8JnW~AEI0Sa^dQ$ z{mc38eE`9$VVO~P2pecOv|*F8~6rfFKJ9*4>}5SxTylDJg>E?dp$?<+FH@jFo^2CTXa zxJpdZ??qic0A0yn?zfbaiF!>8mJRc3{;vx8vJhBYRu?OOHseuI1AFw2PYqrOTIXjO z+JGE+^dijyps*Y)?VOoCl3R|ivG@ZT9s;2l!x=emfc#J*L*NEgnjvI3U8GL&oDscOsRLgqypr>bwfcZxa z_Pvh`kAqv#a+faD4cp}SFAlkAa~1UWboD^u;}iBL03EBL}A{j_+GVhj{hA-U4mYjSza zgs43C2?#wbSsb9(C-$Fqd9pk%KLq#_@HjM#mNC5B)EK8#qEk+5@7JV1q1b^x5q1@y zsAa+`8(n%}WUWQMoVFkS8fo$r5z~H_bOm3+m!~bLaNnWQuW6NDp0!*EIh}Tc>sAe@Q^se5)74 zDM}Fj7Ad_uz`Ya~m@E&;k?|V#n$xLdxTJ(1Hc(4LcOt)(pZ^Q$Vlnw^P@|_&xV`pU z^4cj>5H0}jHV!zzAE!IBX$FvcY2Z^D&o9vw ztem4FknDwewS$Cm(KN`2xbwK#mxFN{Gp$S-aB>8J2(MH@y1kM|o)i#t#>T&{-dT5t z4XOLUCtUEuB|$gROYBnMx!eE!BQ#jV{5h9A^XEytsMBtMogdE{%0}IKj#9z?AHtjs zh{p+HsV+`&k}D+wt=&sN!Jczf!WM8^8v)k$yE7C`h1g(^ATn;)cAZxW>`9pCpbKo@ z|AmPMN(qy%r$lDk4#&`(TRyQ+>E!p<&UECVM(<8*fZuOuH>e@VB_tEUf*=t4l!Apg zEE&Ohjbx@i@>oK2I^aa9a2C&dY{o`Ot|vF+?F=55IfktP^&*&pbvsP%aU$f@ka99q zdN+*dV`?pxoo{(^b9_ak5jMJFQ-ln<;SZrb@iz&Vmt*426O_0PuA}Rt% z?*RiXk~I8i2od`_RV7~}>kVrRM#*UZ;IjAp%DKdh-2{X;l0HuJuUtLb5_oEdd6JxP?MRS5R8|sA z``yiTLh0}9du(RQZ;r8VN{woIX?tB3q_3XOg5(|)77=vo_NYd zC-mEfKn+%02yEJ})c_>y?l>7dFex%fra1Y*^HM$%(_J%d0qHMM{&d(>=!So1o%*2) zVlo{x4Op6}s>u^k0QXrm!pMz@Y!p`-j=khSB9*NVIuqraGKqMUj@<7krdEq>QLLAx zzUVvt5Yzx1mKQosGe*+T1+NqLQYscg0c|Dj!-uY( zuV7qg)b02enaY7~lFH2!=*<&&!a;el%2Sgd$li)K-e*2U3JQ?mJ!gi5l65^_v=6l+ z+}Hv$1Fv_e#ls6!{^=~oCd6j4x+Bl|+mlfaHDBfrIQK)MMb`BiHHDYLC|d72L&Rt($U2BP`^N2L$h*6lX5}Xs`1SPFR8$FT z!jI}Ks#bW1B)L)ABW=%#7`Mh{bR+hvQ2qK~R5yKR;qMpBLx~MuD<`52(oTRfAbrAP zx1H>N@b`D6?TnqU<@W>nic3ib`ft3+Lq0488kr)UYvK)7jKC^==?tn1b`I0m!1c-} zadrPrXi05V8$e@A2Da@ckAtqDA8sOPpbw6A8QHK&7pnF6DziHLpj8?V*x+lsCJi0q;I>(ya7YXvDz48p=y}4AGsUA(i-aTk|sYWnPCMK>^jq zB*$x_njsfIT;%3VdlYk&)OFSTd5W=N zY?4uD0}{s;AFzoVc_+x_8f_cvD+#DvEDSB}c|)NG3xz`Q)o&e?CMaZ4h=?HB@IKDe@iiyVf>HqtAK&LZqu2D| zChEh=OMh>U^_a0nw=6JzGb043q>~P?#T~sZ6+=!S?fl#jo2(P+;vA*55gOID)^+nI zm9>6~^jIV1)$Ws_=NB;97ntf%>SIZzmqHZtj>dE`N(R;Jo&KX$xv)C;w>+TS;mSnp z9zN~NJGujDOWzv-Bvrk9D5^DLrmyaYWGU5>6)s*yT{Nh0MRKZPfgpi?7P@THqYNdl z{*Ygm;Xz|OVpIxim-`rsR5u;(qtMBI_-iFq3oM!B<DenO6f;?e))>YR@T=L?f7&t&~*#}@9>aA zSXTCUUs`sgAK2jjP7l-p9&NKSv2s}nR*wQc2CnI;jiN^}ZIjFNW~>e$iT6WtG} zgoolz))*w|%YCBX?j3UN{Ke%Fkn)!^GBqg3MHX8uR&?I>8j69mmnhZgsA7gF7IHID zc-$z|ad%yO!xm_>bEGd&8bmW$(p$!h+cbLG1lceG>||@{Gpem7TH^@KGCdo$WYGe` z8jx9GAug?&*C6Zx2=#CCI$I0^Y0RoTv+LQ2mRms;}>q?B(z` zCYG;|CNpjs@Oc&qjmxGydHOkm+G75o?ma7jPYhuSQwHRRn2$#)U0TW5lZEt zpk#;Cr|p(+uL_9^O*7$dCrszioV$dTEo^8J5m`WTTUv84gyU8U&nI<3LOWXc+aC*0 zLi6E@=Y8iQ7Saoj8T35hgmsjEjoB^{-%M=4p-(xJwi>=jD%z0*NDfboUNUG#^&Rm1 zt{df`y-gai8_Rpe3QQi77X2vel5X_gNub8g>YCt|FwCH!dSR-HeU`tO%w(E!D==V6DRnUq`o!d0MbquCoDXF$9yg0NW#}pSF331!aj>I)HNAll?!K|HB7HZi=VdJY z-=iig;VOr>KLY~ZQSwS8o`JlH#bZ%4<{R1Ls-Q|k8u3C9+fO?jI!L{nSv+^H!ENlS zrUprb+vzrew)JXZfmld7bo4z{{K=jyY6Xt7))mwC0RKM#z@nss8n2x**5hQ5v*42l zg^)t%o^3c_LO|SOxLwHcbZ9M!Z;0H$mHG&yVvys~e(l5tTen-VxvJr=koNAFYLH@F zzD|zZU=_W><9%$IqICyiy5>l6;?Xa;lAW4R7-@%)=Ycl#)m2!mZUaYfG*t0x7d7c< z`H8Js2&CVn5>0Ea@l2D+&`pPuZedg(a8U#~;Dib)=@D7SByct$>eU<4Bjb4NUTiIo zFC{HaN_TP=gE7#P3-M+`^*blKRp5EW?o*!&-~}jphdz)26ijUzvVFIMS38GI{4QZNIO;0%+r`Pu5b`=GcfVX0U;0Nb9U&USAvFzN zradAAtnXP$ z@;i|7M{GcKfb*U%4HXe)oEmrinnWLYH-$Hlsi&X#f`Cr9;rouj#!mtwQaar6W7+T- zk@Q2kq&5^g4gqxKStIEZN7=QWH`x3<@M0i>2!Sy~Bl=bYw7epJEP=Rlhqf%>9^=ipaX)~)J zUSrQ030N@#ahYJ6bU8uLki}YKb*yqy=g3uqDa#fY6yO(mI5?YSI$Lk7yR-WWHX*)8 zoP{lMZK2&$I8J4jbdAvaiB`uqu7^6D+(=;P%~qWmSd&cM(z$kzEkBK;cG_94c9u6c z#~sn$oqp9fH9z>HJko{uoq#WGg{g5}KVbot4zQ&Gc*Y%0S2#`4PxGiHZEp)lV z*2NOlO%rRo8G=mx#tHjW?yn72a*mXR!o%}Iu`A%^cQGc$V_Z<)3~5*6Q-52&P5a^~ zSlLT|u`2d=1*u6jgUCxwCwH-R)b0vG=cNZHRFe#qz&iwXkQ2;}O4-CCdpA!Q4 z5v-W@me|;`PW7;(2q4CfG8Q9p!ITXd25tdG42!`^YMdv9-lhG7je>1-SIq}FKo6NV zVnk{B}P8_=GBGKY$*adXD@QCJ3Bg(ax zGFB7zDND9mU`ubX{sk=d7?`7hL!gHLI`TZzx5z0%zyZ$`c4>h*2=E8uD^LIT{N;e? zk~yNXNZd9bzv!_se4E)k7j}?;^nzju?r>l*aBA@EE^FagVwg<$BH4YZ%bx}N71qj5L89x6 zfrIH?5r+AC__Y|ybS{3L&Jg@?X(C-bLI6OQqf z4X;{N7B0n7!SMyAJu8DZDRfmR$59BCAy}+D2qpXR&rc`imZF8B-=&0K0@h3N2_fIO zVin=rSE(i2eLHe3v5=pP*em8Bq!V-O|NGrM##il{-gg;mCHVgfs#;ZpKMA~CexqIq zKloioF66i8=MD&$a(~EaI^8Uy$x(bkH3Xod zWtcf_p@9EddI7H;JPVggyV&7}c*7FVl7ETN%cdB2lF(P&k) z0lW_142I)HP<86fWkVIA@=^=DxS$jrVx%eZttfjde)_ifua~f~dZT906iDi>pDJEo zFfBFrAnVoV;6By2ayWrKi3~J`hI^U|x@n^9;C%`)yZZSN*oB&ts4CpXx2?g^Zw@r{ zw-1N;GPf-dO)D2S8!QBS6y(h>yRsC~pfwxC~%Rg`k+MCV6P z_lzzJ!2vVy#wZV~P?y|wAxw){JXQw95XiW)o?UxZ;RGsTXD%GvJq8 zWh5jb)UUUW8!qe7AbrMpMS#_x)7SL7!VS}b%d~LSoyr$EXci8^DO>fu*3It>ndCko zpV53jJW*seW5x52Mdn|)+8_8Rp^a;i+6w+RAHnGd_us-*vN0`A+t5yd`C$=oMsm2w zNWik9$|loyfR1i@0QQu>IVsKfl#_=mIho0suE0?Tm{+ zMEq}vn|B2)))I`KwlE{54QBEKx*Of;HdJI#Z zGzQ5o@}w9-xZC;E9Uq1cBq%f69CRSaG-`x1p{Kd4>&bI3y0T(tO1gWrC#v;_uHmSl zI}eKIApuUUAczSTOinp zibuL@&r>fE#fD*|Rg(lJ*tAnM$_D1uqC!iMq?zsTT#Hf}muk zYX9fo_%HlxLeLKOPeh>2h9G*_l`~ko-DPbJh{;G?2j)^AO?wN)ujRp$;?6A$2RB2k z6_z1c*f?Wl*_y{?4fDCfu~vl)_h3C4@~9VH4_e`(*7Sv z1>;P>m!ZOw*MB(HA5ZYm?T;zAS$OQV3Wgn5k;$M5bE*APicbhEG8cy*+R~O{AP;hk zoFYmAlRP*`js4bPjEv}&F4oqR3Yq-G3Qa<56r$ZAk%xfZU9zKmV@m2=cpzOw+Wk1G z%O~0#71T5r)st|J1n;@bW-`vMVhU6H@Hiom#wSd3(aCUy?8B119ziSV{Tr@q2Y$0* z**1>18-z@86Hnny(=LceOF>BZ5RaU4q>$5fh@2faOM>GLfo4DmaV8D^3$1~NuZ~n? z2Yq_u(}fr2j??0^Lb~L>Jv~do4S=Ecs#=9maHjbx}Fv)@si^1&M z8@rC$M`LWYOpTe0)o^j$7EoCPTd=qXL5FJ>(X4^FI1n~-&~14zzm;IsWP|Kk+|q)B z4B($2d`~ku6P{EI>tw}2SwrQ+5reaP52={PL%eYOWT#B@ju%36ItF)NlocU5)``J( zhy+9;MO$;MtGkerO4Ler{oyA+*ZQ0HvW>^@+CAp(@( z=f&1*cSC;k^qC0WuEK(p#lqL)%%v@=Q#j&yRzCV&t5Z78io&zuakV)8QBfO>%K0dI zgvKH*7s%&s#eue4oi3g<@jHzTJ~8O*Q2w~`RySvb zy28-)-0;gPZ9EkT6p`dV__SHI#k-MLmN7251W>pU1nh{m!^j!)QrQxv7H)rr3$HWf zv+iwp&Q1%UZ3fpskT34i6Xkk+i@W!LSRr;Rj-nnAvbJ);ZTZtiyHpxuoMw1s@9=j~ z0l?WCVxDZoh=A09D1M`P?;Itae4YB`7UKffpW1wb=A16Md*L}z4h8u&R4xFo+ZRt| zmcq=%!LkrpNG>$AV+zCN4(SKzh#O6<~#?q+z$ukkJR})S! zC4KJ@|KOU62c}J_$zi=bOYa<92y*t)*q-B(r|UQc1mphkFI|FFP6)J^Z6W~E{49P5 z**Atw?;nNVY@L_r^ESn=K-NMVr(TxVI;=3_uP-74Ye~a4&_^Nv8OB#5pBjXw=tYu* z8%`UZE(y9J<{|(f30Kuxv#~%U!CWOWv*`s@+GL1W%FQ4QV322piz=dR+j`@x&g0*K zHT!uo0U|4?oIhByvHUMxfL~jb%hp)pMo(x%q1P<$xbz>(D2uNQ*t^xW>tu?{Aaqm( z_l(9>VHc#pimdI|V};-CX$g>qE=wLBQQSwneS4XqNEC>-K*$y6_F3z%p0iYJGhNuT z_pB=a#{ZC811JP5m(B25nDmL+Ug(XkNjfqIQWh@dGGxOzKdug%IfnVJ3s+0<3~UZ;wxodM!m>(G=+>F!Ix;bD zn<=(ijlx*cp8VaQeDNF(oG)uN?kS<;GIig9&}P?>i&qqwV5&SrNk8umIBvYV(MCD8 z59D=cL%IRYjM+2ZU3S6<0U8p6co?|)-hj#V;0{yL9Gl{xtFPmCq{}AMf}#$Loc-0% zJe=SD(``N^9)*m}mFymSVn&bZO=pkHR+L(AMw42-zJ&icL~&9j;CsjA^N8 zBg<`h^KF=!WEX@q0oxGCAi5gcXy{UrG1_yjHbRa&bSd6iF*o4W@T*8#L}s5PH~oyt zuyVthSofZ#(3}E&9`fEBY$)g&`@U9hYa0OclDiJiiY88&f0OzIG%2il>03vN;UB9e zbE2B!PH~_@L*slyZt>rytW>G9L zmTTt|Jtj%?jw&z^wvlZpj@1E@LsAWS_A~wdZ2agwow17{H!PB%g)cz;qsQE96s}>MEdp)dk!T!tAZ*WFa8QLDVkVZ~29Wv_a)oFZNDt}O3%!bo7yK5WEHY4UEQ3l85^vCT(xA1iMrGJ&qL4sE4y&sKsXSfhzRttoNOtTEh!pY+`B9x_aHc6iT)Xnev<17RAl>7v8k;(ZVJ z9ytf|YEa$e78s(q=Effw*^O#L!5$VRKEOriBe{@g5(H=@i3q2k%@gkfA)#UHjYa2Z z3Io1I%+uNIN@IXykN`tum){S=fC}iVh=(CNbDRDy;!OZt5qT%6(UWXJx+LG=1r>=* zelH6DHK`$jJ`Rj{dJ|619)bHD5Zy{Q0D z=FJpo8heQ>!T{v&W_2{yor1NV-c7mi5r=lJphbE{M#X$5HZ7&WmJNRt%n2c zE%|3^dTp3GHWS`}@vq|uz`{v0NIIid&NJoHxpISR71Bf#rR? zLNqy+K{h&90#rfjcg;v4?F*=^0IudYl&+9bH%mAC{#*$nPU5oOn@T3Wr? z`8)*?L;9b;yLEuGar7_AdvFq_tD|5a*6vnW;@A3;Y5KB(%CVK8EW#T%od#RgZDZ?y z(3ef7l4BHru;?dd4@>&AlkVygyS*L|5!vo$#iV4op>TqHTP#VAVx%#!Nb-b|QGWl* z4(B(f+&qZa1{gGRCjnisD!<9}0?A9=- z1{7ToBU6|OD?se?t*SZCZvoXTmP3vtszIAD0jc9QObYS7oHYO<6#H}Ok)LE#06T4} zy0~l-3t-wo?9Fea3ch!rgw@^xp?>*nvS>$qiqv$wJtu?nBi_*@FuecdjG*kGW6UU& zH>B0}Ste<;F6z3Y)#LbrVvI)=k(M&l3%kiiEz*m1NUg4qd@&V&*9qe9k{ipZ@F&2#R6}>oGQ->olnW8*r{j_}t+dh&fMDI&{xoU{x$9t?6*@fgtfnHq+jJS&nf!}y zTEyf)qWvNaxlaea&qU*6=Uu5}kqhPgU5YqpkjE-YY0(Y;;c@U-CN4!k_6Dmjiw~aN zpJ$93vUz5nVQb1HYJVnJZ&q5$$wuZj)bQRo?8{R9{m|WXniR&j3ytY_weUhgvw`>) z%)%8en8#xilG%B}k3O1cex}ZH<(}-Szjn2-FhF?cC zPY~>=jOZ|NIkNf8w#ZJDzBEp#%ms(^iPFw(=WHf06{nI${)CR;H;y?;Y)!=(N1jdD zHiPVDJF;0t{f$O+)&uPGk8oPp)y0(^RTN(6xME0xYZL+ffU$BIL2Dq){yM=1jp_NJ zj=^nl(y;6HUZWkbT!J6Gqzfi_D==UE$XzcC!H-~7ae`AE`Kl)zWB424 zh7?qi*FM-g49pq`B&@WPm`eK1SCdQ{?i!s%N!o?fug9V4R*P!;7=boqz*Y6T2~FTF z#kAx66d)YXZmv$j2v`6J+S|A(l_qfzy$m-g;MAfnN-Naw6uQI42}s_mgB}r}l?CxG z>0Gs{zX{`c_I;YKFrs=LGTSpmM{yi(J1M=e_;s9q@D8&jpgUT4=0OE7~H_4PKHP}!VyfXza*f_P~G&b zac?F$Ojs-f5m*A57vuXch@o6>mnxBq7hP}&z=zJoZAST2WWyOHJ9&lTF~dpEU2BKX6du{#SEGusOdPi z609WLF+m0d3C?l@gc*sHp9k*MtTpv{6CLxFa$NB2Y_bQxf6L6t!XCgFsgi~^<2^2! zp5=T%oX4qy=CvheBzgahJ&uX#-YenBCs~yL~H1vq46*QW`HC$Ep?qt z9pl(sxZs1nJ5Qg!_)^TinZA4B&{lZQIKl){R`d^4ZjeI z1U11Cqzcu(5b%2YnXNtc021n!y|?LBxBbKhbjWDyM2+otrfAz;GnxPrIph>V1n3?C zvpgnLq_?5m=a~N{zxNf6rLBe}J_<8Qoeov2f029unB@5;7=`qbS7^MQOh>~ zkRa;KiSvsaLRKhjWs(Hwa&Hdxgb=RkT{r_&Et?Yd_R)IduM zaO&R?u*Y)n8D^hWvS9Fs5-rPnyDMdu8v;;YVx_&aiw-Nexqd z>H5ntJ@a(PS44Tn(ZYK}4M}7_+?BFo;x&+LcmG0aAk`eWn1Pwq7%`uBqC_t3I=jVg z#cz{VxFt=~;p93YzUd+fs6$%Jb_fRgnwN<#PUXn#kLTFmnv-$N9mG3+a}MTQ8~USj z9;?#>TxBuDGcN`5Cq?K?nT=oox1h0Q160JrGKHJAVKwvr9=fqdv&Kc+9>4(FyW{0j zq{=#UZ*F!0v)a-(h)`C-lVm0>oHGX&2qSSqm|h)+G1#6Vyv~`Qj^xV*(x|j>`spAG zm0zOkZIp)eW0C7s5Q0Uwkt?N0I!+g2)o?dZvlrbItf2(w3LqL{P6;~E(N&WSgi2M- zj=-b=cE9q(L@0(U`_Q6EkUzWP90CJDW*qqwi2-9?v5Z-P3KtL$;I7@-yekVb>T54Z zm7CV_gMVa1aLvZCh5lA!oEsVzA4t+_(C`V4p4$Ekf<6SqOsi{p``&NJIEsEYFq_&) z^(Vh7Nm%FH5=ReFDBGu%9;Z@{U*3xLnO61kc-( zFKa!tAgOawbv&mvOXpJAObOdw*vY2QQ0N2Z6Q$+<-2 zwJmENr=irrXTQ2AIJYt{sWe03^~h8W$*k8duoL9TM~OIT!quw@m?fPviX~-|4;c5Z z#X@xq;_%m|?#+~U+j%V&p^E3br#HDx`tmfzs3Q0;cT<6%-GD*8IfU9s_9CH) zJ5zf6Y@C_$j&2=c5U7DfO%qnONZ0}rVtHgC>EYNZdy8%Vv*$^>Kf3VXc%YWke|!bv zAhjE+0;NS4k}7I87^e5V!`{;QqZ?8yjfBW}r2dq>(Xch5S0vqCkyM3E-HheY^$t zGyW#$q`Alydw$b0#9tQ-R>6@C)Cpxo7B}s!NPhn+iX@JWK%@l_&B^#v?AWP)rOx@# zXX=+4n+0X~=%f?)j};3IwzywvJDq22)j;?!=i``pUsq!DHxm3DN(t*d6+?)cpT}^f zoNx@=V%!O~CqGNFJ3oWu2LH2JAE#?Hm?pV^puq==gYKjA^uP2^n|%N~l&+Q*68x*C z+^()e?;P)*A>zi_+!z=*tJ?-YLH?;@oY7ue-!mLP;};Hqnq)qazj>j+l)2%3c+JzIvj0cA)kUW!}S*Q&QGi8D$i){2=4l^sOM345}`1yq)fe`35Y zxK3Iu^Qd#pTT#^tl_{Eg5n|rC{7_dLfu*m*R$!LDTA&tFw>G5Hs+Km4Kp-8<&Oi}v zbZQb4JWE&*zZ#L{l&O?LE8{B|!p40eKpk0p`;A;efteZ`^yS`vRy{UzUBt(*4NcXy z63LhH9IjFetoxq1Uu@LkNoF0PS?+D{Auv&8S|=uU9 z4nI1ODS=UP7(CL$#%ICZRs^6zOx>$qGy?Eq?2nj&_0d4Zfif5|oPO;#s=tHY$zHAy zugy;K``O2p2#J3@+2g9dD9a`72B2;fc7!+gm+IE7Q^mDT#>H@~zrJy)eZ!PMl?-_s zkhTx&JAKM-UhZgeN|)Y;aB^L|Tn!>D4LThR<}}cF;EE>(??MDG=ASqoz^5r~Pwv-J zl47nOB-!&o$X-PE(3x6)pBbc2fR^On(6=pbk;fd}BLS(QI(Q71>Fn~9?Q=GE5=1dW z_!qO!Yc(DJVk@JDm#lQFf$_(ogluJkvWBfqI4uKDa8+d@P+0U%c%xP2Z!qaZ$JFYKqj4M-vd}DB2xEVFVE(uK6s1ZMfmo?7=+jzR6if=XdF& zYLA-PWN0tfN}VKR-8jcl)t6>K#)L6@6GtMW$NsVZg*I1!ZM?|^+DPdEjZuzE9r;sw zBCvHUNNw;?U20S~TLEBGiu#6{Bj4men-&q18zmaUIu#BF7h8 zP!11$;W`_ElL%XaGezJ7A4}E$@x@j#4mj zJK8s{fr7hN>ixZ%WxA^C+QpG=JB!^+1RzT_FQ2l6bt=gTNI-SZsqRc*P@Om`=H1Cr zIH_=MdZhN@_CnRy2$pHvFq<^VS4slf@R|UztS+BIT$);$r9#*X0^A1NA86-kCtVsr%Y)$~b=Mqi78Nd-s|* z*f}DIq9WI+p>no3p0Pu%h_c6#OctQoo2;>=GlAzeZ7Ux)DGm?&iwpi|pL}HMnsz%% ztSNBWdDS_Xe@a5Mk&6;1Wc=0UzkX(oeRi2SUX|QX3V+PMzAO<$G3IWOPyumPT}%k$ zv|CjFX%J=;)|*@@6NXUSnUn~?9h<7lp$XT&kB95(+DliGDCx~nxI<;Ss;)SF0!2IV z2VzN-*pmiX-GZ3I18h$w+qaLvHxC%&CB74Ct<4kp8n`RVbiqRrO9MDH-Z9^SEl}+h z|2MhO3}1DHBoES!zVx>W=pvIs3?gD~)SR8Hbtu=V$V~@~&q?wBV|0F242?5Lr6!t( z(<|~r2IFP08?yaxC!hj-yN^Ch3`_FbPLw*`IOn&~9rW2m=+Ng`c~~drzE;;W+Hi1w z^!;kdJ-z}2cAgyBfcgZ@{3`@d^u3{YmP_2~JuVON>Yc}Lt{UkHxeXN3m7>DRUczaN z7h*%%+O5WHttt|ao!4B89c!b!LNER!~O(uEh2PG=!4y$ zqCAT`O#GnH2{{kzi1sU8Jjj|J1@B|?@qH|`R^zYL2zf09*>0W;739b1jO5nS&OxMp zehnoqdU_>`9O}uKwnSP((mT7KW!Vw}SE1nmMeOyH@CXbLDpDSgQEc7!xaPmd^$X=_ z?5wH&wNNDg60XJAEGvUvq|78vdFgkM0<1Wf`^VR1f^RPw=vh@j{t+V@Bf6n46L+1wmIXiz&fal`{2mT6bL0nT>ewN1GBn7E z1tHw?52B1bIKNQ9ocYQR4-!1cu!PIS_-v3zn&NHiE-&qZ4Vke#iQ&Uu0<=qHtL`f{ zTxibMf*<|OM4&k#qpX2%Om6Pd1^t0g-y5XHy2>C5b=zBf<{JGAvRjK*R>2Kf=#0g(s3=50ymDNAJkn# zTf+2uQ+*RNWI#s~$IuRJTb~7>SwKD*m*Y2?_rVvOhEUY@Ats^*Tq%Tr&IUT6V%CMc znIq$vx3@ai`zN|Nr<4U?qBY89b^sNsO!ExKm0P(db)Z;hXcTg+p)L*;4`vsa_nt3% zi@G?O-78aG<(!;lza_*}~pjO!95ouk}(4xAo^3ELj?u;Jj z9{9=OQTHUN!d~q%GGytz_+(VF7v+ZfgeI1*6QY!cqdPIE*T#mDH$lyq)l^)b$u_w9 zS>aBVEh6~m2!FA3k1;VvJyGR`Zv|sO-klM!&*fsG_YWoY01$qLDG$0nL*Hc|BAS4Pl24$t2 z^~YkQF$zh;WjZD7Kqt6@-cwpIh^m)*xEDwAYWHo~ddJL|S0Z`W(?t#Tu>6rb>|@*} zTum~xgrnO-pRgY zLeV#Dt#g14nEESnbyfUQRQtGzT@m@VSfB||A^EsbvOiQzipt{_j4$R}lqpqr$OUHM zos$HhubcPc)w{nh0qhux_6J|LZ569AE#&5zwx>SV(RG;g&l5z-XOB3Bo`~cIptn~4 z#n%c0(b$akG30F>92mDnV^xQ)pj|nhAb@03tK}Hpo;NN)=tcf}auF>jfocdC;Ifv1hz!@~mMOItMzuUI@Vd zbR&0ynbXlF7e%O(EUoLCXQy|5+&R;g?=4>nKHn|12;7(M3QnumO3tP`9%;3+D1638bYQ2}Rw+nl>u@3jyuin4LpV$DBzL*vOr|h$l;o z>$-2kGioXk=@l=4|hrQ<-J**cd6E5B2@L|WHnmXe+YeK9-QrG4O6KRJSurn2j zRgK)3lslNQ*-oqwyQ~xuOQPfH$e;_wl0(?XOg_1ry&MPQ?=+bvtR4!3=DVMv7b;!x z)*blOFpOI=sDiZV6Efu-JA9PuMlJbsDpkGAzcHYh@8Opkch{I@oiW6lwO{)Tbmq1A6)0A{;6FizWh>oyetcJTmY~N zO3WuWLA*Zkk zNRrf1oa>L!7KJ@0lu2uf?!FBbBxkUsi09;;)b|x=YD|a5c^}D@pjCN<6YlbOGq7cD z*45K@Khf7%^=jG)^-Y2rlMK{F`F+#wir0-z4g;WM5Ly^)qNf4@w4L?mm^EWiCO@8l zs9lRgzx~g0^o$Qg;3>`^w!KJ<83B<`o6deY9Bv}eog7F&Uc z>$;&y$uuyiO1$oO0L4Jn+uW#SSsjSC?G zYz_JR?)fmz!w)hPAz9;k83KFgX3l;oCKw)WnL?Ij3Ig+1h*Tj1S`k7DCLGBMQA%NRyyq47eEpnXfM0jAL%44>H!u^B>E-bGcLE{lAQ5)U%I!1(X{{48U(rO&HD;|_m#@UfwOX2-s>!P-) zr#|!Kvv$3iMxBF4`6w9ZoJ z`S5{hlxVuoJt4ue#;<>Qs=%II#7h?!ldGfy?JF9mQgNjcP# zJ!k|wqPK5v?*Q*@+zfqw6}*Q<`>u=P7&_rX^q4V3<#RzFFK72(2IA6(9St{@dptr^ zXMgFwyjS9h*b5hqJiq_$xVy%6>n*nuz3su+ zW>^-vd(l+5q~HAjLN)|Jr1c`~b3j^0s|@D6U20FJm{ksL#&}K#>80rl-J_B0fvTaz z67Bj;m^~&NIS2G4$Mk5PANuB;5i8NH#E$8ksPj%dpXi#wp5N_ZQ|Z9=W$!|QR6Bwt zoshB^Hr27;rbgA|aLkKST`*=BSQy4%%#%K<$o4+O?|$8xmEdqf-{T`*vmA`DlmUe| zY}5RQCeIucx?ck3(=5M*VB=FlIFV`)RcCUC9a^oU;4+i5TX~40S0yC^=X%=PPXRxAV~G| z0@KkzI}<6wV>Z^XDXPjzeHY$LqE2ls%Yu5uh1J+XI|pjwN_(Pqs3gW)iBJREiz~kK z%K-}m7lI$UP52<-cL$zUZv@LozF%wM7BX(Q$jOLM?^y_%a^Iu>Z$jS!svcCdY(saQ z*&!Braag9A!adx^vT-~?MekQy{+}BQK5g{_M%_k-t!+oZl;0j^?r=jD}xSnu8>UZsbcw0h2-4JjIlOyl)?C3btlI zKX3*B;l9$-q|V5xx{rY1x_A1_AMSoAUrNeRPG$#ogL%9veS2y%V>q3TTk3kr!HuV^ zt$h0P7gn{G9!H{aD9Wj#es=*UH5pxYXwCl!e(x&w4m0g%on*-*2-{b~Q4w0!8UIhm zLEA=vZ6&x?M}oln>Tl&~J~TWZM&ovdcDvyB%&onYNs+^0!qgL$7L<^+=ndo0X0;B% zvQ%6IV*fRh&z^xqB;a%9@?d;;4)V-pFyG>=X$6r<1}dfu z8i4H9dF+`NeGum0tob6r=4$qz27yN)lhXqqtd7fNPMVbQi{gTp)L0!9DFzM}_oLQC zTigA_bdAVh0+YP6cDF@~q&%4yxj`?hC0&Iebkw3k{sw@Ngd?sZA=PC16uHORJL){M z3Yx~zKafBMwCiu|r7fBNEHDD=S8p#NOWj)&Br5NHOza7OyKd{dRqA*tDd2EOMi5$yWr{pW6&fF0?ub^kl)diki+21!BNk9{ z(>n~IFt3#paZe@vEthLL{>VvO4@^(3Ff{)_X!)}E1yUi?#IrwEDt66(0AXe-Y}{!( z`n;$7?h~_|4w1Q~G`uJ39@|jixRecj|5iD~P9FcZY-MDZDEG9a4c#PsH*{u@_EoVD zY|(|upqo3cZDq56h?G4FskdgID7k?k*<_RDx8p-9^q;r=!htF9`AECcNdr_``7)(O_4Ce?yJq;1@=kA+n{~qMF z)wKT`N}*Tiv3ik^ODy?y%I7wBe5-b$$4VRKgEkn*FJk8b^34M;qKWQa!crW;HAM%`__ z;xK={nHeM6bX4Ej?LO9F*j$^$jyRvLD^O`0P-!$IMsA`*pQ?|;3veZ67ky}-dG+5i z;sc3%k5Rn}kfl$BS==bMfj(yv(78bdunT4!$k4Brte88O@W!>zy;1y4 zB_bm`h^LJ8BiphDj^8-9SE&s+pOgo>5FyeRrS#KSCP34FU+$312W?F+b=OOI_QAtj zG9zIY6&hg5w_;3LQLfcU8QJ@U>eAibI#7qJqM^u_lHN29o_M_;&?0Fq+#HQH3m`W( zC!kpsQXPsF>Cb`&IsfU$^|VEzPe-D2Z@`4>g$LQsbhO*Te>;D^r2-3Buv}%c2mh)^r=D;U zHFV!m3rL7oIiz`Zfu~%4(@B+EZdXwRIxiEO#0j(`80*9xC$Zh((yH!3wOad(C8AzZJ)>0Xe_uoT1ih3`^s^&C$i~j$5;BgtLstEZ3v zW2K*A1Uo<>SaEGv^O4cyYk$XH)Tf_N3Z;F`4#U=9CrUXgf;O;Wh1_~y>gyf7(OV>V z`kObSJO|73f;kC8TaQZE1rsjvDLGBS!vOw0)Pm%H`@lI^Qr7{AFc58&_;fg6cbc>u zpt;c~k$KVM$ah7`QtiS{N((YgBa|?+=Cjc=XaT4gAI8s)|MnI`pYEDnZj^kVNmAmN z1Iw!3d^FX;-kYE~O7CfVL=KD^c=P2>o*M!TGAo)DSM_~lCo;M%Qi05&n4y_hm8*>D z`gn=`dd7y-sp5q*vVqm-bD%P{NXyr)e(9>ud16|h_nj?-IE>@lQuIbVGu-Caj=_{x zqWP?SS-+>pY0u7hDdy(RYMgkvdlYUiENe2}Bjdt;e%XDqX|1{zj0F^$h!iq-X+Ytf zU?ju3;T>h|egydN1QOWa(9T7VtX>50?htHhr3#yap<(wr4J%=S)W-`9Td%KIV?}%A zum`%gK@M623{~7SqWdJhzv1>cZmt~hPTwXT7gY=F1V;*VGMeN@qe-djBmx$Noekaf z$4mhrVr*9ls+i42^9a~CUQ%75t5f1GaRU|om(->~dwU4I;gVH}Svkq6HONZXnQ)I5)0(Lb_jwhlCD#*Ab%&#^2g+Y~zt3dI+OauoaZ*wr0qIC? z*hpm?bS9$9hHz#=&tcM@A2P-+1hf&)+vV!APXwGy`7_1ZX)kO3 znS_3&^FV?*ZL6$6ZGvPL%&5ce&YcohI$Z=|8QU{U&tN`^L@LP700Kb$znSHBpZvoB z2*0%#zr}Wy4e_X@>HW^_V|odJo#Civ5VNz#pa({I$adw=rUQC>oQ&lKMV?|k4#Mqt zoJ`GQ=x1JU&Sg4Vb=crbuVvfo8_A&jTomQAI%X`xCq$MJ<4_!V%%L=uMSBfY%drG} zi;#y&Fe|GP*55t*PaLl1w^5Sp3}S(#DSA}asFEFXd*gi;-l5QZB1SM^wejMVdwl?Co7faNiZNXUO*ttZm0S2~@J3~D58)Vakuoq@xeEEX9%9rLY zB=RHi4tU;7J#kR8MdyniUe8+yc>1u|WY33u`fS1#3hTbTT$Rde@%$f8fk{Lx5(=#` z^1`Ocq`KWd+n!No7hXoAP%mZ*eksR05v(CYNsX)qq)qHR2aHVKUU)(WK1ADH6(}(?@u5n9rZlGlv)tYoLC=ScaNR_fI5QR6l_(% z4M|nh^cwUyDj19^$wOBx>R}AA7|B?*wsSIz)!Ge1kJEFXxQx~mpxs!Oz->#h`CW%} z^nG-e^LsO6bs7t2PNn)+&W3UOYtV?ohS>T#f=OrsTJ4D-*C1!T>knpG_w-3{=ZKMe z+1wBi3!T~!9&xOOGOcEg%}N&lE4N^H0WsfoNza+kQ&)1hYjz|F5o?*Xs(`kAZ)~6M zyCOYC`Nc>Ru5^&I4`Y$}Z=(Z7DRCtSpyYzBq-9HQAw8v3ucF4Oj@EbGv&lwkPns?I z2(}Tx; zP)8Q9tGIwgQoB2eDdy9Zs_+dAxI(oU+~c(Jg7SRZy=_NEMqgkwOuSjG<(t9~Gh{UV zrmXG^kX}4m{;ToBJlR*nHTJ}$+Fl36)ff*HBUy1cu>z%wNhJYgAE{cK?oi(~QPBxg zVfc}p3eI=ER{#;(Zl(}K>tpU)yByhE)PpH@PexLc$6z&nr%L`)?5v;>Of-bGL z+=%c^441b7<3alubfp7tY#7k3?tN!4pSeaitnwajn)H0;Ga6>91-MaEtb!|&UW6_^ zu~Xndd3gXl`|h##YeU;ad6=TS;|Bdj>V0#$!#E=n%%N1V@pn^H{X-LHg{jt6nweA4 z+mg|m7w_(-mU#Ba3}Ln@6vH%e&hIxdTp{AOUGRlXB@HWo;M#~sBe8lG;+gDtMzy>S zQ!gh#jP-&u{b~g(iO}Go*yV;s2$!et)r}8U$!4Q4@7^B}*y~{-w)os{(m~nrh#qcV zH0yx5Wg6qED=Pauph5R=b_8o%?to;z8l3~G4S6tj7bJ<9Ul2Aq@f|4 zJ7WP)`>-)BZ7M>}p=oj2d_|TXJ}Oy$g*PI8(fh5V)S{vVK&WU{FC3V_kGl`7{)5=>z+r{$#h*hQae2fS>B!?{!X2e4WLmj ztM>YynDJY-NbVS`@ImSoVQe6*3JwTs_F&ksi(r}Kjvg1|c_7CoMN*Zbe7WLylZ^RX z>j2HI)2rgD35`HPTgA@V&LSnLeRst^{ydJ0wXN4@0##=2g8vZvjGkD`9 z%ifab)jJ5UqIp$)Z;cg9m@Q;t|})`^OBsu3|FQl_F>t>KME%9BhewnU$>j626u zZm+fQn1Cpr2fTe^&%p0oBU;+|yBOEZ>pjHKVj&+chz+^fx8Eu45R@X&g}xf=Cea`q%`1diR(Lv8nQv=2KQ};3W!^{EEihL-5tFn;S zs|Xc4e`WPAZ2<#l+9E=4o_c*xhl%}zG+P9YNQFzY+X-{WFItQpg^2dwM}yL3wE$el zPw_2+cia2!KnN5qJR$AU91HvSJlfUskZ@M&U5DRlxFt7nl@Q`b5obOUgf-&)5DzH2=J3Fkg{-NB-BuMl*~{(_Sz#i z0TTDWBuF7rd@;A;fa3q^cBT-mLn_+hFEmU0SqtFf(aK-oQC~1&;g&muer24~Ry48X zs887iBpug4h^1@q-^8^Xis80K${rid@mR-n_Z;UR_fcYX^Amu2!6&5HXP`wu#kfYf z#3JkO^dqbtEHSF(*q6RrPZp)XA4V4v#&vis61E*|ae82Jgp?DrU6YY8E0%wq%|AS<@8 zyqz$yJ(5UHEKlhGfoMTpvA*RRxYLQ#hWm@TkxC-=iue|T)Z-8mGS6$|SBewT_<(>G z28EPS?ZYW`7vz`l8}>uf+!JY_fsGUJL(=mwGO30=#Q=hWPNPCJx8 z7P_G&ez{UlohSyYvlKXnMjTW#Yn?YmKsn)oG__$~i@ANDH`docJZfyM4uM{W(3vZo zr-q0%L!Ettnk*ni)N|sS-jqx7cGtvd5CNSRdI)JAO{3a=Jy2FmoMN|hWPUuqh?Ght~=KKnWK6$UC~@Ov@P>{KiV}lF@6>F0%XWVd6&cLF`Of=G?P@ z{Gq$gl9+Y5Z*l+H>O(cVipRsb=S^F>4m=ew31BaRw_V?v_%Rb-kDaA-n!pU7$Fu`K z%QiFzYnN z6m&cLM`^ZEf%1$pgZNA>pZA>erzNGJKg!Bk-wn0}#rR-FCqhFu)gq(ZtjL{=C|aJS zQn5yanCA6SMG{bIKDW4`fjXMnoMa)!yjGPtn-1`hVWlbw*;C|j9_cRM(i*zOKL{L3nnt>^WjCrG~f*`$_3) z)7eU+1(9KVs^yFavR(B@*9Q%%X|(_-B|NHiBERrbDpp$`Tu_cQi~y8PC(dDy=I95; zb2x2@s@ z><*s{W)AK(9#@B>a<-5`YfGkx&6oAks|$PBrZg@EFw#QQB-fud=!iK0D5iWjHwDh#2Np7Ms`TdH?8Hy){DN1v9h_@&O3f- zBagxQ)#GITQpG!GSc<$KA7gtF{F!!l!)CVy;FmZx*yHp1Q-%q z5i6(t#Sqt^48X5jNVKhJ>tb;Zwqc!qByXfA?F;aj8ifg!$@$`jQ<74N7-CZ?|M*#ys2PBRt8xd1gnz zn`{Xp>WxD7=|fSFD^{aNz-hv~?XG*L|6|t560>YAo`GcI7S-9WId$LwL5@Vc0>T7Y zN}Q8gAf3FEhafPURJO4Mv3S|%w8N%}hBN|FBWfxj1U{N=2-2121>?Rtj@$a;DgJYN zgrS-b>z@3C6v&sZN&p_qA4U{PZdL-uDLaTcfxr=O0n{w!eAcMv!$Qiz0gPk_^hD@|-qSY+xDrplE%(O@Rmgl!E{ zsBB=&U>dBpKRZg2A+VjQqzvnqxGC;*8Zlwzqp$*L*@<-*wr)4mAmX#1jEM}Y=bLvju;<#z&9vLvQ%&6n(HMYvaR>s1rqM)t>jSWTV* zyJhWu@wwQU;5q;t(XB&Ub11^}vv)0fx0h~NE>Xp){x9)EaPH^{|{D^rc9loE>7MPtm@ zG9Gn%Okn3-W&ZYdY|HqK2_bE3)BdD)`iqD4coh?Z=Q76`gLBNh4XSKfKWF5(svu=5 zxmb&{Ki%_ye8YnA8&@0vBKmUMZp5Yx{@Rc7x9?VG_nr(eFVpPjYX^ka$`aGBjW|_u z{|LxKp~ye+G3|2L8d!F?2vb`!bVqkT0$c*oY!q zue#2F_S?;rmiTfFF~(Bg2>U{_#t!Z<^;=FtP~mqDou&b|OCNG~D!EtmSqA3h(CIhP z-Z6v9NvLoFVs>s^1+BxUq>eRp;?x#U4tvqyb?ZK73L5N5SNKO_;{JFr>0Vq+7!1vB zSMf?gVZO@a$I8r;U}jE$Y59~A3gVM}-HzK*^HN3&jMK6%U}`12Ix|NA$D<#uc@`*? zE?5B$STJIH`=|kKb~venUnZi1Fx}q0@DUH8iEPmiDJ0ESeeI)}EHol`XiJ{$@8`EV zz=oyOk3S_&)rqtF#z8&t)06u&XDI}9CmTVQ*dyvtwNmWBa5nlps6M+fGiFqZBI1Cb z7=%E_A%1V{%!CD!KU)M7WAz+FviIv^X0S3@=P|WAJ$^!X zJE63<;J(eevTK1QbdfcZDdIY)BTUZ=9$)ik*Jv(}?c_>UAyJVeQ`on%lzXF27fG$xV-!V(TxuIQ26)d01Vi8bwLl_W38M>#V??H3QZ^E(jL4 z42UD=z|A#mO%Bu1qEAY!!p`^bUXlCC1pg4W?Ow@Kry~(_I{)xAzqE@l0Z(zke1qAQ zwiobr&1%u@dKp)l%UXi{=$XX#V}0#rL@83=+eVysGLe7um(gtM z0&T}}Y0)x9F5qU_HflhPy0RPwUdm3Giz|8MQ)X#2175ZS`N*M@xiW72tl{cl+$A z;XS(M`pAXu#Xh9h@jbk^r|fs^a1<8;S9IZkpD&OnLagxA%6n{n0J)o@l0?RMrd2}n z1>_9}pvqS2T$7}`olS;fjgs|~lRu9Ox=Evj|MuVRFmqXz^xhM_Yce)28waM<N=|Z&v8pyZ>BwdhZbKcgjoa=)2tx^bJjkw8f8?p?L!( zxhT5Q`vAn{6Ydva@$g7Umke9fjimdpPJ-h>zO|<4bjDcWdpP-_rMql&Ro39|NiRBhelV}z4DRH+WQl{R0{0i-_ zM&W?cy0E)^>i;k*rB^PpJ0mv>hxUQrz4A>hu(OW7y}?wM^$hw~S-(NrU6qDOJ?_;j z^oMz+_qIs*>n!!RW>267yDNLKm8m$m&n|QxvsvGnRCw zvn)?!Zdu6L&8Xiy{2Xp9cyFAb-`$77&&oLau9@EUmDO$mMh46W9Cc#5lb=jgr7Ptp%2E zR*vKwA6&c9Bk{o|3ZU{O-on2})DhvDEa7d^{}d;eWt62!v{pq-&F zdmwp`^&;w$it2$8y^@e!BQa$_Q&Ufv*E9yH1a6~-DSjs3I5`SjiBCmJ+L6p=PUQkHZ&s>(O~vP&>7-OMqwkjuV?Bondz1&eE)K7?Zw??j9mP;K*NM35Gu<`XI? zHli*Ve2E5+Y|lBMza#7p+@~fwK}V6t!(F6Cxy+N_74kPccdxPDrm1-&*5l5E5J&Or z+2qpXhKB`yPykgpc%;?qe#X@E1?3mXHa9TM%;sS)4_3R>PqSN|lkQu7>ULwz zhy3@H!OguqbZB?|Yk<1Q08mwh_umIo`WI*9HjxiQ;U4NCQV(`mn*}nR!t}K#gK$9X zp_iB&-cT#^J+7mO4-ihoKA14BcNkV^xf!^e;aHXc8(ci`9zfE6l> zEHu$pQvj+`&Bp0I8;vzKk4{uSBssM#jxu{7&&y=D1`}L>WX!&ZNTvLNTBt>dgx)xp zy-H-Hq3Tg2-Er)UeyreJQm*pi3rD!d*OP?vgiygkBm(r3En-U2_$Or)h^4Nvc+gZH zL^(`B!1TIP2!!sgw>KIRmp6CJazT#C8Mw(gYqWGFkAv9{*XEDvpaVbxHtvk43CZIf z?7!k^#5CWoT2;#bQ#}s5#pD|Woj*{F>vV|c2gS*o(#<=M&JG)fm-PlgK8@9tj_rK)(D%}VN^eR zXb8E|oqgT)3r=s!fI2EwVq_Op4`~sHdoq6+uQd5RA^# z3I+&4v@rw^FH$PeyM3*RV)aC9=Qd*TAN;tVyT>!Ha(Jm2gw;R7;#-ONu&Jxch&U^W z93L5gRK_X=nRJ~`Nu2Z3`f7U*AZHs+f>x6@TV+Ijo$Y%SQR*%2z^*am6l%KQ*31vp zR7rf>9;mrzoZr+1^RyC;=;?)Pa_d@=z_}r-sbG8#m$)Gl4HP#J^*i^2b zYWSRaiNCu@7d7Iye#OtBa+PZgQnJznN&tG)J2P}4M^AHw=t;dtP=9D`>8fRw``!=P zVv2qvj{v`5@F;*dO`lG5IP9s)mA7ZLzKhRU&{kJc5X(i+^@qjhap>4P;`8^`_e^RTvXdcfJIs z%~UC@ZO2D|!Xubde6Hge6um$+Pp)M3m7Wj{oMK{Wct|d?!2@^^QCZMZQmGr));e@ufhxbXjg+lMC28poA=ASXm4M)|Y$M!PPaV5zz zZx+hKBZVpqIHnE7me_fKfzvA8>wtH&anJhMX_INIJ_d*vc+wdxP6&)}*=agOaUyT_ zsp}9KTjE9!Kq(&vH!b{!Q)hdnC`-qe+GxQl1ujy_@<(zu17ZA@;n8w%o=%l3i)tB! z>C4Rq=Gy;sznaaZG-^)@sng>-(2835VsQAjN7{rJQU!4Q+rA)7AofA~v>pf-ig7*I z#i2rf>spbj7jHm8;6c3x>8VILDCcKJW?`l^dERufhY%oq?8BV9X!v3RWJT_Q$KEYc z35NFgi^~!QBAhR{7?R4%NT^4@gIDn`YL;QPTG%&*7TOkrB82bFge_W|wyY2Vp5nZ9 z+`zN@Ev-#5J!$y5ZMgUeb-eKX(GYDU#DWnXEgwT+0Z3AElAVq@X_#e4AG8_twXJf& zvYfJ4q?2L?L;j{hRYRlMpQ_tv>wEO$e@oQdm$A-*T~Br@B&ey)`>o8Bw@8Ee;ygb6 z3Wnx~iURI%c&Nq5sSYa)!V^BOPwNnTn3Hs3MoC>H!UHyfOv5b|ru`xOH$0#DPMK$m zgD%R$U%56;fbY=r%SXwtYIs;T-lRfrqQd~|ojYV$w7tyGibGLT0M2islDaugdRMF` z_Idg<7)f2>G8xG7dXMaO}u zXc~M^E!ss1Nxjxv3Qa-Pu~WuAr_lZer8tS=>F$Cc(&MmrZ2`%NdQ*V0U@oIyQ>>9` z1eHF-C*Cd`$&bYKH0bfe!3nC}KjBZL*(BR2S9>bT^?T>o{t!XO8|dVh3k>V;4~P<+)kLgA zj<(Kfny|3s2_|XDdFeVDMmS0189om8=WT<|8O***N}sa+5Ho%ygT9i_B8c{fSsl%$YS~ z?C?~^lKU1{Dezu+InwL~K{3?`CA{dj$RgHW5A5k~aF|}k@4!1`reC<(asW&K5TUk98%n)@;?qh2LUnzTUULf8GxHpo z(|a;4>SR70UV-7`D4c|iTD=dR7WBj&fmRrk@%QBs@96oum-IyA*TqR@Liw2C$%@|o zXji=XfMWak+csVtN(8!=*f13t$|u10DwZIVKn*)BpuoN*f&e-~meO{o&@2w_>7VCQ z2hgc2;UR$~T!xzeU#lDBONHke7-U8plqh9x^sEfE z_RJ#4pFRQmM9))827Qflh9>d5bkZ9ly@fZ75o<7oLre#a0{VTr3?ayO#iMWoFKmvr zCd_~d|Aj&pQ!70=ofy%Ob511=JxX7`Y8%Ogo$K()v6S#_DfVCSMejJxIJC22=Qb-9Ey@N8vGsLG zQ%|#|x?kGLrl0OW5(9QG$Z%HZeqOEPp=T>-zi+;R%__lXGirn^(Pl(-n9{Hq{d9mN zcx`DF2VZmo2V&|=IuA6>NH`ZyIwQGW|%jB*% z%bFm)Wd)+%NLWlVW5vYAPwe}Jw;WWPAgOL-^r<9vnAu!*00etkjtbmzbqsmfpIFA3 zVFs)P&IBdx5_=zi35L*v5zP#_6z^0fRbDgpWS|<-hMqzey1&_Bk?lQ^S^b9B2^#KO zSz?0AWQ_>m5ZFzt@1`|uV!t0Kvc`rGn$H4!NktaE)DQd@yx z%f+d8=JaRJp5|p*({6<=Gn_yO=ukJg?@M134qrmAXeP;e?l+RI)cOWyD>J%@=2C_c z#oglegxEY^t#f?Fp%-s*jY23YNaf@PNe!q%#3Og~$YU~lg5L8Te)Tv69q@AcTA)db zw}b?dRE`%$%8>%%l{C@}37MGr{;#x3XG23lUMfr*x52EJ%H+Atq5I9;6st|rmm)}6!T{6W@XAlgYd~K0xY}4|WbRdI-Mjaz8xqh`-BABQW zHuF+l${KRiu$8xZai-Itflkx~Gr($DuZI2)OG`~~0xyN?PH_^}+xgN?(h@?=jkGlg zZool1`fvuE+2ue%1fnl9KT>$Vhq?+{>;4pHpcc}lph`rn&M2CS{jE=DHeklb7mBPh z-xzFzH*aWD3xnhIalbDLA833~*Cp{~_G@Zxp~Q}zQaB38Iu=e{w7>IzDIG`e2h^}x zZ5TA&M)?plc}##8W#Evp!0+s81Y}=8G7r9{$nCDAI^D>WaNl_pWxERcD-dRn6$8{VgH=c-!&o?6vW~nC+J-p_Msg$}+)x1pHWKn+ z`I8ZEV$6SSMKwOyteb|-1Plo_i}PwDdo&Vwm>Eqhz<@zWqc*u5k870%ri)-cu2DbB z%}B9X4iopnb4eKTbNuw?LiG=5=bNX6OI-$9Ed=SNmkHEa#a4J61YVp^g}jRf9Vzl> z=F&b<28WuANnRHLI(0p?z>(k9r@Wums%Y!0cBLU(Zy~|LA-iBgK4%=y7BptTH5}g! zCRzHeWAS_%8xP&bIsWZSHh3_EXaEo(HvQAxtBFPyjSQa;4G^E%?#@y{S3g%by9(Gz zJA&OS-DB=xsu<1xBHS%Pm~zRxm~91}rlwdMsjo!hHPdSyMMzQ&^nZgDwWpEqgsQ%G zJLKQ!`}H{5x{OMlM?CRmx}V#xl%Cqo0hNGkh;ANs8C{u1ETHT7Kwn_!t>o^{xy!ZR ziso2SNPbY9d2UrOLs8o)`PStdAAwCs!@{RcpL^w#;$J`K`k;0}xZ|??yiAa`NOt<- z(ao?UY#``s<^6_5JScc5dJU9Sq(vNFp+KA0dtXDSIa@q-=54s`qSF+@GjvqH@t-s$?gKGBbaUWBT^V_{$qr zuEsHl;cG5dd=~5?JZGvL)XUR%Y{j|jCxlagA`)@l-2pVc82T9jrmBq`fVO74%G{Cg zwXrs5jj1S`sT(KsR|&(DrCSzF5GJ0|GN6@2t_M@y&CEW(J$Le88AED!?AbD-Rk`#9 zDRxf6^5EPogv!uj+okWupy$|1Ds73hYz?Jcd?ak&Vr>`HGH-GF!=v3*2CV7IM;xwz zTqoHnrL~|meES#u+*~Y8EBsgE5H80fGjnALGO>BbpMYIBdqUvV=VxX$YT=YY_r~T9 z*|ypq;uW!9={Q_`0BR?!-=g1?RABl%d1I4kD@~d2A^P3ur#Q{VL>2BRmbLyFF)q>KrQkv#vRUA#c zsQ{5T2TY-jliX+w)XA%YKH18fU<%2AiJ~ce*S}@3;vA2u1J#zv;}15j8*7X~0OuO0 zgoVZk%Q3S~_wR>p(`huRl)Pd~|6G(s=3Ywc9Up}uhHxA9oQK1Li^C1~*QK2N*DaRad1ryER713{arDumfk?QE zAdTa*aw&lpSVJ=lB`CKvHJOx1DyZo_&)A88*YBsS%2#)wH3)cNN(j!er-hXr-0yd} z&SIURlV@XzG6!otB~V8o95+SLq0#D=@*`F>NXzFLB*25MGojg9^n$oUkZCd-9~-<- z8>QVv8US=0B%x6@<&Kgxtp}?<$5WV(tmYK)#{903(um^n)fpW@Mo~eCN zj}g7iJh_6Y0|Rq{v)bdzy^^*(D^=&Q2+JbfJ+mf?glW8ID`A-!W=ZxH$#TCVAK~z~ zV3;PfOoabh$4Axsbm^u|?x{H~D677!8(gM=t6BR4%VsyAk9XeUX8E3ejAVaPExW#($fpr{knWZF=`7=tn1eF`GLF&6M$a@R z3pV~k=S{pv(s@<#!Qn-}Zx}ZnDIB0quyWnmtk*Rq_yy?gNjk>-fJWFP%DwkqFcoI9 zB};G_)l*7ufcv)w+-m{e@&=KO>iO~V;Ur^vc-oi0WPbhz1L8ocpZn2nv`T8dEP47k zV1z`})POT8Mz~B!y2cmx#dpz3PM9r}FW;k2#QL1vuFn)7PS;tULPjoH>rG&~zIeR= zbYr2k!2Z+>uliJQ7=6~Is7DfH zV5Y}!+Qm2yOq?>jh~~P8M(lE{Rs0Fo6WQjgNY^ zaGO}FxkDv9bZlAx9^tUKi$rT%?bvv&C}8bfq2~0G)`KCgG%rFb8~`_5Ix+=)uBUs2 z8k~KNiAHsLhgqU`g_L8SI1*yH)fRUHU>=bnY$vFz`qyC2rcr|NxX+xQp+a(e6M(=} z5Ae7r&2tS7?MOnAi6D)cN$%0QDK#=A6=x7#Lh{}(WFZGOkoD(Eov72sF~x97BNwv9 zkHFKCH`gkcjQag?`00+LsxIqKZuru&F-w=vkZ}0RqNl(Jb5wNL1o!L(?kWZ4J%phxVrgr~})_1ds2 zsuK$gA}L?Cm~xUtL;c-hn~FVgJj3$FrZasOvyT3$!sENP{xRu&lv3LA4b;0$U_<2U z9p$QqJ%%@{YU;qx=$~*<>FYl}b*TDCB75E#fji#73s~XX*(N<7hW8SUg?&Wtd+<9v z-{;2WF%i*Pl!fTUWq=YR2MxiGxRf}QgMkrYZg8H5v2SrvC-lWkPJHaA8=p#y#S%>8 z8hpyIr<91m&QYl^(2LgUKY9{rZ9q$1g-}kdYHq5b!v7G}V0Sq7azSnXSmv)U&j0uc ze~2?q{V>wz-$IIEirSwg(E8612w}7s*rz52HU*WN81s8?|#bhR&_&mV3On0XYM~fhC$9#7$At; z^V)IqXkKd)N9irGmHXWkqv-J&Wkt}BAyfa_@^zxsc0i$He-klGh4771WLTu8{{D35 zK%0Xb7>#@aZ_!0yTT$XxAzx+nHm)Sw;&rU>D-?HHwf2$tBx|g|kOOHUL4zHF6Y^6M zr2Tnj4Q9RLN2o{j7f6N=b{vyeW3G9i*r^=Tmo$ba^~$)}QP7!)ON8aA+`g|mLH*0* zK}5CJ+*mHI6E7Alg~=`ZpBfVDDj?D z^G{rn8c}14Jg8rHw5LHRW#6^I+WE26n8Be*l-Cdv5;Gtv?RB_i);O(swmxO;|C?o< z4jelmRR8A%`c~{g(-)CoaQWZr13X4EZ1^@KUC0{~rK&xACcXsUrGy@c%Ao8oZIV*O zhBL}-1xwj<8A)J&^Wy1AT&}9yKkd(&)NR+Nfye3 zs0Dq9nz04HDX0i_+*HifPX?43Lr_}L#h<#gBCZBU#AH{`(T``xU3A7`f15$aP(osQ z`|2&W#mKm9hy=Gy;>ND=J>jbkTFAHs9=N0-^xqq{Gb%LDWCW`IkoDPwee{2-Rp8u{ zV*@|A*HS5e$lZ=YZPo7x%v5U6mexBoBT33bGh4M5CpfAZ3lZdZ5r*T3Gw=ZY^%-L> zgZqfid{Tc+&Me{ZQRa^*Nls@vvM)b4{qh#I`b%%~0FH&k-(*^Aayb~ftvL5ueHV=N zJTm3z=uF7kuh&Z&rm(Z|de|SZI*1}Ti*lM|T}Hs0EizKw`8z59bh&d}f!3U*&TKgs zlS{*rYnI}@96W@OLT?TpNrky{=y}>?v!SuGXFBxv$=+wyY7`E2A|iezLTk@I;m3dc z_qy`AlMEa(kWOL+L2mM;Y{LMnc=nG3jNk%uiU7Y zB`&FbbJiWVTFra$;YN7Lle(5y7+iUPTC>};9&McKwY~{6q*H=QcsbbY7@B~heh7`= zY0k?g;#9Zw=!OaqD@GW?Lg+%tJMA~iz}I+tMH8Q-GM25G4h5_r0KKA5knOL>$7}>t zIPG7UJ|eep(Y*`(Vpob9Mij@a#pL^BE>XZWKIE92`t-aSnVb}wuTZ~&Yo|@F@rnak zH9}qNU27AgZtXg9Lt>2Z11;*DX(;n;GVjWwl4Cyi>Nn%8^#Fsl2#a)&C-JO6M<$0p z#>Tb%mb3_5$54nxbYN=|<=doVi4&MDv7SN@mjB{A@H{ z2YVaSyx`OFqStAF?~o9lx!;GK%o|~ful5t9`+}G70W6UZ*SY``uB%H@`*(V2A7|TF`@y z)_;zp?nM0WY0es!ocKsHMEq}qvX!N{0Oqex%Cn18tY=-x8Iy~cfKnQ{sNr}yo~8oc zD~Wu-%x2yJS0xN| zALv=Am&;>%ErdzlAUVrC&9Iq<7SE*|7Z##lpcgQGoa{krAJIorMPG85rlHhUznO7R zdk|;iLtl&76x;dYkr>?MNtviw1nn#~G}mlSpb8xZeKn3_odeCG4RE+Cv|)((z{E!R z@#w5)3wZz7Hc*T@mXpMS3u~HO$;;dQd4H#~vOe8*m$9DC2vc4kG&ZligE&$9*7zw8#qll*L*6Q#6V^Hf>pLV;27BxD`LGAF^?TEeKGF_&G0zIc;=AKHP6F#{xwh9J2cZTt z{pV$Yd*uvCio0_=feFB+wRnl3=6OdArr1lf;P!uFeaU8X2V~D`Rai z29Pj-JEYdwdQ)N^(To zgw{)e>(QC0S?hUQsCf{i%nCyquS};XYQp2obVI3rmEhzWe((^c%SfVn{V&eHk2?^) z{xZ~x1ox`-mIfv3|It}EDO+e*fy_5#O`{&x8-i`JH|!KV=D*trCBrx$i^}HRTzLXx+2_r z@DHgvliWjhZd+pG%t1$#QHCm9#k{5hZvnz%ZYd z8DGdw`4TKM_5t@%lcq4=mOA->2W|~lT*k9p0VC#hGzy$f$D$@?Z{c#E?TLjg0pH$Q zVP4_q&nf3V?l|3>Fe!~x!7_It@5`bt_O=)~-9_LV;c5uJrv=1Ih&>#g?&FHfOjD)zi54yXPiT8~-VYD@ZEy=y%QXo}u>G@~fqfW463mke_UA1l?81gt3Gnlg6U4cO zN|KrE#4k>gg!z(_tO4|!tx!tl`(BEN?DWF4XP&c&8TjMlGfH&tIDi>K+SmLP{Q*7D z^;LD-w&}^1Co;sXp^b)E$L16lQfO9!D2nPMr_kXw z2|EF#M8b}q#*E=W7ME`&W0SqNT%ki>A%0l|aD<;O#W+#3U3_VDGd)liJ7h?QrZ)vK z*uI~3ufjr6HiWyJPy{RuIv|l=Ey~90(b4osi0Av$VT%j@=XBi(K04jT;nhOsNG@j<9zuU-%-3UtiE)NrcgJ}8~}4V_R4a&jOb^qxCe z9pen1;`WOpc9+q$*D5qg-0SsSkWvk+TOYnR_Nmvo?ZQ!D`-k}dEgs21qw%#n)g#Gya<+bb zTZor}@{p`1ndU`&&dMzUX<5XFXSXjYjb!0Bkl%9 zlz+{cwhk&S(BDsR?4Ck3vt>qRdU|WC;#xPrbCk`oAJd4qQ;{djbk^i3}AP(Y%DE%oA%*X7F?cjTnPg^Z@_AK9$$#FocT6uSn%;o?u| zYt~P+{MRTi;vA^&08~5jmJdBd0dhBVpPr~a7>2=EpH!SH-ewYw8UV ze-%EOA{ms$97~R#^JdH-!p7~-It(yME#=O?R7@Y+*;!sQQmI(0BG`TqN7Zv~Jj_`E zAr0R0GA@4F6EBd}2fTPjq^Is{LSlFxtNj-f-xf{EI94jht7lnW$BEcZiJE{z#yq(cKQ{hyKualLVE6nbCCCm&ti?Db4nfh+H8;rgv?TymqH`&z%^A2Vy0$p z3_z;Z5D7SMZoKcKio1R0<$VU;&Tt0444kL|NO5u|=Ap?#n{C=g&{l{%!+t+1;Zgm%@!Y zYNe{I!VZt^Ejb(6a>Wk^j4g1e^26z(@E+F~Xcd}2{Il$)Y;~Orab+n(0o1G+Jy<}{ zQp5X)NAz|7g^ZBG=0bPsDga5^f`^WQ;KNpyyT;9-#$B^wBB4UExdDh!(+%#y$j`OD z1F&Lehre$2%N@U#zGBtjZrS(aWrb?uJG=C?k<#$};vErua8~2JFT?`fSMj9h6ujGn zaDvZ7nf74X&bwAfI<1w3`O#u-I+qis&|g9Cx!0L~=EzqDx%!W}iBUB^vmxwz1o|7Y z9)J&30TGtFswZ*dE5q%BS0yO#h&mX-778Fze;l`;$L>s^DE9gWxMYI-LI8LX2s{s~ zg6%*K^ZP1lu!;E1gn}mm*5b5tKc}x@df_|sq?d1ht350Hf0S^+$ZogpeqvOKhMZ_! z=x#ifDz_!cV3L$9Wyij2n{-1_#RUx;S zI&}0P&Xe}1v~{o4VN(66^h%*EyMSOEZXT_&qSFy-f>tMs?yUNVglRq(CVE784xssZ zEwKxq63TIR=oO>AOoRun% z1T#j6BHNk1-A^-Swx=-sqyZ%%9swV?O+At7I+-f>#y4@c0C3_H_NZSllZiw17dZTK zuBJOra@gkhCFk0f z%UTvXwa(9MFoo3Jeq|#v!zn*MVQK~D*RpBYbo)AY5kTP6l{&ns z7E8zz0asm^Q^ylP4p=TOr2!o#r4z#V8NN7zO+JD0=SYHJ3XpjM< z@GIhid^YKl#(qGKGX%8pLL$dHq`Q~uH?Z07EyoM2G7@$y1r7d2ZP%OkY*bU%JU9tO znTW^_$*UIp3^Ev`gLkKKALE6hC$;9Trr&dDqDkL;SN2ID(1u`udYhx*Lnf~nRPqZM zdgW@wuxEyF{!yy*4Uwst4<4z}i74`u5<&3}!0>+&m^tDS8+pNSN_N$3WedQ{)rsF= z%klbUGdhjb^F7lM2&3{8z{cIw2Bk8(25vv;TH`FP0JiI)S@hm}yv`yTO5vZQ_i@`l zo6kpQ?;o{kZ#uPTFGq+=QMDW1coWXct-Enm$)1A@tBK20i$(J*;9_M>d}`AnDl5gc z5FAd20u^ZU3L0dP9IGx_YhR<`2Ix%SdBqArf!w|4SKro=NGTKt^y~jlf?t1f4y-mu zHSeYNuEN3Q(8T6Q*$HK(=c_aPC|s=xVhLv9vt=K|Wtk6c*2JhgmeoM#zooQUMs@RF zNT!(iPV`F*Dtj&;iwhLjB~{`gjP+O=U6}GlL@k`Qj5jdhad;%7sw(8{KLMML>{RKR zz*{mqVh|5WN*}?>zTGS)w04Xq?$CgCW?zD5#_jSWd$Vsj?z@Gfp@vx)_gR_8qN!qp z6to|}xF4S7N3RM_pL;EFi8yPB$up;uS8NF&5P)exPI9E;s|V_*z2Jh>#Gv^b*MJ(j z4LtO)LrX)V^kdPwl$a!{p=LkIT^&qy;!)-{)u4Z}hGZAWpmH;j)UqEg1G7n1(Vo*E?@K|7vW~!Ud1_Zg zn(jV3P!0tZc=r}1ti-W&HI9@B;X{65jZE-#b>n7Q(q0=M& z2$i0gu=H`hTUy^L)2#`E#fA3HAQAhHmlEG*-%jHkL;Vc~=}co~nL(F4|KYCuU6cX) z%q1Y!wCrhs9^Pi|9n7ZO>bT@+fVt+Xp3_Sl)m)ocdO zykMDQ6`l;nmxul71T8(A$j)Dxk#0!4~J*#vbjVB#;&o! zI-2u3AZjqX20%3O-J_9kCoeUMLRR74V;t*N?*>?u!3T?rgtngcEJE0|#3ahm_3LQE zjT_7Ft(&X{9^(5BN5i)CivNSaky|I*Z&c@<2u%F07fdGC{{SMHAVY&!*li>^lG zP2|QXxt^5Je4(b!;}@@94c|+D{@s$m+8GfpQxee4NY28tOX6Jd9yGWFcHanMUKY!&=wnwQB zh7JVA*7|PC6gB&samGgMVOBX58+${>yH|E?4hW=KPYMDKU72$#bl8lX<>ASXzCv{W z>BbT$j|t|wr6U(MAAW3{H^rkOZer`&GLd&N=Vy@XN_U9^dKhfNXenL zwj$omh{vg=_(N_*`~!g8z?bi#*gEUo>|XddU=+-o*M#&I-#e!Ye56??WoEq|u#}y+ zWX-zHEQa!OMqYq``VHd4Y`2afq4|bD{(SnapAMX5jMF)-dVrO?=2?)QfLfK?$;ndZ zCN5sUZGQ2NQ^vJm9fe77Ay6}BaRtO;O+j)A6&dtY;}4`WmIQYCTC9FYux6F7;9Nzf z;WV~jPv~Rn1SvBY<{`$|Wp^Al1@s9LM2EfBM=;Li+URGbRC;ej8Y$G9noUG_{3N#$ zvm^`78@D1tG_MVuq!p+2EbaYIycBXNBQHah@Uif%t1%Y>fsxGHBFRkS|KZN>&z`Wv((HAy!Ol=l@A8 zV2`^YT4qEtCz(Z0gfen$?IDi>`2Ti@W^vx&uw$B79b7d5T>IDKoP*vHdv0lBbzA+| zaG)}HvoLOI((rVs$uhyPxk0IkJm@T|kV%ZafY2`oP$H>N-*_rw!MwDN%ssJ=&1*er zD~f@&EyL+J=NR1JH8%VM!D$6@TUu(-7-AnSCUR}lkk9Xu>%*9>D}pj_%F$eY=>?ML zE~r!b@4_|bFCQC#kmse_2}_4SQC6ob+jCJHrRw7kdp5Brs=v%>kG)`nOhua+ZnGz4 z8ksq@!X~{@_(*3!1B23W7wyi(`v*kg@CL=U^n;24$4xGEu<-BCBr>;vh!z}<309}i zSaD>=SR>LSKP1VT5_n+3+_Dly8U6>_C^R1%%X&DI{?_M-zv{~3v@vbH)0A!fnB(%A zj&1V|pz!5$0Rgp#ZftvXfB!vTJws)L5Z;V1EaGxILw80QtfWk9>@aU-OTRWdvMbaB ov45Si+|-*0SdW4??}^wf4*0={Z&M1qfNE&V!p4}Tp(syNvyjNpPyhe` literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509044002-Config.rsc b/MikroMaster/20260509/20260509044002-Config.rsc new file mode 100644 index 0000000..41d649c --- /dev/null +++ b/MikroMaster/20260509/20260509044002-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-09 04:40:02 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260509/20260509044002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509044002-Diff-Config.rsc new file mode 100644 index 0000000..6137504 --- /dev/null +++ b/MikroMaster/history/20260509/20260509044002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4295d4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4296a4296 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4303d4302 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4304a4304 +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN -- 2.52.0