From 412822f10d082f081c074364a2de1d2e4ef59c15 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 26 Jun 2026 07:01:30 +0300 Subject: [PATCH] Backup for MikroGig created successfully at Jun 26 07:01:30. --- .../20260626/20260626070126-Binary.backup | Bin 0 -> 165759 bytes MikroGig/20260626/20260626070126-Config.rsc | 2699 +++++++++++++++++ .../20260626/20260626070126-Diff-Config.rsc | 14 + 3 files changed, 2713 insertions(+) create mode 100644 MikroGig/20260626/20260626070126-Binary.backup create mode 100644 MikroGig/20260626/20260626070126-Config.rsc create mode 100644 MikroGig/history/20260626/20260626070126-Diff-Config.rsc diff --git a/MikroGig/20260626/20260626070126-Binary.backup b/MikroGig/20260626/20260626070126-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0e9b2aef4246570c008e61ec11290d1a23fcd08a GIT binary patch literal 165759 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 z zJTjTLJAQD}Z1NYiu-@Arjn`3t<9LjNv{T5Gl`8LPApD{@Ny3J6|2i6PPFt&s@%by| zIiZ*(`WD?5ju;qU1~I?Mh7qz_46UBz2vK6-4WUoa$zq#AHgOC>lbS|@0j4ZF5RUmo z!Ykn|(X{6nOW1X&_o;(i_x&g2vH(E^gsaG@3y%2oeaACwpzAnuisOefYb@6k_zrb% z0{Abg`ZV?fM#S+A{KtM&t{KA`(YT$?-wetGY3nNNQiwsE(ll1v>AMk@OL&}d^_e#+ zLuY4r5*vsoJ8huGg5) zk|?IaXw`GgvoI$gX^x5T45)C4dsJYrs|5l=dJ|G)R1(-LlU~x#cncu2l;s~WdN)re zl39e1SCjz&aTQ)uGLcu3&K^mydu(De_+NNSpF~Ez%FM~TnUPcwhb>+z+;5F7 zn6lVsCMIhk6-N{Lg-LX zK1H?LNkX$g8N{ja1^xkttRZDMaTr2bTxxB%q=a7*K|0^XkDQs>(&cl`tVgl_RfP*H z0^WVR18Df*01x)w^@YeQl{c`ie>62Y3dk?*3#u(3N9BU0)N{pF2x!DSD38B%>CT@$rQ+8uA>fe(z#$N zh5O;9#Xg)BJZ11v!SXdKHU^N=Krx1^S`hY6x=?XPWO^cxusIUZeJ=}}<18{`;Jt4n zl^X1Wz8>-Z(oNzFuR+b*i-~KQDr0EK9_oaf?Q3nV?UouEN$F@aeEcAdHa_~U?&efH8B-Qp-R*vg4UTjEUn zsI)8*`orr5TWUb$y7-qsXC*zu;h`z0eoVPF0-3J*)w6sc8Am@BbF>`|phw0MvoIXL zhO;liy&?KIhaa<@>4oiExo)>mUDRdn6#v9_2}y}R?gLjMOn=pf_C+Da8?hZo1Di|-4Gp6KP~^+hL^NwWhhhJa!L-%t zbB8U%7X=hVKkL13CxhaeY?AL|jl~Eh@o|dgxeZt%!nw{s#BvX&LSHjvrCW3yog288)tE&urcmg zYPKBIZ1Vk!QM$pX4HZQgSBV1vnyQ0a7{G*WmR@b@Bx@1IXUSZc zMyRlzppD-TcUE`faI(S0-KME4f_Wv8Z-(6D$c;S$~XBGvNm&bsL>}<(s zaimgRh^04TMC;;R+E?Do;>5W{I5pahK0vZs$c_JvbJ$OnrRSG7E*1F2`!dpB*9ch! zKX{dj-YbF1tQk&n#=Le59w+$jBt@9v_C}KyNjH!)dSc^3Qiwqt!dAT>rG8@?Xtfke zM0L>cQC?o}Yw%t>_)Z^Z@d&_oIGjgVPSDA6Opb*Z8OQ>e|CxGjEN|9p#D`iyO3v!x zw0K`P!;CS>q>dF88|@jdw9jlar*OxZf1+bd7JF@_AFOiLkokJ!yOTcN{($aY8+_+8 zqOL@$a^k3&Gi|NkxEx=@NIYm5&bVs#dB0fQrX@b77CblgzN(Me!<3(edT6v!O%Ycj z@U0qkkLKeO_}ll;GUB$eGVSdy!Olcw9kRY8pKPRtj@Fp65F8=mWNt;PIk&<_%l{3x zbzs@0r@gF7qF2L*kl-9Rso^(b`ic~ruk+~O2} za3MKs0qL>qP{bKWixGu(ywesVL#s}4=j&b^Cl`nhV@ePr z{fb-2kWr@Ptp&t&2X|8g+9oaok8+pLPJ3fh61P=rSKPAB#CrET0lr|G-357lcYSYh zq5;=xArjbWNV&MsoSEL1Sl&SSl_-{b?<`ndUV*goqU{Pj#r{C2l)u-?J z&%oh(VT}gJ;R?8}?5nj?rb$Iy3aJNd)QPwDwWA_01$||uEUo(?j(K+O>K}RArjqiL z6UM#o);b-SL}sF~(xhkFR(fr7n*jvw9$8$f<@i}O+;VSYJ7go3wevw&pj7`x7m}Db zrQCd^&jxJpZYQ$D=CAAz^K*zrCYk$)l^9gg zuujXYl+^7_7)&F&M4xrvA8C54>j=g9ExGD+9VsQuaAof1-1GT&P*{B1HP6Cr**=N@ z`wip=3R9A&+a$JY`}@X7#@gPIn*L`k=8^w9;xv)5Idjt}sLMqfl)HRQz^IA$6&u_E z_D?)P+CV^Y{^f1XM#J>3+H@|72qIU=tWNMdhY3erg5QFuV;qlI{5uTd%jI<92~a5x63!gBCbYq ziT*wHDGStJ4N<81BY=CoizH_i5g}@zZLI+${W8+>g!U%hsx?C`*~Rw|_jTT*UtLG9tLFo! zJFseBKtu(1Af8oE&fO!|IPa13Z$hAy+WX)bmpjdp;eSzVjdNhfX&Fv^|J-b9L5F#ZK9UCnea%`pc@lIX-n^XG+)!I_gCcAQgB z>c9A?SZ|7lmRZ^mn?-s(iPp<&AT4DXRhykE(ii;I^H!3krR}ZDFw3B$VhX?HV7%Fa zx@tQ??L448!q-QqdWes57gys$MHVcsx>(nJRNzyi!L8M_amU50T$n>&9;N{0i%HL1 z`>NBzEq2KA;rs4)!24vCo62CzOi-}SDF(<#y+=+m7Z7_1U2}^TOfG}QcSQ1PUMXUT zG4>i#Ed;L+dl6yU;u1_7+-6*rM6YAxCMwP*GT??+#9rV3SpV`j84-TS!gu8v|Kfvco>DUC*CpvooPTGh)dZ@Ez#_8C1Rl-6Xz=fG=rZCJbxEK8$nQ@b!iw%ixa~)R6qgfM7tBUAi2=XTKnv$ncuZgJ+b$ z@qY(pc^Ycv9|v(bln?rT(;*I<$MmT>0dV2|`B$$4fDsWI4IRUnbm&?HdaFi*410s; z+L?qtf2-U>@4rTgDF)x&CChmzmHCS6l>y|^-7Xq%m4Jo}dG9^=B1xFV-=OlpO^kXR_USF*w(U!*S8{uzY(6c%ijp4%1dn+ctmMS=S1x?fWfmWXr4UkF?5diL-j5-e1)aq|~4N zi)weog`HpCngleZlgeP1P)vKN-Zhsdi=0SVe_T_7_Y8Ad#DIm@mP9FH|VJ_VL?1D)kM|%R~P-s0t zuj5uT&#AFYedAPj7bkS=ihnfmS2py`snlIijM90I0+` zk~)ss*>AnFhc;DRm+{W1wn4rcR?~HN*4X$`xH_WX2;A{~&0f|Fbjs`j&qI8kdk{UM zGWXGnta6{gSGU;LO&_@(kJJY`9nlIB8v)_rPoWPmoEzT1*JXW z{_|f^Tyt&6H?h5s>AGjT%O20R=e8VVa8^Umxk`D3J$C+Us^rVh=2_HTYQpzLfZX?R z8TaqQIYE$F5UNA}_wxV~{nLh^b|RyQ0liNmyn5ypZO8Q}9GBym8|&*lmS(uyPDLrl zXpvq}05urD82q;OTqnV3Nf0%(Svknb1DZm^Zc&i=#WU}CT-eKQaB@^`1n$G;qNKM6^77P%0dd9YrldseQM2@OpYhIK_ zJtV9?9+;tnO+ITyj@Z#SPi$%)uf(4qj4Sg1xQsv9>QgmwYfbZ3{TnJJ+M{`6xZNjN>qe<704r=qY0+=Gi!;7CVrG=PdYua9GiK_i(sCorZ9biv9D`^_V&( zLrIdf5aaG5x!>U`??GU@CVjo36QL4vGWytl&qbiHq8rswuWt(MbB!WRdhCKxEiTl_ z-%4)?tNBs|J1sKQ^ROD0 z^$pAgKlh}bX=C%ua=kNlDNTkL8Rr4zSiiFrrSQBsjsz=4l4^uPwmwDu`4zA# z{GqoNiOni(r+cIG5CtES?hUh*A3bKgEPo@qxid7)(nH2kouUawflG5vYllae-vvMe zGlqrjd58uR39pXv2^=r2OwYG?ReaG3zrVvHSJKL@qlm1qHiy{z*9%x=3Vw+P9+3;ZQIF%M zAaXvQs79o}L`!~J>i;v(;7y+80QPev z3*JH&nwdqvG%7~{r!YPS0G}NbiV8)*RyYm7$hL@AI*9Il1>D?rG-0OIE!u8v!h=jsfXqHLDjl81Bir(YH3$`#rQ2 zPR+M`5;j$nKgX;f@z!T6Y`j_Fl<&1Zl=t3}^h>k&6bt)vePX}FABI+RaxHp?fS`uZ z4|tk0P-ulEKw_7e2ps!3v`qf&(N_>2QEj>!AVNEE$ED$ltTp3H1p?Dy>sZKWS{d)O z)jGJ(SRq$4Vfup6(rm*rEVebr_q{4Z;{2mro+*iCj^pn2m!3^_8ZT+hPZMR9xGziL zb$n(y;0&};e-EZQ`WGEnR2pX4VtP>OcRd6L1>k<)i=6hI1N)e{mYtyT{wM^hJ_zSc zgEN$1;eG|JFS0tL%4+ZWjvOC#(~*K_v!-YI_&=4%bnS5T^@IwC3cw&YasSi>-tr^A zi__5of{vxu1Qrb1nv3ai1SJdY8*_)8f+F z!A;HSx4xM_Vl&Gh3RC``K_X_C|5d>0_(t*@a1M2&cpB@t(CHJSnRa-8#}-$!z6~%~ zzQb45B*IW=%qqk=SGxEs)TBdtC4@;f9h!h%`{`qpFw$DIT4dw)_L`1)xA2G`!+cd0 zt$c)Cf{8Ll>bFYY7AQOF7f9sT%#f{tgzlWQ;zPD5pc%bGVVw0YwJ;4Um94eT_qEvP ziF@O;`S~U6zH#DU<85+xWJ*3fqLEF<2O|8VmCuS*dA=N+&e5 zD`5(L=rUt9(o*|Q^qbmu^6iiUW$0g;cZO6nf*Z}uIDS}+JA0con@yeq^KGz8Q)$0t zI0wUrvT4x@)dM+Fj9_y^gL2+#OYG2vrq!xw}$a~sUl!o+em2wY&0Z%!6qKGK2TRc#$2tyw;YM~ zAX_+uk01y$@@h@1eW>4Tv09{*Q)8yr9QT^CRu}##OS#_rc3e5)@*}3^2u8tymN3I^ z(vy(~6c*ho13Jl`8oRrGTMan{35RahBEfQ4%A}BhU{p4w5u{W|(Zu>ZXJ+A7oYaVC z7>#=R=oyq2>W4{8R84_9DCO^C^z}DUHg7X=q#iV>{uPQj5e^z%tkC-EQx5u>g9I|wHb0~ zyQhWZ#h7Eo1nR+~^%Kcplf%9SNbxvN#%&!{7C#co4%O&}7(eEmYIT zOJyMV1s&NIcyL5@tnVT=W2Tn-Fj5PPhFrHN0auPU1+kE@oNH!}1AR z^6bd}+5TZ86UGe1;dk7^Zf)e>7!$#F=YHIVNF%1Nf%BsE4QiG?%d6u|fA4|yXMR?L z^5aWUh-u959N4y2v;uWEO?`Mo9AvRn?t7t~kI_%hZ_UbQG)aug)Utp5M{2er`X`TY zRTv*mj7?;C`x7MLn7?ZSF>6DN&yT6~RGFgSbAxov;&IUfK6Dm--3xsgk|@Yb5f;%V z;@gJ=jvDWJu*&zD7`4omnOUwpwT74!;!t2T?O>OIH{yTkA;`GOj)AtxTvVPOr)Lhxt~jv>Z!rU8SA7UZ!N6jre|cmBZL-c-m1a!6 zAFU;iACZ>t*AlIIH~va9U+u-fG7B8$v@*Xd7tIKnMecoM4mO|(?r)E8JvpE*0aqIa z(J1K;7;074jAJ=^Q8l6jwQ34yH?_6j4QKAyrljBMbOn+o$A&NU${L-P%YlR#xQ2nj)=B{xq*JmFsLtt;}VO3xuC=-d#^P&QIWtClsnmy`CB?u zVEI57dwtF&!}0^_trf`JU!3?yJ>*~A6-EPV%T-(Mp(ts~LwZ`#*S8PJj=miZt02;} z&z&te@uIJ8;J0noM2n!+q>h8SnJX!bgq`wK+Y?v`5Qoi*{!_N&#)QG6P-k==P*&*Z{_qYODw1+jT0-pi0x=8dDgLzl zeVj^r`?F~_DZmI&(vd=*#EhFJF`gm$B}$WLGnlSa?jmS&CGSOH8}~O2;u1ZBsZ&9p zSDyoj@+kq^HUJI0d4Nab=0%^s=bh+nFoQpvoYQ-G^Hd2_M3=M-rh{Uag7PfEL0vNo z#Ed-`nJm z0ivB__wvEzq!zX!+YE8W!%{aU*&eo zi)&>(q<HrmhfV!hF^#=iby z#Vg5>4c=oUC3W%kA~%d_IBI!b|5T|li{gWdsL`P&-Oq{t?}`EZu4>@!Rt*|&Sbc##rl8^(y4>7<#hAj zKKaBS|qZ?IdVo+K8s-^XE*)7<9)LR}6G{)8$UP6%a79WUF(c?ZaT8dcflz3ZP>%s8n z(~E@_=91AH!=n3?x4y<+^MJWQ5!NGon|F3-GD-u2^%*$hggGrf$Ed(L@p;y1GQwwKdbNf#tOyM`c=$tLp&;MHxTbvWx7wWJ4Z*T zje$EAoNh~OuH57n_8VrzpD7sd%9>^+6{S#4;RM=6w*`Yt57A08Boo1`zvF3omzpKjjd}DUb z<00K+`%IIktStK#;BVH9{{_%Err7Wm^Z!~sBhU#_uWPRAkpI^WZ`5!ge*S)c8_=}< z`z1LaEIoF*KEH)bvT`O%t?k%~CP{d$xfaoMifTQW z6DX&oF+!WpF82?M@|%2zxx!JN2NPHwQcm}m0ws8;PWtb;^w9Ioo$&m1WymZ`uu#A} z1FCbAAoblMw$TmaZJhcTLpm4K=qNj8*_+(6I+a9N6zq76qPN8pZvn*>J@LSRQe83` zI{0cKrnYW~lM?CUQh5z9#ZyTtRVOm zz~aizmbJ+E3YDCXC?3x0Qq=cCsP}5T=bK!;*Er>peTttUss_6frFs<^wvN^0MC(cJ zWv6lpGqA%7?!GdN{bBQrqN_>n+NP6;7+JZxCAILF8|5LB(<#%MuPVlchouQFlU+@M zw$F>xX8oVF{#afOjxqEC#kfbVeG$lqa79; zYsPT;Mg!Z2^#;5q&{vnI6)7KnPFfbLpM9OS3A@$woW(X^jhag)|G-%sQ<#`mw+gI2 zCAw&z7yo2rXX3ojb&%p1eg!wwM7tyeGSkRsb*`(r+0A76Nno!dvc& zI|A2xe^gN|Nc-h5Cc|&7ngXU9AXH!PORol$C(#A{vEAErrjqVh4+_cUfwMs?bb@gZ z#!c|a<6;%vy)&6v=PezdS9`O~eA~x060x)1BQM6i&tGI5b5d0K%STbt<=Pw=; zEXNJ>{pH}5*im>uq>HaP2!WM(8m_pP3wKYWBN0rb(_bo#Zr*J*5w+w;&9LEMK=m{6 z(+j8ZdA2GDf~jk(oN+Cx)uCkOf>#}Be(hjsinx_sDMMAscXH=LoAveX-U}9$!$H(8 zXLwzn=z3JbH|Gy}W#Bg0SR-5-S8}cdxQ-!p0tE3&q~op&;53tXAXaD{pdBE3pjIan zK4}Kfio;zm#uOi^$k@*7yog##S>>b@v#n&B@F)VlL_Y3yPeST5>LT4d5@tMElyeZF z8hwQ%jJoN7oHm4-0QuBNAQTX`2N=+`+~-qUb-l~P*LOl!uUg9-)m2p+MwyA}AZ z;#R$-Ch{K_F$RSyC6>3DjL|r_wK`Fe zO^cv1+rLG4fZurT4Piz+yq+$@R!TCt`hPUJ2jK*YMQ*olsB#0)K+xh+8dD8AHsqbE z{A`M((FmT~o%d5>EVsw;hAu6N%kMt4>T{jr!*}S8_d-;IQ3DvHP2^}#&TqpoF_;77 zmwe3-^=h%Uq3GOBd4eD-r#!EmMTs?vf2z`)N*jQ>b>y!WHKQR*{+Lx$Geav)@%-|Q zQbJ3G`Sa3LnMHOr2{%}}Kgs`yUt9}sdH9CgYpW9tjm&ZAX z$2b3JV@5fNg)C<@XYUzZJeZmNHn2>@<=`u`##50exOQ~`)I>)YX4katxM5a5Dun=<8Uxa@WU&;J^J$Til4H2~Qt`@lO6kZ|q z!~{*#%lr7p-W2yFll$Dw06x_BaI>yn=QSyeq(3Q3ZdxiDH8GOCeq}oX=Vv0MyuryN zyW6KF^1{Z~T_?OY6=TlaE$&?AGUq!wI%CSn#E?4f>6$tq6OoB$bzka@_Gknywxt`g zJ&=eONypaYY5C4f*))#|_wp$L>*=J~nR?y_NZ-#{xY*4^|BO<53x?!Lf}L}6>F|t2 zNR2FLnYkhZ2VUaYbYkkJZ61!=Kbix-C9KAt#UaYfl%uh$Ut^kw#J|iF=a5KV)hK`8 z^yNNt*A2cV7jOhLpwLu9D+*yK-6JP{irbMcIIIH!V(nOh=}lXNl{jJ6HF}lUuL)hE zdkhu@Xh8&gE+6a|(}*iQ;}*?TBjsZn8TotSuZKADkNC%{nOjg036aVUcB?+%M1aAy zY^+x8r;N8U~G3rMNuY}soZ7uN$DFU9E5 zZ|zW0o~@bjFd9%n>DtD>Y#{z6&nl@7TrJU@RtjV&41iV{;}@2_QV!1up#1eTMXfpkv#^`ar z+c}+#jXZyhy}{Swl5J*luyX^T%vYX?-{GbanUY=j?wjQXfib`7KmXGy&3n7kY=+-{ zq!u&Q@x$gSpb|lI3s&!nHZ&w@fdW`;rLP&lpC^c=^Xyq(Mep8HvttJ7MJ@Sl&BI56 zya4|{0Kn(3E)f6)^1`j|`SwQ}H9=^S+5lFoIdAbXh2N<}6(TYVzzJ%vQzN3G`3Yde z!D{71Tfx6!&D5068GmnpmE0bwad&BmzaraB0$-bhq{)2e_+?3gI*T#E7P4XI_72{L zB_-Jh&DC^qql*}jP8LqgnuE*`B8%GVZp`ywsOl8hU<@D!B+z3)k6a{u*dKGGqjVB7 zd+RI>f%!B~*j_Z6k#m5Eup{FCd(1xvm2M#@rw_7@{pnIzykoEeolW|%+z8J?M55c% zMo-X*;`i7Y-cd|no=7Qe?Xg2wvujDbELhOQhj%cP1RC0?c}}2VFH);`48{|NG1x$W za4+MTD|z3s6ett2d>qBWeJ6yGFotKng>=Tvt1lkWr-XKzCQFtx&z(R;3wU|O>-3~)|^T2kt(DHqgbk}0u1FC55Q7EuJy}`re~b03~Sdu zL{3AwU=lquM#D2PaNOC7(-1rfafPI5;i?yNo6*><071E}?4EFyK4#Q{XdnjSFI}}- zhgH7R{sx^HeGvr z$|Z@MTYaJ;=6_A0{b0!Dtw;A??MtgwTtY7(#o=(?Q#F1J^=m?qP;y98fSH&)NuagV zO*IU`!eKlV>~(KNr&V1(2}35M%FL?(5o;kh2FtkwtMYl5`&Hsq-S(Ic`Vp5QkIHHF zvf<5x#b^pqsi@e*Mxv5L%x+EJx>w>?sBZgi4XXvVEX?bPg0d-8wkje{=yd9Tw5Mai zCsfcuXX@}m71FP;f7@`u92)j8#GtH6vOJ4RU&vmsHnyqi2CylyJX@vq3a#iy=UCu= zzhwjxVXf-A0C9@$2<+v(eY|^RHPcg$n*#HA<`*Bl0 z-(}J)0pr?am&I2}3jvl@$objEjHXCXU#zGnvCALVvW7olu6WtrBF4|xUl;9@U^A=t zxL3+*G`^M6>n+i(r(JI0uaEqtqXV*=ntmj|(+8!(9%K!FYH)K%Vr(FOYf$Db^&oPE zUnX>XC9=(DewO;+gx%+y)ab10`+*qoav~9)#-o(0w{GeQf&Sw8<`lVfT)Q+AnP4iJ zk6Rv;a6K&7ODtl_uF9{)PHnuiyu#kHnXLVHP1eKiXmdnr)?gVF(MaXBdIPK{O-sn^ zUPCC)<_2&WO_*d!{9DkU6nRHwuvC!wx}^Ym6l9To{tMDd66sLX?@F#gs8an!XOZ@3 zLn*I1vTj@y%WJjx|LEUZCB#OhhxOr(3vuvAR>Q0aUgL{f2GJ;ioI>>v9Gk*u!Qm<^ z`k`jyAdv|>*|rx$eClq;rSWy~iFBw@{G$7nAe2hv$@O0?2nMoEry@AG%+Q@O>Z2^u*I?#?L zkz5YfA5cM5H4Xs!1IHf@A+WOG$d;A$I)-|&m)>5%W%{EEJBvG{9Btb_ z3{*pd>Z^u@6BgIxFNU2xn%%W?E`tVa5*Mew#m>Yae*??q)n znJ56IISqXZNPOqUt@aLriSW-G==vf_+} zsZerW6;ied!nExq&9%J>TgI$DegawU-;JhpiYRER?@=6{el1$)QzO^BAQdIiqQ(Ug zJz7iWtLm_hY3v$a)p7J+?wvxfkpI^PKH(~Ll1}jVEyte9BVNN3_&BB-m7$`x-P5{c zxut_UCTJ9#v7}+(W~s#g0p+?D)?VX?P(9D5SrzOmtdHU?T0L>R?`yrOI|xj!4;!3L zw_1tuoMasMC}9BTNBH%R0bEa8%?HjDc&(knJl6OnqX7lP?7QcS>(q?k-1M*S;c=G{ zuL|}FC?p<>HBeDT`BBvR$!WBBRlITSx?Z@#-^~eG=48-hZd8*Nr2NADe1m(=UlCbXu)QjB6tA{4u)%OD%0U7z8=`1l&RzT@X%g0Uo zAZ*f&6J`t-MbAgc`vwx4Sf_)2tyQSs%Wp5-L-V;o<>(~!uw#mA3mKIbpc|(m1WK`r-CD)tidI|dpTcK#x9F2+JX<~Z+5C%5iUdfOE~G>Bc@ zv8xA^@*g-u0=7#Hg~2JGbf1|T!e>UbU&sA|f9T81;mLJ4u=)+NbD`nHCy2Psy%dEC z-ea7-NfD!i)@oZ^&j~Ld0|3?%!lI^E-jpYGi-K<^Q(aMN1`#OF~ zWu8;P?b=5B9g))i%2m>P6G@wO2CEZLpk}r|AyJxA;>&_EY>eazuOi`L^&amn8V z^VmaRY$ZY9|EU8>?+e{bpQ9~B_foSaRV=U!oNC*sjAXvnPI(65kC%^}nJXXyv27q+ zSNwya7m*ak@C=q0#($_|0Init4q;^&_q;Twvpbks$%S(cN%YHg4q6%kEMZEwAac4D z7_gB9e;fdmy0K_Oo2vo8ExwBXUkgR`2MGPG72K-$kBRt3M{h904;)6~i5uB`qleAb z@URQ$?aiuw&bJ4%^k}~Ym!GQ}6Q}SCaA=4927)Q9IpW#IWq{-6a@SiIb7;L`8BRNX6s@qejm1*cp&3@2#YKXO^U+1^ALDI`UZ?DDy z)Lsi20Lph%$D=$#ut7&@utXdis|y0 zHxvq}hov>ZxuLxVU`HEZ8{9+kel{ZS*8yjbr}Y491iB3azeQDIe5_7{1C=zx>T@|S zUJ1!Aio~J*^9#ot435Y8v{dzP3lJpy3%E-PrfF@~ZFKn2r*>#;G6~X&#U#1r0RSjE1KC?usQjALc6~kx|GgLy`(+Odx;Ku0a?~ zQKU8|L7FI+UtJW!AAW|x*u-;$kqF)(%9DIM;pw81`?Kj-Urc5>E%pkO&{PfbW0OY2gy)5?+GaT{k)9BKz0WhxZ3<^f!#p)&T`8fNj;&6K21}L-ZVN{LE~}?r z>sVH)=dE&tN(2}bqSXsktp=A*-HR6+T?u;<6 z#q=ZZ(BH4A#D98TR%ll1f-Deo@fJYzgGXEmlW}G1taCuCi}X?xQgIUy&Po7C#gq2(TuXTQHbZL-IY;cdG9AeAS2F zO^yt-*Jb_y9?r=ep|t7pt5GuQV`4S_<5cUJ(OK}A z(WgUjt)Tr`T^*7T*VCR)6S;lqFvO%QokEI^Mq86L+K*#VV`xQR*-j`C*+oGJ-?5}?=bX#*ICp-3wdiui5 z(WE&&o;?>)>qgYOf9ooEEb|8b&Grt4F1tkn(m(3`A}1Vq*zK@SbzgptCx?|jT7a%Z z&hMTwA8|i@njA0K$z9|DxiJ}PhgqkK*LhS8bg{;|o0m2_@o<2l0+MLpZ?1)QhJ^88 zH`m?9ZW`R>@(`$B05?sv9a|11+m_v3AlVbr?yAOQF{@t0%o0ZzgQ~APi}tP2*7~?7 z)BJ3bqK(;+L5@j}r#3&tDG%qMVR&q%4m%*~jjF-e4par@Vi(neQzP=dqC|5&k_4DV zwHE#MLz4&NO=*ucu9Sf)&*y2K%cD)AuX=~@@AdDclP)Nf%JM?Z8YQxHHWi4E(iZ0= z_G0%E(T-u8r3Y9g=*a{>w$&96mIBz2^!&6DaFJ!Yh^`|h zCZkJbi~ZOf$|IgL_@iP8)fQd7UH$|NcOhzWiXs zy+c7f_22*z@^c(+vzC3s1Ssx0Sg7ne$5Duar*?fMLT zdAZ|NON^kk7$_>pZ_VIgTt;7uunoYp=@bMk?vDOry6yRr9P$)9uz~9v!ORw-zKH6b z%zBo>HB5dX$zW=cEl}ykur{!H5K0e^`DnB;WNIm0#qPPu=x_v89XkaVfJ?^;gB(B6 zC3D~n9)#@wu@%$3YP6fFR}`Xo;Eh=aYHFlgc16ISCM6`Y?z)#7c)+5xchc?I-hjS! zXc7k+_>$G66IsMLRW#so!DgoN)eCBK$2P^l(HS=9ZS;XtCxNWQB8W~OFC zs&OQGgxCe6?GDxw?&mfQ_kFI{8+5^TbN2d=FiyVlvXa`Y>>kKI#MP6iap zG|$nTnqDoyE^9(4--9_NJ%X)2Clz<@k6E@r;I}UmJOeo5eB^5i+u1>ZWqcu5+b#pB z#X_XQ%hgf$$lLN6cd4SNa_2(ov>84E4e5|a0>~Cnz)&hu@IXfQl=A1++kd~F!~mNp zxF~UJ1doG|Rl=?#7oT`pUG3pzs4iSSk4R?BW^z*a0hMhY=Ic&>6uShjR`_#V0rZd& zzy08}i>Y+2#fpUU{8$?KkH@;FKy_`z!I#e8?vo&mo7-%I2cfbTI3q9w&*{toUhPlp z6ejWke09z@Z(ap%BZ%J2y-1wZx|_~bI@5s&_cR09qv0;FLI?Y1UkCTvQ!%XNG8<$w z?r)Vo$QwMeS|s2@QAPK62aH9bbTXN$+aLymNaEdssKgYppdQ6(? zu*~B@4cy5z!-EfRJKC|lsn>a0e2yNA&5#R8y$phnS?5{Qrhm;^oTk^J3C(a`??-PN zU_%VO?sw;CYWOER7R*E9_>D9u<|4PVJ)Q&^vEx(WyBDly)H5OG6*@Ty?3>5Vll9*F zOt%%vTweGGStDub*)>$8H|E`v^UA2^4uDu*GOjcDK)NQF0R!0~g*6?hy+4>03AJ*Djxk9W=-*9JubNh^Apg}u2G6C{;Cihi?OoM*Mhc~iW|!?@$t z_TXvlCQPQXQ*Qi$eyBoeORvvm9c3Zwk@sXnquz(P)Mr~r6^};`$0zZ&ry;%6w4G=S zBaP@?u9W4S8xFFrX-AlEHBk%HTbENa5DvbBsX5=isk$o6NQN~$=)81)IgJmwdeG#0ZeT~2c1|L0vnqtZeWUHIBfkE;~yMR_(`f;uI0eAopNc8vA`7FWALdS_(rn;NuxwWY&yveW1-6Rs~2Eu}~_O(RYPPiAB1s zSS_9IrsYG@ung(uC%!bmGDUUHQ0ZI$zb#e#c^1x zT+L3#A@TW!MSUP}*EU2Q2|CY5cTM*>AurZ@{}$H8wNl9s60XshTZjUsFzlcjxg@21 zf_sv?3EkY($^%5ODEg+ec!hw9?>ud~v;bSr)W2U!5|KCm4RiFl70foYfb}+)t}f4O z)4%^8eHMqTiczf8qP0s2sNPUzo0NUkmDdIvOc}ki&EqB7IIWG8dS|hy2HyG z6ix7(_3=a4eZ@y3Y~*VW@h3-1tM9$@t+(>3!E2~S_t%THwYmye(HXN9j^IEIb$&RIfl(n4-xhn~0&vxDLn8QHq}dxmPe{-=wUu&nxXJ#@39SzN?!r1Q=*1 z*w8*Cb5dmDC&>FiM>C_w-2f|@i6NBbEkM#(9IkgncfuyWXdM>26 zvCsWvP{SSX{T(C-FFJqc>0GrvoS=q=n1qr>NWrHuXMngGl3ay04SW!=%>?Ojl5C4b zi@*0jA`y^%3QoSt(T5dkwfAuI2^KGR`Z@60t@fA4-w@z%*(&ZD=1*L+X;j^}BR6n^ z5gHzA=+aOFUQFYK#*FKRheq2!{CyOuPpLUqtK!_%X6LDM8T*)+>!9u2VmD2JLj@`h zbX(;qm)ClF+ibHrmE1p0ceW@rTp7yr?VhTVKmaVG3&%J;TU3?9&DzfUoaR*F6l?(s z3oDr-4V|^k^*I5Bir&whPXX?f2iW&c7|MV|ACaH7N-{;>xL2xmg6%=R&MEb4VW*=Wj|q&vRj)l+T4WC(qNxxO)U#zlibN@YN_x@GQY9K z#c5SQXjIOu+&io&eU3^oaEbeKP7yZRvw7muPt#69{Dd)u3I4DF6 z7WQ=-4_7lcTEvw)Y*HWyYnDypKlJfHsZqb)bLSId8+hH22c$*Q@g6>pvBZ-DurB^>T{fxg66 zdBQpp z>(Dahe+(7H^xMm}>IcqJYAiG!EO&293`e}aD0 ztJQEY>oF|e9t7_9H=EdOt_X0zeGY)`(|u_9!+|N`c$7q-JW)Ys*(K1!Pr$-W$GZV7=ryDY7#d&$axl=uMTVe4T`_)14oc6cI-9r$Z% z{H=Ha63WTmjlp4Mug{-;wZCQ0%umb&;Qs2ba}W*pW`Lq+Q`|X2hm1s%$CgN+!8SUs z>fro9%(?f^j&(Y3(j$|_!?dde6!-Y8A0GnU`!xDAwM(l<7)n_mIh!yJHYp3!5m-jG zQdZ>45T%rN7?MT6)=0(N-Wq7fl&`jbPD!&RV;kubP)GM|QxZC~3^|+-QSlRg~ zH}uFC(AiUPp#c}qr4F3Ab8nE2TAy%#AI%a@!f8lbI2^}GkqUZ`*+T|1`qkW(-Po%u z57jK!A{Ug{jpE+F!q`TJ$lUH_^rB}!jLrv!t49+@E|xo0^|%P>$BUZ>inn^6cKB@~ z&Dm@T88N4Ho1lYHqWKV<<$66RK~<#$AKv2i{leB#cB&%q^ahX4NA#O$B`Nup?P@6@ zYuN`U2LO1#XoM7eeO&j*y5k;=lI^PIjNb%!bF0qjENfhL~@>7fgO zS2t2hCa)cB`yr8)lyC&WDF#QXrgnm)TI&x6Ko$Dq-+BwAk#9_`d1l;nWJ1d^v^UFL zXg~p6vK*F+X*$tg_l)VoaFXwjtgIB^yO0?mIiXf6?GsEQ2!J;AWkgb&v#H&X(wcJJ z7|T<@hbD~5J-j4SC!!^7WW@2!LN1}<7&Lly67g{V>@E5arzP!ChK=Mfe+zQI39uZ8 zIgtsQ+d?0;;b!7YJdgl3wriUQ0`=S3xKpxjx7b}}*!q$X^ZXeK;%sz99SGH_TWMGD z`=i)ASvUjNi2ztq(YagQ<>dWX{|g-0zlfe*J$SQAkmO9+vlJUNY60CW3P2k=5eK-U z&tCo@|4VLtaJE~xo-B&F7@V1XQn33o_z*=!_}7+(n8*uA&pPcqk45rqu;)~*zZDe6 zN_fs_ATso@B57C9UYHVF39#hla}QD3Aiad*y_iS6wS;5BKLrxa8wCc!FGpos!TaM8 za+L!BhGuJ&&4Ru{2D_pL3ltuh1)~l!pHgGxWgRf0&7Q#bVUg7~OUzra8{sbvnB9oP zy1^8ejEr&)fD;%2B)77$-|DL@^*`G;IyvS;X&C>U)uK0a{Ifu_5#!9wM=0rXCm2JP z`It&o4j(dMycje)TwoQSaOr4@;_3RWFOk7>k)X?_A5PrDsz^SK62H%{6(;8)m78_E z*O%{@5i_NT{6m-qq$bENGNttcdM>^0lWJz{*EIv>AqON|20!VhQ1~>f{h@@u^PMM& z!a?6k8i3xVMVFm&3B{qGG0$p=75DG!P3_M@Qb>iInvcGcA8^_#jf`gaI*d?4tAY9H>F?i+l zjEFQh`P&$i8d7qNxo|@1H@fW$fcCT)qi@3nqA&xsTt^*f~^LYBi67jiX` zZkQCFUm?2l)JWnc1SU}w0u~6!@pQ7a>Y@^W%IuwuCz+bCCu|%z0^6v3z`-r+tv;RK zhwkTSrPiFw%Bqg3C0)C7DQAg24y;VL6vl-Zn^i&P-4^wi!tK|e>Ak(G0jndFA$ zQ%CL;T$YWs^mWsTE4B`GWq^MScHU+OCrSxA&wPe`1RP10~R28-Qj@TxR5;zhaoX7 zsMaYULoy_#JmL#DEyV9X;=jVj0HMQ;b{C#);eihPP-TqGL1{CUUujGu%sg53s1ost zpOFi&&n__)<6BTQCPvl7>Tm+nY}eV&=$Og8^Sbp%B|46de1tIx9Leq7f+bn+6$qJf z{XOm_MBFu(F2lBU%r{x#2qQ5}i&{|%fE*^N#o0fg^EpUcFOJ#m4)vkbpy5QptXEnn z(lv3vb}uHaAv_R!_Nq%7XUfY0vO}2?`Gbue^p$4=9-0!$$om-cmGWT+azx8}3Jb_} zdg40zDRRnXsL;)sT~?Wv!G1f})MuVXa18XEE94x`UN0Kz_|UmWF1%6r?g{H;mzXKv zn2UzM_qKScf4AnSDENbu1dEA2$KU8>RHc+NuF9)RU;#bMa^2J23eTSqBiex#08=G549zilH& zn#XBAwG&x7Dgkj6@OVzo7sJjqnL;t10-79NJy|ea4lw!)xl8Zwp`Q4j>2GT89+63_ z)I4P~g##-O^Ed7*BkL@{&Kllcaq|eY5ACBS2`6Cyr5;&O)9}M!@@UB5r(C2dFDG*Y zl(=ph*mmbt&W)orYK<4YN8zOk9k%!%d!a>1Q3l2S6mUOpNtJ6*MEw&~C)y@ujhxy0 z^E>C*|7ZhqI=cTdRc$lJ+0lrWa;=xD*-x5pppyR@)9CX}@33)orj%pQrE8E1E7VTnjyap3YeO@|2(beC{woea!2k%rh-p|+e3P5BFR zO!PMKohLXJo_~OTXn_s_iKNn1DB&z^&rLm$LloGBys`r^o1~=TrOZb6bD5`*E_iQN zJ}q-;jd=FzO_GiaTG49ORrl~PS%w&F4C>^-2x-b*2~+0G39hCWd34lMGJvy7GvQxVCfFnqoi!^=ps8Rn%6Gu@2sj1TIDgn>*fS`nlOm(xLqPxQ(}WUFZ1 zRLMZafl`s}(`P-tkOua6X^PwgrQVuYLFNKU%lBQfZDn=sMZM^bc;d{Ab`2 z`~9lwnlgjA^o_tq8E8B&v2km^*{s6YO>;qI5koW}0A=v2`W;05Vpb_6OX$GFz0Ca9 zT$!G4>FCYv1PewuO!zlIWgSo$aNj%nZsfqedww(|uPCOJ;?7 zuSzbOhn#dYwA@yArMHII45V!c`@eg+<|@$N>o zvJn_nEAGbk?NUI zhE3rTfg}hiKR8y}dc3EsajqE@lXX3M7kuoRlhD9#dhKai>hwU*blR5Ajh<0Nl`K-- zUzAY-ibx|C7^Bq&sL!<7^xYMiXE}MUlXcdERoQ%ML2)Vt+d$X`Z0LQx#=%;DE%Q6$6T?q|g}9%ZSrM>Eb7s@+vlx{efr8AI7Uqgu8D6MrY6Blyy* zKNnl>&}_Qx2PYO`&B5W8hrkgN}TDE zd>a72@S(JA0SRrHj&0a?&zi%yjP1aRi%{e$Om?)TU&n>N;!DiCgxrE@wS70KWlfSX zrTFxnQnW+XM9$X?V>C|Y=jrK&T^LJzDpD%-u}PvJYazj5wF7Ip+pscnqBWbg#c3X=km(%5$jIK`29gku^gS{%-RQTbSGGJg zp)@UblC_hM(A=g3ODPsjbEl#d^^~W|ElulV?(g1DY-#D@U~5W$3;}Z%CR*gUroFFD z$Yclvj9iuE&*caAQgjK6)h1J+cu4?nr<(heR-gz-_imh2^e5@zH!jtldAt&4m0DuI z1!6mxuI_0R`0$Pw`3~8SNG<6FFC(DM5&u?Oh6o^p=wj+qX3WTNDe=*5opAS8NH0gf za0o^J;lf3d9n}hc1n5LK(%f^ht+*`xU3Y_}4R+`x6O8qEWo|MhJ`GEpMMc7V6Gb~w z94vAC*j@XBY)(pL%G$TTaJ5X4Z^ewd5seEI1z1QJf{7l2SB815ccv4XLvivzYf`&F z#kWj?E52AjjF#W1=#=OP-X}M{e=>m=AYjm_{35gj$c#n{L?SLfcV|iD+3cUSFJeGg zw?ZXWZ>@!)Qq{*W^jq<1qDsFw`jfZ7H|UMbGxfJiIPU;Zx>y8{y4Ku@oJt7l0o{-S%ImJ;fTT_9g{+*F4?73xaanRSb&2+lOfVD0^V?9f|)!( z&@o%iO5zl7$0{PTS*$;OtYiYqquPH%Ku-!EMPu9i<3N4Pmr@Z`>>9)0w-XgEtgh71 zWJv`l0>S7v`}UPw%H?p#v?V8!%J2hj=&g2!D2TRbKO|e9){XH=V^seMbra+OoB&Ag zP!^l8gxmbpa;=cC3imsHq(}rJ z;!Rgv315O&5FfB2VEZf53;(#2&T9azm$wE%yB&Ry$*yRQ@XRoH=fTaqxy-;XMYNe7 z2m59iKf$KeBAq~6ds6S4mA7UHvC9;uXK_~GRFId`la@$u_xo!0T;!Qvt_q{njn7T? zQjPI}NduaoJ2IJ*p9GVjs z%tjX25$gu@_d((;YupWBw={c0`?E}fnyR%;HmXb+kEwV=(g@A!(z6kBZ0y6sqErSgSj#XE06+}D7*VKZJs-!VxY)eh4 zix>L*GlIf<9VBCyaGP*Vx?4CSUI2}-ITWyqM&+gEI=(dGod27L8;wBXxjZT|36Pyv zA|MvUAZU7Lu8L_EB38EJPm1DR)7`KICUHIt%buxbC%w&-Pxm&Vs;ORZiGDD_+#UF?bZ03SdZI_jG>oPqNj%MtTta1_LA?m< z!xTpJH3>15qow%%XEmm$v&hMuh$nOL0(|Yja^gf%33%7el(2xe?sjn%*^F_rFuV%A zH|JZ@eU>fFX=eqFpovd^zvmH_xfHwln^5D+#0^0yUH7C z61eG_^zK9P?%Fhtui98Q7!gcW`nr)J4*1fgR$+t{<%Vv?pNhl`TKk-A#iy%u=fAAg z82_e2YQYoA1tAeAG*F-L>2^hKUwIIQhp`R9+o~dM=Wmx{+>PSbo{1(XdFYT&@Dsj7 z@cA+nj8cbH`+!Ltj1tC1;v>7YPf64c?51hsWz76G zZO{6_EQ<91Poo=zZq7QfI#nKBc|`$^LyEVr*Vuye7*zKElItDNd%pcP)r2HqwAi4G7*mLBDWe6D5B5 z537zG@)_kOSd|-KToX0;V&Hc|CWP2fnyu+5vk1{id1H@!AGDp@bED^4c4Q66~TW z7teMu%XOJESd@PDWU#%f!orxjP(iqIoY})MODg;tyfN{)Pj=`0KQc z(*HDoU)kOTKxt}cG?6`J*)BM6BW^$VLBSyT*t9an5Rwb09f9Lv^qPwI5M4fUNF`{a zr}f&v=D#uD<^>DR#jNf-hZK6~eWhQ3Zj|YLrw@a%HCHF)BB*Vmk>HKhM2Q+9PDh*t z@Ag`cRxBZC_R!*d(?YdtPbqa;Zs$LK$y=iKLyAA(9PGOy#m3{1^;=hqHnGH4CJ(~+ zsa&kA%QHqe@RN(cuzGv-hjnB&Go-ys8N_(?a9a77hJcWX#DuuLK6Z5qxwTvSHG7eR zvAV!wAL%fuI)xLnrB>KVM~6HUdN`alwU9fkPh+jdzX%M^fdaEbclXP1I15aN9;weCS zBk#fmpbkg5bV>-l0+EJIYjMQY*P9uGtNl%2WX zl3=DOL4(6_VbZ5PGPpS;E$mDGwgU%QUum_O94JH`*iRo_GHvKbW#JIkQl41h0o+@N zYzL+_4efJ`e5!;YvV%ZxZ25QQYN#OMx=ciH4Mqv$sDQBKsh+IG0h~0Pb#uy(Z&JTu zSy$XOUWZCiKB3j;&JU&Xe5%+3J@AkZBayy7Lvc4soQCi!go$ee(=+-5Zs1ulD2Gcf z(-^ZB9`jxvQN9?o;H0u9mj@df+{e=}FAzSgUTcSkt{dqueSbiRNjH2o%2 zDZO#n{dDpXw$bbTem%{-!BS3{1mBnmF#AV2(^4JKZdL&<(I0E6z(d%AIq!_`_umyP zZHU=EQq=8^VMBMC|NXOkcbl%3zO-F1!lPKLxibo0;Tr)!vdf)wo%*lHb?RZ7sf%{U zA_#`piQ2O9>?~XY$SR*`-sbC}ye8jDj!X5zGa|Orq+CF;W7xOu96<@=C&Ec~MrxI> zUEqBdgalx9IHEJ6uS>2=ugjzzwcrap_^y?L;zM@9cAscE*6*JY&0v$=j-Ei(hEaq% z;d*E7z)P}Zp5+Y_dl@?7ot>rocAF_)r0045VeYlPmYF3hj!&-~o9qn6_r&zG)We<* z2j4i~t0c}p3nmw2kp`nzHY$_qsR?3MU1#EQVMfy>AF(*Q{i=0` zGH&S|K{Qm_vGUv)D=;-uwftb}CZ&a$V1odv#h}k$eOvwFhy`z@@;JSG?!bgZ04#s}%cW5YCZuv=nf_sGk;wF-)MIGj*LP^_$xe~D) zo|1yhf~5Y6CU*pA=U&>$T7P9rpxvvlF7yhrDhlaiEn^CFBLatl-AOy zm6*yhTEqIMs7gOb^ULhBM@rSMR(F^dTQ z+y9s^u^*EDaF8bRW#d5u095(O+VW4jH47eyCMqxa2KVL{z+=P`S6FvNzqNiIo+>pY@_=|Mc6hAFtaFq;5;SJ=ll zc$2JbDRY&sby{M+>G1Jjz^HMG&+yuypEl9;gi0EvxMls-Y%h|ZrMRN5c(S=^*lNo- zH`~As)@(}&>;V5i0KlchWeSP_n{cShoKVLz13lPxxf32r4aU-9ceK0*&u(sPe(T8T zmIFhGfy+wLY@O%&r6~osPNiS?{gZHZ=L3i%oihbNi{rL=yL9%=VF3+B0~?`qRZFbE zpUOY}jHJrx*%fM|a*6mp{e~3#NA~ySSr9Dn5z*clFsHKb-FjzuZu?p(XfF*7eBA}BNOB19E9MZ*^`LmIaXmXV!V!nN$$XNEhNE_9LHOuFK z?|3Tfm_$$1jv;bIhvhC7tb)NT8hG0%AFN`k1RBd{l?&TjZ%SO7ShVg*6`d^nvLYxV zFteRD2wA{5}1$~K*;_4DVB~E+-R9tjE7U>bHNm zMd`p@FP;j`bXFKVr*v6b?XBoizFw5;~OUU*89!#kzq-H z&ND6v;yq^jGpI-Xg*`i6wA*`nO5KB5Y{ML z@U_)YZx^zgXQCVZey^7$&EJRbshJ-KYIG*eM=Q(4JhAy+g)%k+J?Pp9JNLo(jUJ`C zh)K4?b<#nBtcQ9oyrqKv`^AthoCK^1$OQj(rQj-^t&73H@0@YpL`(Y|M~YbRBdsBM zXR<+?`RdzR8Ih6ytq|p;h+O`zNZQs~W4V+6vphsWnx^^`wn_;C#$Z%LZX*$l^Zq&h zTTODX>4UuqC6Y5(B;FOWMN<6Y{d{tmQ(7xL=>0!sL5Sv zH6UsGE)gnS{IL>RFN+`GY%51{>jFfFli9oiv`_vJ1~S8UX11uE(7nLxZKK?oz~0w8 zc_9j1@;7m|7PD$h{5Ju%tF-8M@Etp{`-aE82C}oaUBK`uPZr9f-Ny$L|_L zbzLWGD32KQeHJGgK0I5yBHI(mT(=;h5~qh3KZs<~54-fwp91xF<83lN#&mBUm-;H> zsCh_Z@pej0V|WIpQA*ApMfupDSkqQg6I&Rzqh*Yvc43a@zFeIgoWxS!{XJ?n-*-{4 z-!>}pO_S7J^JTU19R#uOKCqxW37C$E;LU&IWKQluVRoWI;yR_q+DL!$ z#wr6L_<$=Ei*-D)&I}6+ z%ma~R3|e@ILMsg`Cu+nvaM`{)LDwqnhhfEPWjChDC zA-+yRAhzktzZg4>ZCGp*#K^8;DU9Ye1EP`rN)h6VQot$D$SHVpqPZyGy&(XY{d|gF zLPsPn`8_4&w8>EMiw-uIoG-&BT|`{u^Ve{~gBMbWp7;rmLsJl9vLDwQkc-0f05R1q zXdFH&LK=2B_przf99`L#2Up%%MG-Sw3*^Muibl^aa=v8mEQIssPf!oIBS9tEdTa;! zJgm%L9>EM!%cqj~=s=hi{)|K7r4%gSR#y%S8KZO&f<9^$>&K25Fz1iLzMf6Wf`gwJ z1Qq%bkFta)sW$*Q2(WF-?BM_>rG0Tdsa`y()@Qo&s7K8o=#m?jCev~{#c9Snw}<2m zh&9UEX|cUtwK^%%V*Z`Zo>ifX*a&h*Q~tXUOwfGz>`;IMnlHu=R7G!qcUT(L!h zu7p=`_e^G~^(w&Kh<2-9Pm%K0{M#6GEe5L9L|flOqa?v}oePD9?y6*Qbf?_ovFBLB zFp6Q4-A6C{4a7-m+vYB{>u9DZ>ZZi7{>W5d_Cse2*zpp9THXjdYJEN=cL|ImoDkFG zusLTJ^F!ZIq(Nj#@gwxCek0+?e*=SYXM-6|waY{oaly;BkUNgj6|R*wO(Y ziKh1<>6aGOAulH2n+8&|3#W^9V)UY6IR_Gh!#Ic=+Nnik03HRN1u%cmrghh3d#Z;L z9XbBBXLHg&?LaR@(zHcMxTsDxde>VgmuHp@?!-5*6_2;?Zmr&Z#!o%>Q#E|OTB)hJ zd@tMJb_B97Xn?oJ#f*V;b-A{vgod1718Ilj&2tHhAdmL6$SerxLRu%LG*T#Ga?O&6 zu_i~eS^$nOo|@Uf%7hB(36>~ufg7~!;tMtjRUkC?kikME?lff+{u;v93Q>IDgDp7> zcJ@6q=gTiJq)A4+R{0|FOB}n4V4;pqf-@JJ7tRzxv5_TN2E|NkF4q+BK7g4QZA~)h z73T>6)-MPxxU>%LDj8tYS4S9PNulsslYl1X(rul+XqL{tFq16qu~$wcfQnh9Y=#_|70 zB)h^?pnJ?X4BxJuX7QNU@TZNqQH%_dN zUtoqF9IO?9Ar^)A8EN}TKnfQ&w1Fc%HN>}HZHIU$v0@_ zmvCX}!tJIP&5M~Mc9{R#`{nX|mO<6i2(6Q2P7!!8hW=F8f4kkxR$jmnTm zr7wpFU=KI`hN{A#H7ol-^i{zbTN&|WX}aiz>6Pop-<(j4HXHrCz8LpHizynQp>Z?dCT(`1)+ z{n&3#x+9f@y^;-?-(3gi^$!v>c*VC|pxJsr63Fku!-?pWCVd)3+Dk@4Xa0JGBPx3L zls2sOnvXDtSfv`OtF2yb$RWs>!vhKXYMukZ2NH+{19@vJsO%;bf-u~3bW+s^hpY;i zQm+vTi@?DUd~qJ7e!nM@_ZoK8?{K|dZXdAaJ8MF{CLz1JX5E|id))ZU;=Ik# z;P&pnu@P8w)(`$Zu{>ymta-W|vK&=7QE})|(;yzk_hpjMSZhi2R88p+I;iDU7kIAx zH*ynDTB>+z!@$MGt3WcKp9@z0p~mIw0(VCH=5zB{hHi$1Y5cOSLCpSJiZ9{SHv+D# z_D{RLL{@Q|FrJ9Bg&N0CLM7&HGq7qpj=PNw=Au|CX#y>^mHO?;O+E1{P%kaivZqeZ z_8V(L1kq_Wd+x;THsJ3JwJC6_6=&OO1v%5Fa6Eot+PqkDnXQZsvpsnhL~2}5e?+wZ zZYw3Gx-Q`<2ZE{41QZ|{F;TI8*_D!N&0nk^m7D5>W(K6<84-e}P2a3uu1sUu#Vx91 z=lHy`%wq8^oA$w)?iGkqrSL`bAwD~>i#DDI9E=96O3#`JL5HOA6T69=OxLT38c4NTR?Ofu1-3BbPdHBkdTOof^yak2bVjr_Pm z*|xWs1BB)q>k&vEI9X13XcKGc%2iiSg4CKI4c|a`FIe)r!b|ZtoMUN}NWz2T{Rvg> zlLPtN@g?pn^t<#cY4DCyfB(Q-sefgY`m5q`^895XSMl{U@Q1KLp3nCEqmqo~SbygD zjrxKTiJL%~vt`kxmI)Tr7w7Dh1S>76u9}0~Rz5bLZ|?Err3WkU8xO?W-H2|^nEjuY zY+$?d6=}4^$2dO5Jl-cbpNkAVseqyr^R@2iWGxjxBiTuPz! zKIJJzWCN{;!;x2@r>`Z5%DTynK{q_KpVRqdslyGW+5#T^PlPbGE$F9ZiveBT`C5tLS)@J9u>xaSY; ztSw1s2Jb23Btnku9AbENFBtE{r_|d)_Pwz1Q0fz>K?2~G1;~@IakW~tz%{tZfX+Od zVTXLp_Yo!2#elTB;VSZcZPLKAL*Wri=?&$o|7Pfk-Erpkr`Z#HURtQ{WWWmWv+~O5 z&kUG+ivQccc6&TlgFq5|wD7uO-QVc&B`;pLbJX9}TVPI3+G=3@$W_RUcg2TVt?TboU9<3ie92k*a^HPo zlEY_&J2K|XID(;4=uC@aMHbJ`p>}-b0ua|E`4>Tm0X+htSy&aBCYr^|c2z4hsr4;^ zXU7l*^gN=U*mxOY$Zv{M&R( zT?dZGFR!4MBoxSKFip*+U(7Q_ikQv;RFb({$$~)Vk5nUjA?a^NjD`%0O|%{munrgL z#KwM4a5nYJi!9cyuUAF?95Z6fv88^BdI;EEVAaXX&Le6H}`3)!RPYTdRD2!kS

TSf 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\"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\" } 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 :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \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/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\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/700/f14f095d\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 22.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="Download custom Certificates By Routers Identity " \ + dont-require-permissions=no name=mod/AM-Certs-By-Ident owner=\ + mod/AM-Certs-By-Ident policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Certs-By-Ident\r\ + \n# Script comment: Download custom Certificates By Routers Identity \r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n#:local ScriptName [ :jobname ];\r\ + \n#\r\ + \n# 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:global tmpAddCerts true; \r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n:local UrlSuffix [/system/identity/get name];\r\ + \n:local UrlDir \"certs/\";\r\ + \n:local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\");\r\ + \n\r\ + \n:log error \$CertUrl;\r\ + \n\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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:global tmpAddCerts (a);\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=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n:global GlobalScriptsUrl;\r\ + \n/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" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store=fetch crl-store=system +/container config +set registry-url=https://reg.vados.ru tmpdir=/tmp +/container mounts +add dst=/etc/amnezia/amneziawg list=awg_conf src=/wg +/disk settings +set auto-media-interface=lo +/interface bridge port +add bridge=Bridge-LAN interface=ether1 +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 neighbor discovery-settings +set discover-interface-list=Internet +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface list member +add interface=Bridge-LAN list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan2 list=LAN +add interface=wlan1 list=LAN +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.86/24 interface=Bridge-LAN network=10.30.30.0 +add address=172.18.20.1/30 interface=docker-awg-veth network=172.18.20.0 +/ip dns +set servers=10.30.30.81 +/ip firewall mangle +# docker-awg-veth not ready +add action=change-mss chain=forward new-mss=1360 out-interface=\ + docker-awg-veth protocol=tcp tcp-flags=syn tcp-mss=1420-65535 +/ip firewall nat +# docker-awg-veth not ready +add action=masquerade chain=srcnat out-interface=docker-awg-veth +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot walled-garden +add server=*1 +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=\ + 10.30.30.81 routing-table=main scope=30 target-scope=10 +add distance=1 dst-address=0.0.0.0/0 gateway=172.18.20.2 routing-table=To-VPN +/ip service +set ftp disabled=yes +set telnet disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set graphs-plain=no rest-plain=no webfig-plain=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add forced-ip=109.107.177.79 interface=*A type=external +add interface=lo type=internal +add interface=wlan2 type=internal +add interface=wlan1 type=internal +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/system clock +set time-zone-name=Europe/Amsterdam +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroGig +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=10.30.30.81 +add address=10.30.30.10 +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="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 +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com diff --git a/MikroGig/history/20260626/20260626070126-Diff-Config.rsc b/MikroGig/history/20260626/20260626070126-Diff-Config.rsc new file mode 100644 index 0000000..c182842 --- /dev/null +++ b/MikroGig/history/20260626/20260626070126-Diff-Config.rsc @@ -0,0 +1,14 @@ +27,28d26 +< /routing table +< add disabled=no fib name=To-VPN +2571,2574d2568 +< /container config +< set registry-url=https://reg.vados.ru tmpdir=/tmp +< /container mounts +< add dst=/etc/amnezia/amneziawg list=awg_conf src=/wg +2616,2618d2609 +< /ip firewall nat +< # docker-awg-veth not ready +< add action=masquerade chain=srcnat out-interface=docker-awg-veth +2641d2631 +< add distance=1 dst-address=0.0.0.0/0 gateway=172.18.20.2 routing-table=To-VPN -- 2.52.0