From 77f6c7fbd5ad4893c39c9d5e034a1dcf01ee1e9d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 10:40:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 10:40:41. --- .../20260507/20260507104001-Binary.backup | Bin 0 -> 295067 bytes .../20260507/20260507104001-Config.rsc | 4611 +++++++++++++++++ .../20260507/20260507104001-Diff-Config.rsc | 18 + 3 files changed, 4629 insertions(+) create mode 100644 MikroMaster/20260507/20260507104001-Binary.backup create mode 100644 MikroMaster/20260507/20260507104001-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507104001-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507104001-Binary.backup b/MikroMaster/20260507/20260507104001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..24181dd2d16a5e9aaa4318588242d915b4885ece GIT binary patch literal 295067 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
  • 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 z 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�Q>J+M&TZ^ZC45hWbgCO5z#kr zH(O*i5((NX=1lOC97wdV2X-kqeZq2(A<<-L=T0cs!5kU+9FLrpC^GI=+Z*mvaW{48 z_)t(|a+NX97T@SQ+@{~-8K?(pvC(JU>+`VKK7V6CQJ{t1%GZUqiI2vQh^KPhUO~3A zsZ3D6S6E0_TQNljuZVGw@*GB$bHaWDlw{VEf84}an$r|#9QGNSwAP7jt^!c}NC?<- z(~;)E6whRX#yYj!50N_9a%l$~c8dg*c@&Ix%AE*_iOmm;9JoJHk8^7aHr`>i z31A!*aWEXtJFQM%s#s3;%k`+9(K^JkHtY^s=IkQFW`)I%T!N!LSoqmXw+!Xce53!K z**)y%4xyd|Jh(;Z;{1#y80c^zy=xFRUcK9&ygn{*4%nwQ`T&5KBnuv_kT#D#Kp4i6 zjis>L$qP-D`w@8UmXS517mmUpGf%eSfRP6S%}K9l1L4vW6NA2RKtYjK`!QVyyf6p& zJtxDHCA}-Ng!YX?C_I?zoszA>pi>jJaD$>xrzN1vnuc2<$~tzIj*us?Xxt-i=7MnL zin6h>vE1C(f0ZjsCoA3RSbH64sj_A0(vJU1oQBBc=3yMU6^^wJ)#1}77s4DLM1KP{ z?>kdNnpM-CMCtc;YNA~=hKXwNhBVR$R3g%;#-Jg65b+1m_A6Xf{KEIN>nh{75<4(= zx~^yluBU0*r(4fOkLN{VE;^3WZ}8J!6tNVLMU zDDVD5^rGe8IXO@!|4UP~(Z=Gn`N9W*qh>p%0)1u7 z-WzHCNFFm*)W*J?ru>H1-2L!oBRs^HQMD)De$A(_R{IfJ@dOlbf-A=rh2mbL@YS_} zT09<@sdK>cnd`VLcm-;aD}cb|TEHJgCHp0=*n^W31lQ_u*y`e!JDaWZ-^IW>>%*t; z)bNn=&@t|tG$57Lim5r>NCJlA!;dZ$^-WE0pZ-K*S|umlQrvn%mgr5`@QhlJ6L{4D zC|o538dU;wH4yu9$0rGi4Tb#{gxMB=C7C0X`8c}dY<5LHv2rb}n`-!x?ssBKHj|&S zS(UnhlE)As8U$)jHRk~D_Z=M<-Iz-!vI(EcSMxS@%Tfp68t6&HHio4Dkw-$9W}75(9>oP18<aZON)s=hDy&A){jNnKrNzi>ik%K$_evC32>Y&TBX* zV^|-1#XI)mV0h*h(RdbiD)TXN4Frx9$pzT@9-giMGsTUq;9@qI!Hv*#e;SoTr4#B= z63$$FT!@s<2pu0HkLbj=h(uy&mhz26V4M>Efmi}ndxQ+RmUZ!2ZQZYF5wL$NB*Y;N z36!54UQl6EK4^8WPZ%Yh!GsMKU(0W|-+q?8+&!NnAjC*<@iJF91`SqOlj}SbPcH+M z$kGkf3)CYVU>Ry?%QJW5D3aACG#%??5WE9kSE93G4&<*za{Y5+A6h@Q7av77;Uz~5ZT;WbP%?(tuxhw+B`Jt@e^LFrsuUID#oUIL+S9Yr3*&{UsH z9oaDpsJAf~xpL`$q!(~2ng3B>6#`M7(ZWSVm>fd()sbLUKGDJ;sLCl?`!m3gS9CScedqz5e)iwcH5>ZBHYi*KWTn3IlV z0H*?lf>RO4TMAo?GTv&?bDQ@Oj;=!V8^n3DpFHtZMgVXmSFEV6Pcd!H&t3NG)TNhTCG zQ37JJuQ^u`9ujnB5H;J>K5m(I-`xOE5UcQvo~EV~P5YEj{-VI&qnq<2asuXD7?u$j&dpUbsJ zZVWK5FPP7SK1UMXU>!OX%aA6PeXn=GZjBdxo_$?n^_}pBazqZ~25w^{Tu4`ai##(` zdS(Gz3^ytg*5*f^MXRu+>MlUrp&cXK|(K6&ZBjk70d@07#D~0 z60g>7KK*e@b2NL=j}lnzhtqOT`L6BV!|TIQ4(=~w{SsbK2K1Qr_xjdB=r+?JeD*f;a9N=H6>eDcXBF1{$KEdY-4~N5bV#7VQXc;52gxWE`h&YPO!&>dXj)h#wI006-;@y#yI}V}5pg+LTb_NmJ zfPY`(9{euFe+IGZ*juxh@gVdF#F6*S-rtGTnZwn1LWiZqj zLU&Ob^Eds?n%7VCod4i7ITE=T7R z(H{~C9cdt8!N$nv#s2cZO@GcZB-x6;ugxZvM&;eCR{pa>;mmU+qE23V%=n(ru!%Ha zkd!k2G|Go6ZBS?gwcL8H5nZ8X6##v!(K3|0SwZUL{&daG%jtjM^5jkNPy6qkSl^nt zs^mgH!k4m-58&=bWFD`MFy0Zat=&LJ@5*#r)Tsh8`<}Xtd!yz&Y;)h zQohi5qS|41s^?DtmFdZy2G6CIk6s{c)h@IR8%hW^vR|q1@oW+OrPyB1diwrJOPz9C z*?d3ItGf;?mt#7}GPPo}Dt}ApDgGCZV8Wb%ACP5M^#r`YkCOrc*2?ErO#ZAK2LXjf z0bOA=GgLe*m`pTv$qcLxX&*m(e*hBSQFiTnifeub=UrS!s_rn;at)SgtzA0V-U#pM zE7F_m@K2eR!3^I)c{e45;php7e2_K&P$pXMwI0VILkvL%@z2<&bJ(wbDEQwO&Y~if zExY~IR^VHAx=T`G62JXi+uN`l{AcP;5Sy6gt9FpbU@w^)j8Xq_BB*792Q2!PHGpX} z&5$~>>Qg2>kj{72VxMjM+fFt1H4|T>M{^4ljZ@E^U7!#vIttvM4@EDv54^Tlk ztN_SLk$Yko^h1{K{JA1 zG5}>l1&83Cri`5sB*TE2E0jzjvLSE-ckk~h`PKxB%B=jHq^k;vO3`y*U1{tk#;G(K zi9(SrheTsY^WpK&1tF)7qSrEb{A`E9MK4tn3Mf)l$jU10h#iI9qjU_&WFnzB>zi{} zigQC$UNMNF%DwMO5~Yr1@D&#y=d5(8)?vkF|E|rB<8}2Y&ib9b%T1aFQb+4IS%rd) zNs|e8)BVGvS_I7G7;ffV(u?{lHPr$3-j3JJ8U%j_^9kPv)rZX`DnVRsE!$$W6jKDC zl-A5_k*Ei}3?`r*+~++zHv{t@k9lE!hHp1E=CJQ2*e>Oao``lJj*M@yBeZ9)wKmhD z?w;DW`u7dQL7V7A_fs0pj<*vTkN6XkSkNjXTQ%Z?9#J@`&~hNkHL$or$&+)Vh)k~n zH!9#hYCHx4R~`U*`Y_#NrH${57J|do(7NZFea@_%e0D$!bj=nTP%Mh{0;tGuup&)H zh!};{;lI^CBuSIn>Rym?oYf5BL2xErAF|&*uBf&M2rQrwy5dL9=uJdI8h8T zpgY>QWHn>6nP$_n!Od#H-%7kwS!5>`sOTKj6bv%3)ZQ2*Py=|WY~TjtLmdvLS6iZ? zo6~mR2ec0g;x}Mkm^=@?2CMBQYmgAKo!%@x#$aeUi}Tmio;0ejDJq8y!%!tdo|2mP zP&#T(n>}00D@7(-~T?* z<96B$p3aR5vNC%qxng3t^Acyl@2US-iqBL{Wex0c*3Y9y9%rNgBTRJBS`HqOcj&)C zCSh4S#^;EY8BC=5O7L#fA`ERO%znm$so0u%9=%|4%FRLB`IB4TC%GDBR8(y#E-C>f z{u}p>>E2Az02Y-BBj+wsf&b2G-JBKto&xyms7^=nnzm=wvh}p&l~_cBH0_gO$dty( zWHZNY(&5}REXZ}}zKzm}UCqc05vMMAH`&Obt`(pU;%==XDGr6RgFCOFUt267487tH zumQPjcisIZ>1#Gt$+%G?h6+CkYsUAtK% z?Fc+uc$7Y-y_c2CTjUb_z{aNHUa}7(z`~VJIT1~dTOe?A9Fpm`0|vRhxXE&p+@c=l zkk^g+q%iQfNZ03_^U!RhJ0p);vJ>SpuTvsCS1t8qJtimu0HW{Vs4%(9;v4B~gLlT# z@#Lffy#a0&{s|g%5rELkm9MFSR}}K$MBD88qZG}KdZ4EIGb(-goyBm>BtL2V(K@A@ zEug*;VpMd<-w+81#DUf!ObsrRRB;V(6h9yuMOW|cdGf1d-wkrM>4pS7vm={fZ6ead z1+Y8L^-_~iekCL&olBkcx^R}OF{;r+1_iiO&HL~*Q&xDH(S~&dc#6AmzkRJK|KQX; z$i4izzpN}kz>e`nWVRu%R_dmlW7N~>zDb*o{1Z^Ecne`9`k%z$)3}v+m zlR3P)jU=3_{4B~5Uo{nkTo_Q?hbt+x;?$Wb5%?OUjbKN-OQbr>@w=MV)gz=ZItxqH zMk4<7EaOC6{GKNmH^3kZ?Ry2iOnfs+PEvMq|BDyt3w|I5s&J@1_Rwynq6F~;knQ*Aq5Q#CyZu7gm{`7QtTbv4rreClE=G%v$%=w_Jr`EsRB-S*=LmEl; zWKz#JoUfA2fI2)P+ZE-Y-V&C?dG8fxon?a=828?KE%Gc5zM2DSSGHdOVl78g?5%`e zi8f@mzz9&gxC`_B0vFx$zudofwn#xITgx^3)hmY%A;n?ww|TPB?@!=^LWzS;e^H4c z?|?OVVpEMITji_u`CKtf1wS>e9~o&bIOeDZJ?#YN7Z~BoV)*OU_1{qa$06C1yG+Yi z7RSFu(gDb^(6h<%8!6;qQ?OxT0yf+mKfc-m>6s%*!$aa9BMX(0f`|7J{q6}fv&)bAOp4I^+ySLyi}<@5oIs&Md<8b^yN zCtVq-FQ-Q7c*7{@!(tFY;#@*z{$ZLmH)sIc8;i^r$a5GZEKG?X284U0h}R=Hs`dF$ zf1YWR!Uu6Q=AO^2W2BdB^3o=h74Gft3O2$$32rO8h@mz*;Ly{MnfJ;8G#Oz@@_HV9HcY5V~JY)350RpIpn{8(3%t0j_s7J2JxK=#7K|URxcx- zkPv0w*O2yY2F+h zF^6M65yQfgmA&{q?50K%_GF2<@t*VreRe)ryk!l)F8mjpo(M+x{*<&goQ`HNC+sM_ zmVxhDt~Nqy9FL>%;#C^GW;u&USF#Pyd`4}}OnJ#FuhadM^kRe%8sQhMeNd)eJc@zn zZ}s(?VuEHf;XM?1_2%fw)3x)9uZ)5U5NbP5G0c?z1sK*rHsbA9@nJWg>d})-y41;lsat`nIUJ)GAM1vW z_cYGr&g5p?#X_A!Z#vfS68Z3k4xPohcBL>*6Z03SpG_zu*@lcteFF{z;&^erO$`c0 z!=VIZ=HhsQ^|4{CFKf>lYG?HM5^M9nj4XceJAx?pml4^HlP<_*ylJ6!32;+FffK;$ zw*g0nexu(S=wqYdkOMg#lRP}B?*p#h`{ny}8i7UfLt_#M`t?im00z^QSQDil>VM%& z0rb?xkT7u6NaMj}JN*vPp2n`!Acc`o4glJ-2Dtd(Aa!RK{SbHLjwkskK@O~N&?>BD zZ|$lF;;p;hw@7ki?wc_BnM-s0!56^1S53MMPM~@^u)!NFp&c~#X zXVH_U4b%j6~jN8LND+#Qz#f6#Z(e=>Ejk6Q`dd+Y3qq;D3diP-uy`-f=wka@EGB1Pv#jfL>3k!P}Lu)=pf>;;Yb_mK@xH%gy4&Q zV5>RXEd-GyxA&&65~-uM6$S&J3Nz7O2O^d?DXD9CHrfIRb*%CDBYcn)Hej9Z_ zBX((G7I+L25jSQgtQNYxu37ogp(!!3u)bnw5P=(hH6`6*c` zHkt}{tvxyeZeE-H0^ti#Ns$9F0pTU&=c*RqrC-z%fCB@hl$}>`-|sKZ^^&hCa>h6X z?0GkQ@(c+lJK&YFWpBJUT+YcA3Ln;$wQz$56-??8Mrq5d39zK-;c@Em(ns*K<{;?F zDtd1N8!E@&OCUXRtBf!cZ;+{|eCs2bQZ|9~Zb$jC0TE~@iaJLA{2|I^T)?#8N!nQ# z!gM7e*)Ho{!6MGaEO=!Tb`0fqnD{I)YRi4E_Z0PT950M^T0?s-MJkvxNlt`}8TCbG2A+Z zmyyXt0R&lpVT>C+<+}b$?`u9;u-38B95#xa81?DRIc7|Au(rXmR03X$KG4aAP$%SO zp%xpy4z7HbuRqtx+?ui9)4}i693}lYx*OL=1T+Mfo`5y=8+aq-831mf%^?&|q?_6@ z?{-{i$3I~_GjfLRE1;%NBe{D!YV_zX$ynp1&QMHg*ML&>)x2B;i_1>Q zE@M-QcU`VmE)t@<*EVsZXL{%Sfa%l+)qXlzDlUSF)w~cUnWACazL{|=iC3goUVgSH z#HunTO|-69aIGW6n^vf`qE1jgCfw)AXF!+fa#p2`Ic{uTdCI zkrxF>Ixv~7dy-2KYtPOd8{==nK*T{_f@C~+{KP@yZ!LANyQ{&FX-Ea!Y337~%?0{EO4-{VqRAPpG=EG(@r>PO z(M*#|JkWUj$JOIgp#`}rZbwsN{aBUz7iSnBu05An>t% z7m|c7`|dsnmYyeriN5L`7uzl+Tq~GP0;NT_U*Rjz*|twg^`6!y8Z@s}@9|OKkOygj zOP4nd=;;fUJ0^(b=cx{lEwv{L!_YdWNv0^-xEN?M0FYS)k5>r;Oc06OeQ&e7pvlV1 zejqwuy;QSg<4*WfN>1c}cAG!RU&p;TwgHX$C+1zF32hBzK#OlvG0)rUyT4RpcIOV<=M4my1_@R} z4g`n_qlR!O@QW9GCh6}~r-)Ef%~&FX%sZ_v^eQWj3>mN^WX5)g4*n2ugV z%+PEI23PrtbTN-7a5~#(PzFwm(sy<@0XuFmk}mc`U+{d$773T^2ufVP9-t3@dzNR@ z0jO2J*cy{2R2B_b^Sl00BF7RfFVDz0N3^C*>%{*b+Utle1g29{Qjpg%`G4T7fgTT0&KkTd-?>eT?AJTtucs>I`=d@e4c~}(8IEKQwE5%VQ4yMVre)gA zMy)fiIM~>tS-gZKJt2&Y_E?9RSSSMW`V+tgZh!0or)=*3-26DvL|)!Y^dubZtN$5h zDT3#R(ar=KIWoGpA1;SwtxP;#*3WZ_d6$NS6Mpi(X-!ETk+fZVNMit)gTz$7hNaqA zm*09GpXtKoY1z7I_v((NACQ=WhPk$>a_XrqP+h>b-IITVm*;?q1lGlyYhwa$D3_Y} ze9zKqd_WxSI)|t1e%cUd-nN?R)iBHa_bVW9qLt2v-Rs@O)mXU}RMfp?MMjm6UZb^w zop!dgwTGQ>Hk{b3Y&6RAx!1R%73AO+Q7vQF%kgUsF-+%8*qGxV zVY% z_PLXV3-+R?ilZ#mHC>(HP~G<`3r(%sX#6p1XH&P(jcLhc01f!ZOul0;a;sw5@|$T2 zG5S9TMDav#y1Na!)_n2I9+q?8Mv0sD%Oa9`z{O`q$m)Mn!ogf%(@3zeddrdpc2oVk zt>5U*=0!2aRKn?h898dW*dHyt;hySOZRtfqvGwF2iPKEK_1G#|tL<2a{R4@?$T(*P z$VOH}XqPN)>z#vIBJpae#VQmIC>Fdtf??d*KiKtdx`r~2P5>R}h_9tuD~THAI8kxw zk%Zu`G?}0JWifc<&)5vC&*5+5#x^vtKl;DeOorhNB`tFRIB$T#HnnP2)D}f^?G7o@ zgsW4mH zIJ>rOSd&M87+`Kbk_BZtz7t-C$v3ZgQAR>{ni%K+HH&N}vTL)0(bK?e- zT;)Zeb2&0T6^mxCLm~EGaGKU^3V1f`s8b!kf8zO6=T{$!YF*==7AU;g@3>v7a^BS9 zVvlwHGb3-|Z%UkIQ>Bl31$1am+(VQV=5;(9*_gRWuP98pcC4kmRtxBDfM4tqk;H0S z(*uu&(N0+4l+#@nQBi~6{|lhVsZlRqn;2?9wxrsQ;O+=Py`Q~Iyn_zTuv(>`(QVh% zjt-D7^c==&PAcgL^i`(YWG4n`%96mx@Cq~Y+?oL^{EWuv0SP+?(a404BC8G%&Ad&s z*+9nk&l=9+w@gVM>8Qow=pIrc=RujJPj%)OSX9GFfRa+@X7`Yz_5qKku6#)Ic{X>D zUBxyCFKz%CL$XjHB-pVJBj6MwsI4E94*``!rP=`NC0hJAAsl8W8F6L9Ei%+1MIA>% zfOi^k<=6^Hmton3PMy60;Vz%-KAL}AnGLCVL05*;T6aJw5{ZrFVE**nzcFAGC`bd{ z`6w-MdH&YxXI(S+ulq8q*vELwUjDRuivB`ZxV9R&+8dc)*(t+(DiKp#M0T(_yQlwRW&B@Sc-`L*^`m{NZF`}`$`f~VlOqu9%m@%X=BHp;03~*OmJX%hE zaMa9l8tMK<0C+@}Bsdk(IhIDAw9tmdlVEHg*;Imh)+VBlvWMp$>0cM}fbRKn`yML# z6RW^fyaOww3GTW--HorZ!p|UI<|Vs%^BmZhDe~*8T(6jBX;EtG#YH!KDCE)LMw1CyPSA$o|8^eSY?0qXAfl<9kvUstM}s@7M}0aTY_7HH4EdupBMR{d_J>6tCXeNqFIXCsIkYc9;b zY#%BIDfHp@9p4Yj1e^nIZI7EA{OiF`o^sQrym>qtMHN}olDd|}D{$}<5=rpLBJW`? zJx)Bj(rUV;t_Z$vzrYdN?ZHdAyG&uwjE%2$fb8+jm>g=g0a~adZTI`cH>(VW$^vzo5Su$r5HC)H23!*0Vh*h{SN&4?pt+ z5@|ylgaK~o5m5q4qKMS!oBjJy{K$M%1{UkN>&Mkbp}WyBp3m%*#1rYKDM z=W=vhTqzKLwXeb+^@&S;MdZn0C1|L~sU>3m#-@U8D?^xEVS={CudxV8pVjpK%>aWR zcvdssP_9-p*|ajMatnI8Cv{}(Bn%L%TRMsj`#)E(+#j<>(?@ca+O@?#V7IHl8x`!s z`w@Kj_iHKN$X;5FjQko`He@`vV+f-WxEMD7TBFh&!EF8P&Bt?6ZwD_*PPq}8v;eil zvz%5{%fW7iCJ~&-v8OZUzw3Jha>q7ZDGyiLQC-Fwe8CUHUwvbei|K$DL5~NymXA4w zBDm+mu+39*R$~w=WE29$d7jC;P<_@!4tD*XEL_Gnm9-VO(fW)RyH()V$5L&idNf%p z;~bbvJhL-jh*c(7@OIKDP5=r#hqe*ZG!F#q@&5xWao-eJ@f+jm>kdN+S_)pC$oZH%FV7F0y#G88$#@nvE&>@a`JPu0 zYIYj|cD#uc**6V6nG#$iign;%RLN>; zB6yhC4kLH)EksrbW~$4K(SS>PAC&OX<*{JsqtIihK2pC)Syld9iffM8ZFI(%ST@$OqOgTWz^a`cB;2@F0N{2 z)yB(7E+o6Gl5-_pzTMCi3*6JNpvab7ph6eHC+r|I0#d^}t~Jy^U`_}OI9^ZF>C00x zSHlkwxn|1;F0Ck`0qNASn!L8;BRT!o zq3)~3_6D}z0@!92+r??;BPhSxu3@YxCxdM|T!UF7boECK&G^Jn9eidbGmvIXgb&Ll z9rNlZNng!QB+yeAvhNZ6=H38d7U}N@9_|4JJ)l{cdaIGBUf!VBEEU_GLq<*V=e*Qi zokvnp`6V6RVGev9QU^f}6GRHW{veqpm=+bo+6q4rLqpJ%e~%d28*;J#kbSw>j(Bf< zPyd5P(>MLLT6G0-cWW?{>yi02lrxS8yWMnn*G&NBi4L|q=Z7K6&LnFX)rFs^AXI#i zEYbwIv6D(56(@O?2jmwa+`k zCEDrW=*V*Tfk$eevf}7l0uM7%45;BNT?hH&F0}HY&9>>L-J)3=N+p^0<4W>$(e^`1 zcHBKNa~1A;$Nh6@Ld>?x4XwHr6*3sn%CZi(_a?TF^B<>GSkwMCrZV5?7C8csTjEIQ4;}c#;;Uu$v=O?~29`3!3Lz)r^c=yL0Zp8@lu=&o)D(-as6)ff0lBLU&|(YNIC_ncL?*jxkQX*zyA(L1j7%{1Z~{i8Vv2W0FgwKJy% zMwXZpOPz2ER{}Xck}`60YFwZbZi&Rh^F~6-ruuG7#8XgRU)PO84D`0^)p13f>awGP z!f-7#37`|&UDa1_!Qtnxz%9t6?!0sTWtT_nCaVe6`7E^rVhz->CrDR{4lZ&Z5Pj=X zCJp7~gT0R~Byz!K2Ms7?ymomh?>ME9uKTnsY|(jSZZw~`x?b?Ut2q#6)6*N2ciy4N zsaut>{9Q4_?E_d0asy+RdOc)==S|og1DiTui>PrdC>f=N0>SSl>2puB9gU* zkO$eZx2!gBWq&oOww<2O<>y-1T}7w_+4bXi#&CDHh^1TD_{#Obwx%j-t_|HoJ$s>4 zKqKY1UWSFh9$oy*^XlIUf#?yOODq^TaYYa^k;fjkiD0vN`1?c)83x&|)v|S@6{~Fk zw9d56V(7>v!FH4V1HE9#szL>^a~Jc*)G{aWz7+uS8U%}s?$N}p%rSlGYg=Zc!)~`- zLn4RjOBg{;tH<%)6}=m!MdR7(ixAfCI5@Yf`*(M`&pZgogM+WigEaWYq8vr-c5CCMB5{hE3j!3|2Bm9m|42R55) zF%MBF$)5J9U@h-DI!z}K+n`{^wf$B6j^@l_&lIA$D6}#lU1Wq6ell*a0l`Ye>F^Zqx6YmT=n;6=8#>jZqo$@GoAmrusF0V zk0;;d#&8B+8ij{g{4o-lq^Ld*izE^6s1Rusqf~K=*`;m3(%K)}D3E-HDp}pLfIWEy z>xq5jq5`Vgd;_!6{zT`of=u6cX-H-l0!SMwFa|JpwWmfEPrhYe0>AGP7yNV3rk5@k zL?=+EHUKl5O;I#_yT0{116T7}@p$ckVL)i~#mQAjCOu?gRcLc^uM3-Q$)Ov#%4Qx${9Iitby__A- zZG*KVy1-M1axc4B23aU6@jgM9&1F##r%u@8F)QqD@_+%cGZ-0H>hQ$JC{L?qu)*i! z*0Wq>U?G3i{(BoY@$U-K5a$QkFA)};CfjMmNXkAX_cm0z@TOS$%OR6woXApS7k9|UAB4pTaq2H9EUhVj0UXQWGnku6Pq}WAHZdtstczbOzj#Hj zJI@l4cYI9dnL(!-_r1xrQj8w^hg9I|WUmvV{E`>8j#ad@DcD$YR;8*+9HmHLGotlw zB|JLe-+`1wFOTJ+;W674pc1qmw~LhM5Zj_dHZ4Xo&2LfG8WBfOaLzEZ3@>kojq8FN zv>A6i10#5c8RJdBrtNKVkm9Zf+$3I6j8@DOUPLs|T_6+r@QhY}&z7f#CTSAnLNNAq zM1CG8lz?jm9S%F=`p`cWBWNcu!rf(UHMY`dJt#d!+qyE_PW!4$(QzM>3Q(3kkwF8v zijrigg>#cWt1<{a+`~Q5tt!k#@RAr<;Fgl7Dq5>;OKXut8{k}Cndk!wRZw7NCs>MR z5*YPD79&?c9ArN{y>M6klT4%uOwAdBMo-H@)GONo@TCyNqgGXr_fWeK|EgDUVjv?6 zbSqG(?phjz^vJo@eN}%PY`v7?D})B-cLTmr#JVjeyzhZeT6u{*kQIrz zs?5iLHG#wWFZF+*YW3%reQBC?(LJ44i9Lt}&zLRLyX& z01ISLScG;e6Vw>aei=EAA^7GSb9U(031QC7+CUta(+@bLB@lp*0-VW>d)ck7DOezBoi|N5Amoi1p}N}@PPk?U{Hz?nq-UV?#<=#lvX^ECrVr&gT0`| znumMyVKOlcDiAux@a%Fuya*9Hs|RRo!=$5iP`L`O05Ax~eTzqZ*JHqgDQQJTKUzb6 zu*bMETwgO=U~M_KNdD&k5Jge~A|5!P68_~*o<*!Cew~LO^~4LPPQB4r zhHLudcF zSciD?#gvy745rFJ8Y9^9bIFR0mlqmb)Q{whwR~be^`L5uC5^cVrA2PhNQX9uZrVwQ z_LZ5?_5;md7rTwFl7JeaSB+B35G&yyejf0R{db2NgI^nv><-z7=<3V51kZT&u>`WSlIcU7RGjGWZJ+J9g`!cVA2foMv+Z={B! z^LjX^yU--epj`jE>E}<72THL8?WW3R6PsscB}BPVYCCK!AE{&!5rx>YGv__5sXwQs zlkEu3CLG$7HTeT+mCutp3LuTVJu#mVPVd3iQ;;^69gSYLQw~EJ29^b?>>h{UClPIR z$EkXzNMJrp&XFic(y%#&pY~bm@-lqB&e@#q*H~}b?6$c0`e~nOCa!bLi5RU2j`2?+ zzP2tyn8HrOLk+ETB?Tv8K(53>6g|84gMEFGvTy}B=mJ@@v!&||vV-S#)FtuNk7*Fg zTRI$aX$>gu0nu%zrp)eY0e-AoG5Do&{dx@O0f&@>*ltRHso_EiY(w|&Q$art0WbHw zrx*OJHD-4+^Lp_0-q5HRc<|+&TtKA5vi@GvuaH*;gfDNi7625^Ih-UD0{fqQvbw@HB^Cop+mXs#~_^n z!*gT**XyzcAya9LQbt2~*VRRzEAkd+sCgFaBM6(G$r2pE9?j_3TTA4KpyI@Di#b{1(pbk2S6?*XUt5k%+Q;*Ct3VoB& z8E>_I$xi3eW!|?oMij#j(>HMqQ8AX&IxHQvK?r6pAEqgp0u`;Jfyl8Q12%*V?(#(f zPjkL$w?aHrTAM0Z_OykyRre9j9z^?kf=Qs5%0S&UHV_26+N&$N`+U*qbfQ4Gh2ne)Z88^UBskpP;q!bw{jivEi^eV0E@2zrOvJ_#rgN@!>yERR zH#|t`;W&uHU-dwG9#RC!FBMsDrxH{C&xHl&@e9RvI!6&r($0Y*3dtMrZ{T@fuF4lZ zkL6Nnt$mIXGfi9QgLTCx{Z|`HTlY^`xP<6U(&ClGJ!xx>Gu*JER)%BA26ys4@Cfl{cA~h|uq?RS>!vmWN9tHLy+A&3d>r z{vvzyD!c8dx#2F>2;>5Nc=Q`Yc1+kER-Y&B8OpuB<*%W|64ju666;jnQAh762YbL{ z8!#{uJzH~Kj9)Wy$I-O1oT$qXzg)sn0WT!ahlR<|u}kGi&h50dm}4W>Zoz|?*5&5`Wr=9pgup`*T zzc_k&*MeQskj{1|6NF_;@gHRoWVl!D!V{;WC|+B%+VcWLhPlv%@cu6LCXEOf98OqQ z>qzOqaJqAn-e^wDUn6zP+qs+IXzvw$OfB;-OrC8@7Hv4NN6@hY?06T3xpxE-tkV7P zNPZ|6w?Sny;#)DNsTn8pXUCi3;|TV4ec)9#P!hY{J###$+djg( zhSJ|aR&K{1y6p6`{`c`O^=zTqO^|SX{Vd|IS4Nzw{MRPgvxuMDmW+%kTESZx7KTwS zK+(G|yW~5gcZ}&)r5({z?r03;Z=Q*2g^(;o^G%OJ@lHKfoN@xU1_RBRdpH3F56M9- z)St_$B93&XKND>YqNmFCxRo)rj`tTP!=H2w6TW>1kQ*gbZu@;9hS=RqRuN`H~>IxL}#0KFtMRXLZ7OCH9U*BS;XZ|K*8cv?+ksgmrAFk$#+z~5# zLnyD0TNyxSFX$f&fInP0i#8lSh|l7!3KTs;wl?5_joH|ZRnN?}ppl@R+8m?l?ai8D zn#G@kVJ(Hdktng%G@mL<*YB`oVkqa?1*V>SghCSvUmvVkil1RXTIFjMh5X|>LzDT? z^b%q0hL(J18C}>is4V6=pz1$W$R-wMUtKw}03g;4yXk7({A(AknkE~3`g_uf4yBP< z-9HAe>kAFvh8I8i5BW1{<7_<9%7tnZ4{wpJq~^y)F(=*-ymW&_bi%So8Rs)#hJ?>fLAPO=Mm z)q5Ec7?ii0?u}&`t7MI-m_aD83O?6Ze_F@jBVR~ys-Qhlk)@WlDg+UF>5AnTKDF%F zH5zyuS67T<{wqDCiH*(LRzjDfL~dRWk8lm{$ z&n>j52l}L&?@{|}?gtnl0;z;RRZhj6>@+pbtzv>w7%sn2Dw~cnMDyN!>&*YSoXs>V zt!xcby4GpITMZ-xry*QG%>n7dd9tY5ucQM24+(&GVz# zmbNXmVwq}6WJ~sceYP4yz`m6j_e*jOsa{S6!2sm3P2`3?ee({?FnYTe74Kr-kIGyd z`76-lmerP{w#1N6k?$VO;jEbVa8Q~Xc3A96rY9C*lV>DSe1SSWD*b1I+XklN@pJ9j zW)6HgIYHU3isnO)3FP?N--)@P-Anev%4OVVGu-z~_UL7sIH!@tZ~=gmTk)rbC6&eo zCwiyCmQB#k_yDT7M>2G3VEQbZMM&290TcnrwZ-j}m@)Ki`H4u#xFN{Flc3m{UG6hh z=yhEQ6<5ufn%@-X*B~pLO;DwR6m58PojK5nOKR;9u8)^Ui1Dp5qW+h2cm~2v0*$aLHA3 zrExf9!Qqb6V|nMw2dwjHK~cYwn$^JE!UkxEYs9ItjiS)xq8D(gu{Dm1r(NQ9&)9&? zCA4?~U30Xv2}v6lJXKrx^r@@zTEGpjjp{iNM9cSH{(m+aF%g+-EgrK&<^@p!il}O6 zv=S$EdE@Amw>VTFA2ugsJO>Vq+GF$s*#XlF2zKT{$Fs_Vju$lSnEgmY%Ys^jDDy-h4B4iVT{wEbic%cBSiprQX;O%1Wm zUK(S$%VbZlcI>R9(Ca3^cpc`#`3|JqDp1G;4Tg0&45vs7bpJ0b=e1W=9gWB^DI%ZN z0(;d~BZJtTj0(gItN}>bj8!i>MXS_4@S7^OjTp31N@GETujzm16*x9e1Gvi8)t7-; z3pO8eF3$&?Aa4P{9dl*2eyyi5i$0VJ|zPKe##R& zz(q>kz*4JTH5Q!qY-Qby-t!9uXZ4}xu&1wf)b!;sf-T?^P3`K5zZx^-4M_d_zGxnH zWu~|m*j7(JzJ5gkx^vY}I?zB1JdD!TR`qtfLQVE5-y&`cv~HuAMQry|W(6*t+O5v+ z$;^s9j?!E3Cp|mJFbt%{CVPyi)zMqlEw&roXaFpVc7Z* zGT>?_fZQXup?th&Yq^`gs!E1TtO-y*yP*BhxLfTna;Tw;Clb9R>s>lP6#vR>H2VUC z{kB^Aqa^=-W79;kP~bj6i zqBSn(a^pIeOv#?R=(chs@7Ktce5;^z-H3GE46!+^W45TET+nVhnJFNS%ajX51`%XC zsut{?RKo*A-uvwW9RrIaooF1VUgycah_WlI>bF{?F206?s9F`8TDx0qO3qVm1pe6s|tT$412!iA#a7Y?#V6GYi)Y(>G4^nDw zl=5eU3stVZrM6L}hN=V1%3mAyM%#B8%fyVOc})m?^F`QZJzM$fd}e#~cvhBNh_ zL>Jqau(WuwDf9GY5pFsnI`H1jqZzqQMH+`Q*-vtagES3g#GVTQ<_XF|MaSs9Y;B&H znKilfH2>i78T6==mY()EjyqDZwH{+)M#`z|b!uHI&u^pU@@Z&3-pEqW)=FoB=jB71 z{Eib#Y$G^h^%|$XMsewX5vpSzuN7yrrT7o5>IBs zV{uvHNY4r^OKZnl%n9Z7(i%*`c^l&c%S=e@5IqfYyi#>+4LhX-LZ}v|I0j1?sV3%D z6*bL~X9Ui7^pFy4avj9)qzHeJJ#?7?F4ZMe%NmbT)Uj6)JxP!Z-7T0uJm8#mril@C z9BnkA1S0yPOyigQn_}d6Q5N_O7h-Bb>L}jOj<_K#!t^SQv{QLqxUvD@O!f}~;nkhY zR+#u?-qIsRWxRzW{Ro!tR3$9Y`$FZE7YQ+@k=Q7i`~Y%=A|xiK(c(mA+D&B7Ed@ez zzz?QfQvc9QLmY1WTdyG{5EqyKO-%3wY z_;6^+QHPWQ@3~#fFeYRteX{Pvj!BC_D=6ElV2j9)=)`z>qE&Y-2>EqqCbVeZWBm>? zH`Ivy=_D0?iOK;OCfCZ4eLYBC`GC}z8yLnFsgzin7DhX`#%r0d-#2BsUCn~h^FIzG9MyAP+&vxcEGv(lUC5PrBUsPy}IocjBf^ywNBDhTsyIehnuo_;t?GCCYdh0wqUZM-5yw0UO0t=b`Mcf z8CP2;y$C1J8oN?*3C4btq-G5wKU(N8Lpw2ve;69`a5~b}vnjp>?y5HRMczzXd2gSE z{@zk_AI==}K{H$wnf`dF{&HfVN$KM=lJ4xoTIyB$XnJ->(-e9S&|oUhrNg{i}BAtouky30#EeRi*=Z8dc_4=#B z-N`!|bGlJZ;;X7b&7-FBfSJw;tY(RvzAafGJ~-&JZ3dYb(lgb|N@p+f4;P;N+1+}P zDSvgjOcq!>xm}thnsSTbAhd^6X&O#39!MemxxRc2mb(1+EgAL^I);!L#o=u3QJ!c- zBVgB!%v-pRLPvlwLCn`Rb&vilZ62rFN6sjn_pwY0PM4tzUsMqnB;|;@pCC(Fi4c|z zd7G-`7{>kv4YW6t>4S-)r4~p|yJT0}dXxa<=fobrl{1U4GKFn2$@fp{12#=HYvfN+ znix0`chls0LGg>iWBL{VHY@}4AzImdRFAhEh#E}-F!?UIXiA9}-V{U1C~3b9)XEE* z`J~VnfY}(}s6_sC?S-t1f69?pWMR}c03sNcYT-o|33=U3u7!iS>|+Ern|n}Ioky@~ z&)6;ka>@s@V?&CeypE?pxa#6UHq$YV9CN*-u4JYE1h1|!$`Q^%2T151keeMhiI`K2tL12^-}J zUkV_3n41QO9~%4$n9tb8Q^0Oa9?LC2j$rgr55QA#$HGoEB$^Z1vyG01Gu_wVL2}Op zNY#0rDb29JvcbMU;~`XI7qOuF)dEB490bbWYD)I^MyHn2`b zXnM&-7s#Y%xp%`g+O~co0vI(UIH0}!nM9Hvnu4vC_`70afaurREq3%Df##P`0j7s_ z=uVHHI}%Pq$UUanSXDu|a?a94&R3re#AwKa{D!Y>d8J1emJswW!JDpJ4i*r(+niqY zUQLDD@EhS-xomKNX$wI6DYLoDr`;L*4_^Hh+FBc~Z)y?8wjEEu8Bdid&*SI2HiGp2 zn&qb(?5vFZuxJ4Z_=Dlj{SXAAwa+A1ZUPAaf`@rn4cN@<;!6fQ9jVxJbv*J1w{Eu9 z&McF*a2^XtZ3v(eDPqEq^gA#ZG}qKW%hhb+ z^UGLDj(|Gb={T(z0w6B(371X!YVxlzg%2QclTAFomZn!})%fuqG3uOi>w*rkHvxCM&?obB#EYRo2+rRXuC<0!C7Y*BQQsl zA&z#w#AjuLMQ%DKyFh#aq+r|PQkduWGmSfzktvOuWcqj^VK-`Wp3F(@QsM(_{l1m9 zpAn9nYClRp(R+8~GO2IynqBbuyBLm%GC~aXK{e{|{4`hqft0ieQvK+rI3*X-&x>55 z?4{hOma>$#Pc>~=YL(0QQHDYd4F8=bbEi?D(wxtiKlB+*S4xRAi~I4)B%wa1GPgC& zPP?Y@xA%qAjkM@18zC1wt>5||EiU(XH{gis?B~o>5=B!OgH5lO{!E|LbCNJ5zoQK1 ztZjs75r5wszhIx)sAoFu|Ax1beAv8t4cxJ(eZXxrM zRbYYJ$;DhpO+%!lXtzo}5S&dAmAQ804&+tS-hTGRZ*{*?^VtY#%_YZeu$?)oz>JEo z?WG$feS)TBeqs1DEv-P&WB`qALEc1GxY?V{u-zuzbLS?@1T2YeCMu zKNhMLSMsZtX78!n&N2Eu&}|M4H&u}24f^bbA#gaq*V2vz<$)K_`V_wAt6<+y)nGNbMKk0fn^}bMRj9thrm$sac};zI ziA2g1T+?96#vK3BglC}!8r-LRFApS2;KmM{#L*_fr3U$Reu?a1UmC*QKGQn&IHb)dy*4m=>dv$BzyI!) z-Z2@n#dS!+xRLOCa+SJ{Jz@-0>Npjxa+zpyA0|*R5r%9-jA!oW5v#qOp?!e1d;99E zLe;7iYfnNewB(>}$;(P5Mq!ElJHeA0u~}JwvXUt<*qpzl0xHPym;oZ22k5?S>3`nF zkOXDW%n=M7PFCIdJam^ZSEFTIv2qWW>59^<#^1m2?%vFJY7WtIe5Cb^ic&~Lh+I;L z@egxXYd9$zv0F=;$FUFrLPW*bn%l9Q9Ac(aBI;0RCs`oor%MT+`JnHaHFv*LShbz< zc%lfOLzDqv(b(b;xJDNanam<5aezGG){#0hz9A-jH1|r!ghay|IgUqOm;*ERO+RA% zlTSAt0PpSdu0t+n0u$Zk?{9yFaBptKyZhTZadqFhh`KHgppxs}trz z`nGb}g)k;#F&bvc)1o(qUd7YvhAlll~@AmfIsSE|yY$Ga~&)I&>Dq%n>hCD*X$q|M;yL3hY| zvKxw?wW~8r^&L35N2BFHVc?IP)|vVTVV;`ef zegrrbV_jAkjx$5{4h*3CSX>4?&}V9DW#viK^|0(=d^BxLA##uJVB(Xa>MxS_W}H-A z$~y|N_SvDRk@@}9Dz?VXa;5aX5V@tcrgX*`XW-6~%26&$v-ir9as%`-(@t4^pd=GZ zxmiMff6)l*Ar0J=FXf}2fkV|zvKBqAF$iP7`N&|FNnVP1)L<>U%f&cMNUOUV#J*t% z-Q58tw&EK(Y$yY#vjg?lYI%y-k07a2bhcCV55!N4H@@@Hm+-2fESMW|t6d=9eDd~) z&1E0gZZZCw+J`w{qJ!~(2Jq|`J{l5(2r6ghcN5b~V2a!sDM`r7&uaUC5fzV)fnFX(YhiY#Bd znwk%n>xBhNWG~z6JwEXg_#Kr*^ves>Km$V8@ewva?;f&S5ZmBG*EZQ{cN#s6MGVj& zA7pwd4_G9pU=~X zVZu7tkDrEVDBB?Gb4lxu!eB|z&=NqJ5mj>P)4kK@CTb9paveSEP zsPY2J(^?aOUhFHz0MBoq&$T8p#*$si!!AT|Pr$|LVY55|36 zztFE+Rw3zGU{@GE_=+$EeY?lLdWCJJ)1}?_GzZ8CfR(yQ76i$x>7ApeQ>Hj}&}5iAkX;ohtm6 zYg|;vn9w%|dzr|hgUgiW7p~}k9s^WES?k>R&-KlN#BK0DoR#I(Rb{Z6a+v3c!J5N_ zB4+d;AoPDCIZYte&QVN&rJdSxYVTvHepnY9ELa7BUw!ELSc_isSc{u6X#I>(Jt_J>9g zHg@xD=mwm)bMbXJF3NQ=78TEk8El-fP%{SM=fc9v%=DgxT}Yg$Ec#o=7sHvrj+d6k z%Yht`c{Fo^fx17=(kLYuEXI^(++S%kXqq|&_=BH5^~|~>Jq4*M{`851AO7hRxNGp- z&Q*xiP#@XG|68c}sk=m*P`ifJ($K?LHK-wPfo0Y~wb+&4J!?<#(>qS=L3QZ$E@FTq zeveJA{xSSC3lDfv0a5z?woEjhgo=s(gycjACl}e?-wQHHx!+m&^God@O=Av1?>0TP zhIhjlR}%Lh{j2a;O?;sUS4<>G<1}llbCzc#lzus`jzIV{9NXq&elieOnb;a1x*TH& z84HF$(W|l3TbcQs$Ae;oy>Sf9VbkgJkK|3D;zB~f z^i*^+ZJ$o&>~h*Bv1Pkx6SuH77qdc8@~~dHQt{4_L*1$U$-?)Nu=_^JBJdD@oJ>X} zj!TWTh)>omGZrmhB0eb<(d_3s!>fX0Fftngb;Wo7Glf_!27_U2C~;!Y=m_5RZ;MOa zV*Xu0-r?_U=_3G4(auRHuRFlQ7-8RabY*>gE2-4@S|6axpk&8RXY&DKSTov7nrGFD zQpoZ^qjn05hcO_c`D4=-tJHp_clD)jTs$7?-{R z$DWiMreO`3b6vXug7t}2;-G0?y@^t)HS45Qrj=Y7TV`CnoX*XYPFkWi+tZl*E0whSt)s*!M4LOJKbY=?u}C?xy(`Qmbg;ld+Lxm`ZqJzL{SW4m_@o z7&TS`5UA|1e~@V-&d)x@u?$9PRxX!M1ROirNc=(;D$agrcVwGJ``ySa;sX;7X(C_r z4aHpeMQTCD4|gLBJJhZ=!2e`Y1C}ScX-A$G?%CzQ*Ozx3c=WYc8ISKgcM0><97$po z=ZC9}RhUnOA*BZE$ZJrI;x|rUtH}L^M=3rhz6v)-D8E`N|8}isa<=dOfKY@AOEF$+ zt08#nr|BKy6Q=FD?sB+Kzsj&9i)sh#A_yt1LYkvC2~OR_=ys?$B8fh>fAFw!I!;1O zz&wHL;m1C3kL!A_1ahS`_FcP!_N-d%yR*PYP8T8A*V_BpDEsBBqon<4a1E(qmEWQi z770RJ!K>hYO^48XenQySV8Vv8X{AohwOg(cPdfT`= zulf6R!JX_a{RCGyD5z2n0AgaT2}qk(Rg~k`Uf}KAjA5r{F{l8+aI4oP@aE@OKT8Wk z+yR>CdLQ4enXtPL2b-J(H?Yj=f#LhCASrU`a@~Wfvu1;WWj?jzsG*$2CjScUN{gfg z=n{ytw^YY4gI}ax5xU>I=t6dm_q#<-(8k7gz%8) zcocA%FO7ck8=y$)BUvw;!fw=lZihrt9v)v7r_7J+az)a@EH(Xj`!; z-8N~i;P=r9i?ftWb%wY+rnI=KK{AhkClbe%xUioC$hpOp-K?z(u{lqO^4udy$HMj&F*+V`qxEv#y$W^D_eq}{1X0&|Xsyg%Qi z-L=h^z{jB`LlI4BLE?{Kle%i=G<^2*8DNad6dC_CU4ib&nr6V{W2sL!x$x9Q&Az*j zi$z`szA0OBraMdU!E0*Zyd(`f{;k042obg|iZS)Im!!BuWFLSkXWtZ>GkYh%X9i*= z2k0}A$F3$=nSuj@x5)Cg6^fVYku_weqZDL(u~Qpl1JaFVw0(irbCi1KB@em*xu7kH zORMYA-;GyM3&E!!NcSzMoV@?=__}uV3YzFs^hq?WCWLCs3v@x$GQAvbrfTSiJOK%- za;&hlx~(>|X2oL_r9EVJB!e6AU*z_T#syQ?u#k2eW>!k zYb#;TBn4z(`cJ$H3K^;dD+jt`>U?7P0c|y<=)SaN`NF_K*g}@ zw%)0+;u2yC^Qmxh4AnjLfE$WByQIqwS^{nM-no^vlWOlHt3Ovc#)FQ|y3wGXWTI>l z)m)3a4$;9z$NgBD)EJHbl<2r3m$n^5qz4HU8Q~iMQCHG^6oZG{(9ZZ^XL6Op`_(JPA7Ss$WdAIA{1Ag?(Bu5li2;7Z{RoTan|yR(@vp^jT#u=+Fz>pdD!%TVsRsgmyV+w6msodVG*xl7Q z+4C{1=bW=?{?~lAu#yT@Yf2GUINeD?sEU45#V^XJK_=8b`zL$5;dlx)OREgyO%kDB z9M$$jyoEf35zgEC1`80}2Y6HUxxB(l)DQinSO3192e$20vVyKFhL3vjkX0PKB8cI) zj(%zI{fDE7T&;C|zs!+lnko5=fpOv2Z$Xg_&+wQOK8qTzkT5;KTNlE9&<5LZ5cf)} zS;VVaO%|_T1UI3L{e7Um9fpvt@P2e280AMEKxXgLu1lDtwuP7}lS#q)(>jWTI;T(s z0bf9(>!trZ2{?0`$Bg|Rv>Suq(WG&u{iS!`t6Q`O3=z1+-*#T z8>X3dJICt8RrJ6vmaEf3bfaGNmFC9_yh@4@9!r$2-S;6A56B?5>vq?*PoUodTT)wJTWr|6wmRdWh0M6rmfS0H;e+rbY;a2nS?^yE9dL`sWMoC znfu3vg zZ9hlDihliXn8kSn5J}7l#ngNViT?MR<-7v-qh7%Lik^Xnwl^k%JbHBy`BXsqmLR+_ zee(83{@CY_^2L;b7augG2Z|3>ShUas-={g%>oozHT_7X5ey zqrX^;@8aeji zI@gwy>FUd5igiK{ZbBCsZM$2K74!7Opz%(Zm@6{g$5Jst2*lv zLsLe6BB(i`$9C_Pt=gTbs95JYC&|MXAc{|i`!j$jeHg>v*L$z;t%Z&i-)BGqgi?!& zRAcADdN1FZ7p^01B%1u}A8u`*$S@?OaVIiucn^P4=!Ze4h8hG{6!A$M(R7 z{TUZI=m~cS`7^1tO{~#?DzQ$B`AdJRM9nTi z|JE2%nzWmDZ>=lP@nO1zHgeJ^_*cND;tCnXr81Y#w9JlXy*>mkNo!9s*KEKOx`*d5qa| z#Z8=Ejbq@vHQ~8-5-2G{x)z@!yS|&GmO8YjU?~)0UWDm==YVL0H%EHIfb4qe$2nNF1O%eL_u) z$sqFLEOg;kt&cN=Srgfj-xBY)3SQ!$Ce9@WtB4Ygj>1`VY*lKU)q>x@@y+xM;&vMt6QFa3Q_rX>?>@C)( zF6MW~&yx30R$BMZ_jYsjXeT^G?Ht^E*Yc6UW2PZk&^5GWVrbblMh#W`S`HROa8$vh z>i=DU2@xXY=!_3j4EB5?VNxgV?Ddd6dHQ`JfhTUwf(&*`T|!_Sf>+}#E=c^af?|OO z528yL7G1+^q>W(#akHOIbeSi|n1_+QT>iYbG{INJLJ>Qry2FSlhDA@2aJ12EoGyy1 zKwfqu^>K+OBK0xUMCd4;><5|OcyrKo>1LvFmrwJCUlDZ?%UlSsrK+DC%E`ke69#h; zQ26Hhxer`ES0O;F0ie*pna;f;v+<|EWR_^pSRYWT)JqzW4iDT=_fnOqr;4m?>~uPz%AFv?S*2Vz4_q@ z@4@ngtbBv=o@>7vmDk+2AI27163IU$p5Ibj&WZjT!JnJ0279Li zc-%zkU0OBK_NNb&xhSU9 zK_r(?>e<2I-Hzg|9x@?d6O;WdbIazW1r(Qw8eD`D`ZikPEh_V06irRc7^4VBd;5Bc z|6MQ|JDSP~wk0$ux@=&XeymU)a`tBc@})1aU;p@=d;obeEctnV-~_R+DV&X+ z4)`L86}SAMoY~*~aU~FRREwAdbvokZy+Yt5)@+$b1EC5oTA5Y7ZehkFJmrv`|nQ(YOymDNqNmRaWA4R0j_`lU&9P8Qqvc5HWL zpOmmdoK06JGytNGq5Yh2y=l2MR2FFOge`^10pL{M8%MTa$}dMzPU&eM{o(o z1a(ImcEuDpajmOgiVo^weV0V+apN^Rl)y$9Z+1B>Zn&$DCq0T4h2nWk-!Npl$yuI0lT%F`FQC7k&1j68FJapCt8vi*~qKQ7T zBMsRW$8;=-IP7@|RrQJRGo1x-Hv8{sa91+fVSrJ_OLc6vnr8meV1ZgLHT!0aYm^QV z@6iWn#u`HM$TIqg7Nl}M@}@9Kp|F~SZ?NhZ4A1t&*+?jA#&9ucRi1}nM*^}*i{KOLk`KAi~>)dggNgJ`#w)|H?S2ICAFM%*%2W>viY5wIF5)g)~g!@ zQwI7~TDXa*ah&DjZtDd`4_DjRZO|=mh?{U%;?D-@H$zA}z*iy@wjS_y?`fxcYpYe` zj>&jF!SY#|4jM9>O8~D49{D3!eSWjq;cYZwb_qjumTXI_Jl{w4@o=DlPks+5rj^no zPjtr954dgKiv0Eg#7uBhOeUN)LiN?jGKyy9fJ%p5iAc@oFA~kCD3Q@NdOWMs)Ke%K zXe+5t$scPe9QE^@cstJF0w;a?%~GCP29kYpjoIdalli08scZi87TN$rI2T)3s>>Fw=BtsT_e~?qO>%jF*<@~zLU0QLc;*cs=)a@x zA4PCOv41ntIt^0xpu$7qxF3NnA%wB)%{sNSbb!@NR_W;*0$83YY}%>a|5-WO?#?YY zbX@AolG;)-wXGa8z$u+Rm%bf|j7I@~TzF@L&EWv2xa2A-tzxG#?#%$z8FNW!=@1!&DKfyH$BrD zqfMzSB**#;C$cE{fREJ`EDmj_(@kyCTPyO?Clkyl?D==GR_#Q|r?UJB@3?%>vUFcT z-`=y}7uy+y@iUVY)i&Q_PlspQ?srY6^g)1N%xw}JSia_864O4>JwTf$O^)RJ9HtT$iiFCG=dOR1eTm?sv;<+@h;D$ww9_r=y)1lt?)?dG|y3tDU&5(C1i7qR^ zf+nP@f|5~j#~Q>pT&d2CGK<*)!jqqbAhjtCErq;pgVsZI9!|^5Zg-RK5=7pq{W^Oy zE0SKBmH>GTA{#ngiw^^8ag8>%uv^l*&~o;|eX_ez!Te@rfuS;pHOj+6`WG1=Z;%QT zv2*(}hK8M!u>k)+0Kj3&CA&SAZFfr^nrGs>){t`rN5?D)PcCCD?WyDtH&zKog*7a| zfL1UuCJ)4u7ar##r<k!cbQ33oO^>%Ny(HZI>>8bNC_eb3Y-cyrId^{f~!@MC4DJ z9&0UT*T378Y_}reyPz3(^Z>l=);cCeW>NS5*Q$qQvCy&GUarSj8`5+Qxi>Q91X_s5~&yA0);1nbY%XP9;w-bUh8GiSp=1Vh?m6e(+L)h&Bb7Ly7rxL z#7xivC-ehHxlOqvbo5}e6_|~k9C^6EcUeEIE{9vI<)SqcaX9dN&79h&S;0%v`~w^) zg8tOk%#zir7R8!Qdet6S2D+K}U6>#fAFfF0Qa(`;fSzslin}X2agw?7d?0}T#cw|v`yailb(Ih(s{wsd7!-b=T;q%LsXS6j*p%xB98hQA*gJYBaDv^gBbGAzfE@UM(}c7 zg6XS>T#H_+#V{&;JQ=wn1--L=-ZL+4`+bh>Qw3dz=zYEV!?LI(C2o|n5_PG0XL0+1 z+h2n|CEZvB8&{R0J1==u%~6TUQP5SK4=pjM6mOmp#LKu`e>!jJ!WcqEWWE!OQ4)W< zgEYs+Cq2D2cuJmy5}K!8PsN8eq15b6c0M zabsI+wITOtVf8MMmeMA-)}{&j9|(Qvv=cHKoSbJ10m#EWkgRnLFzj+!AAu*%yAA-R zsGx=3Ev-ajKAa2$dL^U4=pfod*=w9B0G8dw)`hnvlc{!)S*`~)dL_;`{%56cP1C&~ z-=)=>X$nXw1(0Nk1)7g@kU;w&dPM!&O|&=`itVO<}cas_2?3OS2CT? zr<#BkZyFsvWLQUe5>hcVvy=>&GOY19xRLhfY>e@W<3_`sG7*5) z`2sX&+jQPzp7KGvHrW7CUad){<>48Aqe$!;TKIp$JeZ68iXOU|LnP+HO+E*{J?G?k z*QQqg8TQ)QDz{uGEK1Iw;X+o+CeMnaca#+v{gtRb6$S4lSXiv^7a(!_u%l}V3UCeF3;=vB}Qgy?cNFc##^UV*TK}KBtfKxljGly zkJ71dYC7PA1vZ$FWqd5@Wlr}zQ2JoxUeZTr2t~aIb|)Xt>zy>4NZSb^N*Spn1HU_* zPKW^j`<1_EcS$|3#F*X`JjS zT8K=SIE#7Jy`sM0C}Ej`#|+WLI^kFp{VeCe{Wsx z6!Ybv$s|rZrJ|D(MjzB&v<`uUcIot_ZOw|xHfPE@9DzGFbdb1O#MxeL!v$YZ!O!YorK zZ3K(|Dk`}Bfi>G$M-bFTX&-!st*Q7zf?1hm8TrJ+iR;XvFQKzq%zrHA{OW;YX8uB5 z%Yh!v-<-owrl#6ZT1SK47iRQhNDAi-2_BHQ;&1ilzDcuG?!z;Nomvmk_L9kp zgRCbsWQD9X<0fldQFKABNKxsnSR+~u9V4J7B>4henclqDaIC^9W)7x$6__n^CzmSh zyX6+pg}_L}S)-AGBb18Hn;<~N!bAK9Z0JzCzjA*O7&%Q1Vm3e8Z+7YnQ>|0%jP0hP zYNxh5AdSh;g*Xg)i_7zdoYS!s&Ir{HJou(@P0dcSRk4?uR2J&2!A46^ELz~uL%*GSI6p2^a8cuPZ64TIs zq}~y#X==nzj;OWU#SK-AUv7x&Ct|yRAQrdjq|sT~t_L`F`uHmM%n<0e)orx#`LlZZ z2d*E#Pexr^VC72mISRLC48lI01^iExLp|t(;d$c4z908%c}Z%MKLKf|gQM=^#4D+P z+wqgqJTgU%b#Fe1mMBMvec82zoPgUBbA3SUrfXBzCpr46*19Zl(eP*i*DJo^)uufz zzGZX1U7ApbrVhloxD!FPWk0%j`83J8tFBsWm4>?7=?C zhtn*;X-j5Vw*0s2zc>R?rGzfvaJY%jd9iowAVyqW5>mz`WdAA}3Mv}w+G1Z8$?`D< z1CaEudi>oPGBCuwtkp2s?27rMP)a)ex-dU?1j<9nlxuq{)c9g;HN8?Hyl~;P#z{58 zi-@)Jw!wO>Bn91P%w5FsReFS%a08zP~nddOe$D| z^vKghaZHqExN_!nzt<>V1KBR&Rw?++PYUAfkfsdP0hHo#7PHIaj^!`O06xJxjRz7o zaVY}6Xg8p;lK|O=`-*5U z?1;ryay5WF;AEdAd0Y78D88&A)dh}xDzc38Q@EfIoy?}3%F&H_Z5-~ASu@X1C=-yP z^^K-T_ai;j^EutAt!=UHksr|nLJwP_q=F}ftBekJSDCX-%aX0wqHav*#EFTVKtDGU zh(RSy32wMzIM9a&%CW3%!)fgL{#u@#F8?rVXz(F~aZVffTYuEJAX@1rd`5H(a^qsf zL68&K7zk?$+NBzQr>6AkC2%?51jdg`_O2NuDnxx*8ExKID_uBee^8htc%c*=fI6tm zHTdeQoiSPM2M$0cscct0u223ZWMsoJ;x|K%2Uq4o*ZD<4QvorrQxK;LeW#XEld>c} z{7*qQRn05(xY!2}B=xb!$z9$RS@zvRTiO9VjV zk|<0Lo6C^OUo>;a;=yOORBl6^rdj7g7gLi##Ik3lN5de?2;TMJGPU9w^~u%oQ0G z=nP$BOX8=k%ql6g?aq@si1Axs@D*FH#>;d+ zT$QN1jr~jL8)3r)=Cr}Kvu57qKAe@Oj`=xih0M}R+fWG2D7GNIk+rM6flL^vR7?NO zdbyC2ZR{pZ`vR=Ok2_s)4;QQZ$`n)3r6={o%HDK;)}}>P(65%mnvegud?|1qZ-=K; zCK&X4V{WQ6L>T352`kLydQu2gB*?*Q)|zbE#DkJ%V<}|;D@|cpce)$QDSE~pNzl${ zHE|%8x3sO&SSp*B1?q{DMq0|!G$B36rXC;M=e7u6ja0|-QB0`@&A<>QGIc;=JLaQ4 zD<9Vno9FymG%a7XH#dbEzFI4icsuoMD)j7pyg0a! zHzrDFYVB@F(@uqUUGwZeg6V=Hq0T;k3K9uWF;|c4e5-%v63fBcJCmhLP2j2fP~*9= zH4Z|?tELCM#pn*s%2V5{IXfAQy{djQzs7dwzzV6&ykn$B=&MC6As7Djcl^JPqM>#O zXNEvJ-A@rrN-IRuRx>s9_;`2aL>Y^(O5!I7R>+TlND>r${8{xJ5-$WhbZi5Fti7Qw zJvF_QJp8X;(XJ{l+#hXi<|?~mDm-G$VG{!+xp5Wui~8`_;LlyQhyx zAb=(A=nPS3Q*XVTJeQi*>H7b+5T-m>?mB02j9Xe}E3YU4UZ5*!jE2==cbV{%!Jq4n zSeT4x2mrE&QR`*2U|gE?r!%i9$rL3NeVh;-TkM3L51DtxngI8^JmCvvwc9!D1{+AZ z?SLInFdaBJ0ZzBMjK}~7Yv|igvdmj8zGMH~Gb0>7Nl?OS1zWc8h9C~UF>`V8MOc*l z5vWW(h&Z*C?E+X-$2pr%7a`R_Usu|$PGfW}7<}TBz~DX{h$}(?QP<$EVaUNlLSa(j zF`n*_OjSzr)b3gifZOU(l+KW1W^$OOiCsGV<^|fI_!isvs)5 zYJXD}j;h{yPBVHvqyU(3hVDc`@@{qo!=A<4T)%%Ly@5L~(+;AD4homck~d7MjP>&W zJoCqdH5^h1COhQr+;Xe>YqfcX^l4LK3yp&kP<3zFq%78BPBeI~nziFv}&7wZPnB)VZA&$tmP!tn`y0dS)!m2-EJLQ&?=9iH=#dYcs&giHt| zk!+|uNpnL2Aa$MklD#qjC1hZUSeb$UYGj{FzjYf3%1UwGK&a!SQwZk1YV+8Y%B z%TVdV#Ak?orhek^oTuGiPdbUbAStJeWoRO2xkJKxfJj(vUTY@bE@No`A-X}ct&W$F&eg6BoWsC@% zhm`hmd78EOx5R(zifsxnm&ZG_0~UR0>Y`X=-q#b;%psc(j5{t!iy!$MTKphz^*p;4 zru?k9-r<0lEw`^CU#_xe59z?-GyF1)H4;k_YuMsLXgq9JKmfoE|5Yi zQT$mDDcIks3XG~h=Xta2{v9JBvLr{5ssEZSv^AI>*%5VBJ;DUx?%^yV3G9a0556mJ zuMoPHtQ>ICuL4k&u>5r zBv7~1I~3++0^`?oiPp1j({_5k`^S*VNCM#2e#?xo`1ID7s4l@kIlm0VB#4LomdW@% zgJ7<0r~KjY6+_EgKY|#@AbVL{q=Dx25D$qQ=o@97;O3Jtwk3cOG^SVOYwtM;P!a36 z(DC~@Yotnn6d$b@!V$dbsw^`xmCO`M7k8BBi0!~_(@2=<1`|%v@3oLacd6$hN1o|x)i4{n8bujQN=o|)iE{TdPss3Y+t z8l9w0fMKkZey(Sd%?M{Vwqm#NIIk^#1xd{R{=oj?r9x^5=?4Q2EY&YG-L5nkxuia+ z4&hPxWltCIjaQP0}U^O^XZ#G%k)cmsrH6c$?mvAryP{ zi?4h9j^*ZsJ(6FhAiz764%FJeoa(i3kw9U~Yp7B#(zk>b!aJ>iB_qRWwkG`SG5qDf zz;$RLrg*lXGx!9V?nbL$9>xDxcU=ObE8@f_64JIgUz%b4U4Qz zSTs@1t$c6&MjFR4+6myI9fdW=e-CH>lz)<@05eJv2Dj+X$=k~*}zX zcZkmgSiS1|l*7guq5EO3Fai47xAI_`ln*ojM3fD`OzAbA@)r)mW?GKAvV0!`@+kOM zJ_}PR03QlR%mTovK2gk-(h_jOpTBZE-6k^d#_m!fEBwtpu$%|#)DeJ!(=3vG!>K=o zCv`M9kJ)z}*q>dXsJ^qqhzRM$@B;U#h)`hTO_lSwdQ>`6;i<66oc?E0CGP9 z0zLdW{oW7*$n6#quDu`Tg)tfS;?Lm4t@YvuL7BEh8iX5WrCR?3tlN)1zh;MXwD62-99thYVgapyV_#7pS+sh@l4j2|MmS|I0AiO0aaJ_7 zHwwBtdnHBp+r!4lci8zcp4V6!PZ0cE?LNs%_~Ls4w2+^(LXU4_&u{N}0J*d(c8nVdRb6liHA9q&Otjvi80s-%of61yjKWBpTuf!Kt zqKu3;GsIwu!}+pmm1H))yCRZL-o8PT;iNbvUu8msQJten%#4?;iy544cm7z(Q_aOC zJdlBPH8;k&V~67h+kSU0hvW?G$zWrr3H*{+)iG_m*FwsxUzA=LjtM>6U8KZI(Tvj_ zq4Xa?($v6pSzW^6jiZ{JA4m18V?X2%elgSrXyF;ndEpRE-(J|hMV33okI7y(@9<26 zFSneD$Q@dMpVC7YTusaoQ9Jed>B=P51UzUeL=?&fzE`U#vU&2ByXLWB>4>yRf>Wr$ zBc6MTF8=BD8)wvJxK^zYkB1@OJ&wsW>QAwyNGWp%cQ+z}r8U zLk7f88J`jired$MS-Jaq9yOs**_kOnnW&*BRSWuAOPbs>^g0RZb7+l(sg9L}Nm)iZ zP(joze?|glVH`mE`a=-FNkAdYz9{tk$W1a&7WtR=$5*LP?td6$GzieYTKRM%`LO7y zyf~19(V9R;h1AK*a!eb`_O0iwvzfwWGV|O@YbmngV1@Vqgk3?O=URg^gH&~sIIM*n zsdg1Hb6G!!gJK8}5Q86Wq=7Q+{&NJ(dz zq<>#5*h}K_7rhA(qmQ6L2$_y+zyf)cPk`;+{V{D(_Rys+jbM&jhgJw%3dB7P{C!eF zywl0%?~yoQyFh*-Y@zbtXFWaLu$}j(c-Wp26Mutc`Pm;w(R-J}H=L@qDAcpSeaRq% zbwwJd+G2yD?I~k2EBVNf)T_6#8q#j%6Yyvft)#N<@na}l5ZSv0e9J_#M7}f!KTjs= zs5X*mO19uBzchBd+(iS&CCI3Fr2N2^Fg-Ka5t~PGfvw`?UB@h!*nr--rIs_tPHBQm z&NoM;pA4J)EyZZa0AupCi$NkGSOufhl}G{#3xi3p-X~N|q!~~eeJkR4lgmbR^f|6G zMfYHod|#sx0aQzyEZWTi3W9kbYJ@fnpe>pWHr*DDpFjvl5w)R|KW*%EX>*->{M2|( z4jov4SLkI-B3dwrOA zC+U9_5tLNdehQkmUVH9#Lwa~O4k1?m+2y}Zh{^KQ-(Zkxcba5+0}cqZA))Qj0dMgq zm?%?{#qN8c4SGjkvU_CQkR*?T3yNL;ltMK7k9(2ei@IqtgR!Zjw2Is^rvsP-wjwPD zii4oRwfUK0V^MMw77+c!t!&1nf2ws^o!!FST<@kT;GNU{I0I!78Qy3%edB|zuHQ*7 zUsO;9`wmNLZ7x)TI|ZSt(3|}bpmUJmOTA}=0?D8E*)ZQm5~xnnv)fH#;}nJH|9WVV z_y`F~i*srzGf<^Y?604~0ZY%3j^hhf_>HbsbRNNlyV2oi5gtI=s3Rvj~^>Wk@?@bM^@S zafF>B(XXBa@VwCyHqBj(h6qcRWmgDL*y{GC3kH=aSYgnfLw{U%FRoxQ*f--jUoV1-O%8`Ca?=^+i$02~{^S=NUfa6- zIsABCnJT4KVCn4rhGrdf-uviJzj@|K)mts|$rwMmKsp|Hmg2UqM5p`}OY{LsGbPdG zJl(M8);rUzN+&(WXv%5$4vfqD!I*oUvY(M`UirXh97=9?4f7{YGOvNKur@vJX48TZ zeu>>!`4l=-ZXuf_y7bjb2b$pwMhsZaZGwZ%eLBUj{`1R-ofiMq)TdE3&2sDNVeUOfo-F%YZa88g#Ma3>Ni_i$S_#+U}v~PfSpEj_F~Z zNp7LCjjJmjh~ogaXb3@$2Rgq!ALreh)y^B>|8K6v%i(UafXp)QjPJs8w?%nWd1Yc+MFU*`M{ z7xg{j4aGEnt+`a0ED?`e*zu&|M%o%ZazQn_vP5KhQAoj@dbJbCu4f1NVuT7rUTt!e zs9oDund$gxd#&dnDvt`j)DD3YSDN?N4IeM~!R}KYkSSdbI1(=~j%%3m5jDaE+3aBl z5PUy@3x2#`!zC;Fbj*2wy}lL@c(dTU_$Uf7iyWaMSy}-b){gA&#fCkKyfDQ9vIna+ z9ZUmwx0n_r-zF3gNpB(ntfr7y^R)J?ae?RmrZO$wz;fL^O7>+sHNZUEN4}V3@|cBA z<&D~HAaoZOTMjP3taJtyyAqiLsD*b%#XY#(y0@5aHjLr`=0sg(58)axq4vsXeP+FM z3Fd-^HjPeij&+4!M9S2+5A5@z1IMiq~0p_X$=(w_d zaQ{!=$(bYT>SF(8oA%v&AF4yQ@Ffw3#^Mrvn{>dRuy}Bet#w}cTMc-QCve%GNw&d1 zJt1E!-~!?YA)6n%zNDS_wHLxAEFUMKzT8LO)nL`2%~`x*oZkyLFC+jlkuRWTH$zv~ z&f8wgNQB&jP7&1m1?PtTh6)jZKAjAqT1AM#WgITeBx;P~Ko!5F!|MRf+|zsdhM6nN z>~{RqTbf_L+e-dzhfV&sAQ<B68X(TbckuyiKb9}rlIw@{;xwLS0w89~Jk)^sK^163M!^hc^u$Mrv+wi+Zry#PA7Lb`{Q&WP5qJSIJWTk@(xzzi1@0u^_S|tF{7@jy z0vbs=w0yfwW4BRYwp~lxfW{wZuZ0scZWm>rm$q*L%AwPMWmLVMhS*Owv&7sg43!}5n~7i2P?=bw4b-c|b$q@p&|$!#noCyoP>%$@AM zKE%F2%N{fn2z_?!!5^Gf!6$Q=8IrrTG0+c0o{Mkb#F^?QzO32d+unu68P{`Y5$z%Ou(~keb6v-RKv>mVUUC zXd*gN`HS$4sT9bsiBrE(FpksyEmGmo(s|cazt0oqHar)jhI{zmIO#jOdu#vz49D32 z({`_sl}*j+S`>4ziv=hH$O-!`yw=i=+*UA~WrY8RF*l0ICm!-+d`GeDJw6F@%LE~y z9Ts%IgPQIpNOp(1v)^`5iY8=ejHV^4PV^^0iD#>(5dpXybS48 zF{k#LB{5*1=XRF2M93GBwd19SnQV8Bfl7v7v2EqRNHBcXYLkK8wca1WGf?~2W(sT{ z+7k=$wv}L=biQ3}wJP+6ulad^YFM~l$%NHNFCcw{?_6-BNn*M@654Yook0xTRKOxx z()XtM)~L+xMb5SU?$Gq1yjXFO{D$*m4cqNPpX0TW5puv_YQX%rO7}x%K>QvM#^c^#qZFT zJE}}{I6M!48@CykEUkO;&(9z*(v112QPK`z@6z7ir(PpL1CSf_6_1-aEJGP?=L^Um zt%eBq@R`PDiLAd7THxy*l|9SAdzn55k3ZxT5xk-APyHFDm73YXFl}g`xbD1H*8?d4 z3<#Uf4LeEeN^&G8Y5APFS<)_dzm0G;ZGS=`4#*LSP#bQ$t%wR-3oJsoTAIe0yC#Ug zP%zqp#CW*^LawS!OtPYDaFhQy`Ruli&w3@*Aj^sPGl$Pj%sqqGMtK}I?GVZvGY(93 z2LDb!)|f~aK}>jQl7DkNNr)j2aeLOTT|nK7VpCVZa5P8jApV=GjLK2&(Mc`GGkA}Z z0cj3pM4 zoo4ma=n9bVf(90PcI!T9JTP4061yXs!L!ETF$zX*EfAO6iGu_`0327;2K*WJY#_KdDkPOXF4O9>tax&1zaF zZ+XjXhQburS{P}*;&lDmA}pybHgheGapkHmZ#9+w7#P8|_sqr!4sh=kOav)ZfbfWk z&-3@jeSpb*_3)0hPwH7?rhNJW3dkjTAr>s4NZsC9UUXQ<9pm`26LC%ZJ z?bcLuz?YAuMCz=JXDB^|2uq#b-4EDJIw1LNKzj_-dI_x$7YhV3%=kJ6Gh2CJ*^WKY@RU%U=3xH z7$@wm7mRIAvVrJ~J?d%U3`C<`c_NO*Fm1S%Qs4F%H3<2|*EJD(Z9dfIe70u&V}x2k z9F}pMX(#te=CE$u`L0>agZmP%I zpk*%0>ozr<1D@h1LjAh&@O`+y-IcHz(Kv-ihsn%B0u3mxN5Y zpcy;k4(n+S1^&#=cT|Lh$Q(k{AdmCNX)#v&d#0lhy zDO$l*5aq+{=6KVjlJb`60_1~sUtk5Bg_`nLa%IE10?*}`oGgn-FMhrfW=ZQua7*d; zJ&gqpXO^14SAn$V*r$#Yrvk$_TI0mIRZMMX2!>dwGX7I$2qAHu2g0=C(5mckREC<6 zCV~a~^Sx%jikWzqP4DQ~p<)L3_kzzPW1-K*->?mdMmUmZYQH%0FS9yxPE9DApf6qE z)#B+c?qo9M6(_7Y9iL@V&$m02KQ-v&tM!?i6+$jAAunYr6Sncv|HTL1p)=LN<#ao( z``8m+P!3P9HdL{r?uLWSwFz^W%L6LCA@{X&A;frEk&vD z0~Z;GAf(0<*!D2HOk3tR5~}&yjQGvUHXTQA01rCq|5RuuY_SeFB}9*=1Ngcx+wU6Y}E-Yjdg809I#=J6D zUBrLVPVJGo(!eWo8ah2&^3~3fSg-ijxX3RNVe_MYS)SPcZ*HtE>(NY+AgR<30!2IJ z=Mu)j{PS_=3d%ZI0E1#TF%B<;9lyG$9KZN=HfK2U#j5r1O>@;GN@Jn9x`vWv*SMTe z5%J_r&06HPryV+z01T;G^Q^9zYqu)7pt+n(F1FvRAWh_)3zVawn%dgd9NDWL0X~J%;(-->_QXdMUSjETe>y{mi+imru<8lSN9@mgF<-z zUiW#&fuM>l{i{tTvAa3Cu4G9(&9~_S|Icw55%8m8=E<$Z(bs{^DTy3{>SatK-rgAX zmJz!4eFxP(^GSy+a%iNr2uk-5M$)AwMhaIwv>c=e{)fdw_(GOuOJzqQm?;|g`pIed z@CV_jb_JNg?ibbN>TaND{bm!zD!dnkHyhC|EL~(U$43UfkPKyUdY93fLT5Dv^DV$k>LGE6PmGS7v;2cJ9U-ZFdph zJI`}F*^9X6>L1ioLRy>!*8!nGgNU7!wAB|R!7Ig58xa87$?e&}l-w?ws%oo57R_gT zPl~78gZh7!lKm7RZ;uqCQK_ANmu1K>)1N5qL4l)yjJkUho!PZiwE~*;;@JGxa8xed zqgP^to@+1?!kO4IUjxCKPhAbQlU<_w^O4Hk@%#h2iw1zK_E0!Lm&Y(P<*Cg#+@Lw> z3Zom{{z{H3z?EoT1#{^8H`toYvStoqX5P196PaZO4k9VV^4n`oNs?E)4A2{6YH3kq z^53-p5@fuPjYY36;&9od4oGc>!!Z!~gpu;j^0qqmM&x9Wn||wwI7643P@E^IdAfnE zANy16yQlijclRU>oGmIYL)vW3Rv$tP6D}5p6U&8HJ7-wN-4pcDyQZ0*0VW17YIAIg z9a4r9D6Yvo6-xjE+U=R_jl(17(foUVpK_G*8rbQwMCE?&t%j#{RwwW#UNH}xp^L5wLJ=Oi$TecubhD@;A9c~iYl9_D-s{LWI#XHDC z@OVTz2&;K>$^GvTX{~&xeY2mhUP&2nDP^RI{qpQ=9!Ofg)m8Nh`dO}?<3wHl5<(dA zmiJ7upJPsWQaD9wF`p4$}L_<4Ye<;H*8I}R?5uL->P&}=*C?{S2v2?2GEIfhg_*`GS zT(f@X6G_X6K2^#B-Tm~ZEyTxT0;==UKzHEgA=zw{rEcf9RdTKfaML#exMR{i2UfAJ zLpSUS=N zG00zVuH**E+NMGAz*zJz}`^yhNd6*?q|ntOebclC4! z4mmwojYkSxY@+kMM=)?Y@*oUyOT^sg0H{DA*m)X{wuXKr#8{XmmQ)PVkMH=!=_Of< z=OOBQ`AU)r9NDETpdn!!D`^}B2-g_W*10o#g;b~y&_A(xDj<~#^>I9)8!sE$6OBm* zUpkTYK&DG`$dRURe)91+DQ9}yK_OaHM8cXa30puJwgLh6>Z{-7fDq*$dB)EPR?+m7 zz4FSp6WQXB-E=vVn~gvYf^H*fqRp1_HxP7xKQw_Ykp112lb5Pbvge7gSeSb8G9rf0 zOHFo#bZtEme%jNRrcGz%rp-Hr%|KRWLR|!H#%%s8Y#ZBZqhe_%EJDrnJ-od4Ry_Xm`8yp!+Ss|? zDi@DVVJshh=1;$A5Sm;J4Pq*g{*f{a-fpUtHpL+B)7GnrO=&=0fGa6=wV^Gd^cy>G zU=I0DIZcfqkgv%zMV)mVOaiJ}WYYxV(iDr<1>b}}pAjR70{xc4GGv|fKWB&4OMuB7 zSZpdBG*f!V^o@4w58t$hRV_2c;=DB?U4zMvhy6(Dj&4%vR*OFqmN z@P@_uYeLp79Yuu?u@}R6JlVmGJTIwY1HtxlFWqn6N83jALvqsRTh1{ONo$^`0-weR z+Z#G9SGrO%Ty+8v7h5#-sbIB(ex~YPQHSqCT>43nD$A5q= zDBq#UksTnv9XHuF9;PG?jB492qVVTu!cvq68^Z{@~AbV&GNng%2}! znv`95M-Uzj{osojgDIHDnGUNuSn;Tk4cBt1x;>-AwGSFSXENhE`2jmRc~K2*Kh}|^ zTv8wER+W7K_4LF$-V8KS1X9*ZjREPR%BoSKu%7x?mwF9`QC~T^nBz;Jm&b?DMe3{( zA!L0Ufs?NERosPso|IA@8@V^%CxD;YfhmosX5V%N!c~Sk>^Ne!ndcktc(BodC?z)~e*gEpNPw@kE z!6$+#yY(_F1at4Z+O1ED;7B>%3s(ZUB`cy+l9=>dovoPx#}pC#^%X%$rCzN8um6kN zDy?T8%rZ3DP%V<}u5NRa1p1GS1jMM6ctUy;krD%K>zfN25U2|H%B8MpM!e556v0X~ z_luVv8Q${f^w^|)yZ!)l|@a&_co6YZ> z=%d$t8F>#66^@ysipHASP~JbLIu3J^SjKgoXimR_^~_gdTva9UUJ>00lbzsg-m<9mSd-$B7#n8^7-q8mgZVq;XZ6VKnO^W5z{M2UyL z=4OBk>af^iMsr7dZguF3246P z5g4<_cN4)d%@q7y`iSjb93XQ8yDl&yWHyO4NJ8ygY$lnVYDl+c6EfM>`0FZvfLtWc zy%@wDX!Y_MjzP?8lW>J1V(n|kc!f7^$5_L-hPy|KPt>Z>WqODRywys&!l6K%O}2B^ z#599soYR0Ef|0k*8M#D)Q#f*i*da(?=OH_*nUCg~^^ci-1|q!N+L|vM{UI458tsUtVJaIr~lpi^>s}k$Se5z5S$SRPK`s-D32zEL@HFAy+gl z7;9j3apA&^kuZStQ`FPN3Goglqa2VL{s*cvwUg#B9BT!MKV-%2sqq7Ze=VhX(IoJ` zA<8_Lu#QE48tX7eXZ*thebBbd-HBI4FsLl69duoLpJdM+)Z@z;-^PHTP`0l^qT%10=J%-v1B)#UmA!L zXmpbbUs4Al;D~Ag-eG}Gl+Be922~wFLZ_R&_j3XV(lu?F%5i(c1Wz10d0}hFmntT@wAUZZ;S>S$G4tXjD~$Iq zt+O3=94K@EV>s!wCrf*pWdPunZ(O0LK>m@~1Z-x3s-4lFZV*k~`1L$U)#H?@c;4|- z-cuphffxssmHG96?!rQo0s#L%0Kl6K-1ZU9AN_jC0_bI*gZcbH4gtf2TuWS~jBh7K zVZ|J^OhyCE%Z4mnhG0>O?+={cl5S?i_j4J%4-Hwf>RIQM_~vw`j-_q% z-w6Dl%}XQCfdQ6)U*3dPJ2I?@dW)B|)MS%8BDHfsUtUhQ8Pf#fG{No>VJ8>s7(aWr zaus{$+=(qAmod$KOF!e+SInoGQ>vU%GQ(KpK&0O9lg$JE=zN4v8nd9&mwd=Uq+%jy zuQduJj47H#ad50P841#eL5N!AfA!X~l*Tj|;Kni%iB^|1orMrD>1b4?-$_IPg>#MS z9ERM4lws0x2=6cij)1E|Rv@>46p>J47HE91SuqTl6vpkqxb$bc-awCUFL1$x{Co&H z;T_o{cB%Cd(_&YV#)`>^Nsw-q_4IFOxc58qGzo*Gz&mU;>O%$f3WNw8Qa0JbmgUXK zCqCUcu$lJsLtcubFtqr)*90c^Oio_n-&F7r=Sxw%i~+ zc`uK)$4-2J_Jzp`shn@UIb{Myj6!v(R1K-S%D*4H?XSyyaYD$?{Fo^z$+@C0u~b&J zY1JOc6y0#7#li$6wHW7X0kbys#G-qE1!ngt(8LQP@ED?EU!H-1$kx!meA}?_Z|csC z*tZKSc@L{W%x~n`jw*AY1)|OA*7f=6!{}!QRsY;ZnrenZC z7Yqyuq>K?&$A(t5%|@IFb<19{G0e{rZKt8UD>qv7XnHnP#A+t`hR44?kE<=Fc!Sk@ zZRDL6=r~V1ew^o7760<0dc|!x<|4+o3_toO|8*f`jw8gMfsI+g>8S>|_o(w30(VLJ zv&t%a*c=V)07bW<&cBDQe?cCxs!Z9fJtgR92lah45pNo!OG>o}G14TmxD`7-Prwx6 zY8CCx1Q-zX?!Afr1W;rWIt2-iJJJKgS-4&d9`;kuX!7KWD_{(-nk(Sq0q@41wmR)F zR=xdd33|fleZ3Bfdq-)SW#4_!iSaFgenJNbhF`+4W7*|z)D9?7cNB90A&Rxw7&7C* zxP6aQT(FfKrMEX3VmHjXiVa>oGerY{;H(quAiLzOE26xvQW1h?S-!jm5~4q7haUw+ zDE^uQ{em`*-Vy5(Mo5SIdoFBxCSvVA&r8p9v{ST7jsj18ijrjt3g5zBm$>~>NtFaX zv+nnU4Ywq?JMOs_C8*bHid?cxdpZ}qaR@dC;yTzuwie&SMXDbF^rA`BCh%P~lHk*KG~%UV-MgPK%o_w)6p5B@x9b^8x1)HCqLmh&W*ZG7a>^R!5@mc>S_X$8OWU)i+WFF&k;`Cue(OFT`y z%tAA7$OZOqPJh+Lov%B1S85X1I&6LKseXCN-;(J=VfdBZLFhmRaS4S=Vw}D5x!ig^ zaoJli0pnxUF<9E?g8XJ5gn4)G&Q-*G*~8Vvhc3Vhgrh`R;6fHd5N8w5NhLru?;DbKCWmRK>>3l=KMzsC zu$(@PNhGolu9-iZL#_+1(n_5;e9;M1eRr{}(X7n&!3(2@IOxumlcKwQ;V$p|xAZwwaa5PZ+v0y>s@%ecSdW4Q_fWq>Dxiz41%jHL z9N=a4-cq1pIk*6a#y~S&eD(_gweA0Cdv3~iYSB4XYwAFk9m|WwYNdo16=LF+!O~-^ zn~fcnQ9S$Xt|aTl(EoJ$yY5zs#G&HmBB@XYO0f;CB#iH>(;|{DVDtA2^sg}48|NFK zqGvRvY%?e(7$OXiNN6zYL=E6A9p{88czjy@ze8arBP#%zCZ~4{{N=gQx4=Wse1Q|L z_8Fp(Q9(2m^deRPCWiJDRD4Bq4FkRhtOs#aqQ{DEk5ks4rM= zK{u&gRQ?czCk>*r=WFNF#Q{fMbEnbz-;|YCF*=W#i-_jpCKXH3|E+#JCuYd8#NHzH zG8v8MF@%+fa+=$B*Lcuod<&UJ$&PpDbxWt+rBhk$ECg&a#H7rsRJB!y-*Ze? zDZdxb$jiulB*dE|&#&$TJ#}nkN$cK+f&#Xt!)WlD~jgVF;VO{CQ`>aJW3!JOe zTo=!wQwieUNfV-#oM~UQ01zn919M^oyBq<**gRkL0s6Jq41z+)_LVLAGTmb9Y*Li$Wv-AxQ_#DX0;H<*yGevkruqc zepnFXoQa#+7I3{1@9yA2J980&rU}PK6gl^Ng3bn3TDD<+wryxvDiKWEi4&G!ggsP; zpf!UNdSn2gEE}zs7UYTmtcwbm{UH|X02Zpxq(q_0cWbyXQHt{kh7*|M&dDqT)W5yD zc$DhTK{El_0AuMVw=3~9S&<}4Dt>0`H8UjUHOR{`{BPK_aJzKPC=6yaYEBgj?CykT z7u0H$?)}o1=&aLmXNL;SK|xC7pa>rgF&d~d19EI2rKF2ivOd{E>kRUNT=b;J+UES* zQ743vJ{*%Vp)K|2Qm5_XU1BX6pe;~7u-|D$qoZP?fVJ_I3J4O950+&NPIcfkLTq(l z!!G|bxHwW^eqco)bN)d9VZ`K6$5IV0A-@ep_k#>1pWkXO2aW@Td_$uk_X5Hx{sQ(< z5Zlq)6C755bAtdq3QM6far%7LAQr6^HzV4%LeyV;^8j5mca# z`ous~s>FZkEJfdDJt)c^_+Ti_ncZnCa-9Hi<6CWJj(lvvU$z@Ge@y6E3GV|YK-7`m zfEt23wP(ShiQ*J4lf5te2~3zc=r22{PXKzLR?C81ln}KL{%JN8@rFqPO-_KNrEnh| zr*Q25shNi9kqZQveh2*j7w0znJ@fNowRWFD zF(RR(-@2s=6E=@Au~Lk+OMLo@ss)7lt7UmUvvMEK45)5;*&t=-I)t`b`9%@ZW>2MT zxA1JH_s+-#Bt0kYzqim87(^E9&%5gD5L5(s97mXHo1|jsJ`85Xn+eFT8&MlQv!E*r z_JJVW`G23`6`I81=%NxfafPc=Lhmof|3)EpxI7usV}!=CHJ?6Zlj6(Y&|}#hd0tem z;}tJIs{LhB9ga%G=T8Z*E;>z#8oV%JdkYra)NeZ@oxV71UG|TjlFROa3`!rX@xOVe zYf6c$2xZuL_J!ww?yYU(39xGB)eiC;=IXQE>!8=49$PLsN9UM)#L?Q#&(9Q!>WB-Q zBfe0*yt`jWw&NdyGmuOGXn<1yr2~BA2r~4n2n-&9Ns{eu-fX?`xsd zk3$MS>mWEZgt(IhGVSmf7;5;cYI5Q9WGR(3#N?-72?H)|Qv5zQBP3=0QpJTv)Bwbc zO=^C=)zzeZvWEm0NE@5hOwt$dnD(tLR8gQ;+#Zb?IK%P8{qB+7L)`j?0H1WYkAGC3 z6Ou($kQMMgB4zq8oBF;7=VR!eS5`qO7xr@9lNyS^(@VYmm${abU4HMK69h6!yBu4p z4ZMTlnkSf1Xz|i)S@9OuGQh4a)&IVT3i5f1D(z?2Sd(9bJSqb!Ev9<;I?Hn|g|yEo z=+pKANdQ%?NBf;|3GAdmv)Su&lg$oYG0NT%XVnv1F#4{(PFvxLP*+ zIps=Mxrk79FengsrMt}Jf(#DSaYC!l=q~~{M)sS}A)elY>Fm@xacwFN*|cdc(2f)u z@4SMs7rqp%%Cu2z<0$V!!n(B$ak#eERNBy2%*a`+k7bP7}bu|>gj3<)% z&opJ&j9#(k`u=Y~hJIhv+`h!zh_!WE1^-*xroh_m_0Y3Q$gsM4FE%Vns^>WzuJy$e zG2qO=(c3K>Z6q)C#j}2|8PhI?80T`IcwI2#r4do)KVbNvig9nuPvp42tmMC(Ee+)P zKsD|2%X4t8W7}-k8nwxnQKQzMk-8I1y5KpjZIeuya5EYX@GTZ%#Uze3S1@fmJw0_A zMi>l<``7q%boB^9s6fWE7L-c}$ti~piVz?{sGYTYr6?XJNp;@0%1yAeMn%Ym@Ouo^ z!6-PeYm(g1aBFSl(f2y>@^OyICc7fJu8dk3l$@^>hhCbT%hptKi>UV4EtLs$uwTowkN@LU)&`azjq$G#Y-!X)h6m9!@ZZ-=5YO= zamRK6*9Q;d9=EdS#%=_ym>PS=x$B|fdA;&S7jp6U32BXRot!WR(uTMCLCqJC*Vy;L zvFe*5=Ee!7y@PrKiPTfid@2t?@w(^0|9BgZ>(vWjyt_*ZMT;dgyYa<@7qzCO-S(0N ztK+aa`dC8x%5d<$99-357S@A)bxNPjpg@IVh!_*&W7c6L&c8}?0%^5KpvpZhVS6gZ zg&u9cHw|-~O}riQ?_U4(gn7}ohI=&@@T}kzk)6DYGCFcRo(tJr?e0`JaWUt^94_6d zCy||`qnH=Tu8$cv-gzwUt{A`ZwAJMiYyEr~HV>mt<3`_uoh^h*`4tZ7AkJ%_ddClm z%d)`bdc(I{|5g7ikN&j>J&E|C31PV_@;NeY0umEL#vKS`DHu+Y7fFmjm@wH@C*W}~ z<$WC7pggzN^@QX`9M>$?S!h@VwQ*^nQ_S9LqS1a@%A7llf?wzvvD^Tox{y)tVHUwB}+vX<&4f@TZ>llt2n7XrQis10YDpt7N@;R5tpnW zv`cegr#)(|y+j^^l-i(;hrj(ys&fpfUu9|nA-h$J;g%H8myogOV0{5BiyJifRJrkK zlHa!M%CYtU7UcQ>-;Zi)+mcej%fQC(G{qQ5pf0n5N>CaUN7S;(P#8Gx)H;h&LIvzg zJyxu1<{;`4V!}f@BNDq!b zti#369@$nw2LH{~UmE~7Gm}kwULTfNldVaaJw85k=dd9Th7LM}>K*lFGOG33?Ex<4 zOw?YDi^d;~zkx^e_AS={NhhRdVMpM}GLrN=Uv`-;-dYf<;%c!i)(y&C+_8T=7-wZv znaq#v+?~nSfjCa{LrL&2yF?EZ%NPYEDWW%$aUv4}6^JQ2W?&gq_v%H6Gfi%1NArQH zl7OMv55CUgGuT3He!%#joX0|pp~d?j?Kl-nC&vtzSExU@zazBvMMNL_ou8GLtOYoZ zqb-eS-{P6TP;X`}N2<|6NRRkC0|An7gR0qIuBS%lh1|W+KKc@v{rPy~@$lLFOksRd z43u}!IS^YCB=&Y?Hcx{W;;|lyUV)Oq&i{H`((hT*gi!V;mCCXv`1~WjZxn*E52IzPnp3_WsBL!z*SxPW=m}7W}v{Ex2F<5&3>x8WLBi-uVOrYxQYLqLCa>3yfKT zhq1Wfke(i|6(3gWo!*u|_bc)`x=WnKVG@P#7;O1VmDTiH_SOPtT-+dWkc`orlQSkp z^|>eC`$yNwSf5-A86B+#_2a8aNW_{-8yTMd*n#6sRd|DwsEUFyNm*)7%~TfHNKo z|3eItifZJI$ygR@{vmd|2_WFCw%`^*Llb3;pH#Tm))C-`@9=kL(us?eRaazJA2jG3^S zib!V7J2{5VD5Y_W@4F&{+P)SQ+^MN7EoLai^)7;ZS)M{&u}1lbWBP3?L1sQI^jPkq zrz}7kHZ6B`l6wR^+5Bc1`644_0}9g868~X(X%M|Ms|E*4e|FY@oP6_<`H?}-8MzUs zsG8!vevI|Y#4CZtejl@CT?y5$s3av#pN^D%C(jZUzAlgrxoxc6!vbc7nS$;~0{raU z{4T_h;PjH|OVL|+drpK3@wDb}n#SzJQBIdt%7f&iAxkz-B83Oc>wBX3MUfjRig|yU zYn{+eveX@AK10#LngbSS6R3$v?p8X9*jCG1xYs_ZEwVm2c3sKvY42gXhVowk)Va6< zi1ZTnz^vd)aH^}UkJ^5+YbTB6H<^@Mb5ISUl*>MPU)n=+hdo&9_g1Rj>tpxkMV=`1 zt{E#+QjH_XTVT)sbCIO zwtP41_XD9YQJuQD0A1qAC+(l$w1U+a7I{~7c{~$-dc;4dXcpV2VXnM*Fdrvj}H5vN=ZFynudZ&Xv=wX(7<=cHtr46<0oFHwoe*9Ur z6rWj=crRhF0>-)ke?mQ~EH>8nya8DrtpCfJuL5H*f0K#fQUzGRF=XpR>oKw==#F<$ zIe-#Hl@wkX6JQXj7{rpJoi{!a2L1wUZnU`@K}6Z4H842rHwxZQU;pXZ7yh=f38lcC;YH`Y3G^NW8+1Z8-c1t`uDK2aajV zqlQf7j=~Q6KUM_`PB+X`vPj`&Iz0<^cF+&DFQ(+vNtMJTFIKco+N_`0#B7L}S?{yO z(O}n+1>jrgIYPi1r_e4JK-CQIcy71C)=$weaEff??AZpg+{BZWPCa3BiE%%g)1l1d zystSwj+QJETLs(=49yBY63%43aiXu@(?+Id4KyxU54kI-Q^xR^p%IEB=?q~yi7Nh~Am}S(Ri%OL8o~5&jgi267T)}_ z!86mtq%ANTWO#>O^*x9{LFS#cDa9fF6;+nkX1GcZXb&JR*dyj+8`JOW>n*k++&+(w?oDuHfP=^P1~4dq09U2b$##+@a(5=4Jf)UCwMI4X~l^*kC;P%zcPaBm38mBgc!)G5JW*EjS&z z38PK7Qc?ZCiBBJt$~E0ydVuF|CnR^*7>c7wGF}3{9Gs$~^tF8es{i zAL0+1N`(B$Qgh=+LXbMjeP%Ck22#VJA3cF0(2gvI5*mR!Qj|1dgGIxO97(vf)Z{E~ zTfo zHs!#j7$h8A1(N0mF0!=G5!h47{11P# zqFisM}L)OX7jpJQzttls(0n?&&l1hhm%Kbd;7)v+nh2VVG z2&uhBN+IjxJM{;eVURAXek(;jWC3ZhMFxQ6GqqPSe2IelIfd}*6F|ZTTI=un!th$& zA?ks@VueR`$J6H*bzWgkq3636hf2Thc7}}%Z5eMNM{QbW7`+Hc=wF%ow$}1FzZd4@ zR%G;{J+K^-T#ORAM}pTdkL0O% zeMEWC2)Nad3U>RX5fe~SH<&iP)B`Ufx+!-1ueorU+d#-QC+36Q*;65(YQNVDU{28X zN`<#^iGe9u{KVxQGWiFC78P>$y5HUjdHy$A7O$5tAg4GaAY-=5q$CYcKP_g%EI!LQ&D`Ocw6>k*-co7BQHEb+OXv3^*y{yaz>Mn(Dqbt$(G_XXZ%Bb}eL-?-%GldX9$~xK*tn*9#<=Ii%&x87y_L* zkb|c*L?ldW3b7HHXm-N(z>cQK8q5I%t1Q5m7AZ&VeY0-z%+ZxUVw;Z%6eNR}B3aD{ zdG&=%E-JS!Utbycrf;1D`anZS`iQt2$yrQyU+C@h^?uaVQRZsXnpf*x4z+pJbWfo$ z-x!g*RVH+zfQoHyol|{JMmibQt|k#rmxU^vC_NdzyycKd@-CBIHa=1rSOIZZ-ZH;& z+uO29+o3ea`#OJKyx8xVG(+7ibPtFb$z8A%!%Zy&I?Z!+@0Nx}B0czv2cLZOq53FhTVB5p@ zzV5r!YTAQ*DLIb-V;`;(Pz$V=$998%?B+AL$F*$3kiL~3B0M%|kZ8PaX)eOf7)jvwT+Zz@sdahsT;^LQB7>}s*e4xkq^Yyt^P1l~O9 z4O_izLRc-2y>^Oa>X2id<3dH4sRQX0YwzLV4Id1RXk3|iZ5O@>M`)(31eXNB8{Edv(r(Z(9WAo?f7*H75}w*Iy(TW%j)yzjgh!O`<*QKe*fHX zpLQVXx(vb4%b?o*F?m7;YPg_rzCFR!`NQ&j0Q|0}e=%obKAvWUi+-J`QxVsfVSWO4hIe~#qzX*IFb!oK&6dnB@n56uY)6)QiJMUe8H zgoy$l9R)Bmt8-OIgoQouBoiQ`MvFU9ZgXg!=*J`A8Bzn-8EfzTrm{hBqyfDmpS4yq zN~mFW_Wd!bnBy3d!l6mJWB#Q?p^EZly*{SXCv-9QT3$mWySEuT{fNeOq0SK z7dVdi1E~6b*s-yS91BDZ$I8gUFMqVg<92Z`dsVb3F@<*(H?_JKD1j`f$`b@}BVRsC zontaq4|2Q;x%`JCNsX%<^m=n`~y&i}Q zTzD_8cqrCv#-#gTMAI%1g5oDtN0AKzS)CU#v+g%S2QB48?1V=7xcYr57*113eho%U z<>=Ajl)ETbC;i`@Og}B;u;|KiUO_YUwIBfcagsh>-1yWqb{ zPVp-<*#866!|`X1VuQL8s7T9Hk7vW767rW&&^|*&daKRX=rp{cm>FNPmX%*U6C#h7!2~$9e5t^4+V)rR^bcY}NSGqpP>@gU)5H?9YSRZ{0RAKXe^*XD{-nKhq9 z5)a>reif)EoDVv7sXJ3oFU6n*H@=;XuH7WW-X>`?M6PD0?R;H#d)B0eT&p|K z^mjGyr5sJ(J^r8bJV+u{Ias%qrVx{?oB&Uw*gqU+H*_U7%Ms}y&Bd(Ajy*xp zS;xJR)6GelT+H=?U~X^MlSL&6H5=G2oXrel(pU33jGF6c!1VD3lM0Q#4syNtDxH>s zTHkn&)2M#u~;8yEgqesDVd@W#(Dr*YpW{c)6cLe|J6m+l*3?KGg=&B1U^( zZ9>&%L*D=p>n{L~4939m)KTiwDWLk5vvoo=-6<;?N(Lo&de0Io7mp*PO|N4=vVv5i zvs;`Z=_%IR#>DeSyvSq?$@U9`7mg2S-9YZ*1;PR97Dv&W@m;G_X5-v^smV&LF z-4}0ZsEg3pxODyPaBV{IYXD(*`I2E~rshBljs>4)xdP^b8AD4(y~W1=3fLTw`xzyOLxK3gJarb$e0kX&Gl2i*IKlDmNR7np8G>k*E%2QaaE-}B*L(4v-8 z4?N6^%<#1yyC}WKi_1zeIASIo!>*YQQ_S*hcZxZQfRiugwc{YILr%S7sT$zcNbv0P zo9!GDbmtOKyBhNQI0wUou`Osp@XKe~mGncShmA}eOGx7oJ#+H0mX$PR2Hi%@YsW{8 zH8vByMv?GrIK-JrAek6^D9{f$5qYnAND?X%P9kSM9pF`BZ#Ai+IXaD8PoO16^*Wf}I2ALuLc>eGpeM z2*nj@nsrO+>sz6+RMvEJS7V;K7HJC7tZlXR)Ydq)N;U)PvsOl9u2XaqC&Yt~7i!1d zesjXQwHA)tc^HT`{-Isf1Qz4KM|y1VEax+!(j$_v$JEyn+^~n|*x6-{yB{c2+z|N0 z1VJ)NP9#RE&h_>M zz-Cmzo3m(&gm?w$on?Tx!@eR`{uj<%N08*8EBDB#1aGZ}gD}k|$t?k5>v_=5dfGRA#Fvwt*)Sxyz5k1flwGRJb}mNiX*{ z`!aJp&K(64w-RQwRwXNbY>B4~n=!-YmDFM^=`HUlOg;kc_G#SF1i}YDsupbew`l2A zfSmqWNYn{lhdO^;P-GJRffD#IOjMFFYVYxBCB=%55yZP?7s*5a5wpLfahv=+OY6lsOMnHvO zr}?rA0BJ?I6Us7HEv3f?=zFez36*P(?n?VO4VwCI_*8_#9n)p5`6p+dHt3dY$X?oD zK!Tp^^W=THLby9j`fo^u2(7Ba%P^_S$L_|#L#VK(kY_R|VVN1pX>CjAiv_S|ACiqh zV%7<>ZIH*<^Yi^E-Oq#Ug)A!#)*i|AxA3b7nFb@Ib84H%pV7Al1-`Zl8MNZ>H3*3$ zw2`vt%e6MOVqiHpZ?l8I;9)syT*yYcPGglt;ovpn zmpD-!p#~6y3`i=(C$Vax#&PB*>OV(x(jI(u_w)t}if@u!)>z;#h^Jd{t_qbV-|Lf*ifztkIC?16K+Z7Ive2EPbaDZ zM#-!)tR_#asak^Z<#+>FM*CtF;C2Qn$Ql(qf{okSn4=Mn%7lpuPTAz6Sp~8C{@@0> zliIQNu-^R@T={~c-`jju?`Zy5^=n+tn;2vp3p(v}{}R9ZB~3tgNx%t>79_e2))oS= z{OG5lNgoaI5xyqx9I)W7RDczqEZRdmZ7}qvGW*!M31_6v#5woMr`7w-iDn_A2#CAf z`HMT8I!A9Iu`JLDYu9P-Dw5)P) ze&6B8(}^7IC@tHcgam{`yIjp=-3`*Vwr%G8x4;z+)5AI=aMGH6e#0&K&4g;F@*j+4 zxetYkd8M!nurBQACb2<+)yh-&^V%r;w`Wzvf71SBIY>iY<*?pk#Ld5&KFljf!%ah4 zTp--%t!D_ZhO&;~%(g+F4qqbfVI=3wik(@K_Jn6L21EfV%0Y26sJU@4q93ZG`{z3!g`nCPK3t_*$qRT46i7t>%l(vrlZic#%>EJ0&vkzpe4wm6a4BEq8Yl% z@1{Rh2oV=0k=#Ls1lU(Y9u3^gk(HHOw*EEz$o@;^r$cx4`V)1Gy@6x-wt1>_LovES2rF(ic4I?fQKJN zc-T;KOg}-`X3pG-cT2pMUU0!XLn{d-m5&+kjr zZ6TY6tLo8?k(UExc}*Jch2lmeb-O^D&(9gUgGirkFNG(AHZvj<*xx*J zqM={S$*uMx$EXg&qTa@U&HNu6m+_burnb?)Q{a26%UGKOXUy|wNAgbjk2eha^^mu_L^WO1~`auO&I zSuES!e843Ff@Dzp3p~s+v~VlbE?=Rg??q*cMLBpM5$z< z0voMS4>J}uhg6{Xuf zM{$9YDv*)>CH7xE3(ca&*MVAcY&ubva#3<}=b0T0&Y-VdCOa~db@dNxiuS?ilzP<^ zp7a(I$k1ZkdSqVV;ZanCuxJURbl8uwEE>GR(PDJALSQVlLlrz>yweAgatKTMx>g}& zcO%~FpFyO7(OC;a+Ve4XBcdlYSr{KKHl@nuM1@RZpC5*n31_@W0U-*afBx`Fda@W} zV!uxu?OPf=R=*V++O}7*)+%QNVfCVyOIAdn==sdZwIp6@V;sPy$7Nl2;2TRB5Jku`#T8E8B4;LQ4`EZ(22q}eLeUut$pFELCnQT z>7gDrnvnB+XvfI#5W-*1V{3E|6bew4pmBLe7n%EMDF8@)aX^tug9!N8@OXmm z8uykh%X7VTVSN{PPg7J>rO?oBp74cC4=?^79`Y2-WMEVSY#040ll&3S81p2_c0&c< zp_FqokuOdVCIlAGxq;|)*}^1};2UYVu-C!|F#8Xibdu#4@w>r)Fa2Hw@ z^Rix1Y=YHdHO2;{OqO1!wT-vn4Ay)Oa-_oxWYyND6iD~Us+D%OgNA&pi`#}PSEnA$VtdeQ!F0J;!sJp2Ff>SB3<8-_Bm zX(XZ^-@1GIfMKPYRzmku@_Qsaqt{*;ivtKDO;ik2c674O?EOY-3dP!$Ua7?kxB+FZ>pxc==5n z<4Wo+jAlm@U8;_6ixMyQP)~@`FHqiQzW9zw>MdpxJVY8YzErYr=VhD6CrnHw)=my~ z>~>7J_Sy9SdB?^T<=7E1()E=qeB8Vo-5WClQrq{;v80P@*_?UM8ndW#FV)sSs&sPT z);Pk93lRN&YRS25A#yn@GYQrV|!*M!jtBo z9}lj4m8juMbO%}0QH@xsNgfeQ*z_dsBiGVDCAdl5_|de&T#5V3=<76iPh=v353lh7 zLJqZ(5O;x#0NwG2q#Cu!(~PtOAvI~`GhaP;DA7xZe7=$JdDw09(s}DYVSi&GcSVN> zROacQ=tj^M-<@`q_p}*<+!lD}g&!&&iLx^#$4WhpC(?E-2l3on#gx@#?#l_j=^)x# zMHC~y)VOf`mWII(^M|**UF>>fkPVV^9UCQKEe#8W2I$XXU=vf+3Z7s+}Mnk-7RWT$2xt)}BTZ?+(c>7`4@r{0v!W zqa#GnJ`F^ugcXpVu8q4lnf5b9}ulis`_GQJ~J`h%BC-iS7 z#2b(}SWCqsD4ktLf_)NQn>amoL9wL{-il1+A||&0`^4Z|;GZl!p)!iDo^jf#YdmuR z5zt+m4LUTo5=r`Xnr7fzU&M(i_)o$+&8#9iR=8@3!cB7}l=d*rvE`}n~} zotLmbt`Xk~5kX9*fZFJ!Y_TkS_X3bkEHI8H8DG!Rs{XDEOGHEeO4O!HZn85j4N~K4h2xeaw{J zC)%AZiX`H?jZiRQ0z|uwbMr&%c;Gh6yViycbgBwrLKxkVqgEgVSNG7i{O6TXBK^c5 z_|^})TOFT-;c=V~#b|fW?axZBp`?i8gi5&)L-mg9B)g&B*%Sbp(rG0N+N~AmW${ys zwnU@zVJAR=j6AEYdJ*NeHqx?-FIxu-(LiOaI*vf*Q&1Qcy@aN;YfwW}au^`}dsFq6 zfC4+0jrQAGmj6uv)~MP|K@-65;>0$E0J^^W;G49kIINk%VJN+eXOdKDl$O5oIT za!iZwmdkJ=C0akmQy0EKx+C?{#0-KtG`*SRL_Tst1WLvi)1wjArS-zPsMLxn1kps- z9Db-h(EA_=Hz;-8(UtZJdJmnXDKQ(+ZJJA4iL%#ovX?6mB0+sM61O7$%eJTmQw>!; z8GJ@s6ZA06#y_xYZiI3<2O?R%jr4%sx*G!6a-#GL2ytbsVuK%~GR93>4jF%Jt0%)z zqLL#;l`-(BR%d>E!_J=@Ns|z}!Ta)6GAs`c6Fv-cV$fg@FFA}a{I}<#1O_Uhf5jE8 z5$ zqZq;X%}ap9G?y9WwlR0i1sSfCxOmXuHCHzBj2bI3Xs7L3q1|g=9IiQbh#DJ=hvOqw zWWyY#qc^It3)(UiwRkrjRoin^M!ch~ik7L=QB^-ULJ?xosY{kxC&{6|kF6l!XA8wS zeH$$@B0O`r2APX}ki>f_X3ts>SdAx1HWcCdaFjizV%UcQ!xY@rmesO#UhULm#0;Rp%4VR%n`y28{O=MnQshWV z$Bdk=Sr{2VZCgS0g6Mn6w*&@RjNUsMQR;WE$DX`SS?_1@NJ4A)mk1AyHw70yZvH26>L4?~7{bP>c-sHM1OW{$xg+K3q zWEs`I((J-XzZZlhQ8=02g{Gdu{m}0KBzEGmin;0L3;sR5Y$0w*;wMV+yq)QT$XqKQ zWr_&YN6Mh+2Y(=Tvu+Y2HHEx`^9kkzEtHPJ&49R{dTI7a*Zl@DEQ#lv=^mQmMC;MK zgfnOxWV$@V&wexOiOnuz<^L3%U={Sj9}aJ6W*OIEL+e5N1-siZ|bf@2d(aSu3shxkQ0?yj$MoIq*i@Wa+tOB%2} z@t#3z9xHB#O|PKHr!~jzmmk`XQf*xhtg^CWgL|2BNz&)j2(A|Z8~S1?PC79;3o6un zZ4_={?w^YCuRq5T{YV)>VB5`PU@xHj9O19c_tX1*t8=ThqT~Tg^_o}{ysVC!TH%Bj zS`;WyS1cEQs#|f;x+0TX->h?PnqP_kz$xXhaHRu~#QsMa!9fQ@P$f)(@fMFqH2h0z zVRFWcivs(FdVMYx3CRG{SOS(CXreE#1^ww6)5a-dt4xdCV33W45LWk@j=IeTHc`Gs zAzcwS|Gkn6*p7H>L#{ag0ax5gN766?QGg_z{{OI0K^NUa*~F;XR3I4Mg!4JJ3Z{xT2vJvG|TkiJv0< zPJvHDa85aq{Zh7%UVb+ZcPp&nFWN25*txfzZ)UtSIbM1r>Ya8=IiFv))k7_5C~N0 z#Pc4R=NBtm7x1(sExm1eBx4HAW6Q+t&JUP;D?brO9DX2*g5U~KkYBIjMl4ml$>>T< zO^V4j^V?CmjfZo(5j)%c-$yn_y&W%a?(V9}h^;z77<5ebyHIy{quy@o)hQGe;EWi5 zMw-W1%1sajFM6^pkP3J2X2@*lySi4|!u^UZm>+6y8(CZN_!eZI{D#M!U~LhYiZq&s zAIY^i$2K;EaPxm2i^2V)L=p&9-?>w&rhHrj0j+L=8SG6)emfSyFjpC^uf9C19phyVbCWS)^0DFk_h&mPGTb)Q$lVEj6LikrCmX< zt35umEZ?+KKkqcT`03jv(kxXp!v0zc*%l=`Y#GsME245H{$gGr>3L%n?Ro1_of9yM zNtPB;th^&ZZVkt=u}@(&_CoYOb~`2;8=gby5c&tNpxTfD^@>_j>87-q-5vKy0kN@g z;*xUa|FtyRM46gEt?a*~H2SB{h0N)x6m7MS*aN|8%*kSz5{s3lKecem#c=h$temlr zct}Bm&tY9%sG~ENn=blt%Aim75}EP&5s&A5Y#5Udx$1T|FDp$bSt~*06^QnT$&~#g z)FLyP_DFFXJ0Kgb`U9l%52oe-D^}hGeNQWFWEF+x% zAWV9Tz+@!LWHa~Y>*4p|ykM2xwq}6k__sMc4Qe}`(7n}4#5&7h3Z^>OkIdNaU;yoc z^%fS7JSWxUF7-t38ynFS<>7uqE+Tcrzbh^7rf!X8h$eC2oRDs(yND-AawGTTQ;6F49QEikI$ujXm5?F_C& zNJgyEO54ALrGBluL`KG%mBtV)s!v?nuYb6qJGPeFwK9gIbUc9IdcwT*gf7ztt^QWk zU1f*jGhGCVKBO=3Mstl5w2SEa%MXm;O3Xf$%T*UO&ivi<32&Ov`pl)lQl30Otb47& zk2R#oIfm$bu-<`xP%tCCP@2-~m;}RfnToOJZh3@UIc36ILTva|Gh)l@ifv+~#Rw+| z85cTliA%aAQaqWP%2XnrdPU(VnMlbXF%-$AZ!;sLciK%2`+U%9)iZ_va5pjBNOgsx zbO&w*2Zk+Xz}|GgrR}dZk6-G1A&T0mY#hFLI9o!|!Nc-!8fhTZf}zc#JEqYAdb8CB8B{c_CReex z{BdCM(eg$%aV={tYu8`bMR(!8n|UmiPC zZxF+DR{IC`#6T1*oBV z6K4kdf}lo?ErPEBIxgRU$w|S;g)S1!IELGu_vL6YRU1gCMjocDysFlBK>Y zAj5MDy+W@UJ_dpK0WX3f3y&-CeJ!<52YIRjr2sfHgND--Y}8aQV%Q~$AM$0 z^-TO@e}I3C)Pgc>Fg0=ZCwvN|#FOa&dNZBm(0*Zb<)i^*P9`YE<)T8DXWArHc8TER zvyMu1UMM0;Z@>ZDWzX}^1nyv&SJEMh{C9LzDe3as=ssQEF~bt;Oh)fR+X1=&XtAhR$-GT4S$4oHL~c2eZ9C@xwOxd1&iDm6O1ehwxD$foIq?kl+4e zA@gu2r|}H=Y~|g~JbtGzo1K}~ww=a+(2Sto-)?`&N%{$F7!a@H2$o+ByeQ19Q_m5%k8-f>}D zvO9&5QQ2lwMrz`N4CBKtsD z1}kHQ2^}Ieqat5{On<l*a!9O7iVOv58X-0J5^l^=iAg;z(AX3zcjB|H2Kj%k&#Pc zwcYTJdUe%leWpw?>~!eneHu}yJX3Wwk9?jhwsp5<=cTSPLnG>mNY$GYH48`B%b!kdX@M2y=y( zydOokDXr7GMRH#)(IMdY5|#RJAC_(=EYk zF-B$*2kD~Kc9m?yiGEm3I)OeeriN*|aL|Wm`@?#LID`z`YuCL|x*z(tZsYMEP2l3( zbc<92!ssWW1N=3`SmqyyL)VS{!Ow&|QN|e6(2D@xMjlTdC3PM>hBcB^R36(VI6qS3Y326Ypm*D+q zjry5km^A&t(jB@Duect1gvm*@5UQ6QocKtOvyq!T0y6sXcr!@hSC0n%x?`!lpEYz- z&`=KChZ&GuoLGh5BdV%@z_R726*1Q>cmqkMM#zH?SO+0`p+3cH&n#FsX&%a8HjJbB zu|T`ZsMQlU*kpU5l?38a(@2_Y5fLp~vArJ=_8A!L=3Esuy#&&1`0uuXgP*Q8^E60- z2aF)n&mcT9iYhe`U%CZVdBRvp1z#^?m(#91LxXY(R8-VW4$WuQ+$CyQu*RQgmydFk zHLCQ$jPMy}lGZ?*9f|?lP!!krT?aH-4m6ZSpf;+vklS1lvEk_9E#YMol0lIhcT!b= z)Ai3zup~duW}|&jH~2$#rJ@#{>Ic0Bfx6x>8aPj$7=)c#h3MP8BUpk&FUvD@jJ~i5 z_Ns)lF(q~U>3O{@rt|6@Gi*XRNNvMYWNL-+3i%#hD*w@--K%g?d&(O!4OH0TwDCB< z?~68pvPcYtn{Nm@gSA;cjYpCUtrMy@H*%hAD5c+784s45fE>^6;n#`*%C)Xk%yPt* zcvKam9L9I0#64-&SjAO?R>)Ta;5s(#oe<5-)-ice3kyp+A*n~i-KdzPXw9r5;+C^% zfsU%y1j5xS;juOxMyU|{39+YUL0M;A(2bR-=I`=o@%%nyrPX5Pa3)zmq%y!W`ZH6V z7_K{Bd7z&%2?@U%Ai^l1)C++**@t{pV+=|qI_VxW+e)K&kS5S!AJp}NA|zUEkS6g( z)yiWX9Hnw$s7>1of z;ilww%_&xb;;&r{5$n|XQ$vbRO+xQ>yzl23^=gQ`ZZt1>U0SUXPD5Ym!T_zS*E^MZ zl5e?kxR~;sCQ@I5b8%Sld((apyxyY9&=nqSjb$NbJ#a(RN! zogtk_eaX_e=cGv@22p4(&t=F1VJ0JyYp`GT=OExH4qVuQf(LRk=9t)yKu0j6z~naQ!sUhlMUG1q z?|V>mN&d}<<~VvwsiSa0iGGLvS1jYij@2t__sH(cmB7VDk5guLK=ruq9A(tY-2)L8 zt2D^^ltuz(GXwaI{}QH()(38{5Wl$LWCCb=j1MJ%zAV(P3+H8eg>ys~qSb(I#(J>a z1J2%ovUn$Ix)Zj)sr?~ogD{r)S(3vxJ0JHi;PkEhhIxaTHv5RgLH0rWq#<<%4^t0N z8Jc8`o<(5IMtCl*l(EV?Cv^%_MpMd}YpsSbhr9%z{yDdZ4Q81p#*PjI&~)shh_;>Y zj<{d%JMjX9JM6m!_`EBlif8wGmXQv~D$@pRzsiA{G~7(DS>0?Sw_|atZJfrQYB1mX zZESfmdn*VanzQvU%xt1;;n*9-ilQ*U3JC)rxy{WiPZN%4+IcFa{wx6iK>Jry6+W90 z`;vl87y-T2;cRpD#gz0-VmC%h6F*DPmjd`YZS4?gqwl;*EEkECAV#g8+C4R%B{NwF z82TF8QLyjk9xG=erK8qo&CjF8slH0n3V#4j9Q09Nz-_NECSp<)lYR|yAQRYs%97Q{ zr|PYUiVcsGM`P| z*RToWKFXO&UKNMojP$Hy@wythp6xD?!lJCL&Y5M@=_Y{87l2T8m~J~Cr;=}UBKQAK z8Ag3!VyRJQ$&lAoBzMAuIp(gN&L=*ssuRklm-#%!AL<)Oa2$Pve`t_)WOdRaJLPx* zLz)m=HEW$ieQ*VHVeBEpowEyd8I}oe_nwjicSan-hO-+%V#CwRJ=X_QK-E0A*7`5+ zFW4&!espT4F-XvAhL{2xu#UnU=oiSaz!+A#YbUFg@*M^?8|XVo)Up)eG5(dyaM z`E{*I_`vD{Hp@jsACQb$?bnD;2{2w8vzDm?`HAG59=tFkoVG{YE$UNoG9+ip zsS5@^nofMRrEsX$zl*(9Y`nKi56wgdzh+t}pG75>j0|4EYIwES`UgfR16()PIfaBb zpjZp0Jy4_aM~^sQH6mng}(Nfcf_hx!9s#KH+q_KMI9vW zCMY@75G%l4fHQ^gpCe{epD
  • p!@o0sZPhN_c!^QKn#wFrvyJx+~p;d--w?wI~kh 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%0Av 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 HI{>K9rhjNOJQ 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%0DS2sB4KDjCaG_=A4wmT@V`}J$ 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 PZ)1Y2Z7HL1!@7>h@os0P literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507104001-Config.rsc b/MikroMaster/20260507/20260507104001-Config.rsc new file mode 100644 index 0000000..b354753 --- /dev/null +++ b/MikroMaster/20260507/20260507104001-Config.rsc @@ -0,0 +1,4611 @@ +# 2026-05-07 10:40:02 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.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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=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 comment=AMSTER name=amster.vados.ru 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=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.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" name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" 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=89.110.101.17 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 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 list=Trusted-NTP +add address=1.ru.pool.ntp.org list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org list=Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org list=Trusted-NTP +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +/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" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input 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 +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-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 passthrough=\ + no +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no 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 passthrough=no 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 passthrough=no 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 passthrough=no 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 log-prefix=VPN-all new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +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 passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +/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=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=\ + 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=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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole 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" disabled=yes 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/20260507/20260507104001-Diff-Config.rsc b/MikroMaster/history/20260507/20260507104001-Diff-Config.rsc new file mode 100644 index 0000000..bf7d270 --- /dev/null +++ b/MikroMaster/history/20260507/20260507104001-Diff-Config.rsc @@ -0,0 +1,18 @@ +4259c4259 +< add address=89.110.101.17 comment=VDSina-vpn list=Trusted-VPN +--- +> add address=89.110.101.17 list=VPN-Server +4278d4277 +< add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +4300,4302c4299,4301 +< 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 Rule for Trusted-NTP Servers" \ +> in-interface-list=WAN protocol=udp src-address-list=Trusted-NTP src-port=\ +> 123 +4373c4372 +< src-address=10.30.30.0/24 src-address-list=!NoWG +--- +> passthrough=no src-address=10.30.30.0/24 src-address-list=!NoWG -- 2.52.0