From 08b837f10f1474049be07e6584ac777bc0577b8b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 19:20:54 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 19:20:54. --- .../20260515/20260515192001-Binary.backup | Bin 0 -> 242677 bytes .../20260515/20260515192001-Config.rsc | 3409 +++++++++++++++++ .../20260515/20260515192001-Diff-Config.rsc | 40 + 3 files changed, 3449 insertions(+) create mode 100644 MikroMaster/20260515/20260515192001-Binary.backup create mode 100644 MikroMaster/20260515/20260515192001-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515192001-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515192001-Binary.backup b/MikroMaster/20260515/20260515192001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0c6a3bf612be3994bf86f856ba9c2d5dc64158ad GIT binary patch literal 242677 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≧{Vi0w#5#&*E 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ĭ(sBy|{#GP+0_7yAR;J+3X$l*4E5UA-GFYeIJY%asT^CvoAN z4M66!N7jf5aAIpf17zvN0^j?PEb3ZC!wJieL@4X(IZPQ(TcfFoz;@Sn$B0rpC3-!F z5S)CZL$-6p?W$3HO}P|WOLhVmb1@&(S%Xc>(%huy| z{9kLUQzBh1>HCd$5nAPv9u-0U@w#1S{L)UY*FlV?_f4s$PD1|wRlKtCigXzdN=dKT zl6+hsAkUptu-_tSZWHFW+qs2)$DBHEIIlBN*ZzH}AQ$cFuN+1aYqf-FRqFgPpe@_l z;2XLr%AIzxl`e(G-IP`ug|9#!YRL6Le?pH7SY*+azyUT0$cXZhO9BKKu^OyPI>1tq@@p=Xc(eem47E#S zNMaK~nd!q6DtmWp8@EIVHyqJZxxoFd@}v#bY%x|_r+RYr&zQR_7^|Kr$SNgo(b+0GrMCgL?GXDWVpR^J4VLr}Wk z7KC~?Qm)lI6P@w7QEaFgdV4YZqz_We)Bt9i#oGIk#WbH!EUZOFn<4KBbBjI{6 z;%aAac0k4gR$*Ez5`i|}#sy_iU8Pe+ouUdp4_oMaM z7Zi7?a|0t(>MsR*10Y%{H8m6m+Gpnd<8tWTO}CdQrweKnQ9|q3Res9+e_%q- zM2JO)ORm%4#X%`+*8FK?|Dc=>EARl#e&M)NYmmwor^4E1vL4I$We2~<76D}qc+Hqd zBs129myK)(ibHN3h!Q|oUI#(eIW2pzI{dmZUEmO-Q+kZz4^8_^bs-<%xc6$(4G`Zu zVEXKlgb1SZdRo;btvb4WzI_3oKmUW#EukIi{h0EN@Q{YZ!>#WJO^j@0wC+kYp-%!t zxe_bG9y$;)?*8Nblm8pRejUT%TN=!J}wX+6dnL&7|>ecOS# zYfkti7B5sHwl$4y`=4S?;Lf1%qy+Niq+8eAg6bnSiCzbWZ!=By?pMu3I7r`bx+|9C z`X}79(*<4f-wK!y*@wX!I@^HXq1JFVQj7aKzti=wojilU1_4|Q$v3Qz(YQsw#`x|v z_bN)*>sduhfXLBA5MB~ZFB$kIu>2rYa_&TB(8vR5;Stn+@~yh4i}JfagmkwXxL@Nc zKkM6r?Q5{2^Gh1(HrikVCRX(Tp+XgIcb#HJT-JnTyoIQ?K@%ufPGq}(9-CdQ!)O(# zV!1DTNvLDDzv9Ys`fpn%z@xZ|{Jm{la7(@1t=C0FkDm@XJ($dan1aYCm4R3a!3arq zCG&yBy@TB`M3++yi-4@sF4*9&wOW9bK)o~Pt1RO07z*fAg-AouIy8IqD@hZU`!ZHJ zPmWfmtLo(8kErz5B4_NOwucIAevxGs4ylZZ_p8<1-}pA((&fp&NV%`(<&sUoZWPVz z`@d)l%2ar+x0={GYiMMa2#sM-6~WMRkKJIpP&MAj5vrQKLF;6*Rq&@eBiQfv|5rmA z)lK}~=Y#wYVtt@vF?MyB%nnxWL{66`VZT4AN+2SNN-o_Nc$JsbTy>>WRj+dA(1g|Z>aAX4)p><1 zxfE513r(9qAUtG_j~|5RV06)xqJ3Eed@71#RoO)0qS=%Z>c-5$j;)d=qF#7hS5$=e zQAt?p5yPTG&+E7W2U(_$8BKRua2EKLg(4~zcdK@SJaV)ZX^?p@|ti9ED zDHYqdAvNF@7(?zROA10jD0AF~-JbfK9oavUgN89AS4N`co)1YRQU;hpv2=MrfeNG7 z!lQY|p1QFQCA9uXfEuQ2Eu>SselN3F{`)Yb0>1%((Y06}sIci-8^*Hr$X8?0n`Ri>&Br_Z6&X}x4ki!ES>K$C*oWH6dX=AUOP+OLH)=b>? zQzVHP0LOc)h)Fm);FpexXk`GWWO#tYn8nj)jeNDcq1-Pkj-B>+D)puwoLT4-dU`5? z0!a(?S`Exa4q-ql<+T1q{z*drD(sX21}+ibs-hH>b!8v{hRtPw-YL!}v-p$3=|j@hos6RNp3? zxPDW?UWjBrqX`5;Z};c|g!z%Cttd?+Z=J{8=h8DjCo#IIx>$p<##{3y%u`VyFxiOZ z7Jh}aKHVAm;11N&{nVfTP6tQz^$@#s82NcURchItB}&|7S-tJ}COF$i)oL60^)Ft1 zNSuC%)?Zx3U1jy7{C7MUXlqQ83<%?!^hj#XDA!~0{^~HZ@kJn0^Ol54s|dQahlJ1E zUNV_d5#Z4z3uZ7{!M0$`{}t3Mz0*O1Y#m3aBRw~7;P?I`Y#6LLw&a8ADmOnb0F|;@ zQ^i+KVBM|#P{qncGvSxz%_O-z1L5aYB)1HPUw=qRsM>`8XyjgQf?-EOhP5B|QHTNU z;kFOOv80^C{|5a?93Px(?c+klE_iMCW0(<=ju2u%d({Ixa51RR18;E6KL7-fCc zlg%prvTke(uuYm|PA)MFa`ZL3@Dl4iJ#{MP$Nag3YCX8x+h`F?>WBLRDfwC!FzLrJo0QdnA~`yBND z(txs>F78B_V!0Y7b!M*!!*O^lSF6Kzzo+l;V?kh@{5|=82C=iP3e##CQtx25!U!rh zhY{36bCyy`xp>rSyTo#gL}q!H3A2>mD!(DCjB#Qc^b#+VAVIN>f9~($#wfyQTSjp8 z*b{8bsVc3?{`kMgF$)d&*Jhh`BD@wl`0XA7P7m>W#{?mqNZIAR>cbJNm##6=UQ`fZ z;mc}EFPCzl&>E1F9$T_mZxtr(*MaKz3EQefgFi4_?Boon?@P*aMtME4dl??AI z<1OukL%d)?j+Mu@t2~;^a;cXpmc!;K*Nmiggu^j8;Ea~THN8kj?(rZr-x>WMqg3#y z;r^6S-wdRjcQG#rY*kNr%8S4RL}mkkm%G;{;_NQfmJ(0{f-Z;$+HEfaw|vXsws`Za zu2#Yn@e4H)8;{X)+u|P^x4MIcUg z{9#4&q*enuf!vS&q``6ti0i5F^j%mYgh!!B!?TU#HX;AK&fUG~w83nPMn#O$>){c= zu^U!CMe@%i+s;#zC`>3m)`qqF+DBpGMR%x}{0Zzc&4qaV$Tiyrb>>9vv6PNm&A7nA z_R+}1C2gEUj;CaH@c zUpXuAAK#|~y^;Gb9XNB#vESufgVv@;^g82DTl!4>?)PG& zwjY`%!h?Sz>T6AeS0hJ+yZwH%FuK}dJW+y?$1Y#6aYKO8@m~ zK)I2q-PI1(OVk7ZI(U%fSOIbmO5<}OI0b|4mCj$V{f;w8gbU$~LFAtK3j|M)g-z;< z^^8-_pwOZ?Bt8r7POubVeFSV;$lxvjf>!;(e0mC0+je-!>q^@5cHWPdC7K~_h;@9^4W=g%FF*o#bQ;=qv(qx7L%p{ zKLel(De2TJb5Ym7`!CME|ID8X6~D;VK0S5N%l;9#ArwzQD9Kc!6SK}c@bUOg3k!+H zF)8k0t)S)0puqv0jdB(&Hk`%6M)PZw8%on-YyKJA`{;P&>cV$5EMaf9DXiVmYF8|c zq*BfQ|wS6o7`Nd0=tUuKJ7&vu2${ ze#!|S>-W9B{MSBo1 zv!k=@O(ZZ9i2S`_1M4{DTg0N8Vpl#lhW0il7*zwL=0THKI0!M4mRSL)i^zOB$a}paUI~hhI#=v*@SMT9~Pr^bxKBK_w@G}t5Uo}avp(6g~Lwf0t4@;%}rt3X^ZB#*(%uaX6{9N zF8gT5@ucCog@Nt$K?ONAFdPX6IZFvNV_CNA`j2QM_svzty|%cK;2`Cxou|uKTQtzq zo&Ow7Q4TjFQeB6J!-(h5rJJJWm>MhP984aWYjghP@^Kz!XbQ`>)$(Jz1Zr`-rVo58 znk#-t1xM?p;~T>}>p_V-0?FQpOQ^H%u7B80gMVtdIg;>6F`4-elvJuuy(91X{?I?h z!ypuDz15elc2mG2Cuj~(<=HM3w<|d8=P?0ybBl6zh7g18TN+BNY%6`{DZn-mL?O|e z^)+`3E=Mp5{**n!H+A^W*Jo{oXzz6kTTP(#5u1HjZcm#&ah%Yq#~|SpyAbMFXAUYctTVJS+q-J*9TDU-rvC3_*w*stI-7*LiusU=`RwQp1t)*xA2$ z_f?Mq0(1n!28GXa;=|}YpUeHj#OnO0E)3amSQyn?#zyc=zykBUtscK-)02Ie8~Ezv z^;{=UO!^LvwOOd9H+rRUf4#Y9DrE9x>-k)~mGKpYR!yxin!sP-UX2U?_jz+srWeeV z8W`@73NirVUc_<6*wLd{xoP1f^N0%HRLKx(3!=3V-!PUWC4Y`UmlPTk6gby_lDH|P zA6*)_-{)%}yQWpD?jAa3fE-!TiGM@Xc7+3i)S9$mm4}x#d1P1#Mzw`MN(E_k?Hq+U z)o{SmbQ)meeDx?Ct@w0#UV8)APt)7dO`Kg*zboyaQb}_Nl_%md*js3TA%bVbYSkMD zGNu*kOFCCFKXy{FW#y_n=HO6#J`th3C%kE!W#mpvzIV%4bdIN=U~>d`A%cn4efCNf zQSNWPrYof0=AOtA!2x+OX%+EP9LH`%@g&UX>?(NgpSrXSD+k$$I$Y0Q#+B?Na`@ph zn<93%;JC2!v|odLf}F+NjlcW9?EzPh@o%ZwEzP&%{Gh`{Izft(|R>I}zZ>+Ya z(R>)5OQQgy(hE4^K%t;mOc#>vg~1{U+^c~|`bk@S9nOdJXwZR|CW~`847Ro|dT4g$ zW{_IoW?cvBNj9d|{tUe#aq#A3WLCcuaejp^abyfI@#52FMH7i4jj8(_qd6^w;%jthu4ItYVryF~uMRH=}oJ<~=Lu!Vr zS}D1~NsJ;koJ%D&&#!?@PyhmS&r@UlxsX7iP z@`BSdseN#DKgJG#9G~6NL@V(6iR_bse-Fo613W#YK0@vre{OVf{ed22M0Lcr3=LeU ziUv5baI@kE2ub<&YjI%3c7a+4(N#`i%ses29;8&K!d;bIN{Gm_rz3#*D5yQ*R|KBN zUV39duCLsfnL}{ob2-hLt`{h;`A&pj^5ACgKS)agD18(^-MQa8)OT~G*4Is#)BrRV zIkNUUfbp0l)DJ6sUx3NVX%DeL_h%0!ZT^?y$oYoFk`CRz-4eD8()y%3CHKgXHba4I zgz#=rr?p@>?@T~*qM%Z-M?dpcBD56X$0hbaq))0D?FzYac{a7oKF|-t%@B6vXaSzpi~u4JvG8xQ$#q#Rr;G;#U@R zWhGE6RXuzW%eZYc$@kg~`9vU@Be?xrd&JO?qK%l&Sx}Ny1AGCR=%8;e1KL z=#T-=D~KUBZXlXDjq{4rL8e5_K|D8u6V{qcqgy&GztUOas~+HS2~VLu!eFL^9CDA9G!g_@^az^QP!$tbR< zTaF8~)SMG(*kQ>AJ=D5t1un)_)s}U5^ln#%t60bgE$|z!RUiyiaPNZ*SN3(j=sKDm|+LJK?3l%tNBW<7VDQ2yM!*fTR@|%bg$rw5<}{UqjExaOHK; zA7=rfK=0bUM@tJWqB(t1xA;NXQG=0ChQ?F8)b3a$_iW&WYNc^z;w-q8h})8m2|BiR#r zkZrA;5qKBKzeIT$2HtN*Pvy7YP)RS#my#pyBq)L1ra@s7b#LG~=kV&bWv zMEUp03=(s}diakl+BjeIon0!2rj7av9hCIjK}3E^>b2e@gm(q(i89it$ja$cX8mdt zFMzR!TYixv_Y;Mpd~KA9?e@F$&%MSACH<>_re;Dqs^h>Mk3HSzJB?@PC_!CgejJV= ztw^y$*!d8~>B;KW6H`^&S;{To3s3AFU@3#% zg^b*?Y&!;=bP@bg427G#ViS+jkAS3E8?X>#iN(b5o2nW&-!su0!dggRroN9#X6Qge zdy--hUco8ikkrcYYJz%ZFxTtFZxeZsCnDp_V1y<6!y->rUYHFDgDr-PtorZn!UQr~^tB9DCcvmDHc3=tDZV zaB}rg(e;;MY{nq+SWFd=0^!$;T3X6$Ks1wLa|HG7<9k2bv$2ZlP`MPLV5w-x!=1v+ zq|kzG4xtYrnN5?%`|&Q(AIb2RlJ5VlVF|nSv6*fCswUuyb~+QWL~Tdb%|cBhfZS=b9|sdg=HkoJ z+k<#_fH5CCkuETXp#j9!p1)BB$8P7J4g=kD*F%05inWdCw`QR5$T^k36ECz=jUZPn zYM`=!n@)@M=OEO9nRs6ksgbR%^oRlUmaZ886@WqC3vTMakg~V(Cy;1WtO1$g& zy`A<*n_Df!CZ8+FPIM;BA_s`0LB&G*A zYcI*gVyQJIFj0fdA~R4typAGiXT#OT+OKT;qCeJvcaIWW$sP0d5I!XndD9Ydik6@? z)Y*AE9uQ3W0wV+ooC+}Ro~mqGZVmwdKLEg?5Um_>8Dg$2G0@Vn#};&jperz$Rj3?m zcm{wU-+MOzfw{#tP5=mVr6j2J7J)s3@@w(CWxX?{*B94rGc`&^E*`2`LND0z8^KY% zpM|EnKa$6~-lAIq5GlH=)y6Fk?fNFb@73{TEYtloB3h`}ZpfDtfIvN<-Sqx2(b*-n;Q!9@&b|gH5vf}JcTC{rzVrA+1Vu;C;A+sSE49*_njBJ%}T$`)&2#K`&`Fpvy70Es9OorG0Jf8G#iaR?h2H>_ z)&gHG^2lr)q9ZV9;kTcT&n|MD&U)rE)&$Q;wP0rsLZSnhT>u-Dd(8L(nbjtU;MIb_ zJHN+);y~S(JE`Wd+)?f8t8lQJ(_q4m*=CsTHttaAFH^}G(Td$YHf~Dq4{jY#rGPbM zzDtIGJ0s>ixB~S7t86U|AkJ~z($`xweW=a^N0t(Q*q1UFnSiuLx!k$&Uyzd$qmj;P zcE)rv64+J%q^AD=xw{jryJJn*xux6{O6wUjf1}Wa2PXgIT25@#Op*;Z{lSsayQ7tf z!ia$I0@rS7S0ZZPn?0NX435pd6r-go-uU&~VHLyx{88%wg(Baav<(z=_53%={<2C|N>RA3fM;e%-GGsZEK8M5^O14?b2qy2MFMr+0M@u=tF3k>kj>;*3BdsF_7%pr%>w9TpXQtXg}_@SJo{v8{og1oDDQJ=LkDW4XY_C zqRpNeHQ*q(R4znwPB?C3@lU|*GBHmuL=2cRpEQ4BF2XQ*)Y6f(Eb>d(#Yj@FbAwUi zLT_nunsAmjrfWxf@ZEjgB}65quGA@L%%>1Gjv{2JI4@=@oJkIt}r_w%Y@|KBZF;^4?2+bq-dCy?y_B zFYK)sNSB=Cz1N8L8I|)13vCM?#H_=o12;xD){rDR5EH6j7YPS)&5<5hDDO0&wma}& z{hz3kDY<&&0~)l;h=mM`xWP_B6mWQXM~lE>!X?;`tv;p$9Y0NrRrcu}f zUh>a@b?S)CGjyk=k1yNL-ddy8*wtMGAg_g3%YCSNNANnh%du&Fbb04t&_3|dxx|Ew zCGxNw3cQvs$e2nevbZ;mojRjCNH0X-6A89#P-qtjPPrG_*B#3vbno@ut~EZ%c%CKGz;bE`Y7r#5GbHP&jr!+2Qh2NNFE}_SD{3x^8}1z)%bYl@w@Cb zrg#kok{gK(nq6jvgG#NPu*PD|-S2!x3js>JjNK{9#Ug(FS#&}btRO`sMu5kVaf>)U zPsuU0NJ1}IuzMV&%m7Pyqj}}Mm`72_6WaM(g%=KMYh4R7fAg3)NzW_$okPY=NG*fz z=;SK9m)R6`<%{JTnkiuSkjoEo(N`EVp6nX`4}}wA*zk3nIC%PJ7{09gtLh({D-|cw z)cUIBW)xXi)_mz_XqIVy8vx_nW!H$R%(bdSC~Pfpd!a3QBmY0$LT?I00(R}?lZp@c z%o|8{AC9bU?3H4YD%3A_sgPY0iQi0A6GumG(fXmlt)bOdeV*G|V8KZuzwI$(Wyk%; z&^A8`>qK9f5Kenz`m4Mi5tQk4i>njMQ{CRcX8XBWs*_S6#JIMpfOipbDT=31YJu{7 zCz%)B)}iexIyR`IW|!s2ne*S^MAscg)jB0{&I#&LfYp8sdavp=I#y(j;riq}Ei zN*;-eT%2V1p}OgsO(vK*Ft!Nstk1{w79_X0wgWW9l}Lh8Nbv9)nO!4Nx%J=dcQOd3 z(+Vg3oKW4??%Cs6W}Af*iD`zF=L)vSW6*Vi;##;WeS8m`RnpD~1qf+v1`r;Vhk0J` znzKImkeK7{o}GW09>;9I5hPr05r_*SCVHR>dx9ZXZK-TvA~Z?aBV#;; z866J}7ElEv6{HM)FmWZ;BN+`seE^CC!k6k%5ApD{hsS{*fpI2Sx-IqA6 zcxg$LZamNaHw9wj{!WIH&MlHQ$%o!lLzF}IZO z&H >?=7~MxB1V4?7^oAAFIRg=ywzK4ycC5*|C94=NWKd*f;6@U?&ki*lvGGC!@r z!B}^b;vAovj~{J4$T#2}=+e2~`TBI$;!QGNKsr`=Qq=qts~twHnmOE7!aExjI)}VM1HV$l$9ePBf-b&sF%ycd%>e{0F$y;VsSMT5YoR<0xqTRVe;e3jEMx1A`EY7p9eqkXn9|BGU3B zAe(zV%Ot}e0=>8Z0CLq9D1HqYL>1JoH)s=d0$rzn+|Xl09S1SURMz;CO3oY zCKG`f;RG0)x~Ya?t*DNeeXDfiK>0h}r8Dig;#3KOut5b%h7$50I3RfpsE^wN{Ovxh zlXRK~rdEYPkGII4OJAH2RY0`C<7thS+CUju9^KW6Z0Ff)7xkDRKn6}E{soI?BZH9+g~jqWVGe20pt?6cU0g_Dn3qG$;k zpZ1|wL`tZJII&vuiIE>{!kNSNhdsHUxs!fKI@CVE^)8&52A7LN_d&RqkYi+peKUex zbmmOl1B?Qv)Y%HpdYgr`hd{~%bNafTHv=X@`M68?=nq(b$taU%aWsmqniD22COI%j z`Ii^?AE=Zh=^=-!W$|GBeRK{xds%eY369i(1pftt(Ii`3G&@)+>VX#K=kBZt6Y6mmWz9ZIJEHFo}+3?^BLx0Fb5oaX^EFR|k@aas6dab)}? z7CYYumqSFsbDH(f#zP*eHa!;CUZ|hV=Mx;C;#IqrpBK>_Qv|ekdU{GwZ)dz@Vb{ z&h@V;L08<1eWfvMzt?aF0qch< zcLsXo_oP?&nT=P+gQ3Lu=7uDm$u^M&xaD;fx+oxa0^>fij5NtN8;UFG)&#W{L* zH(18V6DQqDxuWng){Ostj8~_c6A3-w(}&6L+L@`?Bv>ZB-;9qYM5R^T{i9t!do6=TD>1mK~5QW1RC4obo8jZ^=?7%n!t`YQOJ#ROlAmc z+%%gUNF*q)PGf&+pc%P;Qvv{OVxvuA{opgMlYMwPXQZ1top*Bi5l3=jd35G09@ZS61CpZM7MoaJS2gs}BDOT4$^{Mybq6~P#qo$tx| zU$8$jGeO)^m_3A%@_(}xNMDag6&D5pLWg0ipY zRDXc>weKh_2L|5C(OvkN6MlFzlPrks9j!F-95y`^GBLaB8f8(du}F-j;da$J{Oo|U z`i&tCG%WqwSNx9DT2iq`-70)LdJi6O{E5gMLkgradQg_AQd+f>$2pk%)3vZU_|)&h zC^|@Weqpe(y>ahEOP__3hL!x4U73Z{EE=zMl8;!`K}LZCY2FW$ru0D1IwrGguLn;* z3sX-mGDNK=!qSo<%Yp+B?nNosl{}CEKUkTW@a5&Ig`Pqry=ACz$x~0TFvwRF@jS)o zw@tCiV}rzTa=uV+Zu2XkIB19=)6J6=t?U2qQ!MdX;3n9wS=HQJL%ZKhz zA~J<~Ex@sGl%R}B<)SXkb`*P0z4C^SmZFr6izH^UDcO2Y>PZ@WW#|ueG{k>|p`5FA zws9rPV3pYKhzdS7Z`G$)@vtY2UQ&4MlW%0P$>^K_;J#q|N$~wY`54gpzpA}1Frz^6 zN3@P}F_f%QY1w}bkibK?&UCEzI43QCUP(8cooowyT>9|LPG{RqfV-E}g4-?w&m7u| zM!w{g-5&VJEJm-y;(N)x@x@$}!uSU4Es>2ze2>J;!Ez>0F`Xe!B*w{-bw*$9a?-C5 z{v_tnR$kC?#BMB5Ot5qAW0^AY0#SLx#1XDS&U-Bvs+6UV$x7mW$a>vp{`P@odgz5E ztwq(p00gA9hs`f^a;w!ln5tQX@_|28iP>ZH_&{f98KVmG$#I{cgzR#ahA33H=CiBt zRysVK9aQ1&TW81m=DH%?4)X;Iy4fUzVxDuDKssVqPjHybTT~M;K*zz;lR&~L@}4jiheDd zIR(~(4%kAWlFc20@{r{{u*ErYD(lRvo`Y3_uM>(!mz z0cejv;{E<>B4xRo-K2w^RKDp5oNlaT()jI!Wtigl&N{^2F zWR}roZx(ZVbyyM54aPqTpdpzM%pZzg9`MT!0`HzE9Zx|3n9B=J`{j3q2Y!+CX4Ba}ln)j(sFLq*ZU>fBfx>-G05rN_HF&dSGl(F`iV)(l z_!mmO-dK#faz0YW`$ydYml=EA#x@HLWmN(RXh7UpT0X4R<+vwQPSeyXt0X%R)4vNT zE=4(`*KTWB;D3e=7{7M@WlR)Wqk{PAK?8-83#Vfx(ISK#?1{Z2T6dC9u?EIiYy1Qr zm|=6kqC;O?Pnkhq9&sVU$Kxf0P0D%EMVL>*%+-S)k}=)LtzX1Rt8H|WI5VDY)0WgA zdP?|v6qo2CpF1IEw~sd);8(GRF(=mY-!Ww1?GGk~%la&mDOcR)Qtm2E2EinjwTJ9o zyM?=BdK2?4D`qA038sc)V0fjmsFm-?7O8@#7x8nTCbJAv(4wXS4dZoa5tJf>v;s&p^$zl&vO;X|T(SN3=iWTXP}yfZAXk$vBp+ynZA&G8Y~rbI|wenzk@G z#5j7I)F5m`RRBO$?~QqZHA5fn$;I3uKZn^dmfBCXB@~H#(5_tUp0^<^QWG<2?K?Z> zx2aMszL7`PB^V{0qkxKB$d3<`tiwkQ7ViPNs6TN_77!kfo)hkhvqn*J@7-6x2Nv2@ zs2&Fjpki;L35cq?CvMpR=MJF_9#ChnZ4cfa`AaRP!SgHH7t~eRFW^s{#!cO?%-ussLajuCNnE-WQhf}4NqKL}h+zg; zr65N2ubF0$o?E(!6#wbX&I!pb$ij$qUJ2uC;lc|)1y zS?BWL-_7l%QFvwtgu=m&uK$R^B?X#79S4(e-wnnnTokl`d`rJe?rZW@LSM_Vt&n9i40LcXbS zEF@j7*9kNH?p=I991W}Xc>hYjpgIiJgnvRmht1kOg1O7CY;-b4pvhDc>1^zMzV$8@ z|6ML2B)_2UOgl;4*d|R=F|^F~UaTMXg3Oa1GHs4^ashUyGhEAQy@AbDwSRxSS83gG zpMZSD&Ta%;ivb|M)*Q9srk-h!F{X(*>C7U%U~n=!{mHnS$JVHyvWQJ zwORKb)S<{x&`Dc#Enc`ToPc#xy&f{du1U_d$N)_aRvnUK5d^Q4Db=;jeB+&>SqP_bez$&p`44NvcNkA)b*|j@%OBf6Bd|ywR1%@2fG_NgSN}* z_j}0-gNJjh08g!tsG0?4g`6B2)f~t?eA7q~BQAl?cQhnIP(qQW#w>lO&RO<3PRBfF z4xAppvn=%~kKckjh39|&$7X;`xBNZRHJly$$P6+=?Z*xsGkQX3Dim%4|6YfX z91b(jyMZoj<64?>vCX#&jGxbyq*Cq2u7303Z-8$`fbb%)`l)p*50XIOQPx?lqwYyX zQkvUi31c_7gL_@X@d%mF9p3aD$gKjTxxJQq$%9WV^6|0Z1U7U7kx8 z(AtM(ESTGUYpp6|mu#bG?gKrd=EO>axlIm~_@lwb(80@V0(lXzham2$-aXgf&leAg zjD{=+$=J5Ii%~1igG$!an;|sY`+I953v^}bh^ufT@mbZA&b8KI5b<(%>8+`G*3`5A zFPvS?$&6#anRjahe)9SGHyL7Z%p=ugUdjHFQfgD5wZ@ zyiTu5TZ5oqwUO_nmA|`!LoUX$#FDx-KjZzg7lQ^7*@XHaPA7Sy5YZZQP0V!?ujSU zJTJEsmXPecM*j-ohuyQXkwDx_B0WuChwx5Xlk|qzJSul&y6kH$!1y+!!Dz}5_`du$ z{@G=z)-xiQG)%P7CpvnCjE&Xs_9y9gNMn5NYdj~}ke}Jd$uaRqnEjtdyb{^vYq@XU zLSVoS>)>TL7EzF;{~EH5-roP6vk?dv=0Ap{A*9uMM6(1>HNnwGg6lA!k_hlUj%0sJ zLxG*`G1As(`o~uxSOic4TpeE}P>TZw>I#xKO+_1!Ww>lP#ypGie1Nf{7@)OikpWku zprC3s*76QDgP07jS_iXG(lm9_IIG3Y<@g^3dB;0|=qyb;qG^58z6(Y7Pm?bF4;HH) z;<{Dv=YzpWI;uG_!UC3K<|#YQs2|S7Wq?pPqd=ow4WmHrz=x3UtL%he`~*)k3*UMj z+NucKQ^hlwdG1AAnq#Vn6@RMlC0T#Ot>G(pZg8~FtOfF6*{lsWrtM8#?(TFuGK5!mw}YJ=K(rYjoSr$3sX#C*9nwIj6_%i>$keZTGe(neRl)n|-JW`= zay+yF6O_wYj;UHmLi+co(9qe^YM=WVgwB0I$rTk8QE90v3aORAAut;fYB=@wnZsvs zC#25Nh5(@>sI*7iA|6EOvDp-wH6|$Zs$SIOEI8auoY~*E*XG+Q$xrG{RxpE@CdUSr z(J+t-VdA}S-amO}6Jc>{vBHumes+5HK|s!q1Ixs44Q(+7$*`_u&|bniCr5~lAYI(R z^SofG-=^)ray2Ay(|T7C)D0T!SQBCI5x~W|u{}5Db_(`x*o*!ocg9>)}_DJ+@N{i{;1mV4O#47b5~-I?e9E zQ-#Ra>}ZZ!PT2Aj{VL6=fRM&W6;v5@%)(Lm@LHje3=#d)TLWINAR7=Ru6O;A{I2ZGDrDotJu}PbK!)&^oJx zH)=uq*~oHUTp^OTAm*J_k(FJu`wMBkT%13TDNZUtTZdv|+v)~4KB)46q)3?E|uE5xM`0A~WO>I8To z38l%<&|&;}$KIM`+lTsooewJ#UWQSt*cDt@wrDPhpgVNBTGW;Gs_O&H841qrr)F#! zm+fFrJzB5>UNp_cDGkgan{`5}RwupjtrQSz0eO-50vrfb;O!>KsVeYx^**t!jb*DJ zPT@1neNInX8K{guewsFl63hfOrJ$Q14ieD6SegE(!mwGSbW#PfO9C%%xrt7gitEpT zh6$6qr1-zQikte4Iy?387ZM8_cUm`*%s$rqw`4k+^weg+FPEl4?G~?k68?}~Zrdps z;Yzk&@VZKqJi8)wt{_@5gtFSzJaD+p9jl{3W%3wJ-J@F1#*LPfl2$vvZXNlC*ps3Q%vgu` zIf237361>q;Kyjg1(oBKeW%T_N`!%ERT06&kWIGIDXj02!Jf+#z}ktGD!_4x%jl0u zy5oXjFj5C+>i(wnK}>sGgAX3vvJr%n8(ALW_tIq})nr#R(;aSkM2JX&x>h=C*I1ar=_F6NA|c|%!hd50p9J;y7ThDEhoO-GnJAZo-d#+$-#z1y%Nn` z#*+D}M#Y^js+4NnBp1>TdLFyJfx!M`|DUqG7mwb8CW1{F zvMEy&1ipPrNdY4qY1h#KLjQ%(7$wMq-yi@|fop#KfdnR;a@ZZB*mE{jUGr1?`CHW3 za_HxIy*Ymgwtpi#x}CbdXvR*y#p?V6?Iu&j(s~@P5+6J-9xQi3r^Tx$Ftc`tNJ8kX zC2N&a$Gi;OIaK`#x%8{XCz5glpY6efkt4O|-Ls7St{(QJ(4ZUU5pD`}IVp!UC24@6 z2<$2eI7>Tl^hsQhub528y5RYz-*k+PiQXgZQ-|IO~Y{`g+1rm5<=^sdBEWt`k0P|FQ7j3rM6=reH13Qxf zvCq|*+|OKq0~2)%&0kGPFI~mwbFHgfI^nUV>c>IRY~A>1jnqgk)6XviD%h@I&HFSd zCzS-cH0#+wC_wzlEV!(sw4Sbn3c1AWdZgpwYy2yi{0w68tSuLSmNx{U$#`O=b>Vd= z^rI`J4iX2fAsTyyRxTaY_2s2ots|d9d)@E%(Rp1oiAZE@-!UXhy40PiGdcTs07nY~3p;w0~G@JA)@mKKblP6Dr%>9!|s# z;HPi=<2J74-)#;s*o080*j}6fPNOaq@g|t|nXcmeD{v(Au`60yp`>0?DMp(C6T@o; zT|mgu=c`XxV|QIeSf_cPG-lIWxAgTYnUlHti_w8>j9_5ey*44dJu_dc$Xq!ySg>v1 zpEYDSUW_`LLANpG6Bi?#8jc(y>=qM@0@>6$J)W zL<_2YbqQt*AX^>m^~qF$!iG;I7B%B9EQI2l!*C)Dd$4jBq5VP{i98SFD4v_FB(U#q z)YK^^gD_`NqH}4Gd~9?3V*rC2EHshDU(zPfxi?cQNj2UK>apijF9LFXIAzSa0^MOW z0!FkXt~_5BPD~+oVgmAHaWLw48Ksm{c%$>sli2Pb&QRN^FYb9>d1Qeq?1M^4Y)iRr zE~4y7JQ(fWuFEAzU%`s}M*K_nr-#rCj8h$fvOSgoEMn3 zKiSi9fQA2KK1!jXU|4>B@l&v1szcFx0lTGnjXY+#tQ*XntUXmuOW`7OTgv){HGA-% zV5qdC4aB*UWjOHaOgG!YeMED%Q93`@T`N|VWhn?DwErYZ`mtNoLw2%lAoU9#Krs-p zY>#4jDd5bB&r26L6CI4}m`iZ<6dw1r5=?rKM@lF1_}%tr}FhJ%5*7rU_w&n+OvPN`eLh6 z93Ze+`b?-e6qT7a1_Al}V+EWGV#H)0pjg230RWqb{!6D7IalVn!((GMrH6nF)$4bT%!trT)y@@q5w@dfU++k=bD!soP|A zsY0U8)K_eIv3~>q#;%Cxv>OHZ-cJF1eaqpN5h@|le0N5H3O=0R+SK6ZR@86d5c*+u z4dOLjv#}#}0A1embFH0@2K7_)^CHaIXGcE!e?W+&?5T8l! za9;xpj5hLd$@>sleD$M3fD^5`kH)3fvPF^N%=NW~-5iy6+((k`W>*?^+owMusL5-8 zNu~0D?0BT(2RD!u&E+*yJL9g(PIo5^>p%XG*QFW^;8zQu;amb^umyj{?kb>zp^<9x zL1^dSRdioPrK8l-=5o`C%RxSz!f6VV!`>zp@UTKyHWkJ@kdW~5a5C2lz?lF~sUiVJ zcNMeQ7BLWh1Av9w#aKH1fne-deDHjUqmS(V{HbqaLB6%I&wpR2#AhDbwCh=v(s$eI zHqza&^w~66Pc*$Bi06688?hoXVLMcWn5Cr2E^%OHTk=l_X3hV z1%<&EyZe2%C;Z^ei@&?2ieKlzU)ArD`^PrF62$1$-%}gCvG0)U@c=#Twq^WO#0~B; z*1{~RG(Z@}%S}1cJPmL+FZmP$tl{=&{bd$!@B}iwukWl|U{&Qp*%&&EbrTlSzM2%#QXe+`NiUWp0!yV{lgYSM_ z{GrngAx7e@^wu?aXRY|?KFG&TI(M|nucdj=0^(7z6W`jXX0FY;nm-0o3C(Zj@Gb&Y z!~1iG-RgAa0JTXH#l98J52D#Zju=&pdwyv5Bh3{F@IE7qtL!xn1{At5&G<(?*3920r21BS@glWV(Xo%(IABH$q3k z5{8k`cTYM4>1%2Z@!qz@)I<|t9zE;5v4>sJ7#kp~7O_lqPxijHrv#nH#{22}zZ90n zb1ITRuW074NCH&j!@m#jvex{TU5VhLbpnxrHUS|8tl!Wt3!cf_*=-g*M=_yKEY|6eHrkal~}Ek8-A zyYGL}ibq{>l)Wf)7-GYB(#Xe+7qJY(fSo8{yqWp5I?X@sH0+8$fA}4KAvx`+{+q`` zw2RvT?5tYXa!~*U4#@|}PRem0Ppko;C33tkMUGJp_O_!4w?jdE&u1R7w~@+4L%!5Z zQ#$9T*9ZIdxyGOr8e$q_U+!ywHo`y@?)PA6wzgs~GgrOh=tZKKCA#`&eWoZGY8k2h z1Sz=+PR&Drso)EOj5v4pgC;`ry^8wGQg~r%0_M5dVPlp1q(hvVVEJ$e*}bca2!dWT zR)G%n3hKq?0`cH1KaKo$)RNWjf5olT5w>rkdy&|2@{BrOWGf?bizAbMFgYB}%y3>f z6Oy_$#GM~vl?Cp+*!K`0*(aV=jltZP`rKey1}NOb$ols2i4NFmc($fK5&ovZW^ z9nXWJkn-Ne>pM(g<3U(zm0J88AnPiIh&d}u!b`xm53znX8HfO_LDiM!A!(Ps=U+=) z`JWHk!l5WJ>U{MSv5H_)2OfVokIzJkfkI^KOj?JUWEI9#Owc3DyqhX>2?pgEvo(*p z!B!U3(*>N9?9QqUm!xz#C6AC@JXi9>Hf^{^6VV$$3rE>19ca`*Sh#S&wg%3ROv747 zF$`z!+YVa_NWVTdsQYN>J(BUb*31S}SOWIoNt=|J&lFCoYAQ}Pv9eImQpACiB$vd} z6>5pu9A5@R=}vz2sHa=Rh3)@>x>9qCTkEpdc&a77IEkdy*9QEVO<-&S&ji zi_ai5f&{(~WC$^@nSlO_i_PG;xHcc5NbRZK*^CXcWRO+mf=FZ_C`b4Op^BmRu$a6w)>AO=tck`^W_3# z(TvLS?Ab(emH|>TZ*IZVGoRUR{2na*`b49D)i6{@`ZIrB_cA-ow9gh zu693y@c}$=D4K?6O=px$TTuKjOL!@urh|1|K0~#q<4`d+Kxp9XERF|1nbYZOBJzG* z4%czSm>g~(g%pHo4{b68r^z*Q6)Qa5+3$w&3QaXN4RK4XqMr(2WJ!cv<10%LUlkqh z3igMr^A%vmGq1P#DX!vX>~Z8w!_0E~eouKgK2Wg&F*?WZb9nfS)=f{25U7^vw!H8{ zLL9YXE%Uj5i7qgE1Rxnj!}2(wEsEj2Lf81>C3P28_wp3f(`)oa7tyHh?pWatePv!e zOhcz|8aiu!wLsUTZ}s|7yjmqCn)CxSx=H~0kRho~O{v4Xd0P(uIA@VECoVW@g3ovu zI22-8_PUtf^4>o-p{hm4&|_RF5Z_Tf5Du|z)2Artng!@FT*OK`UYuzmj>Ic zSooUVoi^bUv<^dw88ivYo<6!PVuTZZrKC|$Uxl{{1UM)AvndCUsywv5p8&@0U2er9 z&=}-qZt4J~n)_98AamdOQCC#-+1w$Uz`Wo%lKp=Nd`+B~`$Ou6vqz2#(Nvc$&70n>3vHqQXxZP} z0764GL>y^w(QPFIrYFM8d4Kqvn)28BTd2L-+@kY)M z#lXUK09J}oGX!A4@+XAFI0Nc!n^;J5x_jLKn^`|=>>;75Z($NEjq1?ZRA45%ixj`l zTMM_z_qD;n#xg8no-izWLs<1>{yAg|vTJXSBL1?$g(@}6sC=7m*~%k+t!g-WA;QdZ zmS6uvUXiH`t!D8UKCu~GnI?AcYFh?_{V(%eyhON+>H=(3wg~un(g| zAPpE_Ye&b4$gFE8iAOz&p{{Fv9LklLj)vTUFZ2)Q7}+1dBgC*mGw)jqx6lRS*bef) zGSM_^#&GZ&RMd9a44hB_i){i>SXwflDP?aPB#hV=dRE4I0d%+Q3~3X_Jk}e|ZlDX0 z3vicSUqo&LxC})89w&`%F>H1)>!4y{z|>t-gdno*D$MUqlGfJU+8AP|33PCvZwzPH zgV@Mgsl$W6_4=?%RXHlEi51F-XNaihEj9 z|6P_%6*h3rb5&5H{8gsR#xksY)+=6yG<_&$#8NwAr`JrjqxbmqvBVwjo$ zg*`Wei?_hGhA==95u4|?syz_RHyzhd4|f$=5rm4v!9!mbcq$1|pgU?{RD_Ucya?R7 zhK=|rJieq|u(LrJrN)QnQZ8RfQ=uny1D|q5VN1RW-&5pFk4z+PXh5HU7r`x<=B#W3 zr>1c0__$>l=C^acmu2tP@5P5hue;cZ90?oPtrueotRL5~$t8#^Wqp(hEVl|D)9Cp* zY0Um>^PeGwK-xsAM?0<^cMt}rZemg&4S9_XRVRemfq6crV9ouq?ksfGh{G`768g+M zj0YS!ra}$fo)-+9+TT)!#BRwDWoLeOFrrfzx)F)?D?V$8!Yy75%u=)!U(}C|-+KI6 zwsnpE2-3)opC$IF6^gh^swsXGa%Jfl;;7lE@bu2AloEjQsp>&AV)SPL1elS*EOqD+ zQLudh2^A4HrUgH>H~A957b&2F3Ey#D&kgb6JKXc=;`5hg)O2*gmupxnwuuKQsgFf3 ze9zyrceQK*g7f>;r=X+x@T)K6hFbF5nuDZ-{6b039@)@#$aY3$+Q68Sm&3pldbO}O zs`$mLxF`sn<49Brc-4vZ2p*iPn2C$|T{gQS1NjbpV=2p$1m*m+sF|2o@{Tp_%09gUbEs6if2RB#alVlxmwji{1H3{$Q(;SB4Ou69rlAW)u8y)8 z-^ueQI_sfOGSN089eKg{e)cWZkRI??SEV6l^S4zY6v`w(#J92@w{-=Ul1?O>OmC@6 zyeT}^7C&H0^f-OM8M@)`FBWHiGcTi9SDxGDg`jl|$1uvH0&tzeUyOp~VaSmPvRMfF zq97ak4Eld{{{Q(4`@|8LNg~DZscvh7@eiHL9nnqOfL-0OJTwekAy*XOW5{jgD(De|47t5ORg~Mv&B=7y6D#7dX>dQ5xCJ7gP*>R$c zLq>z=#)tgK%PD=}i=>y!)V(xC84sF#HBFvZYwtp(3b1i8awiw9#OU$;Ar0*i$||Gr z!n~f&!Hi)pI+ty`7E|6eu1seFz8iPc6?G6)FyUIfF~2?|S0cheXa^Ad0XtW1+kj)` zx9~jbJE1t_ewzXJ#Dkkx?l>4Q;4xF}bxUScSjZcnkG0Xp;eirl@k0EKNn2*X|0FwZD9Qi)F*&G@ zA);aH|2m-sbn*NNX^PzpS|e`YfXLru^mGx>yj_ZciI)XX!q%CDK*i9I>0&py!koC1 zS(23+c}TXsn&n$)f3b9+ds8coi=y(%__-FJ&=t+p;A)q)|8rS*Yh4KmM`9WUV@=S( zLWjfrht~DJ_dD9k`()O{ARAImfd#}>T7qf~q&b*D`}`7_+VRNB$xb#?gv45YJ>~?y zf8pE%s|`a=AJT}2xXKHv*sFThgX)%?v=?cj=2DL+UFU|Kh_-YYd z6AhQ;>9l80_3xA;MTZlyi2n?2tTc!Gwq;gxm|m1Z;4ba(pv;C|mKltyd)NQbPcO_c zP-&*gZ7LVJ{xoN&IcJf(O4cKn`Q)1|Rs}Oi%|U@H$RL@m@FbDnrO9(FUOmb-+rjoV z5S5XN2A#)f$^%sW0ONBr0(eXeREsIWJdfHV%lzkHSyzf_QJSt%*s__d3$i6N305*) zO~E#^v+mfJLPUq=<^L7=@h4ot(~mH1Y4W*4U{a%JsQRy1l=YeStXh)ecxK(57hGq+ zbp{@G50YkhQ6dj z@4i)F=76|v(VAs6H&v!B3qND1=&dWXti$JS-6edYLQu0F0(WMfAJM{TXbtD_k)I8? zWPU)5GT5M_trNytvOyx@2Sk20qnnx&DN5R@Ix(z&jk1w3#Iw>0W}H6xu6hrq;fDGm zS%}fm-DrIs9peeia=A-|yaR)(y%|E)Om+&8!wB@9!l}I!UdYL$bg2*>q-ARx{i|q$ z-jRNXkkIOER)~XE>|_Y4R;qAPphRr_~gbC`2;dw*NiJDb2aBNb~Vg>E_YZa(WYQk zXxQ>et`z&Ur6I9($KtERi_!jR?G7YX z^83M;71mZ;IlG214&m(Af=C+85GY^ZNf2CUIIDpKI4|HW)b1N<8KXemJOGOYe6Re` z7=O80;+-ykfeuV0+x?jXBhYCse5vlng`$p*Mt3xQOe-jp1`nO3gi~z%ca?s>&4YkH z!ZUw5h&xc@K%?^y*%uT+6HX18(UIX#r4!!#4y@nek`#Jl)h2;0-7o{Sj4UR&vB8!Ch4nVn}mYiziPR8os zg0vEIHeZHzbkD?K1xfJEFahvas>QqnWfStfYD+D5Y0jKd@k;)d9ruJL>tsDe2TV z7C>2DU^iI*tfY>e=I2lI_*@t2-x@JI6r1&-W^Q?Qn_15O{lmIh6y5Y#2ED+j;qL zcD**BT{r&m;><~=`vV6AjQ|7*|J;)qm>L6w$uyhstkxm!K-WkB0FgDE>mX=WLWd|!|OYrF}o*rG@LNKg68 zQ5+;qiWSsJDk}>e^)juZ4Ig)>Fof@d5Ostf ze1HYpB29bGne^vo;zk{EXHeFP(h@3>fK52O1LKt}*Vrn2>MyUg={*>{`%U{^soi(Z z6t=ke-;?R8GE^n=0=&{w&J2BrS=@?ArD&cqMVo3LU@lHF;>|8QFeMM<0GRAH9t2dd zav80S>h@2Tn6H66M6jt}{rsyRNjtP)9SxkypMA@6| z5drp(RJ6LEMV;5J)u10X~# zT5uGeo1h3(&##jp-RPD5g3y7(qE*CR=U~z&f?K_U?Mx@$-ikG{UqSXi?$-SfD_#zhn8Buc{{lhZ1G$rDuF z8uQ6U5^{a=)@tY@Z+IYru~q7v3en8!T1XER&$!?)m~lI}FX$=E#8ax`P`%K}QRPv( zqbSFrcZl4k8c2O>uGlOt?05dpG|#%Ev)O)_;WZM|fN`vLt>zu^J1!81Zq%5z==vpn zj@oi8e0?r)!+-M@4oNn#VQH_^vLzu#PW#uCxSH$J&q6vxEw$%1z}EjfDRi9T+gFU; zUYl{4VA>n^h;*XX2~&G^rfF^RCq#b=%MM*3jw$Cp>a5-YH@-l-3|qIld;9?w25AM9{3EUul{&D%Pd*kb7Pt>N!j zRxU+^#A@l79U&BMU$f`kUt~?tNf!J?+5c-TO%qL>h_h{%c_(PA!-!>$6NDr(ODTuh zS>MGPSqR~vnqZqcfj47yTdBg`VsAtF@fbj85k17w;rjv2#Brc3H874-oGAR7=-A^C zF`H8L>7TufZ6Sm8E|Hi*YPvx=N>q?6bCxR{(S^PMHXb0b;OCx^Wx5Ra(0U^xGA<~Y zvvf>$3(twT7twvqX_SK;)CuY^wKtaW1bV$3cuJEWN(_LNjfaowtIxf9fAD_O6c#G-#+oTi_EvwDt;L|ZqNp=6}P zDWlKxx$xcHAvns_GEQV;#u3y)%d6aMV+o}58FEd@CQTA7scElUrz-KB&uMsa#TAAu ziuN)Q(Me$4Q^!2HQk&K`hc@;%0m!!$|BX-(8bxkp$zQNmt>wccga7Mb#&vD6e*b(6 znp{Kgx?IYoR)Bo~Nc0w!4=9sh;mQUU)8bvU0%L-8|4rrx2S?EhLOgb`j!XhYAx479 zi|#*`3ImN=?xsn&QKZi~#&sVa)MQ*H*mo*6@*jsgvg2RCQxuj8!m<Z}eS?Ceik{L$UiQ{k~EijkXOBHz4@5oh_eG88+sR3sWM6>Adb0DJ;-P9NeCg zcTc3pRPq@j@@({`2=(t=4JF)d|p@J!(`Sya+LK{bgrA7#q= zTfE^}z`c(w*t^*dERFOQ#yzcUca`teX!c6iE@KB_|LPds0Pr?jHOQX`SR+h7QOH#v za#?KoD|T68JEmK+k}jmzq-@CN-SJ{3CnS$8zT~|7!?=zy(y2S!MGVYGw2$EV z5sWMU*W`}~N1__Pg3O}hBNxaizS=95#}pQpCb&Y)tKf^_I#wl2>0UaPS^jKWT$L-b zu3fT_@i+qR^(T08=69{GT=;boRR}4p(0s|sY=}8RJg*^5o(ER$<3GAPce`x>33(G^ zy#Nu1dfV0Kd9yTU(aKl7Y`O&=uBc#3FiP7NC^*{>?4n=zlN{5csli+b?{?02&JiQL z7jY5io7G(_*=&k-j2|Q>!|NZM_Pwi2lJr&?4DH3YR5-tW^J@qHJbi%(}~@FM8-$MR+-N$O`J4eu6hEy?D# zE%cFxn#EI&Ed0AzC^)h50ab_vZK4d5X9M@FsD*L6fEL#bT~qN@fSWpxuHZ?6*-}ki1aN0^+jQ|Wy-B1 z16AhX=Ueq}Li0pvkMkWRZ3q7Xbv^Y$E8Y`B8Udg|e0DfnBJc3)vyu_yfWuzV-SpWx znGBR>hUeZM=k`TjP#(!rz>M((@Az?T`u*^9VmqbNRQN+@q2iEr({p|ldGS}kYZln? z?M$pNJH}b7{#Z~YEIS#S>|jphut!)PYIXt`KRdboO`&vLVm zcLi)f4L7$&Th44%>DgP&E$rlrr^8!|!clvEwOGXG40b5^RwJRUPxm!n+lQBYb);UQ z))-Sb5!gzLJUV1lNQF(4sw~i2jm7KbQx@FJ#23d1%;3)7zMg+EAU;+05n9AVM&?Y> z+0}R@=YHzktO4(Lc*$+6K_#qMClo}gBvWp;Xi2LCovie~-6C2l2VuUAHMsc2H@EL} zq$y#uO$@lMF~p&`l*~Sq3Aqj!_^WkM|!$YD%hWj8HUC(_W$>%Z@A z5*M2n=sg0$ycP)3d)D`QqMjyf&mwP>`1Y{N0?)RjvLk&NbA_r4+-I&DkQZ2b6F(X; zI7_*?#_G)U6~@5$KPR;cqe<$}$V(>Qj}5T`r`+zV^keyAz+wAUSg|yE_D+Nbu4EYR z2wqh>q^2b&j_L%*&T~>@IbLZBP(2G0}& z`1xKF2wawe&h3}~rR@H&+McT|WP18^~yC!e8cjte8R!~iLRa6YT~T62<0O@J~3mPu*b3ap;#)yD8^%s$d-`E7ROA_(m>y5Bz3ND zjw=CQy_zVBl`KbDi|lNUvb|GdON2fCdt+=mm_>8zCP^E{UN$t?sQu#NV^}K85Kx83kYbfxk#?(boldWvHs~2@w_zcA=t|8H>QDf&8 zUiaUrw=+uLW}L%x4Em?)34ej@r3pS{?~)r^!gp~>85#0_g44IHH+ysU-^PMoZOPla zJ0imx2BklVp-&1Y_ft4WbQq^V4e)z=hzf7gpnNDnrakPaL&;Eo<8xSzAgOc9&$tL**B&56a*{)6Qagk= zDu&$*2aJqhI`~SDApPJB#1=WCcb;4WpT&D52xq0etWHJ=SpM+pu2E5xO zVx1F^$DUeKZYSo z`ntv(K)+Q@K6!{g27W_X@PO7lQ}`{Lq5w|aAtH50M;)jeFvB+SY%TExI|?1^e~=gs zghrq0h!XnH5Eqre)sawqq5(^c!|?sWgyB-aI5ojl|5nA@g*KS4 zDMe}306upt3$|+g*n~TI!K!Q6BlYF&#pe}Sh#2W~2NxBYNv90LYYTz~En3ZSb<_8HTI8pTg> zv1=QzHwA@hN@Ws}G=I_0@-wvC_8P$?bbc{0Akn#XsUw*D8`s)zf9CqG*& z(vB*vaFBUl!r0D%!#wVpe?#!Py|Go{dA{aS=;uxeBo1wGepVIj>d)*l7_yl*mL)xe zHh6;b-98TtrSMsK;TW6q^o9!0fez)aB5@-*=eX46W8k(ijAql!KwscgfG{kiHIhaM zguv=0qHSl$dalJehHnl4CLAC*a;A>{2XS%WbD7!d9Az1rA7qj#?A0pY7VUqTC6w_^ zQ_UQ)%Zk?w<{!8&OgO~tFHACXt+aMq2&jvLpMiG=z(4$Q#qB|1-p0c3JlCX4dG%!; zWH9*(`F%I2SKD`LK#c!yO!4`jD6S~7P_`Il4{7-Hwb&>#M&b*;8&zX(;)$`Y!L+n> zy%mhAbI`CwzmLVE2iESm=X^NZXF8*=jq8RSg16y5nO)J}Vpqr`t>?4x_o&pe+zL(_ z*d&IJB#!&QSRl_u&%l;7OJ4P$c2k#~Eg)Kvi~)uoxli+hsum5omO}u%53C2GmCAZ$ zLB4?T2KHV z&J$*4^Fj{7P|n{DkTHbg+M?;7_c=aW?pYSL+Rv>&Y$GNyah|EA$NGC>`^H zy;GoW!KV#S7$FZ`ovJFUj`=)*@%zpG^%Md8VR+FIkMz!dXmyn@r4+R6l1bVU#9s0T z;w#Ux6ARMcQMiPLIF9sfnC7=NYkH7qe+}pOXdLYOSX8OVj`z(i-?q4RN;P z%6s5;OY%n%hu9^*X_rrm1j%}({QF|hf7Fg#XJReEW4_T-f~GRgLA#C(y38KT)wH&& zzFr_yzV56^eUj<28060bFo*CAXHi$z@PP!K)}s>CAZtc~=bxlw7$z|P>Qqz9yEJ#zm$m?pUG#fL2f_~Icd42fH?vAt9C5O zuuU({B?{6j_kFJYu!#M-lNbQ0q`Vw{q97mBm{56fw#sQn!(u<|3=d1UspEPJgID zs`XHvi0IVwsj=3gIw;5D9X9oTa8aWq>Ltb7Jr-MwkIR|lRL~Uh#u=$Gr@~EH$gs-l z4X+xu6`Kq^_T(TIqpI0&Mf&x^H+WbhCZ{&;+X$xS&i)RsgCdniMSJ8p^9HL>^7+wA zR^jg{i_hjqeKwXXn+Zpl{4`(mE#_8)^m=I_{%)(!N208TZt!1o_7cT^8-|H^%f{GqCAisf zP+Dc#GyB7dT0ty|ck3mPS>9w&7WlR?&LC|QHoN+ z-SI6_->s5=cfV3r>LUJLETxT)fF}imdUNm}#|fdw@h0|m;57wW33N$3!Z3PcvP_M#61#f+H@e!M{rs0Hfmphr%%mgXV&~3A8&5QuvGPT=^GwW9 z<*-LFty@yzHdzqC$k8Vb@#ZsPWLk&E+Nb>L-jZetD2}-dM+9@fFN>rzeR1pwdQy)a zAa1l8A?f#IN1&6-z`oa?jd83Gh4 zUo;}$r-sG{^DeZ00g?tlLat_%C01BM!iRV5#+6TK(zkk%)5j~l+kifTl~O?)s6oP= zL&_No+qyG8q2O66u%lyvEYMe8S?j*R$YgANPZX~Q4^j9x8W42Iqs4CQO+^9QA>qL; zMI;@}w&d;6UyKw5sI#9$SSrY9D6h`e_st0@ho_HfjovjZFE zThIdF+a6vwJ;coJr4@s&c4TM~u;DhrVe%}Hzb9sTxY!;vhm=qkv@^v8w#(9Ql5p%`H9b!V*SU&eB3}r1(g`=gMP3Lm? zNx|uBJaP3Cqn%4++1J~RXe&I5S+w?wJus=Cem?<0K68JW*Oy)5(ar&1*sEQ>?{Nj; zVHf?LJeJ&6xe6!KK!xzVPtfxs4}r1NX!IC%>vWSg^4q`A@))H93?dr%dwL@&Yn_2l9POZR4S7dbgh~^kvyCDT0fN4o1WAx@hV@F`kft}ji|LA76M z01YQvPxZx&N&n4&u`<03Uf;BZSM~Ls-DsRDmDzSR0hfC_NX!|Lp4rv%wqEKg?;QF3 zDCWZRA#)`}5yIZiFcSsicYg(MoMUUw;Zqw-CX|wFmQ4~J!p|Co)#a{7ZuhIF@%y=w zH6`?Xte;H%9lqo31sMx3MsHO3m&~jHGOCbu#M%^qHWMf0JB4dS6EqzE({Qe66Z|Hm zOem&Dh?)uBh8>Mx$M*KDE3D5lSLItHe5Vk#Y`vjg5Hpcw?_huZq2bpSfch^`8ZP5C0mr^%7 z;Q*tNE9`1W*}+>p2O*XF>NF%iG7yqEyS1{52(TX+_@AmI={39NCBrLi&70JU1fPw9 zp{{yjwj9?o03MKREnI=@uFQ2gwXpUgmGbGUOht&)GEmQJykn#EoGHca5xutm?fIQr z!_B_r6!ifP&W${swyLNpgdd9m5#f%ha%VwZ&Ei$`Azz*Bxbu{!D4Smcxb<9EK z0~L1+t9L$;hq^Un@fGj) z`>~2B6Q<)#1fj-=npQpIUJT`j#5BZXA!QMQ422l0K#U$tw$GI9x_m0t$OzMF-?NLp z*UY#6R8(h&rD|B*u7t@mjfxn+l#Me??EZPxrX-0t4xPTHHR3g=B|H? zj>e}bs3z}dU5=yaK6oa4SyZu5`~M^y*XzAD0)^+YstObZvynyMR>nit`)@V3*oi+@ ztj2Fw`LZZOSqV=g-sWR%BmdLzaD(b0!zMLm~aM9J*@?_1tWIj$goUAD`{cs@Bk>HwCm$3MG#8!Ehxu7^M`0uq5z zBx%6&!X`{ffy34r2ddx4dOp7Kx2;pbCuc_5z&*uv>sWTUdSx}?fBMf8dfrdRpg_V{ zI`MhGc%c~mevkY$eeIiix1>7)`HHwDQ3O(Wvi|j$IGPU|Mjplq1Agfv2d-dyoMt$u zBZ#)C7_5dhJNy8B z+|H+PO_YJlO7C>Uev}=cop=kzGMu@+#HtI4@)e-}SesPDZ5n!;n0mWgqrDZpoQulE znhWR)j7K~HszT@!?TKH0AgbiX+H1&+@p47}PUt?}+`EP%9l3sJ`6EcWo~6Tv_d1?b zb3i5cMbNLlwyz_8@^QNq9^tqdIkYmO$u{)j>T_a_lA58L0$YX@Yy)Tr{k5R-`RWXb zZD_x*`M35hk{FrNzqT>dSU5yob|LH01_`VHkb`hh9~PoGx9BCZPRg!{UZ*y|Ce1jv z8!#y!KfF0YE!(9zQ5_qqNO|wp4Fd40*=Ne`BwGTge$!IG6hhqcGoLtZGqEC!5yrrA z{01ylqaw}@m zmn?4{MN>3R|DMNOS&n~D8q3;ZQvTcx*ieuWy455|5nQy z0i!#MdDTJ~i^>GK!Z)fZY8WkAU-x!|JATpjAjm${waS|!G@Z!%N6azq70YLyeS$}f z4kq4&|fo!Q6I}r5LdR`5|mmB$z;{;&~BIN^8Zb zt+DTLE8kq=Fdmvw^Ho@-oYf)SGuQgmC|Iispjdku(4aAcbFDWCe-c6yKu!TCkz>C3 zRv!-nwLuD}bA?aF+8$VbeS%8n9v}Nt0&G?w9kv~9*G%bZI)OqSa8^QXlf3UmSc~JI z*hfmY=GGrOcD@z`^kGRAK_x+&(ZCe(B;mOXs+u)25zu6{?a07z)z*ur$UOj+zh z>sqxZg=vfFeVNQ0(F}B}tB}5ops>v{7FsVgdwPjBvLE$~W$L*X*9{Z-I>ScgeMM7N z5s%!6x41#S!=rG}q|;;a02RkY@;EVqP>utaXLwmX+Tqw}tbY55{N2wA&g1>n#oG<; z&EeP$BmDtnlCdeDPuv;#k9%a{s5E;g?}U}hL9n$d1ETi3q)DgO!a0q)T`Il#Xi8qB zs#Ir8;47N(pNl{HCV~P0RM;<3l^8XktbJ%fbq6vK!W9KTWf&a~kl*9Zzrj=jw{)R{#;D#0P_F zBnSF+bD^Ya71cjfF6T%|)^K~;an4kC$mgEyWD9b)Y!iK4d4h>4d9I2rQ0P?m3)`oF zJ#BcFh;aC0M#%zu!ekJRIfNgq8j&8NB#SV-^iAG$+d2E8bj^K5dWjdX3lxt0r2X{Z z9J1X5fA>8$i7?FM_9-2T+KGGRgV zWz`||-j6@E8|#oCLd3KfW!Zbpaic&86yk6rTTT8>mKF=Vm&}=69rTl{0Z&lI{6Z&L z2)1i^_J5F+^aavqUs_+@XnHg?{tVn=q{^Nc0y6;J=POLv)$&0_J%bXu0wh@S6~V6pFnjjux~dWv52s zDYY;+2Ums8ykzD8eXtV=7n1fZrsP>nA&(x2WI|Wf2jS)7MOj_0b{^tgP*^7c6o#DD zLVC$SfQTsBD%FWud&jt5H$J5UYpcf-EM9$4)#i0hPLf2yLc{^MjiQ?n>~@0UorW~3 zqTo_~4K9E|W(GPWedK~db$R%;BsRR;=6Kr76T?wu+`42gcRO#JI2{xv zHigGwkg=E@_z@Qo4O2m6?SX&?Lc+teXm8fx*r5JHhYdMIBDDGJ1)x9>3TraK7bIiN z%WWp8A763MXqj*Lk$maHb~kPvM0*H!sDoL1`#CN9KHWy1`?qTFJ`7g}RdECC$_}a7 z@*F+06>m0FlT_F5X@C>i^yAySKX(q45@3Ah&W1r{Z+C=nYuhGTic|Tzr}$uJ7* zqp>X7MZ%uBO+G4g#*-j2^T0zft3-0(SW$8FTU6>U|hbj=7Om&L(qsIuG z^HEmU|MsI-mvtM-=8ou0HVB)`U##~y^b-n8qC;7_&aaXu?FfU z_sGlx?`4m3Dkpe;RN761Z;a(g4+@@)XT9f?2};@}l0YB`gXuiwW*XfISujjmam~ZR zsP1Z?Qzhf7?Rh-ARy;GiVOh+WF)Ytk=FAFZN%6SfU#NA5YLkOl60v~CL>z%reBaxd z{Xff2{+k4O_0&$eFBKrJ#4H--1=q@-ak$QoO2^6amk;_#?-sA@5GP@!2E81{+nHsQ zC}YizdNK9HzqT#Oi@qs}>q?fh(-KN*xQeP?0++L?bUl-pzK5k7aQXvPqNS4`us4U^ zl@mgRzeouur=d37u_U}W0Iv4s;7#4JfNRbZn*L4t4AqN|o61{8a_=EiVwu*BjQ*}e z8(pSil@&SSC1Pb0=xW=K7uTnO2i~YVCXG42@?j1zVXx9<`h}xQS<-=An>rA!`#8|{ zy0B|z7;1&&xX%~q$Tax8R`)8`Kxbp!I_JA0ix;&bq9}8xj#*4uF+&|$h|;E8aGEkC z53-@h4LQlTM+7)mn3|h$eiXr?!b^}nuZ)WRNFVg+kIc7@dN+>eQip%#{ZFw)WcP}g z=!K&h{N3ix3n~-H|7d7vq984I=y&4I*UH1n&OKWPOZ!frb)TjJ1i668%$Zw$*CdWK zVK?M?>9FiBj97Ds)U+D%Y&sFk3dY#vR#x-S&q7NWkCOUOV6J9F3FpECZQJ$rjD)RO z%}!o{e{KtBX!5UzpO`NVPjZav97Q&~JCRID$M9`3a&wt^sb2dk2!)?^T7;8*2B47; zz<9*j=CImk78awilPU5VNTB?pp;zDL{$>wZz*7@m_cC)B4f6FS`pyQRE1^H6ID`|? z!{4^Wkp>BGsDSa6Uj+gkV5?4R3-C?EEe9kb)r=l>5BjnW_kCK3QQz3*RO7sbSmmd- zY!v!Ka;mpqr@j_B_|Y;z?8J;;8&?`4!vzuS?+t$ox+STEY$-ygO-EG8#riIcu_6j# z4tex*xaiN$l&r^W=1GgR7j^Oj`w#Qq#p zRHr04`1TGhuwp>l6#Dj?RDXF8pvEe1GvG60wQ?y@XQ+a z#JxdNK4ia2U`MfiKk#z_qQZ`X`bhX%ayz!}bzY!q^w@qj?255~p~IzW56g%=4-U>E zJS>6Qc7&fG^~sax?$f?UAaJ7#!r3geE`~NY05jT(&ld?5>5(kn)l`<`8BNh0>ROwC zQ^FU>dBfW%q$NigW0m0j(IX^z3t0>IY&bLlsrdOf#Y4t)2?k52y@_G2H;M;Fd(ASf z6G1eyaI!8VG;9o@@SPYw9?dcUr@|2@)(!hc3K?YW>$f^AZ>5Gw25~0Tz;p&4 zh-OyOG5!3)f|;bhrKa&c;+apg8DK$(z(@Bt>)~42nMm3GTm~HOth5tr&$JA0O&-CF zxjRQO6lRATF}T*?q`4>)I9m|?Cbr(Qckwo zXq}BQY2EYgMzqd1+3)D?DwIIX3YGZ9aowACOis8x2V$KsNrjk#O{_Ddf_I|+y8NEs zWuHE9mCb{R>qo1HP0Z*j@0Pt2()EGQC2%=ksgbWyq*J_roW48JJ^NcddC4XI zu)lZ^9*ei}EGl_as%#H-G>d~DY7IcG{mJ}-^5Sa1{`y>KTvOeeT7xirYiW7mwuG_n z7NE2_v9K4XQkc3A7xNzU!1$_!>Y;eX2xd}^U~D<8So8H<#VEDh(IBqb$5dt1X<-uf zt8|+U=iL1K+D7RJQROfYmvuEgBP1_nMSGZ17~5!6`qFD#ss z8~C%@3x;R)r=`q;Bak@E95%LnT=~mgl0Bx%!Og0fM~#ftj;u8aIdU6`v|mf5sTu6= zlaWZ+;5M3kFt*%a;P+9I)BkElT%J4%>Wk6%!;WdM;$GLCAg6a5sK8}W-uR78K|WQV zd)>PoHl)zi?d(~*DusZ3DoYIG5QvT7v$13Mo5 zl_g=PPKVkj#&@G7s+V#br(_Yrjj80ZJCuc}>%0=VyTGYN(8B`W8oMYkm+Ry3oFux& zcCp;8h1MQK{hS1h)4iu~IlNhHZeoU@u-c+gsIS<_P7S9#$`+eIF528JD?V2RmjGGa z#{(sNug&f^>Za7;YHuQ+yS~L}HifejFfQ}5C0Mb~I3Mfw@Lh5mTI1TA(ErMpqC)e7 zEh&?37_!X9!+2Mm%eODfvg@!ER7gkzN90(wX#82#Xa*7WVI#3*ZxK0nitHCa*1=|X zyz6t^Z8!&$0D}h0^%OW_o3q=$HqUrye-Fg%XfW2)^eWx_K48i$ZrXSUgD=&4iCnV;EP0^CqEv#OR-d zm}sShOlo-M0%Ys=<9ezheZMwO;-E0t* ztBbOj#+Bvd8RCoP6B|#2z#>wY6r*vOTm+?bP8lJB@5JPDqz7y>X2t6J&WvHxIPhJ9 z*pgvtqfXFk5>BZcWVfvJZ5mU`9(k1q&e`_{?wpVE^(8S4D7pGX$Z!L3$&Uj;mg>j7uszQ$;_q`%YicCi};1HiLn3V5G;Jh3SB$8c8R9oGK9~MvCD{C!oWL9WcJ| zIHt`{8JAMCf34Xz#10%rDf2N9w!?b*p^@;8h-LWr;QRWtWOH{I$e6`1pP>^#OhnXKjg~5 zk}<3u%BMcbaJ--6UZ$&$`)m7U*oT&Oe!V~D{Wmx_(aKYBQPlW=$gnB>gIkAOW8=15 zCeHW%sD&Cs;Fv=C4_Jz3Pec=;f$od6sl2v&#f0%RU50-c}(I zwS?Xm<&nIm)bq_Ga7etFV)Na}aLCw3vuP0!y1$Y6`UAW815>?Pn=Q2HR1F=;Vysnz zRnAOI^M)iRdXfHu2cyQyZ1{3ku3W1uRD!Q)S!D}k6>QTGF&!k}uw6}(-V@QR3=2Oq zDOdroQdZBjOdA-Kdu|~Zej;Hk_R=}~2E*);`$JoNM!Ndx>*1wQv`(I-IkrE?miFVJ zKnDLCm`thKcs2p-=IEeEjlx9m894HnEilxd(4n+YBI z#IJ{?{Oz$u$0aMHRj?sIKr0%Iqb&jHTON5{3;o7e5X@dZGtlG+a`x+9Wij6k*P1{1 zl>bagaK`a4>x^iqq~|Gxlen4{>^NAgC|&^t|1vz<9Cgm`gQ=`@B(dry6I6?hptf_X zTZ(e41=|1BV{`I*=Q@Wpr=n!B@F^~=Fz{(W57{GU*!^Uq%_n-qg81IkysDa0zAOA_ z7;YG^r!wZ8pQQtkIgt-lPvYAJ@%sqV7j=O33 z0N`hlY8PcCIMkiqn@U}Q@9$yII1fdkzW(amv=i9n+IU{l7hl6w4nr$?nN+fpZTpo> zdf*4wINq%88FuEiW6E;ucwA2t(LqSSzVJj1|AI9nAoUED(27Wd8X1$4!sPqRRi_2& zwR9+jY&GMu3+UtSYKA(8l)ZK)r;lg2)0~;@ z!YqBPv(O!fuY6-f233qedMCXstMLc%Is0rQ9-iPgQG<_tBDz$qZKxLGtl4Cek z$feF0hYd4blK6not*;4Bl|baVKeHW zhyQBR;NIeUKBCcgR5kn8@34C|!>o#_NHjb{8^T4~2(T}Mi&@Nd!B~L-Dm>PK8KdGC zsE5sw2Gd%+3=USXZukv)xQEIZYc+qmxuurd92bz*l>!ub`bzxs3U)7AkJG=hP!~eR z#vH#`@|V>#&EI+2o#(_Jy)2{?+$`O1Apmsmw=VsYqzcvg<%3ZEl;=%bV&}A!5`x{T5yhGC94$cD5Gn>03RvGyy*g zhUkG;n!SY+327lZ)$WTDK{u)Ws!VPJckh6CmS|s+;y@L=nzwKsK|B^HvcO#ycW7xD z-Q5mMasf~Dji{$Dl8tHeVX&imP6c|jzd<)b-9w7|Hi7kYEzd#&8>R(+Om<{1C~U`j zrLaY_J183O?6V}M5g$X zly6eLOm*J99+Z6Ai^KU|3?KFEEdpb+DJ@bmZ{|oI0K1js#JZ*1&>#Cpi!~w=tK7zu zAEh^$KYgxkr2E|YK0fq1RW~(*e9c&#VUKpVTjNraul>XO7MrsftUsV3k1CQd>Cd}2 z>lZO3djQTPN4TsQ>A3Dm;3su7Fd4ODG@N0D9J^>5L z{l%PFpIm3Gz3gmtAJC+PZCb*MI*a)j6n00t9$cw^ligio6Au46!LgEl)qQpJtA|7J zYwX2SKeAh>6Ra{dXs5c4IWy_|epa3FH;}sB?|6ALVrTzJs5wII3#5~`)rfi65;ath zwtm)`h5{Sj&-ztyR2b@-0)*?1oSfKsYj;XXvbwAj!x+mO7pdfp2na)G2+F({&2E=6 z3-NuQvnMrBYeb1^gYm`6cZ-u2y-8X~?o8Duu;VjA5fx$Q}(jv4FBGZgJ8zY%xZK>A}c*Xxnv6kdI>T+Fy zGM%|f)f&d!Xorq{JbgqD#&(N0sp^sZ14Ss)OhX`4NM&@e%}xOSKLEgUl(B~Ywrvdg z!VWRd%5=b4M5Vju+PtsuS}U3Tk(F!mnfJ+`U_LJ4(>>P<+G3`~Fp}R9`TNy1uh3F< z;lXKurh5?bl&B5T3A6@}s{I zbVx}W^B!Tuq1Tg?QYv!Px^T*mgVV&sgcm{&q3b#-yXII$Leatlyk zF2Q*2yVZFNFIp1!Yy4G{<#E>AJyQx?+MkAvZ-qesnY?7RxJBwFgx* zduYtw)fkPe8*CMx)EIQ#`3%eO2PE6*(YwM!HhI1b*f&l-8@lXSiK;o;%i82(E?;zM zWjo`6?&%n`odu~*``GT6$Hvjy`)!arzp_qW9y4@OKdZSDS*YhMsaZT^h)@yI=_SB1 z3?s=$i(AC@sJb+4ys~LZ@EFWbuui(HM&bdZXp@$v^?p+ zLK=rndlGI|Sm**pwve9aLR-IG8xU~6NGTbYl1+MjiaKf{aC*Hvf^^(u9U(!VuB$$d zDy2UqKhHxn$}a0`!f;sIZ>3_)m;Wj)WWs+7ex25;#@VGZG7S|CL8$r}B}Kof#LRZ? ztd52zp8e9scfY$>^Je+VLeE^3+YjU!8yLiKP z%~UsFHm}aQB7XjzGx3fxN!I{IB0-&gR~xg)!G$hf@Eun0l1})`@aK3m)Q=0}Gk!DG z2vWw??W);{p*B9Be<(9#fniP3aPkGtw619ob5s?X`tC8MQ7=M+fux< z#o(U=)k}odNBw z3GNwwv)k=6JWxr4_|WuNRy~!;#iY2yPIlZ7tarSXAscuWAfYh0z2!G=*iO*4W3JVu zCPPeP;F*O2?wIOcs~3dBrqV?4#V}-d4FTwNR!tsu-J@DA^K!4D9VGG@_xHgI8SLRS zzoTGCxC19VE0TOp&4C^R1geNPGUTSu7!%7kt8x0| zffDCux~s&e&c^--$5n#O`gJD}A=WToqNj#{^1M9xl_+=99?FGkvD20mKEnOj z6W2;FpBc+L3tTRvaLvVqO&-ZHIhMr81ZXWD8y!LDm90jYB^z$+Hp4!dyhcF85bRh{ zA^HNt$a3yZzFxb5@Sd$xO2vJ{C&!1a6j!F!$c*=^LKyxTlnnnL_=>6Y?-TX&wAo@V zUW6%N$xSG85Yw1{lb=ncfZB1kTHi})Q{ZW$i4kf5mXS8g__%oFVk2GSLMEv@l+8ts zk94!hoH91__esU})UlN_;lfhz>*&7J?(3D-ob~^fW>sHgV9yx|ZHXGL{}HfF4)w5h zW4K1|rJc!WI}xsDlp8T_Mc+c-RCX$8@hk0|`FMC_24GzbBm>vGpTeW!ZR`r>2EKY+ zLjn>CdIsIy91QJck%occUJRJrByR(QD$iLiNnV`UZyOWV?ajvy0)dLW0szBb(LmBb zkF5aeaPaqIT6L3Y-la$1w`q6wi?kaBs5LJQwEfNwK`mu^G7_PQ_^zljVUi%Nn`Pa_ z%q}_H>n?dycA;iaOy(pMY6%vtVKs$=@Wd5elJJ7xRkj$wMiO-xcq7M2N1nU6NGT(b3x+?=g9 zr3(RJXLH7zaw3e+RO&#Z@Ee2vE}U_yV>`)>%}@TVnXlHhzgPp2TlPJA*ba*1(qUJC z<7BaVbfv6Y?jIT-8!lnS7}L6IG&JCw6sddtDnlfxy=f9M$)EU@73FA+ck$TP0MPPQ z-}HTpK_om*I`;ffvE#cESYU!|7kXY^f zsJ$y9`+g`ET&t4~Nxf%s{V&N$rsj->Dib$x2Q!)fwsl(-UNZS$G{+4=44uCmLErkDV-ly`~`s+Zl&d%BpF@frU81kcXuJ(GGK zzOy--v)j2`R75biOd3II%IL2aaIVX3=BD#%b+A!xKdXF@(Ro-({{WD9Ge__hOgde0 zE8sVn)p`Exv-Q_~&{_tIdLAuVB9fni)q&>3S&!XZ5N)8F=Xg710j{D`%})?SiF(KP zv;Vx2Z>Vkl?B_m@h^(fX>|pT?3#=$9nbwp4zL{k}T$2U>23rR3wSs#h6^~-7S$4Tk zRb7Hqm)U{rZktPK&yQt1g0>m^Vs4?bM9ZEN6ft!Zt{&<79V#RZm~CmTVe((@XZx3X z5>RoR$8S3qFHtn6BRyf{`S-}B&UYyu)AD&xVe9}^QJj5Tvsdv&A)6+6+5*^tAJf)Xs4~N)`{x# zDN*>@WAU%DR-4*2TiDD9UzA_KpwyjJ=8YiC2q;o8su))UkjfILeKr?(FqCh5jpi$_ znp@}z9*&K+3G@`HQ=}UCezt}D)YJ*@?soU0$|zQQYbznNC58=vNm-1V_gcJRyAtQ169=j^1dpJ0++I zX`2x$>9(@|u?oV4RcQ(sG=GUodR(Wa@1lJe9#MO_%SQ%p5y+{x$1bQFuT2h4V7mXm58!7$f~?@1g`S^ z7Z?h{VBQVTnIr97#VQ>s5m!5dq=H0n8OPPzY2|{751;sxrb4v2ks$=_FY3cg5^MbV zj_oSSddrj;)J)Xh+>d}!Q-r=1#kde?lUeFZV4RF39InRQr)m`nR2oz@@?k`qtFQd+ z;f>c)R&oLcJ50H;fbA_-0VhHYV^3bo^m;2kla|C&a8>bh)Ocns7xilT-`3v>_sFUv z1lWm|G5kVluV1`G(FL|Om7E>GP|^+Okr>i=P*$uS>>nGJONk3yrMewI@ki8iktViK zy{=GM*m>^$D?z1*eBuhlBkeD`U==IR#?+PhEZre^{)`qvV|J zDmB@igw=hzkSB%d+EfCclOCh$u~xRj_8;T(E4x|q=ow)D>xLw&O8=Z96z zZhlkrq*wFMgAkn?vgd*`O?57OdBgs=yv;!5h^Ig=KVfnJsV=r4GlH@V8=EAGm8wJ0>h68p+zXyN0-`w9EzI!Fd1PvNb3k2UnCL5s)BzNw4=>a z@iv3kj2$llZ3oAMcuWaXO+-P4j7Xd;)q0*8*6OjvVR6Ik$2h}82WDL;Ohd7rWlLz) zSIVmIeOmD>PV6pD)H&>J{#yCY(+h#8J7ZKK^lS<5fAcgY?GJ?4cZEBX*Un}|am!Vb z0Od8x#9&R(>i@U@{xqX30Of@jF)1QHQc3!>%{qPl0TgT4syVV5e{G{`lDK1N5-nxbS9umipJ0It{) z@YMBX2SBd^rA4Fe*}TIq<3!;MZH~JQWx_8o{=zHfj4YR%BO}tcJ3A_!EmU3XtJ=?W z5ZNhzv*)()He1cGp~0~>aR?ysH@+YvwGTLSD?Yl{cSB1OXebPdL_$3zO{ z_3eHuJaS;`+VSZs?D5p`KK^&KO@#7Z6hS}vB2kgjw1=+C4_k|E1W)jb=DnAh zNGgX*aAM==RK!`+E!`koK#oNO%^l;G?mrPI1I3j8Yd#t=Ltt%IE&kQqq^` zzwzh1$m6AGZB_XVFLd+Ok1%QVYiutaq@+b{rkCEC*%_o^2@-p{)PH&OEHzo-O(F+4-h-Iyd77Hy7m@mT8EH8#!??C!+DpR57{6bpZ$2 zpWTTXpYe#jT~_b?xdAux%uSyN9zW(SQeZ*&)?$m=A4JBhA7jD|V3pFe-xYM)z?Hwy z{>vAiykd8^|8r=ja414uO}arG|DvcJqiz0vld#!RW7zAx?FzpFvk{8G!EDa`e6e_d zFDoP~u=uNZ-Vc3J@8~zyLT?5ep#U{tZz1~1lO&1>`tu90tmP?m$`H-bzJWbxF&|p5 zi4lF{6EDy8r#Een&H3}XJFw`1v_Hjl!Rcj09%U|j8hYXr9JnCXkVI0bQ@{#d6%?%y zIO6NLto|9TaRya@EyK3C6qJPJ?m3(Qyh80AJ4A>CE22e{JIexfV$%#ox+(T;v9ZS} zv*~iB1GQh5K0LjGDzb!TiT{0*v-AQ7qA>Y`phU?~ie`=~U>~bp-)#(v@ki>Y?CNc9 z5;~J1dS@{58oO_wD2>M~_-t$t~Vg81F>(kXk{KFea z{ZuD^bzA7YM;!Ai&N0(L_Sy=*y%BHkxT5MB^qUVObRSJFnZk133$1)JM4T*7ZT>G(0Ntr3Ln>y8}qu36j zroyn@XpGu=&H|Aq_?-2V10a(bOT;7dQE1Ld3`_e$&AT-ZoGyYfg>5cY9?`BT^DXlb z7qwZ*c$6f&2my_V;I-I@(p$DSM&LShv(kuDs&BlR^Y-UO131l}j(T(fsRRyrP=j$Q zO}<$r7=oNL`f^NE%U%qiiX0EUy+vVULaozBk)Mcbkhy&~9AB?5b=_Trb8(DP3Fr_7 zUD=D9%SWSHlyOW|1A9x+`wyzgKf*1X6u&07k$f#mI`X~0vjhkV%Ji@zC@~3t3#qqh zHC(5R5Q;-M@z{%pbz-p#SlK1<;TMFgsM=N8X3w5P-pDBbD)ZDYNC{nhoMUjzW+gC% zRjaly&iM56X1Kz&zJb8FjRilwE>ZY2ivkIRr4z%@6c{>o8M6SSydQ+#ntFT?PmMK* zlKabs>%P}wo^opxUpnk7@KLT&qI_wy$a(1d^NEUT_0!2Cy{?a!IX8q6RUS^?aN46 z|GMqc6*sK3b6HvNWboBFUSl%a71UdmwppHg?Nm3GUJe=`5qQ-e(`Q{wn|KgKoNaE! z=DPx^*(e2K0(eQsDR>v(U6nS$sy5jr)C?Y2VZ4|3{;gZ#&iWv(&4IG^J*ZuTmPf3? z4;eitKoQjM`lTIkEk@(=$~%j_hOF;wdV69oU4~3QGm$BAXlmV6k0n4LygLC=kz@VqL5JRq6OxN z=^9-h2P`~b@vh1jKdj)i_9h})lqyartkY%mkT>xd4k|DE>(CS!JHTRKoxheXDjyT# z*@0jGA*^B#TmqurMKfd?$7Y%H6_k^38+>(JHOd1Q;PKvb&vmgE!6B{YaIWY@;a3Xq zc(j;XOt9L!1UA@)r2)&}5TgV59;9w~Um#9~*Pma#5g^>5)N4~YbuOg=b7lMR4 z3ykKwbnm^&iU1)6p^wHHMT1*vz{%EXyy(-oU;A8yS!@%>7er9?Y9p>Pqg?zKZBskU zH*>+w?t%pr(gqr2h-wQk;{n&oX1e+m{7D(Dv?i`li#}N@woh_&M1*d{Ul%AoGg7^Ru<;G&X z+<~YuQ|5=nvqVR1&hcm=k2Qg^tgX*rL!c}=2?{g_4e>Af=_r0AUH=sqibIZ{UYh-m zh({VL{eo{=utCDZnn@Y2$=Wrd6q#IX59Uk`rizt;^um&ILwRuE4LNagE?5Km-Qxk< z39X3(Hk8DuB~V?YMWPUHmxC*P8Fk=M3Mfse>C1PT>sN`V?6lm_dEo|UWiRuGZf4#< zW_Ls5qYT>)z@|Q)W}+=atgmIB=EG#n<*_rQ1M?l;bY{|Dsb~Ua`BD49)=3NP+0%Z} zGxvpU*|OPd4aL#e2J6`071_2&o@HSWpzh#&59VHHbre%n62~@b%2xWpXC?w5Y6C_$2W!H~t)FxP5MQo>$8o)V{@?6(u0MnaN<@@f#9QF4J}V=)-;~hG@R| z6tvKxQ&0a8l@2YkG~=~84uNK+Xbpd!1b;;4|8x@Uomn-o32k5~D?V}lv~Jvx0I1e`z{;Z;hoWslj>WjQ7pUm{_f$W& zMm{)Ve9b3BFb8xh9{n$vdIR+CRRdYbMUD$d)xIb5!(DAVkbGdsnZE*-?G)ZuzD!?W z0QYMp9zMI|ajN=lWf(`b%!R4(XO0XC;lc~wPYf|NOkvuVL`(T8+7&;Z007z<%=+ze zX=pt5K`4w^3WTLNT5IxzBvaVNh@6(J$rV;-mF#xRzzyo9R#rl1ZK7RYoj@@ak@efo4ese0N>5(qVbFK2rE3mp zX<_>>qJ9TsQ{s9gq6xt%u;7?XSEdAfpR9Woz`{6AcO^ilLU>Y@jWm$|$VhO|*Kz&O zSu19HyjU&4Y>{0_8l+J=i2^mXkI0CD0PU#lTHiLVADY$~d)lgX zRMkLa`D83F-8kfNGzDL4%h_XYDq)g(!w4pe#AfPg%)?NW)zN8!)I99;x3hs1HoM0|2QRKn3-nX%bsOEqJTMEb zYjEb*E9D>=gwPyR_@s+p7D?VSo*HY_z!X0vk;MiYLL-zWCd6l2;eSSipO1y0F_17$ z)+?|dmg3BQ%fi|FvmsJ(vxYh=X~EM1l!1;`v$?AI{^tvvuf_HorPxCX3~jhey5c`1 zIquf3FMP`f?ni>Pi!;newS&P#6A(2*1{%^z+c0(JJ5tJ_9WIJG(IC1yF?`9c(AG}6 z9wgAg!;x_Xzb%P=&G-p@m&(4vW!UPl6*ZzcsX7@x9h8a_8`?#V#OXPHB+QQ@gB?=h zxFyS+2B1o8!WeguXZ2T(7!~c)+147F+;qvFeNao0+&XmmltF02#X^*CZZbcw7Qt9GBkAPbdF-`URr}hBL%5mO-D1JwMhvOljNL4&WC1qsUFMV6y$hwT_=cFZ4&U4H5H5szWlGOv1n0W#9Zam{EB;{=n4>3hS%Kr-J_ETNB4zrt4qH$fNGKn(OnX zD7r!qaZ;X5DXT9RTA(zk#F(*fke7(R$uV@|paMN_@}%NIcbf~WxufmzfMb~DbCPO0 z?FV{E_al%#e7h`)eo>ik1Mih0Y+dHi!hJ5phNex@_BmU>1(%RPypJT)imZ6_i?vH$ zj^h_u>!p`RBoNBy@0*Xv4sk(sykEf^XTjUB0)?~V+k*P?AL?X0AtAgR+>4H&CO*|^ z{1w0L;+n98vZelr#*mcx?XEOaOBXvWw3jwT*N=>Awrv{T(EHC49bh5bL(H9d4)OAV z&aZ5J%&G2?Dx$ts1n-I8_R$Q&*YM?=zi7oN(j%g~Pd8CiU)m>SvF?9Yck@fCmf5OG zjf1N?9l>suR`e%*M{beAFJVZ~x63p9egw^qlDI=JX0^zf^fC&1YQaX*rqhLROoYh+ zL^L1+t`8y=C zS~uIVwdS2EH2*4M+5zx8Dg+QMG=V`LAiBIlg7totKDnp)7}vbPs)NhJ=Lr!9d8$$> zT<(y)8zJk*0IQ6|&QlkCU271x&#?` z2a{(vc_VL4Umma2Gcxb!J*rBRvU=pe;(T{9g4&>X%$}L z&!OKIFt*w)47qpv^Xm#Z}`J`xh} zZ*+YtaAYmpA7KSWODR7z{n*N*cTn#^x(B^?M7NcH*vquYXGTu6lb`1-*uEI%+if=r zGC>-0Zh=$rENZBfEdw+!zDJu{sI{@hWw%oO^JvS@E1RH_*KKwX$1sXB&~>@rUxriW zAH*U^PSaCj15P%fnqo@7FhaExV4V5CSHfLbHAV+v-5*{Z``*naUS==_1uAO?zCNWK z0C&QTf_zJICzOCDDXdE41PtlWJg0ydwgA^!KzHB8TQ5}iJh+agz$>a8l@vl9=b+bU&X3F4!Q0`GiKU71nOH+c>*vzr>2Fgd!r;RUqAnwW-`Q@3+^C9|Lk`1L1i(5ei-)QpQ^3 zqAmTxI*rdI?t74@Pm-fH@m(#5<5yvix5W>{=}HO##rgR5uecv=SI~oy#F(3H2SD^Pv+bLcL)Pt zsBU&3Y1B>;Eli6nPYoScw*da%s7~ZN*j6vdae!*6n=^FhHz$JXL-5ktS9#3rK67-u zX30yJ0J5T`O190UB^2e=e|k(OYCtqOj1J9d20YBW@}kTfX)B*|SW5lcf_a+Nk4-18 zg(1YCLZo0%#nr*)C~A-W@0M=jTIv+|--!VB-&Rm^#0fk#U1-Osw%B=!P)dbFWaTv$ z(Nz})k%l9mlCLo;cMUb0jI#yD+c-zbYO#?;)GPn(<&qjF2o)*_<4RI`D4$tXS9ltOIW5nex zkb^{1Wo6oljRMJ;nWWN&NNut#Fu6|YOtHpS)0hw12Vt=$XV3!PF`^`^MQ}kW0{r1( zi0ckflssGgj}=eS-0U;^zGZhYY+@Vd^lhO&QST$fMC;YT^r5;$QG#Q&oV z;1Ca2y*8ag(eU5X@yjuKp!>rHZ#}+KJOkT>sqk|T4g6mEg_950Xcr0#jyo2Kyq0vI z+oON0wNu-nQ&v*}vu;}SEMN+zN|zSd{}PEh}OZ)M`*JF@NPH)<>dQe|#WO0e6nGNA|Xsf7yY0}EFJ$%>tg>$xLy`bX7o5uZkHh;!WkY*$3 z!;N`i4`!swaM^PI@V3+MBQ&Jj`!|YvZL|AW&6vGOovxiRN%C~-@@qkIyT8uM?$ZX8 zrwUnNu8aQt|E#(vSE7IYccY@=ANO10^yPK31~>zQaWI~@ChhROAF+sx&IZi~oiU^W z8u$ejNn$X9ct3DASsx1naRjnEwqpoftq`h*0rUG|&$j-9NO^oDFc}Ym3j&nR%$%v+ zX|!CzQd9-77NZAG)iwM6aP|`Lr^#p7;3&(%exj*;EG4~fZHTjXpR*v`QeFOE{}PgM zF8p17%Ip02(2xOWc3re6OQ*P9vCaLiZ`HF;CYWyA)UyM2>&X!6C8SN%tX+Y4eAv?w{`}Z=PhG(nYej%DhB1l){Zb|`gV+6;Z=|#WdP#C`VjXZS! z6@|qAIam#VD>=zMxmj*QtaJRd7aYX|U_`>tufNy_c)P%8uY?|GNNjk@P0ys0UZzM_ zP4~RMnF5QMFLG71W%d?GwWZQeL^XTk2dgRetl1aVTPIwE91^>u@MEJr5RM{zWVOzCnaC*dZi zm!rF?{;aiZ%M;932vQYdQv~!Xx4u10s^+Iev(4EVB@ko&$gIMxE8N06^iGV?k%gCO zT8Ah|X~m-O&m=Q86M@NPCr$r5LMP)at64QPI{x|%muiKp>#2p8mo=c zMqCnhkS-}gPwC9~-)t_PGEp5{n0YGdXupttTv#GZ1G@}TSN#bZ3V+bZU)z|Px0!2#*y}Y8qDpsNpL^FZS@_#vg zKV|)K)Y=>lW$Bp5q9e)aYo82GTV|l#^lDm%pXQIxs>9AXR>mTB;3M%mm{QQ-FVJl| zUUY$(qy5j3PzlI%Bu=!nWZe)*Z36`VSXw5%!vl&}1#*B*(&EE0Tu%AH(e6K!>N{e@ z;8G<&&i1|&ps{qlfG<0^`encAW2lR;BH|5KH6EH#)A|}U=+y9b%d%>h@}aX#aE#V& zWttj%dQy0I5GD2=bkL!8`hgw4hNt5H7g!JrT#cRrBbgJwJ!gxZP2FFbU-EK^l8>qP zQbr8;rXK)N+j9`5W8We{4Y8z@g8t1@eVZ2GbW`M5$G+9W=UD>L)nW%@(VShH$;m8u z#YbA@3YWExRpz1R^jcpc8k!bB5ZO=Tl1`zQ}0D6*~NGa?n!N0p?YOi3;Afs&(T=OStf~MiGqk z8pYzIrJL?8t0$(GQ*Z05@zMD!SbD7##+UdphrCP@IT0?YkP_daB(q-4kSh^_-J!4i zS!sC}GJw2a_9WZ%y>w&pD?ek6H09lO`155g40H7@E!}7>H}fYR8Gf2+*3pBzi_MeK zj{0F_;DGof+jO99*gFp+R0vD5N;jWKc^6;T(HjUQN0s>{44Ik-?IbPO#Nb-3c9G-k z?$9oZq4a@bfwr5lZs!XuirSk*-52OP`6sjSQp3Im{tCL_lgGQS7rW@0`BpXW6VO-< zHz_?J+mmgo+th@Sd1>319iroV`2I-ydT7R$J_pk633d`Fs+o zas&D{Pd(1$SQfK`V9y+z!%!7k`mNp|P3={-PVKKQkj$298o}5}y0E-gJ<1&NN+k!ahBm1u z1D2pRFJ!L(B;bE292X6Dj%Y!Vgm`D)%Ag{!ZTc9f7}8s}UYaZ?E01Ou-_z}-s#8vl z;~m4@15j=6*4$P7b)_t81a%{2gw>i*9S=q-pQ9(tDuNCTnfF4su;E}=b{zerSZg}d z1sFOG1Hq!A*%axn7OStCtttY4BtKRgcI*BqIJR~olJ3OVUS1(PN9wz}J(6-o%vd_~ z4_v&C7BJhC?ux0xT;+K#bORpz$gM-v!JqS2$>9A(5hCtSdxL7*Sjiz1QrByDkZfd< z+H3H~T^PBEw7(B)@%2d6+P%w+%m04Z15L2^u?Koaj@i`s4j6Gu&DMVhQ0Xe6ddI#7 zL@wya=Sswb@I!zyjF0rG$Qm}uOxYR~ z$Psyhozlv2jTQoB+P{J@osLHqV+F{&qAM5d+;djTBkhnIjgbGCLc2}(gm+IJh>LYN zq`HnTab)scz$O%GP%Ng2EM9-pl0iSZ(fa3j!$atpHz52sFtJfLKyN&2KPrN-O=aB^ zM>5f)@X*WZYsg(4o2PjkH8H=|rn(bWR5oY_NX5--obezl$LpEH@XP@hd*2CWQZSm3 zT*|_^Canb9S2(O$OHW(_7E;7rBpdv7R%Wj-XWqOYz|bkLe7%aPdH8ho{^~TdE)Rn7hQ& z(iwOCvthF<;%zPsGP%*8abbm&RAq?&NrofE=lv_+%yRhoAnb7*qa>13uPzG<6pU+0 zxx=^Nf0KhjsvA)h7kgTiO+v@18sZnaKVsKWeqStEvA@#dl{&r-Bu_4~amr2@pWjzg zfPz-?Y)6W6#GCHxwQ1t?#(|zc>s189wN%f7y1llpP1_mse?~VTQ4M36T)?<411dVO zM9BNV_bA7+-2g5Ff6KUBYcEEtkqQqIW~?z`%ya;^QCTei!kcU6 zw@(Wwk(1xbvY|!%d;?`$$qard&1y7?9sus^>Q%RyLe(yx6G)Gj@!>W@5qW? z6fMzwUT!O!Ira7hfl0FuQ5fg(BrK+Ewm~*@wIfI;z|u5{G(4$c9;L;}tm(TdtsOai zPR3vX7z#INRTKa z9!r)M*7ZW8ibUq;Gpj$J0jM#{w<5v9F_-V~&n&iPr$@+J?s~vOo0G>q5r@U%6fO1H z`+K#zMw%k=U!5rnv3(M`Es+Yy>`#|APw;|AmO;KmRQgJ0H#eKAfc(=qtDon*dq=VtDHciK&OD$j1NQzj;y2^pZZc7WS)_V0*l8G)|f6dsN@LN;5rpAz=# zJPYFDn-oxUb^>%%2lLeH1u-$@mQ`Sn4ES=D3C~PU-(r0rT1i{2hB6fhqC&Qwt58?{DQ9-)~gGT-)Gk^wq zwl&B0AUXR2TX!m%-bU8#1^c#)<@&U_eD}E-lRY;12_Rz7w6lDjnCJ<^4-vMhsg!P9 z?4XUXb+=HwJs=}96gJ`K10h|VfkKRVe{0!9PYKv}dT#i8%fsSAeb5qlMDDsb4BSR% zrre^L`y<0p4X&hIFJ!^}6mf#Yk*~Qs2irL5UrN@cP0YaP&vvUr6}HCDEdo>&+iItG zLOny=o&v8Y86ODiBpmG(3xvn!jIxhO_^+oNci98yn!r%-H}EniuHb8wuDxUQlc=2U z#UH5XbV_o?fNC{2d%kg>Ua-8W{~5y9zL#T|Uc;|1ssp_FmS*prZk|F?D2gaLnA zugYnT=wbN6B%(sP$+Mgn2@p;_u_v^09#JTb^A1I81(>f;BozkY^!Url@~hql+P-b# zF0uyJSA&_XIRBD7N%yc?HH&c^+$RzXbrPvF&sYyoU4$Pa@ zN(xVKgf#*)>GE3|Qy7WVWu*4|&-LKBRc}<&G{cV*(i@`!j_@yT$qa@^kDpb8r;W(1 zj%s$d!XM;PkT>Y;hK|49YFNKza|HsHAW69z=~E+=;&7EMc_R5=)v;`LV5#SigN9fBf$yb!6b3fM629VnSF19FaC z5-BgiHfSBqhASi;AlPasrzSp{yP0Kb2)#uIa>z!bEob+!l`PjZKB77&d?;B3G5`d` zKd-khsL)MPcz}?!@3rj-lO^JwRigU_4J#)2Q6u}S@S>rlNlUFBltJPY=3*Ev#Zjbs z$nm9##K03!fmv{aB@5Bz-4n#~lZisus;KA0GB0|c2%S9fGUGZKKsnh4r7hosNvuT= z(~G^}IZaXTiKHXQW%ZkIYy^L~ur(%<^FOck;(FNwb~L!aov)OyF_M{rnfaiXn!`rdjt$g zb%u0-s3|~i4c}rOMKb;NK+P_jy%E1nlC}SI{H1L=N+3;{wnKV?yVOv-QGlCv4BW7T zu}#38rdqw&T`f!b%b}z(=y05G$m(14DYoKtAM7KEir4=N(Sd4~r#{l6bBN z)V`a{%AXLTl6b;QMlQ(#l+eAxuE4}ia7lj?wz)SnAlF`-C3D%SQlJ})r1P}>#l-Ab zJ*(@$Q)4%yB_y_2Rj!tr)NI8bgA=0nyL|8b;XVxmxbjSt?2&_*eydjGmSAQ@FKFsgcAWCiqoU0tc< zfsiFomHToIKKm&EV-@&3q>}7T7r>QiGo4i@&$&K$)a05|VWWyEQNH=mGT0HdpbRn{5KP@ApK!KM@c_K^M>`)E6k7p_1O}VnO zPw!}EZ0V*oCJ3B>YLYCEt&Qc*Ghw)VCBKsI&HrSgy89U^SMdP!6R%>*dPX|+8At_f z2CH`o2N|#DD*M}%4|BQF<#ppBkbZrXo4-}_1DlY`?vYp1fMped8>h#W&&FftNtUHU z*1K}e@S5@Fcq^bAbAzKh-G@fGa-9dzp#%q5%Hp1;FU%!0LN)H0YbZb5xXCcng(Y$pj95>cRS8CqgAS;7(GgcS`$!N*_UTeVy z$ro*_yO?T&!m$4ym9mCa0S8$?E0ChCv=Yb3i~{|gj=~UG0#?PMV}GBkF)#P>JXumRjtc!6ZppK@xTCZewC1U zpZC=z&B{ejKr^)7i-|JY9+YY>U1LW=c*=s=am{|5`1DWIJYVMu*FX|qpTPO^Agse4 zko`3@abbFF&b0)`R9QUoTE)K6>4m8?%H&Rj(K|K%AJAJFw~7#+^Q7$b%y4d}w7-Rr zcTmL%#8fj*c|wE%;on3p^FGRBmAX*>o74k7B-QxV1cxOiB2Cnznr${ z0h`FmDU=w4OC?;B0@ysg&@E19Th~WsBQLf3odNSN2oo4Zl`o0~C#v&8#;AELg%rq* zNz7j@6NQ-?I) znvNa!XJ*uOK`Y}k>CkOyK{ji09-`Gac!Z?gkcxtH%8XuLgmEZJqCwfB0pXaEEFj}4 zG>h3;!bO2B7!-o6pvecU3i%r=OWfrA%6?NUGG+a}@T4XPA-ChDd<9J5Xg6GPvl{h# zVFmg#bprvccRysIF4q>&^Bg7TFzDVftDUp=?cmawojDr#CtJR{Uj9zSn__AL&26r| zh_ozsVkLc!TY0P>2_}b(U!~VYr;EIG4v~Ls52VCG64uiuU5u7~)jEGzZZpD_*m$mD zz_sVmeHU>}seDtoo$}z=i>xg=FcFA{Jw`|I9Nu|Lux(F$&NGpP-4iJ8k!ijjdaptBK0LZsZKYb z20wb1&U)2IKWukKY4ooR^g9eBjm~wm)%^sv&^<>82FGc92TUze2&*@tVySG`7ywn5 z33__ds5&+5Od|}&El#Ke55%p3BJQ48g;U*;xR7BC42?5CEC(n$tIrY262K@ft_wL% z&>9O+u)UUwb!#n${inR_-u0a8w!{{zOEk0h)N_Hm{YO~v*;WMdQ1a3C*4z5M_JK>fd= zXoQSSouydWVHLTsW?O)>^jolWjj7EadQ7}{0oO7fl38>t+@ zDrwXRbTP=bOFby_z(hUJdX6c_$A8hZ##UkN@fE200jucVeukOw%6&Sit>Txo%G=Gz z`W^n81DteDcy4VDdlhyCoQmOge=EdK&%dJ1^X=##?F=RHVf`Xj$iIocM7MBd!lS9@ zQXfAQ*(d`@HY1pkXr)Oo^QU9kF3*6_OVql&c}RIT7}_+a9BGCstikAF57&;$(#G;+ ztJ%`~;pFq&SJ{xgE##GB};Oolm6_PG35WE8K|3e zyQzlzpJM)OR16+&bL$c3<&{M^=GWS!rL&~IQ9GGQtVndKO=)OZ`RD%;GQ$bcX0hhZ z;HEo%`|?5%3VK3J=cPW9?eBq=RdWM6$1{~IJyu-wmIJth3P`tan&GOrI2}M%$!~0& zg?V!w#Q{Z-V#buZ?qSc=y+Q^RHA0aeL83Wlw);%MQjsR!9%WMB#<6Na` zfMUh}8C6>?c;S{Nes8uS z>}M-_el4p<;Bj9F=6j;ORL?h}P6}Ok{70*H*1my$YGd%Z)mZ$LB?wmzSAardbxJDL((lCNuw$dNuCYqL3Xx1uWJPsV`I z6smgy#@0{2F62IRFNb>s7m8;aKuoX{BC2j+KX9St7aeL?`KZ*F!as?Gwxt&k7cDcf zwf?j~9Q@F2B5OC??XtqorqqWD%BA!|kjO>pK?R^pOxTAMDnR2T{>)yD9SUpW}v*aql66O`O%r-J(CrrO=w45Hz zk6Iz%8c;RNXWKxKvGw=`;(x)suOn=|O`{SprQOU8lF}0AjihS$m?)~+r@8a;wjxB^ z^oH^SVu7C>r+Pbo_+vvRD5dR4dF#fIj)9DmDeGGNYCw;6s;J3gy|RAGJ(xMxRTLLI zA&0MlE>Wkr*Y~M+F{Q5&s{$5f0FL*^kSI%*5>Bk|sd6pyw{46?s;9i*#}%R_&081t z<6uHhR;@KiQR)0>7Om6263NYy0i^g(Sa^+x@Pr5*$?HMeED|DeM6UPJQ+wWPBR8F< zRB8YPPH&M0bC>vClZa#ytk;K$dE9?ujzJ!^e-))6v}+%QwiW!(?R3FVU`nZBVc+Gu zgA8QHO=cWQX@@n1dM@fWc_gi-lVV{9ZiH1uiA9Nd%r$OV;LhsvP32^27lNRH1j)@S zilKC4hzyo;kTdcWA&y~Bq)9j+P(=jLxFddbxFcw(kx#&jc6IFSnfVWA2QhR%HB2SL zz&)?np>!Jes(>d09vg4~Na@-L`YMR}mlwm4sCKTo>_ys^5Cx#OaDZ+WO?5+m<6^-gehsgqGb?(F&Z!uJ@!8Is``^!bKRk^IP6eKw?IyoB zp^Myu)xqqsB#tWR|ork1QlFX@+C!DYQq zLTR%iycq#e@1=wr^O(dWB?Z4^5^hU=q*zgpY>sVy>O=Y^t``staW*m>BZ_iE|6jK7 zWDFx0*@U1}tgu}7OC^>)+XJ09plI_>?F`P_qkk_XQ+?tJKY_3}S1 zy_PjDCmIOBpC}`AcP#X=ar&ZGh@tf`HI7CVM8m22~bFL2Y-cmy@1vs^xeD&%qe+yL6 z*&tWMHd$C4LkDQdPZVQ6nepA3Je|2|U`ipaEYqF3#mq9wKhIn};k7_eBt!(&!&Mb0TF0MJE$fB;=0XX0h%6>(iC4n6sHkUmv~4SmyHB zuY)(a9!Q{~FZ5Y7eGsqVk$vb8N2OAd>+KCNJ;NUHPE`rFB~1eSa{P&K^Qmav=%#9i z*6bkmQ|_)ei3+@E|Cqkb!I;bFVZFu^omhu0Uq_S$diKzrTPYiu+JJmEZ%+0~+N5?r zOiwd`efnADEOz7vx}S@A1UV&b0x%`hVEqfV!VY^9qr`Sk5#L_cE z3Z)D~vqH__#f6R!t)z{!h!pOzt3zo1Rx_yNUQuEZ-~}6KK<|B4zY~;YwF#Yb`;gGN zm?V&=p7JxjoS%Lsv!!Apns6)=K$haugMa%ihq@F~jX@)v#TzLN;9c{lTp4~~e+dIz z*?Zey0MHICd}XGS;4GBpReis{;5sc+>@V9XJwN!yvpz3C70_YdFlxJc95F~mf!SZD zo+a|&cG|1sS$BMPI9{wZ_enW4xL$fNN61gz>}D7rIlEj??dyEP&)O%b<~YiFGuPKIgV zd>`S7p06xNC}&g%`+VB_N*@Mzp-x_b%@8tQKQ#~em3FJ~9~cJ@ug@}9Hv}#MNEwfv z2WE5HS>+@uY$DMH4I3ysdOBlEW2Vz<$IONs6F4b@vXB%w!Mj0oaV=#D64?OToWazG z*M+}=VYCmP13urPxba#>*v7p2hsbmOePO70!gG;^xEK|6_9HJEQt$)P32{2GFm6J3 zjKJELxg7#iR&d+Z84@U*>C>Xe~OHIO_ZSn4g(aBvX`}32Utqnx+lMub)lw`ssF=B2Tvk#=T_S*UR z+73ya5%((RE>;))y=IExmGFn)cRThyx)rn>?uXtisQIz1&nmqU9}xtG^7HsFw5P~K zYKLcC{*D#TvOdPc8eVZwQ*ihMzm3@-@3N0w$ZYj1JBtq;jWH#jbi?U#bqaU1%^M__ zBu-VXi7U}Ot^^+?XL%Elx4BUR34lDH9S@koSHym>J++(5`X?T2_|`QNE;N&DqnnL& zw@#v3tA4|d&oggYLB0$4IW(V zu2cQ7d#OurU-PWNG_`SD+xYGmB%)|j>HYPa09`b}w+r$NGvC?*_C`7XOX-&`{C9GY zKPj~nxF{XS17J@qn4#vQ|Aei_Jzk|%`UeR(Yvn?0-jqnwQYLRe(f!hpGgKKqpLa_( z@*T&wrme|qo{jI}v;A&j zHC3hvbG;y^|6Nb@RhQd#!3=?@jwde;RbAh7(Q)*=U+V5JfZG+DfTX;CQ^p*VHZ^I) zZhDvnC?uL3Ux(?k5$)He0YeQ6tHwvGL%m3>?FbwXCSP=okMq@CpIJ4|cX535XG|#$ zM|L3jobtB=dOGtYJEhK_9O0v^Rk@cA8AYS+l3$}^DBu=p;(?cjw{5Bw20&t~FZw%r z{4@Rm-1t>*EGEnQ^aTeg1(C(9!p3E92Kz>&t;IUvzBbUjOleYPW)Pv?e!|5?-qNo z4eR*y|47QmD%2tMSBSs_@#dptBk(1jeab1c42eMn9Kp((vs@0e#}ZBa7TKnj=w*92 z+#+WpwTbpsv%A{gyXG#}kA2zeTh3Kdr;Uv9C&%KOY!Kp)wyI^ElpD}|Bn(`T^ahd6 z=#aos%z8uL-SdjgEc*2!RRkbxT${yX2Ydny&uch4=I&)!q@syk4!YyTkTLE!EkBC* zrM>7*P3}J|A};wtjCeV49jL-S5x>PcTUHgcb+jGLM{XwFKF@uPI`UHu`6V1FRetGV zN-5Tp0(EhoM5g;VQs)1_ne;fk&CH4?YyS-IHY!%E0Hx(xE}I_>Xa$6iqFcBu@M}91 zdUzBn5su3`{HKwtItPeV$R+=J{%1KuHo_`oEizbc{}F&Td*w+L zy3bVF6c6`#m6a=b_i|1f1^Sv!G=^`(<&rmxaP(tvsLvSmV_Kp48393P8_7xSCsvjX zJuFq89O8tB=!~VnzE$n;)_(XCzu8HH%=u zcMmUI=61}?_mit4J482%Z^t*q2%v49)smo);R7Om@Q^)S!}UFZEk*Yc`-kjRoyqSk zp@&pdiN)T*^8kMTz~XuSHo6+I>XqTG!@><(2;C`DIpRpt;FYT4wRv{;?y8w$*1Hp3 zG64>qK3nEyTTWL4FRl?;Gaw9l(-U^HvEIdqw=%TC%+BW$`I$0PP?&RM6-{D-duAa!GS23#%OMG&w!rv@9*aDd-|{O!THMVkSeb9iw&TA^&CRL_(P8;&wcc$mttC*KX5w&}zTcY-X)@ zJTbiP?e6WBu2A`P$;uOD2f!I70aGeZXpq5%rL|IOdnF3Ykhdfzd=GgY7xSSe?!Tu0 z$W<0Nh1Y%v{Rhs#QGC^D6;L^HEv;*7Ad@u{C@$?HfKQ56-!=X&UnL#C+6x_vnxAr+ z27lVfW;}!^ZNrHAfCRPRI?o9D(0P&fcY_fhia=Ub+r>?IA+A_%ctf|D>B+w208$yF zweA@~!17b11ATQ?Yg}3gPwo>QSdmzSke`^l0 zCs{=2knGK3BE%mBAiYs64?(xR4jSUu3+Pi{5KUM7q|b@I9asbGSJOthZSN9^in?uq zs$($U->PNZ)MC@W*a!pn#1J+}&6trt!ioZ~!7IrAm)evAreU1#Rx5f$V3RoVUZP3j z4no7H5@kpjMFF6^<*8Y{SfuTZ85E;SjLP2pTT0p*S`1vh-RC;`J`==m zTG4J@ElvK;$kVS|0&$xbdhgvMO-CttPBN`w3fqpmo_G|Zj3Y89zLC@48=rs8N~+3i z-YIO7OG<=_OK7!K5fK6C{9+`qsln1;~%j8P~obkeyf)4v^mFb#$bxI1bKAS`y6oP)i9aRfx<3SqUL53mA5)Hp1f~_QdS=K!d-a1=RQ&v?UP%G5Y_p_Z0SXPfIUiT>+aq;`9mV? zV+nMiBjqQ$^qJ?|0|{qk1BF8d#Jh6w`|^a6)|V(GGT?mk(+S#DE6|h; z&`_b6cEDOecDzd6(>VZB783FW(SGzWrJ23P>7bwQ1*jn<477Z;^1{M$AP8&T@?Nzv znvLSmW=PmyR8uVzY@QNIo@V2MZxkt=9|z;y9w$xB0Ne^QVTF+)@74@sw1S7xrNCfE z8<-K_jO7qu7}4`YO`b%0|5%1@_+PlA-%v)>v#Y)jju!jS650+b32nj36^hWi*;$k) z%JaCZa!ZiG-@VVS`Z~aVdIikm$1p!CBXNcMOrmGRsR*o#Z2}la)|Pe*L4*d9jT&X` zS-7d6&ek&J5+n4*s+KP^_g=>gkR!s(3+O?CLNBybYiTmyP-ZK~f0W^QB&87rafed= zdQKj{O1Hr8%+Swx*f8t2L+9~;mUM#e%$d9ztxcbycC#0x=0Lt{1u)RU9hBYa<4HPvYfXA*yHT{ z(1_5Y_4cMA+Lc#3r~xyjX1puCQt+zagk-avZ2%9Bq#?+cD}aG#RNG;n>3E)cajPI{ z=+-)Y~L-?o55jDa-KZG*$U-lUT6jK5k;NH8Ny^H+Scr9G(JQN~8^v{A(_ z)>8!jo&!WR59`YwJ{8eD8LVk=vTi2W(%IUMx|!$eQ5kqegtKIlAEQEw>yVAb<%4jA zvoK+hkmNw;Tk$sa>|%q__G)+Xoj4f2zyXOxvJoaFlCS;*YijpERJq6TA4m``p1 z+x)z*jwM$Z8@dE>nGaI6)J92h+foxU@mPwUpcf@|U&E#fs^MuiZWPMbj5j!2xpH(< zgOW|17B^5h1WbCOXHZ0C)wp-jp;w&_t6TRQ4FSzS2a#RmF~@I$kMwq2Y4_Gsb^!Uu?<%5Vxv-@Yv@MyXN0k_m=((y6< zIiY^Qy{$;PdbbDi;rh2C01FN*oI{W}9)id8BH@#r0a2K!+bJjSEk3j+pvS!Gr;*@p8xq8nm|!cT zd0;~0+O;C348R4>z1%m@QYLV1CVf4gI`EUfPz|VU>Yl%Nw4-tEgN*-q)Y>vG(2d5MWZM2%LigfqGa!XPUT@|iWhMbOu}BSz4cPL? zEcjlSk+9i7%)qA1-o4RF3Usii+7@liT;hBr+Ib!It zMkqt}-;M+4{s*lI9f4-1JG}5`JbiuwEiE>*m)Fd0$Ba}CS@m!US=2UbFit};# zYng!KkgIiS=AFU(vsrQ-Nw$1O?o#56wru&=rjwFN_zLUW%V>46 zm}O6&ef1Dg(Sq}2br~!=vqlt1?L?y2_ z!kpS829y%e;7WwRfi{(j$YoB|;TU5UDXY3X;anccvf84r1)lGkRv9v)_JDL8{1vRJ z?!UxYqvoTPH%awM8WUv3%TXj}%~<9n?A4YNfLI)r8@a+#($b+0r?1pEp=T$RR2 zQ+jCkmD!jxR(oQU!Cct(V4>yWG(LJr^in%8%Ax`A&liN3)RIe}My(orSdNuIAnz2)7>jjsv;d+F-%pq(Mo)KlGW;wOR zGD}WS#N}S)LO?v5pDgK>Q1-0IkU}isEq`tDIL#o8_M{_&hW5EDXwAEnI2Yy+X9y$> z96O14GB~mqUYyh67=_G8fsD7`n;30Qn^7J%1KjnbaO_Ch{ibIQ#uc)lfh+U|&Fl7x zJm_efi5I%4NrR@bMT8tT_DKte|^oMDjsN9`s&n^ zWo$)b@8N43CaPYuNku4^e0tHvzb#KMKRr2)H|nb7{I}8If1fJamF~#dM<|J$sQz&9Q^cxa!?+m zL6aZjk4FQp=7ouTrW{9x0UtT8TBd07%1sDmYeRd*ztRzKiYD0<>Q(#z))Js69H$)= zBio6cxq znG!I$8)np^ZK~D@nb;zrqeF^r=G1Tc&o##N6%$_Mgi%8#ZP-6lD{r*U9=km=q+8o? z@f2st<3>RyPvwz+( z9kUi}Q>u=5PKNQC-8A87jYtrc{;)%vYZ~v!r%ks5Y~z3@-vCZ-q5$K(LhvEvufy$~ ztJ7Wj2lxi72EB&uRWGef>6d`KF$dpFJ-dkIfxnopbO5c&}g z8WobB4s|wUA9B2#B^qudplyXPY%UFA=oVs~0#d5zGQ&#JJiFSSl zoNy5I3@Y9e$V1xDMs@*=+p6O7u5zNu$cyHozOK0VB#RJrjt>5$CGO-U{6&}_*q@F%(01S(;-%ZHEGt7$Y71k`M7%SB(>4=S}sz` z5+2qejE`4#3WlMvNi~U~DC}Gel4OAWXydtA3o9}9?qESVt_y&Y7 zD|E)?D2y?2utM;PW1IRJh;_vuw8_zg!E0kF01jL0g-0*G8mC2AD<9Le{uVZfi*H`^ zJj^%{S2z%7LP1x?WvFFxftq(tbQyPF@B@jHXHE?q$DIxJn<)oBR;;B`BVuU3!RXL@ z_;JFlG(ul4Y`2A94G5ixz`rx531?w~-gu{ohCd9(m~KY}!k*)L8J$q1MpUOIRkct^ zR|Bctt9=FM>ZiuSTFF(KyGtj%un)@B$vj<_%Aqc8Q;j`07F_5mG!JYi65d6JjfInM zwPO^{Gy*GC0g*Tn8-P{{_RV%oM4M%N^UeQ$0;vRy)l^cQ8(*}ZJ~&wvLg0Juth#YT zK!)e~^hV$M>mG`89;!P(L^+4RZUHYzhLlV_wP4yV_XprP5ow>VOQ4tLdRB=6<$QJZ zuh4QQjg37Y>HCDjZt&lX14MNmVZ&rH>;mw_`r?` z+ZF@d6k1Go8JgJU7(6YjBmjBs+}El{#A}!8Em!p+5Zo=2A+2g=S7`t22iAQy)KYa+ zbv4S%K(8?C*_#)ITB<#jPTt`z=^_KF@Mi`Nft8XRNd1NAaA5;}R4DBvz#;=SZ_aL; zeyqR!ktPHL6d5?K2^bR|qToi`I$$`V?-<40P_@^^A0)7oY794_X!XjM>Tb@rS;>8c z`q=u<%_KOU%pM(Q>Xh9Ecg`H@`z}U1EoOi8-o)I1QH}n;g9Z9cT0K1BFA{Kh$2-v) z0TX_Ok;}Ek?|sH7H~O0Y34bC=@p@p)5Idkob3&{}TznIU3{L6dIQ*_B5ygqpO11Ha zc4oi(*j<(~X%a<>jY2qaXudWauaph7U%=z@p>zHeRojjQ>TBLvyO#T5IRf=R=V-}c zU9`C^RRZ_Xn3qTV%wd3m+Wv3?e@apD#-QnYu{RT(a7VJsKB~*~D|AS}Z z$#a>?sTiVFNBFXf!xsAsO`O{UU*1uC1^|)Wfh2!-OXi2ngNS0vGESuP!)twTF_Q-@ zPMd19MiT3=0S|WtNBGJr6U&7TXc87|&f@;ly`TY%ETnNt8OGLie*#J;X*tNcyQI!Y zOcS!X{cAe}clE+t(w05_wmiN>t2}QBR&R&?p>K;U{(;n8!{D`Nvouvmr5W0XY%2XW z3o&6}zp2R_GM8UBzE8(G9mma0KSufp9eb#CqV%>?PuT#IkF&o>tu~E1aRLmV{&DGm ze?PNPQQMbiR!%5)TOYoaFPdP!W_$~2O(vr8!R&Pdx@TUsxJ^XpOaZto;?e)#X;C;P zhC(bIj7qcps84epC>6ZKNfV+hW{AAnfd2D-zm3dc0d!N`W{x>7_PVgIuWOT%vJ_ri|lN zrrZbR4cQc^wsvXU{_H z-}5f`E@2hUVrKZvURW!h|6p&KOXhsLF z7q!Fha{*{A>XI2bifZ{{YE@tG*7#10DXL*Ofw$8C$Av=JT^QD4yDe#s;tq(|F2hlK z6;g$?n$8BCqgrZC>tH(1OB3&2zH)A(uQu5aoR`Aq&K8SszAyspk9M1B!ENaYvyv;E z+z~Y|={p+@ZWwun04^GrZ?By+j?5SDz366FFx1ZpnPDgwPTT5>(S~A4##!bCBK~H6+=VL6lkQi=;XBmJ-&AX-0t8{VKp4y$O7;jR&S#3eGa%sy zzf9)#aSUDin-kab7NX!^ls{SePB6Hw#6lUYIUOP=Wp*wk3$9CQD1bd!&;Y=gPCgxl!q~$V=fvIjLBDEy;3@WQLv-o5q9%k-;3ti2h`lq>U47tn+qknz- zZW6eri4N@Th=FJKawb82khs3C+LRuT)bi1Pu~CzsA-CU4>@Sm^i40QRxckNVotz6H*4e_W z_xlM-&*QAa41|w?idO96+3EFvXR;N-(7JE@P6uhuKc42c(>TD7&2 zeLFFBu%gLvBHrj)0yZ5}q#}GXVxKj2JNiJafA~&4q~Gf!RzqEECVPoqQDXsp#C-&x0lTW15Sad@YsusbftghEf^1>9O+$K`k6VLnZU z@Z;Ij1`rtgB+lHxEZj*=j-TKyMiy%VK%naE6kLeQImXt4^5YHyJ_2_cDAEEc@t2qI z1z*uo^O)ByQ%r;vW5ee`CJ9}DA4Q&Y;=BUnBV>6rvjFXdI)gC7J<+aEiU}Mo0~5cw zZ<<8`*yn9?C<9=p55rWh(~f_ITAyou?9)7#hft&-^= zf;n%M{EK-MEYGQ_HWI9wJHwGhflf$3LmmKM+=RuDF5yNjF#+%I^jr)n^LGxYj|ogG zL&Owv&@weM?f5jzNkFQOW;{I&}pBYoNcAQ!y5*t&`WpOp`_oT#<9QqgS6eUHNjTBdyjycqzttpsf?QilMQ8Q2e#6^4}W z+sFq5{Ikgd2c2I~Fq3FOgX4pBy04)W#-8{B3zf+jP1>wNFeFOUgE@f@(Dtk3JE`5n1XOg!Il zUWwplM|QF;fp`GsJNAOSO0vGUW#&wg}nX3cb$$3F^b#c&g5;zdX6whZ4ObN`0OS7-%Cu z&}6c+Xe?Ftc8wq>l|2aq?2j9sOS_*cQOi}ZQpqqg<>U31(Tj=%V=#o%YB@;r%0NVU zu6o(si#p>&*33X|)(sBvM7Tr>n=A1Wu9~ZGkA>-J<=5`l@LYzsG3GDgD@sZ;j_%v? zTmht6p@Mc#8e_6I!A1^dUYOA(SQ!M@zIzWh%&MAfjb*47GLS5_p>lgro;~lpLVVT< z!2rnFK5w_>>t9Ly-Az}Uu9?$T!|l@3vD%<+rX+IUAfroAOAJB7v{mAfbC!)z8U%&m zyLe+=haW7QlVswNK%op=EbCdv{JAb>`mFV0dF&Z;Fb z!R=CG2sf!#W!tF!u&U;eRyMF<4@)lj`=azCN;B>u4DpO_T4aEKj@hCSRnBP*yN?UI zz3=gH65$%S`3~nK_04*E%0TxU5J{c9IBFlghyj`=WraS(IM>#Ro>9(vU5@oqkwj1) zu-q+eW%}l^@ijpe0%HRC*!xQb77vY)I>ME0GyXnw{ir10sT*wAfeLtO!N2#?qx%P4lpHq2oBR`#A@TQ`(XP?Rrn zqh{g=*}Fr8JH?He{ZDu3zG)we#N){R5}pPUl*OQ^yGix5WeI$6H~t|WtYX9MqoNYy z8IqN&W=I%6Z2n-1xz{)ONhMbgAi!-ip6gtl)L1=VbYa9aGV>Guyt_gM2SQ#Vz64jx z+UKn`Q#a^(p-5UZliv|Ye5I?|>N{i=K<9t%0zbehJw#79Q`g2-3%(_pvXF#Dl{W-3 z7}nM6QTK<5^hMwd&mhQAX}h=%l}MZCTG^0v)N}ZQF37dXTxU}`g$=%1a9vgOR)uP^ zm((K^(WU$uj3FPfEcg$fd?ZRjvp*UN*3MX_r`n($wfv!;U>s zjQ1ZlTe~pNHy+Uw2O*p=%gD+Ee|2^vl~V>s=XmBsVH4=Gk)^P0t7$;F7!RW_1r^KR z>QvO<4frMS#PyJHjj#iuP;E|xcPwf>1e}= zJLJ?QuTayFQB>4|mJ8DxEsTbJFAyk`DFYEEjBxhy5Ti3%S~T##g0NvEop%O=%)#O$ zb9op`bujARF;iA)>jp&BJYEclA5Sn99q-90iZLmgmzLBQg?cXo^Vzz8Rqqd*KM#(B6?royQy#NQ|_$y{U_Vr52MjN% zMIT*WCj`94I>{oF0xJYR-`>s4zS$LYi^ zBne)|*oJCN-7y-bHj+IbnDAS{|5egNWgNTVIsU}>G~3S8wWKO9Des||9#QGw*B13H zm+{|^qN|hJ&%!x*6T5(g4jknU&|Ycs9o0saCG3+5kxCz!ZRH=$TcRu}#Zz#&71Yn# zS@=5+h242 z(IUB7L+^|UA}J`kSI{UG29eCVn`>YY7I>8jhox;q4dRz#^y1Y|M&h^1Y=0AJVC74$ zToug3ay_YZ#SAqHxNE=wfZ$`>+td7-@l5A#m-7hL5R*67#s-|mh!m)Ynqhf6%}g@6 zZu8keMz=D*LuSYiSglETzPX9`QFS9b0rWpFXmwl3RmEy2 zo)%dZ?Ox(r_~s`-i@Nl?QEx_>^(e>4Hjz+ci`IDPss@d2zyP1MYZuE6AV0LOL41rN ztxmTzx^4*5{eHwOrIQimg+k5k;_D=(pd1K*XfRmRl{#57#8Ju6T`csnQcek~xQk6r z4<)Ax7;yzyL~SU>jIeAo4lFPxqxx6wuWOI-#VH6nYgZ{mCE z?KQ&M$P4=Q5M91@*b5~=Ut~`K^1>?#POfV94{;W}k+%uqXud#1?lIp$8nLd(?rs~z z4NY9`G<97~2G@jJSsq$^BL4^We{R}-%C+M2hecb1qewFY9w7<8ig{Xtc5T$ev_rQB zU_AV2Gl=Hc=LTB6+&QXWWYPCi3&WSN|HfZs(SE}I>XOUN<)ssiX0JA%A$sjr3Ox~P z1&O)`I6z@GwJDpZPfy97Ph1tvtHx;3b4M7ong8PGix_c+E#pVlB?(dErHC(Bhpflo zJGH+L)|ZXRJq>K97EXR2*-nn7rCCFfG&S&)>Ns5;f)0Qx^*a`{&k9NQR*+~FsKL=1 z430>JOUu{!V~RlWU;%5IqnJ&zQ83O4f8urAUHZ+ZgWD71GSQ#K|145aO<@R-%tS%& zqU5SHlp1PcflPbB_m7j~)MMHL!8e%^x;J_MtJL(RC1gqH;Sfq>(0n6oi?+tz=g;bL zowl|0lfFsk0>Q}-2V15h0 zavq(5e|$W5#0`s_D?JUtav#t;dhL&%Mryh0N}C@QgHkJbwK-96!|(c`ZyYzkLpEOoU{(m z5zhBJDtsC}(R=MOnYvKpx|MrD+=4IQBWGI=%!|c%#4_DElaZnYO`md9t5UaYTa&m6 z_}*sN1AzuLSll%EZ{rN_g+}J0NFjGCRNa4& zivcMBB=XAT(iYU{J@HC0K>OSmpb8iIsJ{jDCQwemRZ<%`rQZ^AY#qLGNdbY*fq4Lu zq1j`!3n<#|g*4Si0LPY1;5$lES4! z5{kmgPXk%WWDdrutw~WLs0JkCpq54lj?K8i=AFP57j4v+3;i1)QI7&Lo=b5kGL%u`~9T_v*5)p!M6QA4Jr26jc1uI=ShGoht08m2hh*BLRt05S*4!XCp}a+y}-*B z?GPK4wRrX98ySbkUlV|)S_ho3PX(?wEQ_`R(-tKfN z-$7d3ko+pYTUezH z>hxpHOj3g?KXSoT5J;C3Z1r z1?!());z^`8MaP!#TMYEy&H&nrJ7#%PP)&PGy`jfE#6%?Y!BGHSZ9RNBteljB17QZ zSm)rPy;SMNG)9R(6IQ%$m1gB_s;%PK@L-IYyDfm3;QR&GaYIiwpjE$e@ zLR2!`#6hWTgn9!R?PA$#Z^jxvrj3d{^c`S1=!%g8SuuhO)Rl-UQ~Q4IivTs$&PjpS z@0HnV37>P_dI=jje1%Gy>*UDRw^X$VNl5Cl+XR?s_Cs5b<&H01IYj}0`65!dIP}Xs zgpWs5kQK;Z{z@lW`4`CN&q~luMN-PgaixZE#E|4?j#&q&{E#JrX@#Li>ujOW!LX}F zQDyoAx$CqcH*Hkh_K|urfZReruRoGimTa2VRhNSC%#$qqL+G4RHQW(4H@cvC_qDU< z&oL7Dg|xmXe${A0XPn|0wYo^a)B@Yk#T!E14oahKD%D_j7MX+_4<5W0H2~IOZt%jL zv4T$pH?tqdfkzAy9^yBMhZdHUGuPLu^!n0HbA1zSBfnZlIzScCM8}B=ErrY zA=#wQ(UP)W7u^GXD-_$KGu_w!Oxa+|36{5-Msku~pkvfk1g9-+F0Q5?sRvq&FjQ76 z{~uFxUr{YOIxeU8|K!kan&CxwL-@kmua-_@Jsv*3u2x0hm5KEq{EwBmFMh|!2G3a3a2pgOrufk2x7k$F$iQI@-(qQtICp5Z2hoS+vy zvBVK5k$z+r`Nc2vkk_GLxp41laIyC-Ac{~~;E25fAE=e8aZ zw*08V696VPp1+DLR~rH`TDoSPs1X_}679}>M+iX2*(;L?zniqtrxm&RFwo_S&v zIvA-5cfV>Lz}Y_-hD&Qx7w*|s*9~HQ#WKCZ;RIXI(WC>fbVx!-Z|XXT^f0omKAsLc zqpNF7*5T>q{oeu%inmC{%uOwMinSR?$Ni5yJk+C$KL9j3(SM*F$e01Yn>Va%>qx&e zlPISfF4K`xh9*?3!+kYz>5PP_mvkgRvY`97SIS$F!YU3z9*IX|a(>uay3Fu`4JQQL zulTx-{SJ)zUXjr;v(FW6D7}8W0>uuQwMzT_{i61DMOS>eSn(KoI^$N`qcQf9wnkwS@U5fHL)I?`)H#!{3-u)l;Egj*+e~j8&TWhTg6%b_Xl8a_^a3mK1j+GIN7}zMB3D0Oj>fd6^BK6WYi-~sM{s|7D*lDhAR(lPBN8}6a zYeViLq|#fM?{l2X2m>B5WseYUb>MU#R<4v{!^Tr>wDImMvWx{BXSH=ro(@_0!i+oDzoI2cjH$^x`(15CCI?g4)U+@kRz+C2hx{5;#3{GLQvmNb8shP)CG3F&?K|`8+ zi$?_d2Fs%d9uMEtHWfi^^L+Cf#%1XQ{pbDek_*q?9G$ust2CY&7U;cW7|m`sY6RJTUZq8PbTebNxnL?KOg7c48(Izk!laA&BVqePiB z91!&uYYcE%XfB2Vv0;Ms0|yqnEQr>LdJNcRh}_q{Qb6ThlZ;FMSQzlS#1||vU<`tZPsK;Q3?NX$VQAOE2LMhh@5Si%t=q6&SY zDl!^6IDx)cdeTPsT<=MAa*aieec1aHu(G?bM$qyg9X`fs=-p_HXHgQYT($9svW=Q* zC}pn4%-~K6&6QkLpfCllGIbe-KDVw(988=;Or&Hc>hn214pWM3*A6`aqY3t{S1bh- zqxnhAp_||7brCZ3+mCm2BFWvNV9Q;f`q9*ei4$m3Q3d;=!vx;jB$XyTaQLeq2O)}A zAk?>1H0Jo5B>ryWS7i9tv3Sj#_yL>}upJWMtUENFpyzQr$kVWK9!btU`) zQ5SA&uRLy5tVI=Lg1=t&Mp5~`O{6>I`-OqmW2^VTYQvjIPah3g6(izL3?kEO$I?*Bi?M6DJvMlPy zNts4pA6t7RFx*$&9ynx*!!iw9-5vE@3FhRjv=`j<1xjJxrv(CaNTIoy9;9zoGcoUm zN7Xx=7o($J%wmS9NitIGP07X`qkK^@J$rHqorGL2DYfyA=Zc3MS)AQs!q7dra*E;) zxBab#+IIgH*AM&7Otg9HE=>y*@0=^V$ku-&%ak*ogR9V=V%gMCe}%0h8ZvB8Au}1_ zb02HjJz51t^gh+R$UCsQUW;waP17p#{%v8D$r>pV=>y?9!Zy7BO#`gWySfmc@xWX+ zW`7kOl2knG3TNF9h{BQ{{=XGCzHjqDy26QTmo{dtT4^|okRFyQ`yjq}b%6b71bv{|+@FSh_EX&@*58Y0S zmZipZI5@3MraI@~+w;9b;8$g*3uKyb7$!p2oiNNOWrBAE^lRwRxdCibg}UOMcomT9 zQW6IP?Y@~KkzP=~6~Loxb)cM9nzhL9j|U_0uTSF~04XAtMajx#cV@yFS(2bCk<~Lw?TLms>?^a$!9p@T-jWLTZ=>n4B@jGd00eTluELl=G_2 zA}bE$Z%CvOCpQ|p4qca$g6FSdZ4R8ChAUW00MSw3lCuVmEZz-xXMYB)vDMhtib_m} zuH81tj22QxL+MVO0FI*XF=*hIE!`;ne(#@h%}NpM2sH`{H~Xyfj+KBHlzTZ@maN`59??hHzyl z0{T;u2e1R+sNDFIMCokXvID4{_y)1ApMr!CqOm*H7aOwdjI>aJ_ESfA2yE>-TRjWN z_KvV+(iHPSBpjK3SDJer3$J}0#ysfCK!+;cI{fE5y3PJzpFG$0w!42IG?eNt(nibw z71AMg>LknzVk29k!VL6wlts+-B|C{E5aX1LN4AyI&<*`qO2k}(>qO~EkJR**+mltT zel>#0)z7UpI+x%xVvu^GqGeNk;$!F$Hmjj-l&l*HU7c$^TGk{m4v#d>IO++q>tdRZo*RMgUr0xW!Zq;yYbz1zI=j4whxD8|ogZNEq5yioz9 zz@e0B*ht{-7v6`MCpnZ`B(4M#gG8xu^PU;SK9j>gPuozLVNBym)87)S!BJ<({Fezl z>pTB5MaS7X$cCSix{@jVH&gq_C~Z579J7cZfp}JFfL^(^(k5>0Q5&n&xM2DmhGvV?!yQ}V1`+K z$l3fvd-}5i+rm6N3?ve_TFEVI>Pc=`9WJ=VV0c!h3Me}QsNh$6&xZ^5UYanTxHzc7 z-`~q%<|MoB0Ss2WFX99em$JOCk+R|aVIWlE(iTmDz0uWk^6U3g9RRM*jfI;#)WI#d zz!|2O1h(JBs{zxsM9Y$#9&JPA&Z|HBT%w;0)0F0A4GO32ymunu(YEpzst(F9M_V^b z-E!`Rty*pcevWekF&Q}<<=JbZ=te0zDrE3>!dvGMaI!T$Dn$*$H3s2RB+|Yx7uSLX zfFh{x?{jug0P-xsu6i)DU9q*1{?$vM0HuVx#Rv!AG4ZvZF4JTYy?Ak@jx0p0Bsd_>R4UHnjok>@DlEZ$iliL(D*# zD$w6ft5kCpdI+kBhO|#x)x;z#kD*+lt(mro^q3WP4TQDa=lo?464e=vT(${l8kbR5~!QCXL6#RyyI_O@?!pV z>l+7Fh9;CmO35q7SrQQ2`4S^Xufo@-|!uOsop5b&d0}L4 zG+eSwxuHTys&#S(@M?%TV0n%xr$F2$dU9i{F|Gg(BxW|{i+vNNSWDpxyKg?0urfz3 ziTXR|fu?|67diiIbp*?8+$3;>+3G3Tgi$M$xmVk1fW2ow8>F zfoS>mNO9ZQUem@uRcI{tBOhad8VMlfP#jsdh@Ga=z@UDvzmh(%mbFN69sd3_m4Jz! zb2r~;zgrg|Ai!&v_WV(rDW>QjmT{k>(U8LO4pmzYH(Pi^onI*wN<9%$ctcf>e1M{j3q5Xw z(S*P{Xsr>vSII5Qo_SvVopcWqw-FM*OGz!Xa9xaKgRUp$dq=z!fOZsx`$SygC+mfeDf&@bOS>tBl*J>gwLg9OALY~2!* z$d!1NI6q^!icsS3F90oQw;BD$#IAZsvm>)lI9zRdM?(0Qx%HK@L3nZa;o{(x?s7xI z$v9Iq7Vvc^382wk&#Mf$Cz=3?K4}G~>$yk2c%$PGN{{9}(z$uc>*}|dWagA%mMiq_ zwG;1pClE@py?(nXUNTTO*gK=y8N)b0c?NpMagy21AFe?+Esmv5po_U)SQAXvx4wqJ zEkMVQCxy_F%bStMk$5OR@eYG6KeT6IQYDqkO+V5g=Lr?8W}S_&Y?9VsLy@>2Ng$M4 z^?9J_bcvWUqzq=0X0nVL(SN?$1wp$cA2M_)t1Rh6z6Pp+0qc}~VXVQ)F+A_QfBe6L z4S@<1ua$*t-@f5?80A$el6JeT@T$WKeM+R0;}HV7X*U`-z&jyEb{D52^&;8D)I{Hl zY}OzvZ1rZIU%b+Q^m==JZn4NK9i8B-Vm`-{UsuX=4&*}T_)dATLCF`p5dua-lwAGL zWuZ#`I3?2*&C=;k)3U9L=p{G(R^<2jMIt*_h&(U5%?%6S&R#_#+8QqEadP+WD9fjo zwSd|JPnJW6xRo(91OJv+|7;PRJZTZBX5l{1jkcei$86{@yF2QfizC{g`O8eITSl|1 zztU;C8i*XKrWNSwClQbk)_&I@wN^(mz(s=jfdJe@H9lPB_$)aNkguY=n@WTyW|k%gIwq8K@>D0 zD{@Bn7g=2XShc`^y^fBXg3>dC(^O8=l7_teG89tSy7CAMXPR-&E>|5sN{ljEiI@9! zCw{!{A^Y3|4E$1Jv=-EBrYoS33owyiZu>|o~ zN-9f*x~h*>8S{|^WTpb%!BAyfcS|>EiV5ui>^aL6f;<1e6FAWuz93b+!Q^LAVh6Im zP+OV7Q+L^z3b?VG2YC9Q8-CcWTDXFnHY&9w&?@FS#gR}Dm5FTtN6;AJT0#tKt~`t! z4q0VC&Zfzk-OMifi_&zdb$Xi>&%G%+Ql3{BP|;q?(!PkUVe`Lx+KvcEHUQ!|U%??= zUgB3mdTfxD?cD|Dndkp)Qe2-=TU8W>Q8piLeXF$bbh$0K759>p;r2V`UDxB8MXEoD z;Di|3v^GER;A|!YQa^(;6~ zQ$hzWYlHr!33lb11u{ToodO8Vw~Q5XDl$(9m5g11lRx8-9ur>sDr;a|SrHr5d6&7L zNsSv*P0X!K%VzMq0l`+>kZdI_0-#k`vtW?F|l?r?>h)}Z~hDVt!E)?bb-gyc9 zt;%R|%{3%4tk`yx$`CINGYSYWoakMf(=FHbl-k4EE&j7`e0XTmm&pKywlcdCfV*KS z4Fwa~#yD0jO_rQAOi*Y6>JZ8jW^n51^fKA%_809567tLdh)y_xYL1I=R70wn!Bqf0 zfvsm|_*wNb-!9zHk!;UE5qDEpy;Ek2P77tSx781MKtccvf_ID!K9y^h>()7x+{6N> z>A7IIwZZjUZ@|Vfv#N8|K6sC!7h|j%mtHOMC89np9HFHsdy|87%x&TqXbCTXB1MG=< zoPe(FbHoNFj^Y*s$8D%JYojZQ&6o zi);d-=5QIj7g*baJU`pN9f=IIYoB#a14$g0koxD~eAIY7HqKvq!($5T(wgdEN`vFK zX51_?4q!qZ_?jWE9NgvJ3hEy8&r;0nNDhWxe#3&5U ziD_6UA}y9`rRQb`&gqX7hk(Z5wEADW*wK9X3_{365xo=H>h_O7Yhv9TblGrvKW;xBcD;OQ955_fm}{_B^&G+Q?mq3jZnW% z2Zc#i*LoqRQ=Vp6&@6l}`%W``_hu4}tzSPIPe*+7%g2Tf2jtYx_!*`M_dWzfV>g8n zeKXjyXpeao7HNH2W?RdqdaZqlS;11{G1*fXd5aKe8mGv4&vvKdFTZ4$*Is>eS8_(M zb3gB0(Vu^a;2j4UIyIFL>_{-V!n)m{V(Oga2Z(#s!OHK@tUS;1(qT^nYYqj2(nv&PWK)rB7aQxf}cJR_r z(SEshC5m3Nc$gaWF;xZlvdPw+z<)V8sZAJ$D|F!c%!H1M&EE?jt#1P+^z(uh?Tnl3 zths`6$NZVzJzxK*Ciy-+ONL!GISo=m%UHt^6Xc)OUZJ08BSnitL4uJO0-zCMBS)yI z)kYgE6R9$u-XW!d`bjYosy!Ndk=$$M>5%OvV_4_aq^389=cVciO8Of;=f;E8@-L0t zkhNv+=TM;8vq+rte=W**>d?VI5z5WIIo{XYVy&X4c-wmW=*2N64Rv&DG55sAr$Bn^ z3#&Yln=CeS4FcOqkq1L^pie9JQ;ZMuXlkzi%zN1--m84a?yu~&6`w|s9J~o!R;%FZ zl$7&FWQ#3Ve-Gn|NRhLt{#<7?Taja?dceB9CoFKocp2v(5U9?-GwMh#R^g0LeBrUl z_efX3PedcfQ(zvBCMDlPyPX3dVs5j{i15+(VbFx5sqpwCI*Cg`>fr^X-EBZzG@F<& za?-zde{Flv6KYd3^t0jmi@?8O!omR-Q-v zrr?2I1ie)7Rh8r89{tx(wK~y;4C6`*AbhjQ`@Nz#Io-dk>F#4(-S%zg9YNgG=|6wSI7$ zL{7m0hCF$U*(N*xk+X289UAlfHVs*s{SNDt~aehLFL&D4Y0oPLfDZ?kj7Cu+_gi<=R9PgKi5*^etfqk;RBXr znSSJl!0xFFDpMz+Y=t@u=s3Y5jhAfY{dJjuno_5DGP0f(zCVVVh-yJ6x~+~(p$F`& z2_IY@`iZBp>wB4FNUSto^Il2qihi!#X8DdwgoH+m8S8^*a{Ixa|4t(Jg==`5YE`I= z3e6clI&Q#o>TZ<+1RT-Z=SmzvDBY7~T}`Z~O<)98-m)Bfj7R;BbG~Ua0Z#j(jEyof z?I8vX$I$s^=rcbJ4IAqVwBZ7-#zqimv1fq2xUQ|(i&1OSxvWb!#F0hZeGUB*l_Nkj zvl)J&X&~(78I@qivFZ?7W3qBJb7awp#O3nOBg+hr<+ZWPZ;b|nE+uOk%@Co0KlR>@ zU`;_hOe|%Bg7vk2(?7~~s+qA1Iir@T zu4DsN#(g(!-AD1USBU>EP3|dH`t?cCFRejAz+v5~Ip2A(h`XCmTq;o4J|N)?J0%Bh zS|OHv)m$lUe_kMT_)-3VsBjZL7YB9-61c+Drm3{1!9aZCtv(W%+GT!+3r>|XZD6V3WNr(_;$>GGfMEo$ZWXp|lwH`8o z*)cN~h4@wmigb+AQC1`D#8dn4bm>hXSd9MtPo4l zgx`-XQvVN>2d9U>tEjlsf5VO#iz#H~{9HQw-b1XICPmL-dayy9L1IbN;KFGyu>*=! zkSdA!PtPb#m->CEI-3`>1KVX*K=|uMQ=&Mg|Bv-Ay;yhK zx~M*vQ~!J?mkd$}{bH{ad$h6jh-Rx%D_Fvq$F!Q!Grq9sTj_VEt9!p4fQpxoUF1nf zN=gPErt*N5cMaxHttIYJss}j+<1Y!LERe9aSu)B@i<@VJ^s>%y#mqy#)q}>#um-jkvmz5=}Ib0^peKD zl7T7lMs(AMUt`*cfCo%6z~5*{s0EeSKTAJp<`o*N+y?F#2gl2v?FAmSYf7a5-(*q<#La061tNoGReUNZv2hZsZ>IBZ*3n!)9l zzeK~p-&@&=%@Kv+Bo6cTsn)IIGpO)FTYIzMStxiWu3P+(Aspnl*X9rRUyum-)ThVQ z#}gBaQOsG%IAbXcKVvyL%ScY(xA+yWI=dO^P0-~|6C=NAEJIr`dp_F2&Jq4mSXZ2i zLNlEXHCDr@=>DTW31;-vKfo0#g->q^cUN*+N6&n*jGrumZ6vun#6K5D!wjowVm0!6 zi#PuQ0q*7bN1Yk-kY~ZRES*~`g)I(aYs|(fHmWhImHmS~=Vjl;>?^PDt7MwihV#BK z15pMwYFYHHdqQrCENlpVx^`OJY=KRgZE(M>8I(;C(*G_i8P8F`!qh|D`y?;%A6NL9 z$clm1p3SsJr1k^b1|PRQ-Yi_&6a3l+o32XZfKfAE7xT}KKU%HD-ozphG#xHvoeFz{ zVt@bp{kFSFObAsPX0iZ6f|uWo3A=iW=4FL;3f{!Y3KSQfSN%oVteXMBjZP)VY$l#KrEkSXhO_+a%_>myjK`*Bx{`}=wrxUN=xPO-A+zO%};v7g3e zXmS$P98Uw7?GEolx611j6T^aaOKfF`26+xY=DY6Fn3`%n&JN~k07GYqiV#>n55Mb{ zr(qs{h{7C*FcU+D^GCr7nttFl4@t67xBp;#15&5Te8GpB1YGJ2VVQ1s#Ejuq{tg?u zJ9Q{kMMT=yHnR4o!t%SZak%Hrk$iEPts;&ZXFa!m%sv6n$s{Rn{-!mJm7{^(tf0U@ z_w5x1qf~8sP!u0By4RwUxLm~tA#R0U3ymO|gB(B;@Nu3igN76rD`D1h!l*f0_wL$R z*xZUK#f0RvpE6exN|6s!>7B~@mPs;h!-7IoEkN%-RhdTFJ%=z5W#Z z`B!WNFa!yuJ5AAlm=ox@l&Y@YSQH=nDKm}Xs<8wIxTp;yvtDxTn4dyUoZTJ)w5t-N zG|`?mcR%^i>CmI@3Os$x?#)PQH4$u~5d;E6|KVCaN#W-a{gYd+3{NA=_n=#_`|WB4 z2q;Y?-kT4h}g^3OJ%K3b@=C!M+{X9jG zOBs8b{eYBVk@@`AxzzS`mFH-l_~|(VC!J&W<42L`+n>n_M2fogb_X}Uf#XgVEM4kz zT>_9$*zijk`wgUcCB4j=^#Li@$n24ujqg^-KK8IWZ$_IhL&e? zL|oUlH_{37b>kGh&>4>ruVyb9hq;dslvI}e9;1fwT18O{3U)Xp^yzD0ckG<5c)Rsz4EqOtQVMKp>p8%9nO?>ct*UwzxHt`>=0-B_DS=V7xc+I&}YELQdPd zLwe!e2R^5)pl^?l+`ewEWrZ^Yx^Ll+N076G6=u^KnWMmIanvTS5UwHxN2OaORm_=+ zaEjL$YiyW~m!)m1BS(WcS_q&xJ@H1=a3QQz@ra?ebW8lxFSZex0XeLcZsr?}Y?c27 zG(FC;$!Thl&A5m*i8r0F)_S?p5gvEq_815u2BDPE#bj}LMCD;j1BmmOk}xgoB2luh z*fR@m334X+o^5mA6*PDkx~e@)rC8HC8B6Efp`~0aUTP>Fn%W#SYkq$lShhq{j$j>6G1-EgLWeNsQYWDolNtT&tcwk1tGtk?ZGbfAL{ zy9W5mXtxNmzxFAV=^ZaPR2_xK=w3Z=5#iKXOqa!&DNpI+Za1VL3`Jahan6T`OOCsCneVq?&;G2!_Zxiyb01vWeDs$E0Eo5Ns>**3p&Of!1B~6hJEejAQe-NPquy zY!ojBF!wI4m-DSQC!ug_P_7jruWDd#T^Qk zT%#c{TzIzZ_KOTcG#zl{ET9SrGh`^L>?}?pwRS!1 zzli8x70#!eF=+jbaiaub*N+A^ojKY#p{#U0F|Ku+CXxJ1joYrL#6CKw4seBj@{eXV z<5JCW2$w;U+j`5Tz$gIC?|~6T`_ri#Z1#*5pj$x*e?Ms!Pq-O9|=S=5Wqi*d1M3 z8Hbp;k0D^I;v{28%$2D(N|kAy;8&=QttI)V`6 zDHAfeB;Dx;ayQ6*oagfOgJy-8210&evIOi?SWmsM~c1S#O5VdMB+DXm?(pw!5DAs_`*iE3Ov%0%%U z=z&~#^5-)UE%q}@794;9rtpEdX=;Xz+O`!x1w zy27|_LNy8B>K=im?Jwa3atSU4BelbJ{&_`^`>lNiNLqymeHPU3;Gt`(Rk_**2`Sw3 zc^znK3yCMRPL=ITv}tEimTc6Z(<~Y0WgT(ro1)2V2#FSP5)`n?Ah~#mqaL{#DZrLN)^ z&uQ}I7iY|$h%?(~fquz*N3oGF=(l9PM{+L=jN7~uiaM3NXF-~Q#ij|^Bp;H_OH%bg zD`X~U(r_ou6<6#YNMNdv=gy#~)KpPsMJwb6)5u`pED>&{a10(N>!4Vj`js+54t7|K zl>ZFi#wrj7rD~-pZXCg1iLl zf)HyUY$+-VD6{(3{1+H?>>wXnEDaw>5T@!Aq9y>9xveVB8n!%`{R_KXI}Aw)lz}dJ zI?C9sAuW-%SXt{uC~(2hN5U>qvFBun6Ujn9tqE6bjXp#ds@W>!NVjb=0^@HR)#Cfj z33yW~^U|qBT0)J{Gd)F%UY2`Uznz{CLwvDW)A6b0B|>#K=yWW>J&{n`Y7aIRM?GCQ zTurtg$10e6rm|iSv}m9=cD4M7SM2}-9Tl#GkhXG)q^Uo+huj@Dx4f3B*sjlEBL+gQ zR2SiuH5j)fhqN$04cAfp{_?*XE&B8QC9f7wF~L=%R$&wp^niAsrm74jmYoSE+si~u zf(@5+=)XZOCVY!1JEzP;lzo*KwWYIcu^dXXp27CZWt>;R!R8qit%UWqkS>}q{(m^} zSB8r;Rxf5kxyM0Fbb+n!56g3-#dCZgF{ruEoC(CDz+9K2 zP@v`&PO8Eel;s3r;F{ifTEoYo{k&;u&RUYPZ(9WJ2)dgk6SI-ROjSy;UxG`I%%KQEivPADUGGs^O=;SOCN|rU5N(_3sh^fdd3m=@b;rQZheFK(_&j_wrZIq(3mpHY{7J(8oVS!^ZRbp+?5l z@uoG`f28+{rG{zJsPYLVG#Ee7d`ke6~AP%8eO@xfN&N&$1D+F zw$cpihhRQ&J=cAxBr1}FlPwoP7fWli1EAL188y`5faL4c$mfQ7g2=y=-YyWWU3)K= z`FI^q2L$&?Uqr*$!wqM8)z+=1&VS1+3kP!SLx9(@aXhq zpLc;2ASkmUBC58pF-k4+nq`V(9Cj0dqktWOx@_7G`S+mh;P2gmB$d|3H zYZka}9J=QUYIN3;dp-hfFR}Sr)K2xh2#MZVTAXgPbyX+?o?AF|7u&``8H=UB{{`^Y z!35mP+r+1~OiK4rf)H7_^mAusF{q68AUsIvZ%Zr6xqRl3jP-G_`+zPNM`s4%>kWER z2Om3yx6y1ym++1IS{%rQ)ECOoQX#*=V_etZL-Ma^6e>5QxMZZ$?tPbO)J39;FKrbe zS>ULHk>sF);wp{TmY7`+X_arien%HAyRMx@lZ_aZ#kBpce{CfD+!jSYRsHkZK|0uz zaO|SIkEbNl@UvdIB4&dor7X3yVMwVx3Cw0jJ4kP?;rTxJD9t&f4|bn>g!jU_+$oS7 z<{biJ#*flW&NQIo6{&8rPcSQXPnki{v?ET)a&% zNAoezTeolRB5UCyJZj)gmEqU*>dq6N!IP;_&Y`^TaS(XQ#8TMiVA*cPW1GAK>+m8ljP)R z`y^c|mCK61ga2mutegk|Vd#0esX2M*3)cxX@vob+t7;pfNAJ<}y>KFvxv$mZrU8sQ zx-7P20to+m8YCUcW4I3?6X;>tT8S#<4zqh(5A3bVO2$_?a{Zb=bbMgTA&x$;m zSEN?PcQP8JGfEDgxeP^sV4mZL@v|dUR+HW)NKrOrMWI0N@fPm0wkGF@5kyz>qLSj^ zmix*$E2$L`h0q6L?a02|ZedToX$2ndiK+4&Z2%l*8eNWmB?fTdDr6yJw_m`0kn>SV z5N;rv`sUW~4mw3uh88Nj^6k--ZsB26NCR3$B?u*6X(^8NSJ+|@M_+p)j```cltmI0 z7AGlB$_a-QPfM@kib5oQaxPnM=1+hTw$q2*VC5Rm#t(j$b@=DFu|5jNihXh26M)HnKPrpWNeTgV3)A3^xoj-l5ms znQ)-yKsEW^NNe_++-pAU2t@wgOK;kqb|$o|GZNN%(&*S<7Z7Y31(CiB3}$ONx_2YoPlLU zpgUY*UrW2N>3xPWe zD7q7THbaYQ-SD0J*vlkg(m24rOZ9!&U7V4@JyRFPh7iNaqw) z>Pgifc6cYefQ}sv%1d*2Z=_My<0Nj@{cmJ}f9km~+`Sw56%G2JRcGz2lKQlPcFEjlYL)lqfExfnvGr2|{Ec3%Wm8CGOFoqMw-i9OS< zlZ5mhEzpphBDE-}pk`s!<$;tX4CQTI{)L4fbwe?>iKwYP4^G`@ObBlUj7!&9Z_8~* zv(F%0trg}V?!Rs&+(|;7P~@8{b^hMKk-Z+pE7QPzvS0TLp6Ohs7o=i{*;Dpt45za) z{2S+SwxS+naHI{Ge*t&?{e)>d8ODQ@5;ZYU>^gviz&HD#s5!I21hSa(cUl=o1}>V` z7k*H-(~mr_$gGj(2hbjhzTJ4QmM^ZmLKT09(~a4^1H3X$Y7@r_4FO2f6Jya+aITFV zS}lZ*`SP* z%(1T}-=WB>WA+KL$_-ThsGF?6ABN^`WXD&t`<91>SKNjoJG>nHq5oJH;-W?Wc5|5w z=!-t{j-n3S;qPgFM=v$21g>w)&DQ0I-IrrFo)xSYwf$SxNfN~jE9oo`Aitx%@Ik?> zl>vY8=E{&hhdUr>ho-st|5G?dd6;AzgXh03nUsMRy(~7GmPtG#O&=7EO^Z!Pt(PRIV!aw&S=9$D1v0rSvNE~d%IiovK38@j zaisHD%BE@s!tmSW5LXP;)331v#$QoQb-qZ_=TZ9EnF_6VpUo+8jw{gAxE3qiBGk!Yb5Aa-l_!cjVuI6j z<0l#O07L3e!V}pq+pxwahl-*-Y1ULeX{oFy|m2&Nz68T_y zpN?9>0?Y{!GxN;*F*NGHnRWa+0`X4#826NvS+o>r9D}zoZ3J2%6)qf`w{f&Nj{#-d z+5tYTM%JxL4v}M9Dxn+y)xQ^3wH2iJ13e#yy}d-7TuavFzIM)0V~MbN2qsxUKsw#6 zio;l|5UH_>lyZu&7#2Q;NW6c`8&V(noQtwOH*+p1k){buM4u`4HzOq^Ybpi+@b!{e z-zN841-8^YkM)I*@L-xsXzwX!7$h60#EiL7uoFApbQG9ewBS!p{*Bk%*&48g9mOq7tXHRI*fHj zD~+(ncRPv{&{n;HzfeSm0JWrVnJ24?((^x3kmHt7g)R008{hz4d>Ug>44k~e8&UV# z9zeM^7#30D0px!QJ+Gr209DQ1uq@|z-g-zL0Rh|*?M3THsoW1!D6y@{K3J2m3?No( z*U(gI-{<^CL?7tp{jSccl!XGk3Y$Aiu|8cH7t&ApR2Q~vl}&3V0g>Ht1p&6F(Z{w; z#A!aIoVO0O)@u6b9;rS_<+ZE*I4^|9+Hc^<>cI5Xjuh!!lEYl`Eaf@E{OMMeSaF}5 zU5WAOJ+4cdfBR>|Wxv2r?6z|?gLus$`h;Z_G5irE;C|XSuQ3gi!y_&|d=*2>Gfrec zZv{YhT971?hL+}QGrNV)insiXMGr%JPu*1-}jerh-OnCa?Z7-wo85?MAS-!ud-`?ryF6^^QQ04f?r3G zSLj7BWahmL>brHrbwJ2Kd-<3|7qRgs_CD5NxZi%YnxeIV z4*5g+7qsc(HFxg!uEo)5OsP$7CM(D{=sX@ZfK|($F>%SMQ6VoK?$Ep#LCr|2a4AAY z56=@#h)+~aK14GSOD;S=OATyQW_*G*9=vOkw&;6~ELCdTq5aSDedmsfbhI*6)47MkJx4jZ9%8bM z7r!MP_aO%-20CD1Ag77fBc6R3>4lO|Gv=G&hmZ&SuEfs+bZ)Zn=A3zS)ONE9va8=} z+w1%2hJ|l)F0=A9ELM-uD==+;0^@p`qu(PU)9jJFTO4__1`AkGy+vD5I7>IfMk3(L{_yjs7&;(% z+&!&rUbYum&Xngg?TJX(>cas;T+9_nIUlp{T&XXX>rzCmz8iDK%yH9(qsVdLq?9t* zLo!!!gu8}*k7uoT7s8q9&aDbhx7*F5mW}xvsPatCK1yW$Ktv-Erup`>ws6cf%CFli zx5zVs(Z=sD-(2pn$3N-2_c&<$t&G+7Y=u9pmD+3Sg(tiTWM&n|M9zqYPV4HU{j1k( zR}^StMD1SgZ5CPRW=`06ngU!N)hu$3FB>KskH3#s$|#=Yy+3N@<1Lx>6#@mjWE3ZI zV&jn#HQsEeeBnATN?YL~jaW)W9*Sx1(SaE>`*#vCGetG(Ok5Rt+*obo_W%isZ+?f| zqdHa7?8ApO9S=JDOt?ptNL;iKY<;g>YhryBk7>bP2G*3`UjH+Seqna{}gYTQEk8)gZ(qEps@aB+FP|m-Meul=EP zM?!`W=UJ3FV7NIjhyegJ|I4&t=6KtPKP;}RK457R;yLn7E=2jC0+u4XP+3wiSU%aK zXC+I}?P$KP%wsGK6`{U@im|S-bpB4gOaLKsIJtZ#qI@ZdmM4sCI4+k3wJp}O{UqzM zop>p$kRfwWeJ^X;nmC;Ks!OnL-Ug>Y=9Mn_zG9-BI`I3~j@?-6p?;n6@5m1y7((VB zJxLPo_v^ZQSAMdvZMR`;>!t+1%hfgPm0lenv;TX#NsLapeAuad|AY;Nf@>O+>a;w) zW*rnlc5Bm&SKCs?G?99ADRxUL-2ey&r*BXQSW0p9ozw7G$11J4^sO_@ULGWg!D9d;&()ee|w!P2kpIa=QEqmhpu zg=d~lDt4iwBXm5!r~(fA+vpv-#XQV(3Xrt(Dc`p=&}RJJKC%gcu27D- zYua1vnNWW*w^ykDSAzuet}G{Agw~8m>Q&Ax0}2 zcabKZ0IRB$5$nsP%uKyTRUhgkne|3?YHi<`1?4KU*d{r4*rNu87F!#lZdUNUa8NTm2K^hru7_(&dGXBnq7w z@g+!#%yObCB81E43Q6q_m*izF188TVl@=AoAZtuHQ~FY8PRhKE+?z7d4m4<+aQVD< zS}Ek1xw$=Qz^{N;Pg58>#~9BPY-D9(`=tWTKaL57-C}!CE$eE6fks}eCn`@xxhxpk zbGD+|SrKE?ST{gNg`(F0Bc~Ia$oRJNGcyzJ&Yb- z?v2sC%}kWeYnZS$n*|wgP|fZyuTWpUAk{l{?RxLo2h@_9qAW8z)lb^bq^aEG1#Gt9 z=A_&Y&%_?1eAkhCC+-&M@`))And|ZvvP)l4eRee{`Docrvf_(=a*-7-5{Ry>C52F zm}EEl%?T#4_i}0IrNWgLOZZPBvNm$AL@_7{wwJKOzYp{5GNn}RVl*_y+TDuV4n@r* zcMJI7x@jo<;A``czka<>+4J|TP9X$;L7y2~`U_q3PRaV|l};%5f(~4UqDWwxT{tuE z0j?1RfZd~4Th`C2pl{ZyGudRrmER)8d`!1E;9O8GbaktqcpUMF6t_^~G9Fprljs7* zJL)RilUDV)9o$dKB}q93WaT7zx!+2LuhSc6#$nDO4#&fBa~Y8)c(lGts=OgJ@yUXD z0yk#yEfDyFxL_CRg^U>RGeVi~j2yRfw0|z@N&H)>%y$XL z`n-8cy89V0PYhdu1`xIFzXryDF$uhNEm2iCdF9?5yKZkqI7H5ZJnhPWar86KxlNY5 zwY?pH_PcH-u`do*@k}Nw*#k&fD*K$0=I7^m%Rn|}9*p%XfL1ybyvru{FEI>emaefE zQOlx5kQs=v59Hgn#1h!3yF&O~|8|4q9+1BCPy$(e&Wtim^?Gl?hew8HON(iEl`oPX z0dBNe>OUpb269@FbKKwO&DvMl69m)k+>v8M;7DwwItQ0E65B2)9p{iDl5eCzrZ>H^ zl=!3}=c=@Wd)+B|w8SL!&~qFbw8uXpY&jUlRMpswskggEaHJu~X#MQiLOR{n8M_c2 z@Fn4Y(tB0>XV6@%fu9uQDuOdwJ8}XAw(3@c4ZmUPYnM?_%&PjuhSQVl(AtgjUAy7x zp(B%1cad*de^%;Z`9EKAZmug+UTqO$H24fKa*5 zv4}@b`6F@MX98`i9%S!0bo0}`m1({gw89M2oU(vLrkn7KaOW=66pfu8-KFP{-4BI% zcBt-dg&nM>t8{_v>n5aTL8c5dP@nM=_0arNWjv?;ERpJgtB577pRJ^|*~$qjx5??I zq_ZWHKF9xY{g{x+Zy|H}s&E7hUk12p^=I^%A--CRGuBP8j?B%2az?&*iO|;%x$&ZA zb7Wb)6chY1ppv(cSsa$Z4`o)1eMn^++riC2a2@e#%Cx|vYAtm+LCBX_8(WfPiU5X8 zo1zPk2r~p{mNl|v6ssBM;Ic_2h=30_fgWcE{2d-Nf_2srefcZ#3gr&K8pxq@myyyU z3+s0`(S1H4#Oyx%uyln?XW0Uo^3fzNFd zw4LCP^|?3vmMFjEgP-_?o+F_%0WKym!hm9EKlc|-AO&fV+mkq<;~3G>L7UH~RW#>f z)h1?B5io)_?(hfgI}$djQ=0D646>&8&yQd+s_rjZ)>)|_m@JDqP4LDVh>!7JjCC6~ zC2pD(gQLF(^!iq;KXr!mhWO~1kINHAUv*AbrcdV!ET_RKe#4qg?WVXlrh+3k$-An_ zPz%ceV6w@;oLdF5VGs%jrG_5ZidjJ1`jV1W+<5RF{~WihyeRuHv}7$ z+<+hp%W|tNrkq)<0w4MFhI>jLQOYa(IkIzA{=l7KUIb#Y5T`MgXkC*+^le{mKo{o! z?y|xjlz*@V{{VY>c?Bx=AR!shto*erVRa{!#uM9&KaOe-a^)jlFoZX8l2imxLW4Ca z2fimu(_b-#j~EYwOtQjDOHma_O*}wbJ;@+R!bm0@1u3&q4fj%j#jbZTiwinqSR-iF zX&VF==(<}yRjP!s1Fy8WYF)y2EH+1tjV0! zc!y6N)1GpL(p70eF)*x5_rn0Rw|uD+RnnCl8i#(oqcg{qSiS2iWWf5HzRX5hMEX<< zur8hi=4+(W8ps+~5H3h+Mw#Y^V6E_BKhs{O!6+R#A*>}YBkjc^JCAKc$EP0k;@-y# zpLdkyj32BBhd2ZXah&<;cf_ust8p!+Q9M!`87Kgvfon`3?S3h!INq zK&y?M(%cA+K&~V-H2-P24V|oWtXEeQuj(7Qu=+oH5?r5cm5<9pJe;1LK1uZL1k4D= z6D7v#@q`@#u!0%>>|>e_+82OvRW-uZLgypT#+hIE_-3Q(9?G#pv6Lr5_^0&82uX!J zXdARBObGZ$KT{k2TC$d{hzl=GWs0or+LhFLd;M^>$WCr%!2nXN(mjE z{adgna^E!1q+|zTd_%UC&Mys^LAh|jq&M0jX5JsT=Huc&V7Gb)glXcGTfBNyegDja zRQQp_V(g=0P2b)rSxBST)V2V@Yts3IwCyO1hajD;hlm<$qf~(To+Zr)U=Z)^shFwg zi2x6@BXnTnndkz0EB1vT)abtCPm6`o-bnsW_Mn`nR4ZHlayBqcLi2pm()i_2_|$ss zrQIzS+{S*<0XyLE?zswZ*0begCH)wb)njoA0JX8^CfeT^K^<|Js7Q&(lxP-6QvNHt)x)fH z#9Z^YnF&A$X|wh!_^TbTglS%`*Jlr&@jHG61TCsUxh=S|-brhS^jD8p#84q1Gvp2j z*ox>R1ao2l+h;HviKir_VfpF8C(n4VGTG6L63sHt(rL=Crs!H2rF9`M+I?^n_C<3W zY%KbYh|JJq)hIjz&a#js?RQc>oE|L*hb%+X;qUzelNaaX`grn({tD>tb0SmO5$cm- zao=k{YfkH0ZGH%3<2Gx~`Ry&E4_O!ieERt@T!w))xwuHQPtOQw z@S~8rb65^fk$(Otqu9JY`@S|?a?5$K=Em@p`C}&iNfks@1A-(t<)}V%%G1;+dXGKC zOiKaroQJn{(-NRaaE+wXZ_K@t+ zTU>n7tH_-nYN*O{;*X-V!i2Sq$m?y32`~vGOJvU|QMn1Wds@JB7UR`UAWf=**?e3! z)Npn(9YqH-_rAKi_%wEFgrEn3ItrbJ@YiE|N+1F#D;n4GoMR-V1iXFBvo<|2K0F(< zGs7|eCsYo>8#A|O+QFRKn=&gBlCCUi%KV8y5RIl&x93@72n0<~`N=9wEa4(*>Len| z0;w{744kyA2K!R_%pHQnSf`u!^zg^yRfnHH7fFa+0ia*vwXa|&K=`8H9wV3?6=`Rh zV%tvT6bVy5xiesgFo}~qE!XDFZptBFlct%Tx{keE^%<(I@598S{n3P&e=HQO4y?{J ze&ZIt>|!q2A{TQ#>lM(DuHvajiz zf~^c)pbnPxT-_$g@qZpsj~U1{s*rz}>&!oS+cN;8tqPFSBWKD9HH zMCD;iTKL;zkNx69FMAB}9_w7+|CZMmK8lkZ;D$U+H}CY8eN__nK6g6nLwL`F_496NPwhj62lcn%@B=r6VLc-=@ zQ}vCytY_e*Z0_nszDKT2Q^V*-QjUf z=ZBeQbNYLuR{aQg0@}wCI27|YYX;swUqq-zC0Tbu#NJ00Nt%H zk+b>IE}ft0=>j+{D5x%?9oUCUn(B=RPwuHixS+%cSFKKgc+G%zRl?rOnJ8VXVq$y^ zTBQ!5Z_}K6yEc88WK$wUKYkdsXwLw_K~#yr2R$Q8dgW&`o7MQruzz6(t;kP}C4SDX z2zu+ao`=PL3?f9ODFr*|M=y0IY{-4GyUy_uK^}aAR1cST?2ysHfUx3#NCSv#FkEM8`u-!)3#clH@Mx6O+~H z21{pp8nfZNjmiHo2cfMnwk!RyLFM(a+)u6Fn=4gxM_tc-00g|OvQqHtRaqW`erBb9}9s$cdmefRAN&f$pfxDISgzh z<6Z0F_C?4&cD7(*ZlNT($dze+@U3(!lpX|KU0|TrfDJ&cyMZh@Au2u~XSglrYzS8` zR4{l|kWy1X=}-L=4@Jel1}sx0IG!x*8xj@D$4fxdI-~KBp*2QeAPc4C#=NoO%i5_& zGQvbgwDbX$gPDV&!>H>O|Fwq;)697K?S@fF$uKrK`$(`LU@1`^;@c`@6G)9jo~(~hZ#cz1Qv_x)X@tRXgN#zjtpX24n9 zxF7_HxB?prJBQAc$ZO1q4rBIm1lAnDP~;2&rq2=9j|7dex1H%st+oP&S;k{Y#8QT@ za0kz!3J-4|dC=x=m455wnq~ebGSfHI%)gFT)4FD_6$sL7;$7IstQPdXZW!~{B%iKp|&e=gTBPYG3C7`O^pq(ZQ)#peH?wR;O>IA8VS zqZ1KASe3OxcBV-_p8c;3EU!!(*M!?sqw=k$Q*_+@)>Cu3c#PM`uI|G`7nl%Qg5|gaHyCK>x3}V`g$j+31yx2<~3~W=~!# z0;mxpIBfgl3Q1UZ{%unf7S%t|V;pu5lZoUbz>=EW-oGxjb7-`wn0d3LkN>%zupp2R3bxrpozDV*`u=88rGQIn?Aze+L)t7 zDufo)_q%K>`wH(eW>=6sGGO0myy>P1RHL=Gx z^XA#8W-t2=1_v0dNG@Z%L#-Kx49YFDe-=v#s93toc!8kbzza+koU|VT>$lp&UB7to zgv=`ABQQnYBrb{htKLnOjaeyl&S%&hZ|K5rZo^#H6FmN}SGY#SE?xl0ciR1bxTmaz z4pKRCIhd9M>6%ueDAE`k79DId4mpB!R|u=o7?jp0M;3G|d4&1k1w9pu>AW;^K5E|! z#jT?d02=8bOEE6iSw#o;Q;G8s*MZOI+-DRl%59rzEcCa%I4S%t-w zGI2^(-bNX=n-7_R01kmspFvFxJny)xcCb=|t*xw|eg>47BqrAd;zqP|dUFexJAO%l7YRx_%Z?nNtUDAfM3E<)tbWJP%oxV^r1oH3l`u z1ZhBOfH$E)tfX@i*m!Sata~}7kVfGy~68it)eAUXZ@=hcd(N^$MF%dt?$vXa56^?5>Vp(^1)XTcNJ>`Dh{#y>i zwa;#rDh&81qa79UFsJwLxedlzblS0_cdgS;zc;%fAPRC!rLWBHUd&f#QkHL#mU}AbH!LNnb9VqZYH}O%W40`Ppefm# z8_P!cw?;O?o?~d`b6)!0bcAiZ^!Y)un+hYh)Uz~6_0m6mv4i+`=eA9P@C!$8rp2*J zaD>-|{=bfPgT|hk5_LT2ElF4~1&xV2mQZIbC*+qJN6gyNTyZ{|oRFfP9((>pX~zbw zrU2htGu6tjHW|z(nw`;go*W*4w58g2#l+`9&m+^!c2{M`U!_h&Y?<7S@m^kgTS=tA zRZQZR1Ezd1lL$rG{f%;qxR2@w9hyzd24LUx@1xi_m7^1vQklrP6QRXdWcYRdkJ*G% z%nasV-GNe28mj8*98~H4-@0dG1pRLICeZ3*@r6zuQ zx30H#hO*~}P=1tPJYmKS?+&}Lq_(lwg)g(q^@rx)6B`~*8Pnr|rc}V~Qf{UwE_16Y z;m?Mkm#191$1wa}4Faz8j^5fvkCU&`vM?Q~p#@$9!+U z?4enq-1^HjmZ-#YwF{H8IC86u<(OqN#^W`=Ppp9%gdorHq^$n@&OjG(aQlFl0PzN}(~C{2+l!XLsnhULw<$l8 zBq4bmM>kGo0*fFuFSGkwI!l^T5=_0eFV|2BzcCV$WXPYV)-T}>_3!(z_$DjMk#Je- z7GnoRT5Nu!-k%M=>*u>JZgD;eGhTLi2)avqHXzbwQdSV0?ltpv61u&aeQq3(x)FR{ za0TnqxRU;Zf$TquRAPti-FW0jYQ?|Aaq(6CCdsC>MhhR6(_a0JDN@rkmTpDrlpZ99CH(jmi>ws?suHzwiaY6RHiPP7#|1CRT<+{&ujeGVW* zeQV+=QQ)`~Ym0EWXs6xiLvZXq?=gU~;%CKHjP9CD7M)Z{si;=Z6xT#|nVER}o;30p zK01?kpcNctRC1W&93r}Yn`&d?xExTeOKSFtt|P*1%RCX^!p>o^CGQ8$YVU4+?l(q7+a^Y8? zCkl%RFBYj!mh>`aGp{hsZ6u!@iB-EF&6s%=2ZIkeyImjBhdVTN$#a|#M5`v?jPLKb zaGTrQ+6a`Qo4(-?YdItpb7<-mq!t#X`8 zH2n?l@-uNjG{jid@sWX^GheB+-z|(1sTOW6 zA9KX$i=F)!TEJt(Y6uA?TF#bdGKqblMwZraKQN#@KmabaxP90@*D{BfZ=@`Ap-a(| z=5K$agpdQVT&TxD73wP4vUngDLIbl>0da%_{Csx&Fqv*3OSY6Q2DU8naE`qoWh9Nki?tP1@4AKs60yE*O)ILUVS_*SrpW znxgyoyaSMb)lP&ogjTx_%aFNZv%<)5aE}N4AxL1+UVBj(CVfa(2+>Sk2Ww|Ixj>j_ zwn+Lm!)7JG@ZPBgW)x1S8~-^kYtB23BDM!T34Z7K{DMtT2mQlz_gLnm&wUc5;-2c9 z<_7KVIWTRK})+MFxW|edB@UP-S3i1Kl`65+$!+At-Qjx&mlNeInX~7L{u4i0;)5Kh zeWczRs1=D(m2z2mZ3d4HD}gp$`=Wh2`&?;eGsEtE>UGbfKIm{(pyC(0e_lj=bV@}d zb>P6cj&OOJ;jr0Z@eMFiNdiRd0Xe*n5ccR=H*hLei?CtpN?E_HL1w$LVJIA_TJ9C{ z$Z(<_)C=XmL=yb6%AH{swokO8c;39ikFqD}Y+2scV`Mm=HlO-m=4+8$*ZS zOMM974C*+ZXT?&Mo0>9XmZvBXy#hr|Ev9;y2wA zpu656`XNtcXn^ppLvC9!nvJIX76A9nTW}4!G{GEd^RS)-%V5{BiHO=v)5iOhV&Vsi zdWTvL#u%F`SZtLpRLG+>ldz$WycP-#PAc~SKtMeFz{ z=0aii<_>w;I0;i-FUROnv|Zjv#hX0aj$D4!sxeSu52gu&xu`B=A{@URk|T4YbDJs9uaK7E|&N z_PK5!EiKh4PmrX1 z_$t`2=~?ZVn|CByFwj3(a}G4VwMyqX>cxZRp3S!PPwDCTb!x$9ems;fQEeLPveg6H9{CC@64InChX-%_J! z%*MC_|88LPr}pHr=K=T+FAIH(T!abnWO5<QIKqiX(n6UA=?N{mF9 z$fWK>&T5>ABiSc%@}fcOUpIlMHo31E0M-BN(p`U7nJ-@Wxa$d;VOtP{>?#FgGM38( zT~{gv%q;sDURy?|BzksPH@npyXNcR*i*Ze2bx0G>L(79E8pRBR=aNZ$v+xu_;zLTO z=LIG;<$oNTqg5RG(k4VVt3c@;{njq^(i~doL+dB66?g+SoQ!P5jkFY+?MiHiN`=)U zrVX7xi+BIp_~T*=VM-5vW`&-rX9&Am@Fmsn9UGnr38@fjTqQ`RNJAPJ7S@_*d)q@ke-peF?o^d>x z$iNtv7bxlYjI&)WYH|5|Y{C7b>R@Gg7#%H-Lyx1RM|g|(df7Pi^LRd7@l9!)tIny> z+2J>+Uz|IN71F(3Cnz^(^<4Iu%PIK49kE6N%Q`vUiOU4h&dnQC^AA{=>*aBj@nCX9 z_yM%N)^L-bV5bLuaU$(y#{=2qS^3xF5Q7B_z)vVT0$@5@Re8=E>K62k4>!o~I?x-W zo{S5dRszDiY6l|3Lloq=?*cbkL{YBgaGw)PEtBd8?Y2mtNc>bjR5(}Ekr2suh(^F{@9 z%(CAE(Z+F{IE5P6E0T5dhAWacc45O!4J!h8h&SxBnL+Cv%FufkiM!%l&HY~kIbs2{ z)JBb6I&eiB5r1)57jqEbQBNhwKDy}yGNxkqAV#4{EarOh@T1&&8F{9E3>sS zH?W-HM>7`Zwjvq!(CHUj8n7`40nAe&Z@~Kd`HEmxc3J9A$aL(0H7nihV@hY}G-V-2t_|?nlrtAFs~7UHXbFdU-RAT_4gI{n8_j-D z%`eXvC!YO*IAL+c7*;MGI{>EEW{3qJsrz>OW*CMT9~@#gvuZHL6cb0eFe0-^$wqGw zZI$Z<2MZk9DyJv~zvfNGr8_Q*7le|{!1@vL1Ozs0Qct6|gMq*7!Aklg>kLagdHuG6 z|Nke{q+~*MzQkRE)6YuWQwhkQ2Cf(nw35j3>S zOeg+v8zw<@Hl`hq?^h~z63exCnnFI}?HB4bu+?sn>nV<-;k+qI*Wd>*Z}DEAKpw@U zT{{*sWY%m(6V^;xq2?ZKxYgY`XaPa~T{FCzFIqycKqQ^+sy69l(@3oU8mV=%sD~OU z-5l4rj<4)HG@=9WixYhB`tswVrShi^d_kRI{pu|u{`uCK&^xcRR6b)Oc;K)u@#N^g z6&Xwjm44N*>K^L4_`Rb!OKo;ua?+p8!o_Ki+IL`s&i_!VmVbe@oBY4zJmFr*(H&$do&x79QM%cU2AULHHpi@Ish zX3lMX9JJNxBHb1tL1$#%p|kb$UB7#%;yS&dsX_f^HB2My6Iz{<@ z=>{9SHsW4A%V^F9?v3Q$A`9z@yp{U9r`v;xgaP23JZ2*P9n3RHc*{r$@ZGiIZwKm^o4MPQSZ4qIi&;DbrNV5L-R`g3d3qbpdRLe6d`GK09R%XQ4uctcLsJBCw@0(4mhIdwF2`r3!gE2aUVla zJK@UD3sav?jQ!puUYC~GN`$pk~7eka*|J{9O7w>=O9%b$*_p*jv@r zyqtO%6_u)x647Zk*odzBk%k`vl%Ox9{09@p6=^N2*WF+QsOV?~f#%t1VFBZwD>CRi zCz_$xTBWJC9Im@4wD8)TLJ7@-)=T@|+8$<12^!dH7A=8L$G<;^J0h%xp-A24 zZ)8e;ETLeXURja{qQd9dAWgV&a12M`d9^dO7NbOT4t!fkw-gVen}D}+slQo z{jVu2ta`uUwoM+F^k$+uzJPqn{qA#^#-*jMGL4$JI<;2C6Rrd_VB4`J*@WD_P45zm z2$c|phyeN}!$bOp3PA6+O!Nb+{IBt&Dt|*w9}s6?J@W!&cRjMlU}HIUL-1l68g(Op zO4sR*`_Z4UcVoS{D!4k`d@Q=F8S%#P)Svc;nc$q=%&BgkNIBbM+|U)09MEEMxoLe; zj~b0D&)3mK9D2Yk7C^g_Vv|@on!QtY!3E;Jfb1gvI#ht0NDm^Y%^vPz{2?C6$Zo+5 zx($7j$*^s1-#1>(|M!CQUkgyTL}BpLhstH{e6#A2JvJUj zk^(RgRy`00J1Er&8|2iECm0sFkwswUSe4Ea4KUj={EZKxc*{>2046K;|@tkWwp28~=<-+$;NzK95_1OEMf{z;9pO^NG;!%VJ>y=_zTYWi_E{$IDW z=+|?(TUqz1CM);?C>L#t?Mk*Z_W5xu8SSzN*&)2mowOx?gYWWH8bK1L1L80V0f~;Z zFrXv9v*&an3^!}{`$sb^5ZuTqrDg%I%Er@S8%wD;@ z1^3#~d1rglM#|rcLTehJ5kryy8F+~{zd|s_KQ?@!q*1C>Q)4O_pJ^EN8DRX}`1@V! V+NyA_*G>QGqj_*|?jSw6Vy;rF=(qp? literal 0 HcmV?d00001 diff --git a/MikroMaster/20260515/20260515192001-Config.rsc b/MikroMaster/20260515/20260515192001-Config.rsc new file mode 100644 index 0000000..028dab2 --- /dev/null +++ b/MikroMaster/20260515/20260515192001-Config.rsc @@ -0,0 +1,3409 @@ +# 2026-05-15 19:20:04 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1420 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \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\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \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\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \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\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\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/657/b0bd77b1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 15.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.105 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.73.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.162.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.162.94 comment=gstatic.com list=RKN-dnsLookup +add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address-list=VDSina new-routing-mark=\ + main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address-list=NoVdsina \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack routing-mark=To-VPN +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net log-prefix=VPN-all new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" protocol=tcp routing-mark=!To-VPN \ + to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260515/20260515192001-Diff-Config.rsc b/MikroMaster/history/20260515/20260515192001-Diff-Config.rsc new file mode 100644 index 0000000..0f32e7f --- /dev/null +++ b/MikroMaster/history/20260515/20260515192001-Diff-Config.rsc @@ -0,0 +1,40 @@ +3073d3072 +< add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +3074a3074 +> add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +3081d3080 +< add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +3082a3082 +> add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +3094,3099c3094,3099 +< add address=173.194.221.104 comment=googleapis.com list=RKN-dnsLookup +< add address=173.194.221.147 comment=googleapis.com list=RKN-dnsLookup +< add address=173.194.221.105 comment=googleapis.com list=RKN-dnsLookup +< add address=173.194.221.99 comment=googleapis.com list=RKN-dnsLookup +< add address=173.194.221.106 comment=googleapis.com list=RKN-dnsLookup +< add address=173.194.221.103 comment=googleapis.com list=RKN-dnsLookup +--- +> add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +3104,3109c3104,3109 +< add address=173.194.73.106 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.73.147 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.73.105 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.73.99 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.73.103 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.73.104 comment=googlevideo.com list=RKN-dnsLookup +--- +> add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +3112c3112 +< add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +--- +> add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup -- 2.52.0