From 0363811cf30803afe2ba0b8f733a71be44e6410f Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 15 Apr 2026 22:00:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 15 22:00:08. --- .../20260415/20260415220001-Binary.backup | Bin 0 -> 312258 bytes .../20260415/20260415220001-Config.rsc | 4526 +++++++++++++++++ .../20260415/20260415220001-Diff-Config.rsc | 7 + 3 files changed, 4533 insertions(+) create mode 100644 MikroMaster/20260415/20260415220001-Binary.backup create mode 100644 MikroMaster/20260415/20260415220001-Config.rsc create mode 100644 MikroMaster/history/20260415/20260415220001-Diff-Config.rsc diff --git a/MikroMaster/20260415/20260415220001-Binary.backup b/MikroMaster/20260415/20260415220001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3be393f6b1d1257f45b73235b17334265ebb874c GIT binary patch literal 312258 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

kq84!8? z)BWzGy!?oHuG=g7BHyTXH)na!>z2$55g@mjlvB;#%hxnyubs;eTs&S$7wp&t$0vK{ z930;6ViBc$P^t^_5i5&CtaC-Q2WEMoVpn>tBr5oCy6_&AGWeK;XwCODjhALcnC34Zuw*KJXL;e zyaB%j1OTgi(J4qU$h+-+KpD;vi4r3&$ff%V|d-c!F`uE9_LrTXFKdLqg`T{i09N4GaWT?dh~ zXrim4)p}#yyA`Cw{fa1+k6w&B)g>FN{tBa6h8o|WFLRR2*~zE#unbacKdp@K*UoN& zY1}pjHWVL@H6`TEd1C{uYoeX&6r|?x-#V^+?ygKO#bT2`c3Bq5aiWrO*N&Y*E{+fp z3zthT`W{dJI8807L@&nN+NT+GJ>=6@c0{w=x29BOVyaQsyU7rGNS@3>vOiSph2gv> z_`Nne@Jy5S;L6LS(4j>VHVXZhuP+Qc;V-L)(X0#@3+kZZ%0NO#=;)(rg#b^cwO{Jv z)-~WY61_3|_82cLf2OG8^>H~5g5KEBC=%R(=l+*UmV*ceu34`76x-k-b%1=xiGXgc zX~KQ$4J&kr_D`vT{=ZfnmaPAo-F4Z(9&v%Yeg8d%$7rU;1Z7+vN24=BgwQF)$)rpC zG~$j&Jw+t_)%Xgy>>8^!>*@cRg%+;NRhR&x;ep0$+5*-=wr94{DtLGFj$tBzEqP}- z5&*I45TIan{*c#cL0tE{UmC~cwj>X**jsQck3uD~OzC(D!@B8(yB5garS&XU+UgTG z+~LT#%G#ej?K6z*l?6IjOs|*v_MuLP6!i`Nz(MK`{PUomg{Y6MYQV%e z@xfrSm)P^!;Kj@78CC?XNEZ5BGLCa7^L9|oVAc6dmo+kDNWgz}SR2Gb1RkBRn5P^y zGdp0!t-j^Oa6c2lVTLx2k>}(alLLJn=&Q23qOPCfuuJ)qF?(i4upIZ@8OYQq5L@GU z*&piji#qx|8Vn%WG-U^GGD)=VT=_)$dj;|J*hbHGFfBX+zyl?}!>9gg$T>F;ZVk`x zj{ZVGwUaZjufFc3kMBe}&Z+K#?&6f}7x-{5625%`Qj{S6%#+~ttAM@K0v=O|l+u^* zcokkim?C-@_kEJ{jL4LdF7K7KU*du{A3!?hxRjG>CA6wJ&UTK~QMhLS3-J@vBB4{M z%Qqrkaj(9G*BKr}+A;ev4?!wf)JEwe=w0zUblB&F9^ViOVOPCK*{}StO*zcKGK>;M zC$b-5@RWamTH8&glLHNOz8dM*eUf$+Vbo#d*Est~IdMsL(JuK5!eiE$5=NT&bcDIY zG68ZMH)wx}RCWuL?=+gt<{r@hEbC`g`bf!pGl$+$MF=Zc8pSk_QOnngIh0KG?SX!D z(5^~Yd=d*dq%Rm(C^J`>aF9+IexAw6Oy9)28Ae_xzZj45v?z4XogCggwfohG>fIh-@gZ(rsIv2?Zd8*;UA^n zzz&mD3@{C^lwV*uvMlK@@cmR*XRmWFhkFLe3Wpa#szNbVCd)onk3I;e@h0?bXygxwWH0)$YgO1YMd-VUb`DN;?X^r09jv`!M2S zY}$ET6A3yf)!u^y`ZDhXkGpSlA90fzS2O0#!&4AGZfG5k=&#!&iT$g!TFBX;*jCxV zVP+yzta@`BfSQeS8W^MS_??Dz+~v@%ezYSjUSgtuL|279KYXn)?&Kc`bb7t#3r+vG z*oy0QG5)_^56F^InJE0E2$)z7`Nn&lWltf)ZbL4JQfN{6rK*2ih@(49O4B_u^amXl zS8^^oR71R!!D%=<=K)ujO+Y#DdLNQXD4-_@h8G2(1qF5CjQ2mNYANJj@`X3uFJ!_N z(kH`VAT5tN^aB_{#Tpkls%wSe-UFL!96PRFhcTi9VINY?)w;9%9f5%P5|| z5!?r4E$qkcV6Lqj2SM+Q8~4W&veo4G>1Ug`moO+CG`ZjOe`uEKje(z{uE{hkM;HVD z@5WmNCL-SjH0~eRA#>Ha!VaNztBGIpBCxV;`pG~yl1<*XUa9;QVkH*^W9q0<^5F$L zA~o&t@Jr@(TVHA-pij&vCr@!Zq}rj(5@3cq98L&(5^jwRP+y!g#_{cC@B*NQnavf-;9#w0kOC2eku~=b*oEebk)v9r%>prY`OOqCaP?o^34Ph*yk|O{F zEA}>MQOxKl^3ttRT83%*)TgdpOxON?3R`N(i-Mt+hW#pjA;-S(3>E+4dVJ;#0!`j{ zFkr1a&d7rT?Y$+wX48`_EX9e2d0QU`qwBEpLR1Kc{?w=y(Nd2Tt1{`ErbKF__Rgvm z-ea9{kuZOX3^e38O?(`1QCvzmT>k$=)~z{R7oYghXz2a&E@+=O!vn$dO!7i(Th3RT ze)7235X~%WSx!6easeXc5~V_K(-ZiyB}jwUIlI8T5mkn zR5zrJ-W(vYQ^xb<;Eb2-l0UVu9uL!qI{^JQk$lxw9%+u~i_E9-Ow-pmsgk|1n%0IW zHu14ca|(?Q?WJi=gP&NbHNSdFp1DK$VP|804-=#PUeu^9@ln&qyCFp+Ux~N47)d;` zb70e(lxr>lWdajT_|&mgc%}p)S>nk2Xps#jiJew4>IS`^g2AuuzzJw_gLcW+(vVCy z8PJEW(G`Bkb!}eMZqQ*E-buzORrUx- zp(QYF??d1I8hrWD+=zt7AB;<_1BrprmYZs{>gfh*KYbnkKp~J62KWM|7j0x z-VPDR$TgLDCX#RxGWncAa`6UwIo3VosX@10;$LqRTnbkr!qZ#6J*d{Skp?e9tr+W-My{CbcbJMz;YR02Qp?wDD-C8? zd$uOn6>`iHj!(~Mb#03`1|t#0OaIQqMqB-y-bA>q>F zH&hl~;q3KT3|2tJesTv_N%HKr$uNK*-8dW(mNmeTu3?_qg0Kbt8~KfXUgq^*9~$_4 zv3Ax2>45?$d=A^hrnOM!Sgx7N8)IRRC_wHbPzlO(l~j#C?&gwkjP3_`p+nx}VKYWL z`nB7PmSVa`3;*BlU`|TyDD&cS>6UJOlztq%%^yp`e zWV7|;sxNc>lD#gWQ7z}K*L+rSp?vN8mT!F)QT1i2$P4Ym{`-Y6aMm`v zC}Kmo7^=?Hyip(FjztNej3G*NbEV@(V}fU7MWV1E6;lN80KHJMzA*BQOz6T^7y01~ z)JUTx*rbWT{BN-7v#uP{tx0~Sov2`(i77p+W!_o*fTp$jm&iZ!QF5L_d5QNDv{q%D^)7vy#V4v^_~ z$N@laza7AB@tKT3ccmR_0xSFazmmfloDOzlils~zLLPoSMfUJ3zp!EW^v z$mcV5WZMSc59|+mWbe!>3=E1?3*fkNYtPZqw4bDd;4M*-JFp%CO$nP1a_1Gs=1y?WX#Lsn}GllRvEbb4= zM_C_zm#L`xIA9LXO@Rx!7Xl)0_t&QE(@{m(Q~V-$VjAA*99<#GY$Bk4=klD&o{v z9rS3`;~CilNxRysOL{U2P18qUNcef) zr>K9;ax-}S;jURcDpLNeq^key`<*EKV_q;*18aBtw}}XnDXSNTf>8_nkXd*eGQjX< zkmn7xqFrm4WN~1NqZiN@G4+TOjEaboqyI5DO7=CNMF-;LtXt!H=ObVV{L9l-X>d}M z8HP`phJQbaC6SGBL3Ge>8c~BHQ1R1*3!qZXwcnjVvh|+#xlWIOW%XSpw7w_tDck|} zw3p#Jz_5IF&$O9AHOkHHt^(`H?x>h|Rmguu(J3?JxM6j<8B47vB3suS-&acs+f8b5CIg$pa4w~94(m7k{Vcv zU!_i+U~Bra7`4v4kj4n1S$u+8A!Ak-O2(Ro*Nh_dW{b(kT?FC` zX|O*RB7Y4a|5+j2+o^qMF-yRsy0-lj6`0TUAHA~Tq0lOA{|uA)Rpovj8zgGl@oauM z6$94ehA6pFNMYOZ10RnPq1NKJ_WfwgKDu)SRsgYoDRC7FOIR74^_udK?6!8PjMW^` zc<#d>sLZh^n@v~u+w>}w&je_zBSeFYr~^lwoq%#>lzul#KS7i)UvR%uW%dD@ibE$> z=c%Hh(^xVtu~mc5n%f{xjuJ~W%^eaN@*2wnoQCZ-8#B8KGG$^OXTbWVE<+6Jb_pT9 zi&)iqaCVij0`$b+8*;~r)xBLG>>hYA`2{1r4I zw8;umHXfKQ?B{KriWlIoUkDPW&ria#WAd{Rt|5Pk8>}R}g2j}vg zmZApi)En2k86YIff7pR%0U3>=+8U_O+eLE)|B0{Mq1CeAZiI)&gcJM?fcg!#EmV^T z92J)!PBdP+O#s}nb3_#5X^K6+X~0ZojAgnYNzQC2VTK8*eMCqtOn%T&c-c% zz;mcskaVsYaAcpy zaB_;Kkm{0##}E0QTMrvcc8N5WWo`sWiX0pSRx*>^ruh=Uo%dU!1@01bIE0WbFpk)kjST(Rz;uD*kLdlsgA^Z0!t18g~i0jIW z#CfI2f+jB`x<@x+g}Vihd0e0j&j?#i!&0M%_qI5me&|QUG#hsW!6LViRoud-pc0FD z<_)SWlLkZ9_x-OI(GnZS2WcGw!GGwJi~!y!!%76k@|aT=m{s8glU^G~hYO~p@z>Sx z17nBZDn~sqO~0|h+6i7h$FPiu?QCxEDN#Obe{=L>BWtcHVFz$DFr$kd$$)mLMSC-D z4h_fcxc7|wIa;+J+YnCGMXvzNVBB9KOn&j@e`T7CPk2>0tZGKwS!idqJ6b)~mb2!u zG=opC2z5c~-rP89dkDG0muvA-4&jgp=nY#AOGpv*|<#e&?tG{3l?_$c06^?ocJ=sVMgG&SXFG|7B8&v zAWEtx$%bv3;=P8j<<z`2T0E1Sq^0waA% zt-Ib;JDp(zskn|4c4EWAqPs64QvDx$W;E8XsRrcjWa;YzwU5zj!A(x9$@`|VQV1v2 zHrm~5v0$g2w;<|!<<)5d|WZ&n^Sd5QSXXolLmsib1~r$8dxnq(&_*Y znl{4W)IacEhob=L2CPQl6M@T%m;fdUFYsaNUX4-PwpnB+8X|JwK`G_c{ltMn5e~|V z2b%#-$lk9Xf~6U2sP?A%^K&V5&dATwEfQZv)RotO ze1s^Bo4Oq*ud7)Bc=<+!Fi1`{B4Q=4_hr=wmq#I>8+~aw7+)36dRx=-{<#VsVM#%> z%ok!CEf3ji8IsmayzZJD@nH-9wU|;zDpJzifh5Oz;w^g$-47tVWF1`1IyJZJaNb5( z$_}RzLeXtXBSn60NB-g7&|0^IT17x#x>8oLB>%EW2FI0-UTA~jjkAd2*Q8>Nr&+uU z7AA>PxHE*}i%=Y=!%y@;r|{%;QqS0t9rDfB9%~n7iu-yD-E*Omtx}J46^!3;h?7R5 zLPRs0B6|>NfnaACAvY-*j?%B(1=qTkWf2)%y{=nMZ5Y5N_%vq#&1Bl~M}A*`@1z=G z5qxxNFTeBGdBM|G7FC`WQ^)Ce1BAoemXb zrS6fHm{6io^S+&VEFZ0zJpC*U)b4yM<7LmR7BVfx5d@3B3U`*WM_)7cBF;#U;_i-w zcuKUB<2ORZT_Sdi2(1_68orA-1oE&^QnoRPYy7$&lKtv1K%h_QeNjxUJWzzzZnL2^lQQt9O}x?K8};~U4A^N(WDraBrYSTZ8*4pzi% zoKv2M(nw7X9bKqBBUCs*jI1^qLzI$d!b%6Rh|r0L+*E9Yf>{pSct~DqyyknQA$9UH zr$XR-axRaTS>S70l|2u3!8dSfKEaPU)qiAdnPdn;9X(R_zoplV$>i=TLmRoS5=t*2 z%#%MJIR2Z;&N|xlmXC;_QB1kKAKjz-QSJSD0zYlL7`BtK8jYXNv$*|YQ>N`Ojte6O@+6oB@R zo+f))vXMrOEEe3bDNNs#!mG-!?&Qp|PrO7Z?Np)v*|>bHO#)Z5Be{oI@_Fk!wsZ$) z1{rhPztPYi*bsW*SJUoCV4v&yN#5cM<}U~*&cYxkvnaIu3ZQ8>f7vs&OvlN_`Xq(A zm!)6h+^gGgD1pGz2f(h!q8xk^y^+yhsc~K1Z}#uv!>C7}Yo%_9?!(Uy!KLtXuSm!B zU>j7F>7{9(;IM1DS_~6wKn%R0vCDk5^!yh9#;{vBFA2&ugj=A!(utJiytilxuo+_V zxp2cLI)IVN1uTiOI`yV69lObfB8a&gROEc_I$LRjQcKFA+ehS8i%s63ggo%)79IBO zay;wGzG9y-gBLonRv2J@mon5d#Ky9~d?1|5N!;TDF7l>ugD_C&JU`K&{_P1u`l-FW zS|q?%=5Is0|5}y=xl)zj1Q3aR^wDgI)C}BJ)8q)Yeq8Om#b72XBU$bO119TnWLhM2 zv8GM#DJ%>QSVr<3Yg)SNqhG1Gp4m{9M?p9i_z*ZTG7Tqv5t<3P^2D>?t&X+8MQ5Skuo0X2HasNZI^EF z(=C78ZtpC(A$vjH6fo6sppuR{eEGPG5U2MfnLb!5*SlRSD1hEYiMcfb@05 zlp^BOa*pWfzqDU%EqZx#_)r06iUnfuZbr&LOG;XN>p+q*^#ehF)!s2Z;|X%0K5fr8Zocu$2{cR zSj)i&@27o2Eu=WJ5NeKxhcnRTXQ-$MAF+>`;m)6XhXzm*~T;<>1*BU0-zd6Af3>I4YkCE@F_TDz7L$}qsVERj}=E6x8 zfGr9O84Z+47{Qft9aB$Dxq-VEZNZ(ulIp^X~KzRn?m z6zumS3Muh$c@lS87kQGA{DTCQ@O`t3kEYHna+7=gEx~TYHwU6FizdXy1)E9!9p!gC znqTa9W}mw~#;etX(vxNmPC<79f!!!<1t)Fdl|@~M4n>fN@68rDt;lhjd{?s-8Ft9Q z08B5vAd!>;2m36V^m!4ZBtcz1*@;?P5V#l@?t-ysk$}TyVcg9Yl6JhAInPOy#4xRc zKwpJ8@BScupZ^6gs5>mA8z9@{kLvQ^`Vgf%-IR-pP2W4E=gP}jET+$k3z0AIL8=4# zTXDZeQj9TTDB2?{hX2MRF7hSz1N4hBI;^?%t9K?-@*41YKoF(Zr(qW83tN{Y=XTxn zT~XHwe!A{Kmve+0^`v4wx#ucKY+$lnc0wC&L*&DBYAQr20tTSV-Diq&4SLLs*g44L zSe;IctrW)A@A;M8aOQY#C9HIJ%sFXyPJb4!VJLV!xV5rTT>9atSNhRw5>PZ1e;St1 z1eRN+n~@4xouL#^a`>teB<{lK+4vJ2SX9SeN;>5I5>56RT}Pj#|H8IkUPL1!WIs!A zIPS&(2}krXIf3dZ+`55eAB1Sp>-V6U9IC>Jy8C6y>siX$O+MD@M)TCsEaC+zW87b} zYn8NE0c-^cz}+7J6On9a*AgM=bxE>DzzV$DsuMiqf5}d#{w&dI3eQQEDaQ{aowQwC zm#MN{&*G%VPo(hkQ z=1ZU{)5V{Pu|!!6OW%5C|NFaJ%nTZ^0fGfp+bO{E8n6VQSO9ED3?_KuPi-}qIUVDA z`^(0A_@n*NWamhy48LC`WA0DuL9A15xlBDzJSH1S*IXRVboePA`n~2G8{j{CN75k|i6ElJ*mlG8f*}?+!&WTI0A$hCRMg^xp+6j{@I^5lT z6$HIkl8ujPi-6NODd->|pg2KTh58kPNBc-&%hy6f@g_1jw5D-lfM zCK3_;8$en}x@3x1!bz@C@ zO9xp%Shz$7%G+>dfC^#3NuW?YO4)-PQbN@hK)nWtpVLV~3Xc^)RVqycGz_TWo^(Tn z+IH#UvTN%je;5221?qGJgIt1X)kX-sf`oDxlS$J+t*hI43B(eFaPU;b5opva(oJ1H zVL_T5MO&b7rrkV}cO*d006dZ}>n0wtBzAkNnfcaKEMXca4xq+)ot(BLr2{g91~S{g z(VB>-Y+$-kp?mUsnQn_R?Vq$7QvOr)6*xUTHJ9|%8l&5O5ro%P3ADe3K5?Nn*tuOm zqP38cQ9ZE&>*{%4OL2Woor9M3(FY+uth4Qd?`y3>OH|C%o3AEYSb>T_N=U)`D^t}8 zJ+l38h{68pIIrERax*K&GeCkc!@s4aZJ8Ti_4MxUmJL_toyPKc;WDBF{?yc|8O82d zV@_WW$~h^%Lg@@mX&^v~pnIv3c!G&1vIBm&j&m*T#d68rYP(P+a0M&v&1SNy!0Dk; zjQAt8h)V>vp7-c#sf3w29%aIz_fY79tZvv@aEmS8kBJw+4a5^7v#Z6_DX16X_ zzdS+MFywa52K4*Q={~;~z0PkqrsxRxa;Pu1pcz!tT@jp?B@U-$-wW1@&cm5VMJlKM*N|R_pm0&OVQw9ou%S-n} zenojoQbkmED>0d;C^ZdtwPL^tS7^e7v)O8xms%6>yLU#*_Z<~Lcrw$$+8(&o;(e_?S)*k)JfVwo|J3Kz@f zgT@0Wp2zp+xah#5KUC5fYcfoR$dy+J-)itO&;`#*yTtP9ilS`W%=#Fx;V@ae^#kGa zgno8o)m-XX5^~qyEoP~BRMKn)D*2M0`erU>SDG?NHl@?uw^%rE9g)-N63T1 z5fzuNSUmuc*Ws7iYU?JLxK%MrVfPXkzdN_seM0`4dM0LA+!lB9yW@8qYKx*Q0)^W! zaIHp&BJJ5juVa3?mZ&Q2Z=vsU5nFo+j#=9oJtJ35I$*AIxu%FNKO>i}v+!=FR=%6N z*QnqJsgRwQ?EN}69NezfLUmWC?9wdb4NJENYCgPBR#f=8w<(fD=m~9y zVdxV6k2%h=)qbf2jta(@Wi|n9o`bLi(ug7Q(5Nd41}71i?>4$-$;q(TUp`XG!12eh z>GGJRLymiPpUZpY=w%^k7+P~QI;PG6-LwIk5Dc56>x_Xo`j@SI>iCdooz$9Bm@RAQ z-%?R%+ojV9`QuOS6^NmYK*Knb0u zUn0^udb5ar1s_l9Boa*cLN(x$x;~p?;(O5FL0=p)c392NxT4*j8HC~$FemuNUb>E| zq$X^ob4wnd6OzI23C*lq1-v(&>_lKnPA`b|Cm+1GKKt__4|(I#p^Abj}XK zqkKR-p_(@jH?WB;3)z6lQ_6HqcA|+^B&=&Q^eiKXG9KdG=k=|}a+~F;KaS)L8wb8r z*EE)VULvlgHakmop#C9hk!JM?p`eE>`)To2qpgC~2AUghN!p6I;2XZ_F6B79Nt??N zRWyRuiHk!Sf+@@{kYW-uM%Y?B$7)bKr;JC>&7##1$Z43PDMm_W5BMi^*l}8{g~Jgt z;g?c=vB*`BFg>dTd;16YF#+82c@wXI0Lh(sZ&>x+M}6XYPoAd3e))w|9U%Wyycb2> zvMFM7T1yDr7{h(FbQZIDULifhbah0gDLO;!HTbw(J=YCsHR#^mUOkAFo4)JiMP#e*h*hJ`Uo0?|=SxTZ99Tc6UAt+1!HE#L(B~~` zE1&Cd87eszR9f86yGYQ9Hwq{j3$*T=%HrOlgdl<8f11gGcRsg_75_s`^`XFeTRVqM z3YvRYDG0$~-jl#{itj0zvHw4+KSTufJ&YcEzqphJi!xcjthbzY3lcLg z{Y8_6>jvLG^Sd?G)NS*pIC}l*pURN7l8xY$xW}O6O@i5(w#sDaSD-|L$hN5-x;G** zjw%pgA>(F7E){s#e&>Jqvq<25VZa50s%!n3&!3g(3mVkikPB7JfPk1VcS!C z7MmCLl4Q|@EP0bKWBs!yq*(?wk@fRjw%%ymZ!n^Zl zfyoRX0!>_I4c!a8L&DJ5jS_8jOVx^oL~fA4mBvcs6(A7FI0;BLdHP zkPLv$!U?QIn>_Oq7=HSMD(kb^&b6Z1<_~-E2Rbbcf)_sCpPxTU^)sR_zBQJ@^&DQq zjcYhkK5dN>zi(dkC^8R977aZcHZNx|5=dI}<7D|jwq=T_dW$hTw8-8ex9{vw{a#Dg ztC|mBHjYK)_C#kmRudX#F{qiZ0y@ZzhR$mGIhwh0c)02(dp zop#G2p9&ZHv-CkR(_Ns1Qw^n6ryr5ZKI9e=5KO4Dg4PRosYuI5`4HP4;=uqll?w+2 z7?@V2K4%$WoR)Xa*>|_5_4>O=StU&alhaIOz3UZdWxTv91lM2ZUjeN3^)i?l7_lxX zg_&3BnIUku@>|KyR>==S(as&uXdD#y{I$aRA9YYi2BT<73}5$gtLu(d`5eps8hcps zDTjjR$h=neNxhe4EH)BWy)1H0x6ofD9O@{KN>*LO-R*<~hGFz48@_$N_?Rd<*_5h(PZ!#AUZ1Db7kHE~AE7iN_Ap~Dd$GRK z?(OACf4RAayW#FMs}BRo86`_j|l^&GJ^VDJ(k&Y?TupN!FOM!{EaZbs>P_QE-aP_ zng%|baC(xpD;Zg*Js{`idO`JvZwi?O+w;j(L90KE>>Q=_Ziv56C{Dd25vyHrsfzsO z7Eqk`v|hO_*sa%)`1OiTMGjbU#;srcQ?NL099E6%z<2~CNAdI(xWtg3zO@|vo(au< z{qNiNvu(GUY>l>4x1lqShFXGHWYvfMDvk2&VQ#`ANJ}2K#@4j0)0t-$yG%!Iz;@-s zkGGoFYaWC%;)sez;Q@uYs22XsO$f-M+J7S+fgL7N-3eI;u&BDmaZI!|tZ|E=B6+OT zb69Qh91iv>V45n<7DBzC{@!liFEIlOQm-QI~*%@?eP`zR*LUWxQQ_W>Wk# zPzc>*QVPhUkfohOrF^I$LKg~U|A;)P`wXPFIu=I*hU!ohb54uY_=?Tw*eYgbU#PcB z%ipA@g_8HG&3V|=s;IVyt+EAH#&10M-K914x>h))(2PIP9$oCc?JOH%WgQ6v;h*AH zMTD2TCg-jocQP^102+=NP(F{c8I2K%5upp^VB!OxeX59# zu*)-?Vlq_f;#8qwPM!K$U%;Efki9LDoG$o~$k4nvr5IC(#pjlL?pm@JB}j4R8% z!x{L<`zv&^v+r3^lqo3%Ghp?B=CyQm3?}OJk-GKSum)tgB+suar_H7z=4T6qFZRsvZ4&|s(o;rKg_=msUl%R)04sKK^0 zy+u!E7R&CA0#}G%K*kzfASDeM47k|5X@^}9xJP)WQ1r^s^FT~Ikf95v8$3heCgmN4 zns!>ZtrtItZkP&7D}gsca5>&kH}-;@;wXCKxa?ET7W@HauIts=^x_2dy;9SZHfD)G zI+Oq1i)Z8IW?1n~xqpVhN~=TyOqH@G6u8065`1$g4_oVMe+VKVAhoZb*k(Dkei~ipM{6fI=&{6n) zHdE!!5|RR|H0E!%EMlpv_O>%C^xjQqOd_-h^R_$LHYYpFLa>o%WpIex$>MR0?a7*E zM}u6JN{19t#f%0Fb1l8R zS7*DaF`f*hkXs!;;fY>QFoPutjtNOp8XfLjXn*z$Z|Ez?9*ivsHgdp(_S=ba>|{a} zRnxOpKy_-NFb>EuICjz=s9NnKg!6idO+ick#AQsMRRy#^l(_n;G@8m)(qtN)&4 zIhtqXkvfvcp8ENV<2YkRlUhE`I@2q zB%phaQ`0*<Y5@!oxtGCv;w;b{DqI8-ja$WRbSPUQ zBkhg9^kWD@jE6EI7ZrwCIpszEY2si6#bIE{8}>9YM1mwen@JeUNg9=vZu^W7iI$mh z^n3w>^8wMAJ#s7ir`e{(2rMlOf}*?5t&G*onf$3Fw(pJM#RzV+t!o3A8Od$tn$l&i zIAOvmNp}2NmRtS17)j~s!(Vr+$@J*%NaoU;;@<{Vr~2m}3?`kcoO^!M`RFz0%aMer zSRh$0aSzaWixh|RXes`i$&)O%1h5BiN3a?s3P_!cr5RhDyPSTDAISDJ*6N4+Bdjdf zg)#t)LT`=kZNMo;Ep>XMw~hCpR|qG*?LiNCPS6bWixblN$W=eV`C{YN^o+YU8uk?)>Xgvb zc=53dj~=RSGW54zT0%($k6OWSJ0OFsg_CD+8{i&(R==rm@ND#D?Hj#AmCH=ExP~$h z;(&5e;*28Cwd6TsO4Q8gtD^T zmkVtRV8O_*ik$S-cACMmJ~q&*f}X9z^OGwRbxNqW!Wy9R9Y6ffg_cPXEkjLiGkX^{ zSo5^R%KUxtzDAhUTsYx^34s-56pU+n0pgi43=;}vXBUgpoGuzLDL6j`!!db-2v(kl zi&V2>2mzTJpmH%u50(7U;ItR$z&7MhMtJKyrJ&}qrjsg?Z?+19PFK!(nlC6j^vU=+EeRWCMquJT@R+CyUiqN;E=7PXTz784i#vNDna zfatVb|JI;~qmb}vg)>H@FO%f(1YN7uossu7Obv9k7XVP6Us8RDwbmj+sf7HuD$5S0 zYNt3S1GxC1M;j0H*D#)0shOoYcvVp}H1f1L%ig;MRn{3k9L>0&QYWga8yS03b=xU2 z8E_EOJuCv(+mhG7iW{8P{s6cLbb|(C*-+-eH-)Q`gE-KGVOM3w%jX+$djo(AW#W1v zBQ%H>x@WP+0k_B%(S0pNh(=64G!QW@i{e0O5U!~Fn@Gf7S_%v7Gv(RZJoMroc9OFo zB;t((vOVs|CI6caR`bV4fA(Cgr=C+ z0A?*ijPF|+99{E;Bf$F+-m2Fc9{=<|zMY=}t4sA4d=g9DcB|RwaunK$9d8JRtmoa> zG8m*p8&}N?J0WeSQ)p#L#s)iKO1QWRqy)iSw`B{9Hz~2n+1R;mt`UJE%X$#^GyugT z_tge1{4|Yodvs4RsgrS_P8r`}3t+|f6+-XdrX6U2 zV{HiJY9cLrO-NxuG8R%At}g@V z^J$FU=o(+62;lxa5!U0w*sT#`hU`vwhq$9^tU13p5a(NM)>y2(DwIeM>bYj(gd;>} zc6ZjXt}tgA)n~JEQ|Dvr)fs``Qy2k4R#ogXO>H}o{{$1NLA;YaBZa6EmlBjDNtids6x#U^1d>60NfMzt|t4-RWT5>HOz%1W?LP+Up z>g9Y0%TiU*qvq>vDcIw{&pum+HZ7^rU^m)M8SGLR8+Ki_IX^$6H~%y17Ud%w$} zYuGkW<`i?bpqRzt2W3qQ)zs?8LV=vXb6E&dahsI-GS_J0Z>*ZRdl$A>??D9!C>f0k z#y0L-$t>oAX&GGsKyDeh2+n?W!ir`-N;LNTQwGO84@8F&u?pK96nV+f(vX`>lz*^E zduoR*bb$55Y$eH$fc(XS@gH&Sr=ViyczSul$jC45Cvo#9BzLv9$wAZrBKuW(eezg9 z;S`Pafxd}GeXOd*6vyLf5$EnOJb&dUcO`fOt(Q0p7ouMe1RRm@^W~O;TRrYm1kF9t zCTAvSTT1Dv%4LJ)4YbBPP^}a5?A}(hC5cs)fa9w}ihn~N8G(}z{X*sDq3YF{5;rU_ zF+B3vzH@A-;dzO+`G9m1RNLKLkcddcLjxjGRXg}L#|tr<@+cwfJP=qNtvn3as9v;O zQYsKvet9!G+RAKUb2|UYQ0*#XW4Qx|Fp!@p24q+~w612W{tXu`yl? zE`G`4wXwJ9+{hnooGMm=R{(M-3eop*bXN^B-^6iL?a-UqB7KqL z8BftUQf5w;422XDzHx5^dk2?9eYjUmcqUv{ zPrp38yKr{OliLk zMPn&Li@C9sn+=dXPI!OC2DL*oaz;1lM8?g{@a2yZOizu^9k;U%5bUqp z;xt@3K&4dDrUxDdy*DyEz$b^_Summ*J_iu!`NgSnpp$0|n6qKr>&JJF1{}=Z#JnY! zx`Cf3(i?O|)@fuQH#@QEfduOiYlqSDf$2IkLh@IXa#I0^0l+WLo1EBATA3C?wh`I`?L$#UFq)Wi2@WNUb<*l71^Na?V!Pd{a2 zUB7y-6;EztXG!2G%3~891pzmRtVWU#l!8CGa_udg)jRzG^tFt51o=+|T}ZNcJaP2$ zq=BMZi?*1{3r_qAGUZbi;W6yWBbHX@1*Y*gf!n#AM+Nxk&m}LWg`5+^`NsLu=(vEg6Sk9uX2#L=AP8umdkfA8`Q$(Kd^O|L3! zV`${7*4iw)oY6Z6GdS_FICe-iR3C#Z^9`&Qk6SgB2G~LWDAhuB+UI8ev2nB8DgQB) zTuIOZfFoROC$RDYwG7xlliDBCj$yL7g+SMPf;^N3LYuzAQ;nlM|U*?k~jbUzfOTo6QGncc+hJ*+sR#y3{AHOQPMTS;sKIVA;K3zF?0G z<%V8{pB&X1D_bfoh!~Yi+SFp4)5353d~*n+G)P9+Sf--gKeKz)8{al$8aPy3%QtP4 zA}}~_)r?XG8}<~^n~It@vo7DA9BMgHb!^9IFj^?(+=qf_WBc>&T}vFCq44x3H}veW=$DCV4_7zg0?$^b5{cDzy8!Aq1K_;a-U1H2ahHOvpzLC#u(jiBaJmP4D-Boxzy`*rA3MDPffu-88lj4(Qse)iXqi zNZN~??;|x<9ksrJ!)Dq<$;#x%kF~#|6rE{jVq6>+<8IlB`zLm$Bl2ibjB^FLSUR=1 zkvl(om+{r2i6MG$c}_|gE66jkd}uP#@(-O}&jSl*rzL~I$%UY|%}I6ti-bx?iVcF| zQFMJt(=C+pR5q_B0s8a2eN|56Uz#+J#*(na{hSzWQ0I^l8Xf@t`kr~V^WyE*xd?8j zA)z?)LS9~b%C~F(wv{;r8AfMEaMHV0;^@3kb_{PVo8TUqO)81GNX*F1u@wrjc zK|G*IIZ>fsy*&?j+8H0_l!74ullca^*z`#N^a%cdJG5V%b)X$cj{MML^fcPJ1yy*_ zv1MvCT(bR_<*dP}MO_EARiQ*|J0WIL(v8EmbG}8#v^)Vg0G>zhQ>43r59EaE_+v-+ zJW56FeTwp!;YY^2oQg2r28BSIX8w}E*V+jB2wik%ArtFAZ#~RwQdK&rk+ZPJCIKI8 z&N$a?+!w3&hnXob25&j>!?$Jk@U^AU>7^WDxn3O%tC}K~qZ%AKkeG2Hq%a68!q%Us z{P^y1qSZ>leXQJZSk1XZVcl4C7df(Rx_ii``_G-DHk0+KaybsMpABW2&*Q%Ysb^!J zoMJCNCXMtrif02Ex4vm>voTV_=o&3)0-XdM5$LFz#Bv7!9(G&lBCH;-AzM5T@B?7r zCw}!|r`piO<$wulkWr69<(7}O z)kMxE6emB5=+CPzZc$sNMzKvnrN$}JLF~w*$t@6M1g3#W?C_=EKP^G{HlQbfRDXQ8s2@%ZQ~KsT#v3v2tAU*qL(Ih33z zYyLu-`mEMzPC{XLfQHb2MF)+2Mw#bL}QPC>xT(+tK$_zo-`2ix-W(T|)qXX5?G;Y<|t4J zSrMu?&gKO7DnTr$CY_Pe%+1F~q=fAtBg!P!sP{vZf8qOZ523cV{jINIFn|ulTJznC z_>Ei*X|!@IYBTdLuKw0jG`^hczL86O4t`c8h_C;E92XfnX2Jyi2munJ=g_eO^1$Fk zSe@|`n)w|<5hc2E@%NcBt6xKJjqJJ?yx;7F5yFRNJ>Sj3YS}>2KG|;Eq(t>XUouT; zU>|5DA>7ia#>)CtNk)s-NDdxhXk3?45hS7|^>2?-_^pu9mDctPLN~C8dlwy5DOK6S ziV+MsOhEvkFiI$gr@jh9yLa~>Y#iN4)0_a^o686D3NA}1(!O(G3yPe^=X zD01;qQ!42_e+a+mVcQ0i0Cg2ULc+qJjNRm#(TtrF^>tCNjO5fht&yUoomIwoEJ+5Q$&sSZ9=TH)nHy7WI;vYeh-YENW~307kCDxPS6J&EjCKE+wn zeo9rJ?zFp!1bR6Yg%@3Ua})Mfq255COG}k9t81rAoKi}mTv$!EDV+k5^Y#UvcvSZg zfuQIiTrTlvEJ2z~SvdCZQA%EE_F15Z$oW88*2DWdyKS`C#o=0{FEH ze<{k*t|GKcLwqMN=KuQBz1L-$Ra9}g$-U@p{wv^=7bc<}Ndw&1xzKf{$m#(l8bhTY zjT`41=o?L1)viyr_(*~Hc?Z<~2SDthi^p|h) z%FNL2YzTgeeRUo*QBC|Fsne`s1#@@c8iZ=k5R>`|jQ?1wf41@#>@&mct&ut)yb_>muD;)7v^_0)BiZI{%Swd>niPcO){|X-r)HNh9x_;DGnsB z?JgY=>3LRh!Yk)Wen6?rUVC5idrK4lPuKX-spfMwxu)8bFZ|5NS&1_ko>^AJVnSM0 z%u9kl3W$s(qdA-30Nrrbjbq4>XtJ0MrS~4!u#L`peP7keb7+HbJ8Zj+zfDyvjfkVO z);$l37VUi%1T}fuqqfEwzCyuYq*Rr}r!?MtwAK(h5|5Fr=-T#ZdLtRm-N& zPH=?5gEHe7rD1!)>?Y&Npd1z@t$lTRF{Le_XQ8KJatd@+&#cK3s)Na_R4W2ZdbaT( zt^AKE-?u0p=xK;8qrZAp{E5f~`toW#0GfjXS&*;z>7T&*&YTVO8T*D{SzgkAp&aQI zN3#r0%_jq%gcHvgy5m2yUpQp;0m#y=c*@&3!!0x81>F?A?vc9tNKh|8`Lbs|!-Omho zieoh{mpMt@A#iPtAi;2Ia1^C4PycuG3GdAa=~kf4G6$Kp`ZwsSp$@BMFCVmiS;t-a z?F$7xZslvg$!|}35%hU+meS{XmzK-dx`>q`1fpg9!Wq&vr1Qk9>IaWX%C z3i0H_f7=dz@yb^;jrN`@EiZN6h}u^u(4`&H89q&fk(9aKu9Lic#i=q^JLlxzt&CWi z!32woueQT}lPE`cT`;TA)>iYMxhjI1S#wWUyWXB1gW9BYY^V~O9oQGoy*9Qp8^ykY z1-WMiE!kjaIt^rRkVUR0<&|GD0L-e^n+8fOqu@U^iR(2Eze4ik7PTp9q*OB(qmm2v zcF^NF%a}s@((2}Vu!~LnJ;ZBgwf%gn!!!iB-N+8wq$ISj0i1JE``LN)!yf#EfnZbC zE#x4^Dv5unM_mWGE`uONnUCurs3JP|L>hb5OT;|Sx=fixcVmCda z!JX6{xx&TAFO`msMk{Pn?a?FC?>6arbT$y@^6 zFGh8_au+nw=qRXeD?Xp~o<{nSx8|UCm3)R(NlBK%cXXy1<&+7vtHC-P911b+`Y#|3COMj(F7|yYYHS3go$I-b2}`w|NTZWpnAX`0 z@?Q-DekAW}AD;1KC|RL}R(lxjG}@QH;NL=<&dKntOg~3_l|^z`OZGdOQJEnfjEn7}UA}f)9Uw6m<8`IovTg+>fV745uyG8_g4_8vwJ6F419G!keHr(3 zBP(E2qkR8H;}59mam|g-o@+~}XOR4@l!g3kgK=dD^@9y_y5y#B4nsAWu4z(1K)NaD zc*;bK(M_(_&jc+++3u$|Y&fzJ14=~7TYc;+UAk6pW(4x+_W=*wZ5dpwW3GRMk#Zs~ zIyPw%%0{j?jl|rO5Y~Ax{sqgYhiZh&qg&!~uCB{9BLR_XYU~6U;<7P39k>L}+xY3H zzp(?V|C(sbRJQqKQDTeh;lwA(Go9#@k#hJq|AsUh!i29_Hw9B5yojjPNHVj|pCX`e zMO9Jt-T2_+slwU8?YhmVLtS6}yGKS!8^iPAO5^&$$VoP_J`rHhFBv;ufGQ;w;aBQ_(38%aQHi;Vm3-mroGT6G-p1~{lnxSxkyG8j_j zZi3cSCGsm!7e@%>RH#S2zvX(C8imgFWIo<%MIkTJM;iTefAi}7jp4xb4@x-K?L{Nz z=DXa}>)2V*5xZc^FaaVOYy;DtE>d>jb*jCZM`=LBI7?4p&S!ZKW|Svdt)Bm~GHw{$iO7f(P1z zD?H|W-;v_JZE45ht(}_%!u}_BVq@q(vB$H`a<&}%MWCb75(7@h<4tGJgK|lU6Z}h} z73mQCFB;I_FYm1$OuqiiI(W&kW@p`!S9pfzNPQRG>6T zGIoR%I9^6vNbJoXWl0P1kj>UYs%j4HAk9eS=YUYzJ4cCSLr>qF1whD7=|UOysP>i( zKG`z$ZXSq3Wiz14e|N%9AAaN$r8=Jp{++?9ikJS$X#RTOH%zoW1zZ&Y& z>8cRsyI=_A%w(gu*_xWh3?U270{gVex+pn>JI^G{$R0%v2--KqP-`MaLs!N!>RDdG zZ>Ai%UsT`~&=C|^&}$(?y5xYbcX`82^JY=L}ns-&U?Ji0f`%UJY8gFTMTf#X_| zWOHW^6f4$Hj{!0;HQ&AlUlI||JbIyOR-=2}j5y4wN}Ry_-zn0o5p{yaE2u-s6F1mY zxw((bMq^q335NpqM`kNX-jh`r`3~BY0QLr)1Jj?$QvZKV{H9yA)ML)nWo7_1td2nlnK%Cd?m%+x0H@lEyu zCc0fDYYGd9=+l_m<7aib=9}5F-JC^GuI2rFzhjD*3mw=$K@|6z^kER)Szrj@14y(H z#(wN~spSm&AOV=`PFHq|WL`+*lfQ;hg)IUKz%;3>Ng_op8A}fY+=K_!9(y}~p~=-g z#JyM6t36MaIKD9Od}+B_Z0e@{@ZtnX*jX%hF%ii3?lxx7ciYx7ya0(=@v^ujDX+sn zkURj3eN$%sEhw!|**YwnSp6>(nYI5sJ*PDbIArrj!;W@%m+zY*Y*hX!xFx;&f@pIP zbf3@%xgn;-kci*c{my^sB=-ipFQUscz3Q?cqGs+F)QaV`5h;oe2-Ibdpw3UPj`L!( zU9|Axok=OL1=V#^Co$=PB-*a6wa%YCOEL5W7V$sf36JzVWUFD*0_VEps)OD2mPZOk zc2hGu$=r47c}hGW)WgG(HhE=%>q6nQ6A$DYIN7-$Rf?c(c6I$UoU2g6Sl$SN-%;v% zmyxr_38Nc0XnlxTKK!a4VwmvfX;>O+A5ALkk%`9I92C=kPcM?*r$V8>zeJqe7(H7s zWiX)MV^mh8CMF2^iRpyUQOP5-s8oCj{v)O%tH0_vV4^oFUh=b|b$5$!E4hj8V}{$9 zZU;5_4cU@TOeCMb@`MSW3`RJ?)sL(>l<%hER9UyX#dPU+?-<;2c6flwOD$58UL}g?5iMwQf~eOgTO;QCzPvJ@ z$$k;90#SK~FFE2ZtxF56{-sGZ2<~a-Sa>y`Q@8^8Fbm1BfDgbj@}>k4S4OE1YY3t0N$I#_Wu9kJ;4)7hIMIC9RmqMyw z2@m|vUD;ZIo$hODBRNOZ5mWD}d?=G#6VnR!Z3*_u&G-GzaO@ZssqZk?dMR?D5zmR5rDTG^{RBzgdBbB=6vh)w z?}QQkdT0j!1Ky^D`5hrzhfj}Y>19Ayr+5Xg(`m1(x>*_raW4L_zluQ5h@C#Zu9q)t z^0I*t;zVY|LU<18M(mGjkxtLieLA+oUJ`P@l(tttlBm>Gk0$U1!!|dvJnXTrj!6-= zKtB{q4Alr)6gt&_W{TBgeWcVhqhyrQEmEgeb@$2bJ}8E(&i>HZH1p9bzFx049Y2*^|yf?G=lJsvsqP#l*_bTMkx0oi> zLoNVlo`g^!cGo!$3JPrCC&X>0$3K8RVwsbNw%_f8OMh0+-vw!Wg-p<@v|fzclSOm z^uS2Fa%3~Ss$I<;&+coibrl4m3YM8lFzf1;>itr|hdLzajK$BBTl$%y3tr2+Yd#zC z56otj5d3QyN`!+R$}GD(Db~w%YEfhg&f@@30(cPnLY+FxHM2YG&oN8uveUJ%sLb?<@%U5ec3yHyAZmW zI0~xk{S2==mRiO$S`^!i#n$SDEG#owk|k4pC(eg%2uT^gDxj>114CMjQ<@=aKUtS& zw{llMIOo4gqE29ja`V8_ zFVVp5jmL+lwe8!blv65=C4n=IZ9%Zru&)zSq?bjg){yyN{ZtYhubIMFndq^2^0kMK zIVb7WZWi43izo%-{UxRdLg*3M690?;(5^&)@SH03ja}DYK)okFO_-Z{64P#W!+x>J zXz&yAn6pC+1Q?6vGISZfU;4;sQv{Le6BN1LZ@*%WjKS~H<-r^_Sl5s}P6rO-!f}Tf zwwfqz4uvCgjfzUD`aU7DXvUJkg(*5d;e4L5TFaNP?iRKyBf{GEYkvmB9dnaC^jJqU zk{P7y%M2)XA5*RTdXaVt+?*|}->JWajOLX9UnTR5Km{ueECqE6=nfItL{&=SW>bJP zcT=QQroH2Ai&|3tytp(2$|uA@yW+WyR}|{jIjK=+4Xe~3Y|}Y3ecAhP?T`ZVWomCU z4z%!gtPnLQgzbB-%cV91i!Q9;cUDohds&?_{xql~nyyMva#%doj;*+e@b6*zSopQx z9QV+|mw5job*PW+TJdr}ZWj+T3mA0OEB+2e)ZxdBi$25mYRbVx=p)}qUV`m+h3C@R z0b$@#9RGw)xSlN7-+Lj(XnI-LEE0=P;lern0@ zHd&&=!Iq_Q{CjT$yw3@vz$Btz$6c-7|x5^QLMi39bt z!XH&Nm~6!e&^>6bXLvav2Xl;XT~);(f?EOkM3)~m3d_)Qn!At9_0KbqUwPyj-}%5g zekI-W4e&+`5rec5Xv^cZs4_~;xCYiG>A&sez#jgu0}a+5b0y4lmu?;ojZ(S?gzS6- zuBO9zl8ot?pgiyAi(AmyHO}ljMtA)sWa;&HH@eIf^$JguDy#?+eH5Q$)34lUFemG^ zs)7p1t`R zc(Vkf@;uGcfoH{34Fq(R;6kcy!pHuuBGKo>01;)tQtrNu8iaR(Tz1M7UKh8-Q$KZ# zsFV#tMc|1Ok(C#$-_>W>FjqZYOMOiZi9!ETzt7;~9dnW8Lc6yW_ksA0QXRw-XQCDl z%P}jUfVY0r!_D+%e1ErROT3JIpKuZo74LA5-{QyQQfubypHN71m@X^Y9VaF;DiHq zT&N%!FnE~?>tTqNhVCdQU^68g&jC>e%=OxV_HC4!8uA1@{^$ql9%sGq8R~~ zb8!-QERjrbC|uH;3s-l1g>_qKG{sQlh)zSrZqm5*5--w_d!5LQHWJ+Q*hi1h88V*n zKjlt9vneyAm!Dwd&E-jQMPJ!FVIMYmzdnaUuM z%`ZZrySQi8z5=Y+y-Mb!Fi0DsPHJ!=GQ%+iB`^jXYJ*P>320&BtF(K| z&8g`9t?2Uxb0+=gE){emsk-IyfN^pExdi#Yjn^mGTlPROV>|9Y>1maVd0XF`l4|JZ ztht#>PREfczZ!Tqvh7&+_oB(y%H{}( zxJ&`;yH_n*Be*5OP4b(Q9%l5dX<;H(+d_yN2=<6o?w%buZIVg)9ITtJNl1iB_Q_S8 z{6rSjsfX3>|KkmB|D&hMl+ne1*<#{0m#wfm8$u zJ0*m)AWo|ORV47dpe*11Y;rWssNtUe@wop#=5`4sFUk44IaGz~lxq#s&e64w9si#v zii%gW9baleE?p7qVIMeYKuGC^iz&CSqMe;mrNtx}&Nq4uEYJ%58xo>Hsv)<97?NeU;$|F1Yc-fgj5w7i z&T5=8%d=8PCywO~8{SCNkvStfgrvt#+&tn}!PMkP;SFyfAc~7;PrC4?j&&5Ve2qWKkQK7-)J%S&~mHN6Xl(xNs$e^a8HnoEqWWT$YyjX|5p5l z9I!7s`n6?oTVfa|6C2 zPi7zUwhOnz=&ur>>}K8c2Pv6IJI}R?hBsCdNm*2LOM_-IX=I0X64DgYgIx?=eAIDh zCc%~oj;m65g-;Xk^A9La&noKfpC-$_=fxmMJBv_Q$c-_F1{4H;W+3kI;sx4L=lab| zPWj?OAhg*5QAl9IlcJeN3V9+ucAdJJ^C#aL?JgctsFY5+NLuADF)gGjxnuU6I83 zpA}La08vUYP4k1yF9yJ)^%fY$>bReCGF-U%fC+0UODZ%Mleq{y=fOB9Kq`AC(*3o3 zbW#qD#!oX=MLq6QL0kzzPI@bxLMo6$kS)2IyK#A+9{?eFGTjs~_#!d~SYYDUUN!w5 z3B{3cx2HKWusU1(SJCDAVV<}M!sDt(lGLNIs^gqMPa@>bHj~43RGRmJkriG!@_Fxu|c!t5E=ej~lT*5t+?(?)zp!EOK30RWg?Q)!WQdAq&)_DGbM4Gz4nbDas_54%SeE{ZW+?n6!>j5cN9v&z`!#(0XYapEM~-Uo7Xtk(E_bzq^>gRY;X{?2y(b@1%{t~v zT=(j$OpGt>JX>`JIKx?}!z^vyENYt4eV$w_#Ka*cRh_6uKw!je)_Tj%D&lf=5$^@* z5RIr=Xn|h}Fdbwd_R7^n0>ee{=4YJeanS^WDn|VO3||qT9WzeMkuK9Iur>|sgVai3 zLI?U5r_zb%?F7Sfk!$G}VU762H)I}N!-$8njlvOa zfT)7Hkedf|KaPfLKvTQ*uSXCle0Q7sNfNPm7pfn6L|@%o<-g0_Cg}fP0?z72P^g9# z$0WvfHaEcf7Gt&8M#u8(8NyzitPUrHVj<$Okd<0z6g!}UM|(m8sEhHHrLb{9l1;jyF9BLl~{Qo=&!NV zbRGvgM#kKEGBV7h18x^$jhbg%j#K4H&Y@f*EcM97U zNAO+t!#AM_65R27Bt*5HntPAv`5G|G^P|qH+8MSey$85~iG1d;@p4^HJ#qG&v`!x? z%_Cr->Ne-h_vTwr7cOwX?M2ceVIToFkGvQ`TzJR2iAHAB>wRBSM4%o;`Ip%1?}{i| z;OeCemK;uyAf`FLoTE7KfP9B7i|uxi&Znaf0m6CqHACeXnGA`ZoXOd-gYSg9<=6q} z3H~l7P`F}CxOCBC1|VCr>lW7wa+jrTu4fXVC%A{{W91qyCMy@VBFQuxu#oQWa&!JC z4e!fdwPOy(U@!`-HrklcR$HQdEV%MG+Wx4$6yJP_I7>y~Av5DLjq<=%@IK#J{zJ)h ze{zmLjWv=}CDP*h=3mF0Hv%@%Ld6IWd8Z*p_l-MGYop5gr}=e-3nAK;sK_=iC0$jA z%rWV1<0VwP3(ky#N*QFf>8gCaIdSwU>}hEnKGjm`$!8oZRJ%DE77Ji&jpqJj@Xrf zvjbbN4a3GhfnzJRw|v8dEy*BhQFX~Yj{H@v8#}m?6^u*-T-2o!{f+=$e1Pt4Q};Cm zqMzcd(|2Y@AfmZ}*K+Wq}VdIRxtR={|Z&K!q4oVH1Q z*%7X8F$pt_v#m!~qIZTm!n+2X$S53x9NdQ_y-(AszB0U#T~6klR)Fs@(vqhGqIh`3 zpaI$fOY!4j@PcPLE@yypEp5$kk)c&S6Kj1N=SiO(kh#-_6YolM*8MatW8po|-^%int^+AMN zjvM#><8}q-`AS_;`bQ{px5x;a>uZ?keAs%cBX7P_95C0;V)|uv88sr2tkqw@#O{B? zQWwD6EWBhGVG%6xN;jgpn< zs!v`A7+>n(L)A}dO+QDZP?J-P-iiyU%AkD$z^m#C@srH&!cl#bdPA?5x8U-?A>!uZB?6g)2kcAFwKTD zOQ$bU+Hpz>0Dh_Un4#fWt}c@qR@hyV10oVbDHc&}06+dEi4g+oB{iqPzgAp{%eg5%*}LH_B^ePK<`t!ws!86p zX2v|*^;j4+p5#3#)1Id$-2+>KNCHBUC1NGyWeX0L|5&wt17*htljqh{i&ib@*{19>FE`Wy5z?qbuLU^Acs2X;F&O|5)xMVY!wJAZ>vr8qtMS>EY<_L@bE%s z%Lq$2LpylYbXy3a;w^SuEpL>v6O|z){;40x;uthTvf`(1xIBGC*|dN18~u^6Eo29z zIAF-Pifb^c*8*fkWo0gBVwrHTL4Lim82oyaSsU(H5Be0UMuEd99gq91%80#fdFfwD z?U82K#DDs2eI;7B@nsfg`Qd|r$YL({W?SgwcH39_tD$%xEU+egpSt=|w*ENI%OsEc0fu6N&*SRc;#xljo z#G8IEsXM3$ds<2#&Bt?~(>~h|1eP!b_}g99k3A-oD`b^087~2xm#?lVbEb#EKoP{R z5K7MoW(sUz5!&!lTTmI@AC@nyF9c`8-x`Y-Iz^BNJxjayF-lri$Io@Nw`D**w0FNG z6)y=kko~Q9wdF(VW)dHTDhIHuJ#~r4n_5m=?Gh4#Adxk&t~3B(A1P-L%Y2?4lG|Hi z#NQ?aQbT}8_#%<6EHt-uDMps!Tc?i|cLNN^9?Wcu4-q|y^Z(|L-e9o$U8QPN>VpG| zAv_9QFj|4IGqAkQf?|zsXv$#onL@;DBPk{>M@s#v(9SULLLUJ5bneuy8ighQ6!wWvrnaxuTtLGeVbjC~!iz}I{^v>N|w4pde=qJ!T~NL|sFQUO>ZC+gXzU2KgzLMx|0-c2r7 zfa^0F(YTI@ZXjrI#$#*8@Xi;{Ncv2XY)>=K4w$?;SQ1c(mC)6Y^K3!J<~tB2F?VVj z-Z2ZgkdP1JYDm^>y^A4lg~KbS#X#B*zp$eR#I;~mRSfSB0WX8cRw^HsuwS>X8AQ(7cZgsL)%PT$kqb+ds)1{4YFFg`AB z1b!z+g=Nm`#qM~{ztq*})Q)rgsrB&Y$e7h2Zr>V4NA5g=J}J636;5~@Tm-?dr!iq- zbnl2Ji(J4p^*i(F+cFFsw9yzMr9t*JA`<`cZ7~3mXXuu~adGE^FV=)dZw89ugRmca zX1e$UbA6HqjteAbtwb%<0DA67RkzjK&=PW*owJb~5*YyWoR%TZvWg|Ae%d^GOSBEe z<8qVnU1YT^LGerODQBT#m=_AWVP&KetMlbxV1b3tC;gJKAZZp<`+Q-jz`?dn{Ah&R z;XUsp8Q?X97u!A$o!simbbt;)y*^~TEd|E}1d;f6BaG2#U$=~0cQ`*XOrPeN*fMR| zbkgT`(($rU#LH-~^WL6A-@PI}D_nbG!_K_**z~zZq5@4^i+UPap9a|=IYuwBWd!Xi z=zUh=CRDmQ9R@wg{rJ06KG~REc&~5)qiX@aqP1O4@ zp9GLGw-E&5e;GRLVYNqM1-(X;;;H7agnWn=$U2!9?7A1fQIDouse5y7@2%$-`r_py z*Os~&Qb-FL!E+C^>Bn!zeiD!NmQspqlepCMewr8%@n_?rq`^(9CY`J^*I`llsb9P_ z{JkaaOD2c*sSpHQk>D({J%q-Q?r!r)t>J(DX>I#Z)Y|HbVmm)FU6Cp=FizaIhGFbZ z^4$5Fltu|F3V>3EqI@94wiWW$|43}~HfIYFL?bw=+#3&IRa91Nc8>tY*}d4!1-+(? z>$*)CxGibLV_xS8S4XfqaaiwC&g-e$u(UQl*(FEUmCiJx$I6^gFt}8xo290!7Rb?S z`&5#$1hT>rHzA&FzD@-vBjDz)r3EJ$b5IQV^_*Kc=syw#E~s60SsRaqT=t6f^shCw zD;KlGIZsnO{AZ5Vh7=hu@n7hHG56AR*4T)LYJz;h8y)O{&toQy-J4TCiER%7D$Sk@mRGD z>_$`3@VR891}1HY*<%<8RIeKs#PpAEQX$Ej1zHQ>ZI}fRGUmAM@ z*4M_PQi8PcEPbE{PZCG_-d>%xE ze5w$`HY(d4WxTP~y_|ZPo0*TrkWBL-WiQQ>IjbzF$lNUsqhHp~#1ookqDhf=9;)Mt znSR;#|1pK=bw` z*=IO_;}MN`m05r$jOwaR?jWynz8pD`j>t&Uw$wthHVd|n$cQ=ei8>uw*lU9HDqD&qI6YPUBd~83qmI!*)lBptZsM18e+nzP#^vmDv{Hwv+;J!tpxBz zGJ2A{l&7h%7=U{@-ds%3-~_bcsF{Y90Y>RHs}c70Ighxf{l#iJ;|8?7C^Fu9jDfO0 zQB%4Qb}G=EC++(r>}5ri3fRl6C2rO=0NBajildr5H8HK%Ug22R*|Hh7SHM@~Y(Y>@ zDKNB$Q!#qXO2d^4 z^kys1dIDK1oD-=JDKdn5%h2-d-0)BsjGTRS@J=#Fzw&1rp^pQZ#2ik@1+SUZ_95}!ojBZ8X zgKQ|BX)zmN4V7KtE(fDguJ9_|!abN>VtiyL%=U@gLz76 z*Ld%L;|%14Z>S0TOuQD-Ke%fRdM=p&Ka2% zJbMEiSnk*ao0Qr}!qROtI&fAD=M)-=-luyc<$kJ#>%UHS%RO)R!P9*aj(5pc`$O9F zo7xdU!$?L*d6(So{(K!k$n}a>gOnv7aI&os`Oq&&=_}Q5k||aVY1zN%(OxhH_Mit# zPDzs0%`vlKQzG^d{7DpSD_jvy9$`Iv#BRJg_l~pX{Ul}sVHn=9;5CdBiK=J8XL6?m zw-?vMcA}5@Cr1R_sT?5dXm<7;u0!2TBp1z+` zipcX{LeF7_pmUuI?6)vyctr|scjRt>=Lx>_^R@M@qWCpIL(aD>h1D=O;7uMMtgOpst;ilpt*o20jGvHX6|ET|#TX&cHv|4XI98*vmQq_vMKFnwhIt zOC&^B+7!?S!)=j^mOAO;lzS=Uf`=O}_0#W|6}Ra~Ci>CqyBNDG*wKT67~_ zdlsK)cgiCNA>fhx~Y$d<<;gIMig$Q%)cBpavS-ve6XYtswJ+ z|L;&HNKvmsuCfDo-DU}&>Ix=P&CoxPPDJ^*zw*M)O+q$<{zTPL2B!w(L6;$qA;RQpFbd+nckx$? zTro3I1R89~y9K0)Am)V=W=9t}!mtEk`*zi{D+s zywK8S6;HWnq+Ucx%xnXD;jv7 zU$B}jDSPbORQH8DS>95x&#N@Y z+&H=Ed_b~S?xg#Xi7Tw6q$XzXWyX}_@k(y*hXu(Bv`4&3eh@)O;A~YbzBLFQ*-xuD zJwI3lhbAgx0e|WlK9U}(ScHgDf(s`9KXWIm_g*7y*yBh$z~>YQ@6n3)l!-2K3+s3l67WKoL%}YyIS2bLU?C7A(r5ANekv# z%x5=raXl&DhL_1HXz13Kb~ZKPZ3N0WlCJ8ph9sDQGb=6z!NDsJpJSw|{}~^Wf}~i^ zW4TPnH5>ph1-t1t*~@n2CF>X7E6Rt#$A?ajv&EkDyoHf%K_Tjc>IV%~B}FT(wsS~y zNituh%B_H+w@+@js$!0s-%itoM6BWPg?|qf)fYEn70zv5VY-N`GRIi>c=$7@(OaJp z(79=ezv~0JVv6sS3I{zloK?m`w=KPcrIv;cZYk7UycQVrXn5~A@YK=0C;DT*M9Spri+?17k9IThtov*7B@A!Pl0C8}b`nAT_@bG=ZEz^8r+{yFFP8lMIAtCknkh z6O%)z$BlB|8g_qK+Mgj-v1_|L(x0UY$(qz(Y_{)kx-=ZlHn~52u43kDEg%IvQxXzv zUy{lVExfQ@^DP)L=Q2SGUrBYV!j4ifY@%ddqRv{Ki z7Q#NbEg*4YUKoM;o)ht8kh(V9l^bOy(IcF3m3AUjTu*gqUl-j?Y)#*FL%smBy2CON z8PMFqXo{!>gC893)B$uG9I#yd3zzFl@x~|B1dE6(E~AD2Y26~T&PhbPldG*=G?7Fg zc3pXsX8vo@HMM2VjLd7>RUd0yl4NKHA-63f!<@DvCY4QM$Xf6WOEl(gaoZee7D7OZ zMA2KE`03|J9d85S(LwU;u5lpLZYMdwy>u`X%WhA{rTqhIVGMEYx1ZG=BX0>Eo#GDl@+b?ngyC717=y$Edq@x zqP?C?TT6oBdU9n5!cuwV{*LdoQA%O_*rC|y>o8mv-&n2?N4 zaSur5hLpJig=)r=WKuxUsF`^tH6y|>Y5Lv< z#Pl`Gg-hW~L#Glxa-)!{C=ocB>^6;tGe5*q&H1UIHVjL&>iGf-Ip8YRC1&}S2s^;30zs&#}wmuqPv zU;$@A*C0S`e`3N*fO}k%1iQWOG#|UO?GiPZWRmuZ!Tz6!8pxe4s;zOCuaj$_s=;? zhm}w^5U_#kXuS9RlY6-XQbFa7HCMtyt^Ik$Q=uyhKWGYPpg?e>U)kJ@73! zC@WPd@ts0OB0Uo+xFn$p${tIy1v+U(n%K!vOY*3W89!o*#Vb%xHHD+iX?9Raq*43w z?!@XndLlI!Rd}${_oC*u8q^0K82I~X`P2oIs4N>sV|StM2PEQHl{;fi1QHOBnE0#a z4xO{V5Ydyrw&jh6YIJ8|q;r<)5|to~oBeKwfu|x8i?ny$Nj>YRcP^vW zp&9sccZ}Hoi%t>5ERIj}cm#qxnLfMZh{dZ%j5U`WvEoyNxB^#U!&;|1tD4hsqMSPh zl+~OD&+WtBSG^gh@;oHh5C*!sf3=}`x&Ku#hywQ?pjY|LpWOXqIE2|7g$YXgS|fcaJSFfhel5XSMSlI z)F1LH&H?>>61M-4nOW31iEvLLSnf^5L4NYqBN0-!pr2AYo-|$E$f^R5YJ;)LPQ*#4 zAB4WyC)B#`+7Q}xnGOjL*w;qbH)y8c>U6{XzN8)d44BkscX2v`&hmx}=L0HH7u4s! z`5DMM*!x&))I0A4DvqenP?X;jQ76j3&uMbf7-ZoGZ77uDGqq0Z3nZALm(f4h%W8rr zH5$>0@8hy2?!wV%Lwhj{LW~Bngj>-2a=thfgg<2Wv+1HFgik5eT-5kcb9P+}+mb4) zOnF1?#8&=ClMK?wzLTX712LSvon)?{n-U7;%|Fz}B%M)ObCykFE}M@~8^syRzc}IT zeqg(=kn_^R#U&!@e?R4LPDnuZWq9d*T)uu-174l%OUO9KjuRZGhWE9H{8_F2CeAHp z#sT|$sqF2D+5|LYqlwn0k@_J)#4kGaxF)n+v&3bCJE_d8aXH?jbk6Lr702zoL9;b} zSN`q=z6ptCy3%5M1@s|zVOF8-?h6>6#SOGQZ30SQz8;*i$ihe3HO8m&z`EjeCG63J7ZYP#T3Pr~h}8xOHMB>TBMzZX|_<(gY7=mmZV!OWBf z=g?I{#1X=9B|`10DP(QlVM zBuR*3JZY_$z^akE@UnhR_isbxcGZmslKBhjX@m$2o?)x#L5jZ2uwC~?br~MJY1@S2 z(Ho}W#nf#y)PK4QmL$YG6s5d9B=L70d)mn+S{g5c={ zd-*tolbum=WUMoDt$NTOEg9K8cI& zce7q5%6|)>!O>5G^HtEsGk)wYv1l34pP^)$))=GkWX7)VI1w}aqVCd(6S59k%ye1< z$CZqoHXnfr?oX1fDj>d9Xy*S*7|F_hp8svGleKqs$aP_iw!T==sbN%(EbQD-w;&Cy z<0H76Pv8SA5BKutB{upsdS3 z6$!S#`0O=IKcI0hN{Q7gpNeQR_Kz`qC3x7ybI^Tlk$h<%oLp76#jU0JU5ApHzv8pP zV@1_LXGmQ2>o9_ZKD(?Ro@dSf!^2t z%5w7Mee5}>{VfhzAwO4MxyJLu)RHhQFA2?HGU?V<_Uo=@MnSFtw6KY2CZ$17Qc?Dn zxoq|kUS^cj(~3@?GoGrmP@mQT`|5yJ%v=2SxbWsvw5ZRyL(8R*|Cd2r3F-W=!2aKRMUfwM zUXD4s@tQM9|4XSdMJhQc#y8+K*Qf)^Sl$ZeF{UEt9SRZhO(M`ynmb#l%~pcf4Uwu& zoy%)cuE>0;fWkM4_0mD~-id|dA3#x69f{tJS({W_5%xl65*b(>9v zoi%7f+%*SI7TCG-Fy9qLeFS}w%~K$pk5^L-4zYeG z8FCMMCl?X$^Zpc3ivGSwzw00ZcufQ{mmLE(nv+4L?FgojxKRZ8e0K<#0>~?R;MB1< z0=+ov9bDH4rVAcFf(amc& zbBT>S2N}u8D^>j>C4q2ojTPQ0Zio~lW-?5W)Ey||@1-r~=@%}RofB>_SUEf6-brI$ zZ(WNb*DulX$o(LFSPe~uLmt@B6hfc1d9QB{c38CqGM;0^NS&y7+xPt2ua-p3@c8ek>RqXAy>i(XWO_G zl#(#t5Y{d4Us+Zv_p>CAHj8Hv=-C}qS8`V;D_su+iQl+@DqU7`G%jbAhlBzY%4WcgtB7mji zYOiMceoe{Z_!&T`mRM70ZQKUBh2sFhU$s+9f?++&nbbms+Qa_rt84(Jl;Cj6=8z}) zgPQ(}$Dl+m;wdVst{Kx+`X%tp!zGVNflg{-Jn&^e^ic%;D4U@ar4#QZ3h}@3Ar6>e zQyCXja7D+K;75rSh927QeJc}D2!^eko8_rs_l4l0qUHcSM31+a^s_Agk3bwiW-eKP zf@nAL)F-H6YjX01K+A{7X+bS2gstEWX2)xZ(eYpXutA^PGEwXf3~Qo@d{~F~x|k5& zaw8iP4NRAuW)PC4cpo~PT^IX`1m^GA%9L#2GGfz?;^5L`!!HQ&;MzO}*~qlPRL9OY zOy~Iu?8UJCq6nX9d`O3dHS9n z*BAvZ`u=SZf7EA}2{v@`RHdX%ed(<~ZgAUuqMS|2;A}iX9pNMc-!I_ki-NFU= zJuY*MPvG>Wu=i0rS<&yBn*y2A>}&T*@M~=Y)0hB1It8hny?u*+6JkKlQ4XHh; zF91)}s@<&5EC51a%1E2bc6Aud(1>ZuH7ab6)MF4RagbyJ?zR#0lyVC)xoY3mHVSvW zp21{*gYI)wr%l`1^cADF}Px@7@Wz95;@xoqSHWt{1d!gvt! zOo!9q%#AS32VVdErKG+*Lw$zbUS0sAA|*leOgOB5td(FficssJ2F?ytIF0!NC``Z+6 znnF#83%q{W8i!0tCoo|>$x^Y-3yyziYg`QaE-&I1OtsWNiQ+53K+wBJSUdC-8i4L6 z$lk*S*dQmm?aN0Nzi=ce1Aj&v1ygyaE?PfsWjD)3NV~W$$1Mov6R~IrG~Q)YqQ)L_ z+y|z?wwc_L?j_o^oWe}jAeeTF2>9&tH#X!U5uwvU7@O# z|3eD4o&qI86OSD}?V!<@aHrnV&g(cRwX;{^qqIYTsEoq9eR!D?=qr_{MqGDbARpv4$Kh3LD6Rt9?5{6uO8{f@~t^Mb}J(F&K zcz`Y*Z2o%WK%htRas#swGRqvpN1_zZ2es6l(qIH08>WTLEwsv60E&L(9Z1YPSFi-q%>wfsQp{p8DdSy$MiG2%_=P{yGzNoS5LhTmm{ z5FdP>`ugkhH$S+8Ps=_jnZYhGM~AL4p~lOfS*d}&2<~3{T%QtOF9a%Y8iKBUpxZfl z)DY955IfKt2X0l>i*^?Cqy;ghpFAvH%Cv0eG@!F{8sKBiN;^JYNtW5Wlqel?x-lsXj=)Uf7CJ#TvhRp8N$ zfSG3cWkIPr@`dD%IttC)>Uq1Aso=oY*Qps(gJQ`+kIrm3wm+5?*=Fc^xvlT7P&O;W zG#hR5y-?uxHYHItm)XR?`3$9KEVd*|C=I42EtdC_{G?!2D@~{rRwCV7I%vxK@we_% z0LFmyXtz+7JL{BuJOEKIY^X_TGEs-dETP9a4hsjbELJSD0LwXO0Rk0{1X-h{(V*%( z;flbuZe8yW?iAShdecVNFjv_@*I4tIj*CVRzBj|bY<&wZj`+zOE2qJKRqvql?QAWh z0toexS0MLoz3OlGg4aE~Y&V3xz^3TynS!PrWlMZF`Sa*M+TXaj!?71^0m$+M64q%*McT>6Mcu$r54N(2dKY(DrrTtJ2lD2IhuEApfNb$#Vd3ODPhNVxPP6WiJ zsB2+6KM>is;*I^-pro9nVFCY5zg%OGVtr|Z`wtrW>V?9>1gA?}Y7_(YM)$f$Q*Xj% ztHyW$wa+-;e7coa9mMtxkIbXcU;g$d1wIt)5+8@#Mzz3r%qkq!5vR*nW8eG)mkOa| zo{_-+X=!0b4WN?odX#d0G~rJEQy1gi$Tw&}LHDXV<9(2&23O})L@c(+yvL>b$h!`3>yCEK!%2xyi)>#+0LP( zA2S>QwHZ9Wrh5sijY&lJ6{skGTGzj|_x436lbQ>yw%F}TMPlmDQe9`DxCgo`H?KRD zTq_C!06oc_7@CP2Bx8FaQJ?VGfQ=ju?|-7TxKS`@^Pby(l{L;-%EI&wNFxhJTv;d% zx1X6s8L!~ri7OJaI6EWeS$*~zMrSHH)#dQd>J&Lxx@8!%M8m(hckMHQW$~pXbNdnW z&5jZYZpyuPXsOmXe4N%64rKX6A(<8m4+d;Z+I}Op&g*2`K&^sYMz9g^PNd7!oX5CV zH~ymn1VUwHa^CF0tJ|MoC7g*POt5&T-XLSppTtMCF;8@3F)Hy3b=ISnGO5SvsKgbi z1`W2Ms9c|;@exwktIU~7m2SrQU+}@d8&E$lc!3JQuqo`A-G~^?NoZ-DT@GFeoSWNlZLze zcrK3({=VV8;5Kw=W{0dhDpej6#Nft?>5cGncyy=xB@?Z#oGsZs;tJS$=huECz525* zJI3|-b(y`FoA5%yRH0p}OMZ^(t2l^JIIiaI>%}V_TEBfowt0D=Z_#?B;(n)+Kxz_u z{o!GLWeim!CK0I{_EI!jyf3y>a8BtdI_fT;*ln9xZ10BN-94!7-3L&M+|v<=EP+|D z?>YqKz<4byWm$<4B~3_L*?i;Fq?4v|rp_gl1ye5u;bg?i&appGsjGyl%xQGtB!l2- zq4l>lrgVG{J5#-c4u=p3l!+}BJJ6y9k?WDbnPIE6oXvsbE@6ED`s?>Q$-r-b!bgNK z(rDzv-xbb)6FE1beXP*Q5`i$6by)i-NYBn_Aj{E$J#FX`@8gAMxe%QzRR_iGcVrCr z&;hQ>x4eBk1hJn9pi(w?%fhy=n2#X1mOjyd4+*NUPRDZYl4He>kjPC&Sl0CC!r0`a zU16H9*)Nn}U5vZY^3`i7nSTw`MtJh?3~#Z=^%i2xdZ(ncXB}q1+!PRCp^&Me5>?^M zLykg%K?f3(woo-^k+rQKR<RFWVn?hI64ZB*>UAJJ;~D! zqC`S&=xqQWvp}KYaA!nLHQB1fIZ2Syu~sy0@#P(UC1tSoO~bZnGhMb;v_sMeNCf2m z9sZj$JtG0tO*y~NbM7QvObb_k1HvPFAI-9Tc@DF=@fjQJ2Tk~DHVG_>l{L`I*!659 zMgtW^mjJ7pHx^^pxf~F~IC-&?;umZL-@F+4A22Nzq#MaggyCoSwOH+wWXKkruj^&$ z9_g0RToSZL?6b2>xv`C$=>`Rn8q*#~T41HVpQ&O>pU8shknB**Hr$#U^OhyMiV-+y z{)>O;(}W`$s+9d#+a{p7WHhU6)9&d_`zp<)Il?p&1&8oFwWSHG*~<2jKug)bx1}9d$u4=uNZL}moF01Py@o@| z-SFMCz_%3ull;XtIZ%T&MN z{K${gOIrN0Qu3BxHOKN7Lzc0)p%p`Mkpp(6wI$m*L$u`xS`vD{Ao^Is*{>>xiTLV|qn$_qx}n z$^Uv5!*sK2bIx@fXj)@-h@|w_JI?znNFdC)6l=H01f)tXd zrivjo+%~>mY#J_6(xcxDLSPdeshr63U#N>_NY%TII}HA43`y&t|uRa9~XFfQjgY)T^g$2E|mv`_Z*EntN7K z^89rN7XrOtLaA*%^B>ASh}=d!d-AxcEv7~IyaI8fxbSntjR4PDCD{RSf`j83)ORWD zJ2A)*n~IZD;&3G160~mw&8l3~9R5Poi4E6nUzS)}7CW8wWae^*fMbVMsMB*hZL`|msGZUHHI`q8o<2c+oCVNNo=$RDS3X^C=4ORqE zot;LkGp)69JJW+H6tG6L+O6{ec0ej?+$!h-duRIQ?{h^ajj*N-02D=hC>KBu2DXPH zxkO(eOP?I=urj&h7Ycq=<&c zKzGx#O9A%A1sVLeAWFd~)kO$gXI}|+%A7W}Xv5(!GOiV`&o^WdMTs3(@DtknaKNH* zy$0SrOY!_}l;msFD5cb`%nq$-fM#UR2Qws3tsiM|*T0s2U}uj47)Gix8KD8Pm zA@#3OlJ~b|g?Yecyb~>lT>%B zPVDPa*KH@-uNoLcATjqXh;`S;N6bI*sG#udz0_qgS{C#CK$Jbn(5xHnL6?lio)1>r z>0pPrIs*XkMdoW=5gAL%vZ`t7pdm*7}Qjs|LyhTNNa+wRBwG^$cJCZSj6tZ1HRoVDvCPp&Z;X^SYbEi86{8GN!5s$JdCN1$i4q~yBq+F`ciok8aXXm?? zsiZ+F81@U4*=GWgPwztiUtF{pppmjs=Ql?$sSP-ImFz|Q}YM^8Djrfw#bpz_kpAraR|YFKWEixq7E$OKIJ zTWRA+svGZyIXmi(DtSCsm!S%=TtxGax;^0$T1%064_S#oCBrv!WPacVqBGQm+UzE= zI8YYNb#kO;#l8KhefHomdgWW?YN$3taITxG0mpzTJ6#jPMW(lSOmfu(LiVc$E?aT~ zl9IoKXS18S019aM%P+vr)q{5(rE2`D&gwR`0@xvxsXWhrxgmxxk^w)>W9GO%xbrhA~R0rZZw&ZJgqZS5M4w+VrYc0V&PV*WF6-B%D(B7OA6#g`7jSr*ROdGD=^{nKb}kBQaRM_ zZ{5eib|GP(;Ux4F-K-%0fdHgZ<7WWS^ZYLYgw?)(ig0nJC|mHx8aakS>vSnUS^o+= zCkOFuhLL|bfPEAoQM3JW$tIU&5SZ1e2dGMnQc#!g4^w|hCMR(l8D9977PA4Q ziZqq>CtFu|dMAZLJc1zY(|{?&Id4T_N0Xu+Yo1-fmF1+4rK+ADw8?SsYxC=X@xsX= zTP~oeUj>PcLx1nQEZR(m44EX(tXcdl2q5!?ZUGNo$;O&q z?DR?qa4dw*3!lMjl*Rx$CEWsSK9NFU0%(4fDs+^VMY;#4?bwH;*auNCXfW_5VF4|eR9Oa2g!1$H=YnhF1rd|~K zg~Max8;K2bvDkKAYKUSgL6PP7TWm6j0G{5|l&|u(`K>Dg;>gRa3`R=`JkXROZf3gW zDX!6Z`r=vX4q)Q34%#kDVw2jmduVqeVs>mzF0WzU%rtLprx_-?!H2R(iLCm((jLaX_p`Th$Q>v)yIe48*@?$QNip1y%kV!lUjtD?>$a~6{(xH0E za)!{dnUgiF=$B%%JzB&<7wQQd?@#u_Qb+TtaJq9AA(#Thc>vP{4~n<`(rgA;(p|2b zNZ@Q&Q~RD#96f_fS|ipf)8`X@pG*{cUnrcViH^hScazRwJW0UQ-?3$rC4jAcRySDL z0kCULqv?-8NWm_C2@OPmUvlnu?1-r0&HPG}Bk`%7CTjf8(6kx10K`w3xUal(W%L7! z`RMNnBu)htI`#Ur2W=`&bje7%lK9>|gR17DwPWN2n+uwJ$}^vI5a59z?Q>RV+v9PO zfiF4Y{YxFq#zkclRRq#ZTvbD=Iu5jene(l{tdZ?z%pJ$4hb<#?Hh>$f3URvNW+Npb zI6tWg)`6)}mejy4hkwKb%rlt>a8xSJ;z;LSg@0g=BPCuHGd(nG;KC!Cn&Sg1hE|#; z-usQ~m4#K@8H$mY`-340&=!r=h#*gCTqAXgSH^f`3#m#gww~!%2}nn@q&oO*#wBfs zW|KUQw$c7Y)D z*8JulVD93fVc=Uj3PC)Fd&tY#LkUcEu=rP_sK0;v)qnIc;1Qt(d+9@dn03^zpU7g0 zomc`2(|&+jJ1#_`Yc1Fcv^|l8>+-x_OfkR`KOq7PTSC7|8V#{c3JSPMocju#Dn|td zO5J`C*q9Lm-DWa`<9q2Ute$bPvU|Dt#Ow3OTnA?-{~Jkt0q-tCzIUl z_!d%fnqI0&uV{Icg!Vo4TBqYK#;IjuBs<<5rufoq%V_MQTC?f>0L6%`ETTq#t;F=o zxKHb4_bUvBkJWH9_H&*^NBLN-R}|mPWkxSc5%Ou#qS~G#J)?s8YS=axIj|6rj-iABbVNrP7Jk7{Y>-)lsKh~}a$fe^%|L`P=`weO@ z@3Os2=JlUIHWBshgnq_gstK!N48X5J>P21=pe0N%;eK}q{9*a!Rr1G=L2k)5l|8_y z1b|#pVN@cb)Ykojq5M|?Hdxb=N2gA5L``5W8PUN4qysT)VUX_v1x*d2TD~F|nV~Yg zt*n`nV1nHl6>-*v8kRhC_Kmg3?HY25xQ`rto5XR))bYYduam?IG4PPg23 zRlAR~7OwX*m&bb)T=tDTP-r-=25u%?8S4`AFYg1v?ab&h-;2tpsI*(8?#!>vT6dTr zqe(?t6+5^TW>o*ffo&$qL zjr38jUvcaOnIhsDfh6X`=)K}FxHcQf{d!$l*<$Pe4;V+>WN3307h+>1*)QWIT(jCw zfVvRNAWVSvHbwr+g;>&QPFCrJ<}I0Q-QiWUcfJ=s87IE-tEq`8!y=wlYh9reR&j;X zn<9Z)Uo7_nlY4SAX;JA*PJ}DZyXQ7^2aI?*(iIwLMtz|ZVd51M3N4r%1xVB^zr#E9 zJ8}I(nER!(eZ+}Z&=y}G&t$wqb`RQ}Up=%&vR6|y(c5Tp_FMfqhsyV?FwIZEES)&^ zD>e^PVI=pu2;YzXma6xBnyAmX)OFyR1t_!91QSJ007p?^wO5HgHXekg0yT3TR zs$$H1!Q*i1*?q)AOBw2iA8Kkhn=Yb8e^<*N}teEb$d3aDQ(U#95O=CO>dmi&hf0?QgHT?R zwG9%Gvn5tj3m4V=8+W1ErEPlocF(#=Ybz_1DY^e!B~wHqceHQejp=-1Ahucx;9r9c z4Zh0!O{sT8QvEk&*Lja5vDEe#dXJh&?H6xz#}F*9tLpwQg}+Vy(z(naFL`YSu5Y?A z^W;K)gsYYvy%L$FqgjrEn&8iWe)DJ&hvO+GAld;09>j!j zIA_|;7U)ncVPUyLArIL6GldO%%E2mBByxLR`Hcp6?k*MgFL0MbOtC{SG+p0D3ypdj zc@hJhlV%>&E8veJn4{F)l%TanOKVR4)mFa05QM&fuld zH4_|Nwf_J|%;sICCmCZEP6y9vdFV4i`N*H5-}8!Jc_9z2$E}D~E~srPX7S1OfSOWN zFuFoblSzNwI%o+kD5(B^UH6qZYQFRatD-~Y5?8owStS?*7@mgGtoFKElus-w?I(nF zvrsH=SN{a$RITfYOVo9PJP2Lm+S zJ`~{x%m%)Xmq(wa7dS4g>{AZt8c^{X?`xOkLwK-5P9%RI^pPT}YZ|quEb7cV)e<_z zBjA`0D7N*=K!7(g^c-$NN{MgV)qItv3m$r5A}%*;zVxcAs9QI~Bk(}sKRMzK4s60( z0a}65vK#Ai$M&;cRl0!7iD4OCkN9s2gP$|r7)Ri!s#%k(UL;otq2~6AGgvjz-4Nvf zq~2UkJMfrT3^0X57vMLGk#E&PM0jLdoB%d5f<=dC4_z{D*UZ>NUvhqtsDK`rBMqA> zoMnt$F5XK`BkVK78Yu#|<8*|NH7j`(e29>ku~d;q7T|=y$|sYYA;IUf_0$7$y+Ul@3}PMSxaGH$vdqQ2v_h=rY2SN>4>B7hL&iugtcli zxs%jgTcJ!rT9?;Q&%k~2VdU2vg3FQ!!FHsDUI3#YP8SrauJiV?UmPYC$3qA6BSyYw zP7h?o*-Ul95^=-Bu@}OatG4tHya*)+u#j}G7v{prcMba8P?z0!Q><%Zr<0V)Ml`Zdmou3U#GUHK5su$W{OPjypTGga4Bb#!egE=R9q<)KiUBNP(AG5I7B`&K; zO^39D>^B*IKe0{hDvfE-G#6U7A(@brIfJnm-Mo8D)UwbdWY6-N0IS=IH0$Oo^RU;1 znIFbB;&r`{|2lrnRzRFo_)uFVt6w3Y2w7%T1;M?G#MYxgfrbhRJP?&yAopz5_xq*D?Zho&W4l{=l#3KY5xV3X)`8srs zcCh_PwI4tVsZ(xBJ?==0ak5*hE{dpx&JIM6ajQotXaCN%ZbShy*G5l^-NJ29xoI)E zaew-1(LvyeghtJF2x*_$xp~6kqWVoW%V6`cN`|fyv*1@-$Xs4*k1!u}ayF&WixjQq z;vY+cWx;Ng?0^X*TIm}7Xg)h#w7f@@CQ%X?L7oy4{Yz}TXAw%t`nALPN_z;X* zdIIv3B$MP^XQc2=Lec>LKLEgET+lK@@KE}X)USpZ$dN0f#Y=G$XlhE`n77H*N{YbA zliajY=39e})PR0x+&9$=Cw4;UZj3~DYOW=%b`tjv8DAa&QAX7I19R3C-tDz`OGjW< z!Vj@gKJf^G|1Oa@H2wZ-9^=B;HlHTQ@=Px*6={Ke4gG0ZROfws=(&1c#GQvBb zIXwr5XiwH0gFFNEu*?T#atucM&T`NB_|K%<=DeQQ zOSd~VP~ni)Rwp0r9?SA)C{Q}|*4yy^4nB_=Pp3RNVK}aJPEKjdl3&0RDOCM$YlzVZ zqi513!xjQ6UP?EF1=O&Fi0c3w-qv0|lL3*}w2g6FUK$h@aTFQIT-18pVlZ)QP|m`# zTZ&(vNax|eynumXGH_fI0rk@k%=AYcnfd<0v1*a&4l5Ta&-hI;5J7K9>V>$S`l{*K z_#1%jS~Ws9)^VxamaChhD1{Uehg}1FoZXONmOvNOX?Hpuup13TdRPnQjdNp%N#S;D zl~Pz0HR-|v zAt$uWnR%?pp^m*Ype;wZkk|_YnRD#kB+*LJQ^Avs*oKtNmBucdVi~>i7hfuUZM5|_ z6-o8Vh-~kh;6SCp#X{NvvNKZ3^LwOjL&k4G#k9A02CL7~M#C|ozwiKv%rTImiKz!MDSwfI$C}HhGNkO5Xb8oL{gA3|?)wSu6@p(VzxhZz*&VR}KsK zmm2K)@H{Cnc@gFbtAlz%#`s#RR3 zugrD9+h!ot?R$?5`xLDES(eSd+%fJ_)9fQqa%8xjwl6#4Rd;NRt-Pt;^jj^&d>ixm zF{<#Qp^$+Q2FXK_UDx;05>C6sOd|MkjAf9$^R3{e`*`~flWM0h*|1;91u{fveolc^ z8$#6_-ru0wVk&yPDm4tT``U$|`T8|Bv5_#Dk}pd^4o>JwpYw*IF)N9M%YXO)Spw&T zrUatwwIgnMIKY&^vR=F|&$QzvC_HM#ulRJYY2P5JF6;Fi@$3)Z1VauQg3zZMJbCRi z4ZXqfB1i+8ZnJRaX<<}qZ>)n<%ho|Y$=taM=BF^!T4|>u8LW&rY0vTx%Z7{H8ocUy z#guf@Tz`45IqtGgL5-;?6Z4o1mA$)CKjHvwc4;$=eFL;)O z=zUFj4LZG6O{pxprcQEd;xm^&vu)*MJVPU)=lRy*%M)Um6>rh%BhWXLKO;$2qu$aA z5H@V5eL@AE<4sgn zkUBe*0?I=3mI>yr-a)SS)iQI~y?sSHSZ3#4PHi!B%Fr0#wagn9a&3NQ#) z#--!@rzZAAh`oHxoaG7_c3UJ~Bq&4FZ3|R7k_KsN`^%9K74}L4p-3g zL3Fm_#tg>@(X>TTXY@*kgt;M#h)|uRHO{({`pdM#wHy1kqtR!W%PP(|t9G*tM(w)) zIT%-C`OSX99)W%PBHhS8=;Mm)OKlEbqQh1!jWA*|T`g|9h495EE< zY`BGxh0laoC@jq$&V(%(o|m$4;W$fA;GG>+<3_9+N@k7|TUh$- zLrrHW+SPklrt2BhseU@Ny7G|yjbq@T&;qaiDFkm{N+P5m+2yzg@;Z{IdMqoG*>b76 zdoG|z3fW~%-8Bj`5Nbh7rp$$SMVLvT3uIvkZT!f}uoAFjVnvJpyoY6IIyAb|K;)1{n)Uo zL1@!ZRM^A1+mJJWh`8Lo zCv+ah4NnXmx>01-XA71w8k|llgy<3i82+JJ#~XlI2|!G3UcKO9X1zNdE|WAgR_?yV6N!6AbgBD+DYb}CE@l>;|}iRg}FviF?kKEn(1Ag6%lI}wZEH}q3$f)GvO~Lk%B75sUmQO zp3MApK{Dc291E=5@7E#{S^GEYsftLld!K5OsgC1-L3@vgEX=;#J<$TbI&8tu_1>K5 z#*Xiw!z-m`*Kj}aX^LFda_fGZQot22|xtElTL_u z2e4-fghv%ZM_!`fsAgPQXpBvQ#m6#t#gK3%ApT=XarbaqO(g$Jc3qTeD?jq+y`u?e zC{~|<35-;jhyq1*Hh~Xs2oCb&|g7MZnEUdL#Qve z-p4OJ@w45|feDRW?_Ec6@l+5C+@xA{4K9sl#N#(?7_k5T1+ckiY4LQ~^8V3?x@AU2 zLU}xgeZ36t6bQOcAjQz-j+TLF}yhmx@ZY1{mg=idR}%UPl~e3q8G z0l-rWNv6rASys zr9OEnsdwSVN|fha?es+7Q%WuASJ6gLKVvS{xV0(=Ntt+_g|B!mecx7>I-*$E z&_C85q$^SPfaNyp=8$JzeY;#W%8Y#J6Sj1<|C4BBQf zwUh}!q!Q@W%G5iNmo$dYhXsuPN)&}3s89BMglRp zuj{tq`!sZMCO$mMdxI^&b*-UgezCTWi(R6Q9A^s0sxPP(!dbn{zaz_-~zz%HEAHihYXz(5ttu36W zxhg48uw}_MT95v9crV;i%CBjGJeS~r-+Y?`mf5AeUbHTbkIClt~rN*+y!l^+l#h{MZ^=UPLvrO=hTqfudj2*Yi z!HHGTE;WrBWFaZ3lvWWJw8T#27iFXbNg++SJqZ|)uz=EqSk0|RU7q~Hq5Nad6MN5v zc=^YgqxMNzP8t=pB<4%-G<0Nk@Z>366_QHPRu>n&h9*SIL4$U{E`0c5xm?Mq>I6gn zLhcua+Rf8B^yY=O*Z!Di5l%<=zT+Cl5DpZD)Pt@sB9aoWN~Jx47`qxBuyfI}xh6#S zwC;{PvnO5qTAo0W>53ThV}p08sc#2DpgkGZvBNU>b4|ygIXSy}VIA2u%EeIm6k>RWxMiK#-2&;vGSKl5>nL9cOn`kds%Bu&SEXew?6K>T#Ahr+(I?4dv%Pms zz)e>Ruvdy6xNhbBf*2xL{nZ&DaUDeOHOb3~TC#z2)~=gF3+fq_vPW$lyMCE@#=pUD zapLYC3zFd9+1z{Uwo)~S5GYg#(mAf2p^ZjTI;V z#S#c6jtN7n($|wp^C!ahNQHgQoBK>$4gx;(70_@kjk%{(``IvDTQAMMve0shq60uI9e8Vtl*e*RbmBRJ0RbouD(k$m5iZU1)3mRWq2AM z1D03n%ob32nH^r?G^BMQ4; zi(rI$&g;IN{r{I(h$&|^ksm*p^Qa4%SFG*8C)^^#eCEZls=PIDK9a&D9FY2 zIt?DM=9rlTkScYJA%?q46j4H3b%jF+$^ZrF9U~EW7;aEt$+7^EZ8>3wXP=kYlJ&*E zAO1lVEd(g={rmF=9+PQ%qgR4ru(5Jdlb&D1IxFi>${pQ~J{GmFjtPfPY8EO2Vpp|< zW>D2NMkrntVwC(PGdqF&T^B;AibJqOF}p?VX4tbbyc-XD2E;ol;@ZzzAsakyvKQO3 zo_3aB)EoiumG2Bt^v9%GQ>16jA5v}K@;*vO@({Ri17Ik|@qrt?bYtxgCGA5>^+sIA zHjHpNsZm`dJ-xG@viwNW}!sM*J;TNv1Hb__{>)Qg9 zPJ_3fi7GySt_B~yuaB5KkVS|**azEM=!lX8=TTc-pBdDe61@iY=!;+bfTrkm$dfOO zT0U~GiZ4evy(6 zE$XK05qBlogii7;4&G`o54XrFQX);)iaB|2VCG_y56rkNOV<=P6j)nH-=`<03P;>5sB3U7vD2RVh}KL z=^%Kwh+kx-uIg)V#yuJyUC$y%k5yZ+Rkk{sRO(02e@L_X?*)Kltw~yAfb)u_;Sx}S z&UETvb|q9c;fQduZ0BxyQta$u2RR_@hEGt>JTJaS4;WzQ{O1x(7ZI}r!vfjJPbClD zR3_8;IO>6!zu8EwJC%aLCWj~IDn8gAusz-`*nMyh|Mz;kg{Zn5+QvQvmWS}Nz>!Zl z%$RVee<%1V3Fc<~qzlsgel^`K6BJE0i`t&3j!jJgRP4W#T)sQ@3+Fu3`GcKJ8G~a-VSBltPY>z-!h6HSc^g59> zJ;0vfWqZ}?LeVV5>1)k zJl3R?YOIlij4zERle46k;hIio`+^K2 zm>r4PKb(gu4O9HFUE3K#1md?RTCD)1?BGd-kD z!xkG70}2yJ^~XQ_a-{UoBQqH_cz-}VaA_n&d#ro^dNk1AC4L4nILs3U4Q55!N;>T8O^p;sA=yx#dgjr60i2r`s6$hmo<#< zT0w3z9Ce%e3~?0}rcAD5Az7O(SmIH3Cz5KiDElaGrQ1#$O$*&t=h#*E58iCToL3i; z%h|uE_p-5I+IhVq<^Z+iMrxr}DTm@@Mb!|!#G)JIxtu~z!X}%}H^84>p@M}b##C@> zFL)P&h_!Q>#wS#`Hr(DiQP{^rw#KB{RcWXV)XF_%P%-bUWHwGrl>JEgWq|TJP?nzZ zm-s4AfAOxauu7M99ul5>9veZH*yVnP5%A<2Ob>1123~1Ung~YdPnW%(BubF&LWf|( z+{*rwL}*@V$#Zg;(kniMIA*x{idCwIy6uHk8fmEW1R8e?`@2SQfK&5UHU9Y?fh`v? zJCED5>n01w9oL;Y4NZlvDaVG)+)NW(%(Op7GF?D;{|y5ENiMl^Z>7M)ZAlCZcGrtBJuh+!YLq}~YYc|Xgg+H>3sJrJ?pqU6NvN5bHO6u= z8Rb$er0Buvsr=G805yNSh*bliCK!jc7p=!tA=u!XS4e1-A;qv4yDr94daqn0iJ>tQ zSqWDg6sV6MmLC=G7P_+30=mshvN77bx3_V2INEp~xVZWFo;2ikrFTG*VIBMI`a?%5 zT%4#T4c)1{p$6IpX8|JSIsC8GBl+di%50NB04OHlQMMxT7ix=Q)TJ@l^4#p)qCb1@ z&Cfn#p%Ei|`Ods~bj*p5`z!b~i%vn{bCPbeBs^wja{TjH^pMNntTDAidYA|zfX)n+ zA!-Qpaq`6d;V7$wW@?(iwH(yANqGl;$OattN>F|kAHLbaVjse5AOIEQE8Y7JKc3O> zZ`k_uy?U+-ALJN$gzKTUUf)(#vbu)TpTvdq_@Yt@URV(j*QkCX{=J7m>CWf57?@;F zoX~nIoEcr1tUBYw8QKr}qU|!ulmC)~_ZBOTy{~%16(4grguUoB5{}xRFHfmZ+^ccr zWyX>a?i~QT__O8%5af+X8%O)SkV?pHdgwuSrbW+TASK))isOMue<`CcVh_< z9pIu!?+PDzMEfHr%L1*4uz=&yvu#`CJrjlVd{23^3JKAuhtzl&tdg5;U`Oi!i6n|E zwK=rCVGs(a0;)VkB2@5T-~GEaJOQ|^c>VYZVp8{kv^3VaAM`l|TeFV-Hk1;kcWlT) zOtj|~Hu*$6V(E%X%C>M@WrYyQ8X!d`984X~LfEGB%C`Hb!8+!pi!M{(LpTBueQ+Sk$K z!;AH(ovL0fL_)|NbKpiBfqx&iV7#JyMjEgC2GOfRh#fcl;Sl8RxjePrGvY;L-Kguq zdnAD|t%d(j|Ad??>xB%<6|cea87jAduk0H^_TL+uZt3`jpYlF;X|ntKu?X5A>k<*2 zxk@GfPlPhskwvPcQ72Jm4Q$bpV_*bWNvJUN~hP+=Fju;X;WoQpx!@g%P4*Fw&C{2evi=-$w9ZOF8gvD7&|g4u?&4A;K}?eZnIB?+NfF z@@8Sh7BZTe+g;p*t&c`>@LWOp@fM0#AXY0H0>hKhkZ+V^ZLt18Clpt*>oDqwUJ9Jc zl=8Asg=0O65G4+*f2P7uj(FY0Z-8(}V)WiD*_&Xc6&WY->N>XpDsJqso3?ysxfzbk zU+Wz5AZZm)u~Z5K$+!XYJxt!-tbcI#u(YSsG4gkPVAgG=p^MX8Hn2Um2b(>vN+-BA zV6x4m49wxC^6w7hKFdk?OF--NY5k{TFiwJV?=vhcp{W2)tS6XP1%*Xbmp*9p1s-$a zYX})ollqYk@`djZFT36T5y+JbY@SckkD#7%g!yn+R#g;cC7%$x|L@YnM}N++O;yA> z9nI+h(V^@3)on5?%yO2$b=$#lMCUM~xj)eyGC(^5f%T?)`)cC}^QNWPcK+E4m?2RF3LMP1ycjQYy<`YPq#iOoxG7tKqz zb#CHf*TvKms6Q9~e3rg=*SN0frWB9@aZ0?`EMew1mN$xu}%(R z4+JVgZ%)@a%*`>8G;dLOdWcq471-&4C5>;4&JTI|*WJ7L5H(03BaO3|V$L1r^&3OU z*z&3*wasdGDDjnm=2O9v761LdH7;$%bu~uBK{GEJ;QeoS8nFipscZ}LkY7#%M&(NF z&&f)`0u5Y7HerC>(MPi*K`8VlHK$RjcH!pU91w%MxAvRreh^l0XSvIt&|J-tGkW*v zi{2;#MW-u;kKknaf!_Ss^$nR~3F7x_h)vO^i_a&#l<7+E3p1_+Q%op!X9aX2mFk%W zE@yaWYoTfmh33Zk8M>v&HUd78kS*cO737#q8C>>W6Q(jzA3Pn)3jgd-LGavbcvKto z4-_7n&#I6Dflo{|P6tZe47^iy*OCC-O2*Pan20Tmg}l>p3wG6UNQY56o8J_qG@LfX ztUF1lXCl%hK*uVM{#<{$N|LXB-!TPQ`gTT_R$@xE7u`sA>FG`#weSun>)O#gL2a_E zm%o>ptNhe&am`afkEPC)*W>Ek;oBIA)p@S*yH3a<$e9%=*(xPtHgqw6gwHQ#Qhj(q za0|y`wE>ew%kET*gHPP7E-VoCF^X8UzH!;I2C^v3QKYYgB4rwB$@ptUfFXDzyl*2G zY4TN64i8((ehctQP%pYny(RP*GxswiW=}D$N30PWQB=+-bxbZ78BB-*e)Qha8(HM(sx3AT$84jJN-S9wT<-eGG-g{^U!(BrW+9J!1CUjwY|k!vdE-HN`=wS$okEWp$1{$E#Lj+L;UHP-cU0noW}+Kf3fQ z*M})%QQuE^wBQ4p=_v$XOdANH!}agl&`&XwvTAPhmywfn0hX8`xRG0g_Y`i_jz+kw zPv&9fvA!Tx;J-KPR<$0&IE@!LvauUR2W;SXQQbDs*nji^lwy5Hl!=ToB&F`v`m ztpElV$t^;8Dm7ge;CeX@E5I33Nz#Ww{omjXkNC*cB=_M*Cn1?Fy<+HW2)WMCJ{}zflm5k(eBP z$Q6$)9_UWNjHzL$3T+2?a1izWLCo<}4#)Ac{)y9aCT3VBCaA+opGA$O1_QUAj2s)B z4CUne%XW7LngYsr2k=o>T_LCmU~ex|74tF~Au!Ad=lTI}m(YMEbSTWu#tLj=- zKN0SZiHl0*1AB;16sq4|?7PN~VN}w(vIB>!n~oO1+JWHwf2F7$&n_Di$yg_R>V`pq8|+Zq!~QqTcv7{%OFfWw z!Qlv4y*=aveYxn2&d~3?RVe*3nG=F$r6p(n2E)OttypwQt%Y63G4|+5@#+;OJHKMd z**P?yC6QJf`_=p|qCC8s8z;8t8@;bt z>r@pYcs`;?&mV7Qx3~X z_&^_FJ0F$Z(=w%2T{eYXP^fBhEQe@~_CeS?;!=(OgtZu02F~xr7&p3dOspPPkQ#=D zJP83nTDZa_I-{^{^kXJgebV=kR1bz{3hdPT(b+QP1Z^nbQPF(mp-}L{t;R zvF*#xUWTwLmMUH_CiEatQat1EWSCn*#B_bPz<4_=umu~`JZ#B58>(E>wUf@?kzOCX zH^ALE<#C0AjY#fv(<>h^3p;#%j#N~yqgfr<4gT;9y5u_8md@J$aFDmQK9!A$s& zGqG{>weC}>7yf~Vt)gOZQ|UOyX9cpaym;Pv+ha=?VL{tKuS2Lv$4a}>^e>Xx!2sVN zbmI?@$?W)oK1~qTe_dET7$`xnCf&jg(pWsQC#boPIjEY9tkW(dR-{_q71a6XI`M~u zc?orkR%*WMf9c(w9ZzRNiBT*)js3e5Zh&SYQ8H6T%&e|{=v)Hr*h=3a1~9xWsFD`a z3)zN~hGRMuoL!OOpzWB0Lb19apE{f1Zk(yPXDpXCdxTYkTS_W~pq)#<2miXgDFjS* zyqMhw1yb@FA&EO_cy{~S=?fVkh@{iTgiG3nXD}p^6>nSM>Sf|kFPmX;Cw;Go4h#`W z>nV*$uakc@AC1=osqp741qqv5^QP8SpvM1Jh3x?>n4idh%~VmV8k|0Kk`d!ULd?3I zqPk?TP(I@V6n#0v@N3YeuS^5Y?F9Jf$Gc8$jO5Qxi5KQ=g)|q$gW;lAyeI7r4Q&pT zAlt9be7Hag1Fs!Vn@1LIF96B|u{^FqGM+3%+VH z9Jkr}+rw;1Qfkq&dcC;kj9U#$mBm&gH+S~lxX0gMcv|altfXF{*D_U&I^=fZ5tre- zx$bjP-!z+4tn{rkHljmjcg#u*`92RPYxjqOYZvqaa#bqm(Z0RY;?{HT(Il!lw3po1 zRPNeq9=htc3n%;}himirBOxv98*FvUtN%|;oRk(P(q-i=yGM%J}{ciWk|BWk)A0 zhe=mnr@C`%k)ck;m#}nxc6efTF+gxeRfCms zvXBK%X7O7^XdEUwgVv8}Yz}OSyr4fTpcYZn*f^OI*`12)?DtW!gd&v~< z;%nDCCWY}rT!}4w9uz z!%v-d_zkZgQ)MZ=OGamTmVqqfkpd2+r-lcAi*h|{sEr0RZV(K{P?uRAQbd2e9*HNy zjAc$^(&$ zIBH3O&zESw^wzI%xz-)%+8#}OpZL9Ai3z!^Mxp!5+b-ZcRqxPb(+@!c zu`w$}$hr7wtpxR|BZ4h%aoRR_n-kMS;Qqy_mhYx&j*{9-H@FQ8$ z^XutF`+;}df+=q}wrVGV(KCpT?;8wqY;Gh*|4$Xki(e+3IE*np+{G|@NI>HxbyZIm*O%P0kwY|GOGm0O4##v{;$I}9gx zY!fP3WrV&^mk?02!4M$xRv~4Oe3McJf24$iFT@B>)>d7m8ubWsJYpnf7&}I{)Z1%C zrVNOLQIZjDl^U$?yRtqTqco68Q!NkEvD7J4lsFT0UYZDG%{s!8Tsv-nZm$i%7*2Q% zkwZ%n{JE-i1jM!oqi~EsF@>|H5V@3}$f~cf6W`eOoOZC$oIuq#=?4`35+>~tf5hV> zT#7y8UX7-Cm-urPKP6wVC;V}pYs5yD2sejEGlU0`6DF#qMj~9^>9?0THENIw5g;`r zMFigmtzm3h`oQY!RJsWFUsqq<#$lX=@&uZTMv4)hTY3})(UN-~bwO7{=vb%R9e<5L z0H)Iu7}ppxN^Fb(z3*wgzBj#^!2o%eK$u9%Dwv;bPVNg|Gv|U=`b&CYk$jt!wMRq! zmyp5~Q%+mo1mH!LiR!>u24D4iwsnnkyW&~3ZtKhqqLq@AqE7~_>Su?A!r*&`7#AJI zh}%jjM(?IPj;th)m{~0T*ui&X_TfFl$M}@$s}__uV~yz=@O?H?QMn3-xF4wqR$f9`#Bry9!@x zVQni6d`=rg{3_lppI;%1AXwSKLKs^NMIbk3Hz>`u>M+ev@tiTp8n$XFor;ZaO*5`DlI_3Ee&U54@ReY}N&%JchzO)y^txvLfWc}q>GUBh?^{EBHun#vpJ!Bg0G65^2u zY1v&|HDiCN@^8jKj?ihkC?E$9Jxh`{p^)A$u$a5C_mUzkN{i(bexU)k-GQ(o5f-qM9i= zZU+h^ge=hmvRGeVEoxE+wOIS(U7=mn=8o}pC+FbGxI2UBve=%}A`VZooJfRUi}d5R z`m}wf0friFV;UZ(9ocjjjjraO5NOvcDg?xrAtOC3R-?WxgK1@HX*v9HmoSLo?3mKX zw>Pf_dcLrH%XxN_DQs0ivpwJWR*9k7uRm6Gy~%4uzCaj3WOWoNrL?dG2W%RbfPX}x z-J1V#-hn^inA1Bi+Nj064bD2Q$E^{gIV1$(^ZL!q{@I`}e8-2t^myY8u&W#4tx{|X zFEY=PR}$Ls2=J8;gC>Ka6Rnn%?X5W&0Xoxh67RC;WCN673Z&Im_0ovzalRYgrdzz( zZ;7Nz7+aB%7rmGUOogl~VGu4x?Ad(r+=sybF~-JIAE3^Dvq0*~_kmPn`(tIV&L~0#^vL zVd77dUKA#qO>M+unNHD=XuI`YU&JuzgPvETrTnkNJU!^)-Iog{K#-~OogIJyg^R&} zg-=brp$)L{{s?;ZNuZ=EDro)DllgWnGjT?{YDImg4QU@3$Fmg3Ege!Tv^ic2kT%0C zKZlmOm>CSozdnkf2$XV2`8e(=SHN{>XL0Vb!v%L>*_Pa?a;qMKXdvtHdb-f8GWV@@ z9o{I|C@P%o=P0s-1%hSiltmMfu#&2R1*k1a1#b1#GE1n;0PviYlFJs(VVzAM+qUeR zouI~~-eje{O6XfgbsGdp7E8B5%%Wyhk$|2@4w@qYSUqn-5GJ&E-KM{f_*RZ|xVnW< zi#kPZCMq+xXokgmW{~#&(zxm;=^GgkXW7jFl3!NpU3OReS8g}9c%;>s? zGrgg_Eln~_ zU}T~A9!GlE6JA7cZ5j2u7-ATP*)r0AFZ4zqQ%x6n(NYg>?`II(%EZOJ`BbXX<{17q zi$6fd38$;J@ElO79hJWi#eCc7#dA*1vAIc-pxU6{8qQ38TU%BU-=!?)fR?*`|1{)E zco-igMmbL>cgJ9a^J2^KF1gUWwI`=xYZM~T@od`a)&8!4h#tY1KF(q1j4kE81-1xd zygS;m`{!Sxnwr?A@?CsrKUT2aIq?dzM=zmPtkd~J?imW->cvMTB&fq2r8xZ)rX7mpnFz*9Sj^gooyCTrQqvU+Sdr;vK)mgNV|tUc}@wm+j1@_P1PfGf{^4= zxVdL;gePYV4N<5C0>&mx;o62_+vj@yj^*A=C^8S;wdD(-CC^Rg5#DW#^^{VAP2jiR z3NDF&U9;T%p{)u_fl2S)%0H^&`psn3y+AAY-;$ddC$U$uio=)RUeQ29i!snT`3EjlUOU(kn$=P(3=`_&mQvm$5DCmiQJ$a4TPXDAS zL+S^dc_|9OB4^nB!bgC7((u8ADt;Cwsu1+G5-rFe)3_AzJ#C&KLfS^%64q{P9eh}? zPFFed%8|BT03wh-LrH%OEX154REc;#-Xu5`ksPy<%Q3knW`8|sspOemi`cXc0!GE7 zx8vg3&9c~qJzut9^RN)>Bm)Yf>l-k&;9Se$y0;t`iOkhr@7fO&^KU5ZSNS*(1rLRh zA}Rc)h;nx12~lGx5SpQ+o`~|x!utvMH5t%Zp!@)he(<%N{g3>jjz+}yA+^}KT-koHAUTia1LK+#PA6ve`x?^Os#zjm5S z9G)_&@6q6QFqc##-CPhNj1Z_XL&_l3a?AsvS*n)np-0~d(PI+(9b@%(TVei>g7K<5 zoGUwAn1u1Eh_|^_ts_7T2{p2tR-xZaqqk)yvEE_ouOp@CW~hd2E(+yc{2aiAglVAv zgq|(qz2ev@`lI$a-|PZ zTKVkRi*ZI;=nr!=L;d!{gMFC2UzDG$&k;6@xQum6?Ho~Pk$Q9ssRa%wW2v$F$W5|8 zDNhk)YQ^w%<1nEcueUn#zdgBl5)Jv_)kWMU33U|3Xu#Wz-ro}D&+`>?W5X*Xm5Dv* z)^2ICCrxE5Y5j9LJJOcTx#-NF9lHw?j-f#8Gtfku=0=zu2Wr3k54frV))h#a1%Ze! zBMSmLq_M^9-3!e%1>hpkxcqXkl^BGHa*o6GO9SQh;g6i<5R2pF1uoL;KSoTS?q08V zk_dUb>q&Atq};g)D6ZU7gT6d@Eb?X zk4a5`m%W{i;XxM9wOr<_){5~foVd)*Vts8PkKA!m#|U-A_O%F00vWkmzsJ?|VrtG5m?akPPt_0GhI0`{3RSATd0jomFM#}>G+6&KkrIv#+6?d^CE z86T~OqFZ(y(2&VleJ*Y0r3{7AoU`KG&KVWj<}?Ua&q zmoJ*>5ZA%?Q;rwmi%MdxhRF6%170=;XUCjE*F|9Li$97`Nu*q{KTVrW?lMSkS~2K! zAlc?dTg#S~-q>z5c7%Xnz7@|pJhy>oZ9N(&Tnz>rP=9Hk}jaqJ?g53u@I zwieOwRSa2HQ#NTv&h9yD>952_THi29Kc!-U945V^x@SkE47Bzs8+l3h2?E!Ja}YWN<=p(KaL`FY>)v_wRe z3+Xtes&$5SF0*NC*M2L&rS<_0UafU;phh)eLaW!9)WML`zpXZRG=aWjFG?~)-YUE$ zJC)S8j(@XKCvr$uHo(1GtvC_OZ78^Y1#G#|QnU)dWc`y7-ey*!ZPpH#Qq?1?9cme) zB%5@!nS{A32pw>l_I%x&}2D2t~gHV757S_A$U! zmq`d0oxku7+Xl?upAEnrtAgZP_0?0vnVc5@8q>9VkrcwzQxUC zDMsVVWnCN2kS{4gal6GmLS}Pdd)|R`vI7oz=}7^-p(M2dxGL>y?n>T{ZCN*-1dXt=7k-Q{@G%8b{A6h4q0XIR%+6 zDZ+^)h?Z0#*P<#q9S6DTV9wpLzN;xmY$d3mn&BBG%lZUq>$HSoUwZ zS`&$@8_+GX2s)Ef=~twFjP-ZGHf#vH3VGT0LP9f$^SkEfnd%4wmDIGJW>0j0>S?T& zc!-_fF8Hb?lI~-o)}cMP$s-JY5^FM%z5B{wvr3s+Ce!4`b`1x=;9#|1mku0aDAzts zXZ*N*ox(boxoJ)FFb=e&+&)Xbxi5^mOqd2JAFvKUYEfWu{a$n7h?k%mh;kloW29Fx zbun)~sg~`Uqw_X5uFr8~L0@?UFBe|A0TSL8=v+4;pU2WbU`sWL6>a|Ihh%*bJM$Uj zrc138`H|`5Cb|;vU+dS-?uIq%?!n~$yM>IUi%P&W9uF7&ml?c;0nSz2lrZ z30;rSi`dtnEYXS-Z9Y0L!ISHdL~}6;kJ57gV}9jiG3&0n*u~+!EFz)9LR!Nmyl^E`Ivkn|l_|{Gqh)w_K!0 zU=-8nYYWouUUNm)JK@4mSL80vU}wu1vwGk1Us44>9uLDKhxjbUm@G{=P>47ns0TJe zHtLeoOEMi64^%v%;0{4R!zy7=URAoor(#9#pfIw=1I6i6q+8nkf#XjCKk0%~iTNcy z+{e1+SHE-7m3NhEx=X-mB~=<}`yIR*ucuYf<6eX^s?OV}&RO@Ni^aw1QuTV^{rfh< zbl0M(EFWCf3ko9#3ase|gRJB!teo6t!F(f0dUbGUI8{dDfX38baMwc>+RWg={<9~k-vg9 zp`iAEQPG1c^YtRBPMm_($ooS@j;u6zI0&$UDU9=8)EN4jz|^z6H1Ua7rV20`cHm1F zBY_D@<$M71+;$W2ZK1zc)HEwb_GW|vY@z4o4i5Q{iz;&6Wdju-ZWum!ce@z7`wLHn zxWCXibDfpNcR2-AAIiYMNj|U%2f}@^c7Ga%pllG>j3c7(vI#6%%wodS>v&;m$0K83 zvZBq!&#d>~jp~FKD`o%6P^#;D7j-wi+vaO$o&V#!%ejob zfUN2iiLU5?a>)~QR#c7S&J^AD3>FAJ!wo`aoB_1(iqXRdE{@+R{a~_aMt%lEO(Z1lu96t%EOmPI8lXw;5m?tE4R*M4Cvgb?q;K`U= zL#TL0qUM+lO4}>=`h89y*m5!8aKtG6eQA|wK}jp#Dg=Cj4j8gsKBabFEy^6KhROtl z>1?8S*u4S@Xy-w)FbjXQ{^)x{2Z8|!*%qnE0gzOR1L@$Tr-}6&-lVF@InDgND?UH(R0_hYrne(R;HZWkWB2d@F3(#VpN0jpVSv3u_`6`W3#%7yL1D`@?g$^mE z)sV%urh0eNekb^t&;j`ZHPhv%J%LzDT*~ykqDhgZ5%d+4nGhZ6xMQdH%2*e?qkun& z67mpO1olZ^MXRf_aaR*yT|%EV)n2Tycd7G-tmkwsg&PD!QZWV)#0N)sSO&3h*`5cl z7<^4^*!EE)aQ`4^!{!XWvXz;)7JXlklc zxFWlyGg*pKIbK%x#h+X6Vg0byZrsS+>b9nW0>#zlJPa!jdhlG=+o#-)h7i5(j~QOI z$zH(S)X?u@F>ou|)|-MW4`0m7_MmmiWrJ-+Kdw(#=6bcUWzG3FfvOj<1erH_Vz6*A zrsXp@IRTST`WP>bC9gfHt;->Z5x(MIPC5$}#kw%YU1uHd*)$>0B9#Ck=r)<4H`Wok zC{Yt`?T5u$EK@rD0ii>~mJp}o98`zxoI!0T1I>K4R6dR={LD6NtDF~ZeWF@LJGHDK zQ@R4I`8SOLMPQ}@yiXK58;tWfUjWDl;1DmsVO#2Hyn%Anl4m?GHU)EcqHw}M;1bx{ zt2%M35GZv7XVz5&u)Mz`Q`bRHkE1R>6-^F8d6iZE9XI?oZ1Es|0q#fwrPh|E(%%Q3 zz5zaU(97ypHc`+5=5esKk{xa3B&F^fu6V_9&An;3k(v8-5Wh*}{^>+=sLGG(%OUe9 z>?R<7X|LK_F=wpp$}K6*&J7?isdKdeh)U@-a0VUY9JIdJlsSW46#KNSkS5FX(N#|a z7;vjqs&2dQTds9vaz{q48Z{(3ZXs(YL2^XVm?;`2a0&QNi9p%j4z2$||Gsf;!l<15 z`}5HQ-c?Q{cEn}YaR_4JvgvedLaQsO9=L>FNTpX!wX>_&ygquHxA-({(f#`sWC^b- zd)36zqA5*oJAuI7`pgG?k%`p5)H?wxzZ+%re=rzTwj!X1JppedFq1H|V;+Nf_v7QE zOaC&;KF59O;c1?35Sd^YMX-KGQI=w4YK0%c#fqqS0Q%A)7_J84=9%}0y{kArhJNiY z0HeY@xCPhev`fR|SS=rMx0IKWwEhE8C2bC6Gp_xTZAe9OT8V1+MwGbyy>2}HsKQv@ z@e`S_Z|41R9dQ`&uDt&w^#)EzC zkb{xQ{Sgsz3avVCe`G(b9hf)Si8!B2`t!P-r2y+>Dh{#S*(d+%j*_bRWNcQhIeK}@ z0p~%Td$5qH3Om}xRZ>qjFr^DNwBNW>=y12tjS*#12*r}UbJL&&@zS(-kIezIhgI+_ zD61NevSU5gzknhn1U@n7p0>|@>UUZm#Ks7D++Js?M0xm9g?;pb-05UdT>0wm^n(lU z5Z|JE#tO-PLJyHfQA34aS+J1BP$R>`ib z&%RHZ2N7NwNDc#pI9V>)N-9B|Z;}%*p0$h-OcA)1+9$3{)J{rSE3534`FO8Ve-sK}UWHzq4|I9w2`e-AQ(uJy>`+dT_S9@L!G zJq5j*B;_lizNnpeBujK*57ImJckj+P}fFu;f(aA z$oY-y^;Mj&19S1ApM#)(a5KQXHs$-)EIz41G=f%`;^fabUQ}NY2BjOg(M?3SD6N+^!D#Qv@j87yZ&9K>=1(HGTpeLkU9L&r?YN5_KK+{KL0*$dXDx;fC%XS#nbag0Hek39 z>_B#h=vTkx)@cNIrYnDD^25PNX0tP22E#KzSVzsT`Yh>2g;xqIc7f6uf> zPizIo1x*AT0iG@Jvs#4e-L69mze<_Pff@yYo~8ji_(X&lMQK@ZnLM|dv7UEili`dh z_TpT3yv5ALl%K#o0ecC;MCuf77j}}Pt5_j?a-{?%B#-~w-jIA)OYE>EjUY(+dlEw zantM+F=@>pm%e}A5HYDDThO#>F1007MP{4rcLTyKbkyXat;%t}@k9L3;i&%#1)9D2 zPXN`3+SV}K;$9|yHTjfsHd3tUX)DK6H?#&L043?%6SY7bfC%GLQk{5u=jGH5LCfSa z=Wh9Q)~MzMi&MyZQ<&T9SZ2v;Ys;f=8z@(Rwfj$Toc34iNk1a$RG{W%ExMz`0?O0$ ztoYR3S~e-s|EM;@fy}rrtMKTfq4(I^b;V)bc8y~6+7dKI{|__lPExp4``+b+|B-&< zwyL|RVALgatV}%}rfBx|jJ4bscFVqr=s8LSj)cpYrap~49On~)v$yqY37vI~7Am@SmJF{JuqrjQxR-MD}=J7$Q&;Tjz^W@NEJ zaZ(L7-Jw6Ch3Mb*T0@jaAoxZ=^}fGeL5L7OV6`9_za{j!tN$d$7UVH-_#XwHj(ntt zH49D3G>EcOZ@dc49;dzCMauX5m;^utG%^<0kqLVZoh`q;t4NDv*@P1jkvD|U{a4gl>1*&eV zw$?U3POh;Ic|dWvq}6CdW^0o~&7oAM=D&P!Qq#45L-gB!8Mp}Ji|yVIU0}AH@mkf7 zj~!MYQT(Fh{VkK<$?P1aw|HD%p;3uwssF4%%dr=1Am`meImk}dJ2O=de!Ey{VV5A{tbyu&aiO0OEzmXMT^ z_>?~+fX$2uR?iWSo#zfWDhF26}D>Tg%pffxHzYpjgUT{NWAwMhxpylopPyI()rw5T6q5{OAoK_hv{SnEM!L7qm5!=3>B4h^7LN zOo~;Mb@VTFX@i{5E$kq}42)PpVAt>1`JtL_PFZ-c6g~d8Rx_-T%9?h=Yv;ri-#qN+ z!v9PWmE=RyEyGX6HeObSf84xn=H|mLwdz8cjkDym!aW2* z@gRLva(-y_2%I?gJv`Xn53kSt=qng5!|KpWGf}WK-je_pWqM-ues&fke@P!9smasn z(g-83vE3>D@S>$q-d;%I85=UZJ6rb3G)mOFf=;0x(}u*3djNkj`$vEXZfmU+RFUjb z#K&b3K+y`djQYAv@>*bRB%CDLp{*1B6U(}LpTG=OiB-!Y5ob}m^sI|ZMGp{7jdsv! zh1~q3p$|PfeIvP1R%3~?1K}$3Cf2{&Zv?T$nfw~{@GNNsG9-x{@g|>92h5eq?vn~{ zY_%t(&2!yAGybCXS6nwr` z?z0OSB~V7U&Q2Sw1i__UmFtCyG|>6_C>17n?@);#y`>~w*@juIdDBgGH}YqgMTMDh zLgoqWg?OqC(5rcMx*&Mb*0Eal*+a@|9vv!)6ueM;%3;A;^uf~7YY=^ZkS=kilsx(< zz}zjsW!(^@?Z{KFQxHOHO}SHmeMui5Em{WHQ^Zg_d^wz=G8K)0Tvx)6>Oo|oun>x{ zn%jnAo9F%p5b%BWr^fB6OeOtEe6ZYWgHRIbOME=ZY#qZ*(ZrjFapm8QIP&da0sihk zM#T1%hc})nHdyroI7yx_N|K2LJF;srZh^?edDG~#g-hfT@gzN)VbcTZt$GrBVl_+I zYc1UrZiynf^i43;aDEMvet|x*1WIRq*nx^w?FVaYXQ2*#r~Q?Y^k=GYn$bF05*G5x zX_KXXHcG=}Yb7AX|1$BlEujWiNWtJI4#A(D@mj%9zf{w^C)y!#CIp?IfAw zSwN@)-bR3+N~DM=DCipJ?Sg#TNu6#D+Kt8fk>dPQBQULxK(*6aIs9_By_3zO6!6?N z#CGPk7%t0}C8<-eV3wz)~@=v;gEs{16vq zq9sjT*Y6)jj;@fvn4IBs7z4Lw8gWk>2CX(Ay5ZvBn%!%mxPzV1OkpphV;!ZF?sC!_ zG;-}2@^5zvJ~AzWjFX)YMW}M|>>(SW0D%`P1&6_enI9lVjmLT-gHfjI$Jb8)-OwO$ zd~3t{^S1qR+^5?9)`(gZ!;`+j)ENy#PD=_T)-`}=FcOuCJy$YVNYy&6$nvc9`mw!W zZ);}&T!EqNvhZPkaz*a3>VZIHSDP0{Zpmj7CdkB<15uvX{V5=>8AO;&MaVTin@;d_ zqzOkU?Rh+&tirVKxm-`Xf|>?^vb}m@Hc^oW*!(|Nw9iEF3ni?5VAZk5AHu`&kw6UY zf_#2DtrulpDA8S-|C_R;F}y#rzCL;99ew~0L`En1p!^kIx%IQ-Tmy1><_&cSN+UVa zpyJd4R(NDpJ41!}7cf5iMr#-jERUyI!F%$NkiN~J$gc9$igkTf4yvf)Y$>EFi>a;K z)m?XefkZ|b3;N|0Shqwpz+@pDPzS6^AJ3JBM0&gcXd3AqlH(k_v5Fn%z~*%zX)+)1 zVeV-hDml7GyHX+3mdV=X#oDD3il|XE>|B_@p9>Pey^2O>f>P-tsfT^|s~iIy#pdO3 zb=_a#Ml>)A(J15H_EJfXV5F?$0ydri(pwrxIYdg)R1dqr{8y|fX0@NpsgQzK_W_3R zFH&`mN8Xw#WHt>R_uDzplAy^jy+!a4HlUV|j7xHco6`@w_TP0| zeg*kxQt&0b_9(}WVxtUHvN{?cgdg?ub4Z0?vG}fSZA;yx8lgM8g&`<3kP^#IHUoLo z!NGCRj^W;Id5Vq~mPchQA50+Pnr6rG^L=tSTRfeyKVE(Nf)0UQ>n`vs_wr+-=p=LH zgd@D1`56q~#K^HO&bL>z-maO~M;hm@{>={bbs34`bu~NH zgi|syA7Au}y{TNR!6Vi_mZE5Pw&^J4(>P9;g=Zi4QI{}VA3bl>f^X+8D*m5{n>5=h zB#dq_up-nz$vSt5$+P^`PQvvSio z_Ki=5S$76-f4K18Qt&7TS!Nz2`8gpMlFS*4OIwXCLn(ytI|iwH2@WRdd2F}&%}Ta8 zi-q2lY(_yh@WItjWYTo19Tf46Ev&yNO+!OgH6#flrcWuZma8 zEgwadJ$q;PIJ@0AdsoCZb-*qsfhJo^8U>|pV4rBTEy zGUyTA>fB_|BjoBqpD*t2Vzw4A;RzoXk!#?=%tVZxsCpX#0n%isug|(;y`I3my_&4Q zuA@~1>E2G@{U){k{fDIqgynB|h-1tV6`epW#*-t}bbLbJBs0}D=%inV(3M%`X;%Dh z`j%|h+Q5(5g47d7QjO~3a%<_-?m!qIo(@-e#AF8!+eFW7)YlpEFUP04>dO3Ik*0HA z5vB}=*hU|8`_B?w#@Xg~sY0edy|b5AvGrMlhlSByO5lA?yOb+v&W2J|CW>K?ouxLZ z7ea89B9PmStR0vJ81z<&P3&jJAi}t>^G5MFb3ivVEx6EyEX8B&rmh=R;45*d-q!m?27(;A(o4mnS%im@v*;TB|dL`0+@cS+Acb69RJ(k0wsc73{*kgEu%e{-hH2E z`rx{c0&W=FxAs7KsKAe~y4{wzgh6iIJa3&9xakic6+OXUF1Md?`GBl_s`PNvp=Xx$ zq@WGbHBds`c8_p^1w%mmXBv!YVxTqBh=fjAnQZ_Wf78*mlm96VNg?k&7F7e@ zj)r65&QN7| zC#qd+7l_onN6xHz;um#O<2f#a7A zkk0rjm^<<`*rC>Jfy&s$a8gZi3+5n;F>t>&9A#v#;3^Myd9f1jEsnba^<;b{9L1dT zzu;ni%cf+3yo1d#ZA8>U{SLmyAoV_FTBvS(iqMF<-KyN%-osxmNzghk%1nh&%&#|s z-hJw1iYg-JD4$vIli$gptCF@D6IT8vP}3t&l^+JQ^%O$)**ytg9RPhBT~N};x+E1Cs-4?X6^G!Dr!<&Kz4763GA zOm6o;+-DRI3N$ZiOZdC5*7$Lmof+Hd^$&X|YzV%K4j+6vQV-2awcbwvU>iD$$l_CO zITeC>fUa%{Svvw3cs#O555)NL%~O!kCh{jTx53vNSMo3}|~# z5ChQOz=&fs#c(?BiJdjq>79E8elsE{xf6E*j;QZucfuBBnTgi9xg)E`!_GooD6~hT zju5`bK^Gqs>uI3T#+j8;9p4#_4MMalq_{iyR|HG7A$tDF2e{qs)hK;Ca2tjonsD(0 zDnX2^<}EzvW&Ff_vst@RR@`%tV1Y2MQ5fEVGthoB^8kh)zSE(5)J$F-0*Ix4p|rP` zt(j@LT(P3b1`xUXJ$PcAaoUZim|M-N080TlK=w;kwj9GUN&_Cs@s;$;`sgWA=>o6N zCPjjcL#Hd&$7&Zfd+!mzhAaIdr5s}`>mSYP3K%Fj_;x9zrRey8&*->K((l#{K` zGjQj?%N;QuS44I)bY@J4r@?)IFRlS7x&Uk}ObUCgAb?K2)a5%7f)3mN~xd zGlI<-NsbkebTmFprX>r`^Mg^w8Fd;x^#O;_r)|RvDp6tqMsg8kD)Q@ePcu~elDBm8 zeQA<|(S(0=AHi45&+;HJ&yY6-!wu$k?=E3yH!;iOCH$MRZ0hFDC|l*oHfyA<8k@nK;=AjbrNO;k}b^!V^dn3bH2p9^i{CA#Wt zQzZ5JYa(p@TmkPaAYBV0{OEBAajMOBoEXhqS8j!GyKtu{Lp-MDv{rx1FLR5zet~`1 z`GZ??rFQUfC2H?#Xh{{>2}}<)IPrq=MrE(GchEk{RC;dS+Zj3@6OyG4_;WP~VB{o^ z;1Pmp1RSw98-Fh*n9>`z5qd4$gYQTEE4<#xRW`>DF7BgNRi_3N0GhcPY7j{i^zxYu z;tts_osQD^%@lpMi(U=QZHm=&l zU*$-h>W13=6H<~0%Y7eH)Cok`kv91A=I0-k}3BtOTND|El$2`(NwQVf$6;SK{ls3oFoy-2mf* zGuvPMIV+w}l7ND+ELkxVw!$|X+_0@4cDXWkzo=gIL3yz&7SPZ9EzQm2`%g|RO*yLN zaoR!(6g}p^%UD+2UR}t4cWvH2&lv&HhJdXocdwL5X;DG3&QFw5rS%2b@y>0kh#T1j z*9IBd9QUgC5#QLY0@79hGo{o+f}O9%kk258y{wdOy|o}H1S0-CABk|DgS}0A1_|%6 z;c707qMHIQ{cjNE*wgMBw6!Z!J(3{03!}MpM4txljb{}%<>b7Kpab$5$?5QdasRQ3|0Ux-41`v17YUaxrSn~e*qLR&#QJG~9RPL_g$4j2v9Um$|(AflHoWvD0 zi`DhC0FOjxJ#D?VWteJEP9-EIn($ZVirT8F;}*&p0w5!KZx~Fd`v_PM%v?JgRsy35 zs-zgdJ``wjXpjh z>=JiZT*V3f1v zmMwSWa_8s?ah|voOGI{R`Nc#gLP=Y{zFQtmXr~l-Fn8K zjf#7p!%q+kK-H=Chz9(GugioKSaI;BJc@-=P1s&&@18vnboPZ>f{oq3pg(Z!+hTo| zO-KGsScr}Kyfn3cSkZ;-V}tDkQ)y5%9t^f>K!%F4VMkCn6p&c)T3a;!M@9t-WpSlk zMCGB~otu1b)IJBN2HZ0ahvEMhUI~c5Y8=<+&|5#ZHZY3jfEUrM1rK=m!}@SiFD^SX zc3FMgPr6F&nA^`q8N3K2b>&lO;O!~{bT~P=#I#-s(phUwl|oCFGPA*KWf|G{`aBSA zbFK3h0!Q-cOPVTzNk$sgNJo&;P-_CS50&-;cfy+Ace$@Dq8? zktQPrWbg>x-KKdvUBhblyjBp5LWSwvKt{)v7Bgt4y*dadbUOBgb3nJTNTaQyH~UnE zE$%%)bS!#oE_@`NoBeqcZ+O!(5{(C7ZayZKn}l6vcxh>la=++F-*D&BUz1I~)?VCJ zp*4OWm-9s#)`yKNOk&Z#M)+Fve<)Er*IC3*k9%EIy9m^jIZ4w7oBng~Z^;%vJ2r=V zSIkqs&u;@t5sIPMj|1ViE1K@=e(onc2z@JWd3iQUGsEzwV*W1uCvgW&=t7-4tt4!h z8KwhN;WQ3}T@5XN)P(HSclo-rI^7nVfWCZ!)i2LQl-Qe?~po0 zwh?XVlpbUsMcwz9_~KT+@|2FaqhYPsB30g^PIce|W}$Xw1aYS<9nA@f91P(Jen9lU z(UiZ0Z%|?v++v$>y~CaEXJ;xRD55gT`6eU-+M{fQG$fn)F#CSL#WrvtZnXMy2FPq(XaArCik0R5zZ{lea)!;XP z2Pbo2^tcXJ-uvHRkuVnCEck)ZbuQ5`9v&|xKYb#APiNtdV_;rM_)U^Rxe}3k{eiV$wyCQp%!OtB83B#Q!V_; z2!1veI@!isi?@c-4-@VgkTVO&DJW$wQ8&?2D1*GglzUZeMYV#Sx}`??0IUbqnprrm zNz?vMs!mVLDL%E7os~I9s~Z+ZWlWi8Fb>>n7eQ|9C9)#UMHkvYXs09OPmabp&dv_}0K|#+6XPxCL0B`)! z)DHog%OOaoS{!S0^G9v2J%{DBsI|R?4US;!)?EOF)sZNOjgwD;1${e$%Glsxckes$ zV(Go$ND62vpBkOZsJIP5*f#ai2D~d`#au80r39Zu;V?WogM3dL)T0{DD3poa$RTc6sVMxD1=7olo_;fyaYFvxpTXNJa5S%e>` z$Ht9&oOjuH#kQgbqgh#|pM=bHbY)ralYUfq#9kQRkyCa^~GzfQD=q=s6BW$uHPPu zsbw+Zb=aIg1u=AGlv}tLi>9zguwj*`%gq^}5>7CA&&cF-X?F7G-M^!j$Id_1vVnR8 z*V)+X2+jaQDDDs!k@AeGVc~ zM{E>{jxduN)@RJjykTgnSjVe-pJlLDX!{dEYG;F@HUf4e1@XQiNUkKOKrdDDLqSz+ z&-E)dc2Vp5f0cYvdTHMKn{YqdG8S9IP_c=#cMeCkn|EUSzS06v`WE&}Wq4LCrlWv` zj9|xQZ;5=#iq?o43t_kR#*nvj2Obw+O%c_47o4OuYrc0mU(9IC+1yN=06AKO+)7a9 zF>o#g8rBKViSGn(?(??PM8q2*ThpON>e`Iik4F-Q;Wz0y;htNO%q~O4sEXI9WqW>5 zByW0k99?C_KY}e2eq%moDmyyQh)U>_c5Ic6DdPq^rKp^e+w00)hf{A2 zkg%D}=em5l8m$bXJ_D26eL+ZBh&g#gN|+e?zM-6xA5%@OL5W;ZsLf?%$w+H27g(qG z5fw>Eu{-iGGiv}G|FH}?ya85B7CQf!?yM&o^1c4tdyBQ239Iow^9euP{z9Du)u8oj zC4i`U*=$dpHn4pGs8|gh`{4a=K z=#8$U(8bIe}zlh8puIA@yBjQj>|v%@D-d^Z3<# zRyrS60UFGL8oVT{T%ik6<0&SyH758+poY?jKxyHeW8k4E(ugi`Tqx`C^|w9kcU}9V z`G4|N@Dpo!mTGPW%EfrY3Je+Mwh<(tqmR4SpQ?m2Fb&!br&77dw~g=|XNjeq1s+})_Nf9VU-=ar)EZ@@R{0$bFXa(eJld?tNu5&Vyr2pdx!-z z>KPlsT&R~*nvJgdW4Eh1KrYJNzZq{P{n>ip*KidbL|95)Q3+!FDcpU)>#^LV%Bdc? zoM1IAgG;2vr~jlt#WV+OCDH1QaxAxNk5%T#sT@s{v&-%*zzo*AfbSFlDjWBQynyvB z#j~!qH`NpPtOHP)IUN1?6Ebqd)q^#!RkH#w_0z9xJY#_s)tCP_o;K&367hrDDS;}n z7?w>1)i_q_Yd(E~Cn&YLk0%)y=!G@cPQR~!l%W4r8%+`VSAl~lcs@$)PJC5yrQR_% zs7OixIChk$x^!L1_KB&Xzt*C7luH)R`e`hsA+C#@6Gxdx&?)^cwxLlTxi>Ye&xqhU!jJg97YHuh)jd^rQEQd2`p^nx~uOu6N z+t!H=s#G@q%Y(Iw<_%KE+pt5)>`HM2--4&9f0NS-%NGc1NK&vhaR<#TnjN1#xNsPB#-p=CJMA1i?}S3SH@TV=-4 z(izT97{c;`Dd?94WSl#qcv0w7S?mDfcXFrOVCMPSJNoklx5-6xyTh1Oce*T7cOZ<55`l&JG#w zT*Dlu2Gqp%gijG&a>Q`^e+I1QAYV_HP8PRn$C48yDOL&vimas)sD^*AA;0VN;-Y-E zmS{eqQoi-Z`Shh9)Rg44rNIn~6#3z22z;v2ra7H1?i!YGn$g)`g0|inoR*WB5B5v~HyAX`V1zu%zv$9B(!^goH1_TK2{ z!+diROa068vj5xgK^8?WQ_s*KGnRLY7 zPwl^MD1Kp2TVCTiOUF?-xfLY(=$^+1Qp#^s>L4gv35fQCFxN*Zw6F4BC^~|`j9Cbd ze^B$0o*BUD_;}0lTl)kxR{?!UcP7l3-@#Pt&x~J8@1tgjJF~Hja$u)O`1>Ia0<<_nggC#cgQi&=#a?ew-8TqxWvAx@$7wgQk4ycB0b=?JHzf9xs~3n8-p8M zTG)E0Jbzwu9OrQiN$rb4WnEby}d;sw-Q2G0IvT_LhtOi=M~;C1gni8XhrYSs`NrZv?J8tU*t#> z8D*jQ-4+=1R$s1uw7ffX>dItYZ8msSZrp(^aepj)cREkZJ{7&6rGf9n<`$jR9$aIJ z$2j&9WKdu^Tu5Ms0nOCrHy66AQC2n7+Xx1<@lH(b`Sa^FuzVC@dsZ0jSaT=^Mukah zvVQ9!PL#AePI3W-qmL_)vF$5Z-?L}Qewui;Ekd`pINz_^(kP(`r$XJaAsE(~LK5Gl z$bKu)ho^%1x}XR#i<08F%U+3-UQ3s<(1iE`nM^Pi@1daY-8eiKGhpfl z>JyCOG)|AmUQ&iMQ|gfO=f*lO-69j56?PvkBkipr9YUY~7pFATd&3>(#=e++ zhhH&|LntbcZ#zp6nkp*Onn@8AKLMGGY(j776eH-UK#M7vxl&!D(+&enWUJ*{-Pr#EncaM#p5RKZ<;KCbas#e1~n zW$nX@)b_WR^5)yQ9Xbb6>QJ`9S)g2>y(45w3UK7M?r{kPWF|)i;*(h0+k@W7`ko+< zt2P}5VSID_miP&|&!Xn zZzWHCt1-KlO5S@`o-8Mt=1tlNduT1u1K`a2rsP|ZI`PnE4xsQ3$@sSuO{4z~-ti-H zY|4YV0Z|wdRJ3-y#?t0(zJ*2ut-mXW)(ltF4?E%~ zJymGzQeat#R1U2DZ+E8T)O&pNsA#jjO-)3bKxUlsQ3gNaxjRj3=boZTRD{|kXGE-8 zEH@Uu4Eqcxk@g!9z9`ce?1k}V_e)ijS@H)2NPUedxc+SX{Hz2!BpbVJKUY#g;>bio`1Yg8&*F} zX=o~EXoE{%k9)AzpJ-Qr#+VQdd*Sy)*?S*KI2B}#3p}tZ$;2e&QHJUTKzGx*DKL_Z z>z66cdw)QPybGtP^U+l`WNIAaNgXz6DGH0L$7h)PiEDKT+H^89_)poj&@Y|*7898V z3=`_r4apY1@jowW7`csH@7AWnC{f_SG85#z4m3M!xV?7t*fVWvh(RFIw?=>3pxiW4~|PlI&)P1ouF zNhHO?aHsJRw6l(}YH4gk`y2%=AjzNU_6Qnp|D`($5x;gVdFJ{` zFCfs5Nvr24L=Wj2K2snOK}3`UVdS$|(zFOYTGNX49tEYt4SP1cs!UP;`}95*poH=F zf_vs#?Y^r#F!E}Cvrddlgeu=|Vaurf5RC#f>DlLW5$-^W-R_adFZ2ikLHC5TQ%k3Y ztqdn=uZ)bBzJ;O44aV0;c@`ZiBV}H}dazvz)rF%-UD6yMBi^Xu!dUUP(CC%aU-mk_ zE?B5po?D8@p0|{~Sks#tM2I(#RE{I|(EXcsEk3CK!jX@ad=`jRu=Y0iu%UUUCs7dHostCkZKI zY9KGV%A}8>8c4uB4!6~BwQ`y|0=XJsGfm9yw?^S3jcbJhg=4=#Bo}$tma!?ENE$fk z%v<;`;HPFbznAfK4DL?3QV3Mab8)8W2e>0#WBH^U{d_mjy86{Ixg4;hn*o~wplM^f zSQ^-4_=2_R7aH~x-9I$IamSSXQxv2L+=OC_RRixcdI(vbckjM;^Qz%q?k~L>)#_Ga*^$5-eNI(FN7@z{at6^=? zom+g9A!v0(a^%4Uq9=?GXgRwckmoj34ML)qL&W~lbN+pL9GY?&0mWDb#E|8LxF=U6 zU=Z#S+hjI>&j^|P5DUkX%d%ARec!l6IdUVdo5g_Wy;qK0BX`v`|4_ue&;(mdHkcHT3zC_@Y1u1nxMQk;{0xb# zLNIOCfEnm!cDqU3vv3(n7b{KwBaVqT7pUg#GxkG>vda4FsxZZz+qPR|oOoq)RL7~G z2P!8eoDUIxxJmha?BF)VxHqXM!*mTA6~}cs71RBn(4Qyfo&hN?ZFz%2@YeN(e2Vz% z45a3wmw{*X3l3`eNL(E|ftG^MlIP^&G2zuZN=gU;>_aAE-ggeMJI|zibC*@BQRa+gFd@Rd1ymLi-K4R;BlKI-&pATJG}j%4M_O)}2w!Y0GR zrb^QkdlgL^s*uji2ha;po?wnzowI?tJ$j{rP6w-Pnjwyyja!ZoWvr?EVMJ4R35l#d z#oA3b`l0IMGg&@iyqFI&LvXB8G+44OX$8)C@bZDWf}=S-_eAHaKm|0lDukl%DMU*i zAf)M{SpQC{7ujO$!uFOcT=G0lfyy~h-pe|fSGj94S)b`?Sv zjz+OUiF>|x{9!oU`cy z2vLra+*WU$-ybCq^YPjo@R0TKf#E!O(YFkMtMl zkc*-(r|>3Hk`sR{xzvN?UJ_?EjOouh4-W2Uy%tDwECmXkg+!*~{4Xn~jg?561BRWepu+fgpC}`lBvP|HGq#YaZz$ViNXB@;SQIS6f^aV%E zpG_Id$|Zd-B%^&vbJU>*6z7$i_q4lx6T$r$D%Z}4DqhIry9FA4RjX6kal|9I;ks4A zy{Uy$DR~m|`hHh&Cq!k*Bqkpnz^Mmzvu=t&PyImRLod*k2Ftydo>PSL2k+ksoKi>0 zcFVx^4$Og5szflX8musO3Qx|nSSnDXIU&JifrTWzsb{iQGj1ig8ONj0RTtM6b)t&i z?DNHq;pu5}<2(Z&#B}8`wgu_;oq;E0O$?+!;t!$|LvZ4@&GA#ZlbU z)$BP~e&%*O;X7cjD{%cr3K)``Q*gad0W8e=SNPl9FrYz7A7=PhAZYlH6F6JDX!QR}jOcVK<#bUflP_D$F#M7))pI&M!d97ckL z2}KFNDpa~$01dF-^}QPE-|d*_nh!07gYv)_4y=zw`f`Mr59l?Q_JboHb+Pi?PjLOz(gQ-xYtu@j}1k&&qQ=<{O*+uv_+wV(mPUKo};VJ`e;Seq*d!oRCC2@8SM- zCZ;V)p7uxjpXAW_u}(Rc&`oy+g~3`(XIlmrEh9nF+vB-}= zvoOICf`^o}J2U=*k5$>9XZ}^^bY4`?zrqC_@pEMEnJybMLF4`}B~yw*K@01`$W$X} znPz~e$HBaEfkh@kKVRxLumQ2$j4US}r}bi~+<%sbkTxt~T3G}Lm}vXG26{o|uCKeZ z*x>@mq@xkF=SJp<`+5Y#9A+_CrdoR` z5k;zn#mmX|OUU#Ru}IDRZUhk}gi=8+zg9qs%v_fo^ZmXsVk(4Gi+{2}Gm8lSxs*sS zg83T8Aw8aek;+nyk4acl^uMG+k+}?T8OF!o4k>99!S>jj+aZ8s7g1GPB0)immP{X$ zv&Df;&8#hBT6Sh-a0SI%;doa3&-6KT3rY)i3T_110XX562m$qp%CQ8UgFbS_fP{o+ z4+*YTfQ>;AH%Q8D%18O7izsGvrHyX?3y+C3Yxl9|Mt1}9TIyKajwO^XQZ8x4uqwh>WBYM#ZOIh#Y?0I7en!Qe z?BYqpd|zY!{z>akdHzB8-GD|uzHSOa5yS0S1MAFUYimn1A0M9HdJ~jq)DjG;bT^dR zh?9`uQW@F6+4YjgaW&H+{w0d1MRwCzL9SIAZ*@Nqr~)bc0f=9R74wpH8UENWQhL1D z8?^s$s}uet16dD^$az6+4`-*+y7EH$t1wN@LI<;SVfK{W*LgaQp@W1;N}XU(WMtDH z2QpNdg>8SggGoa$R-3Lf+uA$)o}kz?-37=XPfr^^XZAN%EiH7hePes0MvQ{rYN}IE9gQ3nYUjker z3RAOPY1OdrrN}JLUCjK*Z4b71NBO(lGR2R^cB!yJ;jj0E@3d1;Oh~_rGjVT3c~&ux z&MRsi^SP5I%H5P4S)8JaA^&{>M*-ndE@m%iGxh*=nl3e=CuHXgoGeW#H_k<~o5Orhg6o|vB$M7U5&6q~N7QPY$oEv*N*XP|5s6}un31o?Y-+q!fQjSQc53@SPz-~tJ zN7RHa3zyro#3>uvCw60evn7H_)Abuu)t+}3(lR|}OUKCLFkirjqtNA?5TvK{RV`P6 zik+t+b4c3AffeD{!8u!2FbNr{!AEnQ0nk9XdRv+ov19*wyW& zu&ZuO`>h_(wJN_CcxM8Vi;rXDzi~%xN&R!(VbX2&i~Tjz%-OV{#?PnXi!CEWv_1Pe zZo;v~do2x*2Tg3ZRp5bPBe;6GAG8AeGLLu>K;0zb!hL*7Y~%F~_Aqa3=h7*rrn9!;3RhlnfnV@~ zmOp^eZdheGz>$Q6TPFnwvw38Y-VQCMVz}x$#EXptnM`SE?yT^QSixHARS? z^ipt0s3)Me3lS*!4hs!vMSEQ!w<1W=%C1RxzGiIV!%?~h4#i?4lCfC z*2sjC5d>wF)cY6UR^md0X?Pox(B_QjLn;bD9t+wHT(y3Q9%i(69wQ#AaIUe1kYkfh zQF(uWIj_S`)99xpA|q&Km!J5F%HQfn_~yk}$~PlDxL7Yt?EgeieLR#@(X^rMai_4w z<94WfY2xU(7B5`y-5{4GGh_`j6oY(`Z#Y=OJ#%ENxemm9E^$0gtKy(c-G3hQaA~@1 zdY5S|00E&h>%@?UnPg0Ky(74n=FR>qMjMzw=Q@|(H`)&*_fNW|5xs#r89b=x!Tm-c zz;`1xWx~K{+H#~S+c+?69)+6guS*iYeGGvtSs`!dlhpWR3uA=d&gx*eS{%84og2W| z5qq2Mws*OZS+WALkg8XlH7fp?IRCFW=W6*vRf2^?5UyUuYJm;4PQRUL=$C?gJH-?S zcr8-vHdJ^j=2;s0I69*rT-`Gm%Hr0&PDx{C5f`7?n(Q3``4`rpIIf|Ppw`J)w(viH zHDUr7LgLZMk-l)9j;4P)IA;p#0)7A^=tE2ZX{bBUbuPomi{!sfX7 zyu@>mG-!Rh6}~jcwOw4jkR{%xcyWHTt%3bND~*p-_&;Eg3FJkW=7h>!a)1GLdO+lW zx;l?t8}3)SDt?~*ul--$)B~ESXe&AXF1xT)v0>h+Jymm8BB51~T5q509?|!N4PVS< zm~~&Njj44n5`) z5tc5A?3d3cnXWtaBl`z~x5=mT5^chw5ig2;NUgob6?)>Am34o2%V?wmPBE`X9nhf- zR|LhK3AsqEKLd`L^|J&X;P$k!zo2inESq-1TI;arV=SF5`#P>t{G1S1l$rP})E2fx zlf8Z5nX>0V8!+1q((nBr4ygx@5nT(fvqa0(^y!TQ*1WOqpnLV{+r!Wt; zlfnXy_DNMN=n?4D0_fp>NIo!|wF2hcAL+T<8Plq7429;oS+oS$>WS&zP#=0{a3)zM z!&|Es#W>F}8yMN8-U0f+5TTv@Ep{*u2dj2n>aktXr(B}pXd9LoXDnsImthmq=J7sq zjw29ztz->g&&qx|$AI1+PLW9@bQP&4`kGXeelN7DC*x-#9(x%xZ2 z@`0={8nyNm@4$fFuApUpM+g!h{+jUBgboJBC{%hy>Q1%Fw@yxj#t~sfTXEhR#ZYQq zHU+vNlh(e1MZa1l60UJGMkxZGL$Hf;#Coy!(m+AlK`7v9U|?JqwJjIO_xeCy)S=eX z{6^5Y(z9N?#V-S~Sxt2N#StQME~4zuW8>EXXKFi6MlDw!153HP;$S+5q1hP-6G55gL$X>c)=3N|dCk#m<`2 zx4v!$aL17pej&F%CV~As8)ejmSf(4Ug2N5f)bh6iFNSVg<6ADE6{!pH$t4MC3GkRX z-~Th+oKFdXFFctfP9bgf=d%x$Mg+8QPd~n>hS-vd>G>SYj=@>=9Ctq!T)SBS0|oJ? zbApCs7LpT>U7h1g+M7$RCt#0_2deEV&3>n3FT?7tNm|!>MJ58bz@0pht}vDV7~Av- zib@2K?~^o3@#3`9RRK+NT%ia8E4ur}WEVK{#eReQPZsrYY>E;l{b{Fj3g0 z9r0xg&FzZ2$N2*{EyRi7n8h zXA{`OuKcFzIb^44;>iAyW52NV${>=PoUB#DKfBR(08wPZ4cyvt7kP%wn;y8`T}d|( zSnZrBBJ))P?DF7TBInKh5T0GYgG_aW@@|2}s|8tg{ADbi2!5Xqhi>RR(NIBi$60P0 zx7iyDj(q33r)e+eW9oJ6ve1N*s;n-eu zA4kl7+h<@Mq*5o8be0i7Ia87(j~EODNy=9wnbLs7fQh5C91Vg(eZ{(hYV|wVBVtkK z4U=MSpiug|Adj^~3Rm9uiux0Mn9(^Jza4;-G)tMeDjFM%hn?vIzkfiMwQ?bhqN8NZu1 zfWIum;V@1XGJG@+SRQnl_G}VavfwgAG0r>+rvF0b(9qc>pzz`i*z|gok0(tdtkGNt zt$f;;?ciQ82`qM9{Dy#;PEqaWedUM5uCR&=AVGGj1(Vyw)CC60cMQ{ZBV{`m}$`-SS=iJEV)%_V-TrGBq@e z6EzHNwOD;@?56f#|5FP_!9rAgQ0#(8CD}1T?or*0^4ZQ?LJyp@W!tiiv4DdViDG9` zw0Yl|Y}!8#DtNa3Wl`D&o!f7^LslwLLBQU_j^pPbQkB_oOPKTN<_$V`?<7+kRQ7FY7zy9fji}J*i-&gK49+& zi%JPF{asjv;C7x*VBlvqX*zj1Gcg%G0{z^8trSK2{GXeoR4nNb{T*~L;sjan_$T*e zezglqqtm2oKtkROYK^Q{voQngMnv6oGbuF1`N>`JE#UgNmtT$!vB5ij^G5 z;lh1i0H4a{${Q8ZE&<=?5*E82+2x1-p?Td$3X2NLtsJ0?78BDp2dp}r6%Hfs(Ce(b z$-~xtyzfRpQ)(*+TP|#CCRp{w4{Ps%9boob4ui6#@WyJ7^TW}}+ak393dSvGYyw#8 zkfI&c$g`nAnjpEZ3Qa+t=TmUi5CI4f9kppLvcS{;BdeL@E5!Ph=_}yEKzT~n$xoB47HF5#G*31 z0^1FHlbge`+XBmmIA>$jEcXn#Twl;`cN6Z2HkfW%Og}TBGO}=MIj3>twN7p zm*P&ZV}!n|)l8kTD^uIMe&1ISixk?x8LZV@KbU)PW)$u_ldc@tf?;uN(vdhi$1CvQ zcnf7lXochAkcN4o1|?3d|9+(XMv{mmRF*WwDbH%zLS}^t-ok?vtVu}DD$^$Gq_C^j zB(Lpy`CWpl*H~x;}1)JVgJ3$!~kwa7g~PwBhC(9ulzR;}DWd2%H|RTKn4lEFxoPKKsSf^0yw zbjAdNy}NK9RmMS7VtAHK-P+lnMz8b`JZIuA<6sAzr8V}9k;L;uYHGX8c`GFx^Od_L zkOx6~x0xR3=rgN}@}m4E$7jkDzKDO@iEuW{P84|&!~rlZX<>BEZApCl0V{JXUaGkf zhDY~CAdnD zYwJYeuXok?PG^iUcV~mv#sT~i21AII0}+8KRhqm_ieXl3xD(`SL2?GWCp)6(vcRv} zzb*=toEmf2oaj)jej(bto8mmWr)V+12=f5K&V+#xlBmqH9$&!1qzTm)cm74C`~3TJ z2B!FxJeskQuc7U8CF^3?9-435<`J58LxN_-4EQ9oof88=ci z(6G1d1T!^&(5%-b+KV$;Ef1{ltqf#=dK}4c|46DyvKkUMPjExm1Ln@4$csRnZyAf&Qh)rh3iDPA#=h4Gxt$#EVYWCspYUz3&$KHD27X+cklD;y_vt zSG;AO^!Q$d$xW9&C5q0u>&4eQZ|v1Q;uQ{yU9_TbRNL;#)+j-_D^r4RLEW%A_^ZdjqJ_k-M4 zj}do=NmKEd_0C$4dYV_KAcu!by;P?Iy|kLvnjfVX=s_bac2lxjY(UK6k{i7si!3=< z=K1aR!;*mo@z_wXg5fx?`F(#T`iaOBfNuc$C|c|ISxWpL(YaYk@;({}42$RF>DK`* z-;>?P56y6Gsho~b?Ht$-GqOFdGegEh0 zE1a;C++Xm}=TLL^Bs$kW0lV@k^5PnFtT-QncG)jRT(VVv$n}+ zOS_S*DZAZ!waoYZT)evz(t~(t(-TPHG|?|e48|e8i2uG!G(pPz99@dtPzqF>dO^M` zjP<#Kq0Ab5hz?#^h=VlQ%MbTvtm*HvubA0`;ReTFvX(SX3_EW4$_6FLXI^d>yufl3 z`@j*rNg(&u5F3wr7JL8^v9I2N-s-FlaQx9Cc?)OMSv@W9RbyR+xa%uBsdWb?VF& z$IH3aL<2M`9_I0DWpuQ}W@wilT9u7$$#-ldc3~qY{b$8aeUFyyI^ZXYe5AbKB3!yV z5Qec2sSBHhGh&G05_>L{7y7p704t9cVZJb<-3Ra+$4b=~AAs@5Vf*bL?J#l9_MBj@ zlI0G8fLB%|E-I<+&$0mmk`_y9mX!JNDbOo z=ZszJ<2yo;3Bv!l##jJoCM;?~JsKA+tH+JLxbxe7Iq;C1prS zLu`-nW1jm&?l(gW87E@|CKBKE76xF~7jQ!5DKp8GsBLo(I7*wnYCTLbwYTrUbc#Cm z_~1wPlw~=27b(~46{`cb>58uP+5voMYSEd2Ele1Xw)N|>dm0Pq$~CX4K2Bi_1`Xxa zCq*VnfjjG~Si)u64wG6jo@W)GjCx4Ove+zo1dufqsf?10TQPs%M&5-XLBXKWAZPEI z0=?OCiq%rjL$u(F0&3n%a;SGvScTAb0e5+2!OXsYj|5Lel9GTp^bP`)z$KG;=pi7` ztqCS!Qx2GGooGIDpPvH4_#msIH=T|rfEK)ms5!ATmZ1(ZuJ%2l(aqVo=Z5wxGqQW5 zo&gfYMOydc_thAfAbjphLm_vCAtn0;0CJt62_VL>zzaE6z$4&r)~mzn2z>N1_MMtx zO&~BpyY&f~MD-i&)nLVSlAr+9;@(#Z6zU}1CVf1-lxa)Rl+I_G`H>vIP1%#weS^}Y znDvW-M1+dfR|hAI+A_D=$^xX$!lam=H8toisTE!a%IlS17%uoXLr=H0g(R9C zsy~;cvn7;Sd#!{FVwFEo4HZcsypGvo@W@f;VPdmVK>0obbbq^}aZ2Dqdi7t*k|OnC zjuGZ3|A8nc4^EDp3US_lHv;w9M#_7hqR(>B@5bQ86(RBy+9j%*_!L46VrY2qf~l7v zUWNEu(yDm^!1zTiiwX_-^?yN06-kLK%dZS8sJl7{p+r-yHGu66S(A}K!xQgbIL2Xk z^a2UxF>VP_E*st9uoT{yPjIt@~JY_?H5E*&Fe|?T6v$o z(|Iyl`PJnkk(Nl&$1BffVGK;AR9Jkl*c4)MVWS zdTmV0WYrLcTC{BY=~#f5a}F&Lc1RqnNja0@(MPc(XP^;u^_f_^=ENI*73flax{}I% z%17KeyCr;@wFVIRvle)L=hND(nHpUwsRR8AZ9o_B8I>{j~&hgL-{gk5wK9`_UkSzu6f z8@~{5G;-iX54@z&g+PMvzpcU;IJ*3T2VHxoLJvpy8U+9F0=1NNg60A4}WnY=mHQwE7y8Ym09N3?Tp>37)pq*IHbnb z6r@*QDn5qGaAr>EW-U$=p^F#EDUQ<6iJzN>Usqc>rv>A*Cr%j5egAN+|dDhqT7TKEFUgSR6Rx;WNJbk0JpkUI_R|tdl_zxunq3y)%TJwqz7gaia zqw!S@aWTdQL}ww`qMYixP_|dfB@x8W)NwZ%j;mz}YI34#3zu{=8sZDz%#&xHmq9KmfyLUPI}>4wi@sw!M**DqQn(52Zb+?j*Y|;s4d_aJ~1__ zhQyQ_`&IEpQCi-p0g7akx?&gw;>duPq|$^(6Rgfb?r}9lQ3JY-JDk7hoKTNlfR!5i zIa%)>y{QC^mFj*ZF^<$zIt1Y&0>PwW4P(#P+I%e{RSjRa2uWx{w~j8iF^~-txzC8f z|L)}zeE*xN_QiVpx)Y&W*{Wu@gl)VLuwICd9OIwQh)Zpa&Hi-$JLgj6mfJt8tRBzO z%`Ye({M5*62`%5ZQO>AkFSQCV+e~P zI!sj}oM?(_j2G^%F&%JR*6WjA>2m=TqFsmN3V5;KJ^xvAI@PKGE0Ll2{qJ*7vBtl; zCeR&?&xbny57M05!3GYABU4}zJ8`6=PSpq1C~pru(7R)*b=dFygXFK~q}LjN0^Mgh zYNS&<`F_WZ>qFvu9Cno^^p-XMngS+arw;Bt_&W1g6(WLxHFRWU-b2V+{EwJ4vF(fm zYb+GYf8F7OKEf7?r@Y_qTl!sHaeq4(4dt58kUu({p7YYjpD8vQ3jzXxjz48 zWWp8i_%^YKzPvaMEnas)r_Q{uU)>dXZ|4 zgd?w0=I@q*wai!QuKjM@s6uW;unvo5W~p_Qz3V)5-nJD{{3+Xd?BnCnU2Z+`7_XO* zidmg(0=PQRCr$@ejlGtLd8}g0br|iuWrE|;&w#v!8vlr$dySUiQX(Z{E%<7Sr@9+} zs29g38TYfjN(W|rd91n!jJ-*gEp7_$=B3zw5T@dCiT;cYw*17~zz-*VQrGtxsY^V^ zs9Yb#fi)tDlIXZhfkUT$ICp;}nA_VbOyR|eIKUwIPx@J6`w(UnL}JGXW(J6(cATr{ zM%>#}pj|`1shSMA0j-G)oiT0NjZUJ1dGlZaGId;%M_U@V5Otoep?pJyX-X5^g;Z|V zbiQBD6Lp(w0gPBJ!f0cq)rc%5NZy}3m0M0qfyFy1%2#8|TrFd_oNf0?s@Q4*hhDNn z8sz?){fGVFL|UB<>^aMzc%+YFoX!)Q#+6jQ{V)x$wP&gg?bkt>^*)=9Oj;u3F@hyj zZ?)op$_#HcU=mj}g^1+O8UsGMpI;qFz`ji8><)n{yfpMq{nx8HqU#ttLT`{4jdtN2 z(KultiNfgiJyn0>q0a)E#M(gPP>krn=k`bH=@p)p8E?86H zv_6W^;>nZCX+43l!1iTwPbir4e`Dk5dIajz@OK324kf<=2}Wr<9O-FwQ5FcTJDz$7 zlXJ+J8*!=8Xgpbv#ePO1UrUBqx|rHz%@kce<6ZOyb4RarF}F9t%FAwic13?+vqP*8 z@Y3x@HBS{%E%~0V%n*JdMZH8UD0lTacL*MiZ%(u7JQpnA8>e7254R7HcL!+|xNzj! zJHxf7UH$>GCt7-TN~25Yz!W(D?i4?_mT|RN6+@m39pFhA(yZ=}Q0CA;7v8*!X85=f z8k@;ZKXaJzjpdV&ZWuJP5%|6}L~RbkG+nDhPfGDnN%!&5!ZCm-Q2ZYMUKcXYL!u@@ zZp1DZ(${HJiqXc5MdEPdbw{*o0jGD1@+)o(!$A|-x$VV*3eAFhBJcr5)E4vf6UVBO z{y0BlnVU^7oolwjMZA#eZG~(Cg=(f|;2HyxM6%AcB#pi&_7=IW1ke&J^NKm{7pmfC z!Hzp+Ma{2kq~_TOC8CvbV&KLO6f@oBUAE(NB~_MAt14@JcT=%pk-fv3nUh2zFopbx ziGF{tN)xHqCcBwjk*PTp8f?uH;ZAM>0hT|j* znlXC-qII+;x&$B~$l`=O!G}1eWmxDj%)vmv8~K>u-}I$YmFEr1%YPu;4Ps!zo5(83 zHNb$F#Andzi77R15OX=+<0Y`>bBV@o!~hI$B<3G%9?Y>Na__9G&Y0%A0J148ZoQ`I zln2E~0U%*|`?fxPEd_Ov1k~;Z=sT~0wJrO9KD11Ak&jkIo&#-!z+Br9^2{7D$BD&= zghNW-0?6?CU&~$Lpk7qU3R;7Ttp{9VeUHkBkyp8)uMYc2FC>kjNzTPze`8wp(`dS3 zuy^dZxR?k!@1r_d32xPu4De=IOA_@X@X8=)#2!RG%ARppQMV?aRXSnXQ9Ke+Lzsf}(a;H4=4#A^zZm zwG)R+ew!3eExx~ZZwD?xK#--@T)argqbS7+__rM_!a*4{8nqtX=mFc->wm+SAx zszMniY)H9$k~g;MTQD2OHDs^$F9rz(xIU4T6Z~Q>wm1_Ys=C3ACn~0|VqD`-b?HY8 z>?qiYq{XV-3K`m8=PWr_+u+@AkAe|OO8MoOM#hTG$92M7=8spLFf$cpvcj6IW0@Y< zt9=L=Nk+0vO$9N!z{k!gw@6ML(;Hw@Bbg7UKr*OpD;Tg`{ZjR$8Q^>}vz3p)YY#N0 zYxI0cRDO|J$d@SCoBOJ-JeJF# zQwVQ0P`CzDSnVr%hDp^{1V*ONr5BI%;&$ZS+i({#RD1lRjYA)$?}mzb`Ht7?*cwYb zigG}60j@BguHZ)ODOBgcRdG8`vv8yps>wwAHxQr`F$s?rAl2SmKh+U4A=GAcycVwo z%Y_GMS{ujI=0|1W_tSip4r6GlBPQIf$8m=#P~=QW?&2(I^(>CWbQDCG!>c)2Ts)mAV)_$_{k}*y&&PBe~M;vY5dvO*Eb` zy(L0e8?~a4PLRWjXcMeJwEl|5`yuq@e6<8Qz%Me{(+7^|!E()*MV@yGO`8tnJgZYC z17n%ivH0a6V`q=QVd>QLjm2}+mI5GOA>EE5mse$0ja?tr-c~{DcuGEQ)xwk!>iW@l zm!*mrYJ)D4o1m*RVE^4cQbB+qqdW6)4tkZLIkXne5Bngi(PBIVYfeXP8-zxVnNdE0D-8Zlx#6HdOJ;OA(7o*of?5Gd-dvlut0lJ$qJ@rLr7Hh}!On z6OLC$m}_e4viBU1W3Ch^QXtP8KbfJv_4)OQX_!|?hC2J|V7SVoSP}EYsEf_TXDnc~ z*A;=w4pTQ!-r|p_dcgIUp_#DjAMDYZta(cZA^jy=SCn})+!zqd^WfLrIS*ADth~$d z6kdP7p4H?0ExZ750XK(Jj@P)Zeb8Z$z_(P3Rq68J!u0#-9wXV_&~RSqI?J;)^=Odq zYQHkHIT3AFbHH-#Lj6q+7vUID(sd@9d|Lk^$<^m3|AMKl`Lw`|S*)dvJmw+R!;8#JnEArZtn?wJ2EkkyKktxl4;^{h9=55v?B7!V zacAEZ1ej?IiEs);z@!p=8+e1U98OEVC9ho&;w55s4%Pu{^=Mw}^q=bu!s1Yc zHK{I4)D!mUz4Q|FWmOvHO>;eS(0iPf|t5nhR#?58e>xV0h0#DofcaUxlNJ_Fcr7C2ODx99A+0IY9`fklU#U(wj_Y3 zl8j&1Q}H|=@yO>l;O=eIgZN-)X5D^nM#>MX)*^xHLVi5G=kdIHj+kRDCino`)9;mB zj_o@O+rM!Sv@A>|pJJPXOtm78X%N}0fZD?=>8x?V(iO? zd**mSq2$B1%Y|cWi4RO03&Nr&gSJBBW&^qB9yfAbu)Y^hM{5$BAE0OYwAHxzfZDdc zx7X{>@W1?RytB)AcP|zWzaXK`^*QL2%qirLWy_^srU7ugDK3G31}~FKcpT$7_}~j4 zH3uZish>G&V`kg=O9_28H-4KmQ@=X{lc48|)oh__>Q6A5pryi%hAGju83(*8_e<4$ zvetMD89*SWFKa zC9CX~v?_N1Y8_grB(T$g3(uGTX$KxEk&{cdee*#P;H{<9#!Z3ljBeisEf080gz(u6 zQ@X=A8U_8SEt~%aR&-y(GXsLu3*Z;YrZ_AD{9Zg0n20}RW^JedW>E>5hXc%bmF4mg z4%4m33jOjP3OC3Yneh(neuFOvb8)F$tLx+n9+GaBBn{Q&cOu9mYE`%3ZKk&?mM6n# zL`X#wnhV|N^*xtdva?z)_kRIQ;By%m=w{F! zhiq}2@lnHXGDaD2vK`WpBt2CW9b|{(9yGbDMkJcs~*;QB~1vh zO9$_+R90+b^oc7&68faVz;-A~0b`;qsTo;|y~*xn$^g5iKS*?E+*2BPXV+EH z%D1W)Dc^R%X8tWj-%IN!?hPhWQK0LY+k~b0z;FPbu=gOv32$qH8hRzt{1*n8GH_d# z=!)^hov=kj+r=xxH+-H$0p3`42`Df_J3e@3=%;aCk@|TCHfeZIe;3QEvH1V zObICEO9RGH#24~M^2#niLV0SkztCW$F>(Bn6R}eVbRfADk!nJSg6d; zQX_TsR*)}lK~!EA`kh)6Am(osV8_$;V7-1}!!Wy}|31iKMDCSJRIZ10pCUSPtj6 z4_u4~S+D+<`#9xb29E39Akd{_R9Zky;X3(gJpVA8Ek& zk>1zsG1Ffk8o7ADT(ibS(}UJtQN~kenpNQn zX#TGze82^olX$Rz&5!|V&#A)uJ#q^d&CWD;ZyY@a)}SvOx53zHt_Dqs9hFpm_-CZ3 zFsYTFj$=MnM0N#85uP5fV?(6D!*+}2uT%x__*f+{E>#{wYM?c4>rfyOFUY{fIDWpX zMg2InhKls7u?ZxNBk=8<2j3x4bY1{~vdC3vX^ph#t{HROgx4o2*IOiGEADBon z0U0r~%o~RCS_85^ek%tBGs#IUVbD`__i&mSQTS}abdIh(u_axBW?F~E z3DiN$Ss@Gac02zJNyh`iq!D=U`~~%9VP-i!8PB|nC$1hfqI@B{=u=|Wce&6VkDZ3i zBs|*S#L&3C&DUK3m;DCUPa@N`7-4y-+x@h&w_lc_tFYE2KMjcSj9f1w^5AOIRvRAb zc!FwfC`R?|p+e^b+Agq`Dnl^mz3BXIY)rj4ki2dQ)JRnN?pBw1_Wb4Etm_g~L~@K? zO2vRLG_b}#HZJYTPb*;JL0Zpzi3Pq^0lc|i24hh{_B|ntTg_6g|~XqLt}TGE^_(yIocNA>?3Pg!W!xP zevx)s5y5ghKS4JV*Km|El*FIj>aru*ehk+Ld#mvGJIE3qtr10NK8*QJ%2aSWm~nv+ zqt6l0oJ&36xecBo`Xh}}C(!GNi8nrEnbW)ulqTCC0&0!i^J5`_aLZZgzCHeuBA2+| z;Nz-$kM62(Y{>W0y0KU{7+{&+z8j$e79IZyqjkbe)@+m7n9|Ic;ZbH z@I%M4eAl6*ZqokmMW;$3Rvej|W3R32zO>Ws63+kvH&$z!J~Lvq&f5M=Kzvd97-;kn zfXBxFSzUDPJ{h2a`(ja^S`lab-)gIFPbp9clbN)Y}F)( zEYdq&yN{?=6a^wW@MDq=3g$i38|HkMC6nY8irG!N2q;az_Kn(Oj;G#-T1B)XY&=rW zt&zQ-$X6nq9hAGBtyg?(o45g@fwoSy?g~BfZvc5$`vS^ap)j!qe`*yEdJv*S`;O z0;c*VmZ)R26=rE5$QMzm-kD^srMw6&dS4NU?!$-O5eH`h_<}fC+@cx0K-WNWrN+(| zV1^iHWhWW2C96O$RDLK$k^*ZOhennpcsboK(#tKI zh=|?ei#C@RfTOKSK0u`{<xQ|b zI964TzRP3AXEwcOuI_TIeMfHb?ra9xq!ryh{gPIgIn=L&vnEc#n%^MQSyS<5Q{#*z zA%n*?F;*)ocb*~uoQsp&o0mZ#aK@#?;FXqh(V4WGIn;Guh{m!>l>k~ygRzqFYy5ULn zYtfIlWqlENK)&=(klFs{Umwbd|5N*23^ceJ4jFq8t~FD zJt<%%X$@=#uep5w7y7(*KUiRi__{4fCJ%>td<`MYEs`zfJZ3Fd`izI*TwY)IW= z^3+W+^W3CQh8>^w?fslZIY|k;n0mDzgE=vuPn)3nm@hk_rl1Jcit8*CPtsU0n>wY> zoE?nmIZ_5BQeg=*PVPqyrH0Pk%<*A?M5QOc0N>?`RAL6@8JHa+5ZfRY6@A}RQGcgp zocVBGf?RsFmZ?-nmIaU_>U3j?@WM|oT&0Gqi*H{FWy~PE5b>Z}3fPg@RS?a@v0eXW zI4^KPtAvg$D9dQyU~(aUZ)I+SZ0RE&Kn{&#>K(2=52%{_-?VA}9_W})y|HtGQQ*}& zSdEj7ZWN4rX2oGrEmH`omA!Qa=hmyv5z%Yq(3HfUW1KDej3>(Jl#M{=W7Z;J+sTOJ zG+UV#rl*N`h>Hjc8uM`~Qq%C$PT)%uoRC#f)V-w6;ZM8<02tAtz^^`NIuNZeTLrZs zR_iW<&L%K6Vh}2h8{E67QnmwmxU~LI423q%W%K#ORRz|1?3!WUi(UEC(r=hjCc)LF zlw!GtUdNDCkbF`+*h07y8Kv=N>gG_Uh_Iz9K&LFnF(;n=rLSk`@30pO%>HcVDky{BF(Xw7{J`i^`x{=XeQH+AfuU%+sg z^=_k$sh4rbb*N86ay;pw#9Wz5r_4gRb6VzNSq|e@3*pO=Na)i8W|h?_mbaTqPU^6M zWGTQufax}#-3@pwarY7RFy{t7X^`Rav5^WvaU?;H0OgduXB{Z&>1%9<`UR0ZELc_6 zzCj2PTFxZRz#g0=6(d1Xf@vYFGxh2oMpy*e=Ca6_;~ngoysleB0F^;rlZKJ^^_@}A zv&aVen3J$I4xmHM^hGsDhT)AJb~QLRARE_)o>?Bvg*-c)pMi&IU4;EXtKn0()8@)Z@C(2sUhWo0&c~N#m~P$C4Ht% z-adkV?y|iHuFC(#&~cAxN^_DSsNzR0JWxF78&tPmNfNXlwL`NvZb89~i^h>BpI70% zB?UtWM9>G{@m7Hm1???y9oOa^&4v-ecgRaf5h81g~qM!vxz(AMF0 zX`1%xr1}Dib|;0k2dA_{Cma-6oX5e!$k8xrWLtfJK3=;8BQq}Jm|J>SIO~d*1v*?dF3Lg4^_g$ z7}#FaoTUdYV~FfJIT7CD&J%-{Ii*tq<-$Rz`D2o3(Z70+c;d99M~)e@I-wvuWaK;= zs9(o56WZj*j5J=KRyUhIc;Qv}SI??(l1m+)i9B?piseLj;qd&c zpGNg%Fv_Sjqy>6XUSfr`794zaC^GFA*|O*BXP}=6p&GbTdLdE|ICQfHo6$w4p6K@4 z6@sa@09o1~|A-2unU1_sWs8X3>Xm{85@ECsn6Hq9T}1GI(ino`6bhu0`AE73=5v*6 z$JckUhkbXO6988O3bz{hxTByL65fI6jK>?Bi7e^G71YH{+mmr!np=1@%k{Fd>Es3G zNlWq;?u?dUE}vKw2`@XwCP%>4l?Z9o&2Ms7|94-g_>g_}uL%F7a8ib=O%p@D&(cVEF2^WERSbKH%M$|7K`e(o znAsInV`%~17M{_k>&vH|@7+-wO6s`3S@8anG@>gBfxN{uT==z}M4F-N#W}TfN`w7E zR$IphoN8Oij{yeDglJw)cWeUFWs3@Pd41b$bM=Q&WbF9M$~wZC;!uhrQy^g8NY zEViq5sU5BkBG+CbbGR0n`B(auZOwRw4C;wQ!Y4!pH0W!6_KIfhP}k}zCO8)|rQY7i zh~U$2@}lgPhM`m9dLN{t_OLW3WY?yRD0f z>4<)PrC7*!$_SA+$&9a>E;{0A;{Ow{`iG%dn7@AktZ{?DY(IR)x>S_aDh2WaxD=Cs zSK#w+f0^9H7KC;td*M~H;a49d4pmQX_W*fmWt0Mlv7fWFvL~Zu`)6dzuU;mQ4hJ!!O6)_6HKI~f zbom4}Zzjc1RH+A?ehN({bKhAFX-C?MdNn$abm}TFWy+S?UgyD)S0n+x-XxgQkv)xC z&qJ#IWa;x`v>dFHy@KNxmkxx+*s4}0^}$^*6-YqXOmr4R!;?%|>gZp+<)CC64R!a7 z*5rDJ8KR3Z_3Z!;_<|z^+Zl%o{Z~{U2rZdRb46-nYrXQ(k#(Y0g?``aO0-LTa)f;|?>&uygD1s8Rv z$%4`6QZXSQM#m3n@)zY5`^N3+In=X8c_Y`OY24!ees3|n^ls&U)*#Dbkf1}$n=>W? zBWH`8>BT);EV=75IpJoV3Z8BCyF{Qw##cNn6~)RC8g!|~# zMD<%^St9=?2Ig`LRNQ}8QBXBEHa_E^HevQ6_xbUt+te~5f!J@aPnjp1Z(?1eX`0b@ z=+)tRgskbEA})-w2x4>-9u+s|`TRp%mPZ1>zKQ`N32(OU&X3L)8LWZrbvNFTf)J>y z>FgQe`5MOrac`C`q1fN!D%Mo2NbEq2htuE+TG=uLgy0+CLEz{0b!IPMG8B817hfYg zsGk6%CgMdyi@m_ckQlvB3e?8uachdS$Z{bz%Z1>55s%3)MJqHEc`I`ycsd9|3Hj`L z{1%wP1SfeKG8cs1I5$M>t1EhKN0pk#Ns>EviM9i)KBOe0Swmkke#Py}6)i{;N2wfy z_$KxX+PbNztuUl@9+7qN$-jQzhH`^RDw_Y9_wJbRM-daf^nCeZF%MoBL-s(Rt7i+C zQY`snH|{<({P{*o9@8~OwEP66wFIyZAUjhi$ZIhHz^s#}u zR=r!9PI?{Bg45e{A;_g05CxkO1W;ej@TYkscMjw#-qP>(P?sEwEK{LqBHpW^a^vsk zZ?MYv*9qKUS>VAZz)Z%)X7m$XlgwU+{GgC<#i}*V{Tjv$o=Wil;@;c6>5X#^n(@uE@Npub4C&qk*7g(}kS)xFz?0@)S~fi?-eycnJ2LCGcB7%mo0 zQ;v^q>+Ncz0sQ0x;<BrIiPrPi$Rx*0;`{drbT$CBQGkg0ubQS19G$T3MS~ zMs+U$$k%jU54KQVvqFc;iGZz+x*)J|MTVrEvf`>nWz0=>fe`R2N;yE56cS=f_j+8LLoC21O&L=Bajg6Kc+a^#fLRs$!wWy<7j1fUz(&D9-}hG!t!MJ; zSMg+N%ZQ!Uu9ZtFTnXEkXRj0(vyDX$GGO5g_@^roJ^oHEPur|-UvI9J&LHb$m74-@ zj^Mt^3|X+~elH&&!Z(@_gWN8Kk+h4cXM#whdg+^Kb@PZ`mmBV-MNIQ+q)b*Qf3= zpx<`)t}{vVcsUc;T-9x0mcgtA5hDoJEGaF1pgY2{Vdp8w9GI{(2@ib$&zq}9L)p&G zsi(_}28mm3yArr>?P(B%m~S@<(!C}aw~poZ3ZQ*VP?h?z%5l$BQreptpGfCGC^(@9 znu0EKHjSzWl7!MP*TDhYsYDM}E}1xRi&vOFcF*C9HAtuSomyTm#eie zg|D(q=-W#v0RzEPW|x*-S@Qf|l-1xj+uc5@KiV+TZ<6u8sJyhNeTIxx@!|REdh8-eQmU|sp(e8&&b=3cl!ZXx$ZM$7>G8V0Y z7J7{CKq_brkr|d&nx~Ca?I6V5=kPRA7yQ)S4s79S@ZY4K)+xG;S?aSs6%BnHVqQ3t z@7ENJFRmgMIq@U>Lo+N*x`_g}bzAm!KY(u<6f~d|9?@!AvmpQw5%d%TFD&LefGDYT z&_yp@)?wX?{wJx>?aagSvFP{=Dxk$I2IXaIBxT7vtmOzVUd#4YrI#LNOdr+x-v|kf z%XJX`tCe>$erVAb5ZDZJc#02D<->LogI~;jyJvpahFdSXaj5vp>9lP>x*4J<27{w5;D<)c&~JZ?rSo}~wi2Dr z;cVtqt~7@1%-3as-S;X9q;D4163>}$28a2l&7mnZCXrDB_ zAE;&5sxxPw4~UEjhJun?W?w+il-o?p5nyDrhb^NM97w zs?{q<_@UKqv68)0&kn6pL4#bunEbFBr9KA|Pmq(m?$=20N;H|uBNu(hEccIDF?mr; zbHhM=&sIA+(OXzTW`xwe^)2_z)(rh9C88{<_X>}sz;zG$+F8!$niH1sYTDV64n&D| z{_aP*wMX@062(M#iI> zEhGqa|D#U@Yo#m@brd4;w*;<(5LC({<80IRpA&~k08U`@CrbWo?8E(2C=jY5Lk%aLk^vLYne-%}YBxf*lANGd)Mr2;K5 zphGp_8+!aB9|7h$4nI6?pIGE?MHRHm*374ldZ=-o+xNJq5h2X47%|uo<91-%^`2?) zA21N&rqVJzlQtf62)1(0Inj5nsZdArrdEuW$-}ve$@{AltoVwg>m``TeD?jD59{0RI7GRcg45^j-dz*t&3|G+4@yEm|S^ubQh>Wg5As z0N+Y1Zz&ecQdOgx#HA!`>Es`oTvV{CE(*}L^he#8(UFsEB&y25)PYlFxsrLk)d(Xa zu5it!8Gj`PTu59$yif6>J(QbsdisSup656uKP)0fb}CQ(DZC=H51}hZXw(ioW%CO; z`%fOl!&_xJ3Bk8t#)og8BO7g6KlZpU-uIhQA6}Rc(1$V+`bzoQF>sWRXDjl1#$E7z zS?s9!$Jpjw0fSa5tmT$Sc_sVqyp9K0IsvOY&6S@(Qo#4A>KcLK1Q04a`ly@l*R$kn z?EqIayP}LawBx$D5xy3c7rR3kg6qJA(`jG)`X`w?CQ~OIFgr=PuFvslIiO}ME{K06 zSK}OoSG)(`zp2ZUNs|jU?Q$|OA4!wab4py7WC#}{C7Uc$9nyDsvE`dlpog(T>qxEg zi}nMIfb`5ZFH2SJtGz?Bax{DI%!4*}v%Jmzalb7L?5a6~*TOOw0Sqf4+mAPW>=HVc zLJNy>WzV+X084HjG^JE=%)6s1nON)$VKssSyz9;w9Zmb9%TX`6{h0;3NM#+>P~OFw zbhda+%c&6q-7RW6Gk$UaSWnK9@7-%Uj~Pe`e|7-Q+}R^>58z%%lV3{?nS-vR)px2x zvh4vi*y-z%g0>v6)&76-SPx)C~T{ zy6^za#4Cgld`6|*+Hv8C4nY>e`b|n<&w#qnS2Uu-vQN#uI%q)wn^c;JLEmmhNUMI9 zEPyY;&zJri#Ph#F>U-hZr1PDWyj4uxL;Q+IAJnXyC*#-zq%bE^rY)d3&A0Wv{b6<~ z|InfsN=j7RNaDe_x+*L1g*Ad8IS!0(2pSBZWF;S1z4=5J%9~j?>nY+f&oR5W4N2T){^6Nn$u-3dm`x1?DXrvXR2K;VS{NEg#bzWX3; zh|;r={2CsP)W?)x2b6vp&dZWlF<`nP!iWcR+7ogj3dY7grO^G?)&smyN!teIr6X7P z3L5U|GnXwq=TWLdSZ(mTXvCJfjlh&y?06$PosQy~`iqtcn(vP8!wz4_ZYAxTNmMl+ zuw~tY{akyy8|}!ba>u!=3J?at+@A4&MxBwiEeeS?jT5^09zK)_k8Z5PGt(9)&{fC~ zug`Ya@?GKX_@`Lpud?t=qdqs3-lmXo8RCT!jf7&iAmk!foFw4cMy5az?#f4y=Lg0Ctb}yqsNNnKlH?;R&-smx? zxq2Un6%=Be6;|kiul`hww-#QG!Z`{Kjz*CsnuxB{fkbJNI8mN$XFdI~$tEE=d+vec= zNQ*pJOZd{3qtxnEW!TCL9E4wGA%1rsvNko>wZw|6JK&yB6MNs*jq{)~CXcH>H2!%M z5mFkkWd0K|MdSKPWw2v*zkz#oyYN#@x*dgMh0HAI5QLx?13TszcTMbE#|ouz)T_{Y zsZjaefQ3OveK6W*@iRZJUXdlXqnX81*Kr!;r>PV0SesN-3F3>!x|JvDU>4uTVB@J# z7#TF5ujA~G6ZHWky%TZKvuCf{4spNSFKo-9dJDA@vY15}Hl--yi<6ZGNbORXVA1L> zJg(EhdBB9!umBqi2j))QkD`^-86~`a&a$ezFM4l9Y_yBd0^V6BU*9bUD7-HX0a|B_ zsj>ZZv{vE{T(%Nvm^LRDr!<>P0O1iXXgDt}#C1oYBY^}fFz(*Aq7a!>sBVF#8aLLO ziZJAeruRAi#}h^BHDx^{BuJsAD>qzU8lch`H`P34Ee5cypp^bXrlPkN4@T@k_ZsdO zNhr}APNu0e1NKJvKP@3)Dx=F%P#=5h31N%os6fm5Z0QRc-dY%P$nsco=9fXsp8neM z`GGS1ZL_E;W5jks?ua5XuxA`yV&ohjm5tQE+9}|`dAsZE8=Wg^Z9}1O3)a|Z?j0Wl z7u%-6Uf3w$)xcfaVDNy@X_sA4TP+tc5)INC&@C1;z^kN3nCA1ov@nImY{-wU#sq+5 z8-RO?113T7qFtV=Ox6Clyv3+97)wCG{8vPvry$!JDT{iVbmtdqe0v~-4I8ovp}D|H zZlKxsq#9B4MIVuTjX}1Z z!XV_?u(pkrT0t~kaVd-&QLFr zGDEKx1lH%e1AIwn-F6@w)`*pE)N@$AOE1N0cqJK5CpYa}J+uwzsr(LD<&1>1hxkO+ zGXNoo^RiUUK2+3iyiFx5+Jgp_o5Aw~Eh@ZSEwJSwDi`XbVn zkp2ufNv-PYZ3w@#apgs%`NE3wMz_%|m`YQii}6IL4NLZuyjnQoUGZS)^L-1{Gcc5C zydEi5^)W&$-Vhb9Bzo?vYZ_XZ2C*slH~bXffeHX=IDLEDT_p}&5Wwe?GD{Qk79U-* z>U0#AD(;2mT&PVvNDKL`yft*hKLx!c(KgG<4i*8$%OckaaY2ECno%w1D4BhRmp<;gD>c~*hGe=Hs>Wlr%S)7?3jK9amI9nIFF#;iG1?e{PYR$r&HA5i2&k8w5_V1X-W_6!h<819pD(mgWwcmW9iCM`Lae z>fq;@5w}?#1;kK%?EuC*K)*2vK>hEld@BUfIAP+Y$o%-~{c3L#UP1DKOgyo#4OCIjWQQNl?(2<;E;c6to?^jwc4RO|e*u5FiEp$8hgX0{m2cS54#h1b%bU2z z_mO=m9X}1z%{CNb^gS(0Pq1m@E>{LHe-1U&)cs1jNkv~KbK`w| zB}d6Euco54lya(O=Mgjf0J&H?bAwcQ!Y)bEDMUyU><^VY8{>tV^*I#E?A73X#%J?i zi%57>_1@AbqCQIbi9aMR!Ah`2`;{n~|HQ1l_`9(%YNL>=q4PGhHoVWAs{z3>{`mu+ zF)hg|n)RN3%Bfpl$1m$CGN|;mr%nin-h({}XND`Jc-y7!<-u8Ok;HL1=b;n&5rGs< z>H1@$!@Wk$i0X+LXoa3sfDhx2m8R9IYnT%@Z{U9t?&W|LJ+lqZP)*uAX=ti&|Q4X$&v`if5Z zDg|V0G5Wv0@*>e-K6~N|yW-r;yUneCrlSHh+gljcEAd>=GB4Gg`^*ZV@A~1pRS-cvX6@cngDyDkYRFrNoGeFu={xCHrVr4Q&?O%osi z?LeI{i_)U8{WDKw-85di+r%yqbPF6&-xLKjtfy_C3e-T9afXN2M-8T24h~Qw=u!bU z#XrNHDY!xOy0kNLpkLWpJNsn&E?=hKGwrGa%>)C&BREh;R%>PZkW~BMn1Zf`Z9A}$ zcKyINXOV6NW9vm-G!n~p#(h(BU|K_~uD}ytO2_0Q&A)tQA5US$syCeGHOjVtr zC6)~yxzifZl=fCh84evFvXu$MzfJd$V4uDI(qEOqy?x5`raK_oFRb zp%J#{Z!<%=3sj$Wf{UzMnXtII4L_*w?Yzub3h#Gti{@T5>7RA}m25q}aM%D$L)ctO zJ=w8q*4Ov_F5oMgDo`B4>;7K9@WpW&88eK=m-y zK1R(K-iM-l>=zFMcvGODd|QUIUC@i&Ki3&=69N(_Er|^_XV5{*aUdkeWP*5{|6PnwfRr(M4%X zG*0_TnaESya$%}LP(J)_#OU_H1t;ggwdhl(2jwn;w03EwU?RO`Ui=&lKKPJw2eT_pfqe%7pb3EoL2rp3UN~in^jrB>zF&B_P(&q@-HzU&!m#dZFg7-jBlYpjWU)L9ex<`pBf8V43GJ@qf}>xR^5qCuq_UF(7c9K>}Ug zpLzSS^95KJh3Ypc9s`Q$;e5IWe1hXs`_q7gx3WpyqSod#Am~Uh`~Y1{FFY+!It~&+ zf#l_@ZwJTWaG49fVx0K6K7*xxjNcZ~Sg@Ta^0~Wu8665&JwOHHcDn9hk5r?3QJd>R zR5>(6F5RTD$5p_=)-haRjpEVM>q7bM^9`W8SfZPf+OvSU8xeR!5u)5T@)aKx+EmXI zqD&;&{j)w!$uf)*4P#L-mC<+~PBIPIpSC5kfAvbI&j%7Z@ir|%T!M}z5 z3}Owbd$at)AkAPs6_MVU?H@xj!D~i14bPzpX)PjGRLv!A$XdDtQ_Yp{_tqAITtvq< zSTkL8ut?YE@`VnvpW?bKa6-3{|4hr7{8-$$^4FmgzxUcg;NPHv4$riGxZd?STv8VV zT5sNvy^EIPID;&AQbRggPbK9J8YDO!B#54NgB*$G&V{OOI;l#H(c=)AW`gYpY5s>= zO%bh%kqP}(-SN^mB~HB{a!IX`MhT+~%-6>luDkI3st2sy1nEp&g^Da%J%=gzq*4ss z8~78SrwN;_^c;fxf=+638u)h-YQVeq5;~=^db^tK$NKns>zk6K)87gY0nPi*!)`+k zwN{~KzQa#pHXo>Qm=4lvLHIsII#1gyPrJce!st9Dac2K{GnmR{U}6)q1RqyNVaL?g zVIHX0=DhD;=TcZ(Ky@;cl0@lmv^gid>*;}0E(r}=h3BY!x-Q!>#2HOWqeKAd|DA1H z6(QoxscLgUg;t)zH=m)@e~x6XV+jLxIN?I^60MdrF+?H?A-sL$aks2UapdDb(_?b_ zLw{FQx$7}F!2g6Q)V$gvYkVfIe2@j`%^{zo&8+K(a*zSCjE*O1YZTaqz?|MGsy+~c zu*v$(M!3>KVxyY&aS!6GM6<>ISVl8iY07;(L?E0bnwp%Zm=y1F01w&{)8465gOe+m zp3T_5aBsM#LVpQ67%JJT8&qC&E-ST%DXhuQY3Eq zr9m&c{6DakjxVM>xo;$jcj(*HJAAk4l&7Cko@zaxVhMO-cv`P>q-}MI>+_9j};%B-Y4Nyom{dAVR72eMG;|@ZqcUp&aSp3>iN`hL&3F*zZC>X0KN^ z%1x1O=i8l`?Z|N678Og^CTA@huM|BZkyWX{$Z75inU%L0;UqTbaS5Cls*hys)5jp~ zQy+yApMNw62$I_+rXu523K!k8hW}IGBRX1B39X8aG@EE&Gh(6mI3W02!VJ(~N5GBICTG7-k^}k8{hmQ6;)r!6kR$$aQK&Pd(WvCvp+LRcFBHEuJ@hY8JM4fB)K=_24eDGF5 zAC%7v1f2U86e(_BvE&m)os_N|*p4+9rp~BDRDQv+L^i#|Y zBg-TZ)(7S(hh4^(pNaCL7dsgx1n4w81OkoG zy_)>$gG8GVW-EW=$jWaa)siVo;!dZgo1<=zmD#@}MqJxv}C$ zfVsO=hCSS~s7-AmZ*~^W7ZIxFODpp5n#GGw&~5$&23sK2wKmPGDGsfo($d71^82du zjvFy?8nRb@{-4YsfFS>`+#tZikVU2SA00fV&S4e^8PKC}=ehGJ=N8C~= z*WI`F0c0|S+hpVl6f@AEgR^eTU6%0fiV9sV=?3Rg&zXS!I);%1^Hqb z(-%4HQb-CFOlT3`O1lRB>cRTp3^=r_>|IjUh~98jcy>O>D^%vk@263ru+u!fTAQOA_++~e#akMr$cv)84| zjq)|!b>iW`J##HCKyIc6IAo!|l!iSW!EEnAmTFJibEzd$xSdy>4RYz!i;`1mrJRsd zQ&CPNc2uNG1Gm!E%DP_)F)0*`*PeoWDIB6AkxC8N5tCm*cgWZB98Qk%VgY%Me`4LOgf|tVYal96dmp z08~_vv9-NGu&2$LMlE0DcylzGuvxs{+||m@N(C1&Btsj`0pi}U83kMumj-IO7?AJw zvJmTOc34=_q}@$(xABDH7pO~K!CtHClZKCA?6dj27M`5-V^TeWj?}NRT;xg5l$-C> zFwEwmVEyqdfQPI*=F5TUp+2tY0;P%oW)%-%OBrnQG4;5u29_oQuz*b_LwbA}3!G)@ z?~@M{L(tBY#vcOg<0a;` zYWxN@{Ga)>7cu9#TDI)gTal8BOZ zFPA0C#W^7#4W6uaDGp9t_$S=YRQ3 zV)5xc_QkTdHTIB(|1<6F3It)G#n?!f&NJ%2a=VX_0gT!L=FQerio$Ld0qiU5QlsK4rw-Gd<2?xF=kZ3WHLC7;B^h-$!b|65DClH%1K*zj3%gEz-3OXdqS{Vg>^I5Fv5!bn~0nOw^byzK2G1t%03c%#5!yy4p4%wxQl;cPs@fc0c1 zP19q+Fq>!Tlr6N5sI9K`4kpipSB<$s&e4^9zog?G8dcvu%K?xR-Z=ti#abKEAnpb3 zL3dOU-r@d{?=KUItCX!hE#scSpjt{mbB(qiy&P`jhm?52PPxbzZmLl%8+#9cRhoqo>(gwO9B%A~3usH>C+0t!ymii0ex1 zo(KgkxHq3_>ozISPUabBA*72AIhYU{fc#`<-WRJ~fk|j0m25l_mfOBN{$n(-CbP1$ zYc$&GDZW-(^U8VVz=Lg^#${w3@x;^rhM2UEry+q@x!a4;3B$no_wBKBAJY9WPC@An zcsR+jHzH1#w^Fhn^T}h8~him)Qca;WFLbF>EKB4k5BUW`rW{ zGyXqckj zvx9(bA!0W?TuMwFxY57jI;o+0kqbB!iw|-pE*cF^?37t7+V{-ere($79sWV9S(?42 zKqU#~#zxg3uvwl-Yq|2Qp^xl_60Y~ z@)>AH73u+0v#b{lc0i~{+b-mQa7--kp8f)RL$;q%>>dX9{-s~S%reAE<_i3kTEb6}SllDj3tKM`ogr6KU71sjz*>Sj@26sf#6gZg4+n1(>6wt)C@M?nWw1lJA_nY0S&;QWxJJQ>qt z7h5{JuQ@&|gHPW93n<@GDO)<-%T>ukDd-`t771ZOeUfor!4?Q5$|?=7AG3wwiW>@e zFPnb#6P!+t?_L7uQf||AN5pk4nq>B63ILWU$zvkSP3X~|YEvr3- zY|y^cF)^)4cf3`kT1c1o)wHeHpzRa-;8=(hF%C87R8f+ft;2`wW3fE`!7Pv(W zand8@B;2Jm9My@Y;r^J$U8U|yk4(wQtK!oA9Z}SpuWBA|;btJSuVv)!pA3pSU%q7A z$8Z~+vnI~^A0{J4%x=s39(HwUMH@5Zp`=H=UmHwS>p`w^B+e7;~2_hAUWJX0cSTyn}s=W9x``*;`-~APV#>T}A@# z_lu$>RqC1N@kA3+zoNft5|g|HDu4?&EJ=8npSihH$z1}uTF z&@!0lkuVXY^_tz^pu>3i(wZCK38mOrd?}OTYQ{h$O1c3!RNeN`=uF#vc)N#9 zk#zk>0-+s-&@Ej$?$23h8pH^vxG&l*!DQ**EG-)Zj@9qWjJaPF9k5&wGneRV zP3m>+5B6Y=OCzC?=T5g6icP%C=F-19-zKQ03OY&Fb;lu={#o_A5nsbu@?nu^nwSaz zuDPS(0H|>_skvBg<$aUo^_Nt8>b!G1ZsJ4t5C)mn^VBs(TfkN?TM@JXd7 zYUDRD{>S=w711Dc<0UQIcO!Ey?!dsP49@5(>7V@uEEGN0RtDzc9%p&B(&)op0S>APmLmds8ZO?wgnnfWbIN zq!%O{tLlwm;p^Dtmf~QGTE?X##xC8@iHhkEhhdz9$4@E>7*dCLAUGS`T|NI&P1X2n zA60_BuPWI1$m<=w8WwbsTL@eD8nKU{|B7#!SAHZ1WQMSR6A;0Y+nHK8OX|Mf?5!jk z54~e}q@XWFJTv}7k=X#b^CKWaemfY5c%eBPeWVWYI!$0&nWDCzzbvX$+wvp=99|YF zVaJEB{8|9)$vcsC}e_x z!q&13#V!PB5*00J6P1_=VKmJ2R4`plox;{k;h|;e9)naQBII(#S{X|&{`k_NxBv50 z4+!9!@?hB|s*8SHj8Ck8nrh){c$Ek6vpJbo*565S`8O$>3OzA<Rl9t_Bf4&MRb&4xw4Xs#?P zmi2QM6^nXRZqA+Wje{6&`11U)d85P{9d$H#h1JebI51FVofBP!uwJ?!QySg1n}W!> zA}hnnJW;|WvH?cTsY%dlx=mP*3nN*w#6F|7$; z=;m#}%)J#KZUxe9Zgqm5Lm96hXB?6?ndRv-p!9`oAE;%qMiDTd zix)_G8)?5=TS5H*?zY{)-|RVII}D)N7+zuxiV&4O^gB1{aqO)Nw+0+@N)4QUVAgDSN$ zsJigxK}>=7zXm+ml(D>4=sG$b3Z=cttQdnnqBLHYdN$x6CnVTf9ol0J05=z;TpV*! ziHNd#S5f|4qV~DeY}Vl2%`NZ>gD&xbEK!~=KKLEf1 zYJvicIzp=fNiZ%q6IhN>_wl@OMnMsRQ%f_7L}oeL?Gq4s7@rI4TUW8lh?fO*D}BB^G)Z&x2&o% z>s>(PohBZsdTV|D{F*FX@?^1-^E56@Yx}~EN@rCFw;8~AIp0oYxZ8eLJSjTszP7Nr zemlI#4!y?CUv0mw&w^D9MR<8__gPI%w~G6+oUqhsn6(dg4+RJ>zLPt6dbXjnr-1(r z?Z#B8X7jJW6@7r%lzuHBjP`*wrfdO^Sa!Op`ysn8S~0OaF2i@E-Y%LkDw$H=Ed{By zmNhv|CwM1m9<5|rThC+pFpTq>wYZzp1$CL-YDQJdLG4UZoiHRilbU5a+Q`yUU1zsz zr=P}0y4c(8c^Sb%c5AE+*B<_SW|)*4Gv?kjmg_3ARwH#$ppO|ls5>}pk!yxaZevV0 zWGSbo>z}`r8lXCP-oEOIPXiePWS?6yE)01!JE+ZM54Ryr$f+QqPhZ}cOM(}OG!*!M zD*Nlquhx(;8bKq>Q@1?9{2a`Gl_N3@|B?2?a)^NYb+r*R%)JvNMNS3BR4fRd;1ySe z#RC^yIYI4!w;kO_3?n~Cc)=K0{4i^q3&(8$1en=edB=~vhz(4v$OI<3U(h$_o@*9B ze|$1byq;(zy!$EMnWJ@XK_@-G7rdPX^;Z4#P|S{Z*nSmq7)J4V*a$j+~y%%6L@ z5nvbMvE8Vl7n~AYQ^!XGkzcyG{e6}%KY}QkQ`)5Bm(XAY5)}hii}_m^#F;#@*+b>= z`?~wc>?T0UlfDk>Q%oTygrc=^OiIm{4@A?K3@691g5%6FJHCzAX#+%+RMmHHSCMlU z@HO&$xTNRaY@dTPKFI8uNYjJf{>|4FxFULd)cRY>2fcR1@LKXIT|m|Q)5vr!cAYbab=?MB7J|s%ZgmDFss@Sxd031K0MPbI_u_;YG(;QE$nl z&rHCZiueaH{~Wd6vrFU7W4}jL!RlVddQsKY2en8-U%mK`D8D!V)PZ!v7`M@}z(tZ= zImX7dSUO$GK^AZMcZFG{R2DvItO>%T!aWY=AvK{u{-|m10#!;#`yx%~y`?_YnST%F zn{V_DO-#Yk{Bm>1K%nF3y;~KJiD*E9Kd3}=llsn5{327jnYUz9Zm`=l?vmPH4DYR_ zyHW!&cAB=C7qOf}fXD*$paZ|OR)+PXMM&IV-)dI=JQVO0R0Kjw#el?Ur;XR+0y4=uR`nzd20Bo&7 zvIZe&K>sPLD!=`z5w*Kdt5=99vBoN3CBZE6M9{eC_IbY^p#g#x9sa*D8g)ivMd z4=@XlO2a;|gq-2A=MYAH|KMUS$HZZQt%QFdP;9&R8V_G*bt;*avL0VnM+TA(pLG`vA=1v;F7n2dNXeViv z(EJB?;&QOyX&ro^F?C@IR)ctN!?U2f6+vuG2GK=<2?6T`@dfUVqimwsi&PO$-41R7 zUiHxi`h7ImP2ZZSTnWy<^geO0p%K6-0Dl2DtT*6)R>_71{BEQ06SUkS+ROS|BuxLW zv<9I2p~EKby-Wq6PkyG-Fmx$bbd|NY7+QPkTvY~)Vu`9SZSH+qSLyxvv#fm7g9?|k z<8xaY%FV0j8`M)U2+aOMjZIxkVoZ!Ov?)(qQ5CF0I3Wr&m$TGc44)3TW-^Tpj-S1x z#Q-4>qF^ZgFn-3R`skc<;B%OhqJIHYMssAn>IN)*!RqxV!3Pfjvf`lvwQo1NURDpV zIr})*yV?IqY6!j1%MrnmsQdmZI#y`#e1bgc7$!GvE%9o*p38)aMN5|N(N8M>L$e7T zCX!B0q-NdC}0?;TbjW0T;MNWqmcFs8<)T=yWI_p=YsNRn^^hViY;mumj~2wjO1sQ3URk^ z*}`BndE=sm-%XrSUB#7yH@X2i@R&j&jK1+Asn~Pp5MoX=%xO=^6M24~c;v~VnvH-P z;VbFfyI>>h*}-vExaFGM*=A{ez14U6{3h@u#+&?~U++N$$cNXsw%rVudxP9=-7~!{Mchbc527 z`EtvdKg5jIqHVd!XKVcy(d@)^qgJ>yRL=syS689lNT+;a$wI3qMDM2VeB0GvmQM;g zQkg#k*sIvhis{OafVwzexv4+2Cn&~uX^gjxYj?$_RF(exC(`?4~7hufHYMD?t?iovR>ZcT>IIy=WIyr6Rruwe}cnwjv_M-gI*)ejv~qMVE_bw zeHNNdVh1N*spq*~;h=}&nzCz1h=(^hN_V2GvhNR>`J7$7L+-pB#d$y{4KF(LJ71H zXtQ%kux1F%4-YkVRuJ&Ql3<7Q1FhNjrM`!5!sR0jwOMjhXh|2^;?Jp{wO)4oHkin%Xkl1F{CS>m2)HLladZB6jlDnGHRlXks|$LijJZ_Tg&S+4pX-D)xRBLZr+dJ(rr_Bf zjjAo^_Vk2^7`SR?e;eu(X82+J0uses!=n8KTyWfKCcNTo#`RE*aLR0Q@=mu?C7&%% zy-_c1>&w`!*5{?4qV2zszfO(Xe(hvN4gWQf2T86@4&aRagU|G)5kGoyHk}kL7V=Pw zz^dZ7NNSdO)dvk0S$bb=j1gW})XY^J)i`hGn47|M zYjVI*sC3$|lTgb2gAW*GgjPwg(>8&R8hZdCZp!^NhH4}B&C`w~W+A1n^ikd0gi<($ zof*YpoXaAm2S4QPZi;7t&j_3`yZ!6tK5M8x&t2!6v2bm0p3PJK{5%R7IEwyGJxEIl zl-C22rWAd-6{6I2OAu+@F|}_AruJmF`BLy>7lfcH<^r(An$9{4{3CklN@#|rN`gKf zTdIo7vp`e?opse}arQdlQb&Yp|49x#wjI85E@InqGXMT!Nv?8ER9vui-nf_fb;mfl zlxqzB$@JbtU%sK|*QazAjyc5n4`rh_uIZ#2s+9`K| z$;>`wHKVNd#;7VOQ8EbdQPHLL-tzg7!gQP(+^^3%@cXFVm2KiadoW>gPqV+Jc>V+Uzn7a_&v00NwM=fvQ|-_%KP zqP4^f9cIQR+qgyJ5yUe7*6-EY6{szKQRJ@7lftY?^dzc|;hHZ|2!z2+R{K()rGDK@ zU9i=N6pB>ZA#t-UDm$=WOP1RiH_ZOtY;zrM{_8k=Rua+niW6j1}5b;1YX)%B6yZ?jg88x*FUZGg+!EwzX#li=&HamWkk zIO8Htnst7CdqPUI`$Hk_A7Yw?9PiBjnnJdKZ=i3&^RcjP2m|6xeuT=K`*Y2~A()THdaC=9TwFP9jMqi(8yFF% z>7kQ`eqsAiybbPA%*K-mu4#UwL}9LfY6(lqV|{X*6I&3dK!eI9C6s7SC>s4K@*4(htQ?_96l%De{&2fK?;y|`8F~-`G^?D(%#R_05y0DzE z;neT5>HjrF<{YP%FGop6X@$%`tlZ8$VI9zRYT6`|jl>bqTR6Y6IeNDS$^4FQ0e4Qb z0)1-iY+$(Ii};w`C>MIe{T0MkW$O<4oYv47RXN$J9zRN|6l|4YoZe4c?fhkuk7q{a zR;5Tlu+^b8Z_iP0p;NPE{OOLL|70amuX0ksDL;_9t~LwI;iENZ0b(?bi65fZF~pFk zrMp;SEv^B?mo$t;n<<%gcORN^=!lI>3@F|8PHk1ZgO(nDy?x927kLOI+T#KIv`T_{ zpSz10Dy<eA=VxUn86DB~#8FrAF{Kl(=Tu&(afY zo$jMj`JT2Z0OUxjn(L|*bEoC{hnLNP5H+ujRfofW{a$h88)0X4aaT%~HJn9m{*sOF z3GN_@gjMiI(l}#s;Q-@iCvWjUc2`@R^I9ZaMZ`Np3zW=L2{RzN4dZPMD@QQoy6zfF zlUro2QXf}bR2w$bO1I*e4j*6=WwRBIE5G&qmMU=1+uEb2QVW05wRf`Hj^!W)`8=E< zBJ15*TEbG3sxHnB1wu80KIMn$BF0^&067UX&4B9I4WJ>XnTFay(g=V>I9eMp=c|N; z?m;$zE?J(pkLeHGGo1Y&cv$3Y-;*53(uYf2wZxI2FSwYZ8CJ+^QcnTy*){Urp?C1E^R{Sh$`|1+5v*>54 z^T3lF<(m1j-G@c8N1ZETSj{zK`<3Aad4&|9)&Mz8Q#Iw%@R;ey&k0p6rWzfo(8aUG z=et+&#M>XCJ^cVDkq8CBOBJ^-=Smuzd?d0J8M_rf!KS|@cEMk)-*RH?m61HuyaRZ_ zL0M<%DbM{YfkP#SwEV)){*X1kZI#@`S{p%(!2bgXBLotx@Ho|cL!4RE;AUE?Lk+mT zYiD%G;R|)TWwW7L<~<6!)ezhwf#z)UQ`9A1{V^ATS=}AaFtnA*v0$#`mj13MK6TrO zN8x(8@m-I1A93h<+xL6K9_gppnwycQ%!hy4^tA`Hu(W_1X^!Q1ul}akWW^#XpN=Za zph!3vt{ki}nBdi1#~Kd(|Mp~p9nd7tRAVWLE<_apeRc}gluc#mTLcv`A6&FP%HQiQO59|Lcjn)S>S6U^C!>&pKEO$`ty}D$XUShg&i@ z`Xpc;{8zRvZ>uYyr8l1iz?xVs{T(nxEwM5|N|y_;24P+|1f{IyV$ZxgmPu5Rb7~Vf zu#wMC6a5h7;O=*$g#D@KF4!-c;hX6UIjpxyEF6iitceo>yrJy~8;}Iy9?~FyjVac& zj{zaCpj)bnn(b#?PP@}w6b!-OQbj5RcikXBdLM_rTIUp(9bO}qGKse1snu!hNx|w} zD-&%+rPT2m!0ES!p_h-fdAs%%tL+WP>|K1%C)R>8OX{P5FCi30hsBYKrX0){HEAyBxCun)MerP=_>!tjQsDf%_;ms zo}A{l;82HWlwFz?d62a8623OOI5c{%I2usp?z?(uS~yqlPeJ7CzpxcMb!TAlvK84* z%J5SNBU3|XF`S_{2{4=7fcl2pf76=8@Q7x+#w4AD8M<|R3v;FAz%(jS^uF38W5<)N z1j*{l&E}COr?+I6pt|RqgOb{2cU6O*kLr>z(*I{+D9GoaDN3>gc2O20VuaLG+l#oO z66GRA5Fs(V;;y{bbg!?@nfA*e8YZnM9_r1=sXQjmTqo>je}A1-@A44^+|whkhJI0m zYbdEc#4LmhWK(69ubmcd+gQJ7X}h=L%ip$a6TN)Z+iOwc_TGH;h~LuMAU5m75~{$; zdb+aNsiVfV3WXBGucRrmLHIv{P3m32nH+@WYzeu`!ICvLwRoxKW6wcQg?W^Usq!V) z(y8eaqrCl&N5~tc?(X!G_l_JcYQ$b_dN6xHKbt=g-Vk1Mc^C}Iw;@AT-cja1WAD~v zvqJP82vvneBp&EF(cWt2FH$3+|2KhtG|S4@zQt551@(hq>B+P>4`e4I+8#qa4!Vrp z0|>BBNYbANqdt_7_rf{_NnE9CEAEwMi}JyKwjWG%PuY3*8p8f(xtJQn#o+_-pg#4I zbSqfiInN{^()|ofNoTIRP~$eRc965xUN8*+K{d^Ky8s!=qytfXinkf|{8yhm9^Fr* zgfNs0yU5!JU7ZjN1K+?=#<;`|rI!odtnkAewaWtRq*xbJ8B3}n$4$*OLa(+j0ILvL zjDF0Mn%}o;dk1iGI5D!Mghjiq6GL-0eF(DA+IFr5#xvH|G41$!@tlRD@!go@aUwWo@s2!~1`+4?yS8@A+oZ*axw->+?) zNbyXmT_#Ptp?^HT?^RPda%8pf8VAxgf&gT7dC^OGn8F{;mlv}bO@{RYjgYYmr>3vxc;rX<~^XJ&XNg`>Wx36;e7S!m{COx~_=5tjS%G9U-VEGv9!PCiV(ZM{c2 zd2l=es+mSbaJ>&lFNR{?2%SJO6NDQS`+IG_5CE#C?XhQhhn8(H($(7Xb=9NYGEGYf z?_$s_{wlDcB3#P8($VF?Y2YJ#q8nGsY@`tmRw#5qW^x7(%BvCiCRBfm^uMX}dLBHL zt-~%Pziy3sdjeqIr0Em9bN}kIim?mh_m^x z4jr0lV+QN!+CUNTL4zfGktK;$>$9Z+`!ppUUzmH$^=PAGm3v*n9Q@LZ##KSWgkbmM z(-~+XZ9We=;k}Hk5TbP|G>wSW%!%<(Gnm%}&aMO8UUCf^(phkw*LcjnHaHmt)Oq@g zc%M2&5qXTZpUk$PC~Ur)as&gNR&OBbqE;Zx&;(*>$&(MaI8|Q zt|*i?CMJQ4t|D~8Yb9B=weXWX6A_=n+)rZJ#f#g?OQobS&;5c0XX~V6Stvh>!~IKj zBcW%xu>CkNUdlAdv`=>b)ela+gmherje+~S+rROdVHgFX&z4W6$F*620;%eJ#7lR; zlG>c#Na>a!6u9s6t_7v0;WHn3!LG`$^XbN zpv+E|VteOL&8OKD3%gjaDyYqMTV@k>;6Ls`>>b3qp9B8u3`WoVPt*4b;qJifpPFw0 ze1T2O#ZsggT$4oxAd`P$W-rvxWp4z4q3MCk(mo+2$*jNIZcZ1}SbHiw;3L+dvPY6| zOC?_P#|t@TG@ESujsH$S$uO(%Xk95c?kAHL=(CEZPQ?9Na*ZPII1=WxED7S%Nlwd^ z3hm$*_~n;pa5cA3zK^3zM-C*fc|`x#&qEGFFMa`1cN<0WIlPs8+EpZX(d$nXhwIjo$p^epzF)7@4iLz@RINeX@1Zpc0_@*a*I zYtrtNT;gf}5wLhbYeD-HP&Lug{wbVGRWGG8)y}Lpd~~1VG(ObWm>xA;^FE3~nJ)a4 z3$DHRIybf$h}rl_1Qb|DB~~*x=xrt1!hqqCY^!Fv2ig2$t7$Gun@gm5^e-gEsZFn#Ii3g8MH?jdHr}tA-=os?|K>o`ZtODLX|dS%0dl+iI5J9k3o& z&yLZ>q!dAD4VU45BSJgVQ3hp?=e#C@p$7hPIc-%94@*>lAN6Q>ea5ulQWnezH!F^^ z+l%$Tp}1Y2yFqR?uyi(-cVdbi`Y@DDh-;&pci%Nj6q zOt^!ae(qYE6Y|$=rX$Nbj-;mG`2{IHYEgXNzqMyzaG`^>cB?A+7<3Nep8opm6YU7E zRuF&4K>@=Rk4;yA&|0N3GxV!;PY&-J(4%an!Z**UKU=9&;G+v-T+CBjCFKn{(kD9y zVLr^s_0N1rmLN80D<5g#K6c24t$Hn0-oRhi`lQw)I9q$K{(Tx~B5s-3Dd$=Uakt%R z@q(Y9UNP+Zmfv&z(%9&9nK$-srpAf%yjW%~v1cL+R7Zu+wpMDUFw4*Q11_8=80tf! zqe@L(0X2##t5$5f4Uda!yzKGDP2XW@L1=K0#yq3vN{_}kxFzkQzM%pvAA=o@&n3UL zgcCI$ec8$-4*xb3&3p%D&@$rL3|D*hn?p37KKx81{ptWKBqX#TE1h9Q%(>jq7l~bf zCDl>l_c|u}4*%3q1CH-=#rl?s6uzIA`S%t6_-Gao`DRo=Y0}2#u8UL}oS`9q76^f1 z7Omlfuk`?UuFn%jz2;T6k;wMkWeU@wg{ehLL|M}}egjvKP7(I>1W5Pj0ejM?yf;5C zaW#ChkcRryNhsBPg&yZ3?bAI&ai2^Tdw8EMGT!(~QLye>3Dnc@tQhYz=9N|Ulw-qy zES1lfJQS? z1oyxwY-NaEtcabuNlb=$K64A^14N&n47m{U1VV5CM^EBkwZ%Ah5&kjfpJoGO{ltfl z-f@ZNHQJGa+#|x+OXYx2=dGst<`WKrd8@cC)miyqQm#M=(N^~-1K?%Y#>T})F!#;3 zvc!P~&sfI(x>devr9~_h3L1egD`!Smd2EGbehuk0ovrr)Vl`d5s8P`bsH^5wXYN4g zf~70>AB{hvTBS%GuqLt@uKe_E1HOhUov*&u8_QFD|Nfn2k6%H10qhU0nQrWzb5%x% zvY*bGYr>*kyHp$jGS)N6WHGS#y9~4w@*-O?olx1!bopH4XBl!|YXn;QQwO{gyWg#m z6Jz6I3Zcqbc`P9{oUs=4QJu!T;Oho%sMyUm7nl+djnUu@a`H};C@M7jtp;Wvp+^(( zr1soJ_>5lge@OFSM>voSTgL9sPMU%uv+(%Os`5@bMR)X(yY`VK7L+8+vt>y1nw%3s zyXcVp9xh6NKXND+y8BoXp9N;ySEooOvR=xZlyzt$X*q!NecqA?i{F!l(os)S*(+^Y zlFu=l&%W}75-;RRRA^91f0y)`EZcdT%S}v>g%CRWN>hP2DhrX~F4 z0(w;dc|Ll8$T}E14}sv9MYwDR`j`-0WB{M|?{7He$;m1|vaaB=efkhH_i-O995B`L z_bx@tNxaKkm}5=o{DPS=s>0EIt6wi@(BugQ9oWi8{!1cfZ`y`F;><$xjYR^%$TD=@yDDq$u2m*}c-hzYL6#c~YkRWOe=S8JTNA;%T_kWie& zH&3HJb9e@S#O+&y!WO*|sMld?x*uLt-}vZ${{q3}`AXqpT1L;2v#0HvsqhkQ>34y> z?k?`KI)s$kbQ&URULn#&x%o20Z~X#aFE|S#e&~9K!qYFO2LhcdY(xt5qbSE-DD*9< zk?w7>?|Uf&Ivn+14Qe3PF~sn)(iXC(siq1wq~u;xt$O$bnwfEH`sozAZhA>7U76T@ z7(t65UsIjXT-p+_^MB69lpE;wqiBAxP)ga%1?#dm=2xMFv>Q72w-Hbasgf*k!ak{3 zO#%|KK*pKVfGcy>SlA!-nxd^5Rq}S;<l15cfxNqd5=okAiw@D^I$~tLn`+x;5`(P82neUUAg*_*6yr4qBM(@;?B3I=fh;~4$6)z=G|QtXkm zT-WJ;XvqO_YugEN4bk;OEn#<_P)u7T-8jvtFd$O+oTd zbXUhrbjZ@7ThWPI~1PBs_j0qh+Mxap7?y!&K3?&K!4B_U?j zp)Eg*rcfUk!F29=)^k*a5UbZF;OKTRDKo!Q;*uAC(d@@z9v$+tM-Uq(`o4#h%}b9d zQ`5<;6+M=8IyeQvvxtHJ!&|^`WUr_#H_6Kk+x)2w){DBGrsh&*w~{^kZRkl%xMwIQ z@i_D)li7CIw1IOUH-2whRfM)An%U{PRrBY}d7J|(-e42u7ZZ#kF1J6ubhJ-8K=c%K z>afZ(EkCHPB6bZ`cU7A189dt%FA}=uuJ(P7;gDbE+&5A&ND_Cy5y#)TnV#AgK zPxjBor)wEcr4&6e)p*F`5-#w?r5^dFE32}31P?}EQ)df2E0z0TwRP2;Tu0Lf{U?LM zfd=v;jTGEuZzZmDRMuSvorcl{1}orkh}4O}!%4YDTCi9^d1Ar52geMc^g>#|Rvl}R zl)fI_G4DAr4D1=(%!?_pG8b|b45wD!jo^HmK{~tncNx9d2RXNzcs0xl(P?7NGrM3v z36SDv)O0SYJGz|h5NsTz5b&@b_GVw815{C2Pl>;9Ly1 z``yzZ8_oXE%+iy-_JL87j3AJ&2__^hq}w_tOT<9>p5ML(Ka@LEzy+F$cv@(Hk)jM= zk9(hubJo8F7Lwt&A|}hy?%njQe_%+pip0@;2EUe1i-c+1Emi8_LNp^Oql~)Vn1I?9 zk(n$Q%Wq{=ey3iXo0)+k5lsGgko{a$45Cx!`15W|gc=alD!?4^zTOPsDmE8Y9A%BF zJv_U?VVp${$i~0EUCf+?`_SWL68gUn0quy=8s|7_3#T1`7Wbgm=qj1=gk>WHx71a( zdqtPdM7sb_hpx}v zi(XYSEUhYVPu2K8h3-MH&m_XemfvVZIJiM)xr#zJpQGO-lZWc)Djz1l322K44?;LBYzRygLtjbOL!9Q-$(i}56`GY?a=qo5Kh`F zpCL&P4&Hd&_G$;2vpxjpHot-bNu+iTp+WKxab3Kyzzu0l{pL~!?X>dU#dR`#cQFPZ zt#`^alF$^{C*#j%jADfocPn|R(uzI2Re43ti@pwMn+vBUor_2qyQfeAc9F09^Fxbz z>Ai@%k1#iD4;bd41)o#dZABIdu<_|tSYGE6Z~FOn9XC!P!)_%<)`pIFr{8Mrnt7i>kpM;@!+*hjt2h>EBCK6&oEUDNEzU6az-xH;!mJ zXUY(O=Ap>yxr$aLFpMGjrU~|)pjK*{%D?rPV$4S@>;>^|p@{+dGFfuQw`mEFn6-R z3L&?ue7Z4Qwl-9YxG46XR@{k1u-e0AnskO_z95CuRw-2SQ#sC0=)7 zuy-}9_!;SJiOIWOsPnZqWW&tGb_wIiEKt*xUuy~nmWP;Ff><-NM>M&~-*3&zqb9Qf zfmbk+xQ9+5GWfKcXzjuYF~p?At6&C$|HwHj5EEQV6_l>OXrbItLv1B{*s143a!t7J z&duRZH3$B0CJDPtl$;-Bvj&!;{?A63rXQtE@THAmtup3H6rR%VwFR2NlLCSL?uidO z&ujG9DkP_Oru?pIH@-j-qd}x$N8A(qc80{vuej`b%Udnjq9cXMuYnwMx1np!GT6xz zIzW4gg~$eq_ndqvF=WJmuuxb*X9hsL&<#*8-M28}MM$bub^B%Vd|tndKVGJu68&O+&YM?`uGEX$+|zIOFNrzj^Tp{zZ%TQ6uyz`(;^_QcO|w z-c$w30PNhG6t|1K6-`NzKS}?%ZD-qkV zO~PP-G=;S#T23Zy4{P$CAEC-Ee6qH*}QT>U0o+~|pHLM1r>~WRY^>Zjq`BEWJ!(^;UInl7Nf1x1tm1>%2u!}k*Gz!+HcLlz z8H>JimTBX9c59YGD4MHa&%~u$@bZkB{v!k(CH8YxDqbkp+j*EWq`_pPxIXjDp&R7U z^vDWq)OuDX!tO(HSrUpD=;>L`s?)E&bsUAzSD(^q-pgt|LWfT_noql|^>jK+<}Qda z3ao}N6Ssy}&$Wl=W@U|6@r!8MV+X!bC!u9ty#7NpLk}o!Sos76PBn7`uli_{o0Z^A`#ep4o1*neVXLl9uHiEZ1U))78>1aQB3u4Dcb0^8|3 z9p*EX3FskB!qdf0NGN(-t??h%7f_anK$RD6tO&Kl>Eo$WLrW4F!j+{l2HxF$5x!$9 z)6-OOfpG^o)%ER=d8P8LOo2>ht0)}d(}sKt`6810g0->=bF+lJCcJ2d2}06`8^CXC zS91*C>ONc)I5!~Q^w~FDhK~dAoj9%xWuzrv3O$sp)N zil|IysWP?N0ZEavU}FSJTuXXcO#_Ovc-i}=kZ0K3j;uB?b_j-m{#I{Fk^vfYVWMM! zOfqt#qq7F}^p;WGT@D74(62Md;5k2CD7+a5&D^USh5V-u&4k@HXruA_T@w-%JziDr zU6|wyiE`WIFFOaKa;mx-f7cHXOEKR#KFj*g0GQL4iyEY*LFzpkB8{E2$7dI?O=OdH z_>S;Illx9vJOu+;rsq?Q^M+d(j^(wOVY!&@o%`V-nZD8Z|A<*f$Xl)Jw5ZeQ6FrR5 znzyimp{h`|$)6}_`OhFwz=36D=50A>S;AEe&of^7$j&{)Y13!U=!S`RaTe}VR)MVI9!DF{rOEzMVr{2@Vr_9d@nN9u zfz}?>N1B>FXV?k16|-Xn7=eZhsoG~nX;C}6F#!t@^wAkl!*;6DB0#$%*n0`fpG-M) zR)tWYOg!$~hHREdY44UV0cR6WdwaZ_!-G|djnwY5vB|{|1X=Y-Nly_;uy#-Qa)7$` zULCLRm8`I!ib|&kw+{GCWuF~gtmYfX`|R{o4nyh}D`j7yy^-)s>RWiREh5m495?6Y zl7)D;Pzw&o-Pj)#`d|D|;Bo;2WdSbXdz-L6+Ne*0O7OKOqQy$T)3uC9M&M`-^NJ~R zE}Z^bgWj{sVY@>?uri4|pRjF8ss+SNWFoVjV5+f(3C+{JUD;AGMWjejP`My~)Q5w6 zH>Y0rcRiDxfA}=sF<)gOv7+PTnpxE}Ju>h=g}nX-s2`J@0@nt|6*%@d^Og6sKzM!8qAYAWFi*puyQ%Hwfz^UuJ!JF zMKm9yUKxF#q+ay@=C@hCob=Qxv+4U^?hvQ*m_o@u;X-o(@j^G9S!akiSi=&H&w?b3 zG-Lawe&PW7;M3;g0)hfx02SsNlKj&_kM_oPL}<`vqlby;(0yr`P|8M=AIy|YYc-W_ zko<=XW&!7&Uj&HgXd~-FZ?|Ve@oAzCW--CdAf5rFh$t{UHwj zm3)$tjS<`Ws~rBMTgeHR#ePCkAC;QH%}rP}lhqO<#dzZ%@vZHj|9tU|S;zub0gT5a z?6nCn59R<_#7s(0C@~!_icEo?>QCwvNejU421Vv|f(iRt3{BUM#FMj^42fxmB~1Cg zecMZ+$k+yVpA_cPGlIgH{LD1%p9^q02``r%Z>Qp9QWn z+_qa zS{_Au54o~EXCg9r*NAPh+gB>epH<&SQrSK>>7y`s5IE?jZgveR07yy5O?wFoj5Bch zCxH|5$j&w|(Xgrd{M13xkCRn}ZPX=0HZnOCVo;}T!9uA)7i5`5r2Eb@8IS1go zz`p5Ro04rqwI(1CXmhg5IB`P!w6%ReYvhwan*Z#0WxfM8;rHsIj+nhmuC~wel%eJ6 z>DNDN$k%v}+`@|pclOO7qju);m%Q@phXv@)svsf&UB$|!zJVPc184Qu3k=oqPFx^e z2Hf9!0)t);4QPp*y9oH%6&^ zW=#vjAq(H0hs|3dzEE-9LfIxjgTd#*QOV=U6~I(M!>r)-EsQSfoQ=go50!9pc!WN< z^m32Q8g!l;@2uAMp46CJ2p5TR#`fytQtdXCZN#}~6*~lH(FZ6L zb9}T7sx`8xQ__?cdi_=(;VSrTgj_t z?b{`&I4gR&{Q(v2znspOV!FaB*VpT6CX631`>Kgd<7z`)QMa{=HsxJ!_E1WhBx#XAJv09|gyVsI;FP3#J3nNVE#T_gcYf;g9zSDkc-KNOrP(HI${+G&MmQEAOwnoe-XeZ;t)f8Ue$% zFBbKPnHeV=q@!Fa6)z1f5sLCi|R=O)a?sXWF%M z-^zlas&e?%LstvL|7G2$(Yr6#;^~}6G8o@fjji`hfFu6`Bof>y1$a4&4ro z&!!!3L;aV@+8>0GVBc86r>InE_?yoQXYHfCNI2uFyuHs{#?5!Ui)~L?qUF z>^5FKs$dIMm$kuJz?J@qNTs^R$#JO`4aR>Y9X`55QM1*j7y4E0r5JB;L=fna z?dd3>Mz0onA^ew3)V6yWK~bY8^-G2KJ2WzBF+Q&@b|9>2P1JRPDKCag1d^_HWuy22 zK^wkg4U8yJu&+=E)*Jo=L#d0q2FRh0ugCjOA#2Dw zVb4YjCj)XYxK998{zNpp1e z^(@+6lT;u2_eji2Gd6Ex-9F%sS=Okr<7hWg7%H2C3`u~FQ`{ygAD-3a zucIp8lPDW$G zG&lhNKLEh1;ixQ%$Tr@Pf`Q~Bxd2-0z2Tz4!K`3x%1nj2;P$V49fA_p3wYxk+9h^(inmsCLNru51!pe_hznEmdlg*uU`{=w~UEwp_7v4#org zn2pZ6dR}`1waZbvkel&J(^R&P{A)~Y?c!z&WF5f!eZ(M$wM+uT^A~khL@&z`k(?-<&DF_4J zOy2VrrKRnwEC>WRJ5vHe{!DBWhn?II|UtUGT7=$tE+MTti zna{wzn&s%Z67T;4>MIZSHG@xDV{1e?0*rzGY#qy-GnyWSMX8CGgTF{)B$9zY3PY&} zRz~>%Fe6?6Oz#?jIU6dVM#Y(|`FUGx$;I4KI(ylC)IRemmF)mQuWEU&A9I|DaX5O< z?S`S|ILP*jDO*x0K;UNV0S^`hnS$ec&v8E34L9(hawNOZ1JfEp%=8Z6UT5JwecI38 zmkU^}%bl1u^y=g!6?H8J!+ruH{%bYmo659cw@3LMH=?M{U7SgZ~_(VL1sHq#}i zhh{-UpWV~+RcE~y+9c>>)3}9b-lJD{~Qmo>uLb(LBuAiK-i}nyuASRP0YZ*xE2!*dkp%DS3Wim z>Y7$m_dBh20M}eOgi?-_lqoTUrp_anR1?3C(J;^{P{XXx7C~bgT9WTILdVctpPRY$ zV$O)1JV9Xo2N2?_!`pj_9IbXN*A7PQ3lQIjKbC==Q|b$~LsTQnN7tE|ltJiDkSUyj zp=TYI91Mc-^=CR17J+nEqpG-_E$gTHr)^ZN!&~xky=|$+?B}+czv-TtY(C_1ZxK|e z$3e-du@e0XzW$tEfD?w~NYuX5`B$Y30yKMJA+6r-*>+%5` z4RSD)ZM{iJzvce|{6zpf5L0TFuJJ@uIOaRE)_ChY8>88usk5&t9WQ%x527Sv@m8-< z^%+or_(mK)IN^R7*3=GxhJZYP z_;xr;caAZ~)gyM&)q7?Ga?-b7xIYe70(hg>LUhhIs1B=O5UMtR5d}G56 z!9F=1{0V<%4=n187oUC0Rc<81^Z8VcH|&#|{k%9^Zsq30?VWlXrFna)fzIk+;ecX) z&s6UCcVcBci{{>`SJBCC2F7DN2*+!peY$=+D+uE=K$&nb!TAfS!`9bpJnnY+5SXoJ z=B=;z!ANXbywKMSj9Ayhr7{UWlQ4{X0eS6~B#Q>+l+qIbdK14F5i#3rok3IhP9?ix zGq_Zy$MmXORY5|<9>Qxj%8&Hx?vgzIj6Ktnu!RJuh6=! zKfZyCM)g8Z6WbkN$B~lM)Gk`$pPdJ~8*?*I39h-b~`^`@taGYXOg`CdT zFmywPJ{O*ELmP>*I`5{a*#Ce3*@BbxNoVT3-@x%6vEM8A!s2upwt{-+*j7~RbJeF) zk#hwEz#&{XhwIdFZeAwZF(eUdR=-3I)iVfO~muw>8up2k2M< z4c61UVNyTW&EgGpA>D1hd6%gkA6H;)tTK>kKiZb1s8e-bJ0nzmUW+P`We3(dJ1g4- z3C>|^BP=g{uLsK+Mt*V#_^)o^fI3;tijm# z$bdJ!UvvV>9t%|ksnhXU*!U`(RsU`WnlUC#mF7@a&l@;*-YL`nsyi-T*gIfxH!oJt zHle~DpXXPNDd;!KRhOpkRIR*CXhR)u&%ps_C68eO7V-y&*-J9_~zLI8eR8O8~mqf0PtofT8aAu z2)gLEvRg}hb~_9&Sk9;Y{#j~t4iC2stb(;B|Gou{CcL^Nn<2!Stfj3JJkXKa{QIXW z)&OZHfivh5Hq~kL2SGB#X9o(IXQ`dyP?#J2<&k+?g(;7fQ{V&L^~9Ge8VYp<)RyK^ zkqmS3O7I`&WVwDXu(?oqJ@2`J#*Mtga=SeVc9SbnmWcrE75f)o*-wI3^v75@j37;n z`T?AC!TB_mpYB(0P9_@0p~Go%^&VOLw;!F-qSM=Mu@bFl7(OdrRC}lWpmwP!!2%;x zsy60(loX{P!8 zhIGl|zN2+9cI7XWo##IGbPe4V4~N>}7}!G>%)6~EuXd5pwE>?1#|V?Uq8I)E79N9H zx5~uMeOBF~UUTk^fnKR4@BZTT{B!FwnO|v9_=N~@Ye)7vpR2q`x+RWXOq;9{9$^K? z#TFW|5Q-)My2>bS-id|pi#QkoEdFO%?*L>A&_tHlLwFY^a!5z*r_GBkvj^l!Qawo$ z>mHy*zb$Oyi~DSy)QK~XfUyIK^Jq%JSJ4kC`Ax4btnmU>Nt6;lY%`^D^kjv*C4t<8 z_9vHfhd6Vjp?1JeX?>lfVBp6RV85w~p!+nUW;@ZCLSMU{5kx@<7>|DOO~u5DON1TL z9|y8;o$jt?KDM3RCdaT2`Gtbp9*0rW-U>xr=ej3EGk2ZuJ?Qo#RzhZvm0@!`X;14$ zB^w2E|L~o5j**K{7Ro5$Eeyh<>Ut1$y7w+UpkSB~yoQmFA#han>3TJko~Zr3h35cI ztknWq1d*Y7xVJFzXTyTU@A7d){uY!?M)S_bI(GjeaOAaAus%-$aD|MGHS>pAat2!4ffi&ZNC1^V#7*?oPP&iuXp@zJ3IsXLE{bGy?x|b3uE-6|q*>O_Rn&^;e$} z#*<=24go|Ly+H9#MaL_JxSegm&c)3pjO3YFFy*4!YT|)+Q#TttHd=dBcTYZ*32OUz za@LCM)1q>9IA;IC-F6lL#Emcsg<;TB&0XV z*Xs%)p;Gi=R87IR?N#HVUA>SMv_q6vg^?X!=1n1fb*TCml?d~4RA&Mf9Pr!%nn_q- z0T6-7u@|hFJaSTm455Z;7CdYHXOowdouR^b#2euhj$vW!5}{pN~uJiw43@(0C`bTX?vlA5Gbz=g&HF+TRa&x=kA*(!=y9)5aY! zVy93Z29XmY{T|8Z_Up6a*UjeHBD<>ipZ|)`Rw$@3CE+JIvIvYInQa0pY9oev~w&P`!u)p$KMylBC472OXPZn!WIEA0@>Ygg8hM%L%GqkE} zUgjTMoc>3nT~FA>h^)CrwWt-$#^bD3n+H#Ja^oik%mJiy9=qWP@(~tyzYhXboW^j1 zy?y)2*Z@;W>%woB$)b>4SIV?h>tm;R4IEz+vCK%iei;>YzMWb8q#O*3#vZ4u;d1Q! z1hWAF)d`-){M!NOxi-A#RE_Q@BON~B*%q!m7zP!MKIt)`@>h3ywP1@YbB6YytG&pa z3Lc_D)?fmgdEdx!aene*j(%Y#WP-3Mn)($eAZ#pO#HWu7lj+d}x%+1Tll3>#{bAAIb)8lnv#|e_ z;-Xr4Q@egosuoO!rt@LC1@!00d=mT&U1nqSN>o&5KV{jovKKTK#KYk47Fp{3#^U7x z$BkCOOUwm1MU!7sJG|X~1gIn-R*`h9j}<081}XJ4gIE58>puxKn%DosIUsRG|+<{WX*GaGN!iLlR81D{TS>XGOV zm*rE#&Az7RK-{Zt#bAlb_$c+QMLMEKz;XVeP}S(B8tSt32{J_n=zc*t9vSVp*!Y&V zQuW*~NC{V&@SVDh7XIS8RT177VscdF(D6C+<;k!uk7JOi7e&?rZ_`A)uP%7OrW3=! zJ?{D0jm!;))D$FHIji{;#rH@?a7XqRK*znwkSori&iXk4R- z>&FC@dqdV2*avqtB*XPG(OAd7JWCRySnadAjp6qBCbyQ;w+Ry0_}HzYZWCz|Ol7D| zHk1~xOvF}P%MXB&UqP}Y4zD*KIK1n4sVp*(FhOggxP`OMkHXX4eTq?Na& zo!BTk2C9}eZH?h2suH5ONg18S4Uns@>z?c|^6zfgC@Ej-0Nh1KhhH-y`q?O0|#>aRexie_B*k z@fSketZ+jeF(gmPYa5_@NIpLRJZBCu;YvV^*fwQA;;7o6gj1MTv%G(Pm7Bt{A57jQ znkPs6QtS69xf%l3IN9!9*hf82Va;YR79$xZ2iKLk&ndk@B-F#6g|BHrh3H~N>sDa1 z^Pu6}BN}_A&j8x8iNHCRI%8)Np@5rb>?ZC=R4!ym2Vmk99Rk zXMYZbamYoQ`_B6#^0w&`8#<(o9Y6DNo2CYGB;u&rCu+6NPcbf2?Z@;!?hQ(`W+p@nHfDsPo@-1wfnM{L5 z%{F1`!3Yw#ja+mRb(KVT?To{EHaSsR5mY|c{bcmB*$rfImK~i&Hw4mfEN*su`9(1%iqzsTxA#!8Bk{JA_#Yl<*a1Rj37P5q25T#7Q2uubdRje-<7-$= zaUQJ11f~T~q!bG&9KKym?ah-7<8I=xo7`*%sMXN$5zU%Z1YUQj>QOv*0V>{Sx>%BO z!;SWj^>Jp_SJ6Sa&Td!|Eh7H$%^OhecB(%g2!+y>uNM{+PW(tI%%H$vd5>E^HYp(| z$s?NUU%v8);y_Xl$_X(ju@%)mzlXmxTh%zKxCsm>W(I?IG+Lpr& z3Kr89DQ*htFo_>mqN(%1%POQ^^9m6(x zfO(H}6v_0Z^d2-its*#Mr4yzGr!UUOUOeip(|cU`2}CdO!7!(c1g)X&Mx)L#+w0ti z$Rzxpm;elUCN+aA2QjSL@cT-HfiFqj9?2ZL2xiU-h3LRg>13D)OiOrv(x}-$rTwQ% zU6kZ7iG_e+r_S~$nFLWGfL(Ql+<}t%SCGaN*)KyWcj}{!vR2I6#8{zU^=Z0RaJepl zNg4;*Y|VyVle#1RgTZaZLJmdPRkqhr^j+wZQTZ4iiJ{QxS@_M-N4ENnG;+*a%aCl3 ziX$pE?kQmLI?U_q~|LZY$R<=Ex>t5cKH&;jWnd zExmU1j$)|Uz}Phpx#`*hA7EPrGJRoNBOzKualeCU6bo2cWR2=SF~aR)UIrvBULaXo zn9k>UQ&LXVAu0daSdEH>Drl@!b!HF~v^;!4^bITl)myEyOJYW9su+KlyS|BMMF04% zxQ9iLij^xi-hB75zr8&8){Sh9j_dRpoTsde<;}QKHCroOdhFZDi`y2AJx$xCw{HYJN=xSk=v5LIPjbTfsxF>ns zK2(jLU^}CR<39B*1iHJ|YY8b(=PA6Uyu>lp=+v#rFvToY97mlEfAVvP+yVK^g6KQ07CDz%#`GJiTq33 zvLf5vRCJ^UmMQo}j(Njkfl^q8(#1dtjb2t}TF1(YuA6LcfK-T?|75LNVLQ|_zzP!0 z%2(-%axLr&snt|@$Ibi|sga??XPwR!eVEdO_cFsFh?Bk_;iHz`=E#VBUf=O#? zEbS>%O*B@XG~~Iyq`iwygp~k;;a8dj0{BTYVLCo24I^_)@T%FcJ@*trbe{zQm} zbk`ElUh#^;=}ISJ_9OTVf^O~40XW+%<0Na8v(%ILWPzXlF>MRF9QLkr!Kt0e+qnmt zP;KHrb#Wid7&tK`mxCZ9UlRE9;bA~X-G5er#3zlJx{!81W7B;@Ng-py`m@U)8oxIbb@9Zo0m@QFw zYbyB(<&-wc-&S42(%6!2E79aMX>u6w0Q!C)vm zNtRn-KAU%&#)PFguXZ@8Rf9c%%(x|Eu3 ziKa_rv{fpLpMhdk9XHnyp_C3M=>h!}1i#Oa@4YREuS$$&EJrnnTe$<+hD`9I7#Je} zxMPc*K&Js4e7;VTWy#7|8%6lwfX9^+2c|8exuHxE`J=)Bw zUB|b!Hm9y7X`@xo(?Ugw-8iZ4zlM3pg0q-5_! zy?>m<2nBKIiUXqvU~?(Y9M6!RS5^qwGN2xVd z@^vKp&?TeD&SI$2o+*gwOs7&D^^G)xX!GrU%RYR&JcR?pJ5SHrdK-}0T=t(73We#H z6*^I$7zeJ`Nfrq>=UYf`?Xm0TNZM(kWO%o|c{8&VjEwUAM4r`1S^0U=R^AXOw#p*l z^f)fM`$hT&W(>-SMUba+Qv)zh=zuo&SCEH;8}{!cm($my(nb8gQm4?BL(nZ+c~XHK zb1cy4wKF@(Ue8u}V)vc+Izii_MS)Zji0X+8OUQ#9wYK^rOHCJ05j|LCyKVJ%ecjUd}1Em zjT;}u;uBWV*?UDnS38|#zb0v`t=5w}A*TwF{=)A{D7(|HmL>+K(dvp1sKdQVrD>uH zMOwwQzehId?&il@lU|<-^ABG&dDKuJF<&~%&1<6E?-ArvASd|~ihbE=$y9UT?0#o>L zzNDC)LJ#vXvEZ69h=PXj=vuU1@ixC%)Qv)`W>5_rN6Ibd$32w|@_} zw*rMP{~#MIzj`HPM8*aK%LdD4ssD)$dM2&>{nR3hN{F7y5;FA0Hl{r?+ zZ&XCNJ$*91@8WF-LZB1LGdY%(EBwo|h^#?tF~V$G{z$HtQi0+@(Sp>N^n>p~AC*lcaJq0m3?fI;i@EW`m|A<>E7 z6B>1i?_L{=jt&MN(!vT%d*N*UFod5)R+avbHmWY*9-*^BykCe0M#pSt$$$W+1|x#) zsgTvX6<`zO7D-dcI9Kb0stF@U(KFmK=I&c_ij?W+mr~)Cx8^jm?7xXP>8qX4rz-qp zU=IV9M_;UUoK~o$EC?w}}34#`{O}WhzfKR5+36NHTOyS|B^A)B&1Ail#uqVceSUSPu$Wq)$x(<9`QW`HAnlPlHIKV{M$k2slnIj zT}WDbU;FpCfrP~0FS$Y)TPKhwg-R*XUMpyyv6nJ$fpEeddIzzL-gAH^w zS~StSI&~I-0`wW;+`w>Rc^hbick8s)!*lP*T0!cYl04Bz2!c~}_Fzg;hn^M-N@*E} zD0Sc!XVu*5X>dSHpMN@^C{>Di^fY&T$ja)2t`5^`DL+*0>Lpw|h6wThXbirk?ku?&w4>Z3+fqNL;M3DODJNEyT zz%)qiMy<+0F&IIA##(>cK%EwXg5edKA8%jpHO?vM~W%jn2FZ?oX4DRE6>Z z@PV#aDnNTG^XngR+tZR!>1_b?>T)HfGIofb0+u#=#$beO#|<>Vv`=2Yy(p*No4c2(4d2hl2tgwH^%vm6G$&S^*W<` zUB=8~7H+aXwmRut7;H4gX?@y^rS`TKEm8X6pr`3K*^~-PRvLQg=Mz$PCF9SVfY5w# zQ}=1rx_`t#1S823k87iErdps-*s~D6A`laxH8cPDjB!vv)AzeahDV_nZzoS|6{**2 z*&@r-(f_k!_b-lSKl=fpq}o!@CQ%K@ZTxbq{6w1EXh8h3KeCO^X;xwj!+*E}t*d%< zb)Kv{AIL7f?gU0&!=#5*TV!ULg{i0#ZW*Z)M?mQte&asGeQ=QuFd5iMWWAYt#N|aP z9&M^h^73J&>x(xgOz$nG^GU1)Vy}QqclOi*2sT^czsm!7ta(~erRd`M2>bK3Cu9+K zk|3gB;vT2ENoo15ryz$RY?)HeQedAyaDp|ib1GF#02*;~N^(^=`Ksq-*CdNo)R^@$ z^}L}~&us1}1`_QO)BD5ztRIib4z6Imkn?ZM)(E%ZGY}IeH^D%hWIYN zYx4&)>BIz30dcYtb>sh`ZA5J4bc1<^3gm`PWYYW`$pmn4Er7MVT-uPjebOZhMG~$0 zK8(x7z}PYFm#XBVPJ^c0N9Ilc;gD{DPY^ zHITTtJ(0VlP)>@w3Du0D)$=9-C#ZwS4WXi^R6>K(_Tl$L09uq7P0nnNHQWrTyr&4t zS2W>gaYgHQXA-96O1AI)l8_CG4*4d`X8>Bc+qkVkk5p|$xn*dw!S4jt6Bd;zn z`1sCXP;4m-e_3!Bgx41a?xuK^fLvJw*?I;cOqpRffMxzl;kPtN!nohx#SdBTD&lW1 z7yQz%^tucXao{k?z8L;SVdnI`Fu#LQXHu*C%`L7V1<6?fMljAi#xO^#f~6MjC6mva zpox>t;lOa5518uCO8a!YyVVDPV&ZAqOY^IKwKG zLMzUl`t7pceJ({JZ;mSnm@4J(uXox%1O~t$w&F-k3glnN@x8lz3nQfyl16Q7;)CI)OuHtA({KF0O3JRZm(hwH zQ0^s-@l82o!wJe~*z*RpIzKh(ZWBj5d;e036&d7jKpIFg!8iU2j&MkM53@#R_dCyB zYtiAfkCSMhx|I}(gE6BMZ(r4L@AAh7o9H3jA{sWIF-_=pI?<51G>T5~fq=IuRpz$4 zG7mW5NF1Q|9qJ>sy0_2Lems@kr4avL&9{ixIrN&Ei&#=3Sw8 zn!^SUmgM|;)ho4!HVlQ$0_V#Lg<~Qo(5X5nH0OH^T*(&L6l``k7asivfybo&NdnLL z&EVq+vmWo^92P-Ob3gPLN7V|rr-bjcoBHkzFZeh{^{`Le`TRYSt2}?@B5d*jvgp;p z*0;n$A0t%27_%~sRgwqMK9a3_N6{EO(eRgIQ{@$dJ?d?$=G#tr!mS)+eF6SYUaopS zAmNGT($BCM?ui@TX!1<;%%$5*r|)8dI=#x$y*_)`6C1?!!F+v2rfx*fxsqu_u(sm3 zZo<~H+Bee!Y~N*o7bWefG8P!Rb%5cU`-HkFN6cy>T#tm2M4M%(ECb-mLYuxuqRzP2 zko3BY+t#T8u&5i?r zwCx>ywDyX4beWoQgpHggt7C2+PhQrt_tMK)Grf|cjd}!EaeP858g2A88!ff|>g+M+ z@xR+hU_;nhIB;8O=y@u#0;d}Q4aT-bfo0Vd3+0mnUiS1JwyyR##Iq?bNY<0(3B-KI zqz%I7l*QHA0A62<-slQTqSw>!$t_OLlAguW4-4uDnrk*CEJTHFh1;JfY!0Jo4b63^ zLGi2b;Q-9httSDCq+aUY`2-#n>C5x%8G%wfIlq|r2sV&%#KA3NWMTb>B+Ks!&7cwA ztR)tcF;l>S-90|=v_pMe5LpnQa4}iuXFKk3uXIv3b%;fkmXZ_Irc#Yh;ZunzOn7mw z&EjkIs4A>|84w%4m=_uA82?mRh%AY{clKxnZ9sZDgiV+~ga=$3dbSs0c4ugakShYI zpi4P_+U{;FAj8BAnuVgn6E_Rel zNxk-d<|~1#TYM^Xnc6obhAex13H~_?$vZ@<&Fn!Cz@row?}lC5xVY^L){0~e@F?2< zjr44JyaFf6>1=y*$Zl_$*X&fN_dK8LFUC4CI2V;FWqDaJp>-jr z6au^Q@x?_ZF?RY(x$8nwNx<8@zOc$f3SGr-p_LpPLL@f4`~yLS3`a0?R;X*1gt*bN zMHlk3CieX)^o>+_tDh8-{F-j9tD>nAr%{~|B=m&1^)*vTpjo)D*;6Z<;%weZuMMD} z;izf8X|8Fq5g0aaQ1+=NPNlSbPi)+R|8PTG2-6Tf!N#=#+!*6*-As!VQ(rRZv;bmW z{Xa=hdj5Qg<~<4_mw0VPZ)Jlh=zfJ-t5O&ZmBU?#*Zd!E^AZsrIZFDmRuAGceK4$g zR7UZ44Js0v*mpuCl@|bVndZY|yd7%}!+y~|nH#CZ0q+_wFtUD*c61A4SKqvLIjUwP zLm94(NmvZE_zho+GR)N<%W4aSwVCyC6cZTe31I{G8%(q$P^`i`WAD_m5r>V0;=2^P(_Un**mVaUz$8dO|7b0igJr_` zZq9af?Jry>i96?)PJTbD$r`3_m)pkFKYdvcG2(p+n-rzu`fR z%a^B70(8M9H0Nya=C2)u8#~~nCAI;mE-07}Anxz7o1jMVpKOrePA2X!@ z^9~z`GY7`joIR%r7Y{K+6C~k7nOaDZEKb?`y;mjxAdG0{R_{i3ih*WvwXGQq*Bo0( zjccN5u>mAjng)q#pcnT%88{Kk&c1RpD9e%(dFn-5b|~KEfGN&ZBAZ68HumDOh9K?B8a0rdm9x6K zKxXu%u$pWOPblL-P-*gse~8RJ^-8~h-1HL2?WOyg`k`}eniZokXxk-a13PxYFV&AX z3zAFdRg1*c|C&GYMmuvt5P9hq(d9*s%eVF#4F|82jVy;g+w=**bmg9-CfjJJm}DB? zIWcCR{EjoXT+#4=TW=^)AJ3XZ?*U`D96hv!`2N6C;m;v42M_bIATk$!ikG-NOpNiw zT`5)NAjNTmdcnbdE<7CzzbsVcofNQED4h{ekN2r0pg2V9TCg~7o%)oS8Y}y@j%GF~ zXY#J>DkR(u@DK?aTIHdQpT&X_D$shI5J5?cJ>Mrj#^9!pDpCSfjYQ~*OTcP3WbtvB zBm2urHN#`ta{l|{M^X1sm~vm0DoVtZ4C|rDIu9IaArMv#G-|I|A7BJ?dgu-FR_H0 z*BFP2g~p%A#QrYV32OAY_*f!^99HI-eFaS~cBKs#&!a~)7feW%_Q#4kQ3sdh6Pv<;VA2&T@OcA|Mn=WRSbLxlV=sq$mko3B0QK9*&@TQGgBn& z(~~`}gMOHv0ck64Gg(md?oA(x2#XROh6?x3v_-;+SvZo%wZKn-othGX zk)FWmg^4(fFGG@wm&*%&`t(l(9Nf= zJpkalbF%dV5a4TQ=twBZ#6Qzk6zN2Lg5KA;fOl6k;5t!qu57-F^9lc1v%JbKeIMSw zgTtfC3T>w13a&zJZf^#{(P544gG^~y`@iiegK;$9HBU7gsv#1sRxOg)@3wUcdWBTp z9pF`Y%nt8ZP?5DlHl}UY9fey(tsP=#<-CWk$9g|Ye^6!~dQHV~2ah+1L)DT;)XLov zCwsjfOhD*jdiI|2d*c!$gvD|kUNo-kO1Z_`Fr-ODK0;7yow;FdwL?HLNqoGN2Mpk2u$MJgIwX3mel1L+4hxpIC%OAZYf;JVy^DQkW zkw;9%KliED=h@^CTOScoS^egE;tU06JFMlxwLX}1GyH|ALL8OhS7C)3B2^P-5{bQ= zS`jtJ0NSq5Ezj{T)V#zNfeW4JYM8goQb2# zPdG`f@^t7wG4fBP(^w(=s0#9`z3NOJOz3BulpBX0uO}36v~W4lAM6m}tFf4J={i6} zcQOm(+Yt&!G;K$dy~c`di&9JdW~LGxf7L zls`;s03oyaYRE+zzBn=qfw=OL`n-&i6)Ezhtv0(ySf9d0Ox19uQgQA#vH0uGW77`8 zRL|_rUinEx;LvKvUihj|F)iZoex3#TY+tJ1cup;oPP%26hQy1xNUn)tp`A5vi4o zZz#x^jUy|%&~sqa1YIM@zv2Me|V^@SNs=^V;0 z%94DnOQLuZpN9+M!yqa)FKuZ9;H0_lCv0FYrF*o!^l&>L-MeOO^#jc-%1sbDPIG6Z z0z6GZ@l|iAj#s7sU_1TitpT2FgAR6Fp7QD^ZN@~7Y6YlU%GrGy>@9FdzYnUt$!2<> zyYOI3*M4@>rCzNut&CvIL^gw~F^(FzbsnaXPm~JUm9lj@uY3&<-a+#cwpT`TossnH zaMEJFi|oMw69)rO8+)F=D6|hh>JBXvZe%eqvGQ{Ma}W$PA9<=bzTl%m$q1JR(58Lp zKsT#yrIkoT+UBjnu}PL*{i<}wAP$2-{=D$I{1hVWI;4Ac!SI#+ z4wZWpP#L%RRH6nbLu2@xT;C#l=297>^1H_sa#utFhlPPxA?8NNA0$GyA+4I;27{nt zpmu00Xd*T#=Sg%l%+7YC(ee)=d}au%<4wGVG1s@$D;WrLh**w2WE3;I?p8B!JXivi zqY)hVzUY^%`}lLB+1E*K7ZsFvcj~H-=Dh5$vg08V84+K-uvB-SYu!TrpRfZ^)&p0p zq^dWu7>SQXY`R2S9`l@qInLi@jR#hyR&DN~l0L}!mY_N}ap?wu9%$HjnGleGUF}@| zffVP>Me1^>rI?*w=$E8rq^pypR2;RR?Kz03{fpiKFehK}t}T|c%Ae@_?nQUTK9LjQ zT}6q&GQL^r3j0FKH-qSi&YzWead6dD^V6u!A>uc^0Px$M;tEM(K)z0Gy!DnFbAade zGe>r1lz%@X!ixjN6^QY8Y)f8?oRC^h%H)5rC_hSaLDdkVe=j5abkgo5$c_x7>h>*N z6G+zCOns%F7qTkEWdyYJ033eDWtc9mI@&G|!pWs$6QXU3roKmZUezw+ySL=rI`?{L z{#K`NfJ48J=2=_3sskWslort=j?ir42sfF%)?IAWNDCv_G=S&`oocov{0cW4a@RCQ z@S(^eb&Kv>iY2|}%D>5Z;=5Yv)v8)g-dvgm?%0)z)uc|Ej&S$@+pxOV^3C z)_rmJJ9X_|o{Q2X>aGMBN7ITYXi(HII`lC{AVTkW9lI~ zEc{HoS18h7*Rt2!|19RR4YGVN55X5+w%u6fOC%M5)K~26@AZQ?7}LCd7XYCFf3tZd zN`-pDmcF=!NE$-aE4I+Wv;ru1U-EvP9Ftn_l1TXH5T=Vql!C?E|1*X04=s)(j;B-M z8e1U)imkT3oePo)7w{}Bz+``(sw4UW7Ol2aoy9geA4li*^RjSDzTT~8NNd>F2aaR{C3EHB4#1iQ3g)#zmO5J$T2w|YE$ZtW zXMi+nfzPGy&L7b?DPVuHsf5KHbE&o7Td3Bol7x&@l>y`Inq0>oO+_#qQ|%v8SXh=l zQ6Pg=fhqYn#oU7!W*(V6n5rANM{f?4ftT~@TEJU>zs0#7=I}zKMP|4VKDeHjPY7xJ z&l!R6O!b(O(h{D*B+Ag!`X+&H-Jz`#SSYDgU2nP^^jE3S8)K1s*s~Fe_@vtV9mGQ4 z+)#TG9(Hxos(mq*?7%1fXh*SYQhw=F|7@tr80r#|twsa;U7%7< zxo~D1KP$=)Rp#C0CN}wW6EPRP4rVmMADX(o#Il!NKY^~DrV4l5>86u_U6vlQ%e?BR zK9rD@P$$6-1TE(*2|Bd%LB25e7t8>2%|V;xu8mRW^6tn@4L3THhYT&Jm7Rc{FznWq z8r%uU)0LzRb1>XG1D^>A`T8#9zVdUBa#JBEFLASDa+QYBk~dgm_*a>mLH(pGtc%en zxiO>$ZM$1%1pqxvd+KICL&QtzfesNN(3!+Z48^yM=x0cAnqiuMl8A`XYfpmVSg#SE z?CJ)KO12$<6D__8$aRq=*4#ruq#RTrf?=bV%W&zz-j&0LKy%N5{lG|pQ8_j{cR~{5 z=j!5#)nwdq(GM?3( z^3loaJNO_XrD8QkB}>gQq!FW3L=06Gu7o3sN-jiU!?MZbL`ls^ka^2#4IS58B4JQX zDNMGmZnoDw5kf);9qtoT5Fg27H@}=;XYWr~p~a5fCi2HP#agl7zkBF(FnBV){BL_$ z{`cMT$t@2PedD7;dnPnu#b+DEwYpQ5Bba7B$mK-jKiOJV8TA5)D3Pc~9~d$S2$XqU zGI0BreX6y=;9V}&x`V1$Iudbco*&=b*{G=q>|_lm_>EbrkhZoNpPkFs>9`L<6FFe} zi*&_#f8=Jw6FKwHzFhGplTYzkHxBWi9-R&H6kt0MXyS&gP1ztC6&j_}p8X3U(ac)% z>7uCw*HTHXndwz56 zaG$jmnHxKY5i(L1u$cyQ(oL$=oNx5K|7f3z#}mXc@WRL zG+wKI?B-^kcIGPCT1f;sJnKG#m$9Ohd%B_sM{6d}UT)S_EJi~xukEvtyJlKt!jby6 zpS6ykhUx))k^l1o=&HthCLy*(IGcd1gId#O3$Hs2GC{tu%!`KyKJfZc@7hy_oS~;A zO(tMx-ilDR=E-)dUsXY_Hix1Ieuc)x;DKsp2D3%2L{uop#~H-F;;*M7Su->0A$w}b z!PHjr$ti}Fzo0KuBZU!|o*$DzHiGsmqes{ClX$a7+&nzo&sBu8ta8G|nS1_Bl7B~{ z?Sn7R(*qW5a7_lhORw-RM6K3m^J9Fnyr-1~3K_Ucve}If4Up6j_M`H~q=*%iU)G3r z-fdifp6gI0{LV*ZTj8X0(l|<&21zeksQ?nxFA*(;fIKtCDEyHvVMv$w`-{ z{y0itAfBRuu1R)OXq+E4)VT2ICkxff^CgLucXNP?MC&|5dd@D*3C~1N>O-3dH4^0= z;dm*J(3&xWHryus-WWzkLa33y!hW+k-xDM995`ViA~IC&W2m9? zF%kfoiIkgtdW-gP^eTyywT2f;oOoP0nA$VhT(fIg^f3%n3?0-l`zyCaM)gc_IJ;H{ z*(ULl?H4T6UMaE3Ov;|#ZukKbMXC~3KI3hxTe!I{TmNpQt<`JrpfZwC1Lc>O%Y zw&E+C!-Jwds4f8iKLEfWXbXhx8KATY4<`@$-s>V*ugQM$!^h*mVEBxhCjPcuN*;~~ zwE$^&WWS*(Ta!k7dfG7!0(P+t?e_-DUNZ z5Hy9jWDT{%`gNc=SA8Liv@`kvJJa+d!Qj2rExAmgR-VCAB^*B2_;{z$)4Gg$sBAwG zb0zNSD)61yb^NjZotq+HiRttF~|cTAU0*o+9sn^`@{O z75>l7=~A4_5Do1uU^o|?z}wi0>Q_R9zGwi?&qsM2LY0)dMA_V%6ug9OqDQiAo1Db7 zc2uMrxAt0KGTvqyfcpapzm1V%7GfF<@bihwxMkYG&kJyfjBQ#no4T1%8Qy-B0_x?M zzN}6()gQjcW&Sm1h62w%I%ssG=3~L&iMg%WW|dnq?V@1#FC=SLChEz9V~2N}J1!!! zpyDQQmkb)~1e1pECS&!tv2f0ax_weH7=;$Nv@Jd!StR)(>x+JlMX@W zU@+LAuWjNSSJ9yRtE}b~fN*$DoW9&pp7Pv@X`>d(a}%uMh6a>h*ta|;60vka{ryGz zo3!bTtox6jb1XK#ue^N%KlU^Fb1zDcplz6R4X<52+z~g2T~GbB=KJoeBd~vlAf`9d zp#jI?8;6Q}+X9Q?yrTo>82Woo?~j#rah=Q<=ebD@;%~r@*6?D=LENRQ71eE?!iy%z z>|kYS4OyX(kQ@8-sx6#3jRyf6ocn`@u|p&N&H8brn<39z+r?3vtGWznynX(@cVIJ*ze>_ecU9r%=HsonQf^N z*!v&QE(~rqi(dP+43nGS)}l1s;ph38gs0ubg^s&pg@mLCKiCcx73f2qlQ4KA)rhHP zaFqWWwduSyaQrE(3$Y~VhNdqn59>U!Em+hPwmEaLDW2agnMg4|dLF0r8jZ-VZx()G z=Ccg?fU9JdnwxT1U{i~VBOvwemK%ww!g^IFHwy`y%4AyILy_mtTQgePULU0bGgP3| zNmhAVZL51Y5}fh4X6QZu=IKW7CN6VE8@;P2=wQe4Y=G_6+7rCN`fbC={e+l`*(h?6 ze>DRDZ5LsWOyW)cE-SaU5L5t#o|LoZ@;!VWxf@=1O}`i#04{j>HavsQ)f00MpU{$l zgDvo$wZ@frC+%#$z6SbrJxcfaIxt}2c2YWjKx@$^#G}2RQ{t2eP&qV8ikGB+U-Vb9 zCU+7J&!__@wPCnpY4(+c;0Zs$OrbLr6VLYu0P!Zr zseY&0T)stIIE&&A76@zzbN7&vrhJv(ek2Txw3h_^A#A(i&%^e4NF3KkRE0W>v&`YW zb5LuNRRgQ;`?()(aRG?)&Js#_Qn36eKI(X2jW)%>Tk~!l#yZRXFuP#^P}B`wO!(oS zAadJ&ByGOi{RQ|;EhKn!Zumt`%B`0xTnj!o7JeH1$p|nmhjRjmoD35A2k< zH&uRm*|2pH)B<(JXIq36GPQ_Q&l>e_?PhIfWx8s`iL8AXmA9$sz!xv!FW?|C z9kUo~|DHnc*?bUSc;77vnERllNZ6ic)W|$JzUW-C)XCH|`(k`%sET?P+zKM^do^_f zJX%tIh)cF?BNW{f8m8u(ac`p0YLigpO2Ov}lXdV+0T8hnd0H!m`NDzyGJy;Isu3!c z^g~AP7SIK+h*?qpkod4eMpo$hh6YT5v}#bS{?p`j$yRE{E9d3tou(DcaNYiLkqVdm zfSt5hQYC1^DsPIAX+EhnichCFyU})mFJ+n>CSG=uuMkIIc67eLJ zas*Yd7h)L{cYB46o#Bonxb~E5XnsSszzChJKvZ7omRJU7T}M0~QUHklVU#=Cd>i&! z$)`{<(YABGg^ z$4Np3!-8*)EMxe?d!hxUuPY+kNLR^&`XIqfqY(v3#p`C@|O5YX-Un z@)lKwiK8m4VWtmO{1)076i&{eSgRnsL4fKtcU2Gew>9`;(8Zj5zAR)5Zf3!X?4&|t zb%w@%IqaiaCnq=BE{g8p(Z07@jY#=Jj%`YQ?Uq$88~BA8zPW=F#KL+_B)wLxdftD=WQk3{4(A*{b?EytAg9z!_+l2xy@k${LJ9n$id9zpGXl8 zCCV>L7M^PZGhObx@qc5*toe`E;~&nnk|UvDdri!gYlSTrFFHlNhd#q0z-LL5d1A3! zg9nh|Mx$uE#+*mDiW%NKW0UWg{n|b&UMUJem5h8&D8sn3+V<-Y{9JcJQc@aU47DIarY7X9mIU0MP zmjHk)%`VdVrD(LDoR_puQ@r^8k77$pzOEjkREV<{q;D4mZmP5ImiV5*2d9m%5Z%TH zV-Pq}7_W{sUyyRbFc>}-S=Qv`zfG?9SP(x=PI;AQyK?UCgx#}x*l@>QnSSZO4IAdP z>5FGC1T+apmSXssK_7dSqY+7;fbZ5Wr$YH%#2>SyjtBD!7PukcbJPI^wCk&1VZN}E ztWYdKWZaJu?ywI z)diTxM(A2`SH@`aXxQq;1&hEGo(dFRqdb2}7sNlPf;*M}FNzh#Se1kY$zw?F8;dxY z$3#0woFp*~M~Qvj*9>66Tv|XP4k1wb>O8PV!QB}(DY2Hw@oQV7EnP@0HXhf=6~*w3L$}?(n;GJ zs`Kc{6Sw_YNeY?v^YW!AGa8C?v+XaJ#4R!%SGl`MEZT`JSGnPiLoqpc!#qzczcymv z`=TCv>3MZ;el3Ua?>PO55{E#S&@DDob9@$+lE>O$J2G9_hBZwyv{OgScN8J2+=^e| zF(jjbHOhWnN@w(K=4vl!-XG{?Vl`BVMZh=*^7{?^lFLkqv;&(e4)Xi3z%k)j zArP2I@-?{wrO2D6v797polQK>Hcjj{jdr`25nk>ZlaN31R)2*ba{^4?$?(9yf>fm? zHt}kyMH|YbzKW7Uq@BX`wjHO25O%(~5VAUmZtx$d9H9dnWo$%Z$=H4PiBImYwfDY2 zQI99Zt=x(2cC2BW6&s=IBE)mEv2wcc!p8;rV+$G6P&xKrLikkMBLSBE^BQU@s6!jX zsED1)(@X>EtOl5@f91W80>ND=#>o+fG_TOTa*-w1p5T}XU#Dk~5zlb)T~!u{hOffx zw~4|`N$gDX^Q*1`tGJdC=7~=q{|9InRzT-&IUj!Q(9bbKm&=K>;imH9n`eDeRCdq9 zpAuyH6J&hq3N61I(QwDsfO-|rt<$~30Q}e238QLB+itmQde?MX)j>i`IhtIxld50A zs;Yh0r&HdcFmxHt3Tjv38xNi%xM~w4WWJsKg-5?VZf4oRmLB=6a#iYbU*w5_1k~GuYHrm@kk*VLGYdB~pKkl4%r{5~ruWS;uOa#el;WpKZe* zD`==#fR_M+M89SJt`|ZO!~x~atBL`yxRa|*8M)mgzbWW@O>B6$h~DSz$7);{NI3G0 z`kJNYUuNvx79*Y!L)P!0%2`-oM%wcTcNT=V^-Rj@H|BbO9j8a}yc?9T!NnSK!G@Zf z{~BqyX`K19(RY^9+TZ)TB+STdTT#CU*vN`ry;+t^z}i1Laj!*w#x010P@c0BCYR-gG5Hgdt($l>%H3u3uPvk&u`Xv9h_3sqYb3#G((r*-(cnS z>Yi{c$7yg>7d0faJodN5j;4-R)Yh*i^!4^0V!>Xk+~G%eBEG3BCdT}AS zD`?Sv81wWre^J;8-@Yx$imV5~TkYKwA{sH!7u_U)NS!+*$z5X}K_gdRbG)Q0i^PFvo5_)*V1;=uRbU|Ad&dZkQ_8h%8{u*BY20xo2cpTHhS;2)gRnqhUZ z{kh`PVJ0P1k_TEi%@Uk#Ew@ySmWNwlI@QW^Es>~rLYl`xLvF`yJxe454dw7`ELb74 zN#`|t{Oqy*(r@AS%}(J;?3LpX5J{t|MClR*y8RxfkdD;R!eDgny-K2Cs-)}?Ofcj1 z)D4HsFObc7BWzuUJZ8GWr{QBsf-}DavVY{Iu3R?=)8MS-R$2CoC3UuZ0x*^a2~E1R zP9EmUqXAGiEM7e1M&HUddQ+CCJ^_m+i)Os3LIC2ribfWN4_^Z}P=4B7TPFqkz4=Ie zW9#Cu$o6~ZI=B|UVvjsv|AXBU9vOPo1(&}qgJ&ogiJbU~L#JRF8S6Q|{Q5W|+1NBf z&jE6d^jEsevMSU&EGe0Wl*7AN(r%d;ahjHIvp(+tXlrI%g(sIfN(OlyaBPQQINz5c zC>HSgfm@WtPC&I+ZZ;1)x6noT4gjRU*}0UHz?lPR+9zgD>cbjJV{?OQN@*;Kq6c!P zL1Wxl1~Ku*;MWR5sdSJRXDOVO4rFHJLskBYXQJmTIo z*HUU8<1|2y3np%tokijlE#MOcZ5OUhL`&E${;z6PUg5Qq`i@N|H z;$dp@^o^x|dF@ofdW^+?+O?^72SDGu#?)}(6riW!bNPDviYjr?JQOVx!&><)<4()bNS3WB2&@|el7q(=2nd+Bnnw-irGVc#( zqVF7Aac5gL_W;jqp5vn)9PQo3HmjLFtg?_W&fqY-f;*bj674~PRa}`bXs$tt(Avy7 zg{DuV^`l6f&i-;Eo1U|2#p$(Zx-jy$<~YiVftP%nn#L1iUGK9s5{X|wONs`5LdmWo z08$^S*wc@y2-Q@Lc{0(^Q#zB{SM6ud8Y%n=4Hf8T2_o?t-~RiL$pU`YSNjrKKKSjz zRWR^KNO#D<$c1EpB!EwpXe#w5%mw+pW)1HqO>zqV8wGYQ47Ql6a5$^ZD5%W&Emgp`O^4PSIMYB8nXiC^dxzgjJ7gAl? zelm&MGkAI2nVf2?4ZG>e?WgYYH1Gjl+ zwNZGUxnN5Z)-4)r$n=e?q#=EP24hW=#ntOzg-@oGkJt>cr$FrgiHZSx3uO(xn1 zx$pbfR^>}&dea6aNg=_EiZhXB>NM%6nT-|x67~y^FvMNn$<;zQHJ@m<($_(d+$YCu z*Hp`5Z7RQIkqCh3{+-(c3_ivE1Bc*Oxw>>fWunwH;ExT0pQ`3Lrb}MfMcn{+uK~3n z9mMHTK2vXO1f@{C?CX%nlDO<#Z~i(%{0Kj^XJ7ouG&8|6*J3RGIzBU2T{9S>PR_o8 z6N|HcU*+0adYrlZlt~4Nqsr7fqtNjIVOzgoj*6w9zQn*wkD;dC|FRKd_%ax@7ql(_ zL4CR7h|-E(qtx%kj(z-LhU*7mAAT|u2_Q{|IjqzJGO3a~ulGCh0t-MAci80J&-UT+ zhIqx3nrcjOuiHu8d~S7Kk*Gr@NLzoo*G8t~rk*;IlHoxw)M)7A*Dx2rD0n_kme$Z~ zP5F_d?=qk_PIi5y!f4>WF2ldO5VNjAXx90r`y z+^iMg5oi=Hy4>b@bw!q_w)x|tn+YR4I-3C0Q-)DKMTLk=q3d1#Rbx#+_H4K_(p@mM ziWiCSOcur8!i^oA+(nnCum9Eg?A>|;4}5hgf=ts$pmpS?z-2|Z$8dD;B{>FP&^xohPvwk1QoFMh$29Y_mgKXJ*18$p%u*YcWIG5Tn9S$wLMf^cUbY zhw6eX)FuI8QX~{2&e%Q{GJT5T;ckARC&!reK}CM0t|Q(YmJ?BDQ2mTg!7~7&9*M|^ zQ`F48`Og7%h0lmnQpWyiGUUm*E{_;J{r`emDp|)p>6SS~1>r>9t59azWU8=LArxka z<+M@@wIfP=&8rXEShd>Fs$rlrZv<|Dsx(@9t!a{aqPBa^QIAJboM2o!1t=7$Hir_1 z<+!X5VK-%p(vU^VmV67KmUX=e~*)c$1WcGhuB6P z(_+z;Jzl!;mFM2PV;F=cB;I;)d7;(TJ~l`0aQSfYg98~IU#cW(PDA%Nq@|J6w*xw% z5wE?@88`nHjZVQ%1_E3SbXrL2T9~GksnHI$Ka|1e>+~sRm)`QYqU8c(s8U$ycx) z%MiB__Y0FSn^7Kbm)fzp$(0Gkx?L8%&+EH4%*d;FwYS19uVBW7F8E=w?I~PuH#{i= z;@0J*)&b$l1NH-ZaN$8rqiJu`i{CVkcwvgAJjRjQr2Q_x(vr;h2O5xinAVPs53c_t zhQ^lz-=GeJ|7_@vn$*dIO{o7sZp;s8yX1mP{)PZ15HjdSOx4w{aA&FZWz!K7#Z$LN zH0;@L|5GF?xZh+Jc0mktm`dX*Rh(QYobBq337P?utC6bgyY=JTXL@0yI>!D=J@>nQ z7o#z6ZhY@f3{+Rg_a`iIwkrolW8pWK=5=|RPK02J@`&I$3d|%BUncLyPF!FT>Pql6 zON7+(3|~B4b@JbTNUDiAN=ftGgW|^F?WlLMu!D;q`;7X1dYPh{{PNZ3A?rvi>vHdO z>6@H*V_G}<|L{h|sMY~R^E67Oi zjWHt)>_jaPwe2bImm~fDdVn zQCsA^VO{GABWR3)9Imjw2C7%>`Jn3m_P+Tx?!(9SsLQx_x*e#h$~5gOQe1GWDWXKg z$yVtt$u4^>VQymLA=Vk}ew#EzA=STMTb&pY3cUTrmR2p^S@E`qdbKPblYk#DUuWQ` zlZw9Dw)d^Xa?AI4VS8i`O*&;!Fz_1??hwh`PVYCHn8({-Sp1%=WV^w>r+?|c|MeD3 z&q)CDc_;_JMIdv<4#2UV5;|s_1>UG+X`PWKG<&*q(&q-vFsV!QsNp7wTWD(hoN}V zn%~XogKy6gqqo`o*^*Y_<6v8PC}QBj)nk2Ll?}Xt65WQohp?DSqnOA(? ze7ufZPZ6Y~EFbZ}+zu`=$TSI>`@Gud(}SH~a$ar}_Jv*!gTJPL7sy@G_mdu87fP`T z7a$MB89q^~nT;>{@F5NvB`+~v`d&XUR&iSxrg#+KNiyEV*%-}bT?~`o92KdiouSVQ zf)D*m=!c{TB9mOy#D`J+70hAohCZm&9k+y~)@4CDavuxNa!Hvl;(4^Ru`PX|kO7H( zht;z0S?!bGA*1KNnpwg21RSGsB%{xSHd=s8Gq3_7cL;=()FNNm3jI&~iNRlKE0d#h zgmz=qP(RjPvZk%6aI_L{4t4|fPvM|Hq1#oQ-}!BPfyGUQNj`0n=u$WS?vSwhM2Yn- zRwXKHm+m-qv^-GsoH zcEN=9MKrxu^C7>mRfg%U82j0!XvN)X)i-~s!_#;^0GbY8aSf>HfPeAweE{D)t#H@G zL`?-SAs_~6phHcwKJpSF7D20AzK)0i7L^l#HEl-dfkdjEom)Pd=ClGd z-~E0bVqUcBH|0j*tzfz~B#^Vg!^QFsxO7e)?m%u6ob|D>T*7USGIagQJbv|hvj8WuzOWL3tf%Pvr$JQ&R+nRa5Ouhs=A#o)B(wO3x ziwl#Ah`o8D%Y6)xeLkui4x;p>y-ZhA;7)c8DwSDEBW)cW#&Sh4-YJYIzcVM{8ii+N zpE~5x|2VALN$8L$9-g;2DlX1*qZ3{AYGH0QnXaSW@%uO^WH>o~2@Rb7!B^Y+XwQ^KwGU^(fu3M#3 z`7kSc^rjW<;h=xXBdg)jzWp{&5^1C^mV&dXqo&bHIc!x|7$*dXhbK^L7GN_)81Cu; z+J0u3LMQbl;C7yPmAKbTqIy{pNo(HGKO&aLtWohBZrMjIVT<@c zWe&HK?&DV!E1}h?{F)uk8sQATwlLPyv_aPo4DT~(I zjQvuXG}$ry>aEN_G%}k$@Rz`%jkBd1Yq-W2YBVFKTbozx3}&w(u4pq{{g$%X>on_P z8>hHmm6736IE=HCp}&mGo30fmm<_#-6d99j-o}2`msZ%kaFJov8wlO-$s+Y+VPuE;W|k08i-I|u^)v+`OVAWNl# zJcuWBbEthkzN9t5k1vkw*{;-er zqyj%ZagUB)XV3L=z>&fxW2Ro3cG-+ACQ{#cxu(XsI$8A}GqbEU{d&YFVm$ybCYKp@2wdpb;{bm zoPaR^_qiwa=}+DaSE4#842Fnyr8a{$l2Ae;sTV=j)W9YzjX44jT9Y$(YHw^edi9mc22E`sQ7@J>3QLo8X*#FmEkOL`tPz^Aq zEMQ*)L{n{Y31e8OJ|hqhbM-RdV(0EOJ3Yj$P!LN7EcD_#CE zGe{r@x&~DoR>zE?X>SAs(YyV9zt8L1q4LMzMhxWcBoq%e&R!F$h~3K_y6h7dg(rU) zm_k?4jl?!#T1C#+d>3(G*dJ#)o3>4{w`{VCVC%}}bqU($n9#*_VPNYa5tp*>g6?0e zc*y!G1?IRX!{xP$cVF@MW;hTsWoyu1TeTDZeH@4PsQ#n?tc=<{Y`O1LTW|RV)H{df z-sIg!=saS}ma)HD5$Q+{^Hls+uTZ6NcFGZc;=~|M^71ipaC-|zZT^A7Q}D#Th8$zj zV1|XsyUakqWN=XtFk79?puK%b!k>F-MWGCO08^#y5?SrlbdL6lFa<+q_?$SJUkatX z3;rr#xY*6c3E#W+02@!?T;Wq6A#v${`fy&0UF1?B(~0*0S2a@P_2R1U%n1@rMu1| zJ8ux5{_A3)9-?qqXiB8{Q7vSr{Tp4YI}X9DO6+~d=fKc*sukr`)tgxKIClcihLLN_gz4}wCweWAr2Lgyv8yyONjNc(N5ATyD4 zHSWe_7Hupc&jo2(D_Xhve&0$P892Jr>brcu+68^V@Ze5(cD(`d9m+bOc|Y!;=09)V z7VJ0SGzldj3d@UG@b#F?41o30(v7JNJXf#j(>oP>Hd>cKya#JZWV^EQ-WN()&VS4S zEkKkcoG*Da^c^NF`h*S3Hie6*=M%l9v;&tkyLpa5i3~g$>mdNnnxr&_pZ9{itunQ1;&+AoY4$I5)O15q51gdlmhU7mhMQ|7!*QG9jl|lHbEu!xJbj5H zEOGBu;}i<7nuSl=k1bi0)V%_XUEIKlu$FA%*=J|`)?@1T`7&g7FOvvZSn|PW^MfKh zauZ5>Oh}QnLQN%;6Lt9DcNr@b)oMTn^YvP%ARbKEK4X<78NPtx@2Y09@k*|RR@H#L zS>)u~6T!8A+ep>&(-QL;Vl|9zkY0oUQmqK%k)uS)4dbr80fBo#gB+|JURl5|mc6d$ zX*_Fal~Y`L`oJJi?M%GgKRNa+tw<66(XxL_c@Oy3qhe(ygxNnjoV~4<4~%8ILUsur zs|xy5Vkr#eJVM_`&X)}AK*nqI z)5WoDIM1V~BlQ9-v}d5f><5pDisw-j#pJFm=GWtvMVCup($iXQbzSEQN!9v^HCdWr zfxFW;lZ6+3`e74mNK@KDYUhd5>iGArg=sUWkzL*h%0~W$u?Wfmf@>3kKTyrs*XSr_ z+%X`6@H?@*9R3o9J3Lftw{E=~J_>X9GpZwJ-9F`se{O;s_`-`_B>p-hHK6@pc(wNA^eG@$Cu^!Yb2szRe| zZ9)_=@dyI}D`X z4RV)9nI#1nBt2M;mo=WZvrlmwtM?*0j;`B+}N`9ac_9u9AXJgvF<|jghr2j z`K(gD%xBaqeM-9LnZ_t=`R&C~$oZ!5GQMKn|MGiIC~l{hEan@ML)Dl|I^MC8+KlA* zXeJ$Wh8dXO8Q2HWpAusl$j8EI-_>wFEm4XSN+PIujH|=R+o?An?y%zh2;k4i)>sB2 z&(hh}a@#!V#R5dNA=~Na(_#5Y2Jy&o=s*|mZWt2%3!e#;1KbG9uS4Nuy4q~a>myIQ zgyk?Dp#h;)O%eTRRhQDJXR>g{ifU`)itRbCWJ|-|cPPRvng41BbMDw-?c{`%j%j&u zgu`Tjeb8#-DZU$;bFFvsyqqRqI-Zt^&#ht*PuYcD7TDmSWWHa^1K7ZN3F4hLTEN@13+ic7u0n^ zjS8YoY7NZrdmY&;S%YuSO1r972(!pRe#zga@KiQX;?53^gXooLinJ`>3MOsb6n<{( zMlWwATWj!)x}{iJI6?__um35W*l9ldI!qv`wsNTZED(&&L41G3F#Nhe5WxVhT7W%V zU;5nN%7v90Ixj9?o_D&GOxoag0RU(&Xi#5X77@0Tu&TJ=>(Z)R|Og zVSP*k;sj2qW#vJ-72=f?gcE`zi=`u;2(6XlX=z(SX@&39bWICRpio zTGpDd9A#eL?4`ybIs{oX1CE^yI7JM#_&9QlqW4*jyav`}KUTr6ySKs$6!8JUMQJBj zmEs<}^R(Tyu{B*soWc7YntA$a|EDe64J>%Ic}M(xXGs=Cif`{q4%P=tm@ihwBTa@u z_awr+V>=0Mi<^`!hpr%-7C?zHj-z3M+L^f4lL4@IlYLHz0oAl(+Tb^T@>8Yh7TkLu zgiSungbMeCPFD8=7m;bI()okzNZNioJy69f;?1P&5&gw_JeXZirl=LC8>(3QYZ!@7 z;j=lPKATQ2Q&<~j*J2rDzsye#&vWA=8Bq0M8&TqiX*2kZ)UR@$L_XZ?%~HvPm0xTI zf$&ea903@UYore`w@1|1bbZ9^Ix(0%#NO^^Lv95Ojb6OEWnlZQ(H!W-zX@y*ev6Hv zo4g%EZ6QRC$@bHgMls zms#}&UP0s{LhZBotpB@Ysw@(FX(cg&Bi)s;zgKKWe=-+59%c=k=iQnmK1kSnEW{Bc z5z8*3S3Tg@eS=xe84SPc1Yo4xQ7p;(O{~HeNd45`n-8E&pO9#^3v#8Mh6$Z|Dwpob z@P5{E@P@LgiHF*gHfKP*P$fV*oh(IJ5%jZLrYErrqJG#>Q7_q#9r2R28^pi3+jtZ~ zh$Cc9#R7Co7VXq6JCL(NUKTO>z?v9rPoBHV5fUTK$!8WT(iC9X7TsKwjtHiZuxcdn zOXV9CMJ0%#8SGJve;lvEnP@yL{U$|;1KP`iT-six$|a#a!Ifzhle{q%4Ra<`f`eP1 zZqSm>mQL&btVIM@)olb?;1^N6KNdY%r7KPL(I?K=tx*^ttRLp(2#61wa z!13QyO%N@kw}+FuEc4sH^0K9PMA1;G=*r;e3Ds4YnGw3novam?y0x7T=`qH`QK2xt zrThTkJLS2~EvJp4ITp1vzdBJURC9&MyKIa77@UH{&7W|dG-(zNl5F>3WjjQ~z=Hii zzWDFU=YQiJT#Kbm!4Wb^ARVz~CdT?r741s^)DcKNd8c1rac;bTB9CcBQN=+PRJSRl93zGOq=vy5+Q=@OrJiX$P`T%s%ZrdC(WVRB-K#f3C>`YCIF#B%jyJ|m!fMT$qeh3bpNvv*Kky+JM4QHa{GOoYgOF3;2}Dxuq}U!)_P>@03*3xKx; zXfO7;#&PS%|jhcXL3Q>5RmaMs5z z#w(2@9aF`Ki8YM71D}<6QV~PJ! zU*nbISi)5;qq}m2wq{TJ64bC)@W-mrc;=hXtZcDDd{bt|JshQZ2PbQ&zCn!0EGMnO zT#v+E(0C30yzUyIj1U_Q4~A(uA&8DS;oF*}mG(9&$pgDIQPZumNi>HIFMnCn1Be~f zc9JdD11v(gD<@MzzK|5JiyoQ5R2mfJBV`~$=Hf5ZU)k^c=*Su`~^`{<;D}hvMR;-~U{my=ePV2vP z+-=F(&DlZeooK2dXlKOX7P_0Hr0G77XvmrAf+W+2(?Y(a?uf+f^KC2jlBV_I9Ja9b z{B7Lw;6z=*J5yFVTi?7X;l~FGm(7{~V+7!_->(si`9XpRKm=v8JRXzr|J-Pp*woDf z5?k*&&`n@@YpkEYGDgbNJ5u_G50_?UnY$3Gp~kB$ejX_8jBUQ+_<7t~?4s{{&k_;n zkfksFI-TZnKynlMwmJsI;L|rqZ?xBkD38k)aQJ^<+uc+XDgDkDjPr*fQ;n={ zhX7xkAsw&xZ!-~QigA$+Ja(wiQjAr&NAe`0Gs1{njA?E>tWg~q99~tw)qYxG1-I!* znR|}8(&N@;r+6M6G>)FcsD9j6`|wEyp;{$i`*&v!J^ralzc3y0=YsD4{a}D|kq*Q` zj~PsClArz19Hzfe3^R3F8EaD*QFKL(nooB4iFU22=1xx#HaCb5wTm%a)o>)ZcS2x) zlvnmJ^&NC_z)`$_kgFIZ>{FIlJ(|`)h05@^5N35WS4ZzpjU9(pX>ilQ`#55GVhlmt zT8Tt6K+Esk!6a>woa!Jm!*&MO|B zwK~lGAcJEAO;DB*Hq;ofP2bk#24^y!OJ<-Ks z^oiMysJe%-Ip4nS+ceL>Z8Xp9B_JBEb~+Yp=HjxS8Q1uqjP4okZW z2|Msom;S=)3I4pfKt~n`B8=l~S7jC4WFPm!0xc>hk0wHNVG_w7w#!}z^d4HOuy@IEY!sCij&OA zmk{FQb0}AZ@h-+w5U-h!?`<2*!);GE^GM|(A~U5P;NZsO9`97!Lt&pMqg%a z-2q?}s$yr+u$pt<@qZp>!(*@AyUFa5M%vK(HVkY^w@TG)v;lIV&X;cH?j#pRKoDIq z6A4$Le>Dq2e2RxX(g{8#_bJ`V7%231y1ZM>y%LAXxBSO)o|rHcn)}GsJY#rtX!MdV z>T>Pjstl{zilrT@?R$w7i+5Fje}Fu<#h3HvO#zV^KDievR}?%2(A@CclHT=GGdU?A zCPYf~#eAE)vm9%2RL20C{b9}Q75$3l`6I$J5rqQ?oKTlhMCch9c!N6;NtCa@7(+qL z1CBuV;hB9EB@MR8TFVFe*% zxq;t=d1}cV?|>VBTA7%m@f*16r{oIeS?z9HH;5!*QtapCSMik>9vxYv#9I1$T$tc# zIOGd`hJdzWT5Y4N%r?Gipu3&BKXusLAO~T++}!+{)MwS#cfa(}&)%JGmW)%F{pe+y zO)w+_DfEf7V|M|6Kq=Su+)DM^jS!uENadcDhIQ5)>W|Y$0Z_(I2`px1^jnhA%2}omn4g(~MjlbC`y<3HDskD6zyOBBEbp0AP#4V*!dj1kJw5S&st+*Qf<={7u z$e4A7{}XcM{^^rU|8Uy<;#c_C+-0@DW{Rk1*dxttIFA*}lC)d(xfE_*rApf>suY)T zOpbrp=K~82zCjFn=uQ^ji|R^70V8nxBUQuaz^Vo1ZY>=v%8nmwcVMx(@+S}}v`0t7 zv_ZCr8*G%aRjD3}O&`_g^OyYvxb#TMsaWfbTzu~e0%gUSazJzEpwbxiP}a2%<^kDPfuPsAi|dpGfw!epLpxRB zcfDOgT8KxIPy4khGDH7VyDFSWMkXbn7!bzAgG7gY21npW=Z2sv$O6qkm&$JOxaI!Ld9G>7cIEHjj+%;j9s0x1aE(OLUtQ49@ zyT2;_7RNX|>I8VZPvWPJ2h2(u`8GJBU(nNP9xI-YN~XeUYGb^%vj-cza4gGFIyETj z>d=)(7rtMv%Kv3>PQ_7vEbX%xaYut{N?jc@tcrBHmstcKs@N8RNRI8t@HUkaG``;@fG4&;QscxIE-Ix< zo3-#kf?TWajbvqc$ZUgG@RLY9xZOqWer%11VdecMr`k=_R#e ziFlP%n`&RP+wK))B!%Q>6Mf_^_vZjG+Ghs_vDaht-21n;ijB^l)FZJNna&d)djXThB(T`8{hLVmT?gy18p; zTPQnHgGRq~_t+)!WmrbhibmeJC)>gUD4-kfBk>3_6s(goO&40=JEkUQi1*tG+BR>t zefx-Sl61Tmc@qrTNOXP${5j6#l{w|v*!Gxr{+VoQZ!H3ur zUXhqF@&*S**sBU*a&GZkV0}rbqi2iTB`Lt2) zL$MW9+p8v~!C-(`;lBIANmc;=KLEgUMFGWIEp0pAanw6fQ^OG?B1V7*R1}R z1gVT0s5)Jywzh6H7syCZxlU5^DIcS^sGoT>%qn;jhS3o-=7R4IgG2!LLr=a4)KU)+ zv+RrDhf){nn9$8R7jhsxZJtAr6-$p-A^9XA?SCN9%TC=)PagHrD&`AWd>@`glto@u zIX$K0M2{k5M|u9&Wi5_haifzeMv{Pb2lU{j8s zEA}E2Bn}Uxj96_6D$JKIWyS@4d(Q3Cip}L@ggfs1|7`x)YfBTGd+w8d4v#xpKjz1l6W*Z zUBsABpG47ia@x&=X%4ejC?HOg4A(19nbr#T^&yMaCihXOXWE(*)K8#1?<010QqFmJ zfcGd@d<-%A#bAmP;c%k=i|o3CRd`*bb(6m_@}QU|2mnnbv;iCNcE(#Yvp?>g?+b0I z?nud1mc38gB3w_sSKNWXYlC+VGmpzR`YhgO-oyNOfqHeip~u4r6@G9|(Cl1@$Zct> zDWt{4>j2UEofAK6{wb;WA6D&fppr|q7wzj`l)-5z7ve4}B2^Ko%a{r*Hga{u+!1VDv?cy1sw2hW04Ri#T9f#?r<2 zrh~*;`*s{;37aUq6FGEI6#^YBr3fmxKs682Q`N67Bm!v5)HZ=Lr_pbqPa0aA#KSjm zg9I9QrF7z#`QY%kO@?=n|MF1<`9-wm12vP`&}#io?YSLjK}etQ%)_G>dv_v|jm`n@ zgWah@69wmeVTe+*-Y)yV`&@=@|K)*la)AqAVNBcEP=J{>NRM9<%rbFM5lxy>Y@*ei2fLo5LpMB4W%C;fOq6UaD%psx?(jai*(dm)2f6$N%q&OYK3z$pA9P0Pz(;m-0rhD* zeJDa&N!>Ux+y$xM>CQ^q!1EqPwp`(L> zeZjsfcSQFz-FqOT^mWR<6h<}l`iZM$rT9a4|Hoq8`#KZQjqvBMu{DWz(+`d#b)+P# z6hNQ`^|D2h0++gW=Cu%pk?gQW@cfw1^FE`vTs^FL#RfEll zVfX_b3{{nr(H3k?Yfy?Ek~O-w!&)5tT*5y3IY^q@k9h6~)MLZn{NzECftZlO%?ih} z$h?H7xEGXCY#LK~C507|Q2sP>=*@uzJmi*?GU=oC7q1q(!?`1uO~w)DcX1k*5|Rn= z{Tc9nT$h^7Qwo0$3oT)+1up(2@vXvb>9PjPxfWU=&Sz~C9J@NIk9u3T=Hf+hiSE#X z>o5(m)ZDJ>#hletj{WH5V8%V{(N7z%E#FTMUwRv|8WT}AjSioM1CoAJBsuY#t6n%Q zG>JZ#bo$;%0jcv>crxGFi~f3Q5<}@qgU0PIYrX%8pdDGnOSK7~rTHsl)Ub%vxEkGA z6p(41Sf>KA^$0n8-UTmFQzx`VJgwwvW$&-RB+V-S{aQgbJsQ_X)&FTBay^wo$F>Jr zF)!M#JlE$^1Z=V6!J2`wi9ICbJjLX7WMc0SyS}nMr9?x^)tIK^2v4!9UEPd6h%m3= zBy*H#_^b09yJZ)x-Yx1pjjYF7*;oYH!`}Z}cS9)oeq_j4Mkfx<0R|Az;IlRor>#^r zc8*xPc5`S_O@h}W==a?Q3`ngo8V7?a7C$gNKfAEaWZaujMvld{G4b!y#%@^z)movx zeSiYsYvrIgLXrj5MVgovB*>>W>VCgHQ7_TS%r(I(mt}aknyPBB8!s#PixEn{?6J++ zhtD=^A~a*4P#czyrA*lK4S7K)pDyc$sXCLx$9VqI`sk|_iogd;HCRQXj-1uziOV_!O+ z70{3U-U2xSYROlS=oU4YBK0wPN`alY+^5iPsTKctaABZ$|DWzni4AkR_~qLd>jVsF zTv^@9#*Hhvng<#=p%R{wUI$D|yy;$vAr3K>))cjQ3$Xqv?cU|$xW{AP1 zX_Vu@TQeM<1&8(MnpiXfX{%SriQPdi%Fdxqnzu; zFJZjW*G!2u=o6$Xr$;Gp3n-Lzzdy6FO(RUXAoA@rCgI^ebcY+9+iq^;f;fVVlNs4z zsBz|vQRng8k2iFVJx@TJ|EVok@CRc~n*v;sx`THK$2tXotwg9~<$ZV(;kOMoQ!d93 zg^n=o0Q&QYfw3m%ax13#j^h*bEPUwAj}kr^U9l+lM;{;Sc@eHsW98RVgB7qJy%SWW zS%}lM*@?{frfYMhtCeSw=#1g|&yh-_%-@xoUmfMsl{a`CF2pfn+I;&|NN!6Hy6T*F zfHI?LH(s80Q=x_6NXgQ81iNk?9g9aA*9cH1IsEVU>b{Vb-vW#5TcrE*6UXUuX!#g79r}tqodTgkm&mT zS0zCDKkCum+}Zh>3zkVz?05R~B>IwUCa|-$b%2jJ=^0(0HzCJUOk&uFTYU2BD`ruy*SQ5C8a+AY(XQ5s6=YNo-RquezihEH9wAM zy+`~EeqcgU#7W_BNUT2I)P6ek9@aXB=y^RMtn7UhWPy!eCQyqAkY^p2obR&}PDVk$ zM#>Ls68;wg4@kI=4lcs8ogLu@AP}ws<2uBBG-|)WGsl`R+xY2p*Na>gm^bQi6Xiy; zoBsaQ|J(-&5v{$zL8f6CTOhc*toIM8id0u9Ug;7fX;){Wfj{Nj-{Od0*IO-RuSp|^ zU1(8B96E((R*#O0RLz?8LEMJ|yo@LAaI@i$ulvm1Bp(dwFPTR}VPn_!4DMqob8{R9R%8mWPxdk$YlU;mU*t6G&ab=?sNcHEA4YHPCA^9lTl zz*@tUv&1hjt;B&n>JE$u^#K7V518nbwDw@7TbDBU3EGx^Ol}2LSemA|Xc6&YOilgD zcG~Il%{Tw2FG(fY(-=<0Uj5FaG50R3cpxHnsc;RDbD)Zm{hUYV!*Jh*p#rC2q$dXm zMbamKx2Jo4=7e4n@tel7wVxp z`2>>GX66sh{K@L^5Mku2nq$6C;&4i9WC1`q;V3TI@zHrpH=OFNbjEe-2C7OEnV<3n zqIVZz#UKSps1Mt!l+_JLI$`3t$4pu{3*K?w6inGxI#M*0!;eML6WPHDE(nV7bPWw! z>S@hGjY5LAc2-RcZ%Q;qqQk2O@V^GB=S+4kv^=rE#ji#b;JYxoDFQQ%!2z2n*g*~uh<7@;QB}jvNtUNr_}MLMz{Q2)cTJ=vilO*1;9Z)zlG(_Nh&_O~j06A-Klg(2M$3kee>La(BW%d&M`N?wJ z*b#;TxNesUw#b!enB$Ry_cZo*%WM5g=85!}t5dWksOa7&ncJQ^q7By}ZDU?0h5vILj{uDQVfiju^1XO+Ia#C8HfDGU+EthZk&fhBsQ2F4u zp?)hN-75G{ms{Z0ba7@{x?eD=#LSk5`9j&>R}&mT>5tGTM1|a|NIhO)d3Ipv>x~|R zQmSd_ziW{{2q;p+f{z~pye3{m4d>h^ZF#*5g}L-4JC%c?KgLHtzA`-C{1YGH7nwNl zU|c2eR_YAMz>O!{5hfd6o=yy=Vd+-609EX_7v9|*pO?)fbkv+a4FOkQFgM+ zxC-Y*C@AB%Guebe_wn|nPqto?M(f2N__yaW8ECAkL&Hqa^Fjnen(C(e$3NUOSk2Rg z+TH+GD_^jPLmk+L2&%qI8$hDqCkN!Rk>Cz?=Ft1h;$II7`gl_ys_5u+!#r11Yc~o& zZOb;Q04luYg-z&svyRxS7`)0rlQ+T(tO?EVP26<-ACB@gv<*CUvH|Isc=l<4=X0IA%ff0SD};S!xnQbq7oz1;-G7fAq)829|OAB`I!d1-|doc0gwKrHX& zBssp6xJtYXtI$L%$1I6^DNNVk0E@FD$ufAMDz>00m*ClcK^dkYccFH)Cw~S9Sp>1& z3Ekx(c0_Qpw+J+j#=93K_jM9GxfGVl7;Ok^{ViGwTG@@?|G1R422Vl$giRWPKFmf< zZyNA#4LW#c;F{Pq=rtEwj3)LnY9T(k>|Qd@_f7Lt~A;RGoc7ao!)waGyv zVx1_Ips-37tgi$xwp9jx&tQAhM{1$9veog7fidat*yp_jw^93onL&Bu#;;9Jnf>^0 zXW4Iodw%vu^QOu?#U-W8vr<9S(B#9V(%0zamfyPg&H&{1E>*z{Lk_YoLrmgv7DV>m!L_QHV4KOG)dcx8n zFl^Y zsgpF(2&Ome8=5nD zFh|r&CWk~hTlsV7fI$ysB?Wqny%3owquJ;NZz`^7=sB}ITac$~z^5I3NQB z-;5Su+Mq4Wau~!TD7R#}JsPB_rYTy(-h&MzVH_kSjNq*e#}4;-%jSzaR9p~OC65uq z@I~^*t4m1l(@+hXHI!<#RIsKBMPOq;Zb-jBXd_QY#Ml>RI3PFVH&|2Rb(V5!CqH#_ zp2~EcxASf4;-01zDlTl*=?cKD^b7`cH&?4a!8Cf2F1GN52G2xX9p+tI953zvFQEqy3M0Nc=K;&<^(=7rhhd5|k=bo-&85+~9 z19wmqL$)lM;fK1;mUzU(BJY^Ai6ZoH`F{c+@_=mqL`&oItix$#Kz+WF<`K-Nx!O&E z<*N0!^>oOOUgt&0be!iUn8YG3(&NFDytWDARb#kUy?L|LmA*+{$jg#HB9Rp+i^6jS zG>DJIh{tp5O;we^w>PmoKx&$i9l;UJ|KfjO&gT5T|-!g&- ztm{Fs&U7+BvZbFYJ+zkY4`X3#gNH`6{4Kmr3PHOdM9OxBQ=PvL<8M4q-`zQUZ{4Be9@#w78teKmdYxDs%zvlH5su!+$$)=Vz8$C;8dD08fl zFstXexVpq10b|wt-sbGt#h2bSyp0j*3VeGlPcL2Vy0dgDnDYN)r5z2O!zeyLj*f^vL#MJC#!1Ic9o|(O_xnc*IUw zZd#GuY?RB2y=kZ`+LQ&qGdy6ldnpF~Bc!51;hS=bcClrQ0|};u{qNG0i5VLP(X_P` z{(_AOPnJ8PuJds=WMP;r6_3W`)^ZS+IMh*?I)=&;jKA05V%wOiS~t4~A~c%t3bYSb z0vSB%lIYY^bScK1so+vs=0{ePYqn!LtW7wI9_V-+Azdv=dYrr)+(4{voqx;s9mXoy zfe<>dSV~sI?>K;*p;z@*qlx_3(_pt(v_Wvjl1CC8of(dBv+YyQ$_@21q zysvXLwGX`4#BGMy;zbseGtISa_)u7HciCJ?Z>GPk@-z_4$56K>4;hQ^Y z?7T}~4>2A&;5Bfw5F0@w82YO=XV8d_B$Ep^1&^V$2!xY~0w09Aw^!V*Tle@~EM`tj zWF~ep#xBbI0WN|YJqy6LTks@EVNV@jw_Z{C$9Ux?vWC&2*%Ha75kb6)Z*feoNfFgw zWQ~dl0=b9v&B$qOs)I6OD*{~|E810d6R3OadmX-~GJwc&0(Y3TzL=d{o;A~u1gP!$ zI0r@Vo=pyvK`Ow!uY92OeWp@7Y0Dxxp*N3^$q$8&lSyj2o;8?3@lES%KV@{*#xTLa zKmrqdM&c}SDx@7yDn%WqE*rg~+?~mDXa+S)+Z#Oz?J`V`@>T~J8#s1oE&6j;TJb%5 z`*9MqJl-sO1-bUN()u9q$B}J36Ohb<_snr8rQma$ltQ@%J#H0av07=8f`0>}ZiFtv zgR!>o4VyI0e&buwxRy=xO||-cyv@B;YQ7oLGsSUa0*_$<0Od=f{=-6C(?yz2_6iT=$-ABIlb>VX8&@r2 zb$d*qMhx^sVq8+HE$DM=3D!<=Sv)Fn$1A8M0s}h)b^Dl~qfg|WKZ5+SQ#Xf)u9L#9 zNIonEF6nDOAQ(Xq0EivKKJjGWO3#xwwT#)9BvAQe6E^NTS<}XcHD6CSqYc3az@d#4 zny9Ci5J>r;OrtIo(@+&3GDB@(t?sj*Ob3zpn_vDVM{z}BVNfZcc!j+-3K-VRT7bod zF%w{qfJu1~i)=p|OPBE=uLbB8E#*>I3a7(kZ_(a_WKW9xumWFt7bWG$Gw}p#bWs3n zutH~_(nRE>9|8Bg^$^9_j1&c$&j%Pe+IvPR!kSA8c3SAw_{3J3VU6!_P5b zp&#S!%NfwU@@j37f)RaD^AT%{qdu*6-Kj{s-^;KZHzsC^HF;k!g{P9Sn(U@Ijn?Nk zw)Y28fcC6TG$rb9a5%}ITL)SL_i2Q0PDAV#>u z=3T9y-NQNUxbSn_4^{e}yjGv85&OM6pr0Z5h9r5?3d7c~0X)N>!;@bxF?PcRK8wrN zGl)oV)p>Q;EsGu1kQUgEh*()q=QJ-lEr&MPf3p)=>3Rsu-Oj8#4pm%Sd{Nbw!H@@jEu}Cp3$4R3p3|asliA z@Jz>e)8xK8qdb+7kg~^Fh&rbTjhw*w?(XnKHdkggN8a3x_};&A=C?g!z}F_}w(L`^ zxy_)-n4J=(vGw(+7yVCnkZ+yb#u90kh(x}ncp~+7#`a}iB2V^;SiAJx=fg6~@qDHT z0Strknjcs+uTMskZ0Xw2*?(|`?nuOH2^4T4PkRO7r`LZ)QSC&!A>0rtZKJxGA*s|y z;1n7Legjru&^TYtZfIW$9L~xjhA@Z=Ppe(OWlo|t!K|ytVe|O^my#Q0Wu@Hfz=36k zKlK1iO$s{{>`G_Lbaq;nBgbBeYe8_8W=9fi7M0o2&Ii7sO$EK841_~sV(^2qp#DX_ zzSts{G%0YV)bvDdgpckd=85<=>-+_UPK6F_WW1@7^oo!;NLoGqs9?*j`8^_igSw-G z%U`b@sw8t4DsQItC*pc0pF7 zv8UvR+No|I%Z+FvA_s`n5~Ph!NT4TXMNH)m+>ufiQ9_fI<1DHaA2Xpx;m5qpfu5>v z3~qSVJ<=w-d=OQaxI?gtGm<}74z89Bmx&w;Cdo!jp~GFcMPRE_G+yH)hk8#xJHp^Z z7SSOhp>G+VZfeA~Ubqc46XGSPPTOT7;D$rSmxPm73O~;+Ed-5^Gd9J$@UpOD&@PSs zr@f+QMuGtDhGA+r>+qZM3keWme;Zb8K?(xwluZZX6`5M52D57gB7vVK(@8aV4R^ zn(vDAsLDY-EG`?M?Va~l=HDd#`!{{?Z?gCAT1Tb6P z>XKU>J!Oik`+N^0Knbw`cYi<<&Y=X~maQCl#p;WZ^5NV=yC$bl>N13N*Ar`a#P0-MG{;$7D!f@HiRPRj zRHfRWCU#6(-XpY!md&;mT4t=@+NWH|M4q;I^AsIXiefEW*2TMGIOBtvc;|rP2ksX) z5tKMIH>z5JT!B&!(TgzGW5j}#HX)RM`HKqVCoOI4cvnkM-DN?c`Ya2?_=4aEZo;{< ze%6TGF{s58mBdw*=hzs^f-Qtg9gXNFW@gO+x2T@Ws_8RxvW{jwdenC%N8kVqU=o<@&x>zvz3`hq zM#ZHb&QaJ%K#mBXH)dUy=@*2{>+VbC5e~<*s1?P=i-0&s=xXPC6A9{6m%#fPtBBa>~#tOjbWuH?*ag~}3cuK2*VDDEt= z%TJXLx0*jKtOgC{^N{uU#Amhr(@}r{Tx@1^3*DOYD*pDQEzTuT*P3A>*mH2UU@wy0 zdO^w7`i&`Dq>}aD^AO-=3!U`&&g??A+5IS0h}iy#qMEl<>}A@YsK9afdfjy8r;UG) z4QL|m&d1N3IGbDbzB%@?>AgKzRVLP#bxzf~_R3*2vH!MgAv2kBE4_*BAt=}t}o@n57^BLN?)p{3Svm$0hs*ypw&>yr3!1I)r91fqOeJM^M z-K(W9%%mUGu9xVM-M903$UybON^&}qx;(UMykp|pXhDRAlK%4(i$=4_BHIP*zW92x z+ex~wr81#l$~%g1;Z6n z2%4&_8x59*y=V|i+#G4tkIsjkL-{1%cZROYXttD2@QeqAo7sqA!&z}H(RpVx^-fxp zq5Pa`a5S4lb5QcjkI~yB-k!F3MEhHIVXjGq#3~NB@O&n9x%FgSOha0RGx@yW$#*F) zd*_y4;90>|(SnI5ee_s_Szy|pfJu^y=}7iyQ&F>ibBVzWR)sx;w`r**Hi4+6Sj&}H z?~3q}A+0vhmz>>zs>qD_aO1sWXS5B(y|1OM-&ms)EXGik*WPKa2;I^zB+CIDdZD6& zHqn$SE&Vf~GWE~={sV-Iif)@b(P^jMOS-_wRAUqK3$GuwExdYt29k3exEzPzr&Ig- zooJ{;17LezR*TPkS!B{BSapqpyNZf{>B!jr2@5oe`Gh-Ys2fL+4*dWME;o&dW(7Gk ztv@1#n-^TP0gt$)aqjPPQv|o_Th> zpD=pCW?NOgB``Q@@bQe$cV%m>(mTaDm{r>BCJ@>zNL;3r5VX6|4N4QcG6@yk*Aufd z1=XL4uqScv(SCR9ML)H@=ooSi9<>7conpyw7g8H}uzQ&+xh5d2(?VOOw0WF`Xap@P zvJ-7a_5ULagrO+_oDryRpSr$JTc1nL> zuD_S{q$>#yEYdIecTRohFE(EDz2GuLT+Zu%T`<~3$KqDCiifLv%__kdgn&#Fzqg^+ zQ=$Ny%Od(clmiZR*d&*k&)rqdvx8**0z~nK0gO%N?fS$QwvbPpNtAe*D<5W7xKmr9 z@iQk3@i855kJdxz_@7YjT&sV&4ecQoqo2qCG9+5+YsCtdz_2l7V9QqX?wpv-f}Gw^ zU6u#d59ZAb7p82i^wc_$v?~6QBv5bQYRU4^pu{QBu!$7h>Xk0&o^%r@Aamv!)etnw zkDxT5h8?9XW?#@JSmMg{jn!I!M1$x`5U((#AVmniL7g->qu57N}BQt zFh7hTq?|Q-%|F&rp*0+ZfJ&$BPB>ED9<(s+;NSQOO}Y)gq)*bUGhM=b=9f%Rjpm z?=st1{asaRkDioB`1NG-_P6YfABFVhwsDINPONT|-0Zvc`N`|H0vPOrUacyB%bBp? zbT_%y1xN!?6&%71l5}Pi8n&osY~p&D$MAB$bQn3VYwRMZw#u>W*MNJ*&(ISCd%16L zaY|A4IVXic-eVjmoc}CI??LO3tO4}T!tKCFc+P*Rr|=buvb=A}lF3L|PtxnGQhV0E z4trczxF~KKg~N;8r^)zP7CWr1+}n|sq?A@P569NAXqEHfZ-vyvp1#HvyizbrlDx8I z?P!ves*)(M^)xjTxokbRuWnFmGYnPVB)$q+F4UX~f~x2ecUm@tqUwB_R!eeer{6^r zJ%FCEDGV+yT^K&3uC~Gfsg5pFRDYYC()u+|h#rPFWbg4=B4YTGjnEKN3*tF94E%f% zR&^xYuFfOdlJ42V2vwQ;YWfS5h!1+Cr$* zug*+OBz59)aG{Cf8&~K6TQ9G?d41B)k2cf~%15*0Ua}@39-vW~zv=Hi4^)4E*^ZYC zn~5f8HB}m#!`ebiL{|Nl-jlUnmk9kT7bat2(R9LdaQ|?L9m^b=*SWn)Vr)xzoW>g8 zVbipkhE*V&5}RX^CZ)}w{hW8LS*yIx$AEV2hUDUD$@1HS$5rpBxfc!rXS11@KC^g0qp+{GVwi9Ci^@na`x; zJmlQBz9Ddq_Mr_ z<5Ibiq9$80tK!|Q6tjIsPx}7Nq{W0g!9N`NyNqs@;A$`1GqKb}`?5rXXaFfm z1xRe{AR#QOTLHqaUQhLP$B@FtaEz#hm2SoB)<=T}6IOBOVp*6-kKgPcg7iMZvPIq4 zDWLCJrD}z3nda8@tDLDB1u3U6?7q{fc7e#431MV*xkkvCAkCBjGASG|41>;zk8#(u zc#5qFVcI9#YHm50|1ai9$4x0_OWKp)k_qgZ7aR3i(BVjjSxNoVOnSpg;5Oy$yp_W} zlAgclml=??R1}0<7x-ki7<42ps{|-km*+(0v-|%>$tne8AB-R#)B_YFZ!Ttph7fml zRh*NBb(S_P`y7xD_AMiCFeEUfGRC+ZUvmdgAUK1pLR^3JBHoP z%#UjBhv6%7n~XsUVygBk z&T)7Zo$rU_g$0249b&uKyO*9p8kGZ~veNzp!hBsw?drC_Gu^naLn0pg4i!N0og0cU zIB76zZ%fV3Q#jT4pC1|elDtf`;%`2O*-0#K1iU-Q-X{Jq8%8oV!oJ99*RuoaItW9X zhw{9|`U%OjCARTG2RB%Px7l`;@?YmOehmukmvWp=-ITx+nir>ypY%|yW+Ont1ANyA zNZcB)pW8qE+4viwkIx&M5Hj%KR^ZclWD47dJ?_&dl+5IX*+MPrynm$gb6j>->v#}9 zj7VOL9wOiw(ea0J03LdBGH5DkP`3~1pB@4uA?&IuD5<(QA2Y+6m|SPH+Z;*?LslbN zqSgB>7oHOq#o+G)BC_c}f3X)%$-BsY{|t*$n}|_Mf`pAezYw(t2734Qn1~Cohwpt$5f2PV-~m z;qafb^CHRykztF9Rgct>$#n8=C@cq$LX}_`VWR`DzyNqV3SMouDdn5p(3==x_XI5`r!tyDQ6yWrb!sgDvWP=>50ZT(z3hC8pDnF-zyG0lvMnzbghT+&y}mpvr$=?^x*-?CFf0N#S=yBs0FtiOQp3z8PrqS|j3roZlLX~O z2^Zv{oHuy{)|vyZ>oScd2PD1eUxaJEUt!alui78@6C;Qz9MpPh4pXc-8l9CK@K22cp*2=g3+)jc@#&&Gm zyr(O)eyAHj-pG%^zN^_wi}&(z-}zK3JS*$2zJhz09vJgDDW=%T1R%&scJghDSBNwk zB4rV8cGB&PV4ZxC;Ed3M2aep+vxYPawq%fHtC`wIDRd!I8HHPqH?CFCs>f8d^lFXC z_1nhgKT77Q+;^zDN-Kb>XK1Y~vG_^sR6wFO)oUGp5)t0NTu7_*t-+(l@zsTt^B&fi zD2KO+tv_J%O$MM#tl0MjpQ-RHaQfJIw~KQPL0@pv`N$@z#6fLv|a;nmJ2ab0N zqzay8S?Gse$k;hmcU^yynduSXJCIR)U~p_M<{VJ$e^0+*bsvG-!%iUHTdc}PZ()Z# z4`5Y;{t|4=^P%+Q8}JR=k*@Z3kjLMgxPw&~M}3j7n!`>z8X<^H8sru0uLQB9(r6#M{!IxXnU>ygL9W~eVnzv3TbEx_n!*$_SP@BPd`%X z%77&+;MICS<{|*nPebFCSMNX(67%Vg9xX7M&Y!gZ8;DWZs6GwmRA5wpq?( zq1E7U6_~9oLnaq!{<~!xRbXIUFEv~a7L+?ojK<0xyBay9*cCnvgCIu)TDN?U-@z_b z-$B4zk>36SvG<%oebZ?gHKg4r!``S>ZahNtQVQ=LZ)hWCkK>W`KzZ&M>#^|a-(TX% zfpu)B98hP|jAv}+c89W?vSYrbja7MrY)wPrLwmhGYggVs`E$g`N-ksQ1pE#ythZ1W z`Z!K?)uPxly^OE!8<@A{MH$hpnnUR07aU?S}E5eb`EU?g4(SHL zS#eF0biLU9`!tooa^zIyE!P0AOXcxY`9H@cHfb@&0%5DwjlNmm9_NWj-u;aIoz{7n zKxSS4#c=Y6e$ZWbf(9649bQ(P#XuY}@yBUWfv#89i2>*vgQV>E&(l(gA%&@6(M~@* zF6MCvIWYiiG33rWi(W>omlaR}G|V~{!9t`GhRkW45RzlxTHNBwaRD8p&7C~$og zUgsJbioRdO*8}9Q`(AF4*m=_*+KqJY0mH3gn=%6~c+2?+LvkZkMCa298AGg_Uum=p zAYx4u`f~?(S7^nfnh#9<VC)OFr~JbPfP*kxmHUZx!t7n zQRq$aPbgkI)lZk zHmlGFK*qLiyFeM1Sq|^UJJSPboDvL{Za(&G9qh(Q7tyO<7M{bGzc=fZYH1&(y2F;xDIXPh?%{8Y0k#CL~!gUFyigQWo zO%3>%kD#o03eQTal&pvjUWMSPs-Li&zZ{-T}~T zccrWu*Nr3VBLl*=;=eP17`$!T%&h>!x_cKe}tkAQcDSDT?z7R)> zA7T+-R}KNhY%TXuaA7(8rYBjOy5k#ve3st^ms9oiQ@E* zHWQB(E6530%=FeX264mwS9TL5iwz;d?EOt8UXv*SU`O@em80bis)j%%6f%7bB-S8V z2hW5Oi8eEkq18;DrrGS>k-6JN&Y>QZDf9|pg1k_0{EL|`kpvDI)JCgNQ;v)p463clBY3 z(jDumoy^Y6-X~3K?+u5;XFr>q{!v51Btzox6$t`E59v9htmLe^h_w|Ur{yZWJ?j6*C%P4p_>WSIv5oq`#?XDNyycRNHUn*BI9X*CM(#+R;X4&oiZZ?L%{Hk*r7%Vt1)+j#a=PZ)o4|*w+CjV0CRc_yWNM_~}tvCZl7o;COVc=^#*Po(GYg zXro8x>VteDbVitj7Yr^p%3p?IxDe9tEwBb#>U`3~(rLF0%5UPXoa&af-%?fU-;GDW z99b)Xjs?BKX+nuPOfjcrT6`ISfIv=vTLx{`ETj|J@2qM%5(^6f&9NpiWieEyswjv} zR-6vtuY2%SrD2IX%XfoJwh7pnb=P*0to&t)?jNwSENM}$=|m=Un3a8JU%n?|PB{~( z+Bd2X=>-IPzX8$LWTVJI=b$o-u|ij}twZxKwyX4oAeiZxgRB^rQ^^BDEcUb&*fS7O zY_!nnS(cP5uctnD(%%l5>^<|=w*+Op{=o}K<9jt(e+5@V_ z|H;pOODfzqWcG=QiKI9-!}y0k+W32ilBp&HUyH-ir?n}B6jEdF5)rv6A zkR$L=YYC}{|5Ynf=)#cufkljJFb&CsB zmyWL)jT&oI+QmUy!&#cV&X+kiY+j?c5NqYlc_wHnm3Z|}01fk&P6G8VeP{BN&YT($ zj^plsY=SQcf*Duy7S85wa(VkOWk(tfDi$-35XL=RY9?2`#$-N87f;ntOXE)6M$RY( zBwzt?8Lj-sD5&M?LoH(xp?T(SbM#^yN(AlZaEz2?gnOjCO(e_V%E~dJSnE^PlE`f) z+2Gf`e{V3&)sq}x*&!^0;S-f1wh0-4ZW>>XIuJfPw^5Ti(B^nmALc;(q)A$b1devv ztP74{RH%@jv+6G4l}XT0_r~Tr^~r6!Im>id6LL5*?=r&)n6>R3o!>qyEUz7aAB2u@ zkHuQtTr&LBR=AWjt}JygY1~)@NO4!77G3bqWv#OuKO~FsE1>XPA?(nZnO!GD%X^~R zo9!bGwf-8p>_2i&H9_d?O_EWlfP+&7iI~s$EyOSGej)|uJPi%(?qwRLjM#&BDkpO# zF7jj729yXB1qQO0J6x3unfnY6VR+&&=WwU*`a=!7Eq2^t5Muz_*e?ey4|iv`f`s7; zhAJOLU2g3gca9atOaYEeIJd`Q6&irESF(^A?`aC9ocNa-zAUhhNT%lVLfI5jWfB~n z1>cg7FIc?X*VNn#&8PWjTasZvEy9p|lq@MI&d3m803iR%q%!;ljq%%c;`OdULo(}+ z^m&A?v1{NX;yPcaADgW$VZWdDV}-U5XNmgM{9CGO(@tqGIq=0^dY4$I@5M-JE_Z$w z!s^-c7hMbMhsIyKa9Zbz?uV?JnijllxfX@k~XC0uLrBpm7zunSTf>(3c1Ppc0^V((f_OTIOoNwwp zrP_^)VFra3SyC}&@6XXCvp%$Zojh|w_>x_Br@PDO-I%W{H0z_cpc*V)FyYJWb(>X^(>GC!|Lc5lf0T`N?3jXVZ`j zMD?^Ev$h5XPK5sQduV}*{yg=e+9vGi|10?Ej9<6stDi&j1TKSKvX1Mmr7EV}s#w~u zRcLYGKrLfgcywLJ@$bFqH-H}P)@6(L)|W>)co4Yv2a1>w!$E;$+|JjrOR4YD)aRi= zbb41Zgwe5@xmvuo)Sk8uVASO~%}Qzme9iq8R`~vm-!CNWn;hi|ZG&z@aiT%sg1H98VXeA7pPYzquZO%jZo1`^tcY(dZ|M2+(qdNLvCNQrx5k~vj> z5CeTMxYk67y(+KH!8dn4T4ClDoOR6w(52s~iuKG7L(jXH0E#u(5l{cCKYRbm(e~mZ z!J;KPjT%9uYIawWV)lOKLe+n{wsXkCR|SHd(%%4y%t`obvWY4!5^V!g(0Zhii2-u# zpQK+wLz|w>OUzG}#YgaW{mNbURc~d@=7%*dECY{*1R9{KO9eR#i(&kpQQ<3CkNo(u zi2l!j#+!e&=-TfS_Ft-y+j6$dVc7Vz*jJtaALkLvr5IN0F-2;}dBGc}=K4n1SJyn1 zYeL(u<}DkD7`d}30SX22Bgm(j5>HKzi~YZZh2YI1@o6nCDIf#($ba0i7@0~3z+sLx zNgmbuBhSzZ1EoYfidE6ln1(!fzi);J6BHa6s2hkQQka!@r`if)MLgyH7n$h+B`DQy zGjqG&Ngw88BgK8|ml}Ko6{>{PV|kTX-vm4X=Ytvx{hoY!8uzRUyt`=S0A+{)l7YAw z@WerTt$-~Zv?Rjp6b^ga0`ZR{IICN&`d=rAe;1EPpuDeYXA4-0fZ`ZJ$=a7_eXv_s zm@o|YQG#!K7s%-4D}@aa<%0G_L9;!8z?Fh;J9N5JNwTfIX1}XKD49_U!^E}n!$N8=>ern0z zg>QBUo2}xQDRL2{q_vB<#a3^EO*>kGW?d^FO0e|{eMhT{_s4!e6^+p(lq&B_v)0uA z6DKfw?j9676WU~cJ%aONf%?eyyx4&Ihp+(uKLEfI6TQ1VM==rSNOI1r$>Mr?$Nm!_ z5eLc;VpS+4;RIEn6R0EmH1T=Sbb=zC>BA9}{GBSN-@}&Qtq`Mq&B9wQR!udIhDV?L zID-v=?Rzg3((DCZ%w}2h67d*U^fVCano#XaLV&*~yeL%-k%4M$Xsx`WuQTLhr=sDu z%6NKJlv#G2o2ph16T1t@Ot*x^zByKidKJ%8_|MIg1C$j84rhn-w^mc_$Xj4lb$5m4 z2`lO7q4d2gq;9p#nApsBmR;Em^Un_8ueZtsrW2&FBNefe=Ev9dLZ)3Gd^m+wTjYLz zc11$omZ?;*tC%ssM)c?r_Me|B)++0b%Fx+oxl{|bbZobGd?lu zcT2f#Hfpe|fCXxkxAkl*X%OlI{}e9ziVarcAB%}m5+P((6^_)DJJVJ^8cS}RN2^nf zC@F+XgT?!dQ(~KP7`LJG5E72Y5JpXjAS=BFLO6usom$X5m`J_J)_*(NCa z8WL$^i-}Od`^6x)gPe@okf%Xsz!aB{(?C*mr#;i8dxUgDYabM@x0@H*Le7Z<+6W)B zSDQNr@^Paef?Gr(54d>+2ksj-o@SOya5xnv5hBjb{L4@v^~wRR&;4y3V2GZEHFx^& z$^FKl605UQ2S60+w-pKu05oLD(iLkeE*eqg(_#WetcTcHBA=K=g~vH|r>M;c}cGZ^9-29!Bp~k1e_Fsq;+rjy(O`v`kVfuT&}d(uCOMf&bq->Me?^4e=2CIAxTz$nMmYb^1_0}o+2=~ zpP!*Q&#UD(C3V*q6!F`lB^bO*gzVFaYfjy2?@o3JRNX0g6+o>_M!XFQDcJ%;(8qu( z>OjI*1vOKZY+|6Dq4rcxxE1bD<@2b@X{zJJ^D@>u&AJfred+@BTlpbkJ^18^20Qgu zuhpg##&&HAz`8`G;?CvccsrpsF0;X|!e+&mUBM2YH~Su*0zYiBPi`B_B42UwYh<^! zflqIm$@W8m)~`N2u&HI^G{qd33k$JsF^tGbM8KLhPrueVfNO+9U`H*|F z6%NMIxbVK&BNC1OjY_VzB40vWad@j?xxnmj%)x!TSm0g~^fO)txVA5Hb+@IOslqr1 zD}e@Y9C>F}FV1!sU85+~E90%|K&soy*nGNYfTaC8_FODOTWZ?% zr)N7XM@!(rD-@LjP?mT7NS(~CeK)BFvqk#`m4+$ovb16 z{g;?w6~FpW@ftdUUGe|U^*rgTTA{l4ZtPN|`y>60F`+M^8!Uzj!%wGRbwOm%Nz-0= z!tgOza8*h3=fBB+G-#c+Q$UrbVQTH38g=XdgRa3$;pA=Uq#HA)sl&||4*9#csk50C zQ5s3NLS2L6pW~?0zik?KCZ5>AIGf1-<3}KGj0vsrA(aQEg{vYf@~$0RLMpi@!XA+; z?)K~a^?qTOR1E&0JY}e+D-^io>}SPNWY%mmqIPsn)u7}PPrct**u^Gfmya?KHEiu4 zRAQ2z^;CY*qn0l0oA^7J3J;ITa3tJxL;UZ!7h&;jNcvOH$QkWA(de`bK~h<{-{sQm zW8UuGQ6TwqB(k1p^jZxLB2p=@^{Lvf?mo#WZ zrHs1D^p}kcn9FjiNxqgb6^{3{^gR*kuEU`l<_JQ=1e;<2x4DpkJV0+7u_;I8zR+AS z0U*~BGT15f~%e(&otHKWlkfsB1zjy-K z;ip-|%pJi(8K+OMr-5smepd&aMJS1s^3FQgynW`DvgGa3x0Q18%_fgk{wJF_o=pa)-F)o85>n1y6S;NPZl9C=L^K-yT}e} z*1%eg1;KG>9*Z^AIc-v>J0j>K!FFe(NNNh0d7yK&teuE2_k}&F;WX<-@DdmnIF0Y~ zA(Ilz&7$3#uS8^PtG?UjJDoF3u0`DFnmq>flW?#rIFUyCW1^c2_UXH2^ti>*TY!co zZc^}0C7ED;IvjmL$6A;xmYb0RT0@CAlMOOQSkKLgN`KTr_sNnhTV1E7n<#MuB)xN| zo}XflMeK=ku+Y^rf6AuYax68pF+YljS0&T%;EG}8$b)C>L<%7ym!P6Xx|APc!3w`5 z+GhL;NH1bv0^*)w#*AC{m745$ttNW5aZB*jR7=?-nh= zcWK&jx~rub)~l2VYm4;pJNb_pTGb1rn}q9F)Bh!{DoW<80)m|)N*6499VwC{z*`s! zjI7q<{o4>nX}w3X5ImHfdBHD^Q8Cdl_x%zw*ks+G`vY~3E=cN{YJVFY;|EteCQwMv zKAsxuUG_gE2V@GQkD4v2K$k|^xG$gB(=9jRuKTt@db!6~p}3C^`4A8VC1XS5q1_GB zgE_!P*Sek=2+r?L8Yg29Nh4)Fw0ol7@|U z`7!r}tD`{MBmszS6K%<@pe#)cA}`DM=9CiR;Ux;8zPlswG$laa`up2W(X;jQi>fks zZFF7GjXn=O^zvoC#Ac?vF&C~ob#b1k@W-M19 z=XM1;_=nAi+gGYVNq)9a&3z5o%a2-TF~T?Yj>s-`)s3V1#a8I5nsHwC=%$AyD24?H z3*c1L)beF~?W62+@(+8KWnr5-a#d;u#_A!GLi0_6*UzQ8Z(OTLLsYP5_TQ~ z(n~pXDEEUZC3!m{&_TFqA5?sw@_rMdXEAK!tlo%=kV3R#xk!+z4*E&z>Fwayn9xNa znW4xE46{j>u+&#F#9H+#zh`$wA{aP3r8emKM!v@+eQpgvO`u*fqmFsK>z~Kyuhucp z9;@Bp(C-$5rVz)7UB1wuw}g`1m@lRjMIM90GF@u+?fo=m7VX0^`vM!vDzGyc8WRO# zTlK;GGCxAm%v!Dj)sC2r>h>x2cOZVn6u6^G4!dB6^Q)}Q#)PYjDdrB?4D!@M5IUd# zVg5+QAk*smnAZOs`<>DV?=X6Br`5t$C@diIe>lx{yy<$k*%uTSNzsEJQox4z#7KpP zEVNl;l>bZaPf;Z~SQ23!WNS7?Zvt;%7(C!cEcodW)n#IhC7MW!T@U;>LLyj!lnOSn z465C@7#^}zELXy%Y}mYz9taPmz-$J$UmGKjw zv8LeB@4Aqvo63);j5+aZCH<-&j@GV)IjC^J-`Z};A`xcy#q?iLm*Z$LBU_wn>@z39 z2*9p7^9@9}zK8H71mh~A#_&;@5-zf`(~?peE_rYpO;>gP18??80&bPA25$!{*fjX z#{u;~V6hT<+=4yRjjT`rg-lCKY^hqS{nb$f_w{6fGDp2(7UIG=QOh4Z<)e3OI zx0f9T2f!;odFnXzgQY-MvYZ=X*+m~UMm7kY`S1IxOHnM_a;F%s3_1ylS7h18y14Y) zwA@790YuOp{5Mmn41y_s zc>eELJVjahV;@g{miSMB?*BRty;BjiBpLh`_KRYNVqVUwS5{Cz4HloWZi;U;`q*GT zM(FW_ry#2aMvbv;L`wE?c%Ms4LHMF=b;B*$?uEgyuIYG-8#YX9!4=K5Cy5$=m0$13H|xI;C!*<}S(*5c)wqFk;Y zUS0OIWZt$Ra~hV(Hxm;1%2WCE@4)a9=@_GA?6Fo4N;@S<((OjZ_?zE&%we{Kh@Y zL&5Etw!f;EkA!LgK6`8rPG4YTCFZa`yk7{KHJQ*H#~V{rB@rTSDWo!^|Ml66K9?RKabD+FCeomgeOO zx=%-@+R1FBU62jlve|3nWN7kRGk6{>XQOhKR?}3THt$Fr$|a)0Zzn5y_~ z@hz#WlrDGVs?7S6ZE)C)mfvq_XjzI%5n^`DUpKJo_f7j_5vsLEhc8)#otZrVD9k9# z$Umuh=(yEcmpSQgjdwH)4kxQR1%fL3cj=?;-b8bhuVW4Nd5U{F*6YcWb-HaPq5>-{ z1^`!_e=4qRfi$wSQNAMEs9A)CBV_>CY2%l>?^#Ioj9X(|a%PY6#Kw$1mjV{9mFMn} z{Z*zWu>28`IxQWSK~eCaSKaxF!*$`Fi5nmSK8B}sxqo!%qA)h6qGf8naFw43LiUiI zMH0=d-!Qpbb+n`Xv*a!8qZuPp+~NdpDP7!@3lSPzAxg3fpJXJN-HyyZ-nAoKC*rSa zrvo1(P*QTZbDD>z6I$)rv|BR_P5}XDo7!hrc0OtE;YAzl6glxqr8uT;9Zs$XuRI0Z zqHv4SkDg+aah*k|M-p@ic4fEV608+9ho4@V*Mp8g8%78He24KUnTl*otBpPqWu341 z2^j_^;3+ygY-GsxT)!Rrw}tW%ul{qV41G$hw?o#rt8I`D%utEFg&tPM;R~W7HGNM! z9&58^7nCrzor}lQLD?h$=thz>QKfcDU@E(zC^;dOS(-*?h7sFojVxH^^ej}*)taLA zsNwn+-hS`ZY5I)a1ybav)m1VsvE%S_N2C~GV$KbkWRLqOTqfvty}xu(hh&<vUCx73jkUVG;`ns<0}thRrfV*!UPVN;;~mDK(#7!F>c zIb+;8MbJ-Tov05hwS0xIjiVFwO4@d|f4$FB5#n00YlyvKe+BtB5)-#fvr^fv`FoX7y_w(m< z^lI)Dg(=Ax;KJ-5gBRgZDn1_$gDwS2=s4Xm7l5dvhc~AQS+BWPX_NXLK0pZtG6Nb%?TJh%}uL>_Bu9fKce*8I@yX|EEvp2illkQTJIeCBSgOVoP);)}jq zKTdquhl@j=k3i4933Efy0$QeS+ys>i@N3Dx#$QATdM0|h6bblR;bOr#M(`z`LMFYX z6FWqI3%Gi$kN?_hlZhyZQ|q{|@(s2!Z@Y76LpR}PR7pK|3)8>rH8vXNH_5miRd7^B zot=DSiK?2ENr)aakJq$X|4!n>YW{3Nd6Suy#{JGE9_*{x%;`w+wHVVqZ;9AE8xeZN2xaB$4IGw$s^L7dP z_y5+0Y3ZA2u*|0L2^(z|QC+FTBpge>&aIo*;Q7P8d+QS&OMG;Ne&%-8$*6Kd3oJj* z%g0;zGoq8QB2D3!>y9b&ZH3FVnH4*bfk+(J)(lVC&(M4f{@yj)T){6FT<3gMPo^b< zp0Ykyg*mMHUlr~j&J;qum6Y*s*r#b>!*3q6%Qd1+{69LwM8{D=;tGv(qDFZ{xJgin z5}*KyQ1<@FRUY1S27J`l#DyiR5}bZ~@vYxfJ26Q^dCkm*N~9b_MFPx}|JWw6QlKM;y0w4kP+ zXHFiGTmHH}u2KdMeu2JTmt8|s0j*XVdjxArN0vn~>DHn6zv%!SF^r{|Kr;|NA|@V~ z;18X*v%?Q6_JuMgd;*|`XVo|>54`lZ335TM=!i!q@17&1V^DVX_zTm}R2a{%xOox( zE!&>8BlT7l7O%@8;R{)f+WL&-0FG*X!Xu^}9n}ePi3DY}oBLD21(H@5~|AmFtI_O$OEoxh=FH?B?H`ZtJ$Lq!|tYVT~qV{3VG)6(P zI8-L3ee{D(2d11D zW0T}S$6L)Wo*^d4qcnF9?$S8+#Y;%SjLC~|xawV!sWJ#4fx=ESaBak_pz{mRXvz(i zJFu-jeuq1$feG1_pnz`N>MW019|B|*!UCpO;rXri66_#6Cim1ZLIBtKyAjBos3U2e z3npDc89+ZXOw(`r3{)3K2k(M$+Qz9>xliqt9OoVMYDF59JLZ0}G$1o~J~4!4wh`LK zezX{qO8MrO{ndm(3r7`fsdk@XG+w-)a-lKvc#`}Nvb-C?br#~iLaOU{6b3p6lj;0F z3tQ{>>c9VGHgKSNLClT2^PI2SXH6}}QX{|nOT>9MkM8|zv7x1=<>kSMR z&DkaIg{rv_`dpZlryEEMAki9zc5W`8{(`+t%TY2-1~WJxqW(arDGa zO#dZ?H;3-P_?Q6V3UZxN#*}?SOybNjf-Y}is6rf6Qj#{Nf1evAZgKuuDO}?+kvZ6G z+^8qkN)!pBry^5x`N?V!W4Pgo9B7!(B{f=&Q(`TIi|w{_UDOLwTbbysaY{pn>9+N` zJ22KmWHe62wQ(*uR;>@2P+dDmx}U6e81i^Pq&Pa0VRMr*)g=w`I=-cOBiYW*6oJ(t zFSLo)VI!n%R+??ZD$b5|?VK#3cDvneYsbNe23vF<{(;Ai~lUs*br`k#I%IZ4h;6-y;(Iu!pu=vL%!E`ckOC37D z0n&hMa9+Vsn*~tq(X&B1)WvHkrNX zZDOM1VLCQ(W^phJH)ngg)3M2N&;S+dib_M|6>}XdJSKm9scs|6^k+2Ux@`6~ z)+Xy1(Ru0cv39$=6-t)=xhVywLn|D`MZOcdS;T^R@GZ5-6}*nOU?gaH>pqVD8869$ z`YIW$6F3yWj;^wuZwVoc!H2uIzHhD7ZklyCV{U>2^k9@5>`*|Q zyRO?b#rA|tb4bk6qX-S3CB8%e&V3K$6}PX+E17Dop5i~*;PNi!9w?g$@=;Zn0C4kU zt6>j-AQKr&=<|B>YBDdoKe0r;90hgR49$V86Blwa=R4fYc90 zyft3c_7>3F(6N3u-fwj~I84ly9M8%jJm>uaX1I9&QB&(sf6#NHoy4tMGXE(6nO}jJoGK3JxB2vz#xx4lUOK4ebsp z0dmZdui1*6N1OIrVCn6Kj7yt_J((4o6QyuwN`#J-bpU?i>9 z0hF)~Uu8oav83?&to&I>%?mLTDQGZz9kD=7Y&l%%91=bW_uFK5Os3pAf=DiQzoxHX zX1f8B`r{Lc!%lfDtEBO3&HPF{a>D;=TXnPkAG6IKVHTfN0M7qbm3^*{o|tFn8OS#d z6c!}n^J;8SdpV6fS%w03#M-oN%YIRB?Is<#FWl?}e>aI=Xu zSWWJ?=*?8mr&D5A;pocwsNF6V&c9$N3YoFyH5y)vHs55&m95x=csqN*joTG6;bZ_vdBY7B(pt2;E#=rJ$%vF0wFwE?5>SMa_xZyPs~DaqKu2BkM`^{GkNPJBp(~v zxz^(<>#M3i>9=Z5{6nkoRMhX` z(t)Em5qR%Q2BA6L;-o^&lcvIP2O8h8D80y%9RWR_svOci(R;e7(wDA1rRAc>64UU` z)ksO?5-UJB37pF*TJ|*rJ7$YEM&rN~qhpm>_G^bVHL$?1CzrOxX~|D+O;shAZ4m7&)fS z^z^&BU4nJb+`z1^G*-Pd>pY~#Oc+X~LG$_Hv6Il;fS4j(4TU{6TYjx#u8Heu|AbcL z8nU`!urn(cLaoQ%$}`y_@Gq-niT~_Vx$Usj;HbB^osj(suG94K?w=;dHwIV8pdhOV zM(g5e44Cb*lgJn!MogYe>_Yz_lR`DPg9`tPvX-Da$Vm5~KMa1!V)EF%xkRv?WL-_aiE^C+HGcvPJKy_rfKte>) zooQh8=mAwkl6fMXvTdtOp!ii8;C;=+9_JPPgx2Sp$QW&`%%CObhTD|uG>rEt(vffEQ&>xy*Z(y3o%5Mc!7TRJM6oeKRq=43_S z>-Z3lDx^_Ccn?p&z3{W3>1h7DGDf__Q6RoBt>T&s_NHM$lkFXzNj7~Y4z#QuzRCSk zMF+ zccn`uKi2NeJFxM?Tgg?uZnqI&5mh(CfG_5rnOjRL^FoS^cZe&)aZ_^OafqT!B>wT&6R;&b0T=gT)lv3_{#Mw4GU~z7!;m znuS0}d+giXGub9KqF zTmcZCS1d*zPo6}v$t@J){eE6{6JMExGgYXM!Od{hiut9b-grVaX9>Efho{ezWW z-!qQ{SOxC;Y2(mZKD%2>iR7fKI1w9uW&;aVG!@eB@aauDENab0S9FxlNx|#hE$Pf^ zTP+E0eerS1nA!7=6HXSgOwsDB0YbQ20q0Vb7j?yE&lLqfAdj(+f&P#@OzCAEuTi^+ zFNEE7G(+s%*+0&~_=eGdc${RyrR+%!rNeKJ+mK<~uL5K6;7x@4a4skV#rvRhQSh0sZ^;hAR^?69^sI3jEnIH$48k~9) zW)r&=S9TvdD5W5pKv_7!eHotv<}@~7F@521*%vB%GQIBe8uNn>uknxz9lYI()=q^s z1N$6I=PMr9y;X}h;3c))CC_*?u?UwciDcV3yeTyM9DA4n<{-Ik{M)_#Z+$zgfmU=6 zv-j4RHeNZ1ga?N2hk!9IdEU(JsNB%M@ERZC?)f?T(0alB^^TCW6u+-O8SQ zUwQd-9$8ODRg)Mw8hUs8Pt{SuuKEbg=e4WXrggKvJNs!Pr1JsCqYz6*-gtYEgBP}4$SeQhV1Sr57 zk^j4}HwK7j;bpSiY`i;En#hOOWh^38G+bm){ZTcp1l##uxDgbTEMN+OOet2ioSxzn zs%%~QlHs?kMnO#pe7XyqZ6wEUa2X{PaJ1D8G-VTFPO9N+Q;Y9{ zhKECJNZ2@svkz3?5~|aF3r#|c7F?!EHIx*qQLN_Leza_%xgGAqi%n8(glsA+G-9U_ zuVER>aa>Vu_v6=?@bl$Np&a)ltb$|jl5%frG?3lb*ltR?8>^cqGuSzq)&fC7;rb<3 z`&wQszPG}{hi(E2Cw~-1)`JWpwc^u996k{6!0;Q$(=C_9Vh_aMH0v1qYPl%slB<;0 z$3ViSd&a`7HD0K9sDO;jF%la!@H#GquR_%JV-}jB=6G(B^b+B9k;0gxUfV^rZZPM8 z&cmVecRm(l=41_lGai6@wI^h}I`t}xzn+_`mffD2}@oV2qUedro1kk^!# zs*4YnbUI>tEbJAkFb%HK38TciL8??mbXQ#b&RoW|Sn`y**+3w*92eA^W!`Hk2LqY7 zHo7!sg|5`xT2}uFuK6^BO1J@igJlvli4aNEEA>H`g!bGMH1UTe1J^Opt=D8kr4}7v zT1=Rf($Tk#CBxT+)N{v~b&?%PO9pLa#pfKy3#0*en%Z@Du=-)RkQ!01V7e(}M>ZBK z{$R=N5~D)TU0!4USLMQxR?5vXyv$tau4N>RvWWk1)0pz!4d=^EOvSv-gT!U7tAXk_;%e6aAi9-xec(Z&DUpVYrktBQ= zN?q3!dXl&>Tdq%&zG0LR4h4+Z&MBzRWI80dhTCl1?Hxzbh<8l@D@I=E@F-@GpDMbE zuSIZiB09R7#+Trwna&PhWF|V#5++_lKpVtL&rf6ooJi8dLy^h4#NJ}Azbj&2ypLz8 z7)xh}t87rgPO-1mLn3>%t+kAMS^nD+Cj|M+SW+D(sCYHM{Isp&E8JM<7vxV@V+ zk&+&9#*QG0WmB>jGtM87E51t-%mKnAjR;W>m$lJV+@T6r1pcPGG&Q%AW%#p{w+1^A zX*W>;c^EOzr8WEWEcSs5+hyxv7`ziydgk&;LZ;#OnKT@2MfBFrRPpMJo+XM+64z%l>RuH`y6`0f<0(gdJ0O-fzs=zGNq`D@#6iv5GQl^HYVK&54_& ze4k)lF5ATd6y7qBor~Xuv${bbw{1)v?wb z|8J-oAlZ!fyfp&hVURrIQuec|<#E3(G8*|V^MtOyU?^t{<^6U+A)GfZ4GmXLD_HX6 zUe$Q0U}Vn6WnI(0J+X@Jb2YgW@S6b%qXO+D<~rnX*!3e!?o3MdQa2#%?Dg-thLHyc z*>1JHxmB+r13`@plQn>L5*!`rZaBC+eNQwcwc3C+V)e**-XzW;dJ1cta4ixYF zh&(ALty(&y=9~|?eT1U5fV_8Kqjs0Nfz~(qHmSShXrXBa52ijF)YMwejg`z@p7PDw zs6Tjs?iXi%t^Z*zxPWd@S2uVg@L1qa`)of@6?OuOnCnQWG=Yc>?fW<1qA1uxJ=P)5 z!jCk$&_0j93dt|7P_12B^wrx05$`+~4?=Q)LYopc#^J)(rniokAOPIEZ@gn5{bKPvX1)|l@Yw?qoCFp%yS*Cer|1tk@|yB4<7%Xb=>`5nPb zsi%0J*epOxQnP9~(rM{HJ^HCqAkeRQ10$(evu`0bclENGV>4n{N)fjS+oP zU^!=I%KCX8Z;t#bIC|x_?a5Sb_0sE-|D>u`F>R=hwbU1C*#`VQB~LjKo)!U{28ttl z4O(TKq`-Pc8G$#OsGj80kJ^#RQ(&ceKsMmJq5gtzWdHz#bEp>EYIf4cg6)=l?O9I% zP9Y~gZCfu$fb=PI^0`SLowM_AiD@;>kVP2?X<9*Bk3imKTW3gvi8?8v+O|jIpXwd8 znMuoyP+4_7!Cjy_T)`*SOnWd!bmho;2C803JR-7ZtY%cWMcR6IN14GZb@SJiNv`@3 zt_@WwDbPpTrbQV0_+0>J7$QM_3|_<`)Oh`!z;!_QP0Q$$Z|D??@dBw50VeZO`+Pvf zgYrZC;4|E2Oswf&FB!vzx3pz`8sE?)5k>3HoUb=3^N8W`ao}Ai0+xZ6v90*W_SyRIAmghCM9J4;{Inz3h6kMwC z^~kQ7wzhxKR32YY<`mY6aw>{tNu6c5*|lbI+XQ=srAO6N+gm=KSL({wzX?^)TDGuy zX+&s8e#%P;ZPVtS1I5Fl4So4av6xv;H!cPQ&?(H9mHaYwa{;g^zL&FHZK9vLT_zpx zh`YYWbJc9h-y>hIodKjndVll@n&qNDEsVo=_w+@pfDaEU8#5{-8P{nRWiX8L&|G`y z-g32j%*pquwvn`!H%0zOm9e{^dUAa>x=%W_pT#8-4#UIc2viYJ0WJVNyC zJKO%!xo~Qo;Mcd~!tfw$2t-y)!ghfiykmmKF7{7%!M;A+aW~2dNcHAHF)v?y=Iggl ztwTzGhCf>bLv~ywA7Yr?Dq9Ck5bKO(Na)o4Tr?vg2JSer;4;X3@T_B6=gss}_~r%; zjMJ_hepd|}lM(o!-2b@_H6ONW9>ws|LX7}Lp!pMGUahckAvtxyjhi&Q5+k00LI3~* zlo<{*g%Fh*ixC3BefWXkgH(IZu|PT-!&srvw2O9&KCph3jm0xvMOdDt=leq(NI$7u zh3slyy+rbZI(DyCEdG;@P&$uZUf8Ap8M(H6>Gx|I?DO$#Q3+B}cEOs~;MBTURStfj z!s*_8Js4qR-~<`PFfHCAzf>IRY9(X$H-3s?_<-w|DNd2t$)nde4JSSZJUPXj>E_cQ zR7SrkqdF`0e-$ir7CwlRxo^!h8@(FOKHKActfsDeD4g)D&;Slf#|bS&(s)@zQFWDb zKpX}N_=DjdonblehJ&%xfU{o%`KHgdd#!ItM~aHbO8eFucO|szzl0q^+)xo!7W<)0 zDmhPF!uGhz=>wItIhowGd7|iPIU89s009gt_1bFehCm&|v1uzJ^-#&gV^;X?Q=z@= zNUk%+z&-?@4rNthRO;~6`E{R`!^gHN;7_D-X3;oBi_9?IixrbkTA7F=2c(~)+;h?H zKjet3Ma~U0N<4}OT(Yi;J7#X$MYKdR21=%9jgB^ysdQJbMPqh|8i4CqalySqEY5|L z>#hn)H%ihVLo5g9p^nVbK@+^O*6hk zBn)y2-@hcXqdBeCTI9b6QECI|z5p%rofxV*8zj*Yq?m?lvM&V!Dp0$GK9ynP5_9Gc zJh#9Uggt+5Gq$op$Q^Gp>y3?zj#!>Ey?FLLS?Or!6Q3|Qj!mtjxGxJl!+oXSYtw?Q zs+uqYa+(*r+$hlCKWWWIP^M-(NDhd$Wuzg+2}&^2lFX4YXkiszNa@_28Z} z*l=97(!K=7ifVSxG>ndwjoGQ3*_+puydrl9xj_|0SCAeWn77W{qXM=*y=o2}4;{Il z5sAtsHaACnkl?edj@XSl-6sSfu>)c$hZO9tK!WInUX1mO{F4>3qOu30K3Odo*oJ&q zc%L5hZ6Uc|p)xZGl|6U_tiEA$$tU=^D@Gd37e>1!17`oK2Qdg|Noq?b7;)+~s@}t= zh)ibZiC)mf0<}Tj0S8U_21<-Gj6pqUzqE&pP#aSTmwAW#9gF7UJ2Qv{ zQ3)Fi?q_jIc4Va5k=0>d5qG`4n55zUarNRQ1AJ-x8(q{)%Evv6I<6n$6Y>G`@}UR( zQUOmi#=8j98&f1ji_Y*QD1GSukBS?xC{gL6 zuqO2}@|k%-7F_fJo?zN!u`b5-&G>{xG)N|arDf5z?B}^Nr-=6aYmJP2*KRCp~9 z#Me$Fz^Bif1H-?Hb6^9zZZ-P);nOYk-{`%B!-+FUeuad4U3M<{^p)Z!WrlnLYS*bk z)am60bn5r&yNnPs5%S4&l>9oh;=q!YEI3iSbc&y@KMic~676mgn}>}jMAtAm(#al| z?e^!Mbv|0c`a6`eS`pb!@(h#$zDwdkQWlAbOb8{7p|5$q^DSi%#|B|s@Q1lyp?}oH7 zPGn*Ib7YXGPwUM}(dP+cfKEC5^x>weL{0%6Kt@0t|rT%Nqalsozv3GjdUpYj_TDw(}8oSNy$(y4%uySiX{M zGtTK{`R!t_SP7i_c6q4*>vQ8Vy%USX+={)bh=rsx<_0S&Jd2zYxynA94V1eB$he@@ z0a0B}ffPfjA+ZXV)s%7NxtP@#G}?GsyO)sML;x{9Sg|K7j~0@bd$37u$;{VpEK9^O zoExaQv*-RjNJZ!C$9LawmO<G6b-4ZD+uf<7_xZydWd;3YWN)yFa-`|5TBZSXbeB+3$ z`1V5Br(i&RPqt=X8Mm(&KrYu*UdGJgjcX{r!6;y#>%6s=joymq=xRcW;@pfzNKONA zmmm1wg`V{V+RM7n+M=+xj#-~(!SENydXG!YX=~PSFrtgRmWC1ye_m(>14bdQPVV;=}WC>ItwJ`8HWIIj1}B1>lkTL9)VLI5ZbS z3DA4dB$Jd4S_fj{|;U-A~gq@AL`#a+Z-DBH0fH+GqPi zUWEIR7ZVW;NHaSZ>^w+n(>hjmH6Zg^!YO)LQPW?dP(g6tx;!48rxQE9&|OKR(Y+@* zVwV5X)zaOtAW0x`!lb%i+X`Q{Us!%Mf!7XtTPvA=@vX|7;y&lRRi-whpw)-}rr^Nv(<6_?D3B;odHkZ|~ zq{X28jImm8C7T%+RB*!>O3O!)b*xe0dwDgy1t>^s+kNf@{|v7zwPf@T$@I;oRWbC zX?S+k?~F3FnKlxCMcB6Ptgw&-&czz@NO(R3egPdn6*#Oj$U{>(5QfAiizHMD2&P_aHk&*;0pxc(cZc&S2z@3xKB zuG{p$=nC`1v9<^)y_WNuLBn&Q9bU$dd;fF=RB6By%8CeKu=B zpl1v#D9~44TBrU-NCiu=awTN3<{z=UhXCO}PxA0|dItTQr7wx><$FvN;%rZHS}%H@&D^7K zi?)NyG?NkkPuv}jy=O{J=BWy?qJw)`pChv)>FkR>TF?LjK>feyWV0)4-=lr6JD0%2 zG)KfeeEz)mK@^t|HCI@O_XAhqhLY5N&P{<{6#+I1@Et4|u0UPMAQ&-ah*A@eO&z)t;CzXnt4LUnEUHT# z*R-wK4Nd7gU;4W-7DCb{si$;NCQ2ui{)i|!R?Jq`(6 zxjgRZfdZc(HPPC58tPtIG7qcX&w6bn8K9_tswID=zI0dxm`zeZu02{C#V93T_s(vK zM6)Yhw-_Hf?nD(#<1>Xz&#`MX^sF7D_-_0uzO6FTl6CGQFrkq36ag_)3k4jNg{U8Mp@fxs_D6@hCz5hHJG|XsawHaNS-$B`^^ZzZq_9EMWhN1%Cyl{oQhE zLH#|0>R^LA^!EmXu|;OKEcs>xa)pelLnG>_Xhy5Z((J@8y`1I9d(%p>47#^#X9pzfr=Re{1h`@H4RK`WBDF?j4g zY*=oDOZvcwH(^?nF}>l%!!QrnB`_2>TN8*L@>pM% zDN1q_4=TT6Da8al5-oeUc^B{%Mpi%a4_i%aE zkTCEC&0?fLf5qJJJRguApwrGzZ*yVQP~)ps(`GLu4Ip4;h9XD6nsE98zHsUSXZ7sF zJKj-@qA$xs$p<|9{#S&Nfcmxa`_aydzgBIk(5H<}yXC1Szi$~sf#nDMCr$8xU&kRB z7rurHZn?q}&-gidY)O1%jY`kC(-PISb-Ss8RhgsFVN4%TbvzrqclWsI3ySJn8J5RB zfnY;%Wb}p%s7ovt5jyZnKlP&j)`r!eZ^SjC=k2%PBh5e_YEB}Ie1Hirvg~WjA-9>c zGB!~E=hGwsqZdtzi}+~{9Gs_>>Z05-qM(r8?NXBWOcw^!5GJZoEo0@|sYcv$5AaIz z5%8zhIYaYDZv64`KbGOIXfATTt?3XNz3WTgu>;2?iW>tOigv+0XLG_GI+m%m>^ow(QNG1+~|+S70LjHGWtP z2O>{>l;Z?AGq6WP2?Y^u8}xDA>A@mMok?&~@B`mC!EXBDWv#@voe$_n#4vQ+_(*gz zj{f*G*!teX?Gt3vcFYjf4|$}DYM!PJ^eojuq1*0WhvV?@g3`G+zx>!6<*~}Ak}zf- zNuh0R;iu;Setxw%^Yn|E7kBJhrJIu*%s6`Dw2%?2N^d zQKRrk2b0_Q9EO2M5U5xsQAPtw)_v&)tH+>j*YUtOR7M?;Dd`HjCUZn5OB=BflA zWO>v$(m?B;?mPigtGn#6H?8|{PAelc^=X9HAl$&^sEz)%gz*_6F$vbqlCgqDy zS*b{X(iT4W2YC#d;hm{|D#k9!pu1r=w&nVMBeI~R6wR94C!9s>1xO%I9Wu1c#Z-ya zR!dLV%?At93%xVNRJf5S^l@bV(Th(Wd(Z! z=86$;6m>;Z%uwb2Q9p?;qacrNGP@tCw09`44Bj`<+N5#6-1S;p5pUkYQ@X*;(}Y+4 zMzco(=HMF0K(9(8yu`YA1Iv17KM)zdZHY62_(>qGk@}&d90aV@OpfOF-bq@LkR5FcO+d(spcNk3b4nRMq*=|2Cq<-7Vq2wa_0arPD#hF2V#?>r}ChMMOB@EBS_< zQ?%UN{?gtUK0XZ`s3MCZ-Gfa0SIF!LoJ1G|lEC4sK?0yyhCXu9nH9y4PSa%mifg8- zSy4&A=Mj4!{@QHEela$Vz3cnsgt}n>J!2$HD-P^*nz@sHqV19_bcRmGpT|=|EQme=rQL@2qgn_eEZnBi?H!pQHso3513(id23c^Y@%Zbi){F5D8 ziDZa*gOtu~zVI!{EU1vi}b;@Ba@xO&N*&L62eUYbVJZnKGJdjmLa z8sC-M08Ph!b+b4lOi?y4kZp?g69H6o8ndG0@Tj>Xa{(XQ>B3m!aL-QlleS(x1K(#X zx!MFT2)2ThG5v+zch4dGF_!+g9i8%T&-W!YT>R>{KPg9=#mIdFvL_pu)fWGy*;Fc>TfYJVH*UKUb|{fLf5rHczEVmZj6D3x_YWF*L%Cw zDE+obmf&Bp(*yJg5f4$^{?vMg&|Jj=+f3s$v7LAhm809qgqjhM^l}XtKs0s1T}HE( zpftT8pusy)-B5WmiN+`;XNv_vP1jcMib@)Z?>{V(0_`AJNCyCe(bN0Y#y)mUs1JnjBv-6O3I^2|ikF`IbVsO&t}R=OGkgGR|4+Vo7TXcU zu&<)5H|;MW9BPT?z%Rk(KIhDbV9|f>pl~X#(72*@n#C$9MP7|K&)q3`6v7eOp>{uc z&NO7GU|@7+&T|oJ6WcG(YJcM5`{^X)>)?!Z+Gb(FQTI!)E}q#xv<%{7k13L3sDz(# z%`y|(F2R&x|Dw(a59i{7wD5`6l@?SvCAkH}<@I%G0WY45Y-YtM?E%Q2zN7<$#ZsJ} z%lc3P(?=49a6E5h7aSA%+FY_25I;}x@_!9|B#h+`l##L0=3-!1%RIJ&xS%?hk3ASA zuGZw>KItlY`2ru)x~L3B$=$D$e5MXiSED=uST*zt5baI+`(^}g1exJD+VRu=5v1jD zDi~!8R2P>Ic#IqMlcQU3uEXt>K(Ihk>Fc|ij*Jk)TNR<*Q;XH$K$mviTF$cb-$XZdBMoAeX8 zXT?01B5HR|QCZ1Du?AG@kXFKLN0_Q4Mz!1J3*n z*MCt(dDav66#v*NY&~U{fJ@gUm5;C-Cn^3Wt9d8v9->h zjTUShHN`0Lfj?m&cx$=e3eL=DKCsL^!+eA}B8B6>7n^MtXKFWncq!+6KCl|)<{+w< zb)SI#+XeHD>0Rn;PX4%)PxeZ4Tufn zYwQbiK{)1;4HCNJN0uv3%vKSEVfqX*t#-p}{!RH$)00_V#rM<@wXj}Vg=Pa4{$(h? zZTCB*&gJWh6)N?-bGtbAPTU(qi;xT1V@xfJ70UC!1RV8tP#Zkl6B1l)nZ6{w^y>A0 zK)vEZ%HC>*h|m+F9ci+I9h>9AvEe-~ezbHhb5xby4wycJil~y`|A>P0EFCB+5na`( zJ)}riF*Wwv_~q3-T+Y+ z&6$uip7E&xa>+51WVUP*W>IOACL6Oq2?PLQEmmXxAej;TTDV|sM#m);A%;Y1d(6zM z(ql#E10Pn9(9=OkY8Fdnu}A+)&i%ZRrqQ#L@1E3Dosxq%6T?yF#NMcSy>{!Cu0+>! zXYjvp=8eOP?eJ4^_U{s&u3w>1%30&6l3cl`5RTE8uiqP6bu}eZQ0emA| zkdzYVAK^#Bjkdc`Az3}<)xF)rLS02OMG^pYq4I63f9Res^L77QWSLT=&dDj`Sm=D7!z^eJjfi3eDP1I!UOCkjWCLf_^ZWW| za-*)?4jp8F$>XZuz=wV#@7fH6-lIv%6JIZm0ONIJwCD`Yq0=A3sZh= zq65dSJ|C#itA7@~h&c>fCQWw0adjXOH(q^l2Sv2DC0bBLCbZ^yMCR`Ge3RqrABW#004g}d=d#j62|7rN$irR-bNaD7jb!>lPJQ8 z6)Y7#BTT|v3bNgg_>4UTklHg|mUi1yuoF?n9ltA53=uOP-j9j4M7f)#5R(fL1bfUG zw3pT_$-G6%cs+@r9jfRP={jg6*a<@ASNqvn)G>lP z%@Ow!i=>T0@4bIpkt+!6`bfbdIWRQzPg*2FZ_P6*VhJDH(Hi9L*SqQ}#nEwf`Xt3k zNMbNR(KR=7T$b_I)Okm4z2T1_p9=zq63Bi)NM^fWdFlDC%3R#U)tcu=S>DkEg+{Yw zz6)dy+KG$fwNw?A_W@^{u~ ziyX*K^=P`^Pu(C9YZz$Jo}SPyt!s1Xd7M_8^-HC3$<3inow3L6{7%QFMdNuX@MXLT zvjMh}yn0g^u(0e+-1jaEvPA_??idmIiy03ZbYYMYrC>U zF=UuVgy(i9w@V%BU52~`GAPnlkH5(WWLghIL6K^{>6j&rhe#{3pzu*&lh=MW`MItd zX_#Scme}2@Sw(;^q6mol7_LmZEFvIleRv~QaV&BknmSu$fFq*>-{nDsn}7zFG@5F6 z{xc?jr*??X=W2p-gC6oXpNC4Nt6{=&yQ=^kAvVYbU znvs~Qt%-hxoS$-_ATFr$(rX9ySUWh!6WTc__ zI=%b@b?%o|vqxpW3MTJS+yP8348^4Y76MfvWN#ygfH(^g}{OcmO3jXX# zc}+F`;SJrm)R(_+D8Uc=)lLxaDxc`B107Wk8~0*5wYFkDojX`+mkMF-%bvJee{~_j z?8mGW6+zWLo&mCM>O#N;8zr92Itg2(=)dziElFuLnZ4)mjat6MtgPz1yJk^BTKas9 zb{r$;4r4^~*c2=D&tP46BLsT2=0yZ6bEq$=bL81a&vz`iV5@iV2Wk&DQL8dca!7am zi~hu63pAs*-N~p^s9PMF?lxBzm%;v*5}DIq&a`r{amxj|=`&Lm#3WguU2-g@*vB8| zrY&<~bQGV*e5n1p@?>>rl|04L)IjV3+yA|-Iu{rz5%&mA(R{di066cl437WbXam+t z8W0AKrsA0qVt*6gv%+DHbn+1jqZg1AL*5$#qfFVlPX0C4!Tn3*a?kN>i^<^OzzQ}? z4xcOCfoqb)27|R!PncjX$lG2!mdaDqSt+cuZzG=xbHm_SyJoiBSZGVYa?-=joY;WF z1r6y1zgPd-Cm`dNum{!v`O?LxjZc1B3Wv!%Q`J`JT!imbKi=Z+ZAw+Jru%%Q?rXypFF;EE<+upT6mql3Cfl z!sp>UcK?Z%tzrmgM4oV$oFwI^mw@*k$pCPyT#MreIZON`cE_W~V8Vk3Tb>b-PmO!H zD>qL6&H~s&O`O}snsU#Q!?msFUk7NSYU5$JYwt)9zD;(ym*5?VGHL)P<6-%XCo`bK zWH%m`8$2?WP=f_~Q4_frraStNkLUK8cgMPv%1^kw0DE2xFWNl>&jPumkX)$AZvoaX z6#z<4QIk^wZ_{jEiM*C=QKE;*8gNN8UF_~dgK`uSWD2MSb2gfyrUf>-%VJ!44`ddp z=S_e02_PF5j)s%uvZpvIN*XG&fg!NXiO8n^%4Zz~*7khQVNd;wqZ3!IHIXF@QXbH- zqS#kIHFT>L0o}s|q`^qfj{o`VmTxQFTnKPFFFnsy28|=F17f&zxT@d5Yg;XkZ#uT+ z>D_;Em2k{K*u_7D6oVG#uK>!t0~;*P9Pgj-geFhd)jreuwWyOBddUK;2QuxctrVlUT zY6Rc}wDiG_)E&A!Iw29k*|qlXqh$fSF;m={H@r#0vqpVlu^{&AcB&D)e||hGmr{k% z&`Goh@3JR+8tt-hchgu?hqLqyA%zeJ34jxst9VkHu%?z;>03NlyG8w2yL1T61PD%O z7a^$x77Y`JKO#mRt|PQZ_vAkN8vZrljbL1@SYtKr6>8z<`)6QOJyP!GQ>3>ax5M{w zw%GjL06{{|rqQ-YiHH+ud|mk}>&EFaf%?31ArJ>8F;!|f(mTwDhiQq1w8ocfE;O<1 z0`Hpw(`WMVF6=SxEWqIiDEb1Ga%nuIL+B96jw#aqiKOpC8tQ>5c36R@C?o1BQU-ZRZa;LC!BCC*1=gs9L)0h+NPU!d6=(C6$#wG8cWaR|P=e^87>T_Gbm<1Ydz+sEWEL}n zzpmRqh_hLQJD!lxo!Bh7Ml4?RFN`_~zTE&?q!9Ue76ZpkBfQVoNm@PVj9dVz*v(bN zgCqz8X)=*0g$?8>Iv80!z>>1Frex6kC!#CG>EW2eJLs^&Xr{ZhB3((6-RZB*VGMH- zk7p`DbVrR<75$MZEXHEyT$U$D@l}xf-XOo~W$6A5@>Dv0yiQGMogW}xKryF+!NgPX z3G?}uZW9!@OK)LEzh#c5JiAFO)Vh>oj^U1u9bQ&=`Fb~vAMUM3B`}JrO+^3t9FMU^ z;b_fOLC}<%SE(I&;h#^c32Z>|`+1ry00{nJVD{@7yn%I@W4V0pwm<1$EK{Z&_unVj zy_addlScfS7t2z0<_|H^$btlDjOHdH16j8f{x#XJot5j!ADn%J{=}bF-0j(o5Geoj z7&N6fss*C0j#Z!D2ofhzo@a>m5DfU;k z5*)`Wx(jQ$P||H!>BuDumTLSQO))M?@4bbSN4>^{&{bEG7TO`}>mlk3&<`M~cyGbc zLVOr?9l{>nJVCd}bas-`5!eG!>jzo!u-S+i460b9BT*4gdrG;>zQ%UGnM1@dQHI^F zAeN=1V~Go(+(v|Rg0EFgXV`f5?S)i{!1ua)Vj4_o>+3m9_w0BSURGPk@!0FqDfOzp zgQ!Zd>t&!HHQdwF$pBO36e8{8?szP7*Kt||$C1081#GHBv=wD)t=sxxeo~D=yr6sa zeFx-aRh)kILTJF8xQ9J~qOD2ZAjBb9YLwdb(Q4sOQpbq7ngJr+BESXVg^qOKahG@jhPkgVt9FY8A{m!)0o#SR zrKM}Hz^GlAR!1#@ai*P6D=DP;607VkF?2X)c{;S}t7))z@TZO1G4V>Iszfn{+G+LI<1}XO3;1lM7evc&cG7~DP5=W~P0jI{hk3*jg|+F` z;8VZln;&%~;L>Uc94E@F=psrK*%vPnPCIixs(4h!xQuIjND*uQB6M9M^;av}UxJxn zZU$eON?R8ZP`a{{Vayb};)~vaeMFn^>Qd|SI09~DDn9|y4`dDN&|$j!nPs3*^R}r0 zEC!J*4~suV9)SD6>nzagL|G650c@*EQ=$bQ>*NV_^Q9Mqf|jIrgkMvGpn~Nv=k#V` zUQKCEB@}GID$opf>)C$KMZJI~Qxxd4T*oH+@eO>m$NUom=9(_Ja`?lOQR;1P8YcIBNId248l>6XKa2X9zrP6Z6K4KCQJ;(6> zBx5$(&Xn>9h-(UX0Fh*>)~m{)lJUI)zm=$6i}oeufO!-JY?ALw+W)&e|3qf@z%(Pt z-qD7RXy}Z$@BD@+nBn57t*OJkCNDEu6=)=L2!I@8`O5XZ!8&#Qp^2J%Udlm6EF8e3*lTFI`CbD{kh z*i*((N!qhwD-XU6n4D?mDDn#IBx<2tIx4rGk@IIT76P8)8(v&+adw8TR$0UQf6cI1 zJ^U*>eNQ;8sRw{5mlXs^ZL(wa#fV1lQng`25<%j=tT9CQv5YhU!hyo?fqT1csbFS% z-vvRI>6(G35$`3B!C$(7BIkz(-Q9Dcw5F1OM|yK8f)#44=;hmtZxiz95^?)A| z9K&S+S%dkMG=)90yr}(@Epa2>5~+unO-(mAlD!Ya6~H?;*p6N zqMS_z;A;DwOF{-QMw|;|hY0nty3{I51yeNZ#cEj5(u=mQ3^8WXbHxiDh4C9$IvJ$Y zv-E47zq1TygGHwFnintHB7%nTzae=P{W+qpK=V+TaF6tsUQI9Tni-VE_Ojn%u4pk- zjZgaWt{)hO!?eQhC-cX%JP!5N-Vx~35DWw14I?9LD_&_tFZhTyx7NuRCnLzYO&z07 z>TZ2Sz3F<8%27H!!0I-V2i|slVgzQO{910Lk?gR1CDN_~G*warGWsA1$M!KPfq#?i zzjSvY=F$*HA#L^VuVgVqf3@8NJWUeR(pGgyC0yVK(E@0S z14lr>n>1hE-^9LZS&>^&DwI(BfoO{(JE3+ay3gHLXj^CkfG9KM{##0z?~Jv(!2N&p z>9{vAof*3}&K`ibw|Mn-TcmCG&UTW_0P~!wJ}!&3fn1h6df?xyQ}6TW!o;!gers=5 zK~=9PzU*|{>Hw{ znoq7s3#2wMHyp>?zMp{pa`_Mm0Y7xZj=#5xbmuL9aVn1Piqh;@gF#ygOgQK+IFry5P5 z33uB}El>w4Jl7*}r3LBQ|GH}xF-bGYZJjD7=)S5b8fjl~%huxNXtDs$9?q@(nC5iG ziv*Ldr^|tUC*XqPD?Q#d3h^LhpyIvUiwRa-@+PJOvN*>%)e|YwW{UVIJ;l&>FHAv(+S-N@Xs_39?8-!|FNb@IT;oS=rAzH0Pkj^Qo z(1C0qk!SWr%rMzzfgW?S=A(h7YLAAq#D49+0x41riNep^#Y04*doB`9@%>!>OE%e; zdf?*afoq_Xtt_qwUVmL7$Zr<)BFc*OX(2?~RUBXaRpRa~{U!y=P2>((>wPAesbVgh zaV9&3J{HvMktsh5uIEm>njRI}bT9R8&57k!cGMm_!HK@B(+TOQI;4~U$!Gkw{(|cz zp2B&Z?Qb3C`-NFLc41es^Fc$G@wu|=CY|X=m(FDzDH$IDW&i@4hLfWgrM^tzMOgn1 zsd_3k2HFF?JU_>`G(L4kGEHM_P*M8wUMz)7H}z}f zL7yc6(iQ*=vtfINbxuQU3KgkYXp8P7rMw5Q* zA&eO6xg@t1S>fWwU`#!j<~l>!JAO_OWUF(i1?MYv8`SG<*XCJTEicj|7w;eRc)=c+ zO3k84Uj>zG^lRCv46CWLGq4#?$NR9%^fVKEelnWu%HWdCt)9H>C#_DoAW=AFa8)uJ ze0-*3QNcM8^Zq7FJ-*_hrU?*0o6H9OiL;1PnerC+-~6)M8|scc#uoT2dK~VnUB#H; zMqV`pU8|QbdE}t<3@&U6j`4aOKVw+t^iiLIi>fSjZx7q~!SVajl zBPqqggaHv1KozyCLR5L;yIH5FNY3dYEl$DB`0rlHC!qedFEJC03+ox;sL>h$VOXgN}h53XM_{(Xdr(B&4p7+V;&o>-B`bdNo1 z;c7a7^a-QR25l!T;J>g5vv4`+ykkI~gANb~i_P5_7&X1M#k5=F(Nm6kNY648KPD&T z$z9$+-uM6_s3=)^a?TPjpxrfmFe}NbGftSYm67{(V z8P75w(R-n&aC8c-wWNPgvz`JrJufs=c|wruW+SV18I077zrtndWv?av*GczbARr8t z!~q7tBD)A80RqxCIdf5?8GHl)?dW}JJ;(041j5mu+z8~Ig>s){rLP;vvx*feznq~F z6&PNVRES_^>dLinFB(;_I@St3a$JsGt5>G#3YxV!Wlz|zmN5>l=&xb)u{dXQ));BlB3_ z>!c7r)H2z3xp_Y*)y1FEW%9OZ^B>j_`!wtaTx0;>`xcZ9v^9}o@jC>-t=b6;WlS`n zx`SOvNQs0%DQaZEbHHC6WO~Uw;pU$!(3fW37p}p7vGBTbQIYEpZ_*FJF^! z>@e2wK!K-1nSp&PVDB0pp2i_gM6BCs>%rxX{zZ0Ze|@AWDYy7qMv{c-{2MVWI1Dd) zcY&N1qgWXPS5FkEBsB6fZ3V|n0qY4MdWINi%2)}@N|N@^za=*xZg9_E5?(GUC)}?> z4w{Hge1o1PX zSJRi8q0?O#?Gb-q_ZAp7=AQxqp0n4-@b@yyO2N@*uV+NVENEVuo`nOkQ2;cqz%j)x zke4T5as+7l0<1HT7@`Sp6_ipXYAx+35c(LDZ#TOQBQRkBJqTfi;Sv#?-_Lo!^|DNS z0gn<*&@Oi<;EGJWmeiF@g4*C`nTZGT)X=+NNV8ThR?h0V+8aEwgk82b44s!i3hWj= z&~ID^GMAPiXmMe15sf+pChtAEfT>%6ecUjt3gLn#a}sw35}C&Q-HLBA{i`Q!?^4P~ z_UOY@9`_M8fDR@?^%P17_?R6m`q)A+$Ol%W;%W+tj&hKrV;2A>er%LBjGoR!l+j%3 zI?(C+c8s{5i7I*ne||t5%w@lTbUDXYa6SOqw7d<#Rty2v(skk8$XlRi%>RI(NS;5# zjw&E<`4^f|Rqmz50ZEg+mt9x1uFBSP7&uJ{iT=_2#xL1^smtc@tGTTO$5zd*`C#Wk zQ^&R>?Q%i;*Lvo8Ir~AdhDm&sa$nNQpvj43xP+6)qF7R`2;cqLaA4wwSKNa_)L7oFE4A?UK9hB015!#TEhnGk`iIHqgX zM}GSu0RO(w3*r(+N+=olCd>C5!(inyc@1CSircJZI2z*-=dE)if1^hqK?hyxhJASx zNjkk+iFdE2|K9(EVjOEkBzAqueo_LLp2Gf~NOd9ScBsFdH!cVco`Ay8gqb2|ykf?s z%-GBr88^PiWyFIa#LUsK5!_1b4SO{W8m1J8TrfDCA5eInN*AZ zs~uKZCF_ikwAwI0`&%6XKX3N?ACh%XvYcz7Z`4lxdLx{I$|;Alx|S;MbTZ%c&ldb_ z2NR!|2ja8!_X;ZHO0s-~JnYo38VBdP#V%z<$FwNQ*}5d+PS$&@6}-zs-rHn8R#5k_{O zR~MOcaB2C!dhrS894sS2o{G+^p1h7r{nGxl>Zt1dJw0uCU+z96bLJ#F(fhM0p48Lr zafhpER4yqdL$Fs>msHcZ<-Iu`=-o9ZUiE73rhOpx&;KyiDmcQa`=m0evfH}6l4D2D@K|lV- zsQ2=#6#=n7J?!(C$4QqKtDrXCJL1Eh6MMUbS)qo^!Gn?4EsvYGT$wY9jh?~2a-2#4 zNjj6HRQ2MIb*10d;DLi~)gnYGOy4O37gOP;eUCB)8;POM9Bd?jZ9KIe2dLsOqYCag zReRvn-qa@3lPsED-8aJ-*4X{l@@c5n?NDpPAq9Us@$clS5AI>S)EloZVXN8#9|o(GJ7Yg}+J?zI`WkxPjHxsZl-LM}uf!Go1a2X{E^@_tp+S9g zh#V%2p9a2L$CL*1K8QYVjt+ZZ_^nY*A?9+ulxaR?G(A=Bm59ZjJG*v4ed>ppN--qs z>u!_-6VNj4+OxI>#18B9cEH9>NC%%5q`nOQs{%?C*_XpZ2R-`juZ%Xvc;mKg6nZlr zY{3pb53%q}Q`(gDu)*s<50Ti=)LmF0%sM>xgVCvJgX>53ZZXP|)3)*3`Ltwo_8Yj% zs;<8AiP+?+iI~#BO?CE)i<}2Q(d#=o!g>Uq=%2uLR#r#Zd)lUHD)I)H`Zo|xeq7~j zOB4x_UCaD73PMy;#d3ryV&eG1-6|0KcJN|qp;(2L+EW3$ntH}{X9XRKiQp4y7De3U zZcH1g)D;)T!9G9M;!ZIiB4J}#^cP}fJ9PgpBAvfDM%YsobV-p4U1?i>=_W{BFG{^4F^+vc`v8zvT*M%tUZl-R5Kz!=4G0>JX%_;nQ@!{>Xmn zuP~L@E&NvkCm{--VuNwaXvmcjY0g@F#`({qQ;h)IH5&C;MPZ%>U5V^UX|l7&y&AyI&~lmMTG zR5Guj*qe31cyx~A=-@MDys_G_mw`7^nP5>1)TI>RZRx za1@4FgB2jSEMTR+Xk^@6uFV`tvuxzI9yj?9FM+V}RsbeDMR&`5yOI9laAOx88(dD| zg;i!xtFM27+%!G$IhPMx7Yb=~g(5sEstsO+{9gh9Loklot4|gw^lYec+QcP>z7d8^Z}K_b_$Ouw#1-vV>tn;g(|Cs7LWXg?BVRvaSQ2Hs>5C#emaNuJitBn{W7@q3J6|Btr&tLdbC@GbX$uf!gn?Y zpBV`#I;8Zlp^DlFf@KFc>I$NJMX#6m3e=MY&>$XO7*T)|u$2b+2*G|5MAOXuCp*)W zkqa;0i%1RwM~$taWZ;B}N+~7hwzFU*9G;WIvPCZ@iZT71#|fzZ;1edXXJFKdg$+(-HnOu6*?W1Q~Qqe1iL@kmUhG(gBvu`42v4WELvG63w0MSQ~vp zJ(y7urd%aX{JE*#BTFguEdR~`qPp-UpWtWUfCcv@C*F?S#TIgE<1P1@!9&B2B#7pC zYf&o}WQ%H84}>JfwbiemgB*WW2}n4;@>+1u5CiHXx|Q0qwr>uxz(`uzeX}Eb4Y17cohsM;(bH2zXE@`Z zp^`%YB~LwF=0sx6+!|I@#EK3WW@mrc6F*}N=ks;)osS^irYXB9vRY1-J$7NI3VOzRr-ix0cCU`3k%PG+>a?i4dl-BN2 zS2HzQTYRfQ>P;rZ4x$|L$zZc`9zy6O;51=&%BGvd2=;Wqwo;`>^@Q~@9dxPGKgEH` z)obli!&qwArjiM$Tz|G5;4X4tm-Cy`LOl z4ZNdjk;R*#QJXDW4mXbP;Iss6Xld z(~AZ?>@EJ-sa;{x^YsDD=a2aI4w^TOka{*~jIKxcX?O;lxn0rlucm<0hfk!|Y<^-c zsKA!kn4WX$P9xlhzcLJ@P8nV?3N927Z*B%xx5aw$x?G0Tm^Vl}=yQk)>+XraPbk@y zQvKrAN^LZ_{l?Rc!1JejwW*naWflKV4)DJX-CLLT{{f$vNVKE3&*SA>HU8^M z(xon!$n=MHfyx#+z4;y47zD`1!jduk02OjONt|nzIpV)nSyc=BhY6Z)&z0xynm@N9 z7bQrGd$0J39nO;Wk|04$Ego%sT{BN_=gNRa71O-pEHpxg@ge7?5+eAp!;vzfoj;wo zt^p4y%aSd&G@|YTqhYL&cQMHiZ>D3slV5lVOrXjikcRB%N#5*yAVb82qUL;osPsJs zH}ydM_1J`2jIQXfAeaI=P`FC`)X1a7G=5X)e|ART@r{Hn8>NS>W&yxTI*I%mwZ~`f zvadhSbE9Dn^_hc z;tTl@3YwU{f6RrpyX62sFrv9l19%*36h)?Lv9|rd7C9>CT_%w7CyB2xoWwfo%UhrB zc||y5@UzkU)7JY$SIVY&s1aPu;t7qX9rAHea_NNnOvaxDmAu@v*h08U^G2GK#9bOP zpQ<_1-3mELsqyNMB>4rcm4yywKk2cVO>y};Yts4Jv|}!)i&Ps3>llF<>-&a4Aaj~w z%3@X~PCs-uit)B>;2Nb4Hkn&(<6IVRim$dE0uyXiFT&}fJR73jFXRe~=b4QSO&u58 zq<^?yy+#)Ryp79?Xc&@p7g+nJGd(itB10`_O}hzET}G_ zcBPUgYNd#ch-qV^4~+2bF0~Q5eOoO+=H0{uSm$Mj59AqK5Sa8{!q6*tA>WA=@+Ys) zv>ic08!$X+IkG`lD0Af`i!%t${y5u1vj-i%wc4iT5jC_5A8x3}U{m6dAc&de6Trkh zD&AoRq>A64$Qn>krv1$VDOYdhjA|1_rPSX`E-uw$BO94R9!?N?KZBQjZPNukkAOPV zw4qVY14P}ZSrS&z(tczS)&LK!ja@7KC8PTb#+gjg9~yM=oi!t(WuDutrq|1o1u26! zYvC5vO+bGDrIB!q6#Nt#xb|7isTl?03k_8Px;RxX^q}MKtHp1%8F1rJ z3Pb*Ag%)s&Mr+??J79#&;PxN7s9!2Drz0w;n~_CH1)T>?h~|kRw?BW}WP%3OYeD@K zdKaD5__)e7sh*Y;PRAA?xoT&5tzH9J&s1vCIidBJ{##&k6*NsmVM*{1MXx>g!QI}g zg95VKDYJq>kb88TS#?^#Rk4t)nd|+Gq;S^rig2-du`8akcT*5>Mv4ofy^>jek*5db zJC@AH*5 z_byFXv19e>PG2g5r>NOz#4c*XVMXaJk7Dys4ZCLC90marQL8zw`_aaa;+wzBWz9;1 zRk3xBzqO6Z7C^-a|D1JLlIx07w8cM>kF4rGpFibAj`MTINuD+q*vA8ZZ7 z)Hui&2T^wNzh_q})aczp8c>- zFik_C-`-0gEzZ<%EqoTqz`rH0Eayz|e4Os{!(O~XkXKS301HDf;X9;iGg3yIkh_Gv zbWG}+iT>|H4?KWe=T}iX88)kD1L(Cdi6UwGG(2%sm$-Pq-L)SM>XOLJKgWx(3XMiccLbZv5UG&=A?N*@`y;~DsW z*(OP043Ja*jGsG?(qXp(VTa*?-DF~V=?zF&jXcAK-dKXLShcz)_B~&WL+=U`?rPHq z&vC420^zE|LwpbGC+xtf;tjwONq26M-c%(&1T7J8p$2D;SZcbxjz^GyW*!IGYQNbh zyw~dh@Rz+`7=h|E_PdEvQprR4=L3s#Pg|xl2E7s{e5-#tI7{#(o<&mXP>c@%QU&qd zpdo-7mjDdJaG(>Dq_RvyuV36dEHc0H7dCpi!lDTI@Lr0dZ@A%4{vjc>mHrbr73&Ar zEJ`2Lw-+(MwLh^BH|ahH@W;R}67q_46>ifJMD%#LTF$7@DXLHU=NG2%evOTnWMUkW zupt6NH4s!$H*)o=*>3zr)yeB?G=5zLPd}V>TUUFt`-IM|u_0T05ZcOdg_4YkkE+0) zs*ucQS1%aV#-OOLhVECSP>2ehRqw7^gK(H`aef}9DfuRcQ5rwX%g7+_HqHRttcKOA zL?XXe#>3YBmT2~sbAG6sHw4#TG*_%4nF+|oV6{Rj*G?T!zNj?T>_*?`d&AWUhbjqx zJ)}8F=7S3o61D&QzJ|ustTVUg4q1&Ic|c_R3J8p}?V$A1MEWb7frZlAlJaMzC)>9q zdhslbs?)j%rZPu=<)#;EV+f?m^yS5g1Eb*FI>9T4IL+YO#hoK}IQN8meg`k1K2_yxrP7LC_NHhas3Va>p@PC-xOlt%4UMX}&;xi* ztnVuX*Vsnp#mASuDgtz0zyCX??$|TI#)v>L!Ib5$Mu%HZ8QmXjE}BTcv{9>Wy+-F) z3@4jpeRyTY+%kU)g>P5}@=nc~ZC7kGu`D|?H-zZjz%7a}#1WM=|4kzU-zU7=8loC`|9fAW*u zX9Sy|OnpNaTW$EfAA$M3hL#?tbk%R>KsMK}iKEi1%+<74m*Sw!%5dW--<)IF0oBz@%_; zCcnQrZ1yg_!Iuewn=5F;?z?U{Lwlpg*`3w{@_1U~r}D$Ou%uDy?!hT4^!gT$Urs1H zZ<_iDM4crx%w^n#fx@09os`lPGt~HPxTgdm|8#}z?eAL~ryWEt@XpsoDY1BaI-QT4 z4c7ym3JQzLa7ul2rfTt85|Ri*swPDxu?wz$`p2!G9iJCe;PmX#D^@!e2PUz5oOlPO zxP}(GyH#gIYV3W-Ct)Lv((Zw$0^%})+I{4BxRub z^7^>^C2m%O-&<@5fy07djxeV9N)$9RI$(ME2cVk}z?=1Ta|zSj?qP7D;{(JB{l;%8 zU|n!s#43tW?nuuM01Z)@{9ca+E2LStR5s3pMCc&!?tzA7UviZ9ZLF~^ZwySu;MXZ9 z_``4mJX?}hfz%mSK?SqZA{EC5akx(rgl|J7ij<>6K87xwmU;dBFGz(ad|n$>qwp0a zsDeTDIi=U_$eW+z7*y1RX|)OBRK~vPx}#F2kJ^CdsTICR#X;2as0IJQiF$O2M{}o+ zISv7>a? zeT_F`tTJC^DBgaBYOr(`R=NW9Lz>%e#>^cR;&is#o75ZrnOo?11Pe6&^^NtUmv>+{*HKJfa!o~(%0%&(LCzh%t_WgMa6*7)PmHty}otE*r z!-UWiBgzi?0yAG#Zdp+Aj1EC{K-V0^S)Z>_j3rt_K7JWW2_lSwPJ;igb@0_1g+%e; z^A0h7M7I&F#{n5dA2H&*bX+l9be;#t&8Pmfhw)nsor+@kOMC0KR{{V*v$4kOwfDb5 zZ&;xF11fsr>coxaT8$|`LQaBR6N~2zoRuV~H0RXpCP7_Zk^sd8&XL8~;PX6^-98>d z(Z?Co_1wI)%KOWHw#RXFhoT34rU|nL3{Vd+Q=rojncry{(L8My6sG?Ch88|p4UNcp zceD-4ghfulo)@?205ei$0OcOLKngoq6xY54nHr>TGWd2SQ^4lJ`w--=l=KQs4|)A` z2aYd8gl)6^{9Mhd08nx$9i_A-ngbrou2+31hhHxAxi3-lf_EzN>1Rp-5AOXd`tUU2 z%04%1Rcm%2Mww>1#9|8Bf7i-|A~e1{bcsm4zzxj-~e*}&ob3-rr<%$?*M>y_@33FNOo3WCAmB(OS-^VxT?t1*_OVh6p|H`_`y z@VW{fdE(L1|8+JMNId2K?uiIY-&Y=~T7%+PJDGg-twU%#DurX$k4tJE)_2|r*9KxF ztal znjMLX>iKc~GvJ?XN*h(T zz3}b!NgPttqqRzbga?^^Mrl#xhx0)Zc=#@Ty%lGMf=BrrXF;Ie05UGn!RD3={7+?j zpGg2P?U>8d6SVYXmcY6bXnvVuPX`_Wym61B7q%?~luxSl4d9>M8d3h4(FaF+d>fCd zF3q`!Le&2{5M(Oh?me27TYT|oyjvJ_Rfpn6bAM4ZxdExlSVQXc^1oFTP53B|<&W|` zajZfHvJ=*l5Tvb!g}!lQIv+I?KX7!yhWOyX%3IEXDNQULA;6KSY*o*<#1hoC%@;S> zzzEa5Iw`h@9q4#%r(CraYY!YzOUCD6NqIkICSKG(S@nDY&tWV+SN00~h&0yL((04{ z%I>_Ap{eOk5xJ%w$&{l}sK&ov^YMH`CibH_Zm1{G`&aEJ2TU%)d5C9H+bP4~v}&DI zmk^l&U2N>7=mJ3qAih z)(LYi=6MUPR}fsWn%}p-@_$7kSwYG2*&1DnO-Hm+nC4*X8;&jovZt*Dr`xmCGY)0L zJ&RkFFKyVqRDAuhgXJ%wv$V0JM7j^RWmPb2hvFhluJH|F08812fO|Pb@8dg8TPJ>E zl(uc9WX9!yqz@|#p3fEhGkfwBHlRv5@{?eZV`MhDeq6s)C%!s3r#Or$$}&#Ect?8l zq^dE_A~%;PnSL`=K|!}Kk^)1aX|p0{Ku-IiSS5XSjvuE#m!U;E`N$^|!MaZJWRw0Y zokd!y*vRFK@BDQ4ucXun!@iCBEd+ya%f2N6>NiU zSBIn|$0q)6NO`4_;i{%j_4R$a#k-|>^c}hAO|8Wm_)o>UimB|nH%uahmH4NmRrDDG zLlst!3rfdBCy!{vE87tnZ4nrfU|;q`BZxCppcnfY2e+Zzs~<{MdQZ#YZmD}KrBQI9 z5J?xZD4(&|?haa{fo*)HUq)9o=-ii6zIO#hW;35e{tAHbVP<_E?q$NPJ2Gbx3&jfq z47)=ku^8Y?LUl(USMFoB61)pXyqIlqOuX_!BRkrEW_l`bSWTGU8UCO1;NAxZ zh-UbTlVh+N%e$gPI z6l8Vn4l(u*YNXew$Ra3B@wy2vTDw@Er-FTtm=pBB7H8_Os*K3tC|BCo2|w-^O>Y}UH}9EbUfEr)_Cy0kBb0Kf)Dat;?gciCv#st8{mui~ugG1p zv@Rd^3&gD@WymFRybTXYN5k5=mDxw>*wy)Q)Epr`iEDvOEVUHnVLh_~*R&RuM$AWm zWl-{610}CR~VuWcTFgQtmCGx zV$s3|+C-OmW9aTpZ5#^8yePZbo;OR60jp?bMR@PYe!=9&1WI9qrqEfWL!i9?XVQET zQC%kw)Wc=H%&uthDmPpLsDwi4S}gm5_?aIA171#vn7=0@fUTSDtHKHSD!l?0DX{m~!rTz9F z`LPzI2bUCyT)q^7rJRzKIxP1w(tocnZpWWPUH(FY#87@%Ci09UnBEP zVdlh=sMRmDC{0U0KT3b{eg{doVC~nEJ+wl1egkN_^7OalMsxOEqD8o~C~Nbt5jeXX zQT&>2J^~)KO>qp)f`0C6gh81&zn?LS%<8W?&5o|Ea95)oL8%~{dfxx9S*! z>cKx=PSW>ywWj7wzG>ET(n93x@bwhA{8!kH)l*#$YuUO*m2kKMdtOVj7y<-#XG)03 zJv5hcA!#(mjz!y*Q6%EF{16&3qw0u|q-=S~5I^E`E~@VEsZqw-%h?ayfWzP+TRGRP zEHi;oCE#ul3!|*paS1{3oXRv84Q7aTeUeLyy@Or9((O|8l6HJrn(}FBr=zy&221G9 zJAGLbyCiSru4%j*xN`&L%x=FmFz8_}1fxT$^oX8IS-uRlpiEn=b&=REKN&YN0k21g2RZAJmv+xmaJb7KObn^0x2LqI7>! zWB(mbjZ*MDoZJy}aa&!@C!F;R2@JaSi8~6#6`~g8M_2Uegri`0Sm|M#hODT~5B}$N zDiT1s5(M$V6L`Y)82`{R87@t)0E45@&UVtcvd_gv)c%6tsyn`>%A3Vr-xfXj zoH~P^GB+jZHhid@8i%3&Zwxhyqm44^k!NH!0}(=hg$F@F@k`{e$G%QZeEjVz_=Rrn zy!>862)tn`gMx=CW#rfg#jXQC(lti;BVE|#hf0B&+!KfgIX;ye2Lh67*q`6s;XSKV z9p^G?*~r9Rq7I3?@Q&mBY4~?=C~z9~9FYDE#&dr3VT0sRWrd1N&j2hCk6|T{OuzyE zf9!eEGI$OE-SHmZC-tep{b_MhgwcsMJO@`q=DFT*he+{NgOWtA*S09eIi|oZe(yE` zbfzsv`;yPNV-u1TZlJOG_{rj#@_*7oDifLLvvKKatv*j6ZCq!zS_$21w#6)w52X&J z!BDNVTr~1V#HX?0_mPBnCIztRp>>;N6sW>qdPxr!8Xd9lnQ^5@Mx|D)3Gk+rsHbaH z)()&Fa2mzLN8E^ey?-hN^0FlLTX>)+~Vm!P$&y zC9WInjz-5e#!S!i-%KOwBSeDHaxxEa-&fRKgNWjR#H(bBn+_WYv3)d{4Wx7A)GLV> zG+nyxQ*Ye;V;rY1MpArZQ~5q;Qgk8#nyNA|@2?C%N1 zB$8DQ^brUO63G?+-*Sfz&Av-%=qs=e@Zm7RJmXU+Y-~;J-sQZt5ss`!T;)L3A*7M^pl~WH|~@;sPMD)0{Zh#ObOPebYZ^ zV0=Fjy(^(rnr~yX5zX-d=Uu!@98fAWi z-TTbUy1!}X!npXCrtS~=V&aq2L@c>=d49}#%MrRKqkFY6(lQx-T0#Z)%8GqGtkg*4|4H} zX`oU0Y>g=djD_N@gfU!GbYpxZbN7oBg5}z^luHAN;1)WO7l56Ga$Vc41l%*JC~iHZ zTCx7*P)D>t6ob;HWLxX zPC=+Dvhvd{0kLT=ceTGH%2@(imwJ479u&E0Z@x3d2=Rt40$Xb%R@7QkRr^l{p^ld5 z>EuI^AHbGGceB4%y+aGlL3h%Z%ESeaa4GU8w$52G1L(_7oqP>S>&;oL4F0()EAvi7 z=OQRPaVLyp6%xlnXqva16D7uS)ppX2`&A5jB`PdleVNTy@u%!>hc(1M96->J9^=7Y zpC_j*#hxl-3e4h(QNGty4wb8+n9O#KZ%|(=wMcM{*Ax^3ZhMiz7D>2F0&8e=aP4~( zHvN?>M+Qmox*b46La1Q!U<`|hRKLkc`h`cSA@JL6Oo2xg&LlF7C`jZ9b+6d_Xv4Bt*S`>>5{lV+5~t(qN_b5t zY;JyX13{wxwgCa6-ecf1cbseU(1-=ztiZC+?dE0~c$a7YRJj|Tm+520g0t>yw4!AI zGUTrAKPh)MquKYCZ+rjz_joDcAqL}Ifwi~SJ#emLy)sB@S5PF2kP+|0?envw4x;Tj zkf?MfcW|V-pe^nLytgtVE-o0mKC@VgeOFU}CS|Ol+61HL)8f-|4@vCc0Bv_Do)gir zwhhyY%h4_5yIqhI+aQPR#CO z0UMg~BS&CbYDukeoMBP#USiWzKGPWrqir06b>t@UOdnT{ zyhcto73V?2t)J)(tUnWTbgP5Tl!hs6%9}zAUakD|fMNy7$*`Q&feUvsNmzk|WHnP| z#Kh<%412eQ&2T`go8aEVUpJ*K3+g^cJ-;-$BCdN7mqS;q`8Ra=8qC28(<9}hb{rbo zaz-4gR$*y>eZ2YzRzxn-9^7Uml?nVi{qfWR)$ECb3J#H%jTkQ7^yO-R(1qoC&i5ym z6IE@^HbkOOglA4x+X4+l+Ji%-yMi&cnLs{+c`FmYfV;;h*FoHhJhTK6OxolaLh0s> z)JY^{4{eHoYCXnjj!V^`S+Rb(j?suv^h;;7`b*w;Oy)j46WO2(6&-)Q2u&)lF!(UE zQLCJph5ev31x4mi(hhb%&{K|5Z6Nk=Id$$iYh$yYpKGRI{GWI4H#*sK{|`Dy9`#iN z2nt>lEk}fQ<4xz}>&1nRbVM#g&T&{}|fL<@{8yMq7`;8A6QH zL?nI&?C@}5#E14pD2wg#W0icJbXZZLd9uo-&13Aq5s}8rm~5aD9#dlvDg>04Do3#; zAwouM0X-vV?+epko)DBIa*p~rVN1wy2fyEn+mS(#L&B?Go;hvqYLHNK)JKYCmQAdy z$q{qm(X!WJU-wHl@~ap+Y0NBa3{>)5L*&({W?8x4M=cG{cy^Y0g-w#3?31k=M9Sm{ zWW+mWb*>~vni~F&R>pDxJcP!d(GHvc9WzzxG`jWba1K?4nK&Bw+BjvcOJ`B3;wCq* zpYg0!mp2KPuA6K3I@svawS4Hq=r}%S9^RD!4{+z7!iM~&^(FwHhy_I5YLh<9<>zpi z783*e7kI=VvR3=29pPfCgmq7hIE7n^th2R@&$_}3z`KS1)hz8OJrvl$ zLy>rDsalAgrhz5Y07D$GYZ3dZ*cNUn8z0m?0<6#U$sa7F0GC=?^WA2E$7jlVmXHv5o)1((Hb@u1+A$T6)A zl}RK1#9h5qBh3>wxqBB`6(0$>RZ^(dv9YQ#8}&=ZDr+;Xq!XWfhJlg>1wV(W3-w9A z|HX916Od8LQ3eg|JK^Pco`^dF|EfDn-;&`Cb-|&5KhjN?1xWhHO+*)o#w%HJXRk1+ z!gv-iT{JH8VusZKVgl^den94zEwEOg04D4X=9+RwC^v2>c1HxX3vF-@ciT0W`IhnY zdPS~5XtjFfztFYTtp;ReYCggZNWG=)sRO(77r812*~-+hCUR2Ju`g7~bneR_SF#nj zxwTS1wc4}F58Bi)x0HAU&6&y?@0MprH*Y#cqC$EHzv%H)K6X3mHxIzbRz8HxWx3Sy ze{?^A8X8jm>M%02GXX|~ZMp{wY@2b0gqC;G)6D zH%S>t60E^8pCy9Q{RX{E+NE9>}u;Y&L-pS(4~oA!h=vE#*;{iS$m=?6gXLzX5S za_ou9->PzvjT#5)d@VyoR}?q3X3LNH(V&i!D90no6?gRmrnB5J*~iy1Y+{KHBbp^X z^6X6|({WspZzPLXSvMYa6NG~n+?59;sW&v(SClaStX&9o5iuGe9)E3C+)EX|!R6#o}ZZ=e$=CS#>Krw>Ufb@ixWlbOeu!z_=7918uh6)Nn zqjmkBlMDB?Nf`6#FMFF#A61)jag(vyn6zx3QD%(@&+?I&K(5*Tg~n>kNJmMZ;Kw}$ zf8#T~?C(WFfT41&#lgz7ibxP%9Ue!A?O&t5{uC75iV}0Ci(5mn)e(*N41+uvnBuVW zdhuwuYD$xh$LnMepkS1JZ6xnaYh`hRW&!6w%R*psvRE||wjifO?paQ0T!cy#VU~N|$Znkhj(RT^SqiQxc;~&cK24LKNs%);t%t z#IRZOwllk$S-0G>3)*OQ1inf)*8?8D2FkwJ!ei%#;?C5}=qgWsfEj045^<`rj%dDo zMSas{o60F?z_w0euXAi_W8X&I1u*FnPl6)w$=ga4_n)7J5U``+mK1xOr;@EQaJVJ$ zTp2(oLqKr|){BdXfHxSMs6x$Wy723pq8osNnNs?W8)l8A-g;2S@a3yY7wFb3Vw>Z0 z5Z{$IG4rSU1LfF3XNLK}15uQ89`wf?G=xhr6FatbQw~NWv=F)@5VtYE=F`tOL;xSq zDS-`jfICsGiD!NMa4fzbVWGOLS=vcq&;%4ra~P{Txe!IE6?q zrCYDxN+ePnanqJNG$wOzHwTk&Dq$1pSy);MQ)?ZLiKfQXi`*2gsvz&D{ z%YTga1aYg~%2I0I!+LH#uC6enIJ%Qch=|+zLEr#S#0%WYDtNLXgN>5i)AeQ4L)^T}cBEjrL8ReJ@!3g(QJaTf2Q)rid^ zU@lqI&Oz#Ncp9-y1Z5f#gv6NVKCsRjYyeqf+KVTs`f zrqC*cW@`%Dj}_;YJh9J*!h@GhgSc&YVa?qP4^u?C{j3J;n6g~(cLIkfqWnL`{^js2 z`zBH%bQPd|!j5yPi4~VSYRa!Zcm;p>)Rgx8 zw(F9u&D1&Rjh}Q=(gaJ{*xL0)c8r_gWg9auh9?EZc(YS<&oSUowGi{+>oz95=Ba(V z6ksFHfy8HGEA=OXqQ>;yySn0XX7@5oXJ z%E!3cn%o7d$!h+ptYHRi#!gk+PyelHuXOyr#uaZ;DNvY})*{J@m0nJ&8mA7-2CafvYD6XDiAQ!({EPU~j8QTgNKNG; z4EyamHI&kDB1{r`Ng0td+s@h3yf^+to__rp85o0J(b*eWrNM78J5&0H1{?MHzDGe8 zZjY-35+%j!FZT`mCNk0U#!wN%t&^w$l-H?tUIq(!`!jm&U5w4LZROFAAC5Txe@gahFeoLS;ZA8 zW$umLMmP-Ys)RY+^Wm{HBd%gt==6T=cVa=@z}Scc2@Njz>ID6m@Nag z>ht>cAiV$_oD!0tQ1)?_b==zU4Q_f>ev0R|(f@VzotKG3;&?Q}UY6L&j+ZRU4D!7= zV8SV3`U%X`Rp!s6>+s6YG)%Dni{MzG3$cUpCxj#)z&>35%2$^1D((nhn=MIN2bTgQ z!FshzMod2fp9JJOUvTU(}nE>T+q?@+2>#-_OUM~Z`l9RD8v7%k7qW_M$$PfVm+4@xr4H=}rjTl<(TvKbZj znLFd1JhF<(92;O)Us#5s*{TAUJo!bKT7EZ>6?b|5HY@}|Z5tcfUM19N7bTn(z3+@s z;9Ddo{IrX!A`L->Mi%WOM{5z0G$LqJYX}Tg%t}pp!wkUrZAQeT)&t>4p$jqMm{b)} z+yTSVO+8v<#ozPayczp|Af{!n9w1w{brFTb8F&zj7xcX%kv`N`&#SIom6?|ZUdyKh@Z zn$sPQPThpkKLkQ!rW%j5?-oT?{YxcKOCnd7ikgCuR#w<}0Zmc3RC4zIcIP-sfoR_^ zU917Ak#nN2b~ya2w&+pqja0+^CmvluQ?RFNw6}Bl^FQYsQz=H@pHuU!=!g@GMlSCL z&HUTOAQo7pV=KyRXl5s$s4+uy|k?CU3K8IQvZY3hPi7h=S=(r12Q{wXMMg=ojj` zowiyhiOy|lFhZuLJINBAu_)M%BC7A_nSB>I!(ud@>QUN~X0 zo0aqJp7^;Qu$!CUr{G$iXwK*AUW=r4O<+Z(%MexrF_GEOfp{#Kg(RoZ@y`w!mtM-X zgc9G^rY`4>mXfFxv3p^!W4bkJg9fSmGQtZ+qac*4w({By9-qGM==UX7D&y+L9Rj|v zKV1|e#0DgTog6_rAYaNg_*Qm?qe$D?Co|mRi-q6!d9R)5*~%)&(fhG6O0{!|cn? zU(Vcj@DK*m|1BIaC$Ub%3%Cv9{~-BY>IcPb1zqRXwiXojLHnHwY%Py0(%k=ZzPcSZ4HD@JAPxN$@arY!m1zmF2 z=kPq=$rRT8c&zVhG9b+Zwk^6HlA7LKZ#nWD*l>h#K6PdB6+9Hu;fq=;nIjZ z7L$#c+3vFJfp*Q3*i*51W;y%B)Q`JlgOpGj!M;BS9GLMxh z2ynW*$Q{XFqS?@be$-HhZ-Y|E`%cFfjwq!n52l+q&u;#U&uT=98?kiX(1%`t?R zp#{N{2J%4WHwHkk6xbYh5su8;-udVP>*sA*%26R_v$~}P)JZ?i@Rwc_Y1yIBEnNW# z7u|))Rx7$=8ME3xNT2O~Zuo;yDHwcxOtoK*)B8E5N&#dz_1H5h=){|n6=20LIvT-q zCy}(f-Xy-R&^qOp`dRh)Tk3=IL;983ro}B7TmW$LB{u1gIOWvOtD8)1lg6>u z+7zsG0R#g5T{F|0-n7qrCfIK{&W-0i5c+^fvz0@i08y$9-+TW0aj|@D7hA33Y&9L4 zAn=r5O_%BwI%Pd%l07ylHffa*%|t1|Rs;e;Juqq0`Wd=B1R|Wzqv~CR4~9$W7;Yy2 zG{Y!pPFHdRa2EE7505V3hVw?nph-61%V9$)HG76Gs&&C4)xFEofLyv~YkTHcnNzj+ zo-1EW_lWWK&Op-<`%sYIE3v(LTa{nU@vpOHhkmr9?wxSKGESFBtRq2viMK>KX>eM{ zwC-VYQGmAYC0^cQO?;&xF3;i*4X2Z)t(prgxS=gCUbbt#t@RwS2i_G&*}qv+ykb`b z7##>Fa7cRqHb1JDaxr`tJ= zodw|!Z9||VA;}BvosW4YE6}IOlo*7s3fK}>h|@i zxXe!fNGN>P<(+i=?`Ax^#7E>+So|2-#aN(lIfh#-1nFzjO9Vq8`A)bXaCg$@+6ht* zW-+E6C*CX$Rwe|U-de8!Bgk<6Z&Hu?LXd;V2HNS&L8l}!Yq(9lei7fG*|n{lJsmfb z-jV!p#oo}b2*?yN$7di=mFoS{J1`p^BnRP+K__5BP}oPfXM)gssaONZx|K1VIW-`H zxWIg5ghW4z*Oob`7v(U4BZJ_qhiPQF`skw2#bg8lM;!pSR z2?Nsq=D)n(FZ3gG{(_ z3g(0(<(gaH8NwPW3lMR2UXG-mNwv;)ak;1AA=5()1Q>@mFbiuDUAUx6j zW~JRKQNJf1VhF|b9xa5h1~iY1GmK4g%jWAifEQ@+bXnSn2i1knoD;zT)=*P(Mu(xnoFeb0(12tqK55F%S*{9JAtg(i#R9Ftps~sVQjSX}~ z)=*7@GKDfw$Bjfk9lSA2k+_35L&lZJ5x&(*Y}{n{cV0wtejI>L{t1p&4UCJ2II!8p z=oo~tiZop9!?fUPt9Cub6oW=!tFbm41|Qa0TAAvU78*Zvfp6s6U5mr$JJR1Eo-h|W z+Kn3~{*9T(q|$={jK@+6z+@Sdx0#m&%@6n9__9u$S#G8{gSB5AM*jwW9K=^~E+Z|k zmqX{7_no^$L9oXbkdPAaN*}F)O@DaULNf4#8A6Y7Zu6@DiJl=E&_|OQFEJzdAF$0i zCe?D8FAD7}jf5WGv%siC)kF&M+ctj6wH96;Tc#vtI&j5EDbyO2Hoc2YtTO{)1RAj6 zU_&hZVNNve)dX&-*?Y3C_;>liMOE0I!z-)6sFSTg{8|-YIf(Bh*m?^Sjn|=Jg zsUw{3mTEIK0np~r-H7Chu5w(z2%uoFI-;>kl|np$L})j;k2Bpj9NeB9&QN0ewYbdd z8olrEw;^v4`}MgKd%cgi;oBb1?~z=o-*Vd`17b54GF)XW^_82)(wB6depQgW8B2@X zTOfXv(9kN*4i5T8=g4o|u^Xl-S>>x0gQhavE9#d6=(6C0boxe6;A(h2!VB{{U1@R} z6@hYfuhnZRZuoEhjAe0o-%H1AhJQRLrPgy+Yg@BKWu~TGD+Ti?9A)T|J`<^2z`h2h zE;w{8l#HWqXlbH?z;d7l^`xAB_*c*#EcM5G{;HH0xwG&KB`P5zJb`=kcRRalDBPL6 zC|h8@?%=KQMg2|W z{H!ZV7UdAwI&1Xvakg-XoexJ3#;`ackzwcuqLEaj|Cuc`*8*j&csz=@^})hxq}vI{ zqgMlC{dAg{-Z4r_Luk8WBr<3`9iQssB2cBOuUG{QQV%K63S)cq?Lj1bx?ACKL79W~ zi@l20r^v-8+@^)<2Nd4lxJmJbdW1i2+n7kk{BZ~it=!;(MJTZpfTkGsyV^+%F zhtmxHhi)5o`5&QQyVe4i0GJX|7iU?s6XqYT2H5Fs$w$3S{{aT1Iu}wxVr^LmNcXvu z3>AweZ@0J?I$rH8j5eR|9Q=2X%r*{9j9fk42eXeB`3|VD8>cyNjHF< zuC!w~D_^r<(rzy?WS>llaYk&Rab&ED7C#fhEVD|Uk zC3pqXCSX=8uu?Z9cF*}XO+fikk>Qj`_g*-&dZ^|5=40X5hwr(KZ>0?)qJ%51Mp)}S zHR@=V)2;$Y#tF*lK{x$7;}0^LbE`lop{m>8KQ0F9)*?n|^R!@IlM$PL>^OUiljDR$ zfYBl(vp_=mb{0EntYS$kE1pPo;oV74oIDk(eZJ+nbPv9&Aran!_SJ&iVtyEBSuSRY zTaC7rr5xGu`@o z3j27uKtBruq$CG(sSx8AtthuB%wp?4h(RB+Xd(&fT20*!vY|4|@gz^CpE92@-QsR{ zN*Wwv^RN$=usz=+zjJ#S&h(p(s?3OR_N#{1FGtx_gr-drFDR*e`id;kxM6UHD1yYB zsIj{cnd8`L3%>N|0Om`O@*0`wOQ&aJ&!BT~;fDrr7&W5v;Iv8GVwTGg@P9A*kgp3j z>#oAhfct#v%rO)A64nOu$dqA)vN7bN=KNRiiJjHS>|ofQMxB{wi|PjVzen23r1EaR z;Bh&SVE@GvYeL;);8aJ8F8=B`9DY{S6JddD(6v^r^^l|^EWmqOK*^10@%KEyZX$M= zEh$3g0nY<4{2?bK4NTbN47mRdCSuEly8lTD_4@_?K9cO9WXm9c zu#Q5+()mhP?)@W<0rCgqT?}Gc0glF~37;$G05-r4eBeuOMaQdjj8!$gmt=tJbYb+? zQBEdqrel{36t4I_!O*BV#YM%5I;Me0(|dEb!A^BCPo{y)1(hdCDoB;El)YQHK=|aT zy}MUPh3Ko&w~9e%y2$G~8><^}J}6GehGR)NU~-{Xi9E%zy2z0sxYKuoPu!&?(c2&!pzDQd^Vgy2b4rO?L z0gyhOKS%{~Itr^(z0g|NrSI2sx0p}H%Elu%HYIGIsFK8Ie%l};^r#b+Y4Uz#rd5gy zwra{=S4c$@H&Eq_hC@U;*zEw3g)lv&5vI{tbZ73Fk{|QzwbL=X=uj-}1`##lROy(t zj3B-hNJ@MVp{yXp>7@7MtudMO&j5bT>_DMgjinEwXubSE6P-nx3zc>`D z1O4J_UHrZ2S`?7TfdK+-s0 zQo@O+nR^AUunhj*8z2nlSU-LPHy88=eBM!cF2sYttUQQfbl^{C@)9baO+3n2r?eM zeQMN^Qs7x|(w1R9*2H#~cMNfWxC;ds-uou-*FR53E>r#8hsRGx-oET$N^G*l?;jj} literal 0 HcmV?d00001 diff --git a/MikroMaster/20260415/20260415220001-Config.rsc b/MikroMaster/20260415/20260415220001-Config.rsc new file mode 100644 index 0000000..eb42669 --- /dev/null +++ b/MikroMaster/20260415/20260415220001-Config.rsc @@ -0,0 +1,4526 @@ +# 2026-04-15 22:00:02 by RouterOS 7.22 +# software id = 2961-C4ZZ +# +# model = RBD52G-5HacD2HnD +# serial number = HCX084RAVFA +/interface bridge +add admin-mac=48:8F:5A:60:A1:0B auto-mac=no name=Bridge-LAN port-cost-mode=\ + short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + F6:BE:9D:85:53:F5 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/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 wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +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 \ + station-roaming=enabled wds-default-bridge=Bridge-LAN wds-mode=\ + dynamic-mesh wireless-protocol=802.11 wmm-support=enabled wps-mode=\ + disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +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 station-roaming=enabled \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man security +add authentication-types=wpa-psk,wpa2-psk encryption=aes-ccm \ + group-encryption=aes-ccm name=security +/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 security=security 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 security=security 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 security=security ssid=vados5g +/disk +add media-interface=lo slot=tmpfs tmpfs-max-size=44739242 type=tmpfs +# mountpoint [tmpfs] taken by tmpfs +set usb1 mount-point-template="[tmpfs]" +/interface list +add comment=defconf name=WAN +add comment=defconf 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 datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/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=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-AX disabled=no mode=ap name=5G-AX security=sec5G 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 +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys 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 +add name=mVados 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 +add dns-servers=1.0.0.1,1.1.1.1 name=m.blsp.at verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/ip dhcp-server +add add-arp=yes address-pool=dhcp dhcp-option-set=domain-search-set \ + dynamic-lease-identifiers=client-mac,client-id,opt-82 interface=\ + Bridge-LAN lease-time=10m name=masterDHCP server-address=10.30.30.81 \ + use-reconfigure=yes +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/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 +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +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 dont-require-permissions=no name=create_mkdir_function owner=vados \ + policy=read,write source="# Written by Phillip Stromberg in 2019\r\ + \n# Distributed under the MIT license\r\ + \n# \r\ + \n# \r\ + \n# this creates a function called \$mkdir\r\ + \n# from the command line you will be able to just type \"\$mkdir some/new\ + /folder\"\r\ + \n# and all the folders that need to be created will be\r\ + \n# if the folder already existed, it is ignored\r\ + \n\r\ + \n:log info \"Creating \\\$mkdir function...\"\r\ + \n\r\ + \n:global mkdir do={\r\ + \n # \$1 refers to the input variable the user passed in to us\r\ + \n :local newFolder \$1;\r\ + \n\r\ + \n # we'll use this variable to report error messages that may arise\r\ + \n :local errorMsg;\r\ + \n\r\ + \n # if the user put a slash on the end of the new folder name, remove \ + it\r\ + \n # i.e. \"some/test/\" becomes \"some/test\"\r\ + \n :while (([:pick \$newFolder ([:len \$newFolder] - 1)]) = \"/\") do={\ + \r\ + \n :set newFolder [:pick \$newFolder 0 ([:len \$newFolder] - 1)]\r\ + \n }\r\ + \n\r\ + \n # if the user put a slash at the beginning of the new folder name, r\ + emove it\r\ + \n # i.e. \"/some/test\" becomes \"some/test\"\r\ + \n :while ([:pick \$newFolder 0] = \"/\") do={\r\ + \n :set newFolder [:pick \$newFolder 1 [:len \$newFolder]]\r\ + \n }\r\ + \n\r\ + \n :if ([/file find name=\$newFolder] != \"\") do={\r\ + \n :set errorMsg \"'\$newFolder' already exists.\";\r\ + \n :log debug \"mkdir: \$errorMsg\";\r\ + \n :return \$newFolder;\r\ + \n }\r\ + \n\r\ + \n # the name of the temp file to create\r\ + \n :local tempfile \"mkdir_temp_file.txt\";\r\ + \n\r\ + \n # port 0 is unlikely to be open to HTTP requests...\r\ + \n :local fakeURL \"http://127.0.0.1:0/should-not-exist.txt\";\r\ + \n\r\ + \n :local fullTempPath (\$newFolder . \"/\" . \$tempfile);\r\ + \n\r\ + \n # this is where the folder creation happens\r\ + \n # `as-value` prevents status messages from printing\r\ + \n # wrapping in a `:do {...} on-error` prevents error messages from pr\ + inting.\r\ + \n :do {\r\ + \n /tool fetch dst-path=\"\$fullTempPath\" url=\"\$fakeURL\" durati\ + on=0.001s as-value;\r\ + \n } on-error={}\r\ + \n\r\ + \n # this waits for the temporary dir to show up so there isn't a race \ + \r\ + \n # condition where you call mkdir and then try to do something before\ + \_the \r\ + \n # folder is actually created\r\ + \n :local count 0;\r\ + \n :while ([/file find name=\"\$newFolder\"] = \"\") do={\r\ + \n :if (\$count >= 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=CustomUpdate-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ + origin_ca_ecc_root.pem;\r\ + \n/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalRo\ + otCA.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\"\ + \";\r\ + \n/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalG\ + 2TLSRSASHA2562020CA1-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/DigiCertGlobal\ + G3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n\r\ + \n#:global AmScriptsUrl;\r\ + \n#google\r\ + \n#:local CertName \"GTS-Root-R1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-R4.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"ISRG-Root-X1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\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 dont-require-permissions=no name=AM-setup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_RouterOS Setup Script: AM-setup\r\ + \n# \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## Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:if ([ :len [ /system/script/find where name=\$ScriptName ]] = 0 ) do={\ + \r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# :global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n# /system/script/add name=\$ScriptName owner=\$ScriptName source=([ /too\ + l/fetch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptNa\ + me . \".rsc\") output=user as-value ]->\"data\");\r\ + \n#}\r\ + \n# For run from terminal:\r\ + \n# /system/script/add name=AM-setup owner=AM-Setup source=([ /tool/fetch \ + check-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" ou\ + tput=user as-value ]->\"data\");\r\ + \n#\r\ + \n# /system/script/set source=[ :tocrlf [ get \$ScriptName source ] ] \$Sc\ + riptName;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local RemoveThisScript false;\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n{\r\ + \n :local ScriptName;\r\ + \n :local RemoveThisScript;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local AllDone;\r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :local CertSettings [ /certificate/settings/get ];\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:log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\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\" } 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\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 :put \"Add Schedulers...\";\r\ + \n :delay 1;\r\ + \n :put \"Add Global scheduler...\";\r\ + \n :local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFu\ + nc; }\";\r\ + \n :local Comment \"Setup Global Environment for scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] \ + ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-\ + event=\$OnEvent start-time=startup;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Commen\ + t) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEve\ + nt) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Add 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-ScriptInstallUpda\ + te\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Commen\ + t start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n }\r\ + \n\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n /system/script { run AM-GlobalConfig; run AM-GlobalFunc; };\r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :set AllDone true;\r\ + \n } on-error={\r\ + \n :set AllDone false;\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$ScriptName . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n\r\ + \n :delay 5s;\r\ + \n :if (\$AllDone = true && \$RemoveThisScript = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :set OnEvent \":delay 30s; /system/script/remove [ find where name=\$S\ + criptName ]; :delay5s; /system/scheduler/remove [ find where name=\\\"_Rem\ + oveSetup\\\" ];\";\r\ + \n :set Comment \"_RemoveSetup tmp scheduler for remove setup script.\";\ + \r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-ti\ + me=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$ScriptName . \"\\nI've done everything, and now I'm ti\ + red... I'm leaving. ))\\nThere will be an error below, this is normal.\");\ + \r\ + \n }\r\ + \n};\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \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\";\r\ + \n:local Script AM-GlobalConfig;\r\ + \n/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch ch\ + eck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".rs\ + c\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub" +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/226/e1cd7257\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 09:45:02 01.04.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\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 GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\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 ExitError;\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 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 FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\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 LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n \$LogPrint debug \$0 (\"\\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if (\$CurrentChannel != \$updateChannel) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel (\$Update->\"channel\");\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"\\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([:len \$arrDeviceInfo] = 0) do={\r\ + \n :global arrDeviceInfo ({});\r\ + \n :local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};}\ + );\r\ + \n }\r\ + \n # else={:local arrDeviceInfo ({})}\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [[ :parse \"/\ + system/package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"\ + Error\")};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannel\"; \$Cu\ + rrentChannel;};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentVersion\"; (\$U\ + pdate->\"installed-version\");};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannelVersion\ + \"; [/system/resource/get version];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateChannel\"; [\$up\ + dateChannel];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateVersion\"; (\$Up\ + date->\"latest-version\");};\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\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\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n\r\ + \n :global arrDeviceInfo [:toarray {\"section\"={\"key\"=\"\"; \"value\"\ + =\"\";} }];\r\ + \n #:do {:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system/package\ + /update/get\" ]]} on-error={}\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devRbCurrentFw;\r\ + \n :global devRbUpgradeFw;\r\ + \n\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global ROsVerCurrent;\r\ + \n :global ROsChannelCurrent;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :global ParseCustom;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global devBuildTime;\r\ + \n :global GetPubIp;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :set devBuildTime (\$Resource->\"build-time\");\r\ + \n :set runningChannelVersion (\$Resource->\"version\");\r\ + \n :set runningChannel [\$ParseCustom \$runningChannelVersion \"(\" \")\ + \" 1];\r\ + \n :set runningVersion [\$ParseCustom \$runningChannelVersion \" \"];\r\ + \n\r\ + \n :do {\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :local RouterBoard;\r\ + \n :do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on\ + -error={}\r\ + \n :set devModel (\$RouterBoard->\"model\");\r\ + \n :set devRbRevision (\$RouterBoard->\"revision\");\r\ + \n :set devRbSerialNumber (\$RouterBoard->\"serial-number\");\r\ + \n #:set devRbCurrentFw (\$RouterBoard->\"current-firmware\");\r\ + \n #:set devRbUpgradeFw (\$RouterBoard->\"upgrade-firmware\");\r\ + \n :if (\$devCurArch = \"mipsbe\" || \$devCurArch = \"arm\") do={\r\ + \n :global devRunning [ /system/device-mode/get mode ];\r\ + \n } else={\r\ + \n :global devRunning [/system/device-mode/get running];}\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n \r\ + \n :set devRbRevision false;\r\ + \n :set devRbSerialNumber false;\r\ + \n# :set devRbCurrentFw false;\r\ + \n# :set devRbUpgradeFw false;\r\ + \n #:set devCurrentFw \$runningVersion;#:set devUpgradeFw \$ROsVerAvail\ + ;\r\ + \n :set devRunning [/system/device-mode/get running];\r\ + \n }\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Error in Function getDevice!\");\r\ + \n :return false;\r\ + \n }\r\ + \n:return true;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global WaitArrDeviceInfo;\r\ + \n # \$WaitDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devCurArch;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global PiblicIpAddress;\r\ + \n\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :local Return;\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n\r\ + \n :set Return ([ \$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:\" . \$devBoardName ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Arch:\" . \$devCurArch ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Model:\" \$devModel ] . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbRevision ] > 0) \\\r\ + \n (\" \" . \$devRbRevision) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbSerialNumber ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial:\" . \$devRbSerialNumber ] . \"\\n\"\ + ) ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"nleve\ + l\")) ] . \"\\n\") ] . \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Running Channel\" \$runningChannel ] . \"\\n\" . \\\ + \r\ + \n [ \$FormatLine \" Installed:\" (\$Update->\"installed-version\") \ + ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :typeof (\$Update->\"latest-version\") ] != \"noth\ + ing\" && \\\r\ + \n \$Update->\"installed-version\" != \$Update->\"latest-version\")\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Update->\"latest-version\") ]\ + \_. \"\\n\") ] . \\\r\ + \n [ \$IfThenElse (\$RouterBoard->\"routerboard\" = true && \\\r\ + \n \$RouterBoard->\"current-firmware\" != \$RouterBoard->\"upgrade-\ + firmware\") \\\r\ + \n ([ \$FormatLine \" Firmware\" (\$RouterBoard->\"current-firmwar\ + e\") ] . \"\\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: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: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# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n :global LogPrint;\r\ + \n \r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n\r\ + \n# :retry command={abc} delay=1 max=2 on-error={:put \"got error\"} \r\ + \n :do {\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using default s\ + ervice: \" . \$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={\$LogPrint error [ :jobname ] (\"Fail\ + ed to detect public IP using default service: \" . \$Url . \".\")}\r\ + \n #:error \"Failed to detect public IP using default service: \$Url\ + .\"};\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Failed to detect public IP using default s\ + ervice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using fallback \ + service: \" . \$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={\$LogPrint error [ :jobname ] (\"Fai\ + led to detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :if (\$PubIpAddr = false) do={\r\ + \n :set PubIpAddr \"not-detected\";\r\ + \n } else={\r\ + \n :set PubIpAddr [ :pick \$PubIpAddr 0 15];\r\ + \n }\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 :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\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 \$LogPrint 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 \$LogPrint 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 \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint 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 \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\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 GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$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 \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' 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 :global LogPrint;\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 \$LogPrint 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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\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 (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\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 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 GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \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: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 :global LogPrint;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n \$LogPrint 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 MiniDateTimeStamp do={\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 :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\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={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {: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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\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 :global LogPrint;\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 \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint 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 \$LogPrint 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 \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint 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 \$LogPrint 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 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 [ :len\ + \_\$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 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 LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint 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 \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 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: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: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 LogPrint;\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 \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\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 \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', 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: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: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:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\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 \$LogPrint 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: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: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: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:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\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: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# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\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 #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\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 :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\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 \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\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 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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\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 \"Setup Global Environment for scripts\";\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#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\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# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\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} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Import ssh keys for public key authentication" \ + dont-require-permissions=no name=AM-SshKeysImport owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-SshKeysImport\r\ + \n# Script comment: Import ssh keys for public key authentication\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 configs or functions not ready.\"); }; } del\ + ay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global SSHKeysImport;\r\ + \n:global SSHKeysImportFile;\r\ + \n\r\ + \n# import single key passed as string\r\ + \n:set SSHKeysImport do={ :onerror Err {\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :if ([ :len \$Key ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass key and u\ + ser!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ :len [ /user/find where name=\$User ] ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"User '\" . \$User . \"' does not exist.\")\ + ;\r\ + \n :return false;\r\ + \n }\r\ + \n :local KeyVal ([ :deserialize \$Key delimiter=\" \" from=dsv options=d\ + sv.plain ]->0);\r\ + \n :if (!(\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\")) do\ + ={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' is\ + \_not supported.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FingerPrintMD5 [ :convert from=base64 transform=md5 to=hex (\$K\ + eyVal->1) ];\r\ + \n :local RegEx (\"\\\\bmd5=\" . \$FingerPrintMD5 . \"\\\\b\");\r\ + \n :if ([ :len [ /user/ssh-keys/find where user=\$User \\\r\ + \n (key-owner~\$RegEx or info~\$RegEx) ] ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The ssh public key (MD5:\" . \$FingerPrint\ + MD5 . \\\r\ + \n \") is already available for user '\" . \$User . \"'.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$MkDir \"tmpfs/ssh-keys-import\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Creating directory 'tmpfs/ssh-keys-import'\ + \_failed!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\"tmpfs/ssh-keys-import/key-\" . [ \$GetRandom20CharA\ + lNum 6 ] . \".pub\");\r\ + \n /file/add name=\$FileName contents=(\$Key . \", md5=\" . \$FingerPrint\ + MD5);\r\ + \n \$WaitForFile \$FileName;\r\ + \n :onerror Err {\r\ + \n /user/ssh-keys/import public-key-file=\$FileName user=\$User;\r\ + \n \$LogPrint info \$0 (\"Imported ssh public key (\" . \$KeyVal->2 . \ + \", \" . \$KeyVal->0 . \", \" . \\\r\ + \n \"MD5:\" . \$FingerPrintMD5 . \") for user '\" . \$User . \"'.\");\ + \r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key: \" . \$Err);\r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n :return false;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# import keys from a file\r\ + \n:set SSHKeysImportFile do={ :onerror Err {\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global FileExists;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global SSHKeysImport;\r\ + \n :if ([ :len \$FileName ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass file name\ + \_and user!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$FileExists \$FileName ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"File '\" . \$FileName . \"' does not exist\ + .\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Keys [ :tolf [ /file/get \$FileName contents ] ];\r\ + \n :foreach KeyVal in=[ :deserialize \$Keys delimiter=\" \" from=dsv opti\ + ons=dsv.plain ] do={\r\ + \n :local Continue false;\r\ + \n :if (\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\") do=\ + {\r\ + \n :if ([ \$SSHKeysImport (\$KeyVal->0 . \" \" . \$KeyVal->1 . \" \" \ + . \$KeyVal->2) \$User ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key for user '\" . \$\ + User . \"'.\");\r\ + \n }\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && \$KeyVal->0 = \"#\") do={\r\ + \n :set User [ \$EitherOr ([ \$ParseKeyValueStore (\$KeyVal->1) ]->\"\ + user\") \$User ];\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && [ :len (\$KeyVal->0) ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' \ + is not supported.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\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\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Check for certificates validity" dont-require-permissions=no \ + name=AM-CheckCerts owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CheckCerts\r\ + \n# Script comment: Check for certificates validity\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 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 CertRenewTime;\r\ + \n :global CertRenewUrl;\r\ + \n :global CertWarnTime;\r\ + \n :global Identity;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EscapeForRegEx;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global ScriptLock;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n# :global WaitFullyConnected;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Renew Certificates\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :local CheckCertificatesDownloadImport do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local CertName [ :tostr \$2 ];\r\ + \n :local FetchName [ :tostr \$3 ];\r\ + \n\r\ + \n :global CertRenewUrl;\r\ + \n :global CertRenewPass;\r\ + \n\r\ + \n :global CertificateNameByCN;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global UrlEncode;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :foreach Type in={ \"p12\"; \"pem\" } do={\r\ + \n :local CertFileName ([ \$UrlEncode \$FetchName ] . \".\" . \$Type)\ + ;\r\ + \n \$LogPrint debug \$ScriptName (\"Trying type '\" . \$Type . \"' fo\ + r '\" . \$CertName . \\\r\ + \n \"' (file '\" . \$CertFileName . \"')...\");\r\ + \n\r\ + \n :do {\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] \ + }) \\\r\ + \n (\$CertRenewUrl . \$CertFileName) dst-path=\$CertFileName \ + as-value;\r\ + \n } do={\r\ + \n :if (!(\$Err ~ \"[Ss]tatus 404\")) do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching certificate: \" . \ + \$Err);\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n \$WaitForFile \$CertFileName; \r\ + \n\r\ + \n :local DecryptionFailed true;\r\ + \n :foreach I,PassPhrase in=\$CertRenewPass do={\r\ + \n :do {\r\ + \n \$LogPrint debug \$ScriptName (\"Trying \" . \$I . \". passp\ + hrase... \");\r\ + \n :local Result [ /certificate/import file-name=\$CertFileName\ + \_passphrase=\$PassPhrase as-value ];\r\ + \n :if (\$Result->\"decryption-failures\" = 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Success!\");\r\ + \n :set DecryptionFailed false;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \$RmFile \$CertFileName;\r\ + \n\r\ + \n :if (\$DecryptionFailed = true) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Decryption failed for certi\ + ficate file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n\r\ + \n :foreach CertInChain in=[ /certificate/find where common-name!=\ + \$CertName !private-key \\\r\ + \n name~(\"^\" . [ \$EscapeForRegEx \$CertFileName ] . \"_[0-9]\ + +\\\$\") \\\r\ + \n !(subject-alt-name~(\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRe\ + gEx \$CertName ] . \"(\\\\W|\\\$)\")) \\\r\ + \n !(common-name=[]) ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$CertInChain common-\ + name ];\r\ + \n }\r\ + \n\r\ + \n :return true;\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not download certificate \ + file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FormatInfo do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global FormatLine;\r\ + \n :global FormatMultiLines;\r\ + \n :global IfThenElse;\r\ + \n\r\ + \n :local FormatExpire do={\r\ + \n :global CharacterReplace;\r\ + \n :return [ \$CharacterReplace [ \$CharacterReplace [ :tostr \$1 ] \ + \"w\" \"w \" ] \"d\" \"d \" ];\r\ + \n }\r\ + \n\r\ + \n :local FormatCertChain do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :typeof (\$CertVal->\"issuer\") ] = \"nothing\") do={\r\ + \n :return \"self-signed\";\r\ + \n }\r\ + \n\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=5 do={\r\ + \n :set Return (\$Return . [ \$ParseKeyValueStore (\$CertVal->\"iss\ + uer\") ]->\"CN\");\r\ + \n :if ([ :len [ /certificate/builtin/find where skid=(\$CertVal->\ + \"akid\") ] ] > 0) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :do {\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\ + \"akid\") ] ];\r\ + \n } on-error={\r\ + \n :return (\$Return . \" (possibly incomplete!)\");\r\ + \n }\r\ + \n :if ((\$CertVal->\"akid\") = \"\" || (\$CertVal->\"akid\") = (\$\ + CertVal->\"skid\")) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :set Return (\$Return . \" -> \");\r\ + \n }\r\ + \n :return (\$Return . \"...\");\r\ + \n }\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Name\" (\$CertVal->\"name\") ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"common-name\") ] > 0) ([ \$Fo\ + rmatLine \"CommonName\" (\$CertVal->\"common-name\") ] . \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"subject-alt-name\") ] > 0) ([\ + \_\$FormatMultiLines \"SubjectAltNames\" (\$CertVal->\"subject-alt-name\")\ + \_] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Private key\" [ \$IfThenElse ((\$CertVal->\"priva\ + te-key\") = true) \"available\" \"missing\" ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \"Fingerprint\" (\$CertVal->\"fingerprint\") ] . \"\ + \\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"ca\") ] > 0) [ \$FormatLine \ + \"Issuer\" (\$CertVal->\"ca\") ] [ \$FormatLine \"Issuer chain\" [ \$Forma\ + tCertChain \$Cert ] ] ] . \"\\n\" . \\\r\ + \n \"Validity:\\n\" . \\\r\ + \n [ \$FormatLine \" days\" (\$CertVal->\"days-valid\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" from\" (\$CertVal->\"invalid-before\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" to\" (\$CertVal->\"invalid-after\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" time left\" [ \$IfThenElse ((\$CertVal->\"exp\ + ired\") = true) \"expired\" [ \$FormatExpire (\$CertVal->\"expires-after\"\ + ) ] ] ]);\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n# \$WaitFullyConnected;\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !ca !scep-url expi\ + res-after<\$CertRenewTime ] do={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n :local LastName;\r\ + \n :local FetchName;\r\ + \n\r\ + \n :do {\r\ + \n :if ([ :len \$CertRenewUrl ] = 0) do={\r\ + \n \$LogPrint info \$ScriptName (\"No CertRenewUrl given.\");\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Attempting to renew certificate '\ + \" . (\$CertVal->\"name\") . \"'.\");\r\ + \n\r\ + \n :local ImportSuccess false;\r\ + \n :if ([ :len (\$CertVal->\"common-name\") ] > 0) do={\r\ + \n :set LastName (\$CertVal->\"common-name\");\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$ScriptN\ + ame \$LastName \$FetchName ];\r\ + \n }\r\ + \n :foreach SAN in=(\$CertVal->\"subject-alt-name\") do={\r\ + \n :if (\$ImportSuccess = false) do={\r\ + \n :set LastName [ :pick \$SAN ([ :find \$SAN \":\" ] + 1) [ :len\ + \_\$SAN ] ];\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scrip\ + tName \$LastName \$FetchName ];\r\ + \n :if (\$ImportSuccess = false && [ :pick \$LastName 0 2 ] = \"*\ + .\") do={\r\ + \n :set FetchName (\"star.\" . [ :pick \$LastName 2 [ :len \$La\ + stName ] ]);\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scr\ + iptName \$LastName \$FetchName ];\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$ImportSuccess = false) do={ :error false; }\r\ + \n\r\ + \n :if ([ :len (\$CertVal->\"fingerprint\") ] > 0 && \$CertVal->\"fin\ + gerprint\" != [ /certificate/get \$Cert fingerprint ]) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was updated in place.\");\r\ + \n :set CertVal [ /certificate/get \$Cert ];\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was not updated, but replaced.\");\r\ + \n\r\ + \n :local CertNew [ /certificate/find where name~(\"^\" . [ \$Escap\ + eForRegEx [ \$UrlEncode \$FetchName ] ] . \"\\\\.(p12|pem)_[0-9]+\\\$\") \ + \\\r\ + \n (common-name=(\$CertVal->\"common-name\") or subject-alt-name~\ + (\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRegEx \$LastName ] . \"(\\\\W|\\\$)\ + \")) \\\r\ + \n fingerprint!=[ :tostr (\$CertVal->\"fingerprint\") ] ];\r\ + \n :local CertNewVal [ /certificate/get \$CertNew ];\r\ + \n\r\ + \n :if ((\$CertVal->\"expires-after\") > (\$CertNewVal->\"expires-a\ + fter\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate is newer th\ + an the new one. Aborting renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ((\$CertVal->\"private-key\") = true && (\$CertVal->\"privat\ + e-key\") != (\$CertNewVal->\"private-key\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate '\" . (\$Ce\ + rtVal->\"name\") . \"' has a private key, new certificate does not. Aborti\ + ng renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable ([ \$ParseKeyValueStore (\$CertNew\ + Val->\"issuer\") ]->\"CN\") \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"The certificate chain is no\ + t available!\");\r\ + \n }\r\ + \n\r\ + \n /ip/service/set certificate=(\$CertNewVal->\"name\") [ find wher\ + e certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/ipsec/identity/set certificate=(\$CertNewVal->\"name\") [ fi\ + nd where certificate=(\$CertVal->\"name\") ];\r\ + \n /ip/ipsec/identity/set remote-certificate=(\$CertNewVal->\"name\ + \") [ find where remote-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/hotspot/profile/set ssl-certificate=(\$CertNewVal->\"name\")\ + \_[ find where ssl-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /certificate/remove \$Cert;\r\ + \n /certificate/set \$CertNew name=(\$CertVal->\"name\");\r\ + \n :set Cert \$CertNew;\r\ + \n :set CertVal [ /certificate/get \$CertNew ];\r\ + \n }\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; silent=true; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen\" ] . \"C\ + ertificate renewed: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" has been renewe\ + d.\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' has been renewed.\");\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not renew certificate '\" .\ + \_(\$CertVal->\"name\") . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !scep-url !(expire\ + s-after=[]) \\\r\ + \n expires-after<\$CertWarnTime !(fingerprint=[]) ] do\ + ={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/scep-server/find where ca-cert=(\$CertVal\ + ->\"ca\") ] ] > 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . (\$CertVal->\"n\ + ame\") . \"' is handled by SCEP, skipping.\");\r\ + \n } else={\r\ + \n :local State [ \$IfThenElse ((\$CertVal->\"expired\") = true) \"ex\ + pired\" \"is about to expire\" ];\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen,warning-s\ + ign\" ] . \"Certificate warning: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" \" . \$State . \ + \".\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' \" . \$State . \\\r\ + \n \", it is invalid after \" . (\$CertVal->\"invalid-after\") . \ + \".\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\ + \n# RouterOS script: AM-GlobalConfig\ + \n# Script comment: Global Config Script\ + \n# Copyright (c) 2007-2026 Vados \ + \n#\ + \n#\ + \n# Warning: Dont touch this line!\ + \n:global GlobalConfReady false;\ + \n#\ + \n#\ + \n# Global Url For Amster scripts to fetch\ + \n# most be defined in AM-Init-Script or AM-setup scripts\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global ScriptsUrlSuffix \"\";\ + \n:global CheckSumsVerify true;\ + \n\ + \n:global ScriptUpdatesCRLF true;\ + \n:global CommentsInScripts true;\ + \n\ + \n# Debug output:\ + \n:global PrintDebug true; #false;\ + \n\ + \n# Debug output for specific script:\ + \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\ + \n\ + \n# Debug logs\ + \n# Other actions (disk, email, remote or support) can be used as well.\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\ + \n#/system/logging/add topics=script,debug action=memory;\ + \n\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\ + \n:global Domain \"WORKGROUP\";\ + \n\ + \n:global EmailGeneralTo \"vados@vados.ru\";\ + \n#:global EmailGeneralCc \"\";\ + \n\ + \n# \$ScriptInstallUpdate mod/notification-telegram\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\ + \n# Use this to send notifications to a specific topic in group.\ + \n#:global TelegramThreadId \"30\";\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\ + \n# or user names. Groups allow to chat with devices simultaneously.\ + \n:global TelegramChatIdsTrusted {\ + \n \"454403445\"\ + \n \"-1003631309063\"\ + \n \"-5124482807\"\ + \n \"1087968824\";\ + \n};\ + \n# \"-5294757340\";\ + \n\ + \n:global TelegramChatGroups \"(all)\";\ + \n#:global TelegramChatGroups \"(all|home|office)\";\ + \n\ + \n:global NotificationFunctions {\ + \n \"email\"\ + \n \"telegram\";\ + \n};\ + \n# Toggle this to disable symbols in notifications.\ + \n:global NotificationsWithSymbols true;\ + \n:global TerminalColorOutput true;\ + \n\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\ + \n\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\ + \n:global updateChannel \"stable\";\ + \n\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\ + \n:global CertRenewTime 2w;\ + \n:global CertRenewPass {\ + \n \"\";\ + \n# \"v3ry-s3cr3t\";\ + \n# \"4n0th3r-s3cr3t\";\ + \n};\ + \n:global CertWarnTime 1w;\ + \n:global CertIssuedExportPass {\ + \n \"\";\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\ + \n};\ + \n\ + \n# Script BackupAndUpdate mode, possible values: backup,\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\ + \n# osnotify - Set `forceBackup` to always create backups on every run\ + \n:global DevInfoIncludeIP true;\ + \n:global BackupAndUpdateMode \"osnotify\"\ + \n\ + \n:global forceBackup true;\ + \n:global BackupPassword \"Peskar55\";\ + \n\ + \n# SFTP Backup Variables\ + \n:global BackupRandomDelay 0;\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\ + \n:global BackupUploadUser \$Identity;\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\ + \n\ + \n:global BackupSendBinary true;\ + \n:global BackupSendExport true;\ + \n:global BackupSendGlobalConfig true;\ + \n:global BackupSendScripts true;\ + \n\ + \n# Remove local file after uploading if no errors\ + \n:global BackupRmLocal true;\ + \n\ + \n# Local Backups Root Directory \ + \n:global BackupLocalRoot \"tmpfs\";\ + \n\ + \n# Encrypt Backup\ + \n:global BackupEncrypt true;\ + \n\ + \n# Sensitive information in Backups\ + \n:global BackupSens true;\ + \n\ + \n# User Export\ + \n:global BackupUser true;\ + \n\ + \n# License Export (not for CHR, will silently skip)\ + \n:global BackupLicense false;\ + \n\ + \n# SSH Keys\ + \n:global BackupSshKeys true;\ + \n\ + \n# Certificate Export\ + \n:global BackupCerts true;\ + \n\ + \n# Certificate Password\ + \n:global BackupCertsPasswd \"\";\ + \n\ + \n# User-Manager Export\ + \n:global BackupUserMan false;\ + \n\ + \n# The Dude Export\ + \n:global BackupDude false;\ + \n\ + \n# User Files to export, comma-separated string or array of strings\ + \n# User Files are not removed on backup\ + \n# Any directory paths will be removed (/ -> _) on remote file\ + \n# Nonpresent files are silently skipped\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\ + \n\ + \n# load functions and any custom scripts\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\ + \n#\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \n# :onerror Err {\ + \n# /system/script/run \$Script;\ + \n# } do={\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\ + \n# }\ + \n#}\ + \n#:log info \"\\ndevMode = \$devMode\";\ + \n#:log info \"\\ndevRunning = \$devRunning\";\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\ + \n :onerror Err {\ + \n /system/script/run \$Script;\ + \n } do={\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\ + \n }\ + \n}\ + \n\ + \n# signal we are ready\ + \n:set GlobalConfReady true;\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\ + \n" +add comment="Renew locally issued certificates" dont-require-permissions=no \ + name=AM-CertsRenew owner=AM-CertsRenew policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CertsRenew\r\ + \n# Script comment: Renew locally issued certificates\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 CertIssuedExportPass;\r\ + \n\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global ScriptLock;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Update Local Issued Certificates.\"\ + ;\r\ + \n#/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=st\ + artup interval=1d on-event=\$OnEvent;\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 :foreach Cert in=[ /certificate/find where issued expires-after<3w ] d\ + o={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n /certificate/issued-revoke \$Cert;\r\ + \n /certificate/set name=(\$CertVal->\"name\" . \"-revoked-\" . [ /syst\ + em/clock/get date ]) \$Cert;\r\ + \n /certificate/add name=(\$CertVal->\"name\") common-name=(\$CertVal->\ + \"common-name\") \\\r\ + \n key-usage=(\$CertVal->\"key-usage\") subject-alt-name=(\$CertVal\ + ->\"subject-alt-name\");\r\ + \n /certificate/sign (\$CertVal->\"name\") ca=(\$CertVal->\"ca\");\r\ + \n :if ([ :typeof (\$CertIssuedExportPass->(\$CertVal->\"common-name\")\ + ) ] = \"str\") do={\r\ + \n :if ([ \$MkDir \"cert-issued\" ] = true) do={\r\ + \n /certificate/export-certificate (\$CertVal->\"name\") type=pkcs1\ + 2 \\\r\ + \n file-name=(\"cert-issued/\" . \$CertVal->\"common-name\") \\\ + \r\ + \n export-passphrase=(\$CertIssuedExportPass->(\$CertVal->\"com\ + mon-name\"));\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\"\ + \_. \$CertVal->\"common-name\" . \\\r\ + \n \"', exported to 'cert-issued/\" . \$CertVal->\"common-name\" \ + . \".p12'.\");\r\ + \n } else={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed creating directory, no\ + t exporting certificate.\");\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\" .\ + \_\$CertVal->\"common-name\" . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/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=fetch +/disk settings +set auto-media-interface=lo default-mount-point-template="[tmpfs]" +/ip smb +set comment=MikroVados domain=WORKGROUP enabled=yes interfaces=Bridge-LAN +/interface bridge port +add bridge=Bridge-LAN ingress-filtering=no interface=ether2 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=LEN ingress-filtering=no interface=ether3 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=NUC ingress-filtering=no interface=ether4 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN ingress-filtering=no interface=ether5 \ + internal-path-cost=10 path-cost=10 +/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 disable-ipv6=yes 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 comment=WAN 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 cap +set caps-man-addresses=10.30.30.10 certificate=request discovery-interfaces=\ + wlan1,wlan2 lock-to-caps-man=no slaves-static=no +/interface wifi capsman +set package-path="" require-peer-certificate=no upgrade-policy=none +/interface wifi provisioning +add action=create-dynamic-enabled disabled=no master-configuration=2G-N \ + name-format=2G-%I slave-configurations=2G-G supported-bands=\ + 2ghz-n,2ghz-g,2ghz-g +add action=create-dynamic-enabled disabled=no master-configuration=5G-AC \ + name-format=5G-%I supported-bands=5ghz-ac,5ghz-ac +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/interface wireless sniffer +set file-name=24g +/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 interface="ether1 - Unet" name="ether1 - Unet" \ + use-peer-dns=no +/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.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.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=1:20:72:a9:d3:34:36 dhcp-option=HostName \ + dhcp-option-set=MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP \ + use-src-mac=yes +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 +add address=10.30.30.86 dhcp-option=HostName dhcp-option-set=MikroYellow \ + mac-address=48:8F:5A:8E:1A:C2 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.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru 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=git.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=ros.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=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.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.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" 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=2606:4700:4700::1111 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +add address=2606:4700:4700::1001 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +/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=amster-nuc disabled=yes list=NoWG +add address=10.30.30.11 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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=10.30.30.95 comment=NUC list=NoWG +add address=glb.tas02.cws-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.cws.update.microsoft.com list=windowsupdateslist +add address=glb.cwsapp.prod.dcat.dsp.trafficmanager.net. comment=\ + glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas01.cwsapp.update.microsoft.com list=windowsupdateslist +add address=disc601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +/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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=tcp +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +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=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +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 disabled=yes +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-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="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/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 \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=dst-nat chain=dstnat comment=npm disabled=yes dst-port=81 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=80 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=80 +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 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=udp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=tcp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=udp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +/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=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 log=yes +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 walled-garden +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 disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=yes distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet 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 +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 +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=add-src-to-address-list address-list=bad_ipv6 \ + address-list-timeout=none-dynamic chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked in-interface=WG in-interface-list=WAN \ + src-address-list="" +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +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 packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/ppp secret +add local-address=192.168.60.1 name=vados remote-address=192.168.60.2 \ + service=l2tp +/routing bfd configuration +add disabled=no +/snmp +set contact=@AmsterNL enabled=yes engine-id-suffix=MikroMaster location=NL \ + src-address=10.30.30.81 trap-interfaces=Bridge-LAN,WG trap-target=\ + 10.30.30.10 +/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 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="Windows Update script" interval=2d5m name=WU-script-run-schedule \ + on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" interval=1d name="DNS Cache Flush" on-event=\ + DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" 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="Scheduler for Amster-Backup-UpdateEmail" disabled=yes interval=\ + 1w name=Amster-Backup-UpdateEmail on-event=\ + "/system/script { run Amster-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-02-13 start-time=03:41:27 +add comment="Setup Global Environment for scripts" 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="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Renew Certificates" interval=1d name=\ + AM-CheckCerts on-event="/system/script/run AM-CheckCerts;" 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/20260415/20260415220001-Diff-Config.rsc b/MikroMaster/history/20260415/20260415220001-Diff-Config.rsc new file mode 100644 index 0000000..80884e8 --- /dev/null +++ b/MikroMaster/history/20260415/20260415220001-Diff-Config.rsc @@ -0,0 +1,7 @@ +385c385 +< name=CustomUpdate-Certificates owner=vados policy=\ +--- +> name=Update-Certificates owner=vados policy=\ +388,389d387 +< \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ +< origin_ca_ecc_root.pem;\r\ -- 2.52.0