From d8a05bf0fc618fd018c8f937da47e0befe61d323 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 15:00:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 15:00:41. --- .../20260508/20260508150001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508150001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508150001-Diff-Config.rsc | 16 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260508/20260508150001-Binary.backup create mode 100644 MikroMaster/20260508/20260508150001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508150001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508150001-Binary.backup b/MikroMaster/20260508/20260508150001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6a82edf2b42ab35bcb4a1b691c04173243b15181 GIT binary patch literal 298264 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 z%0D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

B#QmX9?Xv4w##GjmJ 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

BvzU2WMF<=cDCa7nnrqu{6 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

_hC( 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%0A=5ONn(X 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

$|Jxzihw^}KmNJX z_f%&1$v{2K`t~c`U3v)-MYpd)WE^tVEJ&mp>zzLdORh=0>v2ikyfLzRyS|T zN%w5~jZ>fCs6Dr$+&P>oR4A-=HL^M|^D1ojZP+!<1#a@OcNNe)9lc919B1s_}L-3m;n z-C}9n(+{t9Q_Dbb*=}!b5|OA2rr8<(lP9`x!w3w_A#y$ou|D`w?U)BJ>-ja1QNN9* z_Z-8uhlrej4i+u$*pk zqUB~N4qnmj;x|?)FmuGY3`Vo3(%QIAZ>lQ>dER}7463%>5?-y5QTWSiU{!dkmhj$X zp?3epGdh-d!C<=_pM{Jn1=A0@zmrJaM|mvb7x5eS@q-5KbyO7gGjCh-%hlTIp`<9$ z>ATv^M=v0m09mVUTs#|bKaqM$z;EXS9%Pj5z%z;FjFdmsmc5G8zZeb+gRpQR^l;~g z1?1H9;+jSn`I~0+>(^b(mte2InXJEU&+k_#lP=hzcEbK?p(2uH=K2Z=@SN1zTmeCb zsn2Gc^b`k@U8_)Lwfx*5pVUDUo3h^ovRzDI!%NB z-$p7-blg-Jb(Fh?CekZXlo^mK4^OJZjH_jO6seX$#|@v6?f#%)f#m)tEPdn}+c~Y2 zNje$hr?XG3+@s>Cv1CE$+M8B2o@;dSYdI?%y-9qG%vzk>*Kpw~51(pyTD^-?ab?l+ z%=o2VqYpM9F2{H=FnGAYbw>Z3*_MK-A>N)L_6FE?2O$Th=}v|y5PF7lN;;Kl;}yt^ z!b|h{L#vr8RH6J3FFcWyMO6=#z*_0G@oLO=p*=ta#`;IklYMK94W$I`TcZd`23Km0^)ZmX#;zdvx4PCT)#1J$ksqDt$T(Y_gfkT#URXN` zuOCG{xI_@?CMlZQmb!Z6esX)X;Ef~I&3^|*&K(UAy|hGNM1QG!ZsgWyKFN*TXl>n^ zVF@Oi{vD}vs6duZ_+^u@jcz~&h2$Xd#PG5rZeO@0c}alg_4j5IVn_YDcBaw!qiTUB z$(Kc;6LH($*8%ykA%Bb4!RjQb%LG3ZcnP-<_1X$nUWdp=#Mj$%=v?N*o%|N{O<_B4 zkO(>LJcf>EosX4Rg*IG!?rMlf+lms7!ycdI3HK~r)j{l z@x4+6)w0T)xftjj>0+5St^oU|vNCj8%|_fC!?&T4R6n`ya&rL7GuK50nekHI|GEQ&wf* z05wz=$1y?@yFgSke268zY+Xrq<91l`z9}o2#au$~E19o$66qn2dWc|E56T$V`7bJK zjko-0I(p&bVYpw(40Vb)zOdjP(klYDy#{Ay!kchcYwLVK^QzXyeodQBZ6_kd`gn+cGdDyp};;0$gkZ^XXk#W$P zv#!Utuu!Y=Cf*H1@Masp0!Wy;pGK|KFu^N>a5CmlUIvaDD%a?Lf5#iF&i)H0ZeevW zi=`r}1&PSoi_}Lm>zn*{9_k5Yjmwb;2$C~+A=MyvZSYJ;mO?|~=Vk}9!|$+-Xsj0e;zp2Y%b6c)ilQw` zi1)2e0 zOUylzKa%$~WWTE%1RPk$KJOk1l`2GJzv`+4T2lxkmBrPlbKDPlJ=RyE^R2!DFAN_S zM&lLqej~i)vTBBI_!;d>8huHWRa%)Ws3X8 zlp0;TBLF{y^+v|VnT{UNezE15BjoslIEH}{k;f1y9!_$$>jaYow&3f-7EeM^^T(VT zFKCFaR6W7IXh)&3Q*M&}fF zAq+HX3&MdFEMO2^H49q{oq6~yL*B%7au!5DME}l-S!=mnvb7`L7bMGA(MA5JhX>Rd zyrjxMP~EPw)}I%Iqk3%tR0}(*3K8-bYgSm5L_%fJpW1yM?_~V-WGk|1`5YNh1qKkZ zzGFEoBv+N%levPn5KTKk1#$suoUl~Cx$s)YL7C4OZ9}oi0BD~1kl z#oi<#$&qw-ro`pHKgsXm$TL}!2EPR)3i*4u0n6h4$SW{KT8oUz9AM91v%bmI8z-1~;`ruT8!LH!`yL zq~@laG}srnbP1aRP3+F9y7;UUOK~x9!p_Px(emr}dx4A~ar<%=7?{~h+D4N3c(LfV zVLtzII+ptabs@Fo9J$CNv}9%#Jdo9~sV8%c`7|=-Mw<+d7^k5tJdX8wOa!s6lavny zJI1>ef02{N{T-!eH!zx?DB%Evq6s4JdM`cu!_`{(y`u&9j#9A#kYHrGt3(9;qL64- z$BF*fMed^d#l8?cK4b;(YfaGA3Ll)HBIHv$>zz{;r%$5ut~y>P`?rCGI_VFy8(M1vt+tS6L)pnTk=F=F`?pG{ZM3(#p+fT&r&y^vMlo3^-IZZk_0m>ZH z_bM%|_vVwU4kBAn)$YWC)|45yNahhe_Bn1m+id>Fr)KKO8?xt{x`h5oZCNAz>>hGo zVZhdS)+Fvb_=gCJP+gS7`2P8o17X~1gdAPP6o8@Xh7=_#Kz(Xq-I4j-#Jn)+DJP*njb(4sUw-v`D4nqRvDi zjt}4{)h?X#FgVRz92=F)Fq~-=Ks6lvHpaFUx4arkdNUN`^QQGF!tD+Lj-$`~mPg8|OGNA=~ z%S3POW_w6o)%qVxW7u{{Mq3-^sV}ChLEY=3+(Vk#55>OGk^v|qP-8S6Pz*$EL*Z?q8z?uN zlX#t92Fkv%FND8o!c~@_2`hNTfc)3>s!lS#*HF1BFZyMt_?>x!wL&oEB$UrkaO6Jz zTzTRIqJ2!>ajp{k)>L(f%lbJVM5}>Gez7}~&mXT|)Pg)x{=(Q#Jnw(= zV7QC|Z!rdEMv_X)qc%S3$c>Gf0!;g6H)Q?aRC_#doQELXyo& zQA3Ew?(bv>s15N4H_^@h0u|0){>+BoMIArzN7hf*dr~u8^CU_92musQek99jhq=}A z#GqWViA|j|Q+#*U2={X;2rvSCw~DjxCA}o1XvR#h-=(=<#y@FtC+Rhxy_m!%PMY^} zps3XGyp%ll(KEolZ7p*Q`xLKs`2($%>ym!YFbV@-!OFQ?Rr~s=;(aWo~7AU^CAJaPySuKrs9czyTw~ zL~h-;a&+&T-j>mnsWh}TZ0H{J_nyh}(8l5V)6s+y+ct$)S(X*hw!*Q;sAY6VhCj%A8t zM;I{M&qwftdSLbk{^_ef@^hqFWvo()mOo>A$|wRnAw0y(yA5LcwS06%XcyJP%w?(- zSJEjr(0JwT%{Y&R#D{2u8+mrFXg7|-`-tVkj|+ZP`e#sdJj^~ln1uOa7IrwDUm(*n z8hqrhB&__zv=Lcdl2=U{n)jIf`D`Wh+8=vMlbFEkHOt_P{=3Z_T$U@cxWpb1 zYT7Qie|GT3T9lZpj>~;`6s35lv9MY}V$IMyS2iBVwO^+-u##$x*)pTNW%BER3Ry?5 z!Pq|c$;N5jv9MJM`)-i-e?Ie2D(2-kj2A4w{GJ@0CpoO25d4O2x)oSc)7%gTU8w4^ zl@r!=pelYQ#HlE`Z83Ul}Qjlu3kcTVXKV5=ZHwjgAiuEeSr zY{phpkoYG^u@!31ih;KTP;4MG=O$$OTtdfVGmoF4a){87X%)Ilf!Wu(B|Jt@t7UF%$1xtZAoFFdeiFRgalm|iU(9wp&EUPI0NW5!h zMU~6HR+E#=ah`rCZyU*!3@Bx*(9U1KkwWyES&_CAOtE|Esd6}DRNNB?CBl9A2|Tav zDP{TLVb#gg7tSc-&3NE%if*Vf#W2mLI~+~o{6La?QLFnlV@+7gUX^#Uw#3l|b{c&2 z6uUa|KatV(cQ{XzuvP8{H5c&_7YUk+(4Dk6o<;oE z`AO#=Brl^%lyKt1L!f-$G zUS=>22ogCW+-aGKwrJID(^3L*t3TyG{t1OZQ4p%5l$d^T9Rd?RV6r2UW4Hvym{vwo z#!jPcPX((4tP4_4@8AR9*=-=O<8}Au81eY2Ve9`|dzfWAC{i?P-1A&?St54@nf9LX zr56h{$xY>9{GW@V+s)m@Cu<(qc zGcw&*bF~QbIs!bmHw^t1;GZMu3^Q~>N0fhAlJ^gb$;WVk>B4RSJvI!Q|Bs74kXK{Mlg3Vy?Ma6(2&@=&-6zhmX4zB!u^#P0Z{=(BI}SYd%CkM@;tXej2yh&3wb{o`KqE$-fU@^zKyxj2r47pOWxAl4v#*lb4o?aGul zahaWlcgoQXwjGlJfai2!_>>I$La4<=f$@3lt`!u#iI2{@Xd+Bs^rj_qezDwdmM zEDJ)dZACuo6VC*RX}(x0I|3Jr&d_H;gM`>F4S%_RnU z$!7OnUgvMi@4z(|5w~jI<2Hu$xRSa8+BZO(vtBZqio1HK8mmokFcg1UB-4E(@(D0` z*q`1WrjL4ku62y!O~WqP=<|W_=uLa=mRL^&do=qzzx_LXJqQw@D6ft5i}x*UOWhx9Tqgz45LOPwXbme_)lOd~oQMRr*mP%S4o~UpIDQtE`zWc`+VHLyoQPwbbC~eQ~mwcr|;fLyL-##xldvny)ww zXpuZ^rYFa()y`3ol`wL$l!>rOL@)u-z94iF-@u|bwHU<;0Cut@yE|CvPh;k2m`VN!qDM-#D-M>3l*lc)~qfg zOP`$|3+BJbM;?GigFKZ1pbBLwas2;M&58_EE3-Q9B#Nzs8k)^-J513t%DG7}(0f&G;j}+gM98kgaC!pG|*e#h;L{Sdej5 zqBGDVobB*!Z^&Kzdv>+|G0pGBDiA`&$k?UW3cp_kb^(4p_@gD{-k`}SP(-cn`N6cr zwIN?4eK6Om@b-X3Ju%{tPqF1h>N$2Z*%+_&iN{Zx{u8D_QEwxKBNUtfQxyPf*vmtm zb0?8_2E(-r+XqSMbVC}SORRDW^I?)Zjf2Np+JgSIP-unrHBr|p)3*1!BRp0Yq;q$b zi1?VexNq&ki+ehsY$;+%x%fR7@k4$9?L+-Wu9%9J!6G@==!tWL+;k3Cq!B&uk7|fD z(Y!wJkb=XoA|6bTl3;UmYa~+{K zsSJvAlp%op&7&IGnFe=ADK|Q^*#^cZN%;!bkc1%#NGT~}cJC?+%Eb^qkR~GKXK(N- zpQ>kjSpMs0>5kWq#_x#Q0tpcw>YRd^>X%kO?p*j zmQxMp2fX0bhbte;VSZI;N08k3&)VdA(9;`a%eU}wT0siF`S)Rk;fG{i?Y!?ji*3BR zUCCweazyOkdXFIF3{XbvWFwWZMVKDSlRN@U{nT{N9>Il;HUf*wIe-!bn~^ZOdBAy1 zz9Ooch>kNEz(@ocGvQ~budxg3f)4oqFcnY03g6Uhq#EbV6Xt|1`!0Xee>2P8AfpUT zBoxQ-b6&ttW-V$3CfPge|ou}+}GrHmHRq)3xDu0x|uJ;nSbP5>9h89Lwt3;>() zHi8z+upk!q$CqG#f9iH=Vm$z#he$e0-lb&Zd%*A;KPk6RM@sfV)&7N+geK3>3pdWlZLw1GlWD8j*K5kZOFLXhq1|MK#FPyUs*Ro~ zpbF|jgr$jmmX5Jm>dih640)NZ6zK~=#oVt7U;KFW;mt*77I~&p7@9eoSD^0eXZ5pp zr8f%gf#$hWYD%W?)_Qm*Qby4t)0LoR;@>jg;n>0Qy)qQfsAWhwfm4|D@7(q0r5T{A zz|Ln;Tw2ZsOGUj4!|*!mB(H^X_7)J=)>`Bz#rsiGIpLDPAVe9-pIkuw2An4I+$XHI zz|?}C3*Vr{%MnYS5XQTK+<^~dN70Rvv?05=&9j*tZtmpKCi!yia3WmMZFLlCl@h-^ zo)J48&fn`rbId6_Em^W0px=xc$=s|QELS=c8C9VEYq3;2&)VRhCI{%Z5ABXE*fQyL zUH{mW^zC_u6o4r@;CrqAr)mJD>d~tfh+s@zQrZh)8B1#5j2~g*7x|3qQ3f^#UD!>R zAOmT5KzJ9GhCq(j^FMEHm|`hsYMqvs5M(TEeA!devyn1ZD`A^68j~X*s6b!-woUhZB9B{VVbLi#=pQOeFML+!&X6@l zO(bayj840);}^U`0A*rkE~25X8tw3J1~#0|b365v#j+U0HW5QRyx@AwBf%#m zLNji<%BqV~46=6`#JuyQD{+;Vy)x1(b9 zjrVhWd?P#>GcQ|ep_Fz(enNtebTSt24dy~=G$mV$p$$ywXY~;>x36k&GV_%We6X@% zp>P{L3`+-_jmy*y9u0jHKPy+4D~6EdyL4A3VK9m-KgM>)YQ4REc98op#3eARJUA;g zWDJK;kWO*Odz{*-3*K6?Gwcf9Hesx!Uc!F`-Co0bWg8mkR(tuKdS#RoHD9tCZeQQ+ z&EYJ37CPjXf<{r#H#%;4-11gi$!}J|=}XI92)>^Si+dh&#@){j7}3_sycB2;=v+%o zY6_wa>}X6iLN}d3mn|r%$=%J;ssR5#0Ki7hZ5C0=4m*RIto*T7pw=+J-|hUs-!@9y z1PwyxhsMOos^G8#l;vL?er!3nM&D0dv%sZll>7oaSJyhRJhiGfEN23y6twAW;-<5S z*epLXRq>;F<2Q{KXQCN?pp_|^<&{~#76XkxVuv}o_cc?@B~kzA)6EO*`B}1?MXRB- zTJ$(M>5vKjSXkU=)2!rAo_EuRXS=7sEvQYjQW!5Czyh}%K@2HSwUH94ciqTCGfebov~?6vO1WBNqPYd6nHud} zy#5}yH1~|}Xjq#XVJW!s0%z68unL5`=rV)DogQT~)klkUA^*4ZZ(nQ$VXN}Ea9m^K zMXkzh*&#(TD9Aa`!_waNM{xQ_s-SD0u;S$~p=;qH`P8QyQ*tfzKsjl5dNq4Pi@eCXve#6?Ea3|5e#sx}~{WV)t|+E|xwyj0I{cUzrB=whQ=@9ec=t z8lJ82Solp1|41lKjYOdDwEm7883JuP?l%mPF6P_CstX8zsQCW|9v>im)^uzvhM38> z^(C~gl+OR$KJ7dE-H#4Do-OFZl4qhgsX;In&R~6-(eZBnJMzE}4i<}JohIcj!t%Kb zKG^gtNc9rI@H||s1{`P%k6H1B>q z)0j}Q-N?|}+V+U363KqDRE|camE-T+oQMQ@e`_izXHhd)Xu6>XA_{bX>)ulVVhiDF zgj)3{_Cqwpzo7l#fx@J0xeNAuKh5RA9HH{SE#bgN$!?}GD*Ci+492UTSzo$ru9cDf-*pd=!8DCR{j^3 z_}mJmjg$%mur6NkJFa>{A$Dk8EGxYdk2_wnpNsubA(>?`-V20Asb-=femR>YN#zp> zmf*4P_kOl`Rx9jv$%PY*XL?NBVVDAMBClS6=nKAjXp3pt=_$bN7B0~>EplmS@_{FK zbMTUa;X+ebsRdxIu6s5GK*60PfN|JPeP}o$rMS}SC1N%0-1*66P*%QY@~{JjYnH6{!@-*m;*nWG z&avwhS^kabbuxgbd7)0?t&MXtwb)5OiFUd8=Ws>fgRSVZL8nU#pU$C*Ixne1TsYgJ zGP*L2Au-qZrSM=wn%cIccj#egyTOGDGh5xX%+Tdfahb$y0}Tr-dQ)|13A576UN}R; zsbX*Gj?oVx8sNH@WGvvUwuw?jMPJgB1BzG1I9e=H<5GoaW%(>KkLukq3pkrxqrU7zZS%qQx3XP$Ve};Sf0{Jr{XD`W!Qp#xA-;9~v5Ua&ZgR!K(xs59n z9E635&IpEP$H&E^#;&a;(>Ai101ueQ$~j@7fH4Jz*lPXAaagY)PTI^@Z4;Q9OkkvA z8j~ryL(FEDQBR4tk8Zy7rdnH^%iK-gP)_AGXHv*>T9}Q~#JFQF3$+n9Az0dt(UrT6 zUbYJDHzZ3Eg5@Jdi-*AH9YMu;T%*0r!u+nNf14A3OvM{;&~CGdPRq=W%cfBhm;d-qwrE*#s~QKGaAT_(MRB?0=54N6XeF^geWgO*luk(*m}Qm~yLo)kjtmdn~8q2sX$CA<*e(NW0Lo zhslZpxn5Q5G}r$q6d}kP$84swf=Y7VkrA^EVgRYk06=Rs@Fnb~nwiQ2}@iy*M{`nJ|X_g=OXYYM7a)b5lb(NC`*((d2r}IOil)X=X zRy4QLgl-J=B;d_WQo9yR;OkkfYUD{pQH7DdDZ{3=(L?LA5jN|peJ5nT^Kz7D-*X#} zUFS~*JF!M@G5gh{imjGP!@E`N;^su=ieKMx-H_!>abRi6Cs^3TLeyXGp=R6fP3Msus1vn>VB|f0 zFjezRUw83;fZW-ibb+qcbJN6hm0-S3C>Q%ZCZMyqY~=P_`y2=^7`AOK&)hXN$upBD zQuD=sZ*Vi+tPG4sD(nlRO|DM+>$9}k07>@p6*>O^UNbHQvaDZ;PNeMQG;-8wS}~0c)eM!d-%t^fv9KJT1iW9t z3V(l5%YO8ga`?ciol+H_s#pi#?-%xr^0j!@We)fC1x_be2uGXA_Mk!@y>uU4($C=R zjcq@s>rsjHSt^YBI3{a$9@K@nZy=5WaoQ}Z~kvpE> z3(!F@5SF88cGZpZKjAwIL&<^Mu&78St_%o6_k6j9$lrHZ@cCA5DGW22B+d4{zW_{P zpPVRgbSzeM2VYy%dVf=xh-L2YIr45tcFR28dDk!}R_<>}m@J%3ya=T$>z{Wp;#+Hc z)_)(qasLU`qdy#wJLoUgVCPLag;WvyxT&Q&`d|=LqwIY@yTuLIe#xZCcI4pW#50oW zn@cc0&li_;P85q2J)t@z8JG`R9bo$PV&QBV<zIlC+Uk4gx-YWgd z7PGtcEvLpaq>TWWTv^Nhm>ObdzGsi~#ys1E_hyYHmnsuNeEEY)1*S3$1p@x8C`lh4 z+bb}Y*~j~Ce6e*q8he$mFYjA9n{RC_+Q$!zVw$Q<8~~u*NFdj)7=M0*&bSiWAC`>m zbTRj0AW zJm=WTY1yYX}<|`Nw+M8rta+$0(Bh+43#+#Y>WZvOds*_NwkFNq!J3e~<%+ z7+Q5%hEM>u(TNkGpPSru zz;P=zNigpLq3tPVigzttto%(8owNU@bnNmGFps z1~S>4ILh+1c5{w>ur4#Dv`cwJszGaLm+_DBe1)8P8!*+eT| zQV=7>-r4{1)=4UX9kg^@zJ1FFq^j2rFvhzNUMGvzWU%?l_16Y;;hgQqdn0=unn^oJ zczsKJ76Z3ED_<( z6aEItN_?Nc%8P6Em zm+K*~_1y?Um(@>y4Vzm#G#&$HIpX3P8N1cQ&_{4Xi~DiUdXLKUW=D1$0*RE8s<*h? z+Y67q81@Ku;9#q|}E z-_cE=lCrb?(K#jO49}8YH&A~kuhBP-uVgpjNNx;qd7oQQoZ2Vg8|`grROat^c9`=O zU3r+~m(rD2GpQ__v63#;5~}T}rfaf<(M7Jr%bJ$EwB$O*O6(2HmKkN)I71%{T43Q` zM!`Wwzodn4j@Nar3OFBF)1T}r9X66w7*WbyZ2wxI%ynglz%f_FZxvljW8aVxBsP+WslYteB>QDQkoi5VjfFn|;; z@nISeHlzX@S=K$tqcTqL>>2gC?uUR#Y0b&?*Vqs9b=lRoP?W?es*VG^zfS_GJ!ozH zN2d>BEWK9s zI?z3oINe)JmqW&bHEh9QT_- zm4UVCggA|5#YJ!nH}!nFsnBH9a%Il758os|;!7qIy9b9WON@N3Z7WD+n_bo%#u)X+ zL-faN52uBY4qSk>J6hl^uBwKIG|`Qd)- zmU2Oq`!(z+y}8H%a)&Je8=2lPCGEtqr7%<9;y?I&BgsR$S${;&r#F{JUOuw8%_wtO(9aR-PjkYm02OiU#MVks9`uN2-_ z38<(wb3H;S+M~c4FTQwLEeJwBPGJlqxJW)|DLr)f3R+FjIHpkz zS5&morpnc%ICy2W*lIQXx|k63{do9)Zl6cXq@k#Z_#Iw!J-SXSzx^)*|B%z=qY0d0 z!FL177DP)qV?QGBnUKlJ=`h#3ctBN&olJJB$hy8U0`FZoX^ul?Bm5)%h5W(vv$TR^ zg~PMQT9UrM)*t>@LBiOkh6RXb5a}At*%7fdq>f8x(fYsU4)o$qc^=4XzH$|G4xeMb zpX;@Zm%$xJpDK;H+(sW&O+@QM`FIgVoNjna(WC+97!{M(K|&y#p~B4dYJSj{C_Z-1 zT}fijg0t7o4K6SGh5vJfZzpyZGvNgK$xNzD}!tc_zTC13svH0P-W&Ryc!Zz3q1Df6+?q>dm{)i9CJd2>|T6uuKVDe@ALxAXhW~sl|L2Ea;ViU=B1P+ zf4^>6B5i>m{`iW#c{E|CG*%85$W?<}+eePeikrB#bFY&#d@wv}cJhG`j-R&IrNgzz z7aq=;-$=kZsYss~CdWSN;Rhl12RPRuNm+1Ki*A*j97PTQNB6GN;V#nusGCq)Q6yfi zqkR$`AF9H|;SY6ERL;8hv3yJrhK_N&@#dlw|NM##P*A1lzI&7MH=dw+vd4+#1X`9W z;VF0!dUH_YG9LlfGM|-7CIbjlx1!xJC`WF8(_nGVVMVs+^YnmUlP7{5~uK$Y^7?z!(# z4f8VT$p8RRFuW^IY3*~PR4}dKTIOppDNOCAb7P;Rh_WD1c$uajx4yQ%0&&0v0@7u6 zit(J%Cs(@1L7aLkKIZ8(YRo)jKp)L#`x*fDNq0IuvZCB4QA_)6$$UoCxtCea_2Nhq z7UP6`F1B4KRK$k}jxlpNK(=f$;k55qvnzlW*Zx;dKmA=kkE&3P!cbA~w2+^K74GP< z@T?Bx!oUD44rymRRPmjNjbW;LC(;Hj*H}vr z-?F{+;b-BI^U%`n5Q$*n$#}?b{J+qg0s;(XXa&tKx{cH5Oz?o5!^~pDX4&>_b#uk; zJ3(pcTl)7G2j`<&QP;O2ku!TE^}=q( zi^*Rl9XuV?N;!q8a-xk>DfLuE#lEUu%VVte^;vYvo(fDT;i?0^f=1ri?+=ax?hEx) za&)@jwaLn|&)pb+J`}Y4mn-Xt+*#$W6XT!&Z$ymuB~0L^_}yO6JPRNPCKcP>>k>w0pl%BIr(;lB3 z6k&Y20P^5=-BZ8-O10>9zc&gRZMi`GP^I!oj~95kjF z`IqIjHcDh@tu`M_AHE0Z+$zLDo=t6h=<|n`MZGygi(yPKPp>yi?(o-JF+l?%S>ZVI z=BHRV1iW&$o!Dat8m76B$L$j+j)X^b6W*nSE;W&;=eT`FFJc?SM+i1D)aVS)>xp zk}x~B!`p03N&{X6J#FKFG85j*tTn_dqu6k40Wq;m2mr z%A&|d2L(f_i!fs)%*4J-Vx4WZ@_lv|rj6XD4%lvDIl%fGz_h43t_)Vs1w&ofCKjj| z4l<-pi`7UTU(h8DbTB)!lJgZYD5oP4Id^PYpX?GM;45fva3QBR!Rs|iSw`rb(1Ho@ z+qSQQy4BEl9i@(UrW&$(FOahk!~?j2r?llOluvN^t56+TX0jNX?g^OqmAppvo6 z*jQ=gkIVs-MeMZDUWVv}>JMxT$;kVhqPe%we(gX^zpFXUVY3~Ot{^6_@75JT#Q7?k zSLvnmfp5}(W!XTABkiS&Z8aWU8kF?PK?$&d{zJu35wq2qs&vV%l{}{ZMH>pA8dTt@#$!C2mND>nCyiOvH6dMztCY&)H8_H&i>&AU}z`NG|d?rnHMhbOD4A zSvk&ci0xv?@!C$#C(ZJmlF1Stc%aW5;AF7S{Iu)npK5$|M<0y~q)cJ=Nn0-ve8Ji4 zmWjT9*5kMVQb57Q>qIRKI`ub>zVbmx&P86OU2| zMqU%SFkNeAON7d@%qPUfFQ<_zM+2$|2>yD>zlSxfk2_j>6c)ji{sI0iS-<#kAGicC ziQ0Wkq@s8sz8wMNnaVI6Cpi!rIE5}JXD!F7)7EiFNnL5C8U!iGBYxzI%HSl+U3fCH z^dD!a7m09>I`byg7}NW8m0WhEB`PZ{4Q|8htBmp<3s{En{T zYK%SjAKKOVgiQl`L8aQekWc14HC-0t`(@2uP}hvk*-_tt-%jU2@9&iE;i!Udz>Q$O zT~6znLzy3J9>8CJg|cqmc`YliZY|xFRvvFpM8K!v?Q-S3r~`$lz{zb=uZK{1s1Ugp zWx=p57^sma;)L;S1aXg&8rDNcS^H&UI1<0zvCM%G{8Ww6P=Di_`mD2lf0YX?G!mbg z);lXdHMIi2#GZ=J49r>cY2`fYM`@I%TGqj^S@j#pO6X+`lQqmtm=Mz}xXzL>RRBZp zgaYS7y)xw!(-9aY{rT|9`^TP{W6?b`{_)Wtyy>?CvKAWJ2*J%fPn`e`mj@N8QlrqH zk)njzIW5euq2?`>?=cEX{XJ_9T|?ZAW>BPCk5jt)ipy|dwo2zFrbGU)gbz-UU;ppd zHA&||+tVhKU4B$OAksMD`3tph}Ym3#1o~@*(g=;wS=Z1Kgr^wXJG>_(cHi|JEz`} z;Pg>$r^Th^Fg|3yx$=Ya2)PlB$H`i|+%RjSb3io#e60R2VVh&=i)oKHL=co&gi{k<9 zxM;;g3n*1~2N7xpRPdY-ClKRuqRY zwY6P6=cvFeg%l_Uj^<`WvFIq@Sa9`#$&1KDn2Q}f&6dUE;^JRGgF<7TysDLu82I5V zI*+*lqVI#nSm~}!X(&iy#Bq8*VOZpp&dj@da)e?b(x$CP>b?VzV3Ibd={blvDhbEw zD>hgh6eQR<@Y2=ce4yUOC_JfGB1D)88YiE>RjBIE36D#dNI24MrAJLyDd))b`htq_c))j3I)1&R~Wwqh`06 zk8ngF_I#%NY1Oc+12bnh^+=9O@~`n(7RDRepgoB!Ko@>omYo3~LJ0fUEAK`xCij0} z5LL;e^_Opf1lldPEsq=(4=ro6Y%@K5+TVf6hKx6iOJ znPaiOcRmtqb~18qY-D)brODXad3}Ei_ET6C*Y}iHy_TjuA{c_Y9B);b!gG-@<2Kp4MtLz=^v;HT`&xb%J?7~&r11=1V`Izs@+9K{oBS<YmETTQ85S+#8H9G0ysVFKTOXc%7#T|8kzBCnujH+jmKW_y+^eZ4>z4E@w+ z!O(V?iV44mNs~_)U>9X-J@WQi{~=6;cjp8SE=h*+CLT0Wrrp*)xgmyyVb*oX4@j?% zqxk@R04r+;4#xe)dVmX-15;*J>@DIAw}K>R652(RZHu5@V&XbnTIzl4`w92rB0(Rp z7vG#KdNH>(HgcN+rK}*6()7GTnYnl0S_V z=ok1}HGwDaVy<`Aa$=NJk{OkO-HPoq5T)rsK0I)vL{t94wO0YyJEV5J=a?jQgk;0{ z4vj(?<&afNL#~ylB})jyaLqx2#$O@S+37_R z)ev3yvh0vdntNi|T}wjh=wj>_@XJwGkOTZsy;<)U6<$cI z@08Hn?>^peQ73w^sF?AZTL5W0_lQCvg@r`oj9e@cwvd({W#XOI+troZXG2`8ZQj0f zMRGpt{B+l6Uuw&j zu^d{q@A2v9ZH53VOpG(34>Igj%k%btGcASe=AQpY(S7+rCejE$XNH>(1&#t=QWLmH zx$oLmm9hRSq+YV0c?Z%4+sIfCZZ8oiG&6L5H1b61u*5|<6W#pmQVi;gPc!r$McoHs zl01wrliY2Tz3=j+9;^1DvAkr#C9wO|G$Y{`6J?TZD#n+|6Piwctwku&wjdQR3rYoN2c?N_A`9brF1(k$t1y}FZDRGEq8}1J zcT@-p+})}bU*F&%FK9Q6=a3+jR%QTclx%=X&Fp-S-PcHx%eUsK$UhK z$dNVRbdovPjHaGeC5(*2erhFU0(dkUDc?L6GVQ9!VjTXd@2bIL$R4Hop6l)MNd*@_ zzz)5{Ql_9MP8TI}Hd_`E0qSJvUtKf5c+F&uL50%Rbg7q%t|ip?d`8nz%}bk?P3`dh z%`KugSLvA@rtpdop8SU(==T(!F2He{_2}by+oQET2lN=tU6wS(Wga`~s?otWC-0$ZtYYJ4yUSirg3s8=+&qEUsUv%*8rxG=jX7Sq5D zp!OohMRo}9KJ{$HajQH0cG)m8afjYI$6eTk^*8p}P8lO_C?moNJz^iayDba})8BJ_ zwhXQaL4%IhbP#cz%$3Q&_OZIeijg!?6DND34k~MBxTJCPS7y;i!Lh*{m0SD`9-~r? zlzCDk*gWDN3IQh>p=oRa09BTAo};@0rWQBV2K+RVJ4M;+TuCs38~G2>$)x)e`qH<$ z+uRi8)VGmpnOHXqcQ9#eeLR zBapwC=;8gpnJrSkO%i7e3SFa#BN!AQNSWL?5Gb|co_{ET04`pg4}Jh( zNUF{XcM)J1M^P*zNe#8di3@}vgDu^}y*$YP{G-a&|J%{{`p^4bT zvDSSi&`sdXxFh5WyB~2AwEX6{rjbznm45H|awkgaEx;Mu8OYN#M=0kOa0fm-hPZvK z__es2nQ9WlFbp$GBjR@ZJu?YnWi_YU3_LbJ-t@KDgSfH-T(O0=U+;DHX^%jkBYec` z?+}ax{79V6#~FmZ_PQkxq1Irw+zpqO--A=gPp_JYW(L$SJC@i{QHJAkk|^S4N;8RC z-{!=;Sj2@F-pf{TFp5J!h@rZOnEq3ZoT+R^=KuHX6g3@m+Ml*n1uw3N@)*C_58oiF zsJkjlf;OQx6uSd=k^Fw=OuBXV@0=ZJ<3TZFe*IObbi}tqcQf02KhKl#cul|)-S7NF zCw3Xj$V;oNRe@B)e|!mmF%DG9YTjJ1wbNEa`Yf(yb<{0DJhH0uM21NhLMhF5qf&n4 ziclq%GdW2eQ(_zYGB_=50M}m=dCCD}>MGZej?%;d?LKC-h)5CAWNF5$e6@7c_4^>` zJ5K-}`!~BKIL;3rTor8TNM8Rt*Hb?^jO`@H$_xsrbpS<{CtmW%_53u6EY%U)-=NRz zXbWFR5Vqzd$tXbr#&{{&DC9;YRwO7vOE=%XH1cmk(t|yW)Zm@9`R6*CxEiQzi!D0b zv>}jsn}nu{<=;1D2lc7>5r!g-Nbw<&`rocKGFJ z0j!Yll_U?mqE@jTD0X00CPcOzYeQ%4xOxjGD@8I*$0uRzC=autE1&DIJYe_?;>)tr zpyFzgb~bF7?|h}+*Olut0fhE%mXNK_;SI#Lz;#0Oq6yZ=!~xnE*L+Apa=m>=bP(x0 zvZB;KCJnx^NuByCthFz_zF=k+t!FGEw{&GKpg}M;sVFq*8?_vilfLZwFFoGxEdM$4-J=-3$+t zk1eQ+5G<`S(e?A)LZz;yZ zyI#Es;@ICg7#2RPUyiN&sFm3g#L`YKtxA<>_kxIS{#aLRMox0Jw8Nsh2qv=*w!@P6 zBwf6ndLBptQ$+JpCIheva=ZjLUEOvAn`*5;MB#fFdX?j^&X zCcQSRFHt8p)~+;0eELwA_x-1}o_gb3o>T%^{VUn2QvF6(+vSWo#EB-|bdMjW&RVV^ zpHy<()Nn34Njvb>ECYsHJOWG3`m!sCJB$m&T+zm*7^Z_1y>74_Tqgu!7SL>K-IilX zgTlZnH@bBqI6m}w|8c{^NV3ewGU%$#$a!}1n zf@p?@88pCv(mcvfYCgX2E!u+i{L$2I^O^Em?9gS$rcXccRp2Wzq$9Nml`Rdk+xNJ* zn24NJj>Yt#@5!sp^=QT}$NX5lyhQ@yVdDyCrexTvT*k;@^{7BV8&+Vqjg%TpK}~bj zAyuH07&bDEP zNY>ANaW7F;1*cNAn`S{A=IDT1U*;)5RI{a9m6ZHv5V?7&mXz2jvLJCHupkgP9|sg5)4Q+19#Uaq4G2fDD1EleRE9!frafh=+BzZ3v>Avf<3 z(>$R(J{&qs^XvXg946KR=9!{GuG!HwRSR)0>?tM>MBP(f)fBZD7C-!+4*uM>nNvFt~p{yAaHfYEkBIyr8h0Dx4x=iAy5i1>ts`D6Cp>o`xR z4&yE(Ef0-Nw*q*aPZcy&B2cOUFX=w5tHg~FhmsyIdSDN8fy$-FkHN;gTWd6a;g!ig z{r(XQjXFguLxA`%p=t7H*mGc!{uz@Gdmi5X?)-6}_XLO*y;Utk0JM;%ThyY2%Se~m zV}+jZEDY?~n0g?4zk;2Mmo6dKQ%W~s+w7bUxO90mJ8~=`o-GlVf8G?a_6!#ki!eBu zWliuNeNb%YFDT@Wrg-lF5L-**ci_?A_dNcaAKsO$Hk-*aMH^1k?W{@$UsYnFkK6Vr zb_Qia7h|@Av2t3MTt3$PnmjE1;L$ipNSDqUsEs&Yw$npoM2%3ZPaTt1u1V9cw9&&&0$ao~9pr%> zge@hEwWxOTca4X4j3(6{bN#J)1NouN>sKMGK{sNOng({$9pnao5bBw_8ca?!!gO+O zda`j(rdBpRS{j<0u@gN8h6Ud!#W#tP!zJNew}nmF2HrrtpHn`vy}3yOUimIa&D~yr z0}W|w_>{KTA|cg2S?6r}g)3qJk=4cu5w;O{U^llLw%QWZU)c@Ox@h zDQS!J`N7WC?8_+kZT15`gr}2 zmQ6@-LyFMu`WNRxd)t~iGwHfNS8ClXc%+6~cVcM-Y8g-a=@w<^QLaQA&epH|i{7Cw zRVRgcnuhy+I#dDUb4$XJs=0-$!K!`j$cvSG&%G=YJ%Vhg)T?xk!Q!1og;N=iFsEz- zT8ab18MJtnAzNeP6g>VT*@%$r`sCX}U~}D|XrJeTNP^Z_200Rb*p>{CfN#*Ngoq$aIdZKPsu}Iop30xL>^MFCB3%JZEh{*sI+s;BwUK zHfctfW=NsB<8QZ`WIL6dn~*Yo4U_LV2cL9T-asTZ{7*uYp3)LEK)r&)mBwGjE`oC< zVQAOMu9zxhz#?QmRUrrG-5d|tk^K~|2PuHnDNMLv!LZ}cBm|;jUZ;&kd337x!Yi=x zREyEZ)Ck870y8z&TENR||FvRO#qbqsTyos8We-}98T@e4%rlY-7t80+qV@P# zOYElce-VmeYNtC!Y_yfx(OOE&SboG;9(%%qDSemvSi!Zj_E=AQMN!b37svXwN$aba zHn8~&kc?G8W*zgCGqGkMOqqgZQoY*y3j&6L-83(@^VZ=4@MsHOE=*T#u*#@8fJM&M zB4xKiCE_JLCtSwIPG0%>a?2NUKV(@TBNMLm!;^bQ^@s;-X7Q{b(`IPLM!gK)-p&G- zm0qF(Iv)j&E2g;soR%cxq1DA2q`P`Vnqqpc950RQLm*{Asw@FnRz+*)X`$@-JotT$ zo$TBhO&XLz`OJknKeV*A3FZDcJ zV92R-&X@np2}{l|IZgW9F3+kCnZ7hlhRlk76N(?_X`&m8u!^K!L=Ml|2|&doa>5Z2S_={O?#J)PmLdTJ%97eecn)*@sMuiHg;OR*)HBB;qJ$iwN}K7Fi?d z28g6>8!R3h6l@F8Z8S&l^Gm#@CUQmv>IoVS@H&GCY+`9dhS8y39giJDO%)0K|o7o88k zs(V>WPpGD@))NG-3+ zMXH}I>M3A~cU@>!0S4jh?4kcqTB6Mma0wuy5QR@zo#E z+P=X`;E@#OL>%NQ2OgP9{TF`$uhKl2@Lwc_{gpr=uk+SFagwHBh0`t2LM<~$z>2ET zb$y13FuG_se1wTPx4Xfy?@6WK6lpE$m#hv>gYJ(J20S&^N$QNhVu1i_>jI7|CL5*Y zeP1C7j2KquO~9(*My23&?<#C;g9yYfaOdaod4%nwJ&H-F2WYfP%I!5kFs#oK4+AGm z4jm%nF(vZJpVJ4G(Y%_Blt4=WNW)%P8JGyVc>iEZa+nc=g`QGJ)VGZem686-ir8cj?wk=VBU(`{=;Ze}BR1q-bsYc-5RSc> zImlb-Mx-L$QfAfV6PGNFKLDhiPXo__a!2`oT7^( z=Gwn-mnK$;EX64jZc0Xhut*2GC$M<=P@}rFzq7I(u#QHGwJ4j7&nXQGU)bG}Aiq<= z-Kxy%52rDSv_m+Q{icn+MnTtuTI21@Sd6WbhAie5586k(S%;7hU|tZBXgVw^`h1mp z7;=h<9X32eG%zo>Qpbvc_DC{pe9zjN`#+n-XsKQAR>F&fkP4B?ZE47I+BN= zSpay<{0h4T1LZhu^t}pFRCQ`au#)Lxns$XASzU3`RYt}Dj81&Jc$D_mFHJrBM%5JJ ze7}&ADL1YRd0xLm;#O>OSyav>vqEj~c0)yhJ&8(8{m4Y8JL)Y5zmkYOMAGl)5EZ?J zSv712%K;m+*a%l_%380K1Rm(+*ss=)?sc8F9*+5j=}Vpr2*u z_nc}^XDNoX?{6v_3!DVsoQKDEajf|Y93xv=3zMzY$&OkV#>INM@7PfcD2wtTiCC+p zO2>gG)4L|SW<2;ay_Q#ku>A2yH%ADn|8~sMjG9=bw^F!_d_4grboHw;BDe;~{JAbI z$=QXi?`5gUeJ@)ZwyN(6X5 zGx+Sxw$HdzSqKsLy%z^z{eS5?#1Swe*sGix)XHB1wseF#kKK8?i4)PNmII(*-&0g~ zN>AG@p2VH?ExI5F7iY)@uRxc@!`dDeDV?Ny(AraE>lKPQLLhB@tGQdMa5!c^JE-6e z1BPs~N9=`GX=hKY$Nw4TOH1xU2H}+T;r2E&-;%73T|Mf|(bL~*bSo6zlo13{8eP@+ z9@#}~ty_Bya_TrwM}d7VJvPD&cs*1^8>lMdUFw;}jNc>u0GgFQmxPhk(e$kJ2nEn= zN90;yMoT}1Yp`;=4;LpLX`N|wSEo&Zj@kWX;OYnH_Se#;*7DJSRQL0~k+yrJQj^mq zZoHRf%O+HH?S#-CuuYU(GBPsfLXqQwTELR3bv(DlJ0<;QkQe!v-tDgn5<(9u;R~?6 z93jv#*fP;aX0qV(T0+b%V1E;uIeO9+-&a-&}JKZqi z&D#~mAJPVThi0)>hax|(#-{t4~R#kVGj%3pbxH;BxbXEzr;2M@2HrASmdT?EQd>Vb7=ItM`saH zAgq)FXzis-yY-S8DCqn`cQ)}sg}$0^kjha6T9qZa_;E? zCBgvQ@xtD=Bo^sW3cd}xw}snQc4UYEfmTW&SIp-k+?W6a%)hTpqA}g`k1sX&_pOhi z58LpUNprA)YDP!suyEtc_#Rm4p(-EM7n4#|DsS0RcaxPX>aHcpCn_rgm0~(@8^`B) z&mmTIY4xx-=`Ew^Br+R$38i&c z)|)7rB%ak*Vf_NIQ-8Tn63gTHFMzf(YuPxDVkTo37Mh-glsL~J_VXu<;9Uv9BMcdb z8s)E#MbHMbI7@anznKOd4D;GLZ(CG6c?&>(K;*Zm+IlJ46Kbb|6GD5-q32blUtf!fj;MgP}4Mhh<1DIzo@lWCDF51&8TF{O~!bTMzp&9uf_2n1fQ7i z+>u05fU1P>`akL?hF9r{=i-k6n=F^dVsE9@{vf1^*@~2*UJLI9H-u~`|El~(*06K* z8pgnH$4bve#`ZwX;Dco5MI*0(;)dtvjRCxBuL_0dQJ1$gC09B#w34nW&JPXe+o9BOpI#Z7xL*1bPmPxxJ&;hAC;&<5b*BT1XYbzo>U~ku0 zTJm@HIK8!3@(K7t_ah?8tT{_WQ)vx>dnX1TzLc3mCmbl{_XD^GLJ-PJyB%&G!b^@pa|b@E#vqQn=25w>&~ z8}A^0Ht89DOwsxZ8!?8+wVP1qTbGgE^fR_9^(uQoN>LM=8jp{3~J{@b&=f! z8M&Vg@$2q7-5hjhXu^SHQ1T})&s+7|9NM3omD<(lzNbw{+o-YN+ph_ zU(RQ&AH7$|y8p%dy&~WkV2ur5!pqo=`?@|jTuJ@Lo@-5CEcZXSz5QUubK$sf_i!dF zy^_r#dl> zK)SebeqC8E-N0vq1Xw6uwa#p*<{nJu3NsR%`=x;EI+H2e1M>R#f7n9S~SLbV2d=`YiK+I6SJ=7bZ> zvwGM`S{p(^RbfK(gG;G?Q8q7#Xo9>K8H0Ikgnt#={|%Lh96y)Af!Kx|Uf?2CO8Ctu^k|BO8M z%y4A$y>pR3kATb6__Q~&466dnG`ojjcg`vt?bH_tDk=$7?ySxLyw|M5O=`%3ZO~ra zJw2J?4PpMWCk{)bTkwURA2^-HI7Y9bP2j+yKf7U$4$T|)di6>{*5?C|C+yX7KMXqAt#bA&D9ADOFgz4C<$jnP-L z$%bwy0sWR42n%39QzcExQInAf$S@J$hdTnh#3$-_1vH@Typvt^VkL{mE9HczA1y-3 zgO^G&%=~U_Ak)n)@|(bM3T18xpcTO$Bm<(V>b&w7w-WpS@A(09mQuQfr8<%agm*k* zcZ%55BY-mMdrZ5vl)bF?$5gxMy2krP!zg$LtdXy`Tvc z9(v^F?ZNw_+9}olGca;jzW~B5w@JU$tPr*__bETEU^xxZDRSHxG=({co65J&75SX>8_g>z+#2DU z>Y0v&0b^wv6nEbPYp!Up+f7^H)vLdRkjCT1^p#gt!^h=9AMy4JKE8s_i(&^e%s8X# zpsqJ}a?C>Rs!3Yk&6^pa128-}^wXScxLFoNA#bN|MfP#Q#y?wM4$1&Dm}F*AG_~T2 z>0=qEkpz_VuJT5Vt*I#4e+w3?A{w7(DG$Q)h-KPU-%K*my$V*RkxfFyxAPj7CMP&B zp3sA@rO+FFUARDd@f@hOBupGwwn8)^2%14H?< zEr}hOAfnuadVT=`BdGHd;Aj_hZ-rG&@Oc4?aV8hGDpuDjO5NPYwlWSwXi|x@fEygC zKcK`aU1g?DKmqu10SD?q$lxPV)s`>%tVqw%9!ygFPfWP`Vv$DH4?%FnK^73($OuH= z)p6vp=1q*b@Oe**_ilzPhe^c0P@E#1@CkyWl)G>I6imy-sL^FO%B|+_g+CLdS#^Y1 z>!TN9f+n9WMU3z>ymYL7?;iFX>DL-iSh8_D zyI9w^FXW(q@?(Ts!q4XWK+!n6b$Dh6d&v-{bZZegO+9MgMWT_J$!XnGHjxEUayI!Tw+Y zC7iV4q3mL_x{$)U!~U{p$2_HPs{;C&c;sN|)XM%%$dw=S7HTgl1Wq{P zR)O%^UqQ!q$(2L|VeI#zq-Poqg@fvW6Z0Du#B~Csj~iibm3VNjXU2t9N40$5x`>_( z1FwILa-Xmv=8Dw~Os+i^mh#pWi>z8#EgN7IrhL!8c+pp3zyQl~dxhB_aF0qDHp$C) zLHdf%@4CGBUZp&pXpbvJ&zdaP`pf~wCQ;owDo;~{k|nkA?f;($jf_q@fJ5QG)ngECFte1_oxa+HxWUKJ zV@2B3>vtv9F~u`%(GdFm20@yJ?&4LtYd+O}yD6l|1;b6}V1Hcl&B{ZWHgmPX9q!ov)`KdGy!bGMErsxMx+CD zIj|l!>(-sj(8s1$9#+rrD{PEeZ|umk@%+k@s_|xSSvVu$B}&Rg5-s*x(89Za^Gv!D zmY%y}pQL83B3_!*1ZZ>HMfNd16JjfodCrLUz@?9($Bz;|pAz74;|cBIq~5|CL*iFF zT5Pi>(>3NaV$Nbo!>)q%Dx{*ww#bFW%x~(i(2Qj{b9>}>1G2fv1qmZ2(RJhfimy0@ zjaebvMQ1qNNz7R%wVgCoPa*4 zF<3&YWY9*2(bcA( zdI1FU8hgmN#N2k6D1mPPrFw&gvtILX3^1$C-6Cz&40{J*Ibhzs8cu!LLzr&&TJO78 z`<_(5HRo74=b-OF`3zp{d%rYt8scIOU+jT!4_tVXu0YUzs0x|lb!Yr*BL%S~0%#>F zKFsWiHfwG`irH%*xI6kB_P z2Nlc?K?TJD&!~f&>P`ls$&Wnl$*)zD0Y=8%9J`2n)t5!Z@$ZymF8Xu2`Rb}9K2xNh zR{Uu(5E}g@tai3|SF#+_sm^vHsF#u$U5YyG zV(pICfte4aeAaTM9+UCp6NICXHlR>KEQ8JLRr_*t>QYr3L3y-ME$ydbWYkw%XAwNo7BbvftA_3k z1mdF|(*M9{>_wZ%pJX^?x+8rWdIp_3F5&|eG6)~*jJgQdZx%V6L{iEWhgELzdn%6%oqq*R zAsmKC0J@H|szgcKdIq|qP5SPNMk`E{lebG6X`6V75{*0_&k*6ia2|`GVO^vAS}iIl z1*Q*Eu!^*)%f0%pvfp8*jA@H8+d86ADu(h=nzHBJnn`#hDaWQgirNLVUnHYaJdsr?9&a{hZuA0$m@x(X)ivcZK-1w(OAH28BZg+W1_a2u6LQ zufC+34kjU8Mah9@$YQdyAFHNA!Zw1S575CR!>B)5^&PDeQ^Bk1JZ-wPQo6SFk*9Tf ztAw-2nXF0)gv}d;_*V)w?(jn9;22IFJ;_Wb^=p+m|K0L=BS*dYKLh`#uHD1-yBG@3 ztK<*MO(RZUizr)5l+q)=%Ah&HK5MMXqCDm{z==u03pP(AVb1pe))Km2v4TXXu!<(n zA&JjFJ)q14UgC*m!@^9vQxWh@_>aN4DBf9EzLNKr#7i;KLQT6X-a3P5OL#+kkTL!z zMPz`>Y{PKZX|GW9jeKMayiFoX9zU{}8`;nW;nQ?n3k_wCuC2vyM&hYg#JFfzBG>xQ zF{T<{7vNV^fTV}J6lWvw#~0r;`L7`PoCF-=FucaG2WkAAWrw+c;}z6iN`lwSw%Ng3 z0X2E09rADe#aflBb?*tg`o~(zwTWFyr2Z|u2fZK)% z6AEPdW|A zlDf*atEaN+jG7+9Zw?VXFfN_=)__wEMUnrz=oLY^9Y+8(gWOuiQo?D|Q&tIRQ~5M1 z5h7+A5*?iW#N#L2E{pyjT_bo0`qPJqLi{8z>wWoO+{U;%@poq!Ja|*c%to%dR*GlT z`?Q;mhjZW?z7lQgw6>%|%IqYuabd-7F8jugt#n|;U}1ONN*4)^ytbWLoh zmTZX%0kcYNXAyZCYS;CncD6_oU~Jx4@D}Y7EqUCyoG?4$rWo3?rB26Nbma!Q3b4f4 zFd^g@HWUB(?XqiLhsSr7PK#4~Zh4+Qs!XE@L&uMfteSmH!LLt>jT zw;JFzp^Cvh$Ppn`XttMSws{H2{pG5D*nAzr8f4V!l&kC&EK%{VxDTgyX)ajX92DsM zjSu&0`eba8U0k0kr990*1uJ9dfIuP)Hfo%@XtflWy2x*^_+2?leRVE4`^g&vjn8^J z02w{udB})K9?GW)w)?l6X6$y2LKw%PSM5x)@YRNB+kHGk>M=&KQmTRx z>HlUngAXfvXZc&^(LZD32p`NBbLe<7bY3I3J}1Br7E5S?j}1pWb)s^E{O%3XBQcf? znL&2{1aa`0t1)0VL-;tu_XU}-C_H`xdbu_OGB1eTO0Bh=q7coGM~C>hYBnXA+tXb- zLu@$hIMhA%+(7apU$$aLB}8{PID-t(L#w)hhDPbJC^WdyU4CG>-4Jm`HaO51795~* zGcLs%Q?so!As<>`7`#0#z~8+PJ*8ukE!xb{5t`8*GA>P5>YZqLEcYp>S>BrvU||P# zhHSTS5#bSv#-#gAcm>|@NX$FFCSUU{7Xfv)Z69CRNy!I&R*zB<4jT4SSaCLTDp8lx zITZHihj$|4TY;D~&-k96A(3d?5BU&BI?(Qf6)sP%mwt+5Hipf_zY(RHe5{*L4jfXn zQ0;ava|#WgFRwh>%G^IS2U+G|SN&7WI9<@kGFDw3g6~TtfbhG5zrrC+C!Cf6{tR~ z=EG)BK+HFV$r3=ZV|R)U6vukkQm5jkh=!%?;}0HA&(VOx6Uo6+YFwZ!9ia=9r`(<1 z`UX{GwSI}wac06TJO%cY0k0YZaK3iXm)9y}2x=>QI!B&wc7-f<2<(x|`XiWG^X#xs zwX4mT0Ueb*Y?qfgYg));X76m>k@Jh`)GM)2fF9$fpy8l#z-d|kml2~6^s>MAi*n*y zB1K=QDw}`ZfI!#HnO3M8mg4O&6I$>!muFYgjWHG}^AVSel8`)dG0b*>-YflLam~D>38-Avp|H!z ztqYum&Kz{asH+zJY)nMkpPJ#uZmdyzhI)uYD2?)-ZHd>E(iZS%M?O77Ye`qrXx!SN z6fE5v%Jh9b-l5?NI)tK~wx+2OL1*rmkWt#X)}Q&98Ls@-1s*k+7uw4P#is-MY?9AE zq=eDuU=N6|KVVR36VF#W-3kl54gbh(qO>NFJ7oa3P&Fs5zZ2q#rW~7Ql6+Z>j zZDY!#@PfL{JH~wJq9tDnKP6Vx;Ag*D`)Ppp%;`p$ax9?7t84Q+hE6)fqT~TVC+^&*@aV_S6oI^aQja$n$C#Bl*R_{?r0)Ptw zwaf)3#&=y)AN_)mYQXe4*6>D6XUH!Cq@^-3&ytBrra{K1fTe?p{{ z%=tGDtPLT14EJZz&$^pF&1VDzW8mbLj_KVJe7P$N&v$GUPWNYhsmjo)q37tECxlU4 zCg{^EDRIwuz$KuF7~tktNMBd~K1|0sOD9@nFgC-rS+jOdxFLHPHfSZaWp|GzBCRY> zxb!N)V%)wUppN#5?b&l@5BLW5Rs&@+eR=-b4@sx%E~qbiDi$yr72qk0Rxdcn_F43* z%C)#SH-7Xacr3g(T?d=Ftp*q)-UriS(1}baTOx=s4M8v-bPppwz5P`^BHH{lNPZ)D zxN2_pna_CLFksuKR2+IlbXr? zQ~MkExOjSII&1nvHNO$~PnIhq01E-UP-4{$9FK$wR!<+3ffTpaUZ#;M4!qXv7N*ZJ zua#2--WuTQYG_^_o10nFD1SW{Hf_O6dJe2vm9VklyGm+?&JqSJR2a$8>SxlDaCNev24tK|{};Y9MH~{`g4$8;_IH zUa6%F>2Hqj0DvyAz7Is)x~91dw75H_)=x{(Cxv**6N6ag^^V26(Hf_i(IuP~*fSi} zYVxk6P^jDWmOLlu)X=BP>9^lO;neK$PaIy3y}2#g$|j&d45ema=A2A`31Yj1Jjz4` zm7gNY<|%#dkESF((ru3thAwU3t4!a$82JMTL$&xt?!KvCP(fVE9)|@EQS{%*J+z(- z0%Vh!Z$@Rz`w9shPb=RH3{PXAwZo}K_NtG0r$Pvi%iQWc9n*~WFam0jO@|oVpU*BX z-BtK4QNden!5GEgrVWai3xs{YJIfEF336*~Ny*e=@2zc8MH}f24QjsKrZ8n|8$>M<=UN`?G^B?7)>?;L3X*uR^;SF2QWTb@sqr!&rb7~RVeGf=Bqd>B*(*gry z0}aH6ued`(6DNaQgl@-Mir0KZ&ks%y;+Zcd{UO;tY9!2G!+TP?y(3JW(GRZ@wTf1% zxAq$et7>K&w}{G`M4jZdAdrnViK@)zgmdTHgqO=DqjcevplgJ{`>fw$FhM^gwKlbW zPBr$K0&iNV!b};soSe`eeEB1MjG&*6*1yMU$3CPAvM15u&NDY^*TNlK+{QD;Lj~J) zEzj_D<^|3@D3XS9OGix`oN#KZywMB4JI?O!TTh+h=PWa#76>FajGFEJjgB|NPkDD; z$wBd~`WmSlk)2RczRHJlKx>=@`o#1g7==WZrh z_hLrHx*pfBGU^TIpRnW49yIBPhR9;LB!wh3ES`!Yb!JP3F!6VtX@3bHWShgndRa{Z z=-S%Yg8zKcq**YTTiYI(?m-s#(&5g)Rv9?_v;=e9aTJlhWA{{9lTBxasss+M%WCN~ zXMB(Nb|-@bN*ka4J7!prVQz?|v(h}28ptE>0Auy`Hfm=am0@L)_ZD%fEk}f= zR#O9$nTI_nj9Ne2A>;D zb`3p{%s! zS*bvGBmfbb%&ciBiZ9iHtmj(?I{=)-z!m;h9Pp9yu!mX6M+h~Q!FgIiZY{J99x0j0 zB9GlxwM?Sck)2D7RqZ5H1SwC?dFTCZJ_K@DZS4#Jmi@Vg#%ui+a0=5KM4FmqANC&E zXMmWHE-1t|HHhYp2w`Ei8R$F6nitDbWOK?`VwQ+zMAt5elu(r1*-M2)Wj-a98@&Tm zV|}_nPT8|#t1?C~yf2tdo9C(b#5RE==ZssYPHmVcaSG+_anP*;Ct*e|n-Vfa;2C-Y zMB39H;7yZid|cQLCz7liOX8>&2Hx8dz63Rjc2IE$E6zVH;!rx-SgSbPT8Sde^ zP%X1BuKEnJRmD0XFqu~C@+W%%>>;;hKI>#dSb6(K7FN{t=!6Q@f*5CPlYty^hK8d! zSb=eDzbe!0(|tmO;I^ZhYSDsNmREG?f0h1|HSyo$bJ7dFSvs7YkQbp2dS}u`RQi9Q z?)3*R%Z)jaXMv%{TB88bLvQynKeSVC#xVV4ZoEC=Y)F zs;q&3#zN(0l=-^8H;PpnKgJ;wB;KpLd@ir=#=H@UAcVmut>>oDm3F5;!Z=$7#FB3k zmkIHcNxEC;pYRbLGVXM+W8nltZ8csHIiLoKYp8wFhrAMXe<4z{PT1DT$($4sk=>E4 z&dshWukGl^k!^_w%RlEE(SwCs`gRF34AkRmh~(5H+77({o#GrH)N=nKTa6$e6L3*1!D9iXnGq-!Ahw3w^e?2Dxgd@ z^o&a(aaDe02wr#K;Vi9Hye!nbkc=;x9v?7J7(?qKD?ft=;JS2g^Fv z{cJ1sWtn&OgVH20qh0A+n7MoGSF>X#0*b_#<=t`HL@~jY^QhBVD!>l&lE)^scVo<2 z3h5f~oq@)nRk?82#n2b;0&+ie5w$zMQasHP0Wb=8M$T~tLCSd<)NG@PX31teiC3Nvtg6yrL)v6LDq)$3`k=h|DsfJKP1R98`yS+d*3bCDA9cC=a|5>8J znUF7===?_C-uFau>RaXeEhq3)9fymQ=g`Vs1z3J3B5qX=Rbkj|t}h{l5^XXD5vC;! zEnBy{I%h$=Vjl!e=63}pqp{Gb@X?+(K;De#$_ILASGDEMS%~PK!OszR?JJ;8V6$iyI4igh+MtCRbK+unBG)7R1}K*aUz>dB`&t3aJVZBgA9 zNI}ClAav!DXCFkA&yV1xf*=cSWiN1@MJZAW-OAh*6)@ zpXf``k5Q~I?lcG<;nmDdEz(Cvx*f(7j$jOtf(K&PElj;?%WXPBU5w=rPGH^O)UImS ztj!uDh(CU>FhG7Pd|2$1p&z)F9loeGBuN=-@O{x&AQ&N7{dg1$1zx6g6(lPzO{%ei};m`j+Mkl61L*O#B6IKNEXkh$r!*>^jZ(K-vCJF)8c>5Syz#&9Jt z5gA!!+sFu>LJvXF2zpW|%i2j*OrEUUcN;*83tBOKwj+TtSd?Y=RJ663gT6mYyjY?O4=F6k^98L41w z+5onBlwwNF=Sj5ZbBfsC^}gsH$lew+=t8?Qa_hC$`s8bQ0odWl@O zbMSv!`3&e=MGB(Km*>d#xi***)t{Iv5cO#JG}B)rJbNVGoUHQ6{{_{aEcOJkt0f4J z^`IVoI=@8qZo?RpE66^C-n3G4s1e++TUlEP79P^y0t4N0Yv?huTf@E|WMT`C7628^ zL0j_pg?1S9!pb2MgS6hW!WVoi$=#N&=_&^YBg#D9r9>pF(8v%rxzcN^oL1|fbz69m zLeuagbG5RAHuv@uS6VewyBuBeI0BlJtM^-k&n7 z+HBo9StV`E!JBlo_F^H*Xc;V$`TL+) z309xEed>Oxy%{yvjn%-QLh1swH}SS6ExR4aw>z`66fwhm1nEYRD*1z-N7oqgT37`7 zM*&1>^mPNrz_lui&M?l?crmeH7{}qIaod5WI54DkFh;sqxL(tw-)+N=gaFrZ^&9+|MBx?VU2=*Kv#CElyoW0@Z)E~`Utp~Bs-=Rv zvhflak~Ay8f6>saU06W>`@w5S3jj4s-6@Tm2Gc-JusXQ$G5`i*9X|Uu?F$KoJa=w( z)L698l70m4&3o*&Q2om7<=;}Rp{}sYSW#rGXcprHY@fwd9~5{_$#z4{K8MEk?pfCV zc#fc>ee?74*EVUU(LoV;BVts6l+Nsq0f_3Yqa{)fp!38+)D&bhTs95Rh~QDj%>i$! z`G!cwOGufGEl~*?U)|=*y>!`K@MiiD6xZ(J8$70(7AKBCyCoj8I*gHl=^W10A zb#3lyCeeq?h%9#UZr}WtK?$suQ=Q0gLeJ_v6(_IbZ*>5_68@cKq~^_y^9w6plo-bx zh!+wL+g!hKA86S`2IRwdd13J5@o$w6>K>S7JD)D$K&dV|U%(}wO6Vhoj7=<v(J-_vW}Be|GOmzj!S!=o#%|FctlEY4FrHI zZTq4ObZQ~{DDl%<9ng@N;9Pd=R#{M;!Oz~=(M+clZ}1AXH`kSV#OHOT}zXRNO( z>U`@-8IssTZ9~={f1Ntf?K^GIUx@2h1=&q#m6~`Yd%V-uK0juBTk$_%;37WcYAhTp zDFQuZ(ay27!+cBU-^b|VRX#^~%bCkGERGb!pF?f4%W?{HL-I`h54K9Xy>V*)>PKi} zVbb&dtuTN>ugVCx)7sg%=+HnVS>a1ca=4xn#N>(wfg5YZKQg(o3Sun$H^D*rmt~Hm z0#3`QI73>*mAfurdXLvSdHD@(VuzwK3V(Yaeelar@~K03F6|b{Ya@PO=>KMuBtAcx zsIG`{QQu*b_E`|NB46?OSmLC4*$%N#v&VDVdfNf_Gm(T&m5g;5#lR{6=NpB!N$2AD zV~>QzBA(Xpx02eH#?-L!sRxN%>3o(v_O5ZlI{ZmGBka?znaBz(-kcCoc+%2#pIWD? zF$#qE2WDe|TnxLhtej#rT!B~IBJ`++%Hf~-E(KH95@wQeUWc<)dLP)q45P|nO8y2n zj6K#VfoX|_|MuGfTpsR9xg6Vr&*=5JfiuL$v;hpaeqn>Ybh-NZMVOB;8rX%77RaPn z*8p8v6B~h+f%raE1219@^H;@g*RX8LUdj?V&nDbucmffbl)S5GUElQw2?~nk;9#=; zk$aga`s)JACaZeX@5od04b!F!d<`0{|0VNuxKBqRgF)BNYXDaCigFh z9e((!(IVu6Lfz`dnG^}8+Da3#i5kCSV?-uPdCiADsm?a` z`(Zy(1UZ7C%7gZTpLWP1q#NH!%QQwUECPzIVy*D!n=ra1LV!w6%<0>Tc`mwv>O%-c z@2C#yvpM64oc?uZjLjqRvl~>Q%9`KZTgJ{G zWO~L8uAiT+3Y2POYQ$egx^+&Ec9X%VLl$QA>>=Pxh=!SB*|A*S0qw?*Flp}yyGVk> zq9_v6lL1ZN5K5PXQFm|qHr7Gc)Ta!inBpSbxiiH{`o!+dBUKWp2;Vi_LD9>G1Au>T zv9w!2pkT|5)eO|7{4v75LA7K=I;?V!;QL}K3T=rv*87S}RJUPLx?g5^<;>LLmGe+? zF&$tA+QiO1hPq3d=Sy*B0?(H7sM5c|AosjHN`wRcnYP!03mGGj$m6UG+Os^G1q^e1 z0d+&HiJ|-L1b$=&4U0+oJ5Bvm{eLQ4Ux-xUxj_-7aiW|ArpLtXs5ywDPo~4j_iu+- z3)fTCD<=E|K=+QLXJ;_Yjm^KN6EH@5$L?%g|^NgT9hsP2oy+DkXCA4j@|{ zy7+rl=XLvw)obChMXG3C&F$#BHuvlN?ZxPFU$`zWl)XlI;X!P6x^B>E$c$uuFR`{X z4%Ita_g07*=PJ;oS&dB0Sy`lp`TT%`RZh(|fC=SwK8l&Ojx!JZ6PA1K=$>-AX&}n?D+`V@Yj^nn1GOTIOwdN_LARCFV@KFuZjgXNV^wo&4o{Hjqu zeKltlaa`U%z8s^UrmEN_Ps0g%ON|*Gflb(gM14 z4Pd6@OE=&4iFoX^Z+>}z2|vX03HclT|co}sp@w2!=XCL!B~nO zcvtjNo~~9K>pA4zB_XM}oj@BkAJHakXK{@Z_YI*hhbMJQ`&i$%D3^zy5!MWfURH1k zIMP6z?Ov>aL`REw1x_(lN|~K(_zh!=(!f<=R_)MPJifAp+otn^jA*l$3elI0@)<5d z4Bmi|(%bK=zTSmWDRjO}S4h1>Fa(q{eHx?yA?tlLuL(Nw10ET#WOT>cS0aTtn0$^w zI&dlT4LV|Dr$@>4;=rNNwDh#rTt6k&Cu0gL0S?D&=9Y|j*}KdcpBeogUX`t#?vy7DkqSJXE?Pb2V$&Ny&XZ|tmZ}5e zw*I{D2)xebi?_z_13Y1P@OSQ+!$Pp%QBQ3=FpjFlFIeruYZY!% zxt76D2xUiyiCYkYemR=A+g0QfhuQyC-%EZms+M@ipHJ&1>G)=wLIZbO-it=@hUn^R zy35yrs+#6|P|S*f_sL%@L_En}5A@;7m*j5u!MHW~x`N%-!CioCyVhml8C9U}R|Cdp z&sHY`x3(s* zZt;mI;DFMUj@c=;Oad0uF}AX#d)gIF9ANi&We`Ak8N{Hl`62V&IIFz7SPB4AgEc^! zRH5mNB}jy3JP+eRPG->!!q~Lw^mkKtL zO52nW>3P*LIwxbsr>>t2XC4RD+~9%je>LXeIaR_=%h=%-#Qr*a7ixsSLAcl?Cuj`G#A{ zCS`U(+dpd|5kK%wdpc!{)-xGnwXUQO+imaq#RENsJ;QyR+{xS+C!Co+l^t9rr>>=0 zirq0!TZr>$Y)+GWL0u$Hh(GD1daZE$1<2pFQsleXtL?K)TwB+_?B+L*9y-#R^!cmah z(>-xd3Z8cE3`vQ0?bSaxa{Y2DzlTJGShxqt-IQ6;mh#V{i{Rl}|r5{rIre z)v&z+ATe$o_^#iF$Rm5RSA7pnKL?ks3#jW(p6nXN&5VKC|3^4QYhT`#dsO^@=X=Qd zJw=Tkl%_HTq(4>s7ZtudIxxHs{G#s`!A{5SzSb`1lRvZCT(c+w!btbfK;hibiP9up zq71~1iAevXEEEGV7*;{(=PI%glny;0T^;-i2ANsV-7E<6Gj*E0!1d zuu0m=b{}Xcsgw3&cSQsaV6v@u>~AijBzo`FA(WyffH32P=b>^8&W=!lIE8ilHgzrp~=DtK<99QLA^K}Vp%JrAuu0h9nVFM{2Cb%})&K@Wm- z9UthjjC91C9A0cUe@OUNws(w5B_6&RBPZt}Uq6?{`Pw>4n{`@BIB}S$BdtWOQWUVA zd-7ADdncnB27MKupRE*Y(2&JXo9C3zY47yN$a*pd9AFt0Wx;-T1Qc64Jo&il$9l-;!o*+KaOXZ=S92{} zYvSDxV!1~!`5&{bTWGLTwvD>JhQ)Q5cR~$HtI%>oS!0pR6?Wo#A5tJ)F-Ri3jQoTVggamiq(9%2h(1NsXE?7Yi}5c z@(58(TZg0}lC|qpIR2XJuXW3`ctL~R?SCMp7kwwk(Kni!+K1kBK-e`2CQb=h7iFdo zgBI4PAcVYTEEIk$_;9c2LM&R{47a&p3@-4B;7E)80?(fFwx>8k_FQ$MdnX=8V0lgf z$kCna3c5&FI7%nrkW!Fvaq_p}m7t!7yNhA)w;lW@x%;_eJfOr7gDMKH+JnYlX3o67 zesD9@8~C)*Vgj;`&yh>D$qiMAoAhnsQ3SpTVF;qy4%%b72b>^d8}V0BS0LaGhia+( zltuArYonyW9Z1&qXF@&ozIS&=GH5zF6~WH<>Q0uc02#SmJ%5}sTN;1Kw1H;eox2g; z>~gb5ps=KvGYovfXF_PRbuQ;!W)888?V(R@;YpS$B}!4hT(p`EeCW$)9nM7sJ0pC4yAuA9{L3oLQXHECxhoa_mo(7 zw;uVv5x;nymi>hR8P2FSY)oqtA+jBd^Oc_gUx{)HJ%=qgEbjcf<|rGKJG!EHA*7#3 zJ#F1USMOi{=NT6{-?SS^RiDb4O6aiX{c%PFeM((;LwYi-xKE&6)qMvBzQ;pP@6ZQt z_vG9-@&=uf`_(q!o}U38Cc)nV7Y8{O`c74P`p7h|7pC5g<`( z>#<zDYWjBbj z*4_q8IyP>&Pusbf-c}3Ol##XD5*k(7^y}b&?<|;bvt1)&RIyT>RG)!Y3R4DNW5fs^ z4+QixO#8aw@BHU@@Sp`T?=s^E_JiK&C~}VUnu$A@QrzA$?_OF2e+*bjE!){bP|LP? zOHD54&r5*nYFI48R%GCLSnlzb!k zGHW8Wtu5cee_`i+{wyE*28IiHLFGxPY=NXHZb-rzD2s)e(xzUX9}&Q$gc7&T5h{Tr zPJDt4GRs*10NPALtGN{nLjETi2=@gqVMT(ms8Z!mxr0+M-k%J7_Dv#O!OMN(ZrNeM zT=_!k>#+F?$Iq^yF`!4G7u1Esn)u%{Q=mDh;9fr^ra)RQ00093#0KokM)Z6F4bu_#U zT+{i>b&ciUt1j^qDXCMFH`hWjz4bkxX`1CY;3aKgko+ZdH0>Tgy;sAb07At;KVSLl zwt*5)wscnJpItc^G%I@{1wVL8$oB$;!ijN3DaDFMM~F7Kg-7Zi@n$kLI0J}V!6k2W z;>j1S6D4#VNm&iN$#RDojy&CZV;}e2ZE2oBtq-Z%LP9Y;Onn$xeV2JN<6}PQ5@`t$WuR)Lc3jjV4_{!PNU;nlVFnpWfDf5 z0O)E2xbf35gLE8zY)_4UfsT$dbRz1ho@M=@hXt3K#q8IHZ&BF3$X)rWsOY!$R#v%w z6RA|a><0vpiVmhu!d$FrGJZ#heTfvgIyso%VM{H2naZbT*FkC+h!Xf&sx{xub8OR9 z7vhm$rCctGRQ2!SB#RPZ9iJAc7)D{M|MKGBs&#ixACAflsrv1)<9 z%tmUtWVFIZ3p`_;^aJIY|6+) zB}Ie_6bb>PEP7^rV*!qyd06wntBrC5Ct!J$pqevHD~Q|?KC$pvtO3c0jnYfY%yr)F z7%;S4_<=3)OC}jetNLWOgwi-!W#DgCyW;DvUultxm4@RZ7K8x^M#(BhtlL2rQT>p< zc4^>M(}rJR45f@O4IeQA<$VylFQ+te);x-qlmZDo!y(qJinXxe{kn$TxEw&7E>$-0 zLe&Z`y-yc!OqI3fWSwhgE{p9O!s4-$;gxaGn{*$@CsRxzJ8gJ;Y4~4S961J)2*2^T z$ciFnocG(Jy@2)UT4ekic4W*TN|xzNU!K87dz#Wml-`T(Gceb7ck11#a-yzHZqCK; zpo|(cl=iSoI{Er5yLGn3G*fp`3opfM;2B-V^N`DLs!a|RzIrv4)3o)oBsPzfUZc*~ z4TMw(SHc|8gRMgJT|KdHKYH{;)x5z6m-1vm%f-3Lx)_vJ2Nu{F-*)D0>_6_?38^{- zR*q4&sCXt=VdqnoWNJBjog4jG@q2_Az z>_9xpA#(iO(D!9^nr3XMli+{$(Zc0mv57BMr0bl$gAP}CXD?U4lo5{&r_&EIC;{}1 z4ao_g?;!tIoFxp5ujjoD&tesUbm9ieidro+jyD`@04A&behm&g z+w+H;nE)!DC|qvz_BBV-v#$~uO`Z5exEXf&0>%Uw4Xn#}R8|94ZiGdT+ae{aCk@9d zSEEIIO~Nps;l0yzJc?+EOAHhCTb?fX8x9o~*-Cn-+uLQ%=IynVuokA+hU207wl!Rs zx`Lo?vC8%YsUx+i_m%^X&KFaVXgbJy-kwKK62xgI)aQJm>rHYuTn|(lw0_&|_-@k@ zGeoo;N{xn9I(~{LTTiEux={L6=f@sbC6A>9&Pf+NUz>UWFdplpwZ2lP0CLk?#3ZF$ zwoJ;_=iQU=5qZY?XOAI?Gr%r=y2irBk|a_#PQ4`wc3@vkHO1)D?WuoNJY5uJlrrVa z8P4v>3PHL$@z?Z6*rEo2z;?gTzu}x;na(L!QAVn3Rs8{>cg|EGoQ7d z<`+sT-$i53HfbzP0DuD1DiM*BuTV=B^9@XQ?#y7DL^Yme+ZcrYQ&6DpL~9Brh+lmx z*?mmRmnba0z|7A)csUTqM~AB||8JIOeeurOye^x@goEpS9f}q;`*mbPOaL|{UtfSy zO+{yJqh34v&`+aLN$t{KS8;&C8P_{=b8M-CIWg`}>8W@k->`h38kKV?-~Zz+H@(+} z&M$LF_uquL=D7Ib-9~;zZp$=|>pNzeGDWw0lyY(mwK}_Z#_Yp!nr=kn@`Lv2SOeG~ zToFM|(Y&HXwQP9`ci)JxZrUZ?g2%RLRe$iCQxSgK67bTRArl1!L&W6TuQ_sWBeSB3 zz--9#xeDRfgf}XN{R;t`_S7HF!wKe|C?s`htwz@J0Sk@h4WP5lXMM9f& zi@vv#cI-5$9VUPzx@E#NV68Qm1AEKC>zklvMtJp{w2a7|LY*MN%on?+&_2mu=!V88 zT;&88buI}ntF9bx4=>an$2^(E$=P%Gf_hE&H zufpQ1D}YvLBcqX+eaD{M$gR$A4Q}9REy4fgEuyE+ThGx@6CV@v$ zXl^B(wkcYxWB+Iu-|?s3xJtdgcs}(?u?V98jl0M)j{(07>ja=%WiYu8C~vo%8Lfw6 zo^t1Nf=y^9wE&6UFo-OY%illaVubF}?p%rpsfEF+*u)SLZ0hZzqM(7MqunHgNCkuE z#U)ft$RM_#DcuaWLefBBg+~#gM(GT^Mn&Q}Db~^x3Aq{*CHA}E2RUZSq@m6>C=@?A z3DRKYsE3BE)P*~VnuH7AEzHU(R^|uVMGFCVsbx?)K$_bN#H~HixNAFSP5dN`OY#yiRr3IE5Xj!1kEI-B|D0R% z`|pyh6{6_01m3wU?7iM|J?T+2|5XW;SDlFp(>^l~=Y5vb3NId&y??8K&3=E9hgMyY zi(Ubtfel%8dD9AP;ITBlE?gFGxTg5!e(nRSa)s2LUQ702!MD!}xi|K*Hf6$gx73qY zu{~V&c=vdp-LHQp@t%5GNxuBKGb-}khFs2pqadGf78(5{*+PkOJckLd><%!pl2R$V zW)pL;m{UdhO5VYQrgbwJ9zX63Ks$U>)%$FeZhp$pnItAll4iN zon=9Jl6OUmC20yB=Gx9wyMo^Bn;nK>u#$0M;7SP^vRLAwm@osZ;K_Ec=5n8^TOcUO zYoFz8`;;QKhj92>$-JLY(R_{b1~5DKz@q4S5RtPSWo}M5LAZ?;A1eMZ>p?8fT+B+#C^jJn5-Wl4aAT*pGL3^xY|o%Y3fg1@ z%F=q0x4wwfk>t~ig|K>nl5zhxMB!$lPi6qg_3pl~UaV7gNq)aw#G;HT=o~wX!7E-5 zb3HxygbaqT5pHz|&SrK>dB6+Cc$?mqptm)^oe)*;p=Wf!6Y++zvG}!A<1oWFm~DXH zVFI*S4?EOLHb8=y?$_b7dip;}@U52-u((lW+`u%1-7G43YOFOUACdR6r*{8zvJdW# zDc8VkO$?BtFxs|ig4m61zv`BO@UPDGX*dsSAEL>?mINrPo>0euSkeAxdD$m%dqbNn z%eg44@kvh11ZxQ$hDkH_>qk%4%~fe~$>xDbs9(_Qhi!GiTWu7L)B*yVXo`Gzx@8QT zC@(m%pGRN!-xp`k21u;vv+mgu$2J`ZAl=vDz6D4=L1{TO$&K}+Mdx+*JtT?_4~6Lq z6ZP?LmN!u_zOD+f*`lx+c+J-2u~p7r(|HG&MoyMzn7FFKSD24uQ(1A}FMXoUHRWiA z$%;-G%k_VrFaiWB&VV2_ELpvk#IsR={+2d@Hlxm^62 zO$^Y#t62P;%t(~@KF`Cr7>l0f=iY1lGyhMuPoOP&{$>f$@tP$JxYcpV{x{m@=yD)^W9pl^-|g+z-@;pjbj*uuw#$qlWzPYPRTzE$C< z4lVvXINxDV>0Ge*4+6-OZ*9ihmA97M0($n6U~fq$`1k)C zuhzA^KA|c9wpN~WwU`{|+vMhlO9zsr82tolo%qDn@?xKNXV1=m$4y(#A65VtHLHdS zeF~pJn*j?oDpo1s%Y4Kf`cQNtH*JAT6bpk&` zINox@ar07wm4e68A7~d4pWWtyPUkX+ z?Bv7Eyh)3wNrLef6^6&2$dLzH0(32Y5f^cwQALcsY~41w_gt6Z(7uQ>?RDnNY;66g zeb5r&=gscgFNPcT1KKN4P520S zJE;z0L>|>wTiQbwuR`$YAYkN{o-LP9A~-dhF}ierMXpCTH406{e{Icso+frJWhMl( z#@mwcnYuA0b1!g`Y>tU?0mNmw2!1~CIakb;{SB8*MphJf{ zuId=ez)lNtg|`4bOD_|AM`36Y;$}r#3^y|0BN8f~vhu|YyN~He5=_fjg+MZwIiSRd znt$@>mT*I?UlAxva0uu8Fv%8QOo7G<8=~=zMGu((DkT}|h330#SLJ5hkHQZtlT^tY zcVRC3Y9;E^)z91|;eeHsUTx5}L3__|c*=Y2A|7R4a%$WXXbGsag;Z%=Q&R8`RaZV8 zO|htrkhUf@bQ(0Y|A`y14F^p6;W?J922i>)l8_-Le@LI;z~`3rK$q8cf>UZ(g@Nm% zXR>4aA2DC1+%wW&h9hFg{H+Dam3DrT@-fp{3S>BldDf*zCq#O3mi%#k4DmC*yXq>o z4+th#M=_k{G0H)#l8XO4^e^hE?yy%V2lo){DvTjQ-piN)VYhPzZ>PH^JWddl_15Cq ztch>`Me3?J>z-9)P{$vBVN8>Yi*68Ax3!if`2zw7$7srWpWwk@>TTWe-@{Y*YWTCN z)&bJRr(!kUjM-6S=yxjb>8~P_J7_%R4;sO;m^b`(0_%)WHKO57hJv5}LPNl=t}yRu z57(_5HHkxx&Rt?4lKKboJOf*Ir~<4i8cEiVP}y2~?fW|skcl;p#(Kw_#OR za3FTE25VD)FU;iF)2wO{7`#t3f2M`o;w@a5(6Ifyq9XyfUH-?DH8Y&1DYAU{$K8)h zUVMiKcbhB2)b%kM1Md;k8xd8U%=`T^(uIXy*L}?%*Q#PEJXz(UW8&9lQ7a?PpcUEtt+#loqJKXb4qjtkA(!8h7VO4bMFV z&RxaL1JyVmz7v!DwNggtBR%{v`dL4Lk4ZBUV1=*&9&3(6(70%qGRu|I$q}22<`)wj z|2CGV9Q3=io5t+h#MG@ZBlH+|%LghTNR`+TE|YLpcYz(}ZZ|~x6xH5KEf(;W#XQA! z#WIuYch4cKsL==D+A)?tv`0%v4^$sakBp2sqkr9y6HDl0|5oJ+OAoi_JRTHD7Q#TH z^5eIK9nH*>Ljae3O5ZHg1Il1ZL)x`jwa?07LR_Lz5or(kJ_n4Nc)%^hA}u`R>AyYk zwvaK3mOKuf4W?ptr6PUJ7_)xvT+5>$2GW(M$-Zi>zFT zR2?$*w{!9WhV{YQZCYW2WM;ymF3IFs5!=`ik111$*a#vr$y4amp@zt($;^lRTS0po z1(vHJ*l-UmELSo3ITW-8rmIExk?s#ST9*-9j&*-%u6Jrow|QbIFrqhc@aj-Z&``jJ zoe?dem*_GGjr0^=J;hA}<*DwWVvfcfQFa>2l|_ygI0si4ddQmo=)2`P!RVfB0(P~A zZgY)^KVisHM&Xr5tMnJoCOw+P7{$8c>iGj7k~_PE=k`;CekA^>M%;NSVdtCeVp=_t^2n>S^Ss4aDk^E1=sITyP5Rq3E*| z|6fJ#o_~-5P@pcUlicU)25;AKx0kMm<7v7iP^L0*mF(}WZT=PRW^vyPGA!hUao55E zoEdg-I-oQL@`~?nf$1-_bgU#|RSkN;=o^twsYuLxu-e1;uQ?f8Gc=+3s-FQ^eF^-} zeH5lZm+rNhJ0>n^yA>nVMCYlJI)+MP2Gpk6^X++?`>9_nz`DPDH4G=rP>R?$3wR?F zfF;Yk?I<8cZ-Yc$Vy$w8z;QkBFm}-m#9FSUm3dB%#%9WdsA{{p z(QtBGO8^(1GCSi{7Hx|nBl1Y=$i<~*SYsjig_53Gq%~>r$}2ks-Pq%5Kk9XWqFI#C zCeIil?H@?fUFc=Gy&6C5fF?Q6sbCC}FvFs^M-DOUP`OEUe)aa;vcr>EYn+4v-~y;~ z8qUtsbG}H6EeXfJzd#b~;y0SXPjGr3*u$FA_DF$pZ%Le9MfIfp31PF`f<{raE_MPT zp}?7%f5vrZWmBy8`e!NTH^D$7xzANN{$oZgjrsRjJwS1~dbp ze^dNvbT$FU{`C41;?b1Re%*UhxjkTve0756x%TbLwz1{@zlv;gP`pY>{d_TJ|8h>zTjRaC9DE}I)N~U4f zmSWWNW2OO1ap25*o^)wUkCcMy<(NW$<&_Zfk)hy=e;r7yJY{B%zLbuz63{(I!u;qY z?+}H$QUQK4!NBXnjBkWBR9~97vTLJO8?-d0yM{Eqqa5AwfDtNnJ~tpy+5|VH{cZTS z3=!w(H+^nn_WW-`Ig%?8cjez*lvNQBH}Q%&ynKs-zHJ=K%Tylbc~7L*f9(hZIbk_x z5x=m?kPLVl&@Dorlo+*Z2CHI060NXkY^>;|omD_m)%bEna}&EBKa0*z zu}sTnfoN^*=h4x;t^Ny~F8fpaGr9RUsOVh*DOuhoMn30Zw$LfJ+>4E0vi!iqQv~sRR(Tcmgw#tsc)~QC)kUO6F<0|q zv`7rU)@q-Vw4ghmO6#FKaJ7d@aj>-(E^iH3UFD5np1)5G=}`(g@&Kvo_1C@j$VzPZ zM{AM#-HudAuoUpLxhP45-bt9sIgl^6crzkk-7yw$IdTn_rMit5=lEYvnqe#XA&_Oo zz7Rdz8vZ-pZVmsrBR$2})D=>aP(*Ln56suRUB?~M!4lEfEn{ppl@@)hRk{^Sb}0Ya zVmVFL=NoMSLC6N$m&%}YCita0tWtc+hqH=p5a$zDXVgte1nx;B55<46_++?b&159>G`hg-&*@Ft0ANQdjF1 ztJ2g#bt;*%=ZhYq7#h|Po~#oNHc3oROJ|CxCkl4GO5GsvNYbPQ5O;=H6bb{MJ%dN9 z?uG)62HR?>@I@n!#6O5DNRm$k&PD8^!y#7vYE`a{2)#oQe{F#2mXKK^>8=eCht>Uk za29E&fqMxvgMlL{dPVJfd6)^H%Dk5%NTrXT`>O0a6yL=Qdi z!g?EQ_P2_?F?(lmnCCb4T3*H>%c0ZVi>@}nvk*C+ZXq%jX=Ek;$79BcSw9Jg@Kb4y z8&G#KDkbs~F1!?WZZ%5Taq0FdW*;ddO<3KEd>vt#L=awy5J0q@b5%pM)@#U{43;1o zY{gTkQR@gp#yM@^!IW?Qn4-u93?bSt|m7&M_XPkctIfq&!E#BHD@M;P`Q$+BZCJKh(qJl0a!$D);;a z_R9x!x@&Ywy@Fj^U17eV_+tnrjoT;9Q1&46{_?;Vq&>|-|V_wIu~^>OL}le5Rf4P!MoG|6TS=tsIs@vgZN7LH3nAC&|AojA7JG zJ3z3PNN#$(uUk3K262qjqmW6-Cv<61^dwezh;xc!;F=P9QkJ{ti6@DnklIg<&+_fA z_W%1=Tx$;p>|KV{Jyr-}_Gx<$V}-c8xbMrYl*kz&xrx9yGXNgv8pTiz4a1Bw4rc^F zL)wH_F|`i;h8)lAjsjwI>EtN%)a%_c@X!vq8^6t~!h{qS@-5MM;a5*UyD#8dVSjcf z`oq`|w!0`i!0z-l)O^Wa!DIRvW(6Sm5ytM_Q!PZ1wkda+AE;h#>NeMw(K&=`!iUiv zimo3s9!;%n48zg0UW%M)4);hn-qHbGXOleu~`jJwinFT)hG*unOs)QI$@>}~fK)i$aD5&!#jAcaiNkI^7& zm$1_}8=UgD3FZ)@Ie|{+81-73TUT?;(T`X0ebq*m-8pI@wu}}Tw@N0@jR|4~M@+2* z6VpIoaS!0#I#ybfs){`W29%Kv+goms)8$+r(&gRqAclO_an?5f=Hd4ck>4xQ)YH0` z>=-y~?{Y%~w?G$2lHsCw5Q`JJD_iQpu*H!YFl>ur(220x5ll?@>-14OL1=yE=kd-> zl8Q6@30w<6YLHhfdCu{2%Z};k5%>+mWI5mC`7c{klE^VkuN&8!{-oUbI(zhO)A#7zbvJC z$kH5Nh46?z4PU;&Tt*l|^(60_0W$?d4>a{2w&<0P1u&+B(=OCI5W zLJtnsvVpq-V>vRdAJg+%$F=#FKBmU83tQ;xas&p0n^1@)sv$o*mWJ=S6LV~Hj3Z{E8EoMtxV?ZA z*o+0Iyaqk_>Bm3;4C;+G_$S79jUW_g0wZZp+CMH{^ASTG_sXiK#1mv|BZu#_6D5qk z%rno`TU^7k35Lm~UIF=$8c+jG%0*HR?G6a{!{s;03mUCEC=zNM^Ar%sx2d~V7#aBk zzdXYS@K_P~ZQW}E(syB->FN;VG;f8i1!pH3Jo{goHVkKGN#eAg$z_eaq&zv%9criY zuw3w6a?gR`4!5=2rIC>Lls1MKj~;#r@fr-5nL2)140OT_dCz+(Ju_7~ER5ONG?q&x zm>&xbLbY+mL|)L`Pb-L#)@wd=v@cmKTOxc?Lx(wWedolq8Qq~PIxA_8_XaWOBl(M& zCQl{FHp5<-jk4E?6`SERAZ*GYP~}QoLK8EF^hx&ny!3&o2Go|1esojz$8Yo$qr(U= zlB{+?&J5y5!juhoXt#aK-WDD_GGATfhvuc|Sc~g7zbb$bH!oyUD#@Sfx+j=f0qLEL zkro9g{7Cju7bw!7Kgspvqa?R+JFQ@3Z=E_3?ou!8n(nISXz#Lm2H;p7c(*cC%2(nr z@%~Ip{tL;EBYtQ;jgyc1!Pf@3-{@wmW(?yBnwwJbk@3J}G+6Qj>q>cD=P_LnpZlPD^y^KRd}# zP6VLW!ZT4ABPzm5LeCTrq*D%j_+x7j-kaSejFf0H4_96b!+k4m{L5#(bt2r=bmP}) zwQyWV)G$-2Efc!Zy{=7{7r7;5r+ENp1<^k>072F;PFUJm`+G3z+Vi+bv~pw|QB$iz;Mr41r{SAf`T3(Cig7 zWv*-uuic-ZBp38r_969Qf;|KNwIF(&92=8bwpDFgV@tR8e~eAzeVe#)#fn)lp4)^M zL$!f$83FY9TPK2nC`DH>Qmv&5pq)M&dQ-pcOIVo^u=A$KvO={9$r2#{pFeW1l-~7j z0K$zovp5WZk?P52%mc#!ABg|hC~YA6uDKFWZ`RgLTAmuw=^7b-DyFnz*}g5|2_~0d z{L==fZu!-Qre30s{&)Ggof@&)yiv-9kK!S6zbyxWFYQcslZQ&{KGsxVF;eQa@I^|% z(Doz|g!)z|DnvYNFR9XF_*jLX#uEM*{r(`ba42*7xTr=t! zRz;M*ZIUA50slxT7;)DH=ABI>vEwu;z1yQ~a3L@-`wnywv&KV*=Me)yjz`XLB!2dl z&Qi$Df5KUr7e!^kcxbyU$~8f0>goe9anl~Ew94kuQBOINFrg;X9u!5gZ82eooGxO~ zJPq4%fyW{bSV|M$3s}wUSPvf{)>aqO1dO~j=qJc zSCcuILc3kKKc0EO!s*A{9EZ#rQ-i;TC&Zj)Of5(3aoc`Cu*uzD<2l)J=pl3-mvnzC zG{(bVR|Ihp)Wx95gPx%9AK|w-JS2P{BCU7;6M>MpGJxiM?|=1FVb`ehJDUqU2KVT= z7XhJcrD5`E;fK-P9O*FQ`0nDT5n!V4l=#IT`>$rp7UYCfqsR3_R!!1h()LUsqA81# zH;<0r{VeDp++tuOf=gUZs5j{k=1OetK^d32`pzVX+JCw8`*Z0q?g{+7!9NwFa}l~U z+qJ+8Co;j!BMT{gi?1EP+xqLq@2(Hef!IX|KzgYDBe&5K5^kXtJCMN)Wpm@RBeh`F z?)`ZFY5zm*u9Pu!?3MW1K1$bXl-FEAXZp0VZ??pfo)(6$T>SX&Z+oc-D6*q|biq5^ zlobNiYNH-Re+ccI)V)(8j(_ifbb?Qy`a+DH$iHzc_Pk^1|=qGq`W1RKwp5Y9Z5 z1{r>Z!PD(zs37r`n&xb$NmGZa4g3<>`>v7m$+)Sr84;a*vndUM{4&0QTgFG9qh!2$ z0qdrANk`RunH0F8L5R&E^=Yz8^obkd8Anjot%>}JO@zvyvj-p6wN##W4Y`Mr7lyKJ z<|8D(Jd6;pxb?O456t1?>E4EL%{tKa;{lOYh7oAMLOq3h<`4+$3EG zoSP$0{G)5H9~5G7|2}IOj-uP11r zM(l_=Ofux`z)Y1{bJ~}wmx8mr>ur+O|9pm+nCLOks~r!m|3zkUiVETnnJw zGk$A71(JEu*e)}4N`TMMS&ef;kNpfnn5E!Xcv93{e{+^C4$W0gG03s7>mm63&q5A( z>M)M1A2T8`pKmsC(K@c?s=3=3=e~8v{4WVN8x?YYo3B+ctj;?y*(ET#e`%BirP+xF zMwUN}{>iZ^6BFOlCe788h>d445vZquhvcT#(~fnb@OICZwS)8MafBE&35(oj&cAli zcLX0$SRj8MHf8%LYvJp0v%36nKXg8MSaB*H`Xf1=X`yv`PgD;0`ZC_FZ`LmR+3(Jw=uH*}^)Oe=C zYLKYq;;?d)Ju>jUngs{!BT2lx=0z_Bl|iBvB6kx!*q9m{8=geb84tC1t%e~pMrrJ?)ZrqKPUe)(R6Q} zr#G*&&5pXIRYpmd!pZTwT#RNpAo4f#Nx(iaJiu@p-L@EZ=idfbuT4E6I1Hgff4kqr zQL601kPb{Q4{{>KL!@Qgx-Iz^jLOkbg&70x<&7icst-w;|i zecNjBLmr@dVqWFxS4UsMhkLD1@nv99Hd}5;l7%<_ep#c@?&7O4M@#p>z zPWCfYN64nRPU31kIae)8pd{!kx28F!1ixHPl;ldtdyVKjX#vEk&gv`Ww*EpW6Cp@4 z<;jtmE;Nd)orXzOgS-ur{(@q*;j7{qE`NnAzd{;1vZ6Hl7UrI&uof5nkOa zar&oHIk8ugD#9$CrM6Z31Eq&3qV9Ra`WCxJDuI*`znxmSk{K#Hv~st7mOGCM3i@pg z13d01H&Tx@QqmCk`a6hmEVL--FfG^~Yj=_0QLcN5z2pKRIC8OXl%KmzD zkCVsy&*h94W5=7p(2FD09bB#`KFSlLOYZ=FerP{HFFAI#_{YFEfqaT_wKuqv^Xt}upJ za==bQ-juph>A@F`KhEpo)V^`!bBcE~K8|IBI44=gZT!AhR2b=hnP<^h?1-gOs6{=h z{&vreXSb=?NC<>bco0x#t1{fS)lQmcw}%>NlSInA=yJY~859^L?@50?AV^NHxe>x4-{8U5TseHY!=3d1&OH+Y%W?@^%6b>2KMN1_C7WMavW!a%u?>$1v-SSqlcBe%cGw`rz;mHK@7-$QZn>nxI>#cT1J!EWr>fg=XdSWPt8}cL7w^(P zi%@g&@%yqszwvBZsSbz@{R#&YMS~6xkm#gB&;n3aLQ=KzGbO6265P1aM#mJn5m$3c z`Gnpsj0)49q-5Cic}ID8tn0FAoIUK0ZIVduR6X2Pr8vqA-=`Q7ok!qP?>8Y(#lZNn~=X`y|t`NCr{=DyRaNrep;WZ?rMe z8pY#g7`G<#+*TDXk{9X29(Cw5g!nCc4aq|+R|aH`p$4izM0$LI@trZ@2`|$spaDKo?@7@W^RZ=>OzPvQF8Z`+V4Q=TiV<}z` zvn8-dTzs$TGs6U3=X3yY0+W*#`ORqORi|>ao~mrf_+4(!2ye z4LgoVCU=`;IH@P9D9iD~v}HGIP9}dZv0m*d+Z&C_G8AxQa>{3V^t@A~F=@1Pxkh%K zb3K8|I4}p*ENL{L3!^-PxKxs+IZ+@$6`uyp2w_}Xz}Y^zQr=dJcpJv|MiPsRukLdn z!|cj#bTR8tW$3I+g3q3zK5IrMeFbf)QoD5>N5-r+E(<5FF9m=xLyVWSn4x%SnVEDR z%LKwNZ3*{VvZ>NQI7#GrVDOXW>8|>mNK>UFd#Lend7(*bEby^I%PRB>=ax>y>8Ipq z&_Bl_eRUDG9pik;hlDi==4dEkOz0^IrN54@@;nhfK?cv^UDSJ7;GIvLhi6VhAabGy zS>KgRcnVT=geuRQ4I8>srvc9TmpJ}kk}v#hOAzv%YHo;Cp7FA!36QawR0oZ=bg#t>Ia0d`gQ z0zi4)u(B?!MJ_&sJgXbys@heVRLH;YQOuZ4amN+jKKqOzdWKuOoHfb|)FaErXLWb>j} ze4j9;+3N*!HQPMK+V$|Mymo07$Roy%fy)3_goZ;0L?Si}2e3OUICBcqn^FOH5}x`; zWCD3dko6PP*I4>$7(GI8)F**GGnn^V$#UnV>KF#q*Gxq=b2;b`tR5}rs^=MokQ{Mk zBjdIO@vOg3EtY$zSkCrycbEU_kOU=sw06b@{iqVPe9|&k;de=lwToC=@UAM1NZA$& zltBf<6(eMZJTIeEP!pQi7$*GsgRWIO#cTWT?&-#hmjuAw@61<^JeS$6+Ze_8Et~4%{BfjqpYD7z;gu;eHlZ7gjlv+}mB2ge#DbV^S6S6Z1u126 z%}sldFIwm(cR&>lBJV12Rk;_)y_r!IX$P7)7urT22~zeSB$&|9ywxufDIaT!dp36& zS&Mo_TS(aOjIk}H_4bvU4ErKs2o1GWLvwz#}$pV-2c znLlo41eLvMoD=KAi=h?O>)gqG23h0bXHe_)ufIJr-AA`bKaSu{ZPUT(PI&@*FFa`@ zCbIr39~E>6`_Zi!`zfwAPGBAvR&}-q1PX!|yJu%Z$+E##$!u9#+A0wYe2Xd zvY(C87$h}Em6;7d=KmbtGA~ag(Xp3Hi4;3KifJ z6BO6w?3AV)Cgh_rTHjCAM}XL!Xx|2F+o^{YvIQkaJ>ZB1PmRkW%IsU$uAB-be6tLR zL#a6^)kYV9sJ{ebQ`d*tq_ha3A8hR|MKkdP6Y64zf(-Y_cim)m4T=Y8hGhVbg!$~Y zdeO(s^yU!f)!{7dHzbM^H`WX<5a0!ll^&+>+K@ld!XVuh&d(KWb!adSSSY0y^a4%J z-i690aSTUlx9u1z92kTR+MD8VX?fu|F_7EbEu{&0%sTZvU10y^NVQ;J!f3B*Ds;Sj z1Nm4D~P$YK86y~M41!r}@su}{Ih^D%nO1GLUR@x~A{giz$w!sUA+xccC>jP!V`f)tnr5GJ^7Sjs%N8O zV#$QAUjEE(A&|gq*fs#eq&R1#Shq4gXbta0UjJOZEH<}-1$*5k%7O}x-e~tfSEf+# zr*yTDK5=z;0QHi^=dV?l1yWS#4Q^CBS50A~rl{;&azk))m%l%Zx<&#X;> zw0+A-DP|tAYb@7=_0{V?-F}@bzH12yR8*qK`_bUi9H4k*?&UFXQRwOm$e#9e*h%E3 zxd|DYH&*a{R2Li6YbBEQE)@({>;dZ&5^s6*SeomRP;l$d|oCuV~sZ`B; z!@Ne7D|Mo#uhFoBSfW2f0)NHgL@_tYob~$+FhLWRSiUDEzb2s&;@i6JC({K=YP$|@ zUT`i5DUUzVT0j!!wMRhP5JHPZ9H)Ca4ou-9VIbfZn6P|`k=Zs)UWqzND&%-F>no3R zY%by`}MTU315&&a!i1+V||R076s( za>-5o9b@{pm5A+8A{8Wr4Z3-G@XorcOxxmYviD5T*vIY{06Dvcs4`s164K3>AcnkD zAWP1SoEZv^n8@QL(T#qjKugNK^GnODPL6bLXDNr#KCxmfb5K+!>Nmlv8pCw;S5mv9 zt9|A$!9hR3&>SVM#UybPNIvhzq3MAMKh@O%Rb!>nF$5|{277OFZtoYubW)nSYu$8d zwHu=%UG0x;zsKezk@1y8jpOBa-n2L-XJeRMy5 zBo^AoZ2^m_ZI#%-0zqwyct5k3AP$_mW_o^c&tp|@Fo=VV%|Q6AuE8Ao6bk$Yb~A{Ea!w_;^+*qCYTh5{ zS*3_m8E5iXWM|!gUr4LgZdNDJ2G-k2m85lohD3$e`3Tu9z^zQb8r~BOI)J$PXL&GK zR#jWtU$&dxTx0NORm0$76+N&xDGI%aj|bm%xEMdtM_fg4E@+owLYu=HYRmYG-w}z_ z8tQ|hv6RDuJS3WlW31Ta7!Grrgup?wQw-c~_OU^^(XBJCyxpG1i~7pDNbuZb0BX|8 zZOGVrKwVkj6OdHKIC{Nx9X6z#IMva0aZlL&lFvA@UF;WeY*zzSY z+xf@$2$WwOf{<>JT;Bo+t2gnzw_gs(1ZCMRGSs{>Sy{)8!_P8?LEZQtk**8-dtqg4 zUCW-oUiNg$pjwX2oqy4ifd}4GBTVXcT|}j`M^tRKY|k#CU>kTzjeD2+tTN!58Q;r& zJL1mvwKYGtCawbynRe zQr`{{c&!%I^!w_k7?%>jO;g0Sbv_FoW^Al)DTks6%|>1JcHZ7}eu#mAVaZXDo<1an zdXnsj_DH%+IOAJGAGck$Q4!I4WKlc(KH%z<#S@d={n(lBTkLcvL-d7QznCNri5v2d z(#&vd6X1dcyPUN(p@herE&Pa9i*Q!l*}#^qK$j_))>H9EEuK`%ZwBx2Q9DOj3)EM- zHdGl%?ahN4eBTRL`9^NLyq@mwHjB(P*b{Cj5+2!^sKxCUB2<4&5|z*ATPR=R8{WM=sjc!S8S>N1JA z{-aodS-PmS#{n+SFYkGNVD(h3I)x=JS5mO=jzNMF^un-gkZZ(qe3uVXIpsKZ3S_*t zz+Nfhl~vK|beN`a7ip*a zz>1Hs60WlHPxiRtv!fIKI1)X|%gJ^Oujxe0We|}IHere;e55ujPn z8M_hu0T;oA8DI*XZK&)RvFA=?&;B$yp-fR~@ccrtc? z6w6^+S2J&OdEAx6gWt>A;Up7Xm|0Xow;k0lPh49G4_wciaEzM(gPx`352)=+ZEoJa zEa1?1nibyCnAs9#FE0!D`K}5LtujEIw(*FckwYW&bobZ3SCYwgHbg|ku+HS8jU?_SNBsuE1qrJ_Qt8c_+7i9?KkX8!y^9{S^qX;>n=4Lnx}w zIxdDBg}-bU4uIPw+Y{IdO{t@*W>Sk76PFba@dU-8>O=~)2OPH@gul}5gGWmC@~_Av zkSbdHLrm!#+p}JCXI@twcf6vZ#Y^B$y<4#oZ@PT16pv}-lY9aVkT=>>PTk-Vn4m^S zUJhYI?=5iD`13WI?89GCh+)RVlE;SeJE`$pI{2CQzt{weQumYo7z*Z?KP~Kd4KEDC zu&|q;*O+?pVB|?cm^>U1$@E+3QAS|*5E0DUbY-yK}cPU-p6O4dHJjkIUpq+yJQEn7f$+gs* zlsOEWKBZIrynJa4I81u_9Xd#0+l^&g)g^Fh(bwemAS-@k5^|k2DCNY4f3Z_UlX2 z!e?)^b0z-4{-#NYZBo7@gv!74p~EVD&`7iGYQGtzKl17Akiaq58Zv-%2L@1nyDYq{ zHv?cCmr8}MlG=yLmC6%|k9pIf3h)Rk4bjT+uXc~T29wE5!TK>f%EZ@nM6IOU)zUiF zp}M*~bW2`o(b~@TBvR9@E~d9*urUkX34gR)0j9L@IVCEU%D+FkqK%(7{X-Jk6nn#> z#LY_ogd6@0Gs_dCBfTEGFkG0racyQi+loW2lb#XT(pXzsL_SW|&_#5uMAfP?Aww|J zJ*(^`_;(hm(Q0iPp5N!LvEdDUUf2IU^SshMi)MJ86-MUFX=-#UOJsd2v&%gGVomh- zK4rHWl~kpYo5$J{3+7DTq!vGD>=kIz{;?Sa?&NZJQ8FJ+k51&0V3%x}yx52nd?T}J z44#FF@3%{dl_fE@9|8&2$T@?%iAs0>t31RLpym`9*&A6ss~lx zA`+>ujO>r7JLnvm7xbeE(7nKUpORZ&dw6=UksX^tZ7#yvAhHr908fO(mkK|Ue?x-s zl?jw%cJR#o3xF&%6|T0YmCWg+Kw;DfD0Ol|_~q1G<%#gla9s21RE#mN&Rnad@JW4hh6=(Bsxh;EinGX?RtHo*K zOR0pj>Q;+LQi94B0fvmBtAF8n7-1im^5umcbN1rmo0p)bu~6_bEZF*ScAK#}N6bfn zlN`DCLDkgdmOl+WFOr(A(G~{Y2G3`RUj~6%z`S0HJ0a+I`;)A?!`=24fEQP@8R)(s z9?fb(3Mf@U1~!~#$|V~>)p~nE-$a2%$|(L-1_UB3?hjEw2gKccCv%Lu2r#Xh0j$Di z?a$o<`F$C=@-ppuGmLgkCQO7rm=HgJnn7Rb=hr^MaI0H42zRjhr5GPH;UHTAEm{V#Bb_WNEQf9MP*Q{W%mIQOO}H>5+qyGifU zjPn@Jt8>dAl7qzNUnl6T>~ygvfO5U7f47-t=z3z-98t4ClD$z)5_H;Fn*}T8f%UGm z4|!(xb~~(=Mpn{-LXNf>E(^bQM6Z0*upK0)%U&Y){PJy3s2YDPdJ?)5jN-r7b0{(U>K~Nm1dT&DGSwK*dn*SvP)PN56i*02X*P z{2j7Pp?0*<%6QiJ?by_wDLRFU$gr)BeHhA&K1&DzEhGc{RT3?(#WbUEPXN*Z9tB5` zV}IJmySvx5fkfCnM8)XO?wIv@vA6%v6)@7uY5p{%ZDHjtRA-gamt3{D`XBea42IPk z>Cj~r%1mH*FED7Khl&=*lYOv=i0$&Ft1m!nz;O(DScMLf6)x(ha;eCxF=CNy{7=8ejt!wJwQVk9da5_53G=^3RM}mQuJ@{RMz7|$T zC5+|lC@%p(vvs=k!=YDLMiL=q=iu#0+`l_*_E&~cSG$5!Ej`{b{o<@4<&ZB>a{5a8aK^IG&MQqw}+@8$W>EmIo!?YhwIE0XZ~ zTNpbZ#-Te^ZaWLI<)@2c01j&8Tq>^P;puUI11Pj|OHGxFql=UGzmVu(JDuh$qycSA zBgaevpIKR#1Fp+9P%FV zMnaOto~Vlsjm0p;O8`MguQ0zLM36{dGtY4R%~;T-oei$Z^;e2@OmLN=1uL4&kBba(J;FSW`_G~0jSUQ@*g#Z8m literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508150001-Config.rsc b/MikroMaster/20260508/20260508150001-Config.rsc new file mode 100644 index 0000000..d3e30a6 --- /dev/null +++ b/MikroMaster/20260508/20260508150001-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 15:00:03 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508150001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508150001-Diff-Config.rsc new file mode 100644 index 0000000..6f3fdd3 --- /dev/null +++ b/MikroMaster/history/20260508/20260508150001-Diff-Config.rsc @@ -0,0 +1,16 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4295c4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297c4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4305d4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0