From fb7baedf86c12858601e96e94dc657e0c2e2066d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 21 May 2026 00:00:50 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 21 00:00:50. --- .../20260521/20260521000002-Binary.backup | Bin 0 -> 252036 bytes .../20260521/20260521000002-Config.rsc | 3445 +++++++++++++++++ .../20260521/20260521000002-Diff-Config.rsc | 4 + 3 files changed, 3449 insertions(+) create mode 100644 MikroMaster/20260521/20260521000002-Binary.backup create mode 100644 MikroMaster/20260521/20260521000002-Config.rsc create mode 100644 MikroMaster/history/20260521/20260521000002-Diff-Config.rsc diff --git a/MikroMaster/20260521/20260521000002-Binary.backup b/MikroMaster/20260521/20260521000002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f1baa72492f07361ad1f3b464018982e57b36c1b GIT binary patch literal 252036 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%0Am!M*$57_z8AlcJD-7i#v`(d{elrou<CDhQ}% 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

r5fMUsh=i+=A< z1wo3aOylAPlE2oTEiROke1Ve z#qJ=L`US|PB51-6pzA%oI-fvI>MVz6#4%yKdlVg?c19(?qP&q>m6Ix+)y1ETsW0RCtd6PrxZaT(m?_W$=EuN<+dXde05F_z6#kumE87ZoHAd9cXfkhC+ zg!@*qm!F0BU>_>!LwL=kJULgFBEGsrU37t7^u~FWb$wLv4DQ$In)O)_w1Z|>e7(L! zaL!qJMEKRN#1&;GVPW$m7R1ARB(c{-B{BDb{u0-wg<&vL8(qy&T0|F-R=6~XmFEhebZZ@A#nG<}MhHyb?2f7ZH)h@upIFuXK z&kdplao<^n&1vO-&W^c9uUIq{A-XdgEt{%#El}v5HpyN2T}y9C?q>jEyE#Lhg|oE$ zA7gy9X*DbabZKo`e6;9Z_OMxctQ*Ezeb4v$!d)b%yO6;F)$wwTJ?BYz%fe`04v`?X zi;Sa=>{29u(|5VzfKlU3{>Y~-;HkQD3Qj0&0N=`gfol{My0m~s7AsjMXXuX79!Cpa z;i?pX^s&KN$zTU}v#lJ2=f59-;LS-uAGa`dN?;~S?S`8Cc+FU+wv8%r>LcGOQtjaE zgV6T-(oFLVD-GkdOt>!8+#%7zm93t>g#P-UUw^?9%)(6M?_(nsuUPw0WlQYy0J}~`9dSu- znk$a40U!TRnSJWr}3#&78RS zW;sL}B$8V_RS4DZsnM%Bw=YP6Wod%dx`4*L6FgRrgm!op%kizr%#Z-INq0|`b4E9vs>FW8%0t;MZRlJ2bIa{**8Y2ewK3qRxdirr3@ z!xY?k3~hmfh~ii&gDT>cVq&Gbq~FZIzgNe}$cFi=1?wDjAg=ZwNu4xd0^n1j}WfXg} zlg_gAKKc~wQbAZ$#+UXog+Nqbq=K%owhf+|toV0_75Lw?4B%e+6KD})g+;iTg8Wyv zDkMKZnLN{})zGcNK#=3k5ZYMCoacO@6v8H*Ur&hgZ7Fcp6v{A5COe`90*xr>+Vivc2dj$p0#GP2T}f2ns97RwIQz}H0Nz(h z3isgP3^ZM;mk|M-u0oLUHA3c0XBz{kwHO+g+oz4x!sXMw6&k|te#ghXPgVnIr|6`P zgahi)q&=oXc;>o;4+-67k%enTcu#BfD`G>UM`ZHSYmO0u@b_D^3_BX{iYSLY;a zDvD4Vmb|U}*XE&>KX3imIIgZ}=SY{SzdZ%*ZL56kb7DdA{mmrj_z#}?u`i>cfFEwR zS0elV)Hluo`h;*H<0BAK_j_XFW?{J1BCa+H2U3H{!;R^2d$qd_hSrx$dz!%xd|Yi_u8}CGTxC(2x_ z$<910cmMtM_ZL}|O>yYF698q<9D9nK*oO#Z?P1)638CO&-9-Mg>J3v%G)DXrx|m0+ z81ZIBEQi_tvR`C~jl705wx$5-0Ah!2vOf_2Z2j19+T<$oa;}LADDI5(*2fw7L0~s! zw((uH<)?xc= zN(*XVx=8O;?+5Zu4zz(Y-s6lx|KsI6SoZO|@~_~$LIGBk8P62vd$N+x@}WikL8kAR z>R3H%U~StUAr(|=db5;_UE+DMYm)_YmYGh+*H*mE3L{QgRr0AXwW*7eVl3^ry~=C_ z!#H&n4#;rmkJe$K{HLH0VteW0s2U4k{8rdJs`%0|)p0jhcjUo6}T+-w1DP9ChvIV(-Z&TNMyQ8f{Y3R38 zm#Nj$M*M@lUNRfS@aUVh_i~FVk$_r&N!kN@f_)ucPrXUk91n)_(xDVT-lI)ug38#l zj@*oBnoTuU4N{J_P!2Yi({T~LP=?vnMsL?5)twDjv;LBJ>S$`faAyMq+3x&KZ$Uo= zQRL9=0Wq_Z*+3B&JuS6?Z~XL9YRWLG#6k*3LH;>2hS`yB@`2;1h0~ln8?=IbL;A0* zid^(5xcoc3gk?%n!3Y2XQtzCZzhnxGono;wrw4{`*MgAo<3#N= z{Pz;ZV}7xDGl-eXU=Gp+V6i0^CG1&xb0nO#mn1S-pCIC|{-ltfh^TmivjM!3tFajc z39Z6WHfIj2(I|gUw_)~@^%@4a)KJvWFx`rt=PdZc$~kWiy1l-s z0gW4G-_G5I#9R&VVcA`f^yfq&gkz&iEPilK*-2rV7H@(|T56}^;b5Rf4A>G?#u9G4 z+;11CSQrYuBu4Be=R#o(n$(yF4dFp%3kK%6c|p(t{YJ!wbkp<{x`oQ(`yuK3NG}sU z0H!tN>;V0lmyF*vy?#A&F1dSt;&2-YsKyJ9q5Fp6aGzuuvQJGBK!kZSJ5Sn@TgU`}vbjs5L4IN>Sj+5Hn1FqpX`;o7;)i$p|pl=pVi_wm9vd z=o(|Q%;_#u4<9Ta2jIC>Yad}o1ENGjrzL|ErwVuxEpNLvcLVV0M%9LyL^{pBKKYm9 zbz}Zfks_o#B>4YN=Su}4*WdupivBYL3$ zfuJ)XoVRQ#(gkG!&IJ(7##J_LV4KKIRt%Ra+<;z6$V|`_H}dUt{bTYLPMOcZ^vUx? zk0sRCqaH+&@4RBnBuzXyI-NKojivY!Ty-A|^Z-grNYO`#_?+kHX_e0u*+*h&CSm&O znK@Zue6n?$h(L0x@ntN$NpYK639mj=mscrB&Rh0Tk!GQIP-uvP+S56AN}hsj%X8dN zMs#ttBV9N-Qd4@$+ALP+9%4OF{%QQfY54ecic1eqEH1TtIxqfJF>T&w#l4^+@-{v0 zXT|zI2w1)9iIQ35oe*3P;PKIr0U*9&UPz;JGq?*XeR1U1bt`{~J8eafWC7`h2BXzCzQUApVc3NDn3(`$r4CJEnBRR0`cE&nl zNFd&vVw}l-#=n=awL)5a?mV``SP;JFUyS1ncbC6B#Gd#FUjxdoZR(EXt}mKSnqP*^ z(f$+yGj?1e@|i?9-^O6AhHOAym2>~!DOx9KKmrMq0S(ln=cz^!-$4G z&N?PryCa6*qF&-Z8OSJxerBSxAKks7Yh`2ynF6RdnX0O{0i-$ou@Zf+7X?I2{KhqD z&s&h z^d)ZzIlR4zUkmZy-Vm&0{}ug_3l}nGp$14a-aX##;F7ADlBIlVs`osqJSoQ1j3N9_ zRdetVELb?amx4KO|&`wZS(&g{CdgETt@g8@$eh5w? znY1rHxsC7sTIK1Gh)J=?!F5ChO3tCel|5rzWJaFd+rPcmIKeu=#k>`}SdS&UH>z7O z0$>y_|9$_;^yo(mE;1wT$wsFV%s%!`+7*Kra1+IeKThhGy7cUVjGcOGyL1w-WY%x! zDZo(_{lUtz9adaFyQH~@rfgQOzOwQPL0Jceo`4*r7WNX#=%hAC%aklI6xN%9ssBYB zrO`9(L6Jvy;8D95&9U+GJc!Kj<+c2UK5_kwC8oFpRUI9NU3H4*tUtvOy%kJzbVgW2 zaj>%90P$IJn@tXpDbid?9FdUPAQ^K>+X(zcCyb_lggiq&goG4`Sh<+1BpwZU3|-9T z>0CLvieWF0q%y7rhsQ|V=g%d?t;%&nPm-%>kg{6Vg^gNi z{W)*IVa)eQ&&ZfyB>4Af-5%KBX^oc01P#p-s0nU!Gjz9Rr{A46)>ARV0Xc)M#B5`u z!j1*6G$=b)-m`{nIBk&_$|LimCsiXeQk&|>717QlsP6ARUWF;QdM(x+XLyb*AkemG zzrk9#ey8$3gYHbaIu)?AAxuLu*G+78Ox?A>)d7)aL^S--HWQ3Rc!d>sPcjmFi0sTa zxC5<;8kEeN5V^{7V#+F)AUY$BU022z3dm!0MB&ppJMcJ>6^ zKEjNqQ{tV?^h=VJTTiH#>&A5j8c?)AB5M5XQyc!IVQK?sR6juY4O~tiQUp7~cpgKh z9zDaiN12s3^aE|C>BN<0gq z3E;d$-(|Pt<}v~ur@(k%a=-MEBK2ooZJ4{UEh8ZK-r@_$XjiJvwEL_q83B7_kyM|5 zpP%+^OMjLXpo&QdZ0_9tSG#w<7z@4<(K#CqrvE%Zo^4jY?ZaW_6@;r`SJ^+gho)_@ zTS*Tyq&K}s0kjz@s>&^EtX`tSVIrvOFj8wkUNGK)r6?LXDj(Yi4!*vB%Qazah?F%3 z4`&ibi$+)lQ;FCW6Tk5?Y6*J8M=|>B+H=FasN(9c@b2j62vvGBx{T|iL z#gnf>B5@f|!3yzJ=l}*kYb_N=b*3j#^nSO9Gh7cBai&~IYITpq*awlCpeqst)@TmPI)uQ`of8P=@jm6^qm}pI|$@lgXT)X zgw|ghQ=50hSxV&k#Bdh$nk77EW2?jZ-x$evb;_4w(VR$^9N-$vi~?Tn2;Hnu#c3qh z!eSe563e<@Yo+cL+}gby81I@L`qxs~C$dFC*0uTymjVOsz3uJHc{@>CY2vLCb~bIJ z8U2nnogg5okN-;qynKl|&N{V@ibUo)W0A?}I4+k_#CjdJ1zxDlQWSfnzuoZQNDZxA zz1__`Qjd`mpG69ll8j_|41jz;VBt2SS&UQwXb z>iRgKrn5r5j;J$DAVZPIxQq1^lDl!Z62^Mwq-C^_C@SbL3(=<9yX%@0QrR?WqJXw; zzv{wGSzd+MDk>6f)}2J3Wo25BjK5yoQk@4;0cX975F2HVwuBZ1AqI zQU+dt&}IMJVy*QWAWgNV#YoWOoXh9ui{GNx^_eB6VA&Uc&9qMBY4p>%G+W==wgJ5 zV01mJ!`L-dMtd?K$RU;<BF4XL^hHdRpOeNVc12XSVP2l#tPi19Jsh2oqDI z9l<#~s38#n(paJr>j(+(co1D`X*Xx=+*{P+(}a!LM;}-TGIW^(oB*TUF`7`e9F_-lHf`vuWb&6Pejtx)4UXFst^#M>@g8X?$nnDec0_cIdEg7%1I zLT0vux3cuB5i2fmjpv`@eUQ(ahwR}4faT@ywoeXDVEB~XexUWLbaCf)^ja5LcsjjX zLf5m6U82!b6xXaDHXVy*Rx|8C03RX)7Uxk6vQ}Kz^n7hM#u*`+le!o)OKOkGt8765UUXbYcX!lRYSFwREei%zI1 z+|7}IjYm_VSr>@17SaMa&UO`OsChrh9{r(--jv4B{BxYJgYLjwyCKg9MM={anOdaz z6w}_x;`6M64w!)VP%Qc+6`L0B1~?Xe)Rns{1PiF>iU2&d6k3E{$<9+=q&jy_iv-U~ zktUl@fRsql@F_jQ01H0v*(@AO`6_&m*E#^uk8OO7DbCV&4|-Aw%)2>j)w=DF#Xge$I&)1#cJ+e5}y8M?utqkK8zg76J_De=LopZ z=3c|pi5S#+dMYSCZAyZ=8*=|3piYG1Of%BUl<$ss$79FHA`bjo!T3W5ImcPzva|bJ zuqnjZw%vJ6DCDXqkKf5D;I}!oy9Rq)`YS>`F^t}>om4R3XeZUt=)E?rcp{3J!h%Z3 zf~McVdVbtq>PxaXk6QwH3y)*!Ir%Lss5|KVPtJ7Z)R~(fyc}gDAdaNV!eIU`%YY?h zW1AJ0xSWq+4mDa^a~*>u63rpPvR-t?6#sE$Wz=E!JpS>m{>2!{eiwHc42#qY z`+>FWx9Ca)1;(pj0lZ>9gP*kxIN=RwMc^+(M=?gR>`ph>YCD zBwE+U<5!SahGKsPsmrrxtNB_jp`i3i2+&0B0Nfp1@M8Zl&Z_V`2I{6Lunfa6z++}V z4)%76MM|ChS_fd)oS?Lu9+?YQ2+2x*AXz4EhS-uan^9pJI9_mwXl=b7lm&;!iwHCO zH^DpMd9fSxq0NnApYKvohT;o$N}bj7+x-#MUh0$>f?=WswQR-2y{dLQi1xq_W$IdS z9=yFaYbVmx9F1;RKa5c?t=OdINe!ImG4z|zQRGO%T`)um+Xf%9lxh(`D9UJr`Zjpk z$Bu>iMj)B-Jo?iyUgievCX)xn#+xskexxqihGTv<0dXamln2%l+lLLavP9oR`8Dj8 zry;)|5qAuzt#(&zrww4N==gF{P?3!!^)rI?-#%%ji9qU2fazplJuLRv3qbN(fDji@r;37F z$hn){ELliP<;WB0p5!0ukyuL$4FoqkD~TH-xb&+n9rnUtf5X8niDteNfYpdt->AbZ zybYUrPmDCTa8#)f2>Lh4jSn(YwQONl;4nghD6-7xML@T$;0X019LORJe>bR&+?>M( zd^NSgg#IdL2pj ztX9X?o9-}LAb~~9+gd0P+2c()(fzml(_NGa|kf(2x-U#98v zz8LtZ5xMkkcdJa#5IIN2f5#+Va3EVtoU{xWJ$}|Mo>Z{Y%RriT;)P<{ut{G`vh{SI zHsoMiMcO49CQKC4Oi+?qe7ZA@8;L!tOC@Fsu=gSGfOgEM{zwob$Aty9DmTB5Cu|y= zGBl{6jG%5fASuvJJm{bn0pxZmy@^?-W18CzFQBVc#15HFzU1eH-lS>{VDVD9x1vTe zhMnyC@CH_wWW_pi4~5wF%4D)>#}q2e(QnKujA83hnNb9)67v=6h)zA?6wMD6@(89<780WTR+!)e#2i zRQ0+UszLXZ!TUvMknYufA5?%bQkbe51L zMw7Fkoiy7{nTf!Ry2eK(wAfKVKBe%#j_yG%qx?h7N{9n#cNnDPZ4%78Rg(0zB?^sy{b2UN_SDxSupe-3-8HD1*QaiymJv3~PoOp{ zo=<2g3ZtM#TGQvL74X8a_JJl0YPXpf^sA!eRc2ockQmzaFntRjR55QB;T&; zAA^VLY68MKnUklmqBO(3ZBYU9PE?Ueiau|=6xls1&nvj_y^^-Q68J%iiZ^l%GdZux zN$ju`Fc?tgwjvtAx!Z`Qmtc86ATfLjN9RkfEsI5~A+;-8WET=x%>}@vburI=U)UD! zGI@rkI`MY^Ulp!!sbn*PUFdhqRk)$`sYu=R=Gl~1Is-D|)iLg`DK)d?8YS4nX#FIV zMD-^req%sUH6hc>Hh$_U8_>_w)cxr965!Azk~C>J+aZS*Z1frdI5tI=K$aUefdOWP zMcWZ6WrImym^Fz|AP_i$no;ZJC49_04fmsvhrimA+D$0lan=@^- zJrlY4CTtGk2n<%^Ku}RpDE6HOCRau;r0}IUzME@YzoVG(t-p9&*|5LU)`NYk7JA;j z;s!psAM)q}+4!#pfPlBuZD&tnRN}|2$nrunlk`nxj&9LgN{ZK1FG(L-ENFSTv{#y^ z)zYmsXmx&d_)Ys@f&GOQ=YfO@G5DrHLdkJ!NNoUc$SogNrL^xLZNc z$%G5-@e7c3;Bk5<4*G>xvQ3ZuM99nZB?1lkS3rM%8a7w(&7h1f#tq?5-alAwZ+qf;NZZprJ=(rsVIG&lZ9FW!YFhuK)7ZLi&eC`FBzE_)koz zJJMv9Eb%o$QJDS%-4P;L#>L`kydrELuQE7RjFguML`3aTSlhV~WAYc|4pX6&x7P>| z963eOQ>BM?S>O)2bhFi7rg{X6p=lq0+W3nDi-nGWqlJk@pf@ry${Ze$a)>+8tVS=m zUAo?K{>UHnP4ms;X4T3CI|`R>h~61-~i5x=o;5*46^8T6h~ibPSyyOE-p6M3^97c|R_Mm+mLLAT|xdlQhL zGkQW<(b(!johekv0ruyY%EM$yNnz(aEuQ-eBH;E$HdJw4)Q*H-5h%IvuA`=Whzm4z zKK5xYSU|bXT6o+$3Bv?8^|ZF1YqvmF`|1O?%kVq>S#+~MA^&g-bOpTPFed!|FhW&{ zVvL(&<#lZUhSDvFP0*aY!A9s^Xz8^4DW7-{fjU@KJfPv8JD{co+pkY>g@Rc7dzjoN zsdCUx+#S9=yDU+cS59_`HuAo1TIU?}vFGBIW6vhg;{-t?C*$&I#ZSU=#CUzC_$A>a zy%iM>$cfH+flk;gV)ydm@8E{S4o#s2w*VNytBTU@N=C~Gc)bRpUgxo*hIR3hIPFYI z%@i(8b=+SPjlHQooaacA$V4r1sORxJRn+Lg!6)9u^L@;P`^QdbIMJEbe{6qNV-co$ z@p_Z858pNOfKB3+4UEeZLqDL8-@4f9(E(wz4%oC}Sv(B_b+GihFNH1&%Q%c33+-NK zq_1*%s0ax3<`wItrS`^F1P30Av@02pi7Qul#GX0NSb*)W(N?J9O^cAdj2@U^vygj( zh3yT!K1`L3u3=V>+IC>`g_XjIXcNcgOHM20O$%0p^cx#ul{Cu3N|@1I`C{Pb;-89@ z$oa`LH?~X%hLWt-EGHSRTTtX6wB~KnV=E{4|KJ8;#A%KH*4pWV_oh^n222Fl?*YCL z&P>c;j7qn%#bg^k>bV6nsT7QeScMiqf&6$YR-uNA?GrCdm*uoEWXMXv>>y& zmxHNCxPnj%sM~|9E!3p61@kmm{{s1bD=F_VCikxovAZNR^|=u|I{0IK#`(rb7#sx4 zJfDT%QKqr^OSRI_SzGD8`$V_?T$w4MB6YUspECp22L77~L9{%q7AtxZda(spwfB64 zm=UDF2-&}yBdYUQqK`OIVEGK|3b+cUS`M|*1}e&h5<|b`l|qV3^E@eh%WVpa#lq`T zvy4sVKA2y#;-T&H6@B!0gj8XDU)SKE0lXJX>z;`qOQV+O-z?|)`WI2V3P>xMR>|Gf z>OdP6(}|)>H(*2(Am7}0>@Q85AdFvtn7f9%>f}9s8RTo&ixV4==zD4re_Ca%MqjXe z0Nb5B0`Uw;a*;}F^h)M~GAxf}dXC4jStXzz)w@fqSsv)nc}+58jD-$c;T%}DZV|I* zFBdE{Q~B%DQ|Q^uLPl6{&zDqrm%Z0X6S%WW5qRxn`Xv)`GP6z$&{Cju26|9f?*3Va zlk19)2KZ`$?XEkVPe;UqkT~*D-rR;&H8K7T{`+DMg7C-t17eEjJZwsp2B!`h7erE7 zDBGb^hKY*>H?-s&9b3|`C1Fy#{KPFqLHGL46vuR=%`;IMh$#%lWg!oLg#SY60c{@; zg04(LSm!C%vog-9^Q@GiS|P~dBf$kr%-YjUsRKZuZ$KxRT-~F9>8ad~I$xQF?VBXt z>__77?qGTLgEudb#Sd%yjf`R>m%WODN0m^hH5Z;)phR&RPgjKoF}+HeHfCPFW(y)e zU69{KMjO^Ha$E{tCH|QuI+!70Cd~hFSbPAr=q^4-h$ySyCSv;vR=PS>Z{;35KPY5o^ zSiXn2zcVQVC)3vF@fG#)2p?=1j1=lB%Y$<%Hm3hf+;JwWeQj*coAKb>DdxFrQH?`6 zpO2&ia=d#9;aodXy)C|(g`n@GFAw3TS5q{}ONk9e@oL!sx?X3Cn)`~`;F{ICeQPv|{H0gY1vpZEsqo;>=* z2!&NP)4X?IzNI35L!dRkMAE|sCs}7-^bxW%*riQWZrsEA^ZZhmewjvtp6N-LS3RC8!CX| zZF9;TF>n*pT;4D#`1YwVMi#w?Me4mqC%S5J2U^=TS1moDeQ3oU{s-i6Mdp+go!nJL zq))(SDkH=SeqTv`A9yrVCZG7L;AFcoZuptj@fjCQFa{q4kF^5U{-2Ei%Dxlgo#hke z@NPHXq=scPZHBHcN?{=yMsVZ{a)L8NVJ{clm8JCdU&iURPbyix(($$7z3fd=bo^W& zIcvO6&`l8xWF!W2M=kAzc-Vi>3RMZCO}fcM(AXxLkz&yy|K1wuXx*#y&-m}p5?^BN zc`MHU%@-t7e0;jISbK0VW#V;XT*s*zlcq^4V*xI(07+8b%2|n6X;x!zY2w(k^Cbyi zqE~2ITpo>b!v|9dsNdhobcEBNh ztyCCTG4I{aj4-k!~_VIWyvfx8&%CKz5&$d^37@YXi?tTSGnI;~i$b1!wN| zos&q!pauS$7~T*#g#+SOaNRrKw&fzTmq{bvTF38=x~dVFUgQx#C`p_^yMwCH_9oFj zS6(&c{O>Xi8cc&3;EI%)&14vj`!>=1NXn_N!A*TE`$u}Fm!;^~PZFqD_1dl;*!>(b z;ls7>EB7)b?CV@_i4t zUJ(N^H~b&t5w1X*vLD5e663}M(C(`>vXYp>a+U&7sXWR=!Und-h`Lmjs;m^4eOVGtGh&KgWediLd0#5e-)$(Y~`->TiD!_%naS#J_S-~ zCXas6Dxf^NGR^AH*LDUO_RB`miMs$(0aE#}wPxxhs?w`EQQN&J&E}s=O8zX(*WkuNV{=5G>7_MiRbF8Ra!5#pp(((#PgVH+?8vHuJZw3z<;-fF=YlD{ z;wdS_41o1&^@mjojfIn6QkR!B`!Px9)NWX?sgAQj)Bo;QF!Wv8oqEBzt za{~Wf%$?i07*MR8(dCFl9(Jv0uv|G{I z5YI1nL&p%L2qKBv$?0gl3)NVVJ2{76AKqiC#zDb>?hSl@VaZJV{6peyCjfd;=&_%S z=y!_s^FH^j0ei2Lm~2)eCXNVP#<~})ki$!Eh6~~>fYL|X$FW`H8V3IoR!Ltdjf-(g zP0aaE5G?2T*&ZviIUF2rPZ2NO{xV@=^*1r=L6N%8$&fC#+Zr!-+aG~#ErY9K_Qvg5>I z0pzf=dG~}h<{V34jOtT~5EW-n8swKnv){9+l{}^ajE@K=A2@ zE{M?Y1daWbabeREIEk9 z#o017adfql7%?F7VJ9S+mah?;19Oc$EyHwfU1ul_IjFfsz1)}_`c(RlL}j~gb3mw3 zt%Tu+@d}GPXh|feY;y?hQ~rm=6_(@eD$nQk2tx8k zfAA_cW^kbkS)Qh!3)=m{N{cctj1bNiP2E=IfIO=6$9*+Ua(L8%^o+@ogtlUMJ*3hL z7%dmpp6cg~ZF`-_=*H?Cmsz#}!92Qv42f(+Iz`17d=NB0aX6J34`8uIP&}E=#Hj0v zOgHY1gY3k-EKzhw-U*gID1A)>SiM=!xy(Y$E;nI6r5yWfFd(i(%ARw&06!;2u*A!) zFw#mF5<1CNMrt+?`(`dpGaY$C$11LXEB^K7n3bCsNDXv-#j*7!cJ^>h#^+itTd@Ql z2FUUx8?Y<2l8O0DV;-PIU(^r@>OxS z))U=0ND$epD@(e9+n{;tHQO(j{V&cXUQ5-^Rk58b=6E5Jqe>8S%+v`hqdVivFy{U@ zQ?{H5j}x*hkyI^o^&Jaw_0w#qr4U8Qqg~##Jz<~>OIr7)82wm{sFqc^C0#~~@g-Ef z*3#}CSRoJlMD=Wcz2#)IA~TRvPg!Kz_xPN|~Q z3utPm=s;vG8YKC#KwkC*En$U4 zIKUckkbK}rGzfmM@rAHD)9{*`nxb9_JOtnr8%$o&qsB8&y#HFy3lgxl=cUa=yVRqG z4Bjl8JS_E}dW>Wa!X-CZi zth|5yp+n9?5~4JJKofs{CuYQ;khbi~m;!jlZMUI(0_S z{(Vj|PU&4uzL=@#HWZAT`cy$hlw%5+b{EvUj^>OqxGIwjr$CGoYwq-MgX?TJE|uXf zfn+KTM3%DsUQGcoF@55K!u_;OYFy8c3kXV?BMXE8ECE?Xa`Y?|1Qj0aI)dO;aALh~ z1sY_^o@8ntD3o92xB6Od^1B<%=ZfO}h=Cv-g{heUlw9OqkqpttuxC#kV|7S-P!B&z z9MQ+9sJILUC?~k)cVq|1vAsx3B5wf6FBN*NhdAL*I0n#)iS^xSKbA99zJ%WB1$WTkk~J#1wO59 z3OCf;?2W?ky&3{8@29B0p3qIw=Hbe@{xxm{!59)GkERGCpg)8G#s>(8OG8w_Ah@!j zDYt+&54q7B#3~>oL|jkJD0xvlPnA=dOph2M!Z)f^_D6Xe@O!CS96ib~{&3ZYfAx^* zx+s0scDkcthmKRb(UM8Yg>3@%=g>ibamLu#P9NX-{$P6i%Su>Hh7y0`mvpEJ+)0YR zIR*r?PR)fI%=2WlnEp(|61?}xu!C`>hM3!c%A3mxvO*#y5zt2PZcIV;r(L<@dbkqyo*G|J>^<{xXaCcy=<;DAwfMqywBBS=rT)WdZo1 zyYm14j+QC58a>1BUGhCwJ4m_Hh}&Xww;BoV432CL3eg3UAC9@=o&T-IVV%4j_LL5} zq+xjJLpfNJ(qH0|=p1Nj&1=JdmWW;A%7u>Mmw}_TziYSk*e`a z+L2lg)u}ujFQGs1e*kVl7e&Y^qAN)JGULQ-ju)h@(SZz;b`!#EVD^DthzZps0B1;XqkGBfOTl~Y!*h^%zZL1?(p+R z?a>9%(A3ocZe*PQXNuM@vY}uXe8_J(FX#TqH!)U!Gi>vid>cuaD?BerB!|xfGnpQ} zwOMXZs^y~qg`6soTwJ4B^bh`9@t+?= zy5u5Qei4@Em`kvtiYo@@l)HSDajm$-U+)iAIBh#VY!gRK#-bT@7qhe-Uz66P7JK0D zASlgB!PoH@AnA+>W5JGTvlrytT5TemNpbT1bc@80%b0n?8l2)f(u$wn&qZvmoyi0j zq`dztjJzlzC7+X*VgynIjlKZWZ>@yZ0LVOAN}>-1(svnWAHyqUh=U+aT~Y^&&fjb@ zVjn}nn@lMfRJ(J5bB1aM$slJMSe9N>Au8};c4k`Su2o_EBIMYOx_#TTU<}(fH03*ZpflZ@o z>zk`Y`eH7DZ==NKmc6yq*iB8;Z82F$`ZJ8cvhU+a(H9G8zFsOjR$-}nO6W?L9?jf3 ziSdC?U&?mY#bsg;7F7ISWVlJyra?}D@naEHYF}3XI}t%;@f2k}MA%3|S>%N!QVp^W z*XLxTUVB)Rsh}t90b>O~mHi-M*_{1;fN88hA?zPs9A9PSS#4uH|3Q#K)2{9Of$Bd& zt`NNn$P8w9oc>(;)fhu;2f=qBNbPzNee6%50wZpype${>S^~vD;Izb|6(_}iugRew zx+OqopFse~f0++KTS_{_3Dr!=rQ=fmg&e*K=_Tb;w_hJT`;g}y94NpC{`skr&ayz{+8l@kfe5hn+h=Xf>v3gxaP7Q{mngPv zs<%Ut9m{x-0YtsK4QM2yvtyr($6;G`Fs8{C)2!RCIz*^`Ie}ciO~+}g?y1^-JBb?> z1GI&2CTz*Qxdgv6RrfQ|eT@Q4L^VRuOp__wFEmhn0R~^1o!*9kclv6<`DP1IPLBGd zlPTb5yHGLWZe_RHdZt7ihMJljav5EuCh<9Z|Dtza7=GJtiI!B7(>ogHluQDPv3|-0 z+wL3UG~YzV?;aC{$Ivf%>H5}>~%oswxpG8 zvuXs&`iTvCC*OnrRXCMPP|sr6nC1_Y@;IbXqna0GhXP{%{t=eN`P8B|a5pC^_(E^4 z^^1t5$&xMLFa27M_?Gqg%@Az9b^4n^D@zkQD}x|8F0j!bx3^gID9wZUVI0UC!MRSf zVJO$&QNa}#;0Mpr#0J@Hhagv`%5%rQD{@|QZf1Lv{%NpfdBm#&H;Ek_2_wH&P8ieCM{(6{g+CHfn*`*I zYM15?$4glKcGraSkd#Y`ua_m`Irtsv+hqJyc|z6ob>ID#&^%$-DK{LskS6{N zqa9tJqs_3`H)>}HM&x@_t&AveIMPJH!;D(eunH0T;j<}_r5fbgmI1?r2k46_s8TTW z9kEM2PEi>H)hzTWMkjR+{gz8lxIQ6h#VF6HkE*i}?Y30} z%L5W`oRPKW`$^5+jRu@Xp{A+bvxB{QuTp$EnKN3Rp!w)wquGhHD+#$Ri`~nlY>By+g*Jom|6IPs`weBN?nHx4imsb}`79Kac4ZR*a8wKMHtj(zKd|z{2`UQRQ zIwXIFduMRb4K79gyd3G;u>t!IhYzIBR|o7s9giZW6YRP;3t9dQ*(93>1}&^boFP~M z!)y}lO*)5%d`4}t60z^|ZB#0X`7ZYTt@;=@acqk~_0v-EIFVP137#nYe+s^1qw0!h zw7xF``#~B@;{buZmdqhvESR|s6`sTe2Uno1R)9b>r<#UI}U^s^7}gj=<dB8H=-k0g5YqMFzdcEv`r2h`bc>&Cj$#^)=b()9|C(ivQC!`2%N;h^V z%LTq61p+O{LU1+$&tZ2x>B(vdX!;t$Tm#ynq7n(`RuF*FcygwTw+WeTMuE0TAs}JX zMeL$tQ!eaLq>Pb%5r^LzuwJ#@(UZ~3jCcfn(!DyC;8}uFg%$ydXIeDY^QgC!7xmZw zN+0XZ%7g+#6RfN2W|iCh4dkC`=;*;GBQ6;8^#>$y-7@B0_l=09MLt!! zP8h}GaafWNcXyElZNq>v7~_w&d?ap&m%BAd=+pzXmsdJC4d-8`VIunw4PLmv%}vm~ zWcVI!H2V_>Pv}rx=6$yJ|KQb>v?s)2C4zd$M3W15XLAx7sF zvw@vK`V|j6?kj4<%*ereP$K;tTT?dW5}0Wq%=?+~VvebjP$>mUaCYG}b+t8UApQ5{ zE%M3>DBGKLJ{VBjP_ZcS*}s0Iul{}ql4db#UK>jHz-8K|fm5w}1XIOvF7djLI5?+U zsEEvM1X+>}%1M%KZVMY~yc>(BjSsi3N%2xV5g+n$4_^*q)nRml9hUhI;ge-RXu-9h zj9vVb(s1G@^D8hvp-C}w!s*WDD3aKuZ|*J~F7J0G-T{tQOSuTPy`r!O6GP*$A|MA> z5)%h%D}*LTnXZ*Q*h(CwH|m9EU{9l81E0B;?ORytiIhT=4AKBbMis;hFoIWIWtDl% ziU$k%zb@C&hFfMDyWqmp$+US}&vk}Noiwgiq2z8K3L+5O$6ZoSTcUm)tj%f;Z0qA*k}9OJ3`~PY&$Bb#s$bUE7Vrz+^{6& z;dVCckG&ch%%c)|Oj-YSg>t9lY}J&pLbZzo@^zl`Yh0o;dat76BQ7S)v^9h<=GErX znUbK}jA-3mviDb*w)#DbDAF6N!~|g0g}+{T3^Dx+j-=0k7p^MkFcTox1q0S*`Bp4M znB0FwaF3%~CNFPPB(=IN^So=Zc~O<87iTJODb&u@IZmw!`TO-7R|j$Q9x$4rZ`N9}iYA)=v`B zN&M7PZTKsC15v=ILPk?{Q(6dGjh-q(2)b7##OL(D7^l;-&O&tV@68i&ii%O9`C@%P zh5$S7{+X|40-T)qmdLCh|Hk9whUt6*QCoDvk}{7AM+c)>24au*#4C;>NfTG06Tsf% z*At)rm|rf&p}P-a|5^SktHVsgT0*|xa}cRH1_X1k3TQ^!-)(w4aE@%m6RGi!VCTTy z@(T0&Bx~UpsyT{@Yd!m+QQsUVOpCSh6de_uy`eT5uEpSe)xHV4ntH7smJ z_w5lf*Q1ItsU$i&s3$5)0dm`g8YTO$WKHZbKsW$jfhSdQ;slDs7eY#WQX7^vF$R&* z*}RUT|8q30{}xGa==E^thi!AGra*H)Xe!}{ z@DwhGi%VN$g`h0UIAz{~Ln6L^iD(XJoufkiC)OZ`sGs%DGO8VGrK>h+YzQ+F&i1VN zY4j7tF+IuhT}`*yxL1JS@U{R=+X4zbb*?$?#a5wxQh^0_6oxQ?7gsw2PyNk)a3A|Q z!6pVR4|Ze)xGBcw6pY_evaY6gD@I8%ftWrKfa$R4NBEn6X0UNij0p}HT8ag(O zPhX*s)^biN#8h;8T^+nl8}`k8JJO^Szsk5BB|(McdrqOorx<2BQ>yA~9WdgurJ>vJ z*Ev)i!vkBAta(!*#OkIP0oDd2ytENFS0C$hQo0LzwP%WJF@@{x2l5-O2_6QhT=$n` zR6~vLhT1CxumqtdgMtuVmLuUouSf=g1=>1Y@v7&CuXBV>5BnJap+ zne}_0vTu&cG6FjIC`OYY&E5AS+aDa3CKHL3*Qrxi{&sZp_F8AQLnra`?=nTZ_9CR^ zn;py_k%4SpNw|MZ#qN>`9>`TAUqOM-fZEycf{+Xl53!BZ>`d2`!lU{Y!zKNut*RX%7_kTPg%R$G4}^S zvutN8{cpx}6K@ydE3^cZ+MJNRFo;7}#C@h;iRPLhWv{A$l#l5Qt9 zd{vpKRqVs%7qi^dITe)lmT>uS&07{Ttv?F@(uz19(U8=u7LU>xMH%WlwAuIPUQ-30j?LCpXu4UL=Fi zhm$6Gy=J^del;H$*uS2>B7TB>lpr^UVb({T%%elukU7P(Jlk8_S=y5!262{sxhdP^e#-635dZq_37rNSlOOzsvTBYPT>2!Ee3h(-$JsSFYzGv9~F@{_6RgU zb|U=rxN$ogeh`&n1Y@HIfdm9`={kFz-CEzyKUoJeTxG3%Frj#@Puqz84y0l|pP6Fi zaXhN@!CJXByK}}uOh3wobwCX(83P4*DR@6f^x#i*MsNX4O;#;GAvinA` zlfqz_eg=ws>hbu&2X-rFQ&O7?7LF^V z130ppeeOK6Yl8AeH~wtN>UzX2s?q%i-_>I7C$?Ai%pi}JZ^#8CZx<44`eh2>B7V#^ zUn&N5>c{iBP^`e!K13-x_Vj3kzuO{A2n=uG)%91u5L?^kq^|Kii*x?tZG=RO!@%?Z?&W)L} z5LOpYPx#Dtgg`rijI!*up&9_2V|-SanhdsE2~4Mhx>g$q$@n;6}DFkYvta3G#l@Cjy56?jz4wT>PK|&+tt1XcHT=isHqO6 zzD3vb(~6Zd!DHM*MrTr&1F&E#tASVNj|E+K=0swwQVKnD+mq`Ose6`LZ1XvNWS9L7 zY66__eN!>@XT)9Ifb{1i#kDsABsm*%YyhY0eZ zg61&jE!7%-*NN>$mgJ$jEa5NEV((2Biq7vL$y3|KQD8x!f!M3d^ms8-?(7zFcnN>O zI}D%KIxvz;NOkRM?W8R~@nIHSP}LhVvpL{9G|x_ZL3&5Nf0#AzIIZf1lfyaXz*yUG z#0REm3H{)H;CV9F70Fw$-_}z!1$=lsfhRkX;OffH*6KU(=BDahkeEx)@kDuTAsAPa z1i<3+@q~W^!byMu-Z~721|rNvwd^YYjZS);>tU;C&2BA$aYeep4}cO5fJ8Bu5_+FJ z5#N7rakrEta&|0W-1=gDw$nyOk3(|Gtq8OuUo~zi&Ro1L0_j{Um8TZ zvRaIyK1ni6*{^Qn01@IY6|M`b4m~~U#Dmkc9Zcun?q|>mBhl5z!3j-iF%l8+FhlOV zkQ0k}{OZ!8AYR?FqFjnWs?n^B(qLc*;VmaeNeGcg02q^!NFvMJs~*UMf3mqWmdM;C zg=fQ0Oy7!OXIkHv+>AajM#F%~s!Ifux?-Y{Jb%s24qYkN!4jyvISO5K!EyPbVt<^zFL=dUO`7`Bmo!j zLxhrxQ(B#qOCGzfkAeah5eU`SM#q8dZdz(8lVJBIrpzfk6i=g#I)}zo6*F% z{hDc{<`utfjv{M}bzVt6hxzFni{6@|xt(#q|HP$#4`dY0I-WhWb z^-VRjp!jLnNDhnvOaOa253eOXTM#k*N^>L!*0$hQ3c-s z6s7S|OurK6=YR0@R!SZz7O`YA6EUnKb!AE3e=hpzET|90LE8^zpJT%uTi^^0}@y}Mc2UO>bg zOrQs$Bz(ia#RNaIFR|oYryZ@4TVB(8<9jXJ3qd>AuX_I;#i1N9^K6ib1mfUkN5#uN zd}h#@Y))@TE#%~LLPm+#7f==_%>_@!wG@9L-!>scPE_n!4PUI~_TK>X3oh=l@#;C_ zLWi;y{3mWw3+dI3W3@g1;>-9&Y&7KT@>D_xN{Xa$pIm(c>-6!mk9p!Q=v`A;=Ua3pc` z^OO5;1-X$~zl6g$?T@7sqoJC0vKdO-l%QfWcA+2ak7mgC7$k6tS~rs6${rMYF7Juz z!9!SxEp}yMCilBi6eqw^RmrvisfTpa=G9Un|C6z|M2K8l9ph%OIhoC)V``Mks%};Z zo$Y)lgBw_LEdTh;r361`wXFIt71V4ZDmo*dHFIDctInj0s|k(AdM}lW+(Gh*-9!O$ zhjte8R;0EjfKq|-VlW>*Wf!~~!L+?LkQ8LMUp&kSF$M;$%w+5q2SICV5zV2=MFbH`@~M z-7iYLZcLHvPWNf-R*i*xTf{UT2~3Q8OQ=O<1@KNTY2W6h1Vj*(P`-3>4mgC_t)I~x zJuYKURfC?M&T>Ih%?Q1g{g71igIgd)bDB!Sd9kg&)P1MF|l#GsUzG z0)OyqF1r^l-zvihT%u@e8eI21BmW={^6Lox-H<> znxQ&m4h|o8TxEFZ=4;0$5V9hHjCPRo9s{=N?opo7DFPm^Zk&8tlhnvDFj>JbYoxF{ z9WLyCA!D{3wEi}QfrFSylpG@MdYW(+hRrg!n)FK2Q+YIgc)!HPYm=QFBWEvN*wrxO z`Y%=!xyH3to~egP@8fg7=`g`&W#q@9YKnCfP3C~O!z&=&F!8*YZHJf~SY;t#f?VNeDQUZAM z%{A)jVSsklERKGkKu|GcGU|>K!CC$jan$MRgPLbA_Pb~qa&Mbaa!j9d?mU=nHzny%hmq@0L22OA})M2UDgz<2j@= z8h7l#dc(1iRtI3Qr|L46sS6m{mZ)i4yC1?tJ|(uMrY~$$3Hd6fxvUTi1t?xJJ#A0_h9{`QQHVi8 zCI}yToCuvo;yHU1^_b7?IoqTBrsZvD??Du(U<4MyxO#5n-Sw2V*}$-6k8 zeFGz3Ddt_ol3n1~gNiZz#Mt2Oe)YD}nyu*LgDXHSCnLdN^s%D`*cVvBU)d!fC<{xu zxvRdQ6yNnrcmKdg_~>erZ~-yVpY*hav>XCU2)B;8KtEAzL9&wA@R+v!WW(E91cB}3 z+F4~TU#8a*vYIBnr#Y;5*+f?I}NGV>Y;lPwz?D-s(}`v2tWHtI z;o4Y;5YN4 zSyCFJ0ZtdGA)^xl+uy%`{uzl80oI`pCRL*D+h(8(5;|;RcmT|h2_8yZ%Nl+=VnK9) zai`-q0>Pp7X~Sdc>G4(y5hT|$aA5|d&2oDK+F;!a95$fSRf%YI0jz~*-h9(_eH*+< zZ!axPqY=eUwcdML0Ds||6|G?dC#@NM^NReGKZ?N(LnW1xiG{xniccbVG)`foJt^_# zS?LMgqN0ALRA}@>JF^sw1?(Nyo6fAZp!{gP};~K;F;i zYDgL_?2_Z@;JJW4HtFE_*G{T2Y{CDBL*%orIda<+8@3*j^7HP$6XD(<a{{KAP{NiUK6C$V9tR|*76cN2P6%N;NgpQ)G+^duTVX(Vh< z+rDFSrQh>q`ii5m@|t(<|G8^)w(Qh7<|@+au6WfE95*!bI0; zCaQbG+2mjNKf6%%%*apNVZ*+>?Nb%qwGVvQ;QmG_!-Z*NK^L`RmJIs-?YqM)L4emC z|fM=?Ioa?G4`^XW;P|3c-xQUj{!U3yUS)AopPR!`f@i0j7gLAs8V zH=r2qeCl`eoev(r*tf#spBD5~smkc<>Ys{txB%WA=!lMxV`ZGzC*BgCV;<+=Fkb?%IKyCZ%_pg^ zNsPG%DbFs!r1}kO>Zrx~*~J1JW51?UEhAXH5HUEFJSG}3Yu|)VZC?H|km<>SWP|eN zHN3G02?ufK5AC;B^)r2iYnK{QS6N3eAyJnd40tHDXr=k5?s5Ki2R|-jjEB9T&=Ru6 zU1-j8dzYCl{VtvKHXg#Og^nUyNWD<(8x-;1;B=HcEETguvUOw8138*E>(83a z8?IU%im7F88OqdbxH5 zDmOje!qc$#7>Q3Jx>^b-tWLCl_j*=oQ@0Efn#fp^gy41Ia99tXXh@CT+ZhvQng!Bkqmr4G?ZGgh1m>r)jpm z_z|7Ca^PrU2O${)XA9(*Jy|lPU6FBd zZBMTyVm87atb=3@l#r8=q%%bRJ0-Y?KFl*s`QtjQm9c6Y$vFp>6%oMN4kh?5MrMq~ z+#6Ytyo7O}l#la|=?Q_m37MKrQucA|V#vJa%x}vrbXYUIV%{i%T7}4{kAA49Vf5*f<3UB2uIxD zodFzr=@~r?0uGZzk&f3zWjQ=v)FLCQnBM~xPqp`76B(5GliY@CE?Tj=)J;E?BU|C; z)9NCU+oJ;eu;-;=*8+&qgYRX)F#qKQw4aiA)vH7>S=sxO=V?6T#55!%# zR5Z}k!J19Tr9V!YnpYdizm5BMtazgILBV+Dh5-pO!M}S-k*`*8JFO%b0a}7CuxE(= zHPqbN0;|ZyW)S(P8#*LaEAD^tD5M;9IVMjKL+gU~={D$`s7s$7R;ag}HkA-TRCb$s z!&}F6?LpY8+f2;ewx#)TLt|3WItOvMd#o_^D@|9ECM@w4lcyWXieLsO zG~v%ED~cr_AO`i=YwXn^V|{vDx$!gNIo5VY_7y{pXdd{#PLY(IN9pl|Yp(;LsRJ#-6-#{}pN&inqadzo8C^u`RoyznvqY;iDd`F>%qFq7rzVT- zNn2q(8Hy46d?)oH{9123b6ra~=mhE}SSdrk0$6jRH0PH{w=_?uo09@=gBI*jB<7OLeuTrmkX+v1gGCBK#FcCJhs<&V{o2NAZ4N5<|cHG zOV=FDUDYsd4G5k4e$e5bNG!0auOkmYEyIJd&W9+#NV z^0?7OF5;^hiXN)?ArRg8D2YYC0|BQ(4`Q0X^(LCwCS&$rz|K(9PP6AFWz!XU0rjUi z$WX=1d=YKG@-@`}Y=Ga4DWwGj_Ta1&{_ugcowZ+#nAXvu%JlvTiJ!%3(qEb!*YyL} zeD!#7z!sELn=}0C{*HF@oTVzr7o@4vgI|C^&OTf5%jk%*zT^h1;z~3UBBJhP6D)pg z!dwT?gQ4B6iPl3Z%G3G6N}z20t|rctMD3=*de>! zPL(bSy@$2sl27aZi8tKjSF@-6s#y6c@Ck{xmCNDkx}X>oeP=Qdpg|~m@7t#}I-Di& zemOkC$)04oh@60RvPZNLj#0RmF$}|)xiM5iO(fhl4Jn+gi4UKYofyaY#dSo)@~r$H zXEW4qL_36ovd--R%_mU;hf8ifgB;dmj`a1FKefN6|73wk&&x^~6i14fMg(AN|J%r} ztWuM4!P0c|L! z1f+$gIX!$uF=r^_TPu|*&=SZ_ZpaI4zbUo?1f;fFRvtDo$TAzi2~61&RafzEk@Ba4 zq1_8AG6q{L@{2czc4a7rhY=_#s-d=J?O?Iey7pEh#S$%+3V9)rMDks?alIkLAElys zO6PRG6uW8Tnheq+F8ai%GI8n>x()7cO=G)oqy2C19kW27oT$5H>)J24`4UQTFO|A& zb3r!io798|Ef7xipFo%*(4mj^99=c4DZbt03T|@hv1?0a6 z_j8lI)HQG*>=isLoD&zS_RmAyKVtI4I;`ThU55iPvqUhLtrrT{MeuPlUGZIHJqU8{ z6moekF~kVbT8JUAtA&d`ssxBmTOHKDKrU(VS_`D3buiI z31VOG!sp%tSYeXilCNQoZT3iPxk7`anpK1TMKLRqWF_)2-%q;|WH)SE5jQCCuH#Oy z+9ZbXT&>Z)KXgGt+u$RJd!&Z{ws-f&2f69gP64Lv^*GK@zsgiMl)@$%a1Ld%_!E_ zfY9PVtm16rzxA5F_p*~mwNt`R@BVq7w3A~MEnbP!3rgD3j2&}|BsDo+;P}&;QgeqfR5ZlI=*`P}V)Zyc z>8I8=9sE}UPJXrrZnYOm7AH<)I&o}cS^iu>IZBO^1)TE_*w~crdCT^5cs0sB;6wRU zNueS>7*hYU0yl8vg>$A4A^>g;HY;VMBQ*h>r0o0e@|pNv#)4V*T|eoe)`Tz|0SvFtKH)CLRbII5e&n&yf+mWk1h zH;VeX|H-zcr#~z095->BtOJU9_q!|$x2Fj-X@G#&sH7j$QAVA7e+-)&VwN4&uTn9a zVTDFf3vRiLitnanc6*BPX}k`X=!e~sk8?J3X)N3Q0%WX~Mid?U&|ei;CQo%FjF8vm z%mz)7T0A+*1g`d)bkbVy%VY58n`1h^fEU_YVALc92SRhj6@iwsD_~a@uO*Y%epS=G ztlzdo!F1V%zsUYi`(v}`;T|E|BLf?x#nNh5@bE|r`nf2C@hF@HnnjSz*ls&g+DK!x zc>&K`ujQJ3W1Ij9`_VBQsXKpsCL!u)?TgGt+G<^_3SP@98r%(4Xfxmm*$@x;N-P(i z8`6t*bBO?jFO=lH6{|RC$o??BTWx`i+uj}yV>?!?zs=br_2D7K zt_qpszZxPI0v20WYwmedpy(dQ#2$9uKitH#x*wDgX!TT3wy;ph zD6NJta>hI!x}#JI#>BC_Gr#rFA9=CqR#pdJDdX+7_5fRi9h|< z*yfWV=XjB9MZ<^BjnG1uAnWQ@snfL?+qUVkL~v?nTjAk`DtU73*vg+d2q@;~FzPU};e9dKzbD_nE zr`8x?`>vQ$peW&&YT9ZdGE^rWW{(}{6fSHtm*{pXGTr%MXy3f@Mo_;}oB8>mCB7uN zFpS;SNQ8t!VyOIy^?05Syx*BQx)56a;8>E_`+AEltcz-(a*PwV`6ECg9i6YI>>dus zJ3GH^<}f(LBE;(MJu(aZxV%1yQo=vWJ3f>UNd@^a5Wl2|%vD_*gFm}LJ2;iHlbczs z8X%Nzr)Xm|O&D-yaB2X1eLjb_B7rg7s^Dl=*XGY%CxcRGTLJ9uLBcuS?Kfb0{XLs^ zZcur>;T6T=X)`Ikc5RQ-75ckLj%8<@p6sU^q-d5k@310@gQ zcdw}5-QOeD^giu|38B&jl#`I7iYta5S)2%PJVbHon7p(+=&@N#f(EpfDER!l(OOGJ z9!tV0kQ_L(aKKv`1v2TNzgAs74mK|Es62Q{Cq{fQC@w9TATsU)a$xr){#C5qG!az_ zJ)2~hZ3}Fg$$1`wdKK1&GnI!&dMsGkY?Z7-IfrU}Yn*PHWOIt5_Spfxgm50|){Lfz znVxJh90>ilGHkJ1JwQ+}+fThDo-_WM!#4Am+ zzMT~+b8=Xa-8n9%2?U>9_w4EpsO!Qdd2E;93m-?VmUWn!;$^F3yskeZ`F0>ACn8H$ zhX>2+Gi41aC0j&Ro*%dW~|RXjKe!+^YOh;Ah+ z<#v}`t&*o$VL7|7k^9M~zvDYHxMTq(Gq;Q;?X0Kh_7vu?`(#%U5hRQD76 zIJUzDreqQ3bUfMg46^4ziM;0DH5`fQCcs#ev3xTeEETTIQ}2Iz^ssi$lBVy+NV~Eq z8zngj7Z0UHO?K5?pXj`Tr0ku`b%$YnDOIhORy9P%n`jZ#Knm08Y1?rucY32_4kNQK zHrmK1LRQw64xVFW6xzrotb?>7lnylB5xbPmY8IK!G=t!^d4vNQUzTbv?cf2E)3j7h zlDb8n+OM%BzrNuOn8sYKM%RQeKKxRJa+b zX>SWxQ)^1TQcnD=!>jlp?FB@-BuTb`ZM?}BCEBh-MlZ!A%O+vfw)vM~BejQ14xRX` z((RP>^5P#eoDb2Y=lUfHw-9wj_xH6YdAFq|@F<62?&m*b48t%r4cen}feE*K04>H~ z^eEnu>X%d8bN07Dc}(a8z}-rsXd7JKV`(}}M872Y_CbG%EvFRJH`rrQsgg&&>WP&D z(Jb?Bhw398vfov7O#H|a)rkZ7UdIXW*%hlIQjLuKpL9e^QFO@KuhgF77kEO&XgnN{RZa?y^ zLbj-bqLf$;o3SOP32Yr>vKE^?v8A`AfJ}@XHcL{OISgrK3)`sgSfk}?(Km8+G zHF8^sL=lv`7mR`STuC>a!z;>qKQ)mTHk{8&;@phr^zb@*S+!;eS|%EdN! zsRIkRh_w>57sau@1_*&pHl~zJL9T-TRQym^++XobFTk+2M--uHQt6H@}k{(k+Ve(Z%z*^$D( zGCwHe@>k5ng1GM`zrIS6ZJ6J;x(FX~6*$}n!O`$_^MMg=17?9*e(t33-tzN!eGCR) zOn?5}YWFj5lCoBlk=^=jpo+nxi2#_6EVpWGASKGqMBW#xiEug1FXTJ7fL6t6VTyYz zClbul^Rk7*Rrp$+c4dGyC34M6X28L6fbfDMkPXiOE$ER>S|K8`eR`RTMRZUqQ;6qF z{x$&d{z{}hNj9q&3nT`c97(v;9j&U8h3Avo3`u8aF9Q56%2{0c?j(pKP~u#}Lbg_5 z4QK)cD0Ytdv*us(eYHeCf8fs49gp~h?>g68aLOwKL3fm~=)s{B-PyFdV&V&R z94JppH|E=wKOw{gX<#0$KoiY`a^Mfh*+^Y}g}a1b39QWgh*V)^yDFPPI- zqjKceCS!88uSW2A#bCpm*?Fg0O?*@np=2LvbW7Px1pr4HLWBkw@@k`FHOrf0a%Qc| zRMG}{YxjByI18g*t}fq<6=qDfHE^kF2m0&MCaPK` zlG^(*xPNO25})*z$q?V7^)b8WaopUvzf6Mh{Ddf+H0z_Db2``jwQXr;k98|}XLA2C z@~JH@Xr!yIaq$+Nwe7G~IS5Q!MAcaYA&_#GGq2R5^FE)9Jt3Lh@&g6n6T1Opo@a+# zQGUXdpY5m2fWREH?sG4TMQw~aKcRTQ~}I^13(A)6mr z_$|5)(@`g9c?YrYMdi6YYuy)@#IrGpWUM*+$6=>vMwZRyF(}TVgRzY7D};BRB4IOO z_DZ+jZkIg`zlrML^T*RF-65E8is@mM%xtiZJaUUq9>S=abi%jKoV=DtDwL1omrM=U znVADmJss|B?FS{Aadf8G_4x53+*!rnxdzA>V6F@1V>NtG{7?61koDs6?G|I4diEyM zRVxk?VywAvaYc>h*Y~0rg(+5gmr=1NV>&_Zci2ekb6oj$cDdvlazRuy(mgPTrygg& zTTGX(S8XjW@dZ?s_W(ZY;u!-{#ym92SytQDiP|& zm#b`pUwH=BXL|Yr4)`?1B->Ro1-gVNfrp6=sN#uc55sxHTYZ{QyCeFW-q8nHQ-pTZ z>kkM3$XX^_FGKZnJ|liUMh#>?rCofUly^s_-^Teo0EkQP_?jZlZ_5=}A4x^1)2I&M zle-N6Q~1t51C6{OQffrslKtk&@G8*Njx8^1HL-1N%f<(2H|iQuC3m+;uxy^4$kZbt z_)pSEEM8BYd4|nd5Y)YJ2*IwO`h8-o@iV=MSf`#Zn2q)Uo+EOz(w(5c5Dr`dLOkY~ z978szLCG2kRjO*(?SiGNbzpR~V^AgLUKn^jfA}^`Cukp+BvF|8R=YY$d+vzfzPYsG zDm`5Rt-|#tf>i0KezyN4qh;4Z7@)Q;;Ndvvxh9qB2!b-y+Czs{;>OXCCpl!G6zayz zN7*SVgzG_hXi8D;?1jMBk{p|jiIoL(L4La^4sDo&yE(%dsN3W8DF|es8h(_9p8NU! z8(rxn4v8=I(V;1!SE81WKWMf>Agy(Z?TlGae#g_PYG`!MK8W#Em;F%Mh?4T0QRl;3 zyOct+mFnksjc~lt!M&;Z=>eFB7te4AavU9i)E5ZhZ>=~LE^-B42^55=zf3qKa#of> z5NgX@$0^Hr9CvvbS8SPQIxHS#`3$%Yz6GJW5dgLN&(^tb=?@*c#yIyAZ3@TnCG|sH z8VC~c4Q_*Q=CjhtVP)TCpj|F1?JDujcKthUgt-i5fH)D%Ps)5KP4RXAf?Y7LwDS=mbae=mv=F>kK1WuQgGxdPgx#ldg-ySnZi-y{k&`oyG zJQOFCl92?(E1>2iT@n}C_!w@|S~>>QT1s%Axmx(Egxk5#?kStP?8cSM%Qc*>`G@r7_E6=wf-d(QFR5CPaC(S`#zYKsOt1%>Sm>}gxx-cqy#DTM$FJ> z>uPoj+(R#hk$v3D?z1lvq5^uWq9z7lgsgb3JWA=V%H@Y^@GT z5Q&85;WcBW4w+U7Nto6K*YCc2Br)J$sGeMOa8+jbOZyG*f;Nm(sBJSv=MnnftvT1c ztz+|hmv@wt86G!7k2_f4_p-`9noIGs^{M(7Y;$%r?jt}IkjBAuLyD>Mcz=v->ND=m zOOP})4kxI#}Qp?Lv%9kGEc zsGi1>Gtc6gXNssHn;u=L_p!vlLcE@Vd5IXZVrVj7F zIRs#P0cv$oW0C>7HDL?G`t6mg;*z1RQLm?qpfF>eiwRuM5gU zX=#ru;9l(%-9AYm+zHdMN5fl(MZn@_wTN2+c_$y9OmDs=sjw2>MK|qS1TD$WFDhr` zk3KsOQ>u)&F*&)@VY1mutzTb}PCoU$P{o3K-%Mu~=mX(SU!0*bwtWNBxQ%g<@TM-Y(0ucX7xYB24T${gTW48_Pp_3Ik9DtXYFB5~nF9g&dBXY>2xFW58b z6bSwg2tlBjB4c)X3`+Z%xheY{CyXp+McmyIT}0?5GEMa^^+saZhbL~{0$%mTkADJK zxOUG6Df%;0%d@`8>>+~ST|8ROJP)o@Y>sK73(RHgHqGDU85$Dgbg8#DScjEsvL~eyF2THE!C6B-_bbw zi~@2p?brbPVR+DW13XC({_6DWgwFpKM?0u11~-U4k97bX$f%LUwYzz>qNgsJO#?6z z1(qx>Jj2BP3wN=|v~r%w+!5JzTj5khf~+{x$l>14T0RVLQb_)iHxB1HvYnKF{Sn;% zk;6F#;5SEmE6|B`;X^o(;mAJN&A4I@%}B4JjiWL@e&8g09qH|m_M{BGCWr$AZ{V#t z79J!#aw_rxf_@ZuoiT#7{C6f78K`VYL64Cy+Fh=Uf81{umo$uJqM4C;yYi9qh4IIy0pn%CD8q`~;W3 zBG>N~SayN48C?6Y|(nr)JkU+gXgvN+ir6?J+j642+}%WVO>=YJb-{;ILu! z4zrSGj$RNwl^Qmt9zlqZ%-Mvi+=}cS%U)4RB9$3wn%bq|e&ooHHWL?bYq=zpw(Rjk z=%SrZo{DMz=3`dnmP#Yahv}F6bl?m0bpLICKI0>NHci2$dOytoA6ONixqUV84~Z<@ z?55|=)`#{%W8otUsA|DSCCZm@1i_D5)D|y6ego?6*u6yweg_wf{CMXlw)kW zlW0@CRJ>^#{wXAU@9~fCB~PSKzQ98Ao{^Cb_U}-mukqTWE_eb6Jl4;FALJM8e?ajA zXp4{3{e78$n*nFDBz~BV%CkUB(phMrRntm2z-`TJJnfJPr%VCc+ZIYjVZefS$Gdwd&zQ@=e)}AGP4uRhp~+%qR*F5 zuRngA9n5}(3olltr8Mp5a$B)8PYe@s0Yo7D7;)5s1%H&_a`@Npy*}IsJrYUt_Xy8e zZ&o-k$Q~NBR~XX(4~OIuv{&g~FyE-8T+W6+He+2P>T;QFHBHy`X&ZO1iWEQuZ3y&_ z38*il>45x^Lf~3&4`Rj!tP>h@Q3m1El<`-)?<=#q8X z*mM)X8r_gvfZ%|G)5v7sg4n%xy=~lJ#I>n0B|15Q=QMVmi1L-r`F}-=gp{j~v%{N= z7uooVffY&WgK}pGRJcCkApJY!Wdg34Wxb2`43&jQ^ZAT$txemZ+PD;? zvG+)4ow~`>Fo{n?EQ)=Xs#F&9=m7BG7H~8Biaz!%fSG)5`Qd>Tl&2E4D48uRvt^IL zt4Gn`%^6G_JU463o03am9*@?$ztfijM1G0hNE_&$mx$lnN)Oe)Evbe}NbzKJhDFFK z-JBOH&$_ff?HdAePdy`md5`~YoNV?(=XXSE@DV?{O^(-`7||`&F9l~Dt*j0{6nIz* z&>Hu+`{u~rm#(wd(J}tAN{UnC)qYUwuglzd_`cjx?IpqBWiHS)Ya@1ff4N&fWNpBP zd`8)nnop3MWbPN*fDo&(Q+XJz`^=R0vXt&1E($8UaA#2J35>Kt;PJabyeC_?enX!# z`^4Bfa>4)G2r$}1hos*_bt!$=z?EYSRM~d{mok3(o28HeMz-AiP_y)Z+B;(9it0&S z8mb3gXDbBiQmV<>UR`bqv(UTrLmVK<%f*MHq-C%sCBHV||;? zbKD7}3g_cm`vamA!G^U^~dm1l2MaAfwH_P|62~xY=%0*pO2+&A>0P z%z;r*z-$}H%#QO)03vOLxN#tM9M{n{oo0C|c3wIj}i!f*%?Q-3UR;chN zZ~+;g0Ukex#?3FyguU;qmqzY%Jl^ATIoU2&2Dk0?bNiAaapbXM%p&_?`U8Z1*Qb(l zLv_9jG!#15=JpEe&%>hS7qblGA@f?b^^K`7gDcGtlxHW0!&DAZ*}9|iMdU1aGUtB5+<1eQz9G%4aAtlF#k0W0 z8T$96BAAF5gw~4I`C+T62!m?7v`9&}7~{x_oNbUY2zWo6L5yLoLA*UV6d-@$>=3y} zMI6TXdSo77Or3|ME2&TxBwV$v^|ElAT!Fs$KIVDEaE?L75fo@-WDPR{sCTqlS)cD~ z5`||*&B|AOGMPjBd}O3Q{BQ=%8<$rhzd$&4DCrTckEPK3J;fL?R223`kMf3Ax89j} z%9tb!FNVIrfu+4>CoxKAZ({H>{5;8Cn4*!-iKMgiPn=APH3v&Ep!IgRXbFJn^l8rN zkoi&DJvnO>X%Ch^(<*H*pBj^hDBMq+)CqHL;ZBaZNq6R~Gz?%gl+RPTz7E^*oUD(U zBdVR*@(unbAd4)_JfvgtKP2UBn0Ly|AbCMMmdYahJ)DyRBeh7$Mj@llA}^7@LIfbC zk_y9?cMp!ksBFVxi0j`fRGA$pzx>vaE?f((CP*ef%XJ(@HO{;JZ@TndI?zsLcmx4O zc)&9PNZL|(_9sZ-0I?1d`0u%62yW!`pX^IL#Cy%o&-|H2>g&l!@*_*1>mD3Cih(8V zp3%30@3(&rsimwYRd(>P=HJcW*vDXeq)KGMLTm#3U9gYS?KE}_S!7W`gW1(J{ivwKqut`K zyUHpyUAva%d>lL@CM9*B$*j~AIvW*x!TZQ#(b^N&p-{ncCXpY0DI&m+l zM~5N@hmbM2N5X8>kYaDP)Scm-zBkRCT$*P*1N~wS4K+lf0dlZ{l&hDzMX2qj|fI@{?!nd^@tD2_U1BjH264e;r zkJEt$hs=hY(A2M*n%403u%nPM)T%yUA?)<@2^AjU4i^bs^U2zEi6*d%hw}PsfxoZd zDMpRPE_8eM>j7zZ4T!WCgbPSQq-K~>r1u^zO6;AG>RC}UK%1hH2il$b)7*^!W)8VO z?d_34(6)-cE`t`*@sQhCMe3a*G)gMQtG(7CCwXK6v8xT;;gYCw@{|%24m4L9PJ3;Q z3;s%z-N5lW`d21#XH)#ntFGK5YVZM+-qrFGV5~dvsR6V2DQ2)|mxCJV0g?UHbGM>9 zaAme%u^(wigRduxQJWakIc{)O74eicj9Yu*Y&~kyb~tsZNX`e@6-Kv^d&iQJo`4Mf zoBMX+-J5!-Qj4XCaxc+%KE$C|= z1XuT~!XMqDMu=t*W(Qbrb83pHg=8+4+I@&ByyO0kjoZ&Gn5GF#sBxis?OG zW54??^&gJS7@%DJq=1VqXq$F2ta0f>E16}qa3R*yTTo@Ppr)VNT3!ywwvR4A6n=(p z<_bnEf#c%>h(`HUPl|PrOoC__{$6&2Jr(RO(Nb~WD|<`o6-aX!J^tPaMOt$C0*C6T zF*bmz;jpY_n>U-@1MarX7S_?Vm)C5t?-JMbRI5z|V}xtU#V>sk-D2L6WKRcO)3(8r zF;?C>H>tLp*S+1QPWX9f6@f7u+fgncZm1@X@@usPi=aVtM%-&O>N>pv%GuP0%YS;) z*7M?>bsIc&FHZQVOwsa|b&7LRC6Wo6lVlTRhTnkB_iP3@c9^ zMiF`$0>DSiH->&D#aTOT@R^+mpKziS#^u*0Y@LmndfPuftwlMRhgFc`jZCpSomM{E zM2uag6Q(wqT!0HZ%1tO3rqJQR`Jd6_MG5aLI$~BS3dr|#V1a0v!5M(fWGSCY-Up^D zOT$G_P-u;-eXDBj6`0S{O*I6wj|X&i(n{K{HkC>P)*wjerYZ2u?Pw}Hs4lNEl!pMT=>E?jXW!>gOX-C0z;52Se&&Z*pRzv-DNSw3SW0zy(eL6>QFAYrk4AD;%SZhb3BHd&UUi z?cxjk00w-}mQf^^Y>@U_qYr9d)Psn$v1QH0Z|wPLvS z20PuMIj5JDhh3Xio%IeudQRDQ+PgRra^J^rBqLBU@(|@zrKjDq=;ao{Tlik5w%PzW z6FeA>SwJKL?mh$^Gbk484s2t3^K|ugn3Bn<-N2}+W}-P`u?oSJs-A*Kg|OR}{4yVz zKVuc=Fwo?VbMqYHIwverw-)6Vr8}t)^EgNum)qp~R@#<@>=)=Jm(+J?uvQRXQ`y9Y z@jO#k!%n7%^{^Wee!8D2yI2BN#kWK`A2goc%rs=g3YvaavO&C*DJaNt*M7+xo}+Br zA8*lrMO3leDd6BhPR>pp7ubr6)mG3*p&g}^fas<4h*@CON4+NVo4!6`K#|AULr|AM zb?dcd@HDp6Mp5vQY`NFKlx)biq9Iat@uT7((tJ#)(y=ooU4&9FE+%u+3tFbGoBXtSY78`5nhBj;OudR_mF3* z@7k~auvO+#xS=UCBAGfAb0;b5{4U$>_?hY1lT~m(Q8BL$|1ZTD500k8n3-zK)eGNM~GvJv8CemF6OgcmGed?H+*mOtmF0p2`(HN1;I4gh<2ia7WG zh6cn=B=zD4??7qum&^EF_vP^wV09XVE@yY=!B}R4@B1VLw>n7Mtg-aR(IgIIyhX9; z1xpvbIbqCb1s1)sdI2Ir%cAD-B5GOV(7^S1F2q3z8$kI+8$6p#<+B~K&Xh&tmP7gT zOK9r{ROS?idhHi9n@l|bU}JY_&cmxW2%b2S>gojqhE)Kl6wB8Th6fBs4sOF2FlxZR z*wAv{gs=ddk-QDZmMtpRcd5R5PDMr0%sUM_QX98DQG9ax1u-VWmk2(t*>b(&zeaT6 zj;e;-@kw&u5~vB`x}O7LpT-7Nf6$xEMV#NCI<8tFfVj$a%BlN`T;XnWeYDfgRvC<5 zL);iuZAkQvpYJ?kD*kXFVdeijitn&@6-{n;EJSLUl!3 zr1o*U`DKm9qEksv6e?LIS5L5Fk+1eiffBDC(Z)+XZr%+NV(E1URE#d30w}yV+|h5Z zQ?)GzXs$ynX;M~X-)>%`sL*{UXOb3>RHPTG`BlWj6^v4iK`I@$S1DVllEcAV6+G5A*H+AY;qlOUI*(a#dZoF2;=Xg zuE7$?vah>NLk&Zr=9odpCb+%XmQLEo3MdXb6uqC|Z-CSLSd#)|AR@H;*WT?sY4Hw+ zQDIlVdU@}A!fQIate#J<6#CzBG729uYX0DdA=`~Ztg8qHi}g5H zT-}72StP3vI*kj4_i`uv^l%0F#1ZN0f;%>m<4NC&*p7WO<8sj0=dlp1OdWdVmsk#2A?~GJ7{;_Pt`C;l^*4m6y4LW{i)ZMD}jgVdI zf|r+UZ%&h^#w;g1w?v?QYFN7R?bf@9LQ|ucDEbaO7{&RJiz{~;25X$tm>|+w7+}~} z`qI-LchBetee*D~G@U_b7wD9uG*$}aI4vZ_0DThRwZ7}T(b-WFCi3A3(||Td#6i0-Rs7glj7;B zlCVQDkqm@(bIqG?=*hHr=1mM?-=z3%fF?|0qtK{9aVq!Ssk9kBkjT_quRUeG&$W-(*w1HA+41J@MY(>ypWi;!xqr7q>zKGsik z@A7L#s$CZCz5%WsrZ|pj)suAC=9|<=&Y=q|#bZms$$-tZgY#Mvf0#osc^?jiN*yyM zy~L6z$)H{naZ|9?MdKImC)A#_B@w`w!t74b7}b(DymJNT>3W^zg=?_LK=XPY8yH+( z3bqmGh}{ZtW#$>Eb>(mWq^)*>rGW1_=5vm}4nExeC?*F$zD{3QZDA@R<}^oF5MlbQ zR$yZy_HOhFg5B_I9W_muB6SkyjAZ=v-p6A>=56Mi`E86@0xj&C`5t!Xw+B|!6a+LB z;6=LUq2hB}^Dig;UZf7QG@Ce#i{X|%A0_Z~Prir6&>b<@)3fpdQE**r zdw2gdw6$XL4Y#xdrx%OjOI>?ak6C-#eP(T$%9a9}Sn?WYJ^mRGoE? zMQ;;ZV8Td+lPuV@(9K=nAd6@s;g7V`&CQl|&fDp6u_e*Kf`2Zm{de%{s&G+3Hn?Nz z0~ma-&rm_kyH+eHFtp#Yvf zmLCqcp)Eh6smUYazp0vvQe${S0Fs6optx!>XeRSm1*+98NxiI(#UYCqk8(AG>?*^& zH$dDyjo3_cn>sa9T;Cn{FU}G=-J}BbEe5^%Ptr3SO|jE+?|3dS>@Wd;S4o+B<1y0G z!bgK1-w=CCTwfCOdCgBk+w{?g@Jh%qO>(I@uzS%QRal*m(&RZBO9d4sLQy@4-Lr~L zoZ8iy7xxc}g?#$Ir;CB-T6 zy{dwS4~T_9s+SfZzWgwQCiCS_Ez_jZD@Y;6nk7(?3cGolF%tn5=n3PGc1EGZ`!lr? z%IbzQ&mcjdjsFZXE_Gk-xM4uT5~B#OK`>+ET&vjblx|As6)Z4+tkde}2VW z*sdZEN-X{oMQ_ZBmt9Edr0pBVR^bUoe2f~l+boOT*Nhdxk;SHDst}Xt8{l*5hC&QM z^#w?-x+&Ts^GYR&9f9*Ie!>v?7xq11?PV?v3J_}Sde?${*rmriZW( zOFOUQB)wQyt^nGp;?mja8H=7l{{9`85tfdv$ ze!H;8HUCkT#}lE_x6{KI-GK;|IWqIp->eNCtBN(lV*8mV85XSKo^YCrEiOj)?T zSD(!sLRc(|dh9sf9F2H(bv%;Wa9?Q9*I3pcM({Eu8<#l4VYZAkcw+9+knTaOSF~;=hXGf!WKQq%;6)drn^L43ca~+qoL~ z0>9f^ZxjT#0XykZWsTP!Q2 zB@HAindx)Jpw2+Y6nWf?@Tc0|`JVZd@i6-mtc=-Y$)o65L7$IP$bTVgoomKC3-R14 z#X&9mwbrZiuDJ6z!&kmCH0(@Qn74l8ALDAmd(=>J zH(2mf3)#~BIOw7%Rh_HjCo)G61>yCrW+i_=z;tRu#KEqg9$Hes|84osj#tM_Gq>~4 z3a5iQ z{pGgzZD#CXapS^ztOlwo&7>wqKUFV(7ML}`)SSQuDeTtMe)>Bt&E<&hn{YtY`)WbB z*KON%UV{Lk^IYh%o50SEI&%U4pDQ&(hBCfl?3rfk6j?rONcII1E_ZUSsbf;@mRsyy zt8e0WHt{xWw{{{0J7DP`Jop8Od4bRfuzCpF_4=&a+@)pL4e%Kard~^yZ+=!hb zi+j($iB9#1Me>)}G@Py@WcJF1j~TGN5(N;7BZjRD>QU; z$Gu>yG?h6=F1nq83vS)irUWnQ_DywRye@HDz?^+=K{!bor9{<_QO|<2wPfR48jFHz zZ79+Fxd26B}O{ ziysC{AFtwLwi)Qxb6wophfyYsLBTJnrx>1tV5-0K_e=iMDMJc|d-p0_zJc z;rq<~nKu+17p!SPx=LbDGVTMXLeZhl3PRX4=8 z#=33#&ogBK8A6!qGrXyN1|+fArhH_QC*FE%;*qW?J?wxGC)6${lLLtzJBs}lFskr2 z8T7wFP8u^ppZ{?yu)}9wEQ?wQ*tF}6i;-zl?+ByJyUN4WZu)(KRvtf zI=V|GD4 zjsyH4O3z_>R>2RdDe*GLx!7l2WVWr&uFz9wJ1#GG8XY~(9@=SpPPU_c$^X$Ty2IRV z8{MA14H^kpqV{W;ejY+*DGqf4rrzM60Tbg$R@7*k_^&oAW-*56pRmts({MxoxISv= zhuJ*^n2D<*R;pc{Bim(gnG>z!oKMMxXBndNJGUC@C>P1AcU(GN26lyA`^dry^)IZmrZ8stH@{rL)88&nvn2SDL*@s#y6UU>2PfpJ2U|3MDM zWc;>GS7xJYFIi6Zqr)#gP!wduwxJ0rDaxN~h%w@SOYY&n6Q)Jjh{lUUlpZ0fE8XfI zgK!zzNX-g^W|#*aC$z|i;h~wPikWLv5BP=fFP#}sr7~b0^FJIx#vX1`t6V`GvwxbZ zGrqdumKlmw^k%XlZ+;wM$l2jn^nnt;_BSV6ral1z>6zYTxzIm*vdJ=HFoaGOoy&_X53dB#AckS+_$LO;OVu_v|+d9CyJd|K^7+(^$p z0ixX#6$@F%&%Ckm$<5i*lVuq=2%08@K0b@5CYCOt4^*Gs(khkh>=Y7oE9SR(5JkN? z8n;C*xPaILV4oKssfhJX(@ZPhV4*SJX(!DSHZ)LbxLTA)Lt}!*{lONjU=?cJ{o@Q;}vI(x8-b%8)*C=aI)e!;@M-4+>iD2H1 z$)&Uh0}*OqPmqH&lEwnJ&CH`)?nmo>InSp=sLZifz*{3GJl=LQ7+XRI%7jRBw++0Q zKcZK)^W%3SUf@(Q>Y7KAIsca3`NK|$iKEIQJR)d3NAp=?w(Bynl@@J==f3Z;z{7fD zH#Q+d3DEx z+jero1zJ0J7Z3sXzOf=e8Nh|A2%y4(2Ba{_cS@vOPA$cBM!WApO!@YkJod6$z;>{L zkJz5WXsIgft28g+DH3z7 zvxc*0^-UC z6R`mH%W_6dp^YH}$MFcSwYAp@;j!9!9AO*t{Lx8dL{s6Oe=@j$$gT19sD~7uLW@pI zB9kcD;)~Y57|*1>YN|9O`A@FQ8XG%)^?C@~ra!8zvCx(D69DiXfB|%ChpYiZjau^p zoxpD$4P-b38C=L7P30l)Q0g@i8+30=uBIInis`3Z+WR4>rc^_A5zo^gSXf>D?*XhU zL0V$br)@jH9EFaNu&QPVekr}-`rOK9^hbl)!vAH3FU{T=7z~P%+BoT}9cAU3X_{B= z7X}L+QS-(oKW9PA9xA%LJ=L>|UM0zZkq0t9RM=p*9_hjqt}cQKdXH0t1wPqy<@shl zL@|~9i8soI{GW@M1FbEyGkq(-TK1-gEi&6F>Q*AVq1CfSs+-L%acP|+1Q*Y}r0zy0 zsV`)ru$>{)=U<}Q!5?X&Y_+&XZc5P~2N@@D7#(GH3qN@+91B+-bwz6}YFEry;@^wL zVeE`Fvq{;{O%P_&oJFA;X)=_9rWh$yp4Aq&0bjoV>+Qc)k>Q~=^({h=B5d@k;bpoDQLo(`I z<>gbI^`l1L#=n0Opl}{=PUf#!j#Fa!oq|_5kK^E1foW>t61$g3D>oH}4RWT<5RV5* z1Pj10r+@;NbUFxACk=y>zy->Z#u~5`y3V3pj?j=~_tP(af&cU5!Bl-+a9J!^kGa3% zV+$6Sx9>~3JG1eeAY2!K=P+sBtO0>nVJ=~2>%x_BwzShyX4#J%Cd@u>j^-BJrlDZo zFjhyZDP%G{T?R2%MdX4+`dNL7i4atG4lQXFtf$p>+6t&W`k%S^pgH z3nDJ!(#)vB`AH&yPA%+xCwukY!a7rRCxG+voS^}<0&<~#BPnuuRNo%EYbI3rUu;{2;=1R_(gH-BmV?fRt;vy6OX z%Q)Md1P#^X{y9H{ES`?q!Zy}iin|9U`^6?m5kCl>5+ZHhY8CaCRKk0P5JyB=7!Z2z z>h}XuY7uf5^^sK|NCgiWcMl6XJ1yuZo6%7&Z>b+AF1Zs$Jb4b){xc?JYNjO%N7-iv zGVmRWphXh>x}O{^Pk*sLPz&*WWLd#G{svkI9T?V4`UB)a%E_KZzKcrFgQNZC@UJT| zbdZHMlu~IO+ug2^IRyTSF~m_`{9En0kiIF5$oz1g{w}-zf1eP106b!vErccG zV74@NuZmvv6=T$N)kr1+YPc_i9xS&Ki}j$wFzY!*6QtxJEdghwgKbbr8BcuaNzu52 z-n3)pJjPor=SmDk2QF4|N%8(ur>Ju;U-B#qFRmktO*+7kt4p`{%O$6aE1UOKKTfN- zaCgvSkx4(9VI5I2@;7X4@8)2;DkPykPYxrC;vTzo03?yv$3CW@_~m1&GNUj3`h*njM)tCKKj*3u@v9mbUI2jHhNkzkmJVYSyK z-ZsX%iH1c*{c4h#C{@Q?4Lq35WW+LTI{i=*^Ddy^{!#DRG?w<-{xY*$R5%50!6`yzzDOfY5!)lAA}v=i(cNnHlKj=RZK zD|D;i6uPrPB=vi2k&OT2MN11KVKCqUd#`#O!2wJe z!oI<&K2Qh& zUAS_2Q8?ryR5wH9-|+W(hNf=b8`CwBVE>3ZTh;B8vetTCZ)`0>rm`(?-}84Pvg z_0}6n44w=bBJ$@LZ0J-&WiX9c-HL6OVc%iJ86&m}HGB{b}xZ*R^t8}q&t(f|DIus z%g*X*0o1(!Fig2{P4N+3NsqEj!_r#Sd_08ut==^W4@r zEZRpVKUme;%j1_Y1X8(Zx!>02*hdTVP~t_I-=b2ogd>(me}Fy@rwCA`T=&Dl)s0I2 zUuUF5)FkTTVL6YrkOw2b#)xlYf#Ag@l`jj}ueG{*KSM$x;40@~R#i+59>}cij0CXC zAl0{~E%MuXOHpm$KFQ-SATAY%;B3JEP4-|aYwiQSla(UJ^rjppKaJ-CV0@e*^Dz^Wa<#U;CbKCqVofN)NQvm-z0Kh0k1Bm>+ zDaLcTilS3*`;OWS3TWkDl(&9a&d+o-eg5}Go1-b55ZUa>Q^Zza63__PcF+iUd$f7v zf;J+u|Mj^mNX9CujB{q-vb?(5&EwvKfkbpEESB6Aiu{H56b5al0uZGPU}fuLTTDEN zf0RWP*129CDEkg(Kk2*QtVnh^$ak~~%H&B5b1qj?azh86#lF!ytczYZC+KP1tW%SX zMZ%N73~L*DtQf~uUovauENt;{9bi9GS5O?jSF4nvK}ZN+D%>w+D9CtCl5%Qs2*QEE z59=#o3^T|d|Fj6vM(xL6wis48`m!se0H|l3{~Z0VbMIVQ2pdxL;}N+qCScHZ)AZmP z3X?EwMCgL>sq4;;MSSRNC}k>|?&WEJTD2dBd8*Fqz<=ZXfKLbGr&BN+u|9CCR-Q5j zQ^tiwV;Cd~1_`s_V}dZegGB-+i&1Xq>eZ2JqV9oo^~Qooe|4?8T@GZKTICaRLXI(S ziNMF^I7N3mEY*kMp3(R_OZ%$+U!8pndHods1AfLTKr(dRk7xlAe2X4#QuvrW2R1 z^eVg1Q8)5$7%r354o%?ASHH`V;+=MnLvB~P17pG39RY9l2}sCBXJQ!6M+u3RNR++6jn`@H$_*JK{A1f> zQk1`u%o=&$X zO1%y;t6#izZleq>Xn9t8|9-Gg@9JQk8^DG|js`PWrnjFE6ob9ionuOQ7{V2Oji^_8 zH8FxRi)&1~iajc9Si8m|o#?=2&e&wj&hOjS;gpTil8sWGiT;~pg#0At!6a~#KHOUs z0BF`2UEm^u-aTOLV`;(&mE$XTWAFESqN|2@wh=mSKKcUCb`(%-YlZ3yi{=@V6V+_` zD91jyFFAK-1!p_t>v_xH?1sHpX^z37{NwoUaJ1Fa7|fFLAt%PRRLt-og7f|tWR{f* z#J@91ZDP3^=J|(Yg>D`^TX5fZJ!N9rO@7zLK(6lourCtbh_c$)u@ebw49iapggnBC zV38qC3c2OR#j}fqiB%kr5a!wj%~Delrnj`BOK97G2Kqk+nS zK@`Da#n~VEAdx-|#o@2VMZBsg+QCKgfQHx)K$-dBVd~XnPJ2znAAB<>%30iquT^Xg zB335@n~h5*$R{g>ptzuJOXUDtcM(q^MnxAE$m0>$`|a&5@SF4(n~$~Lg@mcu8v$>> z&KbAa6bAfRRr7QS^hJd{rhF%#5_~;smuM=f7_YX%;HM6Y$zK8Zttf_E%eGj!x7~vY z832wyz!jh?9xPy6#MUzOP$UGnBFDqRF>>&y^mQ1rGNk_&V56IZ$HrIp;5%r=731pbhFOYp4E%#-e^NKMdk39aQW<}q;xd`>yZr9Q z0NH621rLgboEV@6ICaAXRV&;nJumjB0ejJ<*83v3%Ykzc6YSemfc8G576Q`U*3r0> zxJ3o7uD}pIlq=G5u+Y0ih%u_PJOUNM#9rEV^Z_wDpQWXPrtfVcEp3=8Y8~STbMwoC za4WAW_j4HKDGNV4l1tk${fv5p95%^h_EvCQoeFD2rLqwTL0KIfkC3x+u9WH8?mzBd z#*yHk%2VzjoZ=w)>)NOM4e~Jx7A6)ZdD$zba(W>KNuC$BEted(KgGr7-RZoHd z0$vSZ{NWB!y>Y8K2R`P4U&Re=a%;}{ssX?T^Mj|zTCnR2S^KUI@?pzZa1|o-WSV*? zMy>orR}8+L+R4mtac1hIX=ayo!RLmMTZAJ43?jBM>{rT-Xs~8HH7$Qu@l(Elvo3xld@`{@ce0BH zU5n1zLBUH?QY%ExRk--sM{W?SZMqrs6rpp6>0gAB#ur3rW&FlYAF!|n zC!lvuwPbuCH{^8{|D9W?5Eg})ctQP_G5LcB8qxG56t6Vtfor5Uo%^_NDwNrCb(IXm^WX3luN+SCbAO?tSLU-W=U}x>vo(8IjB(xD)>86s+lJ%9zNk9*7rQ` zz%h`AhmNu<@12IVzOrFz>A(vUy1x9xcX((q6QOmT_l&M-tm8~Z6yU7S0upz7FWkGO z>Rzr;TO@<+UXcgB7J$Fl;0w!hJckxMgg8merlGOg;pJBNasTX<`yyefnx-5-i7;x; zOkZWSHFZ(UJL)1lAoUHzTx}o|w@Hu64Aj%2v_1FALp36x34- z&z4Mk!rK$5*lM1GNb<+M#%a#Umj@6^?7$I*!Y=T!ml9@)w2D-Y)lGoC8A)7#sNl2N zdPEHt#kj1Y&wmDVsN}B!+T#o%0+t|TKh8I6vv}|u2fe*-hsWTr@O!t~TwB44qYX0t z$Hn1QSIthMXj{v3qZ^bqFLueh_c(=ZbQ;#DFc2nuip8 zlbV0$-CHy_wgb$aWB&nDhleMH88~!m!8`0agOrVKXAb*j$~yiif}h_6E1OB{pfNi6 z!KhRcL)KRCjgK(6s?;fk3EC@R%4lCTZ7Ev7`=<;k7E%osyy286={U{8j$1}CeEg5)D) z%NY1s*ehtjnv<%-#SFNJurwc7CPZBBTg=QxIZ##SsLX2N(7@m=KcF`Dl6DBC2pCL> zqn%&50G;#Mr9QyCAI}utH_x42E@9YP2J}TTh584CFBs~|WVI`}1x?Z>Y4Z>wD+b%X zUP7JP8Z+7JnQv;6{D}_P{h%xBYBjXffADJ0=zNLPK)L&0pF32rPz20C*?r>z?5$ig z)>T+rx^42SD&?h5T^FzlJkO@-KH*KrrUv0}PXJ<+1VPK`xh>be#)KM;BTJS+w-}~o z)+H6e`*s9VyP+7R*~WDMF8u#yX()ftJIgNBMkE6}Q0=5XAX~N5d$`FgSF^Z?&&Cc7iq=Y{l_?7ikMidkag})oJQREbJ)rVcHW&EPkc1{z95#s6a|9DnCA?)S z5_E0Yar(2t8loLfNZT8D0h;s(`D${Jrggx9X;{jClr3$msJ?MTuS zK1r0PX5u>0778);c^#^(F@g58rQ&^2{-AY!&HKdHtd4tP+>-^~actU8^TODjFen}Y zM?Hu3WJ=l}F$m~r?B{x1SP*1mjn?gg`Uu}+w4oh)C!O>i0q6<=5J!`2gc6bN67spa zO*NcjkM>ADClx#KgD62gUM<*}e4o9PMDGb{py7A}=q2HBb>|Iq_}3@oU+_azgKQKE zT%}kazAe;iZx?`=OgO|0A*5j^uW%)^~D+CKW%TeYtXg zF15`{MURCN&IBFF$6LrMS^_{fo)2a(B&KXyzUy=u-oZ7$^7~BWW>Bi~`@g9MYjhv> z91&EzC2y-9WBm1zd*xvZ97nTJUGR6IvKI(C^xrCkF=5vXa5M_?WK}LI=C8L$eYD>L zE}C*K1a+JTkjjFZJDLMSHSP$X+2G3#Cn%}bTOp7RkMR>BsoaPR1K4V=$p0AX^iM?i zi=t}tawT%;;?df2I)i%L&$2uPEqkno>^SkdtQk)LmVm)^_(@TryyG^TqQYQeX6ih= z*?`e!un-IOLRQ5A_jA60Zm>XS`_ikl(8Q`u0iO0}$~mzHx?iyHH=d?Cm{YPxPr$R2 zS>wqff<4e!PXsYp>|h8{C%(gzUTUTswR>k$V@%>Ty) zKFeOvmzp761yNHFGCzo*dyu!48`c)qH1OLQH*;qDs$PHVG?y16J`{}6VZ@edjuUNi z{rk>S32v;AsIUG@1n@3*0fHTNDKgoa|A`3V(q-`k%>WdE*uj@pVrp<&0QAj_6&Piy zeIUROyCeet_qHHcg zO*KAa)Ozkxi3R)lI1x7(_ec98P74^PCQxvuO*ZJ&J3Db2!8yO{l0SO}?^ITx((Zr1 zvgc3D;`pj9z7m#Dlzr1QV8Ew%W-#GDb>x3zhVnTWBei<6Ne#8)2E6dB%t%ceiI(VB zY$TvO>huH3;n(t$*wmwgN=}iKx85F zJ>irZXBqxO061JT3kz`)4FV#6m57^}T}Xue+#`m*Tnmh1DVpn&=+}Lf?p_Bf(E?U# z&a&HQelCm~dsdv4!)RQDvfe>$Jiu3iawU{$%P`TRz<;_=Z-$xk5_~{mRP=*ZN(Goh z#0W;pkt^L0J_OrH4no6Baq=eEFri%tR(T~^;A@8eL2O-}W+(S#VRt1k{*ZxsOys@S zH$@WviYa7&LCJJ#K(RFXvKZT7@}-&)sY8&^?a5{Xm4DLqLE1EcZo~x0xY=Kw{=|>q; z%-*!D)-Dy^7TG02Wji`@ zCU`4i))5!e47m}fQg{}%d1p=rR3-^RF2?<%Ai)fH=~2fxR&WCO#qB?GQ6-YcQ}>&2TfZ{X;H%Dau}x@;?|Huu$6+gWMh6_WYp| zG~?*E^|?5IJ|bq2GO)<1M*I6Ki?57fMvt8m0a3Xy%o;` zNO9?cF@pL(KSKqb`Ms$X@TjNiJdcoofV&RpNF#Mh5{yQZ052SY8jK+j;5E7uj*hIl zU&PSTFXvayyz*DTYH(TBGjKxC?gpalGdaebVeZ$dr&CWu7(Q5j# z&w!HG1j0-d6D=*bUhS2&ZjfAYtoaw@R)?i_B;P7^@SSIUwWX`Ks4oGD6+ACzj*m0I zP6^1SXt&N6bm~*z;X}m`Ng6Aiyc7`|JOwqd4AaNF=sNLqTWCH1svkMwgBG0*t4viY zDc+-Icdrf!+eBQKHFrh|#9LZ|?xL$&Tt2sL>NzwpS7IxD=6Z=zI7j&^R=4XEt8B?h zAphkRqmB~17Ve)1VIN;$A~_PrBVl(GtEa@oXe`Obi|;*Vb-W>n&w`Ss;T3fW6!~}rt!6BiGyUhWGg6K$?)82RjDOe|1$OGaCm$&2 z!mOq3*}DmRl@c-FHtsoq?5RA4X4M@d2(djIgbso+@^sYn2}V;>a=&dJ!L}^u0BT-H zqjRYnzG?O}%B;k_8mbGRUH5vSQj0r#(9JiKhG$$bA7k^>A#K@c>5}s9^+BADtZ$@q z+RzX&W~hV!nUQyCt)k%I=h7v30rMbkRVf6E$yG9bAn;$qRJ7IA04m_QW;uRDl8 zZ#p}S9ZHBVEOTFsmomOiXvl%l6a+(GO^?{@-Y-nUuHORTM2mT!_c<`9$R-6nOjcy@VG4V(+kpl)I? zG;qNv<$1_;Sb-sjLR~V~XjE6wRoCm}ihg6Hg}Tul|m_1j5aIC#;XyY%*AI-ZH|X?%x<8)wp|WdOjcnJ z$7VtDV22?3lQMGoa%o{)Z~YSUn~W#PT;7%(ipM;YI`-gkVXp_}6JoA5WDxE4_N>%} zrkOJAd38bYEDT8?k)&nVC8(9XED3I&Mm+p*IBo6);_}EAM)=rL01H&P7{BguM>Ema zdk@g0ZyY~M4W;%%B^N5;NI#9hIa#Uj?$YPnG0A~g=#|iW?GLbTAFufsr$m$!CdNL5 zl1)HIyIMtJR8+@u@_1vFtzz~#p!x|7=!uV#DR1{1HrvNLx3<3T!yul_Wq57w8$I%x zA)TSAqB8%57WC${%OtX?S3Z(by5`(n7&vhRk)m{I6}5^% zyv){O646Y%-gCZ;ABwDKG$vkW)N=b#voHobom6T0Za|~$n#JL2B%;L(AF(KdjZSkC z%R-nfhc=`NopG5)CJ!d^$f7w~k`I+_D!-Y)PzxFx8-&Jir7LRBl&f+^xFWpy*7siLT+gUsHw{^ASl$6gYPSBgl)r>Q@Vn$iA;9}#Q!`>c z|FB;eWssYkM$5xK4B7K@rRdJx)Kg91SOC6LT#yt;lH<8whiu#a12@g7CeaG?b*%4o=}Hf+Vty86j!KH@=?bzd zN)D3VluPS<1JdC<%wMm5;GYd>kM?_dK=Ds(TrPhe?JU&){sBZIVNcKrSfq!bH-p+4 zJyB!&blG@GKbw^@>7Qq`+zkm7YWinF)nS#BQ{Rnap+%t9UrWR=HDcYgzA^fue-X@Q z_hNSooFoGU!M==zeB=!51OHn!g4sfvAYA%@$?7ZMmGh86RQTXvF?Bxg-i${PwDEqPMonJz40 zqutSSlqp_`dbT&3B-BJ~79Q9O4|h!%Px;Ne7x41I=dV|G_Hkxqa!UU$Xq_C#vzC&=DAbK> zNgt{NbCd;fZOLalcF!TE5$1|1eo;LI4C1}9q$l`ch?6el7rl zb|fSSWB?kKgLACQqS^`-D4rCtjV& z;0ip)u1kTfYMeL{DG7chnDfumq4P@{Ug`4cu7^YRbza>-Im*d?I{q~KZcgtW?0w8< zdT$WRu1`{7!;ytr{n-JX!S&0fmC4 zuyP-%M&!WFJPymk>B3O?-T?9PWG&sC*U>}jF=?BmB|zUTqx!Y(rL8>RQ$1s3K`lgt zj&N8-F41wZPZULiLEu#(b}V%g9Ny zvn}wiUIFE0uqmDT5`TgA-)gN!n=ZpqN)a!v(SuJ-Hi5VqNw<5qf4vIj*fn@w{cJW>xo+eSdsbg;>w!eW?;<5BE3#AG zCD?MxkSO&4RctUzlqllA!hv|(@Vo~_a2hC}$q-2W4K63^(IpR0nofYHCvYO5K|eBf z%rg%eaq;=$vjWT3V#;ZNZO#2PwT$YQQR4@n`&g0tP?M2iHa^KKJ{w9QwXH)G`lM(T zC}$gw7>zomTr+qiP?Dc->Z=3%wz#pFF97gK8KUX(&X3C~k7Ou&(=Us$MoQ_1j41t3 zW9h!7oKluyrJWJ|9g>sJ&fN(Dcyuc~H;Pp%P6i{F$+x8Sf9V?)-jfilOKopJc8qw2 zUdVAv=M6uyo56cHiV&8@dPCs`HOdP9Hax4gnZf%fV7j}>0L|U*^lX@Y24!@Y|IBw! zMJ}?#?~JOre)D%p<(^r&-cf==BmLODn$8^p`X|3w=U5B2MT%&T*A+Z+ZhTZgfc{$N zL-Yb-J=2JRLgbQlu)RjxV-zJZ3bAyG>7(x8#~SKR$(`Ou#~G=gd!i!qpDCmM8BtZz$N_ z^3*cKq^e8c^U2ejdlYFvoxM@C4OKBklZ+6I)bb*Q?QBk?@c#j%L-TfZNFF* z4vxS(Vq*a`^So%b8l&XUwBxIhgFR^vxMtaTT+_Mh!nd51zOR20I1n2|Qae+oM0w&a zMMl@SQm}TP!LrGvVdrby5B{o>mj=v_p{oZ>c>RxFbyZg`6_gn?$r}E)(XU5Yr63%= zEwtWui3GAEC-Cp<2cusZ0eZfaGT;8biD9`Ltlr{9knI+daUaRFI#G^eTo4Y%w!h>v4KyGkF%o3-JI4$d55hW2DIp zfFL0FzI^Kl31+y?Cw_5TQ@h^7N%ti?IejLZRw`Si}u(($_IOySlRvG`YCg+YpnZq!9 zw^=acfP5?U=h?v9xEP9Qn{@3_i7tV^2Z(n&_HRE$(a-^;CIg2MH_L*Af4LAxIXs7{ z4XE|(9&|pqiAhfC@Q%+>L z8&IC*YJk>#5B&Px8B~_PV>ZD7Rs+Mw!EH_}^9NRoMssmIuQgu74xJ^s%6b?RN@^jd zpX|$IA`)dZIRyS^Jkc3eoGUwz*^Y|bB??lHa^twdR>GrAIs`E`_R7+bZ_}QTKMZb2 zbBX6?(_;C`Giu4dZPghJ3^V3e_$4+JHFS^oiTG9bR^l2?F5vY$zB0wcj*Rbvwg|g zWDHWim!=|1X^}!bLVr`F|86OggQWjk}r~{_69{cfNSldkLiR z(u5mAcFT0x!`fuj0YJ1*YznglRt2PnV^eI-z^Df*2(|r8y~#<3daPK;o>9&)3Jl*$ zY9?#JY5stq^sTFIA3iluHcf$s{Sf4lIXU_k4a*wfOdqnAt+m=21-B-$EUHQF8DTH| zv_c5(GNjsO0$3H}t`t_4F)sy^ppl<&-e^ZvT4nz{gg$17p)@9gBD|FAGt-)glKZBx z-;2gAnNep5R3OpPC}dXHHDT%S~o9X>|#HuWCmT6|km9Qrf~{dc9h8 z`rS=G2hev8New}yD5=ch_aX8>yss$f>zUqOj61|jO7Z6@N6Y$kk0dPqnoOf2Vbt>a zQ5b%FK4DcJTy1nM%`$#MR#}UfIsuN|zkaSY5A-u4{zR<11)wN<$4_}GcyGUjXO@A- zMTbx^^PEDjQeh~!K*yooz#sKRE}Cafl=utv(mCM&P$S3@#pE1>@sREq;V|$M6@c+!oQ7G0JQZ@C`;i1YMm-WK*4qAk-3eyXEAt04 z`d`cyPXOPYfpNi0Lu&`M=w-I_2y#E*d(bv-ctmBC^Iqk}M4n>kUU+itOdly8fJnFWCg~$VG4^u>>UkJob6*&0 zwua08%>m$CAnIxFp23xegXKg4IhcfF+G)E!wVPFU7oO>@Zyh`#^0889CCRS@f+?n2uVC7^j{=_7RwHkQ;4?{9I9Qm} z88rUz$%KzY$4NsDLtX=PXZ0&-p7%7de;>IC9~_Wfoh7F{%AIaAJJ9=#_?q1`xK zhYXU0t(}&s-SGJ$reT5%w%!*S6@dB~wdPuOdYi~JBaZz36}DXp-%Wl)4a!>#d26dm z(2~;xE?KLz5qr-i>QD>z(}3g~T9vv&dXC&6kt#DMXei|D^~~*M$LB?r6?9M&`ye5A zPXo#j?8KyphN*0LGG2i+bLFJ&GsE1dwb99~(UFP->h~y$Ib~s@+CpU+m)PWSb7Bb+ zp}8Nj0_P7#F=tw(?S05izXO7wZZ%@6HY5+1+U3f6?l1h?fLLjC{1s|nB}Fz3KUL~%xsSx#c7{6YXASFftzTh z){GRJvf}wUz+)ydryBqDG$JJWEoYmthkaE1nyE9eCHWqEiF8`!AnWN~WT5UhOioXG zjVoXgT=_1Wf??~ZwJ!H=PLtyvpqNAZ{jWUZi7=sKdoq9fjb=6_KX(wXX&)o*hI_=T~?1!o%d9!7&KvT+K=naQ) z=sc`AAJBT=etR0dk=m~lAlL}5*QMh?P(%+GpJ_hC9N;(JF7=>JNQ*tBDr z7e<(8YmH~?UQT4&YYX~M{LrRhL=xCu_+MC3fMVtJ#2pC&=!7EdfHxg%swKfEnxH+d zRL``tkH+UzaZ$&7=YymbCQ~@)92vBRPq%^qaChCzsXFk-1VS}%v0ia0b&3v59(r_F z$nz_la#cIPr*WDlp$O-TFOX6VawJ?mwa-;0$4E6r%#YZ<`!B~ZZ7W^m8vu0XEu5MZ zlFM<~)YK#K&!&if^*iJ}5q!Q8-#NAjMwdw~p0soah&$nYuk?9KRBh3Au=soYd`-MV z{p~MGV@ttrpgkg(0(hjbl-$T&#)}92ptWQq(_Z+6W+o=A#^A~lfA>f%hRKHnL;|9> z7DC%57YGk1jtoY6ii}u`HU<5jVIN&Zb6A0>y_5D#B9D=ha{8?kRnEnu-if7KUAp5F zJOH)TUYj2)b0Dav(}tFMS=4UP4Pd&TreE9?Ik}reeAEa4P=c<9C)n*G$r=@dXhx!* zYp1;>xHi$lfOlGtw>!}qySQ-4Od(}?``Cd-CLz<4a9An*K3Kg0TCIC6ChB|VUd~0R zn#m@aL3rU!xg0~w=D^E@7m?4#Y(X_eT+kL<>Y8hD#)d9;X@MCy7&a?~JD#_Sjg#|# z$^7oF(=t^mN!fzG{oyREhsNeZej=kH@viBtVm~4o5}0MPKStiV57|(T&h&NAJ^tHI ze$lcFrfc7D{sZIdFP$65$#*CSo|7nh3m~TZ%d{BpBR)l(yhQ-gJvkW2)^r4vhs;PB zG#+i}FW~9ECA%ZP26K<_02CppiTIZ3Q_L-UY}SHuxGSqV8qvnUk$}yLp-xvV2>wf9 z^9Ly-ip;{6whU@w`iR#GLY0q}fs)t*y7s#LxF$uUMDRjX<|LQdTB>mjn8u({$PVd& zy%b}0JU-&{Tf8o6ZT4$lddcp~YLdXmA*2kHInNAtKf^jaUnl{KB4;tpWh+e}25&xt zc?&lf@nMKVNTw_2@OyzpT5D}dZAojloU$R_s`NN;69Nu2>-1B2>4$&?hWV{vwREBg zb(r2SwUvknfcK{vB5s4nU4^)9=K<7oMaoqO_=!6~_B1oS6QZc{UN*XprFy3FUM%_5 zxi{=<1qPnHW>z&?xo8~PT?%CTpH{SYs0JJxQFR^N4_y#xFB?2fbA7CR`9dWrc903a zHLe3uE*e>DdN5;M!`J&l@N$3~KbYeB$R-W*;>-{`lW3-g!)J%uY z)ra&QncMU;y%Pm=fsb6=TKsO{*Da&ZNI}^;dPG%2iPYvGfD70QZ{*Mca&gWyA~KC4OWr_QHh0+m zf?%}9un6r$UBai$)UE4_(;(RmzrafKyC)51qm;WCsJzOd-iC|fYnz62bZ(n-YGH)z zbLAUAb4M+2Ad1k%zu}Nowsqk!M(h{$BoD+vi*yKwoe<;Q^$9pqG*jo8Vv)m~l;|a?@T>3i^bC-fqF!-{Uqtuo!?Q;SX zk#>%OtPLNpdQ&r46Ui)+$lM*FC~ z_BJ%f@qNeQAevj8Tcr;;HfB37xP$gRAy@9fqgYXj92@MW=|FeBXGtG4kBIf%=qaGO zZ)x4^9pbRf)03}FEbJI^1+u=4C^Ra&bG9b&r0p68Z=!V!o~7a9YXOg4El^+Qyp!`` z1fpS>J@Dj}N3jgT2;+y|IIuO(YM8O`PZwRGm-`>SbpO%OFc5(rnp(MPEf+tIvgp?! z*MD#Xr!%V|-H5Peyplh$3~N}@uCqR1N+bSH?~(?=dbQe~FdOarQOH~`I@_Ff-%xG^ zIGNG-vwsZ^oHzsHq{926=zCi|-vsA~{&)GR!qwb9@>Ea-A=kL|74x1b;AirKqUI+^6$q@EXZg;;ms zV|%mzk0eKbAVB6>8ykaXF|n1*UoLGHr>a4(aPOuw^`^m&O+}nEke(OU9#J-~$V8i% z7D`%+H zyP|OBZg|@ZUfnY3L?3;;5$N2)LIy_N`FWW5d~0W^D|wItQU_$UXMj2-tFf^n}$5hi8s`wFkK<%)}cuhN}DMutqoQCV2PikY%6UnB;16(X7)|=l2 zZDXIp7u5sRilXEp&gyb@;U8tHjw7u8VIAwKi!TPxh4T@?dBk2)xO^ull|5H?D2WUusRhhS1PLykz!r#%sTkN3xNof~(yG1WBZ)rZ~}H4(9R(Nt5DsI9Bd zQ>fXgL^S{_bCI^6N9iUeX>+Rzxhw7~F*x_0g(kCTHeGLJa?gj@R!l72aM_TBn}yqD znKgZS=9^*z01hWdb7`qvU&Z2?@dU#EQ%Utc@3A?#CtT0drRK-P$NwU)J4W2g6R%#1 zwP#(YwW5X6`f#~^Jo=9x+4$D+j%*TIbYS>7tqjxM$g(w)f^1))0bmK0Ww+eoJsRp> zgiqNCj9KdL+id#LnafOYnaI_VH+b_jA%ATJ6Xk2FN-uz^4+Nui!(h&k+8#9e)%-v~ zwFI5Hh=3JDym5i5Zw-C26LjA?}Va57?}K%LZsmmOe6&l76cVc?72^C_Bb!G2mQiLJ1%{H+ojXJqNZFK7ypa;OZY za~bPLSDmsGAs_dJm$dWz-|Al9G*l?mR&SYd#7ag`mKwhMRL zTYX_*dLKqUANL0Mg9|}%gE*T78u*B=D}vH{CCse;S(IaY|I0^>Vz%j+i*QsHSCv8v z+OJOHv4XY|Gi{0Si>i`j1XbrK8pVInf2FKpzj!@(Ic8eQojL-oSY`f;^Vr#WUId~L z#JBJ*Pv|9FwFMRu3x#RK{DnO)NuB+Qx~>eG2A2}iHC;!{;|JaSoYNoc_>(*N7uPpu z0?E?YlJpQ3%e5A zpF}boN`8FhTrH9uN)&*-po!}Y?+06_ zNm5vBm$AbN2=$xbCIVg$yM(8v`;^RgtXS@iZ*R}40@s>Br26u#+IK%7v7zXb#QuW% zF;~-3GZt3r9{H203TBaj<8l+pr!9Tnq{f! zh5c0#8Vt-C=OgH*OLqcEDhB`&Wqsf4zs*ev`!elimdm3*B@|9<>9mEG?Rxm@v7WZT zjgF6xr&05vWaIw!+F#5}!2nzyE7it(Vuh7tW|y1C6M3rRx&X>+Qza&SMEddFZw~zV zN%akll?${p5Tta!Z8IjtFzKo#mxtH7IO8hkFKN@pk5xD+1h|?-i)YIP3LHvJ&bSHuWw1 zPF1ETXT!?v>N~RG?ot$6nKh`%EUkMAkW|s3amo#-;_t+wE7%CM9uD^iuV}EY2)Ail zr>Ndqpn`rj7!2RbL60;t_>5w#*g|OxaB@9tTbT(!GP>tdxsF-F0w~Xy+Y0IV&ko?r zeW4ZEe4W~1JEK;z3@V9F*?0ArUxg@v<2+ly*$jx&?!JyKd@6?ke6o10)e7uFS6U$a z>XM+vZT_>A@}QEAT~0~+7>&G$nI?ZlYv^NQ5h1OAVJT9X`DxvlsEwc&8_9=14mIjR zs^{suCJG@ah&DyM7AiW&;8A$;=_z$^XEF)mq9qLVit$?R;O>>KhSr=vgUL#tT9dQc z_@R=4Wn_R?LSC3ERX zAn6v4Ju2mLmK6!iGqUe3F9AG0mXOhq=fvJf7{+BC65>UJA}lBzSwbk}C3emjy}c-C z!h%EYKyTc(<~5|WcZhnxI+7IG77Zah^KnpGQ#_aSwCH^}h4134+@?tZ`J;pt5DCFj zcK!zN)WY`sW8#ZUhyTWNJrRbD2^$zwGqqq>JqQiy0QBoZ)71f8+Dn0lmrW?@MB8Tl z^(R5cxwlf+L<-Ff3s)aZDY;%4p5qvJtVZm~@j<$E|DhUQ57b#@oSUGH zlo~*Bx8@bMu@T@6v#w!6=3TO8Rv1b)7jNn0qx1U{F=Ea|T!z2SZnE%M{$IPEpf~^? zfPH;G?WrE&?0g@Sj%=bo5eVr#nG6La4+RycZ(=@Kds~B0@pNp#P|F7Gjc+?p zDU$tmg!rgME8)T$Mh&Hg0lK0RNp0D2%c66m!3)&>rWLAtn5ont?w_=m64dd3Q=-s+ zW%8Cl9WI$b=JQ^_n54jSHS?^}O#$mf@U>fB8kEiYtW5br6PIs-I9-`!tZTJ7mfCHk z2YjPs4NVtQ7_*tF8$RR2FWNO;?L2@QhMP1Fx(_`)>8ZfJc&2PH>zSj=r%2;I?h|5= zhF)!ZpGzAC0eD^e{)7taZccfT%Ri-jM&qyM(RSN3>~5qj^Kv`9)2h#y@OD9QWL()@ zGk)Pi0WI}Woq1a=QWCjO)PDPi_@R9UXsFc^q&;uj-#vPh5+e^;E9RpIDQFzExZZ_7 zErL6&;}Zc$zaDhI*pQ1aD4eI0WgEzt`&RYCiHQk04x)c&Pc)9A;3bT`3hF{4!p}d= z?J84S!z`AKB>?%H$j&I8@kPgR^0oC7qUVMS%#Q2@4%74BV*fiLk+|Pe=BTgjQC;Y-L6#)}>G#^TTr62VEjq^xA zAl#KG7Ujj96w{d%1elbWfFHDPBKUEDsOoVl^n70)@MlC46p4T+25TcrfmG6n9_%_p zOQx+O2Koq*zR9`g?=H^>&&MnAoW8w+W#I{)8 z=sZOKwp+VSSYNDLn?$v39LpV6(x>0X2`ds~TaL{DTT7a8|6HTLgrfh|2T+?IjN2 z=(BOo8OK#OCk8q=7paANaAofKS^&jxOulu{3^=c4IEm$=0j~yJ_R9uX69B23ezgl0 zW+;SPP5Bt~8~VjuK*JZ4+A-adz|Z!{si3A}Xmd8;DQ%9zd_ija@QC=_20}L{+I$_0 zYbUy!Q|`OH<%yhSyPcVn)9&0$|4O$M2EyDS;hL`UL2*Tw0Jg3G04e|Iq z1jH*UZkkD0r+;oEjJLhuyJG54Iu*pd@pJ8tHX6 z1&Qiuk_Dj&D3QY89gVWl)gorGe4FgyoVSuW6vnd`1kp+wL~oT9cK0=&(rMt!Hrff> z5~m^g$MBuO2VU*#|3DJ1p3pQ&hM1K)%{W*qUPh6_X-`0SR@qY!-SrhoL~;(DKq-#X z`+B)y=UG0OIi43Y3b3_J=p1KsAvQb#$~JzBc{1hf&1Bb_k@BD>y$b zZuA&3{GFk+iunIMg+ReiW_DDouLDP|azRwf8Vl)GS<(~_Un4jkphJr!r8=p?;&!CX z{wv$Lv4{X}!hqhL9lHPE!Vg6x-HB{0zs>{4(*Ea3d*igzRPH)mu?|)k;^dbl4vVYd zz*4f3)-+dKZTlb4Bkisppx!r=cf+<|6r<5@W+8o|h{ds9Y*S;w_v{9pX%BlzpNFCe z!7sSrSSLn22%=cDAMltw6;YEzqKFM4T@e)laH4j&mb&I#O;N(t7020-m5L%;y&r1u zX!UrM3xc9R`IL(9juR=HrH$E{mQ#_uIV82@;tcKrGEUZHOvceTdh1`*u`gW0jamUU zrQXZJBzF9|iNSZOkM36It#h-@dm!hig5yv#!Y|t6nrjAFXH;Iw>ZEsr@q}Ohow8`? z1c=p-TS%f<&n7t}(j&sq8$Rf$AaM$m+b}z8J%s*f`f0;;+z3GiIq3zwebC;@_OCB) z60{V4(o%IuRi6#Q6h-fFAbZI3>FNj?&2EOUvPo&!YGlPe1ySnVH)!40u*$;|lfjzk zp-JoKc2jv8@PoilnfrMY?8~Shep{-F0>^PmT#~)y!uyZ=0r{9T0bgbm1O!0( zP$V6oX>(<|F&g&v2GIun-t(qnYPuP~u~?F*C2Ng8hV9-!#u?KP`h4d9QlA1$YOvT% z)bAE2syGi|r$A<%DJn{w;sABfcrYfR@!UP`hPA`1b+pEd4wdd?Ii44Lh!|=vOf~AO z!P1I2XABQcM%ntp=+{@}{(AV9E)>%9|G=(|#Uf?X4~w-&qAs+7uYlmzms*r;t(QIu z+Fmg4Y{yZ|Z+J`8ypJa9h8rA3`%pRGEkxQgNmPYij5-SJ3{1AJU=IEU^>o1Ccphpb ze;sXM6>#U_ppyU{>Ww_vW!CM$PUaP3K5fqLhEq%Y_|3x#qfnOFW#H8=48W9T$g}j+ zyAH_77TkVBiocw8BAa~!dZ*`>qs6FD1yh+K+v z-B?GAR$%o>O&~~wcr1q-9NqqUvE*Jf#e9)vXvB)(l%k*{9v-gUWd5Cr^CZ8mH)k0= zMoD$~dg_er97up+nO7V}%dwe-A63TlnZ<&wjLH}N%1Yedivk3*f~rttPAk!5?*heA zO^{goJc2faV6B~8W9AEna6fjS8)lP>YwjmWaxj}f-kQijBOf+iECgxbGbWdd+kw2! zTdQ@A_ES=yL^-vZpEyI*6{yC;c2tyu4MeYe_@gLOLUY1Sw1p5RpD_V0n)iBzV_XJV z*AJow6*7^7EqP4czm(*Bp58VsBJujOp>tdi@61EU;a0tE1B;F~?7aC2 zilUeT!O&1Uk1hzgLbP-Q+Qs^Zt4vyY)dzSSC`is$yxf=5mR-ckq?1P3*k?&(7&Y?; zJWoX#JcX!kyb6|KWEw~oeX$smegSI*q&SM|*aVi3y7&%ZAY^&zjQE(MIb`V_ows!< za(j0~^UkC6nw_dfmZoz8cZ6mqCEGMMR!;N}#e&V3`qma15-U*W)g>H5EUj>g4GK@H zW2yG2;^7GNja?eJ&4a(r_aSj+w+d^M4Cb^CIZtkN>M!6A_2WXA<>baN$zD6TyGxso zq8N4J1Vp$O)j`hgr$o*7fuTHesB!>;KpA*Eq(#A2e$V}1EiaV(Aba2Yhv(pWq%5*W z_%?kOj$$@Y*W7ikunFW03(N(C;U7AZjWO@J@`6wM27c=sB}MZbZmbLgZN4#l)c>}d zQgd4MKx!E$Ux@I-A4JbB;pU^@73?{j<70-HDv~-dizAK(-~!VKZH!yD@kAcz-OMI6 ztZy{(;-bx< zbLe{2G}AW%nOw&y;f>H;V#5aK%dVfRUz3rfY8H*fU=iu13qpRit(OF7$a*1O@1l)q zXvWyA!($fGz<;Wt@2pbKOSWPHH~q-EJhA4S7PaOV$b4d&pHYP|RPMnpo1U&F$A1Xf zhpkaYF&iW{<>yB@^=7`i^?mGq8PHfZrB%AI?|K{(91(v1;P%}bOO36y@;By31xXrw z!Uq>{#WGYJ*Y3x(}pjv|LAj5fOy*mA@H6MhY{dRQ5+@ zUKr!!FI&};ddcYd~`7;noMLK|2!@Dgzv9$(wQwaFV0Cj*m@UuWe08LHf8 zo{$6Xx556PD(CJ5tEf(ykR%LueOU>h%@f}?)m!;{NHj&V;zCMOrKc~f{1(;7A|S_t zenB}{Hqe&xOt#%PRyrPL3nVL|s*Swrvs!CYF-A%P6|od6RLo=~aq@Fjo>_QNSDq27@G*Ys=5cteMDtBt|HD7?SSI(4PR1dLtceS%}Rs# z-2F=SeIU4$YnHuPkdr(D@X&MWn3wfwA-v?%ZhxRQ&sn0pr(Gbd^MA5lhBOyS(Eqi? zE?z1S<{^>-)Hh&^9~3pRg2kLaHs&_=JO8_zq^P4^=YcEU{f%Ah{AqR?MRN*E&a79 zK8@1YOuW=P9hn0Jfx;U2Dp8N~brEST?cJkvoSiJ3oC_DThFDrvhe93~=$um}t&Y}t4KFc2 z{o^&wYRj(LzaaEg>hdbdan@wycxoxbeCuxMd8->W#Jt1 zhXE(ps&y~Bli{cWjz8+@9+H#0e>Pk4J|nrj8rM@sv>ueT^YZd3P0^WnSH4|Fu}%=_5J4xfGPzs z;%G%$z#nqSMoLnxZrjKMcCqA~;dt+!v{G8ms$o79OUhmoiL*DBwmDR^B*DX}AzC;K zprklCsz<%jrk&EYoxs3iP5&@!QJZSX^W14+RaWz=MWmLojN^=G^oxgCKO0+Do>U&k zhz+fxZBDEPs<-1_tdE4Y+ez_v?E9>X2UQ(n-U9EkF{k|(7OR9yda2nVvtTNR@`iFo zS}~?6mND~;s9J7(%bOqokQYTEUH21}?O1R2{7++Z2i&cm*E+35mQ@Sb|2aaz&^xhW zr1YcIi1+{%94^hHozHZ6xL&8i_a)|r2V>y6-GA4>r;_ zfj0~#h0k+cQ>dq2G_CK$wD4*N6p)G`GIhT%o0I65fdxA)MI*}bSsDGmR?czE8 z8&nJ3b)VvT>vEcpF6rc)p}<|PFE$usmabOb58idUYEqo6-9cAS?M$PZ;TP)fSyR-65qG z0Dp>cSaeEoNcd31Ov#aa?~FU#3FxLA*13u)*)eOVZKG`^kNrKwWa??Wh8p6y!LI?y zoE7F!2{2~93hq_5b86c3Y4g_LPENy29}7%RCiHGDaYRT)*DWkrAjY{_EbA&0Delj% z-fF2-6hHYbTeg$&vUsmOr=dKm!R>kLOXXwD-dY)I4BGaeEWU!xG5VtP z`(HoO8xB)@6R`GzCNdk|6iqP6KoxGCwmd- zz?{VhUmdLTspqgW=!IabKr2G^uLS*6gjx9*_m8NZ0*gJIWM1CF3u!7^&HI{(CG?U1 zj2=721q&%or z2So%`7MV}-R)ria8&P|6sm<4X7wZqR!8sVGSEU9f2mL}aHK$6dqR>zPIOv`aU^8=C zZpMT~ZuY~)M#6K1FIm&L6tNTeTnwR^QU(EoAqsZWY5*a?4^S~0QeN@z{=c zI_H6{-lDlCzt0aWZP%*iqZF?cg7^zlzvh{Qa8GMcR%s1qf9El(cT5`{U(OS-Hm0YD zCV1gtp!ot7D#_D7Vze|4K%;~aZC)-aS~xoX7&BzOL0r+nO0=S9xi%?#p%@xZ1@C>% z{H|upU|85*>;mk0x6S7<8qZEE;pdT)WT=8{=nCVKgZLT7hzan@M$uu;;N4n}cdFk! z(y+*cGiN-I7JO|(Bb-nFw~j>>#d7$6^CwX(bMcnKh|eu}E$dji`10yK zaD}hV&PuiXs*j!cGv^3>uS2o-wu$|eWHeAM?)R&)iVG2+&j+sKOt2B zy|gUWVHM4LxtvN!6`ga(=$@*(O^2M#cs0-W4C(Frmt&BrSmFD!$!`2aq5H|tuG`r& zQXM5O1+uH-{rv%N7}i|Qzgn6}Bu4nPBou#B2Ty_jUn?(vjdP5kF%d`Q_E~AS9yA^> zX*(Tb1vzL!mpk`^<<(=$`T5$2G2kg9lP^{6BizGd{jc5W6j>+zPd5#BrC&^sbD(sV z8a<(c`yX@$HUCr{-iVt>1#3YX>g5rSo{+Y|d;9lDLF7%sbld@6eW zc0)L4Bi`dxZ%YD<@+3Cnx#MD2N-3`SwPbj(+s=Rw7^-hi8h=gw0=A@?S zP-3&@*}dPk7W^@*zd6Sc#%rVg3cld$T5>SfF@=guym*~4Mhswd=|c3sz43~Dqx9L% zK`NTblxbu`H;A~2Js$7MKDMvWa5Lop~h`hNSGc4N}BI;xa3^ej}8{7K$UCY9s{O#E?k2gQ%C}W+yDH{Ng z%7ccf*`pH_Mui^>rUdC5A&T1&uv|*5(g=Xadt8oRnVXeC zJWQ=qpAxIw*o9&Xk^1K=?|PPQacY#&RP0ea+3@^mWtzu`?)~kTC8SN(JL@N=%_67S zx?w5E)TFW85$4#9@uR)3=vK8P#IRypM4@aQ6)uX_EDx|<0pG#hyo@`6_hti`Uh8aB z93(%Px|ImgrYnL$bm6ba*AXULP!;0NERO3bRWgcEfW0%y`Zw6*N(&RoQkqh0e;6u? z#i<#)gWB#oD)0D>p9vMh6)q)-pDn#cA!iEm)dKny8;68^3c_VlcLxYd&}ForRuzGlm)=2HUA;QWUdfQ(yEPeHR$uG)+WT84V|GH7I)(9XX*zvxf+vR&r*>E)Y@o5{k zct7N6Ss-k5rp^(%=JUnUP#Cx|BALtY2oS!PeQ?sEZZroPG*Rj7l8_oVQrPYTzT!s& z@pA=l-x&#e8Q+E+l8GpDdOji0JT-jiK3GG}`w0;pQuJcj= z#0gMB9=WU5L(Jbz@R{k2#V69hw*S%xxtAT1zZGdX{tQGGfm zv(ZYp=G9Z=mb^EXaCRG;$1wy&9f=w=uT#^oR*;s z+P~c+{LF5N{9(SqotFYz3tDEWnci@x>+!3SSHd{Lrcal?UovU}g2#d6)1=QK62kvUG%MwU_FJUxlo?oG~g_dP4z@%U?&%f8>j?|6z#HRKZ0h%I3mP~*UoM@d= z2;Nz0%4}m%X~?tI`OE+_>r1j!+@%zQ?8jn)aTS^>YE0$Et2uDdTXDPK5$dyu5U^X{hzJV`89oB$P&wky*;fr~M^Oz;$2wRym3EvA))m z0oJ!`81pq=n9I=OutUGAqcf7PCtXf7^lQ7Ez2&w9m2a@Ow~TYLpCA}BPs`&DC*@SiELG*W&n?*Pgp;7l zF+Kp{$Us#9oYlL(#`NjxONwUqL_clLC6^^s*!z6aSP(qFB4=a7GT>tTAqlkLF9p8+ z-+bceX+VtfRXT&Tv&OP?!;A%FS^K7$P_W>MxUb{Ux&k}c+5@Iz%od%4E8GAv?2)vWP1D%K2-yt+X@Sm z7$uXBU65SwSll`>tJuz;$51RG@Q!aSTpY+UT3W8=BX|^#8~v!=(6(GdDB@j}lnDkd zf05{RKuEwG2a`EU;dg;(Rn-L&v6M^d)2?V&=!jB(-Up^)pTshu znWMPe$rOG86wVI@^L=gDB@L&mysh&$LO2|2rulCDc55c}a}IKX=F6I9mCU$Kt@U*- zsb{xwG6{q5eR{QAOvM^-4xXqigzFs0v6&AG28HR*#*%!qFV7>SO9^5na}Y~ZjAxAh z;GfeE^V589Ac?kKPjXl1C(>Pr3q64%E`z?0_vKiPNO$0vR~i`Jc1+F=#$SRWAOktY zQN?5go`vCCia>Yn;2c}#AVmF8@|0H@C`8h>WgUz%xqjZl`bSo498GoMSZliiF*ns;Cjiui4dhAYiuu90JLT#=lbiP5mO0|uZxeZfKM zf6ptrq^=1bj~JdvXDR8Ce~oW-2$X$C6+dfVK%uwGXsl+-gpedmyknuG1Cx$5^FyyO z^0bL^W-D1HQHsql^hhT0 z1qm%$5e0~O^u}ga+Nb~KRY__CRw0;C^vtfOld*FDmsS3S@IKEg}ULct? zh0oTbUZunLP;U`=-ur-jA}~uGzkZBQ?9xz>D#0D#b5`F+#i~Ud?aOzbq!yNDVYNyU zU1E3Shzp&-f`@#-z!|~qLd_wxEZlW{C3yCateEDRwZ5ECeIVKP?$SLVoEIZ-XAGur z_9|5v}3-w z;9b4FTTHO#ui0RknY5>ehjnM9R?6V5(%_Vs4o@(`taSr-s+r^YF+x36qB+>|vgpxD zo~WwR+$e0bYsvXeg@v9B!O6)u1`TajNZtUh?=@0$q3mtYNN^&a4AJ!CCWJ) z_1c+IpNv+LNeolE3gcWG0^@fcV|qdnqyInlbqunV zzjaj1JmIh7oa)F7IwVz3t-`xhvgHx2TbY%CiYdT7DX5U1`efwOpF z{<|l;t6|3SpVMCs{5v@oHIc7P~@eFJw-g~ z1j313xV{`yO@R$}^Qay|1$0rSq&^890mkaq9ex`W-VX|aEY%0ISz)B4An^+t_t42< z-7H3$6;yX>3`eB5_=yS$jADeER5d{A5ohmE2MMaF{2G&2+Eu7CWQ9*N-Uf@Gt;P5~ zB0@=VoaX!OKWoNT7cPkn=#k70fr!vPv`{Jn%)x8DGb7bYmcFC?{-HWIpIgg3{=o>hk9m<&-? zBLi+nAMvqhwtHi%w&h3QYq2$~jP>4Q5UWvbClVhuewDjkP$6z|gMLjx*u)N!o>6nv z<)rOhY9L2{g+v-1e(aQ1N|6ujZ1-jnq0s=WtOV8Z|Ay$bQ(^)|D3-Z8rPaJUNnPMv zLMj;@qux_5P`lr=?>Rqo<&90af&pGUAQv&Bwuki-e<#%WJ~-tN zV}tAlLrbCXn+tiWU!8hqmB5A16+4}_xN!-QXNmD?jC5}Hl}-f|445&z26gg%>eOzN zDBuXX!0jN;XOr2Q+R8y12Ih$ArXzpJr>Knn9(7qM4CHrlmwn)aegfpJpY$YLB#r>y zaLM1}MO|y58#eI~Ge61WbI`+ZC}Hno3U}OWg}g__oSL&cX(fwPruqjO@hLd=$5?g~ zv>*SD12xMh0cd^7&}NMw=9H9XLp97>(e@!|leL zZ3y88>q1|k2gN514xD&2EbUEWi7;%{8Q=!*pu~&XTrV-x#7%-5ME{9L7TuML ziCPksSKRG2SLt>JnO8F(-0wPD>4YM7k4)f%VsPIbu8hBSnz)i`K@iPp+~x2!t5VJ0O_ z!PXD4#Z4%faV@lXDah$d<2?_r!*|Vq2EM)^ttDlu4&1b$T#*6c^G>V{CGk9fB ztH%b5?88kh$0KLice-RD;2OSW+jH12ICWKH=(vmU-|XEmt}rhd<@@;uR5fiv*3yt8 z@$j9%Bz~F&bcJO;3Dh1s7FdOK!>^?T?^ciP3psvwRbKkIVprqyf6RQYK~4btk-$x? z_;!R;hm9^9D}}VS6Z%{Tc(I~J@RI=xBe+`*ghoyyTTo#!`;$A-G!?z%N;qzGFRsstaXgra_ z;Qh{|PJ?(A(z}ARQUNkg?rm>Et1${AG9`A)U9eMAe_)8X(xuA#LS7s`tDI!O(m#mK zrvA4rwpO{*L*HyWJ3oz9wQl{aGJW}?f%?q4FhIQ2usfWqn4u@%Mc|T6()Am;)Phgs zAThLW{$VzMf0{gNM;~4D?4HivIkuA=qFLV^A%0X5%Wa%RFR14l)f_DqYBS2M#_$&k z5ut{a;D9k85A^KXFIh)?7lzNqcx}H~(c%$J2m+6ow+6Aqr-a=-SYb0GX z7PXcj8dU4WRwWGM(N|fTTh_rRYK)}PEwD+-=?Qp%pyXx1)Ripw(M;dZlZ~F!pD1CB zf#Rb!hcE_@Vh(`RQf~Lv8v*1gpq#h9ZhxjPyeBCinE#=3bC%4=@nZC=C)+wWD*m~6h}2Qfa{V7x}w zW*<01QJ67H`RC&6lOlk+)fTL8gb&3qfoFc_1AcF~Vhsqf_>s_}9S<{^7AnF7YN)ht za18n9o36t1#v7o2Hz4^=`rTJ^K&{px0Pf`~pj!>04xWhIK96$^s; zjKfk^J2Nmja3zf{hUQZ~tn*@zt$_q-uhzklOdI$%Nh&I{1Q$cH)?ZI=O|R0>BIZ8s zObevx-U|jsV*f#Q_F?cIfS%qWUj4^mSTf5snrS}dVcH{n?ESp7oIPnkHm4UEEH@1D zh}r!}$M`gZUGJ|rL;Q63k8^TWXKhaozmnWKxL@VRu5SC9aH8ni730h~tZFz(V|ZdS z&Z8F_KFDa6l#5E_e_p(R6BY5IrxIh+y{_aJIl}&!q1-^m+#)ZroG%F$PzHR(7%3v9_eH^sY1NbCk3l2Uln;Y^DP zjG4V@Zo$i=%ybU?Sv+tV&b)^oTkp#J)} zW07y)Qi0%M@VpnR@8guLXs31h7$!P7PGt`SRJrTC z`&+II6o8!~BX%D)y&~0b>FCqlK9b7Fe>NsWjmnv}jwgDwHDNNMpQ%*zZCdC6{6cY{ z*w9bJ$5~0;(W2%J3K>gnGBZ#B--x;v;0XC}a$$u_a0O$=HQ8(*>*X(G7xnDhE?13* z9^eT3U0sYS<~9Z{Y84ZPpQ(xgzFB_V9+K4;D_CSr7Z=gD05|A}7ZAOP_am&rB+N>L z=0oRxO?k1oz{x@}l~W5T#h1bcmnr48l*fngH`MU_&9B~N5otUalf;AAO4(I+CeSf( z(ucV3+wSp+=)*tF6+-YYJB)^riSp}>ey6R{?c{uJYLL5?S=d%hK{5f#V^cSqfXzmf z1bwO+OSFaOe1mNeEb*k;q}DVa$&yiG{*yMDVIw{eIiqD$s){pt_7{hU2dBylE5NGp z%C$ndb0j$?nGX-umss2)qR}tesop81KuBF`6Ozg=TC1I+j6uv{M(%L?!*^_Eb1zH> zl^1oKn3MN8iKF|iwCNvyy4@Ex21RR(c(-u)OPpe8RhMT{gN{aB#vPzp zaM=;GOcCUa?`1F3n90XYL90KGiE_Hll6 zD^q=0!?|2`_3iIH;F{BgYY#CjU%@ZU34VfR?%4dBHC4@2M9gFz{u z#k~;CAxPZVfkM<;47?bm4t8E^M(@(InitEdGDAAX*&|hyC&^|yyFBJG&*IQ!qnp=q zU?z-x%44l7aD2HJ0&HOuQu1w5^=6#U`4d+tPT2Pro zsttIIi?enIumy6+$YG2;;(Lj-C$kcey)k zyLQWXU-8zsrMx&MQ9#E7pk;$H7iA1D)xxO#8ys^y{C2?_TVbxx#XA6R6apk8bmL6< zgCj|6GB6(c{5NVqx6D5vo3_dX#JPlx6@;TgeiN2&h_Ey?4eNT7(oeF%k2t^rpqQ8O zZVUle$}@(I$Wn~RG!xi4%|ox;zFP8X-T?l<`Cv!vR1q(f{FEP zIxLn?WnWVb6K;HXP;yvC#UfCkJD_mR#p4ZV}&|@EpV9Zs(s-)6}NLR)j|87sWgtEz=3=UVaP4V^}g6 z9{=kE&xuklM6BEk6Og2-iHSf^|3b*Od4CfqZ%{#O(U0yi70FFnzZS6E{FM_%9UZTd zPa2$qie@`AbrvFvnXo?9Wa%Clu;;eu(83lxM>H4 zm%%0W>aNip%KD?xSi!kIL2=9D-zF!j>6{z@&$A>J&kq>%e%=R($=PgR21b2eveOcy z4yNkw;oezDyUtX%kJrTBZ(p}4IW6!@$^SOt0MwokoR&39rT!#!-IzGzw7%ltJeysk zbaP8pZSEB|b&r_qE_aANyI+aPEw%8iGx~zp{@VzznXA`hkEn-db9hQ4*E+X39-|Dl+7WY#W~27J!nA~m6h!rV%=o}(r^&gN<$*{y!kd(snSF4gd9dI+~sZ zl(4YsolA2Y%6@JBV^m?v2!^G;;*AWmSe)u4Qt$MkY>=XS(#5y-r0ga^duhlbXN`4=o>j+Vn z0i0P8q*w&7-(4hdc_YP*`LpKtUY-_DwDXo=M2t2!5Nf3sjvNb$5$c(S&T_Y?@2s{8 zR1CZSCo)&euF7}Vc@m%Rz{!WZYsxfCfrZo~^i-+s*qbL#O9blKe>XZc0)`iGPEPmL zg;y7dr9X16aufo@62;Pu(#HJJ8dfLLHFP;KEP1edWIW_3{eFmg#v8_5(3=;Vv{f{W z;tw(OIx#19cVdbd1%MvpJy3?iS4f4T#cH;LQK4fA{9`aOAiqDZ-?4Wb$e1M2rOHlu zF_;HL-fB5JXRieV&)sBiuk-)y7EqX<^h@kq`KK z48%!pH|q*lR&4bATo#m-^5|e@p>-3B%7te{$V%G#i0Wi9!hBN#dAG%?vd1|5r2xC( zq#m298E!%3bhz0_b<|sZhKNb&qx@QgcTYEvRi>m!GB4u;--lgBQoV%W-jrg8veU+v zDr&DXsDzbrvUS!NVuN)0!NYWp5I2^XV7#?~G1q3ONBq;(S2;jeqyq;!#^XceP^4R z3X?pE>Hn#OZ7CQA+X^_bzVK0?0-O!%wh8RWm-%51h+BSj;C$Q=facZ8L`NSz znKoS-z~4kazf(zqH@PSU$I6wk*Z_2OQaZU;X0LzIhPzs~tA7+izN-eCjiQ*vPQY*h z%`!l=w48hc#PA%Bh4OMxsnxbR{4~J7bw&w`!qE`KC{u2PtsEY`LJh$Jnyk?H9f>FL z81vYfDk;w+`~tLu>egkGUS%flz8TL7qq|O{TrK$edH-(u{K+bD)N~JM@{XHnzx3LT z%RENGbRvcnowr&mw7Qb;X1QJ7o%4{l`D@K!uvA74n%G2)_tZ9cBC1=-Zz8@s&ofJG zR^DY)EY!&Q4Y5*nowEp$p;Iqv{Id|~)~|gW2Pf*G6u{Q`lu=~hR?BX9VD%%eYVbGp zb-<)ygg8WOd`Orx`5PP+q#i0((1TTV|OOM-m-G8LFJsy0`Gv9aD%?NFbQKFY- zuYZxWwDG|1d!$E@HPZOf74|&GX+vfO>5J~ea6SdYhuZ}ESGCdz70b@~mK;^VN%PXS zI|Ty%0OT1(Mn8x6NWmt*e0Ei}GnsF7RPPnq2vH)@VSh@2dktnR5{mp}nN~Mio%~H$ zy>;?X1?_Q(k-?0_v;qNoGHim*OlVCCrc(BV=^FUl-x>)TN(XV={^sqChLe7X&}%=& zkpzHPNVk9Znr!1LMu|eAM!Gf|UpxHLPpH=Q{~`dxYg9$Ms=gDJo|uX9LajO4`Z72Bcp@hwV`} zD$qTNRGKyM;s5PB1{How{ZCoB|%uBtB2(gPpE{^GC zXLOvRiPps193e|-l1B^p>aKhC#1Zh501QrUjSQ!ilQ#p*Y;f`so8A-pO}TfESMf#v zr_%pIE3Dh81HN%#tE^z)%~yviCGdG81GWp(EL?c(dA0hP%to2mecJS`k!tQ%{5-#H zYK4nVL!p^ueeIy&ET|MGUe-U5K~;8Hh*ko@e-lziCF2_yXaX$4@EAF<9l3K%Fd?GjW8A9A>XT(G-s3 znI5f9g7>hEbc=5HBgjcs+HmG91aj*rU+mAns0KN*QBH*Emc z_AmCr-W&EknD{F=*d>54juZ;ZGwxX%pZVhhhJ?M`lUhTkZC;bR3*PwL{pHlJMCo-o2GIqy(d#PgkX9go=!5h zsqXL=$wkZILb+c<;a{b;6Z|h_D9n5bs){?TgkSZdegS&Ze<$dUwE|_z-GFQSU#Bt; zJRRMBx+d)uU5&CB%lD--;biLN;1#=WrQTV5z-D!w1Y^%Nub@Nd4T9(E*RL^a>~sfI z5xn1+Xw0nzJ~32Jfr4LL5*DhYQ(0T_-}i_OsYh3m)N))vgea;r>2l{llke5EHn+>l z5;EqqB|DulD1Sy>FP985b?fU%znZu{WjhgXViFr0AkWuf#+QF*BH^ zYNhkvClBS6Ik41&pNU?YyV(tIfY{elei^LJEO)Ot5;~5L5S7}IxP1X2TH^ssj?EpE z)VbX}II(?+CE5quRC0ifs|fh4TIE~fAy5e{%oyLjrwyKN!g0rx=&q)IIpJsd@`7?c zcg~O5pc{N~ALlO3?7sbIU$snC+uoCNhP`@}@0VMHf{*n3cYJ4=bY<0Hmjs+$u;|kD zaDnvg$M9Ee2)H7a7=x+R_H=Z#I?lD1*D{wcquuV0IRf&BN~AO}_03 z@=4AJc*)%RF}BC{&FPE;EC4xlOAznAx#6j=Wg(W*oYe?d*HZ_<0zHKa z^&0PIh%foX?nvNNA!PyR;$$Q6gkW!xwSDKM>Sia364z5^5ff1gswkE9ySTY9Ct;qV z@e=Qothw&)c(XSRR2JGuL+jK_TD%*btWBu7n9R6JEq~mc%P2FyGc8BJ9P0&Z7v!%Z zOoh*&vKQ9D!Ahn}9@1U4*W>uCUZ-e~uC@P2QrnkImj=Ke%;3G)#pBLHzcW&gFgr+q z5td1rcUb>ysM=J32k?ilQnL|iZL~h2- z*w{&fS7bYBl1Zz%^10NTAw176Q5z+ZszHZ(3`RwAEXATtue}Wa)UNC9q}7%qwh8G4 zdzP(0IM(t86P6oW!>@QNH3k(<4PTCVL#B;GQw-~Q<+)U7BI``Vs<3c3xP+Go2F<)1 zc|vEDLID3i0KmcDj~dCqBg-~ZVl#pLJSSb7v%CZv=HY`;LHOsPuaO91uohFuH_O$0 zVs7^c!y_TR0Cx4EP2+4L7`8+jI3M#pS{$}6g{bVOve7-|d&|KUV&QNC{5a$#HE1w6 zQ;T=jM^Y&mIL`(&+Ef*TZp=rcmTRXK=;>+K?(@O!SLA1k4^K@y3kk|g^P4%^hGW7q z1;I@7xJqs2UZ`7x-N$1dt$|{=^^_bCEZFf=I59mSc&nSO2effjs$u_T~h7*21xQ!@8g_Tat>fD+h*|GA3ZHy*a?_6GTTU4Ojj z9p$6@z^ER08FKJ?stP@T9fR~-tE8e{t@&h->U#WHw3uKyOQYCV%^v7Wl|gOoe0<|H z&A-L95EW~kvNjcQ0)J5u+K8u;AuUg4`M$GRlqzk!Z6mPNYF0-jTH6Vk-TV7w|Cg%yhb=Wp#PvE%I4p))JOrr%-Rk%w>ZH_%wSp zKD>%s$RCbpKhdzi&KzMwZbN>n0;MTP#&!B8>hlH!WuCZB{%;+FvrTdW5aGit7l=Zs zKXdk|?7V*tf7+QAYCv!pgI|8EQ*D{~WOWKJPPfn9=&So}5{@m-x4z;`loaixi~Jar z6~@~X*jk@k`s&*;Q6DVTeN35e0HV?g0#(Q`f8s2!Jzr+rc+FcV|p?<_IaA#M<@i(Aipui_hn`_AB!H5 zEbuCLI&xY!pi!Ekc(s=)-Ht2=t-P6j=lge$>J9Y4;DD( zJA%PVr$uldSy@3cRN0rf}j-?^e2bI zvFUSAm>MQ#2H}uUmV^sXg3`&BwstJIidMj~p7TA9c!se9X(04xTt05DKhMRRKDH}P z_Jx{*^BNzy%Y07jLq*e=(uZMt=?`+{TiHaLkVmx)#SX)L?c^_R`$R9EZ%*P*Ax{IG_-0WAuEg_p7Yhul_kJpbYDcE71vQPptFh{nZz|a(wM>3p?B^xdx9&fJxa|jA z$7`k7gYHd;yu9mc&&K<;+haa#a<1r2TxeUXoBUr^+&OTZOCxln+KZ#-LPxo*$x|ZO zk-^qFsI6qYMm*&kvCvhQQzUxlc7Ytb69Vl&qQBBUjCn9@_)mHhHp9Sq4K(S;6sZ`= zNl=Eu^G}X#IU-%C@8Q<0>McI zYFZv<_I#vB(#t(IK=F}IoOVb4+HHJsm_t}IUkU0UwiptU1@}PJTZ{08qw!WQKn;Oo z=M!sqgtm=uq*YS$21bEXT7~PpgvSw7%;^NxH%bbWw973V__co-5`+ba;H-}I0Y^F&(|ShzOA>KeIj2BE{L3f zj{Zy4u{I9`r9$Pr`AjHmHSw%LBEN0Bp{LoE;$;n|PM~iX5c-=J{vcA~gOyB=LuQe8 z;cg+XMaV>JsJnSj5I8M*eRp_{7cmH6N-GjC@wNYo&AlgW`lD^!_&^cwGrOHK*7;^w6Gc`{v@sv>eTa#BG;6ghw*me% zggK0y@;gjq)@TH(ylxY8y?m0y`n4Gi>Fya6Q~%KrT@XioDR0!`*ro{B&oH|={D-(_ zGLH#%$S8iE35kEXpa`}R*nCuWw3~1oz#;B=7)tU2m62|fVtD09g@TUA2eixOIVOGG zf4;U*^QX^q8N9)&KM}alat`#bpgXS9d=(43{#`h z>@)w&97m5idN|geo3}4WFj4FmEp=dmI5{5fmMgU&(sakO16xwLW;J)|4S^AHj5zq_ zVGnEA_R_DF&Uc33D+=)lgjtSU)p|(lzdy;RpIi$oh9MYUI%>i`z|b+&t8zD%Sn@qZ zz#i*C)**y=dYHM))27{8Vr>(45{68`z0MtT#$1u=)3LTpx1GsKnt|Df>?YtLx}iZj zu%s2;#+n9S+eX-FcX(EZW{v3a)i6?(_qIs9Ofa&N40lzG@08-NS!$C`4h4#u_9|d~ zxgdMt04tY~X$g5OQbld(7vMQBm=#;T0!E8^Jw`dr);43N_O0vQUi%t%UwbzOz*2%x zd~?*=Nhu&{R1f}E2&V`t&S1c7AS@r!Z84RPdj(JVyGglAn6RCQtN@4fIo{$SAy?n? zSLm7((9^FAV@eAVOQBK<&xI?kfB&}9XHbM8&Ezbbzo{_qBpq^i=<4tEU32|D4s`!T zwrI*ObSBdf&Em7HI_8!x`wNx{tpi~u*Yut%4^o0k-(^%l{+Qo@dX{ajx7Dh0$%cRR z#g_`~`G4jksYcUxq*sk=-r--bW6hH5ZO6S67%YjrNIw-IC@CO?0Sgw)0L~3LJN*z;35X~IP0c7d-W%LAZy!lf~pTjeblA`_>Sz3nJ$*J#M%6y z7iareY+SraP)PL=vx@<2;?8r-u{y&|WCSS^BR$Tg?qWD>PffYN9(V(81{nXW<(m`t zzwC2Q?+kG$t{7S8jX<7KIyNBOy5G8~MdvsNVVQ0q?<%q4>X%U~9FfPOVBk3Ns>lx(a^wr;p*< z@2fNt1Cx6mf*EQj&)aywd?B?qyr(YKz2c6<*9V&;oKa2J3)DLsToV)XP6 z)SNa{hyFB@GwjVJp4cx;y}y41VdD$C<(`rQQ7(E4jcEj&sg!k;T!{k2IXTp+r45S2 zlz<;)LB@V~l@8Jo;uqJVClIQB0{Ef$piUYc?|K|ay(i+5U7^L-Qc*d~ua z>4m@Zx@NzpigRVWS7|s1C#DC;(uy($#3nw*jF6t}9`xHT-0a1ARz<}m<5u#PS|8ML z>MxY^wKtuvT?lT$bFTNBNe>pRXte)$WAc|-YU4U*&}0;Xl8QHj{U;Zo#xMHQpxWTh z;w?pPbN&BnBGD@0Ph9MxL9`TrT-c1)(emVXRYZ3Qf8%Uk#B(6n&0FvPOu`{}-IAh9 z)bPBVCb}8R%pQmfrgA9@y=>g3F&t*Qu^Nb}DTHb zwIwPuT%%`85-^11`MMhKL21+A3N$;Boc8d4<@jgw9K3muws-Gv6|x8Xpiq#-_37)T zdG0$=Nl0U7xx4Y7UWg(Fb~?d)lc^_7M9;cO>yA*cz4yo(hNDQnwB}rFo<^Q*CXyx2 z%AqKrdCC;spxK2`qs4@^)ot$SeZzzai6a_)*i>?L{ccIRxKG)%3xfg8$b7@;-<1E3 zVBBJ7h`>26{_Ht<(RDQ^OsGfq6Ks1ChhG2a38O>wEebVS(k8C%y!v_c+G&MEeeB|Fl-DZW$zbT$A(x3`BI_NY?>F);tjccVl|*##j|i`*qP_WR=xnHZ?aPGp@pXB=5me0RPh)$f7$`8L~~7? z^K^NRJl0h-P1tUum$)#BkJ3_j!FlZEQzX9C@{^6)sh};KMr+mG#VRextF*hJv@3g; zc5P5Hm+Ni^@9>fm3Yol|`5b{UMzZFpXm(S&R2I>&H@ewPvO^{5JZW*H@85=!PGDmU z6@j}81eiowKeN&CEr^aDXKLvw5iw0U4tMh0z(ZK37$;?GizWS3qz-UYw}ygyY~AZG z$M^gqMl3m5@=Z9I{TvMBA{L0_?|03*jhT5!o#)ve{tN+q{6T3VAjtk*q-sI*|7pdY z%JUbbj0Fy7OJWy|k;mci8{$;U~kicw6 zboxI2A83JLgjXmimXY`#IQjER0+etn+2VU&pT0wLhaTw*5T<&2&Mp}C8j+ebP%*H$ zhW`RkP2J%ZLD*ioh|l`=>bNbO4LZn7fw^AOntPtIHx(I>I_h*$QKmwAbTqaXMr9k! z80Q<`7Oh4hEyRX1C>G`*NGrN#(573u@jFSEXg`X|)0{?rC4s7mLty(UsXJl~X4B{I zPTYO9{vwPn7Uf6uj+E{zwmU6Yvmvh4%&OUC{S>pq zvn5&5TIy^MLn%WZ^O<&ypWRWh*9Zi6Y|kx|zbUhEeh&3p`n8A|%(Rk~7bvZLW5d;D zVW6Y|H3fx?JbScPUIHYRs9Gi0N*`~$v;t0F7{19QYltqQ(A=p1*cy5GU;rG(V9D90 z;Z*OQZ%GfxpINb+?o&dZ*~g7o2T^6j0;NsxwOTIa2?e1=9>#`aQ7br>6X|Kke~6LK znNr;uej;;^1r$q0iAc^bzC87f==S=@lp~z`{%tx$9^5OizFwOK5|qCgp*aDmk$QTx z-dc!k^KOn<+|oQ!hqSli6|aqL`JFyCVi%bl6K2VSLeCY4*`j{$ByiADq_ggT@ipLJ z(ed4MgFbtYf-Cdvj8*RzA@3eCxg>jPee!DF_~@P+)=(O;W2E7otB!I1>qPjB4rw%I z85#Gm-T`nrPL=}n!zx5uCTOdAE6Fc_ny_#G^%+`r*`@{6b4i%1UH#4xf# z5$u5RuXPYjW^1aGOVk_s8fIa-&}LR*86FKDjFn0JS3aq#Rzk}Yq>kzE|8v-VAj$O* z8B{J^%O+TkLKi|_DiPp*C>$gnbju^RkCnMfb$tQy^^~C&gk?c9g@hvx=z>x=mx{I0 zhn>7PhSfhzZjCBM4Nu#eD&u&1<;ggz4Qn%J1}(U;=34rH;9#?~6yS}{a07NW49zI( zlZXEVtZVN`6GT@7@HB^3qak(2$B-w1mtoJ&t?q>WM$xb1zh4`D)ni>AA=p(_!D_X! zj5W<{_@XieM3#||>R6#KrUiR*7}Y!NH!^4aWSCNSx_8`$@p4S8-=zGfI_e*6Mj!~& zBD03KwmNMv5mWPG_YWvh*&qpE9HHFj`)jdSN^bflWCU0O-p)VfoF3u=Q!Sm8E&Otp zU#w4MI<@GiKDwqWQNa$@1k@tbLHJbla9rP*V#5otEyc(9j?ea?eM_OSD&!J=d-ZqC z1%RqvOZM4k;xB^a4EALH`!9;_UCU8Z#ApR12pvOfIu}}c8>nGI!1db4FghebQkSEsetf+qDtWe~SG4Wd$e zilak))>(w7Kk@t9Eh^usC*;HJEb*^Q;(=+ML1H_jASx50&A6z_Y#n+Zph_BQujg~# z(lk6%C}vR$AKT8GeB#a;GbG>OLJR>RQR*rjh*nK%vX=NRg`PdF;K+FkFdXjpY7vpu zw*Dq0ti4l2JT(bK$6F&9`-bT718mpkd^3U)%n&)Nn%9EEX4QBQ2}-9~OkZUy$M^5>~XT zO|-l!p0^2O!Qos%OG{uwy=L)VOV z3d5HeYdEidFV?YTnN>Kh$^|u4S$-C+E0aws3oR3WbYL4&CW`2bHQW@OH~qGDLQKur zflWPq%se`R|5-HODJzZXzgCxoO;up+_iR9vD)TcsD*nGZO$SHwt^e~MSIujAg5U@u zOGndATg@m96yeg#J1{C!7&z$xZFs{OqQv@8-OAFQi&WN<|iSn zz2zChlmj?=khVkB#M}hBF~;bZuyIXDUo2@A(@RZdJ95a1t5f_ouCRP?qU(`W8(>GD zF}VvbO{(2npOnzflD1nC|NF+cu;&b&zG)+pcn&VvyH%5I&L>uYso2LZG* zbhAnt9lml23`)EbG-cp32T93|b%u7Usw~Z|GA)&%OY8Y_w8u{Pfi(8@ zULfOQz4#ovjCkgRAW#Vat2qO=YLuGLBxw>>FXTtEVp!HHcg~z|YnMDAoHn+k5&|Mf z`6u54L(<3X$%7@~mtK?3vJ~|-_Xw+Nl+Ga+q1p27)EYX2*cH4hKmeAy)dBB1vHC=A z!6#)3I4)-&9tc!)x2P#SCI~lmUh-g@-T+%nW8`)`$Gy%DbX9Nfq29rKjzmYSl%I*z zKb-_jCl1~)g#$m$zVPYVgbP)`E0Z_D6GNsYmTlaP1ReR<4zG%ZjU%!^__`P>HOd=x zY$RIS^g~OkhJ3iQ(&AxVw}M7-GYa@ zwrr+&cR;OqNt@*Nz<5}v%h8nrgqttRGefN$WO>%-Ax;7+%L@@<=Npd3HCn9?OHT&O zGoL|W-Jx`X6ohptdLEBPD2^5+bu_2U1sUb^j9;3po%MVV_j%({9QU28B5Vj83(r3& z-czLCvHebgK|ZyVFegCKj%v|$>-nwZlm4d) zva2=-TiGxwo%w|h-Yw#!wA^0mMeo&M%{MapvameQd&7aaXgNXO(}gh`$W>EQds#05 ze>IRCHWHsIIE1CAn`qH<0}RN|T}?8ut`z=qo%6v0uQ#Sb-hN5+#(l6nN}gD;y4Wq$ zI_Grx=^xT0_k519(t*jF^!#!nYfMy&?Kz&u3r%TbiSpdyFe%HNIgAkC*no_hdu%v4 zI%iS^Kd8k51iRf&CtpPNEpOCeypMdowR1-mzb%8W=w*&=Xh0(u z+?MHTQo55n=M#765v5`VjEX4ghetAWh?%*)ssG|s@w4vuNBxl<=zs0xHoOe`j{`iFh&Wsw+a<PNx*C|Df2 z)&eVD{q#qtvy8H{7jE4*+<A~_iE+)@ahySQr;M9xkZ>mb&@*& zZp1}_U4Dd`pG`I9A~6tg3$~y%gJRW&;Y{45g)@V%rMn4T6=*@Z%JRy`hjJLonJv9z z0U230&oO{ys?Zhs9t)Te)ip78TTc3TZJkJYPTeq*orFT4M+@>Cc;g4=o7dh5Gd&Wd zx9vVs_t5nb;N6ryr%3joq+=V&G=fs`Wbt{pRky()hv!Ucv21Eo%zCxNG_G~J6^4D6 z+B=(y5ue=Uw~K{BqVY_2?XMV)ZCvkAff~lshk3j>ba-R8R9zp-U@Z{~IqJk^s-*n` zz_!#of5B#Vanr{ic^oZW8v;+GNCtw~vK(@-DJwXga4J-fEzr@q38CHqOIDC#JgL-9 zWsEUKoP5Cx644Yv`>p^tbUIt2Fi{g~Zxu|nc5X}uxR!!Z_(PnP8mx7<+Q=TB>2Io* z7f`Bn9ty^OHE$KlJ4J7Y>R509CW#07uCP(nNw(3z*B+Pz!{P_|!JxE2sp-~(HH^@+?jtZK*KWjHocw*pjyjUK-_i&tlt+;aODn49kab>_6tCq=BLAv|@d znwoR|97zCK9-9uC#8$JWQ%SNaowkYmIax&`%LCEYx}v@8Q?nEX`YJ1AyT zc8(a4`JBnfkvL?Y7`L86qr|jZuAWYzNysAiQ%m*_yA)8}&Gl z*S4$(EwP$!4Ndr%EFxX4#i=rdR5NwZ=NZBmV@`!AQ*>G;Ti*TT_U}Aiu4;8QjBouK zT?g*FU6mjt<|v7Y-xwdhEvG}gOjt{5@qPp^bT_3EwAvZ#u3^CD4hIG+BQ!;N?}3k~ z_aOWd5(0A>`)2RExhuxh^iA5EMLJbA_^M))T}-o`qs;d$`5`gxPsvQp7#W zUjCkaSiH0>%GwQjKyE7U!Od}eUzV-3Cy6+I&LWpKyv_-nz+}T8N{q|lR7JKh)VL7Z zkyT1=FfrRth(T!3HqWzxq&YOhqtO~1ZZM-CNDW)Z*Fkfkx*Gy*JK|GZcW*vGz5j7J z0{cMIbX5#*0-Ki2m}anuPTh7qq7hAT{S9VQhz<)zls3~4(Aqq9kSvR}glRK;L8*U| z4=NT-?&%sdmP=l63Vm6m+tN8F(>U*3Fg4@^jrK!Kh_A5|jTVg)0qsha<;6eG2HscO z_>w}J!>EyRRh4J3`?Ll!-NS&)=O^up4?)aoAiRYLna{Z1V5gFZT=$4_B$q3UOhhsO zFXuA)x}|2eMp{xv#3L6Ft?r70d>Y1$furcRh@u7sPy8ZJ`?HExevkL7oxz1(+`Hsh zhOl4D4t)IEfD~Xs^x_z$oAN@6>A`3?m8yXg+Ul&UQ)L7n*TAQq04J-xEBvo+6AEIN zmEEW5>(hLZrygQ#upbm;h}gfSA)^2a2Np?&TeAkHPN&Dk@zXQbSjFl8L-62CDiHwm zpnsGcICMtMeW@vBrefk|(k&+d-B+oS8tA;7ak3oq{o+F>wiIx98d80%VjZhF=XOB* z7yrkO1d)T!-enlx)s2U+A)TK`J>dxMBmt?L^)kN7Z5dcD^oZBOQM~BTt8*8Xh@3B}7h?GWB3$WRAP6zK)kq4Ik=)G3 z6;Q13xYG=J%X7??HJ=bgjazPxR}{*Sue10j(xF+yVO|$CDJRgMz14*G`_%3tK>#rV z$~7e42MTDkM~i8NSx>djShW-H0&T4UX9|CMwvwZE^pAgdjhW@RF7guFh*%S`|KoHK zu+=?S>zRA~ube7z=rjxELhwkc}HxMUJosoG$yB!-Em;1~ct>S?ts*fSoWiLdB@(<%2$S=hIi-%k(%|7ABp3oR_)GFeLbOi=khePnXV zXe~M|f@Yk?ka=L9x{__)Ws2aNB_OkymnD7bR^>3O_38`ou>?8>DH3dmy?Z61iZYsK zpK)$We6ZHjObmFT@Bbl}{r*cgaN58d$6x>YAl9hZcMUz@@ z*;hz~2{HhHXu}eGdRW+W^F(Fm6PA3<;U+ai_dlu$s_%Djfhz30Uwi0O2OSgb!;x2} zg-e5`I}epDnXt7e<@3RSixe%WK3}qdmp4E9}U?Iym^~|Ql7D|$EE+vH#%R=?x-L`%hReH{ z;@GHv44mMCr3)``-XXqFSZ-GYy#t+p1c}fA62&KG=Wzz36gkv`Qx+nsb~&b=Q{5p%wM9TU)6L!JDi0nJ3B#9$%^fvnG1l)l}paepI#x zVoSlS-Ni2(=pr2aLQ2GKayz0=-E2>$sEtmy(jb@$G=It0P(p-Jhu?KyJn|wAF6*T} zoqNWJ?*+Xg*#(p?NAwpY47}>R6u{})}c=TLd1du?zbK1$z8wg4&I4d zZcdviBfqzchcS*?sQ{&!cGOC3?2C5B15RxK2WZb9UKeyQypU-hNCMVy9A(LuYleF| z!L!fk%QsNjeGvEeSuf}Li1j8JBCTJhY}NtW7+P=f&=TgSSC!;BfQ$k^;BN&-6*kNFf@dT*Qd(y|hqv){{)*>T=}#4QYPs!`xey4lb=sOv zRJyU!QCqvneoVmKzQ}x`g3CDdG$0iRc^PKY++^Z|likv9q6qgZZjI?d4@m7)7NmdP z85(;ZUmgIQDaZMed_-Oj)~Q>e(t#3OM`5`DA}KM}>6W5gpc1L#VE(TTExWvOZ^vnM zhr+f#iJ&>yYq0JN#nB@xK7roOd#X7IDwQodzGC%mnT;NOO$DuM7b*)k=e|?<{vJSx zVUic5Bou%&BFRjlI@3-!%|zk<3k_f2SashC+5aM4={`%%^7%0=zt+6EhwL=*&#Ux_ zTNJxjFH0J$!;--}$yV!UNMoj2FId-$s(H3*X*IQFp0Vcyd{>741!At zFzN{nsXS8&b0FO$*XWw2eT(ltPQ3g|eytIHTts8OgEIKSg{Qt%=;4ViFUB4G)<7rv zESuE!{8l1|e2NDQvFBa;Z~Mh_IriAQH$dX`?MzFcz8n3QfL6MC<{v@Wq3KR8xx%f1 z=}WtUF;H+XltxS|L@1`%KJ8lH#c~YTOZYbE&kwD~OaxcPhflx7miFah3e8BqhR3`+ zfz4ig;d64~ao9owco)Je0&0e-0|MUPanYg?z*5CdPWVUz#!21U*FZu#xVK3_6(@sSu$zh5d}h zRfytj$els)z(~R}nvXPD@-{!$Ca}4Ezg^t`H;IU3ks3R#OPkvm^okCpsvnxg)A+GP zWARI)k7pGQW(1R1xHC@#mbY8+j@jAmJek2EiV!&j%m{z{oFsxhON8u1VeRCxFfaK~ z<-hOx2a1$U(G))0CdoMNZF2@9B`yep&jik6*=IrkWIFn3e7~jx)T-|?3r(vN00nl) zT(m-VJ0Nabb(4Z`_5~0$QchAOjrWbzK#$GGI>MzH z5U3?($#O?m&Gvq66)iWdSmzb@y|D>($=_xg{CK>Mf~8z>aZ~8M{GnU6GW{?g5PZ^x z^B0Ct-d>zBz<<>41=4MTW?<(w?w(0XPoYaex~+?U$Y&^ zEMCMm3B0Q5dYNLVss3VqsA!zqph=z5ZrYU`1WY%nWCx*LWM95nyR zsAK95V)UF~;R5%&86m=Jrm`CZ#+6Q!^&JRfEgq|UO-->$kUNS$E1Hg+oY zs49lp@1|~@7ZKaXDSAqhr%#UUzD|L8GJ&cZ{+I@XGN@XGiRRm@_rSYp*H@-IuQqcH z;ttY(?*0b>TVpJhf}B3fM|ND)NQr=xE_2PO#cAIF0puTa%4f;kV*o45r=8kw?dC&2tR?kF1Q#s-KlPjPFrI7l)^&X=Qp`ZpV}Mr!>bW{jNP&Lipfy z`CFE%k>_c;UKk*K&Oy^kuVFdHA3BB)V-iJ4BqCei#RBH#3bEj_f^kiT3f@sAs}2C3 zbzo8d1;!&reOr|W&>#e7snsM}8PRxm<4?AZdD*G9$~COwH1YR3ozxQ>?3T>!T%*4) z{3Zn5xoM$h64Kfy^Ieyi4*jx&9^tezAimQFr0kmSGJV{xPpRMGyE z*2D<5;ZP*6+M=c=Y*>O{oOHhs9@q{WuK#u_HCZUn;*~UZdVJfm_S!6J{6zgNY%)nI ztDJj)B8!(w-q8OgB{8&4Xn5V9@;6FAZj!ah{0?T&r@n2;?5V_i&n$q)@k^^J;9gyO z9mb@zPA;G&omX>Ib5Zi?C~&tkTV7nPL`$RHaEHYRzXb@6UucisxsKyzjt&j4LgExD z3^}wPwqw&AJ{O(j&^AZpqt%{fm^6og?I+XH)ViRNpt?j^c}y(5^qr_$d&u zcbsjRxnu=dpNyQ*KUak|P;FToEX7zWSjqA_My08+fyl}rCkVehn;$f|q{njfJox;s zB&wLKO%Y_|tE;|?sLD21bh`1DWY3gB%FCG-61m!h*Gw6{-{ty-Bnf&nhzY3d>QY2i zm>PAh3QdnzIG)IzZMCm5mr}s$@hfKk=SNpb+M8}9)TZ(+^r`IOFCk_8z9smjD)n+N z;qAM&JOQ45?PuayuvZw|p>y9cYbwM5y?b{s7;apENTA<#LjD>~ko6>9D_VUiLoRg2 z3M;F=M6MgC9|SFHlqHB z>j!^LM(ki2xH-qUdgkTDr-qlp*YU{p;&53yq*Vu%Mq@mf516Ctf^&KL9Dp3smqR8V{wM@G9e`#6^2-=xPcv6do~3A1EWqcjmETmlR(S~9p_!^g*fqDjqo@k{mYJ_r zA)l6`Cwz1kN~x=f1j4a45v&zUbY(zv;EMpc!#TO6z1b>T#xb0Ibu*d|bTUBKVXfYN z_qJ0IRmo=^`x~j4DRP`pn!lAi78!#}5w~Sye>74eYAuZ(P>ImB&i^cNZ-vaf7yosQ z+y3Mex?qmtv3CELuSCzDK*`_Z)Oydu@j{rv$ zF)qv@WWAA5n-x)e@Q}}yG9l39AVO7v4~q|44b|&oAQH4B4_ZHhFlL4kUcl6jao74DFvE>%7$Z`0`*(~dkJn#ka0GUacmdty03TJ+Y|l&+L^!Z6 z8aEhPMG0~jtALhT*MSDg)OO6gj`D?MAu4_F1M&-9#4U%F$b+xPr^bdY4b{4C0Ew5= z{u8oQ3*5OE@GYERHRSkTbqLn7zEF&iT_U4>pO9P{p8w-c_HkugU^NRgFpe!2?w^3Q zR#)QCO3w@r{py~WI{Di2tf=M+pkOc*Ke-&hi;hda;6wvT4IhR7moFx~(j+H>kGsk@ zzKK|0-(Zn-UR{tk--U2}apDRCVoaCZS%)rs_6zv9+XAkKNR>4kYkB|BjO5R*gvj-R zMKqQ#p{;%8ibb6S%>!^ID&u!@R4-0MQv~))TRZ9XbbZhmrpgSLWvVU%y-kKztPuI- zJdz3zD~mFe@eETMwBwL zQ^3BmDT}RcFhf#l>an06?dA<1QB3o{j=lcCFN#JD0 zcFTtd%2xTBj7{0!N*9nWQmU;5UVr2?&dD6jmswz1lgf^O87~%tBn3@gQQyn)7Qcbv z>Ybtp^O%RgL4LG1NQYsCio9Ijb<2sH@G#hVYYY%=bgHts zh-lU~rX!5K1vG2?&`x!7iUU3xz4zIgeITyhfs3u8+E1M8F`DPTz8}7ooRqV z$U&$KeskOMZ=S_{ebv-?9kX4-aLn1A{4XNV`Y-Edds5$x@vbNOp5Q)AmH)G0XmG!) zybnj#U;!ewp=^W})X5d^_O)-INYrYKa5pshw+b6^4#Ok%X%29ktKL(56%#U9h+c3b z6C2BHHJtM>dFOUmQ8u7ISZga(=dP^=ui5<4aJP1ph=XY5@qD1AYB zVihe8Kuv``br2^z3hkU8|3y!hglF~K@M=0R=bC#(hPg2NdpW#YK#=$mvAMczK}MyY zQ;?lEcbzSVdf=9`E~F%q)(mDfyKr8*!za6ug7}D^Zd!SOoQ9umt%2~d@D+`V06G#aKjvO>&7d? z#+5p2n2jF)7KM=MgsYA)z`of%vg7*aFNv9D!Iw9|jqqoTJ{8X;RB2ex<3Cp_@Fm3V z=hU3Vr4+mmgnu%(dRY-Sw9pKdx%u+4Fh9G#nY%NR#^k?&0!Je(Cm+Vf?8N5N<<|F=^>twmk`=<#mlv+b)3^*0&=EbunBc6xB+G4qwcPTU6OI&?C`R-jt zb~bK1*ae^Lw?F<+r5kccjSFXKxJ^nXqoucNEGG=!;h!fHO}Ym5f##B>fFiLO{R`^m zU++-uj}x?w%NK>?6-kkhTzEvQ83whV;=aUIbM&-qS$}Rahu#k z-0)fr)emg9w&q_^K$O!6E>xvg)K|nOyogT{Y^NhI9N9r#cWS)4l z>zrSSK)@ed5%`{nGx;pb%T%>^QR8+&J7ij#w(E)1ev}CX+P}EhE6yTt!+Xq^egv~c zh<5^duroy6H0*%*&yR(_ntiIAgQ76XgR)$#^`L>hnPql2i!uPEX>IO2G@<7KJ)W62 zn(B#Xca+(Qu2nS~qA-ufKt_Y?hKo_hThm(IT4A5S_?HnFW+6|NcQJN8{^_9CtT0~D ze&0E_DZnwQiPZgDY6+HS>qyl=QBvNqc{692i_$2J*7dkxE{L2npYIG+hn~^{?P?J# z0XwJ>=&u97-@h)3W!EPQ%L{E0 zi=hHTlTyU+Wq9PoMR_reyp2H34ID}Kg@EhlFpMvxVqH;yT(3Ok$jsn;|st4q{M*2AnJc!B+IgrO{M;N|j~6HS${9t}Vl%WE0!ZANB= z@u1<&Lxu`GguoiL@K5G-YX!*8xPSdLZ?&oP?y|Z^XSP2T8Z(QI1^sLUjvdfMX=D4Vg5Qs6{}_X9Z^ z&QlN)&HIBAcszJ3n*W-c|MrGDR`-(ELoHf2+&z4524se$eMPjki`-JWhjMwr^Zn?O0yp}aSb&LD^X&`vEclz0e9A~YhgZm& ztY4VJ_i#+nNClIxITyk&=R-a~io%HGZiA%KhPW-DC6ak}< zZk^IOl-(*K@A30<_Eq!6=j?q6E^t3kqUmNj6uM19*bA*#1Y4qGj=cyg&5!KjLmTYu za0am(lU(dNjV}5R$cnAMA@(xU){60*46`5WGVvd8b&I&toyoUXBw*y9f51ElXn%VwlE6F8D8 zw(dT!XOJC8po_)~aN(LjM+AEVahVBY59#8}yp1FI65yu|-cWK9wI*Q~ z*!#5aq`y-gl2vssVHg z8s>&(eRE_}1k)@knCTvqmU+(V@o$;J=XT-6eU+K~NiQ%By+C1RiNUd;Dn8ko3hyu_ zOwL9w@_%A5AMTyAi{k1+;kmptDPW3PR2ro^&&XfMAv0je-RveZ zoD3RB+Ln<%$7?>sF1Bq$)ak@k>IbDI^zpA@B7U7;-XSQpuVc#*a|ED39H!^XRh=iK zn22~~ITG3y#D6sFTv^`8>xds`qx2~Lq=?t^!9XN7)5*uUCehmO=@Hbww1_NEV>ojN z;_5C;fktdhqRV2y>yTx+DXV+!6IOBV6%JJe^~{yF85zO)8(z+4cK^Sx4Hsp>1e=C* z*S4=#54MGzg8UJt@LdL}0(tCrdIpjZucvfhj_$aTPiRGSb>2`2N?y}0UO!kWrw{8b zXz4n@S*Q)qr)&b3jkQB}<$X1|E&9DNa<^57;^8mY&uV8m$o5+U%{P+M@p&R_PetiK zkY|5@u$006U_+NuP#7l@gEHf> zYT)SKp*A(Q!}X$>Q6HxQ&G8jPVYB1~w3)##Rh?fwfA+n@@wZ6kLjwGRNES09jj}#z z+VA69!Rz&(?-ipXM8MIR)6~37W<;Pp;vpa)IUl8&2Z=IBe951M%I?-p^UcSuHq?4r z`u_MWvITA#-;cE1of!lcN-;3q`xkP-zD+(A={VvY9pGysL)t-i$*^9(=~7XMg1u zLn3|gtC!0#P>f>k6^F^Lgk^ImUQnr*s_BYdh@QDKFc?TAP z%=dETfgX`_Cl2ff0GsMNJ9vHb;bXyoI0@zO zMtpzi_ycte_zI7wvf-zQv{q$~g3$@0tMID`_o6a~8@2hKIIcoh1e(SBv*8C=G>aVI zC}Jvm-K~X-U$N23U>DmQ^p9!E@OoxxS_(ByANJ-!oAZiCcV=?R+d__OFqWub$s?jD zzjj2^T! z(*sq@ehqG1jhG)>u5o;|p;?*uL4VHUCzP>G{{GTjGU^j67>qz#PgU}HKmj*FtqzNP z#18`qfKvA~7lz2#Q zo0NyHXtAM;B{_vm97uRC%QE5%8=TB)i*D7!=)(hjp+q5)U7Qyp+sfRQ zdUw2-ai4&iu=cNFv#i(oP>6LG`iohQPpUv2ua)Lgy4vMQq%c=bD|LB960!8CDQ1Hf z5}R@A+n+&sJnWja* zT&m=^E3AAu?x;Or!D3X-*Z4=+^IyuN!C~cfiPTM4!Y9|FRqV$5EM24zoxc3K|H@*kz>ik++uKtXD$%6wSg9O??u2 zicFwX7*Z-lQ%BC|1I0)hmyS)^6RDr~l5a?JeURg!b(!>>Sk0F&fX>aESKZxS2NV_J z+%OXDq1<*-$H(>2gZ1wey#qH!Oo}T(77&PbUO09A#Qhx%M84ck++P+)x%${`UUcF0 zOwl^9+~*-&iK9D1u>olbvqXs-YK%+PU|ov2wg9A*bG>j+39^xWE5n#@AJkg|cW{W3 zmQ$J2Ps^bu8MEz~Z{eGj%Yeu4A@tuZ?Apf)utp}b!UKi#L-jwuH~1bab=tn;YgQ^5 z>FTxo)PklR_gxdFZ&}4Ai^dK&U?$V6UL6NCiF`hATr;=Q7wO*x^vJ1Tl|vNHY_6NL zRBl)?`^C&uHeX`nh$xXB>sb&{7FlsSPB9NI<67*Zqi+%z(YsBLnqxnrPO!TCLGDdd zYJlGWUwW@A8mIA7o34%2d=xdzoa}l{Jk>j61aU zZ+pybf4dVrBIZR+zR~rMfmhk|{q~4X(VyIT^&1+v|Gg%U;V6G-3Mh8S;-Xv;=U_JVu&5%%$>^u^k5 z#`Psgn-&3srJjL3>UACTnu$WRagU!)3ucsW_-U+;3C;*t2q-i!T-1-9ScHUqY&fS4 z?aO~MoS?0Fy6>-prV%Fu`i0L9)5z7%kzE-gHsPr*?L)W}uL0;k+@tD+xhRXO`=gs8 zGD|w-i!A|T_dbeDkg@KCvc-;zcwWg_<4wo4C{Yg1Zom|0(g1SCiJ@fhX>NCzhxF`1 zFpaieK|XVIv%FrbjTs}``=pnWyF|v1v?f#m6zte0h%}p|pZL};NF*I9E94|nKs5R; zznbC?UMN35^|M8H?l|zb7Ma+s`Z?o22Kx0{4+U$oZG@Rof%(}HQ_tXM&2-#yOFu*)S)rFy}n8!pS) z*0z?0uo2)2Qri{jD^FGNhpi+hM4uFX(Vpgy>C6Y`Fn1o1-XZ|qgIHhqEoJh$Y!TQ>W2gQNE-up#^WNWhruRG3~>l=PDC1Dyf+S_CXTC1+#_ zc5~?>l%VlThWyab2Yc|{@-wfeLt@3`0-=r56JGsd_H?MvC!4`~dx>#;9sa#BMVs1R zWuSk_x_})F476q<3@i=TS)*+}m}x7=T+|e~eCpI8DZ;5KQ|sZY+r^pHKA!{}CdO;n z2Q&VY%})o>_D;(nB~#Qrx+O{nPd*X4aZ^emBow0h*ib(44dk$1x%4Li9TZ-Bg9eWq zBvXn*M^-BdwLjQo;sS0TuZJGXyJiQ$%)nm2?t|_r>J)%+4m42~??g+DHQlzl)xugJ zIw#>w`8l&Zczwu5B@H_$9UC5W>9RqRiON?0-0hw*aB5&kXz~lLwkWTUj9xDrQ|bEw zK1dR<@=-95Q%}Y0UpIJLy8>K1J0%NZn{(mla@Q0HVcqJ~HInl^2M(bKZ2k%W0)M66 ztxr=mSH(cj6CV*)j>7kX+-}kV!KRZV`5a=FqUkbT|C`b+heC7)3=zzu<;JxMET5s&@LqHG1Gt9*eKu+(WmH0AhrF;m_?#1uC=rszWUimJV zFpo^rF8$n$?p9K&HUu(GJ>~TK@tBtNm6i#iFxmQzq5&Y(37pJ~uuyx(-PWPtXfh242_KQWFP{yCqig~t= zbiqi{fm;J#?l+AsH3`QrKxmtWe`hLMCWr9LN~&3pBcEbJ?x_OMO?qO;eex|BthQ*7 zrG9e5%G))+VK#rcw_GfobqX3^NAAsYcg&W-taW&(*>?PH)wYc zdA>C8xW3(A*$=@``x;sK@{Im7dh`voc$XV_8|L`LG2Q7dYJJhHy*ypy5jcY1(jbAQ z){H}VOZ`||7MOnr#eUhy73^qu=Jo-3OwsXV^iyRVvrE>@F?E{T%A7w8mRX4xA+^32 zkBbU+mE;n|t1O?5>`oiJb#b*GqSgsey|tkV0rENM=#Iq{4DUCkzWfO%8>}m#nBuh$0F>Dl5^AD)S z>~6DM+O!{>Z1Od$K(t$(5f*N7>+{ToAk4RSe_3Sp{D8{92cmzwLw!etfeZ0(6=ly> zmpr~6`HF2*`++Je?3|*)YuoM)NIVdnF>oBcz)QvMD`!s@z@r$7j&sHyR)ZE4+qU;0 z-_4!bM;@-bl1fSs@hd?w!-&7TL+h1GsH1Q6#En@DyS3m7u)X$BS@G_z3&?QboE`9^ zb9UBO9$i`xK>f&Ad#IR49x9!_8}+oF@k;euza2p>y1cXB$qvauUHr_0_sVHkbQcNS zAb0}hpzH2`Q%=^zacO*(e**(=THt9(=R1gB(c$Q~r9ya7+l*_pikrugrbJ&haM5!#?t7 zK@nr|%{<;(n%IE&;#i{t$wIwGwzgBvRn?=?ipsVfO>p>x0q}T$D8hS!BRcRC*?A=e z0>MFT_J6(dly=E_5{av};Jv6FBlM==}({Jz_=fwMaX>$ULh&{UReJOFgH1D!7k;{6>v7*a^6=? zxt!xe4m@1&^!8%MRSzDrb=`sZx1BlZ2i<5lD5@f-O353(u)5`x4v#{!g9ucdTRk$Q z&kWV_W`{2HIhEL(qC6kZ@sQgnsyb4_PVkzNg|Nk}%r?zpTo>q7|1P`?RNZf{wMJ zf!Sr5WO>r9zzJE0=iPmTLVl=NQeS|Vd|V;!(oqP3qr&kNA9arPM90W3qztg7lAP8-h^EDMl6&bqE3|Nq6wsXL?$)m!ZeH z+ds6GGY!rSEuz|fb8J6I_z0?cOD1gP!SXbfrEnfKe8bkwYpT2EGYCY=8L2^W7|FDi z%q1`(scBbgEFbfWLRNT@RLJ|`J2xc3#R1V}3 zGms>&#Hf#_ojQaPBa};26oO~L+@E=>!%)*L@6VXRUG-NFtR06j7gYagexrJ%KddXb zBo*n>-$c)0B=0IKx%ND+UM+{BFYc~4!AKg||CK)yn8(eJl0-}dP?v2(ZstyNUA`H3 zY|;Lz)$b=GJ?=!LF*|zUY>ZK_Ety1Dt`c;+acTkMuJz(Ktpl=h)z}z?9Z+Psbaa+R zgDq4=2+hzxHH$KW{O(&)xxg^jA#{tI0CV&O`+%P8VgCUQ7Ax&isdrt^1>7{qrqP*Xb$%2w!!d=%z#g}xPW-7`+r{I5jW?ROw`A#Px-FQs z*Zr%hYwAsNfF#a3EC-UrhV0t)s;AkBq|%K@9>zD{lv2?*#%UXLGuyu!BsxSZ;NA$r z8;PYJNsi&T<|mZGO9Aq4oMRDh4i7e|-KNe=2Sgb6aN+0pur^s$IC>+hB6Q={A)59Q zl6b|r95#4>ND~m)+K(P}-MTpR5qjNm*Sd;;HE z=YZWPwoXcTXG6vam~6}}%7VPM?@91{O)C3X^?}}lc;z!GKd$r)sjfT_hiYNw46pc% z95vcz65R(JG$R2IkBZ@-#Q#L3S*8G*2W1O$1~8isNrnOvq(W?ySRE_CrBhv_gl08v z(grxVfgf5T3_Cp0GRuwd_qkJC&ObHS$U>oRbLWJDg7EIRM4sP;)XRDt2ox&UAznmX znIgXuD-h+rey-CNT$X9>^K1vV0LOgvFw2soV=o`&q12*yII{Vn30cR zzwja!l0wPjhFOZ6?7n-< zi3FN@kEYBd2q3HLdWGz^^uS{o270*&qJ*2*F{l`kPiy8-D4Ynqj{=Z~kN% zOY;v*7BpgY8g35ClA@v!0!)~iks6-zhhX(8x|9tun32lMGO^P6)Xi4g2$5p;e%Tv7 zoiR#(tdjtz%AR$!l49<&$T)Q7#9sscs&e+E0ZDW*S+O+KT9V$pX;6+GfdC(3;z6BM z*f5)2`6i;Oz(SxcQWGd>-KVL9cL*TWywX2>oQN?yB$Ihr(B!@|{Sk$Qs%Pm7G~UjP zbQke>#0?y6vn~X|i5O+}#BdcSSyvXnMb!Rd@r>5ooqkCac;ZG9W9-)srnG)$f>cb( zi~*hXJ!P%A-$~n%R6!gxTnL}jX5TctGdj} zSP}{5?WiLm=h5 zXe&N6N-ZePRaV1;3Tk#zJ!N$Ty6o3{AB+eI(<>hk1YLI$&u=%LC?0^r9B<0gLajo^9C1WB>)g@(yq?bQO2z!& zYp*e+TSc-wK^1>48o%Xi=tF}J)D=C&F%$T6iCf@7Zf;!2?xLWbSH!^|+@m;T?q<#+ zE)5bwA~a-8;@@Nl=F%^;&xW}>ogfyH9PaR)w=D*uAt#goI$YRV^1OVgP$}8LYNPgm zO6_|-wnQOpzPAh_C8H34jf3`zxB}3sK!jbGbs~B`)nfh2KLGv1Q<}>(u*D2XJR>XG zoYw6U$1}I1&Z;;c$ODm$7A7?p9jdn{H4e}UmoM(R+7oCd8+~Dk)9dyKDDMuLVm;6k?6@nrz30)Wii$aW}M!Q z0}1C~0PrgcQEv1JQuzcXZ*!hsAN~%<0_da)!cY{BGqiA}Y`1SZU}5by{R@QM*&Ar? z))>@SYNGgvg1PClia3j4J$wbU5=N#}1lgfp+An54GWL))eI3%c3xyl&925r%L!%o~cMoDay&49Jn0Q72Ed*AFlw zsa|^y!>RBU`j|bKXq>8FInHZ|IT|6&<7%|g-bk?H1ShUfi zdxS1;EClJu;JBshjwRN^V)y*w5z_*UW7fR>`;FeFf@gs|rcts3F;s--+T_e*HvXwb zSC8R=8%~iz3t>vJ>4dzn<_(dir~x9B?{*$1mw%o~jgJ0-VSb@XvLO5NwOfdD{6xT> zJ|@vJ0erGZ0+AD2iBaqxmC$Ql&HE%+dP2*Ns&sY(hLr!k3VE@Jr?^vtK0v`f_jtD*CJSa<3)w0iTSPNHBywNlzN}W zQfUj;#B2xDPcB~JD2rLr1M@hTwuGQscp5q)g0t}GQ!WF489&Vz(Gg<E6_@H}y*y!E6vzD@QG z^`_4t41lu_e3*0mkoh55r0j_G)R|FwH zB-;v%c_)w>UqCz@YD2(s=%T$D|t`sN);&42SN)p@=yN9F=V+I6a zZk6TIM)ftP;XfVn$}`fxdEST<9%1|C$o9qDhk7GH81MThl6_g*xn`FZotcv>9}Fd| zMCZ_>_7Qb=X8LQ`E=6SmuV3g9oB8cR7<4mzB!c}lhCJ>+u77L6V# z%n9bfNTxv&M02#XQJGUrpQWX zzmzf7?7)*)I6;v!k5CyJSA(Wl2EA5{Z!QxtdPwwik!gpCsJBe|EG8w8$To zQ`72xtKG)b#1IP`z0`@@GylsgGi{l5WJOyUn1!KdIpACaFyWZrx>;(I_n~UfJ398l zgd|KJrvB%xvW;!;9+hnTlve%mz5Jw_Cc3H0Fd=b?%&J%^rj23F5MaxppoegwO}p_P z6Z@6kpD$QlHqRPVjc8ZZKmZKvA<~RCX#*?V^$M+~7OQP_a`Fh{nV`Zf zejAL1Imz3#qA6?~%=H*hgOxmK@ViI&KNcP48(9MPSQZJy*!`E5Y+0f-&1VPNs6iMm z-6=UJP*jh}vZANbt$g0{dNh@{SEMUy2K1_gUh->W3%b=ZTaGFQ!mA?g=25kKq>77gig?^%0JhlAzop~-7@opx4p z?*#K&<`%x&v1Qqso+RDMx$A|wN*psqxYNj$p0}H`xm^w~m4eQ-(LPMAr{ppG(R7s& z_Kf3+&Voxlc1op^)i1+xXX%#t@)ug5l};=Q{;Ab#kNA~e=E@zq2TCjsKE$Tk%EeVI zinm>I-r=THdl*xZ)+nq3S)0x|v`++I=o(%Kigk--D3a=k7WX9!>#`AdxcgnD4DWrlPAE{4P7ieyF46hbXUFTx zaNh_WKF6jde+l2$bBf{+^QyK0iq)?4*`VRA*=dxmKf(9kR>TAurYCa{`fp6-6(ild zl7mv{B8v71@1ngfsTzTw@L^B|(S?K{&TP+>;uu(N2lRM&B2cKrPVfQ%e@OJLv=^2w zxzeg8g?JP1u&)D2|rT|TsYHArRzVQttfu;A24swg0o!7Eyy4~M~?%Bj}k?!H->-$z>tGKj>9z}$0WlYps z#s4n>nPqs6$U&$sM?18oQuxK!Sp{&SP5$5tnP~YjSxr#O6oiQ`W|PoFB75ji<8>(V zwQyu8?T_3BUQG4XBWIb-zT<(^szn_*?tuIg-EH`|Kf&5S=zyB@q*u23;Z-N(_)@$= z7T~fHwC1Dkblm7Yp*~Kmk2)EZW#uyxGfKQSrAc7lhi^&N*1VHU`e)Nm zSuVX)FJ?%L*EHiSL z@!qyhVNdhDW^{_7jmVPKs$YcweV%HvSM`5dz6z*5s>< zn3qI&qS98WU9xl6Edug%fC0|aEje-GhER#&i`7B0mKk})RgJMCOoECmQ+XLxTm+kE z%0mrW0u2mtxnK-V?5;x}Q@dK%_5Az2dgU(a9z$6c7?kuek&MX@p(aO>vwwLE7O09^ z@3~u0x;63rfd-$ttr=bj{o8aE;b#_NOj`c;e3{l~i_Nc`lpaXHpBalN!0(Mb_sj0;sD<^2Ku*@eU%0KhGQj0D^HikuR6tLGhQy+< ze#TX!h9VL+z*FLKWC0bidlBfleZ}97{fW#D{Jbt42l~1FkpAVy^J`FEM5+N-IEwI4 z&q*e^MOJCku5~Y7eQeUuRz}-o#IR_fV(D&(V#o#1L1cu&KW9cD?ZVM5x9{u+NA=T^;iW`Uj zVS6mD8MO1#L~a@+y$2*H0P_rWsy*#Owm|wh>o-P=s5}Yic?5u`zP#=W% zj9Dr{o3TS3u2G`By@~NK(K?Kk#N ze>m)%(q^t=kI37M^ z7z)X6q%kMhBR9ZS(Rbl`k&Cc`$X&)aP;evo=t$ZfpLX?F>CP+6F(fo1wZ z^ai9{Gnhr7)7mPs4A8N_mk2B z@Zkr@SQ?}3&_3@@nU$RKnAzgXa0-NTbDJe?uz7VRNZR%#KKK9;RAhE)%HQf8*o|gt zF5o`0!`45QDrBW_qsD4|1S3Qy9*IdwgeJf<=g}p#XQBtnkI|K3L%Q9Ay|d9uvG26h zx2N6;$R@=X0ROfPAeGqOUr1C7lbJ>~U>ezAL!18wQmJ?2GO(mMS*c`0Ml+7l!V&)> z%05s$T$gph%YP+>sd$D8bVi*6UP9fx?e4{q9P~Jvy~SV)K36PQ*RTrktP6Mu>yIln z;BYm2 z{OHhwp?->ze=v$|?Hgl?_r+O!`3uTZ43`n)t>vYpUTs zI>IdbFjGIrzld+0P=v|yh~y^yQ`E@ouvUo?H*^Gz!QH2hUbZp|OXh3YS`j%?k01mEYT2@u49X|NBzGKr0CWd{ai z$L4n@5jIGH=Irmc`=cDD6x>JPfDHI2hMRkztp+G3k})3b;AW0U7h6&0 ze)~l*qes|tuqW`Eci{2#fns_N*|v7&2E%1P9tu?TCL$`LCt3qOM#;4#?!f$8^6)2j z%0Cxa`TqJ`DQmzH$+W8^88M&*+FtiL9`u#0GW1KJ*ITz6@EWF3$*}?$^wp#LNC_3K zgwI5$v&NdF_nMMfqNQqep}!%BLSSx;fuY~MN@CGt1c_Rb2}q6`a&chp<&1)bC&eBS zVC`KUW8Aeyd^4AP6$ebHrZpZ(Av-)=G-XLLRsn1jQG6GkWJI)qp`h59ep(|mk=WDo zM6==3bc4~HxdITvlq||k>Mx)Fkel$3g^!iaBiR-LH=+%`^66oGa`|WlLCBy0LX+q! zUjBzFvS45*Rzsf4X;~o(3MI*7q9lBQ3Eyl#(`6)Kg-%s9rdc<+p5v-WcVeoKDx~Zg z3_2+Kf67J}L${Qs5lshtC*sDKb*GY5)k_8z>ew$;?Sia1PHObZfTj(D1+>tBC6s7J z2`1{V!8v8BFcYU_c>eOH2KLlTxx4n%GNP8fQSIWy`gibd$oTzW&%}ZuGm0yj&hNKH zzGaK&sIjY7UJ|<1#M!c39d#*to|#W4W8Qr8jggwfI2tXeB+kbFnxq7YsjUNETYx)q zv1~!F*|d_=K5>k}C;|ViOlA)mh1^f=>RO!(jE>iiK0NR%8KZEn36~?Yf8bs-Vbaml z;o(y7L)+=(r!AxBr3xECN()0lmt_EbPj;eOEZ*D@aG3fOkcVBpkG4x~Dr$DJ2w+6F zc7M!bmf^r*&)f_jnU6D%kP@H0)4e(;&f2GAZz) z;O3Wo#qD%n45W^2Kp=&12XtYqym&;B1};tU_mhnBhAuy=l z-X4vkb)q~IkQeKydL-4$JY3$DaQO9%6=o@xL&o?}HM@Bi(Bc7L zhi!{Xb_a~grbiwLBKh1w#fBA31c6#fwcfP+gSqAjT-R39vYia0`!?0N%E$WfZ|`!c z3B!Mt1-9|ia+*H5r?2T1`Cy{h3EeGOxMS}6ekx=zfS;-9p1BMKZAlW{BcM5H&weHI z^~?fmNa|uq{PG2LM)W(@d={5hM|B}Xa|Okty||GiB6gc%JIZTfHu3l{NG=sF=?f~P zY&>!4T6U=Y!gP?z^u7a*hY8iC^3~3%s%Z+LsspJXfR`Z(C)fVCy9GST$G^p{swHXS`G zUE+fpDoW`KNo(?O6&bIYvZL?m@97<+X1ye|`2Swoi&W2hthMMk1|dq4W@A2#=&#v( z;^1W0YrEn(#+obtgg`Sj#Mvmen~sVuOGQL>42vE!rvdnob?vytJAOd6-$6@gyZZ-z z{SIL(D6jb-8^Z;0%#HC(w6zB=Ul13Yi0H+>43xR8_KDSwPzh`Xw$59d1MC16oFyiv z?E)@Hg0QcNh^YwkLQAJq})u4N6(YrEmA9B^t*9P)if6S!*|c zQeGUY%#L8#F%*7eC^-E|gmqpC#$b;8r&@Timy+0_g*R^$rSx8!6K6H4A|L24OKupd zsO8apzxoN`zp16TQ_y{$_E@5#Mk7;zaJi+z8iG*RDCZ+6|xzz9(ddt@P!*^ zcwqYeH(LsOP5Gz4_R8^RC_fNwisF=RU`6yxHWH7Dk$U+KPP|p>bZU=rpvsZCzS{jY z-10^|gX8}YcY?XUdMERuWN1dUf?+h-_x(wT_|!iiQUGA*f)7t3l(Fto(-6s?v9N`= zH7X?=h5xqK&7dn+Q83~^tD?Kx1-87$XpO_<*BlsCd{m7k#9b58US62sUM`OPs@%_p z{>ib#!R!E_zkl?|zdG;A6k!0ZDlrXs{%aAHXJu<*jd%4$-RcVKjWmk6ch3VR2b379 zkhG4u1_K$LZc62{Q<2GEa1p})Z~HDh=?m^v%KAMUf5(4DCCxs(-YH}d(EoI?P~`Wmk{C`;(Kv!(t;2DVc7){QR}w|GGjI%Enia!w)^ z{3X-W4TV!J9NAKl{;x_{WVC^&61*INF(?{?I)Y@PQh2YuZXss4*akznKPsc=+K|5} zc>OwhEZhC66k3PM%vd`H{{qxB_Vbmeu&wX*FMCgLubR=lwl9J{A3};Lt|Te1yv^k) zmdwP(dic&ui6(ZvSkt+l5E1wGN6Gc@w{SVWoz_LW1~&Ie;a(is0Nv zQ40m2zWrhp2F5v#XMt6*Q*NA^k@R>E^Jk#M%@9bzAe4{a?lHRw2I_7)&YQsh1$~MZ zdDpWBGJe!8N;%}a5j?qz9wAx-*dY7b#Td>jLEd6|DOFmT1jJj_N`}9R<_v6VpN~_h z563`7j_8XZqD3I!qJTHU8$k*dk0L)i14#M}rTo_0+dwUXqsJu2V-G~NC@><{`7UqZ zB2I{i6(p`qWzxu)kkjmB}KH%&i8W`}8y^02t>$&@uw8gAI6`snwQB#vJ$1VP&5GgH+)o$}YmMM}{IDl7t*O%Z zqfrD!8xQ@H{}+*F(pbZ(fkR@I^vB~C`e2&i&M>Dh&dZGptHzr&l&>zQB`Iud?Jbc< zWaI4N@{fl%#m?m5V5Ta@bX`5qj!CRC##-}bC5*;~aL;jT$SdT{$Bd8(|L25fnlRNC z%>6B-Zsf66!Bm{Iltr*LBRbo*R<+3Y6toR7H86HYJw7{oTH=#Rj)FY$?H7lS zyS$jnU}&fZB~Oy%zu>)PXVt4J0{y9@rMbAHfto3d#0%OZN*Qfn?ZH=4BvJV2k@?GD zwIb|TnyOX7>>p7IV}W?*Gm0-D0Ziq84{M@TIQ@EKm3wu8AnY}(sszwZJlR(DD)={r z-><{Y)NZN^4k%!4S9~F~r!;mymZ@ypgMR~-32Z%0i;ZNZQjEiUp#i-xmb`MX7o|>G zRNb`FU*PM`v(h;KLOn-=Nx1dCaZ{5U*~wn z^jnmo_Ck8($AqwLJ7)(p`8g(_8Qyxo-h6AJg zE^r+OlJ+?Px?0IJL-b!(2`?-}?gwXD*T?M0$&}lkyrRs9n9~a+C=qWw)i?(V@O6`y z*sG+sB|~zCkGjPQVq=`K!Exrse-K(YkN!o)&<0grsa%&jlO2*4wnU4$z~SVij|;*< zkuBwFc*&pT&muETpMR^P0ux!x5wcMUms9O|YhZ3!C`m-k_?KS54c`f$s3cHfVnFPF z!CtIrxhEDMJqqJT!Rv2P;0;iYq&(kUz9-9$Ph=+dGX=rjfkbCFyR>CPpM+Z}u#C_y zp%jsWr`Aw5i$a*}M*|o7Ds^rX{?36;q-u3#6F3C6opgk>j8*C7Cy)~)-cz6++<2r* zBGoFXW9bV6avt%ZM#|Io0{s9@luN0YMP1~png*wkWZS1N$K6nosqBy`Y@qpfs4Dxq zIrHty2vJJ8Jd?n*wqOR9mH?=c;l2SlE%WGNL~sA-s{ zJ7S~OO&NGef+fA-Is2H{azH z!}mktceu+y;T%Qf7%}=kc5N`Mn7$3J5GZU%T$pT)XHXGfVh$zmBEwCVqNIc;wTha- zxNtq{FHO9r^812y1RgR|DT{X^@i{fZ(HYmv*))r~Xs)jy_{ZYSd|i^0^%K>(7Z*fE zqxlZf*9uP4WFA^^fg8z&qKSjDe zHrp{kYGkWd;` z9>1+5oh71M{;I%m(u~KXlUoBJa{b%ofrsg+aq+(>WAvTr6)S0mEI-UhAye4>*+IcH ze-)`5^-tY>NQ~v4cVe*`nRumrwqHWiWQo}kAE@o_2MTlyUnoZcl&G$=UWEzU)KuEQ zyZB@6-DOa^NY)8JTH=j4vT6>>nMY;&3@VckyE2kcF)@U2zgtRhLSDR5sY)W_UmXy6 z=u)-H#L3|Og>}}`>AO?b-Zq-r@M}*Ju;kwOKz=PmU-+&7KX=Mk%7~=`peu2(*5AIZ+@AN zlYBJptQDtJr92u@`TXP$f zcTWZ!(BHQPd1BF8By`NpdPt8toeC-iH> zkY<>@DN=riBjM@0XDR5u-qVK|Y!j+A4-2v)`JejJNoZCZB%i}lt5|)F@?CIVeEJMX zFJ_EXV&v1(wd~&P0TG^gX_=BX$~{3$u>%VkWOTML$Jm0YCauYi6M_ z9a~oweE=Y_;<>YKpI^Hsd(9n%@j6*%99QA_sig!}&~}!0Lu!ZI=>@Pt9Oi#~Mj^1m z>nlWUWcd~HFP;dFi)0L{8da1MC&I7V3B*`m;P%2&shHifrTj>uT_$MJ=6MK|Q5`j- zrUDZNyB(o=vFm(I!4ng%uj7F)EE1R{ZlE5U7(_zgLySu2F(1mVz?&vFs5g$o_|tQ7 zSq`UzBbUx=Yx?0uN-F|W?#n1oEG`}-CVdKpQa!MVQ6w|3H@IOf1E*NOHFK}v9QLJH z>wePFsc~So#578|!tYN&_^;}p@%ElbG_;FEh2}i7oT$8dRMlo%-vrt9+ zV~QQjy?Oq8EqS!#MlLo^?Eadorm%CO-6^mXIgH6DpgvXD$3DiG=k7Ju^ui&aZckC4 zO;;#}|KIFOyu1)Ch)bziR9@SmTW|tBe>7Yw|GL>;IU>=fyU$Fv6tMY1CB*Gp;F7$D zq^TT-0ER7RPYaOUEsI=XrxxFS6TcX|w{wL9k0=f%F>@h& z%7*-~57&b@<7K!h8Dm;nWl@S-(v&A29e|}EYrGrARE+evL}bDQasY83%Fxx9@G1l#}ay$Q8hcw9){>Pz~Iv)kpxB5yfxRLvKO#um&g=~X4-zJ26#>m5bd4YV} zmDFc#_E_{5cPltI#6fJbPZ+aj&kYRQAuBO`$~G_)bj`|6w5JkksKG)-1@%~LC&(K` zc+^69B#d%`Vo7!60w;>1s=vIf{dwO4ZIcZE-^IV^U@8%nJbgyO%FPi3Mc@c}tF@&w zZ`UPBH0;%Z<#Hnoht_T56?DW9KUl0lEyL|~h0;B%SFyY!pOTnp%;2XuGkbyvW@Id( zU-S}$2ZT)a=<6Eg_y zsOQ)^)%t-gS!HC7!DYnQ>N)$vm0bTRq!p`M|I7{^FxS@BqC(5{n=P^pc~Wr&h>Q!W9i9f7HuoyGC9o|~cg z!@*;%q%Z=POo)pb%Ym4hVzs_uD|0*nVej9_b|GcsSp$UYxy-^=`<-&r=O)A8a|^tn zkD*|c`~>qc1O92-BNAH^nhrwsnqgeV9N4XQt<>({3mxgQ=cdnzIwD|R!6~5|vC|`a zFdqqvY+*NEY}Y^!WkcREQ1#vf(`?6b!HWB0T|R4rRW4Wyw@U2sD0Ak)3&; zpyDdFFJjoe?xYxi3oo%4*qQyjV3c38RxM7Dv9KzAFFxggrzqrcBds-OxO z0hdA{-%R#UXL6;xdF=NHh!4Ty%uB-0Y_f|QtMDKf4rz$50ikMLm`A$NN$@p=*R}1t zIGQ4N6>|x3E-}XC9HT+8YY}fKAVB8x)|IHQBQbt!&7@W>9S{HAwEgwGU#u!$=uWG(V1cM`$W)Y38K5q81 z`pIp66aRKax3W#$4ZqJI7d}?D-3wDL_I=ren43ZFwep#OQ&+LV>Gr>EqHabQ z)U<}x0w?d53BaUGnn^Pxbgw|-79&59DAIkMOxutFV^-k_T6Ul8Cd0pohn|uI&Uft3 zo^eoqb9w|3a%tAEjxwoIgq^`S10_M%bN-cmC(PTa65Efav;t!Aka9fP*HiPmD0T6w z!#o+Z57vkpC~wyX9zkT9ZLW1DIFBK4&?@#IKrf;h3R(u1XeS9i-4ypvJ7x;Y-aAA( z5-ob^@$p8Y&h37`Xe66)O!4fqx5Hl!0L7Rw(x&EkIL!hislk~P2A?n`SRS~ZYQH&l z!0pHh^uho2If=YtPh{ z^ccvlxVdP;3@aHcLH{F$u$Orf``9#las7|xCo`PM$$OzA{pT}yp8AiiSw2BoDaqxl zW27LIgYm=OO3o)LDmQqDj{C-(rSk&O%khg`9}By5>B$7E!6!bG6Fs-hF=_Lt`U`-- zs^)q2rE6WcBlcFYH?J5bGtf(<6W}}o9chi+6yPO(*_M{yRx4fo{m)k|h2)XMo`jgk@3pN%&$R=qv1zgA81?PM^NdJ+KsCx_#m2II%UOnlW`M>&8V3?xb6T2H>Y#0;BH+s&bPA~$O&~#lxQ9B>QeN0 zTe6u^&RP$e9T%mMMHmzN+}4j5^81SmSvHF`;qCEmIqp)TPkobK@N*MaFcNCFO%SFPv?yF~?qp7RZL5aasY3l;u6o_oHEK@60izVH9)k#!gYxY_IfwPL1%yMaPjo9J`6-9gqzRc*bLwQFu3%4gl>8A>5I=OIr_#id%}K{a zU;Wvh?qFFy-be&0XD@j~vshLNlY|jC&H!Xi_-Qc+ocwe2JKPUTJlXA1r}cQ0S~O18lS=EkG=S7Ta&z;{{^1xIWEk;Dx}EnL)0&2pz@a#bx%YUV>Ac4!%ZgR#-DpXLQ9+A!DbFIRdd={JC(?aP7yxqxGkWQV0)K#8l@9X zTT4(OHTVuAZUo&!iSwP!*+Zj1^k>o(_$`BpCpNvVYXV`fVt98F6z|IhtYRolP1<45 zPTT)g#W29!0iy1X;$L?14|#{Pek)ycB5zxyU|6!`le)|))3{ifug-Q9Z~^6 z6ISQFfzceFEyl#QA7-NeoDS4z-67W*Z5KLUmhCx4-RLxjjc2r)5LSC8as`2hmDd0a zL+y;Vx0_i^(-j-)6)Sp}+6;(M>xoFWC7~h!P->O@9rzbGKmZu27G9alAqk5D(7YCM zX8^I0nWy33NaV@=`e^{D;2TFH-w%`_lvr9BC&Qo99Ttj>9;sArCc4YXkY@DXRQE9u z(VJ8LnyN?>(exGf&W-)(I*ouvBmdz0vxdM_zHHHHB#K=7%GgfN26i^{@Bj~(vE5DfBda{1tE_ksv~>#@Z#}BjmZ+|5;`!g zrjX>x=C}PftPXbKp@5)E`~%HzP#})mHJqX)(9n6$7Rp9yk$iX(I$IDqdbZA*i5M$P z>lKSRb1yl^I2GrPl>U?q*v|fjepF?@>`hy0;`b7pXibso)Idl>Q9|HPEoz@r+O7Cr znptpPA%*L4Ag%&tPO3S5W7!s(TrRLf3Trk72FYB7P~RdKJojT!hF`*6mb9C`2atq0 zOpUc@Yg0SbV;t6#jH=FsNELz*e0q6z)`Fyyuvmjr$yQg0YEvYk0sk6AcORE$ptSk< zDs{~f{K1y|=o1CII4@Q~V1QV0K|$_gW8uA7 zJT#zIJz4pZDHbuj>{9k!QE`*rX^t=*L@wp7-E3RUA`vgM$1&hqRns$)jj2Wzty1q{ zZCp^{{5oLM_U^5n+B!T-2wku3NO$4dCKdu5jFqgXatx2+<~1%WRc`H;%wg)*Rmwfp zoFxbm?#pwJq!GEH7FUR4J!sZaKcQZdwpFBzG>UpL-SHKqYg`zh<0epLNpsa`!^=MI zwXYTF0gS?c;#efI`nRiI=UEg`wX1P6a#fC#`gnCs$kiFk&u__`>~?e>4;v0UJSD=9 zA3AJU?P^Je5PGwl?II7;!|1=O!k+&~ez;Em1ufcev#l~SpjdDgKQs)aLHOoCDxTw* zZJk=ZO08(IGW(!|3YQKOJR`=)M`W`A2C_d#6zBlM+Yw*1fx*E+@5yr=tV1fN6gm}5 z0u%$5XZE{xDOLgQ32JMm>%;8An?qwAf1-Clxt4AwG2^z?S?r~h`_x5p9}y!?=PG!t z3t~{*10=xg*4$)DPD&xr3f}#;G>lJ|%=H4`b#0=~6oD*HJZ{h?oEl|P7t#DkSnTL( zkUauu!zQSbn#92~H1{KqaP1c*;F9?~E=c^PesZm)y@Q$v>hcKY3zG!|EEH~a?8CN* z^oX_8qlJwINmZ~|ip0?3x_Mp(P4iqi*W1=3PffaYF$q7Uu}BWMVwo{t_3p&o+RjVN z$8HsW=0PQt+LqnSl6AjxM^zmi`R4JCuMrD%tn;kI;}C~y4zD*jVJiOFur(;_H%Ob^ z>;f|_f||xB%7AbSO2Nfnvz)uChvjSk6DlMiz7Mx{PSbb&5gSdEC1n@mo0nIyK8E;0 zQAKlOk<~q_&9SBfD>Gx$p{>H1*-3e*2PS}!2d{_@P77Gu8>eq{`jUi|a+DMM2ZM!> zg3B*g`uQ`Y(7R;RjqGk0#!gi9?f;#2&K)3eoofx(Dgq}Sd`m@AR8H&7Xf5X76xOj-(x5x>hJ8DoRQA_|SX;h){Q<;e4+)b7oWuQ)Q{ zS_ejUiXg8&Zvvixf`q6i%n92Z*9G0R_@@srYycA}YqyK~e&C}w8d=7^w}7$Jg_~4) z&6{V1-HU3L#vSNd%2a&Ad!Gcw-CBLwuQr|U(J;`@qt(otp^CMoia1LrNYsv~5sy2& Z1oIa7&Swijrh@VbYbI^fe-hoM6E|~l2+05d literal 0 HcmV?d00001 diff --git a/MikroMaster/20260521/20260521000002-Config.rsc b/MikroMaster/20260521/20260521000002-Config.rsc new file mode 100644 index 0000000..7ae7dad --- /dev/null +++ b/MikroMaster/20260521/20260521000002-Config.rsc @@ -0,0 +1,3445 @@ +# 2026-05-21 00:00:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/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 +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/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/659/af48ca83\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 18.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 trusted=yes trusted-dhcpv6=yes +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 +/interface bridge settings +set use-ip-firewall=yes +/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 comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=0.0.0.0/0,::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "zuRsO+dL/j6awaBWZ/NgnHR+bCNUjRWbaHFpdzkNnw4=" +/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=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 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.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 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.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.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 +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-connection chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +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-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" \ + disabled=yes dst-address-list=!Local-Net new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +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="masquerade Default" \ + in-interface-list=LAN out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp 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="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +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=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG +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 \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +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 disabled=yes +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 \ + disabled=yes +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 disabled=yes +/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 +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/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" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260521/20260521000002-Diff-Config.rsc b/MikroMaster/history/20260521/20260521000002-Diff-Config.rsc new file mode 100644 index 0000000..d5af59d --- /dev/null +++ b/MikroMaster/history/20260521/20260521000002-Diff-Config.rsc @@ -0,0 +1,4 @@ +2448c2448 +< add allowed-address=0.0.0.0/0,::/0 client-allowed-address=0.0.0.0/0,::/0 \ +--- +> add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ -- 2.52.0