From 1d5a9dfa909974531968eacb2bf28ce9beef223a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 14:40:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 14:40:44. --- .../20260509/20260509144001-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509144001-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509144001-Diff-Config.rsc | 16 + 3 files changed, 4655 insertions(+) create mode 100644 MikroMaster/20260509/20260509144001-Binary.backup create mode 100644 MikroMaster/20260509/20260509144001-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509144001-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509144001-Binary.backup b/MikroMaster/20260509/20260509144001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..cb5f774f7d66f863ccc746275b3105fdfcb0f1c0 GIT binary patch literal 298264 zcmV+aKLEh*sF8CRjRXK`Vua6SedIG1zEwjIt53-Q000O80004Z`T(2&Lur^#1iW=~ zcHRRU7oSA&g*a7`FHTwO+^ol`J$ToDB!Zr~qy2HoM*7~L@vAmgf;JNgipum}Ly4eQ z^ksaLq$>tWiEmd0VOfo^E(o0{w zH|B4aO#Rn50+u@Y(*3Gml`3adhps-w9MjPycd8w)1p(x!r?d&cRuyAi(vY#p8MSxv zT5zCUE;A;B#$e+xm;&sUeA195VX*DfV$*zV?lWbTM8`5Z6Uhf;(Z3enkbIqYN3 zx*E;#n$cu_6Pz!nedZxGBeoKg++}5zkl}6Z+SmgKVH2jJ^&96v@8M{FI}Mi_7dJbn zS<&v4S7z_PfBb5>^zqZXd=_m+`1oOd;TA%*clSb`IW27a zr#kgklq{q7j~F5W6jFNy3KxzQsktbkML-ny&Rldw^rFi0Mb+L`KBlYwx2O`-SL0Kp z!=-sz?H74jlCViZjBnVjm19hPi`4PH;HHZu`@n9qNVM2ovDn!tB}Ir#}Dc3MwQLs3cUvqNWFvoz;p};7z#Ao`o=6^^zPBm>8wxq zm9A-OyV}O@ZNw&;EH(C{GzqhyHT2wq8RPAXgXtm2#z%oM;O2-%b7sOa3?kc*E+V_V zz{})o{XL%BJ?OAz(?2Fq!5_dzkUh6zFOQB_$?;J_nZz`+-P^TwaiH+xWX@ujlgSs< zWlRNy+s3vPCHJ{hw3CLaApOBCWRv_SMy&id+xL}jgAOZ6{$&$c%LR!$#Hw2Nor08PxjL~(4Kci!!(DoHV+A{xK(4K z_`_8setsh6BU*}@O3$1wfw>DKB)>QrtZlO>00I6=SW~)utW2?0>NXwWRxqFq4?)`3 zeGhX+=WA^cAZe8-jv`ErN&%VSZHAGJn_gwgM(^q%zPkwK%D-m#e4|#MHJ4Ls<$J~t zNdKWvsO&S==QJvg<*R`MGlK_h^gOw{U3OPxYkl*#q;Q4oja3xqLvK6BRC_%bK=qjX z>POqAJ1|%j`w+6JcJcI_Au!7DT8-tSx;LcYMgKG{rnYD>Iv3WAI+ITL=)eR1Ok*m( zU2TIH5pzgB$XF>9qx(uoa+{P_9A62h%}Al!JqmPtUv@s*7R_uCtZ`364q1KtM+~qQ zWvsowErH$ye;oz?HwrLGP`plD5fG?U&xiV;&Pk6R`Fi)qL1>}Ek!=*%f>Y(*oz)Qm zOE8WhI;s&)7*}jSl#`vvu)SgwV*Yw{;Yw%+gCp+H0J zkKNK{dSX+`vMw_`><@Cfv&trMab|6Y!>&51iDf*j-5va$BXH+MMM%pPF>CZY zJ2G9IE-e7h{md!>RirwLjkc}guxHyYS_+*G#pJSlG(dcbVbudk{tPdTY+sxfF*=ZL zgKn7O>_Ttn+~d=WarK4b1|Q=RtZG9x4kpIi5RIvH@PR;}ufsjyUei=VQQ{Wn;H+H$Bn{8W>w@M&`L`=}5m zgOZvDTTHk`2isEwlQ*F2m`H?<+0CSGM^TksPugqJ`j3-bA11|So&x?3O2T1X2zExb0<0W7c@~|( zIg*J(s;AA%@94Ko<9Q-U5hST!{epO?)=Yr)fnIJP7?9~6le^=z+V|U zFuupFjADo@v#gc0;D6`O+K?&nDpui1}z!)t6Tw3R)^K0 zkCdxT)D1B9mjOVOi!=&xw+~H@)p!v&@!WGyk+g$b!x85 z#^So&m#ECf(td35Qb)jk0;VsBC(4E{^iQ9!$}0_-*K!EiyHTi_G-2=Xa|Io#0fmu9 zd2Qe-y0#cq2Q$vUUvCX0%QybdY0K$b01px@l-_JDQ~_>B7&fR36+MW68jk~MyYi!n z%ptaWqh|JtY@dP->OA!ppvE{P=4RW+AwaejGld3ZJplK%*s-TTG*1CUf5DQSx+Xoz z7vN)1%5!oS1p}{ct(!J5IO^9vJ}VyZ&kIPUj%(kHmI+cNKxaed*0QeBwT2GcM<<2$ zx}YKy1tD%kB_yeu5^2oMSQ%<_$#iG8W zA{ka%V9dj3+||{V>ivfToq`=!C{_zT+5<^4vc6FmqB$OA zhyuY&Thi2Cjvvhk@n$N}Eaw6gxsM~!^XFYSRqoN{Ssab%Q~;;${2kz2Pw->>H6 zp))087kvIw3bzCmkDle3@=GSoCULl5gOsNw?bxLXTfkjJz?I&j#e7R-{;*>>!_?Eh zT$TXs(0ZRSZS=TXD5#prM%4L5U`6pXdZ9H`%x66R^5ubV#O8Jfl~e3zP~yX!05eMc zJGo1>X~F0kv5T&P^)#CYeh{YQx1IX2L19w-sYS$~q#>8HJz=y)nBt37dR%?Bf^ts= zkiTDZlzpH)UtSTgiCoUf;#M3Ka;NGi$V4Euh1_Ct5BdqSmh>deAjqrPkO_sH5wtfatFmYpupV4=V~m!7oFXM;7Ox*s687`=VgWRi-PSD;I8q z52dM;77^-3?OiIZjy~6|SSds>g4Dg+`XnLC2IkK&RFF$I#e<3P%%vjBGnC z5wEbAjDGiFKQ||#c*1z5tHh|#FeIyUi~&kKFBsr)@w;UIMuQB>g$CbZRDj+gWRg`jmC~4 z&b`|*@Cs#avkxR`6@quh?BcNe@?Gojq?q#eCSzJGCHycQw?~}ZnEt;CO{}u>W~~TlULat$0)fimusCS!&})qjXU?2#Y+;8y&NaZ*Og0Y6afqc$@;ze1il)%!Sx* zf2_UZxZMCrDNk-Ne7AwHr>B8+ce{?gKMK0rL$kED<$5UmSS&$c@b_-amo$u zTh!3&7O7{`x2rIS1GY%{ep6x6vE(H4Bxj!G&TFXA`xCmWfd7b%U|;1JXc&p%y%key z3C7s7_ahdyQ6YK*L`cggtuf^El}~MYzpglZ(B~ftouO0+Nte%{gW2J$oBx@?kc*#v znNIZ&Envz66E_thc6N;M?fA1eTR#p>PU>DMn_&~;J`eF55v4=lIIoEsM>jqZ;DKKc z!-QFUcOFj(c(<<`luFrN)yp^69age`i^V=M5=qTY0k~OhKfYxte?r5fo|@dYTJMmG zY73TObmV<8@D}iU0kin2S%M_WRSxxe80=iCWSw7YiwUGAIJtyM%}K*1<+D$dU^=6}G8p#31+wM9W>ThxE|u64N7=AzS|R1SOrmdUBQtXkZ+8%WVG z4v6w?__ysLIp6rd%k>=hx2&)1E&9d=Fj>LFdz_|*?vCvEtrv+$vf}fqWWCu8K~x7? z4{|^M_Cq87og*+d*6ax1l6@5tjiW;w`49#&r(H($E54XW^o+#rV(2T=V2|w|jRRX< z@g<42PiHZso*vZ^v~wk@#FX4vu$G}gpGF}d*)f2meOGwQ)e}mkX}$p4GkkTSJ*CFw z?FcqyKsFEY;;p6P1fM!xFXVvdMk$W!Rl;r$^UfJTZaFWqAEZk6n-b_juV?92jR4c+ zfD5y$B@}F`VNw%itgB4(4&SalX)OTx%kn;*zx>RZb^O)T;m#M3@FFq*nT4%t8vyh{8Q302g)@H{2W9b+DpHJj=sjS@xlx98OOy1mKbu}5rrJBk7vElYYHPpumj0;oeYsqp`h z-MqZG-yO^ofDPe)sLsC?yX5uz3OhUg*Fq#i5nPUfj|QypT3Wiv+Vy?oy&QM?w0#K` zZGtev{J-O$!s-B+e`){a9ZY4;BANWznr6}Eyb_%kA>$fNi(WS*w8hg7VNG1mP5Yj( zxDu2vi?gwbX^Si}ZM50gS6iY;QAb#BJcu?QE4IR%Fv)@<6{gc( z>#NLDt^wcNuyQkQ6tntT+6+pL*_7W8Pm1VD#^o5FNJo(+#pvw>C|UjlG+$m<=AO5k zHCVSjnJhWOGk3Hns_7?^^?NbZQVTHwpZU<>)Kp2??4;)3_ptgOEjHPfoDkU##@pe5 z2wE{R5dDVoofnjTGXRF-jvNK33%cK!XHYc1j@yiHY-a~D;6CaH(&g?#Wq(+f{=T7k zuCuLWZEtMymm6B_=JS;#a*IE8+0jv@Ipk-lZg@PJoIr~h<0KBI*+ z8*F-e?)rI?Ez!-?z)rlhOnN)eQhh^(#~ws&&4LD69CQYFKaw-IflFXD$XF2&Bvi_i z%g8llQNba}8Ed!tGptU_$ffqCQw&ah*#efmbuoO4-l|3m&9fNqm$@9Sqolw&>DYMu`9UIB}cI{N7&4U6K>k>?ZNfY*fBdjtVir?k5R=oE5QO zv|tUe);Y9kYyK;nJO6f1kw$vC7)5n{7`kWDo-d#?DnTbF4)vI{%RlZED}`#=E_Km3 zI4kc!O<0B-)4-B!^T2I3dwj#o6FL@ElzxOQXvY^F2}w~%X`(U8GUTaz0wT^dB`t4e{7HG&skb$QaLlp7HD|E4V`e%%Z&!M zh;c+1e^Iz}9PB4u&KF6#ESToOqr;;YOV*YoZ1tv5V%wfX6!(-#GjA2fGN&?#}LXnW&uDk|U z2vQ{{I_WwNuDoUvUK}u5R6#JF`1C+{&8qZH!7){@^#GQ`-Wg)q*3vBrMhHSp3$M7? zc-TH&NZq9lk%OuRK+Q;0xn^k_F$z!DY5fZQ7ZE<6JL zRG>!wWIcuzgCPU*YDp}>Mf*cBMnvr#Sm0G_bU+$6H6c>WbW!Wi(cgsoh5sQG$RHL)`m_iafB>>Ka|letbE<{;l1CPy=nT z^Byi!WJqx-%&=jY6$$7)>lqZA=aj1y;u~5eumfTn@8QOms zyBaBdpjpC8v@k6+V&gL2uCWPp@%hGkUIcIB44x$7GZtPXzKHFoV`R0z4dyx*VXwDs zCzm9tyl)GR>}D+7m{8Sy<7_?B3h<;|F6#I}*O^5#!Iw_2@arN1n<+#QMujzL!VvPW zX#_a$+FHs)9k8!ovXZM#J+-S9o*Fe*8DzQ@q~g}+gReb)0s?vHGtV1W zY(+n@6o89K0 zQ1#uD#g_A(g_dpa+N=o*_wTB|MM9&arufqB17%}8Fq5s2E76scHu6>)3d@ZJLPEyA(P=_$G=?T z^ai~p*}}xzXIZWJ-zs)D0XS*H^k|NU+%%bZm1thhKWubsd%1E9LGc8q1$0xY#HI(I zv?B3UeoDHIO$}8B?*SHpGtzzr)?p=2z4+U~RUr)SUC;ciJL#0pe=2L;(al_d5BPi( z5{ZgUC5xSKJDQg}A)HkV{Z;dW2-$2aEIis|C7V2SBR^Krcruo&Kg60TmwpoUip02` zVE>2`F3m1BpQ$(<6O>pq=;;Tn;R2v_I;w7Da-WUjCaQ}@s(@Ue|A-?Y#8Lrqx>Uc! zvpCle9dMtZRUDUw5OVoDpsD-Hnz*x)PvfY=ZOj!8vui42Btrx`kU?=AXgfdE&7 z&?TNMBQ>Z>I+@P3ahjFP>{>z@H@(mwUd7MS_kElK zg4cbT;Gn&Rw!7+p`##Jjv3zfJ(b#Xs46&R+VTyT57Hod26K!skuAR!lsnS^go@-0X z_Fmi%g|dzHZlIm?qlCS+OVtn z*=6%XhVIxdcT4+Ie1GK%RGM`8q8V>D@oR^k72FvHwN%7{CCTqy=K%_|+B7|ydA$uT z%dWd31xDJl%H!R@;20!h>Mc~Epilr<=e!182C#jt%GjRb_exOQ7#~<_dgNLkNS#Uw zNJH*Si#Qss`*S&>KDiTeBfNkgx*%(ihiw$jgieeI?G_Z6tsHoyEa^Li^I=B1z8Q)r zO`$r@3I;zI8>>e2=H#WEei9Zp@3Ys=G$;}czl3B<)a}0vs3hyAE$@P{;03ZCLN%;c zu$&dpqgrg%2F=L`rlZ8$5{BK3!^cV0^Lx>2&9NOv*NLOfXV8)$ifdPFg@BQ*p-$vQ zCfQ4y1-^M*Vd|z?)Ua$iKd>GeMb&xS~j%(&q0tRwbz9~o2W8{M5uXb3FY<`-D3 zYZWg~1qR>_gl@3T(J(a8{HKgAw;i&=aSi#Zn0cs7e4eLYXc<{~Fck^N4KR>_6jQU$ z=eI8mDhNzNM`LgkXh37nSQNW0IFx=ckeJi$Lye33vs$m}cjK3B@{YdCVqb@9W~yNE zoP_UDDST4?{*ozb8uWXF)__V4tWbRE9`#bZMk+q zdVD-YD{f1+LlW1Ct{M`4=aMl<{kS_PcguihAf({kJc5~#IQp(|13nFbQY7lSftFRP zfmzE=%LF2YqYThS-tA=Gp3MKB9kAD64LsJ01ADU|tOiN*?TV%wGdT&61bjXqiIP9f zG81K@)bOV|wNn$a5e^!TB;=+>2nwi7fZO%3ed7N<2@QH4&=igw%B!zCCE82vynqjn zi`>c-E``8g=s$JlKo59i1+=4~AzMrFDblr2#90eXTkS&96yf02yQ5VsbM5VskskC~ zWh4Xk)f+f-`i`hd$rNIJkJB~r(L#({C$G+Odg2ZyG0YzL(FaLM(9!1dH!EtR1UfU2ae1^YcQVsOCCScUo4jHSldpVV+Sx43hEXPe(^ zus*sNERBXi#Sts2uK`2sbd;+k)|UmqCR=hzml>45dDdNge}sBDR0Vbn0a zAarg%ctTB4k6&p+8863)&yR2tuV1qq%s?xE^sVDIZagCiJVX+y$<&D1Vpa-6VE#(9KvxC%*&2hjT z`s2~v*k+X>qW`&)Yc&1DyXx-j=}X1m3L;)4;sIL=2lp{=G-BfS!)~NzC`on9Gmgeu zSU4n8!hU#)4@Bb`CVI&W@b@a30r>4^6Okmg|JD11Gy1S9``Q5C7!~Z=UgYs_aTbTx zOIi6O9lJsrD74?})s^+>D~Zf_{WT)h$(XTlX+)y|K(!~6C!JNzu(poN2|K@Qcp~iq zHh3TXoBwZ}$$VWz)uzf<0jBxCSMivq2U<5(1Skt?aHpiDG?3TNL(fS9=(^YeLrY5;J)|)Qvo>M&hWewb;wC?ev|mU-1o=R08Dlp>~CAo-Uej zqK@q~fGh_}chj)9BEH~i_Qv@ss!z2J3su4oH-VB_#ae3l*TC=2V7(Uv$XV7CmSO0r zb2Kmj&Cyh0L!5%w{ApF6ntT36K%m;G?RMf1I&!w#hQ^SgyC&5kV^M@B+G~@L1KJwD zAIW$y5({w$6nn&@zwgiP1-K`R8uPq!@@iarpslb&Z|89`=#f z{fP_kKOP6-UNLx#Kg8`3LEaL_YbBBr7F+gtpifdV&>^4GU91Nd;8ndQUa2MZ<#%Kv zbqM#Q?$mYS(_ChP;5RhF=co)@I^#wCTAHD3tpzcA7gt(#Oe+JVJ)YhPPi^SwD3!GP zj6J)}82`5R*H%=<^`VBW$}q;xi#Ej_K73#-l6ORhb<+aw!=V z2rBU~f-ho<_E@K%3w5NoiqtPeRf=(5mU|Y|>yQWYq(RjN&&DZuHk|Aa8P~@WHr#B@ z$@3n6n%52f^!alp_@GwCjoJ zfZ)!m?MQ{bN88AxKSb`8G4;P~Lj3_KYz43eQE}5Cx_wXNGI|RbkXfg z4@~}2M7mXW#nTDJ8M!v1jZQJ>NZx5jui@E>(yww(K{AUuq2tT`-mzf0GyUKtygMPU zned+=CqeKZEnm60STT?{5#@6#Z++*QmHv69-LjE6I9>Rdg(%xjYE4SAlkc*(j|)NG zpr~1gSuTdVd`j(lgrZ?j)?4l6Dt$cAAn(Y>aKHFtUUP;^{%;>6J2P)4xpM)h13WK> zmr}Z2()7+y7D6r!b9bWVBF)kO{MOfWuEqwW#KrW9x5T_K9gK!_rEEL~6Bh4JgxcgN{xe=dd?_=%Cy6JR~ zqvRaULXuPW&z1!PFC5IRxpCA((G@XnHncQi0kfi%BcS&vq0yS;vB(wo_%~krx7*=M z@{Rgr0%u^keR8(VPka7fFXF8z`mLS0=|nov?^=mQUl*Wn!y&NGmTX#I0K$Y&)Sa&! zOfvlB>Wh&P(+oUsfIYIct&Fez#&=IduUpKnyQ~Vc9V?G}HW4Yuts6MK zR06-O@Zd?d;zCHr64hXRO!Vya)maU0wHKy=JB@Y)OL1N@TsD8dzO5jLmLaHOn>Qvh zy$Z2xciN=~pk+7%Wn9F)?Y5u^oYt#}*K=w8l5w;%@kA8^=FYk~(+=BpP;IS9*=E|n zz}B+eSM7-L!>PEL~A@9!y)&86heUNdemi(bMSb>r_sY$`wrn@!mUw?|@uuXkY7B80Da z+K)-2U6~XxbP@;Io&Cx3k{Whb=Oarc2NormWymqd8%bF%^Y>MR1BX*xGfzJdnd4}3(6RX9^MWRfT z=2A#ln~mny3muY{L+g6x^`x2CIUB3q#puueJMxrpAi|M<=Q^4oof&AVR@W#EW(UPJ z6h1+j5?Pu?>{yYbmLZb1#xId$3-ljMWI9iiht9N6vczc-ESspbRZv-1pdmwZ3R7sB{q?|ZvE zVCZJf<~w3@q3q0g0=??1g5@T)keaUi25;qLIA$@ySjc;BxoNlu1J>S`H0LImdF$;7 zg!~v)32Qb76m;od^R9C=tv5P*C6gnPuc*eteXRl8 zIEZgHT#1*I3eQ?+eCjk;=26B}Bj~sfdAUy-fYwxiUu74w52P2sH}w|}#rB=?qYTU9 zY=8{B3vk1Lkia_U1dhyLQ#-+wGm(*nM9Gwj0RY&YPYpao>*pgekL@YJ2$RkzJ*blo zOBWv>8A=%J4-dC+Uj?E7x8_8k$(E3Y+W29Q`C;+j9@V3GH3&lFnbpHaojJo2-er}Z z$9~(U4S;4p){PIhZjP0XQXuTtxq^bRKqug)`eUDZ13@@>Se3ZYd?s2eRXH_as}*(s zBG6k+c{n@3&}^@7SF-j{M312ocORI}@K=UILGK;{v^qwvMBtdI7y0X4|BL=R5T=~I zMoa$VIkZyDkgrn*$l8*Jr>N~B&5dd7*fKvVd>)*`iKm6fZ=}@3?iwh>uY#1dCv;xd z3tuD#GWFzIrP0S_=?AWfLt;UnZ|N~!M@;BKu)DO+J!P~psFhHJk|}d1@*;cf*zwx+ z@_Q^$Yu1@gJDUE>Y++>N7Q!CK*bUg)ds^&qYnhY7rA3$AIP&G%c8vd7huW149iUUA zk#LMEXztG0{O{X{3O31bpjTB=Sjc`?4)E;EnD8Qk<|6hZ-Dl{t-RfZh*i;6()L^WG zyX{0vgi{?(0ZdRF?&Gvm>gd)0_8w8c*1j&6Sa6T->3-;4FM?%Dr!ndqYzRaJzx znk&>{pZW4-I^Itt3dUl6e#iuuQ(&Ju8JY-Y(d_6)>9%@ z3bOph3;UX=ypw$orjX0_89t2lw?m^FMSUAwGUI6|g|_B^lC?aa<`TS3l1*?GA{*&x z@bN9&s)8&Ls$+!@bMfdrqWpoli1#7A|8rM9Gh!E8;Mo7Vs)0;^W`Vxv&-eA)zjfJ- z(U{8`%5e${Dc5d)`0}C=Zz7N63=Jj*!IqG$#dlg%P=2*y0^ugSAVd5IM`JH zdXN3x4csm5FA26xjd~>!5>k{cEZ0XFlv4)A1s`&BU`o77_w^0e zmM4iSx2#pQW0%c?9oQELf_`1uKw+%HrV*>eO4ozPkU|-nYr*OwgoC*h&-E*TP(Jn8 z!lTzTf_e@1+r%c>?fHJu1z=ZHWzQ#D<5z|0P2T|P4&HOLfPGITtJdR?XADT%Xkp<%9Ns5;w1rarvDVj`WK#DDx zJi-!Vste1Ud1?Ig>1t7mv!$~}%cWpHVrJt94GXblaI;}?&EggDw1xipYD_4`0~8RIFho-ADZ2PZ>D zzn?(q^3UaE`9VNkA@zD~(kSA^(CvP&p>ZP))ZokWY!JGs@aff*p$Q${j2v><(2?HM zvaP&s+j+GjjRVr(0V)PHlZo7rf=?-qt~lr=D>W315(#1pE9n!Ols|Xh4tZIF(x9E} zL;Wfphh@eGMes~@glhgBl<7^6@&5IXv;4B=m1DxZ!tJA*b8?pz+T-FePFtd*4%ZzO z1qgGJ)SmHWi_qnTwpcc=`qLjU(hgIJcn5lOgqp4Cn;2XuYf{wKq9youc^Z1Se`~Pi zy&E%%seGpIDD+(YcVegT7E{JdLr2WW2an! zah2r-GtMy}JZ&aefqksxeAERZ+l@u}kR~kq%dPm6o90`p>_4!TQuRlN(9W3(OHdf7 zlhj52Aedd1-^AMa$9rz#ddsTJQP&cDw`hBPS$>kpl z8v&p;ARH;-6kP&08Pf!@Q8I?d_{oZC7B(eDAQvy_B3{_y{(SdVGW^Nw$BL1bWL~PM zHygMSXW8B7`*+h|blYrR?$u3V<;N+${#VKXc0wE%?N2%>_*=coFP3)^*KF9ocew25 z(oH7WLFKdrpq`+|YSyY*>%~I(@@qrwzI;BEByjo=vIEk>QZ|y_$^XM+s&kgU{LWRjiw#(nni?(*xk*5n0Ynz zFJgH@A@xpPRgx_O7{^yH8-Ytw87YWfs8TU}yn@jF^Uwe>miQqgpFd4N%#!09;=Mmv zunOzDQ3`+*0Mt8d?z|Qv+4@Dn3Nn)3lDThSCWWWvd-C^*s;ZUYs9kwnN~#&(ne`7Y z#p6js;IqLQ6WV!$V;-W)xLUnA!D_lYKn<&79`LrJY9QpYG3FGBApzyuZNFopIKWX< z;NBdV1~yj+1|B!_lDiEV#IBX8&0EW}YW6Bi7=`qh%z?wKm&v@9+1@3#Bz( z*BJ-?Ro!)JYqKt(@Z*tarA*wr_e&j2ptQhBJFuny2Fw4xB~%^q1WyBmr5v%H4nGB6QJzkCy5Cli8>ZaB60xoULOGoheH$DslOK+oD=)c#Tm$XUQrN(W!w_y#5*(#M8Oc%;Phw^ zaec`3c~7F2EN4sWCnGB53;y$7Kz|Zq?(JtE^l%w?j7V>YpY3NbcU*%p`)-ASBlpnY zK<$A-K0UC9+(BN{Ucz@Gy<#R-!X;Nl&IC1IjwRB`rAc&pWcaDM)utadin!5Fuv*c$ z&gX|4hS!T7g6mZv1UfSvUYcf%PhZ;nihB*)`l6K42*= zTytjH7SOu(M+$_MFSyqIvnRW^=IvGvtCYEQ}YwOz^#P>)6|O6MfXAPXIw_@ zUFbaYi28_;?ntBu$aNbL?|e$!Iq}eca<}CaTaJsD)zhJGcHKvcvqc5|fgX zejoT1c5YrNjIypsVx=XA!@$uis=vek zF?XjUx@ZxbXeh>^mwLSJcX@P)ZvHa00nB$9#j}M#2B9J1ii|qG#FFIMYh|5YpqL)( z$Dq3I*6{RCS*z*8@Rwqj?F^0n*pm}c8mrz7eTIJxRz@9GBsD&Nv9s6*0G$qmnHGgG z0u!+FikX7!-?a8N`U3sD?S#VhUP6$bKX1|7;mMvQH#iD;a9YQ(^v}-7J<8O$Z%W1a zxG9M@muAQ_BimTgq-IW_lHfGkj7YLaL99qV8=A*4kIWtSb!YeRFy!KmGaMI5r_I~; z3i>hz@(q&Sye0S^%BtS$>Xsub_P=NUDi|Z@v<$D6!Ml*OO(n8n`Mb7(NE8yO9_uL@ zoOozGBS&QV$2rd{ts`s2+(J4pl;oF3QM=aHY5R4uA4LxV4XT2aqh_30JL z-bmln-3_Komm8oRV=Rb$U*9<%a26Am^at45is8dUxi@H|eaAgolcS+%{Th;m>yCHg z6H0N1(V|D_zJT8lL2K*Z|0H_9B5cqjkref`B5CoO70I;bN9#P5seKXT6r2JVuuW-UKc8Kil*OYRgFj^?H2fP@dA|P^hT5j!z!Ar zsYs~^{89vQXiHYOkMO}qO-B+>y^pNV?Mdhk_Yeg?zs7u4^gW~p2jqGE_qKs2 zXn8yNFFS88OZd17RR~#35b!0DUexPETCO7?k>%ZV5h%s|uHInHPZ7%ZSDHh0N%bnS zR@k@CU?uodX}2R^>#_)H>uj?e&jQ`Hjef13ub-Y@zpB~@#jcG7F0cx!76#0leEPW= zdUpHy!<}npkBKE&9&v9F$F@)(-hx)04M-U|$tF`I-k!wYIIUdy(m&Y6K}r4Apy0LJjz(+g_H>z~+bmBjX-^>e{LM~W5wUGrn`s9x?i8q)@ zKBet?9YemVey1dz8Tueei46FoVJH~x5FD>5;QNMu!BS|Ey_Tt4B4+5M2VF&P>5vUA zY2izi>!r69V&83)yA7ZS#iP48HYp6zDTeegc@ZL`<$D98WXN!X3tKooeb}E(TDAU~ zU2LwPpMw5x(~X0mV(o?YWG#}l6SfDNa9-#aWHrJI^C5FCe`{90LqiT4J$aiMSXCLl zdZ83{Yj3recB$c&h!WobZ3$3OD#ydHQ-emmZtmi}?Yl(p9ll=MHkL-$h_<{Vxy4j? zPAESYF^_AHb0+0{x&3bDCjQ=JyyR4EKVyZ?ho6Y*+%vbVSeF%sZp(?1hUzh{ZoY+TOT2> zRA`pDpAN1P6BWH;fRHQy66Do*UjX)E*$PM-`On%0kMT$e;rv5qa+wnd%mulw1FBk= z7;l7qdEfx@?(j{*p|?_1a+{c7$?`Q1!|E~dG*C;yQvR$p3oU6=mK#Z*9aNVFMl&JC zp7`#fmUMd%`VTSSVgOK7F7BN4OI%o2tFvb8aoR$~L7P795{#x@+I5lv*~M*2hZ67( zat7gZfJRXm*H`oI1{8{P)ZXTlW8QQ0 zdEWnCTVH?6t2Y4uKLEfKjezf+qo&=KI@Co+GbE3Io*fv!cfOj?E|PqAFOaC$5&dw? zbRN1wy0g=XUtccT@BOHy7Hd$&0MRP=+v<-GBkDBTK;ymP^w;VIOpi0HvKcQxGxG&0Ab6Mu)g*a^b6?>`Fy)tWaZb+NM_cUCs}~ctf=XRYY!+Dx5@7P z-NFmn?vCWi(cg4oRX;BipZ?gzvM@ZMO{%_KE3d63y%FqhjDkrY`G>#SXI#y^n02MT zn>k^h^mUfhce=E!EO32o32Royq1z+p7Gh)LfoTRY5Z7*|PNjrbzyM&4Uvp32eXke~ zyv)Eo0BxXM2u=*oDw6j0Znj_(ylKW}u%20E^!5%Ln`URW7xhWry-}xfd(aUhqqMn0 zSYK2RA$QP4G^FxtXe<)r)m*I#!<*uV7%%4q>VG2N#h#b~Uzs&x7c@BJ((mCv6za{F z6Vo+G#hVy0QqoI4CF#5T2q^@<3ZIG}U}K^XL>71H6y?M1sZG1RG=oYp~+6&W1B#0yla!HI!_V<&zf8M$$_<2yDvP_OCqQ01}R}qv@D)5O;d*b*;m>f)6OsD)$y7QRmNt#}G z{m1n)wPcfHm8G^JI--C94=p8G?=Sz|jH&xEY&nc%e&gV0TyfdWS>)HWTs^0`>=rr$JAZVX_>M+9foP58Aq<(Si0wG z4QE(#ce$ENmO>YLU>2Jt5f79n#BN9)4x3RARD+mqn`b8yYbgiGEjY|gQW z`!CQVfXUeUwNZXbkN)oL-rno zq>)wMo;z(q$ko4Nl9%MRt)T^FH=m^ytr%HF;Cn#(H)?;cMN2B5`>Pn5Q@l=*Xp<+4WJ_RQ z*<{T4hvY7~({2guH9+W*=0oZLK;4l8NK;RhRt$~Sqd6RFKoKl^buns-PXtJ&w_vgI zrYz}*#gF#=fGSX9xM!~6d9LnN>iRB`Xq`=S0uJ%~t;2T;<~1`O;2>=J-XA2R)j7pcg@n zaFamc1f~vc#3+*sXPNoBWY=t!xqEb=kkw?gRk z1xF_n3zg=IC?NQ$8WliQ*j~{mfO4t6Y!PoAa0b$m?yR6V+$OMU=2A?%*A=C98$f5E z^0uAvwCMS6JTkw!Qbh6MBpEBOptp#nu)nZxU3>CQ7ZFted~qsXlUbiHYkD@jV~`j!p3na0MIvgM zpn1UgtFl+Pd)OJmA>eH-`(HSR}ZrkjGOcb1MWn|IZ{VC5dE%2WK%NUtA)!>8REUrza8H4d=1z_FzIA|6wc_H0 zwYF~c=ucO|SjSnfzh=@-D|{b?!Z-oDiR?4;sYyB`SJ8ooy#!-RJl#1dIzvR6kn-kb zy-&$vS!n08drCF877OFjCalJ___Fj0E>L7s2ej6Yw4}r(kS^>J1cU+)8GH1z30=imuDB6{R>9l~ z9L71oW1If?Sq?g@QBJh$RdAGm=-FwnjxladE2m$U!?b=1(Bm&cI)}fAM)*+pG<4Gk z3)-dY3^DYFbSL0 z?tMkDUER3DJ9PRKvn6||t<#UE0W!zME$7P5oaYsNUWe1>y#KU-$BV(ZCEsDYh2%f17*Oq6 z&x-Xwv}qslS{dY#9l|^ba;_s=Vz>{(keUx(NWw>3@yK;-vrHQcp_>;L$-QkvgfIeE zeWGG$bRglQQA#TqBLlfeREPS$Iy&slQhj$vQ<32o)qAbAVl_#_o&VGq!~xWuK%-%z z>@bb&8^58Md(fRB4fq;rvb@V|JCVDPeUK~Z*?C=0B5~JMJlSUcwh7^C$&HP7p2Jk? zqu`k4-G#V;33Dvi2;-;8X01cd2qgQjms z>mo#Eq^a)qh8-Zn#(aI#Bsl1>>AxITVInPT#nr_M3fW$jMm#pV4acsUC$DDMbi!7D zJ6iH4-8H(dvj~*#06#ZAthPo&cF8~|bFtzE zkBcRq(@+({Bc-!b`f4b){kDI~_UUFn*7wQ?hnd@Jf6s{p=yvQ%YWnK(oj zW`R)w+td?IzE2MVp_4_^|Kv94NV((p!iwF92oX@hld-vKk!y57KmlBmH3i%3;Rv)kB!vK{Ck`+*73`l{o76rebLh9MTW97VER-;He#{uM{L zEi5DD2nT`3mv-E;_duL1JJ45F&iIvpDxBsS0v7VI+cZDxVKyFWdg3l>+9c2|HvluG zS?GA*b3KXwkJZ@V&Ko$?P55Ml^Ko0#fc1xLDs(qEL0w%d_R=C5-_u%A@0*6 zdx?Fw=IQeAdN->sXLm0(tK7ThHD}dqCCrJVBXP+G+d5*=FR-q`2w7JabhQd6Rd`7> zM>6s{m#qhBxrnM<<({AdRfYa`WB8YMBnZvM9`E z(p?=p?Mb(h$~6@~n*hC&nKVv&8565gB|c`3Y8T4&El6ko_NhkH+>Ik!=GW6(7i!hX zvM-l4*)Q5VG-%QZ{!duw)hwGoB^=AN@!cd zy9(^Q7A=N}T)S41^I80nQT0wNzud}toKV4HiwF|JMt!qA!A&_zvn;oU(UfIZi%3t_c>NrI3De=O|iY#v!AVi@%xxfQudZ(M&$HAC8>nR zb}Dm6RYv05lSQWF4ouxWd5=rtkv) zxuQAh3GpTGcBZJJ$3iF>`oW?T?TV+Fgpfd;Z1PZZ*jVZ3zxOXAPN|{(^G~*XR`I z5jrpP;P&f8{rB9fiNvNsR16rWv6;G2{W=hGO8?A(CG5wcBUblgbm{g9aRPYpL`i4! zYXS~^?a+%hYfDBDCTZlUM?c3*&`T3fM1bgFcKZ0*e0R%iMyb2K7B#eBW!l*v+H{LC zbVl-k-{xunQW4I)cdb)+NDpZDXp(jmHcj?jk99|@=2um73e7SLz7VcF)Bi zORxRr5BtCPZyFT83j$EdyBbZ^l5lCDoe6KKL`J@K!j2@p)OqP7t66i@B`AHdIC#q0 z+V8z=C8{-P9Ve*sil{G(^JdGjeC5wDsUP%)z|HU>D~Vow?MVdVj7;<0%`jlzBP&_f z{2COR?+(Vuk(!DmR$gxo@f6#1Q7yO7A3)H7%vS-&K%0a|3T$aC+>PJGu&l6-|Hvi0 zlfHq8eTxN-;Ek>hjo}a=fIzxQY4c&IQpZ2sb@^no;~#ku9<#2MNQ}i}et@WtP5>3R zhp8fG*kmn|4M8bik7k;-LwZBiY93cbhW|GQHP9PEnM&>%eo3@LIIBzs(H zR^A<&(IOxyDHlu84@A;bC}0_K${b8@H{%aDDg;Kou*7V4q)?oH6ao!=OzCT*q*%10 zfUuAG3asq5n_pQvIV(^RDR*oRaH_b$8Zu@;*dh1`EnyPy#WjOAyeOIq3M^ zP4Zve%z~+Ksi~{P_w`q~-Gbai!7rJ27xMrAi%uFgJWH^e`-C5HT~g-LpAXR_bHc%r z{I~a0&UVoet!fVsUwL|-zBO|FIeqkPz5~WcbE5YI4Q{7ArN9%xotE8nV!yEicRC`i z5F5QU&zXR39q1->MSP0!9a_=wXX5Jj!k@K)kG*lPtwD{=|xgk>h%8{ zRpp(DA8O{Axe+> zGTgtW_xi6ihH|*MzBf7+yl$dzU;IQv@=ZB!;cuju_I zqg8lNuLK4dN(bsy->3S&NZxwrw6i{=?#TDISy6M zji$Y2#{xe#qhl2)(i%}*3BF4^AC#iYN_RV@glfhz3gTDZl{S#+S473mXxVy=*oam7 z6&p~qGPOa!1k3JAoycvgI|LFHqN{K?b5nW0;Tg{>R}gtiX%dq-(C=`hVCqR?xR2|g zKKD!UpjarCcfz^^`GR-*@j#K9O)a;jQ2h@Wn>XIhrCm09HOIT0jDv;7v_@e-nthLE znCD0{4qil~SB^a=I|R-<=WML5aE=JyD~lzks;_p30~g}|DRFdYWffd%50A4R&am%O zXhJ<-;c~;kmYKqwPEBaK`Bs-KR)A#?>oAshVstt;?AAn0b-+O41}xpy;qJvBp*2M$ zwHXVb%VBO0+2*ZGA7B!O`I)3qR;8M|1+K||d4`ya zsVLn#H<#?8aEbIw$kd@tgtY@yHe{#*!%yRQxFSD z%ATk|AtL4vM`MejKCI`Ercj_Ri*W%8$#Vr*u8Cz(pf180c8 zXmY@Md1x!Fjm%@zXl&8uSfeAcU41EFX6r^A;m@8bvI1HnqP>{>*Fn(i`Vm74^D-5S zgzLg;tP14e)t;Y4kKbVE&#vH8(prI7{0sa~SK;s*V{79(0k6<$GGJoutN?$?P%>xL zcu|b4NNusO+j6H}nFW5!uT0=kWdaZ~eg}pJ9*z<(OL~$G)IFo){GRgeW>N^6_(nhbB`t5=I;d0J2(Css9z?*878(Gaf48KPPJ~3FvHy zWatcK^mVti#=7N#_Kz*MR>qc{Y*vPiWvH}ZpVq}J&X6zl`0{MwVHBz=KgL7~kMqK% z`N`DMU8ym=FlpT$&TX73!m-uQpYj3ug)BRehLf%*@Yv%Yl9%ZYb(M3ajv83dp;P9A zydb5E$>CpCv$sySyoJZ%kuo|}e7e*Y9@bpE_|Pl}60he$q&h!p-Vx;!rHuL9830u6 z13Ftk8Zo!Ws@jT9VU`L8H~>Xh0o(3O*lvRLaVBcX{Q=)Ym`Q>FpbaOBrS_%fNMSZg z$7*Ssj&dbJ=`dQz)SEW9=E7>7xbRvXVu=wsZz3|c;q546g8s%Ia|cp#PuwL3G-O0-I*{^ zE-C$DrK^1=5?lMhdd@ctOQi47iq1}rx>8eCK9JqDs>UqCx#g_`9!h`Dnqg4B`Cv%c znUnds3LP0|LWszK4^wdYZ68!uj?HJ@1&M0d%f`Ha1sjk0w{G|oFLUPc0iDiH387Vo z9%3*^mQz-2E}Y5U6SwfU=I)1VO1?0Xyc`w5DD>0(EJq+)#7wdcq9X>DT5?Chi~&K4Wip5?}X)s!>*sh<+9H2IzcJL{1cDh2 zgYUjKS|ap5IXw4KIl3ZUMvL#C*+5AF!&Qfw>gzCYo~LY^;Gvb8ew2sw@nnHz_Mz9@ zPntRy@;zHlzE1-}&4lQa$x!9>MRSw4A(zT>49)xenlJMB`Bp2&jzbREWRA5Yj(55$ z7S^8tyo`4dBt*XW>Kc3NU2TEYU+`p6Z&HBgl0fpLt9c(aOejXqS;0|2Jq8&Rc?8V$ z;e1ajgCDvNaBHz}824Hq^pYbUZ#QOF-ENMh{W^d{qi0^o1P7nME$`O_dQ=a@EjXRR zX%%X90_Qr&*gIrhr51l0yxd)|IoMKCCikaY)0``)FI<^j{YUffan*lpZXhPo1vW-V zq+i-VVV;EJ)THgvILgmfiuOVvjds$`sydnK8)}(J(MN$uQ}%328v5>1e&d!R8uq^S z=z-L|cn=P<0oj8~kXD{Rli<(4N@PB+rzrskTBN9nqOw>U2IITx#k8nc^Z7`LL;EEM zK_fmwCj_fI2>0(tc7j+%Swv(3SLTnQ3TNHL`Z$>g>_B!?K(O*N3u{Q91)9ajXHk+0m2j+r%ZE9u z8;_Gsh-4~BoU+nb$1JFM49Wf*dpt70SC+ObIA5_(6Eal#yf8YMt<;SxB6KfXPSrNj z#EEc|VW+rTqv9CCdhc;Tj7w<6r}lL?>`RWPyG5%CidGuFts*6!gP1ODE?LX<};4$>@(fWw$lUm+@m4=sX^}9M#~%DN6N`z?DI+)n+VCmf2x4RNgQRsz1>khid}5Bz$My;3Pp}c}}qFpv%M{&Wi3~W=O?#07V->z6S;tqo_@D zFH$L@Q&T6sRAyjovS_-5f9}n@7M<1j0CT2csXNW8D)Qs=fO~^5Vo7-YI;(=vt1c6d zaU&XZ9pBmUnIf*PshfNai|+gSIay|*^ivOnG`%YuUX5Y~6>2Y?-9T$fSfu~+g$03i zl1rjDdQNu$-83JxH;h*Yq9+h2QKF^MHQkpFgxlIl6ONwvsv#|Vy_~e=XR4pVUv-)j z#oUpBf&(JnW&+-LM=Vu?wogX7<8)ugF+MUu{zwsaGp= z@|^gbV=;MfXZ)MM8%K(h0kMoDR6st9UMnE?WpNdAZjMNaf|@^;C0pO;E+1?<=5Wdg z8R$PI3-lfJCVQc0?iCL&@o$d}oq-#hD|3h=vV3y+MU#)y3;y>#OK(E(KfbhC_0oT# zJecxS2jnSmu@sMq#Q^YCU_PcoO5yI-sN{X^xt6!c;!hJRr7d7f$?^T@Ck-K~Zy^_Y zhg$zEkK^>>K!v9==4@k6gWT_ z?+=JY1^dGT-)40I;Mj{BQJrv;xd;T-kvrOZ>q_r5qd4m`ururh8foNfMHZWh!pH!G zOFhh#KYioqy`;G@S;EKK`L#LYD*w-tdS(= zAALrfdakR`84;HS_yYy$5)81t$H% z@6PC?%tVo<9i&J|@;ssH=YW^}4$3TYJ&=GHnY6$shRgQ&xFD)gkbz{_J+2(u_~JWt zI0*MBy(utD=OZt*MR6`gQkp6vagZ$VVd1Ld+?*C2_t~hl$g0|-Vl)Wlt{>F`V*Dof zlnqmd_RNXNd9X;n(#nj|x*1ol?4ALyN?+zglNW7O>yfqwuyTD&;Y$zFh_ zA=gnp;dl5TS@$X?+`9rtebsk9jTO;(ltUGUVfQ3)J6L*MYltvYTr(DSFHckK{IyX4 zv`(sk;6`nn1@1+waeDtkR|cJ@%ivu~mYQZf^#U(})hPYm)Hut-Lpqgb$T#E+_^Lj4$5t+`(JyCa z8E9NRKj%-yvcr7WWF}$;5vAgDef=xIDRTAlY-%qGk`le5xPhXQGPWqU_s{=atIRDq zRhpPoN`N{L{`&Ka&&!F znuU)$x}4*YIJoLmCC^UUwE<)qYN{sZ+|>*2$=j%XNm+d)lLS5*uiR19Uw3=d7S|{*iMZv3HC`sh)!cDl!C8qaQ6{ua5|bGHH@} zr!c{IbAuzk4c;2ABtT+y(ljRw+u7%Ygcd85Ht&9Jfk&-RQa&4k`rNUNv)Jt~HL^N# zJjZ-`)->-z(W+>g2J&UL2eaobN$Z@XW&9_w^4uTWEe1e-&^!8&O1Tt)e26)TcX_lfm(ia>oWY3#QF`}pj+(Fa$Nj* zN8tP*!-1UteRzClezD(>g{zvL*d|n19XAhz7PoO}u2BlPN5dT?G1Y(FdF$de{}IfeWh)gzA>>@X1mL!yr#1xFm+ma4 zZ|Atz18^*Ed&$yI4T=vCX3Nxw8|xZR4=GJ8h5g#jZNWdC>__GlC!-9zKZ_MVpih3{ z&7*lJr0^c&a(o)}PvnZU9zKhH{<-UKPJO~AC`@QY(0!$ZfehjVq>}TLn;H_E-{O>K z8tKy~>iPo7khM~W>vz>x>KP^-pW zh*MwcQsAKfF?%V(&1BJppXx@IdNdyyrT?4$OtdrjqPJL%?4DAa9`LXc3uv-eVH~e;)i8$a8YGq?xA^KyZGJH7EU47Jz(5lFD2-=27 zivj?>LC(~B{Q{q<81`Bx6_m*Y@yXB)jMG&&PudFNbp}wK1@aCy3SAVVsOr!A;$B;~4zC>wV*=lu~~U5u(FAvbPrn%xPg zvoBJ3lbZx3zQu_ticMf(q&Lmsrr0l3$i|k}>%I3?Lo=Y{ZK=AwW%KrE9gJT27W{=n z>@UO>EwD(&?fbr4eX)zJ2h0x9X+}EBp8oA_Lu$W9^lgwZOa8n{@-0dhh?)4dm72{; zwfnQeGaz8;;rUNqs(+dk*I&;i8NZROSu!=+d%71X{o=#zC>A9WCtWpo&qs50U&|?s zyeGIkeZbvsI2=#ES}=-6CB|iyF}EJQOA&nN9iaqxkLB=9e@|UTN79qEf-se28rumm zX+r&(G0xhA*%xp`UxTu+kQ&HD0eew=XT&1dvyeQkWKS;Q@rnL#Ktsaw4L*Fg6|m;~|K>zl zP6#oCa!=I~Q>jA^mZm9wG$hp^edGURB=v}*$SW16&n2$PAg;*yOg3F+Yb<~5rujO9 zXq0uo8W|doxBWz9r&j(Eq%kM(73VI1`BkYOz#Llcwt_fN=evCm~jF-6@ z^8WiQklzWtHJvu+eTAqD#e|djDe*aUI=f{WN@%K?;v2to zO_jf9RPubx{>Q5T46;?hlYw0<|76Bzy>YJ5NUO0;+_zPIu>v<%wVcjc?*bAiwuT|f zGj6jC)R??E*r)aVeLNO#ktIOjK1_PDU!JKG@Gqw%h{HRx?8EQwTNd^*07JsVYR`HI z6Ot1R&jYUuxAITu@Bpu9CgW!EeU#m|Lz%kra;ZVcxCWZ}&G4h_|8>cej66@cxr5^r z)|2~eHFo(XgU})9ImycRir3h;l%2-;xriwWa+w#%UwJ@;r$l2OjuE)>N<>Up)WUjO zi40yy(t-R?dk^nngcTDgX-EpA9uCW&`Kcq(Fiz{t1@YcziFT;P%{TO8y8S}KphEhl z`RqkUN`izDI^_dwz~E9>ijV$#&+0zwV-0It*JGBYn?8#Fod5R>8a!sU?}3v#IEthy zWLb7~!!$>b%5o-ld#SM=ohLDvxD|CPE8W0^7W8&2jfwI;YBuluA9%na(cu3IAcQ74vskSg8mP0E=6+ra}VtxiH0 zUj5DFWzhyy={`*>9tM@lHpY%?HLxm&?we2Q+Wbn{zJD;$qrhDB$SyH0R$$N`xbgO|`W0rO5 z>KvE^(!+UI6Tt;hviW*a#)~=%vcNh=9sx7`++mMfV&*zn=&3}=Tof3Nh-ePB+Mgwt z2%dj+`WRe}7`sl>2$rpTo^fTk)h%p|*?4o*N?Huvdr5R`3On%lb<%DcbQ3d$5T zdidG_?Z6tFL4-IM`xeOE=2ai+l;_`i*DkUH4CsQ;l~nz<7DT31ZH%f{P%9Q8uWZEt z&&G3Su;^urK9&N&LCf|`S?i`{Yg(PKHq{qO_ykQ%eLkJqjogiID@~TdDGdkjGXQGR zejYc60R5CXe=eh~HY2+~07|0~(D>2#_%)O5ugSDSL-I$D?jYckUb5pC@!!Nd^Tki7 zm~KQiraf?|hN0P`!FQgpi zJJDM*1anjfwoG97a*Zr4Kv{>qb^?y@ni7rOjnaVW8^#Qc|NHd|9E^fMe)33Zt5lJ0R6t|J%;w{nTnb!`oAxzfSTOWTJWNa&IV`D6C^%{wn&$VQfo&4LFQ~( z32Q1B(F58Rx*8g%B$(=F;Yf}vsjJsT*&Cgd?tjslB}GgSiB9Bka|Q2(Bk{suI-z&} zZLo^)MA?|FeN_5tukrepf14;`#J%wCWx=!^Gc+|3tE~uadcG>&gWhwaX!_(tC}xMA z8v&fI6MJ+?>-Y$;)}GB7=sM2oR1-l^4Mf{C#zW+!wei#TLSG3&v%7n#&Eb636qP*) z7?-2lP;n_`Y$}IFAl1F*KD$^JJF*@|olZlw!@@V=)RL8nN1IYPrHpzM!3ykjLc8-&F4=ryH{R$qG5^MHpJn$wH?I3kKhM;23_=g z$8^;HAyw83d-+7(aAf4jrBc-_MS|ghbr1~zQ~yCL!y2X~{9#7B%fjLya1`I&^l8xK z{f*a2{poZ}J=y5QoJGS77*9?mfuE)K^Dyuqx(WTNs* z?)w!~*6kJRfB|O95a}X&E=`aMTIP*+i zC;6r-qOcX0(kM+IPu52zE3KwT-3C{%y=yCu6&otx_PDFi47z8g{J7X}s{)<+j5)9}@3Z`4JneYn1c9tp$% zoh+7}RpANM)Cngv=9gNDVUYeIs0R%sQ?ju3<2 z}rzqQ?h*B}2yBvb$Q)VOQZuz%j z{BqHtJwX`NQ%i`p&?pv26)h{=4SU?W5uYohsrWT~fn3CRiY1$Sam-1&6%6}7sVOn) z(`$$lZlYV5;#sRh#(U`2@VFEE_}JbMI0B3@{V65`MsZ16^KXomb_CXEntkgL`IX!P z4-sKTy}Fxvgxzoojke+{9P|7bfcae_YFWIyCRVNi zeYg!@Bc_H-gY3|*L)bU@dAOyDQtHQ2+wi>yrOI+bedYLdpBa$YweFr925Wt@9~=S= znf{D(HsfU07Al2xd-ir6bSoVzv0|3g`>Ir)Qh0Ng5-O*694f`Y3szW5x}Vg=oV;db zAb5&+Ms!cd;73Pi3tvH7dGExx@6-e|(@S$0U8=K z5+WS(g-jfmhH^5?dc50FREV&9MbWEpS{*F?2t9YFZ+EMIXIBt$U8z-0CyuI=oE zUG<;DOR#`cFjGo-N1d^1|5z%^!QpaR@m3`psbXy*tCSL*G)?ePP4Lmxf|*)P^e-$m zK859eXz@`9xpoG7em=)-Rz;99r{zMHot{uT$mY)3ZJ1!{Atwhk6#qhVp^=)uIh9=>vq)Q@AaQfx`F+6r<}&^Ud>BFkkx zaf%|sTcP9zUetglCJ^$ScSIp!5X25PZLwcTjmV0R-JP6y&Ti&x4yPQ}kd9eE!2P*k zIkxbg2^yI%QiML@=aEmL;t@vl_H=C_5kpTGCL=j%RQh3KMsB20O9#*pkRE5cdKSG4 zdskZXM@(Vg)6SG+49W@Nv!0fN&ha{I7?9ndJa#+w>#SyyhK&5*71zOQM*A8MqlG1# zV$QABa1F<_S4JxP{`C0=$!CY~&PaYX*>u@QjzZYGkcU7k4FE-rZI?dF*XW&fF| zWHsw`%Lixj)OncNFa-mdEp@uC*u9vL`EC9Hf|*{}=O~U6WhFj@MPuZt*rA~Bq=yRM zi_c_ShJ|=vBZ=x4nmdlc<8J9Q;jH!Mj!IB#stu`D(Z$J#T}m>Ii{Jo&TFYlgynMGZ zpqK_ikGsjK$spMzSE7}Dj%4=Z3%qZ+&sE^+fd6WR^Wo~VDGbYhYF&un=&}#40W-u^ znlFWEo!v6mgChs_w-1k*Je($|ut$M$UHT(`j=1=%_m@DK*@r}u#>iaQw)iT=P)KgTj=jOJI(vk|shEI+Ahk}mX z*hoe*cs(XxwzejH@iIL+Un)E-gjV~Swj=PR7b++3*|P(ew#Qh4`Mq3rlF`z5AO8Gj z?lIKS_%^9Y+?LaMfwv~yuvX-Ue@Oi_7bCUh2Fce^sdrXLNQ+g6 zy7veOiUgMXp4{|^_|Vh@JwZw?=`-uC{f>XAXC=-Vy39bi_7YPrFA3ZYi4&BB{8bZf z9UegnFx2_}leZtTi)Z&08JQbiN{SVLQ+O|!#`rcLCLN}z=(xhOjwLBf$%n?n?WTSa z0(~3uWXEYO!(z30;Tg^I6vjtAS!$WXXLgX0LU{r-uZnm1Lf94p4}Wnrr1}9g_pGH< z6&=qFI5`K9BIH(qM?4b%?GS{VCOS;^yXl`OcY-`A-0}|jji|HVFfj3C1`e65Pk6Lz zUO1djt^>as9jP~7FVK2oPN%b(bAdZ4eJ_X@`8QnPGb+=yea>ZG{yP!s<1Brkuo0v( zUdnsgRPdA)k1)UTqcF3R)7a-t-89h#ZUCg1E7VFpD516Vx5R3|Zb(hbDFat%3uG3> zCxQ&PqJWrl`k~MNDVx-~;uQVDd#H15O*vtdR2cvvKEwI|gP7t0WDG?G9{^L? z+)1A0Efg^A?GC~kmojfao29PzYVxc^S&!96!}oTfP!5Gj8%ciQ&)*BStHFAl(B2*I z;R`<@Ll?FO0B!kzcJu2OHA%hb$&h}$5A1aD#i`nW^nE$W2sHSgo)p4X>Kd5Dz0Y%B zzp)CxQn9>sO~xhko-L6K$ruWvEJ1Ptd1B7PV*fC)cn-yh{PAasfIFbUZz>;$H&dyS zYMJ%MIuLpu|96(dAj-E6tp+!(9NCk!-9p7A?FkJFhf#tVTcNM{4S>`)(pTmc@<-^M(kbwvgm4No#9Lm( zur!-L;wI_$x#Xa6t+vbix*8U$ZrWFc?TSm(-v}>!hy!z5Q=MNQ6xrl+#jMkv zS}>`i)`0ZbrD`gPtNWLDG${c8KLEh6U~~eR(4auX#XIBJV=OmS7^;g$SYvaNi5QuY z7sHrYnslj30HV12+V?~Ga?8^wr2I`mW`Uy0p#Vj`AsCElW0vkPpr< zg9~MLAp*)}jKga?IGtqu>THW>TlWz%hXSM4E~MjZ|5F{*sk}tgd$4Qi1$$KvlCWRT z4_87>V~4Q(n(68DjQZW6U<>unE^2mtUV}WkZp;RCfDArwsCbl9vd?DM&hFz;<1JU+8>`~?y zby@!O1=ssM5b}AxyL7w<65xH|@)v`=mtpjEuy=*He5031E-il)Y^0^r1h4{$OF{yqU(pT99HE}nz zcI!EBvU^f610|>BGoEi#8moSDm-MIRe_Cs=ns5-JjQEPRX%$vS6~R~5H7plvS5L(Y zK~%;uz(+Jf6@_(}EJhHxKGS{vsM}vTnU2DpdnC|IA!oh|B1~guVl;aftgx?UbyjPo3R59b7TxxG3QUb490PJ(9 zb4_snNn4Yam6^W8bKfqCbn-GA=B~YzdZC>oa=o(!f)8F2CM*Ayx#Sk$FvP;n;jf>V zMVz)2zyf}Iocsy4MuIbKwCga^Br&K-^W#6?MEHlZAB>P^<(P@93SA}Nk=Fh44IFF4Bg&Su8$=HN-ondp%LS~vhp zCt!gm^Cu}(xz!Llv$cYvaYoroR_sI>=u=N=DF9G5ZAn3zC7;3Tmi=Bf=^z!fWJIyq zu0|X%a@q+ZJPA$QeEp@a2Fh*ubitYVo6{8db>R%>n}hjh`9*R$)Ql%Zybh_>(Vx7@Tg~`0ZSR8TSS*NA$RpRzD}e=WDWSLRzw{H&m%mJ0jo2oB-ngnlhCZy|P%GRF7hq8MAeOUGMyA0VDs=>A5;nz& z9aI*9ag&@b4~0&X#+h?K4J<1duG;>>G+<7)0kcobE!elb#nFU_aiUjrKHP0x`Q-8_ zd0p+l82q57v3rAqi2AbWVHORT2U_%UHU6C}^W2cT1{j`~#j*cjy)yi)a+k-G7U4%A zxxyX89RgbU<){yUybLp#0QNcCswMumyLW1VyD{8`dz*-{4$?f9+ZaX-jqthcIfe(z zQUBP*VrT|B=vER`GU?OyVX%%WtP{m-(3+*&lsW0Rsf+h?u}wbiICLa{}Gy=jTVuE5;C_;r;hzLEraGGJ1ePE(W4(nB)crA{@rN5%dq1n`h=7}CsZ74 zga-K$j7ZclB1Nq6SBX|-$$_henc`hg+L3~5m(M9f!P7ziln2?ufUR?u{P~}QYW6E-Hx;Q6OAJ!FG4}B52*co2i0wdH6fz&MGKeoAL*iG ziQrDTKRMw*m=dqAeH~ckW+CS3v8&`?hk7`g1!R^cXpwl;(IIcj*&N%mhfkBESCyL< zrQ!FUq)_+R_^GN~fiD?IP5UlhiD#|FPDqZ>x{GlMmPjn6`3^51K9y1O7D-LnGQCRJ z{CoCB{xcb_QZ0nW4q%2YT+px7Xfm0TeKnnM|y@gG4Ld~7$Z_j>_R3(2kz zVX-!0n)+;x%2(46f~j?sjg--`mUd7kCaD_r@7yIA6GcFy6untUDmgH)9~~?vBKZ0$ z+($dC|GA63w(j~HdsUsC@h!Mqh>b#QsuZK+q~NUjKPm7aYPaoX)D^(g8>{b})5gkt zB>0@~MZ5{ED_^~kLjAAnnm#EkZ!s+;YnY=56d$MwiYF0@v1(rr%kn7g5;m%23hAH!70ubRL$U(o~>!^ z#WlaE-ySA%xs9*CzWYI*u1RQSru|_Uws{4^2ti34Bk&bmZ;C>eTaQf^T@x>v2AV)U z`D5y)K!;UZxsCqOlCp2cU8k)ML2{hfX?UsCW2X9?^pBhYj^rfJDDE6@O{+2^F3c0% zopZE7^WFq$v{wCx5x30c5W)pv;>hd|kG@=KsplUkRtvw zv+8nW1$T->ZZC3p?xbW-!Q9h9pMz{TPVxFj$^{(=3z=zVqFdGdT}YuszFc2OY}Eo1 zK_N7N*Df*Kp@{3KE({>8*}^B94M4n(D&jP?^F5Itfl}jema^S{ntcJ(ksJJ?RDML6JY^RCS66nIciE8nW4`bTQC7L zP9&QB>9tC6`t%SG3L7v}+=Q!M&qZUaHASf!TBAICw~$hS;t-UinI1RwXYr#DM6~VV zmi9kBL~R#H4z_~fnwi9awI#soQ2xs2685<-^19Dcp7=TNv=qc1?C_^i|1F^9ba35a zGv|I1l3qCZftkVT9#6jHVeUEF0=}9o?19+F7h2adDO?$r*uRU8RJvK{G^A8DZ?ZCP zT__I!W;HK(gO|fO(T)1u$oRQef3p8ld-(W|YtY+3+r4t3W?+6OYya<22Tg5?IQQYr zYEU@S2#E{N|V^=%MDkC6ruG^yoHA`{!nK@VRT1A~bbDOy|B#SOj@+ z4U1j<-DzX=_%J+CGJR~Cdf8Q4_2v|A4&6HlH*E?9v%d1-3gKDH@SF; zcwr&JZtX^;ZX@bp|CMs{zGC7-1WcZKi@=FX5WwR6gNn)llHPbQgSy>>6`(TcQ=SuJ zIvcBopUp;bGqM@`pP_)Ir|O{gnn`P;!yuhyhJJE{g%Kwu3XGSpNp-Zckggp(PO&(7 zvowh+dAd5OW~aT!O0#Pl<+;r^yaB1qG#07Hg7UW!;(YvwK(TR#8@#OCpNL<-8UI6b z9O@u3#{|1OuOM-vK{d>O#Wf^Jb)Nze(FJutX8j-KB~@_9pc|Mp2~)^gc(5mWHqyXW z_;rqG$^zRMz(^#HuJ#k*&NRj+>;v zXOGMQAl*uVDm4T_l&E(i3lDqmeR*w;RLmANf(QN;YvPh$nA(DUr>6sw1*tcj3$)9z z?-Lf7esj4(iKU^h*a87aK>8YEupkdLE$+M(x~F0kI$z+!Jt1sphGc0jVV-mp;|nl= zLU}!kRW*ncH~tE!tYKErbnoI2Kmry#+}VN=ILlD-0%q0#PZ?PaJw_N?ivf8g{935f&tW zp6fH0wZ2bT8_{k+#zu=Z{D(c(&7AG3nj!$k6-*Hr@2rp#{rBa4(=8_~QqH7@I!507 z;O_Ia9NyLds6fMX|uik z-GN*!F<3`edSZy8T9Z!VjG}~CR4}i^p5~XEhBvTds z+KMp~#a*|8xg%o6GH-w9y3L#H&U=Ml|Gv{6T>b_I!CW_-bhe0ofy5&yZT8ICa+9Yh zi((;5qlEY=MBA-~nAqG7E2Be>n+Q$|^H2?g0eAFj4(RW)bcG{HO6pqmFSp~&T}M8n z9H1aHqAS$=#ML%rD!4!!>JGw!J-pD`W|RIIB)JxC3Y4jj3DVxwl@0Rp(`Lq+v{QKC zUf23ub?{<1HSrS4W?cwN#M~Y0LU-YU=?p}$e*6l->BB2x(b&en|3Vpix5d+zebu543cXt$@dWu06ppdc#<5xL63$ zlNXONYcjL~O5+0N_H-3d9$aMjjs?FpTDJPTXN8{=O*6&Tlf+DMy;g`^v1nw_2FfU7 z^UpxQj3`w6LWTS$-+|+M9h@h?^>!ls0~vF)-zR~{;MzAr52hfkmcU8U1QdKFMf%w% zBp^a2yjzZ#3!Pka46!_0=3xCXvpVL+TO+^v9&L#@!A(8c({t+Z2Lzm9!S$@|%MI2z z#<do+n ziW_pxKrjOJ)}TLVZbhC3bPm#vkVuzhf#oE}&1$z8^-!5Y46CQ7!2Tdu`HPDs4Sf=L z?{`B7UtT%Icj4;=Aan;XbG$lk$8V~Uwt6c%0O1Z2W8IbQa2$)<9dL0xK6IJC@0P8f zBvQ3s%3NPYS~mr+H-rO_NnLE|gW-PSkG?e=XJ`zNry)KSPT6A6cECDZ z3tp!47jamiRDwGG8@f0H*!Pl)3tU7l;KR}fH zL4=8&j(NmvUo{~xl`r$;`)S}Y?E<{g&wfnddymAT1+qBwU5H!hwVOrK)$go8)pU?h z53{4un#m!KZcG0dSOVZ^+KF`401a|UHrAXJp)c8BN@U#~Y8|cw}uOd7w ziLrkBtP$8V?AJOSI9mfTq+QnXN=1W=owh%cYe6&$k-`ZUONVCc7wg@T0|DRfw-hz>4oCU1N|Lm87(gLz|C02fPDnJpjbN4Hi zIpdB6d`Prighbq2&e9;SqrTNFM*i^-B-fgt`}1r}-ys2b=|7}~lNfg8`^;PiiRf!# zAdS@G?Df5IzdSoypr|>zk(O@)bIizS538t(tYHP26)@G{CuIiCR;xm@a^H}l0h!7x z?W)R|F7MBxrrYY&v>NYA^@Dr+Y8xYuXH>ry?sK(7QJ3_hBiD0{?aH9H>&+-%{BcsC z(>HVo10IVHN*cH4(@)N5*$L66oV_}<%axCjEyAhu;rk72;YrWZoMX5)TIjSIeEY*M z^_bB=YTvev=h0ox%4=N|(UV&qduM*6>mz-&t>oKAvXQ0a?CD5M zh+Zefnm)m_`i)X}hT*UUD}+u9Fw)e6S>iKA62RZBjRjj~JkE*DIFG|A!zgJdW6$RF z{NiNY)nMyO?DMMgDBez+62jm2Q~G6Jd!CE{))6as&C>V@eYVeCk+rgxV$%RuSx9^7 z#G~OLQQTqv5F27zx0B8F*l(7J>sHL%@>Inn`>N#iz_EI9SMS&P0fRc&2z$5$C3U9> zr)$y&5gPW29DHky5qKXL>$z@pzLgzv-eIX3iLX5xza_H_7rt1NC{mozP>k^g;=)&1 zF2)rWy-OfUKa4P2h40@EMp@Z{DH=|bGs${vf8&H4J(Ff_k3;`)jiY~=&@E6q&jZq- zK^G7K|2!R%5QVqbG!qv@VQ*kfnFZhw>zV)^i<|wnrf;IvZGrt+H6d%p>qRJmjMM#* zMGR)tH!1!LFYWTgVvNrWBjhp=-lD z!jbccJV}+g?LeszeRm$(1OPPxE>DeqyAhj%NOXl1RTo%4a+6yl>D&^XdcIdxA*N8H zOq(!}IOm=^gPT+`A0H_ibW!TsC8>~MQZm|VeG0RGDeBPXj@jMp53Z2sNKuQ<%Ybpr z8)w}W6SZKeV!aXx!5M%hWA$O8yqHr1q*_<#7B?P({z4;T?#|{MSoxL@^-Z|k4;IxQ zcNe(Y{IW72*$Z8sa{9h2Vjk3DbAcuXKsvwIQ-G^JLb#GDMt0W<0t4dE&v4DfXL8c9 z`m|LahO`XRcoZtdW95@*DNQv~U^R?p{G?X+=5AmGgb+ID=(NSw7r=RR3ehE!80(NeKxdBSFbk-`)I`9RM?Q0^0tm-B)FU@^{ zHms}zG}o)KemnmN`bUq3NG~Pu7RzJyN${P_&=%&d@oAQ-wO0x38lxw1RInzA`mQ;R z%-BvYqTzMeWggRXIJ3D#aDMmA=2l-5#F0a*PL=k-Dm~g&?GtJqUxZ;Q@Ur@!Ka-X# zWW<7cJAJ#+ue@>Wn_m(1g#P!JQrQ!NkP>&VQGQS1A@YPjBsk6n3qHeEGyBj?My@hM z=Je$fm-jbNyWWg_P3ddei|B0bEf5^E+UOA{5~~YHmVHT`4!){UQ(U|&VZ}>kBjo4? z6(4E#v$nY_hh_@J)Flu!(@U$lDX+V~&2x8-?pU>SYp^9HM=r<8g*bi07UK&;i(PMm2 z(5}n%c-n2|HUkG#txowE%Ac3yS+oUcju}OhOH(P$>xsdaGtXIwBl6 zMfy9S3T1#Q5}4N|t&eg3cx5}JPl`LkYk+pgJ`#a61&-_$pB?BGobRutMTHAl3;7Ve zZ80<7dO~zCEgJzr;!cbR9fa5G2`4j;C^3);Ft^$37>%1_PoUbRoblq_ALO?oa7QysQN-^9aQ9p{rgf@+g+FG!e`&yrbu_|6w1HfbzZyY#*^~ zoMz2W+MivxuSD%S~6ZaBmVb$Yvnr& z->iv9#>}2c08X1Nj;n7Q>J|6hv)^a+x1ibUC39=Wt=Y^RJ4CxrKHcx(l*dorIrIqi zf|J8FD$b#6{12}=3@yUOZ@P#sUh&gw^#053DTWLsA2sKm8s;xU;(()JF8_vEu+!S4 z=`O%%dmefK{hb(4%hf2u2VPnx>BJ*)!Do4G8_yh846#ywTGu)*H7R)br88Dy#=X?I$1(cmBPee65 zv{t_%1$K?8wzRbImJ@iEYSer3s=5ftmjA+ESV3DxDse5jI;X)c#}YPl{OO^CzL}%C z<4;wbCq3(8J{f%4R`2(+nED$);~M&V?r(Wep#G`d;|$}Lqqz9oFx5X4m%D!Itdf%| z2I7TRh>C}UL;3FQZ_nf0g4#p_YOUXwG+NBfW}EM)AoNNsWr6)h6HE-6Y$!rH&~Rt+ z+jTYxWpb_ZV6m`ONxsF&kxddgpKyWCw)-z}?)_I%4dg_+9FpIZceKu9Ow^!}P{FT7 zkld`nkkUsvrSddD8-oEGE~La1Ujg*x(*2#DL-oiQlGW@0Rjrvc6T=Njb#( zf1%2AG%Wu5dB0j$<(L?-a_qZqFHXp;efw~-L%2I)k`gFZIbBO&OLKeQgF3ExPiB!fW%Du9j_u^?2rzJus zJJ{T0TuVxeUk7ob2OC0V9E_Q3*+dWqR0KQilbqhE4KXdd_z-y)oNAU8;ky~Nuu02U z6NeDa{LU<~s7)i`dP@v%8{?!l zz=+z+wGH+O`ZO-MF2>%_;BO1>@J|rijQof_3FLHMQEsQ+@k~Eh!$YE~>TgtFbOsojrjKl;q(HzkO<4Tc8X`P8Fc_B>Ral5Tx=d7-YJ0S^Y5 z>*?tr)K(j?l5?ravK>fyk$ZzcW; zGfNPz^@aG!DLR?2#BF(WXM6(}#OEv!YqnlXKPInM@wSm_A-VSvlZ2o__*pkScf9dj zs7mYd51Hw-9+BT?3uw4o9^kawwdQwTh9GRwwx!cC3W^*tAtiXnu4j}ki3Nz~6(s#Jky?x#cNL&Qh;iWn=J!`m# z(3wwks@vU5b`28fv&yRGE8)nON%s+@7zd^QdRf=C;S3PAY4~FOj<)7raAa z#O3vnO2M`+83|R&GysiGqd$HK-@}rAU}7ak0cj^~$L}ZPzO&lq%^$t!w!i=gzT(C! zdjZFF#2`yt;o33hH}+u0MmKje{5Bo~_#d@Xo~$HR$NXPX@jaZSCoC5Rc|fMs9AAH> z8Ude*^DHRC2c{~pKFZESk;#T6q|1iU0e~;jEt4v?w!xK7zd$@au%QX2x;d7NqqN|1 zud7tQ>_Plj3qepkPDpBk#y|+{oG5xLnJe5ZpK%mha}PZ@Q^~5m6h2?FYi_}8_WWLr zSY`$fY>AFW43MxGM!Z+q+c6m4cBd1QkaH6tPc*;RP@UyNQ2;)0b=T1S#F5$~Edf6r z{7LrK3FU$~b-MfTDe+=jyB^rB`+_3m3H57kIi&g&13PNQV#n|#ucrW33dQXhX;uQ^ z;tYi~p@6gtr?^;+MZ2;o+}kyQvoUxZc+kOVPqliahtNuf! zB5D=o{J#?nJ*MiuK`GKq+}?H|EsKAmn#O;%pvaj3jl!AbAKKkO3u)vy&5xlOw%}43 zY z|HQOIW2`0O2r3$_T&O`gFOn6IQk$w?#@!`zU?`EcQx^=?|!1EggBMXfeB{Q>a$sm>Z@3>3=;`XQ+Dwe zcc8y!Nz*nC&;uMyJmd3+P{83*>bi>-Oe#l+>sFi7vtEXrEGa1A=3m=IetaeG$wx!Y zj5L5){~G)l>(x^0A5ty+q(UN8xxp36%w2QeiFAQr{Y8%Nxy8d`;uABHB9svwkgTqZ zduu-8hi^m^ECjw6GIBsCx`kT*hTB9{Nd>4VF#SE}k+Y4*Ifgl@se%w4PMM<`2FE~_ z&;7~lu&rO~YxiN_WVn9pmMMmy5DHEun9xB%sE}A{n8`MjEBC%Vpo#+z9Y`O(PR87! zSHH!8BZwQ?Hf^rPwGm&mPW4KEv7#(h4}nIp%=fy!%S-LJpWYoO?=1kFZnvSl-7V(( zF_O6Z8m*i0qq)Q|{uLg=*VE7vrghnWXF9B(_2tNM;$OodfhZHYte0pWX>fB3k);cX zG=r@T6_ID#1p^}#vv3esSFpv*gQ(7;j6Lzxq+{NX9OmXsFNnPpm@dqZpU0S z|K9z4Z>Hv5$Di0$h8BD}Jl~|3Q$ZwRySxlW(8_$E^1jO5WF5`Xcw)Bz&{~cg!Uqy0 zRfk@q$PCh*t)%LKkwCs$iCl{ zoGVvQ^7Tus_H8NAU)K*e&Wo{L)nioD;L-5jMfvK>vOS-uhDDz8F6oP5YV~7rYD*k& zb3BxgmG`;0d-G)^b0UQuGoaoae|4XLnGR4(V_VM z^el|_t)5~|mRB5m&XcAI&VnhCE;c-x-;qu+!%~*&!~w(6M!xz$3-GbT_^9CmvC)Ru zghfI@U5`6ltgiMFU;tT6q}CuFIA|Ub7-u348FVIGYRo^am(uWIk0yOXC4h(trK#iv z?ei|6u@pACzle>j<{%XaIYY2I1|-@#C7Q0`O21uFQV#fSFu@4%(czId8QkCak?nhA zN=nB#@IaExIbDAq|I$?XHxDm&1Vx$XirJZyDl`R)+x1R>o3M3a-L3@1`+cLQ6VUPW z<&SDTi~z`6V@p`pIQiyot)pkZtaIQvC=U!tobM*(0K>e`u0hz+6eD+TShk#={f&5< zSbNB;KlrrVq8mw{mQfA?@&gGSeBlP|+868Zx3=F{p<%<0igK2fJ|w37-L-fHEigHO zdl(?3Zn^fhX#YRl2O+K=9{|qt#A+mZJ9s`XExl8O=e(vy;eG!8L!u&RcRS-NP0b+` zTJye=AbboUN>mfp#beo;E+lK79BWsmBgOE$ood;7ZxU9JQiG!@6B|Ej>y{0X`g_pa zcU6hFywsKpvRx7tk2GquiAJ!Wrl)j41Xrsw;k*OvEJh)4UeY`7wd!Jj&K4ukFI1$_ zA+3cb!OxB)kdq(I1Lp}dxoOHo5<}d0HI`h`T?L<;iI>^kiB?Xd7(Jo*aR^B-X0git z#n?>Y?9xcEu`H%;qOuf6F}^*-^TTpE4`8Mqe$I7vMIaN-*YKcmapec4*pIwD+ zJrps+y+IFOh`>mb%GEkEV@;wz6)K=EWkI9?@?LsPT0^h=0QoCj2MtQItS(OJaZtSB z?@dX=EWK(EIEU$enmJeOeIx@vUJ!>R79_X9{{rHI^sEBaaW;e50 z%j0K*$CMQ8w@lPs$P*d1*e6X?anw&N?p3!5c&N1dCkiS4Mvhl0`sQtqpnI6#=#BvP zmXOH1%?VbQ(*d^`*%w;zW!3aA$uX%TYr5sHJ6=)fsI!=QPnG6d?pR4ME z%c70MiBraiLo4ycNuXH?y1dq4UG8T>p#Y8)5mot+{P;3>ZoM7qq`Ma8IJUDSTwA9A zIOTkeuuCWxI$}!N2k<1^TU!)`ca@E$cpe;GOi8K-0f}q1nOFEN#+VKu*5*l;;~doY z6bDMES}LSfng45Hk*%*S#L?Q{Lg_YuihvrVP{kH(3vr$>=|^jIf5D7V)gN4ha2CEC z;_phfWZ6&t1P>-e2`bS55OdsDScQx?V#G2hL)&(Tq&R=&IgGF1^ z-iyL7w(&PXnZIEOV{};C-bHugvwZo9(CJ*lZ~jjt9Hn2s^T8`F@~Eqs!q!)87bIuk z*CX{%)xw%!#_*b+mpscLus>jH-jQB&WuybBzDJoKmG|1n)?ARuPIS2+QdHNp%w+Ux z)HMpkPoVySqp6~QbgqEIL>8f`1^G5m02&Yev+S%;!@&Q7_F;63>?ajzi?&lo0+M7A33lGi$^my0rty ziM-Vn+OSSOD7NhSUU@{ZYM~^({r!g2U&}F#AiinC(XFk?UB?V3! z!U&tNIUKmdLOxw{bxWCh?bAc5AjqV}d|&MCt!jm%9itf;j`Bqz+JB4Cq8qEhSfwvw zsS4Qi+FC?jQetgOJv30krPyK9HL;lHvE-htfNZb9x4-=e7QBRIok|A1l!@37RMP|8 zm3eV1%g$&tl_(aX1YqZ3n=8sktX5dF1MSAdN@`TWDt`k>%87wu%m`g2&EqY)R-@jS zA>^RAL`Ae*j7mQyvfr2W_}HuRijn1Q^<*rEOMFczBxAqgDV}GpTg+ z3k;h`v%ZuK^@r3WT}H_!bSX?t%#6T?OOIlNWB(=73_p={rSr0U-Y)-cPXNUY(k)I< z4db=c%I(nMQgum^ZPe>sFrr;)Ppr2X=KPVg>9km zRj(q^S5r|J(IYxhfnYb29gn}iZuOb`0dmXZM6fH`Zj6EaO`HgsE!Wgf?Qq=Sn%-0R z5$?Lcl;-1r$$^6iH6{mI1WL030|}@R7%(K!v=cw?y#F6wuWRI`zYdozG3eM}$fxHK zxVO({XlvZFH2FA#kPa;+5?{-ROw%v8R8Gn0|2*s|5&htU8Zt^rZL&o3ap3W1J3Adr zpl5uSy5lKQMA#z~8-oA$8}J@>!e`WbaB~l4EU(ixqduePb}sv z++k+xwV1k&|D_!)DfhYIYS!r#)2By7Ri-sjyM3O!vfgL;X3rU5FUMk?7lAy7J(bMI z;%#iI(ZXb;@HonIF0D4>*0TFQoAdR}Xk&uo0N> zgd&<#rVFGU@DFhdIUgsIqQxDR(a#6@&I81yJczt&0cC|+u}d1S&M>$waAt&5L`FBF z$y`Ss*+w(?sb)Bqd~4U)Y(e56HPN>iecQ)IG_WB`$H{&x{>p61cvom1na7@kprJFC z#;x^$ z#{*R|uAfONm&!&$aCr_lquB>4P~>!9Pxz{#&iFWU$f%*<<{{$v_8a_Mdbrp?-B3Np zcI@p~-973i;2+{LBBHO6h*NV=zKlZdSy=_##liLyusJ+kZgT34neP|~K}{H=&7?sD@NU)0^C_aN>Nf-1LetCURW}-m#=S68d{lu+}X=TECi!!!d78-o%ck2 zCdK`D8woM%)O#j^Sz0po>z3-d*`;M7$!wv}dO1Ny1ZmTJ2Y48T+DrP5Cfj$Yrv8-} z9fI(@QZ_Mmu@GcKk%dyux?_o*<>@oee~+&@F2iwb4XBd>8y;YwZ0%+$7AV{bVMCV}w)j*W{5nC-3j@Soq5gr7f_&a{WVmnc-JlE20ph@ za#2UEKyN-&6POq@t4VB1zX;RGrnN^o?E%dT*hOw4njQf+6d1_X!}$oqMHThXKBGju zPLFr!K{x2ww6m@GFf&X~itU!ToTQ73T(EA#}IlE{#4S^gCo)kNX33`{e*9n5@5!e={OJ$-{Zpl%8LGf!wb8?&oG z7FZp!-X_wYaaU0Va%-Vdps-~e633FVg)Px$E6LuBJQY^VUq>Cj>NcIA zi<3nm@N^{#^A5jfzqzBW^~Hl5Pa}^6%cL#*%=MwHxw$F$oY1LKZom`wnFR;ctxm)$2mQ3 zc}GJufpda|xKS##Uol+-pv=aExY%1`T0Q%?XW7y0)1{Nhxe z~=L*vJ#iR6GBh(j(E)=>2roO3*QI99Ud^b zfChf5NWK>d*#WFEKeSyf1_Ilm@o|L6>miBHDI_ov%nb{z~S_ z*3k;8;@N_hx8LrIakjSbzi;}&h_-kg@Y^8KN2oyUD3C?q0oOBgx2>n+zvV zHl-&>H&QYJ* zgt?43iBrXt((he`=jCX4TDf_-5*e?GX-`+aJ+l7)*Cd&%lZ9BIUTU82HGMLJ1*;5w z6Q1^~T&ph3ChiLN2Gv0teFqz}$#cF~#Odrj(E%TfA zfUZQ+9;vbd*jNC@;(We6qbV*E;0yq5CoT{ap|H2NdEXf5qwh5qK?k&p(NrC=t0HB0 zXYvBRKQ11z*?ZsnDS)Me%=&<(qS#9z@;trM6^JR?3`p>-UQnQ5gm_QBILFbE(1N{6 zywtznbp~~gqE?_;%VlUQZpUnSd-&-1fFnOI`1q3$FvZL4c-@#=F&to$-bp)fcKTfHh`q5i3su90sgi+v&`W~)0N$Ij z&fU;LYw@v{zIQa8k1ErWveu)h=Hb1XW&qd5PD|5gb53nbI}1bu?PY0Y3$V+0qY^Dx z`@K9$QbjD@l4zBzB|x4X93PU!d+lf$4(O1*LRgq%BY(^G{~sv{U)+(%y53!)Q$cR> zv@O1@&tT$7O7!=SqC`OI%8B0o(8Kt{dc0u{ax!{@nOT*;@;ezk6se4xmPn;DE7UVRG$sU&Xcq%Xsn$N`jf}<}4&}rOK-G z&BQW&`B-Gi-mY&aS$4q+@S=!=*U?y{9G`h%M@4s;U%w;j&!x~F&((}(z9DO`3WtRBjW3G zzH)VLsfzqhl9;rGCmFFZHv0s@LNa&~%JvU1le|?>0`1vq&wfZgNDj~TnQ>!)z4Zst zpo58W=(URsWrcMiKF}o6Q#4tSc-Es~7q*mKlu`Y|)eN+kc?kxUY$EO|UNpu$9D1o( zkZ21aB}XaCy=$Z6Ah}}Kz&e|YL%8xCv}#eHeaTpAQns5D{OQY;#l5+A+RUK!py6^$ zdp<(8;3l!PIj&q(xuY?fp}t~>b}1`0ywVqJUa8%4;rt~sLwRLXY}+&o%+Ru|sFyDnMc^M} zR1JAOk5^2fPcBp)_dExPewRtBW>Un=a+5gS!pa3A4L>V4p{eU&b1AJuJF1x~1#}=K zs-YZyJ4Kx8MbZP=F%Mqql>q)2z2mjg?4Zf=4G#;pxbdDnZuDtgW|8+CgD9pNC$NlQ z$8(=|3~6E>%Ll}|JY1WZ-n-)3^1kI4>i*nLqU5>#8XI%bLz{9TRh~jGePu=XQWO9f zWna)o6v#j*g;?WHh3kwa-~D?}mTSeYd~1xv)Nxu;B-#X-DF!jbTbGhHOj=4O%k>;g%>9E^Giu zJ8(v%YY`=~*Mi=0&J>bT5ixaM3ly2Zz0WV&G(_=PBv~#KW1H;P)zFlSI#7_kp}}~dTT4V9X%Lr# z9g2rSVdKa>D-f5bGn{=cAxk|3 zcrPu|<|v5K;vTl2V~G^5`HKO@FHOuIe3bzIKLEgzU;}MH-2l(CNF}?bfPqbDh#{vp zbBZh6(e*VyqU8g|Xu8gAD5l4qw78W}TqECx$XSx`7KdysItUuPFVLlM_^y?}^Ngja z^?yG0=1KEPS7}Vq^7go{KDvWqFVZ9g5Q@?WNJ+nR;%^ zOfK@M=bVsg47%t35$-iE!IdJ9FrTN4#n3nEyT~-ISz{HZyJzK7{g%lFur`V zFD-4g%b8cunh*?CG?W93tZh|-q}DZTWluv(mqj}#*F#gn<1XuvVH%J*m`Br5VVJj? zn`bU4=pQ&DU-M+N5vXOAszZIH7zTR{yfEilW;p(Qow(k@Bh)V8581O(6>5#=5WWhm zfSTrU@!F=M09`NS6CTy{dt%D?A`q$uv{kVT61;!0KhV$2ar8<6+5^=t<=zj2k0aU&CdY+f3cca*NrwZphUpo+Ym)Z`cG?ghslpjp9y!m4~I$)weI3r zC#YmCx?nb=G)A6fuF;(wrNy(((LfTn=N#uf1?!zN=aC;kd{m%%B9@AoMqkyn`xpR3I8%;7 zP`tkpH*mnSWHAzKKCi>0oFs(OlD}i!GwPqG=OoFn8(=Oq5q>3 z@+EE&?!r~m^V6Cv1*5EIgM7x;I>V`!rR$={Fpioo4t{YMl$gS9W3H$lhvF#@ZL{mB zXr|qR?73F>eT|lNjdL5@;x7;vY)$s2aH)((!z<1LR+{3}nVvl<`B@=peLwle<#yMi zgprP$E5|XK^f3Qm( zF}A{l=ZVy?w+VI?`y{dV0>yaJnK5jn`k*u62Us%&4Lxj6s+&&b81R2?v@R4Q=Rk^{ zkz!Vh@z-MY4Hr==0Vdl>z|y?dR3rbk>b13t!!+%HS_Z`>%A| z#AbaSriEop{_2=T`86_waSw!5L6gWgu|nd4pPu)4Tn_4+pm8uvsff05N7gW*_ve`+`gH!AZxSC&xS$eQMb>X+~o1 zDUbTo_1zSV%t_B$KOxO14&xsUp9{@<;J!pL0poWozN+0zQnJr|`oh^C^yKwaqg8Tm zxR4)(u3t-g$=`Fb-R`g?EZ6Q<1L7Ow5M=%oq!g7#hH-!bmdg-Gw94|uSgqM(UN>?Kr;4ZEwFn4&E}>M_oeB)-#NZtYzpIJA*W zxT|@)uJ=hi^WK}Q5k`IrzjeX6#IIx&)OEWxs15{aA+J2P5*$=j6#?F!QYpz@^l843 zYstwtHB27#L5GemviWRc1C0w|o~eon_KdROC}m9)j*pX6XeA>zIh^aW6Uo31*93i& za(qCdHMPVNs;}VZX!lRLll|)CEVA3otgh%8WROxzTToW4v*f@hW{ zHChT#ubqT0`Uu9f$9*d%5yXsL1enLSW4`_b!80rKV5U?|3LtQGgdJQYHv9gm0M||Z zkoJ8u0(qZoTXk=RD$m|blr@$_5Jni7@Zl^Trtq{jX9tZ>m~zJVd#|x z`Y<{3{QcEefR^&R90?XV4QBR#JjBE z(=)~z=j*kWyz=bNL2x7BOB{qu5C2X!elN;|_;0 z8_r6da2olkROxBwLsVY4lg%nOQ5tCJM8M{{m=oHP_8oJ2zFS}(aC0(~C)};WP~I2Y z&0z>xN>Y4F7CxGl?vmuGn5F8^u6W7^DTxTs-olOpNE(jGLJ?B!asScbu+9$YOdMFF zgSiZn*`-4xc`ly_ci_anQqnE6iqylGc>m|U?RAfyB(#v~_Nqrhpq%cZe?%jO(BW1? z5Lf0zTKc7}4s@;x0ZH1)#gOI6WR$3K24x0#!goOxS(CngD8IXoCxN3S>P*I6V@5($Op+OVJW9MVicoE*LEQ{d4h&WGkzf~a!sRw48YTrDC+hJO<3nia_SMji1v(= zmui2*)kwMIB($8Wtzu`5v=o_D?ehviUE)c)J_ZLz8GO=S@zK8dM8<60Ue!Mm#J|ay zHV$ozj(UP%geA^dp3`QbgoXp?I|osZA77!;cI=7?tI(pm@`XW`!g3DDoa9_2)l-d5h8f)VO;2Z95qF|I>o;1FK?9+|_Vi0S&Dc(ABMeZ$Fv20L> z>DdD31NxDz#jZkETcQRO>8Nw;aerbt#FHa7ve&2+Jny2C|( zM1rMkywm*XBQ*=LGt$s0UQiMM6qPgpa_g(PN$)(;;(JUflFJp708kvZZ;TaZb$tJ| z9g{vx*A0l$-r~-?;aHT?HOw{V*`Dnqn~0j8?cSsiuOouu9@hWVi4ySSPq~)y0;ah; zJk>35&8{j9Kk;oJpl^+I)5%JPE$>wOsYxrJ@V^};yj~pmTb=P#%|Zx)RZWCzvw)c(d-~BY8W`c#NHKsyrK4Y{p0bn$-o|^ zNbn-_OmW>nL(^*Ce-CU}Y#+L}l=@~7MKA8-_#tXBfmH0RCnm_wM#TeeN(q(@Be#(N7WGGUl9RY1&Z)A3nZhm{AW!>uZ6laK z`}sv5NX(+&_cgke(Zd7D@iPomL`k7?#86Lu1BQpiIXXs zYL@54ppfw;gEPTdgYj?=K(^AroqT`}Bm!rygr=e?{3dX>!J=cKC7~N^3$Bgh62QkGe8GFxYy_l9R*ZrK4cz6Q$ zPaHZcrjU+YGow11SHjo41jx$GsdGQ!wWwX)o{OkY*MnKa-r!trB{AXVrWkX4zb!6s7I+4IQDrrA`9Oxq69P^b+sP?RtP)3ODM5*4 zYH`ozDy?BW`<+APxCtyW84ZCn3+?LzpkW*L=W3ZVtd7Q3R5X(jrHccS-XRoBPa!XZ zN1@J#?Xgf|$B8g;H?uf(Xts#cID7smjX&Fv+&9nbD;P(if<1FLX&-9hz26l7;y<=Q zz11fr#%fi{-=fHS`xh%b#0&ICrDgPp2|hS$&w!?#6X zwSY`~!`S42ff!Of($YsgCelN+|}bPQT>G-Q@Ra})KmFIISa+lh{2md{fnCZfgnE{pBiG4P5@-W=ccrN zAEs|8B!;By4LwW$XgT)s47D$$T!~xww033ruXnTvbbBa6iZ%8f|B5saA5}aNRGay3 zKZmuNHNNesNq-D_lLJxU5#Xw7_DBcd#b!_-Rwb0}856Z)6XUt409p(NIef7zI?6sv+4U7%EMZAlFxqKkl&Ooy z9eG776LQVb zo_XEhacc=(t?9?>CT8yyN1SU4pf#z1$0Lw1^;%pp`hNJdf@DFTeUV4=l+TST1URYs z3*;wISaO$~CXIQ}DO-Fw`zz+Z&Z)hKz@kqH8Rq2Y^iSHHro=j;$_ST!M}=~V3{#|E zg|LZMvtn3_nK>Y|M0vfU2Rr@}(58#9y7X6Co%RZ^Yk zwgQlwJ&T$I;$RS`OSMZNrS{jSMd?|r{An*YpVY{%Mpi#6rz|y`EmZ(%7&~VBX zh_!#yNMWRkr)|dpWb#@$tqljgBu0hR@!yXR9JzKJkrzv=UoP(1GARvezniA6f9{@s zFO_(&m9Ru6JcXB@44ZZ*v8dA+yf)bIa{1QG98@R9$g)BE0pYfe8kZaKXbJkMA|n8Zy1bcnY)Jyzm(afFrTst14t6!d@4^m18)-3frcoR6^MSSlSkQE< z6;gJrZlGjt5ZV=GK)^l$VmJD-q(Gn~I+w#gDhl+;ut9)Or-E|< zAhg{*%xv?1=9Dv+1V7oYk7IlPtnWcgqeZvixcbH$X(Rma>e?ScY=)bo0w9YUXXZ%! zitoVjS5ME3YB)mwu~NBHt-GJYtPDxa8o3&YSm^QsFfvo{O{{^AMq;K=>xgZD~; z;k;NeXtjP^t;$MQArT)1a0B2zB)g`5*q*JH`isZ`;uHn0^%QBtN_Q@1_3gL!xqL8) zO?wFUUJUnZ#EHZz_89Lzd}@r8%&h0?oBPVi-$j-$tKSp=%ZF};XYnOwkU{UKX_3J$ zz4;DPRHtjDpNH2s-DpFgTvGUcO1rVF%jFvM4czE8X3?S{r}p38IG*eELo_I`k3_xJ zuNO(bTC=lq{lm{!fp0l+Wdfkr?nU51xr}|yd*!J{NjPVwlQA?ZsInEQm=oDpxlF`m zx_F_<(_Ygk_trP9@_g@f1mg**ubPc<$h|VQtVPr5;tGf%KMzG7<98>nGll226m)M& z9Vr(qp8q5*RHw!i+t6RJ=<>D{63Q#W4w(>=3VJbLBTI{A4zxU5O zMD=FVzscHSNyKmFMIGsW{u--#MF$2M8#N~w)~y?$E99aNCJl$2tuG0tRuQ+rl}Io2 zzv5(^|D6iq4hc|uP3on$a}DfS`2|0^-P28~5Qact5<$KJ!x{)~VCp_f&m1II5T#cJ zUoB#fIpxro>CfA&Ld+-f-+!ArRwNZ%CQVOoQpwNRT?Ek7baymL5}Y7woJkH8Wm+K{{kA;Psvj~ehfMI^WVVh1XGM*R=D zoYt{V_MD`^OSwY5!bO{5-F9Cy5ANP!D>&#X#(P8J%S8WUN`e0w0iX-%e&^dtZq`>5 zW!9~12Ct=hjit2(Pf3S72rA`E<|A5F8P@?cndx)e8SCXD<$(b4225W_DbdHyc=4M$ zX-+O7BW9Ira&6m!UM&5KsAAS4(FaOwGx89QQ|4r>z9JWs_*3^7 z`bILCc|UyVh`Dtn#sl4eaZ8LZ^#pAGwXpvrq;p+2;-o zrUiaICd9>ta1>+!%0;Qd=>embWy!R8vW|g1^f;|z7lH2&cwh>~QETua|Lyy3D5RHl z)mQM>zBm)MgK)CfiwmdozIuX_!X>3;j%7BLM`%wd3zkL;)I2zEreI9jqbQ~Ps`6DL zS}63-q|ylTc$zk8j76Y+e)~MTDZ98Q%mm699OT4Gf#zegm`nbP&v|&4l!QfrdlZ<( z)nylxMUNNCHL(BSi+6IJ3`qRs-)3{mY@`zM0zY-B{BU@tPjWlP(;}a1@6Ptw>`EsS zQRwupf4z)ay2EM@I+jkvGO)#g_NmF#z3GXrD<1OK!%;JkfTe5;~FI?%ZLMzkf(Nl(Gyva zLpm!fpq~CZVZ_VXu@pdoIQ|4v_pF|!6nr4Uosy^QH}#ry9Spg>JayvM(fPm}VtE1{ z-gJO*=(}C5`H4S%1q>c}b(~iKHG?+aXCEeF*bvdoE{28no+l39-{zxbn|ueU@kb}M z3ANH9gw7ZB;5{blD+-i$)n!4V11?HtZ>KzYa^;P-FNV-KgvRyWP|Qbe+57Rr8{3VHRZN>NvyHDV}X&{ zi}S#da19_Uv?L+A+uBtosN5BEt5wo`H?O$1$3DrK+Rt$Gf7IVE zvmxZ&WT$Y@fr+jdJ=PrH454g)CfQj!<)=Kf?Du;ck_$;s(;NpSVpf;dX%c5P`;CXV zNNJZPk^j-r3d_4pEe3BZP}s}~ftPW|HyaW!^(Q1;nCfy zwS!C6?^4VZ>$84biyI-t+~vCRNoE~6bhI45lts#lgPj&I=UgB8xeJ#3Tk8cSO}SRi zciU2IgzH1EI*BjAnXs3Irl_r3kAg@ljy0$Y)>;o&bL|>eZ zbl}zWh%9i;-OtfE-}$>x<|aENDXqN(eKAXf4GX5UN)uAVmxXc$II3saFsz zUnhOSU`3c~oMW;^#)>4`*2-yqj&ja6f& zS)W_LW0sXYeO)wMH>h3sl1>2Vmc?PAjGYae;C(ggSyn(_?2a=AU{Y)2wmwlVTcGx&1ZurF=fXH%%saw>ilHcRxa=(N3ei>h~OIu^&b$N-@PDc zXovi)h9`UsDU~%LHmQvQiLl3*n^OjE;GpF9i%B`T06di1_NcFgtP@Fv{#m4RD8VA9NV9Cvvmq#ZuEB)c}$_)zH>kg zkaTiRJbz=_5uUN7Sml}H7?8kcZ&0kw9msBw#Axi;N>D@-qDLa&Gicr)u)oiYL|3%N zxwiYgTzx#MMC9&^W>;qRoBS5ML_wa{5za$v&&~lvGd?5|8f0*4YM&rIs$|Kt|Bw;k9G~Nx(`+3+=1#Mq3)sOCIjdnq8u;1@yd60fe=&gDr|8Srau+B3> zJL=TkpTU95PBeN%k1%o?R~MZjhboPf(m^}3pT(;Umk5fCN3?0I_F&_eXx9mik2IeX z3FhBLZoe!`6eSXdSfnsu5GS#*qnKzPk{CzX4Y-ppi}=vDed%X9Dur3-Y{P%iO}qdgyr5yDLU!PLJFLFZUgIK5+`AIl`Ma zWQtV1-80%1iS=elK><_$diI=0C`qhMjq)?PpAEeEQ0ABP8S457TnVHaUpWJ!G${0l(Q>g$Hcv|L{pVF?ufL~_s72roPRU>3D>T!YdK#kB6l48=1q}6 z=e6z9d_xZq1P)zT9D)H3-9D9I@-FzE9>L%WrayUqriy*x8oeHNH3fmHanM*L;nD^U zF$BB_rn)15zqon`Wgrbdf}Tbes{3B|?70t&q|WYHLP_MWHUbEk9`~OgzvcksPJzBw z?+uF-r3DKB@&>Zdf8NH9i1}>~>mYgL$J2{DpMm=}r`Jo1TMZ!wDA6NYL==P>hont% zNL1(7RDRt?4}aU?)Z+;3_a)U!|9VeX zJLC4?V|QxEg{dK_LoV%OcUzApgHf>o9KHNIM8Yz;>P0E*lpzPL<`m)k200X~U2cKK zI*-Z)7&J|IiMnylv)Kf19wFx&vqUMvQe&&|Oiu&q1?eGTo^{jM&QEf{wG%GWwz^|} zjpR-YI2YCa?*6ayUUepH5xZe#j#Qj`)7{NE-0}xpJM?l#5RNaSzV%lbDRRcH`JnUq zjMN|X$_~&9<|O(RTL56p!oX2R2y1B_D$e?Kqhhnl#h7$R=Ew#D&}i3^evKQ6r_P(QNQ8Gbft zjtIGJaieINbF73_En}G#7&OE%yHukW=wuh8r5cgm+G$91khHFs@S^Idg#_eM~BS_KqH$u%^cW zNB6B#e7qW_lFc6d#z5DJEkoq%bVd6W)6&)a>2!~=W?FQf;v$VJ4ULN6X+MYDP*(pi zamWD;3mZe;1?FTdx^&G;bl*S<0}}5^*yOu}l}Fd0s)oo(gJVF>`8Okyz`wfQcDUuZR=tgTP_?@!DZhpdbK zNP9!r1}(%#`y|-_nj7YC$rZIcFG|P590ZBSF6!~$H%ePMncXk5wfsm>i-rpC^-e>2LLi@OIVz`qR z`RoSFR0FT00L9%nDQqoWk@dujgK}UZd+IW-W372IPTFrXjM{ZcbHTF2Pmn8uj zp_UavD2jFaj~uA`((dJar=>0z`WRPwi&Vrs>YCn+fhUKZaU2UrAZJ*sU^JNA-M!q7 z_ViP=>4#oV9xBTphuS1aC_T^TN+Lct?-vdoUV&-wRHH+9CUoY#PtI?9W!eTqRJC;G z!;zY);g=)yhf5p==4zbmK+0&fCpF$eyr3j5`i>Q z7fy>77xGM=8kHO5>OaE4(MlJ)N+|N1p#;9lNmEN{x0D>_}cZ2B`&?4-X!;W#`Hj=7X!0t_tp*yPT*xO7YrLc??V*OqGX1@}`?7WOEr<3o5v8NDHA z6Fk&7Zu}hr+iMw^uUy38;B91Z<4d9unCf`=e41`1mmg&jS6ZqVrc^}G*MNlnar z4?(n!Dqe)NyuI$6HT{PTbSY!p8`;Rh;-1Mu?=h>%5So+EQNEEMPr6oU*i-czEv9+s zOwl=ma5g2j>I!7;&Ko&!E5NpW8z#MvSh)ewN5WdEf%*8gTXVC(7$ka>>%jBJld5T2 z2W5L^3Duvl@Hdu! z@cn>EtEgan&xs0tR}cBtSCC%BltIphnXG0U59$fu)hUt=-mZNrj{}jcebCj@HL;r< zP4g(O9HXOdGx$(W+>lKJls}M7TM|7x%q*}2y@7?{r2V^^)PogZ;=WcT#x;Ci!*rU{ zO5nA&7Sy|WJ|lr1EabQw=FuU7`hxk4wL@TXC_9rGKPCubB?P-$w=!TJq}$dfiR|BS z0|0_@m=W~HWCYk`KOXYs_O(mFvSzh&C-Lc0`bXX#St@?{eEQDxhA$+$)3w3=W#dmM zop%Bi74|cq{7qNGOh$eH4Y4Fx;Xuy{wMwQpxOv(R_|4cm(~&n%Q2Pn$t-~(CkkgKH z8{pw|t0T`zFpg%37I-Zx)@m_F8@*{UKhk0q2kI-8A1z>P1z>{daIYoqfccn+h*2yJ zYiQXCRsJD=Y`K{Ltz%a)xb4)B25EbcJ|8z}^39wQ!$QcZ$!v zJTwNfKp?N5S(yL>Awc#9p{6x@7M;~eq)ylal+x+?f=L(SiQzK4hFYFJ8c_`Dn{era zi7&7~UJbq$p#Q*YoRBc(=*SJQ(DR*0=(WET z1tV@SR8l82MRj^@f zGMqO!AXb+t@DNnaKmZ_bb`WX8&oyP)){S1GF4o{>hUAHyZPGj&6y7BaBVgfU?cPRE1klqi<`T}SKJh_nhv`rMk$#FXG090ja%sU^*O3lKI6gx7F_J%v1%uW&| z?wH>?cT79QRvGJs#&{VRsaqK%vIKMc-oN%YK`&&3sXyRLQ9y2P|P%r9yj;Aq<4RSt8z&}Vt6%>K& zM?M5We$ACb_ZyQ+i=QTcUDD;Rrcp&Qd8NPG2!IV}pY%iz)M+Wy%^{>e5+mK0UU))3 zmsJ9eN#&qhQ*`o%&=-X+qI{2uJ$#y2$`L#bbrqYyL>?a!Dh)jC>hc-dcBF$x?Csv| z;w=&NZ6rD#J)iw0=*BzFiqr(8vP>;Cfm;Fm+i$nJ(gcyQxaW5Jb-?bfpBRdX1Un_n5j22)OE$kL5TL;&Lsz#copT=C)BGKeFnQL*Le+;g-m`o&@a)%+U9WLCIW24TH4 zl1(*s(bjR(-wBkv0HPP{&ya;rPEeFsZGaHn$ znui>t@ja9SR=VG_kwO*MmisJsBTOW7jYfekJYztMztTxzGclKE3brWO?p!q&vMTaKv2)#@-8kiAxJjT7vD|fNQe2_&3UgH9-8^M56ej zk;Y}o!I_1w(6PLO6OE43Xe{S8b0pb?skx~ae0Al@T#e8_H`4C&9V7f11Fq>R zW|U=^h!&I8z>8Rz%DS@c$<83PNs$Td!-k1SbJiucMw2k&AH zmpE)GVULo0=ld1LsG>jNm=q@Qx8$CH=;&D0c!kK)Dm|?5`;w4#sv~MGNo3qtLaK(& z{-tFGsfq6%ATjMDw|)@Q-i$-L{?6k9;{P1yj>-WtONiaErw&*^W`5pU58Pn)tM63w@fQ;4g(158;o99$RS&Up6RzgL~(j`}atdcr@-A zV7)Vv(I0`*Mk0*&gkON)W}?VL*+D?r{byDwlbGmqaO8R`k+oyOu&SyW?U%dCl&a2@%;{)TbYy0#XDTPt2AMPFS1NgZkp+$zge z*)77;h@jZ=hx?VNq$hGQ<7m@=z~7cU721E&v+nnlgb2dEOso8SsS~R6o5U1*^4Mn$ zjQ{0)N?!!A&ljGp(auWSF?Pkk0T1wD5zPAc0R@$|J_2N%xQ}ye<5aZx7bGp?o+mvI z>0tJ+opHr{(;|bzOglN^*rKRq z?`{?89I1W#T?Lf=8Lbsxx(Hthj^Smxss{A->&gV-X*hM-HU41s`s9m98&mBX&S`0P zW&-(UH514fzz4Ucˆ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

L;pFd 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509144001-Config.rsc b/MikroMaster/20260509/20260509144001-Config.rsc new file mode 100644 index 0000000..ff387f7 --- /dev/null +++ b/MikroMaster/20260509/20260509144001-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-09 14:40:04 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260509/20260509144001-Diff-Config.rsc b/MikroMaster/history/20260509/20260509144001-Diff-Config.rsc new file mode 100644 index 0000000..d88005f --- /dev/null +++ b/MikroMaster/history/20260509/20260509144001-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 +4296a4296 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0