From a4e813f14754d0f6473cebc9cdaa3efd2f6d9598 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 06:00:47 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 06:00:47. --- .../20260509/20260509060002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509060002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509060002-Diff-Config.rsc | 8 + 3 files changed, 4647 insertions(+) create mode 100644 MikroMaster/20260509/20260509060002-Binary.backup create mode 100644 MikroMaster/20260509/20260509060002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509060002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509060002-Binary.backup b/MikroMaster/20260509/20260509060002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..91d7fbe5c8eabba2d4f62e23770ebda54dc2dc20 GIT binary patch literal 298264 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 z zPK>RWxa=F_L8@4vx0m@rJvV4U(7MzEuvtm_a_QKI+T+8~g?6pF3p}4GG$LcD` zs@UW9#fXUDZubuD)ugYlGlt2Tx5szLFxcPm%sK9;rR|CLnI5ljCP!btE@Sf%ct{7~ zF9b6QI#Fa9Wl8BuaiJrK*`##a`F=-vao~Lr6h}1lg&{#Q0^G{J0*fhjPvp zu)x#)BkynZg$A;6D6Q#=D1{Mx-=|KC+^IMpHgZUR@1Uy#80ZD&_AEp4Gn)M=D(Cqc zB?S+T{N+JK6>$PZT0NaKxH8>PfX0h`EPo;lyHVpF1QmR(c(V!on=oE{;&Ay{ ztUM91ofka#(w0;fo#tRC(2!+3)ol`3;U}3&Ln7wpf(H1(dp?Q@j0RtO1aIb76k%(R zO0F@ZNu+=tD|z;2R8znRCqJ|KwQoQl*TpMW1n8O@{kiMH?Z<0}It;BJ2L_}aZGK+#>*=kI@qUV)PA5T|r} zUueT;)GJJ~Q~|zAEsz#zCmrSD9d2<^0m@^{${8O4r)_L&8`Dv;qI~PJfUyj!!fwbn zGV84srxQW(A5RZ#$^J>`7L950NgcgzGA)WWa6W>}V_tcPErSmL?&Exm&pYoMElOu= zzPn|+LFV-(x|-W6oK$>!W5*Hjl6-HQp}+5F#WNolT>$37Ng7BNRls*Z#F3stzu?Sr z>4*&EbwwI)^;mYt8KmIpYVox4tz#eo`}jiEQZ~^~313YS14g{4gUrJ?0UIO@M9eH+ z-lxpHcbP;dKG3rY0MQB? z+>F${1Xw;{t;p{_2Klo(AKR|&!01qGA=LEH918A);ktAkH?*3!GN8r^mpEo&@!YzP*! z(h6(R>=g&lO}rH6BFSYr)p8U+o<91n z$nvZ95YuzYlkbj{(7#>~wvdqe4|I@TUU0p;nWSEpAuC~Vx%zu} zlOs5-1`tDr5sVl({3tA`io+YJ;6bHrN{~w<`Ac^+>HSaO7Qe5|b#;ekBe=RE*`%ON^Qa%b-oG8X7 zr$(i0nE)VG2h6s)1UN60Cb&c7x+zRWmxWU-lN{s8hGZ3k0Xgx&y96_P)%t3r4Z?F8 z6Xa)*mW%_JQ!w`NQAw>4XNv_w?5ZX9>4qi~Le!X^I(=;C5~g2WA-h~c?rb)0=$P($ zL9uazCST%HCi{3RzL#Cs^B{JZYBEmap)~B?pw)2<-|X7PF0uNZ#hWKH#`q=4e6#RJ zgaX^g6_7v14ObYqtT3K6+Hv=9J;E62)||kcLGq zOIxWJqV0FzVy4$gDkc7waxa?j7ogp!L!x%-*;i=*ZtH#MBA(p-L~$&jxdjAm5wPCt zYPub$SInvTmF@BGu-5Ygx$%+!br!;I=mK7S_s(){c~ii2b?cqOcvlN5MtjMQP?!IRYQwP?dP4@$t6ptzgcr9V9&?hdkGy36z)g3W+Nehrq_`* z&mRCwJCc8GebN_{5@qoHMHM*ZcdPqpC;YPMNWX4?c0q@gi{CJDj}dE;`UH)VigE-^ z<+}a_MK5Mv(~m{$-was7mbk*g%wx3>_2*%8)^2A;Zq0Io=5QZ){JV8GaZ0!3KqC9| zPbtWFuU|{WgFExQeg5@DzJ&~ha;;Z=B*9gTFa4Fd>%7TB=khf~+Qb?i&S+W3%lZ=d z&FYq~DvI;o-Vza!b!A0GVrome9QR7ega#AojF*U#4FPgeNVQ|IU|%cRDMy~9Xw-g= zRcw<$_-L=r#x03Xlq3~h!C0fxlooM%*q%SQ4{zTqI}e$FM-;|5C#l9XC$=E=f&0Sc zT6IPM08n(A^jOlth9aS<(_jb4aazSBGhZo$zYwobDlr{O+CpT-B;tGnd(OxU2L@1O z34L&X%M*kB{g3!H9`)z+F5vfRAb~2MJi>W)_?m|xRlomz$`FIK+ribah@q#dfuHqc z<}!`we_w>nTL+qeLZw!h1LP&_0`QOYQ@~>D^0uPLf;-en&pT4X$wihL6UFz7U{3XF z#JzFm4(gIjc|l1;kvlgB9xQd1+Q_XFzu?Ib5~I5&WklCD%$W z25KJ1lJQ!V0s|&7WtQa!hb`kI$7c9Kh@meKlFytN>v=B$RH=j@fdjdwkrq``n0$e) zRXJ@HU2S3qSaI(0bB6d5jkVd1Vl@QPxxZfNe4=eXLIvNepabZw&>HmcK+>Y?2E}&jalJj1gfE=76u{3zgSu>;56$AtnpMU4TK7Tt& zm+)J3#9ULQykun;h#`hI7Tl>@&V|Gd+iFLrXQ764)67|E@WKMc2elPMJ zL6i4jERMXgG$4>DVRl2dZA>$uUm$EmSJF`(1-Uj?Zyz976w8P_Q@+inCMpNQQU(n$ zs`bJIk}8(iy~m~O^ey3DX5*OrRL(PK8ESxO;*Wef}n9U>tR zs|YOm0wvNTDpQuBl1voE841M+dtWhMJi7eU2@RJ3-FEA(-^%>+CT(kbhV68z0C|(A z<=DH+Szbzw_??IQCc%>!h&$Bl_K&JYeO!9{e@sUm*|@oTr6Bl7-m*RT_e9z&ShIWM zmnl^^eC_JE2Y1>O`O7-|FaF{w*oXoN%-0J)*38?JCtohhW~EpZ#8yxSD(cz@a0-a! za%gSAL9;`#)EbClVh2SinR#d#jjF?EJf%9pBk(A>|EezU==;E;A$&A->YLU^3b(dR zR{I0f^R91GF5s%ly~4D=dS;-SK5t(fm=+6m>s})&h{oDSek{Nwv)y~r*e}t?!#z=T zqX;#3C9yfD+RNIDpJhLnnK7q}B)4-oNEo}9rut5p9tGSoGGc?+kStP}O!qFN0YX3L z-*Wf@?G?|?1*D&%BVwcF*WSN>?(ILR3^kE3TBC1EHLt-!)CzPF;TvzgV7tViCF#-( zsSJ9!R3zS&+pKi*hsN1k<+}KL&a%p$=J~KJntJ}F1e$=M%{I=het9NwIc3YTY^UTwN4S&tXj}S2e;;>k*Fzs50T^SoHgWzWY0YW*KIOw~IahmB zkBgH-^RqXeS6uzA(s|SLkcEKYbH-Fv1aNlw>Rrq#C7TYbg;@S!Byv zCy_j5i)`Iv!q-wgiN0Zps?vgj96xsPxDe3DgZ2R;!B1_-5vW6Cx2A ztwSS;v-VZL91&HSg1_Ieqij-Bk9|f^W6>t9{Tl zdOx<(36D8Y6b>@`qQH})k+4{<=efPScEZ`yp;`5dX6a!qu|#tFrp*cgu@GyHPde?c z1?dcXb3!`gmnn#3)v>twGMxEhE%J z#VV%_!zck#()G&p?a$^p^zX9X?mV%hk%G%z_aEGz5(A-AQEoBhN!^=)TX0m{aOdzs zpc#BZ-=Di>cG?~U<&U!48CNr9GB+3@U1CvFmtjP9#x2vmH^i{GMEF#Z z)U_^pb!#HpJ34(@lRo=IZY42XW1WUu7GPxsJN2tZ&fO8E&zQZDNO0)INHkIJQ6nBZ4@iH9p zTbL9V4T6TG-k-%F0miL9xFeovq$xsKh0d73__j7SCBp~>2J{_<07DOeRVJVJ1+31F zVZc&sF9FAl*WS4brxC<0f-&l!Z6HiL=Ji885SulPB4nI>A6L$7w6jZ)C`^Fs{)CYJ z4R-^rX+MV+^M|`?`fXsf1n!=2Op!{I7Iu!Rzww9QC3i$?QrE1$W@cykSmSh6p4Wnf86~hX0J7SxwevRl@x}oZ! zfkdiThU-%S-z;8mIg`~)IiBeW+v~nF*YL)I>3pw;J5fBn+V?JJEa*Mc+?NUOyTgjYfvA{wOgh8Dz9T zPEhVvghIBgk0)vjb0_d-3Yq5|1NF79abCqOtPDkALobb1Z6>1O9eUWqN<+( zuzleFu-vg}6~;t*RJ4^Z%F3m&xfF8?`tw;a(z%&*iy{`}ttLMA6bg}Bi!dBs`_=2J zW{b9)FA2!#?N3iRSc=I4Tm_t#o!S6KkVJ6qy7?M8?t)&?$7NJdVYm%L7W(6viZ5X} zQeM;Sd1>LuIdPx+N|@s$97S?bb>L)Or}<8ko`4o_%qD{6hgQes!5(wWvQCeAD)f_{ zy&XMskJOh5(OkM)ahom>gxYh7wQFi0)E7g=mHs_yOSTn7LyD|Wi&pFlCuq(>ec3B( zpU4pWy;PbH%{_b+pmUCGtOMBgdZDV_Jt(_Wus#UBkSIU+WDQFR`119tyS`%o_TkE_ z3~(cO8As5~tnos%WlZ1mQv3|c4VGK&^xl;#IrN&$RGhv@?kB*#{na`Z2%@#!bQx;` zPYaX7!4m{_$DX~Gz;%Y!xn)sP$ZXMjCVV@xp?tP?ds(hG*t=G8r@aiu zS)5FQ{mF#Dr*(hNcXS_=Gmvhu#s|Iku~y1>h@p1yN?xtw<)D>45ppckWNnvHIERH` zaeqL5gPyng>%aUs9l2&VpkMnX3kEVW^&Cy`kWcdDy*uMbIO)LC$T-R&QW^6cN1Hwc zT|eL7BfYt?2JXds^L%Fl{{)Qi4Rc!LP3D`7wvasZcXI`moJGx4r+pOZ!P?SU`Q^en>kAm zqqNmq?0!2El^H1Z7j|1XXJQ;)K8SLe)@u;F8#930`g5*Wp;*3Uw;9!GyoRk%sn6|L ztt>ZpOrc}$I5T7?1(N|cjC+Oei)IETF6d@a?zKpUd=K^fYaKTirRC#D#w)uoQO_#=AP5I3* zjDRiEp;8gC%4BehM<>?RIL3Y>09xI`Md97!Cp5z~>mzlZC7sh`@qb)tFA}>nOp%RWfF6N$z4#$v7(F5R85PadFLER#=FY-faOtaK}HFvg}`=BQ8G4B z>O5+4xTXLR`Ys5%85mk2q4<_Ko?^U4*ouW5vRY3KOhv$NaemTaTOGFg;{{DD-l>5^ zYK-rgovE~v&CCJg!NP6dzLiiO8ZFQXbG4qnbx?1OHNs|4vNb3AN{KTo{NfNKvtMSG zPq3u_vNiM*0xfsjbu%CzEK7LXfM=v7+?jU!?%Us~;`7fjB-lc;q8-`{U+omDo_B`K z5>?3LlGKt&Iks!Ajv8S9lhyUhBuCkT9Z5nTm-P9QgD*U8*8`zORnKAnlIl7_sh$ds zkC&r{OO9IndLcY| z^^uh6%q4<^z$v8;ftas2$AD*G2w@pA8r2EXsoqM0WgIEyB0VIuX#?;v(c>nWPAZ*v z|2NGi9ty@+MZR98QS;A=c+KTbpstqP9SYjv+nvLguY$8P8=mM3|IyZVrQ~;q&}-#? zCLx+`)w4OOcTIZnvS#4F6uhUWd?#IuLv+b*ncDO+h-&H6qAm;)+qT4w?Nf+AG$?V{IqfBWJ1^I%tBDOuwSTb>2Np z0Dp;#%&nIXaJuX9Xj_ppfI}lFB1!p=*i%#bcUGXyZ5o@UaAfCdj(!Oc$|_J>M2QO7 zMsCEaGrpF0l?5@2@KGui4c{&Q+7^k;UMH$B-D>+w$P&rl@QMsAd+1l8u6+_hH$xl; zHq3u7a_cvCe7;(d)Izt)FHG6=3s8;){_ctyP|5MRh87vFwc_*gbTYO3vbIz?1<&)% zmK#XO;w)n3Y^-LvhniP3M>B9ou@k|6NDl1mmaJGuJ0onnayhd7PlV+{MWjt&19)F& zrj%%q6$}0rLAxO*ZG)N7J`H`>>(QVDRj!hl4BPmr7{VP+8r24JGH^(%xnQ4F7@O0}=+AvmwpAcoGN%gsOU$HUF`!WTt}28& z2eng;48x3y)+jXg%XogY?u8V@yF&U2N3@Of|J{*OlK1A`TPVKlRPjMsQ4>T zkLAi`o#*Q2c)B)VsYD~7Fl)^SzPWTvUQWC!3eW#jJsB4(<8fTE=!g;ZCJJ^bDKuOx zb27-4ko9$248!_|a-TQt4Cl?9;Glhy#VU_5nupI$Z|G_;%4glFma^2VL80D>woI{2 zYa(3&reSA5DzFcl`IE8E)6Av@$`WFO8eo$o?hyMf#ItKjxW3(^Ps8D6YTTQ(Fp|uG z+rKvQ-&xWsBiz%aGZnd$GKoYZQPW%g`WlaIId|nC+8r_1F+BAZ46gn72jo;{5ks}o zo5Mf@s8zQnU^vAY+35-qGj`H#hXWEUPQ2eoKa2UyX*b3(8r^-I-kQ3jOn`E@5hni? z@Kp2dNKwBy7C5cR{9O*Y_y@3V>g4k2`W>AhY6Pe_KiETcDuqZA_{tLghGQ1v&3#%C zM7xMmv^cGpB|Dp(@T6q(X`BKhnw3t@JyFqj)WJ8Sm)lBWW$}<>Tlc-1HntXDE~HXt zqp`~lvv8NW-AfcvoUuMYAXq%^sxlUYhj5MM5E`v4^Ut!f;I0-ZqkOJm)Ceii-()Y2 zzt3w>nc3n1swA3v7V3{>+`%WFx7>F+Z2C4(6|(lABueegCA3%&L^wZ3=Ijw)TV>)l zpMwzi*IVd!#gBLDY@ntdfRR#pnhA+HiLNpys#nx8IWpL8e~GRv+VlL-k_+pw=_?2n zkj-eZv7|y^@nuphzUyIUN{)O{!+j$3a}{gN-~4veRFfiZ#8oJ~+kluTUJquqWJQIS zNuhB}lIYzo}OvTyzO7_BX{lzUe~~K5ONh(GRq1^$ z*0gapM8hFJcrMl#t2VUwuF!;HN(i<_nXw410pRdNEp!;V)b-o2xYlo=c_Ih6ye;1M=I5gZ@Uxp z&&guA0kZ?F_I>rVh0xim6KP7lEZDo(4NKl1>LYBTf^o}K1STsCRw8-&N-eps#-4#t z(UERkUP#r4m2ncKrEZV9QEjfrPT1N;N~VAUJoxwuK56D)Tc5%xASAs``M!(xIi|y= z7@_`Wsv%1s5YzG-m0)6atPksdh4l_AX~HDO{eS9x<^>y<1_E0p?-BM0#PaOuD4Wsd z_-b6LvUq`4BbXPEeyW9847qV@S;x$R%{7Vj=gRlHzBfk9+75#MS7fiYMm=uznfK=(2QaDbStUhVyxw(bX}Jwv~W0&)6KO%%KgV>Cp+NDiN)Wy&nC6QI1lTBrsQC^>Pr5{hwN6D;Db4dK@pqkDLrYp ze-I0FtE~j3gqAKvtU|XA~>d&0Y2?AVhp{R&CO6< z{X{@#l2!rY`c%IdTx>TDceoxY4ZWE^2u=#-VAytYZh$FdXo=J!N3=k z^cGL40~<>6)*Dq0*YDC`_O{A?gQCBf)b-hwqT0yVLy}=-7liW{1;`;M@#46P?9ZAn zCCT|nbJ?29W-OE>YqtTss<{2C?H0L)nV~2xAP_ih<)!k+n({>jwi=x!aF~F|WM1}K zv9f!lGQcsIYN%#L1@z>%7y=%}iih)1^TNEoQA5!B*L>PP=54g5Z($4%VH*5|W}mav z1pQuijB;xKyN3->GW)^CW@i_dG9tsU&eD-dz@62}e6zQd;drB6SrHD?wgKL~;=?*V zQ*OjayzZuUNwne_lPr;_pncY4k4d~txDN21Qax!JdhsVoeS0e~!ebcn+VRXPYok2C zc(3{Z6Y-eqzX?Bvlv~KcbA0KDYC34$PfIT?OFsg-DCM5i>M;;&>u2{vC>ta!&$-^q zRG&g56s24^Fb#v#zUGIBUOj_^neq}nIFb)BrH%+wR5L`t7bn2iZi3D(d{)pjwsWnI zOsYN`Emj@^$)gr#%h zwzx%n`XCr!t**#yQo7*s8Fp?|EB%)D0pqC+d`%Nm!%kFKEPdQ3IvU-lkOV3`e<6~0 zgqvCD+wHtkj?Xh~ieNy)V{j<@q=dlWi_ZR$w&s6iU%30}@caO;_7K-pc4H+rOpD5! z(f8Wl=XaTLIEahJ9mz~#fOOfF-QF-K`^?bR^q%>7-}IC27s?5BL3`HL%?E<8!DPu2 z`z4a%uVxWX9}}2EV>?7DV`zmP6MmU9hewiG9mEP0enfk`K6@-r%SYU}u*GyN9}szr zchP#zLn;no5-=&w537oPbqEXOMOS~+R}7+UHg}wdVp01Cg+x>hcM%0CCh`^GV}aMz z-+XfWnrBbMXE;ZcQwY7{$3WfU9vM%5)hR$-4HgY=>TLe9{1VTlMSDllTyItRhF>Am zcINRyv~A6c!yZZwo8gN{j=;ZAW$g3{Jr# zkw1ClgVY>?!Q_$+^8z8QZ4rIPWDt5lw6m$p+& z98C}sID=5NOfzB-%!I2L_Ew4=>mwrB)bB1ZwhIQw6_c%NG2r;=7+Ao4Ptj4Jst0SS z*p?t?8+HAO9TZ)Ur?T0B1Wt!JYE}|2;W3eyXZ#>S3b{*e$~V; zUSVDSB92g{h<+u@P|em*8EKwAURP$+GC56*Vd4$_CySv+-NMhlnYU&7ks8Sf`#&M} z*LT@?7G?a_^09PpW!viH!p6&~ttrbeum|WuxuU|2YZpH^@odPrxsNKU;JpGI85IzG z0qpKZ)u36#nffpPrQjXS1q3bwZZM@6HAVVIhdSvd%0b|vM$x}*_hOIM!ek}89Mfp2 zvS{U$^yNi%&IAfHdyqYGgb~#-;hInPW6Wol4(i&JB48Dvr*T%MfLdQj;rH(H)PP^* z8`JNxk`-I==x>@iUZ{Z@p$mdrVC?p9mP#XG^hEJF%)85}w^YgZ9yoNX<)z4T-zrTt zT2WdD+RGn-#Quv#`h~@AA)vo^^};r-wP&LKM(5?nU|z!Nulblr6^yPUji;9)$f(r0 zz{3~Sx9v&9f|YD#kfz~S3ANJ_cB0cAP6Ovm3VXbb1cFz&We631l25`Ac3#E9UO0C1;=!6R)Fu;(IiFtPv;+_6S25t)D67IRk${my= z=;}FEt4K)1(3|c2tSJ@xJH_vp?B0_@yMc9%ec^_4Tnb;aO?+eN>AChS07!8i#LfJA zp^2Gj{U`j4l>Nu`LZm!`_|s}$w-yZPt(6dd>HkC%G9oim{&I3$#pG0~jpYE-MQ)5t zcgj$|I}?QHLwC0QDt4h?ZXR5QBM;_^ZLS^NNcUGfAeaRu0`B|Qko&qVmZDU(1$wjZ zCPL@}ZRl`{jJ;l8_V8nS`+c$LJ|gCR1SklZ4h#q(Qf_`!dchdfm%?P!EG`t1QfKsE z9I90lf82McE6Baw6ydRWBxiCc(&)SUw-%|f#naT8^3a0XQ*9j-`410y;yhfG!00NT zq9*Nf3&EK46~y*l_*Wp9Ry&nOS%yUbww_s=YQ_^OEpe?+us)o=BWTLy>`hagy&KIa zz@}hr$>qyJN?1QM{n#CSF?bv(XsJy^(*)9VDyD8Jv#*2;V&btubnttPo*$n-EadNr zBC*qca>5b#IVG&5&?j#k3`-KP4xXG>hI^#s7?y&sAb5dCf%H=J~*9!8pRe6vv)Wv4cT%!WxGyvFuOy=Gi)9f$} zx644|2adL#ef?WTU%-?pE@K9G$26QC+q_}zsEE;=>dB51n#2GUIGh4g*wCLR)%kPz zyh7QO*RU{yR)7Eqk8jtmE)-gM_UIC9f8P(OO(ivLInUqs{0HvpyncU4qgH1X!1TT_ zj|4BC6h|s)CnHq;s~Fk~R>PcxlMg;`$iD>x70GIy!LmCg)AXf=32I!E+>ei)($GKb zCjuD7b31xLf`ixO{wgxG9CVcAu=U~FqdE9cedb@cptOeAN|8vqG#tgSlbu@blf5FD5*@{t%O*>Ufjv4&|c4cbx>uYZ8bA@8G1ZbVJSEx_a8k+zsp>m(Zgp zjE&>*N}=emvHyUmbq*HXt65u5^q+J)FF8}n4=d)<2%OK31VF%9r4U089vMHEGQ!l)Fp0~=?~ zd(&0mSC_ZggpO8R>F8@47wFI_$#s#{Gnf-yYyV6Ajp^5UGtp!?>Sw$1f-MFAZ!cyT zU|L~U5ZinB*_Q}==@)+4qZ*ywsPv!Lse?t9w+dqqrJ?4TRbJgdnJ*vbsWaxWh~{a> za8%R6lS7gtu+o|Sg$RbT5O5MRPjLZT6$IqTxeu;#=ZnzSe9QV#X|bNy&}Lf;$^svP8J@kZTY^kg!5!`Pudj9{ zz#JX;oT1GKhH%q=iQxHZBH|U`IU^n!-PDO3{#2C0cx0(vUu0cE9|<##}LY3=z2ZpQEHtXtq1S3=jt# zq=j*1d}C+PFNUYq-X#^d721{i(8lo^d-6+~N_B(|VI|@bdM`VS`XvOAfjVXb8jFzA zK3^^D!-`l4A!0FcNj)#ybm`A7W`mo6ehqzz1EPt0nN~6$Z_}w^DCwys1Ys3jwo-4w zw*S{m6KirlYFuDOc>7p+@jvCJE9DEU2c;THLR^e@ypYGMhA(w2xVCIIk--pDhn9Y| z8P)~|Vgzm--%?nyk)Xr3g<2iX67Qij3l^i`hdZTUl%AytqB5|f7@*jjoLddS?cRJb zpX6MWuxKMr9z!W4KoXI6q@~`LAM=`tdBjHe3PVK!Al!z> z%~(s;@5r{d#ZfLVr~-`rWVO8t2kvzu`#1`uNp{$ZHq!L#VLc7JGt|x)TBs&kiFfgf zKz+%bi-F;v4*`*?XS7176pA0vFd-YN@c@9UNO04F)v;67Y&N*vRNskQd7mN&o3 zf4m9VlLsO%nJrkJf%g9_E3Le!m7&*2IwA_nh{MU_G~#ugL-f()yZzb zx=r&{MxBin629iq@aGgc_<<6cPr$zH>QbbH4h5!I=o0{>$6{{{3a4G-FRLeWjAbbp zM8T4?c2(l91-aCx77%Y<<&~TfCZjEK%|m;XNH988B2fT@J#t-6-OcDoL2!72Pj+XX zB?W4xE#>D(^D|_sShkMG>AJUBtx)OS`7=Xd$Ew5%iJ3W0=12i<)y~xqjS4Jqx|9$SN{- zeiEx6PIyUnf$)}TKonO|tqVVOC&$Q0S+Yi6G6Z%@LCTX$WkIu5@C%QQjj84CEZ;yd zJ$UDbC&f_qfBuquA=aWS(miZGs+6t0FNb$H`-Ey-Odt7t^z2HC1V*^{8*H5u({=^j zzZ^WBaOymBC2|F>94xq-fuyE{sK<*;nj=tdc~}U?TZ&%5CtXAX_xA^6W51OMx%`ci zwgN-@%pKrvB};B&@mn1XC#bN#6Tz#1S;r|jfH;Du64TO~0=-!oP5pErRnNN$H{-nX;p<^4T^$4(=*+elr34T;i){q$IOF7yN|Dsi}0j_=b5p*6G`o-yCRuTlIpfixU-49_ylI4u0 zL**kq)6Xu=nAWSH_babCUZz?_)q;c$SED6WlGhNoX`pL5fGuCFljPWhBqHX^BJH3U zSzqTi%!|xVxr$HhoZ#DQkH;O&U93UYFWWnQJ8#p;^CW;ZVRYIc*=S@2(W8vT0r1(U zlgEE&|r+MiX#Ph3ZB0(G30ueS17 zSzn(kDiaU`I6~#$a4I$_8>Wn266)`s#PTSA4Yp>Ad0O9#S9p|i$oFLytXa!F%Jk_e z5|Y}We6Lh`0vXDh9Lt$|{?#}&xMEVLv-|r}f*6r2K0Yk<+lmVbFlrBG|3_ z69K&PH-Sp>OOnaReLpx4m>XI%o+LkAcLjD!la|GQ3acv{f$BfdZAy9G&Z)vsalhos zzb}YrKXk|s+CCnx1e{ogx_V{O$l|bL^~Ba?3EjWZM3~V<#AZIAS%sFQQSjF%r~`$T zI<_4weZ62w;V)Jm2Qpp4!9}Z$mV;I#2cGA!h$~oqhJN;)Y@{b#G7!k|ZPqdaBvCeC zDH3JcpM`I72wlj_vaeh)pl6*Am{y7!WBc?3^3} zf!oV}r~be6I9I%F)85YYRN3q&H6kNmj6-QZ!c6JHlaaklFisA(}tjP&dw=+>NiLCm$_q*LSNtWFSyW z>cT#eMwxVf<(){qJCe`!@T6Z}rRR&EUhbs;kD`pr4JJVN88OU>K*Sz%efmq?Cc6ei z?GAZl{??qSaABoYqb+HBD!lYe;qJ-h!r^8-f5~+mcdF&4m@@o=B%j@>Gj1jeVYoRb zSj6I&*(k&QtYT*Y=BD;=OchzMwNKYuW~PrK+V?|@2Esa)=-m|L)1$$Wp41?#N7~2W zr#}uQ(hoo-kbO#QhLOlT3xhip&RdON0KS*-toe&T#K9&(Uh$)C#V0KZ4Kwc&$9umU zGU`T&c8MjS7OQ{tM+aWM1w5_D>TgbIsY?*-0NSPn*F%^mwrMBnF(+m9J(k>nut2@) z1f**xWQVGM2A=D6>Ozk-LzWv2c(O={L4S};4_P~C{ms58lSId(@AL%Ny8|P7W5;aW zoo)l4A1?qG6o)Z@YDKjsBVp(s?Sb7H+=R=SwZ`+dn4Z8UqRmldx*O%Au|KA4?(pC3 z^{JkPgfoAsu%Hj9o`i>;)H1U1N&x>q0Km3;B>0=Q5#=%JAY!z?%ks7u8dm3J1xLZ+ z3Ych^bOl~PQD1#!hNq=}?a@UBa{5m}K%mf_Lsif!3X_#QsJdKd#IaCPRg={^u7&K9?$Px-$Q!3fEzJa1y=; zoPIkKr%A5&Hfdhgl=pDeylw90gBjzU6t4ce1xl+AS}kjN3bc#d^K;@p;=#c-^85Rrh*7d#FcVt+XMYJk6P3+-kI`I=1l&=vOs28G!77Ml%$T`dxS; zW~Z!Jgj3lo25DM(m{Qo?covs5??I~IOh4qab}RA=PqrDkJX#|B&_Lx{n3MRf6&A+w zoHM%`JLD>!CYUQ-9H%r(p9!yB;-IYw3{Fel;cOY1m7^{Q_{#EO@*jkr^$ z+D&=x%inB&*vxDl0~VJ1!M?tWhH%D!Q`?%drLbP(*2H@Ya@#)eDu+7l0TRAti>*TgB-sGTwk-Rn2F>AEJ>twY+^egkdjYdJ& zwu7rYyFA5Fiu0l1=eGyr5oM6wFc#f%Lv8<#U3#NqW)h z<6pO^K^M&151-Gz1oq?vX(zp%Svhg75K+i^Nv731&Ar0_b!>1_v1!+N?^-YFj|-CV zl%Q7yHv<@x!F5#CHy}StOXOlu3?_wH*rYBsgI8)nsH457LYFa|ry_>q5pljdflL3C zvix@kd#XTUO@UcFh@3FGh@um%n>>7BP>CaPTy95WU9Uq?r1s{jH(9PaGDl-o*U423 zsIwlv95Ns);T6ke;zeck7TqJC!EB&to9Qxybv67)339%Uv*2jHu+NUfOFZW(^lZ28 zl%6cr5qqL8MY9jA2K)7Cl-TG@?HAs=^2|Wp)@0tu$15jUoTCRI2XD#?hN;J3?JMUJjbf#3AQ^5wD&I^wyTUw|YemX!`XJF}#S-f1SY_}j}DK32hy!elWF z&~nar6xat%u%dQs@=|F1zozhCqla=MLwt9y@=HMllVS-qBkG*5sye+_<;H zj>Wxgimrk43mDDcWh=6omQkE+G24Ap5q*%n(1*cA8XtDH`(r z&#})?-!QFsAhj?6hGwJ`b!rLDG9=w;yJ12LfYA|%?7`v9cy{ffq^FKI8Q71$X zlpdt+)fgI4ag@j)MS!D~7i#p8YYi{nV0*gqGf1+m<-Wq}0uTIhmnH$9LPqk@4c5{h zD2j`{?a6#JNeNWBV(#A&*5O~TP}aJ)3DcC!d8l;lIv=;)RSviG+}-7a2R3lmk>O`T z%{x(Ox4^oLTUeR)p;S~FN$J2qn%8cZmbk|SR*0X%I7YxULL4Fe5i!tszOZqrTx+&N zIm}EoIre*mLE9hJZpXNf;VZZH8-y8uSa6dZs#FupW?K~0dO_zr#)j!#y!$sbV{~%3 z6J4V{O_Ro~Ux;iZsfaMP9RAmSj}0>4E!=hya(B8_!_TxS22^D7Y`YhCT zLUV(-ag#bwhxq#3&1f`05AJlyP==@C;v;0U26p;XKu<=J$+5}JRrR4~^BMY&zVjS& zIJ)+w9yo5xvHHRhBI>z&K)v@4v*vdE1|s)GrZ#^m6r^}~S@}`j!u)-^|Ni&q8s;V# zs&d_2G6VEs%k}zeo6-COJE?o7N>>wuPCJ_@_&a_5Ap%+9e(*XZ78(uKf4Ya>s$}jJ z6&fSXDeBwd5qWv`4S_Hq3xRgpb}IvOjQqI*cYbfg*s8Q+1B!uuJLnc_<@MM8V9(lX z9T=LdNN;sCITN{Su0^N&V-2n}Chg&;mTO2^}SN%`(Vexa^1-G}+Fe1oTVh#|E< z%b^3(?RB5zNa$&WMHw_I&*kuCV@g1B>z#K;YU=5#+rnOlSeaB>OY0PAeaQN+9k7!u z<{pQL9aY4Us71vacBo!x5E*(0aIErhz>l!Cf;Rd(x-r}4l-#`Q_#~&xTjwB0fHZj~i`>(Dx4|^=b9=N8(DYdk(l71`VTl%M8a* zGa0F1+WIyw$89#J*Vz*E`hkaFth&@)c8G}7bP+h0b}-iJB0#Jc_A{%hTEvXgxIYRp zyeVFp01Hx{0*-41ouM*I-QcbLvf_2vOi`Om`^1CSEG&IJFx9}218FBg#K!A%Sk~lh z3E_QfX$wewQ=j~IcTLrYpkFoq_9j_lja0OgHX57i%fO+6|MRQ>XUkjh66_^!-PR(% zEZoayOq?o&1K_Kqv${24rDdf3c$gLY6sS^_T){A5CI+%KN}V!%ptZ$LE$s#Iq}60# zCy1Tms<dDT~Aj+BFh>rGNJ&6&B3B0}Ngd{O>8TwEQQ>-DOAwe{nGy+)c5z zR8(#uAEDgM=ExZ!ZJshG+a(WwLFDM_tf6{SVmU-Er9j{Mt6A6|f6}*o1!zI&r5#Zw z{#$jwMSZ>MWlL&^ED3QlXDz~Cr>yvp@5Tb9IkYlN zl4J81$`pX2%{bIk;rUpT3i;wRVN1ilC=l=mkzwH#SV@4uqIa1CJf6Dj#%Zrl z8Lc7J&-qgNmW!ykB5uab37Oby9FV4$dlxTuAOE|Vn^MH)L8nbS0h?;f)^Ce^x^RfI zf|2Y+yPzvVsj%7#{>M|g>u=%zaqQL|joBA}Zkm%hOqrLr*iCew&_>0P_j>p{A{d0Ls>}fOcc+FQGE5-p%>!p-TQ@ zKqa-hYvf6y6bbpc1T7;*4USYvJR<-{m%d2dI`a6r?KcLT(XP+q3=^>a`)h*17&z{N zW{4BA5wDk(JA+|1M7lwIox`#Aa4MHT9aNmd)+RI~%xY z)vDQ0N66K+$h=Z9*2iQHjE@xdsd-PhAB66-Pf}B?r>G8e0iq5FFlfBUbrGXAU(8KsVHlBat>2Dr?^Xu z{`et!-fUl{0;cGub~Sybngj`6jJN}9{Yz&lmYBD{Xpq3gxWU{39guuy zbMeCP_#V*-w1jgCH1e)ZHMZDBi6d_|(GRM~P94l!J;m-RTJf5%1Hf=KY)B>A-N_sd zNn~j^G+lo*b1XZn4`U5uI~C9GhDU^d@H{vERWWs=Lk1-p!1ac{dnw?9xPk%3D9mlb z+JWRtNsQSRnP-3b0DWUT3hIwMmRf@$2&ITZa7R~iQ>o$J zJMTlPW(}6Fw!CClr_%?vnIkMbC0(3!l<*Ew4Iu2?$m-8Q<8LbXP_m0q0}MY;u=s_%v8|6O-;Brj zA=e$nst*R)O3*9fYlI2}qK7mv&iZ60F4^p2rM9Hft>GvU;yM=KH``{;HbzvtY-hvG z(sZNFx@%ib=KL4{jspbO)d!|R)p8r zBSIM?ne;D}82sw?j5|U(k!-yD<(})>=hKj2PP9aWVV|4?Gg&)|$-A%bIUPh%StxtV z|9z`0d8DH0`E+Da^NdN54zh@&ZJRU5f%{Tf;y8oP4TcYu_E^=g+f4LKbHgTwVH7yI z$O(pt8osa_9}T8tgi8kOr_|~Y7!!XcL(1lmX*iwDzE5)Tr9v=TT7E98hGVH+cbX~5 z=X&eNJYB!l!=@x`Yf#HLFIXy|0gtc_Yjfw{mJZVpKq?TFcJJ!4 z%qgRwgo%bAS>*rVNuoFVT2b+pGMkAQFD4n9R?q&`i57m>PcnKUSP!E?V*Pl0WHBDO zA5A2L(PQ-yv4lJbApdlx7`v&;`fsbwYG07KS|;gmgsBNW_wTsDs%R4NXM#oA?D2M= zECP3?3^uAw6xOBJP3BG;PAL=~c4zJcSf*%^=3j1$deDG>lI1vkrxdSROj5Wqj14xW8#-&7uW?$ZKaa65=th_@%gntsioFAek3gG z%X<&4pEhzo$=MH_EAqpBS&o-6pE{y4`Zj>uu>1|6(1P_-R7p{|AVH57MlJ_ zp-jAIUE?uoBnEE`Ef1*c3Q?HAix!SMuEQ6_eoC!O*0lN|n2VMnH%T|4sy=#)TC_*C zNBqyTv$I@QBrxCq#OdT~KvsjbD`-&V9Ub=}1}ai9)ryFzqP%io*U?(ppMwlzgTf&- zF)pmsi5tnW(n5oqvi?PW>62=HLY&fR1MGlkWWi>a0;W zNuae}Vm>H>uf9VTl;N>0p)+8z2rDpn$uXPh~-XbT>$wpqM(|x~cs=@p9Q7 zGu|g`5y)|7XhfV?vfjjB=@WX(xKwDt_T&$ zgW4vq^mwDB$E&8lj(Ue`(dqh<7|6AQDel0F0|1X?SiNI)v6GU|kh@4#20EH=16x9& zDCF^WH5$GHU%Y|J#thxVoCN;i$B}hu*Pk`%)DWx#K|NQ1L^$2Jb)m1CtcS2ntBTKY z6Bz+cKz&CDTw#|`ihPh2Nowhb7eWO0rXkm){dZxX9@%SaoM!y5-r+)+=@heX(yU)P z++=bNx4>4M7`Z%CBye@7+RrM5$m&Ff%hLw)O^J7tqtAo13FNSLItH6WHX?6lhe zk+Ov7PI!d-#T2;@1>NN8qCbTOR1z_AEzuliAdO%!MJ-#6?-IDx-TZ!`*VR`)7JZ_a z?oMc@3G!>%>CbkqhC{tkUsw|`7!WlAHVLg^*IJfcuj`vq&aN_-nlh~A-6X*X%PcJ8p)B+$nws4h5Qw} z&*r9-)i-mw)Ur@iL9umNQchcQ;ILeEb(0R*zAy(xQSGcxaj!F2<97c4&4PV|!AIC^Y20J>jo+1P11*G`yTDehKA)US=@wMIvKApzT80qm*gipzEKFaj- zfF8{D>?n#ZNVnXIyR>CpS(R5)@ns`lE0DZkz@8Y5zF~iOi>tIuI$057h~k#DjRec% zCJitHN=z3kY@^`k+=LOnS+?JHs44$;y<)9^)72~dAHhaP+_fH2Vlq?J{|s;zyr$LS z+SO1?tx)4#hJlQ%;Q#g1RqV?t6j0u)O#k40JX}zi7<8xxfi_^E7VA^I=9Ff=YN9m6 zNt!x?Hg+R#IT$cc!Z{JqYShEd4e4%w9>|yfIl!m+q-SyDJiz_=WNa}8& zi|0C6POsM>Mi+Ib?!vp*#%TZuoWGs^=2`I`XNB)DSSTUj>A!@*;;B4L5FxN=b6}ye z4n+&hsg`HYA!nh=W(NKTh5EXwr+gLrzlS6gF8ak9!6I;l_F&KF+}u1^;IE|(t13Yt zZZt600-3v!a!dp39TU^!oQV#uPbhEG6A2~@7Qc=>J%9cF?2obIBin+gqADkY92|By z1+iuOfyJp+;K9E_Oa0n4qH?VLM8+%cR}^FS82G*AqXfJ9KHYt6byi2n)`|)$muT_+ zrWRwd=Ju^(sCuGHzgx|R5UT}AWbyUFTL{NiQJKT~+YKLf)j`FV6AHmLqJ#@SE6m;D zZ5s@KMrV#|Md)4}$Pq_i+3oJeEHsU!?x|v`fjM&^{oV7wkm*Xbuez0A!nvqVtmPc^ zF6NCk#Y5bsLRc#_87G#Q<%-sWfP{K(<&w0RDj!sOlCDCDbZN}>w#)DAipe_YPxfrN zM!l=3!hozh*poIOw*bwUXHdfSIh~yn1WrPYWb3Q&hRlpIbbQX9fBf^*iH|k$xN+A% z{R<0jeEP2!*jPN3v_=?efS!9-2SC*I4eC>T^5rfNH7#qBqbT9udnH7y%w(u$>Whl# z=;I2q#nKH8k>c+X)T^8u)@Uv)4z|wi2>2%AGNgnCxtcEY^mZ9Z@}DH_#>&MjUVq9P zwqn8oivgZO|MW*96TR?x6d|=*y*uY6e$vIWNHb(#{u3*AW@o-t+Or)7R7$JZvo@Gf z9jc4EsBluZpZJW1|9=YCx)w{(wOg@SY0<8U%P0+gt_NWey`GQ{>+0kRGjsb8&O_xI z*V?NpTN?$|q-|64ZkY!yvFSmOJL^u_?1s`=8a7|tAM9en ze!tTnRa3z()`O^si+M%>svTzQ#!Wn4X@3 z?VdyhkJBnx!3{Ac7$(TLQdiAk4-w;$F!0HV@T9{z2y0HFPC_A|@@98sj@raFd6StFNfaXgp+DxBwKhqaEXFkwWWVV%E}-smo*PzJYazGv|~Yv!n?}vj8GqjC)=uU6TTB&YbfuCFRab!>v=Nc2#C^F>Hhwc3 zunCe?fXA$+bi5HQcEscxv$Y@o+8U$~1l)St1%xXhZ6BMi$G2RuyhgHz>d6&*e ziZw^ry4d@j&mH3_1dT)fa(1nTF9V2p)@WW9;jova{oqReFNWLTEbVW3cgS`UB$efuFTjwSyjz zdX3Y4|E8-a!M?5W>-uX~%9e7#+u&SPwG2&!zGkBDgoaf|(7`Liu}R*%du#Sx;Rh-} z_wUc}ks=upmudHUpSY0VYiii_fHK-n+>~LH)8*^EXl&RjoUjEtz7q!Sr3Q^X0gLAb z#9&A@wzhrV(9M9Pkr%yb{ze6+6?2K5IGpO#?PO+Z&@sK;Q`iXSs$-hTwm&h5`x8?g zVES{aX>;o}bn+fX99qOKg4g`tqC1sA&s}ivXE7%97?IRdxgLYhqp(OM>B4^8Eq7nd zP_1g7ewSAfK43(+ANe>^b3We^Y{UK(SXf+je3cUwzy$8~gmBcrn&NWYTjqXLEGs?+ z08Ba6^Z|5e2}z8f$H;an)fq$TW-J1`n{n$Ba++8G`f^hIr~`wr%Fg=FhKYqPOKhpv z0Ysh#n{L6Z4eeyEoDEUB_9V5Siey-SgBH;>hiOovWb|;-XPTzvmN%j8o(C~=V2+Yw zd_Zt-F|EDpvh?z5EX#Td#LtjdhkKk0jmrgar0asX5s;s*JGN8f_wXYf*#1I>9npDj zOK{_|BRl>|TZ61a*5}@}=GIh-5->{}4oigWA5Iis%&GWA`XvFU@({Pmp+|`8^{5Sb zC`p_GkVeWL5a$sA8zvzXSAud;E5mb^Y;FzJu6NZ@em=MQ#}GlUxcMkPSPW2-rlhjx z7|6UsVlL9+D}7Ljbw|=8;Jk+0ua&rl6N5Xv=AAPFG`UEa-8u=~xuSguJw#oW5+29_ zN|{Kn8+EL}T+)pGUrl(e7D5fKl6<|r)UEU z)J@$ImQ0zFLBB)dVQ{f^f*GWvIjm}%;vb!MS=%|_535$iO2jAY_JFBFo znsHXekieK#!KD?MDX=gK=J1oT2IL%EXBMMcoQ-kC_idrLTdErdlZZ)p)VnJCR41c% zIbDf3myOyzQpV1_5rd_NY`gaukjUY)#sxs+UOQWvSXBZ?`?3h_ zJ*BOFeIp<=T?r)XsR>^fD#8H@q2J6c3hUn~^Hz7rdDwV~BeEmQPT!g0K@tl@`2^G7 zbGg+K({IlsYJtG}?3((%an%$xL%V3PCBg+hb>X5klcSClShiN5IzdSwqcn-@X52%=d- zdUO2+aqgJBwfPq>RTfh5z8d9XvGXyrKN$Y|S|@EZ@eW|_1QiG&QFA9&XA4)H*0`9K zs4}C|(+bYLJMMzwhaeKC!*#PfZU44yt5;WEifumkOo+ckrNj^Pq}`*iI@qOJybN}H zW$jzoz@yUVujTw1TrrmdEpz^46XM#reT{fzo(|!l_yKTV>>r2xgNFGmvKYCN78M*h z)q1&FAe6sAc=C8@boAC`5*r(Xr0^hN8Tox-63}i)-*J7-&rot;SxF@Y4o>9g(oRtn zt5jO8jUALj^kDW#wTq<4k#TN-maDx6|M<&xMf98yxmd7M#b)%t+OYq!{JbCgZw5** zJQTeB`DCM{gI%?;JjxYzn-iMkNth@0Q#sAarx9@ z?(k!)H<-oPgDMM$NqM_VW#}EiT@JrZo0@EuJ1m)n{VJ>;(i9AMhUq`Qz=tXY7L5t= z?}FHbU76}pwgNpQUROlY)D!VO31C+}k5$wqZ(DdBXhbN=nfoDlCHk=Ca3m`kK;M{a zoq<871KZ4{PlFrD7wYfCvIy7;2Z}&zGA-j@U3bEK_^bA8C|W{C7xE~IVt-Wj(S%7c z+_omq`re!3GP2G2iJhFD8SBsjr~S=r;)}251V)TvX+Wj80+4_B5V5Hz8H79ne?2gD za=hWlILDnqMYK^?3K!SWWiu0@Jnf9)&@5ydnP^i{b>9Nt4D?V!cTj8m7k)GqMTp9&W4G@A=+DVNBg+3LbZp`&W{+W=Ezq2P&DkoPQ zQ+fLcpwY2xTDpz5CY@`@gmi91$54J}1X5pYMmxE&?s4(63;Z2)`pFKW|K>3p)Y&G5 z{_&Grey$fuU9hK zo}#|-osz%coz(E}M6$N)p}j4pOP&~-53&l6zW$W>UFt1-l8G7X5m4g}>R5yY)bxju zzhn-dHTosVMUnj(?c1a+%HJM@GhnKnm575ls+`~I5~V+7{BUU^&|9<<#Q1XxFk-sP zJ2nOo43qvww&qFpag9 z)i{2(Z+SBI?-pU;dh_!V#W=eFYN%IvbQP7p_xHIY$YW-w#QLXP-M1s-3%X4!gY4p1 z6CuT*k_>&G`D~Cu)iTJI#f1NZnBDccZG_UjoI8M+1(=l8U*cE{B%ngS*i`8C7skp! zL&wam52L-Srh}#UD&@Ns(^oxvRtLs1*e!T%2VLDr44l6Ey9r&{9wi5yx?2{gRtwFW zSIJorBc~RtX1%ab$`9SmhMKW;1CIsVk6=9;@_xp9w#i%s zJqMl4X-|vVC7aPz+2@MQ-+AYmNR^Qj7CV#9bB!3{%ym#sU6M^*CLwA6nB^y4ni~es zANA(#K!F&v{QsxbxBiwWz~G0WgGYgV%-P`u@ofuDSr(2Ny$53yZ)U=^Kw|mBsF(@s{O)M?!qPMJtjM00~vM7E2 zY4-M*w2?$g<9*TVb}d3|m@E2bX#~L*Y5AE--nHWt88@O13rB<1ED3{7@>e|cA8Uc1 zl!eyjUx(FIP*Po6bvTg>C(WNnR1~4!CjF4R;jo_~raSTnGy`CMpC#-@T1%Tj*wRh3*Xocr>E z;STo;Ai(Uh3)XL{GsnfGb7jID9@FgPzdHslsKT|M25*E-Dg6_^Yk4IYKfODilS|We z{3%{q;&v=`%mpdBDHFREQnitEZ$NVS&)s|<2zm0~L5wZ0T5 zMgHLdD<`^zbxJIhMn^h}K~TB45Vm6Z^Cc{X50UF2JQ~;WlXe_{59$}0rMswFS`E31 z97-ppImptx*hmfU3(@C~IbmIQk19uy#WN%|$G3~svOqxJf6wX?j~}kD*DU(o8OH?s zi+}iib?}2oNmN7Au^PHI%Vmh=TM!mGWiL0?ycFx&&~5KWJcRoC?|U{NC3{=W+TWR` zI~w)s1p4S-m;S5VZ_UqIw)hvu0;~4Uc=Z0g-4|Luv0q(xU}6=QZ+VH(k1nv^Uu{C( zxG2Pgq*-w==#nE2*_|l$TqVJ;yS}5KNw5c8lMF`wy5p0wFtQm5-<7@cppQ~HH# zFWqjJyz~M^Q)c`cR&CG#dQ#dmL3R~#84653wr}w8JHl?D4Iv#{5ukhU17m~C&&t%$ zn{Nn9Gp58_bU;MGP^Vebd9*S|L={Q6HhHn;GDM79kRi1(*roKy(K?X$W`6D7!;X$D zYOPRV{+jc}_b2$Pt>;^q<)(?m)PX);zaa^FKgx*2qDtTIhaaTO&}C03ecG;KjcY8c zy-|8E@VZxO$s1tNU#5)Og_~SO(k=>TdFM>dW_{3RK8cA!Zv`fh{z%?$3k?SgB0ntD z$if~WbE`01VjDfE+uwQpfqPqQc+I|` z31KU-iU8%3Iw1-z96hudNo&Whxc@87$k>ugl)iA}6`?v(TJj^AneipLX8jNDxM)pY zN~KiGWr!aj8eFzVc@RZ@=awY}!Y%ybN?-cW48Vo#_K!^SsKp;i;nh4iD}tM3>!pmy zCPJCdZksJ#$)=~v22VME$+gn0HSBs1wKUycSA+2&iWce|ruAm{f*G=jHH~!25y*^g z5bUg>_cq(gN4WN+)&nqA<@mvGr$Wl14ycx3PsC65j}oBLLr@bR7VdK#M)KN3R9mC8 zRTjjf*Tpt!!qsJXc({s-&RJ4q#5e`-cZT>Bw5`0Cc}2qI51S&h;H_s>8d0qhTle;e zph4EiRkc%=o!Otu*HD8nrzQ;Esq+4b}49{ABFQmDz_0>QECYI#wXuAR*y zbRKVJ64rlP5t(h55a4n3{p1EkEi{C?)v0vH^qT*wfjry`E_mo2axw_YcAj~zb73a zAKB4c_110YPh2?qM>&P1akqQ#5ia-8yg~+Z(*;$!-@+#dpH$F}WmTmlYawlyM6A!4Gpig8c`mG$1OT1kP&ly5}-DL<1IQW|9Xh z^%fv4QI~%v6M0T#^vFvNM8v1PV-k9aIC{zL{-p=2N0}qAq^wV=ZnXRJ}%x|rU*_vtx~iR^#bzu-x7Z4pChgeN_U9( z&P`vS-fx`k{0*@v9XMlymlE|0bMJDFrcXSpY1MjdmeT=ZQ6@b9b!YAcoA4Map&$grV_D|4B^4co(+j)&X#srnP3#wGBdqtu z*{Aop&|h{Zkk|8f)=+30lo3j(A8#Uq3oNLn|C|Ez^>dtko8}!$PK|0k`GpOlAgr-r z3CFa{q}G(bsc)3=XhUJ`F&({fsb#N7n z7P*DJa49gQ(d(1xZ(<|qo1vdCE!x_ZCrcYzCz08__{V8@-8i_XwKA0hp-)M22u?PQ z4pt7%&2H#59D2Lei*h0#pA5?(V*Da&@dQxUX$9AyTEJY4U^3-6_WMAtu(quJ+SjRqhyUK0XDUQ-XY z2Y^4(mbb#y^ou0|E92(n00POQVLvj)L+@4|W;aj#(`QHv&wQ-kAGZqG^VwTlJq>NffU{d1UHC?nkIIlTH0()Xbq1K;cg&KF0%OVAEvq7>ixx^n zF^gauMT)Ks&ch5-0?yz1a;n@7SnQj7|0)rjnJKwXC)ad`E!`D?l_1Ti7{82{j6F{QqKxd~Z`9NbeDhgeYdCqiGO z%7iW-csP70Qyi1pyIaI*w3R-l7r3gn%|Q;D%txq^KMuOnaR$xkF@kS*h=q(^p|7ba z-$b$DGLQUoHfJD#&>Lff3X@xX*zZ)7XGQC}Xh}p;D{i=?b26oQc8n9Acnh{(56*w6 zOGV!gR@FCZ(;>3lzw4{4iAGN9%i?sx*g~Y zv|6hW=7re!e>yeNf$%-#!sq*5ZmT8M-+EmV!8AO-TaC6n5*I?yj?Sz*sNA;)?nSp1 z^};d`M-_Z*i7oUzY9nKAz#cB31%0d|;K2LT>I!ZbA@H*g#QY%)gsTr8bV4FRAO_jw% zhfwg2Y6rm=^{3n4Rwji>y=HHcM_B;OkPImo!gc`*=dSn#o5kJ2G%`^f+Z{rv*N)JO z0fzn0cT-q`&TjWlOT+Jw`rt0rtg@irT z$VzgkU$Q!Y)T1m<_qtQ8N(}|ZZ*j`1t%SuKYc_9~a_jk45$fr@!Q}+ygIU`%9s#%? za(9d-DL%kGQmq?!cm%pG6|8fZ2bAX*Z@!&fl8&oD1#)N+;5&i7?JVs?utj)HW>@S8 z5PSTPR3P#df;X-E9ipa<&tTlX{mC+vv24*V>rOho-~}Oe8@CIH;vhPu?z9YoXs|kw z88d;%*Gu%o5ucS;HzLzUpmJ`m3vwXLex+!$rSVqVcw&(LK%4+T(o~ zAfOZ)fSCAG2GXEQbd!aC(|jxyh{_}An-NA{XW4H?A(Qfb zjIT8vSOW(gYHSRD0~RlDe&(Dl%Z2>u*BWXyKg00K1g~=29Rlh_Mk(t%)!ml7GU%_1 z24YJ_?fV(cat(8_sSSOSiu2ean5WbD_=Mpw=PQ?*;-N~Z)~PlSGdqnL|Gz=xw4XPx z4%r2=M*nBtc;tvHw8nodZdCGRS9MZall;xC0({c89MyFQdQabX$H8k3>i(yJ=Wr3) zit%DaqbmdSpk2@x3n+6Xoco>&gm-oi!V(Xpr3@5H=N4=MR?8CS9l+ZLW>lY!Q+@E7 z11Pp7{CLUG1+$^ZXUoHOaMjVBHYrlg|5=<>&(TUZ@kO}H!(*pshArba_lgRO5wT6ES_d>u^)(lI4S@usdxf4Bpx9v}Jn? zYxE8T=p$eO`>F(kGj$yElJA(?(@W^GC~FEIlp%Z7bJlLDa*qPXyzJp;cOBzDmMxk1 zOtqq-(bFf3^furLf79eWvd>`J$e%ya9Qo-qO)hKW_Z|v-gEl;VVQBtek|wCeVFFNq zt_l;@grbCTCATTs1NY- zALsPc*^M6y^{00Hi*50NFagu29f+j^HLf0@M!>z3$k2#65Xj$5Awj6M@973`ksF@G%(8i};E5JSyy2KoxMk&#-rqLG50q%!TAyS@ zohQ2CcB1x1jjAFGd#yi@O;e3nTmyB)HCWhCjkI%mzAa_gre(E(S!LZ-ZMjuMQkZ>^ zepn2U!GY%ehZnu+sIV8v2g(3Y66IsH?nBv#wcra=m|tS_h;vs;{I z0=}J1gBzU$XeP}ozajb6c$lnhy()QL+M8f+k#!_fsNu^q(7KjIHbeZdch|88xoEGb z#*G()bJAZb@flc$1bYwJvPA&-hIG)K~uH8n2=-4v;mJ-2_af#1<4a6I+v{C)0?08U6 zuZQLp01C8uv}uHDZ#eCb*&0mWuP5%2)x`S-S9>z>E*BT{gOD{6qm(qA0;Va^6f>+befL;jo|o;5kgeV{%ss3TnCT97f(O6Ol@F9DmA~bIIFQ6o z&v3BSwvl+hLkXxQ$%YiOrN)VDeJw{{v!VOY&=RN)CJp6>Ky)tvpo|M3GAL;8~0&}0gm>}g(iQG z9gQc@@=nu!T!6Gel<1@VW9;$Q5}ZBd|BU=oNpGUjM(F0HSz?j8ax7U)okRy*bh|Y_ z;OX{uC|-&vBNiXX-;B@D_eggnX0Vd`lOwb9Se-&a!(51VyCSS9O47@!b34k+L+`6l zDY*;5wm_A*#*p@Th!|@lf%hi<fouD8rN^gk?URyd&C`3#O7t`Vu;gcvv(6$a8D?Fs7uD;8*k^69bjw#zz)r`0FvuH*WM?7Q1e<7{z+{=(&_%9lMk z#V)v3)P?Po^m_KCOIng3v8#2E8W8YHLqAIqLLccwQYtZ|Kk7yfY}`h zjcStC(WanY-*0R-apSBe2KOzRh4LY31El!O@aq}ut06P>`~mPOoF1vWP8mN@oTv6O~%n8jnAo|{a!tR|Q!0ORoP*o9d z@;mA=8I*S_X~zGmb}k!=>5pDY9lm$IA1qyn6sxDE-(6d}dF%F{=i@)8!UnDof9TtF z=`74J0A83h(6RFodoAo=dB zBLTHg`>VNp#TlD*8H{_2yr&%dzHS=j0M~-akO*`wNvT-9zcwR_t@LD>f3nAg2i*H4 zh7ik`w|y=!aJofiZxC{gvYD4?9AQt_hknz$Eeg4(<3AIik zb8U-(!MqO+tH;o_u(&X;@e>Y6?M4@BgA=eDZTumXH?*L0g#V(9DLlz+^pGsQ2e{neC&`!z-i03o9)XsT zWwCelkTavvhfj7J1|RzL~H;ZK2a>~x&)qT*WJy>;zQSF<=RE7wqnaC(~m!Yq2#c?jbgQ9cT}-m(~0LV|hMko5hT zrI9xi-8O=IUev50Q|!-J66Zy*?UuVaH4PxiR}4YsOSg;Jg&XPHqZN=<$Gv{#*3boYxR| z{rla#E&^cY7B>EcF@8YAEX>b$hEwu3172jFV1-vZ&q}p~BE_AFqo)#gu1X zdl~-T2(o6Fk~H1gNK5QI9VzwBP~UMzmp97fl3##5sk82c31SOA{Mg*LoB;(<;(l}J z&Lt)Ng5To!NYJ$t9>xtGmjcC}u}UQ6xzrDAd_&(0#-qGQ#2(W55304{BNF?6-uqJ+ zXXGp;&an-)UgZ<}@l=m?R}zPz>*nktJb!x=c-O~UIJmo(qvTXnmLpj;9xka);Fjs3 zv5>QlZq=4}f}pD4J(HL*H&>Pee>$%_lPzS5x7+5p(C;U7Z*0mw2dx!%cZmdyv*=1L z{nE1@lhTsdW4U<~_?|VwjXEp(+i9oPe%fa#Al4E`D$FYy{}zT8Fj%@2UiAB1wc>Q?5NI@v#{f2e>2S1 zqnUpx?*hAU<10iBG6+(A8gKH&RmGdybC=eG-44_{bCD8u(UpkF#<0J!$?dN$FzoZo z7+^e<_3uVOEuPsTR&81%fYMzNM`}FEyEh|og1bTY7uY#&5dy9>o}*w$B|?%}n+&}9 z`<%ykqLz^vWu%rEn4l-om_K(^C~OQ_GmWl`i^#&kqH}){TOirG6w`c!E@o%{lee8v zQy%4vE@eWIF8LTRBV7ELSA#UlyXsHbY$HQ;t;DG38so^xf@EE^*7>`$yrw#edZ)h` zBA{`B!jc}J5VNbq0kZi#T7w^Rx$duy(VGI3#Lr=^*qzcLKYZ-uelNoMUz(LJCZF`D z-jyd9ZWl&d813)@#x5Ai43;$$n+u*H?L)r->l+M^+On>A(E*Q)`r?J3Z zU(8z&D%Q=8p5F>SAcZb8?ONXbFtv-Tm|GjNG` z1ivR$T8gb`^G!ekhV){wvvV!sR9418QX{Y1mDl#Eb~S{ag+G1mv#T}B&{80L!-XU7JCZ z57^c;c$4G8ZaBrw-@3n1qpP2`Jl#S+^E+-H4PkyZ9Z5ZgE$V5>2)1Z}%eUAN^bp># zG>Nz-{FPB9huLRcr!8i(3G;FHuJkn{dz`e`IV0OVD!BvSkzbopnOYRRWW4r|1POCs z-+gEVa8(vzyp4I7U}xj8wvle`@GR%l%7ET1F2Po3#ioAJ&scv|j~jTi$!x$0K<)%) zCo&Rl`Fqkj5b3lk?4A{QhmhRE`*(xJK}~RG?TRPR!{;rBL9BWUlL8$IF}aLDPC>{y9|7vYGW5$g4a;H<7J*w(gWXO*;In^ z@zHy|FHDegpP_Dz2X8+S&UqA~-<|3B0KH`%_cz?&Fi!r)V=c03QwMbKdyWBS`{Anc zY?^4_#UNVuj1n5&z|S-NCK0QoFRc?sj0i&)==5Z79~@SYGNi0_`FE{`UA<%i*K5?Y zPB;xwQ;HAvBbQm=?WC3O;-mhM6j!Jj4O1?c@buiDW&&oQ7Dzv+te_fZ#(IAo*TctR^ej{YOG?+}Gj;5kX9_WmuJ;Aw!F?z_vGxVhpt- z_l@Ja{YQcy+)-|*y%^3;6p}{xHTSp@(@kk23pV9mJ0ak_vc;23=YnjW+B?1Vgx%wV z*=NcK1v2CjMIu{2l5h>EH(5OPFgZd(CFAIPxvBb>)}Z5+awMFvknPitKYXD4B19=P zZ7X>@#eJhJ<|ae0G`|@@Y}l z!l`=T2Jb~)3MSZ#(lS5_6s>%yMrWl|*R)p8fI#SfF4uTg^F+!-iIN+T+0GNur1G4j znKTuwwY0(M2>rHvBf)Y~@xp9bR|fbV2~TB>Lc+Na*}=(B;*?X9UAW6rh|QfCUVdpW zxWL)Fq%%UL|D~};I9AxC}RRFGZ1a9EaDTa>C zrKLHpJXnj}R2F949ZI0`!e`_A=A3>+=sMH%2r#S+?%Mc_xE{m&`6D!wv+>*X2-e!H zjLzugitKDa5D~T~Yiw68ecU?jVo7BMG-j~~OCpPx0hwMnEJRn56{Y6XbdP$%x)@V<>wK^^@Fo&sJc1%$;-7E9pJyiEObfutWXb zEEYmHsBkKCWom;#qaSg^sF7=uLH9JVzspOLoO!F~#K(PedJ8T|q z#_oxCVPXYPr=h6~PeGV|eIm-A$DQU$fYZ}e%_^Y(GEd;8%%xw}giVdOr2nK&fT3gl zqD;DFKfZX|1S4}qSdOZQ2ZLxgm$LD#zYvJ%)S>U{&%mMsee|vu8W*bE^|NJb*L5(&<8|Hf zBa=Wk9?oxX);EYH&G@kTaml&U52mHNao1z^f~I%d91_C@V6ZdZs;TRk#V)ZBVJ|}g zz}^}E(9wY#bg2$cv=oP^$6joX>9JzmX9soEHryLmMt=CnnHo-ArJe;qpO&= zjp#skacfj~H<^Blo;a@TxX2*CTN(E{rNoA_p9K^B8ca8vNwJPe##MkzwaUg|`?(Ao z?34G+&w0qRa-aS$|Mg3bLeje-_Weo(s?I|Apt~-uJx*d_l65?GNIy4+c**xHEpMC% z$7^gzL4r+&ySnqy2Nld$gAl=+$hNviz{s|GtF}>a+vnaz@CM(JvkRSq>Tmh%$AuOc z)hKc$20V~?zE1dc@i>_JX2B5Gm4mQ|E zoHwp&ZN@qS;h1OE!>;ZLhf#tBX1JD6haO>ta?@egG=VD(rbBMV4GppB zh1Q03K`n=;#F^9m)(xPsKx&ytA_Pa2(%QVhj+HwxWuy|PMao@q-uAv?Ggz@y^U%uX z%u$5+Af$lM#^tUU)$eJj9;!w*lnE=dI97zD`iAK_d!yU-&}fDa03^^vVKTQ2lsgzK zj=I@4sI~z5yq=n5&75893%p0bf*|W*y;!A6Vx8Lr12R~3$A^_D9tq0|@TCr-!D>~a zzwp3;3Z)kKL75Z5D6b0{K)Jp`^pi2nVogrM{3k&QbT3QdR@!IF%oL}cg>pQLiu0N( z6c{kqy7^gR1ur3=vQk(nSx)l9g1V7R1G(q5lBvFG&5R%kpnpl^4+1cQPXmY{*4-(11-% zoO1B9o3-S1J3cvB;9km zS5RmeCySsS(N+|wGR(Q)Zu!a?q1|(1SQ=omW{YyDkqf_4b{Wh#v(jlO%$5w8>i!ZD zTV27(MwiONS@aToDzTabsdeXFo!7o?8@e#Fpdv5HRFYafNI0Kh_YNGg zy*ETt?a0~8(Q%~Rfw2^UAs)?|z7hOLVKg_8ARlIxQt9My#4$TYk*{KoTX_A1vn~g= zUhx$SB!*T6f+0I8u4??9B)<<&u9mos38^kvBhS8pP7abOi-iAJPe(vcpb5rXC!(C~ zr9Mkl_N2UHlCsdInUGQkA=~?L!#Xt}jk&S7Wa9a9U+zgj8d0)eXiICSQmBziAy1Ag zjy_5-_XU+zt7QCkO)<7LNj@}YLo^@i$HgHbC=hpl&1Th~ z>HJhj2s^^!x=ZXhEQ)$#>onDcG*PVjH}uLk?@WaklFgMrLJQ`fvQ#A)Lo*p%yr~oE zRX29#YUMpstE3!8)*_uJM-89+_8e|%WGIT-y7Etzh$^Fu^>WyFoA|y7F!%zSM21e7L{011 zIA}CF`0?ly$CPh!PdvMJ)(KhzFsdDwT`@(V0)p3(HlKsTr;L(I=!g7L1;+)?n$vx2@9@OjyGZq;a5YJ5!p;#|; z`tOXlRIYtHfc?^0FJ+{!dX;h7a5F?zy1OPSAvO~$-6(kCj)$5fUd|_{aN^~+>g>_M ztL6XDdGjVJZTiMM3}#KZd48_A8@Lk-RC$l3vggrRZeE_f&|@xhHay}|79`leP*)X- zaN{ib?kGP%D|&5eF}S-xAi0^+c{Dhgd>TyH$Blkd@PII8zyZRldc$kMduBd3#l4QP z`*@XNGVaN+qMcho@pgQud>b-3GQRcRIamlOuCj>GksA01Gpf}xBmG$tO*4r`)5Umb zrl0^N#DXlbG2E$jR2`Nd*>FmBFROa8eytu)lzN3PIR|PWokA+i#)8O<_5i-?{>ZqC zC?fYUN6!rn78>PXFLlDkRXADomn(dxm+2#cXJ`rNOmrve@rYCYyC5nu7#GlzrOl|F z@3B+svp_c@`}k>tO;CowTZLo~?!waBQcrre zW7AxxqGz>G5S8Q5bNJ|{rTGyR`5SSbRA9hc^aX_xoW|>Vq7b*;vf|YM2w*zF7s?-y znhY0i<}AZ2m2@4@cu(?qy#&_{zZ9t#amc~1{B*D9mtx3F%5aq3UVpDNtn0CpDxKII#59E3Lz!ksN5@Km-^74(PNQt9ctIvQ z@;AXOKl&2LMHZ+^Y6Dixvrt$5MlbS7ZN{ZWWVf!r5Ft?uId_!8O>A~>AGf0!!DAMD zq@${I>s#J-_)Xi|5|@R~5e^@^wEhOC2Uwd|6#alLx&&|+l@A8_cN?EnqbM(LtXRL+ zg>SyOfxB%~>n^g`fo~c9lXMS_vZcG=m|Lawb=De(A;+l<@_oTuDzf#+>T(znfCZy% zB1zUW1NN|~6`*VEV^TN1cY{Jfu+f6oAv z5sB$2vCY@d0rL5u(Q)E={aZFP-Hp}p#88NFWouq%F0ml!sYw?G!xs@@lBq}v_Hk4zK+SCBT6y1* z?bu6xL){3Vc2T?EISA3EjS|c6T_ho}aemA}={QEA2ANVHfvOn*1aS9-0uOh+vUaI1XblYpg#SqfGYfrGrp^8dxQayv- zTZk?DXcf|k%)k{M(8#U^4BSu0R1Fjmy}@#yl1yNgAcwNLWT-Q^4w40*TGAF`OB#0f zc^R)VNfd*u0YDowPpVd{2OO3TdYM_yJCSRQ8s;m9qn2c`>-q#mzLv=Lf0FX;k1iI& zqo=pM+NN;{DGz0~VockDYVUYhl4mJb4tL4m^pk@^VyUh;F}LOCjm^YAM+HJ>IT8!N zOx|>tRBAZ<#g9*QBWd4fc7z#|wG*cOn{J$kiUSZKqXOZrAABx>pS4yiF-rEvIlLdmyl}Op=P(p#Ad}6+mSP;g5%+sZKnNM_^z?~}R_qwjuZD|Y z5LWs?5+(uSc3R`+R~8CQEDczo>C7jZ?lXv2r;l~QU$cJ=@|sC|Mhbo}VSF~Jqi#>Z z0-4DX5_IU}LSYR=kH|s4Xu~UFpq6slB&xoa9UB|-?F*OJD4V2GP=#p7WjPKR{iCn; zMjAE>fFOkBPVla%w#OyF67qa*hpN%FZ+Oj$*cytCif>)H&fe&22_~)#NrCIu)VHKZ zaO|}YUpQ<4^`Z-~>aF%of|p_86Su~Oq_P&kdWtoin4!dXw7UPL+wkG7>+tnKV~*m0 zSuRTS?M7_Vf6eCcaG7M1*9&@V78Vo0bZ>0IWvGzI&~A`$x|p($l;C!eT&Hwt_kN$Z z_LRgz*VhDN0^kgPnmxSC&WjKw33 zz_t8sHJ}P=Mf&l1W6Ffc$tXMHPc-HLnE^Y1sbI#;d1`?)CndVf+E7U@i>rxfcAlV*KR1BIwTYv}9^wL;NuON8^TE3dGI=L?-EL zAB<h+)BH=UV1RvKA-5KB?5D2W-4shWYg97OPP5Q4NY3gQ^MdVv{dp3I&F$3 za11QsCgp|@(y#|;F9OdL4^w&yT~{nHQ(kZ|B!I{M`I%|v>HU5gcFCo=Gb|y3+2#1L zu}3DG*kENC`KO!?$BQ+fuSkz;Mx#GmoU!#hCI1(Om*N#xWTPc{pJK0XfMf)KhkdSx zh@+q#+Cf(1iiw`hdbig+m_EtU>Z~-03Vp>bRlE*()`tE@^%aowG{MJ0cwlk^>fk@Z z=~kl@0hJw3!UWAn(11dbPo@u$n-7ZbSG8hLZ)3+8pdK@MZa#GGJy2$lHpKd7r6i&z z&uv3Gn28)(fOXbtddsV8n$AO*g{6$t4Y)mI^0rT4%G#viFH8H~BIH@!N>64&&K6VW z`snbkxol+$F#Qm&V3|xeIC~vQOJ{JDZd4~;io`6%v_o>0F)|vE0QpS#z2Ivk=91PO z!;7ilY0q~l1*X@ZN?J)9$xfwkf5WeiQw6EYsW!d_Zh-|r+%(2_nu-T&*zGZHQRTd0 zEec-7gDl#c5`Hn+7mLKg&nWNMI%?s+JIpCYM(e5Jli+uHtOkvK_5(kq!Fpn(hVhU< zvA;{UE>y|Dv9TrxO_~5H?TP!O00RxuQw*oP$;1op#Ui>_k#!<(CFMyg1%s-2Ya8vE z=sk6*q^5Y=l%ha_X#iy$?E4qv74hvi)=&AX?PVuEa*X=8u!asjAW7-u!sjhY>|4dbwJs7_m5 z_+gv~KaSqst2(MI6nKH?`|`SFA_T-W)oE$f4XZZvqz|BOqgEhW@$}#D!YG^lwPwb6 z#Ne$Hw4QA2*t+A^%N~Rf8E^wL`U%mh@#YTAL&=WzuH2CSXB-fYM{~e($ z7HKH4u~m#%{D&Qa4bPTC?f~Zr4-*U8iIi)-NqRZsQ<%ak=ybhxat3-ZN;C~(`l%xA zR`zB76df!+2r_a-V=N7Nwe4HI>sP;MwJi%p56_8a)yFasLOp8Ycw0J6{BLkMpV+eQ zHWf>^+}*9raI!x1j>%8r_NgmulEO1?W4+N~49aNO^ZH7%k|rRKqy-^}GxY=bmZ`bd z>H-YiJpvj=bjhLl`2(UKT-%ljTo?M{v=tj0CYQl|?U54FDy+g+Ui`l~=O#H*)? zl^-?ZDv|@B3uvu@bDs|*NhUS_@dJlnsT=E8TnJ)J2j}%XU4t<5@Tlt^3>5QNc$AQ{lv1lZ9ngF#3<*URC^4GHrB9)jO=?utSSxTW(`KYki^_eR66m zWmr9qptJSz&Wu8^Ek0MvqpRv5K$(cSR;lsRnq~|A;|QL}Ck8*66|eGdOkcWwauNQ~ zua-}g^`?L&!PIY1cIfrJyZNa7NuAfS<5luF(;Ixtk-`BfkU-kkOXv>MMPECoiBM{6Uk*-NVuu$2TH%LZf-=U;C0g;zuz`@{ql%O#b zb?o+Ht5=lQkTJY*Ka9AaLK99G^d!6|3U~{~l%%%-&1#66vZAk_#l^lWvWAqQGNZot zQ2}Apzn_&66AHu!J+`9EY3p&m3?n}gX1z^Xn)`EM9A`>S>0osCf8RV-McH7r8^`8DV!a3E5ifKz&wJp2k=*+|a2=;NNT1gH!0cB7{?ILz4cBfKr>|I+23VT`@gXik| z8p`)TkCw>-RQ9D5#nZ?dI60NMf5yq11kW3Sr|b41yeLdr*YF0aA$I9u(DviCjWlys zIgM#;Pfpe2e2mR6>b)1~{o+eVxW?r=tV{VvDE)|Iw&Y~Bv%OQo9gP2RDMO}P4OWt^*Sp`xO@{G{3FF#s!U9?FygT~DEB%&!+o(2-#F<6r zr0GCP^-IS>Z&N=3B9dGv&NZViOoHfhL3sUfwgDJ&LBc>rEOsi)1>yeY!(uAb>^-sQ zzQpmnToC4og=VcSrt}4dTW*pqw!bojZ1x=g)v_wPmC!FhogRJ(_kK|KS=&gq8-53M zk8Mm?G_SkD1CoWP=#LURIUZkYSPf`RYJF*-9128;3#+dU%9e9`QJRWCJMeD?`xqhD{Jan@D1fLKS-gxIT$*XEl zEpE-^iw9cXE&cv z0-<-dJNq1KAwozC|2BlGew+*5^eE-AT(mCv=VPC?0?}o3{aRG3qFm2hQs$O2qokGe zH{NZa;ET*5Do@uojHK1z9Cu8&u)olLJIMP$pnF=*2QHgyq^dnp&>n~5GzA>Vv%$FR zR2si`E4vYioc~=!02;>LU+cct+iI#_-=g^1x32Me!a9M9^()ZZly!)zgut!|IsvGE zXk8Lc&}goZ%mb=PI)OAgJ(DsVsj^+~qd`sIrRA7vk%y2lmn#Yo0tT@&5^ zXnT5cSLeQMulH9+EuB1z)`jYM}3=09~&L)y!bgt_* z*z=Md^98z0?!PNGF1>Je-oluGor!igH!;-h5w9cx&qO<7NpF&cie-q`J|)))iw8>G z8Me}8WNgHm#O8jjvbiPcU-2K|s&GZO+%`NCZXa4U6@D>~b!Z&rnA#usObSf07O40C zv4CSr7Hs(T@9P;!IAw4L`rmTZqK6q#p~_0dEBSHh74Ys_eBVvKUg}$u{0#8AS_v|Mxp5Z=R&o=b_D_5-fq!r0a6|pw1jCmoPkt3 z6p@wh&57}2IS?Mox*B~qf%`v#%o=O=HhMD;Sd&y3N_oD&<#qY&f*58_9VT{z zCWLInvFYc8gee3$$ffv%BbV$O(#hsLl50o8{)=<>(Tzjv$9RSnFN^~N*gRXNSB6D3 z15EV6W!AGc{7BCt-eC1RlZv;;TCR~WaY=Ljbt_isQ64EM;8mFk(U62TJ5d7T)?;HbITsR{$x9p`O|&t}DCb>7cj8##OsI_>%<=p*#N4PHSI9}>!1>V)fM_oK_i zhyVvx_-_0$N?zVUbrJXXWl}|MdHj!Q67$g1O#=d-FXkuCU3&M*$l zAFrihRd_n17%%A3*!3_|(e67o^ej_!W*OYF^@7$SFMei*sw4ZHxH76?ox)*>3dQD% z&lLFe#Jo;ni{rdC_4<99>x=#a$WgZSiUOe@YPQ%j)xXNsK+cstg)8MD(_ ztN>HOnlmFB@sXVB|j_8SX!1=RcB%e5SneLFUol;~L1 zB07oIoFR|sF2D-Hat;Gbeq5W*z@N6P*7rD#4uedJW)z=f2}(_X-|jJKk!|j;d168s z0KGu$7*PGeJA$T`IZ{9puNU|69f6rnVZyf-b_dyF1qo?c|@7= zf#n1e#?^4*LZA#glGv1n_=TNHkDE(4B_(o6i6~!jVN^gc@04~GN;lUuthts}*gQH& z#J>2z7Nq-1&|O)O@-4IzdP@J^D6RNbl3tPNFGoh} zmP*N^PG8u8IzbgQK2Cn>RqHG5!NgemS~C<-tv+hZA=I>DTp+;HQx?*C@*+rs(= zlb;24^`{O;Hwyeap~sY*E8h&*nrS@%V9AHJ^C2)bK~m@2+AATCzJ2DJTf$53!t&5V zT#%Dwa_IJAvb`yX#x6(_W>`cZiNhSexVUb4f_dWYxf?o|xOcpM@@`JAM-%|p=1&Y> z`-Y<0?J`tks~Ad~%weg9#__;cw{l1J(Ox~KV>n8qcvKuYR8(F#OEG~u;#s;QzV?$u zS&k{nu}1mndXa8u30nlQ{v~E-{g*d#X>x61TYO)PKBbc{bvnflmhC_bnftj99`I9ZbZ`fWr$_HE+9=g!Quwns! zWu*nA__~J~?zflJRidVVmqsgg!8vL;PAjai>iUc^pBmldm1eN6}KeQe{^6*u~d?v-y)SaQ9K0@8B>5Y6v6m zaB^}>IJe_B#8i{)v!B!e_d4gzTY+f#dB8bd`@W9BAuf;22hqA-rL5xwYkEl- zOUq(a>Tz&I46C4GPP!eYp&FNOW(qnVZG>z(J_&lK*{-3LH^h+PoVgII8?esyxoXW9 zeqYfR7%4Ez2*pZ%1a9KY$udc9Ti$cu1j$vp*;Xic0Ac4M>*llr*@YsK$$JHbsi388 zN|x@|2lrfCQEK77 z!B1^~Wcp}qV!x6W2&OkTvM&O$Sf54qGHI|ob5LrFS7VmJ#Uve;H}7fxx`cf>Ds5Wm+i`L4;onT+Mn^cZ=xkz$Cm*}FRAnG?0 zcbSvQPDdvLv*1*EM93nf=g7C1D;J6FH{TQ*&=nh!vSo4pn0MlIDQK>SX(MA{s# z(ge0{mC|77kz3Fv5o}#W)c>U*$Q7vbybG1mlZ)b8FpB;D&Xt} zURF+J>d-e2+ju<`<>rfVLjG|KVl4qMNP5tWoN$SDE70n7M&~byWH*E6T}vUY`;{Ik zK10R}0JdR^D$d50#zE|V2@eh~=+^O}N+I%cznOJtTnLGfQULUIx(JgtW#LLX()Wh6 z3;D+?#A4%~_6XW0%QDB15WfW}NVPrLcN_Uuk~{K0ihEbf=U_1AcZj8gGl8KP`917C zKw9a`L9?rZe;jH!crgYtxWN&me2>)4J{VvtCLUs8gfMq(U z7)vW4W0IPYS_zrBDVfi%sG3CQG1Wf?;K8EM2LYgNQ+pxAPb}*~7KwuLrH4+UJgDzw z={0Hj^;CLiWzpRO@ebfBi8FcLaEq~hdxzGSiBr08z@gI9AQ$Fb$vBmPU~uqAj7dOz z^qv!|ByEX^wkQb6g~!kwQ8tZ6oaKOTb>VJlQzWn1^`Q#b;kh%5U5M3d zBCK#g>i)%Er+mH@Y7V>h!9>$b^L8=Zz~AlRB8LyyOQ@qjm2v@pwkSx0>9Ya6=Yae% z3}4u&e8I4qsIf3kh`FRC8fu_=w5E4+wJQ_2gvz*{pvt#qKM@>Y;P>_h{~0+i;O5i= z2}sV|b`+(3SzOtxHcX;7El)5m{Q&5ZC(ur-IV3V+*SDfIw}+QPykIWNO@D~w7cF_5 zT#S#MtCSIg^B3N-GHm<|%tV&>S4UNhNUg}v*oM%ha5`DY1Y4GYOa7%I$ay0btOy{) z|C(2{j|FYXUJnrmF6pc|lfcuf#dz-f89*-2mnK~*DK2{A zi@Gg-ZQStZ&a8Jd`B=3GDN{Kc&gaXTj2CH_Q8JmJby{Oj~jG#;jzjL9P%@lMf(2!J+n`L06dylPLbz zT+I<>ovyVYP-szmizK(=BrU<@3_=@56410Ml4P@<*&9!l8usr_rNntK7io+SpdP3z zv-K|OBo2J|{+={*EUM&?EbWx2d%n|J_IlUNc8qX?8#7&aP0=#rJPO52g7`T9M;ZcS zg)9ok`^{hCi$;S4jOxt_pXcg9O*huc@4VYmfqGgG-o$zq^ql2}&mxRr3Xd6kNs z6Q(?~LS3$z?!E$M=9VLfrl5ity{2kVSbCimCM7uem9OeqYtfB^ z)CdBUPaIE2YPf_L2+Zb4%x}?NgMbreK4f~;I6a*>OOc8iiE4YwT+nBotyl1l2*NB{ z*^sK2cO@VgN~o(i5vpz$CZ$4{>Gc@CHCbcr-)t#k?Q3o<<1}SjKn1Abc)CKYUV*6T zb4Z@a2WnP>=-={lbA(tSfBn5=e7ckqEj{r-j~4GxI^lu-(@w5&=;-xa`Z!X&AMKrR z?CBBDx}{mvW0p+?>UHkw$+L@r&Mf@~*jzmmATjX{BzSfkL^2rjLF2o*DQKPgg;(&X ztKL*PRGa5c`c~nA)oPYt*##%Q?(!esUPuaJSKm|N3%hT)aC!qzX#CGtH{7Q-h_a_R z>^Sen?}o!ObDNzW{Qe*Z9R=nSC4v@4rWoT?=63rRSwvrCuTQpg=`?2>MGR;kxwcjg zEDB--X=!^Odud7z+f*~-{%qdjG7rK-_2otY8mn4>xzZAMPL=~j$Y%uksW`i;l-}ou zSJ9fQCrYvZ-XUef@Zbk9zIAxb5|e~|%& z@`qlkCk~3cT#PW%EFH^GF2VROMG?@?Qg?D}EGtvxHuLatvpz(kmDslx4P1?&fie-z z(9}XMESP@~23uIesr!zH!)0k;^7y)XsUO=LS{pG-B38Wyaw438_NM{y-Lh~isb=)9 z!@DKTP~So8%tYFVY{QV&zOFDrBEOi_ssxv==;}r!fvpS9Uqr0%14k3Egub;4s0Z=H z{CDLWlAAra;}+b1AcR%(sgG8}{-FvKNAB_+eg@l!nl zPMEONbYoC|R!NlSdDPrFS#OUqUy-iM5Hv$xSH^g#Iv{N@1}KUI0^%=r?-%aS{s5eF zjE1+fm%CnKW>}iRu3hrVMS1FG815^!V%DeUU8=6((25KQG;7Lz9hRqvWmGq?oX&X- z04TH|`^azQoq+kGcR~Er>PoAJVKpX#j1=Y2%Q#C$Hop>XxZp!ZbWd|#-Eq0{Gj>Cq zbGpV@t{)B1rC%WW$#6qZOWznvMUTxVge-H;L}FRr_mVqE6Euei9zqNPJ10s`V>6=G z(^A%RoR4lbX8`0BF_MGMS8hlZ@0cg{?UG5pAXvkv2GL)I7ZM4^2)@o#Ce0x!^2;Vz{O3` zDd6cod1TUwH7XHrx(QwwO;}106<)K7Ruyu-|DdOJyu;P+ry$b$c`26f(5UQV|9nekpj&9J4BN4tddQJql{9G667lf zI3Ma$EHFf4Md(3>ut?QguEFxlgR;t0T2D1~d$#XwD*e8F#0>+LYC@e4md@NiYNzUMxO$<%q}6%>Vh5?xS!Jx zu7CXH@R;seD)V)z_HHh~dcGM2vUe_fj&k4$?f3;LTpt4Q6o{^7PVUe!jx}u6(Zptl zVXp_QNm?CKEl;gC-^)bHe|>|8Mj{?t42oCQKxdCCNE))C9F&AdLVVevU)EOsEvem6 zb0y+n2qd9aUh+*@g7e#4UiC1oYX@)sGnBy>fFHLAv(CYfE~u~~3nS;)Oc&|CSjsRo zBkgZC*aRmCh5Cz2A@39;P%(Z}*D%1wv7`OGfIouQ;tACkLJ_iQDIK{r^M*H=zprUp zB^t#r_rSb>>bC?yC*fo}+aS3u!ZV?ybl&K(0z>QlU72`rgohh*0)~>}KtYv>J zic^t~o8R+xP>Gx9BPqsg6ZI_Hc(%{a-HtAGH!3l=d5+4N-QDf~UZoHPF-72qctJ*v zjM62XK_mAo$3`N!)0D}%;NUqm24+_uyMzEmkowirGwmTFg;wSCnvWh=44gMu@la^)C~p zveu-#iZzcUnz4f)jgINh!&Y#vdzZwNmgwoqO9x2L3MPOMyJg08@f$0$4Yz3jk%mdF zq5@WASb4-v*y;JxVEDRt)6mO`#HZcdBjZ0eH-#NvzaEXb6<#r+5P}Rxr6(%H;sHup zUynFoejH)zAa{koG^~=0<-YdlwfQ6O9iDj2Y{9dke|MJy3VtwUw1KA?tE7$Q|CmVaryBVGo-ue1F~p-PlV*yg6V zrT+V3g*e$)cy z(|RcvSlrW%L)^O!-~6~Ob{tl25P{ttoV2aMb+c9-aytQi`fnRF!Qszv$5^tNTIpk6 zr5@u5I3u3V?H<&B=BVi2EU!(y_N!d$g<524>Zn(y8-+|MtTCAS=c7`gIm6!>ToxFP zIwW?!RLa6@g`Zs&@LDpk+W=6g3D71FV<>8TiwSaF#O# zii>Bc(-lxkfc?I3-|w(WlO_WJzb<8#!7l~dBahl}K|LSAkX~h2ir8;PQ<4)byF&_- z6R=*=$$>1y3H^04l;!`!u8n>htSXr8bTS@$&7rr{+sQK1a*8Hn{IXOQrk%Vah!v*n z&x3Y7_P&>g)ag|2gw+z~HBYV)_-9cN$gA~fl9_8c{YV__NY5B;|Cic7a^p~HuuhTt zagHQEy+vKFQYYo}mKhMjmx%tM2@a>@9wg8j^6n{!H~(;7q`2SGg?W^xBMo;RDPj;T zJD1KmDs`@@&tW>rc#$-H5Xw)u**jIAdI?MOD&u&cr-9*%JU3F>QU=Nd+BQXX(D$KP zGs-aR){ybykA6{}#nuf0u}o?kXDSXZ(78>DxJ?EYzx zAqG{s6}m&WzH)y?=}H7c%BBZA?A1uw4B0Uow!93OOe~ZLiwU&yB z{~Zb!x`TQ|*znM3hfO}kp1=nIVjIT%vC1E&yrhr71>HHA7VhD_Zpx|CT^#UR4*M4H zAQXP{oCb(@rf!NepXsYEOM|i*_ExVbCDLu)cG4yi1Wp`;yE%%Yff;FS%(lvR=M~tK zfJ@mQpACPNooJCR%iGIl={-u0RNSpk#8;;>{D~e;@fd{n*AO9*%-D0dA}WTz9xaB8 zM4w|$87K+qUF8E2h=pZm7B&RhC$MhEneQfPkiIumD-XwAeKz4ivz|rVZ=BkKZFNG< z-ZW>vYPXwgdx|@dE%6$+!LnYT+MW#n!fYQ~OSw7fFZI?cRo zAR03%Ey#TLZxktI>O4GR>E_uI<`~e28_%@2?_E>H(^LW*0^4-OI@V=$5O;}vXvsc1 z@3_)~2Gdi9P8s~0#A3-~a3Hiqi1o#2d!%6)xtS0P3Y1|ID}c7tS}GWm+jvt@SS}B% zrF==ZvG<^+{M4PY)?9v&K{zc+u+XNM8|dR@s6T2Nvq>m~Oz|H6Bz*?bz;6^VlSFvh zUV0cF>{a69V{%s#t^yJWTt%WvU-Xs`DE5u2|C+Qs+M1Mq%RT865irDoMrlEJ8i`<~v#wbm z46!Nh4T#%9d8o#CRbFEbyIzu!l&rvY$>SXepShvljP1Qop_{;SRk;E^6M{$r!I!*a z0t0)gUHKq&0_o2M0}sH~01OG`34jx(gO%!P;i)#ti}qT&I07I6C*~@xun|;^4jA2u z2w3S$}3jUh2_V;|1a-PDtA$ zu60Dx9a&ZGt05VYBS!;Wkm?UpF}auHwX%FJ)!nJ5%&-Sj-l8Fn4C{Y)Jd1utLNGF- z1i@Kqr=u#c1A_gTF4mVdvY@sf*GTJM`_%lcpEN;wQFo6~MhOy*i~ywuxP%adL5nPe zw>8I}of+}P_Ano{dt%P*9=E7j7D*#=QUg*Kfi+2#JZ#yxuujIsEeb`T_0EDHi(52U z6jBc&LV5%hH%IT%+75`5#p2f#dL~CWbk`AdV(v{paJ%TdvGd|4x#9uX|Egiy+b?{@ z8)&W5g@T!eA~+o@y`ONkD8P%YIJd$Rx&u`bBwZGH3pZk!5A10>jw( zxyWMq(;@PUM-pdUT`4uWv-K+h;3xo)Wn+}j>)ysOi0Sg?F*Jd`2 z^(IwydvXf>WfVEnFtUL8B|%k-w!7UunlM&7NHEBIR&K z?$nj5?HvV1`zzM7?%J3q=YDm~u@WhEm~>F2pB8&YaGGKA+F(tmD$E{__=OqSs};Jb z1H`MZyA8g7M8#lZks^3nuZuE=Ra5x{=3VVZNtXrh_NaJbt{-5mxg3bNyoC2_N=N^w z?CWyZJBktZ#v!}5nl<%_d4<%!R2#%p38bF=H6rg^4>J##rqUN=kvE9eaLBy)?qK-Y zrt{7Wd_?;OYW7=Kq`?=uXT>fG4+C!lKA=`^!YHePGcZe*qiGfA)Y=uuM@FYgVrYBI zYS(bc*z`x4sroSf_UdVN_>L~n6K;LoY9`&24o}_Nbtia#N&ygUA#O2d4?N`9?*jrr z@2|-P#!Yf)w?Bp$%ByddKrbs6BIS$E&X~u7dCJp8Xj=mLkWNd<#_sc@q@u~+vbnv& zFxtaqGty^_Q8I8i91|q`rAn1A!&nI)Ey6Uupk~gRZ%J9cC!YKYl=j(&dhUX&&2R_* zxBsCqe|GBNhgEuus6V3aw+Hb|fy_y}T=*zYjV4YV5yO-HRd*hBDBW$*r>blz0}LUt zQ4ovxLHfFtf6y$2DsZARWf{q5=9#Qv6g{nFPtn1#5b{Y5;4#MTt;zEnor6Pq)mx0L z=Q}o)Uku9%b~?_`2S&Ckgqeb!i{}&idsMve68utKS~5$q^t^w@R8ePea$vP=ER&`J zy|SqN8&w0&F+&0x^ zc(-PnVCdj%)G6A17#@n&%Ntf(5|%=wM^4`-tBY`^BAg`4;0;9$?y1jXnf%|2sMwV5 zNV-?CIMQXtOT~@)v9H+MEqZBv$OHUko0RZ%*_|URf7~|Z#DwqoTVQnR5G29k!}yEX zGE61~Oq)}SsMk(XLXJf`mpFjKSPrhDU%D13PNI)yog7&W`1mj zS03nAwe~lsSI6q^F;jjNO{gW>9yfl1LKZ?Hfm`dmPy&NWGykoQDu3CzE$e>?o6i(# zePzAsE*(I90>Z+^3wwVc<`TeYSK{wKNjoWm){*}Twx(F_1g4BpkB+3wU-znIu6hNO zRXq_iyL$*>tCXn#!fpp1IuAZA?d6&zleqiE(w-;CPI5gVK3r|UdZ)+n`m}^JR{-AC zmqE#U5T+PRdyK++1+cKHVkm#vNzK#SFYcQJ5k1F+oM+%7L;m9;ot9IBsa)_iPC& z&6u*QY{3&4e6OxceG1CDX0EG#D%Rs7VP~VXc~l4*$y^Xkczgi7Zs=PALEs95e7i;CN!s#*})9S6jo`sXy~&?+qv^;4)E zY*u-UR6B+t%2?Rrpsl3NX7MkJ{y?)TP06!oXtfU!nG-5qz)4ex`W)|)UJ?+4n_ywA z+5N`~R|$M6Jw9mR-%zWCl0$^ZwJ|*4-S1G~budrIWmga>NU&MzWEd`6z4$@%x5~5l zq*rhYn^p}mGv4MthMn1h=iYtJ82ppv^-&!`KZNucz;=U?rrhFjVu;gPy*GYSEa0^Hrg_wVci< zGS*YF(P5>b$9xHEB^TGLqPY2YF^iJ1Gw6C?!YR_Yj+kfkl;+-G9k32_R0;Ie3Puk& z&*rY^4}yC|If_H$_0Tl=DXMRA;Rpb-&uXB$+vq|-8Hd)TRMnDJ5 zTWGRAqlSe@nm?!~$9m2NQ&QGFoEjgz_X!9~Tkd-Jz2Ga=X5{9800baUE=`TFg=8?W z3t-nQrk}Sds$(m6G5|YgvIq3puMUeu{Yw+ff2x3w-u>0=7-BE{;Cx5m=~la`ebT%@ zqdc=0O}qE*PL390{-6N5Y^4thQK%zajNLhbf&lw)sHi$!KDhUuo1J|Q0(?EXR_fWgQ8 z9|!P3xb#zMWTdXyjv2rhRV9f)=AqOT!Z_*8$dqE8rqtHwwGINReF9hEXI)rpx2%~V zmANQ80Cv>QeN(YA9Lgmrj|FIe&P*%CLeDwYF1ref2gGQPBu zaX%05#66Lu&Z{90rko4~c=K#cHp7BCv#)-B39yy?auA*}Bil+I=o;cLBj#W?-#LjE zWGnQ75>Ssi<~zvdJ?602CJz_wD#-WuS%LG%8E9#_N^iy)(*qC0`$qO1e*7hs&bYmg zt``ya3*quY-&%Tg#>YWDS}K&cLbbgM3jFdhw6J>%noQ^FtohN`q`V`4_8mmLNQjY! z{<7|s8=5eXxTps2Wn&tj$+N_G7UYJwDu*VLTk42A{x0~ssP=xpUbk`#%-4VW{IcBs z8>O;iSV!l?=9-`KiN8vjPaI;6d%9%~hHm?VWQu7N)*qrt23Ps~hQQulw@>N2!@AEx z|E#~U*y3AaWq?ishM*|-Mjxt4$MUz#qjQVOlW1zqf@c#EFuD4|h3{-*s2y_mT%c`h zozkw}dU1HwXFn0jj*p{z^H6w!aeQ<_-(zp|OL>?o$->*0^a+CWGm;;Byxf)r3ni*u zx@wjPwX*UxWW-B#Rq(pL)itjAv+vjtr19^>&+8XYjW8BweDEUQlYrgcK>C-h8*z@@ z%lME!VH*Nfa3ompDBoT`7q@$jpuyVG?jB!*i=nntMeVA8D(8+e&-e1L3MI+bFD!8@ z`gGr$;Rqz}2c@5Upc7m+5Obp}!(y|`s{Xj*f75IZ$yTUx_+<@bjPU+K=JoM!74t6? zcxGebeh0B7jlYX?7=TOJ6g1x{NNJ}b?Z3o1E?a%bB_G{z`j13w>_Wmk>IA1pGe&Iw zF>TnOJfc$mm9W!#wMOwxG4)qMtV=J=U@t*TcHZbt5_Mbu{frlt4Zpu@mA9nxm1`1Y zhu}YY*{0D8Sws=_?-51g!i=w42O&Vx0E%ZH5Bc|^O*e~_3vbWg?;g{t);VP^F8$d+ zSsALXqL)jycHpp{(KR%%3Q-*|c>!yUwa>oFeJjtud0-7@?v4Is8-_7=1Rct@0__3! z1w$6mqih@JbnT!;jTra(BqIJDKE(DZ8{& z;BZNUNQXU+hE;>;mHNzVf$BG|f+bO7k<0 z97zi8hV~~Vu3#&pBz{)~`Gb>wB+c(JLvgV$(-43iwHoI=Z|f_nMFC&}B@^@o&!$1~ zIE-^Jga*fo&kJ=PP=|{T2$~dUW~7y*lq?qsd+h<7A@zDTT&jjRHLpk;OI99+h$tx* zqiGu2M{P-YRxm`@F1XV)=}sR3C%UBFK?z|U;4ms`XYV%HC045F&bs>(mUHR|4ZrqH zUQ%gsF3_}n%O~chz|vHW(bcot=CYouL+U1%t#8q1?vELRd-1rm9tCD}sOPOtASRBy zh*};%`tabexDz0wGl4097$$J9LvdGKeqrbDEwivee#td;TGweI+XjV7evEd0d9s`9 zX!Ic1Qr+QDdOu4{U^QBW5QG;UV|E`Rdxu60G9{4ed)}B1wi*R?`Mj5D|m}JaI!QB>;j+dW)fxi5+K81gzmZ!qBt;@v4 zm2Cjr0q&0*evar{3J_N~0kcS}9gS zY{eSdxMrMl0oFQzgN`GP#hMn;Iz`&Cf8;a0$Hw@sf(1Ef>*K3Tn?g9v#DiY1QGn?I zTQK$BB866#V#!lSHu{2Uo|QRYr#WJKpq-%20{l_Z2}YCj$k%&!DW4Ue*2Sxge|JQ6 z?Dvr2bwhLpUbf%3Lbn`(_@-qNmUz8IZ#4^UZ^^jBbYgpoOnB-zJ^zyV?`IR3)nX&k zkzP7Y77~HpA8nbdc2Jzt-E)h}iyY)TW0-(T>>{*z*DZ+6*=;~A=qcgF#s*s{+gtsv zktX3W$i+=)!|W^?5L9jt&csA>Kt&Jlb7ch{q;ER%G^}N4U5~)xAlYZ&Tt08_#d>CT zP&(mnIS_=nbG6QL08&c69bSiA&hHbrAT&frOrfRr{*N@KZ*%lT?RS2k1Vx_v>INhc ztK%cucf4yZd!p!fMF40T?Nr z+{w6%%_2JzF!~eo(C~9R#0Cz^B3AQvL0H@Zw@^AG;U683Ys-gYeiIVL(qE#j49?PP zffl=bJ*WCT)K0M5g!A*XQ$!fBpAl*&`rPWX7m60}BQa%2K1V|m0iC1Pjx_{U9dYrW z@N)4wj(uUB9#J@761EEBjRZ^OJYT$6#6|Krk6@ZdnMRib&~*VJ4iD=_V8w zg)MFduor+|<0sFv(--T*s=^PoQrYC7b>Y{|(p9I&%!FHfqAyaR_h;s|ed)-1@-klYDF<7py8`>AKMJ}8-Yy2Ob-c&} z-`No6er1%SFC#!yT|)t~gf*QTB3jTkE)J3F`2C9KMDq8!%w=8-yQXvF36yLEE3P-( zTX5E*m$f#sni~ZSTS2I{=h2)IcSxXABm-Fc9t)jjmFCB+8s!=Oxj(-)i-_D8f-l4> z+sci&6EJ=n1izAeTxgzn{!H5HTb6L3QF!F}L%==?+rz4)FFs?=dwL)hGa0EnfF?En zY~it@W=!Rej;E>SGiYY|Q>E&3g9ElOp?wW%>0F2y|idCIG4L zuHWt&IUvRpYmXq{ze5185a{q_+kSqD?~;t$wP?_|zwk5Wok_8uC+oa-|NV4&Qy- z3XvCIQU4{}jg%vrJ%>tGVU=bcWLxoY{m4#G`U1|PEo6lHbyM`a6`gt>tCb`vqPUj}d0C zRXBVDk~}^JVWvH?w|{kCozK}?GSN)r=Ou`yr-Qp@j)nC7eo!q!2{>OTR%mPz^0>3rBC@pO#I;4l`e?Fp5F;Sef;O*FfIPb>vS`btb6@o zEo{!Z?zk7ueLn*AFB6OAwqYIsm z2_ZCdd)IbunDjujmbZaW2M{ai3$@L@yBkrLVvZ)fD>N2F{-ocj(79@1)?aE5ydjAf zyozx4s~w8^ycz6CR@*8}w?#k@8Qde%Qij=X1ZVeX_E-wG{CJ}zX3+6PCg#DObfl*g zHk2;m+gR51up6V(sG&kVH2eYris4`2>&L`HuxcpIC>Uu>M)nFBjD17+0|@p-AXhN& zXRye<)EJn+A>m(&yT>t&VH1#Y7!eOM(j-pj{RGQC?vyS_7L1}`HLb*P^UPmi?5w-U zUrN4>xVnx#MvIJ)B|gWAZ0=JgN4u)mSr!PBz4?{EmOuTf#D!A{ATVNpzTf7%BcrCW~^oeAi%<8fMV0mDp;LS2UAN-jgS)%v%;SbnMrT%MBg5?~*pXF;AN1 zkG3cc!#a~7+Vo#*3107{l{X7aF1L#nrj1%%B~!y5=#{AqO2kZaU5aRo@Q7~JX)qLB z>Yg)<Ih**#u-Ic%FDTx~h=aC(+6eT8Lp~k(?8MSm{%pUZE zn<418hwTD;kVAcea}%07vvA=_4Q1B^L6&G`s>^NMUk3-D`%F zo7)iDen~zsD)F;4)fPS6bJ7rCBt$2ndUnDaFz3w_cnedDf8T_uX;eWjTx728XSQ!` zP85ZNc!K5Z3>V5Fbfke=BDjFD8_o|*{=!(I?M!Gf!h<3vJXHZ?NOEPaG1Dv?v0iLq zOz7TqsD|WotIM9ck~D&2kNO_lF^^BaP(eZg{3WHo&2ggiTPxWbOSf>gwI#~a5>(aC zH$9D0N0I#aL3xw)>1V@Pyd^P;n`z@_1ynY72Sqxp?sSWE1?hFV-cCpakoev)>lAZ+ zK$Fjs$<8XJ3a-#h{%09=eA$Kz9Ob4GfRx+MAy2aR-PD+AHt3&8f;MCVm21m5wyTq! z^amelp638)h;k#TZv|oVV@Jkdnv?X^#P`2v94w{;)&(8ur>gVix9v=Ci!wU0g;i_^ zAc|^qJyV;6EXK9p_N!$rMI-}V+s4w5MZ9ZGnz5x;oHE_+4Q7SCwAdkhk25j1hP2)G zt4(m|I_aggUOPKhR+ajcH2IZQi))5M6w0n0L}`s9^ywo;yM_N3NA%LI&f1I~9*hN7 zlaSln2}27Qzw>nU#`eGCy9VKYl3IKk4<0*l`UamuC~ie&5r63fLPx%neul#3jr3sY zGb00Vss_Q+h`cxmM+;n5P7;JR*@v@vL{4kxOdrjGoWM>jVCy@FEz}%2@uoEAjczm4 zG$U-8Ht-A>Yf_~KkX3UyNe*l2f~ds`TS?IqYcP9ReoNN@GYTJT^ke;2UdTpQQBw97 z{fa`-e!}_GOK(Qz4Ihq?)9od*SXsDk(u)#_ z$O^Lhh?bJBv7m{4*nlKNm0ZUb|I+7U2TpahUpiNl8WyQGLNAmVEKNWV1qo;)1tTlU zo&z6F;Z)cW{)`G9Q$xI)ouS&0&ub$yP=9O)h^g3|yZiDy{_3ny0olOZASv??MJgM6 zs`t6^KW{Z)@+Lm|jJ(mv)D>{Yrlf?+iK#hyO{#wzz{`waQu-lm+5-15@C^X>@Dfxp z$V?6Go%mwX1^-`rec+1h2NVM;L`2(_5?9pT4r@&R0)6g}JfnU5U70$Nw1Ok2tXp zkmR&&*RuflfvLDPwcOwTXe$?X8y2ihJ}^{pyirNi=Ep7C zuWJu~W?8CpI-Rg55E*SV%AMRT9us?;t-=Az7*11Ej&Z0Jag;L0XLYHi`?SRxs9&ac z`CEnHa)kzcxnO;OzD*y zy=NPZnV)itw8PVyH{?35=E+tNT#)BOgj(JsuSjXfZlv$;(9i!f$1~ViU1Q6cv-j`> zHyq|11uOq(j^)dQh9eVY+13)Q9t5-21(g4M3+XXR01gggy-=+YotBh!9h#T3t zt+VKZHfU1T%x`zKWu+d0KzUIb`S8owP9w(xR>`4dHRW#}EFjckV{}zo(E`71ONLpn zZL{Zy8&9E}#HubJH%x^C&bQbM>N0E^Hb!>cMcYJlK|SBop25Roo14_2b-w=%RC>l& z0NmzCP7y2Zq(Ig5YKRR4$Tmmc?wQpMOj*)!`66YtHAE%fVs|P?;>TM_flS-O)?uIA zLX&^2m5zP35i6v^e)}U(a2QUw|7aStv4nw0InC()ny|{Ew3*pK$VFHR{Fq2gT!lpHEDP(H_B+^tPG~BFlv8caY3;@ZDKh)o&r7>ZG(#mAtvUs z&F~v3H-3aLrI!^Ql*mlXFW`(&6_j{|6kdf^CHXxs$$0w|sC?1r0aaT9tYsh#Z$}WTCCQP4LVv((j-Y(G)00j_7MYS99IC;aT7yCo?j{h}Uwe{|r9m16I9r zi=EbFSi{!7#-H#U{ip#v`ZQa zL0-B49}F^-X+7|O*>4@-=Z^54>4RulwQa^nQupNgTZ4H(8imUwDDFB5eSl+_@LeVx z`5u<`!bFSqRW&&4MNeA%tA_+qWBRN?fC690Zng^wm5FG^5o!eGUR)RRU6)S#PU5wJ zbi`o=)<>$@a)KCj)2c}S`A zz0*sB#wk{Jk1TZW!*?q3H*&}1?{=VyC=+dGGZ;{JF$9VT#WZYzu1^@ofO@N({QCV@ zK{aN%{dn2mm4gSN8jN2PO{{q0e@SEDr;&&(3DaaZkyg>MGSX%cb^4}cVC3f+jlb(u zu>AL7hAp)Hc*G!~H?pS~5Eo94+gp;j_GQrq0xq-;#qt}c&ljZ`B0u2<+XP!dLNP>X}9g&fuYNE&!u+A9??^ zOwQNHV|+v?vCtA3kGA^`PbzjJVhpJ#kq{~~Pu~!#@s1S#zRzS(ho6fP`A9G9T#1E?zggvVS*idJRm<%A)TG4RB@mcQ8SCBSpJeRdAK` zqi>WrV|qABsKsM_fI24PNZ)?%MO77!6xP^*32>N?ogRnf7t8jQLjBQgus>V9fg*Xze326=6)Ab zGcoJ6T7}oUN-1XuiBa`we^Q)WZj;FHD=(QAawxCySwSb;32n05l^>iSN< z(~vzF^5i+dI$iCXLc(I5dO#=oQZ=5)-Uo%bMy>4a!yUAg(mj+(sf$_4_+T3ib3CeF z$%Cy8Ad9&kboWWFU-Xtgdh^lhkTi|xjy9ssx?BVFB7nN&e&4_d3x2RasgW71%3tap z_t8-)r`y2BBJlRX}fL8laib%6R!*ev2cz##4L^j{NsWHmd?(@oi50=#d)gg$@8+u`d_CUv5!r*&f zW&hTqb6ur@<_xN;TsowKoljTk>=L3(%E5)L}W{>^{ z2CyBtD2aP*#BJ^d3oL7#O#;=G5L$9C?k5Y27&K0c0vi;I-x-Y!EH!X4^y=ScqX8_a zI`i7IZZN}AZhrH&v)36rc1-}K$pc=|{9!ZkSo@<6sF2`D^X(p%{NCt6H#;~Wgm!Kf;W3CHI z>BV96%Z-=`0~5(J4ZUz|xwvE2Qma5_ZFFfsH|Ow#GwAJ}5(`nvSN>AMib61jCRF@_ z_9{|`TT%n2=Q>Q@;!p0?W{0N9=#2$aR{Dfz$>2h#1E;9iBM?Y^lQLnaCmKLwfYqAl zlW;&yCm?OcCO?9>A9sE^9teW4M1$8{uhJ!v3*Dhe_=m#m(Q1uHN;fx?oUfXI03f4!(Mr?Z|AG~G7tDL$ zeG_vqfpzwNyK8Dnp<<0&EG^P7xRc=5@in|sv0u>(_eQOJ?!Z`$>1I{bPRboFy#l!7 z{V{~N%POhGnT`y;5SeUPIhhnRs;cA>Yc7?l2QP?-SGdKZ$x(@yq8i04fw<5XET`OG z>{LPPW!!HHL6elR2=uOnwY|V#ZvJzD86bo3pvCMP`PVN9qZX;6Mc5TxFegHV8;?2H z5!?c~ldz?4w1#9ps^QZ>gK=b@`Oe zQp|YXiE~tUr*l&#usM|!@ta0q%g0KAt<`mG+3J&cNA}FiOs3%~qjrtk{qC_j?Qlx9iO)aO@^A8bAj_VFWW2obP z;F$Z+3K!^Pw8PbO3FNq5>3}T)T|5T03zJk`1n4Y*KazhzawQFbXMeT`n-Qek}`8E=@ayB0y{WSI4-h?Y}zQG z;+PiamWc>l^I_w3Z!=-ENVwBG_S@+RNd8mzMlR+g>pZNfZu567fL!8LfZ1cJFV;tc|Dnf*zbk6cgUm zS=Q;B{;yihQ89AN^&2xrOu&hz;7b_%-o{4d?4N?uB^BOGd2(up0(gn%A{S1Zsd1)w z0y390@?U7O>eNgRw~uKc;n+;-imn3QI;lM-AXhE!g(5d;-Y^AjC*szB0{h3Dv$aSe z&9ag(Z5+kD`mf%K0sEOH;v|_*2ov zMw~69{k0O>jdDY~mbFYdCQ`ivYm><45H}kc$(sce^eDood&;)h*%&B!MY!9? zCZ()1WgNp#2@}J*I_BW8g*m?F0}CQlW}`_uctjL0}54CHH6{3=WMLNyyir5IJ7y zC`ajA&k`;R9$^u>H+r?XPu&Pj()Qn|Hd9k}ciyQAOKYDS=hNV_=x_jo!XciA{d0fD zJbVlSQPM8O3o_aTcUwDOP6QjX3>CrzcsB~=@_ z opN#$YRU%eec3>6n8<~hmlkf3Kh`mod0p2B2tZCH7p5Z~#-LaN(wIyyu{xYGe112^UAV zHJ55108oR=#z>~7v>o2T19-o&_Vh2S1R@YLI5qlm9QziJho5j+NtkrVV`j z`dCPTjJbmlkf?gyfJhdQ0e$EaV3amxQVJpu^IKF5a2e$mXdMG*`b@0*m%y~Z)D;dg z=K+J>)zvaQnZAm4i@WQBomUk317EWjy}tL6OC>IICfE%1NcWvNzOEPj(pC8Y$ob@;P|YwNDRNmCNoviW;`A*vw-he z;FU}RH=cJ;Rm4jbb@2&tc0xGsy}It&Ddn|YYhVJDF0xMcH;=yk7AR$Q*NpR?Qm-S* z<6En12qMpo=6{f{saIsB?x5t3BxtsBzATB|wW79;5)76;Y;v-v@~Slor?s7!vq_Z( z#fk$#d1eq?cCx{w#%jQ~z8Ovv^#_6-hUfa=;Yw4p7MeggyuMoon0wA}tisFj_35!j?Rz0rk^FP#X42CU zmJHuM=?qBU^L9&KWVR|d--B$fQpH=)dbRStR_O!_b1fx_6d&gG_07xktQ1$Q=@8v! z|6trT=^6}fbK6ZxUfO~wYHSTRq|VGar}Q?;*>X!!6LyaW0Wlar2_nUOwR3pj@TNY+ zdr9ZNk)%7pKUaKhoXDuKxlL7$g1W=PIn}P@@Ni#^sW_r*cfCVzo;bo%E;8L5h0PU3b=?J&ZLs|Dw_kI%BG#dAUkuP#BhEs7*SauU$(oc8P^gKg3-=& zh)9WRIELoo^tJAH5YzD%>x(UB2M)v|Hk)~eX^{}!5@_98=>vb#lW)c3roP@O?g9?A zXH-5wr^U?exBKdNJgSv&W+#swnd; z1IB8fd|GCm=L&eHve8)y>T90oLoIzI*b?3)Hi%9L%J#lXhzSzf>v+i43r?O)N5>j^ z%ic<_cb?HCC=hXV=7P%+`N@r~#&zZzt$IMIMulsJ5?BqZ16NhiP-L96Zbo71qzt-! z@ZBI6ZR)xnPhS>4U@6=o7~P1A@tq`6zZ5d&C>Z7kODygASq9k~HWSynLsr1k^MSpB zvv48tXkGVb`j{FxYHs!iDaq3Sz_e^)5`&uDx2>Jfg$imH5wN;ak^A2UULX!GE=1tY zW-EC$lW4F#*ES;Ej}#@G?o(25W-W}e^~hQ3r>C}k#~D2fl{Lc^WY2NK6ledSu$rKI z(BJB>SRCpfQjXgLMEzb;o)5u+Qq+seU7CnkvOBezr}f~81Ou7=WpA`f*Yk@WZ_KjV zIr>d321@gs-COXFpd$vMtl;L_I4fIo2*x%1wA(P2u>;};fPbB>YW2~n9|0!~*z!G$ zNj)74<8&)Kwx|w~$4e1Cu-jhn|DJ@gSiy(+T|^JJFfNZ6A^m_!dD!$U=Wsa++{v`> z#Kdhs_w~)*ZPK!-vuUZ}KVIE=qiK^y(NZkC94OQ{9l1`$miiyF<=OJl8rom78TChG zYY?eDVwQmzbI3d!A)WISju2n!m}4BE#4si#YYZ3^v0I8kdnqieN*RdQRtyFqGQ*5*GOME=N%|lzx%(~ zvtMge@bdI*%-w5HA|9Qzy*}3|+*6?jkrj=hD4?k&o#=>}EFC_VIufF}AH<>Sjp9SW z|H>OThg|a*YZL_CEK{sL55}rV&WFG&f3aDg=?&nq3O4Us#Z;vpEY|=7PUI=nOc)VB zne|B-mu_)Z^X5VQhBVn(tDS0Z$Rvi{rwa;=r0qe}rn{oD6V0(b1Fo_b=*l~HKo3a? zR)$hJw946IR5C_FNCaqplU0{+`&7@omKaz_8II? z(O0x56n8heYKXPVNB0cq^GE*$h4igjX7alhE%T8incEYAe`kV)B}eD<*ZlXq;NKsd z*l!{)r;~Q#jC!1>msnCtL49TK(}xA2dS$Io=g>L(o82qoaVuO4Fq5(w+|0%|fq);T zKuo3yU7su$)0gg3s^(Up&!CWDIGgf&Vis0VBo@0%8!;f)#XEeL?4@NU%40EkVt04K zYbs}kc|YaxLo@AZcdT6KN@a22AAY!{yIKmW z57YY=#_rI^D_hcCf=HD$k9?kxg}&xC`r^YK2yIx=)=wy0|6yaGaQFv~Ps1yjI$8V! zWequ1HJgLBg=dR>L{NSMo0Y~9oA2%#TKwgr+07ZD7gK?7yY+m^!?~2J1B-FAL*DuE zlu162cSG8y?lzMe%_cf3F9yqd;RV2vTk}k9Y<*1s-%X7->G&G{FWm(IR+tn2g%5Wo zT7TmokxGH|_bOkBJpKNJcq@|wqO4|h@XtM!I&zsv7v%?(4Kf;Bj0XCzZgUha3(|zc zIaK}=F!Z~5cmdKpn#2rK9IE80OyO0qeDo3zaC+6SV^&Uu0|s3$&o&Z{ymm^N%%iVf zP(v_S(fxF~FvY}EjURZLEUtUjr_hKLt8?EhyngXxEmK_d=ZSsyC=0uJh?gR&wAfB(+;TbMIaBFLHm%bp6Iz`V%P$ ztIL`Wro-YSBgQ9+zONHxnJH2gzumWL7h1xcRj~YoFtv5T*yNZmBxnd&jJ7;H6d4G` zOCzE!2P`X4s20m{U-2zL-=z3MuYlE=Y zqcPlzpsduatX#I=hF%2g5c+yrGNg7E^i0EAPH^$F?!ofMgR`uJ+G#+|}9$)&8XiZ`!*3PdTmbChc!2Vw*Mg_p7}Laq z{8(K~!x0TFpAAks{O>-Zl;<{jZOP=1ugnWRIQmCVNJWQASGrc4OZ4d68(R;WmL8qc z+(C_H-cCtB6Gpl*4>F*kINRI0Fh#^Z$E($8i;ug7Jti=hy+TZjn@KL93cP|Uuuf_? zC(F8Vd85|38$K%x=`g4fBDkdAZNGlf#oj@L4)aKk57sZ#8OZ0gEd=uOO>(e2b&Ajp}-c0p!5-IHF)IyQ_$fN>s4H zha*Ut_f+&FK(&Hr`f;P4vec~*Bv};BoUx!M>aYpMPmC19>p)9I#&OFZxX)lOvMtjf zAv=tBQC77cK_$|8LB5hoE{TSMpXrmmxr$xq4a5b^!CHo#e+_1H>c4{7L=2{EsW{V|N4D6m5R8m3hDskUB5&RnJyzJ+jBWLWj$5t>;2==&&C}C98Ty2; z0mFFW;~_t>Im+&f>+iy7#e?Tq$=>+(afwh5UK~HTMZO`Nu%7i%;0$dxZFn*Z!{ATW z;mTlsTNO(3VR*FyB6Pk}0cd<(h@I8#tylPr9wwP5Ft3(*&jMgiOv94iF7wB}hw5b* zUJ)G#k&P+k)fZ_L4C@~K>>QzGfv$eC(^I@lpc^e?R0XhS*0iw+d4<3xW5!KS$U$&o zbda;!_)y!kx$tfLY@=f;v4VN36zRuaR&5zji;C&`Df z&<1}_qWpj8oGpvJQboyRe94Q>O=iV1hmCU~Elg+HB>`KA1C+RAuj!g&w}zznDhWOO zbI+~X&@t~8%^lq19;r&wOG9qLfO=Ch7;qBb)MwjaAv9B>+y34%RN8J~(IA+mX z%v^LGxl5V*!mV1;0dDcmqI$&%GXIweu#GK>$L1S5_`?YlS^kqMi!^~yhL)#x#-TgC z1sdh;4Y9uQlv)5^|M`@1z10V;$RRBvOIkNoPkO`pu~&h}Zrsl)A@;-uUvBITgE+JH z>t>Z${Zq|&4CROSs4hVi@c1I;!~y-`bT-S_VwRiJ()v+`0A3-?G8n_$J-_c`#0(YH zx5u&!U3`kw{buv7-(*4<$ZB8 z6X99FJnDYYMt}Q`>NCn_R6Wb%rY0Xb(b|0|Ho>kAM1F&qy!YKyK)ii;q@`nvocsCB z*wpwT>%+6rLKpztFUUNU(qJbK6KQTjoF|Xfe{-sO?RGnk*y?+NbMfg3X0oU`retiL zn@F7=K!lTAjr()XDybD?J=4a?Axc3s<6Gp1I{Ai{Nk`M|uE3+dFA`u;Nne-xz|Dvj ovO>F=v7I&SQ-D|bco4dLPQ?*%&H6Z$r;lag+E<;1GS`ZXq#}?2TL1t6 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509060002-Config.rsc b/MikroMaster/20260509/20260509060002-Config.rsc new file mode 100644 index 0000000..846d26f --- /dev/null +++ b/MikroMaster/20260509/20260509060002-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-09 06:00:03 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260509/20260509060002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509060002-Diff-Config.rsc new file mode 100644 index 0000000..9539441 --- /dev/null +++ b/MikroMaster/history/20260509/20260509060002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4291d4290 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4292a4292 +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4305d4304 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0