From 2ac692a698e1c948788b24b1f927677f5c9213f7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 04:00:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 04:00:41. --- .../20260509/20260509040002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509040002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509040002-Diff-Config.rsc | 8 + 3 files changed, 4647 insertions(+) create mode 100644 MikroMaster/20260509/20260509040002-Binary.backup create mode 100644 MikroMaster/20260509/20260509040002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509040002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509040002-Binary.backup b/MikroMaster/20260509/20260509040002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..be7f83df1aaa96c52a80708c22ed95b3cf54e57f GIT binary patch literal 298264 zcmV+aKLEh*sF8CRjRXKE&{NtD%~}O!q>7jtXW9b*000O80004Z`T(2&Lur`B^-!$; zQu-m7k8W?-xWN#n5?GIc=?mRyoEBx$msoVmwkw2*bFi}+sDS>f*m5z-Fmc&l&mVGU ztR3gwnjFZJ&se&;B*hVOZE_-1@78a1bm)NAQ*K3ZfC9Fkv?%RLTn|t(<|3TPKI|YX zS%ssktDx|-R!#WaT^n?l5fYzJe{>C<{*#)Ki6WMZRX4H7SC>#GB9DOI&jIYTQz3VS zS|5#nhbwJxFZR9CSKmC=$eyuHYTb3fOTUq) zcB|i3qmO<)YY5ifg05020=rZocs{2Qs*nuOo1cYOeYQn|4CLaIK!UJi2Hs9|O2?(! z)Tq{NkFMzrvY!a<2|1C7419z5ZleilWg(3JtHahE@`(HfyN!;i+PXN5Iim`*3$!@r zuet3aP065?I?mEo`n8@t8}9rT+F{FIl_KUc(7fjqd}r8v{rY|pZ-FYxdKH1xwTj|| zG8QSgly#x%KXSi>-+q|USxB86?@yUg4QdoD@r~|z<^a!1M5;miE&|irY?~b^t_R>UlwI?zTrQ^Wj|-*1q{NV2#7a;n5lsa67}LUNO1F zd&Z|MBHDHlLXj+B0Hg;dw$VwY5;X~k;^!4-EGMvHJ3=0Z*03X|jk4nnU-7S0>E0&h zv~h3w);J|@%;Io&Bryv^_mV|_P!lK%Y&}M4mQW$*o1F8U%1El~HT@!?*n*^?K~W>G zfPc{+IOkU3GqMg}IDdl3x6MgXc;s;dcI~4^w>Dg^`;vxXL8H<+-gWeg9`|HQWwN-W zPb{8YwMnMMm=-L9=)IYHJ7YgQUocW??C#?Im($K_f30^z>{803>>6YPg~?HDUvDoc zByg!qF&~c!M3MNdkyJ-WlQyBPPk6eBwoi!xwxFWPWA%s^hM`uxh$`S5{>*PNe5ipe z-O^R^lXM;LwKZa1D-p;?y}c@qB|MS1i_4Mqg{)EV5uu*9VFyTcMd_L}<%pz;qIH|E zT~NR2e@}FonWc9?(?vxo&-UyBaV<6J2&q2`$OaqInR(olzZ?MMDZq9%k<7UJqtL0B zQp(S&*y})$?4?v9gXOYopiIl3wPmN5k-~c~?16S9lpHE_F^rr9J8|JSKjaUVKUeKz z9e+^v9H^K8k~R2fOV@sJm2ZPxUD}YVohLy_c4FF9|op)N9EoJdFNGb*$Qhg2%tvhG_!rCAB)Oy$i^Jm$M z8Hc|8!vF?;96`8IWF5vA@Hm?sghA5lnz9R z2(3$9>y({0w!P>wgI^EXU#DaPzh$0Lhdb4Wr!IO~0`^Aue~!;*WNdRTAtDK^2714* zoN9jS6I&+;U;gFWMy)u3pKCO|-~}uMmJaIyqmeNCn}qU;HErk$*8S}oUv1sEYn{DA zWFCOl9uzoef;X4UVZS!6@n}~8P5n~d9G8X~WN`OgYrJW)+F6dvFc9Uk(>#Q_=)Q%Q z_#gx1cJz7mv=794X4?vCra1ZN)+={oC|*ezq41 zX%ER9dk?z0Y2<}?x?-i`6UB9Qar9U@6zpMc(S_p~+_VsUR(xL-)8_>Mgi$g!drqx< z#U#Xkq=RsLLfpq(vj=Iay)!{I#QP=M)Hr&Vv!(+BAWaNyXUYY~yKLTUDOKMLb5B1X z)JBXXJv%Mof=duQKy}jCAu3y2~v~lznk>>yTOCgFA*z%X^%c5f?K#zd`_a zjZ@C8>6H9&iii_zKnpd)xr7&_FW@>2?E7(?x|dIRiEeEg?;=Lc7Hs(+m&hzwuT{@u zACXruBRbkUbkvR_?9ceExMS@#C0i0r447HX^etZPXtT$~!(4aIlF~U&Q9sP26=DRE z++<_+GT-n-$c?ipm1e6>|1{sZf7DEdE)JQxZSV#T?}``Egr&E2elv4w2)rf$>wHW! zjKAOE%zuj9MynP+NA7T85W|Yp2L1T!7z@9k#Z*P5R+L<65~vJ=KpQa|V8;PL@4oZw z8GHCz9WkEux9NGy4y~m$nGlLpgDXcP7IWLwK z&9iIW+WH?d1v34iKx*sW)on#$I~>Cp7dUadEPdKwMh2C){m7V5vg+-!3ESDmWZgqZ zAvibJYW-!T@5#UbPPwTC-fl8lX;9`?s|9U`tC0C%<*lN?LE)vF?x_Y=@Z-scm$H|6 zBtxcLjz)zNOrWCCsQ2;S=AzA(Ztt=La=*yps*~gUk?9qpP&e$%@XZ+D^wa|}DB7B^ z5ZK|Z3vsEo!Yu_uy22%8r#{2ULo~-OzXc?-GVqRBz@soNay%YA@&GYooD)g6l+v_J zFbasHFriD$9R0{BxJ){>Jbjp zNT=KUZnCk%5;vRA5BL&i4B0k4!~(mZPHGFAxMjq8hsAitS|~|X(`w8^M7l_3Dpmxt z7g_pBTaRYiy{L}!oqC%SXDF3PztFgnLHFH|9kja@`*3@k zVkRD?N9{@61DNNEHOObs@DYzT?yagP+_1w|D84DX4;_O;w<}jzb*=bfeWpD}O2k?Z z|0KyK2DgAShJl&m^P{_%q@wYW2e~hY^7Al`3t|%4&?S0THMdb% zj>o18f!tN6@tU3f?tx&Y9;}Vyocoz1ux)Rn)H`3-1ydR<$s8A)K}c*s7!`k$aTZ#% zZ3L9+V&ePjcyczuhCdvD(#{FDNH`%{*S~7OZ}+G(+X5449Q~0BzQfOnTHS)`=(n5k z^%Q_1@;FMPuky0z6tujLHF ztZh(^X$G~!b3N3zdz>=0TU%M#fB=xT*DQV$0pu^-p|GxVuE>#zH(BpYq{ zuig)&=8RuvvuNxK!L_`+t4I?>ON!W#>z7$Lbl^y8qzSFcWtsR{WMA{fPR!5=MqHX5E-Svl!8{*?d zKU4mJKh`*8O@k)0(}jPl2mWd&ixYjbq%*UV)f5^RP@9r*=*rO^Ns593mYb|;(gZkg zZDp>`xhkSMxN~>hoa3gE>p}eN=o0R!=+`3nxi{-Vjd3p_-CRZD>>^6k^4W*n-2S#? zeTIFI0%iT|((`kIo#XXVX#`MKJ#v?*gUIAEF^K;vJ{AiF?g*Vr#&ULcXR3s2HC;S1 zs7hs!n<$%{tq4Vfc&V9)yfs|^lRkpv{oD&4D$-n8&}PS>wBEXD6Sq^=je+wb=|I|x zrb;hS`QCT}19cVyB}5PQ+Po&hx7rvRS77q6shy173nEfTgkj<&o{>?1mPn+fMi=;~ z4nU7e*b6h`^q8zdNC@H8vn{ZfU4ql}%KOf>sbNEIGFkZjzw(Y-Y*p<-dDB1KY*gpu z-)rZEvFZ)aRXQF`?7?XYq_=)ir}}%~eo_hBOWdy?-DMRWe}?`lnP;HpYthRntX-hm z77z6hijjvK?bl`uA#=fpl&j8`I){fj9<&z==rRufIn%7oS9Ut~AZ^Li4_V@FJfp%m zQ$yZ!>E}UmGJ#ng zljfw9pjwX{Y8Tb&wY(lccO1Qd1lZ8PpEl1+EQ-nP0$nEEJ~Qnar@%!B6wWUnXwA*{ zwC_V$=%5PsoN4=03D0T}Sc$HmXp*KN$Uh4Y!*)ro>>3 zb&+ACX{K}nS=`*_9L^u-6D#<}p2DtPNn2nVUlm|z*}lp zvnxp_W>Xw3UtDg+bvL_2i^suLD7({#<*3;Px!zsKK2OX?^xtM6p8hu!>egtgsp24 z3D^?~#|v94l9lA|-S^oeLc@PP)vP7SH_|Lg61tfBTSKPo_0i`M*~F-R5?x?ck(qWs z!+W1fW)Kb+KN&SR+S?8g`~SiUhamk6DATSaSW@rZv1eWO0Nc^5+SH;G;MZe4N!F95 z_FNwXy+kjNvZliffD1c5d>$ylk_X8`$XOM1W%T5jR)Knz98?R;BEQ4o5E zsbIF)_qa4(8gZSpcUfw%BprT`mU#UzvaUU*1y#oIosow*4YV;!^7EvnksQb{v?pwx zIK_&Udw_w_F6AFbn{yJ3IwqfJ5K`MFw&pdD+H9+~An-(0aF>|&q-BV=^4gwt5&VlC zdeF*#*49{n4~&&Z&gdB1F-4ui^d7H2XlN_3iq0IhcE5b%L? z-Xfk&s^zFaD*flf8fn-sWk?mquo~v1V_fytxu1lJ@YU4-Cks*TEEMix`AJ(lA!8MM zV=~!O{7b3YO&c3#DY*;vn%4xlBuFVh2!1O&ST(IoZA`7&osp5a1Rw?zcOWTIgEh(TYKCXw zRw)x<(W;gv*<4tAz;Kr@!2Rm7Ka$-l^<OilzQ3BDhn%=2*Qt@y#BCZ(k>d7auyakox&J<@ zOeq7ErgQEnAyneIH7QocoAgt{xw}rgMjw?(-=ew{;c5axFUE|uFotpTzAD#rP;pJP z+QYD-E_>kP6Sl~rVw0d@!HrioAWrW48NsqIW`;+fW!wA}Ac*ZK2{~n@NoNwOOwQ3s zKVYXD1?X3tgb!^)3T>KBRPszS4^%%5$WsC-`eVNoYJh#2s1v|WmDU!*<6ZmV+tn`0 zG{Qa6N4XV78{%bO0S>ZwW2avov*S=`D0-RbpY0>?<4RP&uo*vcmpUt*-}aBynkd2S zVL8SG6aD$KD<5LnwnYqB=)VMAnN)N_`eU`%a`4YI*WqY4JO5BIb#__XNl5fi0Ustb z;rYm8;Xip$4iwOe@g%v~-nr~7MBS}hR}e{%c~Z%~^&>Yv?&1Zs-#m!`ul)9mQPZ9S4}E;XbY&_i6$q?#CUg1?@fI>AiccA?Ez< zxyRP8U?5och)Boo72K!B=%$C@FE-!>=*akV70Zb+5e@b`x23OPRqe9(A-7T!YGcMCxABS6F4*&VeI+}TGa2lE3topT&DXk zx^?FXlA6$Kkd{xV^nhIoYkkVgXI7ohBYUKYr}G7MX;e^2D1v~ry{MaxkS`fa9e7@? zc}$K}_5HvbLfCyG;>hu4UJHDAS2u~M*obr>@@f(2==g}$gPwQyXGoFH`eL)fq_<|_Z1#P|ycAFv z$y?FQk}8D=e@p!65(V0h4FIzThLr6}ioGx+O;2ABBJt~w>!U%dGsU76>K5m)J!q}@ zJYw`o{wyn{wjV^zn&{KKJsU_W(q*3r;>32(;=(uHUL)vOtyQy$qMMPKZpV#njeKx_ z8hY2CQB#dqpg>LkT zlwc>+_jxej=I}{+o@Cr=K6bkU5fS!VZ);HkLHV^|_taoB>e8>35Q-SS`Ln=H2fq_^ zOB`@zzOs^XRbTLmX;4&t#3fLvwl2i_-+fx+yJ|Qz%Iegn;m6F-qsSTaKSa2G&*`(Q zP|*gyzbWg(-ZVP00<7&fo_7`T&v{IM1G^%_DVFW6cB(=fB#cP;sIZIDz?PX(FoI{| z^x-!!e~L|_5v`)tS`s9|P?%u&F#)hY?Sav@6K{;Zp&&bLVwr*Q*@Ah8Y}6f1(qV8x zV>Z7w#Wp-GG$=*h_1XWDIc?&e486Xc44}z~;>PiEX5LQi-h#qaKU*(D6Z#rjH}QmO zrzA&AWaCF>O8AMO1HD*|eDx#Lb(q%$sXuxypnwKXv-XAhZ*~#;J1vW#J>8MyWHHQR zXQtw@A)(_-P^^pW=azS50?wp_SSDQ4<_4{!JqzqKw~C1L>x89b+O|Zu<{s9;5`Hu< zE<^KB<;_&=Ln$@&q7k52ZD(_erK>7S;SXCRfE!Q8JS!sv<|7pn28&tyM?)I|S(E(1 zuM%r!GMYXzv%?$^ns;G4YsdNqAY=*%whnouWrFMme+=ld1qXU3x;}B*W#{s7N=xoN z{b57#rV7z&TF`@Yi|g9PfnEg)v*4ap*@~rfJ}5@IZQ}l>#WDLk!0I^;kYayDtA?Nl z{53i`u5x5^d~LL9P&r+M@WTj#HF?671!Zk(cOFYc<$&@x1hh}{*{;nEE36N1HMun? z>k)y1wn|D$H4IpV``~34;tt&YK6dcE8&$Ft++Avq6zHiaB zD7L{8mA@Fq#>K1bciq!a1mnX95Vv#5Ly*|ylt)QDL4OL_%Xsh;zmfpJdgfK$B~;^>3nG$cvY@Y0e0?@4b#ciFwb&q>BaL z1w^tAS3$#ZI+lPTJ~iEa_^64VBOT(RRqn2bbsQeM2@GW#?F^ z?AaJ0gN^3)Ds2JBp|2XPnJy$hLwS}Bq!;MQhHhC7FKo4U1y`A0Wa5J>oZL^Ut>IJH z!pa38(y?DLL0}~;Zzv9r+=3qIB37RV0ejIIuBWi`V zhrUDty*>)pm-Y~Nq-JLKehn7~vP~CV<_V@=fN!lqAoXcg(L>^L& ze+*(FHxk1U0qhYh0tai7nziDSwCkMg*^AH?)2||tl21%*ojDZ#HpMCq6yQR|32+rrbFMA4 z#-$me%^DvJ{x10Y+X`A&!j62xwfZ_AYijY$5P>%<1ui0HNK$^pUl6&tOfZ;G`Rf`kHz^p;I~ylL zRY0N>-_ryzK45aUMeoO@5ri@d`@wO&3n`^pY8Q2!rjwp-H1`6#NvkYiSWa*;#sIg~!$+8jQP}O8zCfVeM73~Mkrf{@s z?0j^ZqK#^H(j;~JPP%A1`g)GY*D5eDfahE5B8<%Q&vHIAi@YZs#}^1szx~5W<}uV2 zQlxwJwaFE5H3!m)4_lbZl_5Z1=AX3XvJ2X6e zVG-7$-p>HxzoOkryUV9B3#P6ZqC(7d*Jc;_`2cX;gos0{R6nw4iNwo0-g>@gLDgVV zurV;UncSvP`bwtp!u}aX0#6mGA?u{dpHat(Hx9DU{0YfceH>tI9j(~$JAhbYe<&6* zhsWwEoLV?n)kcV`*e;vqggO*=!V@QaytB% zTru~ZWzzLhJI^nPtP0oE5-F#IO%Rfc!yr3sZpDL~eU#{@)s?5vwH7Jb8wRImUCk6P zT-|mDJ!+gAMGt2rL)lTB+5Y+^)g8X86BlSmpqGL+1Oox|dayD1MRfgck6s(wqXaSL z6Yk@dq2eK(e+*@QKKgr^BqA)+&j4bHZBjM=!)v*;y{g>MdV=t)*ap4E8=rJt>)0n63l2xw}im)b_F;>V|0BQ zkloY$%UTmEAZJZt44stU?d)VtZuu3;SANd=+7^Z9I3Vk`BPcijE;WFwVhB%8?UXr| zA73ehY|3}tTx9~5)>!uzSM6I5L`E7!`IKYJ^>H8Iu8jq#igG>yTBVv-{qFvKYzcce9v4V+ZU&rAPAq%G0v@zjfDKgKf?Z4Yh!^LxG451O zGp~DsmY@KAf87S_12630QP0e_zSqZgpMih8J4}>B$0p${^h|L#)W=9P}h& z0GnFvZw~Dp22c$N_1s9n;^hN5JaU+p+V|lu!{DF>E2?~U@wEPv$!87i$;1qLje-vE zZ7p7dx>Su2v{;G_|J<5ID7a7s8@14+lrtetoH)dxyKM;;h!&DrUp`K9&H=uo#~lzp zL2;4Lle8;9b^|9I9SPpeEk;|L4O@Y0RgCjwC0#OTky%K{xcl{Fk{Q9iHY-A>51{S_ zQBdD5hscK^QOU&H>60Bk1G`X5Mx`Gsv4ScZeq3Zubqh}K)U%h*@A`%5Zuc@i3hzK> zh)vP1jXDY3+t74~bl2AXm+4FohNm_6eH!xr_9c};8yxPG($}gB@g8NIp~)F{qvV0M zA$V*ctgB$$rO7OUNzZ6}P+DWqpJSjr@vP@cT(YnwI_6Cl6 zxd7I8AAQNWptzcY8Oo`;PpkR>sgoZ`ju?E~iG*2V4bn^K=|Vk#oa=r7?c&zMoo6+l zK3J`yIq8vFfJtn+> z0&JLy#X3pZ3g_JFViA_Kh9Zb=gjDY24Zplgocg5L69B(#iE}m^uh%wnOa&?rJ?91F z6N|}qfK9s6>Y|;S?$*bDhVvtb&nw$I?K4gy!+}c~2(^IXE1>?WeA|?cv4#KRF{P^u z9a}!l6$uxpU*p-$3+M)a;{~4KV73g4lRWcHu5`U+4iO$Nt)~yJs5Y?gy1Pu!3H4 zK+HnT7IHU(O~AueoS4cgMpE}Uxe*>u4q*A5q$S>qhz^6s9(ujXLE$x1<*|knGk8Yo zIE7CePn1DVlEhn#@iZvYQGdh?5vx^^kC9s$25*DpcQNw?K|X2IYI)IHzO{azZ6M~w zR$@@SAlb#n*=lhM98|(B>h{ocvdXVx?Tkx8Q!#nZ8l!_Yck@d#WY-g%EH~(r=q^>w zfmsn1llR`?Xd0**!1>b-s`}J|EzmE6sK%J$Jd^0BKB~r_hwkG|ETT~w-YL$yg1BPo zHBjcgq0CTze^75z@(@*_UtUoLAaJ+Ie*xJRg*cLcM~(qX_1stpG|uMrn>Dw&qz_s| zWsm#M{Q;}H8+lF_^vp7r0eDnys39)y^UP8|#;;+V2Js(~x4FdepjvXjwE5dF8=gbknLzs`k^)*~MgCdwh(Vy*gOqb%TOmf%zwHYKQR4hxWSFCbWEudmK)4*gXI zuzMBIX4kkEptO6HiYUe4D8mIauCD5~n!?X=;4pyIiX4yRmI|8thGV6h zH^}aB*5|_D{wsTz6y=}DzswvWbLmQC?#~f)gPsSb>8jeNa3xmrAe&T)S`9GV$JnI6 zk#r46CUcPnq91p);Qo``_X09Pf zB({du3{LQ=M94H+NHFuft-DUtYjZTJv&&f-Qi>q`vzLi)=?Isf7Ed(G+zV$WcGcS< zhVBwCuBI6}3TBwtFrW;IZ~_G#sy7|OwJ~+X*+a0arDDS?0|ju~&mRjSo>Vt!OIq#V z**E2u;HpjIdc~xAxztjP1d4O1TO%IIM*7%W!Luej~iFuh^Uf;ha{?C#%LtKL8Ly6_;qxidW3j9e z{mPor>3S-rWZS`UGd3Is%Tll0uCV3i zK1s*_+vaYy3w>I;i}X-v%eay12}gRs?c&N&}hMJrNS-i z)!uF~lg5R=H^DuJEzu~yx7P+|4EHcSxuM6GLYZ7 z{MjuXR)1F=#}{vfF2Uusl1kA{#q+3f`v8XxPPr@SL*9*mZV5>`?j>9@Jniq?dLD(K zngf0vhoJ1SDlq{_QfpXPxgjgIT*zq@nLrr2Go|#U0Q;Xol8u*27L#4_=DIoNnAsfA zp(DBZCYBcL5zE>0(*Hh>t8Cl{3I<_M2USqo^K zo<58fn$Fs z;v%ulj!WHqTC|JTk4#I19Im02F@`a$Mir0v$<*Tf;Qca%L0SbN^CSw+9XM>T^2z^> zlYq*cSkQ4~HNXjtmGlYSz3_3u7}me@g@LuGPU|9MSgh}84o2HZBb-FL5O)|TXvWy< z%4;2U(ZyOfP4wHUW2^1KT#R~VUOm=AJ%fLAiy>pR)?wICv4sOjy`Uq+P?=fHZ^b%r zOMH-V%yB`qP+aHbnDC^ZyMj~+#re&~i|?V3pM2ih$+r3zJ}rgKh(UXgzmz6qnG>OD zJ<5+5OZJ+%@sXwh-5ZSHMq8Mxjv!YG{92nQqxEu?(E`=0VRpI{yZ=^lM-I=W)m{Hu zR{`6|M8>;O|Fh{w5Rb6_YiHr4=m3j)jI5Ipi-2T+Ni=<4Wa#&AaOg;FiJh*Dy62P7 zgwgWTlp;49EqhW|(deCD$|8`47@BVn+CDoz>wd$g$q*rVpR4#~T zgY&Ok53W6?{xv5$-QD~i^4yY8#tF)fz1Hr_;)8*nuxGyt7;o*==*It40DYh%TS;-m zRR4M*)VnvlY&qub`G}>Cf^5#+xAUH)h@E%)Y_($y85H-{};#YaxDJup0=-CpZcHJ$Sbeh%~bJUDBNU@BtA;jr>yv$*#Sn8NjxNPXr+m40-sVa*GC8*69rc_oj z4zOA;uZYjm7ufYw)m2kDNkKS7Da==SEMNUct>K^SOM)4x1`(GzyF}v;rsQ}UJ;Whd zdWMq6X>apyB=#PI4tkid%z2oRv3@@1pHDYA^<*X=w|IJ!b}%=D;td|@YVv~iV>eI8 zpEEcKMj!?{wq{AthHRqpJgH#~p=)D}uqW^vRR}*aTKq}j^g!yWtF8XYJWs&1Vku)+ zwF-?RfcogARjg8%wN&>{O-mdDSWAPifxWt2{;IJ8$pYIJiDKE(zfyd`F5OHwZ@TDh)mFQExH@D|sksyJ%$7(^ zfP2)vbd*&IK;h@BJLmS-I-tD}XRAx1;9R(}BAOe_7VeNAVLK%+jXnoe3Ie6N zPKQ@r(IEhzNb?dR2`cTGGm?+MYYmZ$ffqX|Jlp<$JXFT=9Grllh<|J6a=kX~XPqEO zVv*K{Wz;hFX1XnJQ_i>%Wz6&{+QW~H25`58BCJs?|Kn`rGvsmPW)^^tz9Ak5vfShZTl8rmp!j6+;IV#cBh8vM4S&=SXO^X zwrFDRfIjh$?(3`e3vS8=v>u;}3q<#DK&ua+a>7vSg-hCcP`NDmfC?CE zSS_7L_MzRjXbpPH^Bpc#zc-W9+KEgJOFG2KaN?UEuLR4{Y5gzMl3!kGx$~WlH`U?BgrYi z#CK`Wih;V1xiWb>Y7N}kew>)0`98wG+GPW13iMN zGdY&E+w1vO(f0Lq^!y+#65V+Wq1(gKFzy|zD0xO3>$|fsvz0Ck3#kF93Q4X>Z3htQl zpRbs!F(XaRfbRW%X5;GNUT+`T&pZ)4RkpV;#kI%#!d&va=bJoi73WsLkq5b{bo9i~envUAnm?uw?Sfw7BDu^jKN z(UudX#h~fHgETntuPVE8#I4|k8HSv|rQg4^0oD`F46C)7#mKPP-NqtSuw54IALR=k zoOB_WX*z~|$?65!j>jCiAUiBW2roCbXX0`d9A>nks) zVL!px*q-Hrp>f~J$(yaSZ|Q#ufn+zT;M`}2v`BcY+-+6GU}?WxVC>JUmzRvI@qy07 zx0@BHDlLZ?JMOP9OGRshaJHC~Q~^o-QG)U%{(5udesW-wsRFrrMW+2G4q|m=zCkxz z86N3UvV4}20gG2rUAlq|=4%9aZv8Vc=G@Tt+>s6N8BB&(4$@YGOpHh5iQNRTp@_*% zTH9pK66Hc#*C0*t!LXE*p`^yBAL>97uUv7aWlaV`W1|t*8G~QC2Mvp?KLqxx0edQ; zlu0*r^tF=`|Cg>$hgtHAq`nst6e|x<9Dqxp@-TT7{s-+?8U!{Xlfaa@l>!Npe0|H# z^ojkxs00p-*97`f+)iY_x3Od4kU^+Mfo3PgaZFU+DO_Q>7BXcGXBb+FUy}F#V{d?W>cMq}3n0&hi_|K{ubZ9hBRfCCFT9wS zj$kz~MPy+3QGFgmO`C->(_r<gn%HPJLI9arJX&tadu?(uCQq=Nd zIHbPS-l;bJL%Dp`&SIA4b5DB0Lf|lLBBD+Teq@GfB6s>K=5twejzVD6@HlMQyh` z7#1mWKOmkqobOgfl$auHyZoFuOgC&6W|U8j(F5w0N`!m)A#V7^qn5RAzMwc?P;DL! zHZr1@*$6?lMnkYxt;bd~+rPhe7f}`&Y7)KwH9CL&I^pT5u9_*0@W`dD#MS_ zTSx8hf}5F==M?yeHQ_8y`bLYg1Zh!A5?o29ZK^Vh4_-Ych!;pc%iZJLz5?q0oBs2x zPLZaP4eP`-+I}eRsd2{egOWPNvH~;Wh)$A@5GP_1^g46JQlj{F<2j2@(zoB3jdtjk zxD{8h5jTt35K{|5s&ZWU9(iVB@v}h*>$b9Q5ZwihSuTLmFHelHx?jI!4jRYBN&`J= zs1iyv+7OZUrBm&{3K+xrW;{2dRUAHPtQBYS*j4Ka0a+e`3cn8RMBCRA5IbOr5(ztg z;dIX7>UyI~gu5`dV6Z?<0sCBzR)S$S(h=-e?e{&{yappvYnZk39(YNV4_i6DsUzsCV(-}1fM9Vb^L)4$nwFOZWLRV>_hS$_AaLh2 zqEuy*6SyQVb-F1FwHIy;ANbUgPWImW_C(oi^luvxk~F)!7%D8V%M^YnAp=AUeT#%$%2PLw82bcntN)O5*pQUxoC zcVGgrI}hnOV=a#eD*!}Hlv~T(A(6EqXHD>?!ekj{?n4L8q>6aN!T#0X%8vMKgMVFc zzUe4W8H(_rIt*J$S%8p@vgmchOmUV%mmhKl$eQnMGp{6=pXm!4$PuaDpz{acyV#tD zXJkowon>sGl{D>AFPo%D$OC45@T*gocY8+Ty9v4bGyZ#@t34WiDp?N64csA~8F5Vy ztf&2582TAD;N)yATmC>v!Yn1^-ACPV&)=MsdaLzSAi?k_@lXxM;vlq3gH76g^q3)KbF_w zVyTTBg~X`Do=UlvxY1J?*#OPz!1=pZeB+K7{Z^4QE2V*iXEa4e_dmvA@9w1(oCZMC}oV5%WJEcW>MMWVO!_bzQv4lSL`{|%Dxx-ne!Q9)q?r%xh|>w04>r24mPX!a zMa~TS^hKwLw}LROkF&7rcHGC7?hy`67~Ug6f2}MJ(%(9GcuBs$-Mww$Do88R-=<0u zPX1*VIgNMKBMGxFY+YYzi3FwdyXgq6abLrY-u8wZq9*x!K2a+Et!M}Ey%62ij4A>W4M5Q^innUV2`Xuh-Sxp%W(Sy}c&c28u|=^@0N9R`r6RiN72>cg=v z)t?L;!ra0nxnHA5R5o}w;3zAG)i}!bd1U6J8U@j~+j~C2gom-oR&pv zJyo>=_pVNQk^OZdL%^QfxB$lAWL%509=V3yO3FQ3U0QlljkCs~a z<^NrMCHck*2TjO#f2L71C~Q@6e(S~Ch`zM_fDu3iSW*XJoS1=94W8GR7X1 zuwh-DpV3k6Gl3yXl@5J}^bgQG7| zF)9+WV?9hb3(cAh<@q-U4?sstvV0>pv0)Qyza(8K7*^NYqt=qiEI+x*<4_}8`&_W zs2UeFf+liE)M^&15Nplbv;jBgbpip*CLBKbYmhQ2H%m0|(0BCN==nOx6HQJjuHe<%CBk08auOPMut1t$H{tyQ|U*vJSXEYl=CfcWU2PGigV&}nFd&Bj}*17 zqKi*PKDJK`nbh<^mITOUt6c&c5OE3%HeGJJLuXf6uAolWwzzLrA-sUvi0uZeyjxmI z%rwA5(lJS2n2l!Fwpcy0chzhWEvTuvX3(cVb93JvgQ+5^(;P_@MzhVm6GFwu;4x?q zO=q-yD=7MG^Iua5c$V)+7nMC4$fu)lscgHh-ce#twa1)ICj*4WtrM;B1s_9FN)Zpv zy@LHW8y&cbs!`~Kmkcg?9qA&8;3=zMX#v#1)U*k24cXDXgrz6Y->2$rTJ}HH#in1f zk1QOHYe0tn$aVk)K>EKU75!IP+NQ1+>rfSIVB@I1ra^V!up9krlX04mlDhX3MO}Bx zdxhvVnV3ZCjCgMl>g1s#NRk?A)9?XJ>Srjhib#_sS%1qY;*h;&`Gk$3Vvr4JdLv(` z%wgtQ&rSxwE+5{+-|bJ3_sAcQzt=vU2*VeuCZJqRXw<~ss-EVtybc(!B;PIuPTjOzHVyuAvdD~G)}fTpWli&MCJp+=%#s0p17q!U1-?njkSd1kizQMNJQt*nl&PMG zMVx?!(q|O%QVX;mZm)37u%7Ww{LWCO*+h4>!Q`6_h=FJ&Q6-YGQ;}YtJj2Dl1fkbU zWY2pDbB>KF$#3ruDQ;cC0N??O9e|HfP}F|ZT%+m7Ax3__Zqu)tXV}7$2}#v3$_bvM7Oxf?dPoB`)X67ShfTpr(DvNEeKIz6- z@1y1_JMCc(n#hDrOaI>M%Ikw4*j90Rg~eB1dzmq@zal?7u!KkK&+2;sOE@{TiL%GP zJM0Bns{=83u!uR2t;(lIgQ2|9p@q`dp_)VjVkbOIU$D%JCjMU!_B2gb$bmVYtmerMqBv!iVRq+BG`c_J@G&Ukf7%e zDbtz*d@|&sm#l9;F6#&D4oL6}vii_>qdAVf&TEQeTN6joi0cFag(u9@zeFMYb44Ik z@{^Z20Zj2Nce26Hpz z{PPqA_%MW1@9L+jE5}WQvXZy{>1(%$UX&yed09A|Z_#pKf@-pSgsrHh5E)CD%o6pl zo5l!=^Q0?3K$!rO9_0L&?bPDMrqQ0ndrHmko8^yY^w1W%@#!j!+E+Omn_QV+9jG&G z(TcJ!N{2vpy*wW!2JR_@LRKxUt#$pMw(@nr z)W`?npSNHeFHTQ8gYeNkV04pMahOmJXNZg_iflx!sdqQj0QQIUuOy>`u~g;+=l?SJ z&^T}Y6>tz(FXlp(zo5;rP&Z({hLEiQ=fbImG-9-A7sSSWkM1bi`i7M-Ri=?*e<9G% znl0Ig?Dsw#zvr<2@pIY>jlH}PATeq7a6AC~@tgYcVEa};2fLSWusP`~?+e2{@#{V7 z7umEI!)b5?(8SXnV>+%I^b)a*%skbtd(g(jib8Wl8YLZwI$qFJMm5zT9JBkqe?Zf-5^04}2r?hHfW9m#4 zbBf#|CxyI*+9@I2ZBWok24J^zN)BG9&@=oBJK)H?gYT38ihOnQycsdXggYyLMWE@+<$ku0BS;0ny(4!Y&Q{e` zCo4L`YTP*|+j&mP5hZ$<2?ua=in1tV+oOg>7Dq$>B0mwyQb=mW!gw(_ ze#`$MjN6@l8bx1VJSWu)4GqSD8i2(-zW?%p{w53v2!eFvwfSKz5+6*5|LhaKA!#d| ztFQFMf1=5NAc)iH7W>#Pi8{gaknh{`*4Xl-3xDS-Cze;T#etN_59=$mz+&{xFGPFj zq4=?PBb8d;Iux-gt+_i$*c0-Y-p#^ZfUQWt1>b|NsLi-RK%^Q#n4qT2qnh|HwR zu{c%De*i8Ws;Um0w03&&pPt5&Qm*R6V99{DDMLrQWV5bM-zhzvb^5JZf;Lm08D^~- z!dr)#w#mXPxwq{{b#?NLo;@C5|ER~%6*(H z6Y|9zEybOURhG3%ah`xY4&sde(~lYu?oYm+14o;DXv8}p21^o%KQE3S>qkM4!fD`w zz|b5$NidyTp==W9Oi0vYDmd$RF##c8FZBWVI&XSk2c1Cb9D0u2M=n@#(vI8Pl}&@O z+Nt1Fy^(-8j-^e#nO~87@(FR0Ouftw?RSB%>zdUKuHD>QT51 zQk~0d>O@f+fJGT85KMV=qJx^dR zB7M?vOv0rkR@(jbd}Szm=S3=t#SLcrFfYTsxdJ1O2C?7+C7nx1Je5jbs;T0{WTco$ z(rl(=m?WJ=DOHN&Ie|-p8VNI_%=>{AMHz}gCqA|0f&Gov)jl{*6jyM6kEgKD00dzP zCS3Dc0)DY`zn72}v{N=LXoQguzAVj~V-y*knY{<;L-*ZJ%MT46*q3k1JZbZz8{+_; zbk(+e__`)EtQzxn|2&4CdLE3Yu2BQA9X;+`g3$ph2N^OKX2~7?Pn0uwCMKE#Qf^SJB>WLejv}4_Q5G_CG1E8FM8h@(LK)9sYnk6FQO*c@T1Kp)M z5Yf~Ds~3G8*2ysN%#G5ChIVGgm(P%A%rQnJ-C1D}6aPtc%0Mb=`5?p--7u<_Pr8*K zaSr%Xke7<7a$^n4Yt$?Mj*)9y=9pU6ZEWGcLVR8kbXC1TBV}g80UA4~voXsD8+Qh# z6Ewf&m6Yc7tIi0v?_2M9?8KQGt;m)%V*^`llI)Z?(qda!71m1#YDfEQv~yKI(zi(= z$(kQ>`-jHlw74{&w)7S5Msx3uKi>;(Vuy54p1L1G=&)O1L9fXA$1-C4;qf_SSIwa! zqLzdvNWR0r<55Uh_hYgEqV=Anrt2R3@XR|Y@Eh%?M1M;*m0O5e2N!0XKFOxIVUJYC zPk0#anrxi4-%PyZ2*p527Dqz^_GNCrj^I%=XH+!q9XV+Pyd}}Q2ysnWx1nVqWqw?d z;r`J(AsAPNOjCZ^ZHq-YS){|#d=r$;mjf=?J1YUat@eos@X)_|VAp{Zrw!ev>W_23 zm`7F+cN;zc`S(Q>YDhGzr!$EhYR$om70kz-i=M@(R*|W{W8Uwm%g9=97ycmld9b&H=OBil9VAw`GImRa zC?t$I^WfV0c9m_ybh}LX!WitK2sZA>tG9%ucsd`%-DrTr39$w(H?kLCZ?qNR47Q%K zF91CiR>Jkr`8G(7tlm#1r^#GDhuDO8FfO~q0;O(Vb@sxw3RilYzI{tW zW(QRFQN(Z-?P?dxLglLLfqYO~YeJ?)8VwNe1V};B6_PG7qU0~f^2K5)!Ikr=I|U;T zFY*)>Crb@5d7rC~YYkHz#dx{!l(P(oMg$|Ugk)pxSLuzohDE{{yNfy97_Oo=mZ=rT zBrsbzKGT}cwHyr9CPgARv+rO+A6^0h6|g-FtjCyR)a;a_G#5;-emTN`N&SpO=Q32< z<$qD7hi0rC_|WF;vX6=_(SHIn+tI zkp14mTggrzK458iN44P6PH-*SW}tEVNefp!nrR0=tIkZ2QDAOkE0qQI)o!zh0<-E+ zMq-r{?F~h0oJ7iSX#mQ-+}ZkG*6{!cVd`cpZ2WW#O+$sVPdUc?!Wwxc3{~FJ@Fc8< z)@L~MybhRnfL!ZKU}F9W5+`t{>R1egePsIJ18R%ukSkUG4}pSM7V&s#qrYmpEXBhc z&mOcvoN7-RnH0t|1=}}Hbf^mK9Blfzkus?SPSl?WUmz%GN{VgZ%@=fa zFgpYYE#1$ZJwHF=#Qop3bba6GYv!Nm{X3Y!6lnUjU>xz`oGT?bC7vDg;)p`YT&p>Z z9uvnq*`uzUq@0_S^tB5{lK)Za1O8hsk;p({h4%Xkv;6dF!&F{ayY(7dnJ5iku}x1z(D z9U6bwdjZ=0>iC>N?((nwZCn4;f^$kl07p4(Lr7AbD})N!44{xcy7NO#I9JhdGI``qDo@-gM3>rFm{ReVpYp z)*J-mjGu-rlj;w>&WvxUsTj?j+=Ze3#1g8qzn7u$6w^&3)spOZTPr{FVbW?TM1hSe zVLr(5(m8cn6=j43`i{BgrzIIluQUG8)Pj2#T;f*+;|bn9G=x6Z5bmZ9flJ&j!lfjQaxh6!o{*0QiP}NksauBvIPnP{O1qA^p`f+2 zL}20I8)9O|!N2Q43lOqES=S<6(P84M@W|5cba)JeJWh|dsYUNbd>Y%ULLW8Q&3=59 z+P`W~BivDw$lrcj6u_vCk}2Y`gq7c7I=$ufXcPNX|4rkYNiII)j^4Xg%$tV&Blcg) z9n}+ZK%p8nTJ#FdZ^tjXl6mJ{?y$o&zOb4=)Qp2G)>HMD@ozcAWLMw7>mGfAlE6sT^wjSKZzPPY!5AU6~ zVc$UD4nirVW5H;hrQy}#ry`KC)U0{ zD(YRN!CC^=C5xfpj90;_<~{$TQ^S7+CHJAW{lG{?)BY-Vw}86zPzUOaJt z-V*@&#Y2OfL;WfqgdP=#aGzl1#rYcCGkAG8SspNtR-|;MCs22?S)uFTud87n<&&{0gG)&3a0ZxkJnOp?xX?*>3YcrXLNW-uNNK9M+?kJY6Kas66ja7jUe_dOa3%RP zobtB>_F}fjZ_Y$lIKZIZsBl2Cu^l&v|Bgp`Aqf>l>9eYT?Z~ShDy45m@C8)U(bwkO z_nf8bru*B{^dlvREs~b}O)C7Yfr{TEp$u*Y`kZiZ9TYw2bhmfB zGJ5Th;#~xQ*(9)XTWruvm`u?o&=^h$cx|?rz*1`inwYKdS!4}X=lUku1H-g3f6HK( zzFuXw>GMwFZ}j7zPJd*equD2(66gFtT)(pIEHqTk+k>o34W_4NvW+RTSgG7(i%0mn zMSv-9?;yjJ+9<&Qh0ZnkAnIXQxYU^wb)*$uSKSAKacdEgPO{#G+|ZY4wWjx-W*fP= zz+0D5;enDJdU-=UpjyEcO%8W1%!3OM^5-v2c?p523FN@>ugp{FgL(X=z zWql?iR6=*k$WJGy&s*kK82IkViL18=?5q90O~jF5z#(ZMqjbT$qq2Wno$EP$lJ4_a zv%!ZhA3L6O90efvNMI2lpPfz(YoRo|H1V1IsVgdu+i!4)V9&77GfRzo_s6_+m2zFl zVz_AuBEC~%o4UX^tfu^T9%WoifI}$ck={uCJkZ$3>A^bjL(P?b3x z_nY+Yi zQ~1EePkZ7k@wioJg(1J-P?xx%r2ntqfEMwJas7pF#Na&eOBaBSkcXHs@>|+{`vQbo z+=`vV1w8Ll+W3yh@>@l}IqtWQ+XX7fM~RViekaNZ$p{#j;c0z3MP zq$s~55Yaa@HU<7u0)I5=czjv`T-Spw;)LPtu+;)WT8HvvuumR-neR2jx3ro#F2%h% z68D||4`L*b_l)9Agw`13{QNAL7O{qhkPKzhS_tN1TO4^+UzJk1D!5z+EvqR;SR^yA zrVb1Hr9-k9m^PMM25gRYTom)&x&Z8=cj3bC>1&qe3_lDf6dtSNH^Y$Nc5cx~^7qxw z%8)krZGV|3D$Dt&0GOk13k`^2-KpEI5D4aKULgL52ZpWcZ-^ zF54cvb45Dec!s(?2J!=P$b?F)Kf0O>R##y68~P#1AB$gTqBlI0?&FPEs?K$KDSEU` z+;s|a-Ts>xC!Kpu_s`O~t0WC_*S@d-KF5X0{_r+ea03EBHGZ!{bHWX&I=eNV5Fsr~ zRHDCl_W|@d5sd()iXTCA+piB235ea&=uIl4{6Rh(;%;E06TzsM>$cw}Y)L`WAc_h4 zbOTz{RWyK+v+fMM2KS|Krkt2a)`^{;NlDQqr1$2d3Ei26%1{ZGO^dNV=+Pc}jzep+ zLACR_4s=no3?Hm{zmiTO`2LFZ>MV|f@CI*$?1^f=o=s=vN|m24`lg-wB2e$1<2<`N z!b-Cl~2PX{r1dG&!x;~vEF_-gn>s~?b9wb zU1I>wVNgTf{4EtP(5uSIbP@LQTko4*+){S2B|S^Q)cQ=71>umI88-M7Mbc@h;%t<) ziGY`GcJ_^pNB;4O<3;R!_g)EDeYnqk2(6hVhtqgy2y#{x8N~giULfI7ejBB;c5dJI z&mt-+GZZ0=v3=)+pQXJ$=W(i~sY*K$cZ_*zRvR1E%^ufU<}rX{R=!_a7)a~MH4@%* zkN%qO|iR+D&Q6Kem}X4~Nc?3ijAhmA6w+Y1djA~^2jxte>wbq|$)vA-C! z*US>H$T^@f}jMIg@dQrn9a^R9G$c>zk{5B$Ge9A_kFjgu7Shigw zNH;Id9EueGoe=1MZSmL~L;u`2PEQZ~A|!MM3H+5w>PRD>IEroEb&ehyiFaUi8lt(t zM3~@e_N*Bq1U@t`bJ#g&vQMWmx-BVyVhhiy=?v-@a~2q<2w)ErK%ozRk&xIR!7$=u zbAn=HthP^<>lJ2KxR6lm(fCMdhNw?`RE9$uh0c+nAgpG+Ys7yPobYtBade?v_!uWr zM$DLv>-4Y*~YlsxsM=@K}}xAxGm z^)j6BtTEW+3G5R27=yc&Gw&-<9sCWu2WNLPqgbtPpdb2u*a#U4X)S(&62Xs94(=GR zT>BDZ90C=fX;iH8A6LRNb(Ss4H&U|#b;J$P?oDL{NR=O;>RYI-8%-qY@rmxxuX|Bi zrN+3{jj8srJ&;`nd&{-@Ag3gtt1H+UkGtkFR`h5Ut>BtZAr2a)R0HhcE^tGn!Z?Q0 zAnX|o*T?T4XQ0Qtn%qeEWQOstC67(2V^6Y?v`c3r0qdM3G1GlJOI6Y^Ye>pt^RYw> zKm=zv_Gw6)b6cbj*1Va#974_B8;+pvzF(?&ddaha@a#IvE z9%*`FgHz-4@=S6D`!dlX+~DF8jw)4KU<=(0{aSl?yDAI9%^PN_y^Q*s%*OjdqaqcF zV62C*S(utoncJD{><=7Nx{=^yrTr#(g>?!0x8is^ilRZsyVUQ$jfK~S->oZ)XO}7n zypQj9WUD42m!C8mdCeQF()=(qBw!>Yu~;lHyh`*jN*Fskd(MRPA=*BK*$!whH%7z0I?s8u%A(q#i_I1r{ zOuzr^nhgPby*~HP41rc$66Gj*tt1Gqcq~jzb`MDgw+=0DAiI+r=QK0ny(XpIQmXg$ zY&g5)Y6K^lzq3s0fr=;}5BFrBOBE}79=|HSX>>7I68K<$v3A)My)(MWv)+xnWr#-BLU}N z6}j2Qy#~eq6-Fs1Ijoi;)>w^ttK=$P0YLtMI@6i1ip_Nbcc74o6So_n-V1q3S`yfPb(qF zBomv^q}1{`=J%Mgy+Zeh{d(Fl>RI1nzM{GS4taCdbfWYvi8csYc5t_=4z)pF5a{A) zy>TyhAun~CybE+JSNzw3*&WVo;Y3Z3zwnNfql|Q}Jd~fZ4Z|qsl4=TiqkHxu@qHqp zt~N)>nQY)P1^?;nQ5f{S#?KL8`eFxS2Qps*e;r8tQ;EdZ_9zaog2+x8K`vzLa3_a( z)5$bb18Wr9m3qhXnm1>>9On2>W-Yo}qGsJ#0b{Ws=@>tVX~34TVFmQU2nPjEj25Z# zK0m0&ovCHlxD!hHaQ@VT)zP=KLv(Pp3RjGF$)joz?y!Q<1@Z#8k1DSzcY&2^X4K{` z9BgGE&0iCtdUX(Yq;Y3U7%;|G19SLj2^ua*!}wdz1dyzH#C- zK}F1e8#0J3*P{xBk#1NBET96Tc!1KgmuOy@5@5@&*(%@K2(*EFXV8<7{R07DtN0uu z%UuHvkDAwh?Xx?uH~mW&oa}+h%V{zDK^28(3CUfy@?o*9B|8FTAb?~6A!2tRp*9u; zAqh-sg5R#kShc&lAh!z9qzN^@igbkB z00a*})Q|e&DGsNj7FVqGi5de@(KK+gQBn6WMf@_1QteyXpiF@}&6=R?m@CN(k~AF^ za-0IjCcFkc@l8>1=m6uOmh>c^?A+S*Y;9C57dOS`-Wohd?`kyFjwZKe#=gLqJYcz< zBeEnoAT~k>P9h454D$5pL&Qe4ac-j@IBEsv3<1u#`u~BjLZOy`?zKlsk7j$FVm`$R zS1Vuf=XIX1QLEef^H#S^x7Hw? zHIIt|_Wu;XaAfiyWvBOaM+FH%oNCd!?NvmyqH66uzXP++JcC<1+s9vjT0>6u$vK9V z7(m}^9;&Bypj6K%Qy?$+{wNXh_|lH%!CEl=gcV4aK=51gt=hE`hAu8=i>^FViSsao z762Zh_l-1l$aG-9+>BvkwG(m`KSdtp5^T|ybzlVx7ByBG=#|dBOpY2US1q2H`0I$m z+c)}69g0Wzp}h6|*bTlng!wf6=Q@loy9_JzCIoinP^u*Uv{8Ufm!-$>IYIg&`e~7uB{jN8>ek^0;!y6N8xM=@E#ujk;8rQ6C&n7 zU7N{0U?{(I*jr51x6!1L1iT ztCmhw>EO}CCk7j~IKC}xIGE;uFO`eOlPZwDj4Tq%?i=d;;1NH`>VlEl@6*VYG@A(| z+-=LVsfDnV@7Ja}=bKjnLPhmzC=vPrZ%_9h7h z!5Wx=B6sOgie}oE^6=KK852P*OMtoI)!}6$Bt%ZO7qt;Q?vD~NRrYoXaoDqYrh^Y= zYfZ+e%Zt^?XkDi5#O7i?_MIERl~xi*mTX-?Utn@4G$R+$+xIr79y+%f*d~*4A{|v- zVdzL5KO_Z-%48M27oJ)vu-}x(Zw@3~{r1PGi^W;8nE$g3(G8X)z>Ogrj7{A1PP72K zPL=Inl(^?{h`Mn3C+m%SfJ_#v)Fp~g;I(R?l+>OSjsquazppH^*jqPABZ@R#QMLkN zIj`@*85+HZe6s(B8eKp9yc?6&=*qeIzW`H{_65D3fxbA8Jpn#lM_fD}DPG-(lUH6$ zwbjq0Tp&r_w1P;bT5WVbz?#iESI_w@ftkn1rH8iz$qnFWM8lB3+7p1C9HNS_-!qu; z9*>hMK6PTJ<))-IO`d1k&sj|5N*RzD26#a6{tUJNAF*Nuke|%u&Yq0dbw&eCaHv3v zC0KH`L5E~-6XCwkEgO$y3(OwCCW5Ch$#kK^&`b|bk_>KL4ti__J|hkL4~qO~pg#2w zGlD@Ttta;byf(c64Oho2Q$faAoj2b;L*^&i@4;rM!YIH9h>Hd&kq1@AHC%>D&70j3 z3A<5LmHF04$%N^#kpvjkDqEjv(QQw-$sNpjq9GL;LMu5)Wa*uv4eZ`L>Gby@_g?Qc zDSU!7hUDflX}6E4m$DE)s|kga`5F0b3NEs7M;rM5Z}t%dLogEz7_OU~$b!Ix&_g5} zeABO^sELB??(LiqOnI;@6Vf)M%;o)vtusK@bHArO$C1o~ZKsJlmweW01f?(c^ehhi zs(+Vm{cLeYB(?0Q+8jQeXRJI0wm-WbYvVfk?`*;L?nlD~@aBP81$`jpn^LE2C$A2} z0NDUCoOCWgrxb?k$eMiVK8INc!*F`ZN~L^(7lY0%%1GL%ff}YJAw`xdNwBjm51JrW z96Tl5MXN>eu~>h%6&|Jk0q*LuosdrzV@jLi!frX@{R)Q95WJo+#aXV?PN|cG-hJ*o zUXMerT~|Q((;Tx0#EB>>Y`P^&D-VRSATs}0s?m0}-Y<`snKmI-V;9cB74>?I_bwNJ z8nCG@e`0G&PE9>{kW!9TR}l`uvZEYcBNB{DgfAnG zG2|o`9vh0Uw>%fU|t zcG{I(hp`ulPXF-ALSQ+l87m1!Qg4+hVnGfyz{sAlpj!?m3M)(oc-Wy2q+dYT2H;cK zGFnmg!(I`)u5T@m|7Q*Ph!z_KAtm($>ZuwG6MUMc!t6x;hD zg9>*v+@=Exg9A0DiQ3U3hE}bYiLhBVL{zly?n68Jj+LtFaU$2lgh_p}3dGkrNwDHA z-bx7Z@y(s9=E;>AGWK*J*s{QWG%1iL4VWuPFmb24w5!`}|4&1={*>m9EfDaKFtJ>R zX^3r&;5BH(82`JfgaS5@v4c#&?np@6YIJ8l%|b~)|5l3US#P*F?t6wJMBu0HtdBPi z_8+>$xtS8=yh1EiKQ$}0gqK<#)p4DsI78a1F|yaBq`rI*yd&;ir}NKY>Sc(8cRli0 zKAd156;ROGc1B_Mo`VQ{`v+AMwip1CFH^uJP%mf!LOlaEX8N4w-{NZV_9N){Vc6** zFM7BC&pl3RNmc+zs@PHe$thCC*H@7E^9UF9sY>qBpc z^6jB;g^KT_WIgNG5m05)F2#;A8aSlR8r)RPCxG%ZIA+(R5^9$NjypJDS zYTqbPu={3z>XgCr=j5E1TV0Y0`K-xxYqo_?qGreJT|VCj=P4f&|NpJcU>g84@Ht28 zRiO>u)7V`g4a{6c25{B%+2C%F_W}P@bd0Nco&e@6Yua7dHC>@WNWxWG~$yZOXIQMmV3xSF%AE;4olARHV$vc^EZr z_V8m2f2O|E2xkF%?rRtKzEg|4s>k6jBz)F~VO7%mk7ggKNO9|raJ`>cc(N)(>}2=w3fjww8nxaiONdW_1Ul-BkS2g&ne-tG*h-LXsr zq{_zr4RqVtb6!b)RPPtTs6C%U%^*w_<7)kAGQ}UiNLB^AGvIu+58{aqn!i7223V@a zw@}EFb;_3sLz~isE#0B)IT*9Xj-Yhj+j+d#dF%Kn!@x7=y&J%VU#NJ<-x;i_ljJokbbjNh%DXbuQT?|G!O3G^DPNq2uuRsN5l@5IW2ST(Y16Harx z74K3mk^wn1{`;IYQd*21QQW|Wl6$p96>^I0*mL!e!Lsed9g!adIvIEW_M!9h{=7{Z zxC$F7qN~GjNf$?@60iPQlgN!nUl18^(1Fh}JzR7rbTc!SJEGLXee8l2tBnWepsdt_ z5z>q$uSoWWz%ifyM=Ft>A_WxUE6kNoTf{lv;k{Kg@gnbP1zF-B%}y4c^~(VW22c0m z8#%#b9n1qw0F1A}F?osYP`BJ&P!q&fj8+f7`@e!_Y^AN|+VS0a7xbRT59B*T7Oc-A z98HMnQZH;S6GZcaJeO>F>{xUCg1KTEZw`%xfkU)l!hRiZ)2v(uYVxO4{8ozWpmpzG zRP-KM1?(Ogwc8=NOt*0sHisOYcA2Lg>oLLPJY!FTQE{ZhEh*oHHLne4_C zHl_hx$p=lifTiAyBWLoW^~+V+TE;1zG%`KWP0+em;68!oGosEkYw|rx?3ICG%|yB3 z!Tg{KI8i3wqs=wo^=xoqg*8CmV@pe3E$Vmb2Wc4EF**w-)>JvxwP&OdCjez>p_9)3 zAvLspg*(GmA}{d+aMq~UXd}0(+<6#1C0LJe5H7ra)K5?gUr3-AsdUuhi_iY;0jI1j z>cA5ue}WAG4DG0Vi}MWs2MO?b3F=6=na!{CMltX89bh!L246I!V)*?|B+E$R5By^+Mj|8{#z}FQ^iIkhr?h}{H46qI2VRJp`7Je@lrKzBy?67mGUt1C+LoO)&>{uw#Zt{@FS zxgfED6d+sz+cTNWc7`;|Gs`$TO|Hlyis#HhfLeiqOV+}A@hF{9Hge$+T=D1QHmAo= zJ{-~yBp%p;%?!(9pwYzyJ9H=6&`6M+w$U_u z0kWO8r@b=2wZLvh*Tsl4RTe|IG@QrrG-m!-TynFMad>jmU-dBjF`bXx;W&q+A_#=K zjqUzvX;Reu;%UX;8b4>lPFc-vkeqXyWXgAZUiy8c$E0mO^4H80zQ;oHj)8~J2~Son z3;r&$(z`Ur>`L1}x-lmtJpn~H1*8;+5>uKC#laZh8l^gq6||P9uTy5aD5qWw3ewJw z@*W3Q(k;kFBtqw&qx#284xB!yD6adeVmUZo;AfstK4DCD4ABvAFwl5SB)AP@(!*M@ zvVkGJnO!$lT`#O-INJWk*Nfb#P)-zf@d7;Ar|!hAc|Xnuxya$X_BdMKniXuuV5!^x zEJP!&e?0Xbjpj;8>`6FzFk%$*qiW`!=CSRDvZb$*{G(Ns88+D?t73bg+zaw@me1xR zl0MBXT$*iMdrwH@Qe7J%V>~3>FNkA?fu({+Olc}y@j?E zE8Y~%R?$$=!B_1u_fABz=>Zakxxw~qlS9Q&%iSRog?rFMbJ(zqU*siAYXQaVzWGRV zIbgaRoAN-+Ka}A^V60w>kCh9OLR3zX4}y0Ods|2{`#_TgkQMv!Id~z z8Br1UUG=9^>S?(gxm;-ZO1K@Fq^191b)Raigcu%xrdZe&uDzGenn= zBmS|AZ%Yj%-LSRf8D_U&tpy6bkPM-XGevy|N6C#${CsAY_vP z9{M}(DHNwV%f)r~Z!7-`JikdkhqF6dUOEm5eZF65bjQ_q(U@NI>ph~~GPbHzSmrW= zh)OZd8K2`QpGdka!-o!;?lneAX%x_)sM7(G`Ww#@q z>Jes4#1U6I13S6zL){uFkWb3j-cG{^1Re@31UEQ&Bdp1e)3tBKwc)=Q}<=v|2d!MD+Vs%b~c~G6MEqoSO(=-@RbG>+tjS{ z3%@$e;Gds{+f?y%h5;SG(#zY%*~>ZtQ4Ca854?GYq&<~8o{jp7m6@G^S_auu7)c{qZn0}>Y?33j zEQ}cin&x{vM+Z*8g7)M#O93XhC-RDKox0#^LLhX=gPg3rLod+*#cW;l z2F$*x9!|!WT-Cy$+bio~8|`9---jPC1Tyib*DknrPONPjj8L<)fcvy0b~H#Bv(1c$ zD~m6rA&6UAmW?C5a%(Au7D)lMt{)Db!$O2js(6qrXyi<6=wd&f+ZN9lr-U6x)_&%M=1M3Fe~V%}_B_46u(F!oEqOfNjBNgRy4 z|IsFycqAF7%K?nRDblxPx5xv6JyY!S;Zo$5sDY17RhY0tC(?c z`FSy570TJ(4w5fJM>;K-q6|I#XHk|^%cw$i6bA@)Gh!-7DM+0A^EM90`xYU98J$Kx z*(UGwI~<{E&ZxUdkEos)%hn)cd;y9GA-4mgv8lQ) zTv-is>TL5io{frLgk#HKn{3PHXkz<9@&E-599(cvBqP+7%8$}D5X0B+g?^+l(Ci== zq8v_sZKj?h&x@F2E zARqtC$5X%K{r2yzXlGuh7N(cOeS-SM5M-P47LPNthhADhN^HI$%E_0DA=6P}3HZ+0 zNB%j=*V3^w-t z0I;?u1P<#IOsQckEE@Zu%zKKTBv}GMV8U7W|L814fXM&qO{#e-S@al~ z1skReYTDu2F9U4y%AsfF5JQqW*?o}9fdu?Vs}Q=So)68XHD&nX2Vfh5QNz(`$dZ(; zz7FioYh4^HJxFsNDifMr3=~dd-nQ98v@`5!DCmz9nYA3uXU6>Uo-LWH6w4jaK1jK8 zn_tZZcjFjoaTuO9=2YM+?KeA&CqRBDbaINYZM2d2DO2O}Ut;jXYu z>6nhPt;q2f^AInf16A3Q1nWpHo8F|w^kb71EXP856!YdXXxesXau`!448Ksp$o&m?XQ4n3$D0T73Tu?ppmE0;;>f^&e;7e z4DBFV5#)8M$Rfn;$2)nlWA6`wPi;2sX})l@4(ppz-Peg(>QIc?fTTVOW4W^?+1k(p zoEp_lILNZO6bVdmGM7#&bzn05d7W^2%g?mL24}C(5PG!G zpHpIj({p)kXj=3Ag93jzQD?I>c0-_IsPR4`1`%W}jEL2c_i|dA-6!yhpPQ5ec<;4} zZV+7qD0XvlC5oP^JY)(3S1T1~=tJz~8B=-6GR@FV{_pjgy$=nFd|Gz?o+ZFlUnKjGn~v{I-i+;5F9U=vQODi$dHruqcPk(zR+L*}^jA6RQO~ z$fJr{z4CpRK0}(kg$kBx{rt|1HwZ0)84KdGKCsD4Y|7uZEloIZ5QUG6D&g%SY6b z%raS`gdQmSAoP<2cirf3_$gE4K^5MWCqDbOFG`d*Wml={fG2WGM%kG6OXK&x|IInI zuuD)}b!d66O4;+^q&8YQ;bRdZ4RG56@8l(g^1`bKb~VhZV8=AAMj1Ee25_9V2O;B>ffKWkmKNQ-d_}4gGp+D%|8HLMC z?r{S{b^C?#%CcPbtZtHC4cXnFJ0+W>Gb>1dl#8L8k?`Lfxoc#z{W7j4tO@W4xU6;W zUk`_Hg}-Z6KxT(`^0ZlhxTW6j@9D5WH|l{bgXjYdfbSYyqS5UTy%g9ya&B;1koxxQ zagR8AMI1^Gi=BdD_0D@$VH4~McqkN6smhQ;A&)Z@Pm*jaO@|WX@c3K|qXQt#0;3gq zhwa>12t3$Opu%b|1gLfQ|KHujsSfUCZcv5T_}THH1*wL*^^VNLn z64%{KzJInitwcau!V_t6PP)n?&(&`ZXP5@$QGjMcsFyfJ={dnT2efi=qqRGbqImJ! z;bE`gq-dB&odu%nO0`c1m!CZLybXE6&lk>P4)?#HsC#+X+8zTyTafa&s|TFFl3$@d z+eMYjzzwbsbbA3pOfQ^2ltn6lE&2OSkhkMOBVISybMhA_^7k;YIF3Em#Ny*hE=&nW zY~Id<@{LM2{mi`!vF4U8;;F-|iP(Q(_e|%FR?J)4r`iPx<%B|9FzX(qQ-&xf>g@5# z4j#Y|^_A4dJNv)xbf`Bor@}Pbj7{9%|qmt-%GM*v%4T)57q<2CH=)P&e5OWb@`%+Gp%Z0 zpo7Z6d0D5!7Wl?Qvb=8NlRT>`Z*djn#Wr4TELABlPU-s!=pRmGXDekENzBC)$KZg1`k%cK?_7cj5UjQscKH4wzbo@| zpHxm3)_p_qK;)KN5ktkR}8 zpNpx+{MoCd*gF3WXpUgg$%Ji-eM!2VXmaY%kqp?{uaWFyQ zNH?~J0M83lm$`1h+$4#54x(`S ziGwWv;sOiyXx6-XOUt`2B&Ur09<2T;!fBSPmcfxU>u?T!$2M4T#Lt83iOMr>K9TDC zFwvQUPI;Dnp;V~~nHc=w=7c8qdNA*S+E|sLdU|&Ho>#WQ3v4Un-X)KBIJjXDvI)<{ z_594!q7xum(ugD$kRd1+awe0Kn{;f0@F_LX11o(nvt!+Yi0D*qZ!S#3SN+US$9C@b z#>XeF*u;rP8(?+TBS$n)CxwIFyu=oxvo~oxf*3yYQ(NyE1e4E`d=jm7(@i>k;UGM@ z*Ns2o~?ZY&Dh2}Cv;M+M^~V0R%d8?H^r8C$?MtjkwCp=u)#!%rS9s(3R? zGe^udE(#x+!TxR9i<>UFh22va8mCBg0yA7>Xn6Ao4rvzE(x2w*i)w8s`DwsF z>Cl9X|FyC9fcPUDoRNY%_Z&lXOA8bZHCH@n0n|1gSh+y*Gj{cmC`mN#R@!ob4L`oy zeUChn0(R--#wRt)tt(1Z3zEfke$H$g>k=TtP{pK7Y(R?iz0`@$7uZ^Lf#MniJSjLAUTOP4caDMM}s?Evx|qeq`2}n z;~gD*-crx7@VNS5CqYVqb>4(=!74(1kkouGh0ECe|>2%io*5pNeSf0t}2E+);v%oGQM!Ea;$1HF0dm zPx6h=F9g!ezU6pwurC@K<@g71@dPHfS}c$_0F%3V8tX>^umwR3yy&^T-Gw=zp8uuO ziB%$<1+U^jG5J_}5|3k9W7NdaA}V1z4vC-<$*o=W-wd^OQ(X6%m@*{DG2c@LzUzGx z&6S`7e?bhaZXkeUj!9D=vh4jq$a~WUG!)+!`gs>V`DoruvBkRHD4w^q1|yc%+r}CgStV%vtsqrv0f@#23zRZt8`P5UP{n)5vt1zi z#<)&zg09)arbQg==Zx>F9MxP_0%@D=(U;*9pd=ulMDd?BPqgc zV8V}x_Ag(z18x&;6M#XRo5KC^m)LE-ehRek@r&Z?ydVL z?6pKiWypfDGrbqYq=a@j@8n0Ggpe8 z$Ii%N)>Xm`F@fMP`4x_k=R3=m{W3HX2y@|7j|)Y0U^K8=M00rM1($K=>Yc7HaK$`0 z{w6`}5mV{UZ1Tm!k*8Wb3XK+yjytvcHoiKt&AM=5S5#~rNJL~J2n3~oL#>X|8i9LH z{GCcia?6&u*~i{ElrXgv#rhd7r-~i@`YYAN89iFgDOD}A%uv?@rO%I1gEo4C8SncG zyYJEQcj=DBxH`i@fV!~UAH_ra$>zl+IjG&@moSHr0R*xl6VI-WLHVvc zI1xb6!zBb+J};=AOk3F;5_duqQf>T}bn771`XDPZXxII0gTg7w+_Lb$mc9!I;MFHv zh-1Q?Oo_iZQfMu&2-I-reBiRZUrKbDTi?k0yLGue)eT%@hvJ@S2d{IbxOS}fuRgXH z+)PV$e_#H|$`8=|pjgV$M}xIcc#uqC%Yy93GVbQxJm2GAO6)&5O}DXvO8zowYn_(< zKkD5t1t2WmP(J>tagFRD31?DIT)?<6jz_*A7T^Ibv!(6s;9z8W0FT5KZd^g`L3X-Hmk~VRKcyf(fnQ^J>jD<7_1q;}c~&E3btM_MCgf zVrI&AntZY0W4MeN$0E?juyno!Kp(C;MiGbc29ci~0FJ^oVdeNq?MC6=`w0p8QT|hX z(RoL_BKSH1DImNVj_Q?g*h_nwis_--cny942>s1PBHS}0pUff!5QT-$FzQVbR>6gD))Pg;k+(l=^HH?ooKj$QQNp?fHF9oKmFO$Owm&D z07%d^^#SCK&v0OmkafgO=3|5nh^fB{IAbf8V`E~nw;cKSGK)raeg639)$n5DK!y@c$mNc8n zJ+0;@alFe#Bye$jdV<)B#T?4)&PsSxjvG15M^pRml&LBduc;Oa@~~3wIL4hNW3^*J}qn6t<|lQl)$iI>>=emNyxn=u&9BE zeTBWidsDXFDi_>K<@^A^k$iW4MBLauEzAE7nDyB8HHb|T=+H&1E7((jMhDMbQy0m( z@mEjeT2T1e<2v|Db3Au7>En|rK>sxA2g8G$Zk`x6IQ_bLbKh!t7|!;-ZtyG0NExU* zRX7@@JHlpe9n^No{7t#{8wVerk|X`bTR2DvgH-@L>cU)jc{ft92XJ(ZRR%>{g+oBTMnZCPN(wx+H2 z;%bw7-QV?iP<}7XOwvWsOqE|d?IO>VcUMWBE_Y|q2RZm4Jaxt^ zCLO`EzSGux7Fkg(x)90e6jfZ#V3XkN$);1;ygS;6i@eVX;QKrPwC0Hwi0#l<^`N># zq(}I{-~DjoP^wDn*gUbSho3&M=Sxjl69lTK!x*di;GcydFC{Fhjk?o&WO_gkFyE8> zdtArSR@C~E{`YE80Y=Y*)y)4Xb2&-5hYKhH~yOViXYw5rPw>iIaR1~YXhpjMPe=@PT*5CO923{egw zdUphuBBH!*?sDY@)w=}Vjh|W-_A)CHyQO_|^h$0l4fL=Y`Ot7#=e$*B2WzAQe zJ^6bN$bMon{ybdD*X}BvywcN+)dwVBD7IuLg&;pUmCC^phN%NJq{~x5Vjd-upirji z8>JYK_C``D>~(Lz{0%Yl#N}&6Y2Vm$wiz6N$GTh@03RH25&;wH*BLXXJ*scfD-X9> zHo>wkL`f#y2jDxt?MDzcZd}e~_S%5gwx}yoejHWxc_Q3BczRB?PEV9XXQ02~ zlA1s{fxF;~nAB4#ZvI3Gq5O&HD3pk7r1!?pz#LzN?mVXUM2`f~v_PQ~Yw@Lr!POCV zo@MsNlOhO{c`3NN+^43@QpMYTms6?TY!*|}ZjfmNPGDm%URNG^uFY5O4*ryI2c&dKWs?!yBS3Bb_hjM`ufY5zx(rQTI>b>V-ynkTZl zYvip9@=bw9?S64KNJ+H_^Jq?Su{*Fb0Bv1~a)EA%7Rp8!D?dw<{p#?_qqA9o4B>imaw&*9$65ih(<*U86|AQ zl3*rSFc+N$X_Y-=1&AAded(`2MTXI{hc93TT#>=f-qzM$m+89*KV+FRZ<0XXB)}hD0Lf_Pf)t6OKgnHEfG;>>p}tu7fr;hkI(7=&AI81zP6OpOEYe@Liv$H4RL&)Ycr?V-V83AWlRM< zOcZyG>X2zbrL@Ho-q0Za!_O<+!p8AyYd@|d{LS*mNX^yWcXgU3C9vCw8~}6VA-HTx zvO!HG;VRW4w_i-l#g1~F)-a}KsFR1P#aVsjU79U<#NXGy_;9D_sMDEIofbn{nCP37 z+iLxJp>3%VA2|=a5AY7p2_rW`J%mYD3%e`@0WUY5G&3#QFh=^?i$i|uo?o*g1LWCg zAp zd6HtPCdmX3;NXB>a}45v&6OE!{ft#XeEd}zwc=-`tBw%RHNS&rSe+l$k=(G=2mUbL z_d9YE3mR5USS=wdqDd{xO|L~=*=kbNVXKInAdB?RZ&iNB6qnCrPsV`<9$ViLmqnh$ zKM%dmW7o0JQo^TlwaPGV6~^`5Ja;RSdjr?rDOjx)wattRJchIwSSO9A{wTJ%?idAe z`Tdv!Yt+>SOR%_In+|4eq2>~kWoL`6+?%TNc4;cu&;wfG0%~jt{5R;9wPPer!$S9r z|FtX@_h}|Gx%=5Pch+?NEL32SwA27L$(F6gD%F~c`8QI#_m@;VVs!UEwM`B|(3HR2 zrctO13O4Pt#?BpYYR#d7l}HsV$b4vFWJ)W(ku;WqE=ua?@01gbp<&QkzuFK(BQ(Ew z6w~)xvcNzk304uxzQ4Fg79n%<&Ez(}Mb0&fWC|=D$kOOOg~e`I+GEl@Mo)hxoF=91@Nj$b)mWSt5HyOUXjg$IlE{x$3?9 zdjd_v0sHCdfVs-Vui~c^e|_`fU5er|;v+Y}D1eE5sODP725LU#H{%q-CLO%O8)Edd zr-(MqT3R+H6vO|zx0ecx%z6#!G{R%BEm3L3Qmvp=y6@_mYHii?hVPuJZ$RMd$x&hB z=PFanup=%=tjQ(ON@X&aJ(I!bZB9n>!v;oIL5@;t*gQWai)(z=@1B|*BV$+%;3O00uiE?Z( zL=t2183`Di!alCqVG<$!pX;QIwsJVPaSc)fL`KpyoE=-J^x{!T$s9mZO`!D+@M0+D z!;8F&Vf@fPm&*W>K!pR|@g6T_Io)vH=2xVTX{!cCQ%{|=lcumaX&;_mVUv-6Z$p*M zAxt+&PT@V2>L({nGKG*5jIvOFo+)nruS|P{#yvv=P%ina4&h^dBx{mqYsIOP_eMl- zO-TGLO($m@wDNE<&!7dCUrs<{(z+n|OO?%0Do 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�W)fr7Zd%<&@Pg8U^zn>OtwU!)M@H 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%0D!^a4@G>srm43g#lVMG6`US^Du z8OqRaJ7V}D^14tbO%I;E(3IjN0pT`aV<#T^g8un7a+_QxUKzr(Wau4Fy7gQHeS*ol zH_5r6`vr4IJcwS*&itzHb2839xpkK1(I*qQB!Si1u9K2iJ^x-(Z6<~p)MR)5F3Ok3 z;BNG1dH%~a=zP_D+Wat!{t76vq8<0_FAEunYJcJ1lA<9?2sJ=geRVfk1NPz8HFR!3 zsS5XSn&7XgTc9+r)zw~Cl7P`+7FGMP)PSV7(0kE;5Rbb5H!LiZWaK>tSM8?oL;jtf ze6)ySfCKV?=+_7r{S=yQTD+|xtIyDh1FFJHFo3S)Xu2e{uc!de2n8Oxa5*BJ2=(@T zGGw?CNo*o&#V1n9()IKD{q1o(2lGTO@8EeX%6a7ATz%{48}BkJ%i)x3At$Z3`(-`` z*@4BV@>VwuEGE(jAdh|Z5g%M0m`XjUZOeW8>{?&+wlPnS%lP~?GA#Qr3G|Yw!3Qwp z)05H2g#QAm$zdIrd;O!m-s*ce%F&>M*rk;`wC?8TVzdZ9|6#_=#G@?xwYBuZZa4s& zrh$O5Da*WK#Tl=;>$@tAOD`pG^4{fBf1y8EMv>1E(4;S@I`rbmxd zf2#ZU@9t(K$9=DTRj(2^Vr;nO8ZpU9c(OZZFe~ywIv6fQ5Q1E3>Fx`|EzXmLC@tFy zyk}=Cc{fm491saB%4C1i3&niu8J_ECQOb9V}DW#ELV_u$V#~hW`aHea9gPNS9W0_f@C~$~yJvAqga+d#ixDN7wpFRP z>8q7iHJR%EF2<_+YIZZqYolVi;ygyE*uLSjBfI8Rl>p7`IbqOZy-ly9z2x1GZ=1gg zu6J1ACagjU0y*<^W0$;7Ti&O@9}@jIxR#K#B}{xRB(k9qnLZBU1cA=JthLWG^F7pa zIO4rW$kA1;TeY?7$dO6J%9hmxzFK`P!ZDz0$XEn;XwgdTFR(~DKT4j-%@|}8J79~D zg}i?_oZVO|=&9D(uW9Ka*?#p!XF*%{hp60lZRvb1#9M6o5JkJiHjKh_&@nZ8b0k%@ zr%@6U#K^U~)b#H31QSVsynUk>ew2TzmPU&O5x0Z+SG#|w6e(F)mQQ+(M66&c=|1Sa zkXd2?EcLM4aH*!;!A|;6gDe)zvXm1Ef`WB>Jt_+Z&b68~leCSL0ZLxqYsKRa+^SBV zQ2N|2{FN&vZ=5SWF{5=Q*eg_YLFs^aji$P`XPF4jZ39oj?%xR-A+YsE+ne&XS^bYz zYQ%qH^pa>oxlHi@p2}@X3*EEC#QC6jX>esfFvR-=6|^*NP#o;R(RRd3u!M5?Jo>{z zZ2a;x&vRf3J=xCJe!9q>6Cb84Hk{Bql;;t$;=)WWWxK}3YO|A-R@Wk%O~+FXK(&-=mnGWM-% z#kb{?{U#txiA^btHYSZlIgs_m0UI>emu zzpHXfkhGad9IRaH{(Od^SWBN;`8>$bzX*{$O<8ueRH%+SY$D}x&Vi#)h5EmDQ{M$9 z#lfrRG>}7bK%^uE2QhF$sbNEQ>2rCw9hEwZ4nZ~>mL(XRtlJVgcNvs zNui52a5zfA^7cxm1=k-uvr++=2P?C`{kpUghhXR89Xw=cy7k6%UTEb}xRjjfXn z^R9%sqdJ((z!j6f_CP^5!~4m+FSqNBQMB{0R@0#cM5!Zmu!fcBKIwLpf7>ytIl^j> ziv1y!&*NlO)ZsyaG77On=p;AV$!DE zgHK)Z;a{$(UJKq+@|u~pS{s+)pCl#J3_pV_Re7ysC0Q!8v`<`*mJhj7hW|K}bVJ&A zeUFkwxIWbe28K~N9Bzuj0LF5S@l*5nl5|~q>^NP?vD$@%KQW&Y{Fn_7`XIFMFzRlC znkmgoij6qfk*`PcS_7^DPiaIAp*Roe6gqvK{n_3fwT@CnIiV=>(gI~0}c?PQ}kFf=%n9;siz@J_o{u^3fbDh zuj=vdjGHTH`aPYe+&bHpG0XPc!L^Nb4@6h77BKNa{NY>RHk-PnnG|9a*ZgY=X}50_d2N zB+^dge>~n;z+diBYQaUUy#Syr;`l-EJiHbOPHH7QL)ftfg2?WI_d*F z0nX}xsyE4C#Lvk)Y*h>1mZbBSc2$Gk=#wviK_jMqqf1Dm65L!$vP}5!=HNS?AG8hO zv3$6n#{f$MzS>Fcae z6Dq7+p!0lAu@>5UFmHYJ+AwSoJchi7&M+p!C10U;|XMX|`+v z>dk76dq%Wk!^|5@Vd&#d0&}AyX!Vp5@0A#g5_XFLTx9`xSv#K(!OC3ea&tTB&ACJs zW_+}*_KL9{G{Yd=z<%X!%p89ThV2^uCiT&@cGK71~a^54oZM631kH%#8duUD#=Q>T1+pfFO*Ei?ISm_ae z9@NQw4mH8Cl+y25rCNvlbXC>hdA~$IN2`YHn-yeldvu8-oDAd0uumOMLBH{S{sl9viVmEF-ppOJh&_GUyr%O>tIB|#Os6rwua~DavT3*faGq7}PjhMoT z10b87D4Xp5%y)bDah2xysY=}YG89)n(Al1r8CJ0CVo6=D_V)}y-R+bQtb`V~m*)D))bXi$Zq;?JwrVfFHr0%GG z4{Vh{ToVUj_XZ(vPK9T7uO>jltR`Yfc-&B|OVYr+BR-DLUYWUGqtTrz4f|_n z-KmnaHP~19g3obx{~Ei-mMhww^w>g5jt#!@e*kEAGWwnl{>Xx)oWfqClPw$Wy_E7B zR)T}>pVw%-I$g>8GF)z|OB*ui~fBO}aJ0mr?Fd&hSVXCVQY=Rj4)zg_N|xueugJp(FkHK;Wd; zRvqk6=cMqhzy<2ynSm$HC6SAtRI3&-&gD}KQxavTwn$W+FtbEB;Kv|d`);z%9XWn{ z#-eU`=On|({}V=@*ebH8b_7+1ECaLMZb_wxIV+JSaMyuEnt6gG$nV%*Pq!<5=~cf= zmV53C4JWfg>s#|)W|`(KP`82FE)mo7?yh)8%cz)&0DR={kI#<^!k)X2EcdxJhxX%| zHY4}3sFex)QcLk#(xe1Lp&`n-S<1~Rj#{~Dq)#9M2m!jA3&9X){MNa90hh+zet{xi z+WD?PGrZSiun>E+tne*R1vBnNcr<+})%KdZd@Iwpa}AbAuFFDJ+tlQP!`y86 z9}8-n3^`sr=rl3}$gYTYVIp&vOuE52<5%{eUl8_X7cxXl_!!o}qVawl1w#;Mi_m77 z--&SmHDsh@y2o}NMyGVArN79A+_g^C{L=i$@FXU49FO|Bl_Y@}3=M`T4;?xg`@5#y z0-9S9f!wG~h2FDHpqz%8x)4Pgcyg?n*!j|9UzZ;3`5TvR%Wfpc`Q|t)OSE)W2BhOHz0SMQs$cb> znuKpAzTpRsgaWd<|4qEiSaYq23|j_UTQ0 zS-1SMuEub6Ex3r^V)3Kt`Z_=o;9A;59*0_}H)u>cFxSDlRalyqFfq;crb?yd@p|B}%QndaO&`E<4bhD^Wk{Dv1% z`T0!Ud+!6e(o6|owW7Hq9$sRp5lwdI1y?CRwQOIwmsqtn2m_wq~GCIsos zPa|ZaSAfm_@r%qn5b*h3?r8Xg;8vSgohra#TV?ywBRwY5;E5jlO!87N=IZXf0RKM# zz`1a{`}m?XqUL0HhP5YSbxFNto$l zHSC*^kyj6cTQbD*g&R%gh@I+71|j%sRfjDxENOu}-*HCg3R`iwG01ciF9~MnyM=KnTb`5)B~1Jy zbxytRzISTMG#&Zme*;qc10G**L4-i6$mc%lM`v&w&=J*tj$aErs8Q{igIDbmcUhDe zUzgD#XFx91)1}5b0=y+^Wom4E=evDzqQc^v9cM!$?n2Qpzh(;lI^5KAx^U7 ziAgBr=)&c4Q2a3+A>g&HZ?GyptzeED>H-^sKgGSTO$O7yodmq~BA z=zKN+H0KY&3}9eqN!E@V#x0sbA9rrrVUimFN%^PX;@4znJ}w9P)rq6eQIx^lPEq{q z^+@9YkMp+0gD2Sm-|k3CwOF(;0S&{kj^x6ZyUUtH+ZtBo@GkC$9@R`-lS3SIx)@3{H zY^Y_W3_wEH{FDt3>eAx2#%VN(RP)Muxc^Zi8^+G@tmXR;sdL1MvheR2(iziRju$vG zJpiIz*rWmdEP*6nF&y1cwQ4`59_Jm;re%+b_!F98M46Bjb-O@_+7i-Fg){--i*$C& zBq~#jgNv}FBWT9ZmCqt17A*<#?B8uX(i&N8XwLq0J7ZhgV5jFK&7POH$v^-;k&Ps@ z6Zvhm!v-{_xMSGGe9SlT#*+Oy)AWKnfr@U;_3I{E zfS)3vJwo2;_g|dY*pOA{_)6iTc{^a*64Hfg(EO^3T?cTCALi#17fAVkza?nnQ08Ql zJs1(N3~2_@rxccukSUvq0&oB-{H_mm%r#ehNEsQdah`GRdkm0e(`_e0c={wz9y820 zi?N?Yk1YG|CU%c)U_LTZH8-M6K2UYrc$Sv3dtyrFcy@v<`6NIm(XCL!tDLr^m%V&C zr2yrsf4oc=ns|*TSN(5va-Iuy+3$oeyqKapTJ6P)i(xbbCKG920hd6hh>Vu>lS-+M ztEf5h;UOto_lCa*!0?|MIGY=jI5jBXbxgokwlc%k-vw(UgMr2_XN>EPePKTX91lQN zvmT*wS*@r^#Ul?^eU1Tq12EFPA>^7KY^eho)_Ae|Mo;@~%Ub+e6tqV#Yqcd$5Tl$f z02W6Q{~_>)&8rZ9F|{Rx7zNZ2b?R_RxW4*0P&Cg`tu9rBF^u~#s9BwoCN4v<&?RX` zp_!y_@7xQ%_T|Sh{7PP%@(1y`rkKhJCMhD0E;oILGP1h8C9#I;hYL6Vz7r>DPMx8h zMFKH%MWWgb*N-7^-XML#@^N(}HAU|1%Qu(0FK?|y#g_UrC8GebL7w)MwJDT*HfhoIt9Z$gE*L<&Mrb5scmF70-%+cal)r$+JV3^&cKdnLO9 z@$3}OjJwKsVaY-Xm4iXrL@J0{(#CiRBt$uu_ixzO#Us*#v>TJ`ODkIe<(<-6zA{T8 zjaa)4#Mz5fZ5_wmv)!P!&+S7rcZUBSkH%wsxBbx0;c?cs zpiZS+k&tM0m#E~89|bChm!P|)YnU8R$ny?cXJ26_^({KdFE`l=4gFP32jQ{L@nQAN z?ULA<7RnmZV%T8}oRJb96tS-zsz=JMQ`Ol1WnE{8ET|gE-cdeX05jd#v3FIK&&(4G zWNBU>9~7CcwNRb28iN+M=h14_qC0k1)@C|U%%X~`Uom0Co^0nZ;W}DYXl_YT?M7lu>}rI zM(^hKwJG{2L&TfsZ$pLynH7=+-Q#&RGl%|w2O3DZB>L&)^C24mU{(^YM@62<*s-D( zOYYtF9jYV%&Zu}Kv$Q-UC;g>; zLwSGlok?Qy^34){ofyPGn!mExvJm8s>+=Pxp(tN{|AO;nVM`OenHEHveM;wd7eZ~Y z8g+~lnA%MV+I&If(yG(5ek?5jrTI9euyL?4d&5zH?4XfmBH1i>PVbm5 zudI-IMMrNZTG{HW=*Y=q)ZMb*j_zs=z=)*DP5XByM^RMi@4aXU&qZfm^ zfKwKo>Q$7}%he5ysHgg|?nvJyTPN|m_KSh4BeR^!NFNTg7S@hLT;;TZ6ei=$s}a;z zpkpICxEu(`kB5#}E2{_-_(?=AU1aTYUOF($<>%prm9Z3$DHfE;ZDpy?Ozv8m0FQZ-5AT)BFY>5{fSrNfm0ZHCjwZtO2%A4l5r|h4QBu7)ZC%;aGxbD{3n2uGTTYkQ5M)YkxPBn^P!iS%Z;5x#L%GhmT=8@(`+GiL7`u5P zY)$By zfV!wy+{#m7Kh~}Da+D8OF) zmmtOKxqiIkBUh1n*Nm#6%4%n#$Mv2ZTV`Va9^|_Ylw!tBSu}|C6wS+hG9wu71BoQG zs|w$BuB2 z6!EcY>7d1lHR5sk>?^)iPP^u(H~gWueRy!;@82u?JbGB?GQv$~EL>^ySvT^#6JodC z_K2IfsW`tD{!!ebsA>gnroHh{1;38G3$X>k43MjMN$&Nx#M?e>_8#*W>X{z5;WK2LH?C4$pfF>8D;h}mwc{SpN zntxm6D>q|9ig8OLXcQLP@ND(~l~+qPnm)jQ3nGedPgMH~+`2%)9cRT}g}NJI4|tE? zpW+=I)2?b{H0>)VlM^>8k{yw|?odVa2~l^CYy1J?wU&ZHFX`j!75|NnFRJ)K)5BD^ zf)F~66E&k|M1dBfG3gS@bETv{%@~s>LJ7I@z=PR`e{7QcTZG?BYjkl#iwJ8pNWyy8 z7D54n&luZ`^#@8Y?8+I+x$N}ZIcixKr!E?amJiY**wN`tqs2X@~`q$=3V+ zN9{ypL##p5Rl?2|0xpimXE|Vxo6|i3R@p|PF7JJPD5zWrVYS%5O%yz<;KUdMf2fwG z)bI3l?pmTISS)@yLnVaM{tv{t#R3;Rb976~lYTT${YiZ%Erz z+QB6H|0g)%E~_7K(*wTWdVl+6q_UBAZ+{BlN%tRQik8ycMk%UTZ2?-PNXc~ty@>IZ znnO%StlGyT-Ns!s4t6g%`Ar(TByWC@Sj$3qlmP8EL<>fkiro0hoLIY>L83g^?(o* zZag%m2trU~2o_L9a_4xlB1DG4HmWb?r_Ll_{=s-{tSM%ln+CM_%T&LDgZhDf*@0)P zZ3gb##93*~wI&czJnigO5 z)7pGpNL}`usi&gJfCW|*!9s%T8$i;*fPQw1Xpx<=O*!oms9&!~e|;^HmIzW3xWsF2 zOyo!)&Wkpvj+KnB2bkSq%Bn~8H!%ElMLQMbNs(OM#ojG#!KX6n-QzJ%i~&!qL4hVB zjeu$EgFQ!w`}UQyVn981$A42*eigy|>bfMUUn?&c4weBJknIn*!g|&Ol-J`VhLtk! z>8AxJ)@}}TTTm^wGctR$A1%?x)I^xCiTc5@~+wac9t9nD8S;wsOhA!1#Q zur7BMak#315<>7w5UF?mEcl5;9TxlvMps`8j@{NS6cGW0Z}lpjRW6`(B5ns+@ZLCS zxWCyJa8tb#+a1-T|DCE)t`(BF&#;W%poK@HY%;;=y;KW{m|AQ8#01IV&gsp3hppSk z3cR7mRAbWlfR!OCsBzq!P5FMPl`N-idTp+Bm?@AK5p~1A5Y@qb5JQl;>ZUC1pULxE z)s8eJJXRTx%-uOLD`NLll7*+ai~hVtDlJt#W!mGcET@cFXJQ9AwW3;NH%Jjz=|?Y_ zPS@9Wnt+G+gDXl{z32(bqE3@B5HCo*Fq@5U-i7Oc~1C!8z zl33QcE(aU9KMgnJNqZ;2%5%GLL; zE~p%FTAb|l0DQn7V&rK4uz-)nyDJw_tC~Os8XSP$Od55-&aoyx(O5Wc$#Xh*7S9PV zkaN|h0!LfeKFKVDy%cQd9NpM=qQYh6jWJTohLXO=m)ts%;G7G__MM0>0{XGf{>U4) zTVt)rQXrZMos*j(d4&yGjb_iMOd-5k}Qq z@0jbjnK8jCX>BldL-oaI{`w}>ZC3YG4fF9U0%Y97=|)a*KHck}6`%GkYs9+4>jZ`S zTzltCt7txKM`{n5;HCow=A52CK9WVbpt7E>+MF>^6(CJh34;2i*^xV*s99ltRH_?> zya(r9JG@2O7Na>V^BCLufoV|XHe*z;l;9oS6!nRyZ&}Y z1bgY4<13w$?UTjyxwgnsianf78pj&}8uAT^t_2zCm+R-!#lq(Y!6)g`1Z1fh>CzEb zm<-Pl#&V{BG9YM{{GXMOCDtmjY~=kmnMC!Kb`fMuK6!Ss&ZWAyN#a;Viz6!=2l_1+*^ z(Aj#qs=f_Bce+Cb-P#_@vUns#|MYjKCdNRWD#OAUIzTi9BN)&#^0)E=a)g|!0$6Ls zHP%Yt_(ML2YlLylgP(>OJx1cmSo{nv!j`OqN1+^3eOCv|%Alj!bB;o8Ttb`04p}Dt zOfhS}f{*0Q&F#s@RvH-IKVh^t^T(bB7-+KFu*c_ve7pYs$Zd$rr`g>95R8XLdID5@ z_XJ7i?T3rbQk_0U)fRK-VEGr$o3WuZJ+5*WKT!qURn?lEy_4`2_P|y=>rna_{j%3~ z>M8eaK9xm&B>NiMSyz@eu-1ym^6n}WrbRsGm$_Qayr{{g<4#ySlQSf_yVJ1$eCQg` zlK00bBX-ExFITrqnE1(Z!xsbTA04@O!J>HX=mfCm2WfupBDwi`HvB8rQ%C$C2F7ev zJ4>!&fapw+)vVK3umvv%P``4AcG`9-?al~`Iz@rOpex8;LrmPJa#bCP!-gt$y5736|+O!G&`GVOcmel(W96o;!wW4@WhvM!) zSD&7GSJyw|!%Yu4T>Lf<5AspB<4I}&5|Rm*ZQ3TOZ^Oa%V_$a>8H92n;&Np5k&ff)^_C$*e#EYwp3O^P6A2FkH!x@7o_!NlSEY9%9 z4nvA;y;K61S2Ftc@v6HWuoqb0Q$gJOjrm_jZw|0^JRAVBRjFaAS;cpX^tMwq`D?f$ zn-Ot+eHdX98w~xAg)MAxvRzGn^WZ!R8x=LeAE@U{wJ4sMMhstJ&mf>Qf(C-T22-#0 zL=vk@E_(f2-+-DNpGtrGywq8ag#%1O$^9g`Wt$iwm*UgRcz6pN@GfozmU%RXu$an%i}Ad z;UF(xho=qWG+(KfD+1QTBTt|gvOB@uWCCCMv(>=s6hvATW57;MPR+6>U-gRl!Y6br z`gTDyFsAHRch-byABzJYde-pbvQcG}MLLI&CL;G7VAgpA5mZTfU3{Y#6Te30TOGc~ zkFqFY{VE4487cYG-;CR9y@Be<-#Fr;dQl~0ZrOk2OLy^hW z78{wVuQC-k^+AVqsB+Y(A6mlF_39&|t`i>!tK+f(R#Tn;W{9amD!eTj#Wq0cHGXHE zhs4-P;-<3ILL_RxG-GWpWn0p=mS8;8$6H6T^)0-r3*(g-l>VgIA(y`e{rXE^pewkP z_OyLJ;!9JLg-Y`50i64u0UA*L=dfn-Y`BRApRP{p`m&)>@0krLk*++26^$agT29Y!1?&pa2XSC>4pq__ zRjU22wiMEN;p;I~6E8ELesraH@z)*DdT@w>6Zda;8CN2isMDrO0`O!xyOMka#|;n8 zq%(GpCaN>P4tLS)kPRtIOpPYb08;-bgfqUGvgOEs?y7jJnRdP|?LQg>_r7+I^`NFtY`21~DFV zW_wIp_W*NeMB=4!EZf>?x3~C-mVqqWaHHTQ!tFZj7jTwWDazoyIxUYCecWhY)wjA- zSk4+}5O)Mw(edA2-{e|?{ibYovgjt21!t~@-8#lV4fl=;S01Qi3<{}YKKqBt5Z41jI>;jOVv zow)G;>CPJhhiOrFN}p?DRl>v!|G+z&iyxFC$!CB?XCW z6!5p0qQ1!e+Yi3(Ld@D;lF{4zm*KE_R9&Vlkt_r@m8r#784<&>jq_i3LHA%*7=PON6NASR|CW`q$)e7j>2~cPqCPsTteUwh8!%`+<551u7T#q*- z5GXj+iy(&^9345DMNf0sbOn6a%U4hLMSW5IZtfPHqaP5vSW5lGIrD&wu_idz}Lg| z!`q+U-#Uw?D$7&T@2<^tE&LikoN}N9KSm}m`APH%fOn#x71w=DudXc{ZcIP6^6D9> zIe>fZaAHy-8Ic5MXD0g@G+tztNBU;)6ixNXnYi@c!zc1C|GsiobH1=+xNQFu2N5H? zL(R?a|69QC&{(T$2d|EY<`}9tkKuC7Jm29P?f$g1GF!)^#P zM^$bDD$WrNmLVOwl;&(K9@g>6>RmDS!LCdfeQat>#~n~O>b9wN&?y~vF|iJP;II+2 z7@$j3J@XE@W|vn~ zw{xwwFajxUUezgrv8c&aYu+(6+OvH!-|gX6;u$aSB&|&RcJGzya|d&RZb-~dR6lLo z6WD5?qkiD90Xp3NDGzhst_`fL7n63!q>aLGy^yBF6X6`~txLz75$|_#7lLB^EeZl` zl#l)XosJa5zlwlz0Y2MX%$T4b{zP4#d4!RF=H{4~!!I@pX`zU+_ModoHhRqn{KrxUbR#{-Tu1gZsH;+D+`4iLZH{CDpOEmp7ZL&qgJ_0 zV$#nU33vASd@kB%0zyU5g(5eZ`3QRCt183^(Ab z-T$r}Iss`#Sn$xt!H8{kyl61>mqO;ttZDkrB6fy4FNo=uHI&quuq{y=31(k7XlE8j z?iV#4ac007bA*tHj7tsqo2**8{~COk1j^ZsK5hc91m$8#slg38rilK2?xpg4^$?lE zw6CUuuZ6peum>3kb}W0#vDoQ3=NT0W40{%dFn;4PvnZ&=D_x| z;h1Vvlv@KU6~hBDkQ}SWwuo*a94-3rhhUi#W0rFobxBor@vE7DUs~U-}mYU5?Z3gtZS- zGdPLCn`Vn?^iTLJDKI|bjFSS@GzD*(25j$>6kvF*PJM&QWC<@gTDbdgK;?$2NE zH&AXQ)~?*_Ud>6hEVvzbAu}n5j(#!d*qnX%t~VQfsxz%jwHbzQQ!9*=Ifh(8nl<4er3 z$>n4AM<#om+m)}<)|^NK4*kklwV@txP3sww^TSfl(zDYoYrAy2y$MVLy#qvJs1P$S zQpEtm-uCkGNQ*M2|M2?iH1dK&Cyw3RB}lF+|9<5N;Y_U~5$IkN5HaF$aRx?WRP(ZL zcXipsK$(pZ!FAJeZ(#fK-$ItAx=G$I5AlpTVcnLflx{%R54$p$ecdgDT7?}Z1k&*6 zS7xqQsC2Q|(bi5c_Yq=!Y16XXndBAq9Wmq&8?y97vfSwF0E{1mcXXRu4j;1mAntLh zS%#ud0daIyzWiGfpTQ2PI#aNi;TikXR5dBchD~e?qK)UwJ~?q|*`u4QdCsKAiqiF+ z5Z~TzS-A+3J#;bl8bd`)wWR?=xHSFTq=yk06z!+@gvA|V+x{i4k8MI`0aU7P7+N`o zwV6}SFp`GkKD}OM2sXo}E6!|xpgg|p0sB-F2hFb`PPry|R2qUunWe}-eKf~AY;%o?0 z^5euG2(sJNbTMP)Kdg~9#XC8N{u6|Ku_+&RC;*(%y+@x`v?QplU}|O>k6WAY$8^&N z#QxGzM%wjAs$ovtfm(sns(i%jLFzVyi?|uvO{tBb(0SmM{MkSX^-LGMtgV*$G zbHkM=b(A(f3Ka|rWt$A-{vtz}&A>IDA6;|~0rhnCDS&|?)<5SIotUmGIuFx=~g)tRXiOcO0<3P`gn z1!opdO_g+^)e#5Cg9@~^_`9%oD&P=4;TCeC?#}=EKGq#UCLbLL7 z0`^z+&%PV?Ift*fsL0*U45%G;cIjMkce-9@R_29eVHPWl`Fto%!B+1K(Jy=wio0!L zL*4w2j*WP&YMU-PK@>R0S+GolHJ}^}6<}K}J)CDWIj`8f+5tY9VXPs1MoYWrwQtYc zCyn=~{4bvX!Qk%v88MK1xbg;-W<%4LtIKdu@1UQe-i9_N^TvtwUB2fA)duj}aFh8W zC*XQh)|s!TN>?JQC!fS>Gzu^tYz2NYqZ6+ejjFh&HTm1Wxs&0F8_S7XK+c|b6LE8c zOMHdL2f53#sf!D`lfRRK$2YY|Ki-OMC}|I1b$%XfaBdFC-9GH@sR z^xoFU_Gmm+B+MXk@pc|&%~huXTbAEi{oHKIx7n8q?rf*U4^1{CuH$KuodBL&X(m!E z1Py%~2-8|@_-@6KPEa*>JUn&g{6*vW{$cYVG?PJ2(+Rs zgo2JIh^u)gvia55kX8;Ps+DyY0h#6z9-tl^k7tOy%);INZJ5Co6XqED@|rMQVkZL6 z*Rd?l6{^rOjhIeVqpMx(7mh1;6>F;(Fl6?nu5D%pvkc#TG#vg>gN3~qLywejf^b7_KzGwTmFe}xbPjw_*=miUpC|NbR+*lWq4Y#`(DCf#+NgXNKkxHH0;$gMQ z0Qwck(T-7E_rwJiVz|G)^j|XmD{NkN|Ad1-qC)H@0z0)XNA-aa`WJ=SO zDdq9pSlNMu{M9)?bgwq3bXE?e1L7~iSo>IfV>Z7Tk&rFpwxE!{;73syl2S<URk?Er#+E$NqVEN*K*fqNFwEsw3 z9hb7U=-%rt;;M0`yQqxJPZ#D9S>1HPyyV6#(0&P-BcVN`M3ae6Rhk{%ER!ufM(z7J z{LnrfH8c49{)n6Q2FQ4{QhSB5j`7biZ_cJgO%`(yhYEfDp0{} zttX7Erz!a8s{fx21PR<<;tXUEJ2mhNS!_zQ6pz*E4o`HVp_0v(X#Ln^h*fNaMAw@l z5)EXjVh?A8^xhf~6RoIg0~`lZ16o7&u!+)GP%mVZmWsO0Zrc_Br35$gR5dtLE%h@}qLXE30h{*r(lb_~*YK~&1Gq!H56<%S3-Ak5 z?LytTQTF@1oG4I$Ong~&<0d|l#rt^&`Q5fB6zGg(V@iL~IbuQ3gIj9^6+{+E#1&u* zfQ~#%vGiEX005G!aJ@d-%kLuH3*I?=Pa#N8`@;awad6?3mr|3-hknayZ*^v0qYipU)=LQ_~D&PrR1Y~2U!UuA;xEytvc6e04ZR<9pFc04Mt z1KtP^J$jI>rJcf0L)W^I3Ij_+nIvanU)~jhFtL1=`Mr6dr(q21Ng$Ud+JNRU9;9+r z#5dszp53N>Ybkk1WrF3)o$mTjGa}dW++>{EZCQc>NJgoB<13M!I@*yL?audu%8dU9 zfz(!IuV$(zHE;$Y;SE@P60o~^vsQRazfha+vW@~{6e%}bCmqK+8VAbz={9Ck`g;^PjRx0v1s-o_GRmGa|5CN)hDljQLKN1kiXdvQ(!L{Cp zDbQhzGWQQ1;GH3?4bf_S(1vb`l?y;295N~6yAq{aT&;ey663fGUKnA6IK3GFqfbqq zhdw{jR`^WpmA@;5{^B#I9Y9 z@>ktf_U2;I3X?qkn}^4=!F1reBv**o5Nl`nI*SL7%vVT)6=Y4p^VB>OTg5ifbj|X> z!G_Kh;G3;L zdD9iQJ4~v}RL_^+6V!+mYIeR4nri`1_nF3nA5O>X;%Mw|x7?}E*5`-)5|n|;O9nC$ z&C#Cwq|OjHZ{Pwz`}>5e>W9K(yKCQ?Jd*8@I`zTxjdcu9+HM8%QCi7<7&%Gkii&ggFboKvZXc>dH5Q>*cKPbm zR8p-xT0t5s$ScCeKGouCv#Y0aHQqv04gM_4;pqAe_ zN3N{k>|eg*pec5q9N4DU_6r2Sy~OqI@1EeM2GAh-gWHX~vB;wSI#J!+(G#MOf_NF#fR02}hP@?X170q0MOx>(PhhQfj*?gA*O!iMlQ_1dsa~nOmfT z{hJ&b5Llu-B0&-;MWY!2!=h|+UZ(^}*v6!KoKVCgLs2ye``WbbLFXB46;At=nt{j+ zkH7Ds_D#wQ-uE5WJ5u5ZG=0+K8_Oidy>E4>A*m|oM{%vA_X$*it2{E{r-~iGx@I7U_5^_riB~)z2 z);G?+z{wfeWT5~5+m#0>AubbF2dzin1R@#th{v>WbEbRYr`52GXF*XmoxS z7@IwH5k^uw+0vqsr0Rcn|LNc~)o+CElxzpF*532K5_rl_Sr!1IkL^9gDS$`>ilZdi z6l5kh5V!Y1H#``t7>FbxGL(TSaV7JF&s{W=Ay1g080_cG!7oUVYIAvwX}9l!-x7JQ zhmVRVz2%a>fhTT{UEx{Nop`EtRHM!Z$lY6ns0I~c}?%4GqbJf31u9z08OONkz1GPq(ql9QI^D`w1U^yUtTmfib4E z&CFm*&q$HYZeGQ4&xv@0Hv9>#WtAOXbkxhX7)@w$dl>}GNbq{*VJ%DdzP1v%`!wq~ z#mVdK`5Pkx$;7b=ViIPecj9u<}KDI;2Jr)B6IzVh;I`82xE4yh(k zDUW5?xNyH|UX{q!z$t>uI$$MIx6_!-8Wq=9#d}Y|hVtkvY;LIH#yZ+P%$ZXJb;Dfk zZVP@JVzv7ligf?sJqjRTQwv`1G~AtKp_%irNbW4#Q!GeaWyDB|HAw7*slomaKx2Fz0ZCz_(%!dd1*vW>!t}uJdyq{f_E;{!BK$o5{mdn>afam^xXq@!%tL$;4v`G&zJ|!Q*73L^ZWN_`_lKOnX`rH>6~=1rKJVG;C?Ol zx=VfMvmpF+y=`BA&H=k32?N+(51F|qP6Un9W~26Cjx;TnEPq?q3AU?|#aA@Hj{>Dz zL^@wlKe1+lV(hEMZVywmlGUO*lH1`F1pTWFNbc_`_2adqSwG>3?lkPwGj!em?js$? zlHhfU4;sis2+WO#s5NGLQDspb>RT(nV%o7mf7AnaLpG`)RkO6JN1;3EkRmD066Sux zZ?Su%o!Fg=DQs-k0-4;5KLc{}L?D?35NfvEd3;p*7EZZPRceIR&@5<2j4?uaHB^M= z94xf9DldAkFtw)d(UIc5=xr0K_yBTX{kzTEo6`7ZY>3Y0gG!~SlzUy_}*`w=2@pLVm+ zOc}@DV=gW*Z5s63qjRTl5NSESbZ~%N%B7@!R%m0@nL4PU7LC!AQ|MhH9j|_weKK;| zK@X|xbstl=7LsJ2eDp=gI+IXyxrt zOV9ou{ZfbOH_tknti6yiq%9$-oEZrpd_N0K!cwJ_EEH;4F7p-j-0VAH3mF^!?8DqT zKtZ7Cv1E5szixmHeg0Nu-0RVJ)}_(=j-wEVi3en*y^;gU53`Y2utU4gvjq6B#LrBN zg&OO&L`+3zmmewJYk5|D!U_7Jmnr#_k3ETCuOyLh!YjfljcjIic^`9suO*lxWPt22 zGo_`M$%tk% zJc(=!;)xMKJem0)Ng9z>K}b|G?qZC7O}08hIlIBJ(DsAuTknrMBbC@Mk5omH+YpU392Fw+H~U>+}yvgFX_u+8B`gZN(t8fPx($T%ql}0UPEzM zU8aS$dly^942L*=Si135mb1{`#TW{)u5vavfr`a z9@ZT0J&b}DIr%4FoWEUV0YS*G{ncz%%`a~BzdnG;_@+_Yt&yy4`nW~j^s$6P*1Sn1 zS{Q^jWE~jGVtv|q%Ru{z9-CTo z(`mVUrS|8R>-RwW7VDvW&5(cBHK)xEe4>25cqv)oP!g(?6Q zm&aol!*GB6o%hl#`geaTx<-M+ai<-PP*~_({mD=!$I#_|5BRiJIhI$vQ#DoEB=W5t zr?C}%o%mfnP$2&dVPQ}BG`AVrwMT+J*Bx+$$UmwJ%lq4{mGSIHk?ZuN7m8Bf{qyoh z8a%p4MKAbxX5AwR}hVc_$m&`1~vn9op0;8DHP-+k@z37 zb+8Y|H|-tSGu9FpVDm95Y(9lY!kZdLZJwU1b>1es*%J)$aS||l)wjWcMiboVVWkFZ zaBE)eGXjJo8xkBGn6S-(|+7^xqt-usSUW0gmil^qz}LoN9ojAtz<=-C+N75mS&7KsQz8*Hc0`&1WCtz zjb2uAK+TFNSkQQoj>Xut_^K7i^tck`!|8D_j@xr1Z*@77utQ<` z+bcXySUPVtjbrEBG|*R#Y|FW{drTOKIIamd@LV`{p3n3@8;%CcxE3&|eZ34Ykabxv zqiV&`+WJ}^@mLM;TXD$M@;hG-j|m{|G0^>a$$nhw%#5~}qZ`9;=Q=XPDx*Z-u2N~? z*h%e-8dYgIqKvv9wHG79di4q9VEslGuhEkb()Yt|4yJ;FPJU(|2SRPt^Q0}!Ln1C? zYjB_ZZiX+U#Z?KHcpJOJwz25MDAPas?h1zmhwbZDb^VI+)X}s}Z-c?e=H?uFN&Qk{ zOMEW(b8)=P!keA9;@exbzGJCqdlh$3@m9vEiE`B)L&);W|8mJtP*~z-A4a*x%+mO# zkvanO)-PW*k5D$85^>L!ysqYLyi4g9K&>$J+Rz;X>)73B8l0B7uxzX1fx?&F*RMy9 ze05Zajx~yWV`gUFFda>}Ahh6}i4RWEN6#t9R@m-m@3OFAhyH0|K`E4zB8pI}zGnV| z<%}Xs&jeMT?G6r~S_<`9FGr8jv|R#4l8;DY6gcW<up%>LB12oV^d{hoU{rtEJ;F#JPbB z0*3mud!uCEq&Q*;F^gqw-CzRW7 z_KJNm0RKM#z$ABdYj`^ZRBYxrqFav2!1{#Egs4FU7$?V^1#Jwl}$_o1K?pdczyX?4jIP|02N^Cp%naT)-Q#4-3 zbrYcoDLB2A%A<2+Yu#jJVab;&hSMpq(+_1#cLEymU>D|=hI_IQOuA!(!M^`YBn~Yl zIcI@`c3#A9XC&3fs(?p61Y1Q@7M>S^(E-&oa0c6{J;zq0^F`bm)``7xb)Kspwm0JL zaL;9VCbXpx<&ZRo=cQOlAlkR_Vb(UK1oHEVIg?Hq6=I0dcvpI-Apqq-28qz&Cj!-fq9cjP50%e$PGGszi4Y2`SVr#QzSq#e zq#*V1vk9)5UE8~gTn}-lV;jwte(uZK5-g4OD>u5q!L*Zq5JT5&eG0d{9`S+Biy zgcd&~Y^6*megN)8d4?o5 zj^|L&r~H0IkYdg=fCWc7!ewLo4KI$D+2C>E{w966iX(=Q4Q1H~{gUJE3 zJ`K1Q!ekWoS_UD6zLQwvaOMB*T((bH%KRzBI|QdXAIE?81uB zM2z;#juE3VRt&8pZgPc`Vu&!(G&7mRvx9n?U4OfWD&P}&Azxd00cwXixf2d{X8=_e zbG@2ga-d?4l`{g?4@o>@)9S3z%gCR5pp;s;46)~ACpq{m~w6S^pd?Ji6c+Pak?8VL%LDFKH#Q(wckCe zaQ`b!U0KY9D#?w1tD5y?h?{tp7k5qIs~4HA``c&^PT1+oMY4Jq{4AGRCwR~tP#Xub z>T31b?1$c`$*0%KB3{y0s8Q>w-81_^vCD@LSrn1$c?LY-dsm@^#9|ViZ`m?mn2WP>HD$h zLK#mr25+lrGw&7ZkZm}P-hCmXF5=}*GX=`17}le}#2%C4246R821~{i5c=J>y{0ny zoRS+V+%6qARykx%C&-AnM|XK!-RLWKT&lV5*Lyfu|CwA$6J)YOc=RI?j=Phar&B#w z#fVN%auLvqzH))y+=&m0=2#%&Z9SQyxi*_b7d{t8HWjjyltqj?1+rU^iUv2RmSRGa z3RTe7133pa-ejvp%q~Y9?;tYYgU3akUaCwy1xqkF3W3-m50(F|*e0#2d9>t1qdAAk zIkNdoVfD>18X7k|B1YE*3mtYujW*@IN3dl~B9A9tsm*Ei)~6vui-Vxc6R2G533M-)(?t}?(?*f^>>uCRD#7A66T+w!-=g~7;k3lKL!Pc8WpwjLN zY_af4$WNj9p5}unzPFWg6iY!tN@T9(7{nlEDzGUfhHv&8^F{p7>=450KPnw_Jmk4%Z0ZR*PR?SU~?Ee*8%g_#D@LjK?pA@q?kBb6NSKzX=LUdp6NZmNslw)bG z)b{OBsJ|d1$2c2q_lP8unv=g^1pxPpSijmsdx@4_V4=J21J6r$uEcaxAolF@$w?$h z5>r=qkkffSEeb_yAGI0wV|na6Dfy?^DP&4$&fJ zb!e#|WBAvc%`7q9>TOtJ)e}fXU--XLeJRZr4Y|GiMhh%g`B^R7-7+EETpKtE-hQ9f z%#Hg4oHCe;d-$>W$S!w6KK+4+AbUt_`7Wk6hjW3!YmqmpH0eo7-K-E$8Y~`t(-cL` z!lwW3U)qW#C&=5*sd*5(MC^ROk9XQw8>a&BEjj;J!Y`O9SiMmVhPC#ed!bw5#@clb zA*PxaK*g8%^aK>E1N|m2} zP=$Op%eey>HtJ(}3guPUceUSCxXkq-vr4)8dO?bsq_vCTFC}Urg=cDp4{nr|F&3!iT zeh)jDEk&0A?};43dr9)4+NP$hJ!I?ba_=CDT~aeTO3CHiC^!ZK#(O*D$AZxZa8BCK z(JeP_gjjw@0-U;=G*T--=_M*o1vu$-?3j6zS22eT8+`>eMvm3bKD43m+G)3E5}?+& zXRPf!OdU+oGi^DNM3x)*zU~#aawSN0m*?6UA@t+L>T@HmRkRbXbee&jVENY>u^l## z)}#i*$|cIavtR1Grfj5;u9L|e%lg+r&Y>H{s0Y^REdLlL{mU%%Hopo)HQ6v)<Anb_X^k%K9JUNCP}_UnL!tZ{bQ-qjbJ9)mtfZ+rB>cb7K_B+c2;^QZFe{HIKY^)WstHLQG{U5XyiOpOn6rl_wM6wiOEN z>N3wVcZuelFwkGtNR-^2aiM0uE$A1_G*ysLlF7f4XfPUo@R z^r4eUs@EB2)Xa;{?oIA4?HH)UI}&7HS#7{Sj>aTaHMz6eI6tjQo?KzD*@A+v z8#Hv@r)SFzY)&vF-^V2>-Qt(p(3p01`7?;RD2fO)xt~V!gcUvEIZboD=r<%9C(W#X z?bv%tSPh_AP7BzQJ_id1*$~4L((zmQD|S%J|6FCc8u&4BCw^V4#zjlo$NhanYvUl^ zLi6Ae4OXC_s7V|R-p){DvgQW&)v<~aOeDhbJSS#`T{7Dc_7uYCxgMAH5)hRmE8g@5 z9!a7ziM)&Z!u->cMg@Rp`7*6@Y;L_`vlw`XB`&(*s#Fq=Z7}P#_xapuLWU$vh)ec{ z+pQJ32rJ^FN{iMA4kZzM*vhe(eh%rY_hK)K0A$A@u!q*q3GjOMviCmX4!E0K5)5kn zo&eb=xXFuY?qjYG?tPxK#0Ic|5_TT@f~x;B6JiZ9pYtUINO(n=PWl1}OQ2M)%q$~xoNJc%LaL$p z!+b|P+1UyLr=-Gd%XLtJ2#({t@-n|8&0A51#!(%;<#S`r_l zIWAcil|!Q5POV-*t6#tVQPbjb29tA(vgAB@sO6EDWH2~)!6$Jn%AFIl^V8PgKvY(5Sm~afM zv$6}K@)>;`Q%u z-eUL;uA^M^RedAHy!@Q#z}_51Dvl3lC@|gzizP8;DfQ!jp1zZU*k#h`8 z`uhQK%EHSDz;227h3EQ0@1Do-m$F53mA#aArP<*Fbify!)5tH1IY?6;HnB;RJ&$M) z(ga@E%+__7^N4H_-Jm(N0%A>S*`ibZibp^ zEp+l9?`(vyT3<)0AKP)VRc}JEkvCSG*+aY`Wka_R9GjTH-LRcp~b$;m?zo+iFe}YIGbs!pvdg7 zX)_h8H;B~vFMknP1OVB9o=W5sphouUR{o9kUnKu)KaO|IDgL+dQa_7QnH zmO4s`+e;A$Klmc9_J`M6_?|QdAx<$R&q%jF*YRMf-Uj*QND`^AA8Ki>eLnr_eOEzduFE4pA+6cO2JSgg?epc=|;Ep;)}V)@>MGnV6ULB3IK zacF8anRb)bPvjw{Imv?JOc1yXQ3hZB_Q7kKV%&!G0(oGrO;tHyuL!hNw>Vzbp+9hC zr@DRyQ*Z;{PE~boR!;BXwsEDXdugS))r~|)e1js*L{5+&<`8x*nh^sTCXB;iB}ZGz zLgv_7$IG@KbzOubX0#wsSt2_f00Gc_#Xk>-${o0p17P%E`!`X19q#z=_m%VZfLQ?M)N{v` zmMolZXq6lQrjP<)J)^tv-QAp1D88?dGj<^mG%zRG4;~uw)$(=Kct{DWu zZ)`(|PtbJ#xU=$mEK4jHKx%)-5fiz&S;GvS_=wUzv%+urd{9?Fl7x9bkbxQkLyteW zRz#;k2$6gbdr#kdAs-^KalEwY!-7Wq|GH0Tv4PdmGkzjdz5=6hobkn!&RBMT9V&wwiKQcCJ(k!a>g?{C0SydM$cq1R)qaA zq)k>U{zS%alDykapzCTSm3O0oXGST$afqj{yl38dsKvGFs6OsVlHWkV z(WpgF*=HI+bFS8=O$3 ziET2k5ooE1kT#s9lC5RmYU%w>A$%NTv|4f8ZPQ?g)ubW=b@}$>lZI~qNF6Lo7wpYWztFDSV7bRCvhoK>kH-dqB$n6}bMWS95J)NKnpDYSB{ICmo{ zym9nR+Wm|yau3U%=q{1`H&S^53DLfnmKM`}W-o?E<=@H2gQr;uG6>^L9>__CQ38PP z_63XR%00azF$)ZGmLQ>bKEz(ZQOwbVkIE&#{iq-? z)!+;~*I@=6Yu9|wCm?+x()|bmIz{qIqD>{ z+1@oq3g*3}$+;M>FEcE+j(M=Cs>{groldm9tiWdLR)iYGqgjKovqCb`DKmi+rm-M8 zy_hX!c!hU@Nl7oiiN+EH)jYF(2+N~~%ucDuB>e#r;oiw)m`igwsCsd6u^U|x9fywa z?8G?rT7;b#d2{=o+;f`=|Dx}UB_m30wr++05c}5bqa>?KsgX=7b+TN4*CFUye*)CU zJSx9b0W;_!BZSjiAuIdrHu1E7l{d&Dlr~Msin~i8;zN?@%WQtH3ComJ&ol3A=2Br+qfOdMNA@%hY9xAxD6Z56g@m7N0!P1yCzmNQ{ zd0t}r6nlHY?uaS#l76`RTKSDhma$QD47PJO8*%- zT3zeqvtZu7rEu0LiwL=n{80aGJJxqy^i#?-<#8%a>dqV&TehMaHfS+5Hw836zB8`%l!iJWHV8FjQIVO|YwbS& zog6$Uh~bg~coaeRX5ZU#LD}3#tO|-%$x(naf|0s0D~8kZ2V=dZN-U1Y%A~_d2NTxv z)83)y$&c)t!&dt+d^c2#R>T8=)7}f+Ws#TjI<*%`h5nvO_PrLeJ@HfSc*d+#u=b+L zVSYPyTF&0;kAF+xL$U@i?-vFs?q|6#ax=E)_A;o>%ie@HTTHCc?DKy|S}8*Ah@p%S zTSA2-WJ%TY zTVU+}w<0isTT+15X7?ueXwFOTEHIMy-W&}*`nRmGmx#o!v*x~4<%az-t17r>7=gt2 znuaFne&z}Dtxg^#k7EroV2ZTH=^|7sPZmrM7gf_mcukTzK{mRJi#Ub|Yt{140laJ+nu>>xv!!OEg_;rBjNJzsizs9GUuxNrshdzJcCFDYwD^x7gJzc=aw{iIbygQb`Sb|TsxX@-Ysy} zdLij4x&ZL$%2e&mE~jnQ!m%DaQ8sX?!RuvIks*7WEP)5ssI9z6*o@D&X5CQLEVo;H zNTv|$Izx=uiDV%Ka!WApADwnslb_djMX{gw2*l$6fBPcT{zU)+jS?NMZz40KwH#fL z@GXC0)gRlK87AkyqpS00=jV9Rd9FNrv1g>GH3H5*)Y5Q;0hz?5XR_k+u2C~}g< z&yr?~s%*6oJ;GP^x|!;i1s7y7lT7hQFHncTM=ZcCxt;A}f(4IJS^2%quvGPdO$h(M z(>yarB?DunowC}j4NC=H6W>e190&`Nudb^8pFt@O9-$WGCikE5n5pM0K9c94 z;)5kKki=zC=XLEo88Hhsp@9PTsSWyyJ{Wx|ZGN@d^P2X=qT2j}*aL0*>=Vaoa$lPd z4KEoyfhF7;nd{%Q?xgeRSlHEs>T*#}?o&Sa!(B`N#RcA zRr24urf>sXCI<&jEUK3V(O)o!2nRrSPOhQ~7%X$h&)V=`%gfQRWJZRHT>m56GWLH9 z$RP?6IkDkvH*_ry^&0MDnbM;|)>Wo$R`Y`a|2t_ow@tSs=+0MoHnB9Jtv1g^ zx9V&H_k%r0=SVOvU{FHz)}5W#o>%y>>x?J2X_cD&XlOqo)^$iNIF_z1ZR!}2XW!Sx zVoJW3rvW$5x?GQDxyII2^mD-BVh2a49OvG3;hKbEv5rGTD%t&?fI_O-tMYU zXW264qr!VNIVg_lc}VHHck+Jyp=+)uqi689P$+GBHMm5PF}c^=gd>+p9HVUc+&E-y z$+NAf&ZAu=L~>uyRddMae%XO8^+?F#4`Oj4f2UnVN>q*1uzCgJr`%yXbneCm z$3&}mUU+LmEzjkVpKu%QP^`#zwP~UlE}Op

#jne0u(QxwrNGnT6AorO|zlW-5&U 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%0DXx{dMB1`jw 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509040002-Config.rsc b/MikroMaster/20260509/20260509040002-Config.rsc new file mode 100644 index 0000000..3724ccf --- /dev/null +++ b/MikroMaster/20260509/20260509040002-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-09 04: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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=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.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 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/20260509040002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509040002-Diff-Config.rsc new file mode 100644 index 0000000..839b1c1 --- /dev/null +++ b/MikroMaster/history/20260509/20260509040002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4294a4294 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297d4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN -- 2.52.0