From 90ad41dd1055f52489ecf00cc88bb0a16b21ec96 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 5 Jun 2026 14:20:34 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 05 14:20:33. --- .../20260605/20260605142001-Binary.backup | Bin 0 -> 256021 bytes .../20260605/20260605142001-Config.rsc | 3440 +++++++++++++++++ .../20260605/20260605142001-Diff-Config.rsc | 17 + 3 files changed, 3457 insertions(+) create mode 100644 MikroMaster/20260605/20260605142001-Binary.backup create mode 100644 MikroMaster/20260605/20260605142001-Config.rsc create mode 100644 MikroMaster/history/20260605/20260605142001-Diff-Config.rsc diff --git a/MikroMaster/20260605/20260605142001-Binary.backup b/MikroMaster/20260605/20260605142001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d0546c9917cf2ac55713fa624a976e029cc4a363 GIT binary patch literal 256021 zcmV+aKLEh*sF8CO=mP*dM4)n5<3!000O80004Z`SAPzLv09oxEV?U z+vDdM6yEf%iQh_bphRpp+ozowLM;p(#k%9nJvg4`DzKeE&8TymFP=D?m0wp-b12x4 zH)pB?o25$Myhosn2wGt6-h$l#_;Af&j6~QWBRqG@A$%O<_?gib5 zG#Drb$=XzXvyYl$&mG^>%JAqoYS*3g)aa~`c2=jV%ye@UZ;HUp81q%2NGeuIH2jiQ$ zU@C45Z8;9KsFCM+KwQw?81X{2;5Ke)Lgw-tv?p`_|f zf{R}{BpecV?r(NQ8`WuwRFXQK^%N;Sh4I0T$o&+r-4dOdEO8`9CKq}V!!!veF=3R; zj)-l{X(JzYB>9u|yUaTWF3VUI~{qsd5HQ%A;*m@MQ8wc|WoXu;aOise4iO9;e))W&B+BWVf7mMna1VIEwCFUA{sH_2-xQUN56~U!&dPVprHG1v|k* z_lwn7a-_baKGe@L9Lpu<#3AZg+XQYZAX7AIYTsA{z+WpGVXPtC5kqMZKh{?c-&8f0 z7`o?ZY>;pBe?}hfML$5Ro#6(JF5fABdWu+AiYRSk=p_TNbcm^Dj18$Rc{ZGYw=}nv zbfg8rS4K}xX!LlO2H?V~++Y(#C_FsI#eo*i8Qu$hE|(3JDw`pB;L;spE{MpJ3GXSG zfyAORFwPfu=ty=G*zim*MrnQ=dyTSEnP|wpQMK8upPYoZSTFE!vieAJZ%b3dUjISK zI}$*NHs�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

