From 4faa9a9355194d83e355fa80684b77cf1f117a21 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 3 Jul 2026 02:40:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jul 03 02:40:03. --- .../20260703/20260703024001-Binary.backup | Bin 0 -> 379603 bytes MikroNUC/20260703/20260703024001-Config.rsc | 5397 +++++++++++++++++ .../20260703/20260703024001-Diff-Config.rsc | 60 + 3 files changed, 5457 insertions(+) create mode 100644 MikroNUC/20260703/20260703024001-Binary.backup create mode 100644 MikroNUC/20260703/20260703024001-Config.rsc create mode 100644 MikroNUC/history/20260703/20260703024001-Diff-Config.rsc diff --git a/MikroNUC/20260703/20260703024001-Binary.backup b/MikroNUC/20260703/20260703024001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b92124fdcee62f299c39ff3727e85de5cb4f3082 GIT binary patch literal 379603 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%0Du=p1q6ux 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⁢+amz|OX# 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%0D`Zcy81Hw_1VNh#=F!0mY?#a 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

  • +(y%cKM#__o-Pt+--kgBFz*l3}GTAjeW*yO5(ex~K_7QuZSDUWQs zo_fzSeZ?%r!m%Q%Xo^6F1MmeoD3s59FhdgVwEnF>>9d)Px*>$MW~Hz$HTaSeRJT%_ ziABqgd;f(n*ASu~KX=&ZYUMsKNM_O8rzmegR7`N6CfMRN;=hp_>!)?UalOa}-gj0b zX!UQuI**2>bpv6Lf!66DqN6%8;^LuBb>~^Ma#~HWfR^u_{wjf7QG%_%*bD6yL!Q-R zQW>lH6kQV5f=4)dp`L6<{W@Wbb5|~Gw%GQ<$ zy7mmbCBiJ?jD+(!E-TIwQ4md@T4kVT!_F}~ctJg4(g)MoOk@moIZ+P7zRxuQ1!Sa8 zT)J`YiN+$8{ESu~N@L?&to2Kzs`49&r+IIeauW#$A~GRfX0z*8Hb-~aIo{8&q2{{7 z5<`y^b><#)(cv&O?9@so9(a%*mf!5@%+~?7d}ceu{~P07xx06l;!UphbP=h@y_{?I z_=Psl3sO&6lcI)p(XIoR*a0^7?Dnwm!{nRAF&aGt>*0D`nAHe6lM%8!>TE;1hY0+s zKKcnS@Dz2_TYeE`4<0ID_xrHwaz;pZp%;xFTElnzf@ZK97yb|47>qSVA$y?l7&G`^~ zbRhX>X!0t#NsD)f`_#|8v1l^>yGE-7U$?SBDGPK15fpedG)7GvtIQLeeRqHd3sJ>7 z8NcC~l=E!N1%iP!vUw$#N&=7LpRsraG~{r0LaFR?RDY}TxU)`qTom?Fxi+2~G{Gvd zXe6mhQN10cWuMEwEqF^@%o^HJr4_BbP|Vw*QRB52$(^3N_&aR_#phG_PXv5|`(17M1igb@%Owi{Esg7o!$w9)|Lu`F^?{(njR{PGbs z49t8N;s7)3$^ZLj(b8ql0X9uJ97>T$o->TD9at|My{TvdF+V(%xEEtlDqK=wH2~uD zfBEF3?p*7rFKS?SpPh*gohZ2A-ya4rQ!^#cu&iK^82f^uW-{+;r=)VE?d!2yB(M55 z+p3@4K)_Qn_)zCm_D@=31q-Z`GpT}<&G`rPCA*l4hj{Iu-lycv6J`u{T_n3fJ% zA4 zRg*FkhsG2vvLZ^S7nwZLs_N43DQf>yve8PMOx@QTzL<8f!32eG+}muSog>6Kdn!Fb z##bjJmqA6YfXX$2(X?OJl_G6$@di>dBeVq?W1Wphnhxu`H#g4}RX;#?|MqdW>wO8} zC(gzK*}n@0|Ga`{iGG8y^Qyk6)uMcoBkkC2IMk&(^ z|Hi1lR53``V^!X~lXTLSyL}{~XAWJjY`}?ZG6a5bG)D1E4R`8n4~}%A_v-BXSFYEKsR=tN zbXAb6*YRp_n95CCQ|dRaJexcjBGS{S-Quxg18AnP_Brdr$wtJkBwbAQPu37BAFlb| z%!CPhv=j)wGoX&TdByGWut*oebEhyc{(qw5SgJ-jKsGR`$m)FIpMQJ(Pdt_hP97pJ z4rt^p$$vgB&7VljdjZvs41kaC#^Q?k>`Q77zQ?)*(Mdm@3RotkfRJ4}c%H7_c4UA? zLND+lzY3#6*@&P_&9Z$rZV73k<9Vqd;{`PvX;O-_3F|CmFPrd-J9^R?PN35INIQ`| zyUujMRDht2oTe1}HG0jKQ8ny67zgH%lUPH#pVy1sK;0uydEpbtnhs3#q{ttN@5D3} zr9;TA(yY7XhV!DN?u3WFh!%0xU2_?&veX;%4b;9kh$5a4ePv13^qcoHh8C!F!sN@< z*w#UIG0AD7SJ)%HO;@SE7onz>=nv8|h8qbVQjg!_bKv6!$U-tDQA*{QCb(wlA^O*8 zF2j$!D_jw|w&C{hC=tfr^ps>INT`d&e|zWIfcX5#{Kb_GnEWp4&o$fida;QgiB!1; zWsTJ}ja6%#;zGt6WDPHHje86KYJlsxGlJ7>sc8DlN$DsWNE-#bxa_mWxD9yyr?O@&BK0k z!G9j0X)zcyAhUq&B3nYgtAqH?xKIt!Jl3-*smJB3jjaod5z)TBez-9DFKo3_q^9qM zeSX}EY0OQDqMmX}VL$bQbnBapKtDDYKp|)Isi4GI9I~R%w*wctaO3`{@_pqbNq-ht zl&X8KGx^tjbr3dMj@sk!U=jcw4*Kxk2EaK&NpxBx-@cxdEhpp(IrJh90{DUWRfcW8 zR{DEiBivH5k~R8I1LHA3HUCW0BOJDc9-fs^_PUIHoi012Vc&JXF#KhP>* z;?GNFZ<8-pDJXI?0mw6g$9zIg%PG1f5%8sRWQyNkc+qpCXXaCW>w128Hiy!)tNrF6 z(ETjA<)Jm{{A&qevSztL+u?>cy1I{#B#7rmrLm=`a1O zdH8w_jK_LD>XPO_iuLmK`05qEu3FOdmb*;P6MFXrX;slB*wa#OLO{yFOW|q6K92i@ z-51}06bM^1kEZV$-*-R5b)Uu;OHy#)la46t*Wv@kF%D<^--)VSQfIX{FAAlfD`5fb$&1Y`T`1ng(&WlOdvk#G{AYEX=0qvRW2gVjQ z=Ej(ZR*?`tyd2dQ4iOF}E}vWb!!TB!6~dpu%Wvm(RBYLLJrUq6bdn3N17U_wt>DK@ z+*ffGdnhSFVpR!tDZ5-Fr`Zb%g~BEAid$kKPU&qZG;VDAxsZ2-AaEHbH{vkAHh?Nu zRQ=-r074 zG0Kv={X22qg>;noctPEEU?0?5{R1<)qGI;<{^3pp zO*_&@R2wj+1=Rd7Je8|sp=0)4@Eacj#DM8yhZown;Jkgq{Mq<-Hh1R^N(j`L{3_Hd z24oZf7{Bm%3vZXeD{^9CV6tGsE?9y9#o7Y+d94tWv+v4OIc6@)QuD4}E?`AifGVXK zq1S@c&{jeC+=O-RNBy_7a>hS<0yxwaGjYp$x6YC+gN=$KJIjSC7*W8Rk77Jl*38}BO+SC_(9c%VclQe6=>lZ zKpvzb;UNC8(me^Vx@CfQ%>6%ruQo9O2;Bwkmv#vO7)@b^if4a|{44=S=)fQ9g&4|W zMNpjPa7kvQIydXHneBayrJeGlaYM(c&_`*9a)#`E;8A5ETGFXS3f*Ii-;y0dXG#&7 zwceI4#Ud^*2|qMEw{Mn`xyDP>8tBsEfJ;Gt__8^HAcuDQbN9+E$$6Y@<0@WN>M7mP zE-$2(wc4-6u@C+%Ra>NegnOvSLzetPQ$+6=A(jilWMxA|%xGkjirI^*wQ8#;1+Rg^ z+`C_k*dxDafdN10=lIqNM?bCt*<1C|C{_s5QbIk~nbIuU1m#>I0)PM0 zmDoLWR57w3@wg7~qzOX=TqJ>@)yc)vpn!S+0wCidMIbNozTPG*QLh;C5GD?K1 zW>btWe+*d+wpf}E(5R%lq}mvL4otfFZL3BN3)LV8As7Hg3~p`(zbw3oh62=rZaes zTs}OO)^7XFHy8xO%nWtTY;b(6o&(sy#z>$ z+TCzQbsC`ISu2X9>0v@(9C5Ud95L-vtAAnyt{%!&g;6P=sU#z1EV`(2%yvLJbc@wfyuJC@`}A!kZ;;m9*_vvqG!b`>k1;61y?$~Kyi_^Dct<$Us|a8 zA4l~HkrHmLWHGe9>@~6XG<4l7k0CkI+C$KhW95E^Dv%8IPbO^e#L4;+;ZLc)n07!`^sSs%x#3tkRhpZd@ z1#cKGLkH90hpeBUbBwH$iIV=y0h~h@{V0=w#SkJJyL7`9-6r9d16oiSOYFCirTf?t z^+O=(S!5B_uqBihUPN6Oi^#%5mki8f(x?Tae{ToOh@ItFefU5Lk zaZ|=__Vh%dgb0c}jtU0JXdyw|Q|P!MDPm8E^)>b5D#g)}3_3;}!`y-6Wg9D1r$`ga z^2HG~8+5iGd!}-r0CaQ}aV3yIH#|hg|68^?$+q7pbpwh1^MYo7ydUw^sE9$f@kW%T zD6+9o+(58_HBZ?K79AXg;7-r5s9dRIG%QqWaPeg;=iJ>heVw9bQkz)`NGG+^-WyAJ z@wM4E(xdyGmx6d0mrOQ#^3+Nan@WHLFA8U2H9TA9=6-Xe{=@AubV>Le9c~pMr}~Uv zL$4-bbX!q1gv)-QQj1aMkB32r9y#_aP_?v*hrK|Op(PSYICv)!%j%$YGq6JQf{1+0 zDfP@Q{F=Gl=0S1?zx}mpFoq0wDO(CLKOAC@pf>3Q%Zb9s$T^Xg5g4Fbf)_M{?#PE0 zDX4{afA=sPOOtcm<&lM6IpIL`1jHrs#ES%u0 zXO55KAK`QoCc&s2w_gn zi8RZ0J#Yrc3KlPOf0u3EtExo9wCw8UbF>xt=CALa?ji|KhYV1(;NvEpQ-C_VoQ#Ep z)+Pz`+crlSbWp_Q9bd-1Xq0zBxs3$2f@iyRZVStzGJ4+6+S2uP>+e3M#-_B;ad8ty zjwWY4mEMOkcr&pKRbJ^(CzH}e4LR)U;9y>~OJ5O9oE^SVWgv+L*BV)g8v%;w197;1 zG_0z5rm}nG+`F10uC11B%{@11qYJ!O?s$515GWAvmx@2-0wJ zv)7Z%#?TpncIIwa6XwOU8#W>&!R-Y{mAoh=O!=>;%+`jnT&M*gc(Q(I%?92lYU@G3 z&-DjPRAFUJn2Zs%5ld}?t9X{JV@H@hRRu*}_bt)AQq43JzUdJp=&_U?x}i+a*@Sxd zfMA11>4JgtB+2J43Z&eXTC@?X9{0$HS^gl-06=UyHL%;>8od_Q0C@`J^@H<$4qVQ) z@j*6d$CXA{`|?7IypTQ%DJ6G@=Li?69KxVImt}W{D^b8fJ3e6g=TsYzw6w#-AFxu| zrhnpkM`MM_-}Ti)?ljShKk^h*pgLs2Hc<{2@V<8#lTa{F*)8Q@^JO&40DFBzha=BCJr};4Q`G zQ_r@gV!?m2uyfzaNPK3!AqCQk39kCP&ku5ntvd&mIK`?I3gXVKk2nE*?z2~%$?OV| ziQwceKk~!u?XJ41Ul5#^jcpoRxAm`IB3AOu(tBjQqRXfgzE&Uo|QDRs4euAr4=*3_Fu>AU%SA$C($e>3&p2>rVGa z?>lp19zOFXJ|r+mrj$PGOIzeCU=l(BL7nkT{HB}4K&drL8-+|)DK}wQ+nHc_HOsO9 z@8n?e^%VkqR!|8$w_g}^!1%%cI?`!4rl?u6I{htp_b%tz-2a%Ho!Zb}ZX0V*3dP zU|r;quz-sX%m!%wlBaEGBE&Onk%5u?Zj4eldh2oY{Gr@h%6y2TYN@P$NH;W(=^k5_ zi2c!?f++g)uk2jkA!f7om3_Tw1=dq+_RaNN1007P8+}YZOSZXW)HH{2c(EN|SOG)!jDceQs=WsdGrJ#9c)rGzN`i0O{a ze!h|*c7tcBB^0lwbDl>Uz*MyT&hB4z)=nYN2j+SdT~&{Jk!(`9C+C1$(66y6QraSG z&js~WvwP@h`9GmHJFN}UW@veAbzl1#VyQ;?j1j;tsQ1PE8gW<@_!fYU0`28J|6mk~ zgmv_6dLF9Xr1As<*ZF&yu$lKTQNBp5C$CcZ$g5SzJTUgAV=rfQQ@Z#M+ZiX3ZmuZU zm_8NMJ6cbm76iEHQvwv~FMyHG1swvRV|;Xo9{=>zXB~(!19+Y*z$N~!AfG?Lz2Aiv zR1aklc+$tsUF_6?y{Z`hkpKD+4b&Y1) zzX5*kldeS?(5Xxd z@#_W>CA;%dz|HiG5!yb70d>b0a9*t z&@M%C`xx2=c0y1vFb9qan%A4V6xXP|p_voDKm{y2Yq}()=;7=|OdM<}cwJ`X`}a>* zJiuNw2-nz>z(&thu&06uzAVC1z5)H^(h7B?8kWwo_##=?(90cW;)NO`;78Rl=Dq$m z5X$fTDp&6xp>(N`kO$g|*P}x!d5nfv+iO8at}fq;cuj)Od>@IWF5%4J7-xhKIxUe( z&^2&p#5nGj4iHmBL4~O~byLcY2Xqgcu664%(zM8TIj2{z`L28DjWE4x-~2eNSi}nm zOER3l_K7N5RPIQLb$>L9XVWA z0)~V0uWlp2y44$B`N${jfza_<%^`uO7|jLtqLIs8h~vUo=MZBG8@~Hp%OML>xSEi*Iet_s~QR({{vty_LzK+Qqhyn^_Jjfj;Ni_wIt7@k7 z)e^@UHK1oNq@hLsPH(71XW%C(I~noBmFHC0Rlv%uEfXNWPO2%uf#=9k;!HG=kjxiGAss8B^UJMdqY9@&n zGk>?NK%$p&aJ|`gDcv5QaG&t_#MQ)yCMI5P=z$R{T{H8>4TgrIkJK)Qc`{ncgpktA z1qOP9MI=V6OM%u3h8!IAvXAm(Lz=A-b06|to`?6y9mpt247lnBKOT31$vxOh33>DO zJ~2{VOtSS?k>_S;C|R~Hqk^l(aeJ&$VM4>=&C4PiISP%*W3^0uG)Zn=fs!jw8@7B9 z{%wF5_FY;NEOv=~g&Y&7!Lw*JW=pV>S5BGMhrpwYTUHGE7bpg|nH!aM>DfFo`GI84 zM%SqdKMS1$m#e1wqYg;wNm3ax?jn~0b=2utT6BuDhdj}$Qn6e4Hy zGS~&)Q{k9EQjrrjjc_Q4i}qY=s@MW5gp+C{TwFL314VIuDsh~)jbmkMqlY!V5^_%^sw)(Kz(a^T_CJX5qG-k?4umtz z3sqbBWv>AwpO(z0`th@D=Y|_CEfcWVW}#>JGl!hRm4UDy38?bMC{T39P;)I!4Y}yb zJ5YJRKiue4?W{#i3-=)ty3M~w29s}QyY0w7Ks7O7bB30;&FYvvp^X&ct;jJeQbWIM zC^AQRT@%K8UvS7H+H@nK5j^)7N6vELRHN_GAo2NIxc7?=lxacqOt=W&3)%M=kMj44 z-}8NjVrbJ7860WQStQ|{*-2w8lZ$@8zaO^~YzzhO^U6yqR;IV)O6N=XnZ)=)qHCLgtD6U`jSHWv%jyvV%zVS8sKtIcmmRE~k=9+BUNj z*^U@;8(_Q$tWx&?>r<)FCLm1-Z?2Ad<5ogn%K$6Uxeg%9QWLnSu%WQZ02OFHAi8gz z@PYE?F^^)p65Oq&Asu49+S}{)fCPXmtA$qbHxmM~+6@gpUyZSzfWBDWyBCp80tc8k z&gMmOv_5Ri=tM8gX6w@zNPd`?{(w<%1rn6p-bcuI`6DQOIP!VfX6WoFonrX*S5_p% z{k>2VIH0SpGsp!4$ML8V&?!~gW8BSY*cwi{7pE7~bx<#As?bl)RL*Co(BO#Ad%h3x ziU&8uZ%HjfLf?)+itnT>wRSN#)%>|{pn#1#p)sm^UJd^ab1yP*$MZ}c7G`_>98q`8 zwG;;2f?k@;Hv;lyG~@OzjtTtLTD!f!Sf)>y8MZ`;d73=L>rCf5l=K(u!kX+d$>zbD zKn-f?=?IPdE&3++iU2aIech-vHJkL>&Az$Y?i>E;KWJu*%^&3>S*}N!wf!%uI;%}z z9+x>84P0ju>NjiSnN^}yep21+dT=mhq$x!ON>YMin!a@kg`4Eg|`I%1)mmN8`Zvkg+1!C0~ps}YK0C7;7tYRAdii?lL`Y4 zTltu4+%9`il&^*;4i8I90@X`<8MzVO2)v+MlF(p0B(3uC-URS!u639z8l$0)&(i7v zypj?O;o}33_7V@0ci-8a3bEFB+y_i44q>90KCU+gd~8CYVmjfg@hwc{!U5c z0UO=(x4iT{^OHq7bex@^DV*IX7W0Q;$9BRh)!jc&&xHO^VQ^IXL*xwS^lLbV#t6ZG zZcDMbWB)cN50~7C;4R@>vxuovg+E_pRK{Bm8O`_P1AuRjHmy@Z7-cqorKA}DpxQn? z=2{KI`gMuN7`Fzs8Q4^ttt9}d8SjkXBqGY4-xC(t-}e)WX)d+_-@uwnHUA>fl`*~G5qce9)C(Kh( z4sd)qYpKA~RH0P$lB%<|IZ5B%O~M+V6XA;5^qD^n!F(!#>*fgJVloSujDhOh9s<1; z_nZL;(N}X)uDlV>p`Zc@3j@FkK+kSMgZoOQUCC(i5K-N9JH%&Bpcys+ zrRzuHm^=jjuioZsq$Dj#N-X)l58|G0)QrKOZnK@OMubYmb5^3c9{Z)m^=y7+Y;d*- z20^15vtWyX3ybLg>kNfTj1#sIT5cQdhzR={1!#nFUQ7o{YIlZ%Cb>6))SF2|wP@D_ z>P_A+pGoa$w`oK~$>`|#g)5T)Ek(mOtP;Qb9IyF49^x=rGOxuFlo}MBrQcW{RLw^< zq5>O(2f%eO5LyrM8kW&`Izd@^v%+_$`;!FXzZjztpMC6>g7`o`WQ(G?$>I>pm;+`BNmKz%73xXQ?- zAkME7HpOn@Q3*t;Q}WH8F_5+lX|^UV%;xHXSNWI1Npdg=7?dT{N&vf> zYS^}*mo@s?ItQ zX`$O*GHkR!4Gz3*L+_|c&2iD%U2j=r_xsnlw5VBls+$LALmIR+jN7IKo6aNp{Wg6U zbu);PLOL-#^vdue;XFh)lHE%IVz=Wy(j}yU%Rgv6`$SqO)?3~2^nwcL%@+vZTK^N3 z+}k8!Qj=5wD?D>Z=i&Q{)CqUcIh9-&(3)>HypX`Q!#@kyp}wws&BVqf3_rxwV*gR7 zhTxNXMRW!dnsBY3dZV^Ju`B@gQl)Bjy9$l8FN(S7cSrurxWyoUqk|;jvj*eRaqcI+ zG3aKPIae~7qcs9?jOk;<9qN|C9q%^37 z^iAx}52z?DgOq~h0lh}wwz#eLX0WsltB~-?=-TAFq{{s~h(&22S^ED4kQGN2TdHWG zrznoyMIM(9F>6f^Lbgs$tWsDi#7|FDZPc=~rKEd>k|BUW5!^a#I^x{zfa^cyVl{TH z;bunECI}XK*HmAW@_#A*jBu?9vUEQp6gbu)#y59yw89ot;(n~_*4wQ>Irf+FUN?j# z6ExSvQy#&yqk0(#nTI8dDbS4+Dlid_C^vzoM)X~wksNZ2%y9RiI#FNdSXiFgpb6Th zj}${jK}_KC?Pbj!7%l}KI9vXZVZC4vy-7v!g4b3`Ju{c@3pW}rA9Q)f3$+C7D^m1?Hp$$afkOb7Ps%}jA3#w^;=m%UWYZbG_MDVWgpW8bm#-U9s zwDp-WMoODCg|Pce@uwr`X0y5eHw`nVxCc4c z@?s1w!(e7sAKR^X`LB9^Or&b&IpIYw9rc9_(p}8KOiwtm>f7^v4($X>guu4^7cZsl zIFBohS27+Hual86tM50rs}HN!y;F1T$YUE#7qW@)`}GeIVuk=JQ*?uJKQW2X$7CM`re;lUcV6($UR?qF_vonnFu@&<(s8gmEtypz7^ zR zU}yS5%4W}!oCGJZ4_;wl0`s@wE;^DTdiH)rTe63euAT3q9#rFH7#&QK8wV6g2ic;P zrx&?kFiqS+c-G}v-TKAcG(j+km0)&E`r7`ZnnF_xweG8H(;km?aFcND1~8fQ7q1Zv za29>71u9#m%;08fNxu2V3q>*#LL4EUcZ+zStWJN2W`E`D>iY^GiC6$C?wYxYb31Z% zx1+HXw?$`BBtvCg3@*837acjUhsm_ZH>Pa_ezCjOzrlk4e1~Z5B<8*k7W%68uVi%@0j~poY*oXtOM`rwxV-BHKQXY zG-p`28!jwgaPQmB8&My7i!@7Kp_r*BNAjae5!>NywPU)Qh!$N9V4;!TPuNW z?M$&x;%!TET5=h|MgR+m6(%{h(fhw`Imqck^0O=cAi(RTRDO1zZKcC*xah%>i(#ZL z46VY|k~Qy`+SGo$6mxRB8w@83~` z6iI%)AN3X?DtEIU47)v6PnM6h`@$|((+Smvje+Lg6k8YuB44b9z2GGil7X;}q#` z$CP+Le4~pD*vBb0b+4_SglKwegInwAdBEn9 zqx`5w-7~Vw2AP{oskr&^`QNuW+cJ5wqG^b&+EOY(QJzD@0aB_@lF|iFsJhL029+Ea z?ASCF!vswEA2AboH8K?Ud8v(K6f#LL{$4iz69>VS)_yH_|MrUWI$A??aM2$VMV{$Y zj5m1K;syGIYtXt`8N&P#_|~zEihGv9K2Owa6XAfCathK|ZDW`tkm$~;U;tAC*e!z9L^Q4l^^ysiYc~BE;zAF2W_6XUf z@MbK#h6AUEunHLzzUPI^8w^+%_X`YU$SoikwEC>)h)*NmAx~PZitdC&fi41WM0MDt zE9ct@7evt|5#t?SF4IatJy0&ls_=@F#&f>gC!U;i4bccnb`a+QnbW-hh2QQ29Zy^W zS*GnQtd!~Pmg6kZjcu;jjA#kkgeohqne+njBCZmW(Krwgrbi*M1{eEOhcSuGb zcaQdj&8JcS{LZG?t=~v6`mA3h-4c~Uw z#AU(tn}=MPG=8T_*mmcstc6BiWjpOQ&W^RsL`I0a6r2fm-h#xRMac9vBm5|6D|6@{ z$pNRwEUcpPC}B-pv$<|joj5zao!;aVAFr{w!tcXi(OzdC2>&q1o>1|fha)-Io$c5s zknTe@d;P?#t6Ut+QeTd4f*qNqyEvzE5y>l;F04a0-TBwh2bNb7Xqha2Inj$8pKwUY#?r-q0iqqjsKpAOjf1pWHf}&bH1=rb=eR1gH)bJTn4|>wIN+csG@_q40oO6dk8tO z<$U@fHZt#=5CndV z0Wt%X0J>Ko?XTLNLxt@7K44Z92zij~bIQL$IMGR;`p!DWVJgM_MSVKErvzphD{(0$ zA7cPWm5=0qb_-Y8cRJjb3W>zlTLiw6Wsc_=vYORKS~jDOJRA7ls&8KP=`|lXiUw=h zz~V&;+!ZsnBMHpgjmr6U$K}<8$i^ft*vC$$Xi?%^0qeO?VlL$v9X}29yWXMMx(fjDM zb*0fm_}0wwO#YmWBIXk!+@rXspv=jQR(8e%ZNOBVDvvhZPW`7HWI zs^=iBq|;PiVGk$5BT+V$!7}g-&IFObl!^dJBAmI&Tz>WUyV1r-n7^6mh%G)& zN=#`Gz9o?gn|6a54rntGNjH>(kY8VGuQv>~?wG+pEdeMWYcBqE_>JS#WT=UmafJY%*5)n4P^HUIe6s`q&B z^F}A@OKKMr^3c~OISaLX*Bg6}IXh4b*1+zg*y1+-hRI`?*bv4vF9g)ik@N3(p~E7O zTrWXPcgW58owqImoG{VMwUMtaJv$)IfDAk+R5vcTg%5S;9;Jy=m(UxIg~}1cJt0$` z@1s;t=D8L6{z>bD)#~B}Ei0;HliD;BJ~rh#{J7v%la_ae_%jcxeB9jz8rd8 z?;wOsSA*&#C}KQ2^V_wSRZjd4yyg?e-wPwGi{U}Ca!oH}AKnNs`hUoJ3(nU>+xkZ% zRnDU>vIDS#$kc?L8(o@u=7{f|&VcpWzmj7Wx_i8$->4*mejRK=jtBbXqP-1{xqe#o zhg*au7bPoH@|yUKpFISiK^qpcr0=f32)r<;q32lVWcdnNncJ>)=I}HF-oR~UJlV=4 zyb#tZU&lZXGdD`rzXReS*INF74`9CrY1U#`VN4@C>@%VRa!SQ>6e|kIr91DaZ}vFS z2w&U-Nh|7woeS#D7D~>6mp~JUfHJDBU~7F7EGr1e8DvP3oo!|NrZv7BKe_8GXO&Y1M>y4*B2wo&0F#G5{%k^`mccY4#tOmQK^O2 z!rUjsWTH~f307U=G!iIvqx-OZgN~lCdHW-j^6S_L!lzM;&afP#|bn$sU zCNIIOz!GkHP%WnHTbPHh$qeWJ65VDRb$p`Kh{&sAf=5Sf0_r~|0oTdNG`^fiJ6tz5 zv`UF`HReE(-hZvIcnsxV`c%e!2S)jWS$Wmqh2U?Cpto{fnRVZ1;j6b@1G#8~;Fe)2 zBd*}^M@5jm8d(!Rx-YszYwdbdCA1{m&Kaz7O zzE9*Bc1HZ&7M+v8ZJOpZ>tMaVN2Hcy zy1E^6enI{9L+VE%PFPvMDTTCtfnsKGZ(;3lLWte-@bE>`Fl4jBoYLN`^00LJIsHyk z&1oGthjp$w7dJ-*(NN6ep1C#&np@Pb_QvBXr@5pxP3l0 zjSZ(SkX#2&%|vt>VLSr7Cb~KeGd}A|+gnh8`oXQ7$G_k+d0@@h5n#d2{nR$g4f?75eJ1#faDDwLQp%yQ z7hwGX_jRd-r8E&+jF~%Q<3pliARTjJM>O;I#V3i8CHvJJPV`hx{bE<2-kIq1cc7Uz zb@C&%d0H85_QfIcL2&L5-w-$XA~0x*E*1Wi579cGHD#o1Nk8)YNm zfy!7=V*XQuA!+9{maWbffUtf^ZrL1LXv&9koej8@0cDY9Q)HsZ5Yg1?skTDv(9Y_sCLpOl zVs<={%Im>_?FR?~rM(xP6!~HfQ8BWVQ(3<~H?3L2PhUi@wDguNIa;B2`}*OSRn$KQ zz<1)ivrSTpM0ES&!J!;Rc9UDgV8j_4I3wFeRF-L{zSJ!qZ~O*S9x6A6^|Hz=TQrT! z)M!F3_3ALrzJTjmLJ3GL>%+1NOLOaUTE4qv+~B1T<`(~B2a_aLFDE^bgwkp!o|#bj z3x|HfZ&|Sfz&vf~JZStV<0!;@p=Psbr6B#tnw(J1O15W6F_9tqkUXEi^>=YJI~Pme zS7ST^JVfkZ`e0R{%hs{v?koLucCoP;e|D8^oHPZNZ zWc9rw?F_DFzdl%;29YTe(9Ui}N+a(SazUFG0J+!S3~9RAr`2E>lY%FCT_E8AcIos7 zf#T?x#ti-cJen%uep2S`baz>t;bI`O!VScU*Z8X)cek2 z!)64MmV6A$etr!&q}Q)D>ZEqG6tU*;E>G5SO>O4&YdG9k*1p;e(E>* zo>@-mt{H-_{}XpFN%^jdJiSTrHHrCDi{lD#G9UfE0|z z|IQTW^+1LP1;9qS$|b?kniG-JnN=M6!D$Q6-O+LD$J>ix>mUPm)M*M3B>h{)2f^#l ztKKGwpE|Rf2<7RTR@DZnkIc4P3UN+QLC-xRvJKj3C`NK1#cQ!aS{C<2u-BICs@ZYp z_RDM=tU&f$y*&s3TqLx;jntoYz(lt&-3-n!&t~$xYti(_F3JE%!zWi`=@>`zEat_H zm+z&~h7l4o`?AGkq`?(RO#O$>L5WHRrzG)Utih#=?}f178Axi2GVIe6LL3K-H;@qi z^+z`@BUp+&C#W|9fTDoS9@|TowYH zd03;un@>#)5UC5=%OBKBZ308Lmg?xWYYrN-k%UDUwhUye7 ziboF^YfM4F?Lh5B_hiGViY?B}vdpW4^%rSFK!4d*a+B-UULQ4XJ}W?zwW&C<`Dk_> z`uW-GEMztg)N|}W>2TGg^y`h~-Lq$x%nUGicRJN1(HRuuELo5W2TNk<-$;q7U1FTB z%l{f|Xgs@L3m!BdH|DM?iFEepq-|^D>|bOCXidT;r@qvBFK#WZ9I`zbdeH(D#Lp9j z7@QA13M+25{;+FEDL6HhgdR0zH&xH)rMUfEy4eP@2ddq^K+&&?eWf2OYS3{_^W*8o z{XAF9qq6Fd-&}#0%S72YYPo|!2skPEt_S+@^-vJ{P4?yQAs>qwwf)xR^~oOO2N~+w z0$k=0)#~Q@ zbRpGu{GVV}P#_%2l536SwnWj#P-qZDrFMR<&0PlNIYu8y)rujvu$_3yHdh?pPe-S{)@uiVUtrM5q9}beC|8VJ*~@T%7iDI*}t29D+r_g!qjTHq|GtPb?mxGGy%Y< zBESd$t_U|3x3W-kV^o|hqDNHSL8*AI?We;du*=M{MY=^B(akZxAcba#=cq-b-bV+o z`C7>Z9+Y5)=zQckV4#rytrXHW77Odv?!LxcHed{ z4IHtyzfbaPJhuS2GtH=>r1I(JZlT4L_;kiB$bvOJ7i8NMY@niUL6KP=pa78F+6)x& zq?{sT&M9FjzM73PN%!Y-@Vq^W51a(S+*o9+DJJGDyV%8-yZo(nYr1sBw>RVb8JU3sWc(L}dgj3RSp12MVh-?&SfQ;cc zNIsy#Lpu&rWxCWN)=H`K3g7#XH^qS+4*`dydaHb# z;cBu#TeL~^&;e5sbbAk=+Ossz#as+yC+LauyNvE}6sgwjX#&6?jq%(benTEx7^%AC zfUth{iJ50N0wE-Gi+hrf-*I}(gj#?(-RgAQ#WUTb)yPE}=UhuN1&&gi&r_n&>4p*) z5zd-Q|0GxS&Vzz`>jM-cv2U$1Y31&CN45oJ0E~?M~^bmV=(D{5P;dHj4-6| z8V{Q*aIEAO2zYg_-1oy~TFD>oYG!$Q4IM2fIL1psXClb)88w_KgPE>lxrab$uPO>F7Qg zkB2I*z@AV6O`6#Xf-)}b3jKV7n4h>kXObT|W76Zxm^Gb1D{HzFFoxw$A?6e&^PL>4 zWYJIt_jg>C(S&abs(fdiq;}mKk5i#9UfX8+eTw0Yn|8g_1uFvQ-B6 znyA5QvSR2Qsjhn`BWdeSACqBI_%>|kqJ{aa3VsfTT0!t#-}=ikS8QdhHdN72 zyxD7A)RT$=@%T}+tD#X8s$*5g?#)_Fmgjp9YsE`|P#7tT7cfdgfJC{X$3|fBQL!g= zU?fqkp*i)*R7PZEI(X{Eb+yF#9r!4RkeNM2x8V&IC&`M(?QM4Kb&AS@XFaFELu3Tk zuu~xYa9Rz+aIBP(0|07xZf%RtsUEF}J2a-I zXt>rQE{Dh5u1HiE0od$3FIbH|HK8yJ&-10$j; z6;8|oJW~;Y`sZT7(d%}a4q;2tG#gdXNQ0;ZGb8eAFy{esi6nQ0S3az_A_0g_`umIC z_qAC7Qr=KrO5p=k%~`&7LGUxyX73}qkyx=3a@@_zhKUH1G$B@IzEvfu#J}9&-^^kR ztC0^ar5}Ix79vEtxx!TXA(MQb2_J7SGi{o*YfA&=UQ4BD7QU?mKit1q^u5H05HxY( z?Rp~;$3MlMS1MV5Ht-v7P=>R+=Blj#&6GqqIhs?DNFE&mqReQO^zVz|h(s|TR+Z^h ztn+Vs$~jV2s^3W=O)GoRZ|%XaJUF{4$6fQjn794KFYp!HiWsw6=Yhk;v71i@)s=#9 z_ybo*iVmtU9h}rHp5$1FIM0=tJ_)zaUHc3J4vvf&sUW(N5gH~B@$Z2=4d({=s{oGJ zz6cbvfu(n)#k{=kt*D)4bg0LKD-H+jz;6OWh1X{R0mx}5oA%uW1l2y^u~h>afz@M6 z|7B7;b(bnqq(f8loo`bD&T{4X*Cn?$&EaNNDgz1El zL_AWIZl+6XszV9%y+^x~*v2^=Is~CTUX8UN+#pBQMWc)w-vjhKZ-G$>U~$ zLH%h0shhsdpY7UaY9PMR{~7u%?mP_*ft?=)CAwN~jQ#N2DsL$^CmTNB;woGnfGGP* zJi>wA!`rR=VUF9a(U;!5gwyTZv@em>G9g{^7Sudt0qMlzrB78Q?_EDTD7hM=izoRI zIxrbRLs;ohO_+`aYE<^7(;0!76`tB-*ON52f3XMo=`gYZIUq*szH!q6`Q1w}c{~qX zN8x?-ji~XdlS}Qsw`|=I_BTP!Y6pqf{;DD z0q&fcYPfdwJ1ESPCPKalS@VpqpyV;YFoJ3mRQ?XabT3g3ob)JvNk%Onh{2*I1;H)< z9_y(uJ&qaPNxyv8OBTWe{OLy^h9!fQJ|FONO|F(mcOF9Y#)QHfr!oPHn-&)5qSot{ zDX&(?QDkhR-tw9+&3Rl1hEDSd!eRd*^`=*NQTVik$U`fc z#jX1>@JeG%vu-PxUvWye36HmY9o0v$i|_FHwC5d~5-{aC*M)n;7l(>9$s9beDf`I827C4=hr@_$=L2z)%e>D9 zH1vC@%_`sgi>xA$$Nkc2FjQ(gd~5uPqd#_+<(}M;g@fwJmvZhbMmOnov9H!ltqG@{ z+hAjGLbq7!Ci_>cJd;!y-ua1EWCW3LpJ!p{B7&_5sn&`)x#ST{PEP$1h$9-RQ!rk? zM?7CtKT;U>ISri$|MlkWBK$xM@xTr9N0#voD<~uf2NTrkE!nY1$7xnCyti<|zS5%9 zuDSc_n2?mL*48OGh!Z|yyKLUt?S}$L4h(Er!hbMo=J{szCz4;LL`mOmp%cCx8Fjn* zA|*eU(*MIdjszECvT@VR(MfOmDUGw%e`&2&$QQ=sy1gz9I!fFDzXYLP2C#m>$4_Rd zLfyMf=b;||$C)5|P|69NG70PY(H_Ge;LtF>TqIL8BWV5@cy3H$jma1n6WB4fiTYa( z4~JoiA&X#^Lrv`;71-nIsEczjzPhGZu&oU4cgCo20xv%FVMn-hFAVr2t&g!*{>u)PVYpcne~05;W$h#OmKvGRsH$+f(w ztpU!>1F?>#PX*2{n=%Z?r4655^Plfwm>!m^z*}@zXyK^wdOa23Owpc|1V-8$7$>3*& zNpOLI;tf}gPzC3)5I+tcgV0A7KekWNa%7>~VQ>#f=@Q2p_c|k`$KNB7N{vf46Jh0+ z(5_FuG3U7Ia#Ab-IS(nhuNj|-t5Ch%91YVVE6SSBspIEa`}Cyd{=p+;c#b>VUi$&h z^itB@ZiJW>Oo+5O$2Tc)$=O{SD6d28a=sZ+1lIOTbbGQ-JFFFW;>bxn&Hg&xqvLd! zTzZ{ddGb}-SN^i0Ef3j;Ps6^q<9qrBBr|E{ zrO39Y{k?#nQ@A^3;DNlFfv~kTV`QC#Yg)H1vEx~V749YQWKZLjLr-bEgCFjS`AncX zXSS3&#*RA89iuHLCH{LGRHWxXHR+mqtUk2hrb}pZ2N8<_LN1~x7F2wEY|r=yWf~Zl zo;)ZHGx8$+TrbTo)U+B=Hww*2gpBySjj#!ss2Ve*T7bKPn;u#!{T+wf{Er}cTN&v` zYMkTO{-k@B1_>B>!ZnR$O+VK#hs7p4Coge<3fnbckTyDE&^!JJqa;!=0$0_K@@ zz%k)!rX1_|()9d3%^RJ(vQa;vExD~Yv;`)^qE@5X>+i)>h=eje(l~l79oCJ=+<{&# zkCBdJ0r^~00eaX-eQ6Hv9d%D@>Hv>#8A_^wn62Vapo|FQXVle^bVYi$)(=%QW?d?l zXM3V2AJpNXR$zB_iCM}-x}zSfx5*o^A_}A2>|{WD-t9S)jA`0S!NF?Me`%&bE^)78WxFnDZ$V)-oxy9E z1_WsbM-6d_^Jc#gSxWewQZZipslnM=I2irV!ovD@AD_1WZJqzb|6A1uSAyvpt==NB z`(C+=8NhuzkU#d+fR)XKtxQOYep%CVAF1{=b^Hi zt!J{#_6RVq1@rNN;zsYggHzoL3kL_256+U&rpPAu&K*4ASWZpfWJ8)iPjFG|4kpuG zQqP!1m$AeEphCR_GlDG5psGvc@C}l-pmNQg9xKra#>VT(R*I*_en*0!jQnlZ(BAgy z`m+ON>Y71as4o2wA5{7aMj4981xx1;PSoRwEcns?p>Zy9nev0GauvR*cj?^=WezVm z3~>`(P#}mqzoES`?+OpW4AWbXwph$BpdplEhK>x;w5!fz0{5@(dXU(w)rFEd z9@l=?jop%jIQIqu)pXL1VK!B24v=pQ7P-1vt^HO7YDCKj=z2S>g;*~=^(%l=URjRZ z2c*AmRT1q|!F2$|aPiVbtwjBLsG4rith-nAcs2=h&h$AdjJ1 zMojGFwKE%`avz%o(S6?{uiR_;`2#w8fV zWQ}_&alQzblandoYPRC@R`L zX(ZKgYG!1_tD=XdMFHL8#+Lb5x#R+iEaJjcWW?cdl~j#Zr;a7lS7I(yl`iO^MFn>r z0v^$^2MjLA8z+hx42gy}dz5uuR@&hE2BVlo{VDNAeT%Lef2n-!nyY8dX7-Fy10YU) zI89SBTWB06*(XB9$(&ao|JfD|)XUN_AFu9ww^vRBd<#h;NzGkD>}asWZ?b z=3Cob1hrw&QLhrzB#yKn+a9EaF{;->1Sx*)`*zdeDE!!s-is)sP+DCpTZaN-zo-Ej94|XprgORXvE$Uf%Ba4v&!H$Okw0+VdJ(4j6sgfl2fUV z71~Umo1ju0mrHYG^?e>-e7s_0L~@St6BNoI4e@+K2hNw1s_1AdqiufaZl4^_JW;KB zZc}$73FZ?vTfUdjeldn}{}lZ{P0p&}6c4@W$SuA`Sa*+$0C4Bg#lt9V!+_O#zyGkI zUe_vXRfV>}o(0e?ozTu05DoH3Qw)d?_&p5DDygkD_7_f;)sTH)=qQNq_GO-YsPDOk z1YE(x0Bk2@K70Te4bHM5#f}xKPp@`^+)U$dXj#(*0H`R~QYIliiU~EuGQBIk61a2H ziM%e*8X;y{9dQmI${=qKQ(bR}x+v0^uzz+A#HFgS<|(1rbgxEX5yRWcdSb#`{D1o# zOa=j^*)$7{4B(r5U%$0Yes;@0cLt+qG^hEQRN1yg7sVaP%GTp4NxVRC47#uns>fnW zbu|p$bjFNNqdb&hjlR6CN$GfA5S4EJv5Af3j9LsuIVNde7b}}1mRt;B;J0N_A+Lfb zyj3boh)}r|RcOLH&*VaJmrvs#HkgTSWbk+muJ1chP zB|N2j!Qgo0QbDZt#t`8E-z(;K_0`S?3QT4@Sr`9~ITkbePFJavhmdFyuT;&ljBqT( zct^&?Q;}nz0yud0Q&B`YElt8JK)^U%0TWx$c>}mo%LnxeZhZqG?q4XHU2mV!iQiJb z0c;_JQi?IqM0qRzO>^kS?-)gnu|KE_z>yg zE-{kjs90EGCWpVsaXoIeI6?>LLX)#?Y0TCRsAGA*U8+F@^Ktk3l{X63LuM**$Z@)i z(gQOp_OEp*fMzc;GKC^tGbvyuD3{OlT5Y{BbIFIn&)i3xzG}i|M~dT8Kh2oxU@k&I zNY=IN@0fXD*K3No%!fnV^R=g_a?iqf8jN0PM<^|JV`^SF_}ADXRa65jnq!@X9+Bu zzjV@(=?|ivu9eJF(|K{~yBlCxzR0lP-YUBu12{j0w)v40hweb3M9u*Z4>@Uf_`vnVT*2RoH4PY2^I?B9@>h^(=h_iEgWOuXWY z>z#G0`dxWp&(sb_v_)|-=bE^05nQ3y{I3wm3`Ri5%J93m^z>3r50ocjm{sy8(D3TA zNHHc5NXE1x)m+yWw8ykrp>#Tui=LE=rTrn9E2r4twe7p0LmL8DScIG=X}Ju7RqR{M zqJICM%kXpeykAlvJV2)w2&qNlqhpYv?v*u*^eC_f4UY+!XK&RE5ET2WV3@G_gvW(m z0AH|Y$|B8{jU}*~vKFUsz2Fx23c7**DjbboFS)qCh*mLt;U8d-t#ikdg5!M+pexQV z^x}=pCD!`ZdEjO!r$MSn3G{GZirwWq!%&GpqDWV&;zD+MHLhU_*2WWAed&p(I<&aL zM=8yeaGKQCFly-UukARhvGAhMpN2g^fG|V=xQNcCHm@Q=W5M{jZ{DR5rxNdnc7fgd zme2E)x_Z7_<9F$07gY6d-Ysb~{+m645KKnY2{sFsjT1GJ?52)cw#R!9nsF}i*oX0g z5j?1DB^{;Fr{lNeGPj4jcxihJJ$WqHS1`?m$Bc^g+B!iB%UdI2J)(84>UBke?nfbt z&&BhG^-;ozKI_1g&hK`mU89C@uF(qXc#$5$5;iri70qXbz_nlU5`FO>@s`FB<=s)D zHR9?hfscnZ@1n=(o&dWAeTd$81R+#gM=-u@J%|6<*8|%kn2+R|lDz6rT@#La(QP3u zWsJMSz$Z%$w~<9dDbork6fU?TrfIiQ(%`r(cJ_M{pKym93@jD8b_n)@-tNr+qUWKY zo%?(v@lyG@E*BE!ke-RK7K>{Fl1GZL{4H-e?O#2jz{%fD;W}R_U{t7U_#lNXhD^Vim1Vk?Z8rxyA>%9D zSIUM3L4H~^7{2zz*6eESnv*ED0<_kJ`%l1BwIi)LVtN)tzhYksCr>c#-0i)C$xh(t zw%89x#FD{$N`peDjSk9wH8)BMd4Du=G)fBYbCa2O=O04EX+<0pWdMQ$kML$Aoqq<$ z25$S;IWtjEiF8-om@6OXg8ho~)(MQX7F^yez%*5v#OABe=iyRZ!fj1y8<-c%Tff32N?*qmnxoyLP> z*t|`!BLT5EBPcnIklc;k!I$0eSXkrZ8^R*$Ry;6NJ6;i}y2s(~R-SSt;M*ifpV$1rk-t84QSWuO?=Aw=m z`Jf`U8(Pp-dIppk%+H}{a6tfP^C^Wm$!^=EveKE&P?Yjqn*b{7ftg}ZH6AiNQ7Kmm zqVHiis>tr>Ow_KjgaL#nzZoihVId_`c}jk3!5ZHB{LSWPeeWN}E#>KYuzgO(Ll3QO zefBwNF%}u}C4s2qbeVq!SU;UmQN$0~<&Se7BkBqL*Wu9&l05$?@x%8YT$!~#k>ZuE z7Dw>|jf8KjjeGrn(a<{O5=vO%!TQ!ll;xZ$fp0H-6ezQzF)G+R4iC|2ksI+iUbnCQ z5;7xl^`WB^R~mS{2nSEhaLR7k5zBS4n2lMsu4E{)FLHsUCZkPv8UqyL;L87oZLN~N zDP-MrqVnI>*=nGKvl3cE$Z#nIUNw5VeN%GTU6-WrTaz4)8NIRHea!qub6-K4(P5Y6 zE6+1U?4W9txq=nl(ca&XG0fLT+whxi zJOc}WRjznKXD9Ls@p@NFNFd0m66BOtQZ+A`q>T{8skUL`p))PVR*{BEvj~03kqals z*;Ah*4m=q8RIesfZ1_feK@IytK$4gmY~;Nu1X2cmEq&ZkPzA>ouml$8kv4c&X(9=1 zXW>${)`rZ;g=q3i`*%*qu~@-S6xR9=>WcFc5aWfpt>@Uqfa$J=5cP)S1omGyP+WAPi{iCBV#p+>5y6iE)_Qj5V4GkT-slm@$SH+1{P-`x4-*k}4 zEVWL8FcwFyD%ViP0NvPw4`v-H&SrhI?bZD#U(&)Ea>2&m zzuft9q=e1|aqt<$yk@x8AN4(>2SDfi-glP%h z^hICVq9uk4DVaac`QX+vbYQX`)*rMW>Y!gOlf&pVxU53a#7e}1qkZe}VvOiZkSCSa$|H9Cm(ziG*kac1Tj|;S zJo$N3sQ}IibSGzc5hxLsX!UmT(kXEh$qjmC_u|!W(zHyeRRPTnNLAD-8ffU&h8Wvz z`G<`5Q?DamP&LaXBj^Y~I}3-yucd(q&G>9M77zXV>+F+inH&A%AuGgj2HR1u?wAaZ zMsGawKdWRd%}|aD!#ZY$iz?Di^Qu28>OqWaQb`kEXWp5w4L{d>T0}v?C|CA6jw~F8 zC_Zb`b)GkolQ}%A_z^k(0=ig9PO)DFt|p>%Sc-7?j(vxYV%tl9?>0*^70DiiGHs{& z_c0%k>ikqG7zBUBzp}iNBKFAPf}Qgz31q;VJU_P^La3Z8_t%V`uYQr`VB40hsbO}L z`DpkWmY(puS*a1$v%irPltGLjuP2X3U(iiPWX%ltB9!ewQ_em z$*;7qrne1S(k)mc@Uxml4tz7i*z?_DAyF1Yt(?|Zu+w6X8VdBz+CA5;<75HiCo<9d z{;c1@eDFJL5w;Az1Q#!)y_@Ho1qK3Os=%)~f9b3aXI|8)Wr!kI7R!OfxhEURQbEQQ z+#T!kmL7cGOXE{LvF_@eoNLq*?CEl$3}9laD@a>zzRor7iZ$b)Ku;i)VgO&~^O-*W z1C(<0*bP_BE+?~(VasaV`KiBGUVSxFa5)k&kYEl2<3%#5508R9{|Eykdt0yygVB}E zA5eZZN(*5{kQdpzXQV&4%JDNIguY|;;nxNN+hULDO6btmyg5*Tc`eA1pL~IZD`3qr z{vP!;5wtzB(B2-}Y@8r^g3qpZ{nj6qob*N9ZKt&yq*e*MN=C%r;gkk|e4fnrbtabP z%^#;NjMgNXy`2&sv=-2tM4JSG_4DY30&ht+QEmo8O4#VtNVw-Vnu2xaGRfuP#R(HjpkwvPEOrHnaZFhCr^jdfD1t`NXoX z@MPzcb~x<-r7K_iKI(x!FGMth-3uPYIGr}@F@H|-65sy%)}gC6E9X0}5GISNsdM{~ z8%l~YWedzl9x@S0J5&(4>Ak1d`MyX1Tc4w-Au;CO09cW-bp(RPLe;^Y|0XNtVn8Kq zGjz418u|)b$0gnAk(nMDOW15BMMP`Xqvii%j%TT1R&)97_spfWnI?WM`=gPRK-w35 z$iT3!4Me!m4b*L5W(qwnug#N@g|iLdgn0Qh4=1E8!j^+A$1f)8SVRm*k>P)gEpkok zYo9SF#9my3?j6f~jgyBNge+V#tNSyDumpoQ=4zj1AWlwZGsslK6-+@yWAY25L;igHj;g5xpuGvU5aAGRWSS zw`w#~lmgySNs+7kC=g39InD~k3&!UJDlD_6`;ap`BE^c4nCF?iQL+AcpxzNu64Y~d z+DcA?Woox=T#M{|Euhe=`J58@l6L9qozCAt!JaT)GwsZA{7u<`I$-A;#xMPfQNB@X zwbA~lLhHnJVi#Fs$(}~eO#_#^Z2{P^c7ah55FM=7cJCu(`_ExI@5=T;#fh3i6FhW6 zk`Engk+Z6L7*B~J0d)=j+>X+xk%fxr>^aLZKDFiTkP_!N{q;Ztq-&-Xi(A`$Mu?3N zyX-c09{wXM=W$Uhe$ySlm!H$iA2!_VvTAy9cXdzPRv%~RMJ+WGY|onlYQh9?>w1Z% zp~tz!njCfKq;Iuq2`&eQe8X$H#+Z*cNye)*$7z=P*h+y_+L5U2ufQGlF2!2_QsU!8 z?W2h=YkI#cVH00j0)NKHJxt|MCA*OHjRre8D!yu3t`k_6JD|=?r~x;}0oA}~tG~AU zTV^%Uc-T}VW9*OJi=Lmb0ZQr&fKGqsahM662CLmmCMr7;!qH~}N(KcI;Ux#?q=TY(;cjf|OPr(@w ziRJ(Ih(L2u%F&#|U%o}&!92F(A|z>n9Zd@ZR_;$I@Ty23Y(_(2xBFk=Pz{0sT z?V21(+Qn_l10|U$2KN};GP8fj8?fv+x;N2SM^`3dkvtn`fx0Om#@-}G0f;vn=k+9Hr)`}M-Iqyg| z6c8JC(kjmbf-8b$M`o)Q3a- z5_Gl7Xv(9kXMog(>kjXs2?^iRl{F=srdW*V{b8ZhnioK$;#J=-LVpjn7p%2LV4sWy zza$MO87Jaw0KRZiI!`2@#2LQNq6W;OZXA`bIJI<}#;bnRbB4JXVtakd8mAy$H`*zI z7<*{T)Of>Ycx;w+DQ(9yssemolee*ilr?v$hnsre$aNzq+QKUNxv4t8VdIqO67G4B&$Au8dh@KfVKzmWk_9g2@D_xkwJu|X}6Rv=# z#}|G!xL*_+T1HV9{T?LO1npBkw+e>%OH8nU{)|FF-L=MA;HX~?+9b}`ZkiPG8^;O=CMTCTbt;xHL0B9&nR4-6%)J^2J}&1nyQA zqkmu-5}Wp(PDOL5N8WsFS=>RS|H$C1MC0p=kPbMw*0o;|H%3jOW3BAgkKN+roIXXj z39)X_zc~u3*fkMORcQxWZ1J_YDIxoaJKf<-SOkDWg1_G*l96G|zhCxlNg*e`2 z8*%ZFY?G0;AA^ERbq~Oj@gH~`e@;2-sx+v=tg|R0%M|3DFPb{wWy*HR@qrBT>u&4}Ii|L)B5U)Zl9G_lpkn;6NOKQ8Lq#T zL0z|zrRKfY4a8_5;-LS;?`A7mv|Wk13!SBJbG(UMv5g4GT4-1H1A+J+$5r4_cYq~@ z{Rfyb)pUH*1!(YQptESIlg9ug$vV~0BxpkWLL>447)(mSy?%N9+P$i9{hPmG{q%NJ zqaPmmwq6IEyNi%@ztFZD>b5kwqF2gTv`BO;bBqUsnf$d_b*?Sc2-Ge(OYK^fH~_ap z5e0sPfzOxFJ(MSNI5_b{2IP$q$E~scW)0%8dZdM^ZqsKxElj)VZxUtc!)29B!GmVP zOO-^(=x2t!^7=Kpl1!M8NFZe-Bc#>ES8h<;9pt>dtT4~X$y|1Na=M?UwK}yRl%K*@ z$f(zsC3L|tOo%NT`KG_%BXK2uMl#d1rQ0gQ-)(6?TLfi2W5e0FQ627HP^IDC$5@FB z74g} z$^AOXCDZRSB+gkh#6jAK0`;{ZS}y(eKs%f8cXn&kMO}@)a+lz(0lS_#<5>S8nPBjf zIXzpAQw6a`O_r{I3+-mGP<&RvvqrD2dVkE50HG%N$pH@cs+(5Xz`uC$7VpWkCPGd# z-WhK*eCX=ks$M`oGjjt~D+1H&9S>kmVS;SIwP^Z(j!`FHV$PY(PqQ6w9AFlg(y1PH z7^%)^C!h?XJf{kgz1jm%tZtj^XCsd;gpw{P4La#F(8gD0DmV|yCUz_@uUsA-peZ8V zXnc5&cy#5^)|~;0Kg@g)%_~!EXG##Zc`TQ0B=Ypba6($a!Nw; zbVjB0w#KE=BqaWbok4~uU)|VnrOB_O({U4Yob%&nZtWR_KF7z#RxFD|&<@Mn-}6LG z{eRgP|5*Act3z6l;l=Mczd22r0^duj!xZmWb0fkfO8*8|(6-HSj1w(6Zer&A_YS7Y z=*=$I)gPsSmYBj!*eFbA!eXB(ytB1)xL~huP|l;&U1>qJt{qJ^9&`nUg@s%2_m|Nd z!+=e0d3KY(B-q_TE-=acL0Q24tnv&#qzjH6T&>`vue8qAm@bnT-aU1)u9Z>(1{gxG zu!vAUga9RV4U!tAcm1%4kF3?+ZV%>=Sp>!C&o>p#)_ThD*5`J zb}eDCtrOX@8A4_54-xr1EXPN^aG88#Mwy!z;CX#+k%Fokr0*lzK)LU*j17hkp(|mW zpMh5)-54AyL%HCnaK`Dr1wbG94x~g1Gh+LsO)^DJPWh9D{)+HNgBh4)q2{$(w@C=W zz$+eXgaX9#PO8#tY<&+*XYbUZcdRs6#6smXazk1*=~%|e@2LNU;k5pR?OKD7uysBe2hDd%1$!xqXBUudcAX2_YHyN^ob| zX_GlKZ+2OeDL2H4Ov19X(7aVH3m|MzPe42>0kMG3vO11uA4((JW%%zwvq{la+reXPnS^ZJF0teH z`bYzy8miw006aqzzu73S`3GU#$s0_@T6ZMn?FTjnO3$e89%%}5dPi*Dna~W9c6c%E zXSp%1?C6D)w~7FxJsXKa-w${%pLDzTf_SaK^G$n46D(l#;UDolaMsRwNFi8d+FMlR~=V$k`Zi zle0UPzh6U`${t(SP-N4y2;-A^=ys>6y*B4LgB$sX-K$>%xhU3>kYzNGPIQCvx#tx< z>yct19T|&q7TO-6KlPhnkb8=)SGz@kiJRr9UkUbz?Xj=jsl5rG8MCADZ;OEa98rT7 zd!N7uH5p%p&~~sjGDRIXt=(5+hZP=O56<>kM9*&7So-+3J(8=1BeNVM$N}eK{AdB4 zvjMGznxQVPCQTe~NSX_Ubv}8@T+bSU5!Q#;j)kzv@M>71<30=rJ=ahyi~ zb@uBS%b7qQCd5o=sxz4p9c;xKIV@G;lEZs#5L3y8)#5g1r+1?V6D6}H>!gI8&|&xB z0BW$5G!rH%uX)X(?$69kM+aH2E(8Y=B{GN5xs24Jh$57Bh0k;aM~}b`k|N zA8YC>+Pvp-o8P0loTw)FrG4AV!QR8WEu- z3c!Ig5crTlupnoS6G2HA!UvwIRuMkZ-dpe4uq}0LXV24uZVsTANaGD_sOlma04W4N zd>0s~uKImd2L=C^5~p;ko4}Ov!w8z&Gw7?LLI-ok!b~hgmA6psH&OJ;mP`X&)9Nof zB(n}+ZB)(*Uq}k@)Sq+}H?|?*I^9fneMGbYPNh|@AyXnUXUjMlS^v6f-|B>;hdFvr zJcEay`UUB+=puFEKZ6&3)UpGZ+~jydA~%{VqLIUu|k@bk6jUkT%Ac= zZfr+4IX!<)N$P~;VXo4`uEHDS;iQgDKUcLaa>FbmVq5LWjxmXibB-`?7V8@Sl|q2g zICnc#_0rh2!M<*(MYBPy7jh2`cNl#i=hYN{W!$CZNA>-HR`SA9l9uF~c|<33xHJE) zkCUVL3Z0xZ!oLW-=m07VNA`;0#pqcfzm9npu zpQe1GFa-ob?kMZTUuDrOw%Nl|2!$7zFA16`RblkI;A~b?8ehJK)sUVbhRP zVe36rgzWi)XP)!NqilV32MSzimZ+(XwCzeA0dpICld zQp}nn;lNRX*YdsIS9C90@7Gqz4(kGO8>vu z&*W}(-m+{}oOczIwm~4X5NqK#?z@$+jljq@^NM0?K?5X=uZaMV1WW)kngJY-5BEc! zB(`!9D3VK0h$T{ku(D{zryx@U0D)Mm(L?4i@?e*F%BuT-k?rUORA9*gFzH$prUf<6v5u*-MK*TvEdgec=#eYr&ZQEvNMFqGLA| zwh9}meqO(0;ZnKhq^6RZb-Jf1JXF;EyRqSMj(|0>U4$9A$=G;2G2Y?j^}|1TXGERjs_ys>?TGS4wdY;VP(Xk;_MMqBme0^Re|Wv#Y_7;jw}|!uT}fZSY8^q_bVj z2&Rso>6w$IZRik0w`)dvc>Mi- z((F#=VPFxRKxa4=(O$4s$Has|CH6)pPLrwWBHy-eVY!$m4FMM7^GP6&z1`xweP5r` z%0KI__+9z$ry(8|y_%1p-<041aJtg2Q&Ax5a&_eb;wx4g>3i*hqP`DMiG}sM52=s#XB1hnFDa5^J&e^CclplK6TyH_-qTq}%_Pca z_w42c;9soOuyb-u^ttuK6eKt#s}Ai$`NL0Lvg;;ZziI&zx)Lh*cwiZrihd5mFL*z= zCq+SBU`LdbA7fcx?f(H{DLm(2?7a)d z^ci%_b*kkI8JNet_R#fPscd?I6bgk0Y8QhNfoob%xELFePQW?bJJu5;S;h0sgD;YM z`XbK)*XLA7dzLuOovK%&8jUEzhw~S0&HeXK$2-G%h6qmLAmRI!`fyeTO* z1oz!ln>0_VQdH*tZD8ge~PAq2sme~k)ev2+p2*PCygBtTp|ru`ssjX*wg`n%NrtS zW)J1ukeaZuWv}Rl#_tvuHUo+TYPh%z^bGmz0Pe*`5mklXJUm3?CX+ThMAAa_$|-UW z`7It9-23sU>QW)!G0YY5;0>7qqeB8?U0J?nec zm48Y-dX1;Wr(d}({TbVui6a>1WDSt?n4QVi?@_^BcqysD6t?g0zd<>qG5$rj4K54f zCPeP*=lmA5!hD4_{#h-T1?&m%(SukKb*9Ero*53ti6C9h|1OFsc`Cv#kw;o*b%*W_ z+US*I-HQ!jXv`911LfIXxa?$p(ymvR;1+rqvlwO#l-sGL`0dC^)`;J=w#J+(UC+H?%>%|D>>?n%`5tM&a>r7Z05w}Y$Dm`}fK{{81iSW3J>I_?pC@pec*4ye4rrzH6Xoh{BQb0_Xm3TyE z{Ub>Wv3ApxbQW(FxH^`-Z{Tg!OdgWyvMl28I2hGVxG4>t>>xc@7b`B%S>Cw;H8!(X zKSgDZOytE20%7Tu7dw)zPhYS%eB~wSV9PDFipy6?iF)|yqiW-4Od*j1$63DZO6~1H zAhs`vrgZS^ubCcIzJKzmow@uG-^3wlKxVG_45GF`hIc1@pP$Eim4mg$z1zK^<9<*v zf9jfw#rEhJiWl_tb~ zV`?3ze%H;MT^4QEn4Q3q9<@aju$M58%r__Vp(d}@E%yW$M|;F~cs!Axvg zYMfzazF>s`M^5mG*suibBJxYms`?c<$#vt+>dSdfr75U*30cAFW?-c?+-eWK$=}e} z6lOO6^cEGi^frJ?;}@;4@*^5`Y$tMkbItspXV6dnq8ZeD_dH7WD7uFknVT`?;XLf< z1&|F`=(QB>(70H3vAMflY)@Ij*Y|9!a5wep{d>X`eo{ltkjE?bt1vW~$w??xLCAJF z#r;FFHIRzcf-83|J-KUD(Wu{xRg}?MetL~vBg@zf9u=WzFgdlTzT~bWxMtBYSE5KTtLw!NpyJ}Fst$y>4^(Lahy7>yITmI4Awih5`lr|KDYuI zfTy27{mlF>5Q^Pp73pSruYnY)SkwXW24Dd`pEWDf8k%Di!p2#7$7jvqOoRoYu zd5-a)a5R-O*rLACUdlihKDy#U7BLQ0ShUBkP}tAdso%Keeqjlvb>F?+U(<|0i04*{ zR4XTm7^X6jTPo6q8GONv@|n@}R-%w0R`*|xW@4LNPHR%ZjJu^4mvu|=8nz$QdJZZokTRQhQi7Z60%Dw+t2SN zh^N-RVh!8TZJ`(ktkd&4kbRcI)6|^r7%z*vWctXVs&C#vB;yj=Yl`Y7a>3o$mXh%` z5N839+>7i#8)OLnXmYC75lDx7>giBjq@x1%vHDS*sH5A9MD_@b7WzyCNB-lrm((nX zWZGSN-TsF7O@etibBFtrVrQxidpWkT8FM4$6!+UA(nRNZP=nd*j@aGB@PVy*7-kh| zk4?DWWMXpH@i}*OPo^pszSM|@ei|8#bz1#I{on>K>fh6qJX4N*V#;vn-AE{BjTdAd zAS8Y+s`?@op(YcTs|B!K9g|Lr+w@JK?sne0+wUm#4>moQY=MVW27Poq%j$*5`uT(U zD@VP?+%jJ=3Kk&p$n=|O(q))(|0pF$+P|P=q4!9Fu;rSn7J%D^KhAu}Y10bfD&-gW z28(~_&}+W-^*^)esFN^>-S@9}>Zb>9im%W#Y??l+kUnLz>^ z$_Z@Y;2>QqNW{sm>%N~L%#VsYi4E;+f-sD1qg2ze0&4;}+uGi>{a&x%p1BwFb|Y9dsH6^rO!~R=me7Kh4#$?>)chc8W?Z;p5JgGf z&$B-SdV)oPD#e>O!mS`*V?(D|HZ6~wNcsy4w`h2E!bBllq~7=B14DeXi+~1Mfp;xu z&Kv?jEV}f>(yZ5|u^U&^DiPVp_P?Xr%{R6lchPI|O}C28vqJIri_f&3v-u40Y5rpN zB^Wl+OGXqa2=N+NCO*DggH(B7J7J;??4XMe%EVpt;)Y1AqfV5Jt@SyXQfVv$`HJSn+YkQ{&gY}?U~ zLzhpd>xI|XJCgn*c6!^-(BQXbc<)|0Vp1jg=s-)@t0kRt(wnGp`1tC)g!SN@^nXhP zv{Qr|tk|*_ugP#jdI}rcW&YM2D?9XKj{LZA88~*H8%rn>Z#S+pyl&gkALOBWq0O1r z(9;$oeH_}w9Tr{M5H70i+xI$sV)j_$`KTvXdZFmYek&#TjCKY3@ z8A2UVr*>lZq87aaV8*c?4Q=rC2@i1Q>^^dRe9fC+w--Clrxa8uOO$ieqKtb{C zue5hF0C)yCGT;~;5~_p1J%JXU zPI4COcPMQD4K1QRB_2UJQpI=N_v=&EZv88xHz@03UEsNra7wIz&aepn&|H z-m+KIbbAn`i{Kavs^HswfiBISE48{DBa!ON52N9THXyknTjfNY2&dO6Hn0Ca&CM%` zpA(aZvNtH`Vr6x0-62zNYgpB0C1_qF)w}~VRXlglweb=jAN|4Ql-U6jF>py>)^C)6 zQnKMU#Q~v%F>wf&JemWR9Y7`3=4_&L_D?&$Hdc1U{QzAhM{=K^Qo;a&ZVZqnykL)U ztQ>OygH+93j8~?mL8Po+2R46yl1;M57s0sssJp^6Gt-?AjarMyjjfLEN2tZVD(Azj z@^8Wz()##V84)Cy3m!Xdqv&r7!15YQ$jFW<54JJwJ{Bpc;vE3ivwSl38)5`%5=VoY z&Q<`Y>MON;@mL93rA971tZU~p_-DOs(=f*BmgALga+E$bkcpVN3$qbgNlx(L9yP_Q zWX&itlm*_C*O6*gaZZ|5>I&EbH2pzfy2>QIB99D-FIO(p>*(yy>=TJ)Gq@B!M~Czi zNPp2Y*(B(99)V*deh}C>1%j|tE@F3#5xBDRwXrgevH^2W@zYTuIGMh3&nSLnvVYA; z<%&jmV%%zLWb0{fz_|1ETMj@+ zyU59QVKNtzW6AdSIlItkg+R5_v7e>iaAhpVdNnwz8WfLQ^qXj9GKfL%yR+AXsD@da`Pu8B5q30Y9wePYUPLZufA$04#sOgKx3bf+dz_MaID(XO?3?;9Zy{qa`-Sx)ikQu{@em2lQB!IH`9JeISS zVhRNhn}Aqf-U;Bn^(l;Tqs?B8O5$2{gpg7FLm9%z{hjHH{d)4bs#qG8?_%ECcMgZ7HBF}`axqY` z1WjO8Gvyu<3hTy!S(b$*?`Bg0%h)&)04`E_Y8xj>8ftjT5v;4g>vV^A9|@#G7j)Z?=YbK!Ew^Xh#c^5@3@Ho6#YGtfR`j_4 z-5_}8gk^!+Tl*3{&oisgzt92NeMgNs8V2e|x{4B{v5DXftlIXHJ2n(=Of*Uj*(XS(ocxBbRSzT8ncGF-#<%mglB?Z(k+h(Pe>eSIg< zDyB$#vkI6nl?vmN*6}iFh_INI6Z);ksc` z5P6W{UBu#0U0`KymZT`b8`tL(Zpxb*G7y^E3UPjmZj8Ja-}455DJJHDzUWY)hGgb} z=e3Nl%qX>|Hn2ZH$8U`kL(t6^bZN$MRGZCo*N!SaIz)O={>&s~3=3BI43oXqNM11e z=hf+FEbBsD1qaV=5FX)}9R+>HVqE94)z+H0`mCm2VozNIrJA>iHQ5`bTo*ey$@ypn zL0-=|yT^u4x1z`i-l7E<_*!wNql@QB=%Md|G;v}$h#2s*_iKXyU22u**h=twU+bXl z-qmx2hE7R0L-(;G*@8fxjG+|NR2j611Av$rG(93l8li@44QkOgrw}<4kjty!>~yyX z@~AUYSP^^vvHlO|sv@2{MJu7;%Lztl*9^aYSNyx6ema)txq6ga>4xQbe=k)9;yP~G zlQA>*6+92QQyi;QZIrJul#t2czFzBfts%TeoXa(uXyRmP3F)3bHNPScUhD%2>=t3e z^?NiCK##T&=HO$O5Qlk92~9{fl~^D~6rNj?z5mr$$TT(n;CAt)m0b|>Bg*yrS^+2e zmSX)=_A~_t5ADxh_O_izE?N@D&(r%?P?dG{RgbaE!j~=ph0Kt!rW&|}{cOBzW<&&9 zQIDJ|5SPAtVBLeRro#bMPDE$G5kBQhZd0%TN5i;dDH4XnRrVDG8(B& z`he#XIJzW(pfYN$;V1XU-EsBI(Eb6P2{%2XF0%<`Yf%*g7RP-!Ixt}1%5-{54^D)h3M+aM*a(fO}T`!kCA|GB+K50`~Zr_{=0b& zVOj`Y@w;g99WAaf=HTk{zmn!#;X%#=d!e-h0cm2yK6@qCq^f}TMVhgSr&)e>r>n5^ z*%!CQU)CKV)^q=>f_(-LlQOPKcgb=Wq&QO!6xSf^jpaqg<_pW1-?>uTHFMw|i`G5f1Q$HxUcUROur}Lg&(q5Xk zMg%Gk8|s2IIkRDu*ykqDXskYOI9Ov{xhBx25jXlj<7M`9TJuy@?i$S^FtKQA$Dxo- zjc9noD}y?`YjUsgRW{ewc}Q$ZsgBWOzMqdT2@fD8*&4X*P`e^T1Oj>ItUPbH zq_^-$C0QIQ{c~1NC8>Yz+w1Cv;S68}B!4+w3*o?05Nk$#$}PZiv4Fie_<<)ctX~ed z)RX`&^B%xjaAI#C)w#>TG@^r9YtYu96PZooOvV@F^kBQ!uU~ItE6L7pw0GJ=5Bq zK_jmIhgQb|l<3x7K}A<&q)f1h8o1gF_qxPl1}bBA2d;yhtTa(1+S+SXmQB$X0xqGlbxNibp{nv_X?7za4-TH9oieV-3H z0|9uiPiqG(x%L?;JNw{E62*gmShc?JdHcso6+zgCs?Bds%_|%hetbz_eCPo z!fC?WU}5#33=?&{fl0IPG+BYE7v1fFX$tC*v4y}B!|#zy{x-{;i%)`bBozRjb$}#j zHb(cz4gOemY=IKGDW6zC!?t2z%3}xxJB;3`IR_?Mh<{XhO9OOYap;z;NABPKxj)~r zH-wP#-z+EuDJuc%v&%el#(xz}W}u{vRxQzRy@vG1c9{;%w9>v&7=Oo*xi|5u_|L(s zTaCy^{^|szzeC0{4o-ec<#U03I%tGtNc5tO`Z=5UpPib;oPo4HWwdO^pLr>sBsFy7w-;5R881rFsjc_BK1vM_EEuw;kU;SYQ~AIh zouB&pg%04MZp#kfl$tg>3aQQbf<@iXLhC+8q0TpB<+UEHTc{!=++Ej8iE%RtN+EV}F zjjrXI1*~pyVBnHlCUwOVD?Q@(M;zB2Y({r(1fGV=PiXqE{8>%;3Nae&+$<0A%MI9{ zqZ>tkv6%7{pdkb~?UUpJVt$lZ%t^DrzMH}TqdLOOKi3I#7uVzno0xrc@sCE1`OHK$ zk(C~vBpsB_^^J?)E%D)xkV*k^vgVZczX%8vzizXsNR>~E*xb-6xR7zTtn!t;@-|{> zE$GSiZ4*40^=TAqd$wnQJSCR3Z6`!L#mlKcjGthaA}sqm&JZ~6?jJt+)$mTDa!geP z!Y$5!+PG8@joX-lPv8X+M;wUCEv-*#w_dS>K6#F|ZlAWLRNTZ0wUyZV-p@+r&k5up zg_!UQ7$+ZGYMdNK=mG^%Y8$T$-jN@ML|p%&BsI)@_!i0pwd_!qU_X3$9UE6*)vB|G zi<|CC?6MFsAktex@FXqUl$JnGyHmd;^~!c<_9c9KuIH4r4na8WnoQ(zD6s=GyA7k_ zKF>PT$WJKF0Fn02ou75`w!KgbX_mn6#`nsqx)S@ZQvmLv2p1@Q+UO$&`8-Cxk)-m9 zW<}}DfrGE|sQ1S1OCZ2%c`?#T*a>GCY&^3V)U~wMalQN^J!0#s|4LGIFPyToo?zGN zcMF1!zqXS8=_nmmN!Mk>!_yssBi<-%v=2VJmS8dI;LKkf1eb6=M-_b7^3eSopI|vi z>oW0JS&rG3u#xBrOe(C^PZ`;iZ2}w(a1D~D}AdENNGI!^hwD-(%~bxQyoTZ*j?ULpEmCVrzU}7ShK4X zr}?saS4FTo>S%H(h7N6g+kYkII5*em#SOCp#yy$qr#iO8 z&SAF3({()m&QrKY%s|lA#E9Mm)xGu+Awxl?e7b5FAZm8QO=Q>)=LK3rWdt{v&F=bw z7!(|BL3qC|7FkMCG_|m%&xEfSTU{-xca%XDUjsd<%EZ2-azpW=)dk#q$P& zL&0jvgBw#^7^xDW#9nz?{glJK{FDo5w+)0vkSJ<95GTh&nN zf25u}R4O6>;`K{J@ZlASdr}&aV3;!r6W4uXJ}5(gLS2<3Z7Y*nt`oonTedz`SwQxc z1sm-AYr*H@*-ThnyGMlX^y5wW4gS7)o48)<_{L61ubM?7!?Ph0uEdf=Tvef=@rFN2 zeNdGJj@)AzZvH8dodbriko|bn}Nsjz&U4BqfB3# zfDFhq>u(9&?wehhh)Pfel+W3i)AsU5>B^gZp<4TN#rBjnWjuyv-|Y1n7M_#hNL&ng z{UngDM4GVB?6NPAZCLL1QZ7=-;=Mt$6NigJ+~IyMf#J- zE}m>^f|FPDq1-;BX+ylKErC?1%cX2P;H|7+MSBP&@4hGl__gmLC5a&bJk@TOjzty7 zTXL||)w>I19@*+FWPQ=;@vgah?g{A?qJhv68BOysGp2A1nzAd^n80@7twu6zKIcE{A`m zv9oK$@~3q0eN{g?)Q;{E&%S(z6+|PJ7u%P0MuSVxr?e+!70Z*Q!_?Q3B^ot6PwGRQ z;g327*y?Y52hwh4BC}D*$FqceOg(4IUNcxr;?=6!3v^B;?kb%28|%u>MU67ImkT+vtNV~0tiX(=D@sV@ugx>09n zrGsw-1itd3!ge+<1RsQ2*X67O^byCR(cSTs(}PRERJKi@PJ%zy@0J#wu!=hCc<2iU zy8>0&gP|p6XgEClCTUqlvrVqIwkstuFQosF#B+DEyI*v|4%>5wV-6cdP9Rj8~h#ibGGWg z8$>{mjuESeon;)h10OK4Dq}S@yU{C6m-5KBh)07X1{b2WG9-JW?gl_&*$j5xsX34( zr&*~ovqaBmJ)tve=@M*U(0BZtA`st@#Su4Cc+Hq=bE?5!+81gF(3hIj8w}r?h*Qb{}Ce@1#11mQBK|x>CO)IR3HbXql zf~@SSFc#+SQzCiU;`0hI@X1A>@P-!%gF^l4S8#Rhu%2+9tijwDGn*hyMil2oVRR^B3Z(=f$94X?Xb%!u65@s0p z_E5*@f8R+pq4QkjM&-rBXN6jYKC<}X>(mpv<)%oCxc)kOu7!xQj_P3LpJS>kUaG@_cSOlbrJJ4DvYv(Us76%;r|@oJ=mfh0?|rH=z$o4|Zv2CJy`}Nu zTHA`zsFS{!el`l~M18cB|J#URb}y3u1^@0Px?i4bV)zNCo>MiHl%$aDe?-wAjW;2U zFPSDVSYme%j+?#L6&oy(0D#1LTJLMCkjSMdbo@a~Gv8SpR-6RQ@BQjJuM9u=a#W>Q zl3fJIbL)rPabI1^)9J@2H+{Be4f>w9i)#qHyF%mE9vSAWBPh^q*T9kK!a)&!IkE+nAQ*B5p+Tn`wU zD&!VI>er(HP3tm#R2+#)>`uOhm!7z5-_}OS*CO4t`3oNbPp&We2;4Y<86hOX2$@2w z>Pi5rYu$qPP%mw4QaOXV?`8XfBu{)W`HYGQ%K8#4n@nteu#>0zJPg?ItHD}FnmhxX z3l4U(yNO5He}Rl*s?z*<0Zt7ka)bcIl3tzwPam3&`xlEQEJXk-uJx;vXykjT#U<_{ z`*257e!Vl*Yo2LAi8(EIT`{dD!Y7?rp0dYlhFQ^Rpe2K3s1?p1j(`Jrrzx7eoVrJH zdu3xO|#ovh`$P< za6Yup8|M1{3+~_mz#IS=%a$Z`@UYX4Ggl4cb)gjJnRRfxkQS_PP`rJ>1K%LzU%g;~ z$)xsjz8W8;at>~BXAdr8`7KKeX6Y%3ZnnXtGz~K{3&=dXOH8Kos9w3IEn6T-CjPN? zl8vi?UQ!VK^+%Z7lK#JYm}N=WCSLIrc4?&@9MPgW_OLt3lkF0CO%um+HA%k}Vlj&{ z43UI8a8lP~45!j@g@YJ4tR$)Fj1Qg1CFjQc_gVKAvkiJ%j;k+Zgt@8gBs|h&(#Z>< zJBEc+66*Mj4Ld+YfQPXJ{K1CmAjJRIL3aG+nUmh(pn5$Xfx9;9_gP6|doNXar{yMd zx2GzCrDw|PgCrB{2W_+G-^+wc(!O2MSKy?b!d|WvznFNU(RIB=5(iqF*9xB88J-cA zN5~eoZ0~_WK$@dGl2{v@)hnHTt*knuWUKEkml(jkUwLj-x(6vjJVEW{JPTs!h|`AR zzaH!R7@C{iGW2I9IG^DZwI%iCJfE(tKID|v8G_i6C&8Q9#GM@GJ~R0iy98c`>@n* z75oGXD3zHOS7 zV4{`~Ie3!Rw*xYxoamSFjQPI+;MvC`r&PWoqS<4o9BMyZ|#k;6kn{$7y=N@I-)yZnGW zR`3fe!@}e#-r}Yb#gNa~qNfq(y-Jv)&`-}w#CTc}WT)<4VgF2q;OO6%>oIs3hewj} z0mzh2kkQGvqN76(!a$Q?N8j>Sz!+)lNNza5iZ(h?QvVb{r^~B#^`^X>X-S;*=6B99 z(%DN6$*~l6i+@z;rslv2kE?`00OKi+rGiTi}=ou=rhPx0C%9PeabWp%fK+G$0m^A>(f z;2Ds%a%l?cLYg?raEcPh5AGneZl4Mnoo3CYrS;KiqFioCx`jn0zZ@FGGI$TZD9=p$)evN8m2yArp%sfTP512DW!+ zp9bCtaZ~b0gRD+1g?MmdeV&~`f@$RjtY=!t#S5EPHjHS#es(`Is6g&g%j|S$`}ST- z8=mC@6E$?OmZn267lyT4kP;;O zBWjcH3|vbbaszk75q3cp8Zo`x>wC=Ao}9*1T1JD2_Z)slzWTU$%}0W7yf5_8@cOIH z#&ff`$&+wwNr&?tS0^K#0-kH1s4%uuM<`)i5uO8p>t%DRC&K|NzO4tXTF411HNI)I zD#<;SHlWCneXnf+maSZq=|CxNC&)(q|Cwf9ZhJ;{Pug8c%tm0HrqQcy`jKCSc~;>Y z9=wc+aZw0WeiI?5tj7>co9HFEcA{Z>80IRTn&XJQV|M#C(HC<^p(etV8J;(bEWX-8 z3j4plBZ$A)==H02)BnpodU;7?1}9oSs>t)ine2<%0R?uRgtTy?M_vQP*30dnv-t7y zaa3t7XUL}Rh(maaFi@Fa?!%u{Y4~_{_2?T?Y#Y#udDM=phP^@kNA5%9`4!4xkTA7J zl%snF5q!=g{=Vq856n1`@ITvDnXE62A;Z;KRUyu<#%!%8e%dE{W_Ozxk5vEs&rBLc zyJFRZFsYFQMX$fAVg89)$ouL{fIFsn@0m^6(F#6nL!`kyrd1=cyIgW9q<@*321|Is7(iC zex3VXTH2p9aA*&XV_VdrVz@odqimaFH1jQ57OZH(^B*Z)Z+Yv0F#VJma-Xh2X2-oB z2ak{#545%XXmPvqr-W{Dlpcj35ob3?L{K|}h!Uss&q63d2J?B4L4PvV$1BIC$_G_2 z&jMK_+$tgTY=-0?0DMrDiig$weg_F}YqmG$D2c0G+d)P!{4Xvv_xEE?52|sdEvxrp z&z|$orUTpM!Q7nx1!v{fq6YB1a|;|i0UMTrxv23|Dy^R5=xk~;BYGuQ{q9(jya#Qr zJrP;R4!4*Ta95zmz?c+DVW&YoqR{|A|6Xtnn%eaS2PMH06^T9z5%qi{$jE-)5b~ao z;RW2O$s%lieRn4LDli0xpgBGU;!(f4Me29y5a+a(0Z;z9MBfM7T{EHr-aZHU{h|Px zx_=ftNjy|haC_rRy|I=maW)qIzj2SD^#BrlFK*9UKu^TKNT*TlggJ*PaL0Y9-|@M?W|qp7r2>znN_rN1i|r`p8V_1b}}wje-18@sMRt zYms(^M@!g;HFrfRIgX(sGgqfgjCJXg-YPdl6rV6-{291^fp$svTw}T4PkCZ>g2A^P zsy@HiaSHLZvN-R~rj+{yC;FIDKj7?acgnNhtGVWvw6qb~6s8t4a&w6Xf4|K3`JZ}g zm&>eL8nzvO$h{FXrurU+USvNd9*)+rUrr7DqvzjRWz0=5%_ppWW|`E0m51`(NcVq)GBHdBScB5*DAAES6AfF`_f);sqK`K0hlN9+V_JLudI{gZx*GtE>Rw8Inr!{*`pjf5HJ=B#?4lOo&2|Z*WLxtn+`jm*G&zCk9+5u=L0P3A3JC zVqLHQLTNMK(f$;_!PXR`%pGPz?@59~O@XOQyx-f0w9C%w?I^iUx%SU3kCAz^iBGqz zYx`8h2ON7#cbL?-(Lu%Yc6a^+r!tlNslFyXV%{ z7jd4U0C~7ndJ_!S5<$@UL@|kclzXhkq5R66v7piEol6P()o{gjCWfZt?2CPtIIdgP zg(3dri(2hPL0Epx0v?_2ByroqB9s@1yQ$2~Cx0_09o=5lVuHbnXim zPh3t^-5RzJHN=8{5&Jw<#j}C->y~dtOE4oE5^bJR(Kc|41sU=C-(aMjuARIrG5oC? zY4NGlQt<7oimoUG`(_JlwJy@b%R|mf)V3%A58h|rRE`k=O_kxsw1tobEVppNXe&@O zyzFglXgNY1dz5dsc5tg2=TuWz+AMP+9t*ge_Ix)LmZc)iIE3j;-j-P;q3$c5<7f8( z2^F{0_13h*1MC-sIbfG4lw^S6nk=kt-e`lNV*BOMw3}L5{O^SjNVz<*sRE!BRUKf> zoml6SNHlhfo^^j(+BlVo1h%%k+QeM|#}>0TnJnsZ@$edKHJNn#EryG#Nu#{et`N?8 zfWeTo0Sy`@38wn+lN7~5nq)mIiJf`Au@mEW0xQqJ8Wq_(m4126Bvfpx<0z2NU*)-Q zX#65=wSBpzuH_xaA={NH8G7DeRw%Hw==MfBY;fS~ilJA@^IRqbtbbL5z*1@IAn}@b zH?pX^Ww8fub8dsygpY|1)%jEV1rlxMx(*Fu7Gt%)pTH&0g<1T=8&!UW*&`<4$YyYi zB=!=s28xWHe9Yk}0FRsfQ)FFkkm?pub~25sBcSNUg*ZJ&i!T7>U)sqAJ_`V2Vgm?x zY?Gg#-K|#3B1`}_in$^bO)xsD-`*2!LUh~rD&%b`Hu-VUP*EQ(2g|N^Voa?giYok7 zUe*(+K-SNa4S71glE5zc z{M(G0$;h4Ptv2Tyn0F$614{ObHVAQbz_ir$5EVLF%^g>F(>b-B3v%O=}+&!&Rttt zGFWDszKVfx9OfO4D&OJw4Gc2IF3YxgOqYVc-T)inj^a46nL_e9dAaN6fF%7s1#KL9 zv8XftHL>4nr&@2iG$zHcVE%EZaCG*tMJ%`rz=1Mb)Q9u^dwnI{MB@XE7sGfz&sOsp zUQuaHNDvbGD7moCZs$w*MVRFVwfLAm%X^tTPdG+_(Za&43QIx8pl=CZth5x~4urT9 zEazHUue_5YQGD~`d4YB(0pE+`#}J7NuW>3uMZVdNUyp&O;*ah=JaDZ4?Ib!Z2$qZl zBW^JCe%jL$`+_kI%7$aEY)J``l$PwtsXW77$c*g>jxtcgVYmb@l=6g2!qaPVEV2#A zU#(?8#|qvrzUlQ}DmT>-c%1kz%TiAN2;U%~%bmu;2VtAXCk{AJX!$@PFKLuy6GK%^_`b}~{&4K)NiU;yX#mRRN$joWgF%+@x z5@qV`cNFO2ZN6J50FqQ1>g9tl!6p3+A^jRbs?eiQ`E9-A`(97fUTZ>mK^`4+kHh)f z8el5Z%HV#7G#2JDnoJoC%Ytvu>DcHiS8hG{WoG99 z8Y!p6=^z9(v0kinea4`Z z(^xN9RsspU3Y?wVzY2O=3g z3iO`z&FfA2Lsqt9-VOPzlm=&BK;w z!Wf}vk>AMTV>aS($?&%U6>ogoJ6S=FnLO!!c$pd6nQi|AgO=zJuwW*3{CG;?70Bf! zU*j?lX^gZt)xe`87mM&v5Ca^I0Ym2seqBN1-pSALQhAAsSR(-;s(Gbk?Na)sMZSwE zkX?VVfp|`UVrKBa-vxvB-pG38;8&lip^lqvQY+ z{K*I)^p+jryiS`!NeoGMp)FO|MxbM0oZB`h+ZbwnXoLtS} z%Ffv3UAoEn?e~%UU=7x*scO*%AC4oalDG$(ysNN&;gN%p_|=C7Vd$qvw$)J~6|b-z z8o_xc$;-8cirZPa4DD3+rBi)@{`+cnzbAqKhCNEG;FWp#94DDMc2qb(z@{LyapwG98OJtpJX>?!j9Qst$rfh-1xTMs9OkCt<5KVlAMZl30WXIBT5{(*fIMuvSWRUkgezb#f?;r z1%ECWTpu5!@0l&wy15zTOe=7Nk8kK@(%H5qc{U<&2iBaY*bdHD*PL5oS9&9B7hMT! zZ|_nVOG7_Uo+7q_G zZ+F_2MA<-QzGtn8tuu82$%8f3s{Jo;70^B&7&M}|KsV^K4|nLpSsnzSh0t<$SR;{#DItJ>1|+%oM#h|nMGPZG~G z77rn!6c11i=}EG(v5nCG05iMHzFOMeVV7N{M;@ltltS?{-J)I}-C6<~4h(SeCcGSq zqOGr(kI9ShAw-X)1_B4l_bI#T60J5+$jzj+f=ca|6~-!^nd)KO^kO#5uXiJg6VEd8 zRrl8;;-jZSEJmBS)h2HRQvH&$I~00Dh230uvJ4$OGs^cNWb=85isV06L1)37RHdmH zgpCHcVBk6scc744l~{+}vYm>@gcMHVzim+s9!f1S{eCy>Z#G>ckm+d0RdcHT3c)Ie z-iqAj+tQ=CJTF_N5%+$e0AQQWI=mM*GR2M@163(D?**Za!eb?1Gij&zE#W)kn|c`0 z-an$Xj?zPi>tkJL&1hLXgYno#kEw!TG-ug<*4Yvm z0^)y0evoA)&;6H!(o68W7y4sXXgD~q7zzF<5b6@y(>YnO-g}19+-wGTMd~FhN7ZLn zOkG{#WWoXaTlO;_AZHwydbX(=5(QG_+RM z#Cv4=a;)*KcNY+ThATKKwRdaj@l1M*dHtz%A(>3EHoiLm#1)|h>V^U($IcT424|IY ziaTqibb7a5<3Q2}+O5^0MQntL3k}jS^5flK~r|v~WRyh9j?s=+H3=pT+Ob7+#p4GL-EX5$gMhqcn zfhJ-E=5-&5ge=-D$-NI{*k&?RnOs0!zG8E}Bt&mNo>Zz*83tc|&>z2*2Z`1J0@J;ML8;^P(rK z`P?2jilFx5^8}4%JUTqK1#=^m9~o?|vvIDfKQmhxu=-Xj9eR<1#YN*qMrX6=kcgiJ zNR(F;o-Ku;c(h@QLr%FjHjOa4@ZS%rEgGV$E=3{hO_m1Q?HuU)UjssyA`B`LC=<%h z;CzVF2qR|a5q2R_Q!2jI&6N#5fH`8 ztjP6|rH(E(>-S983DOR_)N{rl`%-|;Ok-!_JAG=*$jc~92PW^atv@1a$*5NezGqJ( zhV8F(xOv1+2DA1&G+mk87M*efWvi}Fg`IFh1Ic8K|5M1*)%i5ExS&lHO0g?)aX!lv zXS|fkE?IQatpaA3tZPJ!6OJVWdybc;sfZ6g$|OzZel+(H+h|%3rh==b>mls)oRC}f zXcTm$Yps$sEG(N<9@3#-5NGTiB5|?5ijhTf$Y6Kl)75U1AAKb?O42c^$BjLJ0`F_q zkJwSU&K5?R--}%Mr}uf5DpQ59gOZ}84^6m zaZT(Z1@pJ5rJD;Koq0ZKGS_RhzkS3jg9gR%Q@?Petb_Jh5Ei8)zR^?vc21JcQQN-% zApIaJ?9XklUdee#^_HupB@!RGx)7d=#@E=&i7$E7#9b)nsZdgbb*~kciv~U>pO4WU zOR0dc)~DI`xl*&b7bZY5$TKAn(JLokt2{Me+x`j3G#E)D_}WE8jAo5-x1de|hTjc< z0_FS#8eYN@Tt*r?Pa;ft;+G5vIXTNWSRT71>Kpe!IH4Y(LhFimfwC+{)v!g&`*o)a zwB`RB9Pdmuw|~)CImet^VzdMZzN32H9R-*&m&Y(D$t*_UfB#CkD1%)ey1-gn;?H|E z*ESZf3k@v>K)+BWGR!slD9+}0^DkTPS{;qo+_~n#lYF+j;a(HHZqQ@xUP)o`D@3+n z|1A>Rxs*sp@)~7Ate3=7SeXBQ5-CLDWiH9M#0GfX&v&bD)HTAnBs+G26u-Q z{4GamS9j$4l`>#k=E=7idy?>j1E?_l_c+6;G*8q~-F1hb%dMekZ41Xea3-4CT0?tm zQK9Vs`o-QNY4O4G@4dSU82!%eXU*cKSLgv4pCtqAH7sQtD^tEe^*T_W&82GDdvl~L zj|2;xW&x<_HJs6+3_fIvnHMX4XV_@&>lJPZ#+yx3XnXCk|5<#@hZm_b%9%!`y{rf5(_PNoW%aeQ%?JD-O1Yu3bq0}@5!PK}y3pk#SHxLFW>vcj*ilrlGSBp6 zSwGQaEWcj0%YL;m%V~DZYj}b=qsl}Xz2QZ9I1~F>b%VSTRfwUt@;xgik18RmlU8i) z(wp_BggO}=Z8Q=B`o|9MC9`#S=5mxnUPnDLAzJkgt{`fZ1y|b!!(hYmdv*Hu!KFqO zk$3GARNH`)Q`x+=7Na9Ypk%}+YA43H*_VYvyo%#?U#xN|^c7u>Y^R^Q4jJ5wc}V4cd_1c`xSNF7)7mflrHJEu9{H`D#=K*J(R%SM>KgNE{>^}?An>y^&MW>y zK>sdNU767|yZO3TjQ3CNJ>y33^!&Il-t&3Q`m&=EYgCm)Ut%J!@w#2?1;QI)&L`-t zL=^1)>niZ@lJE;*QwLU}IhJN~r=54HftM6tH&t$pZNCJv=dD9rX+~xuZHhhd(oaBB zhXlHMO-BWiAWu6Yvm!u`86c$h{{$9KcySwZ`@5=Hk*9HytG0W(a~u>l^z-b@9_NwN za^_H?dUe*Ps ziCGjx3tJ(#OZmdc73e`6A3#Oqt=D}E4N0UTs`VFe3kNzEqp0YC5I07<+NW+2p? zY?us`6ZMo~&#XH+Tuc3(u4mJ`DiyOa(K`*O3F@cY2Ow179s21vtK-&O&ZFu&CcVYU zSGl-zrGJTn;X)*sv|b*YMnrF$N~aiIpUd%S5-mdHe8A6k8+e3`kQ{A_aV}~T-=~O# zKm0*MqQrCbYe7DOMw`0g-})bnzhqhacfkSRSP%9Jg>;1Q7LVhYEWr9kxuF{}A3M?q z)xW4?Lk-f)3O+;0w+E9oipQ+*N+~iI$%xG2dATA==99Ck5R-(AF#+xNs+gG%QnfIp{sw2SCoKeGP^tY}K)+ z5#VLD+=o*TGFP`_$S|Y=9?B2^2ct2Z2jrbphaALMh@_lwkjk}+(bp(e>aiE$`y&Y0`ZI~A=MQjor3p$Xc-33>)n4kf4dIgxSfS7^>)E+-??bD zCckdVp-x*jW%jYWqJtAO-Y8rBWvQH27;%ED8k5P&Ea%)VTO>4oQVGgr;P{U^64Yna zVif)NR)hE$hF#r5NlPJRfvsb`~cJRCyk>)k~@a z8a=#H&q}En=AD^?G-22fq{xH#_R-%JB1v<@I*m zWX(eBgd_WhFm1qlK7NBg_ygCZF>V<1#UgiIhI#k{0 zj}Q=~&ahKl(>5P*NI~Wo9C&7r#8!fyvWX({mkbG2HIHH$8g`>9u-oDP zF!_M^XNgbJTq&B%+*$9y=|Lc6bc}@gHQMUEk$A=4J;4{Gwg;bdO)3*4UfQV}w;}9xdt|FQsB15Z(;13R2G*lPuE~r{CmQ7KZL;qhMvu zW4YGG;=9niOiAnQN%mDGttvQ+#do2von7p`nGEb?8yhD7k ztM|@GhCsD-H2E5<9-uVEn0evZAu}REZ|EN1ioBjoEbd@-b*s|hzqGdVD(}n$_q5wd zig`XzaD5G>m&C-24l!CUj6f&{On1hDd!g1Lsqb9ZDg!DqX9UkvdC^aQ{~o?$mjRYP zPHt9;Xh%`3ua{ezzYk~$DAV0TuChWxI41GFibf>e8u?fn=zj6c8#lU-T?Od~R}D*% zLve;DK})uoFr=9@SFYLbnmULih(jcK-~<&1%^nt@=!CRht9~Js4Hzk4L~(nJV|Jh2 zW~if)#7h4e8*b|cH*s+Xfx32^ufcWmDf#JmAW{8b%#8<|#;yr+CxB4Ggl-PJQPwC^ zERC5Wc~Q8vQu#o!o;*Hd`B?$CDj#ikqR(dVB|RzY3SzaQnL>|FQh5?Bu@y!AmF`}i z&S^dq3FnBTfR~R`5}D!dlFVMT3l@X2ymwRgt`|10u0KdnQ%9YWOwJ4Y_bujMW-&x% zc0pu7=56y_6m>F>i7-re$tzKqW6ll2rfEyRK=R{~hs5S(= zW(cY7N)MWAgbwa;kZPu^vfUNg=NwH$jU}HpEa-H8_j?tg%hq*(7&{U4R9B<*pWuuL zktcq(H0Ie9p)SB?;MbcqESDeZ0vSSKn{`WZ1LrPkq4(GD4RHq8q%N5&0doh?hU%ir zvn~iw8vs=NnACQ9tqSR)Zo)C})dg#*}``d-4jy&WTmBb#;;?+Z5d0F}vs` zjWEW#%92)&V{gy;>vSt2(NI0yj96Hzz-3%=`S=1^PzBZ|;e>iYG&hWPuHFY`g{;xeWfv zRJEbnkU~a<^qz{hQl*{;P@$)bqqm#sjcv1V62lN)AQ;{0T`}H%AuUE8o;j=u?%leh zB1PtF>8Cufa4ODn_J#^=r0mOf5>5(MHkmY}8|Soo+VxTM)0v`53((2RNn8%iDa34; z8$NDh!I_Zfhi!tV3?UE@yp)|aP_`18FFwLdT`7>FK)!Qmc=-)6smv6GG7xwj8jnRZ zxcM_iM0D9@BkTXU8h7%fa70TxypP=HgU%bn1ZzYe>Xly)a2R2P;cAKD^^*V0;-s;% zcM!G5r)uab04*_t5o%KgYg|zaBisC*mdtMPoXOX&PIN8U`H%}5L{7A|t&~jbiU-H0 z)!d|;O_{OMjUwAFvfjjN=sdAFY3D{DjL2;u=Pb-ObOvchNgyYnyb#o;e2gTBmPL(5 zfid!Q*afXXP7P1L(15SsQz0jrFL+I>YEmmRQ90tPqFFh!<(Y61cvfgf+yn;en)~-$ z5d>P2fPOH@5LJwESO(TRC;wtIWma=%k)`w$ERk5=!OJ@L*J^p6B;8oW!EUt^qj8@P zrIJlg(Se*z#0G?tSe+dM{Zsz$Z-3`1W=>cp@ek11K^i<@4^2a8&2p4DwS}2ak{fxt z3U&RIyFlS~vk17#XX7mu3iB9DO9Mb;MOcm23jPOKhw-^x9OLpOKYW!g_gzpO#H<$R zyFDF|q~6va0$bhbky4juUowu)UJqSp^LjV`Y8&23zR8?419zat^Vzu;CTH#mVt&xf zjn7}^aT!c|!HN<&3Ph)^hRN2nIm#k~&COk^&v5sZeXrM+1(#JXRB&$a?)NY{w@Ia3 zs`_+0b*);eX}GFn*op0n(XlDo+w^H+veO^`EmJza&pmgweE{oliUd@@bJ}6aY!LW=d$3gNS^Qj1P6djNC!BU zM3^uuz%DebT4Y8=iDEvb8Ok_K_bU|<*nay(E9XVg->e4OlENR~ib^CEGOntMa@=rG zGWG-4(Pq&bKddZnYX1e4AfG#v{TRj$4EP3zj6(}RT>C)S4N=`kLEUIt{duC z(;eB^3QAj<=P;mYvj)5y$k%** zoRgSS5#*u`V?~_~h%_Bl+zno7iOV&_jv}*`=2dX~#v#i1vb!Fs3%&mcr;{@xU08Gt!wn#i|-u z_HyLhD{D^m0^2PpCoL=aSDtTTo~9l+6^7aJAVSu-JzgDs5+YUyh_qX zu6N~&P+;bCPBuUlw}?MF_sAvT&u=|L(Afq&Cc2vzi+QTM<{3aUD+wD+?n>d(2Ca@_5$jWzyCeJfrZSF{ySTNUDI`8ZFND14JT;o>C^f;}QfoewRlo15Mv@FE?P&o&sPH5BRw=E?@@Xv`gJ~MX!$i1K zuO81&2hVmf!OMH>=OVlCsP!2bCe4&qP8aY?tWGYwNNpDz`P!kLy5_gv+0Wdw!eEgOI{rQ>0gK{Is!26uDE_xMS#y19^DV2p!{A<)F zK6Z=_HAE!fnKC7)I|pcwQeZeoI4&P5TzEc=izU`@o$ zXJ)>%=cp#oPtso2jC+oHJ$x2jB}D`{>JRhjlu1u#aek@Hm__$g#XL8#HfSyw8=fSD zVU)gkf|>1%Sh8NWpdYsCM8-LZRiATHGeeevKyOZ`IPCr7wq}yF*Vy_PktVW-hNCIO zf~#8qMjvE);K-~1?La@ZfJ9&mm5hgety}Zv#BraNi+`d`!8Uy?9ygZdi^NKU^Rk6O zh?9V@F5e|Y-D~bTfIV+`vbmgKEHjPFh&AJ??`fkMFJabh^di`V4>kSHn0qCef8Ut1 zcSEf`l`5taHxdDdG_>fWK@tYpUCAsQSq->Tc<9Bx&?W2Wr5-^%hfrA8aCI?rV$~_C z4#ZsayJL9BpGn-4w_r1`7+tn&6oN_`c`bD2uvXgIGEh1r1wBS-h&SsY^tujLPnROe zhLd2{vLt~qF6G~=He6u~P+9Ctqhq&yu6`_GwOMbA_`DeLl?L7gl@DNKGWK8-kZ77( zjg$`;pSzEr4F+^0h=2tQr^HN8(!x8Y6%=VQtk*g662~BE4OJswxD>e4K08#H0^v#n zDxsD*eZ4SUGo=;X9}=WV?SpN_UJPBx3zUX`m#%nx;%xYuz909j1^k`YWZTh4!&hPQ zW%a-ODam10)`I2^AT~bxG);+BDpIns2zm~Qp7&} zQ?yHqM(<2?NdMG3b8kJmw3!f{?r@rRdN+bSkD22Y?avO1on65!T|1&7{Thj1pPNPa z^ObyzC4@V|zIQpZR-n(ZQ;2oz_<5*V5u!HpIxYreZjYnKgCs1@X+mxDSo$KE1wPk& z6f+#&vea3~8SG13XMyk_q2q?NH>Nr=lundad0jszV+bh?k|Rpc0AtBQvMIp znVuxEj9a=MS<@`Nhn|e{gWW{r8~QR-&vX(EW2Da+NE+u)tAW+Dv6y83ntWDR;Zq};+u&V5;Qn%+ z2S1VvjzPr&3Dg6-%g=^AuQ66t)67~o=EC1GivE6IK85eBFsIamRH#gK^Ajk=QT>k@ z?eZpDoLaGvxy$1InL+##GyIZ;X6p{qyT%M|(Jk5VMmaaFuCW6BHQhnS%q0$hMvK5k z^Cwj5I2s7blINl>8*!AJtHq!=x5FOXkUW^{E;Nv*3MV0rtV2uE*-ha6y0Rb&f#fIg zLbfU%n&1sNH7ez4yzIloDKzoBHLiUBABroSE?Wf05O=eG%$s_d$7wh0OfA>bqwnqO zH{G1!)vE~9`n5Rm*his4>eDUgLkRblGcQFRg zDDI~%^wuY+ed?Tu87G_y_rCCNx2l8}v~-_KhK<#9q9pb`O3M$15k!7Oh)*N++plXH z=tz|2WNN}^uaG$Xo1@@%9 zRo6>bI#-u%1bzY7Zvxb|2f~l|q-^kgDY2oHk(d{_HMSOJyLkwL0)TTrYm#4LKHdXaCibLTFcR7?f3Gvn$OoH=Su&!RaKI)_M#KlH* zgDMc9lk_Rd$YzHc>U(Y?PtBLwwPmPMg5UHvI^!>Z_d`9xSpHnzfW1ny1M7SMYMc%vplu}yM}EMUj7m~wj?O%MFYiZ4NnU( z$n}+}fE87oEA2A}_`N(f-6FmgyJ(+i5}QMo33qH$>l~LfOaEYKDkCmw)y3AT%(! zXD_2hfYW|%D1fW3FE||IYZ_M8-`is&1arhw2Lr`5& zIR%6662mAzMTE113p9Zf55cBcOINh_*LRXgD|EXoV)YQaWu6YItf#H-e~yipss#nq zp0-;vj|?Qul9Mc${4k-pke49WjfnRtftG>-m4Rt2BBDcI*@5RIbhUI5( zpvIk1{zlhP#w?SZ)Q2vp!)co2mrZnjBT-^iylLXX9WlNV(+?0o)WPS+Bga%$!a172 zV=&nr%)bN&wE5z`mY(mwj9qKR;>lMARQllJHBQ?1UEnDYb;3sZg2)Yj{jYo3(dMKB zq;_1{I}UtMP&8Cji;AZ?JtE zthlzs773T*9#AskBDf)hI)#G`Y--rXPmXB}=Y>=XDLC+YIpt@I-LVI1* ziV+U0=nD>pH0SU2&Fe8X^c_GxD@Ms?q#{_9c#!|B>mI>|ry+2WrD#{;9NLH+fJ0*b zp$_PPVmZ6$IqOQ|&f4;5k6RLIRJ1G5VwZ|_hVNYlcBUVx%WMQSx})Tdn6dUO`jPqa ze(PK40$tZCNKxyFEYK{)Kdp)|VrVB#&JmqVKjAdl#8paHqz>Xw39bb|o^quiv95Pi zuYG#6&s!%gjEAHKtU!*Q)1& zA_b({xK7vh6Ik#!Mt+6Z&!V%eh>tY!DaRCf|G{~Ftcx=CL%jC?(GdLKGa5G(>MFo` zpC|rxtsQPS!XNwSEpI51pUkGZ`G$v zX-gn=JXLMJH3)#)<`yL{@c^HpEm8j!N_hQH^k8@VB6ZI$b776S)Qg1pQLvwY$z%O2 zc2C57HD(+cR18){qSqil?Hb$qj}(4tU^4R2Hm`r?jKX(W)e+1$SN+cd;)AT7vz)%n zIFhJ6a{<$eoa(+lA<7_@fhy$j(Zl>sk&!W=xROhK$WRV_p|d{p(tgrX4`&%`Q9=3v zr=}G5bq_U6=SusZ@G7i^fcYYzIpu8A8qN_A_C~|@9tq{(NJ;a4cr)HcV*U}YIAplA zJ7LHs!;tDyWw^vw2Y-j5O$c+eV&P|j+VHS$trX|e{yWV!UtGgcG{ii1R-@fKE4!qi zcP`F>h$HVK78-RVcrmR|Z;n*nI%SJ;6!%>BK8YnQ+Kj2U3w##2f)o%^s}Ns2roM|5@#PgoWVHteE6J#x8yM$yy>qkX5;x`4UWfxJ)8hb{z9| zQWJcuzuYT!IanPzOUKG%LXr7~=IR`2?|3-M!^oGhV(Wd9@!_AS4@{D?;V( zSD|&VC-afFjQ=vR?{oQ=#>WWI=j~MfECqQzpLUN>bHE~ovY6$@Xv2|FrLyb{jO(`z z|4`D5@=u1@3@W@}f8iRPP_B|R^`g;#F6NTrm9w&=DL(^U$7VX0hJgkOK#WhB9V+6e|4-PMwP61jD#= zYn*%_TC!!FqJ8CL8CEjyiEie7r=(xm6ZZ!2CM~kLE#8dh&p=RTG(^HAl$sx*s-g!p z7ar2cb$5z{+qN>Mq@(<<~VH&E)oC zE|md>(%d2i25&oyZGR7vetW3mhLUZ0(Jnef+vV#Byl0~_P4lWx+GJrp%$Kp=5UpUc zX(2Jg4V}){G3v#R8KMJ@e0lrUm#Ev>pq!8OWB$%2z@Oh$9OX?uvi)MLIO%_1cWT3s zgP!nJ=LorDL~-$+z^K!iLbKda|BdYEeGNp z(!X)8ClsclHMYgEoF^txWRQEdAYeP5xUuTwNYnIXh)I1uHE{-3S;gi4rHKz?#c(T; zlD~mbTT>y1FnsDmHD;4^eYmBh&Hha;Ix0E=@Y&x!vnN z!RoS@m>7mK#b6dk^3{Gqxz>YE*oF6lC6JwG=VN|V7bPprhjn(?yVZ4Rj{cZ08u_cS zd@x=l-K1fL718>~d~UQ<^+PJt^$uTFM@^EXIZruM&!GEtt`vj3pG+_EIjK#*n3^d< zG3w6tP1ZzcNj4InpM-}Es=*80Z!=N4l|X0%PzELWcUqKR1O>Um)od`pY4RpYsg*SR zUG=KQ#ZC#P8Xk8veuTItU-a+^21M`6Fvf8=t6*{e@?a`Oeo>7(Ph{M}K|?~fOWwPE zFW`iiy3Fq>UZu~29z6{WXRq2B9T(LG?NK$*An;}FbIk1h3R}92Xgg6*jEcvkCR*&j zGMRzKD@IeApy(FbBx9Zf%`b5jhO<1S6|bj2xG9|+mu~g((eefKj(X=lX90cfICqjO zobE{;A^|y^kHq4)z_=W7pT#dLN+zUcwG$V!^5Kg83ym+D-GUGddekm*DepyTt;wb5 z&zz>gAJdGhyGnehk0ZtwPwlP^r892Q@@vth;-~zIc;zO}a<1fdqYO?W_r(AB5_-DX z%g5iN&SkdqidtsIUNUsz>3lW({vbFbKl-#ky>?tF&EWtX@RhEXKWpbX^J| zG!uOl0K=gZPk-1lc-%qtm}{w$^jOvW`#9(vYQD8UUFT3M8^RA9jSv}moZt=YZbgwE z!q!_UfttrpdU_$+&OtQo%<zO0DH+>@x_)mz!w7&2DbLUDTAu-{c`kOHt8a^bclT>)@a8&! zP+xHCveoW1+`#jzJO&BK3&8;SO?5OfE(_fcLXIViJ6u-_Evc1A*m5vcYEHS`U6sH# zlX|YYq_7v84F^H$8B?l%NsdFSG4TI&a02`Gx>oBGG^8p20-hW#nF`%k1g6#HBw~h~ zIi;k5E`jz(B4Zr)o)ia_)P>)K@}&_s%8IDgQyV8TH$bsi{G&7TpC$uvCRnetpQ(n z;uQ39iB5Aut?!SxJMBISgm$rp-VYD1H!rO`Lqnwp%z~e5H&mx;#uR)1ov~g}_CCN)z8K7}&w8&7*1$gX(E+8h<9j-_zF}Njz z)ENy|qN(IIkH5%|5cIjSGL)Ho?U&lR(4)=QSB+%AljF}X-Th&fb2lT5^59^+@WdI) zUh5HOQn`8=nJ3(nfS`SkHz0G0Cr90K180fWSlpXrS9Q-={A#jHk+5)p2ZrkYAnN!H zDaJ4n{f6*{Y$gr-;K9(O7!oA0pkp+@jC$$6OdE}-Bq&>M-BzeN)r*7Tv6Hs;Ce??) zd`V4_MLUzMdg*3$QY`?Y(?qh}|PT8^uGv4dz9apt`=}>j?@a5t};Dpo04oo8ge-8s> zG2SSY^A~u}L+eCAds0lIG1Vdz;N0C3^G^;80#+BgZ(rbmbzhy3%x+@Mik+g;rm9Rz z=~(cfx&=Hj%BiL}vcbRHp%a5r>DZ500fQF)#3Kx-mvc@Y1wS*DQR%u3SMKXt!Rdi1P)h zK=p8!Ykc$=&7KvUQJb?GcesSG2y`R~l24USqM3Gih??I>BPbuZtKZ2mM&%&P?&%drkm0oS_yB4A^aqbRz#Ln?UpjIp2w=|tSbIICd; z!|8YZFgo(t78xRMk7-$C^UIUOmPi78qZqvYKa>)KEGu1j;Q;?X0Koj-e7g1rVeRcy zd6npThh(2crFipYnd+%sCc=2J<~?XctyQ9#dF3O36VZR8YMY!a$4a%UJ_jmA)&1dn z9iHRfY>`i6R*GKt9YrJ+1f%D&x=zkfAY&EG$ zMBbWJkguCl^ z-_S;=;bU|}B?a|P4GNnnYXr)k3;{DWmY`0r9+r!0Jva`}%bLa&Zk(lv2sT32n*zc_ z5a!+L|1fW+0po2%juc6tYsBozSvf@l(h>(8oIaX|J`6g5=jymKmYW;+3hx3+=E0la_AMdm`#v;yU43~-R(I>?ddK1qLBCU z9m`FMkh%hq-5SMRy>9eobM9pF|mm`*7!6+fUQJuYLu763x)U8D>RN$)|u{zzazWsg7-N(g*k?oqIG?x4KE=NUci*KoP@hgfe1eaC{mma?GmJ?g4eQ>8 zbo3IvJOn9=2I*n<SVM2QFYrCzEcTA{+BYbXd;jERQYU zuExI9iXz`9YXAhbh`xp|R#*s?e=(5gvw=(|&pYU_VUDvxWlXsfqMJ``njt}Y3*-w+ zT>%8pldUV9W9>^_i4S$g5>7%O(qPSCi>v}0q&QIw_>HGS6SKICdje@mh_~ZgMVE>| zEuCbd02&y}g$6eZ=Xw(^aGpi6mNq`FD^rT9RGw>G!N@QH?oZ4jI^_BqHHXFVH~?>j za;gZ4IsP=K%V)Z#tXjH2Pqu%EC*{L{Rn%%yr69QGC*!kh1zLQB?OUvw*qs zZeQ4+7gu$})LwGI=z!WMBiJk@<~Dm=A|wfIgf1eMVI;cVDe)j2x0u+g;!#r`}Uc#;;F(?H<~M>T#f9EDMHufhbiH6gmxiqO`&uz!J8 z-ig?5PaMrawl1n#7elO>D}{7upg1|wx-k>cPaRzuq5dN3e!J4*?+(fy`7Cy!56@JU z@=it541(mzOAvx_+AB}`$tYnMh;^)j_9X~hQ*f9_$(Kd?+rRRlXHoD>*&D3knGt@+ zT(`PNFX^|2(CCf7W}wzyD0ld28_yg+)V%l`uw|@rM_}Z6*fu{x$_|YS8`?IvF=Y(;sIyiVlfXkMZ z5VtVoy5h9;J5EliJ$rpIW_U4kp0a$9Gcig3o5SVN)5uDX&JPY6o@Tfl7YTO5?RY|t zClzv1So&=i_{?&xg7!VC;WpVOg`O->{5i z|2~u)Lwr>(HC&cM+S4SyhDxi)>q2ThsQD9HHK!4`50%YnI(sk%K4VV-M%ofTRn!%I-&QbOqsw4mp{AEhaf|S5)b0(`3Tf`*AEj~ z42I1SE9|#q89nufm_Hre=;JI2Uz17}D!-(HY1x+vnT5f=6(kd5vphgZ%8g^Oz|1i+ zY$F&sd53G1#*~QG=e~l>San&ghMqC!uVIEM4hfk5Oj}yd-QfYAaDOqRdLS))pX=0E zQ#MLs*8fjEdbzNU8T>c@`)t#QKjZ2g+Oh^^!-{`A|xRL(I zCXS9;SibU7V1ava@sn!P)dFb39kJ%Cke-1N$3@e~dtBM0PX+hPIU)dy={0{KHlaWC z8r&f^Gg~*TpWwXlR+mD%XDN80RZ#>(8oLY@G*xEYgyFP~e&elr{-4U=A`HobFU_oa z-sEJd5rY>mu4Yi7!shLX9;Tf&qQSd0CKF%Fx&?HU)83vLT2ycf{F)ti9FgBDnRP`Z zcDQdRLseZ7<}@czkyP8!J)o%h=ZV9q>RsB>EiG6ZE7&@X{_E=b&j1ipnSrClzMU1i z)5eFyriDPG%I2^+S#C)V*oovZBAk-;ZZv0L?#KGu0ysHalhXA$JGu-uU$O03;jEOe(L-uL(#U9Kq&_JJRIjWOc&^Y8xWU} z%@qCf~3G0>{w!z&)Q$M%_rT&B$4BXq|~L+)btWkiZON!Z(GuvriSC8V-PxogRijnwUQMf zMzU2O*^>dxq2#%Z@g1mMl2PQR!Cw#c}1c{6Agb zQK3Rvkt;6b>WWu*70>?Tf?-nOz@!+}ZYQf}+FB%0l)*`8gBxr)6JP>hbsi&gyuZH_ zTIC^Qk=TqFG>csmEf;a_fbY|x6lVH3CWn@K^^gffZR&3xfmzNTVGrqjnE+Yh>7nrBFHlJ7eL6;+;DD}iSmDNSX*Oa~FT=$BibDKdd z`s91HJ0Ov{Hd3^pqua}NSSJc$nkTs3Ado4z2Y|{qz%a}*jdbSwnDKdAl+UW&;?z@m zU^=cVft+bCx%r&ah@hus^#t8v9}>_WhbtkR~;=wbMGlI^HEqQoId4Q64hs#ZlK@NnV?KPVU?^KT7CLbs8v zDorRuDR2Z;3(V|!T~tRGa(pH_$fL~_Z;tGhGRaNzAl>r5PsYtj_odED8OrKKM}zNG z7_#&{pi^CCpx4L%^EW0d*iah|(!l;Db#=aAis%dc;i_!VfvgC|xtd=Jj1Hp1jF2J^ z7vR3$p0t1>6lx!|Ufzgw+ZB%Q0QDZSJY~{@9mpX*#I5SjdtW-jB#n;kQrp_3^C|o2 znr`M~b{D*hiy1XED3K&Sm=o040Atxaw%WNzW1h_>Q7&%QK!K`$L2XgI!DK)xbrT(6 zHVvz{p*;d^9)BSdhpJE*bSWwqoVCg)?*w05$G+PP?#Y1XjV_zOt?yKm$tP7Rhcbvh zZ}#ASH=P|Zp82=R*fA()lf}!?Yb9hQ2eSO4U+34)jU)@m)PQ&AN<`GBan8`T7ko2P z)r}Xei?AnXHL!w}mzD2`hL*3kWUf%3pz+#zwe43Zt9eJKKiJi+@I6!!JVEWwVJxUR z037!|@c4=pG3~{$NMx#bGy92nfefr~2Pt7Nq|dFTG(I ze2OI(VxmngqfH8?a9OiQMJ;xv%pFLse|B*Ojv1=CS_ReJiE)SrrJ-T%_#N)ZP4OQ0 zZTl(${=Y3cMx#Q;HPNH=$ymfmS@-|k5OlP7#anb_?RfuPeg~m|i>)kv&g9&r;Yn#P zg|Z0_tU<*i&lmls_$G00uI!MgVp+(-(hih=d^Uy^G9rFV1-QKX_dc29fz(!!DSRsawoS{-oMUR{0}o;O4oOT@J$=+PfxEqeG;qv5+^YfpNx{RdmY7 zFOb0Y;lmK^F??A&ljov6T=G)v>5j(oh5DlfcD_Wgx<6H#T8biLAqUFy<2=Jqr`#>) zD;?~ghs+#Wen!D=G6GX9V%DSAszHxlfvQ)Lt)mQi$m=j}upxpDw*fTLtf^euYZ?eF z@D$Hl+(9-Uwga*tpd1$&I2hVHPNVAh6njOqSGfRkeMc6cq!!0|lTL)VHnoQfm>t^tm0KvwW)%}vK4XSZ(nR1~z+47{iMszmxu2Olm z8f;p#WdC_k1AwzE;V{5K9Uv^4$F|v&fB#@jod5_JWc4*4(*F)2w0KO*(B1+p=Us$S zH`xJr70Wwhm@~I3pBTfcYIdCJ8(ObQtAAu`1qw5yP|v}2K~kVZ){vTEsj_Nq#Gx|3 zUdyA0x^HY#ZX{29%-t z?`59?$Ci*W$iXISjFxxpR-CctQ{VOSuU|d-W0L?h341@?>P}|_9h53Q-qTPE2_vY;BztK*Rb1GRNQuz9G`u2k zsb|*r{g)##(T%)5A6+v3@iJLo`=udyR=B(#bbyIL=wAU&mgXC1_NZ^Ld9;@V?)yDO zAJ_l$CM}+~)R?;vgde|!X_kT`fYRHjbJ+%Qg9--{ji9LCFv|_k_IYl{U&lTYtVPT! zq28Sfiw<-!CiAMs14KVDZCl%acM}c*Xqj(mYEe6xkRghu&|nEWa%=|+{moqG4=^>Y z-6WZu1T^Yoh(~E_fUN(W`F1{&{-U%=6q=>n^Iw2CJ|7aEYOoHf%6# z(8tk7QnYVm?ZpXWM@afeZues6)215~Q-KVY%9pt_+iu_ifYZN#HR)lt#AH!JCeqXSAT?Y+0Wid+2PMi*w)b+7U zoJ_Av8Boryf^+24TExD56OrQ2R8++@e$HpLAb1a58%Jn!*dx?|rJ&iAp}z9|p?^xL zwpxFECQG{QRknWbyWgh&wB9ezU$Swn*_*b2i#239UkYU_*0&k4u298U7m-Ej^>w&> zHaR*gJbt~WbMk*OwPmYw*zMWEXi;XkvsCtBAzH3@r*1Q!{m|1Wu>+FEhm61qHW#Su z+w@4{o))vtr^G%h$nu;%bv4PR$mAwzNfhpaOZh-nEg<+|;crWOb%;8mfa#U!l zUJmq?V~k4W$qmQ7S+fkPoXFpxHc{CZ^{RfY;8^0Q!MqQ*wC0~N2-jyNV@B;fOkJjl)ii~q$>~86NmB_*S4ZlW0ez^u`HByVy3+KXt2q_=}#)u zDH2~QQN^{59J23F_SZdaeL5JV|F4l2V?n72#DoiR3!Te`@2W;$o_3|ZefN2y%y_jK z4pHzJp@Wz>M~e%d$`7;PN9{Pyg|Rx~h46?)*MW({>AEUe(AHRpVw~M#*2h!^<c$w*4}t}1ob3J8||psHCI)RsN=pH{ndE938r z7w;IjP!I5o%gzpdJ|l&#YyA=+{p!?fb{#Bhte_mmWEknHD4=gAIAENB)OAC;pC zU4QHU?te8NC3Af;Y>LKjCdK1uKwIu8sm33I=eRx9r^I=U#-!jrXJJ`i_+AtlyY^N9 zW?m7dg<@DyWCb$I=vcFEV3PU31-`P3em0JMt+~A^{vBLc%Hf+1w}aCVz@3-&n;eLZ zDLh^VAEJx`CEq;9D10~kK0wz@+x!Z*c}txjlA0@42GpJ*YMJC0~nR zAtJvgu%e-q`ilp%DS7G2@7l3W=gAGa`VG2)2Ehlvr*ZXzbOtiba7b-j{@=}Cw~+eT z0P|Stux`%r`KA>kk4wdo)ioXLOV+FHQ%=k8F4O!qb2326HK5vT>*sjmD-=%(;SW?YhPjGA+LVdB1{yu^m%kPwyT@6p?Oj&QtYNogu&aoX-u#F{qfND+w z#u7iBuC=xVjHpci^J#-%1RZUWOX0gB^WhK_aMpN6(A+|N<-)j``|Lc@0P09-qdk_Q$zJ7VVO~ z+u7GM!yKNjG2HP`oRVd|szJjN-l8uY$ivyTR*nE-sM~!^i0F%Jo!oA60^qc!cI?G;&Fcze)JY%bUi-M3%~b~Hkx(>K;l#S{yP0)L=?8<4sJpyN40kohb5J3k-roK)rPKClc6r_xznY70y`ZNc#p3VwO3R?U+_p?r!NjUx3DYdj zj9i(osksfd(<8dr%9p8r-~S^`sH@QK|9Ip&pr%svR{OSy|vt;P7?U6?SJazpS}*|Ez^ zl7IG1dyJ+sb`-@6gEgeQnfsIrE6t$V$kj>N6N}g}it{QDQj~?sZ&@>Wg;w;0#=dUd zWp5q9`-X?ai~3)f>sWA1Q*~jZIJm;KGpbn`r+@LJz?O}y!eIV{3j7u$EC4gNpKXe zNxld-IlT0ICr*v46Ccq&n6>Vn7sgkM0XT3#7NoFS7h z=XEaDfe@tRtcg&i+pbk+dW*MQKx_klyKbaO`f&%?l*G>qj18>eRzOmz1DRzBjk*s8 zBCG?au^edO8yV%Kl|fW}kBkKib)3R+=ANts%-sv^qljsWKv*W}r;E?}I@F1!6dEi4 zT763ujOeaO7a5FYC^Op`os2fCH+o4d3lq;}q)Tjf10>q6K1jYw2IuG!Q{5VE3YtKP z9BXED5&Y9CV3@k<;^nu@D9Xr{{@Wm|l`ri~@i05+L>jAN05D7*$cfP$rm?joQF$y@ z+G3zrsgNbP(6_GCWPz(f4m}#i6`-HDlk4%Yb(zM<@E-itS8vzqv`HK#Buim|%yui`dZIH-cK7X8RSwy%UtzYRDjR(GEHJ_L-RzAX+Kq;FYa-rjB;lO{AFY~O>A-B+D)Nj}Rq}RPtNNWhO^Ls_##o+@}e8#=iAy7--V1ui7#|1>> zH-IGgGysNw@=aghJ}|U!>r7Fsx8OPO9#BaSdWdES`CrT{s0zak!1F}T8$#1bU3!~L zRoWHQoY)^t8ODm?5n<|9W?o7A9vR1t#vZ|TD|K@?=Ri-oDsB>eu9;ch1`vb~S3LJt553Z__ zy-0JTJUm32oNj{a{gOqhQJP1<^A||qr{Qtx$H0%^u4;3XzOS2d!{g~D1j@fu`Vvh+ z_d1lUgHp|=MwuePuqhfiulR0X^QH36@pdMeINc~6e4ysoztiNRVOtP!Z5XxYPW2^2 z7N99$g`GyeFs1yQi(c50cxpTQX|6hh^~L8)cs-|i_Q!0Q@hFFNsZi5` zEOwH{i>v*y!E98Auqpt$`kD4LPDG%kuOf9!se_A5bv~8<+{hU%QP8)U^cMr{>wTu& zm|OSHsX!fh)>1zqitrboR-vY+Tse%19tx!!4U+i0m2T?eRZ)5RP7?Xn{W&c{%9V%y zZw8`d+7Z^F7kYaH)oQpj@M_DH47vp#>SnWUcC922ZD|N9Gghx$d5ied*-wajAzso< zAE~}-#!Yv@J9)5Rj25{z+KxwQAR=$CD;6TjFV{~P>4EtFF&HA?XWB5W2=ugwjAip~@Vv>EY|SH0AK(XyUP7wnTLIpSeFr z7hxMLziziCR{$%l<3kBnsvFju9GO@LyH};4S4a{Ax(Doh7C@_Lp60ID_h?MZ91rtL zSU?`+)OtlTL}-mNa-4Tnu}PQv%o+{~L4qP)N0(CQKjDp3ED9j+jsud+p|kR;IPWj9 zgWupgFfB)KF;$kGKXNCsgc(g_yp6&@w=bQO_G)((FG_fYuDWgzcj%`YDelvmp)LG7 za7n0qdVCj(HTr#4v7OiIKS_7f-|xgkw(e9zvZ9@B|1bj`G6KiLX!ENc&q zT1K7$d87&nlO6 zymsZ6h)cUBop(c{7=Lz@-#GB>jMmMi(w&(A0IjnjvqI&<8pqg(sMhOqPc(rotty|j zBDkV`(HSXO12JPgI&LuhG-hE<%(qk(TWgWHThpmL4>8Ef2ZDD%{r}4R>Ty|lEyxR( zta92{?G@|0y4C*rQT0fUpIPQT8mh>`W$m84sx5i>0n^J<@5vEyR;=VT zQp$BlaDfYYh`D)6SV5qc6D(}19^QiyT`|#>wZj4j6j`G`#yx`Gl1FceJKG+)7?E5r zAR4zubNMf;XI381UNy~JVs%`a&(d>gM>E8LngbXR_ht+0vxLn|X~u}S&v#XPzHxcY zUIf=t5j+O}L=;5&_rS^}j-NX|Fw>gOB?v}RaxzoaB5$=hKoS<{)NcKRY{U!7VXP}} zXS4G;1;oGvc(n_31r?WnoItw(q6UL`3_HqmjQX&VH1VOY8{Q0}0VVymTa{j8Zx20( zdJh?E?Bpt+Nw*mPi|2_Qs#@jr-01`|FK!C={WqYjJ1{yM2wq?-rX1H)x$}%j{d)@b ze3evCuWm{DgL1RARu7tfNdaY3%*XI!y0QV!S5tycs?`zu!PJ*C{fSVU1fo2Pf9A3O z?yoRdmh8)$k%uU?KlyS?K%+$ytIYsLzZ$T=Ud2+FliO zH&lkk=zuy8f{0MZe|1nJI8e~0bv4$^A>@V>3R{nTy#c(<7|#~joF+b4*Ln>5ieMI+ zeTsd^{1+28zmi~ddg(B@?1EOSucKkG-AUu-2EndpH=tQy@UCtJTc|N~kDRvJBq2C* zmzbP9giJzpi6CkOttMX)bE%(qv}OR#&v}OlCba+jmtB{ zTzeH;+Lp?XegyT+fhB<6eI*qQ9%}& zbow((T5-j@YF+^i(oCaWxon`ncL=kE}&jvw=lNW>@VkV+o+5 zX1*M8>aj14+f&&eH^*IrTg^Y0URUHzY9-s-x4-7je+)S0FM+5Sn6h6#EW%LaRdM5+ zg(MKr)uhg1YAkTYe=u<53J1tEzd|?n2u@Tf{(xiQrbV$g>_<(f=1qaFqZ>@QLHrAK z_XTc@x+$}?ox($;C!a*x0q)IIl;|OYaqF$d^LSgWiA;tmdwX`E*g-dkFl|vW1+9{7g6j()KF!($Q6r(jD6JlcYEZX#<nU}(n^ViGV6?a2d+AwF`)F`9B3Dtlea+O<}os2@>!1POoC-~RMkHpZGG$I z%_P1Q?^cl}NF-Gk5zg90r_496H`G6noHyAwHWHo3kMhYl{2pV8$uNxR%Rx?VDj~?O zo%F38w9p)`rPVKpsApSX9bN;}NvZ-Th{Nw8 zq(g(?NrkwW<7^Sh(EYxn;x|i8s=`n%vhx2;v-SmF6~g0#i%-y3k zuR@}_H#_{~6VJ|-xG}2wd2%;F^Lm$YQhdTE5^ENNlaMY$zw}d9_;Y)# zm8E@9I;4CNaAj@%i&J_iewmpzsGrh}^ZUf<36C2;pd>q8=yQOp0kERH*$8Zh zNyX3!cormPb6m}5%EnYWxt9uYFmX?a*A3xr(rig0CA9+%^Is?-{D-}U{=NEgudD`w zp+=F{mw5Q{K5|v}Y)mAjJh15^4BLYb=c|VU!u7?xKKjfk#(1(7N<-)Ki5KMen{U6o z_B3R`=7C$Gnl-Ph(pzyT1gG8M4%fIMfwl~?BBt}(lu`8;SO9SMDw-{H4a>B{*-I;m zPK6G}({%KljT!liyWvs)A{0Uj2PB)=6x(i^-1p8!>SRr&^Y&?VM0GZv`iRLc89zEK zRB)yfc}!}gPulJu>ECCG@SeUy4~o@=M6EhO6S-n@CiB(H6k}c>6 za|o4!46QXnkiRKhk^C_uZ$o|QVE{w`RgoT>a>j572m4jTCrUC1gM?@?hxEEvrc%gS zKCJ0#)%8b1v zz#DAV9>oh{oF@&;r7^)+#j6?6w*uj2w^L7&bH30qrElK<(%zHPyHnZSKnP4Zu#i|; zT#g@2{)jQEJ9J*>sOxT{K`p_+Bdh`r&Aw_*ewzgwAN)D}QpI_zOR1NP?y!CXu^Vdj z4ozG5Qo?Ei<20_z^&6Rz-lnf`l6^5>pqb-SZdq(sR1Ml9qp5L2e?$aJiHNlg&3O^r zMo&Y7xhTzhw50i&y}T6W@OseBg?V7=sj=tH7Rtc!-f_dJ1S+<46=qV*9UDufa&uGu zif~mJb(d`5&AEuB5AR4a-| zOYY%IZ<{oMNFX|Irws)&5!V|dFQINOK1Dk-Uk z$Duty=JyW{9LPjc3FQ$@iKlkKGelA&!S#)fAH;Gt+*3jXO82#S#uvV~=*8Yl=_FZ3 zX7rNYpg2mDa|0o$R%9oIF$0{fS1rl)ir?3;p`V~5i*0%PqKOSQ2MY>#CPjIei8H59 zKN_fS*!_k?cJ^%=5O=P04&x#sg#NW9EQ@}Y#NuExU@o9Ny_x%=17>9TBf#ASQ4GXTLy-3;@zz4nvzxB6k!=+%9^O>X83vrDl}y%lJ!)lUk307q~I-LXBCFuY(#}fNr}>wnpv~9#eryA9<=-5ANB?S`KljK%Gzpma(cELG zFv1BDdv*SXekG&O?cQG%697?#M2iM+M2K&RO3RL4-f+fgBg#$UZ9jO(7H=LshQCC{ zD+-DxjuF6Cp9nh%mFTPRRu56JcIXam{%Lq0Ow^if;(Gr=HzgBMj%!pM2=Q?$c-J!4Sod~;+z!aQ z)4;rFkMj-JL*qaUpG=G79w#iS%J9XVt`45K7Ti5f7#Cvp4zyEAQqZ{2VLM_ozu&8t zw0Ob;s>*6ajP}LDTiZt`cQq791elq-jKfyGYbnG1^z43hFz+KDd6h9eO4T1Eeo5Gf z8gt;Uit?^V!7DfL`x$l=e+|{7-&E!`C9JybJWSGbAzPxtjoj5oZgwF_AjRgu+4;+3 zWSCR4aNcY-qtS3?01p&5V%B@HxA_Q{oG@<~}V^)+}95DxYj z&+RhoaDKuE(j?B03&+8d@XKPIY6)6h4-6v8gm;EP2{B!DHR<#sDc;fKaJ{>Br_e65 za<1=4<;_H@{ad)sIEv`$>}nLg=qhCYV)8*k7n%=B=wu z2N0Z>)m4jvaxF`qPNGkAkL%=q~?@*yv6S`+%M z|4DAvGw;V)gz0}&w)x`}5Pf7KNqmJ)sT|Gy{Asvt+H{vaT*~~DzwZUlVwuMPf4*Cq z(AHJmyT>k^mf3WvoeAd;+Rh8`cVkXR)->_C1IzRJV_&^D0XAiw=C(Ndop;H%;tH4z zkDvem{YrJd`}Gc9;|lEc#3P6_=r|H`ldjY5?R{hY+9;lJjbI3o`Og=ZH}J}E;o6$T zYgSO4&QV8zP@{*cgKKDBuTOBX>3kl!DrPH!UpeF)u{%JLhd|;}8M>$`7|_|Q6$gA@ z$L%)y#usLjKR>09z0|36Pjstn_&?A)N1u0)Ek;v(`NLV+T$YM^{GYtGVpaiA2jJ!) zE=P=4ULB40nYFsn^V%Z@L5{*^$*lL{aGVR2WgMcbA^41L*d-Q-d(|ExI4O)!@@sH% z+JzD%2l$qsRq{CKpp1QHW~SOF^2b1w%|jqEyTP6W|`xJ=dkSqVyb|RW`lsIyPO+ERY35Zqh(aA zg@Fc{=OAs0V}abV#t;vaYgHv`4Qh0_ zIEHFAq>FuiY z>W;W8bOmax>MMFwI`B$QXW0bQ&2?~XXAZ?wlkEp@S^v>ruU;C(ObchSpKz{eS-@Xo zrBTtF?;Is1{cIxbfx+Xq5UF%3i_` zx|>=O;f;T_+my}MvI4tP#wwwK8wXXDrg<$qp^yI7$*-Z|;eHp8fw#c3PjO8Xl6l_) zK6Fqv5;v~|gGB^^8#qyU)q3Ea<0arcQFkQ&rm{^-(B(xGwxJdPbuSh(h{e60=xFAx z*J?l^SCcpm4O1HW^>l(dBCgi(_=mE!3MSN3tB?uKw7iI+_XQpmF+g=-oy?UeOpn_w z4Uo)59A#yeR6;vik{n~E;RudAj?Nx|PfOT2s*I3uPU0#3q+A`5nl-jpS;t;eb2g2} zD1h<_5A*0#C|jG^im4=9ncJ+LLx5O#7C2xVKyNj&n)tlYBq_nJliA`FjtYafHjg7W zYhpvdA1`-|NIgC9Iwo;1pw97~?chMn*%KVT@_cGZ;mS2nV`Nj~DggKQkB6adn82BS zoe8^aEJj8Gv$e69Go()K*NQG)15aQ|0SYiMz9M;)o7|Z2N!y-VrS!Kti8V>=@tCTr zlGmefAnuz)0c*9T{Od;E?`jY;1xqW7>Rvhq{Hf^SwML?;wqa0 z7rLm3b*t&p#1^DD#B8hfK)>dPQ)v2r3ihWh7h^fSAc(|*TqoZ@KU*Ven(RxF2#&&$ zK#7A(Ur(kqRi=27xj?i*o7>-dJp9vqa8e$0Tb$fyD*%>W`YzkAo|!ac0z@I2FxI11 zi7@J{@7~jv8xIH?YAZO(?+%;zdQDo`5d%|$)t|?ulPBao8sZKa*cSc;U#nz!QXn<_ zwW8P$tH`Dhfi5^vm>t0dy0x<}dG&8;j*SxV_}M7~4KJlv75+b7jM0*9t8vmkSfofv z2J-$%H8;}bgmH>FK>S>OX=CcTb>8*Y5_drJu`@9v=#MCCvq6mv#HBSjiU+>S@-mbn zCjZVP5q;V4QaiGmr4c?zoSa?IaoTt)vdV-~*2x{bP4yARfVxRx9ZKu$QWrLKCNb4n zyP9aCAN@&5@t>9X@?3j<(+#c_lLiFruJ4nAR6hhEf&BJp$n#nx3Cd*+^j(~i)F}F! zo``dxYQ~*d%Lp8We>qBsyY;gbzM{-BJZ%)8y7URl$rJ+Z9zr z2uHM0N96DB?pL~mH2!B9HO#@y2^dGSF#=hoW?%9>>&Bx?b=Mf5+nAMyt%2G*oqz-tCG`OQ`OH_+oJR&t(IP zh#qIY>kJXEkx8(u4?;PdKZ^t2+~!JKX`s~<8(1VD1jtP}Mz_E;vkS&{019+z%N97X zNn&P%f5n5U0eUmw<4)A3Y|CzJr<_n&u7wQsFKvN`2C_o9z!m@}|%B@s5Rjyv7uIDoqids+aR-9HJ?ONWrSSLm~4IO$U zKvGz{*GV&t>C`?IJvuqO9|qy;A*hga;t8S9`kn!<)}Y~~5*8_s{hd29@5UH?rYfAA zGg;gn^4XvLbJh&%Xk2^(6G?pjN-1(qv(+nj>SvUo22T29f}Zi7(vh5RnJkB)P2zm+AJR>rL(g5#UIb_xDN92*ikau(dEMg({GzB<_*rCqerzY5N^KK z5LXiPlCLY*`^_=m+9PV9%SrFiIAzAiqU4qL+xNX91@=>ubw;`SPyenzj1f3Z^~J`S z8xv0cMNi+*=R1W>H{%Spy38p&P6kyC`ETmZf6GuZp8;SATR?@c zkbo7bee{Gm^_#e#J`z2l>CX=*YrZd1r!>WK?c^?Q7s`mt0OtygYlKj)X5$iS{J zs}(LgByD#IX+Ge9ca-;zt=h_PFvW(Np{v+|IzM%wYJn|Wi*9!;1(y&1+}k?N`ELL2 z86nsUF1DH;#oM-vg?KPuf|0>L;s?+#0g{XDmHW>Hznaa)j%QkPTunLuJGJl=zXfdaIQ5f8_ z{7~)|^uYDIdG*GzNG{LMkj?5DVda4=;X4PO`!3$q)IdW|-&V+W?^-sjnY+JB(j;lW zw_9(QHsG+6sD-=O&irJti1>rFTKUBaR#(ANc@j>Bi2Tv?G4s_S!OOzvveFRluknIs zosqr04LDb_-LP}Q1qM^+JXW#C-`KuMAG&0&HXcgsp^HwV<|ZgHVQ z>(3={HJ2(uH?~OZh2zyZuC78%Re`E~l z?g@fK5`I=HDaornHn%))4DuC3ypKm@^)jbwq@Z)aF(!eVCKMic^%$KV-7U#a@aStAm|C+J?n6R0)JrK(W{x>mQM_Zyqfp?ha;GDA!j|TOT zRD>0lZGC#vh%E}aU?-a&9L@&3;k#lz0&2CJh6)f$D(1PTs<&4Pd~Gl2(S^myi_axI zfa!qB>=4l1*-%CqZ6MF5={(556)vf@;}9E>2V5Q}@PxJ|(z$3pqZTXd;r)3I)&sg2 z*iOEJ5en@@W94f@ho^$8LfMmJSTig(SEO_EI@n*G2DlVqD%tyWip~yRZ&0G{jol!G%D~hc$sjwgF;_Q;50zWaTlBA}4 zrsh1*=MI)i(p({h?R`??UZBtdJR212Tz@>Z*W;Pw5M&!3dtDXfevT#i)|fIN%-V&_ zu^nf$j6d3*+qEx|PTEov%zJSS4q%ow`_)zKSVn_D$@ch`89y){l4#aDAfnn@r~(RE=EI|H33(UkTMo;UODT zi}D|f__E5CHsr*wIR+-HZILs!& zH<}$zk!V;0@C|r145|tzU(g|=?X}z5Q%rD=cjc{KE^`4&^KLEJU=2#^Lu=U;+d z@CWmGjy_IhP4)@hFB`>lvzEr^#y3Y=|9Dh+<4WR}V z+*_fb>>EGmDT3o1}bf; zK+xSUIBO@_&wN{TGQxiSR}cEBg}ajZUHkp9FM?`XmB&|PnbcZ$Sspa;`#^CYCKlj; zblzl=Z$b7&99H=p@ZJ=al|1DC&ZHU&zeFd$ISDGgE31Uq_H?AYQk4qX^9a!cLh2<) z&8Iq!r@MK|$($C*U5IRp|7P;bU6-91K$(cI;DM&G0Uu$V1z&k?ia*#(?MtI>GVY`; z4ITJ)44t?-OwlZvU>BW=U9$Pw-6!3Z4?xtG#Rc2w8wFUT7*+d?1wTx(Ln%*VS3u=^ zWB+mw1m(4D#XusOMZXmlv)+~gjWvi}@6|xqT;OQw(Jrx33Zns%^glYO5j~O{C%&}& zm1d8glAA=kY*&iegxexqAHUZBPh7Fsa5lA0+9J$0=o!V?0O`9b9HA@`8WQivw|7Ie8(*bXcZk}qZF*JW`F`ao6|&UP?)#MKk1 z2KJRspLgiO&Y+nWSmEA5CJtb!ER{(iq+WZtO=Iw&=BUO+rX>wtSWbQ%>yY?bD{psK zYnO83XiaCf8!-82M-*CWp|pub$EFe2XrDaOK&cZLG8-%!r{)^WLML=tt~idsi^F*r zIREVGK>hRwa^&c!{Scxv^{rN%mLOA?IU!_j=}rKzBEQ$$C}j&wV5f}m6%?3I4dSxO z+-#c$_!zSFUJ?7|R|1S~nmH*o8ZyN4Rz{k!5S>*V>F^ z{wG{|@d~J_7tHK7po!6`xv3E=kM9wJ>9urDoqx914vJ&+M7fR!Wb9`S%=X-`PM}{1 zUUR;P*+4!Lah~Lu8P(HM^%naf0x_QQ9P(T^w2F<&oRu+l8*v%JFC+U0z`Cos8+YbLJX=baR}r% z5*aA1*%F7^eJi8IFCbcEY9y#lO|(C9m2Q%g?h2TW}j|)-R0%_ z%!&GEvsC9A4mKzt2*OdkgC1EfxPj7@`cFT9qW388VriJod;_@ns5ete9z9O=(3`?9JKJR?? z%~N(n7@H^PBzR~3KAfH|KPQuP%8Us-mv!JW?{CWxm75U|!}-U+YT*9)_ws`r(V+nb;m!N5z;U z>ok zq5JtV3~4;5#+rv9CX)37Lom)5W_Bd#lB$Om(#P@Jeb_CTd#7VdRpEx*n1ENTOLsEm z*`rPbvd0%>D*9<4bi?FnD%l%{3qv_tISE)3O^RTAlZLX7y92&*?(M z-)ieM&qGm-%ATx|&k-(7-KIp~O^d%eS`Pc|)Pk(<0H|w0xi{ z^1G|cc1A0wfFYJ3YVJy)*rg@}4^Qza`g~GnPP~uG93=|bZ3(MlMVmG%(VL8zW3UKP z7UYdNi2SwuOBIWH&O>>Ksj9jnlgQ$uD4+?!=wSL2Cg5N?%Ipt>&3@_-xP^)#?cI!^ zz>{avJM04ieXbJfko%61iW|aIj-Rg81jI3_=vC)-P!250;%obGm{k|&%AWlhVuEkG z4MDscV@Cy?ESWN!#O7KY*E8nfqBcB1jN;#6OlltI;I!4Ak&kA5MxI% z3!|NvTK`U=Bez+$5&sMTCPof-9O3%@7`e$pe3F(knhAO}ETy*AO`Y3{F-%V^qxy!& z$KF>fKu(!zeT@YQ&D5ScL`%k;@KJ!RvXYQ!GC@)+vd`}j>^w3reP$iK76!f=7un+w z$mNwR?NeEGG@Y7kz63>)nd&c1VA3XQsHmd@T|xoVOb)m9JQ$1)LN2KLEaD6y(J?3@ zkX&i*L9Lxi$4kbr+9(f*f0dg*utfiNpaqa8vW!T~>1vJjSvQ{-|7!3pfFqvBI-9qN zC2m@nBPcWP1Me@bYEBzYwdNzvNF)G_!X@)88;Ok?mKYC5HKsqkk5=G8iv;H+WOm6m9gC1V4? zF&h)2K&x%goVS!A3k(UP*hNa5LvrhrNEH?71Vl zv^Q`@$py&=;Sx2vqv`01@Z--U<`Le*4-+?k5Z!yqWlwt#yss%JyY9lxdkv~_Hp@pe ziP@jmsn(k8f0?`c+TzfR3S_gAzttZfnm|V;)9NCPvu^newhsykv9L$!#cz(X zfdXJq)4^On?Gn-x1iltGv5tVM8|zd4P<%*lt6`)rL3{H2tr}NFf YFv}WX+GnhIwySon*D^)NSez$EiHX=f8vp\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\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\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:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\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\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/729/f42d43ae\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 00:05:03 01.07.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \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 Manager@id_rsa.pub\ + \n:local localDir \"/\";\ + \n\ + \n\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\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: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 Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\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 :local 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\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\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:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$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:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\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 dont-require-permissions=no name=awg-env owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/envs/add list=awg-proxy-env key=AWG_LISTEN value=\":55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_REMOTE value=\"109.107.17\ + 7.79:55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H1 value=\"472437748-4724\ + 38637\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H2 value=\"707808381-7078\ + 09250\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H3 value=\"1609078552-160\ + 9079495\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H4 value=\"1012329484-101\ + 2329741\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I5 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_SERVER_PUB value=\"o5IgCl\ + 1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_CLIENT_PUB value=[/interf\ + ace/wireguard/get [find name=wg-awg-proxy] public-key]" +add dont-require-permissions=no name=awg-container-add owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/add file=sata1/tmp/awg-proxy-amd64.tar.gz interface=veth-awg-pro\ + xy envlist=awg-proxy-env \\\ + \n hostname=awg-proxy root-dir=sata1/awg-proxy logging=yes shm-size=4M \ + start-on-boot=yes\ + \n/container/start [find where tag~\"awg-proxy\"]" +add dont-require-permissions=yes name=awg2-webui owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + put \"Download image, and save him to usb1/tmp\"\ + \n/tool/fetch url=\"https://ros.vados.ru/docker/awg2-webui-chr.tar\" dst-p\ + ath=sata1/tmp/awg2-webui.tar\ + \n\ + \n:put \"1. Create veth interface\"\ + \n/interface veth add name=veth-awg address=10.9.9.2/24 gateway=10.9.9.1\ + \n\ + \n:put \"2. Create bridge and add veth\"\ + \n/interface bridge add name=br-awg\ + \n/interface bridge port add bridge=br-awg interface=veth-awg\ + \n\ + \n:put \"3. Assign IP to bridge\"\ + \n/ip address add address=10.9.9.1/24 interface=br-awg\ + \n\ + \n:put \"4. NAT: masquerade container traffic\"\ + \n/ip firewall nat add chain=srcnat src-address=10.9.9.0/24 action=masquer\ + ade\ + \n\ + \n:put \"5. Port forward: UDP 443 \? container (AmneziaWG QUIC mimicry)\"\ + \n/ip firewall nat add chain=dstnat protocol=udp dst-port=443 action=dst-n\ + at to-addresses=10.9.9.2 to-ports=55055 in-interface=ether1\ + \n\ + \n:put \"6. Port forward: HTTPS 9443 \? container Web UI\"\ + \n/ip firewall nat add chain=dstnat protocol=tcp dst-port=9443 action=dst-\ + nat to-addresses=10.9.9.2 to-ports=443 in-interface=ether1\ + \n\ + \n:put \"Create environment list..\"\ + \n/container envs add list=awgui-env key=WEB_USER value=vados\ + \n/container envs add list=awgui-env key=WEB_PASS value=zoomzoomrulezz\ + \n/container envs add list=awgui-env key=SECRET_KEY value=RanDomSecret32Sy\ + mboLs2325272931q\ + \n/container envs add list=awgui-env key=AWG_ENDPOINT value=10.30.30.10:44\ + 3\ + \n\ + \n:put \"Load and start container...\"\ + \n/container add file=sata1/tmp/awg2-webui.tar interface=veth-awg hostname\ + =awg2-webui \\\ + \nroot-dir=sata1/awg2-webui layer-dir=sata1/docker/awg2-webu/ envlist=awgu\ + i-env start-on-boot=yes logging=yes shm-size=4M\ + \n\ + \n:put \"Start...\"\ + \n/container start 0\ + \n\ + \n:put \"Verify...\"\ + \n/container print\ + \n\ + \n:put \"Should show: status=running\"\ + \n\ + \n/log print where topics~\"container\"\ + \n\ + \n:put \"Should show: AWG started, nginx running\"\ + \n" +add dont-require-permissions=no name=awg-proxy-go-Client owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:put \"[::::::::::::::: START :::::::::::::::]\"\ + \n:put \"\"\ + \n:put \"Add ram disk tmpfs\"\ + \n#/disk add type=tmpfs tmpfs-max-size=100M slot=ram\ + \n\ + \n:put \"veth and network:\"\ + \n /interface/bridge add name=docker port-cost-mode=short\ + \n /ip/address/add address=192.168.100.1/24 interface=docker\ + \n\ + \n /interface/veth add address=192.168.100.3/24 gateway=192.168.100.1 name\ + =awg-proxy-go-client\ + \n /interface/bridge/port add bridge=docker interface=awg-proxy-go-client\ + \n\ + \n:put \"add config-client.json\"\ + \n/file/add name=sata1/mounts/awg-proxy-go/config-client.json\ + \n/container/mounts/add src=sata1/mounts/awg-proxy-go/config-client.json d\ + st=/app/config.json list=awgcfg-client\ + \n\ + \n#:put \"Download image, and save him to sata1/tmp/awgproxy-0.0.1-0034-am\ + d64.tar.gz\"\ + \n#/tool/fetch url=\"https://ros.vados.ru/amneziawg/img/awgproxy-0.0.1-003\ + 4-amd64.tar.gz\" dst-#path=\"tmp/awgproxy-0.0.1-0034-amd64.tar.gz\"\ + \n\ + \n:put \"Add container\"\ + \n/container/add file=\"usb1/dst/awgproxy-0.0.1-0036-amd64.tar\" interface\ + =awg-proxy-go-client hostname=awg-proxy-go-client root-dir=sata1/awg-proxy\ + -client logging=yes start-on-boot=yes workdir=sata1/docker/ name=\"awg-pro\ + xy-go-client\" mountlists=awgcfg-client\ + \n\ + \n:put \"Start container\"\ + \n#/container/start awg-proxy-go-client\ + \n\ + \n:put \"Add user:\"\ + \n /user/add address=192.168.100.2 group=write name=awg-proxy-go password=\ + peskar55\ + \n\ + \n:put \"Add forwarding port web-ui\"\ + \n /ip firewall nat add action=dst-nat chain=dstnat dst-port=8089 in-inter\ + face=ether1 protocol=tcp to-addresses=192.168.100.3 to-port=8088\ + \n\ + \n:put \"Add native WireGuard-server wg-awg, add address.\"\ + \n /interface/wireguard/add name=wg-awg-client\ + \n /ip/address/add address=172.17.0.1/24 interface=wg-awg-client\ + \n\ + \n:put \"\"\ + \n:put \"[::::::::::::::: END :::::::::::::::]\"\ + \n" +add comment=awg2wg dont-require-permissions=no name=awg2wg-uninstall owner=\ + Manager policy=ftp,read,write,policy source="\r\ + \n :put \"Uninstalling AmneziaWG...\"\r\ + \n :log info \"Uninstalling AmneziaWG...\"\r\ + \n /ip/route/remove [find where comment=awg2wg-tunnel]\r\ + \n :do { /tool/netwatch/remove [find where comment=Monitor-AWG2WG] } on-e\ + rror={}\r\ + \n :do { /ip/route/remove [find where comment=Monitor-AWG2WG] } on-error=\ + {}\r\ + \n /container/stop [find where interface=veth-awg2wg]\r\ + \n :delay 7s\r\ + \n /interface/list/member/remove [find where interface=wg-awg2wg]\r\ + \n /container/remove [find where interface=veth-awg2wg]\r\ + \n /container/envs/remove [find where list=\"awg2wg-env\"]\r\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg2wg\"]\r\ + \n /ip/address/remove [find where address=\"172.20.0.1/30\"]\r\ + \n /interface/veth/remove [find where name=\"veth-awg2wg\"]\r\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg2wg\"]\ + \r\ + \n /ip/address/remove [find where interface=\"wg-awg2wg\"]\r\ + \n /interface/wireguard/remove [find where name=\"wg-awg2wg\"]\r\ + \n :do { /file/remove [find where name~\"awg2wg.+tar\"] } on-error={}\r\ + \n :do { /file/remove [find where name=\"disk1/awg2wg\"] } on-error={}\r\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n /system/script/remove [find where name=awg2wg-uninstall]\r\ + \n" +add dont-require-permissions=no name=amneziawg-mikrotik-c owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global imagesPath \"amneziawg/img/\";\ + \n:local Image \"awg-proxy-amd64-7.20-Docker.tar.gz\";\ + \n\ + \n:global DstDir \"sata1/dst/\";\ + \n\ + \n:local Url=(\$GlobalScriptsUrl . \$ImagesPath . \$Image);\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n" +add comment=Generator dont-require-permissions=no name=awg-VDSina owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# ============================================================\ + \n# AWG Proxy -- MikroTik RouterOS (protocol: v2)\ + \n# 2026-06-30 22:08:12\ + \n# ============================================================\ + \n\ + \n# 0. Check prerequisites\ + \n:if ([:len [/system/package/find where name=\"container\" disabled=no]] \ + = 0) do={\ + \n :put \"Container package is not installed or disabled. Install it and \ + reboot.\"\ + \n :error \"Usage: /system/device-mode/update container=yes\"\ + \n}\ + \n\ + \n# Auto-detect storage\ + \n:global awgDisk \"disk1\"\ + \n{\ + \n :local usbFree 0\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] free] \ + } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n :put (\"Using USB: usb1 (\" . (\$usbFree / 1048576) . \" MB free)\")\ + \n } else={\ + \n :if ([:len [/disk/find where slot=\"usb1\"]] > 0) do={\ + \n :put \"USB found but not mounted. Format as ext4\?\"\ + \n :put \"Press 'y' to confirm:\"\ + \n :local key [/terminal/inkey timeout=30]\ + \n :if (\$key = 121 || \$key = 89) do={\ + \n /disk/format-drive usb1 file-system=ext4 label=usb1\ + \n :delay 3s\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] \ + free] } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n } else={ :put \"Format failed, using disk1\" }\ + \n } else={ :put \"Using disk1\" }\ + \n } else={ :put \"No USB, using disk1\" }\ + \n }\ + \n}\ + \n\ + \n# 1. Uninstall script\ + \n/system/script/add name=awg-VDSina-uninstall comment=awg-VDSina source={\ + \n :put \"Uninstallimg AmneziaWG...\"\ + \n :log info \"Uninstallimg AmneziaWG...\"\ + \n :local prevDNS \"\"\ + \n :do { :set prevDNS [/container/envs/get [find where list=\"awg-VDSina-\ + env\" key=\"AWG_PREV_DNS\"] value] } on-error={}\ + \n :local storageDisk \"disk1\"\ + \n :do { :set storageDisk [/container/envs/get [find where list=\"awg-VDS\ + ina-env\" key=\"AWG_STORAGE\"] value] } on-error={}\ + \n :local prevTmpdir \"\"\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { :set prevTmpdir [/container/envs/get [find where list=\"awg-VD\ + Sina-env\" key=\"AWG_PREV_TMPDIR\"] value] } on-error={}\ + \n }\ + \n /ip/route/remove [find where comment=awg-VDSina-tunnel]\ + \n /ip/route/remove [find where comment=awg-VDSina-dns]\ + \n /container/stop [find where interface=veth-awg-VDSina]\ + \n :delay 7s\ + \n /container/remove [find where interface=veth-awg-VDSina]\ + \n /container/envs/remove [find where list=\"awg-VDSina-env\"]\ + \n :if (\$prevDNS != \"\") do={\ + \n :do { /ip/dns/set servers=\"\$prevDNS\" } on-error={}\ + \n :put (\"DNS restored to: \$prevDNS\")\ + \n }\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n /container/config set tmpdir=\$prevTmpdir\ + \n :put (\"Container tmpdir restored to: \$prevTmpdir\")\ + \n }\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg-VDSina\"]\ + \n /ip/firewall/nat/remove [find where src-address=\"172.19.75.208/30\"]\ + \n /ip/address/remove [find where address=\"172.19.75.209/30\"]\ + \n /interface/veth/remove [find where name=\"veth-awg-VDSina\"]\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg-VDSin\ + a\"]\ + \n /ip/address/remove [find where interface=\"wg-awg-VDSina\"]\ + \n /interface/wireguard/remove [find where name=\"wg-awg-VDSina\"]\ + \n :do { /file/remove [find where name~\"awg-VDSina.+tar\"] } on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/awg-VDSina\")]\ + \_} on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/ru_ranges_time\ + out.rsc\")] } on-error={}\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { /file/remove [find where name~(\$storageDisk . \"/pull\")] } o\ + n-error={}\ + \n }\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\ + \n /system/script/remove [find where name=awg-VDSina-uninstall]\ + \n}\ + \n\ + \n# 2. Network infrastructure\ + \n/interface/veth/add name=veth-awg-VDSina address=172.19.75.210/30 gatewa\ + y=172.19.75.209\ + \n/ip/address/add address=172.19.75.209/30 interface=veth-awg-VDSina\ + \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.19.7\ + 5.208/30\ + \n\ + \n# 3. WireGuard interface (MikroTik derives the public key automatically)\ + \n/interface/wireguard/add name=wg-awg-VDSina private-key=\"4CHyNhbOs923/E\ + yNDguMXJXdghL2I3UyzXPwrANVgHs=\" listen-port=14710 disabled=yes\ + \n/interface/wireguard/peers/add interface=wg-awg-VDSina public-key=\"o5Ig\ + Cl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\" preshared-key=\"RNvF7T1cg5tyXcY\ + QnD9N5BEp6e20vVJQTv0GMjyvHU0=\" endpoint-address=172.19.75.210 endpoint-po\ + rt=51820 allowed-address=0.0.0.0/0 persistent-keepalive=10\ + \n/ip/address/add address=10.9.0.3/32 interface=wg-awg-VDSina\ + \n\ + \n# 4. Container environment variables\ + \n/container/envs/add list=awg-VDSina-env key=AWG_LISTEN value=\":51820\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_REMOTE value=\"109.107.1\ + 77.79:55055\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H1 value=\"472437748-472\ + 438637\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H2 value=\"707808381-707\ + 809250\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H3 value=\"1609078552-16\ + 09079495\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H4 value=\"1012329484-10\ + 12329741\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_SERVER_PUB value=\"o5IgC\ + l1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_CLIENT_PUB value=[/inter\ + face/wireguard/get [find name=wg-awg-VDSina] public-key]\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I5 value=\"\"\ + \n\ + \n# 5. DNS\ + \n{ :local rawDNS [/ip/dns/get servers]; :local prevDNS \"\"; :foreach s i\ + n=[:toarray \$rawDNS] do={ :if ([:len \$prevDNS] > 0) do={ :set prevDNS \"\ + \$prevDNS,\$s\" } else={ :set prevDNS \$s } }; /container/envs/add list=aw\ + g-VDSina-env key=AWG_PREV_DNS value=\"\$prevDNS\" }\ + \n# NOTE: replaces existing DNS configuration\ + \n/ip/dns/set servers=109.107.177.79\ + \n/ip/route/add dst-address=109.107.177.79/32 gateway=wg-awg-VDSina distan\ + ce=1 comment=awg-VDSina-dns\ + \n\ + \n# 6. Download, create and start container\ + \n/container/envs/add list=awg-VDSina-env key=AWG_STORAGE value=\$awgDisk\ + \n:if (\$awgDisk != \"disk1\") do={\ + \n :local tmpPath (\$awgDisk . \"/pull\")\ + \n /container/envs/add list=awg-VDSina-env key=AWG_PREV_TMPDIR value=[/co\ + ntainer/config/get tmpdir]\ + \n /container/config set tmpdir=\$tmpPath memory-high=200M\ + \n}\ + \n{\ + \n :local arch [/system/resource/get architecture-name]\ + \n :local ver [/system/resource/get version]\ + \n :local dotPos [:find \$ver \".\"]\ + \n :local rest [:pick \$ver (\$dotPos + 1) [:len \$ver]]\ + \n :local endPos [:find \$rest \".\"]\ + \n :if ([:typeof \$endPos] = \"nil\") do={ :set endPos [:find \$rest \" \ + \"] }\ + \n :local minor [:tonum [:pick \$rest 0 \$endPos]]\ + \n :local suffix \"\"\ + \n :if (\$minor <= 20) do={ :set suffix \"-7.20-Docker\" }\ + \n :local file \"\"\ + \n :if (\$arch = \"arm64\") do={ :set file (\"awg-proxy-arm64\" . \$suffi\ + x . \".tar.gz\") }\ + \n :if (\$arch = \"arm\") do={ :set file (\"awg-proxy-arm\" . \$suffix . \ + \".tar.gz\") }\ + \n :if (\$arch ~ \"x86\") do={ :set file (\"awg-proxy-amd64\" . \$suffix \ + . \".tar.gz\") }\ + \n :if (\$file = \"\") do={ :error \"Unsupported architecture: \$arch\" }\ + \n :local url \"https://github.com/timbrs/amneziawg-mikrotik-c/releases/l\ + atest/download/\$file\"\ + \n :local filePath \$file\ + \n :if (\$awgDisk != \"disk1\") do={\ + \n :set filePath (\$awgDisk . \"/pull/\" . \$file)\ + \n :do { /file/make-directory (\$awgDisk . \"/pull\") } on-error={}\ + \n }\ + \n :if ([:len [/file/find where name=\$filePath]] = 0) do={\ + \n :local freeStorage 0\ + \n :if (\$awgDisk = \"disk1\") do={\ + \n :set freeStorage [/system/resource/get free-hdd-space]\ + \n } else={\ + \n :do { :set freeStorage [/disk/get [find where mount-point=\$awgDis\ + k] free] } on-error={}\ + \n }\ + \n :if (\$freeStorage < 262144) do={\ + \n :put (\"WARNING: Low disk space (\" . (\$freeStorage / 1024) . \"K\ + B free). Need at least 256KB.\")\ + \n :put \"See: https://github.com/timbrs/amneziawg-mikrotik-c#insuffi\ + cient-disk-space\"\ + \n :error \"Insufficient disk space\"\ + \n }\ + \n :put (\"Fetching: \$url -> \" . \$filePath)\ + \n /tool/fetch url=\$url dst-path=\$filePath http-max-redirect-count=10\ + \n } else={\ + \n :put (\"File already exists: \" . \$filePath)\ + \n }\ + \n :local rootDir (\$awgDisk . \"/awg-VDSina\")\ + \n /container/add file=\$filePath interface=veth-awg-VDSina envlist=awg-V\ + DSina-env hostname=awg-VDSina root-dir=\$rootDir logging=no start-on-boot=\ + yes comment=awg-VDSina\ + \n :if (\$minor > 20) do={ [:parse \"/container/set [find where interface\ + =veth-awg-VDSina] shm-size=4M\"] }\ + \n /file/remove \$filePath\ + \n :local freeMem [/system/resource/get free-memory]\ + \n :if (\$freeMem < 16777216) do={\ + \n :put (\"WARNING: Low memory (\" . (\$freeMem / 1048576) . \"MB free)\ + . 16MB+ recommended.\")\ + \n }\ + \n /container/start [find where interface=veth-awg-VDSina]\ + \n :do { /file/remove [find where name=\"console-dump.txt\"] } on-error={\ + }\ + \n :put \"Waiting for container to start...\"\ + \n :delay 5s\ + \n /interface/wireguard/enable wg-awg-VDSina\ + \n :put \"WireGuard interface enabled\"\ + \n :put \"Installation complete!\"\ + \n :put \"Ping test: 109.107.177.79 via AmneziaWG tunnel. repeat 10 times\ + \"\ + \n /ping 109.107.177.79 count=10 interval=1\ + \n :put \"\"\ + \n :put \"======= NEXT STEPS =======\"\ + \n :put \"\"\ + \n :put \"Route specific traffic through the AmneziaWG tunnel:\"\ + \n :put \"\"\ + \n :put \" Route a single host:\"\ + \n :put \" /ip/route/add dst-address=8.8.8.8/32 gateway=wg-awg-VDSina \ + comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Route a subnet:\"\ + \n :put \" /ip/route/add dst-address=100.0.0.0/8 gateway=wg-awg-VDSina\ + \_comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Remove a route:\"\ + \n :put \" /ip/route/remove [find where comment=awg-VDSina-tunnel dst-\ + address=8.8.8.8/32]\"\ + \n :put \"\"\ + \n :put \" Show all tunnel routes:\"\ + \n :put \" /ip/route/print where comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Uninstall:\"\ + \n :put \" /system/script/run awg-VDSina-uninstall\"\ + \n :put \"=========================\"\ + \n}\ + \n\ + \n# 7. Verification\ + \n# /container/print\ + \n# /interface/wireguard/print\ + \n# /interface/wireguard/peers/print\ + \n" +add comment="wg2awg GH repo in client mode" dont-require-permissions=no name=\ + "wg2awg client" owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:local Arch \"amd64\";\ + \n:local Version \"0.4.0\";\ + \n:local WorkDisk \"sata1\";\ + \n:local Name wg2awg;\ + \n:local Bridge (\"Bridge-\" . \$Name);\ + \n:local Vetch (\"vetch-\" . \$Name);\ + \n:local Env (\$Name . \"-env\");\ + \n:local ConfDir (\"/etc/\" . \$Name . \"/\");\ + \n:local ConfFile (\$Name . \".conf\");\ + \n:local Mounts (\$WorkDisk . \"/mounts/\" . \$Name . \"/\");\ + \n:local RootDir (\$WorkDisk . \$Name);\ + \n:local Registry \"https://registry-1.docker.io\";\ + \n:local FetchFile (\$Name . \"-\" . \$Arch . \"-oci.tar.gz\");\ + \n:local FetchUrl (\"https://github.com/WoozyMasta/wg2awg/releases/downloa\ + d/\" . \$Version . \"/\" . \$FetchFile);\ + \n:local FetchDir (\$WorkDisk . \"/dst/\");\ + \n\ + \n#:put \"\"\ + \n#put \"Add ram disk tmpfs\"\ + \n#/disk add type=tmpfs tmpfs-max-size=100M slot=ram\ + \n\ + \n\ + \n:log warning \"[::::::::::::::: START :::::::::::::::]\"\ + \n:log warning \"Add veth and nat...\";\ + \n:do {\ + \n/interface/veth/add name=\$Vetch address=172.18.0.2/30 gateway=172.18.0.\ + 1;\ + \n/ip/address/add address=172.18.0.1/30 interface=\$Vetch;\ + \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.18.0\ + .0/30;\ + \n} on-error={}\ + \n\ + \n#:do {\ + \n#/file add type=directory name=\$Mounts\ + \n#} on-error={}\ + \n\ + \n:log warning (\"Remove config file \" . \$Mounts . \$ConfFile . \"...\")\ + ;\ + \n/file remove [find name=(\$Mounts . \$ConfFile)];\ + \n\ + \n:do {\ + \n:log warning (\"Add config file \" . \$Mounts . \$ConfFile . \"...\");\ + \n/file add type=file name=(\$Mounts . \$ConfFile) contents=\"[Interface]\ + \nPrivateKey = 4CHyNhbOs923/EyNDguMXJXdghL2I3UyzXPwrANVgHs=\ + \nAddress = 10.9.0.3/32\ + \nMTU = 1280\ + \nDNS = 109.107.177.79\ + \nPreUp = ip route add 109.107.177.79/32 via 172.18.20.1 dev \$Vetch\ + \nPostDown = ip route del 109.107.177.79/32 via 172.18.20.1 dev \$Vetch\ + \nJc = 9\ + \nJmin = 105\ + \nJmax = 920\ + \nS1 = 90\ + \nS2 = 136\ + \nS3 = 45\ + \nS4 = 27\ + \nH1 = 472437748-472438637\ + \nH2 = 707808381-707809250\ + \nH3 = 1609078552-1609079495\ + \nH4 = 1012329484-1012329741\ + \nI1 = <\ + r 4>\ + \nI2 = \ + \nI3 = \ + \nI4 = \ + \nI5 = \ + \n\ + \n[Peer]\ + \nPublicKey = o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\ + \nAllowedIPs = 0.0.0.0/0\ + \nEndpoint = 109.107.177.79:55055\ + \nPersistentKeepalive = 10\ + \nPresharedKey = RNvF7T1cg5tyXcYQnD9N5BEp6e20vVJQTv0GMjyvHU0=\";\ + \n} on-error={}\ + \n\ + \n:do {\ + \n:log warning (\"Remove mounts list \$Env...\");\ + \n/container/mounts/remove [find list=\$Env];\ + \n:log warning (\"Add mounts list \$Env...\");\ + \n/container/mounts/add src=(\$Mounts . \$ConfFile) dst=(\$ConfDir . \$Con\ + fFile) list=\$Env mode=ro;\ + \n:log warning (\"Add mounts Environment key AWG_CONFIG.\");\ + \n/container/envs/add list=\$Env key=AWG_CONFIG value=(\$ConfDir . \$ConfF\ + ile);\ + \n} on-error={}\ + \n\ + \n:do {\ + \n:log warning (\"Remove \" . \$WorkDisk . \"/tmp\");\ + \n/file remove [find name=(\$WorkDisk . \"/tmp\")];\ + \n:log warning (\"Add \" . \$WorkDisk . \"/tmp\");\ + \n/file add type=directory name=(\$WorkDisk . \"/tmp\");\ + \n:log warning (\"Container add tmpdir \" . \$WorkDisk . \"/tmp\");\ + \n/container config set tmpdir=(\$WorkDisk . \"/tmp\");\ + \n} on-error={}\ + \n\ + \n:log warning (\"Download image from \" . \$FetchUrl . \" and save him to\ + \_\" . \$FetchDir . \$FetchFile . \".\");\ + \n/tool/fetch url=\$FetchUrl dst-path=(\$FetchDir . \$FetchFile);\ + \n\ + \n#:log warning (\"Container set registry \" . \$Registry . \" tmpdir= \" \ + . \$WorkDisk . \"/tmp\");\ + \n#/container/config/set registry-url=\$Registry tmpdir=(\$WorkDisk . \"/t\ + mp\");\ + \n\ + \n#/container/add file=wg2awg-arm-oci.tar.gz interface=\$Vetch envlist=\$E\ + nv root-dir=\$RootDir logging=yes;\ + \n\ + \n#/container/start [find where interface=\$Vetch];\ + \n\ + \n#/interface/bridge add name=\$Bridge port-cost-mode=short;\ + \n#/ip/address/add address=192.168.100.1/24 interface=\$Bridge;\ + \n\ + \n#/interface/veth add address=192.168.100.3/24 gateway=192.168.100.1 name\ + =awg-proxy-go-client\ + \n#/interface/bridge/port add bridge=docker interface=awg-proxy-go-client\ + \n\ + \n#:put \"add config-client.json\"\ + \n#/file/add name=sata1/mounts/awg-proxy-go/config-client.json\ + \n#/container/mounts/add src=sata1/mounts/awg-proxy-go/config-client.json \ + dst=/app/config.json list=awgcfg-client\ + \n\ + \n#:put \"Download image, and save him to sata1/tmp/awgproxy-0.0.1-0034-am\ + d64.tar.gz\"\ + \n#/tool/fetch url=\"https://ros.vados.ru/amneziawg/img/awgproxy-0.0.1-003\ + 4-amd64.tar.gz\" dst-#path=\"tmp/awgproxy-0.0.1-0034-amd64.tar.gz\"\ + \n\ + \n#:put \"Add container\"\ + \n#/container/add file=\"usb1/dst/awgproxy-0.0.1-0036-amd64.tar\" interfac\ + e=awg-proxy-go-client hostname=awg-proxy-go-client root-dir=sata1/awg-prox\ + y-client logging=yes start-on-boot=yes workdir=sata1/docker/ name=\"awg-pr\ + oxy-go-client\" mountlists=awgcfg-client\ + \n\ + \n#:put \"Start container\"\ + \n#/container/start awg-proxy-go-client\ + \n\ + \n#:put \"Add user:\"\ + \n#/user/add address=192.168.100.2 group=write name=awg-proxy-go password=\ + peskar55\ + \n\ + \n#:put \"Add forwarding port web-ui\"\ + \n#/ip firewall nat add action=dst-nat chain=dstnat dst-port=8089 in-inter\ + face=ether1 protocol=tcp to-addresses=192.168.100.3 to-port=8088\ + \n\ + \n#:put \"Add native WireGuard-server wg-awg, add address.\"\ + \n#/interface/wireguard/add name=wg-awg-client\ + \n#/ip/address/add address=172.17.0.1/24 interface=wg-awg-client\ + \n\ + \n:put \"\"\ + \n:put \"[::::::::::::::: END :::::::::::::::]\"\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +add name=manager policy="local,ssh,ftp,read,write,policy,api,rest-api,!telnet,\ + !reboot,!test,!winbox,!password,!web,!sniff,!sensitive,!romon" +/app +set cinny firewall-redirects=8094:80:tcp:web +set goaway container-command-lines=goaway:none:docker.io/pommee/goaway:latest +set home-assistant container-command-lines=\ + home-assistant:none:lscr.io/linuxserver/homeassistant +set n8n firewall-redirects=5678:5678:tcp:web +set nextcloud container-command-lines="db:none:docker.io/postgres:17,redis:non\ + e:docker.io/valkey/valkey:/bin/sh -c 'valkey-server --port 6379 --appendon\ + ly yes --requirepass \$VALKEY_PASSWORD',server:none:docker.io/nextcloud:ap\ + ache" +set pihole environment="pihole:FTLCONF_dns_listeningMode=all,pihole:FTLCONF_we\ + bserver_api_password=password" +set redlib firewall-redirects=8087:8080:tcp:web +set solr container-command-lines=solr:none:docker.io/solr:latest +set uptime-kuma container-command-lines=\ + uptime-kuma:none:docker.io/louislam/uptime-kuma:1 +/app settings +set auto-update=yes disk=*7 lan-bridge=*3 registry-mirrors="https://reg.vados.\ + ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man configuration +add channel.band=2ghz-b/g/n country=no_country_set datapath=xs-DataPath mode=\ + ap name=xs-2G rx-chains=0,1,2,3 security=xs-Sec ssid=vados tx-chains=\ + 0,1,2,3 +add channel.band=5ghz-a/n/ac country=no_country_set datapath=xs-DataPath \ + installation=any mode=ap name=xs-5G rx-chains=0,1,2,3 security=xs-Sec \ + ssid=vados5g tx-chains=0,1,2,3 +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX .frequency=2422,2442,2462 .reselect-interval=20m country=belarus \ + datapath=DataPath datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes hw-protection-mode=rts-cts installation=any name=2G \ + rx-chains=0,1,2,3 security=WPA2 ssid=vados tx-chains=0,1,2,3 +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX .frequency=5180,5200,5220,5240,5260 .reselect-interval=20m \ + .skip-dfs-channels=yes country=belarus datapath=DataPath \ + datapath.client-to-client-forwarding=yes .local-forwarding=yes \ + hw-protection-mode=rts-cts installation=any name=5G security=WPA2 ssid=\ + vados5g +/caps-man datapath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + xs-DataPath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + DataPath +/caps-man manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes require-peer-certificate=yes +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=BridgeLAN +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=g,gn,b \ + master-configuration=2G name-format=prefix-identity name-prefix=2G +add action=create-dynamic-enabled hw-supported-modes=an,ac,a \ + master-configuration=5G name-format=prefix-identity name-prefix=5G +add action=create-dynamic-enabled disabled=yes hw-supported-modes=ac,an,a \ + master-configuration=2G name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled disabled=yes hw-supported-modes=an \ + master-configuration=5G name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set crl-store=system +/container config +set layer-dir=/sata1/docker/layers memory-high=200.0MiB memory-max=4096.0MiB \ + registry-url=https://registry-1.docker.io tmpdir=/sata1/tmp username=\ + amsternl +/container envs +add key=AWG_CONFIG list=wg2awg-env value=/etc/wg2awg/wg2awg.conf +/container mounts +add dst=/etc/wg2awg/wg2awg.conf list=wg2awg-env mode=ro src=\ + /sata1/mounts/wg2awg/wg2awg.conf +/ip smb +set enabled=no +/interface bridge port +add bridge=BridgeLAN interface=ether1 +add bridge=BridgeLAN interface=2G-MikroGig-1 +add bridge=BridgeLAN interface=2G-MikroMaster-1 +add bridge=BridgeLAN interface=5G-MikroGig-1 +add bridge=BridgeLAN interface=5G-MikroMaster-1 +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface list member +add interface=ether1 list=WAN +/interface wifi cap +set discovery-interfaces=*DF +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=BridgeLAN network=10.30.30.0 +/ip dhcp-client +add disabled=yes interface=ether1 name=client1 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set disabled=yes interface=*3 lease-script=\ + lease-script lease-time=10m name=nucDHCP server-address=10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=10.30.30.33,109.107.177.79 \ + verify-doh-cert=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add check-gateway=none disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + BridgeLAN routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set reverse-proxy disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api-ssl disabled=yes +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=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=*3 type=external +add interface=*B5 type=internal +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/special-login +add port=serial0 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +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 +/system scheduler +add comment="Every Day Set Global Environment Variables" disabled=yes 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" disabled=yes 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="Every Day Check For Fake Bridges" disabled=yes interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" disabled=yes interval=30s name=mod/AM-TG-Bot \ + on-event="/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + disabled=yes interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-06-25 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260703/20260703024001-Diff-Config.rsc b/MikroNUC/history/20260703/20260703024001-Diff-Config.rsc new file mode 100644 index 0000000..265dd1a --- /dev/null +++ b/MikroNUC/history/20260703/20260703024001-Diff-Config.rsc @@ -0,0 +1,60 @@ +58a59,60 +> /routing table +> add disabled=no fib name=to-awg +5052,5053c5054 +< \n:local Arch \"amd64\";\ +< \n:local Version \"0.4.0\";\ +--- +> \n\ +5063,5068d5063 +< \n:local Registry \"https://registry-1.docker.io\";\ +< \n:local FetchFile (\$Name . \"-\" . \$Arch . \"-oci.tar.gz\");\ +< \n:local FetchUrl (\"https://github.com/WoozyMasta/wg2awg/releases/downloa\ +< d/\" . \$Version . \"/\" . \$FetchFile);\ +< \n:local FetchDir (\$WorkDisk . \"/dst/\");\ +< \n\ +5139,5144c5134,5139 +< \n:log warning (\"Remove \" . \$WorkDisk . \"/tmp\");\ +< \n/file remove [find name=(\$WorkDisk . \"/tmp\")];\ +< \n:log warning (\"Add \" . \$WorkDisk . \"/tmp\");\ +< \n/file add type=directory name=(\$WorkDisk . \"/tmp\");\ +< \n:log warning (\"Container add tmpdir \" . \$WorkDisk . \"/tmp\");\ +< \n/container config set tmpdir=(\$WorkDisk . \"/tmp\");\ +--- +> \n:log warning (\"Remove \" . \$WorkDisk . \"tmp/\");\ +> \n/file remove [find name=(\$WorkDisk . \"tmp\")];\ +> \n:log warning (\"Add \" . \$WorkDisk . \"tmp/\");\ +> \n/file add type=directory name=(\$WorkDisk . \"tmp\");\ +> \n:log warning (\"Container add tmpdir \" . \$WorkDisk . \"tmp/\");\ +> \n/container config set tmpdir=(\$WorkDisk . \"tmp\");\ +5147,5154c5142,5145 +< \n:log warning (\"Download image from \" . \$FetchUrl . \" and save him to\ +< \_\" . \$FetchDir . \$FetchFile . \".\");\ +< \n/tool/fetch url=\$FetchUrl dst-path=(\$FetchDir . \$FetchFile);\ +< \n\ +< \n#:log warning (\"Container set registry \" . \$Registry . \" tmpdir= \" \ +< . \$WorkDisk . \"/tmp\");\ +< \n#/container/config/set registry-url=\$Registry tmpdir=(\$WorkDisk . \"/t\ +< mp\");\ +--- +> \n\ +> \n/container/config/set registry-url=https://registry-1.docker.io tmpdir=(\ +> \$WorkDisk . \"tmp\");\ +> \n\ +5275c5266 +< registry-url=https://registry-1.docker.io tmpdir=/sata1/tmp username=\ +--- +> registry-url=https://registry-1.docker.io tmpdir=/sata1tmp username=\ +5293c5284 +< set detect-interface-list=WAN internet-interface-list=Internet \ +--- +> set detect-interface-list=all internet-interface-list=Internet \ +5302a5294 +> add address=172.18.0.1/30 interface=vetch-wg2awg network=172.18.0.0 +5312a5305,5306 +> /ip firewall nat +> add action=masquerade chain=srcnat src-address=172.18.0.0/30 +5320c5314 +< add check-gateway=none disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ +--- +> add check-gateway=none disabled=no distance=2 dst-address=0.0.0.0/0 gateway=\ -- 2.52.0