From d77c2c8bc3bad500735af109660d40ba33e75e05 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 05:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 05:20:18. --- .../20260512/20260512052001-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512052001-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512052001-Diff-Config.rsc | 24 + 3 files changed, 4677 insertions(+) create mode 100644 MikroMaster/20260512/20260512052001-Binary.backup create mode 100644 MikroMaster/20260512/20260512052001-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512052001-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512052001-Binary.backup b/MikroMaster/20260512/20260512052001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b548330f659f78458c4d018211558ba08a769953 GIT binary patch literal 302647 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�Wx7xE$96qvQ{BED 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 n?RSk|I; zz60zXhB|ECUb*z(t>vi>Q`=OyMlcbcB)LAkpi+CV?H=&OHQiB~2?sN>H_O%pCijepLyJoMF-y59`&Aif=*(uv6>H~{}Y0Kg7e>S@uAXgf!lH_E5C_$kMNo923~wq7~4cG=+R< zb3jpx=)0=XhtDm(ug&T!5TDyU2KAun={xeO_-H7DrkzwA`P`Yy2R{KLXA`7`ioTe4 zr`EVZpe9TR9y_m;+`pmc$PzUMD>N`HM{2ob_jr@ z?{`xdQ9Z8t8~vLIuLb*(-iweAuMFnCk8s4%x1HplEDdWapkL>bTIrjHdiUPs>m)I8 z6o=aTxfSx7r=*Gmb_iL}xH#~Vd##x_E&V8aJ1x@U=HL-4+Dr0KLQs+M^+YLx@3OkL zhPNutG*ZRqy_y&FuD@CYs{DKOytcnoMw7boiILZ{9w}Z{7(_RbV~tMo4S=Z~?7VS? z0AR#rzm6bF6}KF2w31JcG>?6E#pCGxI@s<9^z`=ImuXDaoiJHe$YzARYP&6Ss7bOu z=k*%J!D3hS6-GZ(Bc8aYWz%w9J~~jEyj7plv302?*TL=x@?oW(xl

dGjQFRf10V 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]w^@KOQGHFP0t%!-HTiz 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%0D%{F*eDBn@AsyV)Ay9CW zsKS$NfGO!LEOKQ#^#;r|D^daAWH=+p14Qy0g&?(bC&6;*;Q|=xJ#p;bDCRtZXak## z=*?6JDO}E4l4(ne;^njk(X|}C|Bj}`m=h@c>~!dD+HQv-gQ&U56AzksVONS=xdd-^ z$;_~1j&J9MbXDs6`f2mMBz%)-x2@7+@ABeXwQ?RAumZ--XHGbEec^I=?NdgV!w#zV zGCF*%yOvHrA0N{~by{Q47DSZ0?i#?*mEn^zY;#be1jTO$j-}f|UXKz`*Scvl?d}zoaKM9=q3)d)3e8ML zhEY3CIXsPA|HSqu()eND@QQl|FJO}r$B%Z%vJ5H}M#*X z;^J@<&Z=E9X?HgxTJZQj4W%9;4}Sf#7S;s>)QmGY%FW-Wov%3)DW@@P5*9%GVq~uU z;XI+TZ=k!D9#g9mz2?i-@I2w|(L9K$Z@_Fi$t0Y^C;rOkp7U`gg?Q%dfjXW;Dg`Rq zCM^@o{B=?i%@7;>`{1W5(LW|iS>Q#nrgg7_qc{{rleFRM@6@z=B=JXVdtu9ND1Fo{(Sdt4iD zA+70sM**h$kmK)F)4|l604RN3hY`0p;Rt=Bkj{;FYA%)(6Xo!t1>X=Lzhc&KE^;1X zrPTY2#+Pi&iA+_ix#Gl(X1k?iN5sTY?cwpCxQGH2r^|)nUuS(xKrZj!2tQI{m;G+} zq3Rb=OZrfaJc!;=tojV0hwyxZbg)(A_A?OTWMmj-jg}t3H{wi}mFTUSZ>ggQg^bGm z)+>GmyTp^SEi06wNnYM2OLXU#0W<(3ue4miJa`S}y;ei9T52oSysgq9=bY4sGQ0~h zi7vUoA2fjzHW6lk%_bp8wa#rk3Fls_*kH!hoMNphk1;KJ_*nJACJg1W6qh}#Pya31 ztK`52`*|8j7&QV;w9|!B+&ye#t2CySgsN4_Of0v`kZZUI4ljaeB;+haeU;=ajOiFm z9W=R`767gu+!H>#kibbb5HSE}JwiGVv1Lw%_S>eF0b9DrW{L)kZ4}Y?8qJbE4gu)p z;GIMDFM?9m)Pl)9lP%Zw0;0{W2TPb6Y+@-&9TwQ|g9uLXSHps%;D|cu9ya_NkS0%~ zgXf2i7b419_8~+iMSt?vz(Rz}9E3dy+hihB_9pW>a~zNWUtOQpGOAZA(wMf%b(>)e zYq6=d{--PfjpN_NZ36Yg2RFLPjZ;Kq`K#Pi3G{F%ZRGxnE>zcDj732+IdS{21STmf zBMP@-OQ01gSXLek0du=dg}fZs;u9h}jz4=r2!zl3^8O=~lYThsqXZ<~>KN<2j*6{C z8NK!kNw%qvnl-~20WaUIgF8(9PHFtQPHQsdKqYO z^ssNVXvMTsvQvp~&baSX((hYIWa0;EPS_x(lHTBK;<5zK___b6Y6~`sgzU5W*(BL^ zC;(h!^O|SHTA%?C4n{zMy*}vkp$xd?ugurkRl%|R6*x<|g8qXO8F+Bq7hQxeaU0g! zAgMfon~EKmJCH}`5ScY2@G5wq1cjZs2hL4-R0NBves!FkV8$%J`h%2l$Pk+ntrDQ= z>pw5z1^zwEMH2j*R-Y&_>Xe~!gBWlD61=F;s19ZYhq0z>hok5thC=C_EG*#axm!j7 z+U7_h5Et-n5R*Q=zJml&*WX`MXo|7IkZB@$v-`H5y2z%MwuqU`cE0xt;|*dhTES36 zPdGr?aba!b)nU?YlZTtd_*mmYWf+XjdwC}TF7nWxV8JCajbRDqLgzk2uFzkFc0MXL z#C5*g)f|MigfqMrFd<{kfM{#(i2O-+@^{_ROD?0`pb+W80&C_)in2?gfRWS?f2^?= z9V>~jX*Hw-$XIxu0{7%Nu?WSH=3X*V-6tSOA7TbC4=N&A!RdF3Ck7sd{B;D}^0tlijN91cwhM{0vEzwf&0r*2H9Zl~XOO??Powny06?JW!n6(%UO9TA(c)k%>Qz3al6mE|aUFW4;W zoMOm>beG91*ZlQwNn8EaAcQkxO+$PRM=IIKFM&s?m${XE3neL2qgHoc`O!_VIY6uq zW@mWSh%l;De#opK)OE=+l!U0Pse)QhGn3zdn|`o%=@&TuC*6wfBgtAxnLC|P($0wfG15>L~jKbu?fjiu6+z`s`HiYtQOBSd*(0Qe=a;6nKgVn|^HIRtVDa^*)SnV^Fus8^Id46f__D!v)JR4KamCvHTgfL;y&#DZ@jyTK&hp*9x6oxuwiK ztQ`?1tg6d@X;dmJY?G}$v@Yqbz(ZU33`OC&2!(}f`7pz(+h%d%$V;}Mg4v(#yL{Nr zV!YNk_N(rbu)G;D z0Sh0#UMSejwceP$QwPcU6%}18VF{qSqoav&&>!F9V`~(2;AJ(JQH+u@D|+8pQ?)9X%m+3SD?&(jIO^M>IpBQl6?4dqmOf*nh!N7wTeaJ3AB4Ht&A-)?cK}nLHO!7S`;42OCCc&ZxXNvmi#F zN}gXQnh-yBK%9Qm{wSU7C3<3duYFxHAxp*xA$s$5{D*`~_=SGx-EaG6+|={0q~06B z+?up?5y6CCrUj-o(YBn0Le0z%Q9pF7X@!zUkh3Cek|IOE_CaWOPUuiwm&L$u(Poy5 zqmMTS;z4_8X7_Q&on{E3eYwAL_VnX&Ti>5SL0M8Nyg%5z`NSzjE`%jfr|H90SVu z6I}AMeu@eH+7-vTnMf}@TD_^g)cyZ@w-g#*j+tlNbS840z)i`H=>39K3<$H2{hBv7 z!aJ8pd}z*wIk2`{8^q}-+o>S?HIyk=m&w)REAuuS#ddmw1bUpiA9T*N5k%f4l zBYBhCryP{}40u=9BYS% zIB{;Pzp9E?&+GoE%`vExSBu_BXOXr59ssx93XcAjI3ujJ=j#r2nK@|2mD)h8PRNijGKXEIDnCooQ0x9$zwm$f4UMm+&MX9X|LeVYY;xM znbb9Y*nm%(T0PK+%B{YF1vUr{wmM9I6sgE8l8PIV@H+irkmC%={65fE1Lc&F* zSP{vqaf;Jh0Kp+*Ixn}$`cm72NGb7Ss{BXx)2@7r$jm9z?6Qg?xd2k>{>R&)Bi=&#jZnbK%u}M^xWvE#`d6NYHId^j`EL zaGtTc^@+kD=`ubf$rRzW8D%Af3v{Fzz37c_+hW+9cI$5*Kk&p6lz>upQv052yLsaC5MRI{M;mTuqJt4)mOw-wA#7`0;Uwt4<_U?ULXSgDP{v0Jq4;cSQj_ z@b-}jgE^?Sf6-Ut>wF{IGiZwa0a>F=GImmBFi=(ct?pxK$%Dy6sR+v4AKhP67;jrx zTtDnNuXxY`rhUc(K){2uR3f?$jYZ1k^`Tnuw=uY)nE+5n#y84H4BX&2`x+tQAvIqb z0(|e^$I3aAnQIm$3kBFytf#<%U$QmPjNAiO|Reb?lYrH=jNR3B0xq5L~xu4?MEr?Tl21p4U&G@QoTWI}P$UiXA{J>=BDK|VUc(9vnX zD=jr*mq1;mnVY@?KE(DkBHizb-a+Y?g?K@)SgqhZIul&S6|L!+QQo6zH#^s={J~Yv zxIs5*&sx(`Kt@`kHmi2Ck$SX-8W7+?lbJGZ$9N1ZQ1mR8py+3cw;e{)w=Cjh`GT3D zzt|%RJWY-f4n&U^pam|AK>9jM7H26z84$5?=ob4Yg;ZcbS=n6NK71Ccz!^+El^F&~U!UyAmfTr6po`I5FZ7Q>2F!r>V7i;uwW4lfrUr*K=QV1E?)GvK zG^Mo7P)HG5EksQY_KBEH_2DG5GX`F<%{ONi=^&~oeiWOwI*8Hn|f z*d}ebcwEGR$~|)tRowj2)i?WY6tPT5Y8cT93=RW%yL!3aQ7VC^ux{ihqYuIwg-nya zPUxifKek}NgKwq*2=h}y##qeR7+u4o4qT8Mg9`uC5P&lYg~n}N0S4IzgxIxnrxx%a zC9RnY|H~p!`5BY6geOHNJ7LcRq9EgJ>>h;mt`5@M*yuoiSX>sF~jzLdeA7XCsuAL-G$Cf)`{RBFPI;-)zwJBgS+D}XhXV`;$(B%=SuQ?5j&8SgJjCx6AlrV0FAnzL-b=sYbr<;tXX*)C4hO&pCeaNhnF&g#G z$Okm&?tcS?GI-%zqqo}Fc6d)ih&Tz9VUZW&?nG_%Wf1dvFaF{9$#Gc9&`X1fW#xEh zyPr>f-tV%2#R1iFGBW~>X-{S}Q%?VCZ{ynoxq{;>|H+*vxSvCHKrOy@nP;`h`&Fx< zYQ(*V%+GCz*SFhm%>wn6SZNWVE*BVj&H|Pn zMXjREA(2IApjS_LVfuOPn$i!r{>}P*#tKd!q4mfxbayAQm56aK1wo!?xhrG{u7fN$ z`<{ZT)!P^HHXpkjzvxi=K-($1p;DR~GZk6rJD z@DentvTK-=9d|qV^h$%M8gvtNPyRwQsho6%CGu~uoz*YZ*)N02>M*8u2%cxOEdqN%x?Fg^l_v1m_(0n?%)NR zM}yTq%P>(<`lyhJ^78jtORwjeq|}&3q^p(W`qaeI&hFZqh-(#hcfjZjy!N% z{oe-8RRg^4j}JiPu{IxXSeI7960G#$kef^n%DHz@{PL7`9HJa8$)7@XoneguogYnd8~q82GBP7 zqT`6~4|~XJhF5WtIsDpqDw^oNrO5mO50H;N&PAiUPsj;n1SE^yQwq#Vt$4NOs89}L)i4X$ z;88B>msg^}+_T~&%nD(Fxz{-&1d$Q|6H+I4t8IKw&S>9UGt)R?LP+WcDAKPIaFD(5Vi89hny8J>Ow1LtsL1I)R9&DIfZOX zSlOPp%E_W!-_S!_(qUF)&syMI79uwo&a3B&fqPbh&WO!E@H|G;=JDvBPS0agb(r{; zoUpAD6}Z5h2$5Pn!%&t~5b@-_^x5cmG!cl5WyF5B;Kn$1wV`bQGagRNz?5*Cv9>AN zJyFsrXwX~*v_EM+ivi^D`#a_9$yHs~?)A6{|P*erUk7}EOk*JG~|flV;zs3jN*t>!c$Z~5t`3ed|JEm^3GKRuzX`=6pY zp3+7GW5VXN8H@n$sgYD@@IOE+Q$N13mcd%u~0o_S<+^%82;&|A(;@5a4J#(yyN#G|`HLn3nC+<@8zks}>PCVJcj!u-S#)8|7A= z)Pjlb>W>pk`$2*4bk}-1DGo z2xXyZ?4pB(YN2%kP?cl*6Ckt+z(qt*iA{bS$_-DE8(D0*fXxq;D42J!7&euHDq2qV z>pc$YQHJ!n@8#UBFlH?1;n|@c8kyS%enQ+~uNn`s~x9pR&KEj)qf*EE)AV@hLTt zX^n5`8=~&{_ppMT`vHMR2viFo5MW82o*)-fJA_^M>^x9^9LT1*#>8o@{HhIfNn%M zfU29P?neG~G1=j8!VuMHC>o8xDrnIY1OgafsCu6D?`EQe-V_y-y9eS!?eFT{_BcH0 zJ>2r(9-mLC4V#1HY^$XEw;Q3{_qK0AC6H6Qr9$L%9VX;!6Cg|T!I8&1=r8y;Q4^U~ z6|zrJ*}v;+Lg{U*%;(QB7B@zm3il@!6&`HA%!2Tj3VkJ^J5Fd_?VXcGhR=Q!8vi%R z8Ewt@ACziAjgN6QxwnbuJv5zWSqjogC0nHP6O(3k+&@+Ab5zR8LSQdIU&9TQwV;IV zRFxy{COeUoCdeDyC@y|q#>fDX59QQh>`fK#>G5ppD+<5A~!U>J={)B_Dj2%<^*W zGhOQqC?%P51;e;;ti1{)3MrnBqXA7>_A?8QwoifKx_MNAZbA;us{rF%=PYeaqL`o+ z9zAOl)s!Lr=CfkNHuZ=13tq^@zXn2=rVHR2yny;atO^ zx*LGtmf}km=H|KM`Q_ts3A^Zra=^RJmHE=G+8IxHMHr&INXqp$vDr1a(ueA?t86>~ z(i5#lvpOu7qkO^jX`H(F`rf{tGM*uS=@CZtlE^cu(T=H6<)^|&^s*NcrVRy=0%;Qx zs*;Ew>VSVt4vVdw3C;pZ&DB+oRf>0gpkOqqaz$a*%H-Ev1ncvxUm*CUW@i88OVFNR zGG`ez(HSf3*DO&(2bFu4ju;;Uh=1Bw9U|eJNL;B17_D=sEjuZ2{h7*vqw~rRxM3R_ z?*Sx`aSU?idMY5ae^vCYD=Y^khx?}~sUC45+&{HIm@n@5Ok3TX)8k&+%KFl?rmCJ) zR)0#P@jG?0_$TGG#yanYCe?uCB-vzRGO?qWvi!MeeD&B-miTzp44mq~gTnF2^YkRE z_TTA9T5ZpAvbFghzmQ$FLMQ}%Wy`YEE06&&!TtvGCnmIjY0J8cB7+517A&l!3fxIMxt5l z8#)+c7~-`$L5eM~>nhHJVlZ54R`zV){xkvD^d2{tG1?w1G4r8;`8?-A(?p`)XnIX| zOT~!#L)DMd-~WGmI$m#GO9AP9UD2Q|ZGF)VR;AJ`_3^dlY^qtkCr*>_SE<+s+K<_( zo8MlQSF1YiQb)jFDH{oFM-aABgeN(|Pt$9yx#G#*v`dHhom%A3p);kj;$2<)7QQ@} zEA3p~3s#%7KwyyzSX9G`sDkR+XXd9wIFIfWssGpu*rB@fXDEL%ddTactbLY^VtfM+ z=1t)N29=mzr%1UgT0$Lu5CO~iWrOI)I_x8OeaEMEd@|P-PQ{Kpf1;U*D|C4nD#E`w zH6lKZQM4VsaKcno{$t(zYk-Er!$Nxs70}N7E*JGj`Odmu$zRRz@=>HPhdc+U@O~oq zxkKlro%Vd*TaS)Cb+UwMx1>{{k8X6Hau|`PP7*S9)v`U;TlPY;c*=)}XrF6{5HN-^ zl+_f&-Y8fV7<>Ft!;%!{o6@OFLtRJ+-b$9ERMZ=bIAijnv4lWpJ!cviqrw7=e;<8( z)bpp_S?&idSyBv1A72Bl%@AFZEA@L8VQ|bL9Dd3O)mvdDfp*oDy2+$|;>tB+Xw1cnm0^P#8h_9n;TXyD} z&RzDORlYoEy3Zw3>m^({#V5uKHF3!9;~gYyX_ zY)n1`6!0*kwW6*e-Hn6F-M5pVn+9N5zAYzAE2ja;=Ykk3(2IbV(#e+(ST}81v87k` za5#?x)iaLejIturJ)ey=0!_U;oZ;EDPg_Q}u+x0{^3F!p2dK=5q7|A=N+FB@hG{!z z=M-wD(>vqiTlfHyNjuf{{;yua109ZEZts1TrDgx4MGcDKr%ltwnwjOw*c#L6&syye zW=e$^D^ZlNs=uUnSh1|X8$%dTc#63%1*4mt!&Y`+EhmKn>3Pg`lBE3eVn9p=wX)AD z>)gfJ8#izSElslBEElZr@FNQJS0ltF?t^6ENibq0DIr$ytIw_idk{;@6vjf_2ys6G z-T{*8Z2{i$TTO|w$=t5st373aZI@gZhK^tqgLWoq4ET^&gZ*bxm5mLgccpJ| zq;v4w#G9Jn^d|U~>uI3C<3cCQ5#GiSnrxN;0yAZk8z7Lws)aUnQChz0=4!SFL~`9#=kSf?8(J!ngnaRQrR7TJC@L_?*fJi$6C(4 zRc#2In86(m4dL|t4V}#4;SW3L0v$7_3XTf~SUtJQ}%B z73s9lGVxKdSnBX$D^n-klozs=XrT1Gs~x`ooY9DZre2nB?}8B+r_HY!n#oPc1`hdK z13+`*PCF?^XM|UUO(SuG4$bzt^(;ywd*U+)rLJ1 zC)8&M&A|ireQM~;8~Pc*r&WOvR=XMNPAv^dlyB7(Ro%wrw|ldfF^(YYmeOF&A`{P- z7b_Bb-JLL$NdnY}pSX(0#d1s0FT3!?7tpBBt^|65A0x}(cf{sJ?Y~7*p8rt!L6YOe z4T0I2(r9sG2fsfhOPz|VNkV4a-90=jE@93h!oa-c67DSgDn%jt9(i$lYxV+> zWeFvOU|8Wz(dp3eUdn`PdxD8xzf5%=U_dETqzysz|heCebizto&> zQf^}RzrUx@zDe9e+Z2@a@-Bw*@M_q#kIgKJi3R6?po8-2D#Sv*93td>a0G6nm#njl zj~R+p5V9i`Ur4ksi9RY~I;gvTM*Jp&cs~$q;(71`j;XUBO*}Qdjv`6?pyux5oN|H&7SYTX`?6AVD7$bP7XTPgR z5T0ayJRs#&o0+&7^4Sp2g_3lc@cJZUkL%YCT)v)*MtEUnvYT_fu{uSUD)=Fsg~s7^ z&w>&~V;=ALj>M3|0b=>jA{6nedI*xAl#B$ln4)}ly;Sag6c`XLG^z1(TH6s}#LYy3 zl@Nf%xy1aYs-`|z5DQ&K2=jlr!>XPAZ(iqbhI~DN9+csgtqGL=i-Y3VJSv>Cc_hxI}If<_l@Tpn0hzH^k?* zqKjy3p&pCUjDZK2c)1nh5ie*D=nBK|q`a9*l7XAyQ!1*F& z!OOSu_+3TOrJB4MdrX>hjJVk$Gseyu4Us=9`4{-t^i}iqCVnX`f!~?PU*!uG>3HMy z|3*q_b#7ph+d8FqTYS&0OOQ^o39_CG4KqQ$=+p4woppy^W&Tv7pnI<)H>dBiVG)+J zP{o6TFZGy7VaPPT5Uh*Vs|+}t2Wj6p6S^4w9U7@->cV5?W>mIREfW`4X?RWlf7yMm zj^;a{_8>{WmX9QN(s<+q3DP|&lJ6sMe1W3*Ekd8{*oMjUe^6qmhZ0WmwKt-v6NN69 zO7kBK`k3ER=*nJ?nvPd-T4PvQ4R_&<*1H}N(w=F!8B&L%`EJ1pc)x!g=WPKcKiEdyK}Ib z3j-KQcU2`DyWev9;C=bT%V(goIf`7WRdr&!4g;NLtx~5FN%6)}wAAT1C5=)sIUvt} zN%BEn#fn;UK@d$k1z9s#qLgDm(L3MRTuDmMMIbT?gG&2h z2rcMW|8P4NTK4}>7j$d<8J~CW{ix&W4_flDWYUPRbci{G*{5q+r(=^Cc*Q?_{E0GY zPi6|>yxQpnFmy3!5{~&YSl5gbR(M7gRVo1`V+~i0Vy$hWNX1L}Gl!j+tMw|fuZ&~4 z3AxIXY(V^9jt-%to>oZG>o6r>!nCwL@Ty%|z^S*?WLG z6X{$sP8A-0v>&IiQAE{l?LOk|=6jf{;!Hg5A2whGVj`#fe9VlQ&1#}91? zPw=*M;+G`!9@G9W?+8I}z}T6+K@V2g1i?ui=M>OpOm?!QO-=^%bAEpI9tQnEpdbtD zyx@6EK`oK@8{mo!Nm?>_C;c*q_SyT%p&4WJ5T^Yavm7PHK)dA9hh}n(agn zIvp$RIsHk(Qg*OMiM$2)$vR1mM3T-R!KoG1(M7Ygk8=Gax|K5jo*IyvEiP zj9?Nv;s9vTG7QNHg}@u_7i?AfBa0v%)u(PqiM?ZJku?9DEfdOQk8kb96`Uf7ZARuB z$Q5ss{QL1Rcy_wP^MnMBmb&ffqRrN%Y!x6Ie*(E~rN<~p+Ig-mdeX4pQ#utrg#>_4dOeH!%nvrRx zIb;7P!o(4U1jRUA)_?QQmfp#cU zMQDK452w>{SPojHfMHo5x>x z+9>1ia>a}pO9vLo+favV58^mx6Bcy0@S_qfHW820on&0Q(lu6ZIOk=hXIbR?1T zYGOJ6fp%EPin7)Qnh#qX!@Hf$Y5D#se7nB&JGbceA`0`YKiesJb(A6G#f53!3hfC$ z7NHyb(2@t;76C_Mbt0Ti6y6A}thm~|p&?s|gbKgbU+=WS`E&{vU^Xkn&%;d+I49W5 zp|NzsCX~nDICWyi)es&p=dXBGJc%?f+6*+!3n}gJp5ffVU7kHzBWBdG<6?FB;Ow-_ zKNP3#R$wk%nKPsY4ds@VxR?mBQV>#72GsC%>a-iokVD>D)FDRFT%K;v{-f(<=(^<# z%E39(TZ(qVQ%1TeUDB`w^QV;20pcjjUX zxR>haF?BkA$yMwM=QVOVU$_C%*5AQul0W3$0Z4C$wcF?(Q+$ikd!pN?C*h$))C2>G z#OaXXMNZhp?$-+*%6bHeD^UqMn2PX|M!4Lcv--zHn%$kb&!v4b$NnC_1QfnYVKXcm zMO?tZClrtuf(7Z#Qm}4X6ij_ZJVyQkz)VIpY{IIzp_YM8aKK4Z+84$7CzMO zEr}~(q&L{s)lXCtP_~|>H-vz^k2hyz;I&dw`aW9r@&JB+cnS}7#c>e_ z!6$gIbmJs!`f4#CUo_4R4;1Gx1;SDgG+$R09GT*OTq*elITMIdqp=_sLl&G$(N1QI zCkqg8ui}twcK&Tfw5{&R)RVmv9(#~)KlRG7jQOM5${z#`;d>tiGNX_pB>;MHBG#=Y zT2Q-9yp)qbJtk8lwD2593KAO;v;vVTO#8rty8J7ah2>MBcUz@kUY6J~LUz|Yyd3DS zKz!AWEY_qqNOgi=Y;Tv`Fjy`w8LSd>y|tHx!35S4zZ z*shMU=l&L{h*jC%0@2h{$Gau*3XbKyp`>)|>`G27ZoTVWwa+6^>N7xnfnuB=asgIx;_oqO101 z56JA1!1i4ca@GK;TEY*uVMWmk(6?yuw{D3@<@A}j?F#*y>83gh^*T2d#|VEOCb1L& zZ~O+~)gLrH^$UBR zq^?LncwikCh-I)e5S0SW38@%u8?~O2!(>@Njhg)EhxC#^Koq?1;rGPnl(oUge}Bwp zh>EJsf?E)g2lqe*gLe0J1HK0p`og<@FcFS^l{?;>P;H@yh?+8|-l>^hq|x+JLgAsN zU}fQxq{4CLz!!kF+pdiaALhwCYR^GhOu*}MM`CNtY(LdJ|2KtYs2*it!cMPsNM5c; z16PEL@`5LISPeZ3cP$o2Mq}3%R zxE;q7RYhwfqpyYfI1Ap-xkL;s+_Xqvt@1)BtS96k8;d&(u@HTH9XP z5}pG6Z)HYDu5>~mJ>+HzZTG-T{(FBv;Dox)!t0@I7D0^g(;4{KYsC95^+nGUDBsSLU!2ia*D5__daU7WS|q(akM4zI$JYf?*bY>C;Udr|*C z0uAsBsE8eDou#LGAeWUDEu`~q}$QnfU_1ox}+IvW^XSv{eM$3=wSLyl73Sdq0kBQN#xR^ zGcJ@ag-XB@G7~sXf1Sy+@j55-VrHPGe)}HpdgNq#ic>4=Dv6E|UAFCgzP1%Z2=c!^E-Z3o-2Ea4#FQgdj3dcpCb zZd3%OIB>%U9x7$tT02O+cD11kM3rYL9(D2pmF4R0nkV7f10mbFHw;_kSx$g?WYoEU z@ELPRaR|vIQDfJPFx0+64aZdlCzmf>Qi>|l}ziBohT#gCg9b5Z(Hnl0C?9NV#Paaa%mlL`d(zPdA3bv)>>xA%n- z0Mtfvh;w?aRFD_)GGljROl+LDp$Z*qakl4C>5cS{H%;in_He&A7?Kf@_>^>!wl8cP zd-cj4Mz7Ce7=y*ph8oj66Qk8>kCsIOF*a`xj|1kk&Q%y9H?xmF(A7f{SRS3P7VVP; zgE>$BB*DapZ~FUMwB&*MQK&{74K0-;BA67(!*%g?E3+oLiwnv1A;8?2kScxN{9jaf zC0??C}q<@d6wFs4+$w=?% z(+%|WV@QNJ+QjW2!Gzzw!v%Y^F$I~j&cu^eFSu-tI8VVH1OZ0!u|be>B98p(HO~`EjZ4 zO!#zZ-cse^0)-vIwV z0KngcvF8TeU0~gVJm`EeI&VEs=8~>Hy~6c^qGT|cFj(*&GcCblg5=!WUV{sAWuigJ zG}_mD%6`Q0wPZ)?wBXt!_*@#xO!64zeU^%*=J(213#9e*6oCz?Ud>KKv(aF2>b9{)8y+| zdd5T|GeXi!yqqwxpA>~ykaU%5pLq2Si6WNHjpkm@&2E+(hD_Dm~^o zfY2V;rfS%)5@9l+TZHBfi&ri)!c??@%@E}ODGh{ zFr-#1Bu`x4XQqD&VLtPGKnra(96RRu6#<1MS3KrS`bVAWkN3babS ztp8R(e?M}^nPE`UPZ$?Aw68AkiL!ibhW*$^Un@o0<3Hs^X6+!Nk=qt!Yn$GW_dnKcC9vLB|HSE7l}Hkrb3&heGzC$GPos)>jik z5sn9kXs`{DmSL_(Wb{JLz6vd>R28QF*Cr8Hel+9@>F@Gnend_|u(uiQ1<~v2A8UdX zYm%IH0h)ey1DjeL3^}c3Q0yk8 zj8TJny>6@l`EO`#=Wd!B$eDOVn-Yz#NQujYc&nshT4&3t%~=q6HentW3|^%f4=J;` zHb;;`P%Wr?Q6XF?JJg^)9&xYtA^ljOz66JyMcmOYn6hjtSq{&=3fndWCA_8(1Y|*- zKGL^>!R2Jvxb)zou2wC17lRlFD z9D=gDGcWLhU~?Jw;wifzgZ?W)`S&G0BoA;?Q$6njwMFY((EzI?@L4OgvCPFb{hljx zTBWN!F4hPsivX_1j48i>(AX+gJ_yrOF|5(jOoo7mAS__aR7onPRK|(2eQLGWMGXeT zMnj~~@HX%=nFlMG#4q)ye!x^`M9_5-$ReNXzX++|nC4zHW}F_KL9dMqZm_DkeSppg z%_*c#Vo<`Onl`P}!i~gSlknF?LvJa-7TH?7hRP2xw?d^Rj@u0py@p{xcOwV5k%42uJ>k$PVafcclUu!YTxK$IzuW8Z?UWQS0lIUi_bNHOdTTu z+L5k}s@IDx(|y`2^tbo82L-IUIA(R%h# zDApleH*PaqCby4qkNnt;=rs0^GWg7c06qBll+n6q5vhcm%)tl}n}pt70EhZ3L@z}g z9`*c=kBM9XA%jLC&+vD-!#fd(f2+;4Ftl@InU!E;zd?`H&_Vo|el(eU$Xntw;m7RN zwz|}~Xu;_vr5k^t?bU#LCf2yaw-Ys0RZ4BihwBWkEu4~WF?&|TzzGH&lTQ>Z#5PEH zYjt2s?69SEADJ|D@csiy4$0QOImuVyl(n*0?h4_AGfN6RmZ`s8h)9gYC?=N3J>G~J zWhG-uvM0RbOBgZMAFF&EX}2pc|1d zQs;J`nEZM}De~AG-|bDhz+ezYEI2fhvone2Yw8V3u0?WlFuvU=2kHG}eE_vv7`GIh zI<95EdVAmSLEmK{7({PG=on8S_F#hrG3RuNME~?~Q{bB!DkDq-1p*SNW|xJ?WR%1L zN|DhU;sG6O5b}wb1$oLTEe_%s!bJkJNGY?wpZ#FP*(mDeOl4rtHV`xrThS{+ z4Xi(HdK_x0b&*Nq+=obS#kS9Ho>^z<(Ky*}?{CFh2i*s7+7g}Q>jaFKG?x1H@LdSW ztFGExcOm1OL_J%{aZFg+&4y(ndn`ORj{xYZ^(nJJ*bNH~qT1L|@7Cw7Gt36^zKfO1wOtZc!5hzfVgHadx{yfzuI1=4Q2T0AYEWq0E(((kJH2H7+L=C7rS41i(}bAIJmP$vZnf*zS6xEIlWKuw1pwW2 z0?um74N>EoQ+N4sQ=4%WJOK?hW#q7TPkOnT$`O)7#rTF_svS!AsQ9?YA#n zlxim2s+^ABTFHnOZVJC9obBZIEhal^%xWm305>L=UP;1Usq#SZ`v%4uL%yVqvAG#d zeDjAB6fA~>{Ut7b*$m1cg^VIXV1aXqW6y%+wUl`q#NeffJ+Q6QgW$*qUj&&*WZVI=LpIv)TsoBPb&uNfU+{oUR(@$FY{K?+54S094{1Uq_fnTNfNlgbn3-# zB9W@sKwb04PKSGQ^cTqCdDJ>WDP)suI{HRqJv=$SL-IVM8v|P(uf@5qS**jmxluTt zER*S5lNPH5#gj>wQ2&uG%4eDTp>}7;`c;#Zk-W(IvOhpqX6M96+$ia_(n#R|+45wR z?UnSPtE+$Y_S}a_o`2zQSGKyNf=?>}^gU9XjHqcwJN1;RO$rwH|D@JUGjEm7ey=YS zooHvO7M|&j0IT{T)J?NiU_A^fAPl8}@SwkpRTknC%J>Q>JKYADUnk+%Wj+BbI$kIy zg)U6v{4z;pMT_TCPpcQY1lL)+?_t{Nl8ZTxbMUGT{hA1h4rW4L*(*q30f8pg7j;8E zMt&cJm0d5I27%g_Mc{RYA_(oQ*0R;ijymXG^*TptOK;^wGUd6unS3l_){W=hLpY96tms<6C}GF`xMui5Po5UKr5 zBn;IXsENYG0Rq>oqfdGOhxN^tZPZLXr#buv`k-*5jZrm_@H|u5h!vu9!sFJI296vi z1)z&Gf5c2~+A)h1rNBzz63gR;>bH@G`(mw7>fS*(k%<{?;&HIT z+1h5wYfg4q(NuRJ%`F`R?b0ozhZ9TfQd+#~~{ehYZ^`gvueAF(*Xo54Qr0}U% zf~tK&LXu)>Pef~gADyfIB0YK26~x>rLg^X0D?2=kKIs5O zhQ=Yl|98CA`5zt;NyOguOXBIkB5l=|E_CT7^!wfI*Tq)@M?+CeI-=WR?V?Ageq=gjy9@+%F9&Q3jcd7JGr6l4eX^|7}YwE})sp02!m@AVNo8NcQ(jH+`d zTG&HMvP1mw3D%z(?CLUS%)*|8xl(I&kE~Z2JDHXgYN9WyD5&}OCfov`VVc#f__O_E z6Dy&Rt<~H1TwZ>SvxKJ6z8{L-VA@mVS~nNNL)FUl%;PD;9itqMZ>SwI`l;54FV6@? z#~Nj;YB$>+i&18F0*F)ujpdT=aKpU%hW)6x#%;N*lDw3z+MCD&lH(3J5HpKNn6JWO zdNtz%HAfq2gUe^U?j_IUXjvc|I?izZr*m-M`2zXrfV81&fU``Oo=$8l*-`w)@8%I` zD%rZgQ_0SCtU~FQ)QdtN>GsDQ4@k=gaR_F`8^*es+j(yM3?ul_`C;Fj+<4$qLHb(r z6VKt*K<$J{B6OI!&Y>9cqvAD*-hmtw!M-9Yd^j6H?3^Y{2p7Cdi1;VY0lT)hiiwE8 zF^XW}5SCYb>h_ko_;*_P(d-H;7=VZdvhRd|w>)Kxd2YDdm`z23A)C(vvk zC4tBN5_J%u6Tb3qVAgr=4_JhFYiGX*W|b`A*m*mm^0Jv~<;2 z+?|~*nDV>sI~#HMY@h98-0+Yzh)9VY{J(5wp$_?2F9)nP0<&uSC2hXzvq*~D^Xj-2 zr6+C0r~9`l23$(Ca^C#*1+9QNB&y-fckD7YT`!m}4adB5x=%0MwEWdDSm0k#`<9oH zM+7(|j8kMa#%o@pVxE(eNAX?74WGsa!oUqr3*b@~>KsreNLt49u7L+N#b#1!Pnw+t zkpE+R?Qho1R7$EqMS_W@kLRmH%#!n>Lm*)qqbg=kg|=&;!=sw%HRp{d*x6(ZWMv|%m*XUUuyCNb!ECYow1Y5^SRnW zHKuMe;dP;!9FOxm>7#3~D2L&j#XmfQ>lm^3@M@oxdM`ip9XIIUdKS%H2KWw+CiE@} z|6I4T{6a+dx!uCNI9{V&lxEvy<)%1s-DpneE;Cr9?zKpL3&ZkG2~4rJ>~Vm|3x$p( z7h|qKuoO@*nx$Ql7m)p*p}zj0#I97niAf+o%Y>bgCur2%0~im&*P8H#k|5CJ^L#or zjWgnf+B4KZ&$GKo)AccjEz#=NbX(zw>WF3*EB%a;Luu=S%y+H(`p4;941(DZ-!gOk z$co(VkHqds234-gh)NG2^kF`GmP8!?VJ}Q6rnH@xZXeZ z_an^y2ZEW6S%e^7+Y*$Pnp@_Qi&sR%zhIXr+cQ8<$4abDHjg8XB;^X2uxfaQzSA%$ zq`p}XLqxvsGT4d6NtK5^O)H|)p z4j!Dalid5PiaOgI734&GB+U}pxCz1WJ zC-iT|?0s`*b_*M2YzDGAzj}`h<=Ez9--MI6}$(&bL&9@{KPasLs_0-})+CV~N`oS;QIYjzt|m z7oPnN@#rBTX;1)n17|cdJ$AN2pZVFBwplu*QjT)en9tnNu_cJVj_WRQege|PlF2<| z`H~0ce3enw7h=%6X0-L9ch$boIQB#4MN}IM>CjPkp_~S!1;?(J5zmG9kFrqjZ@QCK zbgBH$hJfo??a%`?LzRe%(MY-;&lG|>UeXI2ONNP8%nAtsEdFuqNksCZQ*qGL18~ng zD0=~TUuBItE326Vm=(zg_nLpS$qbQ(0)Vyk&3}cxv6?M+)Q(KTK?7{?qRp|H)PATqMr56bl4xqZI zqxGn!3kS^*D1j->k zxS56Dc~X;CQEP9+$c)fx$yXHB0okEp>kqG@s`a%ls}}XnK&}%B>qi^iI1#Fzb8A_UQi*>e&_^LzyIEno>9uMeII-$ze@b*|93&uOoLI?VK>G)Cq?_XbwnB z#aJMnYt^fy3aa5dbna6i4`q1u?1))QbwZIA*a85YRhnv;zq%+2%-0j)t@o0FHJTkK zXuLdLtt#yzGJu#D8>t}4`^w3Y-^{p!U@Rq|>@eS%=Nu~j_MgK-bj=xV;K%K~&=r+( zuV@M(2^}$vnm&-Ps8VMS+JE{tJ`CH-`CO)F`aSTLx@BgA)TqmRinyOUq0us6Onz}k z13{?WI@NLt{$cMV&bP%Yh~yJf{CI2nSc$kZ(h$o&-Y3qp(Khm%3X?yQ3TkljP$ai? zYjbkc1E&<~iW!T>#oq8@jexIkAX!@{6K0kG{YZ8)l0j8VLs?s z9=bBXp0--mF5*Z{DECA-7ESeK};3>+CFvLZjUqRi#SkjhHYy4fn6j zUXh2GMDAZsQlbjAIqMtn&=Bs2964YeJ~@NR=llnn9l$tK4M|v(ij}brQ3>hTsoiO{ z0^nV@ac3#;HgHVv_-ckF;6@dxu7xFkzs(XerfVQSp033AWOem(7))}-jJ#bHYQUEX z0&93N1fGZ$#(WO>A6`LX6Pcl@4P`g**S2Vsc`30nccky8<9vg5ecy$w3MgmZ@N>40 zaD7u1E!wo)j@0EQz_LjY$v;0|xmI1m=)4k1;T~tM2k7SJGTdKjy$nlZ@*?uU{|(>q zgc}ph?@7LYu0Y%I@C(F>P^v@DUSQ~VNlb+^G#QU0W&+A+9aD7VACXWJF8udDWrunk z#5%+*fC38ckHs;(M=${yNR%cCnKhp)w8qN$K@Sn42QIo&9Y`Xh$p1+rcbu!$^@s}8 zT_{Hb2(P>+Vzsp)_S_qGx5DY@f@6wJSb2AXlH6VO@LhPoHnAVD_yp&LepfQCC5ju)(@P z;c#yJPZAPLM3lecIy~dx=gxI!NFuHgdAu($i@w%C<0KSxi@?a~5ss1dic1jdx_t@4 zu}S@G&4c3rZyLlGjBj@)5GL=a7osc}WLpbJ81IN|4sSARmakRLty^^82v%d&2>7Q{ zKaf4x&rig;#ANP@+6jkF9@jRL#QGAL+9Dr@0vp`JPER;Rwj0rpgR(B$jseJS{$a>% z6=+W*O&iU@JD?7D)6ywV9wYW+0Pgv$HkD8JA_RFCe6Wu&CE4`;TL=?l4$@p*=O|LtHy9G9~{=PytGXK&;Fd-_$ zezFi>d8}|FtEd%EmxKL4Fl1P%8c{2gj^ggBwExGjHCi=?HJ~ag)X{rncM?AOP6ma< zI$ojNCUUGh|A@Cl@@_eM(azilswe>KUi$^`F%uPwvkYmJnqXR$2dYM*zGRFzK~E2A zi|X-yZE!j*l)aitXYYgeg*oilX|(@H;2`5oEUjRHg?c#fgOoybc3%$T8Xq-Yt~=5F zH&(z~*4zuKeU9Ket}BqOug^c*!KhG@FS}c!vVHF)!E=n5%J9OFq>fE(vs`(;xeuVv zS*1H>>*PS+g_nMl4ztF7oLUV$9+X$Cg=rXy$|~+@BXgl$!G)Fcb}-3Pi{eLsNwDEBcu96GZUmbDpr z2la4)F(X7V_-{Nw_2 z|H>k1B^POmP_2%_)BWhoB3ggz)^MP4&0UJa?geN0u>V18g17m1_r)yk{Zr<&jscYQ zOl2j<))|yQSoW~Ne?c+fIaV%C_wKRjob#X$vJR?0JP@aIS?%66Z4OK7wX#O{rLuU{ zj)bFm)J#cy;p}g}X_1{roLz80hNi((nHDL^_)&#z!%MIJ-v@J+yggv$_f zQnRq&v0l^OY!`cv^aw4uUYcnhP)EF!;M8`|*Iq2MCcrn^l8$%>{L_m=V-|X7)~~7g zSR9kQCwMl4EP=rl(a#4T_V<4}-i_d2g@-sAEg-g0CTmTP9$(**L^T6B{B{V&oE>p# zbUkX2PX<8WObu24H@v$&HLjE#W>!ecS8juF9(KMDF04NP`E`V$E^~ovqw*uiP&R`i zM)e{-4Jez22u+rOwoL$n5{%QhK&27l)BGNC`71y>n>T3KJt#>nQC>8O_SUh<#<1$F zjGmm9KodrVaTM<){ETm#Y=2j)GuTrP1!CpH$KBgZG`Y!NSuTRENe~wKj`gspa>9r1 zk%b;)2SBzPfM63#ewMW($S&6J5tf+z8a{gFc z-N;b;pW-)QDFYz|GwVfc`uXPY9OIZmTsr{VE`n5cflKS`PE+*J*RIusxMnr3W?5_ZAvkM3>+;&}keMIo;}|lzke$XVS6$T0+kfn6E!wL5 zk!--UM7;*X^1V+zU{{So(reOk%?T{cjE$MhI~|qweXLuYi538j&rsf8pwDquiy+S?}VFb zp&Hh2!%H;EL49LqO9qi#_|1s&^Hpx)EM?a&r@7awTRbu-dUhF*KFB{vyak~B4^zMBEgPENo)K~;*9 zQGg2>VGWKElVL}H`zBVeVl0+5&5tlnU12x(dc|~YNA+objyX?~t~~!jRRhp)F7fYx zu6tNT#OY3 z)({Hy+e32PlnIYH5!FMF#P2EqO^53nc$~;wL8@xu*Pdsp^SDUX$+YykgahnCV#@rE z!BRA_p^o?s-;07m3PLf6=x(qE@UXB9&1c~_qnS7#SE98vPhYnW2gCQK z<=o#*CpWnt`ZASG`aQXjnEhJ>Q}DwU_#k(A`@))RhU)m@*E!g>rO{B)e`Tf6zxtZY z50fqyk`O7?Tvj4{k%HBTDJFk+;3KI|wKkL!^KO*r$#oIgSEDoHS(d%1dJmdkBXQ8u zJI=W$2S>jJ&z1-8Yj~23SiAZl?nRVQWTgE4$2}Yz5_etX`MT=tjUF3E&!8Cf=*4P8 zSLpX)9V~{SagbpOG;ACH zwb>oBoXxJJiEx?7?TvwNvLag?oc=%ne81Lt8R6m$xsqJeXPmv?6EHKy(=2{Yt%$a~ zA*>JzG-U3d$&*$ejGKGHeV9I99(c6Z+#&;6YZ0)4FLFWI{YB0rC>r#i(DC12Jyyte6EfOP4FH&^ zzgbk`-1ErbYdR?jHQ&H~SQ9yiKk|(EcM6sdsN2KeJ2!SKLIl9&TBv$_zTD8y>ICgq zDXjsR6GL!lul_D)E%ex(6;JmrAoeDh5B131OuBPvNvsy{#FvQA>|KJW9`GUGVS53G z*j{{cBp1U`o2w?|bu9NxoP59LlE-70O>RMKVBS$oIuQjIRNmBh@;Ft@zFDCe*f;(W@4QJzQBjom<4Bxg8sclneDA>J&jV)MJSJ}^^JZekob6a=TrH7 z-C~s>=|6b_QLCNs2FYk;#ILg=s2}3I(+cPXB2W9HFB}^lZW^4tJY`m73Gi#$ z+8aRr=Cxaz7I2+AWALAsQUZ713@)npF-OLp>}#R%IF!70tT2>674*ta#TwKUg(dz^ zCi2m(#`r2EOiYrqh_oO}kCCOl@KAitfsGZ=#-L7_xvT*^FR8_$fzjzOh-9z1p~gVX zkh8qiDjF?=3Xe0}_QHpjag)Z?UE609L&rJMd;J}64L z=FLsIyMEBdv^SuW>O;-#Fn)X3!F)-QfaaLOx|Ac8r2X3NQg@zjKHV}YE43!_N8lT* zbswZ2S7jf=?gzIbQVkzzHIkGkzt@B09m{Y4w z#2IQIJXGMu*;m98VIu6u)=rQ8E8C#4rCJ)17DOqRb8npkWc59C!_7hQLg6@(fq~Ub zaP_lf3NSVDMWMt2p|8*+hS2qvq9ItFTIO-!I-<;gyGfb=Am+yz!eI?2B{YQHBTJ&2 z)+Zeek2_~%`fV;9u!8Sr%u*F9S%Y{xRNp#R$NU<>OyfEp-XMK@!QMqFg2S1LRz%7q z_^|xG@|evM#!_|i<2o9fh2o^Qm}9K%byAF8ZO~pH2V{2Xpmwpe~!uMO)=DabDl~cZYk8-)d$u^TGsMg4xJ*laAUNzjjaJ(!%d2JC7*0H{`6t z9!q<>v0^>z?lkW=+c^}W3uyMq8$h7@7Jti{m%tw?PU8L*`jNW!D?x>@j=u0jq$`n4 z9nmMhIdl7uXz9dAmUuY3zpfHm>7AaH^`3Nxm%e?$4k;`2=U@!`3_R*Y*5hCY(vIMp;U$`$n)eZ%5zGBDlY z&->vwhxj?{I5+Ye9ewcw^G^lR!p59Zb1Ls@%P5hWYz`X>eY6l}SxTS3ZMq$r;cPE~ zANKtz7T4KB9e)>HcHNA{OUau4PQ7Es9zb$Z_DzF1bzAGp&BICig<$vB;{;$R}l_)6`u&2rL*zOz`nkGN;(Re%o4Bokjq zr28W2*jjzDvBwOsEr?3`Fg@j*b{Skd3fYaS7a-)lRWsWNe`{g{$78VmD}@^HEGV=Q zjN$8O@sUC+5#)CsljI!=s@N!JVrCOU!7v$hUSy?|o>N8}ts!{9gQ@}B$V)}-#*tD1 zsc#_B(>69@+`2Bu`Qi_dzwrF}1KTEuaHi*Dfb{Dl2~NnP`4fmHUx@g?mAX34T8&D6 z3Nn}D^zu&$W)tfba*?zl=E!|4Eqljn!4U57QxCKFtRv4cT#3B=i-57|b54vC>=!}` zEB-*8BCwooNb$6dPs`~i@w^{#7$h?Tr>ObHKieSwL{G2X7K%Dqw?oy=N&TTl6YtG3 z7X*w(p=_?HkPy0MB1+w1V!642bAt|@U3(fjQd*5vGt}X`m4NYi}LMkjp*7lArX(kcZTKCT1bu~2#~eq z+Y}~?m+-!!lH}U}b>^zNzdO7djt=}!yu*5+hvv2+gYB=&gU}gdm^w%e*cbfRKWOLh z6{z{bh*HMb0u0q#lMHgefwCAx-VFliG82`!*(>uT+)4{EXM9c;y_iklqYXUQHZ*~A zxK()eGPL)XOW3TjVYkiM8?I@F)$Xlh^u}#GeLj|Q^PGHQCeji66(i_gmUd0YT`PJrO)l~T!P=# zbu~&?E&CBec_iw;M7`Gp-!mp8*%4hl!V+&=_9pw6Tezai{xs_jbGB(88|tA}E5(jg z8sE_Se2FJT8^DRh;~GVtrC%B$_@C$+_9;QW?NGoQoSAlJ3q{nRDzzMRU|(nKQhvfW z&AJA4``JX37t>0v&kT-@M}1=G8;;u)<{+c*uKkf!26`*C=FmVoZ8s&>*5^9Cu~ka< zRewByNyEH^Q%yL(7A*tOX*aZsr(a|+L@%w+rF2_aO`x0}*-EWa`!^IJ4)FA1n7Dd=m=G#}AH%s1L{0kqwiTgw zW5@N&Cv`du!(G-_emzz%QE1KZ+>GLZeEJ|lwH}Dm{VZ>lhyM|QtaufSPKg2NjG?LeH>loRI&~9VY)0pPwhhf)LQiKX5bxEG6z+Su1YVb$wuAFSTQG=NG zTlcJ5DLmm{W3I5EUH)A%13&UVXM7qCSR^ijBais1(}nH?~jv3p25%WPvl&cQB~^`1ac`m29&l!&ME{$j1dL|0sJrUUT4I&X6iOH=2|q!)nhgOMji_i+ zHL~^N{xhvz*u?7`CNM6MG#4_G{SV$B9Wv*gX~p>nmtcmfTBI(11a&vw1s6Gt@mC7< zUa@xFe^gH=3(!ld;S_;j!)EQVMD*k)7BDjxeX0>8OZ*Xj?~EZFtI?g$TfykSI-E( zcl?~QGK_LYu%{VRz5BLl%Wbq1oa3YgI{Cepz&rGPcV8iZsz#y^yh1QF5JL7k((Ox> zq(SOPJ>5$z%*gp#mf01o(4n@V%{=T?N64OUpw!XS&-|kukqar^n_+U;KP}yc+PE+&uFK#A#es5+KE#8A#-rX|-Y3 zeyHy?%QQ(_W)o|r88$dn5Ulvo|D~5L4Uy7)SKDRG)j!Vz{f8U9!6{?h|BJAO8kpbt zIo_$cQ7m-e@U@`6K$}31$IIq!{U!e-DC;gFY}u-m^07{}vQFLayzcqENcF+E4##C|@nTns?$m|DNn_C)eYK5I}L&?&f_wC@)jrV&U7DzSX+f}i`U zDc_%Oy>65Tl(v;#{@eToPVfwm{>s}60W)7gc-70_?84ul!i_nGt<5AkoFeOkmpoPgfv`t+-Ca2FR)$&CM&)VfOA7T z-FyhFIVt&6UAJoQ4E7SS!v#d zo#q=2Xe^GZwus@@t2*Qa?o)*yZwr7F^Fg|Y|KriC@OjtYdCW$Lif=@Xo=uF&n?hQnF+o7H-gU55II-yKUje>5^!frSn zbaqPEW6fXme*UDd-=Wn1(ZBLA*W&P3HT zsuVk|i>pb{8~F#8Twxr2O#^bZasT=wfCu06oJxa#1qwegFc@y3>X6}=H@w&VhwsC_ z4sY#(^T>H`rI0FjH;5H6VlAl%g-+KE9b&5S0j>P4WoR6#y=HFSqBl{p_u!Z`2d(Zj z4)CPFsM<#8$Z-=ef)WA^pm>SbhG%VsT*&Af3K_q%7X-O6d>^tW1?q{EDiE5xY`}u` zFy2e(7f`Oud> z>w1R5N*=$r;B;ifcqt;qc73WZY3dy3ga9Nf$2|l(*W?31+)m)UPD^RHDgkX$SQmuzbB9QL5V;K<_nmYvBv&SzGzoxqmJ{E02G#ZEy97)@m6!V#x{CgZy&K? zAqR2>=J2fdu_Ric_$Nqx5H(=_EZOJU;AX;Z>?7ZInJG0};AKXN4_@T?o`VUH<7n2F zZ%Y@wlSfSAI?eat{&>EZG+W3>(b{1%*{ttQ1{*1PmKE)8kNd(k-Gao1T8=z14Y9on$`t z`YsmsS+0<^2kPGE35J0UXxC5ypeqdJuFa;_VqA9~#GZ@&GWnVEji43dzy=b)i0<`7 z!=5`+Fmbnhm(GM$m|61`IOnA*ww=H4VISN3P?P=<%@e+IgRKtJuaS)F4PG$PEl9S2 zmP<`2{wkD?;)}vNp}kbooGEha#`gJyUTPz4yv7U4zzIz!b8lw&g{d?nw0`#f!M3rc z4&c9ZJYBou-548vuO#G1mRz<9pKgVa-Od|V9&*sdG8pNd3b~ad6xdu-M79zSL=Q5A z6lk@ngnHY+uj#SYx5rGDx{kFdg&64Hsi0a?3GB?>hdu2X+;+uaT`8WRXk@O7ACE_q zA9aG!oc5gzQJ!Hab%ILW@p&~UOS0?dQneE4q`)PyIjcA!iHl9d5e**Y1Iic%=lrOF z7JzkyamqKf+Y)8v&+ZKP!z@+#3>Ul)*4u`3Y_m>fbBr@c&e+W6zN^-C56+tx$dYYs zZlC;R%q!6KL<4Gl_@gJQy8}`>!sNCwE$al+a1-M2r$kzpF6PtQyVrN1Zz2I*K4K-g zv`ICn@1wR$X;D}kdBoI|(uP z1|Q&NscWXND`{79;7Q$Kk42u?|4)L@m&+36Sx^wC*8Dg|B8lBZx8qQ>-p2Yj3=P0L zS|FG{jwVq%w1Ql|cH-okc~k<^-k{C9hhPQ)%-!Xojkw_%TbMm(Lsl>bHxbmoK`mm? zrqbV~b5413o*bJMfCg^n8naSD&bJt?TH;;S1 zg&qt?sM=6#`VLg^Th?f?5Vi;yiSeqEjcovE1~4IAwNZH@9)-e%gQG<%vG~g=)CP)e zP;QVcMU1H$cv!BkEwf)`yU)+91l&X@!&pP~N7BK?*vChsdoJ-@BfIDzLQ9Vx-Dpti zZQq%lfs~-?$_U74a5+`Kk}DmN0P~z9`+bUq{7l2X7$YcqWy8ryV@bR6tGp(OJneP%3r!<onUkMFrDMx(3>HPDcTu>Jyew<^ z^U6M{a^k+rk!`GyDV}h6uvCL0Yoba5_=I6^?;y!%&3C#2Yk9=J>*Fm6h&c5j)W1ef zF=2VaiM`>?aoOSJU2%U^M0z!EJ2DEE5(gNk6lUgfXVctHxos=<&G-<0YI+-J@&y|< z6$Ci{^Ax~ewj35+pcFI39A6_9C3&M)oj@;hY|%8S38{)|v2w z>aBidHGB6s?wBn=_)Lxmk7LTz&R99G?~@O6dCjITI~_>8=t?l?_1YnYj#ep{KzsJc z!b|J$irkUxT;jRqLCoN8RhN*K2bslyF?;IV*LDw-fu*SkP*t~yeeQ1LgQ2><#yw-R z&6~nmF7KBCfDu=dl+k3c<)^T$ym>L59FrFgdkWK3BSQe)d@0YuoP`G?MR^};ol?US zHD1Xe$Qt@9=yNDkYda&^E~_9h&ili~Yr{CB;NljL5ZpSh(gBb`?$GnM1?(KmTIdu0{`^57RM#Jav@Jw>QD_IP zS>?2G#^u&XMc>ZJ?zc%LSA(bJuxyX+6|e05akyAv~z zq+L`5)_2!@g&YTCiE$xm!{H9K-)LDMGpVMg_Lpf#?Qcj+a<*0WMdp>P->{e z2DeQJYzLSU?^HBXAMQlDQmxtDICuw#5cG~i?$8}Q8WT!h=)0+vXYG+`9g9;a)pgrD z?CV>MW27k=ig6F11U!JT5nayPLhWKz70XYU(_NZf$@r!ea@Y?X=isxzX)O^l-`(`o zew9_+bZ4qhtrp89rw!V5pyz|{=3KHcg9_iX>0J@eTp9pp^(F3wrny)$!0j6;{@X9@ z^(p{btYHCi*0`v7dAfuvLS}~q)d9P0Box!>3vfI9ZwY10-qO9|^53J%1`Nv)a^XD8mxDMm~>(% z#&DBy;{Gv}ZloW>o&VDdMuP4w3rXRNwki0Mj=t$DUJ6a7Lun`3eRJi#?6cHPjZSq{ zIR?y??gVJrLZWJJ2j|EatBR~52J)i7b9?K{%}?Prz0pzg_`k&z;VXlCHv8`k(0kNc zdGTG7>6t5?`ECf&=X$c#-r)QEH?c=U5Unj944OSlA<~nxSyizg##=ytDnpoj%{_;P zihsEBOG8yiSYY5e=f{n0j&hyuK;}-8MC1GzkrU>0_^A>r3;q_Wt#l4ls3N#}SzGqy(7_^eS7#tNVw3Pnnb$5KX+TTDekh;>2s{cAt%Amt&&Oe z{naJA>J62$A~zq252=#T!#FkL`7Xukg#nxW_Av;pqkV_hBJ1?}hWhg+(t)BFh z9!V(|yBeB57A+2{-26K?p~g&TGiS2eaO+SCW(7#T*0Q0=#m2Y%SEfEksopZvyPgSC zAN;gkceX_-a2W!X7yG=iHG-TaUmjHpL3w_7YF`-8`tNL8%9@Qfg7|0QeeyPe|I`&r zm3ZnvK;%!_=r&P7j?Z?dj>8;+K2$3Q4FP5YohXoGnWAl2hb!hbv8V@0c24JpZ~hqu z@S!-zOG1;hcHtr}GkbiR3`R2&aa>k|8EfzwMVYw%$FR7;zlkmy(X${fM+RwI_EoM= zT)J0*1t5x4Jtf7GW_(P!$%t?!}Eb^w@VH&DdmAeM6#@DrOL zQK5AB8D8)lfV6kMgXrGnQal^?L_)1xT%v#21toov#i32Oow9}}r%?MC4a?MtKYrfD zNEhN-|BgYiBfOlq|Mr8dLia+I-2}KJ2;y{k#*QeUnvo@b@#9&Etr)hyj-@ILmI9w{ zY*ZR3xuV$#^4FWww3hanM_DmYd$^y@DlZI;_m>0@EXp>wR)2+|MiD!;Hqz)YTr@xp zP8WRAL1!?GwJ#u2Zk?^K=4zMuK4O-9RoK{re%!h&GXObU?it;{(!`4EmZApxHQ9(_ z;Oy<&>y6zj7)hlyIoceUOW$jqA`9?e>_m#dej*A*-^uIA5yXhQj@c)}@sQ%JZBcQd zr>PW13M78*%y0)~y6n$Ue@2rbGgZkV6WBBQi)%Y43+8dBEIf**HVwh`w0IIT-GfQ5^%F&CQ!iMTnK{aCQI(R#Ng zqfy*66_w}DJcA8s2!i<&E_<*S?%FAW?#JsF%;zdkyuMGcB?^I_7hp$pi zG)|)hRywc13feV!nA&>~(j!I{AV63VE=A{BO&@i2w0tV>+2EyP*ZHL18z$;=W=}Zk z#d;^&`=vM!ieRdN46GC&cUo-j5@kJ(?JLg3|J9GZe6(QLm`d9wBJuywP_!q`$A8_R z`spMHDmm4Ast8S&%3^vpOtX{3!7M9lBxfAt(0S~dKrhuTH&y)KurP*Y-n}9y_jXk3 zO@RJq{=jiiIdKTqns(iQtf$n^8yw$2BT~1pvO|V;@K^9uy(V2I<=4o$o*%B->WBIl9jz zVk$&eryy`FxjzQCwCFQ0#2K5Hc*iz3;|ixoH*&ACRKZlDvk^P!F5tH*PzhQ+br@e_ z+5hN=fnA9t%GSo-ik1lOd}|F?r_;h!-&$(TZiA)jELkoJE)B$-EhLW}c-?XE2Wg1O z;kipfbujs^OW(-ISP|ivG$K=L{c_^=bLzy?bKnEheg`C5p}Xy^AGQR&y>>{k7=}GX|LmTl*0)U zm|cGrA{r}RO;WSZv(tcJBZ!Z|W;Ws4GW`G4CJK`X^s0P8QOMkyWex%|sX}9b;fnP7 z%A*I5pi|a!e)g90CVzYTej2t_C}9XaC~9;RSPOHbJMSXoO49nX_TS=;+UW??A{V+y zaZ6X>TS#fT!9sf!XbrQ76w;}2=KJlYL==Y^;A+`9pe1$OzAS>`YnN=&$|mJWai(`- zLSwO3B0C&;hRujw7-O-vy(U{%CP@7s&wC~_x`7asq|*tU^`*lzkn{e*I_6f*0AR1@ zd2=myFJ+n`Ty54wVgY53lq)y$87VfFD2NYSh^+gYh;2{0(6=*YZsdO+bl20k+4}|D zWP`>$0n72E^+2cGM3Ww3wD{IAXb*f1)r`xFdUGbKFZE~T!Iwm zyttKW{DSO!TT;;5qtX=rubvVN#sgWt^%wM+Ml#8X%+!VNIuJlKDNIk}F7Liz6+Q4GJGS~1)zAp7RMGJWaW|}FQ{3bG zLV`N_Xb>0d2yW^e-(e()MG3k0)7Zg(YpGs63Sg$UMXWo-_4Y7)+H78k&3}C; z*ph~^oECdH$#`T#HUU&1GoJ>Tggxsk)To=|LG`g+@0IikjOLt&9Zej<|)h z6@wsMUkckuDG*N?!S9eRT}H&^!Pd zABT@1lx^!5&{P&BLT**QuImq-FG|8!7zFv+`x`^5MRDsaUJSSNi1w!lZKXX3Nta{Z zmE)*Lkt-2kf<8NIabyS}M8Gb~HipyJjki41Xw5GcQNFUuVm&RBuh*fzJ7D;2QA?1Z z^ipFTD_~JqTSHZUY#HJ7Rd(XL**E)D?Z8R*>Z9*;2-KN}r&^e9n5kqvEDTb~ZFsji zgRs+E_KK%lp}%duNa^5m+Tbk-uLag}MKzV%0tQ|1v>THLpwiCGJU+ueH9ol{HY?7x z&GONwALvZTib_6I*sLr2ck%KaV-8-IxVHezavO#MSDDSc}s_-RT#Ac)Cjsr6w|c83)7!S{mmi zd+S)0@XJVF#!+vZWz%x+XF97q7k8J_VRhn16m0NylGI+UB^o(PJ+%dFCS=faX|FLodt%U*fBdYGYMXp1wqWM~rIvbQ11@6*T}dcRoJp@KxB&7DXJtyEu%<957e6;9 zu9~Dcwy&nN==awR(ePGZ&z!yl_E0_DL5{6mso>vwNoUP%&p4#JfuE5lV zF@ln`<7;4jcP*O1d-1MW>z~DCabiI$A>d9n?7uWIAMg|MY|G z(GAX*>fFcE4puWF?CO~Y5o9jogGdA=;LmP5sSyr3*ggthTx7c>xek|1wjD#_*-)Fj zo-Ivu(&|X=FsC0k9?x5g!ARP{{oNy+r2jm*YtF4=P&&BYWuyb9_*m=_6@ejEA`7}K z)PFPxnzXhRJ9T&0-*>VCwi(OcIj10opqbta5Zn3@N4TY%VuSwgr*fR6DHaGk(Ge+eEpQ0Unk3v`AM zDVISFvpU4W*BCFrAUB189V~?VR`)JlMz6g6DK#7gy@dWuPe2>eImceYHLXn}t2)C@ zA}BSb2J1mFugaWP#J;5-T`@IT{>OCc$u&wHqo&3U+%fQdD_IwmIoa-mhfe9UP;A06 zRUh_1tiFV&VZr|RmiMNzo5!56RO=U<_0=^kjr{hY%x8_&wm5<#`5tzeTf{L4s*pKG zXhOD~TaWsR^6$0l7Kej1X4g9=6-DB})wvA19bsy)3%ICymE$~7vrDi-ya=bO)4#DB zAVM3Wy;xCyZR8m%{T>e(dU@UvTh*N-nuZONcS?RZ7zzP0IZm>?B#E8Q1QAhtgK>NN zEz3v+y=SZjEUm&;7UD2EUY#l}0TZm5ttpAXkXt`5ib~lf8<-TZ&8U=HZlV7j>N25a z>x$y#=1vzNnNrH%{iwf5#ltS|kgfl}jQ6a#{}st>RF~z}`+>*+v*)8Jy5vPgr(w zKgXJrhq%EQ|Lr12Ab5u8TB0dY{cX%O?V=C2(N62`i1aOLO3ZQ=cA9k%XUjc|pG-~S zN#}VaSL`&A{Tara(;g96!Uj0Ql;+SE9N~sH;3WNotRnyqf6V!Or)qDY(0wIhOV6CepC(?1d^{Yu~b~4DHNt*bo9lLw@m32-k80Z$_ z_4#6DwGCk>bd84C7tM2wewE*FDr|>yCY&QFmuvrRj>C@+f;oUAg?xTW7 zLu_1JrE7pch)=_1xg7VVc30dknxwQq3G;E6L^o$b_I#*pRIr*W^9{1ENQjqAS%9~jw1(AnA4zA9@F z%m@Yh6h`5^Q z{>CwO!!SCyg9h#2kAx+49}oWcjVQL}GeRdu0mi;5>AQ~?jTEO_Q^&MC5)D7ZZHDB1 zKB%wD1c5(U0O%k1A`Zutz%eY#nWWVi<3*q&j3wu<0pAH;f%SGdIWHElmOA8TrDpy= zmN08AK4#V%?A(V7d_t$SXBg84=U@_iop&xfO3+1RFLLy&jC9=gC`m@wVXocZu0-j> z_^x#N6aVdMHh=`l4$8vij;c;-eSxv~%44M#HO&RieTpUslkTkYl0=Zngx+Jgo@-w| zE)|zUMAoJ5@IDI1NJC3AgBhq&P`+}otAAs z`0Fu8UN7s9SF&^0n0g`ou2mL38W);*564|R_*A5`^b}#>`dY1_0?*(PJXH7v=5g?% z$IJ_Zx)R(&sE&yd7$%_O1_WgEOYRI+~34+ zWsPwD<2RXFYyPY-EiKS|4tvEVE-3av*uhOtrIv zmSANU4BrP!&XVJw9}R)(vlb-_@K~$?NO{B($GDJi3RrS^*w%)juzlZqda)YbMv$u$ z<&w3|#6QVLfTRkrO8Beq*hwM#oACWM;$C2ZvBq9R zL8zVH4hHvC^3|>dFvy>gqV@nfz3QMDN7#~R-6ZCzW`Fnsmx`fSjanSHe7LE1r`fq7 zKTI1g9l^%-^ex;=`<-s>`EuIwuz23Opx{v2Yr|sF*RA`f7L;jcp`mSKH4*Y7nCn|! zngP$)-b?0^T`M7jUAF6a*;VUGq%3=&-j6t2fXG!yP5&!3_A`hEbT6Awc1`-wtD1~8 zy!%kAB_Y*3wZ6v0bT=+^+1$hL>yZ%9+{6MU9X6$?Kyjh5D!Ce>%PY#vlW*0h$B^?1 z0iA=2=d4k=ADR}#AGrdM+b1MlgWJp^rJrY>2xgXpN(N0*lTidRmKA#rXLiEw+}OPU zw!-7;<+1{m#w4%`lC}H|%SK?o0AKQqq)zxh!YGgabtIx-`Q&zh0#}s1J0GNWs|y z;9%@Dhl*Og_w|GFe{V-F>kdTC<>$q}^{RpI6TU+mG97ES)urg;PnF&~>e`Mt+yq6) zAyLmS#QUZqeJ*EGq(i}4!Dit}3i&95zsH zG|?ktd#f=vpDpQ|p``RzN}1*bb$w>6Pw+bz8C=Bz| z;2^r$i)=_IvUs5Kxm8tG&siu=bcg_WeN(`3ZLmH&e8UYdlE^nP@UZ`6ubpPElFQOO zo<=5yN%n;frtLcgb{(sd6mu!z9COh3d->Rj3Jg)5T$!?*Unc6Vk9_3Cw(+9V>Ty>T z=#j=OJRV_W2#@~HVdZgs*67k0thdKARu1(uUJ3@xmhsviPZsAj^(XEk_p_qaCCdM| zHo|V*DnK{FW|{ht3p#A~VcwH4ho5+7mnJ`bYf5=X?uKAzY;oR40@adi9y;j|qV}rc zuVoW>d}k1sJ#_KKtaKp-t~!83Yq&Qs$(Qvm^2#18q-2BDX(Jaz{?KJ|ouz^2k#C3El%s+Prp@dQteX3Qap=dT0eQM)r0eANVVTH1n+KrOHfp!PX++P#^8p$Jk z@f=AJt&y)vf*ac2qiAIa{$~>uO27V&aVtD0!7`DR&CX@0oFM&4$Sz?U?L^L8BCh(g^xFMPlOK;k8`JA--oi*osb5 zKg_0pG;Y8D^EddlBPDH~+PHdJm!|Z0P9{-|W|fA$inJs$a~?0gs*fNinj4Gp1SQX& z4v-g}I!DT@DEdZ|Lj!32QQ`Zu4ZhIabSC9u+Xad}2B#W0F$@vq)=@%fL*_a}r$~RM36i`g4$N8i245pGdKbzyCc;i+ZXm_ zgXB*UD#9^lr}BfhLgg=!d_EZjq#5ht1ygYkJu9;8d3#?h9n#YKttxAx#fq+MZPR6_s;+H6Pqt5HQ{IbcE5|Zbxum8m_oDbN9g3wuTUgd{ zE;9J)`hXP6Zsa^jIz9r3iJH0NEEJVwE(`B&xA?0ggQ*=3&gZ$L|H+mEB#fB1e^S=V zE6C)O@0b%>PK*NebNIcs+UFk&HE;IUZNt){f%kTL zZWghg&8lJK)>3^;5OHFDkWSABRWy+8?Yi(i0+AegLW{N318KWDBk@7kO6aehKB7%L z;Nr){o4Ei$DmBCrH2yd+nNzn8euek9KaJaU_+sS2<4qkI*ICM{^=Z~0`+G!<6EX^yoUQ4m z-%_D-{wh$tWAYtunW#u=B@0}vjM+!bF~LEv*Wr8Mf|46H;{*re(5RlR9DdO!pw9~Z z&2eBi*YmtVYU;nmTW4Y2UQ9CLic#T@eIL z$RIu=&bAaeL(*V8i`R#iO8~Za|00eTW%OuZI7@xx1J157<3k@9d)q0e=iqbDYr8#y z#-tki->D>YX$dhSUZ1DPm$tYA!zJ1q+z3N$5{0t8-@J?k!0k#hs+oOOcEb4Ons0d+ zIn8R>@HrF}CKeYqzF>j=C9|;8c%z0j#+qhEzBUzdM@xEcP{Q&&wIrI-*Q{97hblRu z{=TcD@C)@lDzu@4ksT}aZYV0ng%T3LJhQNYp@YnEz9+ybCQEN)H5R~aFm@Ed9t-_W z^@IPi5bd1{zQjhA(>_ar3NPaP4&xd|hb$@ws_n4SJs9^ydYHgWvg@K2GV9uO!%wV9 zPh^Qxxq~M*rtS^Xq+w5~V`)Xl;6V6dm~ckV$xq}nzDr*;c%F`qR;hO0Y=V22ZtuKp z4y;s8w=%0$9MCmk2u)zhc)C zxwd1yf*e(n+nfc-C=--5{u2Ik7i2U^GnKXVbTm^k_eT=pmv(TGgg}UIyS&T6XJR!k zf0N?F@f{GC5g@RtA`}wgbjC>D0`s}0jxlple7)kvePw3MBm#rl3i+-FrgrawYTGUK z4`&0WF3qra<-iHjZ*?TOPs3pg4kcJZ9j)eQm%NW^dM0esNt`M8RGbQ(Q~O0P;z#I+ zRycSJ?oI0SGJ?;}3HSCD4=>x}Yk8LGB3vIj_tFheOUv$V=TkrC7z&r!Ssh3W1NIG8 z^cLLV#Ef4|rHH9L9f=rE`9-#n?aq{U?II3`BDVGlI7yR-nRXLmGNt>e>%U2wQGKO_ zvFU-<>5JJRpvt-)??{OJJ$f!)c0!|Mlfl_CUvsXpm|U2xP|s|C9yC(rk(>sx9_W`N&Ih-&G{+ zV5x9ZD@ocF`B3!LL>Y(NMi8#WSmg^oMTEM+{(I~^tieMxTO`N3YAbkf8LvGukwS)!QfqT-+kk|pSu5;fRRV{yS$GWsCJC2#R*g-tdB#@)$Vvb!T0ex5! zozF9C$;MCv$5sPCw!MX+SyxG`Z2MJ541QyXl7Jm4?$xa@cl0zxd5R&yv*oJrlV-O# z{}a`dn1G;<7!MI>9uwON?g|msZ2EHiSs~lyMc=y2m8-V$im89T2>d=QC!vn>IF`(` zG|}oc5*AJV1~c|EsF+dItl<3;f(ikGjf=|=@`b^<0eOi}&|Yn+RQL74pla5% z9M##}pUEwL6OBBf;9W-JtJtTQH^_wYgtd!SZZ)JoI*-s{nz*3IzU>Pjs(bFj!gc)0RqIe=ri9(~L|*p%~9 zMqUl8P*=90!elIaN3r0juajxkY{Y?WtbjuN$~S6ZU+*K|TB5%W-X*^Wx+vGR`fsW& z#}zQG=L=e7NUe$9M6AV!i=SC7U0@rK=kvpY@rDgj2@%o-&?>NACpebhlW!m|9KE@R zRhZ3~`MsMAY$CJ|TY;Dl~(4dXY%4Vp%3?jv?PWfceUJ+i-lD=kWsv4 zIFN?4;kAHqb{(SM;V>vEGrk@ST@POtDkbV=s>j0w|HsRUk>dIK!Yj4N9?PP2q-USb z*Cl+Ia!_E|;RSzT*xCygAej2004?1(N;P81x(;vmTwfu!{(0&keKIi$2xR+&!qHa8M$HPI}f)q)EP*iMf= zTb@Qhn_$&DFgpNHy&;ZWI}AY!6f@|7vq-bt)R2qgJEV3J)uW%@-U#U{A_Ae2p6d1H zfQC|`fHOTqDOOq^M#`wSco17W&F8M7Fc7SYO9#)Z*X;b&*bTPc znH$Q|r%DE3sER&jS6g0Qh{oIcjGE8+Gb#VfVW(~H|Cr?laWBfvxbNzVTSDBXGmIgMg@}R6L$y^?I?n5YGO#u|-3Uf7sO<543 zw1x&r1`FVvz1pvvW_DFDAw!7p8Ia@&42D9XRAHyD5$ zp}?_gH~c#^MAzfV{|7{NKmHI7FE5hU`tGlWscIK8cM$;dcEwhhIW&2o!aJ|yCT$a+ zz9-CU8_mP8;cP;4$%J?MFTB+d>W>8hb%2*9YBSzATRQyph!QvS@@LhvSG>Tt`>0wz z-RNwhh^cx)pL^v@)I~8oOi&AGCS8YN{x<8($Uk~|(xL$f-1s3IH-zSp+sd4hx>$NI!p1S70*-C z5TbT5=9yoDQp(9>DWrp2hzHZq3;Hv0PKLYswtheqr>{F*;U?S!C6WpjQvG~I6SnM+ zndNv@;hyg0n!d4ke)~}eQB0ak58H>8KDtF*^ikTx_#cM5;h5SOstc0V1NO+~f>%(B zg2;E#XP`;ErD7z=5Y8UeQ!XBN*GOyPtx%0im=Bu3$<V52aLa4sCW1izi1s~QL@RVkP`;_G!?=`779 zgOw$7E|7;FscTyccRVdmY*L5#n76%X4SzB`!qy#s%{{sS@kOHtw!-*y6@3Kp2A?oa z$9LWrRou`i`VyUl_I&}z^mfBf=`B)X34+27-CB+M*F36>Uu>0vsw>VMFqhBo7(18Q zuJUrw*rC0$c@k7pJ-X)$Ns`^}SdKV1nD)K0tBRDdQ;{^0? zJnAPoYAmYlU+n!l19Lw|Kyb)F${Sc!?)qe;#N_)k9BE(jZ<;Bf!Y8iQk=7*H?xG>A zt^dkK+EXDzw})VZGmGJvr1g}a6PqymSXZ4!v9xVTit z2qXoIG5VyN<((%K@(>crH?6+ehilG)2@HeAS$yKY3ka{SfSgF#&}Y>fIvj>e&OVXn zAApne+mTHi^4-<-#i_nzT$+WHjGWL()B~Cax2AUN0r!4NSBEL74^yozvrvB1zZl;t z88n;Qy}I6098wA2Cu+avs0i}CJ-c0qJ!#gSLCVRB6O9ab29UJn*%@IbKH=Lud2}L{ zx5Okh$^w*?s0B|?7i_su5D(y&D~beIXl-H0N@&GbOvVSiXWv4(qX|!adzY7#~Py1kisiST0_5vy;t8w6qi|M}=rcA#3Y%ZE(1X2jw zF|#8yv_BHK)ScS8SGhf|_WcLgtmJdEc*6YO!@>AEdtazi^ACK)4M}TcQG%q8$Xl`? z+#IBKu&1paEztdqRWd|{mGvjGeioi~#fHXR`(2r08^j)8M*w)NW-WKc zp|ZG_^Bx-WO$VaBH1n$TLfJU0TY}P8u#TI;oEtJ&J~Tr74rfwb z;EQ$?4(}9==yA|98}6haj`JC`y9~foabCo9rhIK)s0Otrwr49l1Q59e=(z_*PYLs^ z0wE{rPsp!b`5|+nJwl#|ATpoGcbfn5&9UI)vrTw`dEQgcJ?HdD$(@r(1nk+fyt@dg zEB25bQwSXB31yA=Jij+0bC0}a6fMjB%CK(P02sq{;MdKr4S5*u^Ki7Oo1iqlE@AV2 z63d>7noaQUJUQN<5t(odUdG=I=Lx;*N_=1u|4HGbNw%AlG%-STcRNJ6v7AJWK|8xS zTZ7h&*_eM-n5D}hw@yZ*1!nI?H6^hbyWf)qFoZ}Cunj&Ga9dtRgq5Kgy10asCTLW! z774{08pDccBe6oW=)!pA$9Lx;MT%cNJ*z+_(3%xCgnMhY{F!&=m@-@$a2S9hv}5mZ6X82k|Bo7fx!=yJa*qepr&w+St<8=@7DuZ#0rjX zs7*9oEG7)44CaiDN57|Nl&)0%pGpJ$Z;yUU{~G0$L$}rTZwO>Y`NLvs2@H<=NB;#` zo;ZH5d4t`#{XO6eV`gC+fQX^S;_E`;??2^qSUuXw_!R9V|5U>^=X}_R;suPtoe95Cfzl++K4ns&Tc#@?I;ISNU=BZa$X@?zj>&rOL-eslQe@tSAz^J;6S0FgCA_8MIH95)qTiBQ2Gu2efwLMik&#+_0#%N{aS&bv=f>2EJQ{`jZ9h{J*(E7j2@A>l9+k z0_|bT8!Wwr!g``*JFc1B^nf52Gr(pxmXvgm8N4R~= zysxlQtp2QGqc|vFUj!TrGE+|D_dd*s$}`2Q!6wLdV_7`QQ5jVmMFf9@VYL`@k7Cy zgXcSgL|ng}?LO6&U51QeG%M0#;LV?vLsuul3{x?=&>jQb$agOO<;HOd?ZAP+!+%FD4yJQqhLJa1gLGY zuQ@f(H8Qo{Xb_BZZ0ucj>aD(`jE81nyWW+(8wye?7@gUY#a`;c3B9;PgQ{Ik7?ec8 zz}3a1$QKo!E`I+;#ZYCd83x^lPvF=h{<7=U<6>Awo3%wl<$$hgBTgUPGIyBNu|AhoSmkJ z{wQw`E4b|lokOqCM(x_Z&y!i~HwiY`r_hu}-&hNrd$CtS?z!K`Q~f&pDS8d~62CMW zoE8V~pb)?uI8?~I;P)q;c{h7Bpo8MuCv88~sfXC5kvL4pnqATNT5^%J)^~7^jgHwn zcpJ}yJH)MN7Hl7Ip_9-Xu{9>s_&Dc1v)kCjBBImLrUoRv&AzoGfmvf3a5Ow~yvm(# zLr;?jReaJZ^nZ%WxH ze@iIKB_u%NkM;z4s!yrWQHJ~=U5Z?I!UlOVGt(^KIr(Hfw5133WKNm)QR_31n+5^Z zNKsh=S}GYRT6Za|kd)x8agbx&1B&G}P)94+Fy!5GTKA8`EFNmnR3RsF^O;#NipAy4 z1NY|k>p`f!2?ikvoxVgrxRhR7!<*Mid!v_?1x4`CG?*rQj(G;-FF7^@x)wZm6n``u znUTTYjFn6bs?r?1EBx5L;nBlJ4Nzly&03t!I00OYPy$8dy&N^9la?hn_{t*?S9$5*tq@NiZ1}(OdgC_Gia=p{ zn=i4K0`l)yf%ieZ9v?c?l+s@ls2tHT!hgRXPHB`KEznew*G)J{NM{9`W%Ol5Evwgg z53)Hmj-8g3THfGne50MZ6)-}IzAUMqpSf_<#`56`VHTxJ+u0loN1j#C^;9{Vmok#$ z65Su>t$KlxSoF(w5&gd31!G^IR}nLyaClGO2l`(CNisJ5!MSf_YH6O6J#^sQ+dJMw z6k_(*Hvp;zA8^X2-B_uy9MIrM^FgOzgGr*)+87G>tsR&ubVW3e=fIDEI%WukrJ}$i z4iQEbRDJSc41`CruV!+48c{0(jLv)K8|PNHDnCkZLftbgMd8h zKJV(&@8*F}Z@rYscIy(shf(Ay%SBwX^AU_0+*7BgtypNJSOV9{I zZU3zaA<<9ftWF=No?a0Zo;p|Jj-f8MQ08=TD#msQZzTL6;)j2h;6K6hCcSK??b%Hh zdDgz_R?{MO@3!6ty{vZtOUCDdpzfb-kUjj6L`5@^xfjgncpZb$y=st1c@JuyAuzEc zZX)!lTLIf}``La1Wur6@iq{tWI@AW@SojqRd58Od`4Y;4ag0=jyj1p#HC1nJq(g1V zmL1pTLG3#5REMa%H*f;)b6NcHg&krb`@#ZlN-sgeLY+Wa*#uB^P%@MD%<0Y1`t#(N z)eH^`^RsXHN_VvU?+GnI4&kyj$4_)1JRKK6F;q&!M4z8PXSFAwY5jKSb z`b+9VK}piXYfZV6M182C5lJZ~zH)?V)A~R0J-Bfc*jDnyw??~vr9>h(+?y+_Y5EJO9YPLoS46t5`D#6o;S+`=_%a$ZofKbiKV1=} zg>1OXvlpST&kSY~0K-Qg5%e(1`uM?4?Oq7_p`g3a{T#YEZ;xV~K{pXFS3i`d8=K=4 zH9fS#bV<=!JcuOhv!^==uMCi}yhfBQ&iuUX7nZwrb}$l*x1`Ckc>HSvtV(z*1(0)l z_Jyi>P(|mm@)NgR z2!ws_1fw*%sv?IieTh~62YNh`7#Xz}hAN2-i*Xbc4DS{uX;YoFW1eF}HDJ)a;2XS9 z#hj|}%7CdoBdoJ0vdD?YM~gX;sq>g?Um;yiV#foQme*}P%K)mSu`W>({0q4X9;FkM z?~OOF?COG%DMyBAe%PR>ARkogiQ>=ey$3f2GkFLUwgi|+OpQZ*&t}m0VeRza@lVVA zH@*3Md+3TN(DQnf1ChO`Kl<(G-Hcd#L;3v=SA&AGigiyP0ZS8Xj}feRpC>F_wr0!B z3H=}>^PZnxVCjanRgB`?W`9n|>{R7M(w=|aoNze)=;ae3N^?CQ+qcj~$DM&w$ic+J9#j_1=77tC|PFfqi1<*n627YRV68cP- zquz<1$T&lr)0kMq2PR@+)Oc!Lc2JO@o9zV^D-)(aBgS zV|SgF<*zyBW2otCss$CrC?3ah(bjciHHZS2r|_1JiGYd{+MK45lhOLZquNMKwFgb- zwwi-5I2h+gHKO2EItb2~v7A78A*=+dn}W%uueB!SzM- z(!787Z^IC!BK9vubb?eo#f=5cK>EHJzOtVaYLi!dEs;-Aku)>Mx5+Gl*5-4k19S|V zACiGyz~5>Mf7l$d{JAdTq5}z^(xScO>fs`I=EPFoS%@s}?{NzIZ0kizcbdNl(Pk#|pk?dU+7Vg=oVsvv z@2K$0y3}aZ0*s2L!^29<_YN$hp!SPIT#1$MJpxxwsJ7sg`?dq5e0wR4Y4bEJoc+pHo)(M4`mDt z2IKKu$LL;@_PBm#8ZiQgpBsfx!UNMXpo`j5)>ITo%cD{m)ZQvg7wtUh9fOJSBD*vJ z{t?VO$oh8)>rcdsXI9M&GoZs&HzKCkI*vW^%q_4so7QWown-Or8hcDUS@UTdDVuox z9oQ9ZRsaPcF!DV@ooIJ8H8f>lZ0n__`J0~k=?0Fft=Ih3iA z50K7-4hKU3-Gs$Fwmm_hl8RhD0eC@)=^fb<5H`JfQN7q#5RiyM z5sxfd!-tSssGy2+aWlwq!y5GvIyc}0SM1g=)xSJ-EXw64zcg?|V)O^na~{p!RzDQe z*bJ%5b)WkJnyLdOJKu}z51N~6>vj3MrPfFqN@D-t*2oWNQw8cv(yJX|S4w0#N zA&ra|M4yLzFLCg8CRWDM<){mH$AUfm6DoPyo1u$M}Cb5`_1A9qQ}7rYL#uBu?CfcP#BtkjVMB0A6h|tryg{y$<|r zqMqFt!R)Qg6`9ADB&A1MbhGIWP9zvzM-}XNeTs{sFskdg5!h3+3Su#bU@s3JD&6Pj6Y6l)sG^YKJH4unrSCVMd&H`|c~ z#vyqRZd!O}Vzv;Q(aJ?R1I-l)+{gqR$<8sen?zBL5d+y5zZ6BXLECLV@oah8;|syr zW70F$v^TQ@#DA9Dl5#iUsaQ^!iHnZ|0n7~%(>g);W0l|@Pyllg^`V&CXaW*!&N=UP zb1~HQ%1!thLdac*2zQ2KYDK69@S@ZR46)QW3cMIvYfq&}ie?_aB|nasXXM{C`}n}+ z3oLnC>m}eQ6&fNwKy3|O65gv~n40wyM|Gt>Et9%95F{_Ve|La$B8S94aNK3>37F+Y zQkQQ1Jm+QJev_NaL;(Lk0Km~n|1$K$9(-!|< z(z^$Vg0@@7@tElY)#JJ;Q1%o{4mRk5c|ZjQRpf@_l{=IDf;n3yD_~t6oo*2=%( zyCK`auO1u~lQOD2m;TQE7#P=Ly}8JfIR17n^4pT;dX{J37oh-tCaAW!J%~C=A0_re zGk3A(nxcy>kYqS=e`T!fD!@IUq&oH1BwL*tT)tBkHqa| z(JNnRlQ6KO`Z7CcMow-_zvw6Yfp9O^@67Dc{hCL!Pf#I{RD1rU`LrYsz7Ly@E-6fI zjVtxgs@<6YqK}l_r^EBg%14&#G^ZC<&FWlZ>V#3&5yoF2EFF02Z0Fib!y>rfn?Zz1 z`3vJwF^UxWw~%#F#OW;nt`{_b-EpZx>D~`KyRjSg7%b#VK$jVvlAd*tM6;3(_F?8p%|2xZB7khNi0zfmwI(NU{%^(Dj` z`>G|KX*aj_gg=VY-dT3TdA{J6TS*QC*X_2BZ(6R$bO=pg!W31*m~+FFPD`lXgWMt# zG=8I;z~PdsA$mIP%9LzM#pDsNp;HnhlSIdAHJ#QPSL&aqdu=tTiB>Yl9IJVOR#rxudx~imN+>ab$4RUils+I_s19U(k8rJ0JoNY z8&2;<6t_GNx9TDP&8&|GC4=XM0T-ur8(bIbWRYHUxvKQCj?Unkvt1_&N-IvOS;|rU z!N0=K!wqSwa1tG=r}TL-E7pBu(Wz^VO0b7AWH|#kB#@>T!QOTaAsv|fU1FTwV__Y# z`d1|}iV42#OM=;5g$a_QV-M_1d$Te-T|eNXtHvdQ>`aegCi81b^2AnW?zo(+=YDSf zbE|%lJjW+7fL6q~CmKAI!1*P>uiE;fMSzYFPUi@ud)pf(C98&GgYK(=dH0WcXA6@ zU7Y%Ex9ssu09~V+AU7jYees_i`{QY#oAg?3?Iu>fBtf5Ek#uUeMfpER&k-~3QaSjk z{*K)^cm0XHECD5@M0dpefGEh#ZO}0}u6dUW^I16y zOzE>QwzPB9gsp67?S%s6)VVw-6}IWMt91rs%{{t`_8D159Y-^-e-Mn(5^R6)5Mat{ z7{r`QY(b(MCi_jVUWb2kiESaQ&2_^(vnLqy*lF%59jQ3AQ*FzDIw%d!kaIU@yWJ9x zo0IQE-N(?)xWWZ4wN}&K?|18`dbmmSdTSo;uuYcApnRkwc@GPWvTm8D>6>BAz7Yz= zbk?IuNwGIi$3I}C*sj_7VSg=VJ2Rbt*ct7U{-yF8&s8h`B|B!)&NT7oE`~R;oDv+C zBf74@h+LvT3QhPQ4Mz)EgjU2~Ze{`obw%ix4SCAs)@$hZH4jMtQ%vxd+ zxxtmUBe$uW_|_-^%Z@?|?#6Ydm;I7H?&(EG*Cn(U9GWZ8lsJJ|5XtNix&;uMWD_y! zVk&Gs+DJ7w)bLmCM*UsBAXdLP{Cb*Q(r_i1GPDDLN#f?=&2`b+i8903z}&HLRN+55 zt>m4AdRUHMmJgcjZYlv{GM!p`6%$;cJ zXnL$Gch$TC4?h?_P)Xz702oePofYG2;)Uw9vP(Gj3TMRddQpB9W6M}UO&8E&Kuxwv z;=!PrMG&f=!8wGRG<-1}4u2_-y&F|u1kSDVT~(4$D734r(IOe>dT0qB)Ev|5^N{=C z%wikj131B~XGe~+V{;(XTbX`u?ms9K{p&*8#IpG%1p^aG44%Bp2r9{V)*85dG9ueMPR)I7*05gSCoN;QkLpLXooE)8li6J&e<7qlXj+u!s` zYl?lLE8q}KzUqbYB&|@v&55o(Jye^v70QrQ8)=~H2|UoKj>-q!*l3E2ePBfCgcmD= zP;XU}v}B&AJrDfm)2uDUpp_Q{q!$h8u1&3uf4X>lsX_N!eoJQ_NSi9Km{01xqmU|Q z>F8w-G?P?JZaU4X=0l-h*HN^H5=JRj%e5Ms>I|3#+r?(3Qj+&>q73ijxH zu=O4=t2QCG?|Nv59NOOMe$r*ZZhaPUr`-t!e=*PS?Y1G`C7d!B-GO( zHe`^wZbp47nP9CVF=DQL^tEXJvKZX}_O`PM)vop%@kSYY$tj(Tie@0|RSHKVRxF>#Lwdxm$ zl1T9O|K>D7JYh?h^u{VD(XS(x3>pN(>RCP1n`~xJ~|Wv ziCy+$Wu*K$MvU$S{J{WyHBMr9W)lD|`L}=kPOG$%^pEtSfdz)d)QgPk6q_%2@R=Zd z(LiW+{_6YTeO@W){^T$ICnQ&~)0o1tm-?DN^aO(8IO z`A&WGE@WlbePYcBv>^2&CxPpG0numAO_jjps=toX*y5JqP)2 zqw6PVYV-RDjGT~DRnA2htvOmQv}Y7n_DwVl?CRpJ*fpE>)}hOv^jG8q6HL988Of5O z`*U_AtsOhXzstCDWKjHw8F7A~EaHDWvy)4y*w$y+nbd_32<`B|(QpX6P^`ZH)M?7ZB?r zzjI9Kldf_|Iv+_qO!Su=yb5s5lwv}Fj{tm!%S_XDN<#5~5AjV?uZ4|%K&bIbPdiC1 z?kbn^GHR<4w@GPH{UTdD$Kh>MXm;d*{)y>RPI7VsOlg z@|$oYN$am*aMxzW{!On>IYNrk~Oa4G?Q;N)e!$| zbuEve+_^Fn+K9!?Uz0iJtZ%>-gg(xegvw?edBW?44@d^CUy1CBS0=*$KA1m7bm*ZR zV;_H*wb+vhT~$Z)Jt2?xuGksI8 z5SK4-Vr}Adw1bxA`Gi{z2{cvw#~FWW`rGdJVp#4Bnc2GNM#?YC_sdor9j@5GTC}+Tlb@!?muw)N|a;x|bX&IIy$3{GiDi44rlh z;_FCCCx9jeP><^l(`$!6EAh^ys4gmF3wtLx>Num_+i=SH+#7j!zx(ju5XI930VGO- z`5X>6S&00HxD@9EZnt6xXrwFlnhNnP4zCqKi~$nq{l))n>-`(o@Z%v%6qbq)&4N#| zlquynM^;yhlKE7v>OnIy$E5tee)7%R>V~sVk?lry?dW~K~?xbfWuf>N2}z+LqV*_5GZhegsaJRMZLH=?pmHa4}8!2*YJN;%} z1}F4Xb?&FryjF{=P)z5>i|$h<1-~WLgx87o%ncBZ7tRB4;>x@Li*ANY+^A?g*A&ZT zmlNMo%p^!}Apc<1dus?^1WahLCc;1Kmx`PIrHsHvLalgvzpf!|-0OAmf|ydM@3W~m zgw(oyzw(?ubW4q=n~=U!z56j1>VbVlS1q%9QPa+fqLP)X1@IUtAQ;SzMra)_&IulY zJoO!ItJn@s@5~W7X%-JGugw4?@0BOSyRBV3E4ppEj9SID$1Or)o<4@J+sTo0 zvey`ON$T(<*%V*eFwGu=iO}1$@UO1H^ck}PH}E?mFmv>RCQ8Jrn$+QjxFwgNp~kY> zK!Sfw1Y&Ue6S=ID7guX3I_UdL^AoIHukf@DQKYN{^>Gd9F9KP>S!X7#)hT>BiGa88 z4VmV*`7+Dlg7L$|6x&&gio&Z~B|J{;X5Gng)^r0(!m?r0TFgmT+QCi*?OVWxlz4zrGJ+ASz-Fc(kH!DS&dRwqr6h~O6jbPtib2LI1-a~b8<0dbN<%M zey-FkF7GhkX)uUk+$}m3X7@NLcsm)B*>1+M)7fRsUW>MzBc~|9p(K+BJ44>rrI?8y z4aX-8&`jfYccFINIV7R1j*}E4$%Um;u_bw(@{5)Af>t=x%WDAo4{I!OF@WV}g9gnzf zi!v&EeUrz}KP#N`43xB45wPRx0NBT}v)ULq$wcB;+q&+g!o;*OAj1CMUjn>;s$>^#mX`P445 zd2PrYtRxSqCdddk-c2`VD%l{+stR&eJO0Bx^(OQOT&9cJRIq zeu)Xm(-pUbHbno^+U$I_^u?g#pze#&F`u%jqVQUw3yc9*yLsn;wlx1pV-0oQmU1AE~f5 z4hn#d=N;SEl2F{-Q(J`ny7^3-{p}~iuYMduywl(Wc-~I2O*iSqkrosqJ!Enfn`O@i zk0KjbHk{z&4NGU_AmW|1@(c@nJmVp(2Zhx+gO)meGf%4E9mabcEVa`@Le9`1$CPrl zJ=?MV%>6}#`^j~1Y0(~ew4`w?N@f=ywEk*L9rq1DMoOSaz_W^ziX>;X$PJaNPj?ZO z?n?E!MnJ;!xSxW)`c0twR3}(wGpiW=KHKAX_1P02 zv*>zV0g3ha38--CIP{&^(6`PgV;zxGZEp4QXzaXA*kW0WR0FBs>`gr~!+uHI4WImc z`^tiY1t5M&8P4 zR6F>OefMoEzX6+R+<9!rF zMC!Lc=v|Lze|R}Q=0B5*z(hwDnR7FVFzY8DfioX+=L(n0sJ!(#3TJNzORfvLe$HaD z{alF^pZQe9sZV#8>hl&O`E_7r-e%`$_|)E$=sJk&?c*tDA|=2jmo`CH-5fm{B;Mkm zueY?|c#@Gj7eCT;m14p>YKH=BK120a(k^aNT&%oUp2w{UIVeW!;5l#Shg9F;C;~P; zs4-@dtO}F#Odg)3mM(DO?<~QNO57Nz;{jto5|EBc@$53HW0EENMZ0_X2+`@6u~_~z zFZoW6m4K*d=^*S}`>M6DX7n=(d&si7;elYF;2-Gk0T;dSVS2ML!Pq)1cs}};TQ7WR zC@(JCPpV7#5){6EkUcvzB08x&41fYQGh!{tC7MJ~x!eG0YPcm4?yX;K)EcjA*Rj`~ zv=9+AmfUbqqjl@iRG2 zG+AHsUA6Apo7%(Zh^$+<+=?RVBEP*;S=Y#Fam5tMX$n}o%(mn(yo^J7Y0Ox`@4BvU zSE6i!WJzCT+ZMMvj-~b&T9gi=T7?S<)v0nw>X0Pjy1iu&nU0X%BG$J4tW5i~PswV@ zXMQg0>w2AWOv=%P4zEL#(pO5o+!}!x=Rk(Fsk%!Ft8J_jfK;(M18Mcl`%=$oOj=$I zpKi|bBbfll8f|-OpYuQen5#<=6-*JRisQP59j3F`xz2uluBi2S!cFs^J^QnI8-7#9 zRpspZb}!U)V^Vv2U((&$RF@0h7upyRNf>G7RaQ~EU{w0N$Azl(EQiDzgwKLw>e7I zyr|M}t`*hwgZ3$Y$9>`SXQ-~D_x>441ihe-)~YLyaW(k>tR$Et$S8Ytms!L@q!Sq8 z`oiKB)?RsW;;^@L*GRlHoh8AhcUrR;ie@lz8X~x)ltQ3pX>%=67=;Ka#G^lko>p+5 z*t+{fNe>lSj?Bg()K}SW0N5B0>HMKSh(Vi{us zh@?4ubuiCd1T{Q%0sf7yszmB&@Ug4r zip|Z>WWaBcaBg_&0x*cJRh~myKwbx7FZlBsu%^wE%irA6l#Uip$`fuxw!lnbHB*uH z)Ybp>cKn;rq57-ggAe^0a}IxUc(PAdIFs@IeHN)gzUCZF3={_|sO|oQ09|n0IJvdS zK3q5;+Mp)d@0dJ;FeLBpar07!ZR-B^v}V*m^!qVRICM|`S4LBbtg0!bAbB~!ddxWv zD`JMRmG(>(o#oax;a}OHkx7-KW*VOH@xD$XAYAwgx#|O9Gu=jyv(+L-{0G1ZKU^Gk z^Myb~5mxJsd{U`EHen#gZG#Km7i1epph=$kFVpqZP zEy1SUE+mbH=Rje4Ev)oK@xpgy3`hlOZeEcJRrrFNZ)`~fd@wUIELbNBGaiiVCh^X8 zyR~@ZtH z)^S=bh}~b&^2hBEhwDnS;}^wvuQu^sXGkctkwMbJx;`$rC4A&foM00qbIlP9fq*y; zWzHqfqG+$4Y+R=P#zVqv{H)VpyT9bZ9D0*p4syx9(aalw z+KIkX0=5;EbI4Ddeym5h`qy+#wF&&>CiYQZ$|rhNpX4N{X2=$c>Ch$dvmfl#4;yl4 zOtyl$brxc{c%n{65kvhtuhopAxJOnmxmMT5L$Z%pjuK?8tIiZHG7(}B`-AzcxFHlJ zJ~eEGO884s0B<`wIO96ewp|Q4@xag6ZB|;>Th5NlYU$wACpWj@f(~e*KCrAN2F7f5 z`H~b)6Jz8uV6l%8tH5iOHLqlqGujG50r517-q3rAt9xbw=77v&bUZ|8jfdRSZM24! z2!0*Z*tnC7A?oLC$Vp->zY;^Q3hs$dse^N;My~g5CGreyIm%ffJo4Cd9dL5ak;x!S zSx1%%21Y&Z*vOsj)Xd=gG_w+E=GjXz0iyHtZaQ}Q?hCNW+>YXb8o`+#7@7uq<)P%O z&=zo)jWck{3Zw}{K*#z!0>LUTPZ+(xT?xOED19&@ZK~`>UBH4zW5OW&?$B6qj?X;y*T3cysjnD#l5dFE0x4 z9fF%Uucu|xwE`m`SvPhSH2D5w}@oQx&UCW34<;7Jk??$$epzi4S1~R z{c5b)eTUnwGJab6?t>1T;%5l>q2HwTS2v}%XCe`D3?*TGD5Jd)?lRy*RY#4OWX?&{ zd!ZtS+8=2^31xRQ_eYAyrxReXytdPnrM0EkX1eE)nTI_AB?hbF7d-!6LcJK1Or;fQ zn$zUc1Xn76)W?%ymGXmKi`_>~h3{q=yyXb_l!;&Dp#43oTUoN{McNsBby5nLqj_T6 zd`9CyCB06Knxc>t)e>99l6k<33y#v6m96oysP(ck8iC)fDihk$Ece|0o8jM}`tj3q zVWY*6)q27J6A4a5_J$K#QI)Y((I+F15;CAf`bS89X??gsh0sTKUZE(W&>dF3itouT z&#-9{vlZ|*&`xv`me2$-Ko)FW!l%IZR-c@SjNo#m6n2W>Myj}M{KO`{5!`>3#a6e` z)lpy!OypM#qaVN3DjoBJKx`=*%5dD4=V+JeLbmvAvNS_OkACDQI8qb#uH-%;{DLPD z`8U@Z&z0cSYa>R(5mIxc_XUmtRl2@ua;0!A7<|w=t^a@_2h^;gIJ$e-rSWC`7V6q* zq}XoVBZw_gI3MKU=pp5Xm51)FAJc;=>a!YXs}GP9FDk4FM8*gBOzC1bfBD9mR5hTZ zgpaWcTNq20#%_!KkgRP7>@V`|Hnp+Z)6STvTKN$hZxrM&jl{xvSjoXH8N-d8$*2lf(ZrHl&XT>ww^9Jn7-wzg8~RBPG)##gu#3zhX_$ zv-ZUQ5%ds22bJ2Vx}0%KeYJ!R#hkJ>q%3(`b(4aRW58wbo)&gDv+y~k#2uQQKZuC; zAWgAA>wVnt>AZ$X`k#IDq6D!4z2O1%R5mGsjGPoT*mIVsSa@*IHjj-Vop1!{Boasj z@#f;+yiIRBa1q~h6pKx65ZLnEUC+d5F|04hEG}X@=yP4qTp2QAPW-M9u}QM@csoL7 zk5GYcsUvs=OGNQhPNOp`&DOD>iD81)vw*1A9&SY@`rduc$6{*D0mM+M=;U&9@hP{7 zsoj)tu0m9p_2aAMZ(x-a$k)7oCo1pR-)ezAk0hq-#0t@M%ADQhf#NS)rVKU`R+PNT zu{tEg^$&50jIbR3@A9w{W!L>YNaoMK1D`=^(Q=43d;_J-i8K9{Mp{CJlK+S)=xHV8 zuP*J!=(hX1+b&~*^S8olj`-4rk4P?V99H-hWK51+ zTLG1&2=Z9cN`r5LsYzqwDGj-b>;6I)HD?GK#(%%H{^H-IcRg9 z3Q4-qNd#lx3tW>OxDKW*&WNCaP}@&>p}4&BOl}-RitpW;G^K z0)PoKbK@uSWGN3QYzeffkjrO-g>6axupOr$IZAx>8_c-~tCD-QBq)rY{eU)|`apJn zUXBo0EyAZKg+N&tDFlZELEM{rb#))xDyjcI^F#dxY8A<>g^cnkjM7YN z)=xnSDw<>2VH?qeDr0o$|$yHA7z> z>9=w z4K@7JSFUX{17htfP;sXG5nL`pXHB-@T7(@7Icy;YtmDZnD%^*cFz~*n=bO>opBv;( z1>#n)n^dhQCE(y37%ocAG#(edJp&sR9&|rI5d|?~Vm#qlsP(^G?xNynSv@cFk=!?8 z=SIAym|Y(BfOJ(6Acs$B(8l5$N3J`Sf>!3#Y>6kNY$y$5c@QxUJ$Kv~lqd>&O zo=c^75E!pAD=A%21^C5!*jnxO@i0;;Y!}w_dsm*B{&%T}DBAC!CIfN|2<+%Y`ko`g z#Q)o%dfdhy@Zjwa(Y}jdFd;0=hpNFyvHCJ@cof?2IP9#!Mm#wK9URP!@V{_1evQW* zm^EyZ|8k69kgzl{K|*$LlNQR^0`b6{02j5s1UzDyw3NrIS+r0Yymw{UKMKl^{iX(p z92p*Gz_WV`{?O@nos|6}WxiW+xgY(nI2WGi1B81+-G0j{YV;I+*7wyqKCXGy zS>Xkj9BG-omAq#*z2hy~@Iqs2L~ban7t-$P2XBz@MXom5gO%U3so3kuxNz?Ziu^Cuai?-{5``Qy3%23Xu9)#-6OJuuz z0Cj_Y$By7Gv+)!Gs|^KDmQ$4LpP|ho0WnkcCzCX{)yfT`e8;2*8pLc%U%0)espViA zH}HI(i58X+4HJ-U=_%R1AElg#nyHV=W2!C$6GC~rl|Sj08-zDQ8!}zzqwe>9+}z@C z-l3k};a)CZ2P=;|X)RWF?DlnkvC{i+#we7`2gOQb(lU`H+MGO~EP8fcd;imnNtA_b zb7ek&h_Cuu;D_d%xI$s;k@pW%xmQ!(C`|Sd>jJ!*D}2Wkhx>EKC4ENFjl*zCSuw9i zC}8mm`0i6Tr-|f9IJaAEeq4Tv(7|v2B#*r1^}8l z>Mg6E+BV8U(a7D%Rw{PfGHO(%zLGU`y(?t7OBZO-VIUzFU~+F@a<3CRUX8&XVZAxW zpm1#_{n-~Ga)_5`)uOR!_D<1U$PuC>!30SSvl7V}DUkwZ@yRP1JdY0}V8FAs0!p%K zEtA#$=6Bi>i3cqwXq=8KlK>?KJazr-0PSrgp0R_rWlZlDtp)k>R5$1YREi$3J%568 zvv>0GB$G<=|5y$}Tam~7PH24YIv^<=pg%70;6lhd9!Bk|9}GmaFp{MOIJ1Te#P^J+1v*s=68P_kQ zY7CD%BPx&y)A{*4Dao)PG%Q-yqC%w`7P~WoAmC(+{^Purs|TTBye4YB~UN zh87%D$&iS6dCAc!6!~3MJWmYIMJd4bWK^R7-{CE=M_GZn>*}IAtnha;q|Av~nRaNx zQ1evHXI5zWT}CuVnGA4AV1OvOXSqflCd+N5Dvdi!tGWbVKWXPgxcrda(33@Vhq`vz z081W@hCo7JsC=u_NTr?Z^WFC?Qg(JMP=Q?kZ8Z08J73-pLEV>Ll;8N7QcoAy^_j@h zJ>UP*@F*jetLUUl^^P54564}s1`&me)_qtPOnds^<%EnP2cFrsa`JM0q=)}iUh)^e zf(Wpu3eK@HUUgRp^GHCNAk#9EtIrYXATT81hmG#H&@GSIYkit2WDd1bUUG9Tcd=&5 z#N{<%+CX6kwRft(>z>Mk6B^ymrAN---d4_U=uNr|XKrBN zMNgg(yoUa!emRN#8%j1ZM_ZNcuUX##UX>?H0HdUW`$^mAIY(OpQOV2d8QV- z4oU!$e_*01>2Pw=Zb{;+aWjT@H5_DN}_3NGj8(StRXqha^-!p@sPQU#Szoq&-<=I2#A+VUC4wMpA#qaedRfCWbhh<&#Ku> z>F6$6;!lFr4ru%>mnne{7x@m$dk?elnlIoR;4}$Gt0X!L`roK{bKSbK+=4b}WOiBg z+`Jb>w3wYF6}JFN1`hMr8@6$6OtZaYJ{-q$mKY(-%9*KylX8ZE2w@0KW8-p)Mfu)G zaEg-`UJ37E7Iz3zUd41EJi$XRoTJx|NcmEey+^tyW)qGAd4@W=QqB#su8O&>oJ21S z9^$99^`E$YF)yjktrdZFwul zIXni|%NQcQrRw>xr>m%hFg&9HI`pPyHu37~ehb+@rlr5r7#YKAL*4%Mop-ITRZ z{4>QgSp5E=OoO&APpNQ!#ug_EFiBy1YIA?@)!#ek1+MY>ZOfRLV%((9suAh7Vehxx zi9VXv57)`3jpi!+g8>%R0+$4dl|$ZHLv5CgC@(x`+Rli*8~Gz-3KN&Dte0w5?zXry zeN_(>In$o=6|btaHqPVY;+}Af2^c+mZW^V*83WV#_WhNX2!?zEoJt(bJxokDu{Qu}nSTb(4(%IP92d7smn3f?GOJ4e`i53U7LN-ky>I-Oh&^jpk58l^kWt`#6ar zI3wHD*|vY?WA*}G4DOE@$b%~el8C~TIjf*JqXrYOMh&B)g3KHA2>iaYIB-y7O zQI+lf{J(G+=lntI)EOYmULfy9oUtZL#E0Tb_Ae$tlshy=yUENAzR;Q+#DJK|>@9wf zD}$bCSbAA9XuN4!tMN3!<(w46T&@2XCbVf5sPU9T{VtJRKS$`nH<^;L zR)yS&j$5}2hvrilLVsT!=xL43^?HO!%Guf>|9Ud}t+Cpn5TL4}gya9^DiNNK4 zXTC%6TAwUPt6Ljfti}*!6Pqm`V&Tp61o4dNQVR-rY~9?|^HJ?L>yHe5^-}z#DJfJS z*zb~hk#;kKW216OPN1g`KWrX;v(YKDtBC1Z(+2|2?f-T7>aCq@!8e*AYDEy7n-^4S zV;3h23*aue0x(9DYb1m+QJ|QAirKa{cVU4*hZc69G`usIDf(l#a!UrPja)6Fb+W0_ z@%)r zBYKPd3+CCHq1HM-cx%!z9TR7?M54ieMW|hsWOc?xvi1cur((i3;%KIq@A%Y@PhxKh zGAV<&HuklKl_$51=dc1Nx>N-$@uSk*zF$C_oAx%iEk3VG8?Esa2h5&D>{LgO(!ciw zvAhK3nCUSx4?gOF4m-_rTU{|`=d$8~x&UYZjtkt#utmjh&lp=tNCIP0c_BpjG5pWL zw%644Fw#pFOy1KeQbmRuGsX>@jfkg&S~iqWdgXj|+^>N3f-ye(=N2sL@YQhNRg4-A zGBG%$a~E;P^M=I6@QdoRf=>-tEv1y=w;%(Uq29nC#2J4o7jXB_l>904pyVw}kPxIE z@h!Q#>;F89VH=apOq$LYTO}eWW{iy(i=1#NkO!i_VcnpD7f4i+2Q7n2;h0;8d(P!-HES3DFNS~ zakGI<)0Dw(ho3225&JP3%kvP=sdhb+x<+Fr^Ov%q<&*Qz=e*`w|rA>fu*R9HnzMjd$v_@e?J+UvCq`Bm^ zu+PlMhCl@~(bXm_>hPH#ElhXvFVbkK+!^c%YE^Heb%U&MlK-+Z=XK{rIQsSmvmisqv`T_&4XliFk~UXgfY z6uvGncxEAA?Zz6-y>&$@0Y9~>O+@!-Az{S(v{*%%>~|*;`q&IKV3fLANC78H2O=~s zI~QfDmaY59maQ_kfvC4cY&7Zca?cQ3WbTE_;e`6^ME-4Tn8Elj#?>z1um8nTPd(Z|ElLs{(KQJd1|;lB|RUZ3yc&EOCiVlL;< zBoVs*Z!z-;^x3pq&2p6^2BpTksAq5ER}?TMKW~ABW)ztA)m-A9L1tzHu~m_oRd$kSvI9Pnpo#tm^cXM4ESd>e~B4?25jZ@?c+tC+7ii zW{&wgj-(BO_9o9@e;ZV)c5FHQ96cg~HUc9{a;(aq{0#m91}y z-32>od!N}kppm52j4ln7FR~KZ^AB>N0yF56t=|5f$@ZEcF}@JZ)y=>o{eR28z@D=u z<-h=*)SZJQxQig=Dp+0|f7Bhm+$=P&x;FN=dwc7)^K4(d_XXG@SIgAs!gU&k>Cir+ z+=1ddLUYLy#EYe0m3{<7UOGb^wA7Ake5Em-b1cXK_WAhz2b7~=X<2rm(s1cz7=D> zuX3?3w;e7){WLt}-sJneA6X$zSbw9+m%pP^31vtqK}J)5ncjtK=+kPv2lbDg>3j7A z#?EZzpLto&(1?;&uMBR-D^lR$71GIG${MnX*39r>z-NEm?g$R8Qr-2;#5t&kCn#PF zI=q3`4XMP=_Ekyf2@^umt|h8(r%^z^?N3BX6v$3Zx#Fp3_*Lq8x)c;Zjrm0%H$4zJ zzzcys2HmcLKJi>qe1?xIsfT+$ke`ksLr?Rr*^f zVc!8Dtr_2QOG;5bV)=&RmZJi|p;1(jjMN*!GA1z)7$Z0C>tU4)+unyTZ9Cd^?8Y7*nd1!*d2o*nLodCaGYH>ZxynX=qedgGc^P z(i|pmZEh=BdAm>Xt-K0==*#wjG=d7>TFcpLqdhiesSTEFIvhxmi16tsjN%L`z&Zu$ z?994F*0#w&N@qr-<1v%vfZPer*kfvtQ0U*n7#Q51$gJdTnFhfFexd(fM;y6zm@c%B`-Y)J1@wQb4%^slrPv-9e2Ke`e3>7c zxWc|!Y;qr^C>I<*PYlG6V-2tK*Yqz1g+$P(wU*)_h6r4%da@n;$ZU(9tlW3ConD8a zZSkVH^3gQ^fT-~!ZprHHV`baFfG2ym|CV68J7Sa=nU1Q-Og1li7YfCIV|HI{Hd)kM zv~D!NOAnElZyP-(8a}qI+I~tXHAr5F;Yl5b?t-l~r|E;_c$bCGNq|;jtI~JTgD?hv z;6nDBFYQnIMTXHI<5y27iS6W>#*qg9RwkK<@NOEm?!wt0zwBIvn0e9&OUqn?b5;((Z8g!v z-SnPyzW!&#W=9uEr_0WpkF;I&7exrH$iW&U7e%b5(NK$KB_u2_O3Y>{vmjdQQv8IX zgY~-tt_>KYAL1&6k6tJhIOvw8H?a|}G&&jp=Gczs0XI<=TX-mTO5biLne~V56Rx}Q zD1!ZftErs0w9Z8QZYN~hg#0Bc9&sXhN78C#?U@K&So-GSk&UTIaw+rSeHGv$o4!s< z-}~Ofc?-NQ^FW*64xi#f;9fgd2h@ z-|z@=O-=LIV23o3(&~*9RsbshLUNuHLeFtAxTzr7LFG(UmyolYEAZBhUjh-GCs4~@ zLPYOE`Tm!YL?KPCr8Yu8NJ6mABmTnnXFcYEA|5C!0}L+Hvo82kzA(}J{g+9D@U?$I z288Lho8%f8G=5oT7?DrW)pC8kHQ2#FnRnXDS(WMGqIwK=`KbZ^L#PDt%F~ApfSiwlVroqG9O_Wdq+ zu3ZH+WtWi&&3r~-R%Eze^oz5(0eB~^W@jgJ9$%Sc)dU9e^)687X$Slr7og(xxO_&RCeiR~LGbJ{)6M<6d$sl}n-=GaP$gDidJkh4ukFRnPoF zn2m@e6Y$*@9W`X2{beCOX>Pr>yO7|j6d9!gjCV_I(KFe+0C-PSIG`<^B+qv6R>I8d zT@RJv*h=hcOp7t9o=qdI-I#dU%e8n+IFix~*0fVKNdf~m>!CY-Jk@zl9tgEAIZoJS zAu0Z=rcpdsdy6+4bkmUJE(9>onZ@)Xq2sn{)?!PyN#)$^^$tOETZfusdT~r68Pz=y zq->^rnbr)efuX*8{UVC`7l}7VuQYXLnFTq>S|Obb7*5d-S*kY6f-ne=vZ!>-a+ip6 z{iuYxzoMW?H4h{fzUj6*>qWLeFMqMYv%baH#+Q^BkZ=C(yRi*^SB;n)thWH2I{gjquTQjS?#RoB+iwPhqc#x1N_?-G zSZy*Bi4PmmrtMp(l34nGn7I9+Nqpn<@#QT>t2L3m;+PgZX0`E6UPiLqb}xkfo~-P$ zdLo9+F4`&L?E&E|f4{!pQwf@$0i-@9fnz0tz&JzH>#Q`lRaxtATQ(UX@(23mt$sp5 z-7tP#x9ctRjfB-R7$HWz{3ysPF+3Vtx+9jIR>Y_hn{w}aUcesj>2&k3g|5tumvj(% zNT4D3E5k>WHg7-UOhk<&Y;lOjJ2yz%evTMGY`?23=iPskZLev$qCW#2!xS>K+wMUq z3XEIOoJZ}NxC;2mrMGsbn-hS}EQDm4$rXaU`(8iXvvtPo>+QidQTUUcYcF|+&xod2 zj(qQ~HRdnBL6LU-l+|&$HAwmJDb{A_=}H_$!WmNq6z6l40q02@gfsumptjBJ1T3sp z8ZntXan21sOTm$&U3U0(6Bl^S+tRh#bA`2CR2{~1PUtuI363r<-i^=vQ=d*YlmH1) z4szGd4BP7HgC{tAw5N|Z)H2l*6CBwQlJD}03?53Pd7k(E#(0(-Ij1nyGfAh3|9XL~ zq@ea8ZMQJFZ)qJ*%pnq+BZUQf0s#L%0Kj#-5KW}tW!LuqcYHXZj?^~Zc4>(N(DHlx zDzmM&j0Q#_?&BdFxC;#r@y9eESrfr6WZ%q)Llg)pb?k4KsjD7z2o8t~hnGnrTNp0Q zOadQCayviCH~%Uvs#{dMPUu9psnFSFqZ{4&6k&NX6h2f0*%AzF$ZV`-L1`0fwKUGuHJLTbw!<4 zCOtmX(Bbz$I?LS#VmCS$+`2?5IErJ8`g^U!w(4du9{}fzfFZf4qGZiiQscqRNU-lr z~GRdRcwFOQtstjqi*_7ZkwQ}C{=qW|rp3yM3to5%Mq~=}$TmmfwMxhIR zV{jZTBMNvywy)f+RWO+ji9Rl8W0=Fy!D0tX@iTZgwvltT?jLx`znOp!4dw2PdrVqd zn77MD4ga%y{A@ofDsdGVp;1*wM+jQDJHC0EO?gK^tUMr96Qpy~0^;}-dj}5|Wes4P zSAzca(`f0LyIu5c^*x>&!rh^@R|Vuw!Nho=^l~p8xz?;2~hek-p*H-0eG4ZY4ZSdOH9xa z<{9aL-arRjQ@+1MI4$-Y8v8-$#$xKxD{Ofd@f(f5%8lioWKFU%m6gK*|y zqSr9vFC7tu)J6;3!<|~MOvqC}4^!WuSQz&cotxomtFaCrO@l;7EvewUAGZcRFv!u} zq>Bk%*&o#?cu}!`C_5RsT2f(~Qv`ZjhrANlHnm$mqB%NMQ*|~i1UCq7Q!5sK4j}c% zyV75p{-golNUfOZviuxI7AnU!GxyFptLmc%IQRM1XQ^YK20Uht-&jhlA-L(^iAIkh z!P|(D>2Q3UKgK{M-tZCD*1oqFM=E`RE?|`9ce|%q0o6%&0*IpPB#ZKa+IncN9Q zv8JhhvsnEVb6{1uTkr?!-_|4eL2EBaA3%{}nuyX=5%%zja&`9HF{Qr=E(7MZm=<+y z8%!Z{*`-pf!w{L>Jqn$pGRLl%*B0tFLb{sWBtG{tA<&+gXkdD9srppWMJau7kaUX#qmqC+nA|*( z3D9{I|KA#;QA3anWD=wqc9JhN+Kbe@cVrpMcLe!lLHuskz9)k4!0aNFjH8;F{kpa?xA4w4id|8}|)oIP`$Cd#lMvCygK|JpBtpogwRJ zRw-5o3A-Hne%~>YIm+$FK;&LUt7;Yt?2|L+YGMx)5otP|7EsXjB;F7jx9aqF5sY(C zYS{!d$Nj~6a-RIEpam0NSxT%pm-h$G_)w9G3k*Z<09n^BJ|(va+r znxcZ_xmX`1x-~B)F1(R=?PO+;Bg~3b+b;HbnNca6y!FbdOsXj+vbt_dBK`f2!AFNs z5twA8h_JWo?KbKb8G)qGLi*`=_LYM@E1iXN%I`f03k$aK(wzSs_0{o80clC$>KNT3 zx35ZRLaL$PA`s%#9{sxV&m~Yodewp@&sa^D_!fWa!JCUS$ueMOg6;5z5GBFdJpHPc zkycS`T9lw>+D#{7on9c2UcpOnYL%gOB?%Zkanwr>l$hEuJnHC!^=?Al044oOwq_s`> z$1o&Y+_bni`x&#j7Sf@jcD2OTG|~+XIUKk(VUQVi)S)e-d4OxrtdGD1UB|y~IvD&L zZ4lX?T|QQiuEz(i$+j^Dvlo%A?SwKx+hl^5?Bn*QH*I#kKer!!CVp*Fr&e)#8=_0M z(b4?qgv*o7b0;UZvwV!18yzick9FhB0k)LyM+-iwNCdtSQj{u_d+EycaA4 z(UdoWj8#`A%dYul%g@9c^v%ab*iGxUl(-lPchyYoj7)qc<@7c)A+(iaO>cU6^rtDF zFt!3W`uH8i0p58zPR)GZoXm1bQ2LMtuOR2>}I&T;Y z00RrRhPo|+aE&++&(Y5uV`sH1$%n%6&&qN-Z!QWOoq3eYS(4*;0$E*!gC|E1vYhLz z6@zcu6>(i+xMznyLYVuSTb@MBm@|kg>LP|F#sWXEk#UcLNcF0sd4F7-dLz%X+F8|v z%qyD|iCu{h%|E9TyKZA=mu0>=3^~zD7_)fnv-aRZW(f2zs>=tgJ9(@9@OCn-o>Y~21$^|*e!rmQP-;QkZWQl(|aW6nIgujb%F@i!R zn~kF)x4j)Qo*L3rEd|&x-8|mM%Jgj5y0a+IY|OE)ur5vpN8$#P?^r7)XnCW=`RQmv z|1{YJtJX6`^3+XjgQLjYy=$Mm5akpyFb#8gQvAED_@Owt#HpL2YN)LpEH03w6068R zen*SvX#zh8wnfArtB)%GasNSxEx?l{t#zNkBbZLwXdsYC<2}Y4Z@Nv7SB#`f`4k#^ zClkukFT~>IQ}P$&={%dw_|8;BxLQYL^r=4sDj&FF&q1B2PY-8zjkl*@YSY;5ha3U1 zK0D|z&klR*ku-EpU0u_eoOFE=n7)7@)+ntrAC@COD?^>Ob;1V8vyeo9mxP8&umi^5Y~ zpvWP(_RKw>LBml0C{{$_CkEW~aANvtAZ=+t-x>La1H}jAx8(ckXCJJG%iP-pXq&7U zgU6*ZpHaoA(z6Iabb5}LR!dCc&d-|plbT0apl?e$-%{2Qv%WJVD;Hg==2rh;ZmgK} zv;OG}V>qhvDm8G$XZAtZhU>RbA7k;K8MwnL0UrI{o?4TND3>=TgK010hSJ#5#2PEC z^gr>eqLq+!Lyr_kEz<+MMto?Oau9rOf2msD*#S;7Giz*K_~%zKPYHNt^Bf!Y8bXom zJ5x?4`h!slwZhkl_Fp(F;8`qS5eFhiEW3OYUQ?o2!VW!1brY>><3%Z^qP=dC)xqK7 z!T-Z%7jF~3LYqfxQW`fbRWb<&5Pn5G(IE?B$3qrP4e9JT^()I!@ph0GZsVULIJ&J! z1>CwqiwRID1C&lys*kq5)b-BCSvKudDa2|3=_4N+xhNUm@@c^LlUS3yoeOOjD?y@C zUw|KVP$MQ#ftkf!J7nx)SnobQpg+LhJA#+iea}J4!MZn}O4)^%eY=e^Y|i!7ot&Dg z8*Hdn`SJ>_Kzz8)_~xX4(plVs1$M$gWb@+Ruqv5eyYu!-oTJKf={wPL*#8gQ`&5~G z_IgtTYep()e+N2G2c~TxT90JyGD}^d;D4srtZ(cpzkhtLXzfrb@He_IzVM4b`i0?$ zc=TZ$l(?#;a5z*V{qYrNMaSCr+h-$2#hDk{$g{^&@680pFK9P}hmC_{=Dg{rV)q@? z?ISaz27=QVd`p`?LNHS+y%t@6gFg$dL<->?XR(BpZZ@G%)(Z{9hcv&#W;cMA&cbJY zGmv`dAs1`;8Y*MaP%+gA zk4>*KV5^+e=F1I=X&}mHRR8_X_4gzS**TuW5b2B+-4>p)}_J7@LnbS#{}F&E6Ous#agsvdY{UJq21N%RJig} z>|1*mZSjYQzp>5V>xzO)?BW@nzBV8HJ~A4;WIpQhs4}g8tybVS+yrTv?$O%?4eX%i zTwG5{CuaMZ?alyaBxZbWkbE5JJSug8m*g-irw=>aWESidqS=R^;wb{~iGnZ2Hl?(k zP>)KA_W0tat1|*;;7*|~Q=#RU=)b4b^~tK6ER&^;=j`Bh596{R*6hAK@;y@$plslMCWb;9PI?Ap!K!z z-@_>~3Z^nT!kN6_Tj1)VDyYG~>{>O8LHBpW1@(S6wkS&wnrLP6UWRe11@hP})!Rl? zfA^PPCHF&AQ{25vLKMQ+tDbt@p;o8CG%Io=NUbEW9)FAYb{a*qDQ%r1yA+SXoh<7b z=ND;P7>}*fun&6D2@4-kkA+hOnkqd@CI>gIXTW-f=P54vtwU~MO69Y+KL(_DX4h1K zD6NG!&n4g^h($bq4CYFjfAq;devT`Ffi|f_W^=^u0eGp7Di$YTs^5q_h|xkfB#d5T zmR8uL>!qKyKCx>8q7S#Y;#=H*vs;T|4++QNqVf9$ghO0R0RUBAO>+w0Lay8(xZR`U zU1GB+j>bv*LtdX;;k-*W+?}f z?zOCg^(3e{#|O=oV*ZRePWpz}r0mONH~9uL^U5+wlqjQ}F?6>ISi8`tj9(e;b7NP@ zVi7SBH$Og+@wANTQ3T{#$v@>*Dbz?4T5aFi+Q>qV6LmIWTv{{(1iBUW_OHXBGNaAp za~g3raFw=jF#^{GhHW-+V6KUNrKW3$$~CMcX^pd*{!oOOqxTT1@H8Gi4^@iyD@17U zl$RSgeZ*d=k1_o?cJEfZ~4=bl=A-fF_oU4RKl0%ORg>0yjKgw{=#- zYl4ylLP)gl4TRO=cu?7^qxuSHD3wR$HdOxfAr5H0jL1w7t<1h5G=Sp%;v9DYf-VQYu7t4ZvnIrGEqc*^Wzr}}6_jIYrRaJ6}uQi7+)Sb^AY>6mySv2_81=gQ}b?2e0N3yENJ{6V#70?i^* zpo$K#;H^u*Fg4(tTq>Hv>pRgL68Q7vmi36e(c`<98`WXCVo%9^C+g%d9cJyXkGKFB zWM*wOP9NWgX*%>{p=21haskH!hyOlb7Bq1l-*SdqA@WgFEJjbPjctt;0rcDnKzz5n z5*-<5usG@xl?Hk@3jGoVrqd6grcfQ6_Fo?Z0cAL+@>(}8s@B%SgJDHYp0t~e05-I6 zVlvAeG6P)<6w{{Fet&hJyLDhr?z0P{JA0)Mj)HUmmqSDPEH$&~nw$;y84n;(Vd`He zL}=UMYd$>a@;)Ltw#_1H2+$I{!UywPVnS@dv7d&j_%>-qRs9_=RjdN$`WkSu3$K;pd&83na!GTG;YwD9pwVp&ZGbTa;+o)_t@b){%SbAH7wTT-qwj8)?gd;SR$x9 zT|Gx+ED4s$O~?*R*sO34j*B2adJ|YEg@vuPWoJJ1z|LUtXUOb|c~6yp9qKcv#Ulx7tdn$oLxv)0k$|H^8~FS) z!zC{z2P;&MoeSRynVAb6M!KwM#xJVBBIudoZ(SBru!#BJCuKWv93g?3H#N!Rq(ZAV zfFQ82BR<(RiCJf9x+W8q2~uwJeZYM|p!L;H6h27eNsEZDeZ;pne8XC(1a};|2`C1; z>uV0`(VsQgF$(-S1seFTBEEtJ5-X{C{aR4&Om-&xprW82)1xO2nf5`HjUCe3=`+hf za6@PyMix-|$!@;z7hQEZ8RMtFi{OITCp84C*ipn6H|Ifl+_P&}YQFO0bW>Ry0O%f>w zl*)xk-ZBZ$$fG^MkUAdqe$xmt9~do;VPE@Iwd1{!!AH)?;VbaPwM$ADJ4C|Z>2slv zcj{5dp}y$GA&URq$(o?Sck8uEi^P&6*z~hSx{#mR7>KXC(`PnVT*1b*Cmb00>Qb8` z%9_m?s;BJOAXT?w^UbFFGWhqG#|vQ>AY_D7EVKb4h~SJclkKTKC#pwpdicdc7E2-} z*c4fzzB)-FA_z6n8cM$jUt>7>(ez{W+KxcKQ) zWcqhqYJdh=zUuV}Xr490EGwli15-|)NoLP5_fYT=X`urD>lHUA-k;B_0iR?C;~{TR z3RFn6Z>opvq0E|^@g)PH)+AGOFCZp99u@n_Hu{|H z+XTuXpMCMU>{mM08dmMrrQB(mxk%m&wyFKKGE}iYJo8{Q+?7PXpBdHDJDWp5RZVb#A==Fy z>$$q+A2&8Uu!rvs$0*sI^%b5u2S)73EvNDZQJjutlTVV%(s1N(sxr*YM_&N4b zKFe^0o|h%sn!EW94fi}f<{F7!3F_i#k-{|j4R+i1$7^Mo3a#{ISbgrrcirMfHyK%q z@yIn>lSj5^xt?{iOpH_t8kH(qB1Hwxj#<m={4Ac7RTjW@$Qq23 z)>m|Z*N`o6fi4+ROq=O=yJPuU3OcDlo_UW(`zGMGOoFh|S&O4!ut0`SHRy7X{csPZ z0hqk@n{@4+p;vtDZ}f&qu@{lRwDWet@&%4}#*g@Qr^vK>73YR}rv~|fRz8l*we+Z4 zhLC+z)P!c!W>~0{N5D3|f!h4|KwGq+IR0R(KM?1qRzKplBz8mA^kv~pl|_Z=3|HiT z_aV8<Y@G?vV9#S1 z_89=ZQxmnp_k?Ac?{YXZTvSNXmhZImJi5so(i|(cWoOgqB6FtSG!_Z1Z(gUoH9sVn z1!e%@v7n&}QE}s7L9ptI-yGJ;mu7;WAxXGeL$pb4OmOm%k3Nvw(>*C~IGGFMo`QA% z6t;&W_n(3fu3vagLi*^FcOS<@^;OHDya=s5>H!yPxsw~>D?@|B%*52V(}nJe!LAJO z6WqOOC#6{&){`v7-*g)TKLrgLLOqJlRDti97s0q8I0aMUaK{&NG$SV*RqAJkF+HTn zrlS)p$9@eJs-EyMelNONZ1`vD%An+T977wa6&T+A;(d3HoA0`zshoQ2JVV4mvh``8oG z5{?F}w^yqAu4mg9EFiL)!MM9DQ_E27ao*$UatLqNPbfexH*do&*YP}R93AoBhHN6q zM*4bsyFlATsx;GlDu4F_t9*ed38c^mW~D-CvX#!8V~LO&a6@-R)MUghQW|PnOd=>S zA*7c~TVl-Lt2TKTxpP!MaJ!h}Uhj>(4VaTN$(qs?CLq@R(06V==ro9naxnFd#8=C; zoMcOly_FW0y2I6kyry=u6VA^<+Q=qkXmhKL0fvaB4cb~UFlqO#Qem4zJtn76DSI)q zT>e@H!dx@>M4Pv&jA_yRQ|;!@1iP{j$Z7I8VB4x}Xg`qq!Ag>I{0kSDr>?k~0Ui$M z&N>t7&us}^-zEMgyCvcT8WhQ@K5@P0CY}nkGK&<{GPa%>KcsmG66>7v%LAp)ke3<{ zcVBZex*%c^COVA&KAej4eOL=_rKOkF^DVw;S*+wQ0JFUbSrOxHujf=uE2I8ym9f?_ zo=HF1ClQz)vlOpIJnfQ+LyL_4{$LlF644#`1`bn!8Y9o3L|7j{9 zGg(eO)SXe7Wvx6g!G?h6{d>fR-q-g8Z=IiC&)>o z+H5>&s-xrC8L+ehjAYzSk~2Gb3-;&M?dLyPbXcPy*y{7qXhu0^n#&{nTZB$Xi}HHj zAXyO5dB@V9nzcF$Anj3k7PZE?y3~uFl z5J|u!{&lG-3e|irt-eV{shOd2?u{WA&tGTgJ8u&>d^TMw1f4{b1ujRVY*14xO$*@J z2!oZnqnpZU3sZ#{Nz4|2S@T;jGQfdN<5F5IMQ+kS-s;Zc>#*ANE!q8P4{QE~6pGPyo z!F_=s0!txVz?#|Z8qY#xgBA3R@X=UsdU@PeZR7u(m>1PHr8`vL@eEt0jTTI?k$oM7C%tTT&- zb6?@GX=~;A=32LCRU1vt?OYn+2^yd$UcsZe`jDkPjVg9-B_WqZ0cwC9VDnvznXW?* zh=W&kfLH)Spdm^$@_QfKQ8AjrO!h7$KQgYZwIN4Z3S|0I^uCM8$z@7=56ATw7}!(; zE&MxXh%MNBtHd>_~T2Rc+HqD}F8L6beanb$yK;J3aR5EY_cqy<;g;c?yieC`p)K34`mM zq=1^v)QT(rdc)`C8KF$!C((?OuaW5wcHEyPjEZl{f%&(!>S&q`7S3BK32q4Fe-QQZm98(ms4GEEkBT z19IJHi4PJO_5L6EnzAfio#)uiwUC(d84Gq8jz%@HlnbAvFM!>(N9Nay*%nw^a*0oK zWDi+&WE84>I=cHh++gWGZRSpo0{JBg(i#Y`{|6zbCgHiA@h1`8higmGSwS_?r_V=F zf^h1o_a6G35MRWrGT{g=Bnwt362;%Bd5lcV?RbRG{Qs=exuon1-MwMsOJ0mHM72#A z^V*2dmm?2bv;8-mLx??3tmvgI5*kP+Ylgze=r-yXd`;!wv&$SocCJ*!8BM!N+tOQA zJ(kEN=05daniAv0VD218ea5Lr?0=nM#X$j-UGs7@x?m{GF!lO#^TqTzI#Tz0Q9|Ah zIA9>=OX!V%%=h2(n{wDS=e}SI=&P^U^U~+~P$8hp?|gogzH5G=B*v{=IQ~)D|GE1*QZ0?NtwquC(;hE;;%=9hQF1D|# zwhBRf&*xfQt8xw~)Hy=pyb==*jVN^Z2Mko1N|a<|0DNRf3R!J8tFifoBYrBh=G`Hn z^-!CdpPv9ybY`J*rMOZX3EjGHF%Egj;Z?%_Cf^){bsZ31`No-Bi~HoJ^)lz3_fC|b zWerv`ZRv^7t)c--iu68Bh~GX!WZcX>h}iqkAdv#2XcHU_tCy0~#O}q)A_Ip7M4OFa z<#z8d*`0B>FFAg0SPbrtL9ULxw+j74qH;EU3b9CPn6S|rB25^y4MeYKi%iG^%wzu9 z+1Q6FyyID#m#OasGOkxgS&*!k%a)Z|@%K1KPDzeKj3K|IV0C8jyyXIW31sajE7lB` z;nAFi(@4u&t5#2Mc^oO;pWP7m7$O@{QI?sC1_Ir|o6_oPnt#lY+DbE|(`b{P5Yj{f zC;bV?96$H>9+wf>dqx zt;L|dFjXj90(6I1^U`C zm;F7y*W%lWeP&1n7b20|om&Urkg5_S(&%r((<;2`9Nbrp5{Q?e_81<}3`UlBe9P_~ z&n9TMHjD=lJdE|rF9Re;Jty$XG~Rknbt7>D`;5Uz9u4QBtdo74aRf+i_0T+2wEs1n zeA<<;rCAq5UMIOUuUuTtH1tneF7FFDMIh%Rl1*l1h3;wVl#31^nc+SEyS^KP(QN)) zH&U7{u97Q-wN%&(q#vv~T#DEZ92KnMmx_kwwqLZ3{P-%Gy zzKPI5L=~wlnaj(Tqx?aeX8m)^QiZ7gTHHbyxXeyLamOFrMWYo*4IPU~k_@AOiFwJA zW+d*6&DR!*r#3XKp@;Ye_nfcU5onfo(OExa)iXZDr)8b$F9#lk`420dUMak}!m(==Up( zU~gB6Psj(X`qPgv5ti#CB8b1B6>g0u4qE2pGW+N*+Rg|0OrmhJ<~0gNNzW5$b{R@~ zjg{MOdj`SS>_}zOlKYfI?2WlIwD~-TT8!^1(9=J*(9f&(3*3OfM5Tirv?n*U3wNQn z%2sx*17NLm6yayp0vaQhSCHRk=}uCxlymEyacap%8-9^N^L>KN&piLrDybaqRsT3m z9rKBYVN?U74svCi5fMZ*Pup z=(3ZVT?miCh`i*Efzk&jkvbaSss9IO)T1bo zZ^|KGQ-3!vBgsI8tNYhvR#ZYy``88|B+*|-TH2oG;Nh72X}{LBoc@3~%hq2of>R6r zxm}<20}4%yD`;zN7#PQq5bj675_S-uF0e8|G$yJr))6cSJz;*p8xWFwE?Fg2`m%(4 zp3xOvF5xIAFfuEsQ6_k)GPr!WRQ(gw_+$?qULxv!rSh)K@I`iu4CfZ}BxvD$q;gcR z*MZ&myBARI#%McX%_?@E(Z)$sMv-*mz4`SSV>%Y$mA2D5 zJi$T-I^4h0M8sBYi#XN)8dRsbr^T7u{e=>2dq>;DCz_FJv!T^bf;4tXdSshB@3DoQ zX(@Dzmkt3gj=0xO=4G()N(K$ZcGK_|!Z|&6$1tk#zvYNpD*F@+EE#H07#x=Jphmd1 zvO1Z%vL`*plC;3|u*4)pl217+QW0OK)%eUOZjC+`N9B z#nG)NT;-9c%T^Euv}r&J;J3I-z?rppc3rY3dj=a|7_15!8|rv}wGFpPy<{`Fe>iVc z0=g0H>Cy?hlRCZ9SF?=@sqjhGx2Mww0+%ohL*O`u^2j*ykG*k1k%klr?V>7k&jg3s znL=Mo2A@P#*W%pctLcCw$ZpIp^oale{k>7OHZWFRjW=FXz(h>!3R308{+I?MEB=&$%7XMLWC&pNEr8dWQV%rvatOAt*Q{TpWkzkY z2s2+{)5b;_k=fPZnUfdwP5*Q0>4kCa0uZ?hlApX20J63=Y*gM@CSSQoI`K??)k2{3 z1{r;Tc?29&`8Q)2P?xe#=61+o2jNUj z|0ir;J=*Tew6z&W;gdO_;L^mMq88t#-VWx@*6f9~;yFsnfObA9oEnhtQv@5PTa$Zm zo?$R@i&H&9|48_;f{5d|!zysvLkCVIj~0b0qY1r%O0+Xs-)OWIDVQ2I`5p}5krVk z7{JR5vGKvP2iJat&`h*8k3`$7jF5ArJLdQ7K}(?nqfg``92rP{K@3#IBr+}WOrFu! zM2355#du0>K9L>SK+%2F@Y;Bv1HW>J;tism#LWDIk6R->)}6+1oyT{>kSLfLYk(A9 z5W_)7-J(UyS&r?SgxGN&*DUG4qJ?Bu?{n|(`nMF>0hRo~y%MN7FCXUTvQG|kn;Knz z1DUo2W|W0D0M}(Q8Na>k2-REw5W3LE0vqYTbV--Lk^J2cpV??b9?e7i0IYt{ccHe- zF#V)}%)Syj>y(Rr?8ueE{WSR400Cey*V@W))s8wB%3vsL$8+8Rw|_V_U*8*oB#!FcyU`67C4|*~KUTN7zlYj@7*t!1hXT*Q^<(5ZjPYqM*V%ADZ4bI% zQ$K^uQDDG=+K;qUi8E@&X~r|7k&RR%hBG-OF*o;Z0@_W=sugUo_M2?%gdEofvLBo>#X0>mLcHe@XYN`^U{Y z8L&#_2q8;cfS5QDNo%uJ_sf*v?hF?9_w*^_gjM#j#h!v0aKPs;W`rFneiW%`t`XTy zy-Vw99Ws9vVfA2X{qbcM;}=}>mp9J}AFdpivGn6fV`@SoGBtGFe>%i1Yrv^Dhe!z# zU}lsHClT>~WZLYb^^#ZN$hA% zrqMBC$0;R55}vAI)Tcp2oOQU-BR&pMG&R}mA+nw@Z8 zfD9uckfF+iw;kUb^gcym@vrZ(o6z`Tl)cA6Yg5fyI>P9egcL1)LwdfQ4~_u*?g37ZxyzG){Jz}Ud)vu zH#|?9`+8+&QE~AoeOqSUxxhO0@I z=KYf8{E3g?1_Es z(dH6T0zg^IG9TnWlFKOM_`B#8MJ}Y-{mG$Qa^>dJx)7E0s%*z=UMq&gKV3 zH(^!exN;m%w7_w`rAu|!(v$h<^oV0tiO)$N2*b0M3ZCz6sJtZ}u%a8V6j)LIC7HNx zvEQ6rdQco91K!yXftYc##%C2BKnnNKA}I{WVb@_)-ojRV&69Zb(Y9ZjDIb^|;1l;# ztdd84ejxOA6PnNn1xz^si$-&c44?mHCyQZ^n&(To8RbQ5R|4f@$Df8G(*-A_ zQ|pM*D|^zeMK8|Jn&J0m&ZB#3<~vK+Cd3K*#p6V-6_Qf_G5*B$q#ueCz-xZ4S(R-D z)1GYxGIh*qPqxn9APf38ATUEJn;4DxqviOr-*4gfWSV6|D@Mg#SiOMh6@jn2BPeEy zR3%&L94Q=}Z=9~xoASO%H>Yv+UZ&*_B~1|2$v;H7!HjUd>$C}#b@S0b&AhnV>H8W) zc9xpbn&oR;*f?1^A;OL(&O2wO&JT;}l+NtPs|`bZ-0rW!n$%x!dS8060Z>M&4Jy0Q z&k=_2Eqshx+iSWI3VoBl&di?P0rtpM`1ap#Jk0n}4L8Aex+^$ws_Cicy)jYlpq$;T z+T;Di4@ZJWtpq&RJnkAKLXm(kBjmh(olvF%O6Vf}Ck%x3EFhrR0Bzj!%r;GSTW)|r zhmMg&IM2N23SKz*$9iuCLego2!oX6*hWflRm~nbP4{$Hp6|)qT3l1dbvoxcALL5A4q#$7DHaXq7;Pu_7;uJju1&d;lHxO5$IMb}7 z+jTxT$Vu46CLR?w@wzHp!gBM^`-6J$LbOjon;k$nEA@o*j_yl$yL8N02Srqh$7eu+ z(QBS^yHbsmDYN<+4@!Su0}!be0^gf#|K!t^B}Bjz&6R;ggZWIt-hz9P{C2a>GaZ@P&sjB8IyR$i$kDq?IaDL^0Ed}Qo=1VM#%lBuTULFb{+dL)T36IrXPOBC`6?EcZ+2H^uJu8dYFQS9 zzE7_d{BrZ+R~ijMowC1VLkV|0Xg_hR_%wgIo0!&u4zM5H!U^UCU0L0JrrIR89IoY736Wtj5+is%p}D1fUP1U zno|$3aEm=S4E2xVQ$-xLny~F?47EZ1Mr9e_!0bd8E*o`+rUfiDr`S9ezeiMG(GEy# z2@0EdLKAPa^GIp30ToGrii;4EUr#e~rALhiQ#3cHW5e!;gzwn(;zcwtyHA)bEX;@) zn=FKKKi#2eQu)FUB5T<4cJSRotnP#izZro|RijbCoJ$RNsy@cIiTZ!|S@hHEZO$XCgQRFTgw`O_U4zSPWM#j?JIC_u z4TJymkanQh58U(~K|L@;p7Eq-*>gm^10>P?>%xA^%V(0v;cKCzU3SCicm+CM%+)3UGNjObI94N)%a;I_)cZp`_ zb=FWtGs*b4{vV-TMvY(_Wy9RO`^tfs+Mw9l82zi?2X~U3O9n-^LJBoaF&?u1d#C8# zYB>jHioEh;Wie&#o-Zh0dO!F9_cxxv8%^mr!Ctx-;UFQ6*|nfg}P z;gVhbm*p;mVST=n#o#|+}*&=dR$Oh>Y(Az8a1SbMtCW zL|kYvp{tF`b-sgVL(BL)v;A<~T_JPh^3JII=SttK?PLqH<#ucYofF(t5JS1P7vqAC zUW2-#s#nT?O^s)7SO3hL+aJJzqB)>^6@Fmw~8 zCa5-ov*y8L@~frgn#j?wWRfg4nyh80<|RtgucE~59-3eJ%|#OmlE0#z2`^kln*ffA zy;&>@5f>D9xI4rPP_bqeAu7>FW#)pPQJ~WE2GtTpSqjGG7@Btput2cQA}7KtMA2Rk z=VYBEB8Ux|V*YLX{<%)s5JOz%tQwEMj=$M_NrhF4d9a$QXjcLba4X{*E4a4h3mkm8 zsMcpQgonJzf(lALl7*h-b6Cl$qnXr0{K&awMiAZ7o)IaxUA)IkOg7A5y^C;E z$d?M)Rku#jh`-5SHu-~CfGq1;-UvX%0;%@x-&fSpBk9Jrl;Dmm;{GooE)Cg8`7yD2 zVI_E#6Z8YT*-DsASPvKP2gRqDkDDb22kl;mNxGpKQz=8p`EKO)AA~w$dP;0+L48=0D z>^=474W7D=6i(NL#H$<=_Wdr%WNo1A{=Zse)Wf#ByN+|#arY&GNq+mKyp-A&x&^7mw4uTU$v1SvxrHi zlAZA%J|$pXwQm`VwZg$#D9IH=z|b@Zxkw1t+Juw+7WIYYYbMF<^yu5_6a1Gzhv(V@_o<$y}dH-4n?eBwwW$g1% zcrAQc@hHo~lw>yB{!IKE#se|(lB&#ewOffx(26rK=Okx|_gv>+m^(g_6cQfgaqWCm zH?t0mStdAqE9L$Vp~|}g$Tb>u(F}Z5KEl!;(#8xLTU-pk$L!3L47Fcpx6b2jkW&0Y z@#rP1b;n{{_6<#QeKNu}DjFp?y|rclE{|Xcv@;0&Y#;^7{B&o!8)6C@v@EV2HsI_& zi+Tdy*B<)dVN}N*)bf`12m553{5#sd9b!sY_5lAs0KhKXgt>`zhAMoyKUaAiHv#mB zEZ_6e?0oOqes*2^$+QxOxtB(aPN)7~Sf%s|ucn5Xs!3e?VR7wR-~2|tOr%jwQ|}o%7&1mNYw0VtPGEKBvA9x zVKF17QZ6{@*@RAv&AdhEDimp>XK0{1 zJYH+^52zGk4iP6i9$u~Pu6s+Qy%pr-5jK3=w#sG16L!4Pb3Nga;7vbiuHQ0#ddn<_|aeK38YZz<5STrxFkgw+L`cyDLWdI=XxL5gP%G#h* zB4!Jpfx%DyPeo_Q>ct$uG5zwTtFCoJLX103_KA8*2L`WOoYqQcb+S`~NfQ=FZi=uc zaa;HoZ)C&lxPL|{NDN}VWM>z%ir-kmj^Szw&#vuGg*%h2`9YKOPX=ORxGC3q zAK_3(y?Fk^4IIl|cN~sb6BS}Iq701I96Tv^ChI=vY4}9EmyocBcHd_0yqwjSc-!{f zj3lQrY`@K+!&vNwo3Xfxv57f(V*Sid_N6Eyxu2JZVA$yz`40@zdWUM0Dd$2>Aw>os zC#XD$$Fx&^&^oC>XAKtCvHq1`rIi7{;HUawT2_rr&}-v#Y0Xk&T)-^kgdM&e6k0EF zb{(VqybOQac2KWEunk~AAg_n{%ZBmKjobMV+xVjYtcYAkGBlZ2@Y*|9L9#u38LNhV zt1r8CI1}<;-8z!^e!JMb2pCOMKoT6Gz4~%7pZ}sXb-}NkM{N2M@#e0)6>n1oiF9S| zA0BVn@7{K5a2ICMKM&iwQj6s*{}lmGANZ}oIFt9hKe_bUTupYEYEL+&GG=yoKIM8p zlSqx(h+!Kg)aQSYKnGf_(`R%aZ}cvHTF73CqsUH|UVo|PT-B<^87NXnVn8Kk0YXWj zySDpB(i_7(tEQtYS#!;3W%qGMDY0Jzk35YLld?xURB33=S-tJfV=tn}KL;_9VC z3U5h$IU&K0aNnq6R{`s%4WIYp`v5{AtWp8qvgyIBD>!sU%V3?e5|9nzjg@Q~JN%Q- zG9Rxdpn?OEp8oia76j<*R=^E!LCtHfHHc05Tiu@h(V@AudmS>pw{Bs^^#XbykZquv z0u_5e&Ij{qm-zR;uCIvL*y~%mF+D+LFn(6CE*P~u-Vr9F7+@G&gE5>NJj;ZgFJs_^ zSn$6#QpGk1eG0JE5ei687oYWnKlj`-^~nX&bgaZgjXds(t@D@|Bu2db{Xw%OSl{G( z7la6k{xqNTN}84Ue7J&`&pSyI@Tqo+{fY`f%jVS9s(X9(ZOzDt@t{&16%Z52AvY;S zxzkX>s*!?s`xB#igb#+#Wx*Jft{eikN-z}anqfmJBCy%vg1(v^CsNa@hsybM3keEt z>Sm~rQCgm-KEiHXm(AvA{7DZnX?nCZmQD%D*QAWuD_Na0Y;K?<7}wEPz^h+6Y@`{t zCwfOKhnNAg!c*d&#ZJ%d+odr!dNi7|8rd{2&8JDN}(Uu9`MA)Vd?;f z`D0_`Dk4NaWj((`fw^DWy1RowaLHTIYrGaI*mBMshP7DSMF$lV4)k``7s;_{)d22d zY5N~yufn6T$F8u(;uNKL1Cf8rS)F#@s|P3(RWT<6Zq5^RA=LKJw()pm(~+m$XpaeH zgtPLA-cQ-7w0l@HrHe--hss+!q?@&~D4Ce4L+GiG6^Ez(bN(c>crOF#f)Q)C-RWl7ia77-{LDr|6>7ss+?S)+S&4qX^c~R+jN41hwX- zCaQ5XqCcz9SD!;)^lI$$>4~rhF(rF0j&M)Cpp7=xb5N&I}rQgC>(ks5O2zFC*S=|)J3P+1nccFdXV8=JvIHf zO#@5WR<+;8;I0Fp5>3OK#tHwS{j zS}F3p^izVBgRD!lc?&oiZT(BbfSy_lO5<-^uRr*|$%$$Lu^Asg*?(sfa~18L>75>m zwo|8-j>sd!1KEE6$wZL|GCQxuUd$58Iy@`xxt zWp@SfnQDK+Z+)F#W)0(tdbEs2|Ho`iHe#^S{6CjB+m<5q3an|E(4Zk{lkR#&53<| zgpk%|vg}dmzmm{H9L?YovdS0tRSUqK%1jc*uCg3+VX4i@?=%rAKRx(7V`B3?quibA z7+R}hwLC?QU#%~H;M#-LywP&9Rgjds^D-Viw}XVoPRfJ8U)8{pOgLA|E`e8QKJP^C z9p94cpWI?!Ni?4laSWQM0}l)9lxtQwzO@B$O!w2<@%zyblxUr_LDw!pB7Nk}Y+e1Y zsC{$vDAlpcSaCSxZP|!bXvya>3u_4|3{6WQC)gT3`dYOO8w-7h?Sj*$T+m)CJA~hy z4iSQ_iIyrpojJALQt(Mj@9-S#>?a zNfcd?akw`!1kpLz$?&ceJTmM;UkVwYSAq@9F&weR3PHbt$>=2FHre00;q2VQ$0(|i`l$=SbF6nKM}l1AkmHpW7GYld z%7WBF*PQ@UC2Z*rMs-JjQrE`YV4{pamhZW7etQbAEn$PKxn*LRjNg(5+j~#Bde9|C z?~?PUqDe#0S%V(Hhz@OFNeEYrnF&UuiK$Q&X9C$f}xbsVE~Ywvi7E zB;y3V-!BHhG8GM)VWqX; zJGSy^W!#4Hd`*-I`|`dSz0sj#&@_g(4)ks0Ka0WF30 zqMIJO?{dkj6uBs{-o2OlQJ2xa(3oB_#TDEGsyh?7H z9J);J(}1i(x{SJ9L7g-;#^f)fC!B$2Y7}TIPsWHkF0|5|cTg4KByws<*N%+=3;qpw zG@qta2jjdaXNZ$N#*q*gE&}+BR_{{Bicox@QW6%hIi5XLkxF8eD~OTMgMW|EeoB&o zbBk}=H5F#i?t8D;biQBW-_M*e@7wrdrc94&od>!V#|VQZBK)QhA)2v|e(?p?hzKhE z44Jfl!{d-_@ycizMwG;nkXO$ej^H?EVtmlGnN?&^VOzgs138<{DypW{Jv{A}bfGuN zk@8O4q>R>Cy*+OC`&+L-x+oE7(=SW#!;d%p-unCj9OZTXNR$`Sfjd-R#ZuZtR5sTS| z)H^)`qTjuxzhuli8>LjN+L8nQ4{yf!SDkuRuUSVe_EW1TehI3lS-TlY0f%quMP)Uz z7de;3S~0RQPsj2t;Qp_pP5L29-m^xYIpgHG49X!ugv%9e*@ea#I`+`eTCg)m<0xKjI@Moyqs#O4Fo2Qz%#Z>G znU>kY~mk(259AHXUln9wZdxRHujOX4N&#+&N-7NwSD)t!?fL61$HY?1748w9+ zC;n+ebW3G8q-3H))(A*bln#-v*sif!U)8P2_A0r6AB`@ z#ANv4rTYS!q~Cboau-?uaTcN{hU;}vX#~%IcV)_Mza^(qHy=nX-}gj38WK#Hh}E4} zR+JG;#6h|=S-Qx>`0}R4tL|ogbfv%*`!^8rSpp`%id^qod4qVabrm-t0YWrUWZ_xA zCqiX=Vgsj)u_~_M6E{uD=1H^KZ}KR+3yFhyZRUk)f`SP?=GoMTHS9i}&7%6-#d@zaxj+m)b&RsJ*A+d>t>39 z*81I1bb-8vB?-_!y$=;FHXq5Ma@JRFE7HcrC2Xs44{q%eeH z65zlUfz2@@%|nH`8d3t(2mEqaw<9TuCB>k?aL1ueSbRW&1m$~WQj-ygEoxbzkE*X} zk5zzIXw#*iY7 zrZsPII?=Ka3T!7`IoOoqnrZ+=Vf(ycP-5lrOV z2~6_JtAFI}(ZlogEZ{f%&YHIm{58nMv z@Xx7hOhH7h)SdbYia@`GDkV*5HN8#K9Km56tB{^4#5LS7P-n0P;`J1Hz4#dZkb17; zz45^dIH*221@E39m;}IRh$hQ}f)$HfD01A391?izUxni+PP=TK#;eZA)J*5MU^Z1FOB31&sS zJ*US%E_8f8vk#hOt9@MEfgB2KfInv^**GIF_f+z(iaEZWJSs}OyNAxCalD}23?}L3 zkCr*o^P>H_<;a(LIh~fI(6m1o-wNIEOpu0^=24ab$7(s88cEvr-Wp0{8fzv{r z;=+Ac=Z9CMzoxDJ#=6I|Ad2@Yee?{5HRgmzF;|8O$$MjEX(2LgfM%^xozz+Bnl2eq z72QqRUT*ITF`!<`S&oEh2}b;ZFzV35exzv(eSKQ`%8G4lSL>H^3l1(!L9Q=}NAa zFGgDMC+CiTEvTyAa6zfh5xgt&qz9MCW3o6xaJ_w6>4uK>;$rjox6YM>Bn`6Rlf3N> zFjia^zBucxF#YImXWCeP+%UxIe5-_gpkFJu`um*(vjD7Z)8KZU29)Vv*<}U1hrx~Dp3pu#^Edob=L3(t^z@FBRv{rr9i{YLZj$I_`E8{3!k`b3aH&lpn&VPW+ zt78S9FRXg2{6RV%rFUnC!{vh!pS;K8-TZdsf_wcrdmA>P+$BBlBrKxVvH)8s%s31E zeeZ&@Q5=4F-U+C=7&n{u`mBwoE*^vl37yCBmO4i%f?mC!sh{~(AxT*7Wm|e&eU$$q zaiFZLmdfiWAzx4!eiPvoJL2SvmuSqnry%Y36K6^V#)+}_QldKw9o`#<6ioetaM<2> z`@~XOFaR*=Cwi8^?Utt)oYITEW!I<5#L?hHJ-gcy9_j?;O_0Y@misw?yn8pcf$n8u zB3O%nAZtXO;@wVG@&XZ`BXcQZ6&Xxo*w;J*39c-(n^Pt#4Yc3HJY_^!sOzpx7te?& ztotf1naeX?rymhopFw@OewuCqz|W@r{%~F_2O3}EH?|jk+Zc6kuWWO+W5+|x5>6RY zYCWPqZA|E$zT(^Tc4-s0E1;^#iM}qq418)+l|jUS$;M zplcL!&G#GB)|H_o_VjA8~G~6@ufx=j-IEYzKxLd(^9>UyR|1 zd8unoC*ebNoBqwoQeRpOXSX~`oo+GVScNV5%1q(F=RPeZ_U4rhwPs4} zDSYcbarQn3u$m+I)RF*_2aap`dQYhVw%KJz{Y|cG6+6RDT_Pc1Ox8Ay4#v)7^tu+I zfzzM)2Tgq02xVC>>A1=I^cN}I`FXZ2EzS9rH37oa#tEmi@2m^7{!9A>Pge(-_5!s=6)Uh2$$y{QH7b5XQ17IKA4<=LZC5 zhf}-Lk++znV>xJV2x@;no^Yv87O80-3Ud zwE_kt9<`|#Gh4NIer7TAnnfU}Pyg&iZ{ z!AK_oN+od%t-n*wngQ@M>y|)%ZTq0m=3mSd8)qXyLBQ+6j4&wn5`n(HM>a@6%A=+_ zDp`2(G<`yYbfozA@(kZTD*8e8i(^?Azqn!en?3{jZ%{bl!V)< zRBVm>IpJ(B4;mXN2Y7_`^)_;Xzf_xL23+O^-qSg9sNz7fWyN)E`!N4ak7plWv`08wDqS0U@&&%>HU1La zWn+Xik5S9_?kClT%=aa%5#T5&!ewBkO54hX9O0elBPsH`$DcEeX)|%}P83TqK-1K8 zmj@EOxyfA_(A}@a>Eic=cujKz3R9H5do8i(bcU||&e``#f)q&Y<8L*EY-eVA##XrK z`UsvE)4;5%rJ~-;gU~cmeIr!s8K35wH%#nvFZrmk;7H%IEje8$kA%!Phm512A_q6% z)ARMjD~M>IW7Qd?&oLrE8|)6t&EKPHHQH zbjv-%pBvUl`zi*p1acAIXzbTqUjEu;A(^`wZe7s}DCefx2C&6C!?bVLvzspT%jx2A zjL_qoKFxNxWC=W-?ahCvO0K36_NHfsKL#%pPZUPZ%^>E2Ori7ow!Or+5YY@--ccmU z%5H?p?PNfNbez|P6?o%ys_;YtMZG0F($Bcn1ienIw?0ph!la>ZWpq0UT3Z81c3LqS zfJsHF8+2`-W|)=t;U>;FC-3HaOv)t;+zAPfBG&C{@yZz-Cww(%>|vfaaNCL8q5^5q za!>O9%G}b;wgZ&V^K~~)Rz7DJY#6lt=?U8{!{4OdfThPb*IZZf9u;b*bMHgf+@Qrm zk{TJ%z(l<(!Dt!Cb5v{*C4>6gy){mqZo2tvDa6vTk1e^iM@39B6q}@IxtWK)`F(p} zCR_e(uoRWhuO2YSIuIJ+onv?lJCY24H(<_G$8nr%4nXDE`@-F4E#3dn?Xn&+U}Y+2 z;4*-rB$3Z~i37p2MHT&O|4k3!a+v}L6n+?TvFSQk(}0vda++oMT!xW*HUv^qf4P*3#$vbjid0ykEL{uoTYZ&B zG7BUjhTDwUi~9%gqRF^wgpLEMby#Uv9fpv3TycWML0FCnKVSoD@OiFwseAw#x$@|2 zdy$xvC_;yN23p8~^k{9wf#J#L@UF6H$mYa!{j0La^hoR=N@}*>ii(MLp9b+VKw~|> zvn#+D)w&f^?&rb;HiSc!s()T)^*<$mOmDJlktI`hsx5QD`vL*pH}LZe|vYca&c9Jv5>%}tqp?2#dyPo@2! z*Zf(pO_ma{&ix2rlMVYrr_7MLMVpYi4|D_C`FaWDm3GLF>zN$*l?J_%7GOys(;W{~ z72d9s1fHI*sJaSFt zA#|L1q#QDSS4%h)OEqWlxsuXw>DwTq)OGZQ4_UZQqlu1K!)V&k%M1-lwA?sz5X_ME z6eAKthuwaqHs&HuqB=8VJL)NLYOA^q2pe>NLdY2wp)l}ZX{?j{e~!h-vl({RathMz zL#$%1TkSiepyERO0l*?wIrnFg2HOe3xKvy)5Mtky==tMoW(cGU5>k72G+x(*N*qJj zsr!4IlGd$I8?qS0ba>U}7F!;QJQjyDFv}AwnGK8Gb-KqL98>593%zXw*`aiyk6OZE z<{Sn$uztUgiF@=!llS_xSvPs5>1cLzz&!T|?qZM8ig*qrBVev7I05Svcx}s+ozpmj zRL*~aV15%9B(KmwmrFYOG1W8EXQi;*1_*X)VQxzy0A@aK4k}%Aj!J&w&(^;|uh{Oa zbWGCy!td=mR>Uc@MCOR|Cjg|*k19#RTO(0w#5z3*{nv{L$XQ7k$qijtV1+o zsM+@o{s(#jm*?sEkv1Rqs{tN6;SuH!XoGB^0&ZF|E>2v}bNPm8RkSh=Rcd4iCSEy^ z?Q#U&+9iQ80^CU|$I7eHPFZtsPCRr%^pxqujZ*)5?ePkj1NXLTDtC$1c>zRv0>W(z z$_Fvs_)n~;GGWS~h3K`Nf9iEumCgeopl?m(46e+2#p2e*n_(a(Jea?QX-YBEFf0QH ztOz-VN)$R9zb>l4uo1m9D|{9JN}0R7{-GVv#MlVS4Ui;W5|3np$dr!Ch|#WXb@$ z6H$74x^GZgez&o0@lL=F?wd>OF=(VBOI&4(A#ipgA0#8Z^rcjcG+XaKo_Ch-?Nj==x zkT!Mi6%^sHhZ!>6UMm)rl!tYXpLMyTXVkYan@%s~ge3B2kzg_++6SHW*s|T)XY-#t z0--jY>qI?!5 z9@CU~@5G&sGIV3uwM9+papmfxgQ3G>+t40W)+FO}T_FZoBB`9SeAB(g zu)1Q3JY zuv1n{kJ58&MJoRsnHZ4@vj*KsKzrMuG{CTgAz&OTJhljEIqNgP`Te^M4q`m9QJ92; z-bVQo)(?m;UxIYZ$*|&7HPC=~sSxRtP{<3g3N9+o(OJ;69MIqXc}lLt#kP%tKnQ1^ zdQx3;D9%1*^ow+Lh1_bp8{cUY=UgW6^8UE5Z$Q)x$Ef`#yGvXAc zbypffun#htApS82jaUt1@ zsV}`nUkV6mWu+Pt_}a2s!((YVU}-csrO<@47_dPEn7ZjVg(R?doE*HVr(22*2~7r> zy)}F~7LR|G$gv{R$Mgi_V(gjxN?0d@a~Pfqkcm@MY3L_WlB+A@Vh6UiNKUg8vF3X_ zH2?;J6ZE*DWnV%?Gg_AC+H;VL`*S!Pg(=IG-2%pwnHA;S$oUzb8@VgUSzEuBy5X}N zV}EAkILS`+>Ue^Yx$chXVLw$5a1e*k;_xKe*@oerpOVy*xV=FqvT0A!V8=CIKJ%uLt zBje{AVm8U?I^}1D$f7PNf_18Sc==3zr^&k{ax^9_v}8oZK1x}!aocH>3_P8hk#|g% zwP>CAZQ95OzvQ#1SpiX+E2z+;jEB4I_Rk?~ZN97LJ9i$1^n#;*3}8$ErE8u_jo%TLpSW`q+eFe0^2Ya!%vp)(6&lCPaJx`DAVOJWUcgl6zA-XBa66X3Sl@e`$*`{`cC ziP1mpn(b`h5r~v#1)m=~C!MB{Uf%V*$~G>;F4B5@)jr3eo|@szc`U4Hn{i1p5?-&C znh>R+M{71xj0m8H;yQ!))AK3g{R;F+86FF2rcX->UV}aUk+m9bhRokdaNjD`isn_O zZEM)Yn@>^JiW!)YGur@pQknr3>l?8Qm;X&UhnmvVSghj(&ZE6{k)z(XE9A-<^_0$R zxqj~Q4fOU>CE{%rrYrRI6YJ~%T)1d`4Kex&m=oc*U%{8F$$q+k54|hejnfQ1;fYjW zWC~fE(oTP@b1mBWo1=8~abnOQ)P?2|mh--J{kh;|jpQeA;5-C;6$L0S1^ZmxTr3e( zVG_n+TZ5|}e0wxL@G2e`8OfAtE=u&Ll`U|yI1E`k`NQP*yX`axbjVsQB$^K zq>_Iy+QnR~7n3)AX(+IbFp<=H3R&WjAU1++;g>qW(30R|q!;oPN_$>T7oWJBFs!mH zt%?)Of)DnFwUWulYFhpC;c>K&Et{g!LZw@UYmxfb{8L*<0X3FipU;s4VX}X``J1ee z3oNyBZW4Iv*k#h{K3fl`@!GWdnsum!6(PAQ4;$!G0%ZJf!%woTX*3!GW|!@1p}pD~ zdpwYO1aA0-AJ(tck_j6H{!)WEL%+#joghw)z^@vd)TWqBUyk%O6Q|7NkPiYNl4Ab! z18p0Qy*Wd-_@cpd^&4yVOZ}Uyd+~6ov!nLSQH_Dqw@rsrPevu`Hwx!}&;sNn zkTp}QaCadM%`&l=yqIM8qupx{PWzAAx&d0~6;&2oyU8IW6Yty*IRh4HS>Hkw-!Z*A zCZ&_9bR{LN+J+LytkwiXXa=_#?=ES(2J&NS^1Wb8L*RoO61`wMEBlo>%1#&|a+AFN z>z9O3Rbb9#Szuu$kA42PBxS<7Z+%qu$duX+Cu=jS6p8XA#W)C4Kn`{$WwIOb$*Qu< zxm_noLby`yI*bY2F_A3AQ4MskcId-|UV=7YD^&T~oqZv7x`8;zqZHy#kH#&n*`&&Q z?>=CBR(C5u)YL>ChQ}8P@rfrJ?l{#Nw9x^x4p3(Q7ihGr+IIGn@H|Q z#e>p2?p*)45fpz$L1($%`YCoL1NPHNI~Qil@h>3wLFw+8+4X!}T()lMX-h|L@+)J4 zAqGK?@H?}V1B6N?oxO$Su|D=Ahp;ATZ^eMPdP?%^cH25ySi3I3U>Pk%!ik3N%+Rn^ z*=zB{=^ezB_e0y$V$o$1Ih~xYk$51rhCNZTYgOngXGwQ21qm|i`gBk&@bBg0Yu}^V z&p&OFNap%WsDQp8XpxhwXgI93fozO#Sc&es3cX%4L*VHCK|cyf=GA(fz7-$sRri_~ zYlZ)~nV!Q+R_IeRc1e)~rT4g>*pv`{)(%UGy!{u+;U4x!J&Z;pXzV2b5?RNve(n(F z1)SR}49>3!^g%@@WVti_!UWK9od8cAv5%NVE>7bIBNx?$BkwicMLN{A>Kzt*fo}@Y#+?ncJudnpqjaJ|pN4 zi0A-_CNh=VT;{i5V7)dZ&=Rd(Pa2x0rQW}7gfMoLy z?pN^#i_RnwSD$p9kkzQ-6J1|-=Zwm`BQ(f64%P!qrl0kqyNE|LZXGd1J!@{ zl{@n`KF?|1N_inzm*&j1P)hao1Pht>rf>*1{w+^Qx`41f{J`jo4)UNk@&T4G)R;u@ zSo*eg^_mhTBw|NX>$+Z9y!G#U_Y+nz(jz2$SD3-7Z=%DPH~B7;^lvOXufTI(?knT`CR)D7v) z(}g{F<1NeGbvM}Dte&ybvXgEACf%YSt!!dkCP2MPUDcnm*UY6AwkYStKPgAQ658W%OSUce02^{*;Z`{j<$P~fEZiI_!y;d4 zZ#0%%2O(%2{hX6{$QT{-h}sP88cXX_!lvmGv?0QT<}H08l6h(fxK#4s9xR>}2f7cD zW{sx7f#(dg>&bc*dAA)@otnXtoCLWnUwQ^)M?O+`jHphP#@bh-qLtiv!v#D zbsN&siJg=u3jFoEy*z0R<$9TcHqjOF&+*GhOfYtQ|4P7~3y;a!sZ4kQEEU(_6bn?@ zdoTSv3U`Dgj$@IKOtJjO#?O7DIK8{s0Xq($B%$Og2rO{0r^I9KgZwltRwqFCj)L#O zrh$y&r|t?2RGmsh`NT44Kr^`97Rf$I#>=ENs-9;nwQzW6WOfTj_M%{j4iQ0OZ7Prr zr%W=70Y(t61m8=Wq2K)ol~Fbu?iwnZ_lY3Hu5@K-=*8YjQ+uvzI*%{xT+s21gZU)1 zH~I6MWC03YM`w@`8a?Bw7_CtFfD!Ckz5Qsp;J|Ooa^#Us>Ii^u>_p{a8XORh*-KBP zQvotg^%N*@q`JGZXk~8cG4NK!;hSz=82_u?x3}m8AKnvBYZFRE=XCwshY-+PsNdTG z@|Y`QLUz9lTyI5>;e%A;9;3BVvV0?+a*Z--AVdL3BlzrVtx(j-ih2a$pp@FQpKe8u z;~K13i4jgCA?jeiKtnvnnScT|c#4>S2mwIUI0o$JyeM)A(dzz>+fy>iif~9^nbm7Z~umE5q4A`pV_Pv zJ_m{4(hl)U{o=Ch)SZJcMCf!~F1?#~o6 zI2|o^T2XwsB%-V?fwCmWP%!xYk_;JBSGf-jCXUTYE}*wBvnBDRg@wwQiPk6CFq$T; zn=LVQgRd+egEl(uH9d_fFSFl4`Pp=n)RVQ8J$2?EIoU}Z-pZSDMfZ01RA{nE`0fB1 zII_CDw`qY{64qkA69rsEuk!U27s@D1IPr>)oV?)BD;K5Qm*%?h7#jVq@Hn4-gwjui z=;T+(Aqkcf3;W3o8UF)A5K;wh>fETEDFuh1G|MFR8v$>fF*C^}=9}T+>Uc(MXFS(TCb{;sq;+{xp*87BNtnO&HYL}a%lf2UX23JwFyEjb> zG+1Li$+Nd$k9NKx`AJV;937J(>bsMMIfnZN=G@p-OVydk)Qk(JZ%QD=eV$d4=681; zl2}XpB2QUV7UrVg1?Om!%*s9#r(|_x-!#-QR{_81E`2y6t?{a>ME1MG%@Ip0Va1>$&+%2IM>Gr{I#EBbpFsO;7BGb#1=yVdP`0&Y||}P@ss_|51JQ>iRTw=qYdnt@ z$a-LaX$LFy>kn9@F-_QTOB$f^A)Y}22B!d&^p2o2EiGD5@mFFcD`z&SBEL(bn`#?CTOgF|&^u+Ib@GcV%`x>Ezir@Ze+gUuY3~)ocd!WS z8?`+Ov}!5txVjcM0%%3$-*4v2^u2v>Bf@Pjs7V55Ew8t3vk*y&r_H{6jpWD*Ha}?* zo|ds=5P!l0L6es~$=kfV*?t-SMV|P4k`Lr4g!*Oa;WWz3`sfkJqUJf)2jtbYVL%z+ zK^kz?JY}8tbR)Yb&z9F_mwDpsM3=5WzcUa09o>S;*m>T+UT>Jud}!Jls5vUQpbtyv zVkt(|Ofc~Ut&KHP?mYoZIvaeq0BEhmFRKFTttdt#;A`>u5psi--2Zg_jV=LyAocId z%ME=Xx}09=Gh*eP4gp10#c;2AoG32OXLiUa>*1Aw+5>EH<=d8Gk%}_%{JoI0YLiwv zmphGk(>Jgn&ANbl$AStySTw&G{C5r|5OHbqO7JEaSlSbO_OdB4CZO&mp0#T|PRrg3 zee8n}84Dmm+7~{|&xMIQ&TwS@&Ou=L$xw$fy&bN8OPrxWz>{*l2ES10j7PuQL_*Rq|{-E+Jw>uPopw74IfRrCF$sT*MKBme_IW6sEIknORhev<+(7^Fw#9T7wSm- z+0$c8%$lDB&f__v0P}l;wv_&|9y-4AkY75}9zMwhCX7o$th;lK&rCFx_DA5tbrGSj zoV}y*BJh+cmbP(%bt9;vvn$(@6c0r{=m5;;pjkd9pe)J)$@hmuMIA3?g!U!w(&0ik z*W7P$(2omhl;iOAPwH~;TD#bQ+uCWNiBrA(0Qfu1X8Pt3%8KE@obgNj4dnDyyPq%R zHIwwWNZ^<51f>1=T(0k+Y&x8HaED*HmJ0hDr9WLa*%E#l*L?gjTRtS99NsqukdI$kXDj| z+u#IhMKO-8Gtjq6d2#+1E5u^fFC10)uL3nSiPD{4jZv$oDeNyRd`wFH>P*GfV5pKu zho|}`Vds6?2*&$we>KI!6z(q3SwBo6fOXNX1yqw?7Sg1?RqO+(UPw+^!` z8MqBiKi*-;#x`zr{PegQJC1MW4Mbx*ZZw5*dj*=Tw0b8xAw*;H)hJTprfBccU-_JGL*^X(;Tb_(T9I_1hvmi3q-vml(s`2=KKYk_7tE*olq zuL8ua9)bsUDMTfiEm?ts5DyiT@m9lOQbre6ogxr)Pw2#7%vnj7X=E<>s)F?KcjS)5~mh7PSM zjNw6#4H>;`so3(2EE~CtTE7cw$s<17up!`~w3sa)KJFs+W$ zY&6VDg?GF$yPl^2mf*zR*S?kirw;4W|G}W|B&Q-xZ*4?=DTKlPr1SWj{LqMD!2eW! z=lZTxHs~eS#RT{#{oP8^nfiJr_nM`)Hq>X)>wXonw_c&^F_gwY@H9#ueRuKregPFv zeP=6NVS6vfddC;@$j7+~7MajZ%)ph3w@D+ZDWBZva6HC^15KokaxK43s%4|(pk@{U zXJYQ-N6=ORl|5Pu80@~o=>12Cs%pK+V9h$~1bxLnTVNhixkho;X@)7!jGqO`(g%Lo zbaPWVd=I1SgXH>j8sOF28LeLdHYjzmV~|=Y%qK@M#K@!G2kj%(U#QeBt?o_xlC^`6 zY%u>o)2`aP@g@-JFn$C&da}B8+kz7nWNJojMfjH`oyLl;kBC#WhJU*X2WT>cLUj0h zm$jWfNqohqQgM2)97*JRjsDZmLZhZ>w&x?4YFY+^53Q9V*PmS+i(XaVzP=QL9jW&# zk9WcH(-fhOu{Z46TOCX0LX4`dhA417s&&%Z6+3^|`<{i-Ct~n!rG)7JW#a9DhBq5e zD4-7%DS4^>Wt}0EXsHveCY}c(M@eMR#2c@#ULzC{V4JU(_Q3E(r%MUtd=~<=DGk!>f zBN+oIy!fCuQW&wS7Sd-a5fB>Sr4OSI&~~}IxqiFZI&wCV2D=LJOH6dGp;kB@Nek|^ zL^ga}PNsSDq`X$!qN3qMRFl8%;_A&pn$=_MZ(qGX-dO4kHGr_DZ;q#ya3i@1^sFEq z_ebSOlO0sQf-Agi2L2vn?3J$p+1doO6+j_5Dg(}+7MK+;T-R=(`hJ|7=+$D>W8zC0 zmc*x7!Bw0CWrx!0tiv7#Z>f)?bXXh?zF z8j-J=To=^x{C4gESHD}aZ;_|a&qPccGwy*R4obCxu}e4u{4YFEBueged$u*^DX7+O z{5Z)m_Fi5QFpeL`M>~AOXG80D@r`e18w?EpMbOns!X1Zbu_O>5%6Z&qH{8U-M`9aw zFvx#pg$b`R0(-*rrSrKx8~(l`IgKZqdI=$KcM8t1)+;VnzUw7U8{JR2D zBuwZ!K5OMtm748P0Us;p?E%~y{7Q+U9#q(Ava(w{s{^+q8ODTI*drN+g(Wb&Q~j>1t=flxHX%m4M>1G;J%;X&7*?Joc#dHJHJDA45(d)HyZmuCYe>ILixK_pzGJjO&2hZ1HT^KDmZ?M(G-a?W>(Om11of z=%9-)+N;fKXWCnGB5z`1*<-#f0%>F9oEMQ zo~)U;9AJFGrTBRRLu zjYevMMh?X*)gop;2{p=V;KVT9uUNtWzJv%)-A^$3sgA!-wgetS2DE0hyUPg0ru${D zTF=+x<#zDGIzsUkJ6DYd5p8U86pV>xUW$D@NlfqmC9+f;vx3)Eanc~4V(C!Da&?(Y z*aYUU9iWN~Qi3I7S}U3(sIOAZXm+D(YJ>g>NC4PIRNab&LZihF_^y6Hik20Cel!cN zU8_Bfm!%gHf>W$+=V|g0KnVU~<#;g7D?EY)7-7stj~sD^7%0!VYh4D27z|f#U+|-o z37aGj!kIT@uW6|aOOw*^p4H%%KGGTJ4V3;cD)Qm3I;MD^WyoOhJ%YR5?sv(JqobIo z909aJQa9}G1e*d|8ivM`(f)Auc<>%UhxdHFLRI60S>JU)D*AtyR1Dut1ek;9gX5^m zH+WN~G>nPV2uL3rzM^awbqqhTq9S!PqNV>#@}l!xz)$=M^d1W%hELJPgo22H?J!${ zSt@vN13(>}&n^YnJri==Q)Sa19d}PGeQ!9v6v~Vj20U=uPJ5u1mfg9+?E--BLBr^; zYglVN7jECOqhf(t07tCr%i+hexW5bit^Tk)f-v~B@SJp9$Ps^Xxb@<7rPh0f+Q;_0 zZ&P*z{q%%GX>&s?me-^U%HVV}ltgl{4MO2xSq8LCOm^62ZRUnH1T589E|q?Ixp=1p zuytvC&gw8Ys&9Zt{G)BiSjvX*Lvp6P$N+qQB0-4TxCrO9`~E^aJZ~$J16AGxX=WU9 zlf#Mljm55-F1XIx3;^+Yq@B&Hic>B=SI{Ze8_#9-i}tw&2BtDxI5%yT^@zoEw>9HY za;_bzHwHzm1q`_I3%)7Rqftp{Mxm)gU68B*VI%7AM1tbhd@5wm%ImrG;$M{H=gNOQ zsHX+g@#wi&y8b%iD>dnX#3c<^k9O4;=d)&a&GsQqPY8{n>|TxoIs=8L*4b(B%!uTL zpU;L+v1Z8a3oonYAF@`e6oP_3#F*Ddwj@df54jr+jsus zGl45!P9(9IrIbS@Szl)~YE-~yX39+#B9LGhmuqwIt^Y34VILHz5zR|j%#U+EaiByn zVD%@bRudN*KAQnZWS@IfcW!F#Q`jZ=;0T#ofD11;{;frpRXU>$=+_$Pu@Rq)?Mtwu zW&b99?dz@pFeK7W;Hr`zR9vo!>1kSFZcJGWE2Hk=RmU@ z?!phrlBxC!w;}zORZS7#@rlE7X{o^FZ(Om_3&mb-~s>SOL z55qo{AonSFOc&Xq_`&fE0tIJg1hN>1y5g9u+#`#-+qVYbn z4>M0X3tt7Kj!If)gt678KH>M@iEC1~KVHh*mQN<`$~>q*iro zfFUgQribxq5rXN+jrKEJ%)Y#sz)La$tlxTa{qI#=t??VZr5PP$=b!?2s1+dPrz@)F z>`h#`ua~29!O9zzg`~Fs((_`^#Ng+gZ0Ai*MbN8P6bces{jDKbb=HaNS2)0}AJRASKiJajVjnh`ubS??jlKpPco3Q(e~R}^Z;*lS zEooL}6qC;*>23@0wz;a{=1V$A(D{2eH9aviiAXzfY#X3=UaKH~By3&GYkW8A^_ zzOz2|V^milwXTJ0ke%HdV{}`*@e)_2ccWp~Yy?O(=9rPX!KROk3h$PzX!l^8-QCl9WB_cEsX<`E18UDpC~njmgBhFF87kGyLb7+WDX- z(3T~JllN7Qv~&aC{mmbjSZ79SqZW~pb;OrMy@m4^EjiX5gAYxggtxu4zPt$4`5IGD z#K-}cSmgF81>`nv&WelcXW~dYv<^-I#JSS9`{@p`P2FLSvveg|Nn@0U(b$tPmcQE7NZz~9W}Y+)grQYd{Q znZSm2f{T8OX6ooS1-laqW2;?JNxJSy2=YkT_ijTu5I>iDY$|W`>!I`atpYW566HW@ zeA{6jPk2pj4$GzD$1c;=i>F)CWTEYd&f4@|_`L;oIY~MzWOodSFW=;^>9I}nX?Fw@&sT2( zaFT)EHK4G(xWzX|i9V`YWk@dU^P)l`VpAsI5#kh6KThh`ObWB}94p!8#B6N(w;$8QK=AUXHM=ZB_@TFrpHL|K6a>VdAX{@N zA5QH#MV5vJJk@lfr3x8LKC(U7K3^u6_>@IE@N8rIOw?}Zktwe+n&@&OR=F>9n#l}F z?ZH7>KEx4$HA!R0S&KoA{pR6o9F;U8 zMF4huMwLKOEs2=j+Q!3tl+L)pD&92FL3C?Lo#_1ckpJllY&lz~-slyGN!>rV}hwM0RRqiZgSnp+nVIYyxu4cHt;OV0M5T zqndOxn;5fMy9D9H4k&ihweQPM^%STY&9VLOwOHGp*vM z#8Ro=Hl>OEJ6na)f}LF-F}^4nnAqTQyGU`AXK!br6uNf4vxsweS~(Bf(9@Sc_Bll2 zH`Gp|aSc42jBjH0Pjx-ysYraHB4E^Y#3nJ-G-?l(HM8A3UsVA$^pbGYKePibWwX;o z4|)Y4&jE=yVx3%kv?nRDIy^wULDK*{=!6_zJ68$O1?4)~SKEHr;b?7sanB=hB=V<0OwAk8&G<3FxFvynb~UVZ=o@1S zY&?pYu4qZkt3;ZDc+XA(HXrXe(wAySfh;eZP21Zj&3d&gl?x+{NTT%}@DvKXp{;&Z zoS{x_!6atlv!j%4nd0N1Q*`^X6@6JgutlQ|0%Il-3J~y@XuN}Hc3&HBI`Me9Rf^0o z!R#^Px#l2(cR-vIa#H>?{hEvtwD}_wf@Fl-WO@XmjkeWoKo5(wp#`5tByl{}`vOHE zFd?na#Y9XuX2(Wn4L*%(l4&k7y!sAMt##i%BUdM}wVy4<aM|1yjf?1VWcE15yo#E)Os z(!e!%vuW|5Y(+0!BmlgP0!o{_*WUjK8-+=okd;@S*lIiojkaBMjWK|rn>=9aTw-%Z zj>f5NA-$S;jf=`ecv5l|0SnyfoeS~Ry%rU}dAvV5^6zAu)h2>m(?GI+Q#|VwG!)gX z0fbf3bi<}4RVoS^$vN$F%^|=a;Sv+=e@MgtX~BW+o5SZ;ojQ$kMl9tvYE5nvQKmH& zT8%(!mC2pxAsm~Wq`HVbInGY^zoELcUF)v5>SR@pGQEXq?>QJJp?76HkDbUd!j#p|_CH}^n#9jqW1Ub>U(0KeGt`#e z<|>a}mh4Lb$jis9DuCF?JfNR@&pl!{XCOY3601*9Fv<=qQZP(Dl?5ybtbg&uAZmBR z5$g@7l_-;sN6FTdPFdNhm>cpzsL0sIwsie=gEc0AngY7NEg#RMn8~;7{xX_ewil=W zU=qwh&IyK-r0~uvVbXt8exLo}fGj!y{i>gsG+H>>ie#6q7L^bZ%M5(i=V6P36C}uC zGJ8nIpDzCHeGg&cK;iBc|9WqHE9Js+uzy~MsE&%HJqKvaPJp*0d*vYA+t zjMh)gp8KPHzP&+Dlbn3sblmkTDS3K42_iWc$CTL)4GQ=OCZ8?X*!3pi3NN^j|78hx&cm%#p`5``_T*oE@bbD4Z5XYYeB?M8WHhc0>fcLg`U> zNVh_u1)dob$`*;VDNXas^+>}t5cEg%U-zJjmGj9NZL~`$9}caqfnhjjvSZ4aa2K|w zHULKQ^ad-wlL{`VY%36tD#oLXuEoxJb%tEuJ)G@x(Th7NF3hfdbZLjxmU;VWSf7Gv zmM>T68esf?OWxcUntu2VxTXd0?iMF7lR;%I_h~zk4D3tKG~3D>>R@KEguzViD`Buh ziZBdSj-A^?U5!9>d=5$P8-*D^cYWA30YC6VEqISPl97HLxArI9K$VDixda1DW?{CR z*0zF(scf84djUx%)#DY!H8cCAkXWzZ-rni;&h{Qxe8^iXVZ7VArAULJH;SjE^--qo z`p$y`ocK(SI!GIT_@#B!P)I$~#=uAw?rcLZwki6^Oz1Pj*gat+nnFm46EM9vc!fyzczJ3`IWCI?Jz6j-MYDg2CDVpf`x ztt_}=3LL>`^NtlkjB_Fy@Jc_XJ{$V!mwhz{_KO-z&q{-Wm@*g__+o}dCRtMPGQ$bQ zRn*_GvCtm!0YDYxWI6+~i4>Lsk3f+K?5lz5T3{#Ohf&fML$S9sT%y#j{=dES*Lu}{ z5^4%gw5|#4BCJu3LXcbM!P~q8{d8Nk)%ke9;|N z5$8AoUg$}Y2k2D(0A3{G4M6UKWjX%ITeHIs+p?fJmQ2+Av0jy(8%gLANcwZ9Mg%TB zeVnmsX#i=*Cg!K|UEx-&30RWjtJzpDmk%$iVs>g3Oo5)n=6* z$GxRhfGQVnX!OaC+LgY?3PqIf?CgEl^RTkzvn^LjCF!;n`A*=b+4ray;s0#_jQJm( z^Z>{4pGp~Hnd{CYL2MFv#)IvYm^l#?qw}p(R+qI-oO}w*w4ofzOf%6kShD76@$IK*d{CaSK=_i z6p=RnTe!CXc)uB|fc72kVkSK_cqi_kt9mYy+;E_nP@EA?c@m5exR3XI3KV9&tOXeX zqe7w7oRfGF3r5cyWhZjnYxuz%rTF;SS_iBBH$+Eg0=%K~;w4{I9Bdm96IA&maL^)J z%=TuCHV3IsR?e=!R}ZiRcPsCgsF&k!!PO^T z2?~iF+~X&yII-8Hpw0bx$jWS4_n}RwD4`##Y@(E~)y%vH<6mmbFT{>e;S`w^vUOf| z#lU1{^YbxUJ0$hK1uVCQ-)6n-)M+TOyYFQ+k}b*9*qXB>@4N3(>tfkn_DCblcECd# zGX9uNmEp3F30-zP!)r!*eRhKT#9Xw+A5-N^zlDUxh!_l+pvRX=!et=YW@D9IU(n7+ zew^c5?2;Y?Uoi|5WKaOh$?LHyGzkpj5cE+yIUku_qDUm2TsHVD8KeU!^QOISbJ@SA z&fF_`@;1M|t1Ag#nc9=e>y36JWO<;1iRs50Caq1Rup8yO0dl9aabXq~Z)#KV4UHDnQ(*AG-&YZiEFq;Z9 zS7^iIAk?OnpjIV~NJ)r$A!>g$HKwQpkLxSBJJ3k`^?g^f(QEy{O@%UFH(!bI{&%7= zzCj7y8p>oBG_J!p0EM0L{i~q1(c;`)Vqh^hUuYN7FOtv;MV&fRt&Dh9Yxr6Pg!L;w z6NY7B$#bWm4Xrz4E2H!hHEvX8yMZ1IU}vAyV5L%dIRrjHI$d5%mW{EJ)&=N$TZ zLLNyEH3vJ@x-u#~>s?>uOaZ74g!zPxvDd1#a^@qNjNh4_5wTh2Dn=~}G^xm!AwYx& zHcHs}XUNVSLm>s#L6GJ}TN&>OI5muc_qUF4#Wj@|-c5G(*i}G{K9Fz-%|+bkOl(H^ zS@V!joA^h#!_Amolr35KZ4?g^EeyAw$&yINHj+BHhSi6NZeB51%Q=9)jFjqSYJh9b=2jkV+StY z{Zwg!6bEgeDs+-LFX#GlD@u@{`@d*CDd6=b3vO^r$7acJ6hoKFkg@rZkFIluv(6Cc z-Krj?Ls~ZhC)jYog62r0o+w1?DWb(_XnPojGdT#Fj|jBXLhD;J#(c5GmdkS!6Iiw5 zd;%3NboyUYTx_9|4wd(+_)-x^Yq5CE=eVB$J|yB?H{Qy^yQP{{w+#mN6jmcq!J%>W zEs+JrE*lvU^VxVyL|B&cJ_Th~?w%wL-as;?V%V#wW*-X(O(bh>gKTe&Jve8>yY;C; zn|2b0`_by+nr?35&Ho2+>;l}63<1{uoVFiCe=R2jD0jELtHe$kuGw?rRyMg+t|LaP zS-nKk_zRzb%!b=tU|tlkxhVVeWNa99O58%uzeo2U86kMyM_ez`NPlS)O+H1*ZP5l7 zx&o%CUyH+laDadZ?qRBdr*E)_Q-e)7(xbMEimsPP-}%2-mSr5yO%R5eNG*2m8zfbbITPhQ3TkKsQf4eFWjmq2aJf!F*Ohs-7h=LR*)|B+UK><|4>eWv zJwh%|xIrGm-w{F+(^wnY)rfa1Wp@(SZD1}MCsqWYdI*Jn;GkXhSZV!|@FY14)CCw5 zq6x-=e505d0wd_Oy^Vwg-a?{o|4@+;u>)Bv-wRykiZsoqfDLJaAL=>Q{)}kNr6?!v z|E;Xbdb<$~@}a9zZfmAOk!~uKivll+3PMAf zwVYEV(=3`;6k#8`)IFupXJdTSay@Z%g56@9T$?xhqjdVINXKC$V`CZKXHYiF$!jNT zQ)iABS<92}PRBc^6JFAcX`L$QzvPfJNJ)=7V|R1^q_!h-*Y@UBIP@jOVF~Lak}H28 z-I@wbDKUU&zRPNM&w=N8R(HAS>$z`i)J46u!kO6_l+X}-QH4RwZ*J}?1K2vKe9Gu> zP;%C}B4X$gt|6Xcc`(#RQ*B)v2~l;kJv*7DTr%OVn5~-s24G(RGd&jlRg{8KlH2I* z$TLq_;_e}r9~4)GZ`bMfg9AeiVlIfHXrZHK^O7F0Qf+>CMGPp<3B|(O1fTgXmqxhG zp}n_S9!efduAmOI63Wtr`l}mv+zmyxe<_UH8ciPDj|I?ybXXQ$&+y5gyeo1afs}Ip z&R0WjF$jljQhmFIz^2%2Ylxx!-MN5w^;37g11Oqq&bgA4}gxeFw zq846re6>^`iI@^6vP-8hyzMe`K}5rZ#pZ3`g$z{zc>no#KH{5q=kQA`v=ou9b()Ov z?as<2e3h~|&^yy|Nd>^*jYZKXwd}H<`{*$s5L>#9a70TE00QmKPuOzK^rzOvu$$s8 zlJC9=W2y(*XM4Oy>V>WW=Yzwc=NcBCtAkeHglem|u!>!Ca52oW-1T;H`5}32bmg8oP@(5+-%d9@9w>s`BiLTmtcQ1<3 z#XC9LwHgRG6Qp#~dYGF*3^q13UkKGy#7}Ry!809*{vul>+=F)q^j3o$%w;J0Ek-Lo z$c@bh`EN>ewWe~n|-Bso`o!-E3{owURSvQKd`2?X5cg;Cf!ULH$HwN zhbI!s(F~b>OFc#JvKk)mw9gMM!cU5F)8_w#@-j-taEcwGHjsSH1BNtpr&Kjmtk0qn ziXLj0$U;<;U$Ft}pJnIn()ugNTGe$Ie!K?rAGWq>*m9GTWO{N&8_W zl(q}=1qb|NS+U;KrB)d>CfR>{4BQ`{weia-M#UM7=@E52Wl=!(LP3$TNSv+fc< zgadjGbaaPu{RJ9LOw5Q9Im0bkl(%p->V-}-4p-x)GXf#gS?=_4 zz-`~0v&8N4As7eiY##1cVR3%V06)>|#PHlMNR;xHVV6GV?8q^d_yQ`6+R6L1<#B+V z@@Q`+9n6i>WBknI4n5+LExaIb`v?BDJ4^Kgc56t5BM37>(~j%Wzz#;O?Lxr+H5DBg z6?(*~N%lBOTEMNYYKccklVV1ILp^l{Xul3xhj9m_R2I6Nrd*{g)Vi;PZRQ=Ubv6NA z+Tj!eJK_bvZY$^yQh;hCX8Gep7f^_Tc$X;^I#HL(ON=V6MY=xS6gv)OM+lJAhFcH{ zGVKn#G!tf2_q+S|^nSp(hkN8wDpMUt9X@}eco#$^c@N94}p z8n0rYvB|#fRSfJxQF((D0FZgihFNY8w3>=oX5-@vzhLXI0IO=vHoB{@^vv$S*m_-E zkb4Rt^O;Lw)!rj}kRb#j{68O66FcU_n?D;puD+P6TNKhSP~VVZ62?wX^T|0YH4Gf* zuUbHHu`xB(6RAO(sDwXgzkmGmI!e91R1sJ17ynuB+(!7l;5f)Gx2r6p82yK+YwlS~ zD2-+x;wP+uyW4vLl}DLpvIKJoT82|QC(z4#tG4@^OoRebK@HUx=zh11Rh(y*SyEUr z^`KfK8!Z>O)RgHjbjbL!%6Yopw&0WTbNl!5hkskU$8TZUV0oxZgIUPZrP4oS-dFRL zzgvws7ss=8Mw5hqmLa&#!@VBltdfSlCh|pha{wBvk{y|L!ri{nSekp`{9b7RYXzOV z1$Bz)x>ey1IEyquUS1A_37ikr*y<<|bGg)#Q1#FN2#PvWy99R`bL~8VYz`=bZ);DHZ2h;m=Qx?fOBt zFUWFixkIHNRveLzA&EMusV@>-dchjLA(>jkJ0x(nYofuypvymJZ-YhwU5}Je-t~!; znCJHRQu1exlhse{U4~1r&G@h;EvPNKUa2J-fG&hM<6y+`Ct6ESn~?Ed(X1;MVLRkg zOzzI8?o%pRXHWK^i+_u=?3F8(-fo;)V;!_N7w*+j5dUL`%GL*A66f<2CWiTq2X=ms z?PZorY!~&4#aGXY8vQe!q@%2zrv`d)K>iz#}ow$%-1{$+qs?*YG2oCK_q zE`UohxRmH$wVKjJZGq6z z`v$g2wJ`x+Qp%6ovJY$R7g(_{Q(9TE-j?Ey1}Y08o?#kCRYj`~9anozQ!_Pmmeg08 zSUs60c)buOM~ZA;uHt6FodJ(lGSsU{)(0`DEH>K}Qq)(bBcF+zQg5M#!Xg-@H`^4juXX~)rrY{Jt^ab>SBJtEIfNx0wlPjNK1#;)**732gV9H5| zHHz!xkH8beqU~vD&=_Ws?McjmlfF%M4FppUs7X(s7oEHs)g0`qj|tL+kQ7kd{R_{* zYG-m<{w4W z>K=+ME*eCVvBZayxYeZn)RiX z(1>J)+9Gga8FpV;AZB&Hz6H^nCAr83MuXEM{>KRed>$hJ5R8|)`+v;cou(If0&fwg zjo75-KbBftim?>jjC!s4!a8?+ojNXUyHsD(I=0k654OJQom0lAa( zlpo4vq8v%Cbw>INcG|S~aWw+f2tDIM?M#OdP9&hV0(uM(qLwNJG%(6dHw8?~Ng*fj z#Iyc`crC*DzF6kzcwq=`V_b=}fq)Jaya3Tp;!lxbrp{&4p?RP-fl!6@eaG^9*WPM0 za-*p%C5_4Zx&Q7V8G_#`empK3n}GakD*VMQAl*~1eqs{r^JG8j|Dw{!Bt~&j%|WST zR`1@<-(jDohzk1bzm!b67TVNZC?YIb%kR5Mcl=Q>j9qOL3ui7t$Q$jAWtFkfbZFYPd8AD&gV>LKrHWEKm zneKCmynFp~sW03Khf<9)7N+cPz;ap0*;on*N>+7`GPTJS&s{8pyMV+b)K7d{w4K=4 zYzGFnVXLwNXvyCAnP|joG2)-fNps79HXiZifeLQ!2lQj%;6E+8c>;sy)YXt$kzCry zH6P&;?T$h76YPa`OSn~{?&{{Gg{{(N!c@8)RzGKJhi|45oh4+C6|T7ivZDjK?5+z> zbhzf8T#l6O02Kllnw;jE*ZAP2ihOY$Q!E9X#IlTK7vbC3m`Zz-B9TiSU=6;U=BrUd z#>B?T1pf$~u?adFHCm?!Cf3NQ7ZDM6WbX7GzCPSiC7p&XvS0N{q_JmINfbbzuZ` zS&2Q7(pVPM3VKwoC6cO?^Sm?CmiwJwK9Xro|Eo#*JF{k!7Pu#`srdx>X=BA}{n73s zv3PTklr(nD-h2$>FUju$)wb&YW0a$8^Gz1o#BC20fQKw@=ra9}%YWeDZ8a`Cvj$52 z|M|g`&P=#I+6g^T3=Q_|TRKJmDf zt<@3BesV1Dawjw3Af>qkU7W%b2r=pXqphzI(WBF9{9Mo%OApBC=|_LCnIT{L=gq@M zw#8mexaNm!9TsER^!8?kWrp6s~e zK?#4C(E!{z3742s?)K*dhn4P4nbdd~gK1+j({GFB0sB@@m;20&%cpq{`0ni9oAT;X z=>V;m7(0{vFfCaL#6MkQp~*?u^2d16FJUe-lbwJHQ0n~QfT6*=lQDjz%jtO=(27&E z(@cw%m)3MFkhoa=^l<%z2pexolQ+X|ZCkHc#Suke0Y{k zz`p=KX;}ZHouilRT-)1qmpEpA^)n8Dgi|*)pOdh(ns~A17|5$n`bTKB5GR+J`F4l# z+WvQzoMQ`l9JgjC=`bMZg0%m!ELTU-7BmAUQNpmrzhGz(%6ze%5|Z7NZJ3!6_35Yi zS?tw{59~M$kuZeFex~A)-)fU829m}3T<&xqXnncg%{93Esn2RyugnHPq7x}Wr;It* z4tM^wu#=v2BkY`<=8GZ7yHyoz3_P##G@@JHJ6**g-_P?3x6m&JFN_6HBPxO~P8LzY z#@;~A+i38??n0BuZ$S}d4)#$kuR7nEXFr?fjf?!QN|>*TH|SyLbRq|E*aUH_I{>m z*K)Rm;6iR8ht1s}cd_fa(?!Vz(y{A0FYly+*ALj>($I2xb*vqB6+;VeR!VHgd<6G` zd2tGUDXg@Nt068cAaj9my-7IOy^TQSTy7xX$SR474f|ij3)KiB;8oa zi*6(#02{tBZgj}VmSMe-E6cZ@7Yh@Cq0BmjL5;8OsyFJMFGS!htA%Gw5wnCu4EbKz zDqaC`hBLsZZi|>^P-ZnuQ07qzle4zp#_bll7q8C03+64IY;O zST<}ZfU_o@&r22LI-<$yXAGR5wkboeeOHFZ=T;WtMw5*xb5Z7U$-jXUoB-41ARe_w z1c8ioZDZ3hHO)pzsKfHa1n>S+_S2f*(_fo&k8%opn$<|Q#CH_diG32!u~6C_FRLqDeOXju;&O*_BJQ&wLUyw&D>|7 ziJ$mK<#wH`EH3Nd!q4RMt3>>(tWf8u)kNXN`xm=pxH6%gzQbnKU@TbLGLg|8kcwmc zAIcp0NJuSxP+A{Ha&(8YF_$q#zp7>|OTd1zGKh_-=%Mjo{-91*PP?jwY_;5YKdn#D z?W8};;0q6Pd_T}NLhS7C(;c_+m+C|mzWAXBnm$)ej#s#+^m6b{QACdFESXxmkABdc zm(Ijm6Yq|sg+ac;!to(qLcQhUtIGMBDyDLfq+LrWCy+$^|AU&06HdOz^cbsB^Kas2 z)AJXu6WC`TX;-rVH4#}|$g7FK%uZ1=VGZqzzQU@8f7h3Im5X63PCRGz-{$MiV(W^| zuH@t<$TvIA=<+RhS;1D8J=m#eX?AZmi(u5CNCn`?(1x@{F`>Mnki$3M-$XVoUp1Yu zvv*MG7qI;rWrF5KE9%ZeRxw7>%1pKhov|cxhR-J*jbb8N`B>wG9`0)~V(?+)X!*Q| z_Yr(%1yK>9#E~p`#xn>D_m#;$K^BqP{{rGRytkUE^J z>;=}tKsdcx@cV?`AW5eRo1op zSVLm8CcLEp&|hc-Hx8E8V)*_-_22HZfIWK0tQ5PGwg89FFfuGP74cJr-9-d~0Uxt* zz8Gz#c8+(nO_~sx^}q0%NJ;|(BSIS`hp#xjv^CkOB`OZ7vifc&;~@|#zuk$VN7T5T zmrvo=xwGe#-uZzy7FqcZ#5^@b0NxJ)gSq>&hq(28TgO`P9eq4E?Z5d5{z94mn8@(H z&30rDt~u(7+Uy_pZ_jU@>P-GHG`K5q5@O9ow*~}^Vdcb4YlmliXl0(RIw~?PdBj6w zosQ4Y3^31sE~IEHlllBh&+dzy&cLRPtNcacoO9kmt<%!WB-B(1#!8ZDB-tq(sYA;6 zow@(Xk`Z5d@tIG)J1Lzkxn*+6sE$I zV)sjQ*(f6!z(YR_Uqd$3cMnbs5_v8;uH{HORMp9%%o&ssIQnKo(}YUo2cl$EbM&4C zz5iok>9$oKs)@GNn$?A42kI|Zd-6DRSPe#DR}B&`H)8#6oeY!_e6jRoHe9&Z{}sTUtQ|5_k~ASG7|Lxo8u1r;aFw6E8 z!_+r1=Z<{$KeKuGv7QkG^r!%tSExyu^X}n?FHDCDl=(RJhFwvp5=#;=EA0MBi0f`+ zMH!?kk%b3Sdwnw{AHcv&+)khr6k%Y;S#^W;y7P7y+&9t3%W1eY5VXH1>N@fWktO|S zv7-aLbp7rgot&{-1VU@Q2L4t6yJ_glWOB;cgqoWtd%VLFx)bTR*mhPak8NN5$Sg&k z%Ed$X+Xo%2kC$Dj_z;n6pTy9RX6){1p&Yr!Seer^TN#8}P#9bm;MTNeN!vMi3{L0? zYLcG4(O#RCru41bI4gHAbo(;Afj(xGAv8;7-pd|+171PxwOXiE0Y`3xDF+A zTn$r1>Fx0}^QEE798ke&ESGLBm2`fa%E#V%?^8kqA7DlSJCw07WF9kngM#{nWsB|g zi5nq&(EWQS2hp4=ovhZKy);L!7lTq4FS1o)7RjY`)Vr6z`L z?%Jc*5#OlpEkX@>Ih>YGv_VK(?op@1&77GgJD`IdAitx?VAu=m$d<^Ia5->daMv+KrdmOzDHwaq?0amJ)Oweoh#jbh)@$2Qsd@xYC>+d)d>(4AxKWfAiha93IZ z-Es~aZCco}5pKL}A`Wr0nRJ>tqR=4dShN7TN7I2KyWQ|+iC4vPMbV@sPWT-xzAWM7|{k4 zy_cs?`A%X@(U-{eP~PF2IX>l$N|xI6@x&B|Sw6FL~5y0L_a*`h^;8q)tf5SxP~|4qv0>8q?l}b{;3AX^4`{va=I}_e-*~9WZU% zz7rymPz6C^1tXO=?NxchP#{~nQxvobGGJNtmeMyRVQzgBp047=Km}N57R87kSFh43 zL{R7HjjhDGEMguTk}qBbZytQU@xFw(FFulBoEj@We$Nq`F(H@i=z{z^(DPBgOq^s6 z%Fh}IpnxLnj;oE^#iV7tlc*?n48$FYl6diQW3{ovBx-g+EQ~9{*B7gs8Ho7>H5Nw7 zR_9(xp;+-MG%#B2Te+S>N|7>pmKx2B+G9l=yKz8wy%9iX15-% zG+RZy+CADzG^>P@TL7?CLwX6pBZ~=)Ii}TnrQ2nfLKV@9gLs6L8QlH<%U?lJ0meYr zP>X#3Ek>#}1=Tg_iHs zWOk7fQi?9f<5odO)o9k&pDsij}ktTVsA6B+T!QQViwUSE8=YZv-! zbAC;t)_z(Gj>xW`$Mzqt6Rn~r0=hMHWh<4CW3d;2poEQr>{ez5RuLH(ptVGhvgvK_ zw5wQMbk{{Pt4ytVSXO$(bLq`nji)UWTs$tHX@8;S z&H^%fc?ln=wp!RJ0*NWaKA<*oXDG`1#QZn`%0aeik`YxD&IBcd9}MAtM=1*~arD-0 z$VaE5e(ufG64e!>W;*VSpChk1~RJhQQ*W-FWE&V&Lly3Wo4u2gz`yvtawo#yzci%&e&oSd63f1*iOt;c+? zJk2&f3Y@~l{FYx%6J>ckNXv5|r^NH3zj^fPMU)^N(q((+8?p4tkE+?A?Ipf~)*S?M z_K{b-YPKJhgT62P$ldE%XWd1GmA+_Ta-*#GcXn+p<&vB`Y2?3So^vQnUd^@FNdenj z-*h23^&;CTOK}03nY^RJlUT*}IMN|KYzfWhbL37sE`Vq)GKquHTjJvLy14a#*fA(o zoV~_=ba#7N?DIz~L^WQzs)B)o-Hhvb_lSqUE0Ge?saQGOv24ZLhqiJ?( zyV7JGjaJr^{6qIRj+0#$DTGIBqo!(k z$ga-qdyP`A4rt6e5AH?Oer-Aop0aATk5(xxeL4$sI{jV)R`5soN5UF-|MX$a2ipqY zCfbKAy+ns>lsN_ut%DnJw~x?N3@FA5Z&Lvb#sYS!Lnc4xqa7U(3x}NaIJTEZ{(g44=%ECuUqrJ9kcm^@t%p%;-_`Z{mr`aH+l843HDO>NWK6-Ypgdb?lLrGS8 z?W3h@m#{@W58_tr1V%=wQLNwVwj=CO%8s?E`${&~_tI^LO2jPlEP}}vfv;)qw!Bs4 z7AKi41(=niJzvbqkRheKBkhef)-c(6d2EeM6*)(AGy+X&^9N=GINa{!?Ayeez(=sf6>T0R<7AZa8dqhf^GQL}T?KF{ik7fT?P(|$r6M_@@k;9bR@^#w9viDsz<&$UT(yd+b z-AdTXJau{;m4TwIXoTx)l{K46g}z4F`_n zBz>oq~P$ ziLv7Oci`;E>=)W1S1_v=WhN4ffFw-Df^aR7Wx>T_uk>g`Z3&NgghDbPT-R}lgxis` zmRObs5lQPC7kiMnf?m((k{~?U%t$3|A7l(MNYNWi;%3vP0FJPx#&JP!Gd!tewgjE9dH+1DroUo)=Qv! z$HyBx)h64iNn{fYzhT%Wo9uSC_v@y` z{$YD`a@D_sSGbRaC%nvN{r>V;;2WO-DY|qu!fw$srIzn}{v~{ekhU$^fqJuK=nz)C zC-EIZOcHpwR&Id!WY2D()T+7kAA`NyUK_CFl!#_qoP%>fO9tS5o^FX;=sYJsAH*z~ z$Py`rU^gIC^)tV;`tw&J#(Xm*maSDTKudDxsSD80{Pri2j(Tx=q78*&;D#_Es~2}_ zjOlBWIGCf{IMM4dCogZsk^f%*zU`+4-&PZ4>x{1t&*!P83b^oGCytC1&YpB9pr@=M zQ(IJ^DOw}|tkn!HpK>*#buOIrMC*Wl@75t3mKX$?-gSKN4l)d%t|$aLsu$vN+9ig5 z^~(6Fhn5aVQ3j&gR(xzN4Ukw-iIB(JFskO-rX>o8%E$~iO`JwA(~UE4lf6Va?B*{T z0|=0OjlRStuk1JyJ{_OnJ0x+7X#560A%jsvAq{FwQ*w!&0cA4w9VB|zrb**rH<|85 zswGiJNtThLF)&HHE7`HoXvA)744W=3>qA7z1GP6@oQ#X{dco(Lw`^=27$i9uo@cq8+UAub@6&RIR zGZImJ7iju~-qoOZqY1C)yG8n?K4j;BQu%jNL^g#GU$OSO3F9ZMRJLjt2`zK- z55Lz^SGD?%muc?E=*{3=>}CHg4QES&1OC9xAnJeTan*`g#5RNi=M3iiojj@3$L|$J za}JvAo>bB!OPLz8yD?y3JvAl+%T- zJRyZ{PgIQXO&dUCkGBz2qRx?nd8g0Pyeksf9AQkkB0;F0j8)8AoxlfHZw=ro?fk=N zo>L8T2qDN=@t|g-TWTO1i-$HIbMLU9`b(%Bf6^kXN)HayARa=RLs@i9mhGfV%4)ic zLANdq>v{5OWa+BuLlKM=&<PqDAX5J@wy zb0M^mspND^9^V6sZ-@)P@S_w`Z-a(gfLyxtL3NIDD7Hrhf-KGgzFs0fk0fWk&vLK1 zlXw_eeCx7F;>|l7gIS_IK3^MeuF9(bsEvjm-d~*2Ot3*sdO#(x2UP#1K=QA|o&N9o z1Yl`h9A_{cTAD@W+}Pb!d5>eDVyp-vF5dd|infB2C=umDg~|A6f!-XwX-xXP#0=h&U{@8wl27R)g)!!XFT8B1tn0JeA-L z0&;*KR^hOtMyD9`1_U2Om@2Z`4C-lW&ijPG<(24&$MPofUpp#2$iGtImP!s#Pbc>X z%)vw5|N4Gr-g47V450fiYL`VV!c<|Ftq%rZRrm>T!8_FjLy;3p@tZVJ#LJP9^?8Ma z2X_>U*1-uzxP7%h2jqI?xV1i7i7T?4QtE^e9>W1<^(t?s2I5jr}n9VEuZ=Sf+ZY#q1~JfFzlRiUJcblHiCL=kh0c>&{p z1i_J;|8>{`2Q*H`$+d-HNk;rB;ch*%W16_PiMRH^6z85W5y6rQ2m(|YU)WVmy zzMr(l$uk*Z`Il5jb?TGAsDdMu!MIjgDG*#$zvw3JJ5dCI<*SG$(V~omOrF+iB|8CT#4irfa%rKm=qx&A-FZ`O80(G6+OY^a{a3w53+k@0j)fE*YlzGqsSp4IE4kh-z~- ze`(7bnrSKucrJOhYtJ4Jke1`J6g%z;ZLhJN_4yuv$(X$txqJhr z!%}YOEhTSYJomFUm@0}C7_!o+$r_Ap*~I5u)O>p&io~!Tbn-qSRaJ3~?9TH ze(Tr_FYo&O_7vS8=+_*noZ=_Ko2y`xtVj3)MJaK&^hk0{p1j`N zCYydfI2-&Q??p>KixJfn6C$@7Flm>Uk2Xx|bSrRs**jAqT}^9WTVK9qb605lt)m`o z!4?zqF^$$sG@6p&?gSTUHpPxRSz z;@qxuE9{3K^WlLg0iIpm@FXvFjN}OQ<@dZe7R81;LKEFpIwpSX4kxoGW?mYi-uPpZh`FTEW7o?T=87mHV|O#g=>&fEr0KQgGuN{ROb+~3U7 z{n~7L?57$and498_5%6QL6IZq)8=eNLX1D#v}bwBaz)azxa+hazIv3L z0*voW4ywxW0_{5q*b5r^AY9Q@Zqoh)<-qu{DPi4ri-SUc@C}r&uQV}AJ^=hQ5{5&- zNw3K}uPOiWgsVdMAZk6lX@aV~D@ZzP2ETAT^?Fx}>Yu4ZzGhd$1mhA5Hsf5-%2TPg z-1ty0Kdq)MATuQvt54O29>)W(IgMSVaB2C$ov5TW(JKbCk|C>fJ|qrh+tVmS2E4LYBR_-qelCkfxARztj%1qPL9T=bp>Ho%af)n@dT*m8$^Vw#&7q0 z2~6SeaYuHEXhdziR?ypru=qlAV@J#CIK2ihK?8UDK>1&%0D!X?;|3~*9H6@w+zWgG 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=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" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512052001-Diff-Config.rsc b/MikroMaster/history/20260512/20260512052001-Diff-Config.rsc new file mode 100644 index 0000000..f36678f --- /dev/null +++ b/MikroMaster/history/20260512/20260512052001-Diff-Config.rsc @@ -0,0 +1,24 @@ +4297d4296 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4299c4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4303c4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0