Tn~zV@+U-qVhA)y30#_tCWEAP zT_9DxmdBdtV3*DBBz@$(IY>eDD&dP&PD zrTk~~&MG_V^nkyeqPcKh)J@#~;Sg3c+2HUzGMlUA1yj_R667lbAIPIZJ|3*w`7r|t zpB^L3;vqWMOte<2(09Gkz;rTM&IHyAXe9)6rTprePHp{UE2eDNNFnnTPeWZ?M z{jVENw$v<4`M`_?T%ajn7)q*A;|a6(?$Y|_^i3?f%WNO(#iOcC2kYF2UZz`Oo#&!? zH`a@W3H5p(c!|yOLzSahgWb?rrip-9O8M4mgR2L@2t-jz;=QM{7TAlL#I*|L^g{^4 z{AzDv28>?(a;IR;Us%$9PO{sa`|W316sa>gtUC}j-y}1#=%!%Cy(`<`fNbzlh&-CP zOofO3h@kwInEN!`jRbg`1d8C5aH6<&Q83Fj0FPaAmS`%QGPvu*Z&C8|L0wOwG#mXi z2<9}Z+qgy2t~6uQgWfRIu4S+}uuu_OSoy5geQKzlcu=VYGb8&W3$SZzQ;E=e4D zBA2B>o8u};mZQ5>TYgvm-`nJ|&JxD#nu(C3qw{hj%bVV~E#6VQ#1n20uL{8Mf7)Zv)2Z2(kMFGe(&Dw%{{2<{GQ_)j8bgRuJXDfcUJS zlH6Tb!sQOUi>OTde#X4Yul$m-h`C*+sNg_#EJafQ1ASYblV11DB`zwqpAO{ag)Z;= z{v1L^{g)l#??OG5>gc7;`r4ngUsM$;ye|oMMBsL%> zAwwCP)0gUfXTk&d1_cz1nJ;5$DEofZ72b83=cSUw$GnEl_YT;HZHq-s)qyay7zH_r zmih{Z5GhwbJ1{07)H>Cf(8%9kC11;wLfAq{Cvr1hAwLhw`l^XOdm(OK{rrLyCB zp4SoD=>|-lUTo8}U+S~1CYNu3I^AC8wU@I_gsj^=GMTm7_)NYQ&_o>J)kSgBF%Z#A zZ4cc|p9O0R^wG`ZBu60wZgmP6LoE1wxsaUXfn{F{e@+xTXTNw~#a7_TXuhno_IEbU zCN?NE#h`x1$kYrC{IU@*OBwvb5-8$1#sXBnCrx}i>~Pj4sigwSicLVfGAS|%)g4`? zxij^Hme`bobieO#S5sW;7u$NIw5{tPyzvO0{#p$yej zb->ro|EGo3J)~ zO{g&gkT_AHgxcay#;afCjQ@6J5i6oCXttaToDwEGGdWi9MOR-6R>me%ntusb7dQ1v zi+iOISW&~+wIS~5scr3YP}Yc3VtQStEcpPEeSErUj_(S_M>ko7-EdG7W(CK`htxr`e z1{ltYYG?j=*~`;62J_{%jNfCZ&}hbC2_O1dDXE8XQsMgM`UNDz?)esz$}sa|VUNt4S%qBysqRX$?MQWUJ>jYg1SfuP>wFp7?Nmq%;y@k8}EH6 zL5b02ItHgVVp3jH_Z$I4_%2{8cN|Yw0%!_+QUgx3;HL%C3oAW!vJT!y$md`pj5JDU)SC;9g)xO{cqLZz@qw+xUWqa z8jex7tqmmr)qo~Qu85i2SaT_1VvJ@p!u6Kkc@Is7JPvS)OWLZABh>L0-((Mq8s?g> z@PXeW7?i4O)<@vrIBT=Ip{|fz60`eRunNy|BT&;vM~+wDUMOCLd_QGu!hF;dK|2AB z{EC;}T}I2JZy(aZiY&0uwW~u3lnh;5fU*% zWFAvkk+`ZubEC`w6R&kb!b)aBKQB2qH-0E+vg zU{_qyp!66hxq6KB;c`&=4CkLIjgO221hX)x_4G0=yai3oF(KZ4C8So1TZWzg+3$_q-{+D#oXY;n;!6uup@sz zm3qxau?;C^gVrmYx#JiK8|D@0-n#dV7RS~al@KI~S3-=ZktK5Xf2@0qd%F$1evD@z zY%Ra2h#Lapa=2b__&sYMM`mNSlH7a*U=V|Ce*t6n2y{0=oUbjCX)zR?b3V`w%vNh& z-8?=S_2JDHeXQDn$}Y2YCH>P1YtAQWYh@WjW&zAqBtf&X+`hFP$5L@l&FdfmLMuAe z5+C;j!*K5)+gM1N&xkOq`f(GwYB~_uQBnA9uw&^Re-6P7AYuu3J&D+zj9BBh(@!5uM!t&1woI7Lx0$kq_zSfXUn zINQ8w)LVRvLpn4PB6fE6iA93-n-I?b=rq~5QgLS5ygGk)Bs(R%llSKHIE}pYM-eeh z%x|`5mIgf|fG&g-A08^5RV=(Pmq>g6jTk6)S}VsS@!Xc_UGBhSx!2|0;?AUN)h2cN z3OUbAScSInd<@zR0+7y(qMg=y*8}Er`A6q#>&fxzL9Ei{pW+Lv<0CGm_f(m!tRt^y zE~eepMnjZ7dRUHNc={LxhC9wk=dHaYQ+8&3_QmHCu7J zWyzGG$#AKbR!b10E; z9ZieDfN9;}1$hd^RXX&gY)ONgO>V>A#Z$qENE9oL4v{l@?-kXfQlnomK9z@q!Yd-b zByXyQb%*~eR@EW-O!P8mUt(c)g|Rkz+(|6SXe6JmK;ntTUN#qtk8) z7Hj&gz&<@Vb<*u)lr~nF$3Nyfx!|G}1Pk^$f=HmU?@x9oQkV5tf8+rFKLEfQh=?I& zEw=K>xC%VFJ5teQKQ4;fs z$cOOuZq}0UM;H;t*@dWnRZuVgObh^kilw;AG2F*yRZNv&lCs_;T@$MJ-;}DN-T?jU zX!_rK9~OaaqRG%iHXzjv22{}Dk})ah3pSdy!9|PX{(QV%_pQ(m{}26Pq{0wwSaUHP zGu{BC(7@<`wP5{Y-Um=LbMkS!KCL6c3lGG5hVqmokS5kbH;dJXpiuq5^$D1!UAA?x z$YFz&9R%LpxE}j3Oq*?U@6xZvD%B>0lVD!*S4unG^%M))#E~6SI)TwJ1D8UQ@NME! z5U~-&q!&L}tM>3p*?@|CwhUv#s?t)4h=&SIUc-HK(q_foRQ z=%jJBU+j6r$W&u)s!7eW}~`}DDOZ6#?d?S`fxv7H~jkkaeFA~#{Bc5>?(_E z&VK)X+-rB!e7@KO z8nKBCsuL8PPdlXjjR(v}3%4DN5Y(T*u%#M$HA+QP8_2AdPsw{83X0Q38p9?-5JDNb zK-{;!M*O>!1?fjWYfXqA##Mvh3%2QU+npuD%Dd%ygDdhoK&JL?*tY|Ft$wKv_E)*a zS82ZOvi`AFq7ipCxK{f7Zy~i1X;8MoNV~dh$u6dEIKtl(5G6<-kx_nJFwSo+#G2bX zX`k0TiRE4N2mkIuW%nGFnTe(l2F24|4*f95?Q5Uc#{sg=15h>+18upe`KAOXNI&8p zWxdtuH70`MuAQQUbU{nY#`01mTj8OV3ws}YkO{zvAmn#HB|ICO`K``6x4g#b_7%)8 z4@7Hm8Royl+ zh|0G(TF|bP2kBNcV9$$EJu-ATN;oyk5?+Cu_2zt2H%g#%7L<~ z0zWxp;*FU=(2ELWd$v{3tPJEC4xA8M{^rXpH-b7tYq zqm;NFgHvq8HgTTIWFuU=|w4{zzL%}6o2GjCUy zZ#99mKk0f1kX0LaEGt!fArm+G@?$gH2DI`J$3L-BAAj)%H&;bG%g_Q@ivld?{{UN4 z7JWFVe;s0!Q$CQrykJcT)PSo^P2Xm@D_8V`uvTnM)b~A$M>L?V@Qh|$KUKr~eFRP4 zF=fp-fJ)5r1{Vb^hEy@ppqZ-Di(zgpBNHj)t>3k=Jk9GIt_TJD2|{Z*l+C;|?vUv& zATe5@5C|kL5p}L?YWr8ZL^GX|?G{P49?Sf{%%9~*#jWXHNVEH;96ZM02`7W0v+Lr& z_t>0oG_fKJ1gXGh9j3#NI~XQp{Inq5?2g6Y*41ru=P5eqDYz!#GynQqz&R6ceZoyu_yi^U{IV*P)W88NGk5kk?|!4=!J=86<~V4O2YPfCBM} zk<&|qZ4?qp6LkgYciSffAPuFxdO+A(g=f`$E=|D!PgOmdz@NbJjOSPy^{iA&xOL+DPf-a|Q0V4aXs?gvgf#3=?2 z)##ZMT5QwkHmZL@S*9dU*V~(I9`s}8{wmWX!@*=oEqzQ-zD(R|B9WxGTy-?teNAj> z2~`3W&&=G-+xdaE1Ymy6L>hq*_g`qunOG3GW0|-)5*z&h`)B=tI!h4;r}?<7Xp#6s zFQtT+pAaX402(2G*D^qvNYt)wy`&7II*-a%g*9sl5Cc|rs0EWt8jqv02Dm~wRvp+! z?VXt5)_U?r5ezr|#-}+a4CvbM7U$6`Zu4H);oG|+rcoRCC{7?B^pk(ESvn6rq+yc1 zFQ@nxR(O5oBX8*Z|DoD&=Gi(I!^(kPz7D=$A!~5Q)}#FL)RVsA3^wI=)(_?3Vbh*a>T&8EF?NTEVxSG516L7(y;E=%UIHt_$o}5 zXZe2GJ@n=~vX7oLUvl@qem?CAg_I0isJal!vq>3TXHZy5{0+`bR}f4*Z?#E%9bNmW zvQs@J!8%AqBUHDRk%D57!`Edj)CHh50DY^ulAzGqz?}c4{5;&51LqW;l4g|dZlmh(im%3p7h&IA+un<|W;g4r)R6h7GefSil zl!n$E^vjuzn#0oBUL}8&+$yJGtPC5ML36ss^M-@k zv%>eS#yg398A%=HH8PH!d0|fZ0I!E5V8%^6-c{;G$P&mUuaLIp$_et9@(-cd;FiuP zEw)!yp$ZQr5(pbe&U)aqG<>+UG}QYkkeuQd|8a)UXU~V=;YjTI&H}5Km^{YD1Ip&8 zI_$-6D`YmWUm*pZHT$zbotpZ|;Ss(COGMA_A(1KQX{j>Pa|IajkHz~~Y8op$pb=>7 znmu8M@WNNoB>}5AH41eC?y+NyI1x5dNG5q7sFI`@)9dMWgzP?YSe_SyPu!G%GSeVU z-sgp`rLJg3hi=1wwN%1|a6=hPE)hQ`OvT>q_NAxidCQYTVv9e(Cnvz=8LZ1Z@_4Yl zqSi14#t!$zT4nMTarj7MO(_eai3;nmPf&N*$#Qt+rz2rUc8Bv54x)(2mV zpYSg0Fq%WYsQ3F^Xeu~2kNM7la%x?r-@#=dg|$v|p96%VUoxS20p0hbTbGmvQ{R7( zMqPQ8hPEjn{)S&45*KuAo%_r}zw&E-HL>=uIyGWkcUA(%)Cx8i5=tHH_Lp3E0W=?r zhyj-;l2O{U-EuNl*cQi~Qn-6JYCKPm(ZgY~bL%CeeRKB@F_jfGLnicy^8?A41=^rZ0N)sPso8i{@8is|$YEc|mF<`{UGM3$g zm|(75jSIuYo}3BG(5^u4#8{mIUU1K-M7h48Onk8^%C_mz5Sl4u zMSEQ}maZGgH%u?Q>|mJx2*^)wCR>oGdGF4Nr{XgLcy|ut=Y4OizfkOWvOMov;(Q*N}m4|*Y@6^LBQOO=kN+l8c zZm-_P?75CWqXmO&Kco?1as+VT?^9PxpZS?By#|Dy{V`Xqv6BoxbjN(L`GvIE;4&Pj z&PRW}^9_QM;@(*RaK<(>w#gYPR<6rnz-c&G3Ddz|5nK}`y` zxU6#!9ICmG(&A0!6|Ai1rY4ymS6}f46QCQo-%Rp#=)aLkQM;@?)Wpq$Yg1n$Z4N7rat=2}4?RpOJ%9|(Oc&Z?XfQ)0rtLT6paLX6 zV#$Z%E~1S;}s%om-dm?19_p-EM&RD3Fo?sZJT+-aA z4FW6N6D8>$O@Rusl;hf)-%ON^^eNv&<>&*z+UHr5{5Q7G>ymBE1G7v7q=g-vmjY6hzwc7qs0oXd<)rhnQR|(-~z8#J^t%8Mi!rH3 zNum_Y=#l34A7Q7z)Q@_V(f`93lZ5Og#H|BlNEgGu02j`7mfbm2vO~P7@o$P!h#cP} zeY0gkcUUY96kXE7^)+J%kSpAy2dvqOM!vvweGjmgxXH#ugYyTBAU1r9Yc&;PKigb) zj(V_fMT^-q)(YuW^a=cGyW1DF-z*)kn-{ZuDH4E>QfhFz9qcH}uMT{H2Bu4!A&Nl6 zj1@(=4b=~DH)G5|X&IV)r|GY3^31wHK`W+U>$;E*Y%Z`FI z`dSw_(7KixPL{k~@^Das=wV*&Rb*gt6(M zJS{@r2${CtP(hiDBL`*j)o3q~SCq2_vV1}S2S@FvB zp0v43S=`2X&&X-V&Os$mxa-08H%w41SLE;YtM3H&2~pe*34Z26FHQjT};8eIImos6lf7 zanY>BQ_rd@Y;XG<((^-26gVNI3d4+?95zlxz0QNz(1T0YCB*T$;dOTJiZQ2l`T$PW z9j5iAVjB*znYz`Cu&&r*o)$oODlV8~)MU1%zdqncc2ETmK>W=2d znkfM8er2oicKP5C)wKJxPqPk~6G4s0m+Ab#vvd%2+CWhZ#$|-DKsqJcV4IJUF?PnI36+d03xM$pH6kqX?1(oPJ2Uk!Roh4A8Gi5Fo z0>9hycK%NaN$5uffaLmt?Q@Y3HWQPBIB#M02;uq>I`SFhPdPgl_yapPI%pVG^zq~S z;C1w}0?&%ZEm^0Wfjt5lMqE$;S_os)XpgSyn?D`73@ooa#5qQcq)uu zLUhp-Z%fH+wBF!@6f1t%(NV_HqSPeln!H>4DDTNRb~F@v&q#X%+J-GxmT1 zf!WT-E_t#(6`Ebt2nfCuC4u%j+M0zl5us@eJ3jV1mxBsbl<+Bv0yee&_Ebl+vE}YjPSfTnYZjvSS1p+<#N6X283on?{UIhb(9}lK zH4L*9gLWtJ@v7t@4 z4Hyp*e-jS1_EIQb#NpCmlSZT-;JI0Inc{o{sK*|BQLHD+YnB*D^XwOMW*p}K`)Hwh z2w(^I4)|x?LNid>ng>SVXez-AMs#ejR#G$2X>aj#qj*Ice6s?gB{=R3lX4Unm+h)AO#xw}Wkn8KVa zQzvS2^&ApHsqRpirO*t&vm~Bs`uojNo^cYp5G4OFgH6@@4OVmr39etx+!M#Ap2H5D z_ao9>Sk|gg;`fKRit{;A%@T|2XmHM=Xzx?6A4xcK7LW~~=`iXy)I~~H!OO)WRp6Kg z&Y>MHdu)!m?=^;E&ecbS$pnq5A}*aO(?&!86*Z-Qt;{w!GFH+#ozem)Qq7F z8XhFGADbEeW`&=^>ZhpF1r-m3ufvZwzR}-1+-VLp>YVhXmJG!46k`;$ByEav2c1Fd z(LCNu>smp1&*=eAYrwGRDHJxOmL?dk^qco3GG>(&d{vyK?=V1*0p%t)*B@cqB>MV2$RbbW+a2;)JVAosh{y7FleGaQ*$!O&GeBWJ#he*V1 zbjGA#;IZKL5Wg{5t}_La@k77HHY4tPEb9<3xwal3N6)j-5UqBni-6k(*EwpSfB)iu{;FBLEv+G^p(bF?!4Y_#sCvnx) z`og3AEd|8POr@6|1%W4#_&x#cxQYueNqYtKlNxCrKZys;z307ryTregtHrw12B#3lbX& zOu=E5Qym0P+%2Hpr9u9G-ROgDla>+61;GROykX$8w;~de{&~9!$v7aA|33R1tJQHZcb}edoKqQ3`67iB+B6iOy`adIegG#MsY*#AP4_pR0U=-TW*T6Am#Jl7U zLw1hj74w=3?L~qF{u3>N01njfMUQ+DAM_ELO9&ciK3rob>_vt=#VB?K7b@7ILZ>Pp zaEPIFG_XX=lVU*f;1+O@5z76s+>A?$wj_KFpy+X+zi%Y3jCE%pGA19g<*gF-vuSQ* zXve<>Ce61er=>N|aM^(VSvaYrhoQkSuFIM@rm_pEY|wY}eY5xq~E}0bKO0hABHZv|=OI%Q^{b?V6AEbzUPxf4p z8@M}SQ^x@#3TvOEvrB@MBk4y3Z1*%XOtQE0 zrkb|vP899%ksiv`jBt?jmk(KwmGdxWhTUDbKTHJa071Rp{*CW2%@-@pJX@9gY_F}_ zYD+El!n10~)$j0pyWA+B<$uk6rd%AFHaM~tzzOtw1%J@C8D|w}scm={$oH#2-rGt= z^AY!zzxMyh&dp)=@RAz-XueNuvsP)iLnj?RDCncrU;QPzBs*1zkN(}FEEKndgU;y0 zZE6V;N*({KZc;aVA5-H)konvpmbms5`oz9mx0OJ?sg+qK_#xDQ|C-`rS8ih`th>gD2KmdgURWv+&*3w!L1>y0 z;YGt8pJB*<9+MERJ4f-sYF1%9!ziVBlb8+sA(-1yU4C!NrGD+$*r*v+NGcXrNoUvs zs!j^DHuM;6d`=@!+4wtmWcBZ31f_{?YyLhmXx4YKOm2`sfu$4zka8S^y)|6tDXf(;fNX?1>R!v%}@Zz}g(ZuU^q(F$q|K0o`Z1o-MVa_>pRK;R~TR(AK`H zSR^jWyE12i1`3u7>+?ESytlM<&eF02qaCmD+N4F(bI3`B78s+6wPpKWu`=eWnen%H z$g~w+1Rn;pJ7w!;8EXJ`(f;f~T-HpQh-Z^zA^kJ4FvZz_Tw*^}BZWOBdydS9*SNge zP}{h%-%FK3alph_BtryM1JrTn^~ooYzm*Pczhqp3L|G!Qtl&y8Mn&n&m&s?J&9g7s zrr{THq-^QhG3=mmC>|a1nas^TK_T@OP)6VD=%H<6z!r|A(>xNbo(1hk(V3HpKxMkhOAwnTSWFo2L_Y4~61n5ZF z_h4YP`@}>(hqU=CPj1z$I1ZM1L9MXq9b1`Pef4O5I8NPwB>0 zvy5O)sWh|;`Y2WvLZBwqOzM=MkU;z|ID{g5ma8;@mrX)gx#Y$6puiAuSZ%BQ_}i^& zVzXXXZAF5ZrciIN0CxPGk4>=?c2TxTja+EAQ2B9#jL(|-J4!FuJo}K$f7gK4F!h{g z0!`sMWfy5QikKf&b|#an0=Z;41XQk>(m0S&LL%nj_-BB`2l*M_A;5lIAibdQ2ESL? zWARk8F%2_pCWKo<#^ccMV23BL21RfrhhIQW)(Qq&j0EDf%2gTkx+XIr3#Zl*X{}dE z8KdcSegaDQJ6p08OeHK)gI@vsdo;!-v6iCrTa6`#0is?;l{cv`VB(J}_!LrOAg(Jy zKy7jRwao54-+x@*NgRU#(l!4Al4}CyujGrWR`7~4?787#Ur~)?pq$q%QJk0~Frqr8 zJnKOu?C+2Go`As#*%&ag88BL;%X(WzGUH@lM)J=kVe7w)FyzOQ5(ea!-xE1kl5Kxg zP;J7MMIFBnirQN)qL7E2VChiPi&0fcnZ?mbzeJ^vftpz|xudO{*^_*p84 zW1>?f!Uzu9_L$g(*X(>OlqErbCP|qo8WkU_>@1!2%D7Hs#=dNz=#7LAOC&Al`l+Oa zH-R@ITBZ@8IV>=faK@d}kz_#ZoyadLuYm9dwfK0gKO|W;ug@;YIl7VN&M;hlza2Q! zmnjFOE^?d2u8-=!9uOno+;6cQjv}V|IPwm26_vgskVe149b7!U$+{=2;|7hZ3EL$x zS-Eu_E%aWN67jk7x?H@J)ce;rkrK8FxVdr>W_)*)?F#Scgh-cz7*p7}&F<7gClul( zocd4rtYp6+R0z-L)fYutr^{*BC_Vgi> ztx1aMzZ9+63G&HEIN9^7fqXb!Qy7z`4%(AWq80%;vNR3B_xbkwSj~J+7rV)QP+IGJ z7VZ~eRmZ*cbn_cCAyDH+Q0?DhigZZwwRF%abK!w0W!l!;cGXAuR+a-AWJI|3moo55 zb9F;0xzhwx0BkyaViZ)ESag@oonXB`Cz%7|Czs!50$?`JUH+7w6diEex1~DW>w&p= zHF48Rkl877Kb!QJ*dw{2O#p|t*G~FWBZq^$_%X?{0F%sY ze=rBDhBuw1Y3ez4{csacZf8HJf3EcX7_g(V%89udKO0-pU_5@Y*V=FE`BgA`PtxQW z)1kl6fK&%hS=5@QW2BUD1t370F1BPdiE*^~4|`$CH#)+{59amwDGdSjM%1JM^=?({ zyk5;rlJzwludgFVXL7UGADoeghY2oHxGEaJ^KKnx{emnnO2y(q$JONTisitOu1ei5B zD6=^+zsgBlpF=0-ERjrXV#@`vKxE$Wr&X~_oBF>^7&vE)K0pDHp?(eM(3~}b;-{Ny z^3TGwZQj`vY@X{A@xd+&!f$Gcnp-Nn<{PxU|H%G-#cs*%2WBjVEW4H!Yc`#eRK<#O z)NV0W>v%cy+L;-}jb*{c%ppzHm-gycCV0H#Uk`Y5q5iHU=deKOy5WcKbFXPc6LE93 z%%!QUJG(wD_43PbOd-oSJ|5x zf9c0ddOZp>6dXCZE|2-bO+s*y)ck_9gC*8pG|Pe0_W9UNZnD?6utgE)XfoX?=z*yl z$@vUo<{LfG&lkD`AfKBUA-(#g!v4BJQ{dd)tsVB%5%&<49I?tOQx33P3{H2uiWpn* zFkqJrg!R}c!^6YgNVW~Y`*rapmE;w0b8RL(wvY@SP=gQOg%%Gph#{?VBo(ijfdg3L zH5FXLa(`LV%XiySYq-`S*9}VQ5+9-X58dCCK-MeN~_a?PS>L@CXfq4Kkpu9CNgG78=ze!kf+@7 zG>14(vUht{eZN@xUuZrroe)MM$cKTn6`7XN$Wv?3yNSP!@CdAtU@6a1Q~3eR>d4g> zfWxG3XO@t`hFK1CNvSmto>rwPX7roAp}xU$W{8g1bWcW^O;8$XOkRSmi*@|ndR?35 z5sY!&1eZl_Ri6YD6H~J}Rxj`MQdE4616oH)<^6UY+-{_Ey-zw1iD+m+rLX=b?20C* zR8m^6U-S-Y%iLJKiu3`bEn~yt-HF}+<~Uzd-xGMKt6h>lV2UW~dm(~#GfV`Hn{X?O zSZHk4^UL^K;BK=~v(;v-4c4_`;)}2IA0^8E#Q1=e+p8yrg>mKYt(yw_C`2;+5d|3b zyLA51fkE&I**8c2K%7lNsYZg*Coc4FcCSG^ z)?b!w_aSmV!}@y=o!^p0yvpGz*&sk5 zagPUHr)TRD{G$RxDglhi9=?jpC-XmPoUz^)gM=SslvLz_%zzn)qU0771?suo2JED2 z0=`f77pd)x0u)au<^6^$*Ajt~f-C1WQjyslqa?f-bm07}B^SR>=7nM#NXv#CBR34o z$Vw*b`7=iY=;h=$J5B!m!T8DiV_=W6p+@MiSy;Z`U!VCYLb9?ge5cCn8Kbd0ZM{I z>=j#PLk@W9&*XJaNfz{E7D**!30nW%`WvP4~`n_JJ4w)N)pg$4x+Q)r% zJ~xPr?+be`4z7W&1Vv#HZs2Yiz+(xtyf@*oVZ^}Q_j-z)b#zQfkoTau{KAU5 z{|-nx^w1TC+P+M0i34d~r0(sQd9()d`3%8ap6A z6c`28mfE6MvHp4@IJ~!ixEzTROK7U8sRDt{ zB-rvh;{*Vsg8(&_!hYHU>&X$mwN;lc@`j1G=9u$fVfox0H$m#J?5rXIjJFPQ5#0Dt%{%cRSekyK))-Y zbpMm_Ykc#)BG~2kn4;_6VwEG*wwe`F_KAQ(b^kj*RTs-Kw3jE+acXclFGdd^FG*ow zzrXKE&&gV)c(Yvk|NN6cUkyQQgBc_Aup@xS9<0$GK_5MS;yGwHLGRv17#0{Tf|kSI zIw+Y|I6Munk~KMYLA;ocn;EB~_qmHy_Xsj5LgUn@;x{Ab09z=7R3+;%BrfGQaQITO zpBBD_cxjN&3vh_g`Mc`fumJERC$eJ(%#^B5H_hmTYBbyr{z10u585iFPO2(ac11sMl6lR9FFbV>w{=`|l)4Q;wC#?FkqpDca` z;8nF#Ch~HVb3pXSy0{9;<(O+9pcNlALdK(UreQ|;#}p*tkZw9^MM91@cdY$ycQ7{B zHDI^U`?@!OTC|g3!^%nW`!Xj#$e>AQ^~l8@>Oj2X)_;za2A|6Mf8igX26WetdNj3{ zwo?YC=6^Cqn7@W1$Ia)JTW2FcA#fo&qq)brb^E>NrK&+1aRsJ+a4ZTU^+xo#<+37M z37=7u0we|nvCo@hpZz+<6n!f>F}gLY|4y0mlC#vz*{|RK1`i?I)h&ugbr_<^wxys} zNW-M~ea-r4Zcw~r{K7JEdNlJe%nL}eQm1gQWH=!`+(c6Tswva!%UPVim6T7EVG=f` zd&ZOGXc1gRz`FOs|$|x|5o28$G^^IOd(~^gIRqH(Vw&TTsj85{>1H zPy2j%JydX27$L!3ji8XFq`)WG^=D=TUz7vpk;n#oI-eH;Dw-`J;QCtB)Qg?L8k8g~ zQk)EsL<~?bayPI<4u>Kb3v3w8jG>wcF?_!kKa| z62J{CX8|WtJAW}Tqb6K3t>I*s2}Z@RK+jf5$3@w7LKwOiJmkHN_SuK$Ka7!HSg&?TN$VQ^u2&r}?Vin9{ZX84{ApX|uTb9b%?`>r2(JiYNwU5}#IG&e-wV;v-^@?g!`tkyx{_5e%rrJ~a$HVvBqZSa(Oz~wIWA_w zu!Eo~Z_j04$4)%t$K*sn=YV~3WXLL0 ztOa}YfYheR>H~Z7wu?0X;PMB_UG?@WSVKk3^%qm=pLPiIBglXuV|Hz4FB*bR-5HbZ zrgH>dkW>&?z7VZ(icRo5Q+-FW@~+fYhFVatl(UZ77(gKL>+l#NDw0K*Y?rELE#13hK%S$GXjdl zGVJAjXUFaE=y$BE2si|Z-XkqIbvSdRSJLc1**f(wXvS$XrAb4W_fyfhP;UU7VHeja zgJT5U_w4KmK(rWfXR;?@pt&-c#{&suO3(^t7e1Zdd5p&}*biZ@GN5L^peL_Wj890?F5 zXdiOraf!tqZ9E8o-9vUX8>1lzw}`EV-KYff4YzN%-xl(~ANagj*Kr_8IF(aum4;<) zTFb?9(*Jab>?P4KCxXjaH#RT5pfv335yz;zM=UlT05Npr?;A1rv3u&iqgHT4Us`z( zap>K6Xmd-zFwR3&8?yX5O>mhsrL_#=-5Te=!SnC8J%{8+pBXTCOi#t$*t=}cdf7<4+6iHQ)bZ-VzWtz1mgvV_?J zwM(aE!S3luR{n+WR?@e}o17K*ho*nYTYYD2p9wYy?Ob@1Ns%Nqt{eBC**a(61JOGr z_k1jbs7)O3RO(%Ck}At(+ZW5M$Jd24XcMR-?s8yRXy|+-mW>2*4X!rARLW_63F%Lk3&D$7qBz$T`Z3FCUn;+g$c`r7w^1o>noQP}h;F z!9-atS_1_l_%Gmd)ULfobDZxd)D{cnwc%3jbWW^)E0p$}B#jAvz;f^9`A60$=maOk zoS+KP+mj5W7Mq6|LFpnTK(~I(#OM&HG9)qKZ)>&zk;BJe?-=kyATuej8w|h)CeWW< z>{fq0qRbOg84vPCD@}kNDBF?_o{9U!ciUfykM#BK5ukNeZ|00xSdmT~jv@E?Aa34P zi=%yO4w@gt=6W(uOHd^~ooU_$-nc^UmtrN6qerBGP^vJFcTVBA`S>eTBRYX&GY~Bu z0&e#+QLNUYoPt1%jy}!>}_&UTRiaDUNGk*Z*&vh_oD1ef1Ycu{5faM2r zT6;{snvUaBk$vc0lbO@$k`xVDxuKB}Cy^mIHUukhlG-jigo(p4V(QGx*5M8;Uj$ z{`7?_-Sjkl!aABynaiv@Dz7NsNTwL5uI@9keqgz{W30>G*$YyXTaaen5CRvTfuQG= z(Xi@4U9V8(zK9Hyv8DDAv?5DR!ft%9(p!X4@#|S6N6%Jrr+Q_)aTsoHtRZ=yhR`qV zErA!`0AJC$jqgU$vFf7OHf9lbKucQ|p>`1$Vm^Lo&t87Sp#zh+u3fS(lg_yv=PWnc zOk{8^QlfLH&k3L?BR@In8h||Te-n+{$Nrfo9Q5U_J5S2vT7SsEU>Yts62$KgL zBhlO1*u>1mxs}zt<@KH(GT|py5f{Pfjtni%9es@m|IW+Z9Tb(^V!ek)60Y|BhC6sBmG~Go|k7ASN`;&&J8WO3fXfC;;XdY>*i_xIt zP&viSwcR)=QAVSklRzPdb6sxhn#{X09VbqCVhOEdV6>+n=Q`oxs%;AZqlBP~3+>rV zu}MaX2?s6+!O;vCcFXEPdqV2_M?bME;$7T2s_r)2uo&ts)O9LUN3-i z`T-!U9(>XR?B?6=Ga4T^zJy@3K%QWsYRpa|1&i%>b^%StLC5BC7<2RF5nRNb zzsO+4s=TNk>gXf;tFcN|BZ)!v94;cqtd5ud`HWM7S26?t1SEXP$dibg$44J%SS08n zeaYg0W}9Phj(aZwlm%pZw2fJi*GqeDa_qab z`uR#xDj~gx4C>{xhLR9bKw<#4INU6sWNQsyGUDClHx*Fs!Zo*I;z9)tBFEf7PA9g7Jr_eh7U*MwTWS8`+l9WA22wGA(;9O5`?Vhy8 zwKQO0XISLgS-{{Ey2Grx9MPt4V{Y6_Z9!jqTv&=w&nCU>M2g`&<|2DM4;RaVm;+PVY|GEaxC=93cdii2Dvj-(sQNgKdvihY+ja z^iT7s%AIcQVrl;aju-Y->K^zSC^@3UObAh|)bLFRIq_giQ|JD^x!0iv*hx=dG4A*5 zVi&TCw-si#(fdc>Z@p_!2#JB2Ax|5sH>{ufr{9#@2#fqOu5n=>vcpHaNe+YZk2E?&MfUlBcyqq z@6Xcwc85nYNE&ZT>?xaE{XOI3H}~>Aip7L}-63?ii5M1iK2!MEUNjp+>Hmf6`Pv0W zm$8&+>h+hrMU6jubr8GM2*y?32F8l}`b*|huQnc9kN)~JdSmk529*MQ3K7O&9HbG> zCaYPH7&jGISW4UxmwX!6WRWA@PbPkXUuz|5Ig zv5b|Cmabw*X@X|NRu84r11@V#`%Iwh5P6ZXnBsNGhI_=X-x z67W1`mI1=8>3}w{^^5Q4t3z8+3V28x;n-l-!@`V+jcDELU!zq;Y+9!$PFctZRD{vG z@wJHH!AuPqtBRzzu=P)JK0TbYVS%!gVy~Asx4!^Fr0S4GON|R7OND+$4$FXHq`6!_7z-_G{*`=A#Df(>$9xF{ zf-rBFs;ed?Fr@Q($tt#^bumzoEn%o5c3UNa;Ei?)HO!ucD$q>3Tlplrj$b|(p5cRk} zUCL=TOu1-4iC!*5qMOv=6d7W@<| zZab*3lva+Quz$P<;*uRnymEFDl^=p*gEU%-n9>;>Jwlg}i;krI0)r z^rtwl<+=giyyAps;a04CJMnx1x)Z?^OpvT8JADF&aLG-tX-u1|ljk0|G3myJ+XS%# z8}z@}(blz}#aqBtZL1-^Mz6O6h~WJ;OV8hSztf0ea|y(i#Qpt2X>Z|Pd(0&M{IQ+( zN6DkoGPQEO__Ov4K@%>Bmb3p}+JQVG!z8>r4|DPY!Y8SyCbav5 z#z*24Y`uBpW`&K`zHj(5Y>~ot)q#@>j9#_`7hLlD%Yn)N1(xA<{vIg2<6=FMV3|+( z6&q^rEkzb1@G~GP(F(TpHs;= zP_am90n+$9>di918HIlV&F?du-`Ih@R{=-+8x~Vx`bPOSsc>7cUaej!ByD<&bFqd=` zLE%iwQaR8LZowjpi4>orTqx9~*6BCXBB4;3(@w-PtJ-cE^u-yUz8Tz-JFQXdBw;%koIzXC2 z(ZIZ5oC*m~A3xW?yi}CZO+%&fX?-g(Lp|0Uqn-bZTjHJRDm(xRMGWK(7O&(4Cb<*h z_8KL$H~;`t;m`7dL#SMvV(Hm_OYs~;k1xNm88V9v^q|-w-Keqx#(AprRVc5zKXNnr z!^rw}#z-i5)K)k#P|F6OhB8JH(Vko6Ju)B0p0Kcj&EMYQ{MH3SRSG4_A6@gywwb8~ z5sQkWMA{cHHvF2Mg|XY;H+ycgr5|QPMW89VF{&@XvS!LW;_m#GMe{I;#SU?L({mUt zJ!wOqDUrAm{eXsy;=e-KsKFnjxDrhC;v&97&K1ifurYuF@X@fPwvH z#w?!9^qJ|pi3Gepcj<84*AswC)tAML4j23~G%gko3;$;gGSJO_HaX(}Wff1|evJ!5 z5jDZ6aFJ?I30gDKYABHumu-0~ZcutTpZTUoJ6L;0n zcnA|?m>4!w)4u}Fs*!#$?f2)uTB?QQ(XeY5yN+o2L72RGm6Y}q++3cUEn#nL8GGY+ zf?s8nDsgGjaw98bGPInEnmhMIO_DgYNkzuIMJ%6TkjLa-6?>FI=#G!2LxI4%xJ!qn zy(3eMv8$G=qs5Bfk=XEUxkFP*NTz+&Nht6W8dsC#DN2~Qydj6UwCI?&Zje)rF!C^x zAW_RjStTmzlTap;zdal@f-UB63kX$4h@nB^V0Xv0vkHoA=oE(%kqJdthA$}NaqW!v z#`@C!3R(}j`IH4_tx)5_@~oF5&D-V*b)DZ2>F2ccO=KdwhQuNo2+1w1Zu;B}B2)zE zxju|8hasBPK>-sQS(^4dPvpt3BWOz{)zQF@9nm2WnFCEmcmX+sG6KwF$H-VsLNnLo z)&%j#VRrOAf6L^Gbn1_CwMyo8W%EqO(*IXf(%}X0WH{vtkDy$5ov#T9s3RlxBMGsW z0^8y1178&wmRLT|jUt=|MCR7Gc<-39x1-<>58+Oy3N1?F_7dcD9W|}t=hyaFM*n}< zBRVCTfaAkZ8qB#rs0C!Kq`J*8tA|I&NZ-UdN{MBB6jDGAsMxO6TWqiZTF6H;x$zpR zONuGqMU6V94`WrV+cQM|iApc7bt*+AQc32yFe{~)sqgwZt`2g(pg($PL-eAGuP#%@ZdezRobsm=0Ej^eZlRWW?xP-V+xSXj`Ej?5p5So z`au1KqUEi(tBpj<651S2EIKa<_SLKf+4gX^-PFCR!gv+H3gkmvrg*DdFNRvs zA-ryO5pR&ZkE#Rpx^&c!;zMwRp5yyE*^2bWmGb(I>3_e0my1B#eN9_cNbUtI(RKjI z_zo`!A}8ueg$}0%ZI9d%*rE%;y!)Y8r#HMRqZkYo_5yK9y^2|PQuozusOqyJ#|F^N z2WzXGPcKZmDlQ_r|Bfj)B1w~D@0ThQ-jV)pmgT9-RR{U`@RV&Y6Oj@7^Q_uc>!43s zx)x2QVY9Jr*7OI2(W9k{4(q>6A73UG4@3-vVW?WzwZ)tB{ETacBMt!!cg%kDhXVyD zFUm0uqmLeC?hBLmOkLjX3odXK8R8~UJzFZnEdXO zim%kM6a-D^zBR+~Q#gs=8}v=bks|RoJHkGv6z$x3rgzCbBw-)=fQiYY$m{o`&2H3F z9~;`4n^Ys_JHNLr;iH`>&<(TXTu^u7KrQ(zmxupbgTFgfmmlh9Un$`{7L? zJfY_Sxqu{N*n2NDlpyMt;f;M6{xnk2Q0_M?9KH>UL;;^W&zah;3LC8JQN>okLnPTI z>2th49%N>2{dg`YyJ!NNMZZTZ68D4S*X`bZkZV7iJ53;SPRI+uZfdq^cwL_@r8J!NYBD*b>AZKbLTnFuA zKDc2Gbjj4|IUYww)ldXKaPu0Tw=R(lI?(8o*ozR|Jt0|fv)ej?D|Hy3{5#;rC1PyD z-sF;&o#&aekioW`I>EYHs5tyGO*3~mq{yowK&}mwNb_iArMY_63u}YI(h0f02b@sb!VZl65iAQ#tyg^ zWepd8`ovwYlmMKQ=%@KkI3bRgJO?KSe1J6>aQcEz0qD1YXBA*N;Oba*C{B}Z0 zRNGUkHvQEIqJ2$1F`?ODA{$|_E=zQ+g^nSEd6u#3{Q-?`O<5V7P4i)>zC<#L5@%fV z-(~Io7Gp}h!QUcnU(3E8?aC%~@SD%{c1W_Y5s|GIEs~{NCvA71Mg^nT-i^`qt!XAd zGqyg5%ek4s$|0KSDm^G=)wD*}99wI*ykq2RE2n*uX80s_4({Zx2eDm zC6cgizs+E}u~bRi(+;Dg90ntFg8+3CX<>Gu`pp~M@o>13N>6;VC{IKo~%qxl+) z@RsLJdgdY-+R*frEG;cRM&TV!a2bgz7B5AuY%Bp{4?~ngZ*&d&r&)>*wrA8$ro<=q zydBDPz)e2cOV?!87h(pgDs9GJ?s6n)Dt-5$m^?14`fRO~8^06?S_>`6EW+Pes;`TR z*!^6M#6FY|&KLieTWx@@xHSF>Mi-^Kn3QCar>9moZSo=_Nfj}d|C`YjUBd7}n;sUJ zr>u3AHi7j>USc&)Kvk}@dS>YdtJ{w%?Z4-oK8UFOq z3HzY}?h!D-ZeJ78BFtBy9Xm~i1P1}4W)@;ni_-CQoJ2fu4p<)!0*^CH*@{zDU^B~D zLnll=VjEiDTOx#+oI?_nbL?5_?~b#f+bd`fEeC;qveRjN(p#|1q$1t1LI?A41;fUl zmtnUqcIaCcDUb43|GnQt3>Vcd!GiIi5*Bi8AB$+l%tjv@qX&DR& zoBsbKAY*;m77wFA*F9(Z7R1T0qV{1sZ{05dQW%3*_bx*${0q}ab$Ww+VclIto+-GS zl(=Y8+8&l^9xSss$w(G;kM|Plquh9NOL*nU!I*2Fjg#>`W8Mo|SbxZmjx46HfkMWj zciDiwQZJiTr7X|1FxyHH`%Da2W+L_;{^Rn5zOlFyH)`U7V5` zPFb)Vc-*Q?6ITT!05N-_Mubn$ZJ#p)mJI^mhAMyDJAouvOd;(G!i)w2h523HHyo1v zaPGKH;+tsCHvWoTD;`k)XvU8ONjdB_%k{RrMGoxP`WNoP#S1O*Q+!f-octaL0!#B3G z>c`yqZH*U`OH?5y-Jw&g$#3>Z)w-Y7S}~eg6>2ja7WieF>LYDR;wWLvMRUVJG zPH@y(uWNINri2pv4rg)}nn8@st;3kH1~~)ct!n5HI94rn3@wL0to35dd}x|M1Qh&H zws+7d@b-m8&7hIyg&rSo(KKDpmv90^l2=|vD!6{05b?8ei{NC<^}kpt#b7VY=0qm+ zTA@@ajeAyNb$>y?xcLC@2g3~_i1Uqm3*T7tKCyPvHE61O?{Zx>5Y>E&N)J3E@zg}PNXp~~Nu?)NcW zsKw=NHRn~W#!VLKTaWD*vSZEzPRgJW{O3e53(?~-@5o*^ z@}#1Usd=VFc8jaO#&j{JuloOjx9*#M+r{aHQ`FGOR2)58G&=cY)0{gTzY#Wy;~OQL z2>HFz7?RM(lj}C2lF?@Y_*l)OrO)bw*#R@E0i{6|r;g%-z)%M^zL|ZbI`zS}?m09E zCnaX}l|uclYFJoMDG?dXWO1fq4t?6G>cuFD!L^i<_OFy?!-MaR2UVVwHPZ#hzKq$I zk-%u0zH1VD%j{v!uj5P*3>MN_`oR8EqiT)iF+i+@2s# zVhbLOUhDdhIeELD>~7FegFq|%fU&{#Tm9=6@2-zKvJw=O(wxm13&dFcz#g3z z>eUQ~oP!ba8bQcqEg%Ml&sxocg{D1T#z}C$;O+{@(vF)wF@Iqwre+8cIn2ND?p^%u>U5%IRuE)ao# z-Hgf5vE_ym$FrG{U9wmpk78ZL#S~E&Cg*hC4W!|do9mPYL&M%c6Q58-=I($*V~j+C>4M_;lDZ=@eA1(IGN!~QV4})!tKFo zQ3d$&*D0ZlS$~S5r3K~pvvjY%abcT^M>B45E1TM#CyMV-B5d!Pi9LMFI7?M{g1pf+ zwds^bn>MHbt*KI`_7lz9qx6OjeHZm)S%{VHf=Vej2lK$)7s3+t{XHFE9=DJ#G{=2Y zE)o#p+0vRzenym=eDCO#+2jY*132Z}G~1C?#rC`pg(!2p4G-2TvFy4H8XL>gRhx0p z36iqmQclAlo}LfHqN%u+hb8J@bt*#m^skLp$z1hdB4kYlv|$?xN8rzeUo1$+C7)zt zn5!~?h8qLA)JYLRMLJ|?5O!uwic;th7U9KqshJH^IdX<4NkrT^3-<(;%?u7i?*2CG zi8|1n?*Z~XB!4S#aBl_5uvdle=cYN6L$!To-jlYd?^e?}Y7un1;p4KW+S`o%v5BV# z>GfS)h$Q3B%=Ewx_Sf^}YZ5XqF%egC37}b4zeftbvFb4^2UWj;i zkUwi7*i6qhYYjYU6pMYD75I=U*jK@%vHT3;# zNMGGBAT4VE4y2X&tY}O&wdw-qC|OQ;OA)Hr{2g&vUo5z#8*po=%)WQdkx{yWoY;MF z2=nuo`i^c!Ll6TaejWRA4dmM3ogEL)Q+;A77%y9Aj*V1cW(gsC)pZZCu8|8t-Oq74 z0i!)Js0w^sVV$m`<|D2`jnx=vj^P71cDuLkiEyL1W$c+H5?QC8=kYB3QY~3ODy5if z6jF2OWWaGkz|B468A(5=ScYNqIK`FYv5ILP8(S}Oz(N~_>fHGZT<#N(CKSE9xsp=y z-f`qsORnq`+&@gHxn=I>C2D7*02xJt(d^Ff0F8KR*mj<2b`4Q_?QJLuq}aL-f9)?J zJ!nh>hllG!XCIV=a%)Ukhx5&}um4*>N*t~a{sHt}C>Gov=KQ^kqi1ia0qx&zjgUwQ z_IZ`&>vrwDj78e({hzA$#j^*u97RQnG{dhn@<)tAKczpgL)em$hug>tKp|hPqbshb zSv;OVY7?6h zabIb1TAW)h$tmy}cbV90U-f!W@=xSw))9_?O3FIk>6L~Li*F}#HO&5o9Xe4gJpGH% z*E0QLT^hzD8(A7$@B=IRA-e%9{TuRm1KQPT$pQwT?#7=bPbWrb^*Vt!<6GE)tD}wy z#n0zJA!)o+=%)YW`fY~@pOq(xllG|3Q!*f|d9+AmO|EMWG0-pi&u7IsSrFxMv}yp8 zqbJH0qJQRTG;#)=6j8iWqJ!hL(8WNzxHe+U5x4w0t`r>qk}c~m;r(rSXkt%zdW4h; z?pw#bA(IRHPnWu?MSn!(v;TA%bX#q5+FO;rMM^o|%)+-)EEnW3`2LGrqG*cjQ-dWE za#*R_SVuxU2<|T352w_PY$U!g=@|z613v-FwonawL-rmz({f?nZjLeE=u-&U*<0AR zfIjCU(w)>0)fc4-k7AmqhD~T`y(CXx@e{^ z(`G%DTp&z{1pBjDUF>#)fV@Nix%M^`&G?wFMG5Wic2x|RUL^!_&a77_L^{d%r~uM4 zX)GfHL#K&;GP%!NkyDfl`FB`&XIJBsBTh49nh;GSALAb=X`#{0B)5oLrG!#GEXq4# z2d_DG!P%}GUJAgc4pjS_r+=i)`2_;+xN6(Mf*S!8X*(2~Mh-5AN7{4XE~;}N5I}SX z(98wlmhOnmYiN1rbI0vKh()!sA%)Cr081P2%1VSKait&Sdh>(huaRMCWbv^so~}Sm z;5PJwd%V@Rl9zQ)R97T{QUa-r9VyT9KCrV8_eqKN={B11YfwI#jmDw7FPiJ2H;r$0 z3q!3O2_Vp_WKWl-FURpq=M}$qjCaBE;MLvUI}Yb_g9Dh=7q4ZSrU6?Dh9*gk>PVOC zy&=}?LUA$wH0TaBk^?Xk5M71Rbc(`~q=bsMoiRd!WztthZ_ZBB|CSh?fbOS6FVkFwa(Y-R;WsS(<>Vn_NsrOcB$SgzE z3FYPgcf7@yT}}gqUmM}BXT;dKO*D48>oF&iCcTS& zah-q}!eC%DAy$n-<0=3PA{RU$QLziuEJT=k`ldnnP?ho|V??NVd;p-wq&wt^j(C?_ z<{;!PbGxHWC;yriuxAKuZ|W*y_q6HJq+ISPs@R$I%rLW0yu6vVL1bPyqr&V#zH9P@ z=*NBJFDl;w8n`!OtZ=iO$ak->Q{yM_^0n@lHL=Jf+fD!maUA7=V7_}4Ka@e`r{{Pj z4Kf|suqsO!?iGH*=JM0QW$UI0LUiUm!}p}oVkp-rWHFfzrlY2xC@7@s0IW}{^+I2| z&B&4OY3Yyjuh;i#qRQ?JtG?s5Zh@|6ek>qNp#%jkcgw6^KA?p@b9a%e>-!%Q{L3L; z*p@KXm|u+0oC9c#$+&>pCd$5qBiVRw1Il<=C^TEoKJRGQMP^h#1Q_(bO-@jmS2Mh0 z44fl}s%Xe!{po^1z*O9vvo5(sYp|QA7>S?A&R!<`ukb*X%3{p$S^=2?n~xnc!ZL)V zE>qY*K#6jtK5Z72V~qRKxWD^ZuiQGdU(abK?*z~onJ`*h=4Aw8g$uvN82q`qbu;Oh z;Xa$Z;s|Wmss&wsxx**BiUu_IH(~|bsJSskjc!CiM2ccP9BQ zPw;$em83K-=DOJ*5C>H(<`78Tte2^dyvz2hJmn%y>jQc>ry%iREm*Sui^-WdKL|Pi zahCGySAR!E%*!i+gbFTKox7RdaIA{FJO*<_nC)Dz96KS=fp3CyN?uVk9kpvBGQ0|Zz^EUr1%{M==MdokE_#rEVmG&D+}CQm~=u*1`e zlRt_mj0_z+&-p6h4ysdOc&AUxN%7wsKd5XvC6Mg@KdhW!6iaL0*0KhN3KL3YO^=@1 zCISG}^<*vs#*s^zO6`Y`^Ak3G`|p#`vr)Ds$=6D4mURexL#?d0$CapB3Qg-NCosbIj;EW_Cm`wKMcCPL@$liE3bca_8+0stPcuvbraa6#3(V4of>BA@|mC1SKy^15OL!nIUmuR}kD_@7m2fPgbvU#0q0^fyK-CVNV*5P#+v zNsB~QF8j;F#EUPns4nMiYf?Z3$wu)dATuelJwTEJc0fEN7a zl-=j|ZNFR@{zDgr<3;GK_hi!DzaxNJ%xt#HjshmFYWk=h5MINR9nXqf+kfr#@^Z{C zy707+`UOx6CU!(QIvq80c5A_q!Aei6%RmfrTu#+K0Y6KBl4dt!d2BNQTn4mn{%Vc5 zrrV#PMFbNJKjr(Txq0u$B^J@2} zecTjMCnapwn2nz6f%uXa)6a#S9!jj?gJ>W$m^Zlr*{0*oZ$A#LB5Lgj{plBpiLPjl zTYitKPo;~ts>&TSAm|A4oh(rvJmPY09GR1UB%TK2(m$V++Caei^4$|-^+@+v)D*p@ zts>h)DgV%sY=-8kA+?tEAUmqwH(*EW8ToDSFH>kfKIca-sO#S`=bW7OI2P_*iS7|P z7bzX`s`3lrLZmP~eP{$d`jA3|wai}+!I&M#?52J=)#QWOd(_GU59eg_6k=|&j-A45 z0a{{pL~SiC)LT+bY58en!xYqHDxVc*NKuTI#;k}ET-dT|f6Q14F+)jA)kmKbp-u=` ztWs=$yDs)$A|0COk=z4Z5Y*uD@36OMhrIPS;PHW+6%v15kj(z@$35QjW|{JS>;Q*p zteSI)h_w~mF)2!(=6jcpj#&MGF4*7R0pVupzG?9PyK1FA6e@~o>pDD8gi!krr}-f9 z9vymI&~B2ly#Rg%0E%6cVh0u-x3_U-p*y<0i*}PzCmhq%xVLrZvFWP{!{L~*B1C>n zybFHV4_fu>fv4?Xo&17b8gQ8K#&GaRLw@A*Abe5poX0eq0SBk>5;^^ldsVr1VG_%ahXLlMk@elu|AEu%A2JxDP`Q_yh#$RJnw%=Y}|pq zx0)MrO{o&7lQRG^Y^TJ87p&&JuO*R}7&4yJ=Ian+0^&FI4X%$s_AVy7JIkAzE^YNy zzU?YP>^?X#(h}NT9*XYhYxGJl25`y{RO<(4=>{sD(cKA=f|eg*K%yNlQf~FGb<85I z!PEhVZMyO0?W1Bib#h*oJxzRMpY0E=KgrMF7#->jw3$9+Aycc1qR9*Jo`YcL4AwJ~b1`zXw{-elBJ!srU z_M`J%3o7BEKFp*6n8@%Ju|T5t%Q$^d5Sy(xDjR=7V+~8uQ(;N>IzBJ*&TVfeMEA=s z_NQ2xVgW&V!8hnpfn<3+FHJ?}86TbjJ1EEQa+qGw;oAjUUAvv?nA;mTXesj;fX!-f z-IC|Fl;q8v4ZhpJjVA{b-ojp`w_psU-xm(`@w3?)T$K}i{MJFQQ8cFnXX4nzT3pr< z9_Y(*qnL@1jWk26-0sVH1IBKwKoG|bPc!2j+ZA9}P-_-|9URB@F2!pq((B*<*ZROx z=j=|rRP6eIr9X)4L;3U>7>}U87=gPSlTs+J$@FY)v~k1+=2i20yYe);K1E9qDUJ&q z?FPUJK1S!bc2ZFRWvQ2|8x`R^BOywna2xF5`2qO&pS%8Anq()<<@5WMQ?A*G)_WULmS8 zM2F0VRiSkuP?sXP9ro5zAdf4r8=zcDjPrZ0TXi=T0?mP>_>SK(G>ZkPd3mS=D15yi zhk$2c6^saxyJTP`v$MX|)alVWEgE^vi`mXG;(F_xZ%o z^fjjewAb1ea$8{p%lZqBzA1nz>sFzJrTg7MQ#0{dMd;xn^4 ziXr2qCnf6oa5p-kx#Gno&u-j2Cc+-eJtJBju0G%V(Y7t7Se?ak%5J$%z6e1DVAvCa zGL6pN85L*;%fJPr8P8(STGbcDTcBKf-?QKiy6s!V_1fxUPJr%NUFQeH<` zKS{h2;OVkp)QYu>*MN&qup8V_u_hmVmV2B&YX^7$E?pJC1WGVzl4m;@SbAcoN(#&)w*5tunNijP zLMPWST5yI_Uct9v_vLzV!C&RaG{}_;-F%pa%4^W68UxgUYJrNIb5vfz!Zj1j`31H2 zYdy#F;#@~S{}QnH=@YFs&MbRkf`DPDp3YFGqJ}4?K74pX{So zj&6q`Emh1JS!gSBh%=|}erx=I5^CnTtu+ocAdCL@=WU5Z$-*JfOk1V7`T>W1AL}y8 zuMFjEUZJ_eUSH}Y$5bZ!+D`J2oB;G1VXv*%i$g$-aU+QxHX)+q{iKLe7K}r5(P&H2j7Pt zlg(?r4{onYyai2k+8DF7oiihR&`KC}eh~L`KMvY$0K9w#T3Hv%3rxanFK-%?prdeu z30r^ppnLSsp55IhV8bf$2R0}3+hPhY!9E#FRk5tTq;h$0{C5llt!`JLLclNdOD^BF zp9H2Ira54+&Rg6&Nrv37oGqCfQ9t=RE7By+7SM?xOZCtArdq#_#;V#-%srqM9%TR;Z<csB)FKx0xFSgP+sPCnQKOC&DwShfslo>yWF zvd6Ita*kalDJ%*p_okGMn{fSdTN#>)j$D-V!ss7DEV#FoFUfo*C(pU5iczFefgESV z5Ss6pMdv_me6C{pmoYKLoK=vMaAx2GO>x^84b6Z@!adQ65Px?a13Q2L3PRiSh10AE z5?Vj*q}l=ZfWPdKtV$(znC z(WbY$BQsmlS(|IR%%$Q{Rt5cF-Um9Km%cRb6MNCWkoGvr!0?cB|LiIxI{D5b<0i?t zTyq$GDmE#1W-py!`_}xLXocKz?Hwgxcb0%C(YmW^-&LV)nzXBicluHG)HodY;(q#! zQ0CRGo{ImFv8``IQu>o}(kGf0Fwnux=|+j?g6eWQK_cm#(28 zi^Et4!FnvEBoGGw$r`=!%8jCDf((evYR25V_kI-&$nS5ybz2+?&a5`nl|KKq)7aF+ z--u|7E6y&X0C<{n{%hXSQrRFj%b&@1AI8fJ*}4A>rdA`;EmiWBdS4q-e`cUO+pSB^$yjEQ z%21g6jZ(*&Bz@#X675|Oc-&BTOlMFlrOnx}O%_drp2~w{CK2MPwNLM-IkVr`GmPgy zzHt9fS{)AH+pq0`Z92jz8&|m>qHc4t_0pA|8&#$DA9np>Pi3ne%TDcUJie{RCg7wF zj6E+JEEKYhzdWdtA&8O^+_TbgH@DxASd`O?vLi4i-&B`b%J!vsbl%r=j3fCAV_!-H zX|-P)$}C2gM`CJHAKRN)|Dm$WnDE!#o22YG|IfAFV^RATcIX*u#mGV}gT3#jcwv;N ziS5ji%48qJ#hMs2N#p_z6MyaUwtoUT*?y=w=XPcO2ku%=h%Y87Oi9dTdmj8&086%T zZ0?nELV*!Ms}`eVk`cv)b3QEp34adWW+#IQKLDq}dx9q0<7JWI{Kep z^GXS%k_-8!&Xa~~`FgX+uEiAGj$Q2vEScpF3c#Tdv8(F8(j{Jsb#ae4Dh_K?sW%xx zYG2c6_Sv_GeayH7Lxy?}LiVHPVcKhoMMyQT?}ogXjB0zH4d;Rr={8M?M>Mm&@KOEGdU-4$jZ9&?>qPa;_ z2kkE2%5))0d3l$7>>zF`p0k3~f}}sHn^%Z(hJ=tR+SqgR)1wm{>Y5{%R}Dh*hKmS6 zs)1enePv(*sMa8QUM0h_jZYb@(-Ws8jbIW1+| zeD;fA@3;rPwU2V2y(MbbTqXZh&M1LV z#VSV8bwBUIk;v5Wm|{~7mOCVqoyAHLRnXXCOYF?X*jBa6v}D@Ck~%@Xo1~MR-!e0y z^M@hAg(gJkY(B8RNMqQss7}=;qgc=kX52Vx;pA{uF7ye{oplNgD!j9zL0|?2Gm0YG zWW@X00U3z>`_YpOb3Vy5en_wLtR4Mc>_#qz@GS> z;E}I3Bt~4dEve?{3krT{G&fi47Doy)Yj3>4_2Tl%ti3=R7+BK}bVr(R z*$DW_f_*i!riwZq)D+SRAQ`|wH8;68HTs{?a+L1|tw99SxnC+k`M`k>y{~wNFfkd&hpwOG5BAa@lG{ z&hQA~`U;I_3%bJ8k6vt^EoaZFH0CL!3itfcvA!V(+fJhSfL^3?3zMcZ{vopg$W49g zmn1!52dM>(^ep7S8ZOlonevl`$dsu zRHHH{M{*05NK*mi%FYq%^?9M0dVdHPn0%xqV`Q|DBwcsH-JldOh~`;gD2% z1Cny)-Ekit0lQNh;?oKU0k>Jzt$aKG0t|Xbrrhoi{|JV#W)8*V=F;;b#H0#He~%HC zC+j12(O5|_bulB&dVupS5zj{-z}SJbtFq60ud& z=s2${9+VQ+q1GGfi~GsDD=g8_g2tw=G<*0+_rWSZoDMk`HZL^moB-b=g4<%L_=LG` z&%#;Y5Vh0G(mZkwU5+E#2KRc2u5pV84SsOQe7Ieds`GxAutaL~d#C0R$dZ(7U%>eV z`Hn87U-<#uU_{`qvffOO4c@c*$wB2n4_mtv``V;|tdb>hR%FJT5LG<}X<@B;3@6-o;~x29G1ZH{&0eK?%T#~ibhj6n5^XB4LHKL=9)z7eC=#!^&-5V9{jDk6cZ6^P-TGXaVWk#!{6uHnuW zkMe_ee7^0^fe2DC;aH7~fD9W%Oa*P|bR_=us5)LfjDxg5H)r634Mba@V+~ft~O2 zOXwCRff*PdvMVn~IFSGMk%Kd)3ie#efBS11_nlXrK_wNRA4`IlZV*=h|MAd@AyOns zQpahq*>(sMm`XzakSIgwo)bTgJSoql0KFP2@lEx){WAnK@(mGTh?P6^AUWK@xGsFs z4!YzFgk}hCbP>Zec=Jq5oR~Vd_Ei|?+)PmFV1iks8yh^dpV{!m{LY4tF-&Ot? zv{U_Ey{KASf(j6lAI&|!hfG`lXaRk`7zP`zgpIk(JF^`6w5yR-4f8d3TP8cAg{Zxv zNg?ar)$nnP4l+mJpmyt* z2y@I*b$=!y=(a;vf~ZDgAb{Ji0thWuJNts9aD#W_@({7b*2Y5A>%|>#wUw3j?}{cJ zXs-7VNi~N1Kn}wWO!b^gq#C#K^Rp}mXD44yuk5sDqe~|nf67)rw%h<^EkWg?YB`GN zlu?6Gjay2<%Avidk$}yn%l_zqrO;#P-}4`*ElCsQ3h-JyYCtV+j6YxLP#G`QPIul; zTwm1BtdJC`JZl}mCRVjKQGju9Kk5JhOd1Qra;S7$Yi%G48tu{(SWXVIh zEFR@y9Rf{pD>}GOV5YvSolr&bO3>=!_$^}{l}J=TDi@DoBlB6fq17Qo=SzPPvNW=8 zKJm++Q$f(jLgv?L%>^o*aX>R#47MWok<9j-mhE>Dvvlwr;NKGNm0&CUb+g<*G#m)y zGA{Twl#-ZtkH6Q6pkpPdSSmku%+Pdym(!rs&Ynd>UBFO26M?8OyO~EKut7j?xHmY7 zTZtY7<{BhHevw*j5+?>-zhtc(;}p`Q6O&|jl1P!?UsbEI;;0B5^ZhAaV zt1fKPxoFhS79ydToyl+76*t>DhJ`jekDF=Uk6(0kylvtE{h1zf!CN$NDdD-BVosd| zCf>D@`t*DIbia25@%y3%G5I9wlu}|IDYPzwfGwMBofH00{Z6V9w%FF^iG`Lz)6PyL z%_O*qz{ZgjAW7%9dCA=rWf@jq+zObL%JTIhgXg*RonOsG7RXTfT>@-PI=%{qQBiVb z$co(*zWGw0SmuENn#0nbTOmfI^4lcqaB3`yy&*^TA8(o}g+*5I&9<=g@60{$y{g%9 zBWFpl9v-?1bI$aZAEx7_kgZ^B_h{OYV|?kwPTUX&B1Aemk$gqi(zbfJ^a=@8cB7mL zIbn2FkqJ))7s!mb6HFh9Zc%-0Zf_rt(w+fi5N}XJm8nF1zPR!Jc)@4IRj+@qi;)Yg zC3{wSf3_lT3Y# z4zzxARFTsV&{Wgq&RYz>1_(zjV5%LX#ws_4=kgm9dc)pBgTFxMTpXI{jXsGXLlp`X z!fFp6h|Z{ty)~2~$U@x6tB6C5X$H2n;bYhYzy}v0U%Zm`1=aVt*=HW$evT!=g=~>^ z!mJnO(}x54>_k0H#*Cvc<__w)k~u~@l-~Q-0^nnh*nqyoM8SvU50eQ+F6$@z>oN|K zh@vDKl`CtYJi-MN{PC0bAiFDGeOC6bMY;-#< z+s={bslxuw!+5f8=#6`$b+B+Mq+nTpqZ4ClIL6y&gn5nQ$`sK!G&`edFx}_X z(!*1UU$Y`>INc!nG6RYG74N0TkdRa_sqvd_VipO7Grksx8x|iieW=U96llgEd;3;E z2=_9a8kuVUz=?>Y(kSKGtQk~3Cvw|ELk^#&(0elIhc!VOj0e#{$>W1l#CGZNQwd9? z>^;N7o0lW>Kl02haFGTdl-d6#tFFwG=tSdGbIR+-r+~KdjIRS}iS~W#`kTDrI(c>n z(OW&q3j(EdB|ud_Wy;%<-)0`E<{f1pZ|O$$(+gTN2K6s(3yQmm(1r8+ZCK_KmSzt( z=(fJbdY zrf1uDR_O*;QbTLb&9GRd_|6Q?8$0obg<~Gf8%qz?n&n*016k9P$BHm#WkHyd6%*a5 z`ZN4)eFxruT9$h<=pmprm0+$)LGAJ=&t1IZ+nf-|G)u535|t4NJr z)1W#PWsI!aLA>fH18oO?>m(B8!8&o(z10L(ddkCNDXO7;x{dD;p)QF};U~s{=B;6Z zjy!F>;Ii|Jvs136M_qW{*>v7Gr6E)DNIO7s#ezGoI^g|9-#V2ErqZ-RNSB>y1kGXp z7bP>HLn*V;ZbL!?LG3-B5q~BR&!&(=OX#wGhR3x|iaIidY+2`|#<7)0(33U;y3e*i z^Xf7A|B8Q1*@g-<|Lo(5#r&H&Kb=5*NB=q(Qp`~v?nMXo**%@7E~((CS{(Eyl!rXR z>Im{AM=)>Nq>5_Vz`9V4MA5j#oHfxk^iI8ag_CUhd>~r|XlKn8ws8ca6$Fbx?QB&p zHBZ@}Ad4!wSe>tw0bEn?Jey6aUbL6B0a60$5}579P+_H-{1O7D3sbO*+k_zKDWQ%5 z(|M!R=v)d@^C47*OdZ2c{kw zMF6o$nBT(NfEZKnN-$E62xMQusDhfUFjQ`PTL`(?Hp1B{@rEY(BUh0iXNRE4*ppBm z3z=Vw25KrH{Swf4)Yr?&V~HuVR*XWhc}E5^?#ds|5IhLfyvU;<2&l4AZtCboTxgG5 zfZL6`y=o<7$vCy6w@$o9FuRJ)8R!6>ymYc~`sraS89!&!>Pp8E1RDK}oFQfE;%St& zW0XtdVwrxM?jr4cYre1;#_C2V-1TL3)=OF>`KAiD_sX3Gj0Mi3Ios(G{~reMv+fo! z!kK%%aRdjGxn*`{zyq30v8c0UkuI95_Vjm5GE3IKb{~gpR@SHs(z1;r&{^P)9`PQx z^~Q{tcW74-?}Wrxh7Do}$oe_(@8W9w$G)K3YALP+Qe~(J(f#bRhmW2d3YzZ(j5L~S z@Q5=$$Mh%ch^9?5w}~EuX<_#W081E(YHI$w{^96kA<3&pHO-xoTnG##9b|I)*4c#+ zj169BUGcq%rqg|FR|+R(5E^&pb(lyNwJzyDR!qvH1K{dYCLS3}d0sHp6@qB)xnue> zjb|5?069uI$sy0EP7!5pXf?+ii~GZEBd~B=^~q^7uFcHu)bHD}rr!KOd>Xp?!ecsI*c@8e6P-re zi_s7EO#n7d0?j_U_@!w+ts$-to++Mx?0`;~$ zk=Nq}Y$f0@gFy+ra{TuhQA9*{Hy94-nFE^K5GB4wRcOpjoFk0=p^uQSJ*OSa3-*;3P}boBgo_G(0(#PCleF8d z89-=Kuvl^&kUWL^GJkW^!k=2xb_RGdopG4Q9+QC?2OtaegX3ivZF9gdsd+np@uC3p zDXUW?$4nl%5yXXZ2fD(YWA?BC(i= z{u`aZH2C82tQS656;c={nZCC4G!Ws^*w@P+U^0+Og8=4o?byB}oP`e8CcrXl8th## zt@2vqe3rIYc$3L0M`pKg>n%5M;K)bhX#nWI?pQw+A-!N%;8)C(f? zxNkNJD88>7gPPM)S`XE_M}<~cd+Az~a@p^{vBzcXpKGT>6~cW%)rE%17~7>fD|Eww z&li~7EKM9^_w04o(urx5@W@bBb6oh&fuVi6phpcDE}P6or{+(PZVKIMhb_gf8@xTd z7QXx=9@)-h5kXGdpjwq>lclh2H&Wne>3^}QY6h^^i)^t0Jv;Ft2HXPu09@BlIvyXI83PGj4*?mm%gA;FAU29!zJkMETUb#5Sth~wM3npE z*=TODcXgJB{#Ej51zAqd6lYdzuzBq6@00Bmoop6BU`8q6k7?QsVnm$$XAwKx$}G4hnC+qzs@tcr*R0a=feuCuqex)W9$r-BtlZ8Y@q?W1^{nQ1~o^K8cM; zoR#v^|Fg*8!e8hZz&6QbVv{M@l6BR*4>FO#m@1f_y>vDj>j`KHpT8jpk~LLwB3XZX z(glL#z)XS*PpV9Kn={&kuhhvbBT`5P2!FN4B=bi&0z4SLtAk(b7qo5nBhznMzX=^+Bg;_qrurd~-_MAltXoFtB{XD3Rg1R$NLztM>ei5c z`t|?q?dZ!PPtQDNW+~EForCe8i?O#gIP(A@Qf=FCpXy43UI24b`KTI8HaU<0@Hq*@V)fDlrzB?-mXsXlAfuw3N}zsCfJ|N&)NbX zNDnvX&BX~P>oj8q?&o#{x-qryc@Eisqa(>>MT@(iftjk~H-6@(30g0nC{}jZF!-bBu^&iEDi8 zIjI-85WsVX9(v2P*Vfcp#jxtb&WFoEOr~^&aR1xt^r+_Te(A|DqZucVJYS%VRO6%c zD5z~(AbLnL=VE7p!bdOF&PmRyi&Ia$vJ50rDJ4_-f7n1EGIAz+vrqr1-Rj7&FOX}_Vk0JClxK@sxNy-< z-}iVmsN>=z(fcu8s1yjj5)J->A+rTS=wKF#03 z{P`^l56rzah^+F=h>7^d>#=-tl9a#GAyT22qTxKc!o|#fc=O|0n^Zv75F~-1@{4KE zheS+I$=$tl@yJOpOo7ewXg*BdW+eiiuaW>>X^AkW8TA!cser zP%B<4a|BVWku)uI*Wa`U4^wevzzK@~r0d_bG5yMg)R8S8Q1?(sb!5huE3%|+3jaBX z#sGPVjOOiM{bwU7y-}~(*2a2MUf#9qCbo%&(PV|IW4SRyFyW2ByUhW?@SARVOpg+2jZWY z^b>lwHd9egPcVfSf=q;&QyF-kHBn@d|5;2$sws#z1ZGQJx7swQJW6g$x`n+Zb2s#n zo6_gr-e>pMg1BLJHJnF#-CP!_4DwCLHO;NpdBj`aadSVshbz$~%yHCSuNBAuwZIF! z;qL`m>B&eMan=r}F z7hrRW(d%OG+RF=Vloer9R{n|-^r^pl78{@r9pJNY@Zag(8;q)u`-V-waUnKsItKet z#hF_EcA-F6+8J=c)-?9>;Mteq82gEID)G;R1@!Phiu_{3(FWsjrTEq^u+}lXQ{dr^sOIA9H{$rz`ZXHV74aYV9!$xphwBeAT`j>Qd)+%vsvn2ncMKwz;5*lMCI@ zKnB-ZKr%=SsZd_!RY#cHt$96-P8N|Y{Nr}1uNs{g!g2bia>K}-d46kzK7{1Z zp;a%LCNpX^z-jm?)Lcua9zcsy)ZK9G`B9o4LCd9$jNFh!U@y&aBf+ zDbo-*Sm;qxJ#8f>5k>4+879auW8|2R!e+l9x~^uL=X<6#(laspF@YV68)1ic5Dta{ z-$R2t8M_cG_(6nd9UkrqTwm|YN=xGwP;}r^;DBG-6A87R8kAA9sHDNGOEQX9AfJb$p` z_aZhNL&^YcWBZC&)v@c8($dPw?a?qql2A{AOa8jP71^Er7j?D~qX0BBy%%xWkvjjP zB9BuGz^(6>_^z#+Q&bb=uHre4(U9almst8Dc zNBqYl1`J+?y(ui;5mUc8DTLO^W%aR=4IFlo_!$J-`NE~~{kI+51zr@-Cp#Oc+*#fC zs%@^!bNR}R!YmqNgKDKVR-Rq>^fo{ z4(9Y2vR9^CQkpp?gYzOtFeM*iIje$AlHu-d67OuV>{%yuAp5@dAItN8a3Po&U*`UF zz_fkx;sO?r6$;XqGWy}b$ZrUN{~CYRiDXsNW^!ei6qF53J2HWkVKF!#Udz zlvQY&0oqZ7fN8W7s0TD^8)(8%2rxkF_e3|_UIYmZZjk^kA>B6U0c;x4Vh5ngC*v{X zYjX!S800!ahNVA)xh4-tAh@FB3Gh;v_3g{NtOmEzQRzEkYLdGfW=my zQ??Qd5sAS*Js2T8CK5!AgUA<{0zXHt%UZ(;Xa_nc-GGhGcwQT=h9Hg_8bk72*;1UQ z8b|S8@?`*&G@^8P)J$qXy-CUN8(%gvBK(3)LIHjskaFu?!^Yw5ADe_vY(|i;Phk9KPD$uUAy9O7 zVvjH<)chVEuxO{Rdbpf;Ja_&@{vXN=ZC31k+^xm41-y5*`*UdECrdifIw`-sUW>uPpzkfshCLrd~JH^L7nP zP}A1CvRDtBAoOl|nO@nNkuAmP#k=@n*+gXpl+5GCQWI?|*ddf1_mIlO3j%&Y8xuI| zE(DWf_38C{B*dwOX)*x(Su`nVNntvh)KoOIA^c)Lmp5jZFDWgVefwkZb-U9HC$h(m zM|<(_fm=Z$20w&f%{{yV7-PjWzI2^iJOeE$&bH(Vj*SC*MOr5ax@=ojUjF-G_t0?s zq^p=dp!b^Qt(qOf9JMd7&GULc$-IK@P7-`tr|aggph@yMdKY(P=cuBd)$s_dxWHK2 zNxCP*s`|^!+P(AJ*FF^QCK$uEaRj$u`T8qzFr&N1YqhPZ$*d?lN7Gg}7BM6a+&l(X z$IX!@ma5b7iaaEq9w1BO;T9k zMx^h|`Y>PF0?BU!*xx9xSN9ganJ=eB4%3%qUf3BRE=0<0FUWx-whbm!1q0yvOG0N- zAXyL+RuQoj$4WzSAJ2ugk6lkeZUgg9O5F$`DNX3GsMyCLo15iLc(3 zwH|M2=$h~YpmgB4@AVPkh!gaRfmM>C8D+H-nKJsUXO5Q9=z7N4w18Aa_*PfR545vE zhM%1TAfvY;G@b3&bN*kPzcLMDyx=@ZeXVnVN=En~fJXsxzur@Ew812#bo%#rGTj=L zkIPcqR91dgj_(wBxSXbeKxMM+rab|xF1`6cRC$Fq`Ki1QYi%A?V zMnuRF@d#%!-aS-X85-Zy-8eT4g03c*M{WbSrI|tf8%eLv&-<2^!%;q{X6E6i-B3hFP**;#fktb2D*~Hjd0W53bUaUogXIt7eGvK&%b~Kk zkO>SPC%;6)XkIR$c$DE}h7<9l0AgxR9e?99_Lnt#CAIf&PWtQ=%Q2N%qoh>75^4ux zg$Fv<#h$yENty2#R83kn(gqbTVfd6mx2{(P;BJj_?W2Q<7mA2=3())$Q^Hq zmI2=DU~vBUk~on|EwC9SuVpK+>d%&2j{S~{MT#wW*bcv44@WaX2=J}SGW8Ii3d%7^ zQ(0@_QxS`I+L+XAO5A?CE&l#_P3|p{+3Hjt%jHWS+!`h;{JQ&-o$-f7Rojs4H))XS zW`3>PE`kAi8y$`a)+U7-O-PS*rwf9gNUl$lm9Q}mvd7w(PKj%z18r$Hhb>L)KQ%cU zK4!ogtKJp8m`UcYYPOX9uwM9urut#K%v-1zymCMQWv>xi)~aqxxpl2F`zKtI?9$ja&trZ7`v~e1 zH$kLR|E;hCP~MJCr~p+Xs)C^tLp%9Kf>9zK*LCvs;3vgnIHCsGJOP(fXwwMsB0lBx z_p2c7;{xoUuwls+BrUI+scQT3Ge!hk0e1T8 zOJ`~^m`rB^evnwfmTd+h5s?uoCugVrmQnp1>8w4p7j1eR${!Qt(& za<%A#QYX$LSKjm%I^ggz%I7qp zI>C3S56BJ4HHMC_$Zmp_r;347a3SW2h|X-|W`66qjOSkEu|DrZGT zi0`FbYCd}C6EDP=x_goz!LQFgVyfi_RP$h*9I23t$tj58Dh!em44usyO6tJ7pQDu} zbu^kc4c-Z~L1(UkL|o~aeK`=I!P%Ucw#VzyeKIR(I;jmlJK_rOQ|@&_3wD#p46rp- z&+B%UJ*zLpWd-rCDatMWd*Vo-DqrQhDw)~&!J|S45Qq@DhL6EOAlrwI6vs|TdUbBp zpy*18eb@@K#JoiFoB{b&Etf|C&C-OL>JI&-rnnx02vFA@^cd>BS<|Np<%7iwmk zqDrh$t|lU8E*CmKyJWt~p1IOwB2*?Cwmo>PQ2jWLln zcdcjfTY%8zPXd<9>CYR54ob)|KKMHv8ezuv4fbyv^vvv7cZDXh2JJ z!@Z3-s$YXCWs!^oJ0*h(kwwVMLvP+;vXkJ7+6hu}yE(L;$2=T5t&)fG{ z1gcaIj{Pil+_1UR8>Gt9GI6vcgJ`7X4a}}zmkXgC!%nKFg0$K=|4IBL*GmnCLx?9z zcdCCrjH})(kU%qwiSDB8ixbiQic^LQI#YGmkf8MC)mXE>GS!rA>iWBK2b|!(NHCfJ zGXdLHB#PlB#zP-}7$K0^`&5cD}`&U?&iULPXg?D9r8%Q@Nv7|k?npNoH@-0^kNm&MCrWg1^C*J?| z)5IF7B4xsi%4dq`|GzYiZ*Fmg!1dwnsGN`!+Q}pjo2|8C`G=keg^VY4vM!_sM|mZhmz;kf zcJKPw9w(h?m`pqj7#O{!-i+m3R$c0Qbm4r{*Y=UB8sMXx|D49YB0Do6;cG&NCpxk; z>-xK+X$E;Xm>lFWtssY8t4cg`V7z<|c~@F1I0=`8(=o=_Z0Jrsg}``Iu*pOVNTnys|1ga1p^g z-#!wd$au<0>5ly=Nz_5pL5+%!M&Zl@)NaW8jGZa$a0p95$dFU0hMg?9-T6LbJJjI@ zX>3${_*PwwVes(Kdr$s^d+Pyv;J06YCp#@gsh>%v&=KuP(6 zr6g$>nXrZh%D!KZap@f>)ZeSa-Kj(4Uh{I-_GJm=cVuLk^D}Pa}_Oj*(7wNhV1?KM$jI8<$z!I64!N%xY&xoh2IWB$$ zhL`%=yW2KMrYOF(H7|A^9Jcw@g2z9JxMTR7NYH8%9L=VaQC~0~8nKWEBGV19uOD@lLX5UogL#E66@tze*>f(omXNle%*ko_AFW=?C`ctHA#5??CWT9Z z=5J)H<8s(ARj2QBYBCvy#O%4Wj^Ol3ZC3tBhb4Xo6F@MjyVIV{V3iifj|>TS*&9G$ zS%Ur3iBYiA$uVP17V;tc1lRFr^hm_)6<5wTqFjbLmWlo^Q4ShgMmt zfA}VZ+x5p&yrWlaSlPRvC}FF*?2OCMV_VtL0LH@$>>`EfpU~f}Xa6|#Sp+PF&)&iu zece}QgMN|v4iKa^B64$P17!;%do|_H&-@&VVX8jh5hU3CO9@UaALh4*+Ae}DwAXPD zQpcwhTTz6G@o*)tMqoUd&m1R8Y{(LM5))S$korGSpVrLR(8HXza#;$6oi{26&KX#X zWY~0@Rwp?9Kp4Fy0L-Ow?JcHaDUaLiK?Dl#0`A8@u@!$)!!OD%niy5fb5&_Cqyb_Y z&#@PwNWYpUFwn73lfs?qB7K4T7t2@FOsQtQObTBm;j>NF#QP13WuRN7|Jr9=vb~x( z3kZuZpv6ex?#j>#V1$dOHq7eG`>Il2Rd8f{Wu^0hrMJ`CZc=)}sFo}AwtC5>`-p=8 z1H<)EdCsk8-`#sW2c$qe8r@XdZY50EDjSKF;Vj4!H5bs)s)Em{4d0m9o<3Lzc;A>H z(Q~nC(V&qQHI&j%Vo_YOFJ{u>jaDW%skG=%Q~)SDoA&|b*ijWGxyETkkjqbo zlH@a~Z5iY;kW^M`Ze=Nl%|&gx?XO0Lg;l9!d;HRHy;{)aPE2g8^wOrlI*u>l_$OR# zMV$hT$dDi|x3+@L9LQ;G9Cx^sJ^*nQ(gu0CEs?`~8!l z22Ux0bc)SplE1d+wq5`NQ(I23HVGa;%-9t2nOd(qhkYGd_CJPL#V5AbFQalAFgh-b z{QO@hW7^JYGyOlbIA#WX`^D6?jwh;8!Z0D zgkp{FWBtP9$g{g9K(M->@9p_9L4?+=|4P8VkXGR^ZpXSWl%`nUxl!{NCLtG;`3X1Q zR4B54chpEM;gM#oSlmgc_u>dzP@Uht%Y-I_Uhoc5V>-Na_nFLaYShg;?I=RVwZ8>I z(|51{kg4!BeTz6gD#u)`za3w1avuGz-;vW3Y?Vb!|4&BYsIIR5cj=t;Y!Evgvrf$U z1Pzi3uyZFjV=?8CQS0DCTo}j$M`eZlb;_Qwx7?-J(5(jvwQ#9; zi6OmEyz|hBZW}keag+J?>&j|0>O|S$Pc^0Cc+!n{tR{7rw`Y6wPf)JZy;N#qQ8})9 zjy0IPMXce1)J8iebvF(;?(>U*w4evw8MxbMBChnd@js2h9H2?8UJh+qthswXe(*Bl1?GR8;iC+ua*HmCD7E6B;hqUz8&M-At9e~Tcnybcb zBBJsZm>gOUW|0~=KgEN=#9{XrUhJbWRCJFW(MgYCV8G6FNwj>WG=^+J@utp!S1N#17RKL&Gul=@Ke?;8>j39 z?o)#1C5?A3M$$<_d$^GbTF z&vDZ~b6cZkgd>xs@LbgxH^TEB=}p&N7A&QpYdN(I$Ji0pEG>(X8r+y%`L|)8j=~RG z_(49lE(m%{B_%5sjKnG+3^S;?1CR-g1qZgDAiXOkg04QElHle)r48&STV(tLQjhv6 z_ue-VYiZVS%`V6zh0ZHtKLfPI(W-uTz#C}2qOoE&@ZVx*C28WY&f%~_BV3e@wcCvWge|7tKM1ETNY-ZB`m zI}9m)@WHKmRJGk(3GXsybi zw-B;v3;k0a&m)sXO?Ow#v`SP2cae)-UK^1B7Wpf0!v2)K-ZafPn?)=^BPvfW&Z!m` zaVoi)^0l}e9sL@CDa!F&?y|0Mi0n(5Z^{US6m?8E<5s(7z!xd>B#_oj{cd+J1>ZK! zQd%^s;OVhK)^`o^X=?2w=fqb zmi&j7C#moTH%gtyF6(~YL4$PP_o4`?0V3fjLpep;b%!R>I^0f=-uuaQNbPx8fZB+y z%=yHO{I$Ipv!EVD`Wqrk$LNcyA1_qh@mS?BwYP8YimNr>i41R|s91&_$XmMxfZ}Tp zlde)b_##+EpOuPm$NGPba-2$$Oz@c|YUq93PO3?Cd}!c(Ssb3djp_O zUsHDi$1T%UZ9?(}Tpt*&?%htCssjk`YZT|Nf|y|j4Bdv$ejP(134JzN%3kd#VWBl1 za%$$kjLbT0;7ZKDy>KPk7$)`g578|IZvqvytd4;ymgw60C(ieb4zK360Y!Vf$p5Pa zXnzkKcKQ{7lZ$G%KVK%Kn|c7Jbmj|+S)nh+@}m8ZZ9b1Go|y*#jcLFLj*j>pvEv^p z5WZnOT_xMuX~=!qBW53r9=f5Ns9qUsS@)g`iHoGBXo|78H+Jd2*Ea;~3i4dNYUte! zLJwt8VTuAcxrWYY@WQDqWFtR?Du8*0;iRvmabI``c^gxMWZ|_L3!D5mR{^8|@05t+ zGb49!l`2NMo1_52AC8Z8$@i>&fS$A$^0g=1C2p9~nDsrp&(5>@#GHiA-O%U1n|b!N z99#?o^SsgEicybID)>|?lNod&SF_l>WWJ(w78XH|!gv115o}Ll>vnm|k}K4lXf2ym zx_8~UuQF`Z^MW}T8R}N{N^uSe(bfvDOPyj!QEab`5ID3-HEwn95MIZ$Gv%?Riv@gb zr5;AER9+t^SjKguw~F6{K;>kI&jc0nSYA0s&Yh@oXi+0oG(lCd z@4m>BvdR%5^pNN&?Ngt_x79J?phY^ng#Qv6fAo2n@&x9iWhSi>o%$}F(E^;0`-MA! z-?fxAYw7w${zRq-N&kLzyNIH|O(_)>M3;ptEX&mOs9h)`1+Lm*Xc@^1x(O!Brk7YC zN20HQn|k8=F^K4f2zaS6i}94uOr2pG)~mO7n86EkoDgRSkjaQwyJ-}+W2(4K45vf+ z#s=CaIr(cK>wPJx%`fh(zTNgZ^^G#oS3c5s|tW$JQK()JU z1Y!?O$0=tB^FuqLo!}Y>kyYZ}9j02r6}HgS0a z^w3>D&CR#2PyO*ny^o9uQq}D}5SMdp`hv(5-leLB<7dt6ByuZJoE^+NYVthQ_$~rR#;Qc3 zr+6Q>YK8%Me-Eb%&9Z{iyx}ldf6>5S)8l4EEhmU5qSDiIfXIK$h_FPS;-1I10S&s3 zSTs+{jzntvc{EGW7?~sb@^)M#v z+3J16eltV>+#V*?=Y#9Uqh)Udow23WOqOAf>4Xzx5wU8Y9_3M_Ix#@xN+#VTOE@{3 z-3Q7`fJo%dAMGo;3jn9W^O zl**V?ig-5OiRSl}rGMJkAQTM}^p?rM*pTWtl6HNsuR0EU84!3eDN%_+shIDG07RyvRIFnhs#0;=$8x{8RU2y zv4$}o#J1q_OF=mXXJXnS2z-S|7hS!7Nbtk|EZ*10GmuiEW=`l0?ANqA`LjSH?~GlI|J$vOdbOcww|wE!;K3eiz*rz}C*D070FwYA?PWs5wjD9W3tu$E0f{wIi$h+bJqoown;JBhfG#^D&;6H--@(PnVJsEJs= z&L;u?Xc9}hnY4}?dn#WQazXHxpN!pX`U4K_>!KQs6K9mmcmDf1N?}0Op4Ix{mi^l5 zrnMp4pv(eSIhLBHlQfs+VPluIi34?Gfcy|^E9Q!1@j5q$XKYzmA0<4P#x%|EXlUI zuyIM1OgQM{kSCwSyvfmO$4ZI}y`LWmlBnRnY~$T^2dHN>Omf8}ndw;w0*ZY@76XLU zD6Z`mK|my`vApanM&i%`r`fHivdVgf{cXGtm`c8c4!zhoj3d&hG`OYtDcfEBgo$uLj7L#Um_suk^%i;1o~vyUfDuZ+dncykNIFlVny)VjA> zW_4EE3b*5A%p)&qSEJZYGy>`xVD(f|EHYBw1#?W$_b^nO$6=>XyF2EH)zKl6)9I$SlgA5S;E-vs2FVE z*ycK~AMPIBxfo4r_D58!1!Y|?qrh4HK%5?+KSujF&d?tCnn%BH-e*BF7BmBT84y(B z8x^5^*0}2B5fdP0;m+Q_++^i|H)Lg@{+(O=3$d)}A^5C~(@{a{ODcuxX?T`VRKTNZ zTCPn;rGOA__s_gDFsG*qZI5fjthik6E5=|1c*4=rX7G7>%iIB=01(4`y8x*kYAUKD zVEJD}I+1GWG&XD~X-T~Naig{ReS46HP>)xwiHbJI>x)Bf*az3?qS>dX?S*$+gr_Aw z+QSircO~-FtELWzLb}P?9RQ*qrZyikVe;dywU|r$p=i~e`eci09(DlVcj#$t;RUWW zuwu=m${S{1WUoI%__TcGFxwkKwqS^6@N3SyRegK}&Q$48l)I<0C;*vVlm>$Odq@1$ zX(2PNhmwA9Kf7biI?2h<#lYstNv{@zR8o~4w{0tl6ISx1HFzr~2Q@}uybEP*Wcs`m zMJK30^|*siDC%|cLU{J?=M<*n)6od30)JVi2CnrvUybCTf`5t?+^Y8J^<3H2^A1Cy zINVRdJ&%{R^ugXF19MYC8vy@50Khx(EWj^zNW)eNqBDvSFlpC&IjQq|sL+Y;d_aiLf&vf<@V=_B6cw9COtu58G+JWsufag=}m zHY6m*YIU{OsB&kg+;00L)bY z|5_VkTFQD_TBtGbtOim5x4aM3j91iZ5B0|j(zZ-{KVh(%M%BCPr+ArfCUaOP0}2Jd zeiDRG9r!h>>9byibXDu>c>{v*3~3t5Sk0hn{EmiVUuRbcnwxv z!uyBUvW?$OGt&QLP713ua<1~R0R6Zt$wWw{sQes$dD-f6*F}qD|Z{D9yZP^}}B>6lH-AxMurOm=RZ{W-l9;f}Z?o zF(aJKrTNU{Gbo7~LUKrm4Oy0ush&WTL zmYxO4fKgvp17%1-l{5ZSmR*7soUr?(F!V;9p&Wck_jwS*1P|XhwW_MC0d}eWpm^YL z722*b^ou7pok{;boDWZ*1;bAsJvINnt?|QrbO=FNzYJ%6yvbpHnFQD$A=i^Iy)lKd zV)sToITZ>gSMs_frYc%>hTQi)$zk{X%yAg)uyu*RWG)H)BXhah%y*X|^=B$*ZJ)up z6e^c~o|>;scVO`jW9&>@P9|L@;nHB()Bzdu3XPwZpj?KUVVFWjJn4qu zDv!4yI36nxD4k`AQi3erj2@wfiwRV57bV&x`Q1hA!IHSI5KX167(}m&AcM0yh?h9( zbK#hAImg*%x#2`Q`j>35kAB#Qp7LekC{+?Az#|`JA52X(_8D9w zLpU*HoqdrwNh!2eR_2WCxo(PXnq~W{U=rA(Fi(27UN;r~*=0qLz>mAkhRq>Qp{U%y zxH7x}r79dCJdVoI_32CV-Om)}uz`t6T8lX6k71WL{6%Nd9#Gv4#$||jW+#pZrB6+D zjXq`9d=L~9JY2uoc+%f&UT0Jpb&cHqkt`>Q2zowk*ahxevR-8sJSY?%MYK{d|u205VFRAl#-!&!#*(bD3KE~ zfcmVxUUNA9wWpK@5iHTE*Dm)Pdg+NYz2ez0YH#sSo%t&S zaajI@6x{N0H9{H&9V68D7l>!Fq3qaMrH-po{|i1|ARz?m812xe3|&fRgE`ZTR~c}g zkg1k0ImdGCOelAaSKSihFl^&H<9Yxu@oV3w^xi#3E$Mhb!Vnr^?)8hYuq9M1b}nlA@JG!IJenAQzO*mmH4^ ziJ40bwlps#VGKk|WeCwsWQE~2g{sJ0^uy^~Dl`{~kxRZoyI3AqG;Mqq{&iJy?d_0=O(z znwRvfF?$Y4mY|*UWRHKtd&_u`QFTDJ!6JPyz!8N9meSC%Gk~a>1pZT~RzB8Ze$cr7HM^Q@+@Oq%7sAS?$4nh5R%AtFwIz^E~h zRF+Wq@2$i!XJ6K7iIoZSl9w@_ZhS_i>sNHl_YvEtVDU0eHf(Kc>2BUj9vr#UftP%s zc5zmNNMhi&zt?nYRNnOafBFw8em)zyulCnnPOG>uXhSi;e>Zf(}92;EKV+LlTQi)ni z2A^6B{Hn=O14rD-Q%9T_wphCs9;^6M?6SiBZ|2=yAD81V*e!?_JCJ&Og&e%flf@y3 zG`wV*h|XW(WfliA>gg5wp((~K$ki-yZA_sWTC_S7n6Jtduwhx_Ub281xT8*mJLS2-WPPW&sGhV5o?N?I4MPzfXa;?isUM*d*F% z&$8ZR0iRZ2Ewr(Q7CEWZMBin4K~T;<<@F&o!xxtf^{Jzc$9*2P5kGHaLvuZ#|3?c24q`UHh4{ENWxLyY#g*YQcF7<=G8f!iQYZ8oL6X3W?erGJGST$cD`D3%VoNeEyj7*j z4h8H8uB7-VSBqe^WFu=GaUn$xcz0Eoq{@+@ntl9=N~Lgxi_=Q!LLo^sTL(ftEnU%B z8x^{;C5_f{mt%pp?)g+y@-(&+h=0S!$=fJVcCKSP|KNni3ym_rORBQ-#3}Zpti?G% z@vP)ItPgz^Et~R|GPqi#Qzz!qklT2z>ugM;)0nl0V9aHUbEC(`@%l( zLRP&8Kyd5Ro$NR0E4`GR_{}WSD^Yj_Ay*+<`YaISQ{?5tLQX1H8Gf5T70*LO$aX!?c8pOXifX!)7FRtsXV!w_3>QdF>|o;s#P zEBKHPQ<$%Q_3ikV;!Il*uTj->fv(6dtL@d|N#aW56T3sZH$I#cE~Z<_6>T&Tnf1g8 z_3|>J0EOGcG6r>P9VI^Z%5h8!0(9bMi?p^u_C|dFeoBMV6S6boCl@q??Z{k}^4=_U z6aBqy8iSK~%-;$50CO>CjuHoyAbukP)Tu}k-)-R)!mK|j?)(ske90la0S+{|Oaog( z1F6(c(Y2DbWsQERZ(?U(vjD)nz098Qt1a~q~iybRG zp0+M=BP1bShN9qLU|0TTMCPpRJnERf?~IDSXn?kT#0kyHQjCqD0OnoeEd{-C|G`6e z)7Zt2ee{}+@wy4wRWc{Jlk*{PVLFaJr_BLX{_CL}V5rcr9)Y2jxOWbDYnI*xs0P}G zng|N|vR^dmS6@o(BQxi#!YqyY&@?PNUh9ynLjIIlKyGQXX+MDPNdZpMR*`FsjhQq@ z`iq3iS~m{+;0va4D+xzgB%DsK%aVR>aWb4WDY=ugaPeOS7m1LoCH-}qyG%@{F`b7! zk@5U?SRHljj(xr8Xb9kJ5G{{<5z+Q3k&I3~kfX9kR$_fp zOR$yGm?q9=Uj5qcB6vP=Crs_kAEmgTQmD4hka~vApa$2?p*ZEleT##83gL5?7+d8r*HA)C9rKzs*$}+V??|DdZ zrEf#qCg78=b)VsI+7t%(?qM(KzotaLpH1xinLgejDU3z+;JL=SLy9aUFB~vFpJSOM zGf2*4hY9-M^AtI(ml}jSBaOr0_6&UdBRoni&l21nkX_wujc60pT zY^OP!^qp73SHqfMF_<9fsnE?KWo+~(Kg1_Z(5Y6~?p$=19; zSAybmB*I85G$ecXdgh+Zy3W%a{b~k^Mm#+ReqI;^hHz6?|4M$DqgQe01PetyOg=3% ztXTA^Cm^O4C@5=|HF=WitYz>(KTds$q6^%SqW80p($5Ha$_)B`cPp&W%XiGJtE9LL zQ%0fVtt28|_D4u8idJyI@Z-2o#2k3B>CJ^HD}V&ai3(={O+K|?H`h#NZ8eq*E)Hzc zQLic!loiC&V8aXQQ9aVN)=~wC#|3GlcIn>{)R#OUbYus7MWzh%=E$_!9Px|9%EWq5 zRYoDX|Dn0RKeyTxdMbl~W*_05dlFG<6aFWqxYr)lzOW&Jd18WkbG+Q&teK2~q&Cf& zg`2Ust1+~4o2fZnhA0C7M`@k8Ft@u}%2X1q|1e<4cN~qmBSaRzwoxE+Uk>kdQ8Xe> z(^G&Zeq0mgZoH`~Ay4jk!IFSHgt7&5+%6xH1E=5}B}&0^-I;M!MTBmVKHjLw|9rm;}-YKQfA6i~xiba)=rz}gMzg}s;qWbO?$G3J_4HR~3qvjUE1>8)yf zc)Q92r|X^%?XU~`PPSG_yS)R6ENBF>15a5(4J0|DE6e4MY6wC3>`)kqSNppI)wk& z(umnvVf=$SR`V(3AC$OX*vWW-P=MIcI4x88XUFpE_;XE4lS%T>A%>-LK zJhTf}<(AqHX;bgmSki9~#9;)7k43AKwY7rMOEj1bcTp^-1oVZQ!7TXQ>TIk>u&^p% znnjWuX3^;hO%ZibE+7+mkZ;oa{%8%t0tR7TtcDSkfr4yWtAKpCPK8&wl9-bn`O?P~ zHT=M($w`n2HR`=A z9X3)xD9)k}v;#yz#pk=-QoGeCd?oq4mpV~;WF8woLiuMMp*~dX8Ia`y_eB%i+5%lTPtj3hpliMT`gzw~#kwPo&Ll3DH#8otM8hMAAvu-D$!GG3%2(m?L7M zFBryxx-}CenL_~o0%deLj-QZAX z?JAbwf&c+P^5{$)^4Bx4qdf+6H#)&+2hht>maQjsK9>I1_3}!1Z-zij%}nyaUwbCV zh-O=)y4eKS3xO@ESfTWZGsOcNQZASdmxZ}wq`BKCB=;b7z8z=uwOiY5zWSu$D(VES8KOtD{q zw7%NvP5U?SO##|1P%{&j^-z>P75!fWbbleKg$eF%n3O*@(K^d9J^#*Lb2hwL_58$<0nR)MmuumMhTK}jVPUMyB=?vsREl5VtEAPLWiuPH> zmR~o*#aIr+zn=crRq!m$sr`=A(NC zY3_R`DX+2Dr7EPwSw|SRlhWgsFit~K2 z!lNR;vYOPG>l|tszknzYj#=?)N>v$j z(<=+Q)A62dX?YfzPP!^@;rN%CQjbt`0_}0W`*{Bqu-uxE5kkPAQ0OjPU$JXcl*a8& zsXMoh2mI0zhA|YabW}!0OrSqaMHEOVfbd2;#dt42@}53k_=gUs5+2Icmh%ZWD5XeJ zA3SLMPxvjHvbA+I1>MBSaNtWkITs7shk`aLJtg`7@Nfr;eT5rigEE1g8qNk8_+*nv zUq1kEnxoLJ*b>UR?hdtd2o9jTF5R=Sg}m1Y8x9OG7+csFP%OFc;VZU-&B!OzK^wD{ zF~lLvJC*1?D7_`!4F{uzrbe@U+dFTZuy#wcj{`3aArwStc=dfNHA-0&()@l?tDCFt@>86~quu>vBbN8X&o&;nyhqup1}V zz(z_QItDt~Jn!f= zX9xaMV4z$2wzjo74L`7=_mA)6oZC~lxr)SQT>f@cRHi&qpSrb4RxLU;GeXXdyff`NhYlF#l29(hp{mM@}EY&oapglYkXzC!Cf`1O(8jNy_szc$NOJTu3 z(bCF}`gL%x_I68z$(wP6}?oj z)7qCLpzUa&`oN#1<{k23;?UJMU6MK6+4ePc0Jf(|LFLQ{$muc`UKKPskp+|q7QhE~ zU1eM#6)kc8j=->!?hK@}2}!VxL&C%g1f3K82JYhP;(3o5I~OW?IgSaAs*9r!pI@ML zh97cr&rjE*n9CDT;XEIF!t3#6-RSAeb5Oely5pj*5v6Ta?w5}M)p2KH=+P>V2<2xg z4#I8akCGV+md@$la-(*%6G$w|Vx>#DTa6UGz@eACKcAjxsuw+b{;87Fhunu5efTwWpWY5`(47L zvxI8y26(9LzLjxIFmV zfZMIv*x8;cJ7^j|SJ+ils#Benssa#(xNRG&5+Lo|lKI7)6&GP^EC;LtmR$55P%XEX zDaA~L<+=74OQ?zyNMPR^G(8JH%(!CzZ(Nop|7L+}sROO2YX-)2mFrCJby`s;;jiCz zQL*54l#Z%|mOhyE`p7VOa$*YYx`mKDNh#;I>*s8t%n$V@viROiq3sRy>3%3U;`}YGhe^{wqli0- zWLJAQc+Y9o;OB{9Il58%THxc0rz?sO(a2<&`nEj~&0@<-js8B=1W1Xz=S)`Qc)a>q z;?aDH<_EEGBzUwInvAF)wIMQ5JHV7s8m50n-#A|WxUM_?B3mEo=;1f!-7Yg9>(It5 zRg^Xh^a5iT9J%_{_)pvPB`Le{!6|5YxD0(MBc{HQE$;py4J2N+7^E-nl~}F4d6urb zX%H$k!YsS}$P8x<8sAplyRV7{`0vlAhtpYL;nP-fOn{?9`cWMwgOKF7eDT0G-=%_2 zm9dm}VbXO$TVx6YIywpgDT3r6;SV5c?;NqXV(ek(uXZ25qYE5sK8ud^BI+*5SVtu0 zP2!2KxC^W-!qFzjTV(C#G!WWdv^Ft+3@&NC)d^?m&YHw*I`0|^DTbC(_Avi?h98mL zeZH6J8J1D%D zNkFpIK=-F}Y992FEinGy4m7iQCYiC(Ue|2=x>S)MqnM-S&Pm98j54)7W+I98aPFH? zj~1(y++4J?3_m8-sFc#X;a0CLX{%l&bb9V z=|iAXJlr(W}%DQW%k`3&sHEyVsU+WJ`|He&%^c=%?C(tZ5RI2_z4w0tt zQ4HoEBEQ}0G5#xLaHmjeeOvb)3L?>4vjteg0c0@p?_=Nmudh`nX&l+VP+z}nyUS;S z@RyJ3F%*n0LN7fV7Y;GylJ{M)fe#iz36@tY<62uP#*+aZ;G3a>vx&=0FHABjaV=%N z*xzDW9^Kb4NM=ZF8eK$}EuXRQrPsul)iPxj<$+Z}*q38tZMfJ(xGoy}!c(4Fq&R2n z;X-yG)>`H3&hz61#}d2YS9ab@hsQgJ;R2ug9e0NB#XLOAU5?b!bP^d~duHctAE{)) zX+v?A(Y$W{yw8*BMqo^!Td6kSz@Y>add{W0EDt=hFi%9D#TrQYM-CF5(tnDJQ+_>@ zU0+%ZJpu}Z11cngxACFAAf2cq`MmFdKWEBGWO1kmG;Cfnq7|}( z3Ifz-Gn6cB8mfhZOs1=5>kY3>-L>e!c!jx|U_TzQgi$}RL}rFZa}!^K-<{}uR`)s~ zlC91*aPoO2BwrQng&C0yS#b&CsI?I?+Mfq^SDL)*eV#Lc*FGHIVTh;bl3!1Uw&PTwq^eix?y0loFp0_>(yAyx9e))lilDuikzG%(BDDC zsB#{^po%>3u2QxV<~yrqWb&M4(zcabuw6FNM3!)508hF?=?*y;ne2(CHtkkQ@%&k5 z1uPTUfV0Ph19|l9U2-W?r+t;_5d>e#9<0n?(O)5n5 z-G1i|;9($3r?XaAAegzmov>z0H+mCw=M}Gd#y7>=68FDY%JH` zdYF)51=FT5VShaE8ZD7KdD1pVGw;*{v3Z3}Ekqc((f2o9XI}XBalji9`*G`dq$K+X zC_yHWyLeLthuQ9Zf9PCfi%TWq1y!4npCG(Re+P%ZhqdG?b+gQI_qJQ&DUbP<%b9K* z1UR5J@db*`02Wc*sb>H6GIq>ju&y=DxHzyFWNjn+MKn5eU=o7aPKixN(^)j9%Veu5E)AaXz2U>P?g91~lelqSEND64x- zkft0tE?&5c-c|UiqM7QRQun>&P<@4?railk>R2RDwX__BbDCBd`4!$(WTBoep5J^} zj0_0Bgb?`(fe>EjSR^k3*}PhrchEF;xFogVMoAn`ZyW&V4*Ff!1a6k}V`@T6)#R?> zY7=EkK{HnoGKpducqb`UTh42XKzIhpvCL@c7jW8ST6p9VeI)+zKmq{*K+oc*VV=~WkFxy-gSqvhA=w(mMxJ{Camv!}|>T0fwV zJZ-Z;J;C}>+1DgUr`+GDC)Zh(ZH>5}tIF+;*#N}$Fzl!1HdGQ9>pn|#kWnc^*$$H2 zAE)}d*d9V8RWsPtY@oD8e0nutE{Jgq|H(B35+!!ZvbI}j;i9yXt{8p96sBlEP_NQ} z?$mDJMDBY2qV%+h{u>jF()7rd*_+1Qg=}#V$6^u`F1XKsfsoH$o~$IH1e7Fk4JwSv z9I~U9zO@>;!OKb7(@02D%23S0QM{Zp^$?a_gal)hZ!fp()C$`-2$NybBP{?pzIyv(}fGDK!&t+vGQ?9Iuh`2Z9mSi{#3xnt9L?rpIu?cE_`4E%HDQ&t4E@FhT|8eRG02 zNybM-C$-lI=z#LHuCCluCUP@{2P>tDLOa|*c$gZ)sWGZO&_lJX`1*q4=TXU!5|C_L z`GB^DFuFG{1gk!kfH&*S-HY%3N1Y!&RRRllmM;Ic6JsoD>yjn%b+o zo*b<{X@AxH#LL*O_V&0iWvrLgjCHU&$WvEKH`eyTti2jQ2R}akT-69Fw%}};y`2sC zE;Qp1^yW{UcLPYzAerN`%zmhy5v>1LNvrz{M3$_(+-lNR3;AN+A62C`yp(CMqJS4S_MTeJl49$L1a12kL7W*dtPSDV6*!9AaUmMgWZU zhp&}tpNgE|7a;GZ}NaScVQaU<4@Lc4B$-e=*poGlJ3M7{z&2Emo|gO@`O$tU7$ zDWyuqWax@tC$miJjE{Bx7y_V=3OhUTv``dvs?M3(C50%l?|s(3JHjywV7SZjrIJ+; z51c0`#7B@k_S}S%P)MX!2o%s3oH<3epw8iSzh1lPx0e_ zESq4=!udv$!hcxXNt|euASS@dsT5>#D5#`jw&!wz_(oan;_4)=EIr^AuB|A5RE}NA zS7y~3;vHQn!Qtw4GFuOS+cmN#%v=xE}L3`m$d#mDEQIl6ynFL`?tQM9bPOCDt zK|-=WDpQFX4AV|fGfkcO_ASzbKC0wvO-NT%JIVq)qnKoL7Bv5b8p<3M-jCp>irbe2 z;kDLgE)hMLL2+I{!Szs3Mx<^UJ%_HJgG;I}`qNv>r4dV0-Vip3GlaW*W^E{FL zX$eXpdq#Lu6RXtgZm1cpuYDgzb$O7nnQIHHcQzA)n@D;$VEdq&f5?^D^pt~ffybc% z1C*=ev0=lJ+l|;`DzqBNQ7h_bI~=>l{22{cdxu3ws!oYQIkawjZs>f2TaW3c5O35J zt8FuX7<{~Gt@RvS{>p@~@KOc7@*BH{jj00@ywuHB0LV!qd_IRJXROvrU6^$nV+rk9dZt1L1iHoS$b$%*Z>^vwk*#8O7%kRL52oB|p0 zrmT)Ap%2k-U1u-ZX@zjbvU#`fqQ1i#fCEhjHj@ZYc700zW`6P@09E*5mQ zf_)R2gt6C>U#ZL~t%_DjP`jfih+$_vX*z7>XF%^ZzKj2^OwR07szvx+?dvV~3YbzB zRa_>ndL2Wm&W!ysw)88JdnsNsvXyH&hxn+De(Jtv{xv)|?gc3A+Gi)fCoRnDNcDXyk|Egpl zL>x1yv3u%3A{ac3==#MU-?2~q?c z?;t4sWIP=4N5f7iCy%S;*U9v<_0HgxA3tUw%h4(vH@N5yP7iS}FxR}{S)o#D(FC0> zy)bk+J8G%!2&fvSoc0_rf>oP?VxE-lU4VmJM8z zBAa4LWfGNRY5lXjR0)#(snIn1p%Pg~AgEEekpU!kcq+mJNpYYn<=d=lE6Z2hG|X`A z4%falh^RLScvP$^rF*Ys{Z1}ymIQkDL;h^O;Xt2B!_O2$a|vV9XRUM@teq{F%=DhQzpHO1#CD_N3R78m)GUuPq?Tb=`5j_BV5G z6jLRnVHUn++Y1(Y?w&Fj&YmJqwM7Tpr;-t}U*}hD@8ywbHH}9+49B9W6YA*C0Em%? z6AZbZqRD3dVXgNB_WW!m%EGkTkO7Y!XFROMWIZMP(~TdM~is`SD9t$#Q{1qkb3bO(fQ1%E|dm)h_PYbkaic z`^KGzOG7>tsnqg7S6^`WJ&vbs8|!&z(wtN5Q=YW7g^6O4&RMX#!HS2e13*}(oQ7&0 z0&I@BW*{W!u%o#K&$b}52=bI1F2Il3m(|3zHu!p z!5(B>wZdxgdNo!w|JUJ*{RO~sNMJUz|q+_4JdaL`|}klAlllcX4)4 z#O0qpyn|UO2%3}9_ApA6h)W@J{i$tg)ppx)^`N63$2P8(bvZ#H2P;Frl|c6eA(dP> zZig{!0ds?!V$z>|liul<+G-7RL5o^-JyZ9UA~lL)iqnA>_9V5%wEXWRAw|7PpzH{$ ztU){NX9Bu6?XxMT1Tx0Y@)qXmph^ljXoerq1Ct}<P|w8>_`JJ8GeMcwrJcv!j3|m^Mg-QUxRwm5%&R4!c3|4IXn!tER(T1@(7m zqWLc5RWfFHxM<#V8qww?EYP?sd=b&LP}+(cFtdnd7JJDUwCi{nA&aGivOun{6ILHm zzrXBhtxH6#RTcg$xaNwPmkC0I|JgUTydG8_OLZXNin^tY$6+iR3WZ&t`w-I!-64QV zvbh=`8yq5$crF3VCmWs`gC5>J80$Kw&8$JpivRZA4?)3+C+pnH;qqP!SdnmOm{J?l zMe$gB`?es5wC#4GG!j|3)N5`5-)Hqzf0 zkOJqWCy$9@e;wMp{=Z=ru&tC6f4kDZ+rSaZ?(?;C5G>qFZ>iVj5bd1yGn4-o{k?;r z^w|yh`$C`^m#Obcdd;briP8d90=~nrmSfkRvc9s-_nbYSoUGWOfph>*K!I!UO>BAU zc__OLAJ8auO?%e6(UYpy1pDPm2RP!!SxKh`z%@&sx3?xFJKQ3GNhVt6JS{#5UMdQ# zWVt632>Q{zwoAcq2>!Jqlw8ii4<1t0 zYj}#0$RKl+DdKkNUhM=!_&qx4`?weza1ZaEAF3C<%d8?De} z4TU1_soze`WoYsHR4yUh!#p%XsO#TXFzSgTE>qJq_Zkq!Lqm7i7yGQ#o2*if>$z-s z#o)?~=3yo=0yMkD(Fj^=Ep6Vn#QoLmqYx!gWg+o*fHkgbw^!9_nry*qdb_P2F-!5G zEJp7OBs20Sx43ERm%<=1_DM6Du+!41eE9_(CFY)^GSyIgJ6iJ2Y_VueB z756GB8tY3+^je%bfyA`F8yQ+~vbLf-{Oi;g<*lI|$39d`qE9g30x=OK)WLRzsCbnG zuH_nr3t!G)M`vAO1BG#^?!xY8i{tuVPXLB-9lxl*8sbc3$?N9GBGUG5-mB+k=iAcv z__aD8d|O=jLN8J-aKlM56?Fe=VW4M({JAeeN~H#iT{IJ8l3QlMTpiA6P9RoNy*HCI zX`q$;zn7A=P=G;g2UVCo5AHiNaI!iCFuwS)=KwYj*`Yx$DW-gmbDDAS*B0HCeD6*- zRG;}KB*VPu!RJ7~SZ%AB3zhK#8pzKO-L*DlG8*T@Q^)x=qcfcGi<0=HDwUST#ZgJgQ>Z3l!5h_CqAH&j3lZx zrC`@&FWmqgEuOjs-v8g%B*@kU4y75`m1#?_W&jQ?nyoJhY7_br;t|(iVXY7psw> za}Q1YcMGA0l1xM0wp5p0AlbgCQouXb9lDMrMwMZ)v=9QV{{)*B_+P*<&8E zr)!1@F47`)8X6!c$zf!d?_1sSIo_9*w#EdAZ2K&z_X~%|`mzxXmuz#!nAzlux;aya z>n;Z4&qaX+Z!;Dj=Kk|e0LOP{*LxB*7wq!~VbgP9!9J8?bt~t7b-A?I3<7g8%2)#s#>{2(nKJKZujX24;ju*|vof zmcA`XIX|ZJ#ae#{M6ZAve}L3wa4~q5akK{bNPk;@pWD83;t+b5n=3NFX?buNQ9UBr z>cWGseOm1P>WJM|*Y&F!A~!%LsF@hSeL)i)_d?Wac18J&n;mz0 z8e8Oh8_tB-(Sus4g_L|&8+p=)>gI;G4t8Q&#`$nxd}C4sVW0Y{^(@8eq17Sk#a+V> zr+F_WVGhM%GU>Sn6iLkA1?IHLqrqS#>+yp{nS(fnwobr2s9{l-u!b~+(o@*P1ij^k zVE=(}1l6mzKmvEc4Djfv0xF2V{453p^831Zc#QQxZ7W)yc&E`hNk<8S6fn@mA;dYz z0JLE#V7-?|Twy-6pfKA1;7I(WbDq;Vleqh6okC4np5xz=WLO%tpwjyRoJ9wgKTuNB zot;8Q_INmfyDT_#*{4%$q&Me;o;NfQGXc<-po?+;c-}!ocGb7v-zgK z7j&mQ)WcpaPE2?{%x6@}U+MR&H~C@P>qJlpi7J&$eVx@zPZ=})=bUOT=#IJ+;LzZIf03zX<$OFXoK z%H~Ocx=HZ|0WAHTzUf2~s$m!EaJqRy`RF9R8D!m%n z+q=R$!j+&Qf$Bae9nvDw=)~}A{Tf^)Ec;p#*M83K%@tt?hD2K)oIkw3 z?l7yHH?*-?`s?U3*2A=`e!Nqjs>{Lk{U1G)g-{LXXrE~sNW}7F9W;9iFR?Qbc%-VR zk4f#omFxM~;8Iixp+t))!*#qbkDK;IV=?K1H?6P694@>09eskEbdYmyN_V48aE*!$ z@w|52A&rBUwzVb}#QM9(!J|1<8q>2d5y7S|N1{)wImIw!NN%08bg4wAG-E9#Nyu z<4dx@9$=#3{7XJj2b#sYc}Cm%=;7p5tpEZ*{lD1%-B~H{7G1~nFhc?)VwDgLKM5r; z9VHhWO!s#fm-1(R{o!!P9&@D639kLj&MPIY9n_&)la;MhzZW+__&rV=n1H^!qwH9c z6$#t*WH;nN-xpdvi@XEl`r>8eqL;k2&Mm->ClW!~fh38;S7^sCeNJlF$)0-zeu3${ zp_c+{Q?GGhika$=QQd)?zI=;z9wAv=e))p(Jpvgk$LUOCYa$pasRYtuywjLN%;YPAmNI0e;n z7~-~(W#0%@p7Z(e-;59T7t;!PEtXx|_hd^x#cC|d0a`6Dv*6tCL4{Ejo*B-Y@#UrS zyVS0ibkZvE}9bFzu1DAHqrd{$w8xg-U;-cGC-(Lg2UOCgsD*y4LQbq-O8vlmFW15g_lZ z5_A(>h{dp6U?$UejdmKxC`i9L+yBmuu#HX0V%K=ln`U;nJT#xzt@^I8dw1bgg7InE z85^nmH-u-5vbXR&jdrMh=d>jjCHnIRT3d4j;L__#aQb zlyv&eWlC_wAR1W*eO#mW^kBjX?H$aWUhPj(uynYQA&7daGaaYQFK>_P=biK6h7(sfZl52;n%?zQ$xJIqg{XPY5aDm4^vl-Di;-q$M+578&`4$RT!ExV|Ug>)?T zOkG+Kuojo=m0&Z2M`%q_ksj%=WHOcFGLgnc}&6wp3Ao z&~6|DNdFdlsCb>tpaKHXC$;_YG+_~L^qL??;iJr|7Vg~&XS&-+kVy|E7Kro2wU(S6 zEf*}PP@Ctbg41Thfz|&^RZ?p=m&95Dlsqc?-5F@>pa&tSEKI*Xg$gpkKEBT^s-(EbmT(fk&0Ybi6XA2By$Dpi~t> zK1CRpqFqGt2PV^#646Vq$PVq|)5_T?lW@AOGZR_hA8=|3>{K@le#*L{6Aj5|00OLa zG+N0W0g=-xnlnCH$B=y&WF~xiGlSDIXDk{0zQ0Vs=nI@r4~nHKWM)0@ThKPb1B@k6Mmd-zJh@EZ{A*D?#YJOVIC9-f=zpwBxWN} zB67Z5gg^zf53{3%Aq5a;;7|I5>WKyBYk1u}*$tTQK{h0AlrfF^musB@7-ZF$ zt+q{L(eiPkC72beJo5}QK_lIs2;+_#2?hXFG)P0}Hm8)fIVLG=`kb~9Fh>_J`g1gs zwENu~WJ;*^6$1FXtnf8!I8p315M#gS;hX?3pE)07T~iAflfv)l?eMZhPdoN7uk?))9={KGpEC7B^&{%fgymNqh@Wo4Q>=%G*q7(M}8^e-vIx1LN20X z5JV751HD+Oeu9fFClD<9-z3;P!}CBA95~(&CVKAPyoEbfn;FUc`aA1y%jXG735fNHVY5-7d9l5O7(8tJx z5>DSfE78hHz}DmGV6p|A0bjiLyrI}HrLYy!*atS)gWE?R5M3zx;P8&YuH!8vXk1?- z)Z(q4lHm~61uD!K<9Y@v_*kF>q=f%du7oo83Z8&ub z8)}Hw^63EQt}G=W#5-#Fog8lw5iPuFG#zCk4z4dFKuIM<_7~N~hMj{t_vx>w?D@7X z^A*tc?dD!{cP2`EV`P5hkU)J~aFmjAJ%c^3pzXQ&ytw|J$yB=(h$#m`&(SX+ttA8+ z6*%DKvpYCAaqt>Bu3qx&p->GDXQz4)03T%1rFP*O`5>jZ5E7VIp3-OHEdHFsh}=`Y z0RS>ZlG#8TdfMC%%Xf8P|u)5f2I=tC!!<2DQ^-KuPlXyeQrHiUAIVT8{ z8Ee*JI-@?dk+8JKSAHs8n`ZN$ok&L9dM&WTnQOLXEuf9mBxXaW)~|iqD}&P?=c`hr zA3oIZp2K^1<6UxDS!9}`Ax)6m7?7;x&l8&s_6nH8xv~&&02#NrT(69e6K(FWRBWCFnuLDDvEWn{u^a#Eo0m{&XgFEvSB`!-y zb)6_+erbSd*2Pks_x-ljolby7kfifrwh9$&%n1#t;2wb1US69?7>j9dnE*N zp0!REBe>mLTRJ_cBZkdS@^( z59jp1@ma!h^2c-r1OCKy&Vbci|H)Zet#qiqM|51#2E+C>je^%VR+##3%G$c(OroWR z>VV?v&enZ@Ae69e$Gd(WQNms>V{awz4t3y*B7);eGQ9x_oWbEOM6LRN#JTxKx_shK znu)58=N#q7f|Vi0SU13m25?p^B7)Emn=g}*(POz^iiM$g@-CiuYC2A`!(3f{A_Jyg zgR!u^n=MfHmy-|Y03AdJ_=F?^>U1=Ps@lG|CVQ|i2idofg&=}Ra`7z6B)aKrCn3Sq z23dTe==M>nwm=(G1pdVRBvy6gAKTxu`1d`mq ztQJ2R3DysyC)0bfqlcxRxzPQy<0LPLO%4UR^&15Lat`d})f^l*T~CuW0+Mdsd>o999|t zR|D{Z-BpIA(X$trxzYkA@f!baP($yI$(JH=48mF3@(6nm$m>qIP5I~c*Iz>R>vTs; zofy6?%4dHu{jcsYN`AMzI*jk|JWp^dv;(LUe-{nhXvNDHrWos`yQmAw085$g(%!vL z{l^u=ypvG7goq5uVFd)=o65V4KRjPoiD`j9n1{ifTNH9&J>tJ@J4H?pGd{r-KKnLrC-tlfVh|n1>fr6N?@n^@RO&jocVuv98yQa-e zFyJwxZ!*aJFMKRK;bb{Sc?VEFP#@Mfm`-t6-APc<1k zV3d)gnItKSZUKp$M+lP6XBmTa~pIKHdMUHL`#NaEcfAPk{Nzpo7|SW=s8 z~-NJYz^FDVIIFN#|)Y<@Ze zl}fb9b1(E(ou{KT6}BaL7aC6tz5Y}NNSK1!*gPKwkgvgphCbiHaf)2} z!sKu0PsX@Xr?dNVxcpX>?mJ-8v26=_v?m#qyT$3EC;Z?E6^wK4!!~2O8ppP{-;F{J zqx1pHgqt!f!s8RY8R*yLzNt{-?H>PpMLiflkHBs^30!=qsfC1M3&%xif9-CC*r&mx zsUNg@4RkNQG$Szp7GJ1D5}FdTTXXdaDMA}Lx7t@SiYCY@D<)-bq&nQmh(!=UFcH+j z$*5bwZdU2jWOITCs?X=rT0w-|P<_-XeM7`eA<&;#OWt3LD(3CCEIr0-xYA5vv)a=S z*17R0b>h2M@OJk7#PNYuuj}KF^0b1t$O6pOsgAvcnucF^2hiMe_Th2(-rvys(cz3! z@3~z%bAG9h4@Tq&fBB*Mht86rro#>Bu#@b270V*#!B9S_|GQbH>MFfrm8?fQA4gMrcqNqH(56*#H zq0y-ixGr*0Zd3~Nm97MEL7&0!eLbm0G6Z{yUA*uU>HN%UdV*C6C@MO)1hSs;iLfQ* zI418^`Cs+?N;$rYV;rH%unuV4=(v8TD@qf}gURCWj-GZmO^o5XH9mVS?D+q(E(*EY z)(su6Xbu?IYkD)Zjw?k`_y9nt;za*L+?Rd)EIHFt*y@XsXEGseJV`^yc)W$zY*0~eLtU2t@ zBIW7(*RUl6P>r~1)vK2v>kvT$CKzb6URDw}sUg1FZ7tMqkdL<{+4ud6$X=%Ca#j2( zbN0Syo#5IIpxMSJmh2V-)-lRmfoK5K51VPefQ$PS4gwS=hFAwYIyH4T_c)VR7Th(B zLmCc8)&t#^i*SYek=6$IAAHz8pmy?bV1Fo=bP4p^2#>Tx#anlVIxkQwz)l|*!t!P- z6|tiTGKsP4JT%gaaN?3bS{_SEK^g^?QPS;~Wdi521F4*NkTw*=i(qrgNGF;%qcD0R zJu!p0-tZ_`nly?+RM{0eecIw%mJAH=-$c${b9r8*7+NW!9Gb}hDp(4fw$15vI}t}# zaedV;WBvGo!s|Vrkha|0E6Z~@f}x}iQiYC-X5pxJ89`qirOv&C*@6zI6|y*UmdvG` zvG7})sHg5VL*herC&@A|sW{CbQtc2zg!VmaoN;c8n?oforcn0!(%@fYQn=>Sr^-jDi~}+p?Ly$!KlWN1 z8$OH%r!opbNfumN^?4mCl@4c2b+KV*_2|#~=x3Q)y)J3z!#HR@Xv;Q+#bM0`$Jp`- z7yb7AGET)P?b(Q33#*n*A~9p#E@1@uV$V>mE%^S>%B$qBX-qn#D*Z(QMiPG&rhe^gIWAS z(zt>2x1T2ZY!ryK^VO+T3!r#eCU$==N+>@H-k2A?$siEht@bmg`AK_@C6M8P$*E-W zXO}$)!H&Kgt}*o_C3Y30>c@7D`*54coy1eFcx#MGUUg`MGMb2nDqotPr%)!R{8K~A zWOf4yB~(OOgT_7SfT8bsvoLG$TR3W>Y%-!6?bW0Uhx$4W*$qbuOj4)I(|Rb0iR;8I z?lCoX7fi>=$K^u}vkJ!%-tk7IhLgEYoxQE~5D|JeyIuO_NkAN9xm^#_7?mY#>y@Ai zvP}3}hgQUjm82hYK&!ChO3VdEkVU+ca1-A!AoOZESa=w-CdXJqjgXSdDvMo@7WbEO z>GPXc;USR^vRC*)9XvTYvXL{u-R-H(bzn8G3$q|*fK3p`m?B-eF5W=RHiafA$`#3X zsizZyBQ)mQ066SqbJpjx=KY4UI&ri8|HTG!eMI5zWIbl4C>k08{5k{>Ts24o^Tfkl zKW^B0*CY8V5N~gMWGdj}HfJe+Edewd)bsh~gYl+Sl1VBrYh6*-ff^C450FS& z=1^Xs{7X`>t*)f*5PVg?ia%1ixN3sE4)XWu`q#wF5>xuhej5)Qrm3wP9@-i^yK_|8 zqU$B+#VOl?Y5tn-p?39O|1Lm7Y3%^7^%8Y|kq1Sm4|gu(XV!N@(4#Y2br1)YTe>n8 z9vutP7*(R(-VpJ;V<7NUA4+d)7kc%EckvN4%HNC>W`wx^?TPDsqt7m^Ukh6~~9SUXh0-`1U$!0e%~CZKvCrQfk5jwcNJpqbHn&eARn` zzzFXeZj+?3$km&M_*uMg@%6e94Rc(qfn0O8QwbSfcpr{;=vE7!_U!hG0PLVdPD-e2 zF1zolCQ`1Rsa*l}G};vVI7gcRv@%ru0|>P|(UCf4g@@`$zaj#-@T|SUgk1J_Z(iI( zhIp3f4cTx_wfv+C3c_!pz`JPCt2kN8z8#WYI@$e><`B&)y0liPHSUumPNYZZhx6q5 z73{sFqb#r!-&;p34#gV{|3GFIbc&=$YH1c^L$8hSJk0N z^#pe_t((2Yuxpl1Rk)3bTDkti1PoVDiJb9f5o|pN*~04kFU%$h32cMIr=^s%VHwv( z%Il9fd}EI;Hejt__G~Bwk`FUlrM9jK`cTp2 zO=-L$&|BlBvVX2FKL8|gAA+p>&m!gV0RH=JVCIM^l9=DkJ`87kT0L8zjG0>$;Ug_A-i)xi!Rg&nLF&n^3%1)?|L0UNI2 z`9g-{AsS*N+m;{56}q26 zyAW-pi%MHgx0ZsyAbx^P?VN`@*qK~wA_^bEo~9WU^w}w*I*lApmw_4NencMUD!-u{ z2gQgfZz(O%Y4cQNwy9HjWoQt+N#rjI3a8CgbejDMj zekqHiPt4LS!78+fDwP^bLoP&$?YJ=_PD9Jue5n^?XJs%GdDDA*GLS>5Aypc=DWFmdaB3|S7KH)~54i|9*zZeN)by_DOsS1Kt>EdagvqhD;=hbyQjthX8h_ z?%}V$5dmjqC^j=PD{>wev9Uf;PNGpr9h^R&r3D$uzbmj)Y}J2rU&QDYPRpLg{j9DO zeKko;KJ)rG0}roH#Tgz7tiMAi54GD|p;h7Oz}7gpDxM=4UpDa!#E`m8cI5m=TPOC| zfoqtv>Ali;B`c>SE|8|zYM>5BvRHkre0YXLQ}qs3Z2}Qs_nAPoMNteN^?MjKHEv&^ zM7g*N)#i@>+0a831;5>X(-IuG3B(6;BBZ~L6zfyArT$b5b|r3>>IUAhl?n zJ1ecVW@Y2}Q zn-hf^4|(pr>x)t4V!EF@8Std|V}uudk`P*m0PF|-MePQa-QJ@|j|bf`8$6f?n-l0@ z1de2QIlaP;@24OXm!BUx#u8u#-<}`{l^46et8o$BJUMwxB`mjNNHU9B783ol0!3%a z$6XZ`;Tbrx2*9(^01!NrXBltW{g}GMMZfJnrI$bI)Se{eV_rKB2?->2MYRYZXETJb z6by^(BKYaEoy(@zZY`)rjy4pAu>!w^f7Y&rF&sIMI$9GDZ5|t}-nFbq)I9%I_Xu4cfFaH#c)STfzlOguhTXe8Yf z%8{J|u6CbEKH$los+)OoEgUW3j}<4*0oNs`P4veMyj4byLT9E> z4Rw<6TYGy}*66~ykpB7Yb9D0G@>gW|vINsD5;zq&|F*P}kGeCj;$#x}k(TCrw9z+R zemM=NF0%Kpl&-v?xOXJ_eem1i4!%yV1(jAFl&C9kZuPpK;}ZFEm#eS)HJ?Gie}BNM z=_$Hprzo(3_dn6*R9O{1;|4<5Z^_TPw#XWa!(-b9M@7s`uK_7H@8$AosS)A(Y02D9 zA6l^|uq{K)R^1<;K14?}F9}h^R$d^h7RB{y^!1tZMM%3)(hrr{^-6vZFrw#lj$Mur zC=czz?dCqejLoI6u-ee@{h!*dN-u;{q1&V=6uXa;aq&z^i z8EgINl!WaAQyT|ml@D!j^e02*IAadZC3$+=fYAM7O@~9VG$cT9j*y zl61sL`o|&sk2xI@Zmzkm_&UTaLx1~RGr`~u(X4OTo9$xUKzb_O0z|g;2^&0+SUPnUOeK5&_g9t za{j`9mIg8I_P40y+`*hdg(7+}3zm}iwUsAUsT#e-&*n>yacWF2$#O7%r z0XvLH%7$9tw(40Bcoq=!!&tz=bn1;;1LzfJ50*fiaT`(af)f!Pepn zDar~xjDT&8DM_mR4gaLrRF_nx`SQGe58bDLvwi)n5n81~La?N=2z8>m&)!xYiiCG- zX!uri7?5Lh-D&w7^B?fFcScL|=Nt){clogs(`v+1iN{p(C6eH$OhK||nMbSeef5A) z&2U`Uf6Zp|Auo#uWDvv$N6q0u5>*#e5hAcLZN5V}9O=3mUOMhl>Z4(;4@LLd(+zX} zaI9<+bRq7EJO7Ec$P!V#DITQQ(7g>P;?+Zimn@8&8_RmNJ^()Frv;-|d13;1GU`G? zDrrlxr61c<4WjQdibCp5IqR*j1Jg^H!J-xt3k$wP zea7L13U{nZ4H-|TH9p@Em6HdG-zA21tH#^1d(~$^l0+F_FM~=N55BrddVz7nJ*u$6 zFgG>-jTs%Qr2eErjVM8|RP%qXvj#;zwOO!x`1@*+%qAQI!#+u|*yvgxC5WcrLqp}( z;x(5#J$m<4*JU@rZ!bw&E<^*=KcQMtvJEJqtwooJb!7-1Euo9d%?t*L}Qg9cVEdY#Qqw;1nPo3xl6Qz^Rf3ht9ls~la5mEPhtnGbHO@l7+nTU4Ct=vH<_#DCI>@tENM8T3}xLLwJM`SEyhLOcj4A7$1pZs=8a^F~Cy(Tbs;@U|j& z#DMco=}inkfTNF9Aul^6OYTY)LkO0Heg^{K-4mzGtzc-4F$lT@7m3I4!REC*jc@B* zNQTJ;`lpR^;31jf3aw}D>cXS;A2@e;pniP6dm4{$%tO6<$gfsW9{TeK3&0KCA7m%U zPH=E#Ll{G_Rn__&T3xM{PS>1oGfhYK1~+o*7qEC!q=p83!M5(ed%5k;pOBb6E4}oN z;yERmc+r-F#!Z^A7y7ZHuDs>WQ$KG)U_ctR;Pf*97dca5G5^wl%eD!K=B1Iwrt*m% zA8j!2Hg7-2q!52MiOnAECv=hX!~=$UkNzdrNH*HtC{NLT^nr0Yx5Ziwm$#LhX=4gF zQHL8g9!`zzc{Lpup)0;89IPIKccUs9=s)ePv09A%lu1VR-Vz*e31+_LJZ3)yUcS0i z2>PmGEHR^$Vj6sQjTJ4T6qQ26CvgE!IbdSr+KBetn&KY< z5-*s~-jy@{-hMK*opk&y3Gq11gmj7bgrq z0-UZ-)^n0;7`?GQ=It@nPx}4o>UpI1T?E@UH1TKl=_zDxQ0W6XJn(i@ri8aRNA9-8 zxPUSONS$$P)q=?^D9Lg8cq;&0q}>tns4WF%Dp*>H02S(>oLS)<&_#L0`p~qYbiV?d z;QOQ&-h)(6+HuSyycI^L;rxhYjyCHOi@K+@o z(%h9clbU)o{#z(3c__k5d3P5qGORUpboIxnDZYyZ2$BS(-B^HXHOU{;7d43Q)?n0= zOzum3cG7GSw7hG(;h6j`(wBr5E>YEnX zyv?)j-H=kmN;0dAJ*G6G!RhWG8Z$E4M+$yjz+TEGSM-OwrlQf9eV~RMqI8UtMMT{v z_&(h}mFpS+%Zp($$NX$RORQIV7jROdl|IE^H6m!6W7bN#&+>kHM-5~wIdv^@#iWog zgAo0?;dutfVI;Fl3_}Dii`aQm4aPnr(Lht;*rg}nutCrBtz6y3_gt^sv$X1Ngmg4T0xrxgUtIC?jBIDH4zY+$$Nc8@7wEsc~ zOJxXA=BO*Jp`ET^}M7KdxIEJnKyU807}mxQi?F+(D_A+%oZEI2yM^B~3{&RxKz z@EbyP*?h`AYxFzzCOtW4l#uqfF9mxH76+=}CsF&y$(2A1cICe!p-?I-23P6&SJ~`! z!PD)t)6l4(!+ukmE`n>K`epxIJ2qh?qu$6KxUyQ{Ue*GOxq01t#J-s{y$--UPwza5^9_V_4Tk?+)C*X3{9ruo|^H> z=5bx+Bm>B5aMQ0ppB{zzFBwkd`H8?%+S!RSNlQ>hz zJ02Jz%yb*_5EazLFp5LL9Q`ZSsY2p)0jzqL(i|)f zE1duLdf(*J3jt(LAXrnz>#hG-oew_S)^V>2i6L8*;#AYur00rxvcy%Ugq?EqSso8ZZi5MIeK zv9+y@Bt+uDZ4OBW8~Yh?JeQS+xxavY*SrsEY+Qp0pI@OfALg;N9O*o3`wq&1(ZFOB@z z;P1t14(@a`lz}Bud%64l@BHQX;U+p9DnXFC-*9dR`!`)Hl?}dC+x(3*)GRCm!jk`r8cebrohlIcFPZyChDL51Y z)a(x#G9K$AP7-fbOP=Qq}%dcS;D1qF4-#O_cW4Am2>q({58VveRw6af54f zb>C;S!Z=EBUENKa!Y$1;dZFD3Mfn(fEpY4H6b#?6FA}$?>&U8#x`do}Xbor)E*==X zi@U!~Ng`|(wVxCeg@N!wM5I*0>*k!iSwYkwX9^@(fr3k*Zk}+<0HM* zkaAX;v9quiIZqzbRM{k-UL-(A2X4>W4T*mXlcfhX zxyPpCtr3aMg~$JrB3_x)}42uJ-mCjj7IVW|jNk+j{Km>P1 z;c>6c#3An0z_k1H#S*ut9e4hXtUrk<&jl~WxobTim+$s{(Nt_8kW?oP9}xP=%p)R= zTF}~^i=_ibm7k{Bolc+ zQ21+%S0>T#?_*Z%*@5kNuVL@<7dvxy2dig7u;5&Y?A0lvLYR`PBA!KYnY%mO(Wxy? zz8GiMRg0PPb3&4*H_K6Z4>HTn?@pwb(*;Silwb?(#jZ;TTj8(QPiT>8QNquZ^0GtS z=0ww~blqLpX0L9&0#5@Xk6EBYknAzTkt811H|ucbE-am2J(DE*Jz${x>1`53C{n3v zgg3H%V+M{iUe>F-?xL7Rt?z)Q7J}v*@f-dA zu=PdR^#Inr$DQ9t<5Q}9oi=4B%xf&2^v~*-_KFX*)%1|OK!nl3vCMz-g}LjyAz6(z zI4@HwR}86(xb&@ekFSH{0;0Qn93f?)lFQTBGAWBj=_wOYuK?utUA`2xZFjS~5^#Z( zLS8&NoWS~}=$$Bjoiq#brI8MhcWr?NGT0(~IkAoW zGMZZA%?+&s>5!lW)t>;5Y=HbISy8i%I0a~>P zbotxBf4(bdF0Zz_kYv0jX47k2XfpeGemy{=-ai{4OXXLY=SRRo5P#sSL4I72?*SU9 zKBh=`mpot`>6*TnrFT67V6nRV#ds3i+UcQ4RwRh8;>s7eB@LfAX;`s91V&Zq7r7s* z49_G1s4nzhynSUzQAK9fngH=um`P&n3Qrjr$+zF2wO28XX(hyfY>$_(f=Bi>!j{}e zQIKo8eqo!vkzdrX`BeyxO-Zdg+tyS`tNh1SglrR1SO)HAZT(Egfhp{ zgwKPI&b;@}Ha5z+k9amh$)$A_+0M}@Y3+9-!P6Fnz*SD0W5t@nD*`ye+edwuEOlSKT)Ge|keuzAEJxvrbZB1W6C=Lc13~ zVF#Z6^n~7QGHPoum{nq`yStHQr1Kx|b0@VhBt_r}fkhgE0sq^=rn5bsVb*@_&ijZy zKr5kN>Jj%*n6K=>(ZaQdfS>jG6l^-@vp+l(@RFo(!9fMUbcWnl7>E?mY&VRqQXJu* z^I3t>Fw%rc3dR2uK}Dy{iV~zxJ^D*kM&=09ja;#!0tpH|htc7Q!7xaJVUg-rQdbGb znj4d6ShXO)pAr3gpRo4XvjLz&-o(w0XI#aib-TuG;*3?t4!rR8@i?rHIR2E4DM#$K zr1jPC-GpLFTqo|7!wJH)WeF%Wv?LJ!_r>|RGz7{I*}-`mniS<%N_FX2wZiBo-6bp& z0EtH7Bf}Vi$+fOK^VyQ6Xe6o%^-95+MC=8w0-mKc$@7?}n%fEd!C={+I3eD^Q&=a@ z2#X^c#Lw0evaw(WiAJT=>NWFZ6W6FWpC2p51FKf-sj<`Ha@lo(GL;bR-zILIBrbJt z&xO4n87|*VU&cd~5;N;kHX6sIgRhFs;s3QHMyq5aM@Gq+;S;$yt`M^^B&Id-8j1zo zOVq#11p%qQq>A`^4lFe&EeOw=&CsrOqLO+mH9XoFYbr< z1EN^+=!Bf25b=xa?POMm^Not9&^z2@4S2ewv&P1}$;uZ1sQ~9&(xs0nO8>vpkdSf` zU@ZaUWCea=q-!Sga(3~*5;*7AWk#Jrny)Z`4+-*iEcO)=N}Q%(c`y{~p4Q-7w&~qs z;JxlTro`AUJ=LuFgtv`jaW<2SEx;}}Sf3-Asx%>k^Q!aaTQ9E5jdFOA(td8#@=Sx{ z>zeEVMmSr6Z}jZ_i^c8D3-sRMpV8M3BKmIBdk^nJPr-ME@ew?*EENX$#t^dBzpn64 z=!m>D!hi(lDw-w69{*iRzTojir7BCAp58wVp-A8n>r*H8`=VY@pggqCnAW`&{r&qJ(HXOyb~@IahfTBj-M|rOMO_}_5&EPI5ys)qyU6NbSHa7LBlDO zBICdXHgTQ^WGz@UQiBT9HCeB1z;6axN*yB(%&lTHTrYMJEW1G&ZL=74U2Xy)3msl9 zCQ*khxo0t>yVp?{|6~2jMQXHkvUUVBW;)YE^?|W!D~cur;z1wnoIFKu_ZTOF6$vr^ z{FGTqAJXi{GeLIk))q*j#2^Io?XI<`3Rr`J+$ojRIpw7#88|*!XzZ+xHn4?Zihfjf z65!2u$TTZ>2Y=%Sb!%>|*)|Q~OX~+zN{#Pn_ZO?XuZnConXM~h)vychPotx!{xViQ zj7GsLCFh3;7Z}Yr3`)ZnJUW7wv{E2x6R=uOzNkGjG2ap|H-{~2+8y7hDQKZJ{p8wU zgax?}?%?z_Iqrl1bNnd1Mn>>*jfA*nRCN_-$&OpyEQH1SPJM`W0KfFAP058gFta~L zY?> zZ4i;OKb2q&4^Z;GhgzG4&6SZCAkrNy=f948OldkntA`K7&qcz%^?D-%@WKTmdbF6@ zQv>Ad&%of*o*ol@38mrzjB`2)S0y#CNzCq$!Kt^vuW?%$F~>%JP17da-b4UoKx=0)QYOijBd>;ek40o2nzDnE~MOVLIrq}4nnlQ&wRdt zw3U(&N#%eQT+_vn%IS-k8_Kv@u4wY=UDom6RPSLw{p#3zArAD5*n>Hja)xzFs=){N zTB@FXahP$Ye&>?G($9^3^qt}-2r;Ga(rQi6_idA|xhuE!ddZ6cQf9`Cpz{Rt50QqY zmuw+ZtH|+ItKe!oJTUv*?WVyR7~bn!113VbFbc#o^wq{B-~1;H`4mdf%ugDsV{fuu zW?w9PF@s>rZsCdejudj^N@Rev8G|13`QKE`9A;Nq!nyg~re z)?AkRbZ=Y6Z`sqYA=?e?4^#pX1*JwTQm$Ce(@Or?Wj1Di023^vh%b^d*>w!Lyso*^ zkIatk5l2}$P-(!-F^qt1xDC7>RLA0rVl|-#*4XZ>C7G*aZT3ixup07cOaHGag#>gF0q8w7cG}h- zrX3W)MS;D){c;eoTx4mFA-38jl$Q-{O<)N|tCKxM#%j8&==Q3j*8a@E29$F&jCrX& z>pFA4&aGvs1D3dFC$qOx*~HI;Sni+5Ls%)P-uXAM2#*;)cCR2wG-~B|O_mQ5NJ&() zqV%gJQ80#34@iEmB7h-)ao3HTAXw*b%A|TBJw;qDM+CHTYQm z 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�*oleJeT=L!J>%F$U4*6OP}CdGt!Gbzs|&g$et3 zoUrX&SY-5RLfJ0RN=2Oz_n@b6rr)IEn>NxEEJI6Dn1edN&T$a7Ag&Rh{KIY(y&;H7 z@bdu)8N7Mx*OY3m>CaHvt3B$NbwWrKeyP02(;Z9lN`QONHhgEU$p?TO`Y)#CgL?Sq z-ezGy2hKl|aw0%g-^RqmCr5JD>zv8zqHrU%VXajrq$(qG`XDsgW_G|^ZkDP6l>a`L z#NU##b~^|LoebO|skmqj`wcMZx{E7sNSE0eO=6Jhx{>CK z0{=D<58v%W8$5_dJG%%V1Qc4s38`NK$AiOJZMcO%Zb&i)PHewe)wvfqBPsxh{! z1v+eRMST2@K8)D?>T%oSLtr=piLpYUucsDntsYyNb|3l3sQAg|-Fm*Ap|WjDggkeG zI(P-=wD9_UILK~ulXG)agXdfKggi5tpx2m=TLCr>vGug;B{jgd5v&9_eR<(!DW>ou zT)eA;S>Yls>qD@^y(O~}!DIReus*KDTfeX_`J?Qm71$>p7b10?X-3c6K!7!b@1ow@ zx{14_-E7{3t&Yh1A;rR|{5GGR`VP7xVe)+k^+?qA^BcN)6ONIpu|llR`^+s$n0yr7 z65a1*Kn<|Fcbz&Y>;?TFJsH2I{z&n|L|M#RF5#^USI_@JfPUkrDAhQM3C8v2k5PwT zWO>5QIpRbWlDFmxHikG${{;zL=0w%|f9ywnDiecNaE{=JeHrRij_jQUOl!s{QsFW< z^Hi==xPwQ zy%8ovXsrqyw}yZY$;t5eUv+6u!P%sBtO*$;Cg&h3h*`GwMhMHtEM}<@?f* zEy>1~IB*--I^1bk?WZkybmF8JZ>)${Zh zWE;~RV5c(kfRcV&MalLEF2&#r=S#3O7{`(_bd_m>WSLMkK<5!v%IEi2k|38)6xJ%U zt8$r)(W(^t!|mOb$(J5OGp)Ml6KXZ6HkZsSkk5bP_ydzVgn8vd6Am{D1Sab&Tag6% zT*@*r*GP|lm7yY)%06cZcP^v-jgGH|zbS1kUJ1AwmOHuGWN4p)qBsBpoWD)ZRj zhaK@DX5NImFdECkkaF7ZIDifN=1LS*sGP4JYc zMbbPe7JL1wk%P)Vn_gwFWhv!EiD3}Qb+-Xe%{x8k^)ruJ78gVo`FiKW`~t^f7Dpa1 zu!jf2OQ;|e?S0MbO+K8Q==9kX!Rn%`>pA$#pVVz?IA~ha%4@L_VElG=NR|W@%m-<` z%qH%-Nwp9CFkHrCa5)Dkw+WlzycPOm??cFbfJ_I>-CgA97B3~&u2cXiZ$cLtiRe%& z>xX$u5wwxG%&_K70+|_L)sgg4nXEb(SJUmTvVryO*5jmDo~R(*u}`V3r=CURicc=~ zf?G8gL9*xpckA-P?{WEfn6p<)%y1b^5Tmv(9mtk_b={!kS#&qV`H=NX>Dz5CG5xX^ zgH{=UyNhY+|J%iOZ)lYJbjTVjRcV}v*;+7PQVstO+z)0TNmr@!>L9C@&z`EbKMMwO zyFAEXP@Tat{&tl)#zoJn=PjKY@0t=SZv!6Idb3p~0T z=&2A*uO#0~_uI60C5V^Pbb{;i|^TZW0xQ!rT9u!e+PD=(j9fp7l z`62wXGu*uhQ1~V$vu&bL2U=M$RtlPSq^Mxg)D`J6JYDvm`KN;*K`iP3w`k5B8P_Y( zx?WTYh|Ghz0V!7q&yQMy&k%l`P+(db0Ujvf*T>8N0NN=5&dZ7C3>>|-ue&DLdqBnw z)r@VtAr2pFxI{LKkaze4rFI|@e=ttTy;`d|%>Qh0r(q5w*VlLv_)ax+C1K=7w%sUL zmb32HoLU3Omx~f9k*#1?pPIBL#I8}ju#P~hP%D>NTMYwYvJ%#MD_KT08no97+b!9w zlRF<2U3E`=h(2VY`wlo84I}38Sx)r`NdtE^Q8|htxTG1qV)1ok=z{@ljdM+Bj&08V zZ&U6Z2K0IBHe9Bgd%CL0(mhYo@hrut(?0ftgwvJX(o_Vh${GQ4sf};JP#hy}*c(6Tj?9J|t~AeD*u*Q^l>lFZ>fMALqYm z9xE)H0S8F4UEBW5;$lyfI5d$9wwp1R?r`Z+4!G9UK)?%@tFzgYsJscSO@QVw~Bkzo4qmA1N@ zR5PMNpz5<6zy`dpZ5SSr=Y9gs1T+NIxE2WLcB2JjMTyxOH&^;ly{ht4PVbpBTh zEqf?@%4U8xLaiOK`zi$sM|z{-0O($=H@VH*&|#@WgXI#MxDJ6o-tH&rMVaQ=WWl-d zi4*7KUhd8^C0)Y-1dk-oEgel1^J^U7WPOEivWpe>6)z&N*W|kK%e)s~xwEPW_qu(U z07kW^*Itek8t{ij4A<26o*@z7=y|xU>(;(S^bzLc+Od=O^?FhINbU6x)7T-rZdVmZ zfax*Z-QYXO<^9PkIOM!) F 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 G^p1eo!=uUo literal 0 HcmV?d00001 diff --git a/MikroMaster/20260605/20260605142001-Config.rsc b/MikroMaster/20260605/20260605142001-Config.rsc new file mode 100644 index 0000000..e603f35 --- /dev/null +++ b/MikroMaster/20260605/20260605142001-Config.rsc @@ -0,0 +1,3440 @@ +# 2026-06-05 14:20:03 by RouterOS 7.23 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN port-cost-mode=short ra-guard=yes +/interface ethernet +set [ find default-name=ether1 ] arp=proxy-arp comment="WAN - Unet" \ + loop-protect=off name="ether1 - Unet" rx-flow-control=auto \ + tx-flow-control=auto +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface wireless +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add disabled=yes listen-port=55982 mtu=1420 name=WG +/interface list +add name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/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 +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \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" +/ip smb +set enabled=no interfaces=lo +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set use-ip-firewall=yes +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 multipath-hash-policy=l4 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 disabled=yes \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.0 +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +/ip cloud +set update-time=no +/ip dhcp-client +add default-route-tables=main interface="ether1 - Unet" name=client1 \ + use-peer-dns=no use-peer-ntp=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.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,9.9.9.9 +/ip dns static +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" 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=195.133.25.16 comment="DNS Comss" name=dns.comss.one 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=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=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-IP +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-IP +add address=geoip.co list=NoVdsina +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=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 list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.190 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.91 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +add address=10.30.30.30 comment=miller list=NoWG +/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 \ + 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=4w2d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +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=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +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 +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ + tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + 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="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/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 ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE 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 forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 nd +set [ find default=yes ] disabled=yes +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set 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 package update +set check-certificate=yes-without-crl +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add certificate=DigiCert-Global-Root-CA check-certificate=no comment="doh, doh\ + -url=https://security.cloudflare-dns.com/dns-query, notify, name=CloudFlar\ + e-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 http-codes="" \ + interval=10s name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ + https-get 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="" \ + name="CloudFlare-doh IPv4" port=443 test-script="" type=https-get \ + up-script="" +add comment="dns, notify, name=Google-DNS IPv4" disabled=yes dns-server=\ + 8.8.8.8 down-script="" host=dns.google http-codes="" name=\ + "Google-DNS IPv4" test-script="" type=dns up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns-fallback, notify, name=Cuad9-DOH IPv4" disabled=yes \ + dns-server=9.9.9.9 down-script="" host=dns9.quad9.net http-codes="" \ + interval=10s name="Cuad9-DOH IPv4" src-address=146.120.64.211 \ + test-script="" timeout=800ms type=dns up-script="" +add certificate=DigiCert-Assured-ID-Root-CA comment="doh-fallback, doh-url=htt\ + ps://dns.quad9.net/dns-query, name=Cuad9-DOH IPv4" disabled=yes \ + down-script="" host=149.112.112.112 http-codes="" interval=10s name=\ + "Cuad9-DOH IPv4" port=443 test-script="" type=https-get up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260605/20260605142001-Diff-Config.rsc b/MikroMaster/history/20260605/20260605142001-Diff-Config.rsc new file mode 100644 index 0000000..e444022 --- /dev/null +++ b/MikroMaster/history/20260605/20260605142001-Diff-Config.rsc @@ -0,0 +1,17 @@ +2443c2443 +< add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.0 +--- +> add address=10.8.0.2 interface=WG network=10.8.0.0 +2448,2449c2448,2450 +< add default-route-tables=main interface="ether1 - Unet" name=client1 \ +< use-peer-dns=no use-peer-ntp=no +--- +> add add-default-route=special-classless default-route-distance=2 \ +> default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ +> "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +3239,3240c3240,3241 +< dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ +< 10.30.30.33 to-ports=80 +--- +> disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ +> to-addresses=10.30.30.33 to-ports=80 -- 2.52.0