From 280be2c1f03ff28fbce77fb032686d8879892b98 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 22:00:48 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 22:00:48. --- .../20260508/20260508220002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508220002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508220002-Diff-Config.rsc | 14 + 3 files changed, 4654 insertions(+) create mode 100644 MikroMaster/20260508/20260508220002-Binary.backup create mode 100644 MikroMaster/20260508/20260508220002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508220002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508220002-Binary.backup b/MikroMaster/20260508/20260508220002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d64c4ad21b083a71bd04138adf9de62b3c1f6ea0 GIT binary patch literal 298264 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

4hFDgvOR$+DbYY>G4_r3S`;Z z6t^N-jBJk4iWtf$-OE3Q4+ zX4N$qWu`o`^B24jyPu}sC%1IbAsMA=4jxgErckTu4hY#N%B)*WtAOW1KT_a99 z(&=SX;A;`lNp81m_|B)rZ&o7qXc#9i9*oa?>YldIHZ3~CrjLDRsmbfygk#j+b~0>> zR0WiGlK{a`Pkpnn9cTKzLYu{X^HMZyb2jPTZ7RIwQSa58Vs7W;;CFT+X&1h-ohY%s z#q1ic6{^NycNKrDahzs*>(9=6+y`L%VZjrTY2?Nj zkFTs|=&DVviPm%&Aot4OEQH+fCAO~X1YNzBj~xDJ2KHxN`@nNPGTQh`%s+_@(RFoF zZJEY~|0!`Wu5+xjpSwDh_0(5Sm)uH<5EB&`0HWjEbD zF~P0obqqBLTu+}Y`V6OOK^6@u`GmsE#SW`E`MwW{PW`o_!F=daI; z3t~oP@7I6AhfoW3NjrZ$WMlrBgr&*D{iU=q6;ENC5iQ?KqgqebMP1L>(J5M$!6@K5F+$2E(gdrKTyI$%Jkc#b1qQPu;!vefT&Y&iqdN`Q|9e6c}LX* z+J<+@kat>AxhKlxEC_Z-hTAC0~b|P zIncxh_Ly6pp0hwcl_`Gt#$L}=op(RtV=@`5)_F2{SXP0qQ~?2S+}kF=_=TkEL?DUH zf@pj2oUR{zy~IOpR;(Dc(}10K^ScQHa}mektqXc(=G6fdF;$jJ{Xvcb^2$SA{hL1z zV_6A;6~rUdMNR#JEy@m}JG#ez>||8Z>>jl}aB$W&sKZXIs>KU;q#_5=v!}c!(AcuO z0E244!wOcF;*LmF5M23f&fLyb71*`46gTH-$4*jcdMR|VZ`yMgNYf<|)*%o{O~4&3 z<}7naLNO8f_V>I!A@&n^CqfHKAk>h{G=q2D;Qt-vSs*W5vss=0WMa1>i?hF} z-vQw&j7#6z9OZJF@@rB6dG*n6j(E?_`$NMseld`Qz)~d;aM$8nYspR72N8{i&NVz_ z3l7cC6~0uCG<;VtX%*CyURm`qCl-1Dm$Pt)l3(OfT2>nSFL~2L%%I9I5jDkyD;7pR zdN~P2^LqF3OCsoY+GM%FDE_UAbPGi-H<#0{n~QGRBWtqbk`|!6VlX-7@7Viq3Z5f}0PK*<55>KBluQ>4gi zYVi~TKN1!hjfR0VPUVy+m!DjQMva=PZ$h3v5!4P1Q-3M)y}w05G^i0Pjb4HWZ(hXE z=?si-qvlVu6Dt(TLY~;f*aO}r8WlED-On0?4Dq?t%1&;J11y?TeVPLUQSAOiHCJ)N zq~%+_0jxE%eFvcBJJ#48||7V$=SLknMHbrpi|d~>IzKyA~I00Zk) z?@)gpB+>W}WoQz;E&AH^JD#x`kdW2g&sRd$MMw%;fX%Hw8$f}OA%r<7g9<J~aNwgNB>0V8_m)qkWk9#rz%XqramO)EOO($mNX_QL>Stkp)6)7OC z_EY)4%LEdR7(3N*er`Y3Q+||sRy`& zFbg!aKrTNtgeVLajd6p=j7fp$P#o{Wi}RxUmbQSDN$P~vt6C>M7{`zF7_$vFffT$A z%-__MzW0&@ddMoGE|?Z4WRgO7W33 zXv_w;ss$ zId#vM^Htig&PokYpm`Gm0)s!gzpxX!f8k^O25A^?2?&u?d;+sdZpFLe?+tA(jAfF4 zaVjjwS&*wk&{xwGoyx!tob=ay?#qAG$oDC08Ld@H_Nu1dLuC4yz;NNB(4e_Ck|>B= zR8hzbhoGdnd70SJ7!H-OpU}blf*q$NacE;TCy~#R zj^^-uvmPc`Mb^4Bo;NaKVHa7H zb3d+`^If&OSHD!WC4tdvZZjrNzB4+ZfpGmnpMDG{L&z8Y3%Ba%D3sng?pUM*>Q40d zGuNu>jcE|>PpFa*ROEW6ow(plqBly86)@1pi?^fCGNJpd+IW3`iNe-Fu5||0 z=Rg3??_R&mFgY|BeY6=zQ@OC>K>s<|l?*T^S;65c1fS7ze3?9FKv%7N~{mZ;z7r zb!g8B6`?dPRa#r+y~-8k0u@qm`z`y-&7?^u$B;h}<=0^);-{QxLw{}lM~*i}uXdYq zI*E`Zmwp!BjOya5%FprGa&Jn%Z*o;PETBTbbg|dAXx`7jRVa?k$6Y+ckJ+&S+AT0Wl1AiWx z)3Fz%;AV|0Z}z8J5Z~=FGlvp&FnO+vfRk!28huWj5?rc953ZWP&C_d=vA) zz=wS{Gl7Jjp)Ca_3{--k%z`25OgsBzksVlU8M$ldiJqmVi68s;6(X_OJNbS-1Wc;W zDeygp?<7!Fb9Lj5)Zak_>v>`+yJ?laujSOW&j!)(patZrrGJj}ZBgJ(=pu&@+70pj zEA9@lVQd+d=US@OWWrOlKe~FY*Ymz7?y4OtMehu%yRDr4mlF2r68T?5cKd-$CP4g7 zH$iKff+DYO>1-6Io8@aCA>BH5bvg$t0yH@Neh1a$t_v>2#+%w zeM$?D$)T$8acaV6s#}zwp(aNiY3xjq;vqW^1E=2W5?wll{lP{VGv6wDhuc<+-MP)O zcEzD^xJb~Z8E+&I2wz;#nGFdGWc^Er>7Ya?O??!@v|jF_2<%ICX~o+VI&+5OB;8ll z+k7`@KvejEyTx@3)?nEoUVol71x{vSpoP4LG56ny z<-9x&GbHiW>J~$+<}(^^*QbCWmw-12J}jzQpQ@Z(gtQ^aNg1#b`d`O2>DbyVsY!(` zI0u{Q15F%TwT6cCpPVA4Do9XJ2dcMVln1o#IY;9NL?pfy@hWdS{pvNF-#9sxOGtI# zKbC%0FSK#U8UM+H?W7jh!T9%zh^O8TOfXzO&q)#g{UrhJ>(s^?oh&RNEp8F>Kr1rs zA72Hpmp?ytu0@jk09;6>HcXW})Yj{pQ{suWty5|+{BTVxZM{$5s-q&(quN{PgRgM(7~iZ{k_zw1u4VA}ax8|}+C|W3=fC_AdpT9s7L`F_ed`e$FE#@! zR@cy(diWHk0Q9bye59_`>6p~Bb)<703p3vEb4Xi{>3FM`_+HuBu2HenZO^RvC4u2Q z4=`aZ#A8>DnvR>xYua>ew-ao7KvDnSwbLll2;~&pF7JzXI5u3%F|gK81Doku5r$v6 zadw=DE;9r`Zy|yfDyl~6RTjTxRN0k9-n#=4PbZxhWjV{}LhZYjXonu2eJ{)m^~yWm zg?mqZ2Cd~^$Wcy@@c{iAXw5J_29yIPbz)FqSH5wnYgwGJ;h$_W+Z@@ecKI8xiw@O& zlRPHQ7L-4*p><<#dOjEAX#8X*Q&_JBKaak#ca5duugeaR*@xC@!T$t#0XC}u!#QG` z^JYrHjC&|gCf_spPwY9!d=SVLRsjwQ@z5~L1OwzDUv!bUY{AVTbvOfxl(GrwJq|vP zLI=^w-H4inJ_@b!Uq|(Lc_1;W4sT$7=7TIykwC`)q%IpIR$@SkBCo7)dj4R=>Rk?z zv}fS(48xOIie+>}diCA7GMwVV$FILdg{p?o0}~IB+qsz8>EeK>jFtkFUjAO|u4dGF z%bJB1?xLNY7s`)Ll^NuLbX}SG!Y9%|3<^;?!+b}zbM^XD$4@|+Zs(dgUavt(Q*8d` z1K4RIQjVESqRh)sG_+9DH}2hpe0XGzLjX==6DVkaq4m!1nXl|kU`te{&(iv_u5>cF zUhx44j-W0n0c}X6&xRL1QYWLQpFFP-6|E6tX^{yVqS$mvN0V;9_?pK#BKHZhIHrb! zrW(xU(duMYt)n>@xlx>{_C_;G_v^u&(>ycTNuIyE6v}J{?wi&~?)KRtXa@%LFfzg< zZ<6<3TYkw@bD~kG$?%@8mBZoJM7BViBT z6gIag$`3;jpPATIC2^k4Nan@$R*mO3=zZ8JBFkVhV=^)sGig$)IkGhooSO+v*Z(3kI7)Xc`%E?M+;v0{mX%8ra+Pi#WNuY%py_?of_p3E-BQ zHcKQ_qy9FwrY)|I<9=roqb5wCmdIM_!Ig=BX?28h0~{0{yYU<5+3hIpOjAOf0G=}S z#VkI$NG`(3FRs_{i`Z0|*l|csQ-gSS0b}CUdhUMFZzv>6ZxLqt#R(fv4}ptkjE0zL z;CHaq=R#$g495L~3BFb#Ku}f6DfW!W6nj~#lp>T9w%SjQHBW#|hd62_S$BGF5&$Ba zkda7zuLdx9N^EdRO$0E;@|CSn0R}c%-Su>`pzO#TJYfpsHmt{te|q(GyQdS2KTw*O zR6f-~og$0!qo{cwZDWz@x_vhy2QW`bwHx9uJk`U*$^ln5_PL}$Rg(nI6m~{WoJtDI z&ZPw7H_iHQj-8M~1Gr87ZlUvAhL8|~I2mKtLeUkF`CL$8j~HO-t_F2Qq^m`t*-~Hd zKZ=FvoPs=S#6O>YJJedS+I1G6pfNXinMvd+mK=;I%XZT&RN=qULlqzO-yqSBX=CFM zNl?4zz!i?5q!=%*~8f8*EjFd_mH06L@Cs0hhj;A3Qu$%_2%}`i7 zzJk|qBfTr`QO|YrrXn;3LC1>$AgeYYHEOQRD`~HgSWCx2mO`}k-^WZ^2f4Iw(-ygO z1;$5$AcFy$6$+r$^utRdKV0*A|C1uWEFfV=fDGib!oAs|w8FPi$ki=NaSd@xM9IR9 z+NOEuHwOk66fA+%(x0+Wt(=vei!n!8ENMj$uyx!wp4dH;EZ!Bm6D4_>;~T0feZ6@a zhsfuKO`em&!SXWBp|UWYy2c$j>`x1jm=Y%&VCj5_J|?n< zCYsu4E)6U8Y$x}BIHUlOkl*FgGOwi;A>2;1=x#a;w!fB^70(c|Dlhh>t`Ao@Q zdW!QVl>QpO*XozxZcYB1$x(Xzl^q@Qfoabd(mhB!6W!&hr7J$v`{bEjI*6ow*{zkb z&qMsKhVKpY0oS4&>tN(hjzjMGy^tpgEgRe~-P8N3JuQ=yd>PjR)MVbciVQy~Us3FR z*cT&eN-^|e*-P=11acz{#|=na6V|-6P`-8CPeb$gS8O!85V~uq=+bs(F#Uy=f!W^( zFBRHFF{Dw3m3p)oOT0P$n9C+!y-n3hn&_d}EXzOD%F0x?7PkT3`IUivdL8X{B=nk8 zd4L;L5Wz4-)NU>j*s-GcfehUh5F~@*CTSSEh5v)vBYXYQyT{hz0_}N{cI+X(ZsmF8 zIgN5p2>RFEPeslnf3$w?ZPjNA$s|!Z5Lmw-mLp=CX2bVmGVN~hN8tjIX!ieIi^vS@ zRr1ysU(pwor-;vhb9Ne#mGUIZ`2p=pbGE18hZVYeNnqBvfT;~*rd=7ZscdS}^QL1b z!!!R`(^>eW!*W@G`5~7L+4F12eUr<+R;do@q$diBTqL2p#<-C>J% zJ6jqSh~4IoH#|!cGrlPMJyWe6gusSxxUI#UF}&pk&N_u1K6a=LIZqEo?-O zW?xwu^NUc}^L%cjqaMgV$)UtG#4CYfT`Ft3_tUWAw(@8*0W=$!^(=(~)0a!fw)=wb zjh4J1C%g^^4ryru$loR)#?KDvZl^?G^mCE}w|CJMX5Y;xA52RE`r?AYoosYs3m7Qbb0*a5~>u< zD0wFIPk%~|vuAVRuB zYj;c+aOHkQ$U4Ma5E4=N2z_OR{%@WLaP+3J8e&t3Hv|#)TB+Jf^3zJ&1Cp&cMUcsp zDJ*c9pP`r>hvPN<~U4aL#}*Hn76x6+u}SZz7mU_bmFL~2??gW!HN{~8ph3DF4BYN=F| z!=5>sG^O9pQ>$4SeO`#u$b?t59oyj?;`Hc^W)6FGAwd&u93KLpv6+ z;je2RunF>lbUc*XR2V!k#Kfb(W#x( zJ|S7w)~VxiGhUY5!hva8`|g>7g;w_OtqUh+GYbqaX76Uh9*8N(YI_Gz&ZJd#sLjy| zhY4hWB+}HH2ILxQ6-BIeJ$4Vmy{)P>#GHA3ExuY=SbK3|<%Rwf=aRf6*(QUw34p{^ zc6}@XNj>&DLIq?Uqr6do5+y7|V@amE=lU*6lbrMs0f-GWg${RJf4%L3?Nr|SiD<9; z6jP+&CB(^RDL0I;9j?==!QTM&?`WXVS4M0`0|4+mfa^wDeE#(ey+ETz0Bt1dVo}cE z@9^vzku{l9=HpNhRq-^P(b%eNS2v`wG^vXM*VYSfKmlleXo-a^J z_eJ9!tc@*so&d8@DM$)R5n2pCys5o?wAvgTI7j@5ImJ%g)Q#AP{+}y|CkkDL zX0~oQd&8=Xc9d~Kv>pPS19KQHI0B%{w@m-$6NTdFBPR;7I#buBe+8!G5gmtCfHCYE z=M8N#&bp zS>PgpOLBz2CR-7jNlItY$H^fT|Lqchm{MJhTf#W-rc~sy{+?Q#kOfc?NI`+`KsSj% zBysc!x@ocK|Ig(3&NPRXx)+Y<_`=Ky>R^0o;C1}=1);VO6OS-Z;PBb?7wlaRyy|U4 z+`UG-oX;EL|GIKStDOeLqGCR44=SH%Fhfc?n@MCwfEAWGt`;6%*Lt6-b>wK^R8B12 z?9fjPBM$5DJXYh&YN;3WQYIe6o?FpTV*r=N@4})E(q0k2rzh*Xr^w;F+GaSU)hx|O zb2$1UKF9C(sEwRDfhedPk|(xtX8ocnFIL%iJP%ftJH|1DH@eese$UyaVSyOI-Prhh zE7rd3FBW=5OKUiA(C{<;F=U_Hm=7t|s~Gj1bUe_Oy}ie5?47Mh4c4VG;gs%ukvY7X z>Vb3NYWZP`lqPr4cR=GnYlBQsvjINK;}f&SeDqt8 z@on~Oyv($}?uxGtocuG!Q_6aS`CF>tB=%ON47D_|X6`kl`MKIRUq)lhQOE<$(|HDv z8_>-76CFp69!-*vfWy||m(dies#(zM1AU3*NGej-X}Y7rOI6-}iZMla_X(2k|F~sr zfMvyRjpe-oQ*yM#E-|vUpiz4^Sf8E%#%CK?m%i5@vQkxz;1!oMfcmEKDfs32o}T~qoxq=_sP{H|0);_`l9 z`&bJtauzp1fK@73KnP7HbwvaHpcMD+gw9d8M~M* zdB)EOpF(V~%uuTQyk;{rBXTMQy;+9G8t>;_pM^Q z9ZttN8HvuGhD1L?lmKc^2uN%Im}@hpK9?0`tgu-UZU*qPnyi1)XEccS+XC6PJs|7e z#4{IfrH9NDGbGlcL|L@qAa{Q_i}Au*x)kWotWh6fbhW~1&7Sb$oii9QCQ^ETkF8qj zmfARy@&3Ji$mA*acT~r4H^902hYq#8y<^R)2AOmSmyLCsmlDK;mIncke8SaFD2vjL zJW?ViBUn8DZ|jqh)~!)y45qU@`B z3&h1BYhT}+M?bytyp~h7lt~>Ra5&iD4A)SC3>M5{Kwo5YI&Kjyv)F`IQrf#t0pe$B zaQD^$^Yx9X0C{65{yFAG%?V$brTcYrd#&dFsKanFXwsRW#GyUV1o%y~&$66{@@i9K zb!=tST}5jJ`x&UJ%lTi~#J{^r(!Lhfsw~qEo4N%LULV!j!jDSiH7lysD z8&9}I-d#7mP4ou$BvU?unmXtufUlw*r!gvR0OAN_1tKEKm!)ldl2TLr-p%YR*HFIf ziut9dN*i526-8ANid9#xjoFe*yqKM8uQ#u5OU@?J!PmBcN>ikPdS@j&qCol6LVbx_ zYr#^?2%RIX5tuxM0-7KTe*;n(`rLmvD`mRH^D7GE0FZ=-L_W zh095Jf~+00`0?!zhs+SPXu~-n&Et>y2z@}2|Nm!N^nEkiN+#62e0e%>83%DZK8>qf z5xRTRPoj(7WN5u0*194dfFp3?RDR#JmEDS_YSYB(=3ecVWsa<2Pkl#s9vKml(&FqS zIE6x8nOr}MkbXk&G><9;@PTII$d0g8vN_k52rn>eDnCTPmZeK1rLY;xA}XAA30c#5 zQAmuK#Z?~-XS_D)9xg))_YFt^o!5&s@GNFB)-Jb}$1H|uoW<=Q7lw?~c100)8SLfo z1WkkSu6brq|8YlCtd{R$QUXD{sbJ1SSgO3{VB+ko{5jY`MG2BlT@TfH(CQ~_~-fe+9IR>UT^hIUzKTPv~=V9 z=AF|MVKj?hVNfjXAv6Dg(8X(E_8c5F=}%Ps`O{@BY+N9MOT0ptA-{Qiwc1rk^c`Ph z3fqLLLK(iTYe}R}^T~bd$Y<0>!>XgrW)R^wr;2iaiBLe#XyR89gB-t|(GpKJ08Vvj zTiVqMhACLGL<2^y%`1(KHcch!3@kwz&b1P?!c2HeY6+kkilWvlgYyEmX{=qF(-!EP zJFN9&G%h5}(Dpc-%?dER9k<>+o*4~^rIYBh7xX&=dy~hDh8v4==~{6CN<)N)CRN?u zuJNnc9~6dvvf-|hT9-s;#5F^+A*ZU0?|4J3OkNmc1SZRWiMy2M8TB!U1v>nBpyd}|?zgPjCqUr_PzmZMI519Tt(JA-P`_d?OP!srp zmj9d9Jv69j90l14-)el&R{C<@`~Bry<{qQqXEIWTThlJjAVLv?=)lF^8d>nkNmYW) zyF?J0?>Ds~sFts5RTh?jZ}&1>H%$D!wh#I(RhQr{5`Os-qaYDmINaPJxUG1|; zkzTp;W*iA_c3FJK6F*a=u*~I?<*poP1>_+VU3|4QftP9azc^8i6J~}KARjiqF{_(u zc!Kc7YI}6^;d_$R$|)$a+Wqeu5DPkW6GE9T>hVL|t}vbsjny@pY1yDs(}j9R#9gsT zr?mwOrh^2NXZn4DH-1fIJv-LM{=RiZMTeDl7j0%pw(`~rutSKz`b|Zk0g1M$%N~;BfF=FITAKx#Z0~qc=(0^d#;>NP=w&B3V?nh{{tRXTRfwBrx%~~I zUCGDXVAV_N^rU^!$D%b17$jZ6dXTJ{4ZKuS!N9V<_G^bL(jp3X6CT%invuv$n#$X$ z8(=v%Um)zkf_ojX89?0l8u5c0hN*eRb5=UTdC6<&@FSEXXV*KFuI;-lu0LKeF`X^N zDQlpZ3|VWUvP`An;CU^@;yms)!i>AXuK`i<w)HAX5p$_!Vh$oSF*~aLk86-tH zsVDDKnibU2^KxyH@uPi!Igy2hqdD_uuu(-}3(_KU(a7@E%=q+x;qz1uy2XJE6D;1d zR0Yz3*>W;w>p1l?#`We*&gK1=EUNO za})dB^Gtecqh&L;b3nsdprarTv^ep^!IU0G52RQdsUAa->wnMJ4!>%UIESox$nfB5 z6#5i_IDu~)-}>Q4$$O2|2;J6y-O+@0^9|L#bcqq@$82`aYz~Xxd4l%vB0H_}taAcL z{1WhujKd-Bg$Tz2Dwh(!1G-YJ)Xy$TGxY1HumS#x>^sxteRqp?rfp1!4a5 zv|727gtQ6wL+$JUc;^*)EgAML4RGae0@WvNQE(2-X%T^$(1(hSkx6MV+3V@8dBm-y z>T-~=&uAZjJVnIsOy;xVTa#D$4M)%Xy!DzpHn=CbNzGHc{aj$GrG6s`Tiq4d>f5!9 zuGjqVEyG$RT!$rW9jFUg2rJ-$w8In%<&=n6SVc{GRksXb{=<*#C86CP$+S@!L3K4M z=|5h^_ie3*HCO-e_s-u@OhF7Z^R0OvskTs8J?6^hungt#! zMPikmPeLAXN?BA%#UihM=1^{F7K%C#nQ+Vvmc+?;L0c! z-Rl!3vq#OZm0BOBMwR6tX{Dkw*BRz9Gn`^Mz2SK2`zcrEb+tSm!oJ@i|JW@)rQ+Y4 zr4JEjn?M%yN^D)q__kC;l1|;Ff?eK^rx!5JJb#f?nUsI8jIwBXl>Wtl3ZR z=m`#oDL=oPa@d(sJBK#zwJ^DSn(X;)#j^OiT@BxoTe2SRg-Z~Nezl83+8 zI@iBR)}@|0aP9jIEtfchrMa^5!@>mCx<{_~PeZf#k~WAKi6qGaBlnn9PNTdW5^D7& zyB>T9K6C+LpD~8q{!eXu;65}0up+yFj#!D)^2SgeY14fRo+8vn0Ij&&y!|_@Sz_|^ za9-3m7?_YDMgjt921m7fjpL{qo;SU>OaG}lD(e$nAFoT+bfe^FIwu-!KPl;uL2$+? zmetcXR==xy<}matTagS_^D7Z|*OuksgklbUt$==-19?Co;b2iZLQBz=ni=G*79(=M zdGuPF!N;W-^&x9Rhoe5G(1gEX`!UQ%nR&uY=PWBYAA4mKm|=?V8hN@ZNuvhceS!@JPxg>YG55M4zDZJJ?3a_JE?+MG^nT;F)YjP70> zOcMg+yTbM11`F;jJ;DXx3kV@)l0QVDs_VM(#$A$=Bh~w*Qa)@4;c7$1t-#Y~Lnj77 zOH&x4#a3qMuMfPS@aK2|Sz4Ue`Ckk&x#{>+!fhDd*{u8!NNV!V`#FIU{eaia_6x#L zuuNwpLEaq|Goh@OU)NEDZc*w-N6Wwgb#*!YoR;cg8#ck~0LU#e_w;TmFV-1+pfuNG zZ<`$0BC;bW{}R$NzALA`VHSyo0@t+oU0Y6SIP=~rThieDR{!*$lpp zK@{o=Zf-rr<%-vRta)W(Lk<2A6M8cF5JdW^Dziszx9G4i=k0f-tLs|f|IjaY>$l)4 zbJA{MA7PTkI<(Tcsq->$4w5NQW{li?S<=YI+8yih+4U)^mNk1Nb`=+WnGik#*8_!L02gurxKNY98d3ZRn&Ps)nTY!3*v z*iI(}6BQ@GWa9LwcdRTGs~SJ{w(t zD6&Hy9$BO;B+4DJS~TYtjm%$)HKwuKA`KLAdTNry7q~xH0+?ftAxbLsFswo2xy?^@ zAYd?0jq)e`QwjG`;4oI=r5hlXpE_`@?85p7|Cik&L^4T+N(KXQ=MH`MHEEzHTrXjP zLh?#bsjgpE6*nKUHFt$kuv6O*tw`XjJx3z71Dkm!F5Enny>oM9g4M;6lb3pZXX54Z z5;6C}x;>u&rretiJ>L@I&mF9N^8({2surGd#WVla@xH2Z`)97Hi_?=j55245!HFWRo+LSt~h0ooDc zAt9RGfIedzEtBNoCWAu%cOLKOL#`FAgblQ=_22Rbky z;80d&u35Reo>$)eqors=D^B|0-uOXZ2h!8)!T0C2C_X@|L#*}bQHv?1?4!@5KpK7W z2Wj;#hV_ErWRtoy4iP!l7&+pOrhgCv7f37<^HRJwhJUXuH z50d)pH5XXNzW~W;s8Q6oyBf5!M7DyL5VJg+^8Av@L=GEV=`AwoL;E921+MB&PUSh* z>c>>KdMkD-q-PINvpCfva^<*Tqc@mu~v6 z{aW)-O+rK1Yy5Lh#1l9p$<5VW*|EkQ^$WQeJ4<0JU#&}JT-#5_8a}|p z^Q4g}cGE;UUhl zlowY1nQ}$p_8Ggs=!@{VTgs;rdtT6GN1sKQYy??9)z?12K0{5`(ItzpI=CgW~=gK=D1BjES;~#_Bcdmi}?@EV1c?9*r zNrv*G3=(uHC%SFFR;_!=PzKLrQCv9%e6aFHajGPG<#%Iy`TBrpWJeU4gP>*b;XSla z>E~@0afm(=2P*fV_vKTuJ4tWFofV-v_JSuhmtokHCf$Fv>>z*|3-m5?$~=lpw@|a& z8_ANOqrFjO{zV-E68mi`HB?qzmQqsBy&E$=mlS)GG~QS)KCLp=#qVbZjPTLsos{TN zic(7B(1GQ#Z|KB^5w=)8r(ecWkAeZqgYU}c!l9_BU~O(J+#%fQp3OthG1dHV1?qQbJc4WPZ!HeB38f&Fi)MV29zOTt0u^t zOL8%jw-nDuWCde_q2*a!zQTnapO-Am>RLYyQFBILzfA}5lB%su1zF;lbrXVhxTRaR z5koq7*jzOR(+%vn*;R<(6%}V_y~&__5{pPohg;w|0q>&q0`=e&ez0Ip)&Au$1q6Hp zhD~(AE^q~30d-xby{hO4YXtZb#GIF8GGXJEaNltyy3fC|Jr8mmgFjK|>TcKynKuIy zKTPnU)DP8tk%)@p&K&o{P?i5IV!umuZTD%SMXu}W#RU-8T^jkOVtJz z4ec4>?Pb0$%h9N{8aSs72GZRoemz^-U5! zUO-4KTL=gtEwp1g#erLEfN?@^2@X18^fH2fonT0w`$mRbl=B|@eF4j?q1S%@;b-XK z8#q*r_I}>dRDdtBiikj`9eSfm=0vr4Py-D7#+^X zBbj(rCZq^nziVha|BQHgn;%RirjgdB@r7A?P{LIZj1N26PDmO8{b0UH1U zK>fcp|H>0Qh5X%*RSfTqVgiylX~9KqugTB;^dbo`qHrT*+a~{a`Nd{2=RY~a%qkrs zukSJsn(L><10#fQEav9q_E;_aRi@{{Wlp~p#xXGdHH`j17sSwH?%Xc6+0PIfZ%&rXQFt>=hwK0q_5?cA}7m?LLF`9Pz}bKh45SDajI**k3 zw8vC5v)K*NSRZjo%~nQW1`seKw>w{uk0`r zid?Bp)Z6yRODD(g*%|b6e=4ytwcB%=|D1uj(;pWzzlV9r^FFuuKt*!d(4qAx`3=oZ zD2mG(e=rGd`$RIaY~H4DF-iq$4dLfy4G{P`teTI%Cj5DYe+c^pYb>3zOoqkV+JYsh zOB76~TE~`|eB|1^Z_M@RnE(J5B?u}`5aU;0 z(!z)wLQTBWzBv`+uC9SJr_i4RtJC=^agi0gno2aFT-bME1eoNKFr+%S7<{NDl!1jt zIbqRt$yI4A0jY7=mcQx8C@VQ*NEp@$86FO`SbqjeN2 zKa^jKhHpz)zM|4z7Cw{dM2wiqi#JPKKa+i724^k^J3A4-Oc=X>1&^Nub~)V}>vk|k z0DH`<=D9vwxAt;W&?}1dEXbJOGXt99Gqfek2=)PaX}jovV3tLZV)S!<@ZI~!$&9d= z@v}KGZBidVxB)8B;fa!CaOoJD3YQgkwR)+Yb}0w(J8&79IbBaqmOP11kEONVx9EcA z>@~&@mEAa8*~h#_5V^CFoZPE1U-nulg8}YoR)-8dWCl8UK7!rX%5il6t{^**m(fg= z^Z{ToE=12|0_3x=NHNHr|M}WD5uz1|6kkr!AeWB5jb@We111`4SNvP7=Wfvh)PYFIuWr4G zX051zzpG=`-$+#eER->mHgIVTlHFhwN}QDS(us}ja~3v-!`!o8BrIGdxm_A{CVAf6 zki27oT_<>5@uBy*TT+4jB!>=9CX*lvD2>2%LTFj7KgRw3?@*yBsh-e@`m0hcV&SK1 z{UVFV_(+6&No*qG6QikRpw7^&c_m1Np0TTt+zMB$*#&OPZEJ5T2RV=W8CU|q(L^o< zz|2G@-525lwr3(`jiA#2_?o4C6{5X2R)SAhaIqW=xwZFQSj?X9QbhXeMwGVbz)k|g zx(-;3AG4wdQLW!xPnD8L1zN9vYC<{PbD7XarR|5{av#VpQ0{n`gb(MGSOOg#JOs!o z)eC1Q(z+p$WTr&!30U4Ab9lt|AUmdqCEv_6}9D#@F`9CVtDa_;NcXZD&!k8;EhX0^86~-Ct3nKnR~t*h$}c$de^bmi(v&SB|Vt8Pu3hkZc!SB%1I%7~e-Fv-L#yWH$#C z2GX}!pI(&3fg*bjvic7lg%G|Qa9Q4Cq8g@3e=!5a=P|~MmBH=IRK(*q0R!SYT;3-O zLL0@UvyfeWf0T}TP{hMv@;<2!S&dtvUsS*DC8?VGI{P#pkHZ=KA!S~K4&ZBYn5ez! z-;#@;Y)Zu^p}wemiYo>PL&Q8iFzTF9BT-;g;=!j_w#~7i$xMYHM`NXY@342;>#0JT zv_o3Zu`J<((cigQYV$bn)UJmqZ6SYU;nl)gwKbdv!X>X%gaYT^A&o@2#~Y&gJ3 zRaaL$!AhqV@~h>rJ{G4O;aF>r)y-~wt`?QOAAmdK83#eY`2cJ@ zS(SPn+CCF3D*{yK-1J+qq+5)qYEw`G)Z@b6BC%Pon}y}8QFE~I%^$|qlW{(1GsnXW z#TK1yq$`wA5J@5Z_n-CHt1AuCJvNSp2B?Fe45}awrjFF*Xdl!8bT;i8S_0zZKTjP8 zTu-&^*`P;G{Aicqx58vK&HkTDP$&%tDG;ROan!{6<|98Wf=D6HhQcZ=LiMXN7-ap0 zPup$M!XI8vM7wE4gX1-O`p+szBI%K_P7fF;M^*0WVpiYUmqD7TZ)g2|VOJskRtf&Y&y zXY-_`JPbKgpF{rY8j`-JehIZ__nPuMOU9~pQ@6rW(i|(((-#0ss<_JNL7v@qy6=5% zJx)Rt8cD)#Zn6cKRXl+ph^Jsz06z{Rj~>r+yq*K3p{FiRK(-2GD^@1LfD=m?CT6F$}S{2o2E2!+6h2ZdCCY1Gg^ zl{=9({7rv?`G~{4RCJi$oTa+%+;2Yf@alt!{NB1y76i+u!=mZE5u31~lPKSPxIasz zDQCv>0Q;$G?>L!E0)B>C4O&KZ-&lnEX4{Y$wtJV`7^*cJ*yQO~v@u^s@np4;|6WIT z{L8aHMC=)I3H+s8Eb;WxemzBj;X`H^17&c8CTueY@>Lsy`GJtuSLJ4%&_I*=@>fhL zFFd-UF1K}7IrHYUNzWP*@4oV~W%5my{<2noS?e&? zfmFBe<}f7I5_U}!!%_~K7zdy2I*+L*z-K!Hz+0~Z=fm6cJ4{w0msb)9CgbdfJ3mNb z0<)hj-1EK=BjR{ys$GJ4LcGTsv%bharPfFCK?uyM7`eqfUH%Ruyt=wcoJX|{_M>mpZ8@zgDc>^v*U;OF&;aO@1g|5T~ z@HF2L|A)CfuEl7PZpj-az7acjnhdxY^@7C=CW|c24|ggST1)3ZQ`$JDWa9&cJ!LQUcsk#3AGi&LKS z$GMP;BOLRt>(@A;TOlcbp73$cD37^~$N+mtU)Fm0nxz;kc+onltqcQFX^_`HAOX-S zXU9*;;Zy2Ce9Cu5`*wTLd7Lf|7^7o%3XiomM)UdY&O8?&a+y53x~kZXY_D?(pF_m} z9GyskN4bHf?CX)>9a{H5KQCfASb@dOB*sk5mMu6dmtrZC6hu(9TbD{1DY|+taj_Mm zNJj6tJ#!a2Z!9H!RzFn4{zq<-++)C1pHhG3)hz20l5PMhM)y^5B3GM1jkdJVA`j;o zBc~TRc0j*DUZ!@AM75+||B!iUZwjP&y-jl`zOBA^?!m}v1hmohV`Tl$?&h-=WAq*i zZ*$9sv+`RqnhB?;RiVNJtmgG(ayuZII^Hdp4Vydor|~W~@zR&cyRqv^AWs8U3$4Q$ zw--)4TbUEB&Jm8K3jpjpjkAOoPSS~q)9kp+7Rj!>fLncH`iYr7U~Y;jZLE@BxtMlQ zS>rbQw$O>7aS3`28Jg_4XpijPZBLToGyz1RW`!Y;nfPbqi+}*y`;)K&s5wmo+rN@f z41+_c%(Va+!9dDRrQuz*+jK#_%Z?a}eV!d`S-H-wp`RAFr_xSh_SeNPFI*cd+HThQ zOiL;2)A4c4-Zr<45NkoiHm?dzWxHd99;>bYcO)?MV-=}qX82Maa3Py1r$KlDQz~Z@ zZi2+LM^&HN#yoHzBSG)=9i(HFzE=OPlZFij`4;L+57G~<13f8JoBNl0Z@Y0Dg18(5 zDm^gJe*c?e5ds+&+55?vu}Mm9X;mIB{je7)M$qS3eKvIF5s$qK>nF}H;0cQ>Qf9$u zx|3}>%5}z9vB=AX!LB_ZhXlEtMI+ZXy+hJ#8G`` zd$t~ldnZ&6EzoMSXbIUEW6vZ1kJ(cD`?rEZX%#xK^|3wJC9kAg42svv2}6nyM-pDi(31m+diKG-vAR zblx7sZVkvReHAoT*uX1J>4zr%Q#|FL%WU;vt%Yp2`T0$S3u1`HzHLkw$_*B*n9*`e zW?Gqhu7AR3SUPt(;R2lrH$y%y7>pIaNO7$F@>Ud0&CeQ%B^QBRZ{HA3DA^vmmFq7mfMTy`=)0Z;S%G z_wVyf@H!yyz%kcRsIQOX*o3cEZ3Ee-x}(0FB?bCLgqSn3>X189akOf=xqv;YSSMxo zMxjGw3LcLq?P{fO*_Hw%=Sn`$yYNUktV8Lw9nosydA{i2qd+UBvAVH+l&pUcrlTSD zt)()P{r|}Wm49{WHjj!1gv@c8N0ojm!w0tS$bytq5Z~oewdC;GUO$q8n0rv|~yh4a$UOJC%nCPr5fz08vfoTOTr1*BIj@Xp%16^q^w_m%WB zoCkUUlWfWfK?IyLM$Gg)&M}ha_9unHe_*R>>fYxA;S1CSaEXYl2W=T>iX7sLBqLyB z8;p9Oj+kdq^T!CO3uED_)>JUhe!IvR`T&@>Apg@+>pY5VZ}_6W<}6Dd1p}!;H&ZL& zRtM->Mn4^%M*;qyFSo>wb#Qc*!Qz7TWGED3YE^{vn_Zo~A9zJ)>H+`+Dyg5kUkTsx zWmUk-A?Zc4&a8Lc%W(%$uzmOdDy&tDd(5)>XV94LmJuGo=+4?4xV zIv@Uc?sW{}cx?MnC00Sr>|Fr;Uw^<|l~8ER+q zdXMS%|15hdI5;TmS_6%jhV5N$!#m*-AnHCqkJJV@nCZaq30^ViEl2u&9Z|JHx6C8BiCwJmI^B zs;76TV>ux^qeH-SR_Yh}G<=R$lN;P!M25{jmm|I-`+9rt++{=pJYAKBkA%j&N&{|) zOw10^DMobLmz+uqo{#G7^c55j&9P}n2F$2EcKBNpKGe>Z;~5Mu1}8cw8eS{A{7(8Yu4cqesyhHH8<1sxCKV_i&U=fvV#dOlee67A82_IW67OGIN>XB z7Bb?bUpT$n0w1WLOyaR5V_u}&LqXnMR=1w*haGi)aSn(L7zp>{CwzyH3c4yP-|fxH zK44~}mZgQP*>KhG-uy7cYmy!zW5>)kI*H%#qNqW-3+ab%XO+i6;7fN`AG~X@v|$on zpge8yiz{R3VE_EllTxOy>qJC7qkIKlXl>m|9G@tDiu1D7uxcL_D)r}%&~6FYBOGni zVyCxI{4e_=X6n60@(Ad$R{UxgZ~YLZOVnew;vL@>sL2MTW*xm)JxG)fNH{Zj&{xW_ zJip`jBO9`IzheD4R^c#7A71pN$VJ50t`>47(;|B0SMsmiXF*NqF7zqZ8~Fh=YaaNQ zJ%vE699t@sdcasDdSn8M*8ut!De-%)t|;fyA-=kf?MAZEMBii55U2!;_#X-FyL#er zyv5MHs&P>FI-vTe_4gli9dvYgLJJm;OCPQFPZ(78)#VH=rPtn9t1qYGOEc1J$@||L z(43;>K-$20whJ8a8R;ppkPf?Vv+ImqN>QOt6mYC1AleU?oPJw3_$@?%{e+(t1cBrt z10X)QpqstAx~3$Y{xwZEc+7K<*^nlrC^O*M>@ZP`c3p(bGU`|{qi?N))IO`dX5FMv zY(k7kbvbFecVRdCQ5A>cmvlSlZK%*|ccd?wjcd&kjHy7IqY*V0TyfS!*v4nAN5h?(Sd7@ZW+Wp zpzN7{T_Px0%olHRNl5-9JOVIMe0g?S!|#7ijWD5DvOYD9aL<)2RFtr30~klAHe57} zT0s71QL-t0`bNFdIvup-oXV# z?Tg5&C))asfnehz0PLHa&*j-J@Yv{;*IT_esUnjRelx9BRU1T+U|A#%csyB2|N0} zL0FWma9%;{SZM1DW4!CZd-Fy(t^Y_7d;FnK2R^WU)2c3u<9^U-dLH zUHizhi=~r1{^xhD$cXpS>%!KGea8`N-mSp|`H_ve=%uqpfwe&}Ur%t>CGkAdAZUIV zC4Z(FQ%45ciCBBd*w$sNby?(|BgFN}VB5B2jW)gK9QbvKF3Ri#5H~kp659wzP-? z)P4b@lxGDdy}t>aWVbpi2XdT!8XMQtoOo%Gq|SqW)_YZt%PbY(`3CYXU}(IY9HTXg zoRr;(8@m%%Xo#&!zfFucym4@5F;cj!-`DFZEGc48&cmbE=_nq|dLRWXvr_;_MSxz@ zn1;RBj3xmL+>`>9^A&((ede51IM&Q{OH>>ZGW=gMmfp;7k|Pw+VJiGB_8(jBho`(w z=p%RQ1$39Cn7*iA0;FWg%eh;OJf^hYS%wp)adO$?TP8Dcbc_WE^wG~WG4~ozqTDpRhr7X z`Cj@qv%~3sEFbGjTLpa zWazA16nN!e$A+>T##26dL`cn5@*AIZ#%`MaQ=B7W4}+2k zxZYoih&jM$>7Oj@+7Bg%s~FaBHWAph(q-eG$3(7IJ!U3q78Y$}q58f8xb{gC7nsEs z4~^%g=>p5LjNEA6?!KA50dJ?}0>iULcotLLA!wPk_5<$PDn-SN09y@%>AW-)0GZH| zWIpab>h?&L+)g|dhqXfS_uAd6VpBV~<)_i55hhcZ3oX~`Sqi){55Jo!9?*s~;&KAU z@nJT+VZ5B*k^Id^&`?S%AyskFXNNZ0Y++s4Nt|63-(p`_&ZXD&*i zr@eE>b{({WVh6@ReAnh&3M6`tub%4=W^>txr(&<8ck6JC`vtXR6) z5JDb-auZm~Xr$27+T$A3GRYI;-dT@^u-X*SL%PTW(W7QF)DAKx1baPscxfcx(-&*@ zeNqm7iyjVEJ?OlQj`*`XUAj@2yPNF`6VoyaLzHQ73e8(HsPfr{0v?$XDw`jKkOr+TM}5nXMzJQs&S4_UWUdr)d(R(PJtGS4_Q z-#4jw!WQXnr@lI&A6rRjlH}pXo+1s3{AXXDI~#E?HM0#K3{jW#Sv>%&53ntFH=J15 z@9Q^!0m9m5QgGh+;mio#ljmrSX!-p6ya9Mv>YtuUn@bXnkts>(+us3>!CuS6tbB!` zh^IW`Y$~O(xAxCc*6k1O?c`lqlE?d8X2d*u|Q_e*RQ@pyp|2 zM|{z0@S)8QrI{Iy5nlZG2tsmxe@2?DE>J7CGBLwb{LpN=Xd%bTb7gB!;p2t%!&dhv@2{q~cz1D_;Q68$V zigILt-m!e-4L(0*Nj7XR=(A8=W6x)WSqF*&DZ^Aoiti&X9Elbl_tsWjqOu+B?QBkz z(loqS^hj%sD!vitmN(Gb>Zr`lVYp}s7qDw_+uP?`Dyg~K+L8IR7LWGfZ}eq7oQw3@ z_r&x=%sE0&$7gTLE%Aqq-gEMrhKfwongFq4EQ%>+V(T`ZBQTq7LQ))M7jsn3^J0{8 z7NzGCcjpFh{mk&%c6lFI8LX9m&GD83=Vzjp+=lF=bgE6?W%-?`rtk;Z)T)A~!?oV+ z(@qO)o_=I)4wkr~n&g9Cu+k0csum^}R=SOU)cfOi^h1B{)5}w3gRKwnxqMVD`Owo} zzwH&#%sP%DEQuK=CmE1rA4NA$6h;y)X`m=a;37XfP;9b2AiYsn;gsV!t_%*NJ;d5( zGR$+cuSbnUmNK%)FhwGMY;?S;rZd2aFPb?3^XMkW$gghbYW$G?TWZ7h!_~yAk@^%a zAiav#>6WzY;wXhjKAr*OwF7@88!V=ERDFd9F<)7vL-Z4v1_8 zj~Ub9iO{Nd4uPQ4A@u_q3EKg6AqfuaEg{|_BoasRycqo(*Rb+kbUaL{12f)#Z9fhU zk@i{(B0$D)uc$($4>_W_E~9V3U>4vQ-@E;98^7_zq0-`z z$C8nVf`&90xL+M9Azj*1Uk+gw3A03`W;OL7*2WK5GQvOAzq}CBdbh^|BR2#clI2@D6y=H0j~p-m$h=q zhwM_mC6mj{#99~1N~Z25MTvCQ*wA`I(GMWvfcXX^=9;44+V=c^b7N7Cp#m1cnu{9q zNOVp!K?f$+;Ef~Mi*@9{Zeil)0Y5qgm}y7!(3)OjQqs1bD8 zMbI3)@*Em$sJF!WlnUT`1p8(jT|a_zhIDQn3-KHGS7Be_trsC=| zAu^g%a@Yieq;0USL*;4JAaomc@G-1ZS#vwZgXMU9ZUc2C+Mf();my&LCnfK>NjGaj z9+L1d{lC#DT7;nq7KWx|T>AiltX(WkWon$O!<4e5j#KCJiGwk9I_|--XhN*qZW?H` zU}X$qV5`uAQB<6%ckYl37pK6$794{hyIBEoa_%jAv9^47V^sr=#C&c3qDx9bn>4!? zZWEz$O?hdhq6A8XEcS&$t>;3h?c2pVe|TS{M8LqI20yt9hAsEg zRk9pM5}1DyYb_X+>2s+kGHFQazsq#-J_;?PEyb0M!?F?09xq=yc1|M7jy1nUdzcg8 zHok)(XJzk#quoMg;~={yVmw2Y?AZmyI3&e`C_YJNG*GAd z%>!i}DQGm&gKaJ%9}5c@IQQ zV1zT02_lXs^i_{lv@j!04Xd?@^n5@ z3;UBlr7&uKKH68L3t?%xEqwf zu8n(W@be-kivW+ZcblwJgg-(?3t=>p`PcW2OJaG0*I+iL-wu#C=mVU$>gyN>3gZ^B z-ZtB5b4?lr?t#{oF0#vSg~XSk6XTkCWot^+aE*~#=u6P@T@W2(O~rTHXkoy{2kW~h z1*F<;d?$Q%BuTqy;@!sDv%o}P(7r3e=`u{2$aQERGDC#>4L8Ag7LF-= z-tqn}=4Ns^737gF0;E`cxR#`Df9`!Nb>6zs95+KLapSmRLimvPDJu2&ghdg4sBV&P zZs(z{@eo%`ULUQr{l@}+&`j${BT8wjrUViko(<8{ykpVbsk*2c^h!^yfEanN{^A4? zK`hVV0-V`?;y?D@P6L{0goR-UM~s#}2&wCWqzHpkdI3(|e#?5SeLc`4##P$YX)jwy zuR*L1PGc`dV78jh;4<%Y07@3K63*5JrjQVJ3SeX4BQ#V5HsfPAyc~XA?EDPq@)2X8 z=*Vl1eOq)NGF##dreY!mmxv(}G`I*&n>E8_Gr@K@6l9nGyxNxG3v1O-Nn{Gj++YL8 z=JvS1^)_|oj$0SBtb-u0y10Y^?XAe3s^++yn!pEB%fvnc*oJ-4ttEol=bCTC4v?i4 z)3J(8yt7As``VUrs!D>rb$sa0epUucvQwCp+)f}UPdHCM4e5kem_#5@K@0H{(IL5y#o=uokTHk-?lTLKZ+&~pHbV{gLbjMO? zG|7^$nKh_tvxCK}43en}<$6TjbL+OFy95ZUj6=Hu$te}JnJ&%Qvbn8`T`oBIT|&#W z;Q*uZQIl7ih8kh&uFP(BOtaEdqGuwFc)wn-F%RwCc;;sT{xn1xN&4XA$0y1H76c|~ z+2>?RT1GaDZ)D3@sww95QOrRzKixE|zlx@fUTM+=WjuXde!_l5CQ>uUNi0h<%)@u=qX2hUiBlO%Wv9RGr<$RjmP*xE(@W|Ha zt*ew$FjaTJ&h2|r9Y`~w!1mh+oQxQ!uRHWv4AiUOpDw({(K~M|mi^NmhScid2ROV1 zc@Ch-C>Jnh(mP5Zn_szM+UJ-TVpvwIkaZ(xHbDzvELfcIGN_lti?3)32v?m!4o=|B zNlb@00nAN29`PRGa{SpAw)|w;3d{?Tg>%X~&Hn}1=~vgt?xdCfe7N77rnsi5bWecl zlf1V1`I*4C4he4nF@x^hoNSn=sh6HH5ShHxVUwz-Y>R)ud62k8G{B(iCqUY3lat>L zu!=_}(`1R2*Ii}Xw2`iUuMtPr4OA0~7@jEB2_onwyFIh{}2{e(jy_I@NwuXpIX_*Am-D>(#`+_(L|v z`1x-a1P+ofje^q5sLp}_P+`$1M@}7!(&+s#uo~kkdX1%~8K^!sn~j7cDT#|0PjOZ; z0xbDoV70oW*C?zo34*eHN-i>$91Nxe5!l`B%6w28wsQm`E0iTjk2JooVglHXJPxLl zYRNXdOKs2wz&AyAhd%L)8Or?n6MV98cs)?2fn31TN+)95eRn%J21(;(+X3qps4?ga zDGH&CDUl9SBxrGLeo30<>c4ci)RIU0W8(X(;ChLsOb{UF!lYgo6KgUEGmEdgb~%Y+ zuYnaFAixugY`~Fs5F#z*+`bq6vzvqe%xv0yPXorW!b4WEhaxyLGODJwNzYqnhJHj1 z$&0;5fj7lY!ldOT!4H&o;788oGDaSEI9gWS)~O$_H>e!3J<%uI@VFkIc6<9Mv3#Tc z$0vdqd{>Saise~j#3@G%g0CAK^V8^nc#}_bk3FZeW6@_q4~n95$#5!B8Z~rSh9PZa z2iJMapVC=dgKo}<)HFVWc?(bNq%6MtG&d`a>Djs7VxmTwhYR!g(ZT#FqA^|9tLPz! z<;PvRj&(wIxw@{6Cy(xbgsZ6#JJG)rXxen_z^jX3EmRFRd?3)t|CcgN{_d*`tQ#I5a}MLcGBCswsUUme_-O(>~|+V=NLi==SBmfZ!D;E123T>7H@o zNgF;^jRue|z|&ysX2ITQc~o4c0dWyRiY6v1+inhLV&Z52O{|beuxzESAU0Nl7Uv~c zFu^+d+fYD7tHT-ObollJc`y^6xFN!=!0803@ye3>6OZUwrFGWUe$|zrv%8%yw#~qG zPHhEf-$5?xf8btJq39g(TM7Ez5yg$3kJ`%%t2+Zn^3J3w^f4xZD0tw^sX9`ts&B?b zl(MsY5}!fEex|PNh&&dNJD|2N>7e9K2#SJgS3Qp4U&&QsFP5o3E2WGC(}OBo$U- z5<4-Edd0g9H2NaUXH+S)h`qicPd_r3sX)~5jOy=YmuKFc%-DXr!buKR!hZ@IL4VK5 zP9Hwfg@+OFVwN&n^2L@#xIa`z;zjchLw&%e^EY<{%vH08D(RKoaz;bp5{h_`T5dj?KPd2y0gbuAUW+&6^3e>;0>%}+{U zZ8&-CM$9;A%Hb%pJuw-}m`mTj{bT|6GRR+4KrFqh8d4E<1Bn;da2|IIj~+>#%`r{Q zrf@seX{RdwF2OkqJfW|c<|L@jmGpPb589rqGioBot9F&tTO#%ntF4a;hi?=g9;6PPohP&5aK zL3WYmuk9C44TujWlS#P#aM_Ge|6r%xjk z%M4Nzc)#4TwJ_insPP(G?fc*{A=__78k2Pn07w$NcRz*=iwz6IGos#s0uJ?GPr89L zy^D5Wq0n`=xYT2Xq38 zfB=PUsyhS3*B<=CjKismX*ta6HHuz=juP@PHPRQVgCRmwi`RpD7y74U?Zc z@--Gd@X2NVZ;O<;DC^0tH$xN9&Op=WgWDQQg^gO2=Ys-2(3^Wz#_BSkn)cv9M9iS^ z{LDIT+~l@uLV>x?{3NMFpb9_3nuty@Js0$ePSqx4)}S|khSDX}Tm=@O3U9o5dLnMf zlsZkNxScYwVw>7m9lzsukNKgin%!b9$yP9)cpFY89C*!9vM~-0V&u$8l194+wNLa> z{p*h3zZT80M9;-lV%iB$IN5@tQl4i|<6}g*eY#3`|7bnJ z7NzqJ3meLCAiC(XnC_6xq74oIef$zl+7Ay-!;TmP3Y97p%h8N)yR&8!9lv*c45DM6jEk&7v zjvfbaZ88s))b0odvYozpbnK!4!Zr4Zyma~Ydond1nZ_ze@jo+--s2-n#Awt>!LDI^ zCY1>MzS;;-vX%ahWcl~DS#Y#tuZ}?h%qH?p^eS@_B;+9iYJ;>6j4I55oPwR_&R-(3rXu88QWZ1UgA2T+P+;Xxgo@FnJ7*cG}!TeDlY zkPzM#C)iZ1u%}5&yqjXk*;&DPTVq1H>VM~%MYdlPI&je}M%sI*IRf@z)4; zX_$&TU3C*@y!JQai~eQaeBSb#&~=S?_0|!|n5XJI0rj%*>Ml%<&+S0bz}f;${X@0Y z5ABHR7}W-DXa3=y64@9b_#C^5t4z!xE2~E)Li6;ocXY(9dh@1cU46urNr!cU`StOv zJYO>nF-)^Hbz8i5EpJm${d-(UY0$;J5#X4<1`V;~|MCSI?Xk(g<5!B2I|BXOvhh>_ zgO7s1qC=vS;AqrMn^D%nH&%zC4K}n=jG`YU*QPj%t@TpQ^QUz|3Wn1Cx}O_t4$PEEcy;WZUdqa>0UQmbc#rzty6M~i6pr4B(agwuO*{gQV<%@VU z*uxEJA=a6#3n5mp4zHc;cbK=zH6Hexr?=V^cc*Hm>l?8wGyx(G+RE)J20UXi~9H3l-U4e1dcB9o+9!2R-%`*q|HE)Q*R#Xt~C&-c*Eo&Odr!W;~QQFIouu=PBKY>WLA z4jjq*#mc?w6TDU`+2Y_Eyi>W29=Vk@><7bB>N=5SW7QHeg!x2G*ZWwJt0mBOoIgv0 z2m6fCIR#^j?UhPl?9~cJL7_grhEbOHB97+nX;skAS>!It?Q&I9UvIPkMDx|u62En! ziN%^k*GM%7bg99{v*Wf5L(+fzQYD}X4?q+W#3|$5{@`86OK9eMVYS-qu8Z+G@?)KXK~-4*cf>7YH; zvCNpQCqRcL&(X?D7HubNES*2B_SAvT)qsI4lpPSe1Wj9xyg9nESui*@zY|mNMGQFq zH*dj9Soy{L_WV)yN%j&;_i^zdY@bcKvS8zCyc&>$?F1amMHb$E*yBVxGR%$#3m~0y zeU{*O`o!q!GdG0A)k~0{TOGG7!yi9E(A`7|a9+q)k33!3l48aEr~5;7;5^f>X4W=5 zNa{T%is}~FdR^BL4c*(mXd}ffiPKgL&64z`Wd?)eBy2uc;x7L=^)gOv25m^VZVNtb zc%@GJ0T{WQYAPVW96{_W{O@(^~}5%@y=Rmu`2(&jX#TbsE0 zTt|~xzj9kB3kd^UNg4sBnA;S76q$@limPnD0kLFNpC&6h$<=z6iiG!R7b$jsIp%U4 z+FvJYoc99mqVf<}j zocj;e{8!q}=k`vO*^lzglly})xvXVFWcm4PEFCc-3p*_-WzrTRdNEcA@LXQx=>C5c z+ceM5;OMfZl870axBVF=j_X@N$C!jAjA5CEm77Su`~lkjr-n@U5V-^Tdjoe7|HQZ} z6dF73h30SoM??jK1@6X<*cJ!i+2=*5^d;_clqeHPYiy)Xmis6gnebxyj83iV|}#M40bm{8RzRiU*7?_cs#*rR$Pm z!1>0w)K1AR2P_WmS;RtDP%TWNAu*!+|0PKzg@Y=9QF6L;4KLU#tWZF~+-=JN&M#G> zFXqUTkDi4(NS_S)DoEgawQWJC2-&-i@^xEsMm;1Q=87~s5HD4IQ~iFG z2QcxJTkVtD19Fp4O>WD3u@C~;`n$-)~$Vdwa5{7$5xH=RY( z{56$yD|oIV_D5g5x-Xv@j<_BUzJZ%9gK|aiqf01n1Ue*AwdtGF2oXx@Slx+ zgO8Vt-eW$+Df~6lth+IETDqlk$^7rZAr9`GCn|^Z_`lw98E*EmwC=pf0OBbbOG-XT z;`&k!ddy5VBH|fmH|$@7)(@)XLe{1PYa>rA66xt3jc3WE4wskL1CR)L^&$z9n{{1Y z4+5x69FQF8ZC|n})>+|P5c=)(Whu(QToX!;e)jY1UCscG*WfO(*Yc*$#vzZoB}nzI z$)qR$=FMG7IYjgCue;1Wv#F4pi2(CPjcp+fy;yXl9X;ix9Z9yh9(AlQhR?{bF^}p`I*zCy~2gqG?B+{K`vvVAQ*u~=9>~- z7dMK>?Ez2{w+~s|s-@(MmDqhIJ`Mhq{^^p`;O!Pl}?zUi3CAx7V??Pzp}`Jtk!PYK|}&9+yR@bkzU7>lYH&Rf}D zRS-p87tzC&#PsH)j~mCD_Q9M%tnu#4d2-_4wJeU^PU144Em~pw$essbUkvj{i9lcK zO;RBLL#-Ka+sx%a2KNKf9JS&B2h)2gX+Zu5iLjXvMzsx|7HBBq#fCxZim#U-0Etm8 zwagNEqoA^3}0ek7%--MTKe?iFk*jTFqn18FxT)S3{o8gxNR9R z3%)fS!bxrdYa$JrWXP}d_Y~UvJ^0cbo_$dMJ>|W%&!r*Dts_7cdrm=^a(~^R&zH{K zG~%S_HI|X@BY=P`w=@Br)hA-T%GLJqXCW>2CbbMqZleodPMul@l4fCGR48l`&ugg0 z{a@{%Ym;)7|B@~DX>HIlu zts-;=@Jw;mVXzY2U$IJQ<9oAFyqaub(N_Lai@c8q##_H9OX8rJH1uXglz5*&>V~e4 zW=h|wUNPsj0Jeu*4;X6ec~Un0+PH}Tz(mHUk}5Kc^NMLTP>=cU?GdP|)(fe3j}qe!kUq;rSGui=tmXMf>iid+)BiRC)e1eZTsJ3^N;Nr)($Vtm5|y zJi`)jB#E21W!3Q0PF6);bnk2>WECFD-c#R2a|^7AD_F0MI;Eao8Y_>7pD+vC zu)2QmrU0EBIih!GopQJZA58(f*<>03dVrY3f(d_{!-Xo9l-_AF=LCtI&|Yd`ytkM277sNTJ;{mkJp-LdPI`y3O}BpwsA#6|GMt!d?mu29eR* zAm;Os7rmPw?}quC#?)mhlN)84fvpMp$_H3A4|N#tS(qsXB3h=yy?9t{u117NEFt6S zj;Zj?0hCCkx0`fKyZY7V11y*3TTEt?KXn2T zoH#`NMt1zeW`S);x8z3LiuH%b5ciOBui_C5p4KM*HM?z(Raf^- zOL)l>rOm*c??$Nid%K`f+ZssoX4gt4T3k3JZ$ye70hr=j-9IFmY{bx*deF z%nB%pXD7}#k{Cz`g&+LeUA&TfV^ym3KM1UofWaRcu(!%&D9TSY8iF-Y!3x=IMBPzq zmBhLy|GzFI zfv$k$l6ciI;zGsD9zN@TJac2+QzwxCdySCKcYqcfWrd*pSg4#iAm%|`?;sf|GR{h& z(K5N7Y|gl`Z?_z?^sf`LI6wtBlYEs(8Dl_S%6xdg_SA=92P@guEf&MG9_*W2cB!q6 z)WTvDGolVkhgH5yr48IgoeT1w z*efo@s7sEp%5!V9WReWpYN{=EQ1Q8YQn+fCN>~?$mls9oyh02EjVm{Ykt>AoSRHdA zv{KaanO`7S%f>y}+?ZCNPP2g=d1x%sZ}(AxU|9zd4u4GG{2$3 z*e=ClH@w~1LQ~1>ezYRO+a)B%{IakkbxrUy9UaF8wpX3oaT9BO?mjf#_*oJUk57S6)1a*@ZOLS}-5QbpokWGHvx4v6CU@;xY3sDzoK6Px_<&DuzE$Hw09 zp^$RleO3OB9~|l^yxMmx{Cx*-9DW&Gq4H>lETo8poV^jNZ7ZbcP_&YlRHF3_n$^Oh z4G;ni%QeHUf%Y!M?F$52DLmMbuktNmqM!8{(|b4EtA_kGlG}~^=$6C@L>Mp-jmuoF z7M9zA^m|Hut`ioU&2|{l$05aPp5{7kEzzdY5Xq0+?Q#Qm0u)6-V8ABYsE991z^gbgY66_DOV(OcSN2Tw zey8NDdmzc7vD<3ZXS0s>X{(l_cEzHa5)Dt(CKXzvIt^rzsEj^2O7lz5;&j&A6vpbS zrKDNyrz-GgvgTNwQ2_VqjHx5oA`PR0<>xjQ;Ci2DvX^N*S*g{p^S{mq$~!)ao@C5d z3o+}+5Sgg6$!z?nT~C`TV_)PtyXdQxkp=kfb(P3{ZTv55I54%M`?cSYv(^|8BFJ_i zKZPsqYq&Yme{tF@&=ojBM}yXr35htY$V+x2j2Stp&)h>wEpMJp&%TxB6RhR6`@; z=9H3k9tO1Xpd-rXGb`^*v{4K(3-qk9mVvsIRc-i6N1j+<2EPSFt|1zdBZU0M-CSc> z^W}bi@_-4@58jcyR~wm+>Ixn);w#@={w2Sc%E##W)He0+6htW>9N^9zET=6yNNQzi zkVSjTU%#iZ`ZHyy^3khJgRxl@)ow(Tq2HzQSr+5-8KK4+NWlvp4d=v%%4SLudOMe* zoQzy1Zl=q^!E@*%iUZx~yAJL7-S)@gy@NS$EjYeDy(>zFXvgV~Fs3>RWsaqRg4-4< zaO_f0U#&mLZSQJySKK#BOD8_EE~}oUPSF0*p>6r0fm>xuIzJWDhgR@y1gVn@mCBti zfJ{_Nc(p5e${cpiLh>;~S}QlKfL7u_QY@DgGgL<(GJJ~kSqXn(|Mu7I`~Qx^hCDBv zF#u9kcW`)ykTpo-fnmDFoi>7z-ARm%f1vRe0#EuIuX`QuR-TT~j&0OE92ZD9k8(AIZTUv z1p5#Q63V=zmM(t<$LU`}AHpJ99md}qw$#!9mqU+gySP)cIwIIm+gXMtj8CaUIf@|* zE!bX-`ce-GVmtA<=8Jym5w>WzT7qw>@%F5Q&W6h4qzf{C$niTeJP~u#Xp7f;s?Y-jHm!@qoVe4~9k4 zdiDn4W%9j)mc2ev7g|B<#jgWJ4b5ncK5o$ZgyiL)JY4&f9;V_YVLfWM)4i+X$;b3F zAH}h>3o{l(5Uyn(M=a!>2gdXk2Ob${w|Ebob52zS_WM!dxTfh;@ zj(@BZ02j)LIyt(}zt0>zQzZ<{A1F7clt8kXjKLb(%pYiCIqjDap8M6ct_1F%68_Je zcc%59AjjqT8FJG6jIc`#2`rP~`$Jd>$W{?9D?PnRIJtXByc)9@pNR8*i?xx!8-RF( zQbJ?zJEhL77)Z^%);JsfaZ9VU%u4!qAxl0HE5UPZjV7&|JDf{;L4z@T!Y1*zgAt08 zGYlvf3JK;QK5;%A=JnOr>pj-Qgc!w|QA&9L9*f5-n`PrzdriLq*6Eu$eBT&@utnoB z3$PX}0`8ipn-I-9E-)C@ncw@zql}uGN91+Ui{@s`?9z?9x~25oK!!Bpx|stqDUH@x zfO3neHjbHp=LsCY^vUGQG1W;A8-w;?(#K<5rVhIX{ZSJWSt_S>J+@Z^!!u6~t~9o_ zCT7k&h4&=Ru4#Ge*#hJ^v(VESeDY<{5!*3akUYIh+)rqzdHH;Zufr%vm>W5rqI z9``69gZ-u2Bq+~OnJ6R6!)P4(^=9EFxVQ!*1U`t?a{nqvega+8i1A# zQL5HvzNZhoBmR-@r_!rl2|EHM{rMaMXb^v?ry6Du`;<7BwPJIDGC2km>*`oB5$B(F z>hlC*hHeb&zAZF7X<{)6j$Yb+oA|bzc{xA~)j$s@_{8{+6wbcgO>ia#W&e_t!{l=o zMMr^Ey{@TN_D<~9<9|3;O>X@sPPay*B9Yyd>MBenxZEiUb(4&Y7A4Qhu;q-$uWYr5 z=96aGv3f`npqOu=xa;{+G9r$Ak~&Qr$pt%v(%szRqKGNUhG~Q>x6`=V+3|>We%tSQ?W^#5R`3NJoV%*CznxM7#@8jw54o^J+h^!6EO8-08)=uv zd^$_`pQI;%u{>2O01zg-KgQI>)BW@T7jNA)QTaOa^Ps@%2vxo5iBCc$NGB>2vRNvS zZ*5tLymge-ynJP+x^BEBB6cTkMuX=Lru=TXNsj{5w#sXsce1r}n^OiOux)3K7y`FX z3s0_adLtDiOK(1VA2TMXF)=8I({@|jjoKL6SF>}3Nzq2U7P_vSHtH1GlN)R?dJcP- zJUFi6zMr*pr&0fF(FE@gZ=-s9)cLB?oWR50V?Cf(oEaersw@H~ojU-$>ha3)-bk zZrh!q1k_5(jS*Nj6^5<7M^ykEr)@k`HZ%}%+Gdnwrm>ZCnrKs@=tHyX9j_FXAkv>Q zpV*(nNP>9jPN7@0jemyLArc_W@K8qQOd~3Uo2n(k2DpcpVg2rfhK4ubIX;CH--`1} z6bNt3PIigAt+8*10>xIW_tP_*FsGk*{}iI|t#%bu001jn zM}YhqM!vOd>D2sZE?JN;iz*mInHen3EJc0m9s%dhOhUrtLpB(g3I3pu4egZ#m%j>p z&EU`*18qG~25r;>$$=NyxShuO_!762-ZR(Ko&p$>l3YMUr2Q?b5gZr1YCTx}F^>$w z(X{X<9)8(QsUCE>2-;h@iJ3VQPZp2!$|`DaI6Edx(f98DD~(Zo!qE%MdToX+FL3*U zu`2B@cQtkWj)aQlubAtzMJ$8&D#%&GQXX}{=eA2XIz8PSuH#zS_=`@0k(ANKX+N%q ze0J?CPei_)y_e4A3BWJ37>!)5vm0X-POtpY^~eyeAyqxZQL_*t#p!P9&1e2{X4DA;0z*05+}}-dBmHyMs`hVeieiW!A;tPQ z40cuc@bZxevOh~kzSt{=VZ8MTJR3>~IMPFiAWnDv^Bg+hHOAUgM9oS`#ip6Em_-uFUG=j_y=8h%6>^cUOr5MFHoVufCj&1aJSGs zL^UU4nBw(4%_{{dF-Z>`GZ`fe&;*RZp4!)Szx<$~Fdg;2uM@%+JV^o`h*!Yy(jCDW zG2)X6^rl*|M7v$z#1MMWl7~UFdWC}`pi#3Fko8X{O?lhX@pvl0E%a#efA#QpmL6gV zi(&L`f*x&6FCwye2ZkLMxxEsK)m^!N?iu1x|JDG#?NFESn-r-KAk?YG_34a@kKZ32 zpT7%|b%EK`(Dq^}!;iT%aw+mb$i!I|o=`b_iwd~IW;O*J6g+vBZ>NV!pHK{+k|h)M zdO((Wl2Irs$#t^KXxVYO$tz*dXO@tO6nF3+or zIjRls?F2S?@?a)5e5VCr9TfL!;M=s7xc?(W(ovyc!e=iL!TnC00u%U2Lt^2dqZ@Ux zaY>Brw}plDAg#|oMHAq^&4PL1gyG>4k-V*~=HIK1UcTs~@P(3O$g0NM1x)H84qt=$ z2kuWy-=}^c|MN!lyva`aW^dBFS!P=tC#9#46`NJ;$5H?i#Nr>8(eB{8!%5>0#3?fI zG_rYyy9;R`1ch>Nj)g$ih%sD%AQ^e|E&5#5Th@+(C9A9CZ!Ds+ir41MzzocXTZ;I! z%8=nlEl$8UZMz`Vy^H~%xhQZM@P;5d2meNhH=2a}$oJRidM{5>c)LGw7Os&c1nMQP z+42V<)lFoO!tcwf?h%qza#MGNa+PLc#>{u44=l~%YD@+W;Lz{!m^4{ll^JyC-RApQ zZT<%Sp2*_aIs$?Sh*F@+N?VrJx$-I>aHBmW+8m@SB@cbs0x0A4&pYL*9R*lR9vw@N z{W;=0JklOlYBCJFd#kw#>FyeQ`N%qtlnV}XAr$&)skmFCLdT1CV%t(%I$ zC{~%HT)7JSV*IvPqP>$%?$5++Q9pyjU%g4fq!weo>K(4mr6^!x@Y8}(ua=wueUI2eh1r%}}zfD+Oqdh_vPFqtK^r!iT015J@b3u3KQ{yureJVZj5};ih-_bZ4 z+r=v*m9nKZZnwzBoe!XO?)tYNE94G5{7MNPDR%v;a1nUTYM3i8PQ)rhP`uI!Yol3) z9c_h$AeWFk8Y>BQ4`~L>ew!=?dB+tKfGUnJ7PtuLZ!9LEQYTK0j5H)iUV~T3q(h3K zAxAIezF!s7IC>9irW$Nc6+&A^6`DQs4AT<8k$>WRv(-H%-z|_zrI;bX-7NEZk%P95 z#7ncZ1>h|@$%^qySL)|4_h#(y`Y_Zh&WaXzQ3_%m0s}(L{iCCH;2Kc?4*70fBlS1; z(VLkZoV#EgA8zUulHKz>r55tg%|L*W^~ntPrbf)8)3Lxr2-^smzl2bBT2mAd^02g`SQzeF?NitITclnIp(BNCZ+rboF|rhwK)rfHtZhtcgJwStONU2H)$_IqN-OT)j_cSB6|!H}O-vIUr~a7VUy zKZsv{7APfFT<6Pjtcedg?f9BeiNbyh3I{CzCf&TQh+q>2x*4YZ zET^0b9yfbtMTzrRq`|GGydb(x6s-phw(w3%?>Q3a~0Dp3f#r6 z6prD_cu_ezZg*<*XF@VQy{Jf#1(^>PUWqXzT=nh?$mhQI_qd?jkBM{wc7n1;P*z4A zr0K_X?kC_hQzg_Y{QB^zsGX-P&l$^L7BjtAB9v&>FUx5ulm7KC0Gfz<$z>vr+YPqn zd=nX#oyZ%tC>JU?wC@BB?-VP2gN9uXyH-w{I$$UD4?gG%4?Z z)VLBOQAz>Tqbp~;#H!lx39$&SklICZUQC$E*=5#ya)PBZFH8ctYI2&x$RXt7*S5)IXdA$c=}fy^$oF=okc-d>={mU$z=fJlb7LNDGU*;aoTEooAwhK6#3}R6Bi9q zuOJRk7gz#|_^5wXXvE+oJ0|?Uwh&uUfxeVo;I?c2CTxE(kqVYf`=1c2lLLz>lU>^Y zLGQ@gX%BWOXLZmff_FT$&KJ%-M%$H5>x(TUdkt;261qrMCQgG+nXh9_a!x3xt;XnY zf4K{Vl-@wR1xQZKn-vCEI3sT}jBY?Ig7=Ja{M~^~;nFKN!ETs+hF?qrb_#gPFx-3S z8>oCIZo5z4wfWxOPLFmHDaEK%Z)P`t?1HV6W4eg-K1U6|7slBxYx1?yEWjY5sikc%FZmIZ$;AKY^yoMX zj=!xY))Coy^3BErSN#JC#xp>e*~eP7sm#Y7g1-pmJ*83kHFr~wN=f4_WSOdA#4uxy zb>tN^E#WVdm624m7(cul?l5efK3UF{v0uCVjSE1HY7dIQ>k9XD7-=`#ZjhlsZ*}KB z3^mk(S16u(v%|@AWb<`FKOOx*tHdHMkQwWhL$9d)9X%tpF1hs@c_i3uR{`yiuEs<| zV-W8`U=PhQKeC)a#BhtBCGU0uK(j-CuR@NAj5ey+da7b`Z#*Mls^)8meRyHGUBXi8 zRU_;w`UDA222Buw3B9Ux%*{n4^998lk+jvP;1=^jV)e>j><@AHiDI{x_;lTKD+dSY z+wPqe9`p`eG&EVaoMOyovC>uoR8pBK3Ddl&5u^@wZy4E(oOO{L?Z;FX`uy(^ZE?A9-4~ot-KY^P`1@CHG$;DC^7D`;u_RW2B8MNIXp6a9?U0 zbjq0Jq2!`g?nC$mwj2p=O&J8d{CR#;L3Es#*pe-h>UeULbnQ!F9s!I~GH4T|ExhqF z#bIe{7B^Q zh>7M|jY%J}dgy530L1{RI_(Dt=J4)9+h1n4kpXYnYtR-P@3H%j{{5QUe12HbJ-bV)Cf86L)?SCFrfs$NkHVXW&{^ zAEL0S=3(on=*<{x-hIm7e+%j5_ffPW;B??<;E4~2s99n&hY)#HRx192tq3&_5Q8#wzLZRrfcq zIN`bwOPN{R&@eA|*u<0TMr9a4RKZLU;r>e(COU^fHzojBK9k~9HQ0lv^!lnm1O0xy zFdpEv(vmzhrWt_nD4_h~^Y+H1&NVpw%Mp8H+cy0uNwGyne-mSsdO`CRswqzyR9PMwwcN{&70XNZ|MD@61nvLSh}t0_fwS}S+^q* zeXgxYRdpcALy-kLz5p~0NXm|l;d9=+Mt#L7Vaad^U1z??4**iYzgl5_N11deU>UOL z>-92k;KWv*rHehl?snE_AErL;aE`UYx!&?wE$p<@0xc%~L^@P4Dzi`thk@Kf# z5JB>us`_D5VcX`H9hd>|BMZpRr3$ejIYd1^99uQdSsF-NHYh&IlKPPlLY@-p8Ywn{ z{#I(aQh%;OeyzXVu-5!h4rYjXhdNeiVbC*D9nsuS=o3kfLM(3K{EIQeUv+N^D2rkp zaKDpU1w3}AZOwLk;%7`RTgKSTMv2Wydgrjmp&M!(D*cx$Hpn|I41Xn5c4bOPJjZ#F zl+hBZ2)3}&tdH!LqW_~q8Ds)sbNi%EAyxdfO8ooH^c`J6BK+V_!drvnPi#xH z=dqF=qoz>ku^h5&N|HDpqW2wmJyZ#CE;=zRuNT|=dihC?lkJyp$U9s+3*KN+gjsz_ z1`(D#t0(__k z77g~9+4_6^spJ#|0B3{2&{rm@!@lGZ&+cFgTC4ZK(}D6};ZAq3f-3g_ESY2v5(8hZ z{7L0xe!JF61CN7V%_Rrua|;d{&kV+0Aq>;T)c|O10h66(h<~E^(cy$>wvN7ieurPTBcEu z;k6!p%MJvm5vi$cTu(xNIz~u$@Z+xQF#voTq)~WsMTO&040}nf@gStc#kMrofwTm1 zDct!X<_pvD=c1~-aW((To1e`}D`#3j?SHKWYvlDk1-VIYzIMKjO^`cg2~%J}N72;i zm)YdQUPQ9RuUUq#YvFO^l}7MASNO_suU3iUu7`8SFTs7GIn1}cmW!zP3!L8o?v*i{ z_?$DV&Qf5$WR65S!t>_#J=zJ8PC0RO_XuEaQ^7gmPWQyT-mP7&F%EFq5>rkRH{_K+ zwOTPFwLev*4{({VBDjPF!rbA`XC<(3UOpfYDrcebxFRK*;v}#BH3D9NnH6SHtUgfU+qpMhEqK!QN@TNS~% zqW9~Ynf!kp@XrK&F|;UF8dS0jX$()9J}Ph$oe?jv;cs^T#^Pkgxr=x$BJEdB>@Luc zq>mCD+c8IMVdAy@7sZik7@nBo6V;O90TmR}xX^GR3vCI+;L-w2)G0fmMvpK&dq1pY6gbWNop*Cb_~$)~cN8 zb)lS(Sn7{nI7dCxuBU0#? zM;L^%5ti~#RjWd$epx4#MPw|Ej~i-8+@8F-mL^~=ws8X#!3oD&*PbiL(mKeL{pBkF%Jv(`^Xa_KNVoQnZz}d7vwdslX7M)4 z-v63Dir%=-RCRC(d@*FOW~RsB-M!L(^r@>7s?k9;aS8IgH~uCcsea)3%<^-oclw_s z(%?D^?OEeVwmz4D*ngahML8=i4oM~dvWMy-+-I#PG!6efDUw;<#3cRr)J&4vS>dw${T)YQo z66|-tq(VjiKhtKvq^8Ft;Dz2|t}_|ab8|w2o*Aud8BD3t0C>j=`h_9*DUbe#cB1Zv zsodnIdzi3Y{__#ZI}_Oo;-DUK57*I`EQv$uxIm(!Noh0((SOt|L6C4g313SL-~U$y zyxz?siNwaIA+0Az$yg_JW;!6Kjl%~Shz{>NA2}p&mUbu|?vR=?RdIAhg_(t$n=WEy zq3;o_%+FLmn~99oKm3#xhF@;mKzJ0{Px0+~?z5K;`*eUf$u2>VfW$BrzeP zgIa=#qtnk6=seZEc4cGh0B*ZWK*(Dme;>A|1;?^Qv9ce8(~UA?H`)ss%lK?9oP;N> zCLbgu1Pc$&y4RF#zmHYRf{tQtx^WSe4>&V50^iGUQE%0^gKDNF;g0ms9bc1!){aTG z)yeNDp(0!vwX(2RLP36s;;)Yih#b;nx9F|^j$z2F?M<%l7hNkZmmcyL1ae<*IxX0k-W40$IubACr zQ*F=gkqV{_-vhH7^Sf^6KmSgDod5$b;j;h{^5uzpc?+)Msp56bOAi-gvFdxkse@T| zBo=QPpUPY`xW%UB>jM2|7*vp%(iwc1aTV6INZ=j)9URh;?2TgwN_l(Vp7jy%r{N9t zlTcyWw`ka}Bm&Xw;~%4Cp3q+SSJKP#5J-pt;b%I;u2K@2sqdJr(;*v;fsCXZbE;(u zo%A8xb`^&J(knR|k&Kq6W%=i!K}C$*e^$p*hm&_d<9A(<+#5a$|97d)84h#UK>UH?CTQ#_Q9PGMg%Oq*UcX zWg#}|t@zsR)4Iu12sO{X=B>fM1)`fK8q}&uxC(vXn&KKGnmT2Rt%f@z(gxl&BxjW} z)HB7Q6h26G*-%xt++-lCbK1+%LMTZTe_?-8e?mUq zvD=Xf;1d_LdG{V9d1Jnt>tGtp^CoY1C`Q%GhE}pxgY<_>bZqY_DV6nBd5GY$QPTM~ zJZfd}Ip-eNpJ#6hQQ{}J4(SZMb;&IpP2v5;>brQWJ+yTb=sb6a!DqRnwbjkQRO2rx z!m5*e(;#Po>Zo1Z>LldUh!F0gEdQi%bHhI&4)G3Y1Mk+@60Y|mgX^Q$bex9ICxfcT zFMk!GCsospbIuqnF`pjEvW>$pr6%|THCNwP`y=k4io}* zLSp>g4yd!u;5Cxc#d(6MRS!fO*p+x>>2gM-*-$w{H=fPsCLD2XZPnPpeI%63^Q~3{ zi0ny|ZB~S-^ID5T+KXXL`%1xQPGvL0zYi!vF6w5BEa;;H;0&w;GbeO5<*7bgZ8ch1 z^lZr{H^4%DqS^hdwORMJ-f!`Wig< z)EC!qs7Nj6Izg$_;Mvn-23Uu~jp4U;!;O6iMZ=e9OcTk6@SUYItJu~K^z*3%Kg%h= zitqT|Q027;hA!6^t!Wx{!aNQg(6?rWNDfP;Tv!*jYpxx7#Z&$=qV> zFo({u*~ULvg8HWt2fbsp_m%MahWW*e{p(j~$M^y_d7!UY>!AB#({rlS1mZ#k<7Y>1 z6vz{WnGGqDX}6Lb=LWDFaB*8{Syx$b>Fo`CV8i^EE={r%=M!9na;fGIpiKnJj;JA^ zJxhUX;6* zHjE=j=JAa;i;`K+Ri2&$LZ$3d&dwHeAYBg+WQ(8M#5rt4nPRu{ghk(N9^LILg{i@_ z{1ldaZ>eHA=#$(dLLZPX^w2XB5^@DQOJjUY0&1J-Hk*W|d}vAN<|2FJd8`lTfE;S8 zKqzG!SvRI|3E)#(C^os8;;}itzi=)mH-eaAY!f~+%^wcsW@$}@^ zzgJu+rmzpD4sb{bdXp740B}jRlo2q7(@p^oTDy;D4sNGG8H{TKf|=}z>D*|3*4>!g zVKzQ^MP(&U{WFn99ai6T@9xgl5*-7uF&qXaCZr~!Ujta24oDY)XBpRr|8QL5Sj8*! zONfzfN}_!U&FPU6dl>MXoY1jLJ0YPD$v(Fya=xmmj5f!?y7q@0EEuBME(9K{Tr@W@ zZHX)+R8l+~`8zm60-tA%&!{68xYAi1c|qqd2W<%3R<7QVu;Oky{?{43mM7R;%kEVP z6X(+A@gdH6DPLC3LfCALE+c3%_`-!8z8MEXG`q|1+%0?CNVsHNzzFg9DsOpTIVyey z9Uap0qHkcR&EYELAs(FH*mrMDmwdsllG?`G+)WrFqtZjo@#_m}+z|}M1leTc`)G91kWrRs`P?SP3Q;fKF zI>7_mJVhyr4D@YHEIl^#K_T*fnsE&j@QU98=af!7jcl6aEd&%mdcB=athO3e}=}Jo$_$V3OK5`#<+a$=Et#J19z=MBN+BP%tPq#1&HAR2( zgS-EZE)dz^mO;3ZH_VJ0?NA7%cWfgr&jY^X24<6CBQWJNfj+#u?(+j&j-B&h5dWum zq`x;w3f$>1dF@wm!Ano1np}_y!29}t18(jVv({C0L2e2WPbM46&LJmKs$U=-+lX@7 zB50T+1xrZK9WeQ(R<=%&>u3e1F}<6S;Hip!WwZSZ8{*7@5=Y*ibA`y!Xr7Fo7V&U} z+PGuDRJKJp7hz~x2|CZ7AD@!ZP9pd>i}T@*1sQoG3r%msfF)sdhyvOF)tyl)*g0AE z3uqEv{>2IkCRQO@%u(YEA;}p^=@mK<-~72sD*bp()GOV}ra0Qs5&|o{u4E8ZvBN&a zj)^+z(=YcQ67C5>&MMjHt^jPbRtvG$>Q~|1NLsEYYO3btvd%6~S9y63rSSr^|3hht zFCT~K7xug3s&HB^Dv8lb7`Q2cjE3agqja&D-*Jsd; zR#weH2B^Bb$}Qv$m769;qnY3vm?`KM*0vDXpD;_NdHiK8v2AxE@S~T1<8<_iSX_jP z(_rH{5nXDvM}G2(19y#TOTWm;nnB!9FD_kx`OL=5BG|9ekX|nj!Z)K@_I0C942_%} zufCbUmRGWgOb@Tk;RldcGFD<5N@QGPGa#Xs0G--~3fk(l$YA-Y^pSAjMRRQ|zdHN0B&F|oz3+C(m;ua6A z$-E1mOjz+nSz)7M@jK&PibQZ5GDb^2s_g(G-&`o;R2dWP8mEFE(W{bm?4K%Uyu5?1 zV5+J>?X5YAm;lXaf>#4dyf5cRskwBX{yDm|O3Fs1$@HD&x=kBR6XS1pNMD|^vxXkx z?%~RXi0bBe3(V&6uImih5;L#6C5%ozhx6l%S)86ic9`6MYr-h~rk7n>>aOk0dE95u z2kW37+dpTohO=PP5%K!%on4Z)v=ZXMhTTXm-#sH?c~R9!<$52DB{_DJ zMRWE*nbmIML?3!*3BaeL?*da9<H`IOlFRqMFAMxKD%he{!5eEWwu7heMRyKD^MOb|*Oh`kOy@w@BAvuU??`bKPY}f_6^QuC0R zMS3=>i;Tsk0Sas{(I!I&>DepTxrp=#WCKv{g_9l(moH?9a(2f^z<1&@gqmbNDlbVG*Ixuad6+3|m6OLngVIv)~N z!78PYicGb3;-g;QN-*rZitWo}8WVu}_iu~`1~f}d7u#D(|E>bDZOt}WW_>H@5usb7 zT4xL<#m;AEG)$=UAK5)V?*wq(jE#KtY<5O(#1B(xfm&Dwl#5GQr`aY6Ca?VCT$6<_ z^|@0SmVD|Ov0<^WCj0HWy_Z{$sSZ&s=8d(DaT2r>>simqixF@yi9`4%(|-Vv7{dE( zs-d$s_WA2j$s%#MlgOyk)h|--)JZMK41IKxX2eV7qq}ev9leK!e%$F3GXEEQB%<2I zHh6yDPgFnlXs#o-{MPr}5N4+hyR??o!npKv2A4GCvH$e;pVM?mWfEgde@As(;H`L& z`94?{82ab{{7p?{b5Iz;?NR^UG+pcn{`V<_uJOrkFr-SRdqx$i2Spo4O>%OO7VV0) zw(mzQ&A~39GD%J8kEjg36{;K6g&9CVYP=e`zuJ6VYbJjl3I7I1QIR5ZXsf8BPy!^A4)vb5gGdV_}%Q zO4xWSQ&eB<2jco?xs+8<2TL>}XFk0H2Rdc7T1rM^Y6H{FjUIaiw?uJTld;=B(T7X# z$V5JH=1Pc438l^(w5fi^Y`BB(K{~||Xw0W>!SoFWEg6TVyA9VT&$ShtDn9o*&ZA(X znS$wYYa~JFpFE|LU=*{+XW|A@<#w4q-9fbl^0XhqOtlK*U^B$HMITNi&t&j9hl|3PUpOLh>%9qac2{rmc*qdX_ zf*Nfg>*y|KL#f%Au=an1cQ!h0UHE-UtYXn~kX7{7DYCl|^nI-?VykORXLn!ltiZBb zBe-q;1c(B=ZMX#br(+2>|Irc{DFb_AapysEK*Fv!OZY*_A=#(S_UIugzAZ$mgGr?6 z!c=g6!rDC8XX{ue1MDBC^8rtbJ6V^OuwZAt>H6+am|py0_j*7-Ne}PKVE@S1bxAE$ zD(@oEHFfeqgd<1_x0n>TqkSDdouJK5gcN3LzUT~qqNZQFE|1S|H|R@qq0*Hy3f3$t zg>5jceef^0`T5onFPqxH=hRccJfW`b60gJ34H^>WfhHx)KY^Kf-QiH&ySJXwam|FAn7^ z$_kzr7sX}>;np!OINLvn9$NLD+24tKQ^AU|^Rrrt96?0^oV#6k!AwGCMq`Y7T~!is_l zYm>w==f*q(FQ_+AP>A)q$_DlSg++5ggV0Ufj`XyXe$mC7kGG8*nLHlNx3seu0-!5X zgUH(`P#*e-a)e5uF#RZ(N;0}z!-N#3@;unE+lRfVJyz}a^!K!0E*~q7S)evv#S{Sp# zL$!O4LjP1B-CgIbAel75$ADx4BEkLZ1lXD9}8nH_?uoxyXh2`H(K6dM|$p6}_uV#Y$ zblatv!Q_OU40SQv+ClT1`DdmD5NnpSIN@;93Sj}yZe%a}KEuz?AXV)2l8ze$fpnom z&c3t4;|mumoTM4>;nLI2om)kKW`=x)P;576mS8(a(Zsz4JRLz2(#3K#FXZP*Hv~KH zyD_~dC^c4JLe`V+&}i!y{<-fiQPir){28Hspg1`5Rg<^@Ta zxITAn9mSjDg*vPM#};xdE<;DcTcgxlNE>RhEE~05`|MtK{eS-*JXK;=4A-H0~LCG!(1ZZtJDA;y?w<{*o^!48&d zcjj?dOQQymW^Fo6wD^KTc9NY-L{P5BR5+jaz*w3>g{AfTWUu#RrNKTPOpN44HjgE; zrG(h16k+ulx8%s08omi9?D)iG&Xe|?s8$qeIRj9l_K8p71*puYnDnARIdxrEyK@1* z1SNn&53b@u?G^e`c#C4kImvVQI6h7y{L)SW8^pw3<_Iuqw-m8u?q9^Yummt$wPCer zu&lG`w;3`wrRqTwzn_C?#-IM&OqDRvHf=oc+D9 z=|~<{?ESyg|JG}x?vSHb?u5ef!=v35?D0z@^ z&w35A6Fyq3{DYXt4RQz+U$EExR7jplb!`DII(EH+q2*BO1h2TYd>BMYd50CX4O5Axt^KQ^Oa}OW zvT#5pCSjuj`4sm%l99*UAq`QnA<`ByOK0w;Bfvj5cTgxX4`f?J*(E$#PVnZXxU360 zOBEuQ>anQvWNp~g9hQY&K zv-JHS9j!NP0$D|S^Hp850;68US{%Z*ddt0=tKckTA%FX-<_ySmZUr3w&%GzUy;o7g z?SeEN)!Rfm7uUqi$&0zK$z!D){9nwAMEjo{!u><>*tlj2@DGpQOAo-*HP1$m#W-E@ z%yL`g-D2P&=`0hDYZG-XGwWV3^w$_&-z`?=@3Ud_kE))ptVL}X>apSUf{;gehIsk{ zotMu`z%#e;I`plFo>9L`mjY^Fm-G}k2hQ3^s{13`otXQAhws9xj*x;wyrrmXC|R{C zqAA5aAedc^WsfjKDJpH@r!-D-_USKLK+Zcqe%!Cw&>bLp2>DUv(L*0h)S6iS$!yVM zRdM9S2(*z~N{8%Dz-#2uzZu?*Ft?_OJ}~y%ok<7oqi7spQYzu@WH)Rrr1t(`)N@Za zkUrWUeJ}wx@`;tkiR1K`M?5XN)!I_J19@NI#P_@SnM5ZcSa9~^K90(!gMU*0_FPhA z(GyZ#!Qm^G1L}T8N=xE+_O@sY1YJgNSG1F7dfuvF#RoTn{EzNk z;g5w5i6hX$K(pE?JJSX^zLH*}a(*h2V>6DgpuVc;28Fxs|5{^RmgBA$sRMiF%HMx4 z%jXFz6`Am+uZG?ba1#?K`^)ai3~kcxa&E_pqlhHP=1X0p%ql(tispZ=R&y`Hj}&WI z6aX-ET3^~Alt<1C+f+@oe*3j(3l&@BY+~(*S-lM!t;wg zCnDi>YVm!V5s`LNiD-2^5dY$wCn$n9uHxstQwXLH@S54aZFPn`1{NE13DH5~HH977rNP2WlsL_sv%)E1FsKZ88ttcN-t&i62gM(M#})TIbk{KZi}^nv zaPpV!S%VK2hfz1E*AhR{YXVRviSN;Xh!UjoC>fg{&tgnnms0~rod||YL^t7LqX(UJ z(S-2>6Cj@rD@cwel);DeTQXH^B8w^l# znw!M0=R1N07D4!(-?IV9b}P-cA*x1X3Df?XQovMKIMs@h)5Fp|0e6U{paO!;&nJ)Z zpab^xgr9NfWWu1VO~SL|xI#Z>YSuYE^hbp=$mxpTMC`|>xoje6_tyyn)oGho;yaJ$ z{D}x7U2QQeYrTwtSAe5wPxnMX`+A(fQS0WI zXmRX33^-n^s zpL_31g$9Do&HVHO0OVJQ#FU{H6=QEp-dfPk{P{3aTF+WA<@Pr9l5#>y_>X1RrMid& z_kVlF?uRXKgD+Gedkf0-SmG^KBqz>Nzh3=EGY{&j8x0fgpA&nJT0+MHS7)*)x1wF8 zQI%(E(~TXJ5EhG`9KN{4^!{@K;$KhW7gsW5_P&aWh*!0Aveu`HQTzL>Tk!W4i3>IC z0!Pe#_MA>&j>ETk6yD9kRKxW63g#eQVi$@*D3+8uEw^0l@k>3^Sk1E_gxBm}43D#; zffEe}q*SIU3f@!O{^i`i8->Xtu9BLYURfE=X?y#4kT5QW0foq1z;+SA&`_Z$WFr(B)TBou|{|e*I=I6e3;` zR{qN$Pd=6(rKJasr2d{VDpZ$NKmMlkJtEWf{gPiKC7|J?o&8Mp^5TC@k8`RRFquqT z5S^zLBJcFc+_$JvuObwj;kV7xx8AYgfB5qOfks-+MWbW!N1S670NBA)9@s&jp}IA% z36d{#g2n>Kj^1xqc5$R}i3X8mYD7#?=dc@KAsT0pcx%1H3#Z)E<3WGYFYC6*m)Wnf)0 z16%X8jsAY+U#O_UF(=-wIBO)Nmwa*3x&=feQ_jigz5GPWg?H;_ zBl598NdJ38G-?;gZ%|2Wiq)G%8}~xs{mt;LS?{cz(G_DK&cdY#>(V$?+n#C^@CLFb zk=-B9txbE{HwEtdxTPp%f~>g+)9w^1;X@c>?dnqCiol^>#dB$ z1=v+Fp+ZznnlFXXP$P82u&r1{3T7NQI&V?WFc#cXkqnO0-`Z0^SgOC4&5ND-B^xNe zc2?_`AOSHN!;y$vD_!a|)14MpBRr{zAhiJ;6~J@YahBDuYEL23acWGe#@ZmO6x>1D zx57d3E?YjrrLtbtyh|Gr(1Drd8qWqtpqfKL8LC+*x31)d+W|a?2Oq`DfgHCmjWD%er=1HSjyo zjE5Run7T^c-?;>LjA~eOTUZ$AH_dfaK?$Oy1aLhwn3b*jj$Z>(;lwtGK=UJ}VO4cY z{(pm)D%g~uA`1}UC6a#fj?;4nAvk?PdAJqnX>(C2g!-rZ6AM4n66~A@H83gn=Z2xc z9LZ8lLB1XFQc^yoTp;e~Y_DT^Y4FEj&>T^aV!|c88&KeLbl!ulTs}YH$?OPwNyKPY zg8UzrfnNw`*_G_DxA<3YQdSbsV6{Vj(&ROlKY~nQ!u}_MK;DW&Lq@zC)A+PKCyirF@77f!Y8Z2G#iF{7mq)fe&(0Y%o2`SW;|C5k5#7%*{Xn(6tyTic?F_Hm=PB zLEQMule_Ifjdi^#No$^zbilGg@F0d(gB2|pGSn3giiOJHRzhuMzz@ig`}(!|@9o?R zO()y7p)nA+%iTb3en83kuF2>*T4t2fqIsi}%hkQOAHbr4A)(Wvp6JFxN?&}hW_)2f zfG;~24F>yfvOGX(_tLXt1LaPcAs+9?kStf)JYyR1xMX#Eb?;zf?PZ8ZRkoepVfJ}! zm(IGbs{hB%#oZQi{6W^D)eX(XKY-vyNr)6#PD&4ul=+xsYa01EO*(_WyVu1mhPvDK zlg)qLI%Bg}67T0PN(X6hQxGx~UDIkUz@(a;-hm!&Wyz2(#uj_0fo)woM@Ayg|aM6cRWiqw!r zbd4MJ0H*tWX=OR(G-)p)Z@Z;DzESwt6|S0szNcHGAJXLH+9sy~3lBsvV^*&15x@L? zL|^+h+@HXGZ2$j6=iD{dobu*LebfO7u0-4%9ne;Y=b<-Tdcq9xrL!(VQ8C0fo_UhX zX4LI78{&Ie+d=|C-7Qk+D1FZ&c?5 zWi+8+4hhs`c&K|}n-HTPM8P?v{+=vk32?IJmI6H%Gy*Y^gdhL0jW*E`M!2AIX)u3Y zj)>EcVejX33sJvyHG=HTbMSjFZ8*nHF}Iq1v0B$B>L59zS?lH9Zq*lS%&%+ABX-Ox zR8Ghb#`MqMYrWaAJ*%6C^A@BQUV-#GQD;(6gMT`6t1 z-30tvmJbLz8VC8|$UbHgLCcsK%99>$no6W)W@H!--!FuO8DL@#$|$U0K%zk*Tt znlX`~_!$hZK|C6)q4iPO;#9X;?8R3{6W!emrI!PxVl>{laj>mZ-jh?p@!ON_JS29k zDlww_o>9nJ3}m&wugpEs=t;i>vYP5MqB%!%zYuObSlJ;uZC~`K zTQtIDKQF#J$1JFKGB9o?Axw?%W`wY`k|o8+KZ{-LyG&`SIkryDHyPc`{o(#NDp0V* zj8rX}cvAn2l10nyT|txGq1uFo>e5bg- zK`Sx~N(828C)-wWM^a~xd03X_`;230uTqK+C4rlRnW9MU9bgpl;9_9P@!OH}x%XLQ zf+x_f8X`A~U8Hq}2*Kfwo`Y3QOF5n0Q^TJU2O)n>&|lX|QLAs`C>6{xtj)FG8u%@A0W-0B61_6KjiUJfG*#rG!|3q}(Sm9dBK7({-l+R9dB8#RiZyK$%m@mStJ%qehyg?sm#NLOY~smGy>Q@_$yB%}+bP@?UoZV1R7SN# zohn+@C&`*eZ2(ICn{qw;Ybugy$KMXivq2+i60enYeBNd(SX7%u8dyj5em;pnWc1_e zp0lmDOW$V006M!iMXD=s21`FAe4`I*axZI=JTUGn=FzIfeXBI(wOPKIqTx4GkxlN4 z5Ge@Gn0=(o+71hlu928vfUPSAXvVvhOWiHCh~J2!g*{}_qW@)ta~{DvP%Uh%-%|GE z0gOXngFSiN(sG8s3dyEi`N8P!GO_*TFJnou3WC2EV(xpex0VtyqPKHG{l0sRY&o7o2{iVhAKLFnpWbEl2yg^(I5)tuf&ero z^IEem6++ht&B(g48brxVhj(&oY#BWrFeGgl8r0&y%r!jxn0_~!DT1X`VB?}vo4y%D z{>-4E1Z|tZ@4_Zd*a$!cl}?=~pknv1OJCzWNPXu(w{S!Ay0Oxg+4;WKVL7Qv<4a~8 zNrdxvc2jT?p}SVd!LH@M|7q%_ScFz*EZsUYL11k8vjULwrJFzk=CK4G>dKaGNSYB@CTo{2WP6(e!hjsI5n z;);dFVjTbFoBU6V%@HP(U5&x9T)xOJ?Do*Gl}4O@flQSf;qK7ShtF(qlRXZhAZ6+Y zphBRwvuD%*A~^op2HO02z*Chrwj^xHZP_{xI!>nMV}GluX~O6nS`Z)6R)4b?5|fsK zfg8x|*RMIcow(L_T2(Ywa3rRG_UL~av>!HvDD(`7YQp0u?sMUDnaG9>Gfb{w&!KgA%$bKAlf6{#DmdS?VUG|IrrM9sAui-cAG z*d!w_Rsr12oF_Nxi^+HdgzW85_|+O@*c$zEHRw+Osy)m1eta?g^DaRlJZ73!u+c}8 znJS5YOYw|(wW3UM1|7avS?>}+$3Ty8v~Iz%rCG}<%4+GaAe-~6Pg8@|9C>reVP58j zUOn{CvG(gPllzlDFAS<}oVpmMffhE&2Q$dgsh>5%p=W*uCMyn^|Ae8{FO;~^!jvm| zTsmB~Yr*tg!XSRSuI>d?Z`gB8XI+sAh`0J z`pb;qCAGb1&!NkQEmTnMW#mYoqmux041asBO!t0mk*j%81Q#t0XD~>y1KF;CJnBpg z9w$Bg&SMl~r;@UgreT>vsLLdMa;18S1no4AnMpM%f{AaN0@uh&&mKB75zrrk@F15W zhg??=eQ>aH0QTWd9V-HdA>aqM0dN1 zKY`em)1RWWxIbhV;SIZ3#7 z731RoM5}?(C&;5GFUQN^vft623V~nP2!?zM)lrQUqux1@)PJ{4r!a%Lf;?X?3t&;fZ6^NuX*nFA!m;k~ACAi7T_qqei<)(m-R?2k`j{&{Li3Hc z{x9daEGZQuc`VE`ftp3@9g7O=4dFjLj~`f~5~ap?PUH(0jam2PBL9$MkTtVZF>uf3 z4XR3nC2_ZLv;KteUX3rb%w@1yE73Y^sa=G(xX>jfN4)m&6ISY)?46Zy1;Sg^Z&S?i zrbkJ;F}sf&4^-0hv#7dE#CC)&gg~*fD;R z{PWFBen9w~pZG7bDpibwLgd8@Bbt=ivpIc^I^}FtfncThnd4iyehVW63u9J-*xc|O z^+UCL@v8sO7rW+SfLB-I;>R_IB$U}V=~4;t0^@Yd3?QA%-)2fb`NV%C4jYl*TGE5H4JOH}rro$z?o$ZU-LlOXj0K1qc-Z}= z<>eeHc<*O03@wx0lhhc__{Tj-B&_2oeG7Ed`|&;HaYd-B;)znKE^hVe>4C2&REPs7 zR8hlzP!cM^8*CDe7glW+cCKhU@3)QoPMSbS>&VX<5TxU$F`H>Ged5`9a=DoVmGMI_!D3e|+I-R1T$08? z>oCQ$vb@tn2cIi7?;6w{@eXs!Sq;BDQ7`XGWnM`@>IYxO*ciskSAsu}6}7f@C%M31 zjG=GsoceX!{}i0LCLlf6@O_lstEVZJHcW~?#%^SJ@rq9|&f+(Hp^ z6AJF^{_l0hhnmPf?k~MFky?7Z6a;7c5K47-T{~p8c}fZs;u4h3x80w&P3!1iB`O>- ztIfdWUJB--S%V^4b^OV#eFE(0GN;FGZ}>~E0i>#8A~AdsYZ>?#T((31-W0)yJM3C4WT&s?SP9{?2 zFsUM{R|<6+{A*yddUxV|8DgZy!Kgy%$}Z1u?eMg=L4O+xq(Jf-LCdP8IrwxR?Uu2i zgd?^>1oYs`>31Qhf}U8I@yN50cIur|RD$&s;x?&fhEKb6BEQJ0ZN5&iDg0pR#|0q> z7a_+6ln@6iw=~lL?!k|Lw$Qhg)I0u?lI@nz_s*qwm_>Ot*n5MFg$}@rxP&NpWop;Q z)J6w8S^YY<^h^=nIJ>#N!{?q|RwRFMyzsQ^aE=)+&EDTlL2goo>>&g!BQ=w&c!jxG zXzJK=1A|^L;zbkOToN`&4=KO3`~hMF_g+yN1R-xyk8Cditn~>rr&tGLWT7xf>S8g& z1ph^Rr`uP-J`Zj9y-S!B-aKR!4Eo5`-4Z+_M3quebgu`%YW%H#1=Y;@@#jX?V7(3`O!k*&uzufeE#vs`hJgC^5zN8c0psGE1#7VjZh$81 zV3B<~VW$EH<7xSt_*hgwAqv8%aPYL@L6-8<79&z=ev*a?E0;*rtV0gTzWfk>reYQe zIM8ar#S%-YW!en0P*J&tVnrDxU9t?+IoQ_s=4y;*bS9*RBqdXjUmrNVjGb4P_IeBl z$aeaQz{*Lk|3&H*Z#5|aeKf*gEhbr3C3lI8{>eeDWdxQRVpsIEnrg~XVXK68B>Wdm z+n1E9y?@bg4fDkJs6rZ0Ysh`bALVzTqGZgWkE|p@4?ZW8r*IBPz}7eV5xL23k2kR2 z$*-C5V*$fMdMOp|M-&lr8&VgnKHIUs}@Beo!2IjS;X}n!%VN$_lCD zIRZ_<$~(QSTVzu_UUNC4q_g*MXQ!*ug0Sh2yS#veK?NOj#Wzlw(=DMk{l6wgEUiH% zwEcfV?xduOL?KW~f@YJkU^Tnf4E7)&eESA+BZHxqj~+Pea-6=_Y6-blO`bnuae*w< ze0_Dc0N7cZ01YDhtrs_K$&Aq#PG*a6kwk(l7vf_AF^b>z8R6e6OdFZZ zog;Z(gIqF9>w7Y{ST1aCXZP$aUfWvfJp_|k+v5y)NqqL44w^^hI)g@m8Nb{C6!N?O zz#f@6MytvMoB9C(aVW(QW(868Dvh0>@GM!?7OkSinIR~Po#x`Bvzd3!!7UI$jeWYD zyu7VI0WwoqK>t=;J65tI7Id=6u^#eTNZ+6{zPXR{xzG@Q@nLkO*U zxG0@Bp)0i)UT=bGJ(B-jw?EXZ4Iy*aofJvwKzFPVgj)`vj5GoPd8yLY8BAqPJ*(z~ zCuYn=Bw&9v5v2|@F=B3)s}np-S7KRfrD4>FFS(_{3Qf-+sOtaoZUVBLQo2l3xj)*G z9A8(NdsCarE(!I&&E*nC7Tp#`#JRf(qJ9PvIhI4dPfPDNpa5N>2EapQObK?m{hnE6 zufxWpT?NdWKCA`sx+7l_&ytQ_j$<_)q9V}gFAO~FwVUh8qfHS0{Jb%T@F^BbL6oR! z<5`2<#jZqQj|5or;BS?eE}ER$k<!*?08Kfa9o)Ea8p`G%%%!TYXUmQHNR#Tb9J!b!qPPNsd;}ob{?CwgEIWw$jN`b4>8pZ{xN^g@V)q)TcXH#Z zDv5Ctr$6zw;a@Ql`BWxt16jtfKIuR+Qlv>Qv#1&1kdQ{r0uLlk7%#m^N7;9N6!ZO6 zHr?%~W4@x}{Ox}W9<*jY%D9awVyA~;rs&0Ruu6(4!y<}j3m$*lAWfroHgKQt@6(Bj zQm&q_S}RRr2Rj32tOVPZ+Cm(#e6tXq5V9J+2hlDy^y?y8@Sx{FH3b;sCWcMN()oALkQ@png4YGa zmp3N$52)xtw&UU(D(PgHGaW97Up}I{A0Xf{L1`7PNCZ+nC)zWQncHJt^jvA9Q=K*~ z+)fgp{j-lhapwk)gulAfK|fjWO(947!IeYONZqF_~uPapVMUBe4g zHs&d6PEXw`DWx9H$8!HNaV20}^|70cE27LU@^P(P1SK}9I{4k9Z2nk%ztweLN(6lw z?f^dmwjqbv`B6I?S!eSrMX-b7QVk{?3ph_6ruv8J?u{HGb>D#giKpN?8||lO2LTr$ zg?okgvbyY0sRUh3m!B;{u*n2iju7nMu7)KL-p@9$(oHJcbLlf;<^&SG)IsTs9+N24 z>0~3G^rQ5a3k7in6Y$-HoP+krBaL)oDbk@YtBkq)MCgZ5G%cN)?fvDx&}y_`BV%y z7mIc294+Yse!lLzP0=B15t?Q%62?KD`$RiUDg016K7ZkEq$qcQ{2Ce2G>HsC0`hzux`H?kXi$nEg8ezvtyT8Bw2suGJP8TgJ}-jj-2Ku9=i&2rwSv^ApZDX7C%TA-0I^qv>(!9X0w_$$9(fUoVBrz00@ z2qW#@-_*>(_nzvl5|DHM|FfbSZl-niqsQCEfz9EdR_)z8D(GiD!#S+CJ6%=_uM<}& z%8lfoI-m$S?xT5!kGrj@sM1^G1JYci;I(W|xLHJjFij(1b>0=zLrdNZ;ELP!a%;z! zYfxIExz=jivUUOH?}IS9h4$i7Er9}+2oqPe)ZDL08M_o~rV{J7C7h;`DfI+}fnRJ}l6(HgZ<}^-hbGmbJSPL;#@mi+A({g8Wg%z*L7{Upyo7lO@Z4jq;Q2CFxJ4S+yO1 z>q5Y#nL4&HA)yo2R3G?lMk8^Hfe~hqxbH!*aU1@dq7rxY9wEpZY-H`wsB}bfUcr#P z#z!PA2W2Vcj;eTZma6a|zVUF^7D~v~AbywKG~4ZVPfyOJE&&m9;v6J>HLC`i@F80s zkp_Z+kG9spH693sajQ4HIIFQP?&2@9Wx_cIZgm2+qBEjQ>vS1#JY;y{XzZM{YwA4J zbQ9j^_3+Ld!vwTW1V29)p5oz3e4W*7+Bh4geOVN+C~}&pj17m3Bdc8? zhq!SfHXDZ1X>gM~E#xV87lT?}pD3*Xw^L*3KlL12%0?9ia!TAEg5gRDmJ}0egVbOR zB7Aq;BXl+nU?%%adD-LE2|FB0W{(B~ zd&+gJVtamJKn$E!cAkLsvFLR#KscPkHn;mGqHP>ObaFS2Ib+vR7hhm5OepXY<&s+~ z1gIhrZ)2WS5B=E_gHu;{#J7M)n2nDD;YrNCje)t9BGGW|*VK2lORqwRfi&(#S*|gQ z+A%%Y6+Kd`m}!(CQo&jGk~vlJzqZ8q8BdsLA-`;i?;V%Mb+;XbDI~UMwp*^K> zU)bA3#)#)@ziWErGuAejNqer=fU*q1E>^UXB^z)_7xR~~`<6fWLtN|c_WEk7L9usC zJ`S|SgYWde_NrjzieC;%m>kFuGdJV-aVuj@!*}3(#6?Cc&`H5*AXyR25{Me?PT}l1 z``=+`lER_@U}h%G#mMlq1_+lJ($mS`$et7lP_ApM=6bMN(4t@->P@1X&FEoP`RWl$ zg?im>Xhq#YDxNlZBr)~EOLAAG+?5zC*#BoO;h&;W^Ou4X%MXzRae8*JYn8?LXd+tP zF=+5>ryXe^fi{dq?gzH=!to4?g5t?4Y5`8WT}`OQt#?>Bk_chp`tyo=B|-i3Z#O*o zSc^!bn*H-T(h5B=Gv+g^@Lt;nuD$|Whq3Eaq7q#nuOxxDs@?rkkHX`?VGW>UL-o2XOPH=rvBnY@fs2UIIthzD{Zkfs#)4y91a~|z`UaA3M8WD8c zuXnhOwZ8k_f}R)!nuo=&!czsXLPOi;E^C;z`wV@Fwk8IvH6N#gXP0T49QaHazfJ$n z*z?ivXI8$>3;f%F30@BTlo;0bQNc*$@#@zOIxX9j$fXqqvs1_zLWzt{gRO4fP^Nxk zK6jj;9xs<#?w@vI+OpJk`4M4@k_J$Ndx>icMqdxysdHI7om&|ZTP++TYiGyE27ubc z{$HaS0YS54&Knq4ARNC?3+Bly^s;2{Q;w(T;Wfkh6$!e2=J9x|c+%d33&WVNxnSt4 zcrBY?%U+jw5F7ERET}#8jARQ3WQMaT06KG0(e_-^AD&#yZr4fY2z_HyYiCbO40Mxg zqNWI}_=&1Ry9z@kpkTZqtb*=f8Grpb_s4&7s@@&;_G@q+p?VBEIiX*7Lc1(vBet#tfhG8~8>Mx!OAf66*=!fHk6zU&4yuU5I{-!>O|?=R)jU@6S~?0< ztxiKQAgG5)$4Q7pA|JOfWqg}o4GSS5mRI-St1hu|9;##@#2CT~GpTD)RfE6kjIG`f zIQX-TpM^RdhF0c)0P;>#a^CZX_=r)8*LjXRP#9c|@o-M6r`^z!4YJIW?YPsyyKOnR zephq#$=W4KqLhCv=>|_)TCb{Zalhxb0zvovIqyt9l<-VaL&qBr?ctEvXubI_~O9qVLv#yeykt=FJyjaO2RY3gMMUVN0S>c!x&{7Fsxn)|s zr>S7>w|wc+m^cQb{&UQAI zL|lp9P}?8{!GY{q3}3YnCo{}O+!p==f~rgp@4*e#QvHy$*RiIV$B%byBCh?TUFS)p6yj6NQI~$ZEW(}>$L1`)dUtvzWw>wNVQMiM{5A? z6*?OUR&au*HXyUNwq3gB1x1(_j-*^cJw$l2njwPF1VpJCbwZ8>tcDLl&hzhBuz+vM zsVRXw7ca&B5Us0nlR(*LU)H2;SBH$$GZ1g-p)jnIM>7!9Eafagd+wA-?`nWkgcn5A z|6n8w3R?cahBP#C+qwKt2zG zS{LclrmADs(3gQG16*g9grZI%&xQ^L3iuY;zKJ?@8jS71`CTnLm$m~?(Hm+G9qVKt z>tE_LJ=+Ivv}TsVf~*9q0P{KZuU~3T9S;ff;2;UAkCvOXc4jF3uy7D=oqNw72}7Ro)iYS7&e9am zRp?Bu&{!(jcmbvuQPNz1sPMmBcO*C-N~L*h7s!iz%tA+C^`~j@m1?iLAt(|f*z$`GP-tX?Z?!48wOJp(0thl~+Ja7FaEvvgNqJ5)U$+ z&YZ0!+f<7ymm(6}U2evlRUI?T#}zk0agR2>HcU68i@R?B-e8JCFzgK4{!)NVh~LTKF_9dYc=GA3cwvJs2zt zKJ5xSPPd?rzmgc13NHC0Ulf;fu1l{IJNxnc1xixMzViqSDC<|=G+r}X4=#@Ji*I@0ulkP!%V+3I>^H)W3H7r7VNm zoBba13GoU_8w1HZ?e-?2h{pThEy4hDks)Hp4r|ZCC!O|S=jA#!WVu8`jZ8p2x{$>> zAHVRrMVy;|@uVUt_vl!i?h8Mo2%+-13-`4}6c3ha>_LwuR|F8EI!&{|?ww%l@r`CDr+_`G-NAu}VTUvSLD>B~XR^~%7tVNfoS{64C7Nt3=<5IZ zowGf~?@h_AUSITP0VPriAxRT_))w#2R6ZPGgL0k}S43^bJGdO8scdg^hwPtP$zUPW zIUdqu;!SlXIW(_P*C0V}GKpLiib+m$&GMM=h!Zv{GYG+0OFs>y7y@WeXfLP5UDP9r z11hF>ApA*QstL?p0Z4Li`#)GZs?7~4oi*@Ae$xITdo-fTVK7|qZvbdSfkKq{>Tk)xI|IwmX=xSx8(d6Hp~YUdR{wgi?r0DQ`H&TLj+=rcbR-7X zM=>Oy6QEVzjqMAS`d)^I0N8A2!&hfFt?ZNQ`DR6C)8*OuF$>J+fuBz;!Y#IhET3xs z+d?l>IO7sWr4ccK)o7uvv*ab5)R|4}AsEC|D2q!5Q@$o&S==W%CXQ^%pLF;fR0sU< zAWuxP4|(SIGlm^V*_W~z>b-|Q4qC0$cL4uC0KnT70jMa!)@@@&=%v_U@}5OAVK~R+RBB;_HyQ6ErW49k*lDZr#iVoT_#z~k9YU~$bIKL@VF6nlc1mjdObZsgM zzO`skAS7?aUh~$zK~=AP3wUI4~{`#`@27zPB^7u3XID_R=5rzgIlF9VyUO&wv?8?=^2SuF43~Gf03jmAeL;?EL$s&Hu~i;4Vt0iYodGPYx2y!H zq#$pJhu%$Ps3=6Lo6mB}enNh2aj7*qZQA|NQAzM^_PZqaLeP^NNgSg9)`@4J2)GMr zi@BwU`(1pqBgT<_CLCs8?1`9j$|u-x(%_{-Y^)}Ap|o+Y{a3JD)y~nOCCGp`QrFP` zLX?w1*fpH6+0my>mR2EY8O(uaGX(su_t|L%pwx`U-req>1`fnPtZ8Xua? z>V(=tu^&i0sI)%rtWr~J`G!A!dOB@qA9S_T(glOP_HgXQUWc;3kx%xChMDD*N2p38 z>1XBcZ&btveJ-jul};HjT^9D(uBQMi`*=7NF1y*`mYlUmKlKG{pc}z5meJNW;{06; z1_YAz6N1s~iQ~TBBdp=41|T#oXjE(TvWI7wi4nS#^;6mHPNr9ptVLsXiXHw>ps*@v z_7wv$`;R%{;WueTDvI#5R*D~GC?DEQdrjP3;wGw5#IbM-|HI4s@CDy3UwKcLjJT=& zFJ!r$7JWj%$25Vv2b0Qnt4nT>+yPm36Yo6_1!7P8gE>fkn+uqB1AbVHWFTcU(Nzxp zGA^Rk*!P{)BT>sx0KC3}VoGAa(S@W>A6N+Khmq8F@DM)h5`O1-F6&e8wboOD=81mT z+ko_WOWKY^_Ar&QA;wv}0LPE6)76H>+e{S`1~G??Rtr17pO~Q0Q3>I$_W!agnTDgTV z@}<#gncF8D!C?I8Z&Nvg9FM@?JDi7Ki4Fz~>-=TCnJeG*BwD~-nfx-{1mZ&`hv@&(`DU4OwMAm&nv|->PT?d)X8X{K($_Sm(zI0PPw;;AIP%@6T7m9SjhlT zkgp<6Fh?y6plOnhM~m`q*||5{t;uP0?I8C}>EkEC?w5A!-WKR5hl!LeSYFLMlZ|11 zd?1uitc^5!`wz4#99{3o*Sl>0ZBT^(!N;6H{W}N7hXza~{8D1G=>F2G9NOicu(k-( z$+kM|2)BTi60|@?t`Q=Pg6Ak4zZhFx{nND|FeH*bd7pUs|00Csqp9MY%~wxmxE0zW zw)g^_DDQ?r1f$0|zH%G6x$mFel4mxu56>}$&baEugyZq-9KDJ+CIF9YO9zbX|2fWt zY}sUyye)ZNa&YVkW*>_KEloWak~mIOL(2j8v-av{_g`22Y(5!G9+fpdYX zQ6usV%N*iC9#5BYXJ>)P%bhW5q+P1gSp!%4vhKQ+bc-B@g33Su}|UkVRd z8-vIvY#H%lSm{>$Evci9V)8J?WO9Yon_+e&z&jT>Cs>E*1;_fDlC?%rx~b3(6P2UQ zCW}SKrbl5@R{Y@;>6h1w^v_L)26MNV%6mE?gdB)7sh?Q>_7=W(sot~(|6>_GFiPNA zyG%R4PJov-OS=~UL9}^R<+xxc=0}!w9|1AQ%K0yQ>beQ0?gpaT12ZV3+(EGY+OIz{ zUIqA-ISy;kGOcj9kH@5puMJLAuo8ad5FZo2ezt*N^%hg=Q*wtUuPf}#B{6IokCQiE zQo@$bwFtc6(Z~7({3CYRy4H_B4iVBD2!l;}^i}@Ie)+|`TKCC$SM2&Uc3#kv(QP+@ zRfi>)`;{~;aJYRuEP|Qx4ea&IAu(4=wA;47sw5%!S@qM~-_$Eh6^&3)oIvF_s6(ST zO?RUfH~@E|vS`uG#szTa_C|YBvj4mTrljyVv`jWS;%01oXfMU&E{MsR9?w3hza|;} zYH8e^y%5?m>ym%IyTWewjU1+oT~ZGyc=$(A>?qKZnC@@UlhMDLJrgSuHKNl%my7w5=SXmSLo?O>1eCzbXVA+H7hROi)@1Iz+FBAhysv zLHo%!D}c(KZTpuE5F{Xi90F1Iim5MC`JD$7dtQy@Ms7^t5oh@5eA^=)9Y-+Yc3lPk zUu0F|68)&cXR%R5HoEb*ph`NqS`F0wRh%^`l(nySqDti zQ9^a_c(`eiDqR`-&MW`=&2^O+3k3LojW8Y$zfDK*Fw*eLWrVyAWi!T1R&O<+m=ZcW z5R6VoEESvb+zrhy#+Iwp%TEMC3n!p|q4%Yh;Ddh83>UG(8Z5<*uQPoa8aZE9Dk0eL z^qsZpKOXF|_;s8gDI69#?O9L21T6MdT1O_R{UgD#6APBz!npg76{w3I-8`B^_<86M zz&85kWJliM+*R`*BzUoK>Q?TrLc8xWYbY7x(7hh3`Ja=}WssuFA_S-1ueN3Ei@mL$ z!t)lN8#z1MVY*C(xRZKkfCwj#`|K+0c`UoA;Z_N+YPK zX?Z%58aZ^ifX6yLajH|vN_t71C!fH$rY-M0_L+om&uN5Mv1Ve z+my0B2W8yi0~v2yFI+FCU`XJS`C#WZuPUoqF)2=r@RmA|^>hjN<&gXu5mqc7Jd|RS z%!^O_YG&LGxo?lvJobz*lEC_iC!vQ(h~m_hHwE++)K z7!Ikz{gT?S*s?p>_jH)l6$$*f(?u=8bz_fYr5Uq!LsVw3t#!6V2*b7$_Wh(52nL9HT0tc)UXT)- zi!`eHDrcDBwDGWW)DBs9sxzD0ebTEYHZsfSST}oriv>b(os*vjN1Kf;c&oJLFB7Dkp&< z7(4$fIwk6%kMVev><{a*7T1-GjK}H5RC7sK-cu<5@)BGnAFv4Vs1L;W*^|LhZz@dK zvrm|ZkBkiFg#2{W6%4MvD)ljjy~8wg9k;QK3#VE$-z2+?Q35z@rAl>E<2gM`vsqHZ;iy|OJZ>)uZW}Q< zRF=5WwN@@34G?z1!bjqdPPb1pu&Uo{l&}swu|_MQ4GGor(1I&r&o4KCqWa+T0UaJAd^H>d6mI z9NU}`*+khzGrV7tIO0oz2QYQTsR-+f6S6K9RBBR=`!er(lm%b&(>#)R?<9w>ezxc4+^Ba8Y4ZNNwo|dU@&`cqnb~<`H;k%+T^p+TN zJej_p?UE_A?mdp$)^xsLA6T@S@YlhGK493M-6u`<`Utoi;3 z*A#aRoZ+&rhY&S^);{8C*LoB(-v>LW&C7G}N_!K)_Kf4=>4FTnvWAl?vwb72;N zCb;=kIwkw)3>9YfR-v|Uwh35bt$9o#y;-VA+adZlp~iGd#kCA(YGy&ptmN&lDxBwL z#IJ7=^B~f9J@CPVmC2MxGNy-4QVk_>mwW6&$jPaqMDO_)KWL-+3SW2QatptoBC=kBQyq?AgVH}Nk^ZcwsuPgGwj^hlzOF+ z?Yi#o!3Wlinggbgl8AdZLhX5xCaoE+zS`}7y%&p}S z+b%Nmhs6p0CLOglS_HLUf0%zI@*O&dTmRN#n%T!vfW&CBbQ;p~!CSuXJ8yntrft?? zHIeXQ2zyolPSX#IOVBq!ar`{1f#eAICH#123aRRS@2p8Os*p+5L|R;%RnLmRr;|k{ zNbSO67&1S%YBy#IHg2596*EK9*@`G{DrL-==Tghinq&5!tr%0mcJ^2<1Fx0aE^YcR z=zpmEajWliE9;QaUIjN1I|%s5V&T@+8EEn-hkuZ80hXVaW(Sc+Fl=Y3wRvpvgO{f3 zX+NTVjtkXD$1PP?PRM4ZCt$E-7B^+_fh)!6WrdMWo)B#P4`S)2vYhDWC|1N)jG9C7 z>M)_wePycDL)UYGfSOo%HcdI%tL6?csRsjUqiHy|*RZ8+PT?-h#oHtHbpp+%JRW0j z*~Fmit5ZU4mneB!na8z-v_BI|5((EoSok>510(AuWX3T+*c+hOS0V;+ku`udKhI|7i8F=M2Ur=kP ztKwDPKJt&bBKCmT6gOgm3Hca8C}aI52lLse>se;0imX03m9F9E+{P{-t5**iP-MLEPM*tTCh#uf}5K zj{4|3$D+I<;Rc2 zke~%xnv-+FPtp6OwD8DKAB~M`H4ESbriC`gjd9!$p59yOUo9$8TzgWBxQt2nD&svm zt0OjZum*F9PITsHw7^xTWeZ688qn|$Uw?)sXn>N=e+D~ZhAunC)hd^t6!$%d1r>^; zxdIN?20F<$odU*sgBfbGSU7??3^&~ONRki(k)s-i$ z(UUzt`|4vI97FLHJKEbc7dw&&m`prifRDtw(N8`Mb>O{L=8b%+xwILqMU9I@!mN1K z7(egFz7t-We1%NN70&Z23dlYF{;l&7`2P+!5>a05nf} zVnoN8e;~h@_I8f9)_`SG2TT;i#g| zia$Tv183JM0g|1fCa;MTLX7yYXVwi<_M_i8ts)m0hzPBakP75RNfFl2nxnMUkzY6SLcNc( zy-K)sF@2ZUXbtBpbt_zRpxaGd$h|V&jH+eZoH|Ni?-9n5o);*21}hHb_E#gStuusi z|HfF4Pe>q{YlsSyo7HUDq!C6!B33vPF+*U(Q{TsIuXYg7NSp=@7*+0>qMxBN06@?F z!bU?VSPzLR+30UGDo$&fWF8EZP9fjMmcS8gAt+7Nxs4o<-VB`=nd?DR8aGQYttRj> zxdL6ib#7?ttoxs6@%egjFSr#+Q$W#yTpuR}(dDCrY(hLgBD7Djmf&t5;t@m6#)P@E6%n^1*WE03*$iYe9p z2~?`F<`ZwdOjnmat6*@WtD6$ktWBVVo6_^!cT1}HIz8w#Sn18%Vse}DfAD1!c~rEH z^5t9)BZNdoo@NDlr3#%%@@TDByMF`znLSU{QE-!L*}g8kOu+>C_NUy6YVfw}iA$w9 z+%i#!OUMOX(9t_U&wN$=@*F#5e;TO<9p~>0IBYWJXGZ=EKUSN1j9!jylZrn*sx&_@vdWsw6f19l()I{I>&JMa29@YA0BRqtO3lmo9dfa@qgd z7jlpN*X;?7pu39e*syBab;0Mn<&G18<*;CMuD=#>w%DlD#f1c`H3OA;rKgcYw*YFR zCg26i;CQ=?|6I-bYLd+^tHP3C>k=m1oMQEt!!(lCZtxO^G^wQwSe52 z5P|E{#T)dSe8uIK@gy_76Yt;n=#+Oeo)h%e?2CmOM7r=0bhsv9d@s35FeKxG)Aqy! z%hjTfx~LZ(q_30rG{ycH%h~`8`@ai!I;491nV_92eR#zy|Lp~wXw@}M=Th356cBA+ zToGs%{xkenmN0k0jMn$=eR!nX!ENZ*Tb_wJ9-y7w@ua-(gufwmGGv9ry**gXaQpAzyvee?S8pvHZd=B^Osgv$h;wTH4 zShc@l!a+FTDUCG+uHPPLXK4euiOswi+#7R*Q*=Bx%+4}@Xq`;`4{-6n61zw~JiafT zX``r?gzMS)@6xw$)Ilkuk<{>k&^pu0w{+!HZRC4>X5*Gm;%&Zij_s8? zD^!)fs|n-q4o7eDE9O>{#aYAR1n54mj0>w1>0qAC2_ON z$5SGWlW(VrR@ANq^8{x>$5DO2-~>RCkURb8Rq(+Ns*7-I@3eWEWAH6k34K6II=+jg zczs2t>#RlAeQq>j$<4J&E_(p_lHey{g5!a9H?QZh$3<;6w0Y_``ViQdhePf7EM?rh z$e&M=;`@efi~MY&_jNHb`>wJ3DTS5^g$&JHf}S`B)|Zq(j9y%Txk5~6=wFir^nehP zIL~?#C_j_T( zh9Q6vRqJn3@z;#n0eXKw1+SqyxX84qo?D7R$0~(w8+m3?P`zRa=+pHOv-J&|rZ`$_ zh;uQzboIc<;n}70L0Bi~)FfNWx_V@FZTV#MDgwH`oHn+1nayQEO8-w-^n_82(+V}ZGN64MX5RV^#W-+cxki3K1srZ26&K^ zQHW_B0j5ezHY8~P1~2K{rH9JYX2jfvtr^4>P_6pEj*-LvVHC03kQ9IZzK-)j(=txI zubrFqYdKU*6H6IX+CTgP*t5=u3UW^jJRF9}`H!i|sqp#vEE;;xDfd_^d2k{y%bEvp zJ>4dRk+Iw(#z$mMIB+^Be>C;RMli=!Zt{1WwtBxQPux)%1>iN)Rn6B{=P^Nk7yFy% zAA{Sxs&yeGCa%&x{vVbtZUWvo=$txRR}_VKb5EUs1@@ z16f@WhLga*=4NP&)YkilLq&pMPvcxGsL?#?T^(JC&jfxI-ahweqTEKor6Wj9EJGLI zzrItbQmHdX`H$ghX9nX(13Z0pT}q)31Yj@h-_$!{E^Ss`vtnBm!XXk^+PX2y#Gm zw>!9tV}4a*flCGB^}w3w{Kyb1d%JKF*0uNi)5BdJN#PKv4QFk0wPs|HUcvhS3@M2i zd`D?3z3f3@xW$b z*`j#wZu?Bh5(f>aWfh2aAun0FUHBKaM_xI9s|Lxv0mKoo`Pd3;6~IqM?uqXH^V6tI zKwg0+NA?g)cK%H=h#W*?6ssNDk;Pw@@@E- zu1bBpP(kla%M+$5&1qnqAi_Cl{vDgSQ3LmG^K~(2+N7HHq(`;gSG6}yVB&@Xp_Yw% zRCK~cAgj%f_7Q|g;R2y&1^Z{ZPFUf87?=xZn8FBvGAc^j-{dl*foc;8xuNEouO!7R z5NyJ2WzUbxxbn*3AsspS+&Rhr@z~<{qXj=gmDBvOaIQyPm+RH|n+C?cq>?)}Yv0C|VkMt#TUvL7e{gg|U2 zg;761Y8<_f4!^_rL}?Z6+8Ab*t?Sv}_D-yxl`N}pUkTWzQ@kh#=a$uc@DNh6i%D3R zxbIJXN~|;BM@Ua&hBq+zHc0K=@8dn}yGE5v8ZrzC5(}dCC=V5OelUV2LzwK!jP?W( zcjV2PDm8VhrFbCKvk-u__eaKTV_MZCN&l!B+;VEA}8RBUJViHlVPb@|@Zl=0w~X7@u>KP|gm!SeYwwYcY*SNrhvUTcMG)^BrKAlZ<`7l8hCUa^^M#83-o4MD$1^n?io zCmJB7lg~bk9=HfHus*PqddVpz@l2K;vh0C5eSt5TWD7AvJK@LB;UWXYOrRt^5{f#y z%~{QvYX)!fCzj0Q9w(kVI7)ZpPG!4J-Si+(Q!*!%-<_V&hEXfJUBl-!a>Gv$b0Z`~ zm^_K;-oXYF(?3{i-JI_*uqVcB)Zb+)AmRVpsxKjZW!*I@%|c>N&0t<2~J z<@t7kN7-?JAQOMcP8^t#HXRKc2_(b6-!;O=`w0VkC#_dD3Zz8A|IM&+tY1|+{`;E9 zN-hBkM4u|JQYh*dhlzxt9XZPaJgC|5U|!)9L{YG?`fJrY1v%V#L_~N9mL5;Nji<{e zohic_NN{iwZQ?w|;g?7DC}?t1oXJ67tIC|XpZ4^X4VC#xYmtokr$@r~p2i;>T|?@3 zaPR=ZcUh}*`1O}=bskz>G}N>eE=Izl%^nZA8|`>la^|0iW(uFk*COerzpo08A_Pbu zam4v4M#9Em1jNL5LGFHI7bZdA&{!}xEvC_p^dy|IiECGT%W!n&k&52#BK1+ImEL#6a;VvKD&*GHnK$&hW@wG2>*r3zKI!Nz_cy=;6G!o z*q|6>5)_>tYJ?`F+&G?E5M{yhTgineJzE?D`oyPEsvGiTy6|BXcXDj?1E7Bza^q7G z@_y6|@lmI9r~`s>{Jm~IK_U~n@%k~q1_L?YQdTjm`_jMm(&4a>@%Z^x&aX%!XWB=N zfR-x_aFUbL;C3M)&29CzO&?BqZl#d2p7|ng1?3mp2^R{=YI@qR&(EW|jbBD*zw6rt zOk?C0>egpeh!)I(tmIe3U*~&)mD&yUND@s@NEPJg7*6I94=(HG9Z}TERnx_S{KDQg*qb!6W?eSh`R%fCX2hQ-(Fpm<6GS*4GmE!5_7@Uzf1%De z%s^}CHG=v+0LLJKAP%fmuT$Lfk+Z0nkk;i7vG@(a5O`RyB-0J^Yeo+<9+VVH`*s{= z!DPB2*yw^=Ee@NPtmJwcqGOVR^1+yXW!kZj&OK($(YwCRhnJ-<5o0v6`V*VO*p0jh zCLKR5aQVQJk^{ff5C*)P-QSX_sRn|_|Mrwjk>R9xDmL|BR)37EJ2?gVtX67Qb=fwo znd8*3_|H$;1On-S@xCQHO(fw{+NTzOY)3gCTGsVPgL8Avf ztR4yNIgBm5t@vdglSvokc7PZP612ihi%&)OoT<5zwyuOWoM_Dst)u~$CUz%mhdEbF z^%!Nz4hG7+OJwY<(3Fm;0VZBk;-M84+Fy4@AUh-hu1G{J0Pwj^t?z9ubht}0*0`U4B-mMDHs!_UcHa3Q=rw2{U7YrSOOcs4XoXNl zz+BMypvDVxLa6~{j)gZD*0!e`fLJZZuj)-(XTUJi9cM-VBQ5B>m9Y2xRy55UPf0V3 zWuGF$3+1<1SZU^|a6lS1saWlE*EoMBR{86o4xYo#T)1gc$sgs0Sp?3P8q_?cqsgXN z#e?0^I*^bx52O9abn<6pX_H7rjuwLI%$~?ru$leQU&BcVXH@N5yMC(M9X3+SEd3-^ zG8WHS022vOk;WY=Lh5(KwVNRIUmCbjUkz>I@Wm#6?NU_W_^*tb%;S#WA9IKUDx67) zRx97fKOI1$4n+jI1cl;!PG?b#Ee^q=l7@c)M;fI5_fC)&!1z8be`58z#V^caAn6aE zn-6(oZ|-nf%t1O?visKMR0DW0UDhbgNN-j*O_zqPP^Aro^79o6o(Jd+!;Dw|bv*LC z`Vif{7p}2c1pRL_9-nH`vg8H*bbNQLu7LLP_9B=6%ID#eFmassQv&>oIdGR z>a7uOc*N_QR8yKD{s4P%w43hF6O1P@_7cA{+38NU*`2MZ9?484ZEJjyyT>?pjg<3L zy|Gbboe5;int;_*9W0Y4#~1EW0(<_mgRnY#5>Bc>gdNDFH6R7v(FU+16kq0}Ft^-O zR-Hm@682UQ-t$gsUatUd@a|UTQvouWyabSIjrZau*Pfx5gdKh>}C3D%akh*0dozIRzTx6d?H6 z&)re&I-NbKoupVGQB(}^)_1gDK-43X{}E$0(d8MkRziAohvL9HPT=AS+2#H%BnQ&^aVrm~%RY zHI#g!q&>S8+_r0`EOc?41kv7M^-kkw+8nPpJQ1=CStItI$~&gW@fqN!Vd>o#=`9)^ znX3lnk*62N#D%OZ#KN^3#y}M=Uxp04h6BD90(t~u|MKF9er9pD>R^(adDS z>2t2(M7>op=saLzvuH+N@9mDjVI6Dp`Vj^l$D4bSK(YwPD*@5ceM+MfM;>b=;7_8O zTWacP)SWH7)fUT_O2KIdQoym2L1^l6vcc=h8I2?n>Jb$M4tTtzm&^NO%Ic8JT&xF5 zC$qQ;0n9bLg{9+>;s9A|6|j(9quOEzdzCSKr(!KnBP<5&O#c4bpxz`>toR)q551}k)+XjE;u|(juT`I!%PmHoYmrmoWnxeK)m3;JzR@}<*%IE~x5U|BGK77J?QfG7 zSuKpc1wU0LRi)7hXN+Pn37?j*NIH0Y`U82$W8zCrX|0s8eazuZ8SXsYI!h z%HrUR$s6xQ>eZEZ|J8ieA=AifEe+6)#7Qc@M#}!GM>&mDkIDpRDN>*Yj~J!E{7c|- z@E3P&kP7sQ>n%~?3*93D`h&(EI5m_xpn}zQz}*2n4gknX;T1Z%>hkvDu({6IBZ*w} zI@JfF`B|NUC4k-L>drZD;rcS|#5|#u%*O9Hu0^WlK}N$I}~Sl$c;7qZkZ2z`aSV$O=i{DX|l1f>d(tlPb0 zX@3K=-HAciNcapv*o?t_iHOf`Z8zReG0{(_a?0ZB=`5Fcs%DCzhRTTANmU%=yLj+o zu7E_ISRCn>xbEWT&?%Y0y}NNjQ$gP-+#czephE^S4!@H(MFS@2&YC$PWwiNb7aWf7 zpwHdnGC|DB#n|qD(h+~6!kC6V?k0RFPUePv{%unDI=CMi$v&KCJ!Ku~)%r=(x-+Oy zG=&f1i-2criI{K&5aWNx&rJKCB(?eY6(||-j$u2;K~;Kb1=Jk}vaJR%y#UC_ROPl% z-Bg7b-wnvFTI~Kg?-q|@e*iTT4A###Xs;)aaQ+67BqPeu=&Wa9kvV^9fH zF$;d3U5j-;rx51^L#S=X?PydsL15DeKokO@6uG~uwjwFlR^}Q2dc}PsYKsEKkc66} zHq=qQU80K}SC^3BN{iB3`s_>mq!2Sr*pJC>!v+meHT^c6+g9F*N0&)F@FjLrKk~#7 zt1<{1Dv35(IUe9@ILyAIUu_Y7Gw2)TW)W--u2ebqTT;`VllPD9K~6&9O~;cdszqn- z^BXWA|Gfk~`xb}?Md4Lj?_PIp!u+uZ&`p;zZf5Jn!dR`i6s{b?)Db+}Ne${^;aAq~cez zsG9z{O+Ntk4@iFF9W5 z%E(3-yer<=nclZ5d%NP!ixM{)wHQ>?um1?BsyMnlKRk}PRe1;Cn zr>G?f1-4nd1MFgE6P{1IdTO9jT>fT2xLAgAJvy(^K!u?2@DVrc&V3HL2e;>!38us7 zr%R&+D5#Pc%m<#z>~svnN|s2?;7iB4)am#ZVe0pRGZlUZA&q-iXJXGP!;x8g%QC~8 zVyOFNP*@g@i%aln+TdD7xC$<(cbael{srW^D8dRL1-kv(*HdPsgExdZHU%C(P|qVq+PEmMRr z)A*4T!N}j2spjNze08ijT5D3zotRjB8pQ+Q4WXJG9)sj2&%RPDLQ9Z1i6x7^&d8R7jP&{ zcZP!rY!K`@D1elvTdMEk&7^o;K%wTPQQa@56613)>7ey}x*q|7 zp?&ckA9k+J>XLsGPPz~lKAx%Bb2Qv&E^ARm_7*+BDsew&6KvqVarjL`JZNStp)3oZ z=Stzgwo;ryhuD{C_JZsP>N%?^EhHJmrL4&Ms*!`XEy9G9Jj$Z^;;4%oiOH2MWB_(N z;FqjZ(@9oPN_(Uz9VD!8cbLLc3nJ{;W>#nf$U;hl1Fs7P&F}h&W>!=a?_>Aiu9?La zrDVhtbpe<^xUe}S^NVLVOD=v`)~IoT;*>38T2ThUY%4jCmVnKTmAd4TY%KR*`gjA} z{3ecg&DZ^;#BZBt1G`k7r{9=GjPnQ0(Vj8+31uj+|2)cDIgXRVVIav;*{^eLUc>}w z(Q7bzJ@>UP+j7>tO2^^vQ?ccV4tRN+*)2`%fz$LF9MKyx=*b zuhWMz*qOfiN~VDpLf7;LUb~(JDV)gS#pSc@R5i(-Ew%)AX^7goNf-#xA4N&69O@B` zmgfEOh(DxxE?<6v2U@o>$m_G~2~fyD0sPMqKDEt;7E0(yQ^IaSh|ZS;K>pUrn@rJS zo@pEds3I^Mvxm6i_CvHIW$975LbhPyUrLgTX!lUd$+E~v3iD;F7g4LJq zR+BreE!%bCG$J#TYKR{YdOJkMiDDM zZV)GbQ?Itb#zcGWVD!z(>{i=RO>akT>@ur;7F`<^Ta7^?e3t)XtWak$y*DSC&y_LaVUywsF&1Gh9WVr9h|Gw@}Th1DNSY zcORyoDDdcU77rAcNtQXEjmU7`m~HcP?9(dpUJa`>Z+)2Ax=dWwbz8(@`KJ&Zz!xuBEZ= zk|{P_o8s6Rj`d2H@#Um&a}LcRHlpkR2r>ZcWk14mO<*)-N@@h$rlbY(UX0V@AkssBk7; zcV*bX=i4ngq!}CrTQJ_klZ>TdY8|fgS4wC4fcyz7$nV+G<|7@yNjgDn6&~iPsEiHw z$N%{!mhMA}NZgErU5_Spl|K0Cre6iGdLmY^Nf_UPsCrx(c!}k#x=BZqnk_Ca8~*e% zYs3w>P1t$SS!y#u+QUc7;5+Y+|kpKk4^Dj8% z-W9pSXPnbc0e#!|;ALJy4%7ctxFUUq(%+G$0}EMFe)l>YR>* zAS>z>zjFh`?HZRWj*sEK8;D@3rx8o-zY6L4mH%0?B!TQWoM11qU1dHZv+os99(W zrL!&5YYSYL?MP5yApUQA^x+eWkoEhJ*^c!PISgHJNW+D#(D~3J0?TRtl|X@+2%4>C zOfncDv-LSy$smbTxwBV0Hhy{2CzC5^1WrRf;rh=ge{XyaeFuAR*O`bkImsHUJp&iU zJddk>VDFKAG&x&ouN8cqLW0Zzh0FH0C1k$ zasg*cj5prE26FCN4Frwxss+`p%Vl)Jr%w`~CXLtisip$hdl2Ps4bK1pGn%B;Fc{8v z=vh6}GX?(EaZQWPdHAaJw(Q?nW3a5Z%gd;-umBg7YTz-|;QxMp_RF~-j;sf8wnKJE zdRIVH?%%ww+o%8(@Z)Xj365Jc3+cL_)cZ+=x#o#_4Jo0V*d*-~?fkF+6)zNKFRT_R zAi{I;aZ6RgN3M0r1E3|$xsVb;TsIsjTG#mp&k#=7-akU2!JZWedKI`JJe0y~NMC@8;hJ!p99S3Zet^1>(HG1z&o;EW9uZYpS1o<&A z-yhg~ySw1~AmPLMp6HY>O>Z;v2wMzS0BGkqeR%eefcl{pZz_M94d`by)%iinX-?JO4kQ%DlYK7(PH6*B;O z`srYtLNsvOW0xK1^m<4D0X9s@KCSfq9+80PoH#5^87=^2EP8|GkYme}i1}pv)a66@ ztCQ@_ZZ4`siwxqr&F9@)RgkPKNDN%l@GgRvv%RdY!}DOU^yHk{g(#c)b3qC&_m89T zcADlK9TqQY)T4-<1A)`>7r(iGF(;XMNYx25**N8*n{itrwYD^P21Krvm<8(#!5d=1 zCv{8}U_s}lD^^5Z!-tWV-$@H=Q$r(Pd$BLZA7gX%=R7x7!re;W#~YrjAYMdY^daao zo)}R`M!R(rPK|tj#hXu9bTo8q*C>C&on%2OPN*ZZ7z;1y?MwzHgWZC}r-Yhit{FF0 zw8TjK%A#FpDHJv2dyEOqr^QiNA&~&WKbfxDg9o<#=s*pxuxFN)jS#^7UrpWbjK(0g zYT)Gm6Xo#z_1jwv1Lliu^7P0wZ~KWXUB&r&ppn%X&P5ocMz{_vT0$r(0G%Ih4yvA4^2l}VP_I0e2h6b#)v$Rh2Md` z%?@vr$^*ZLqI9i`sG196zNqX^P3L_PPl5cBSM<=SY`O8+(_?kDiPWdCUMUFg2IdeG zwieB`XTCaY9bGa^kHs`g>?l^?l9*{kNMqT#(Yx=6ZdbOkiGn`v@q;dkhg!C8sWmtR zc}r;A0DkxB+0W2Tz=3AZV4U&*Pxt_uwon{!Di5Dnyaf>AWmb^}`pc+ob*^a|R!O~b z`LirQ)0C#FdElml8GkBUp?aS)Q$j5e$F5z=;8W=P4pi&dt8W6^$4r4m{f?Ko} zrYkauWIG`>hiW?cZj6wexl%me>VZKl&2BqqW#H5Hc1?1GvtsZLLZ}TyF7tG2L02Fg z&kp@Ig4&;J15VNikYajGfzyP|0eLa@c6DlX3Sj^iL6=CNvten97}msnn4KtgKaBA6 z^ti7-H>lOa7)dj@=)e~S$7F#A#&lVO0c@R%BalU2fys|4 zRXS-rAr~>&61{m+4tX1*CNOrlc~pfWT<^}rie!N@%82kj#Qhclb*|w?+)H+mz{-k1 z2Yy_ZssSFFaXy_y7YA%a#Ia9kIEA{1`OzsqsBB!*N@|chdDz1!6PcngJfEt4^&2gt zh^I?pID!G-ru*QI;q{a3>b`g$ON-Zp7Q;&+07GrC{2QhRj2d*n$!eraj+Eo-k z0gXLUiY^sQDjs3<(Smu4^Ce3FIVa5TIq68`(t8UU8(hj8afDdx6VNt^<}7ksE5^%p zWyf<<<@hYR5~3wKi(|>n2f1wpl@S7Oew7wj5Ix1MqyYav0KjLigDX{+Y1T=TGtDv7 zRLCqb`$rI*UiTOm;QPL=Zith_`P}i&Y_~D%deyRsa`W1$xq@Jg@dl6^(O|tqx-yc> zf5%rdPX%O;?MwBaz_ zt1#R>^iFX<{d*`=`m>N*d_4WC&+C4dHh^#o5FJyJWDDFehy+|_J#IzwQxv4BYarSf z-l0wR6ruEgo-K8yzU#08%8%=fz(H9eRxnGOZqs7|EjW$uNlW{n(o+s}?IfL}rgM;= z>0XkR0f@sPHchnI5|l6gfrzoVKK8*2=?p^L5e=Sg+Fjw5CmPd3>KJM2EWWz zKBw)Ifm$w5VVJ%no1Eq8W)9;QU#b(;ZYf=6Hbt2~u}4`^yNJ&Z{OscQLpA8fyi>`@ z*>R=}6Es9_M2jPjlU23*ze+K3#OqUZCf2y&WFo`IY{Ff*Yc?srEb9Ko$+qmET1qV| zy;FCKOl7UD&!hRJVo_rb;=tNwXX09a+fs_mKtI)Hld; z9aCb;t~n)*LR$|EEm>cb2;G2vWcX>mz3H81+a1Mh^E{e+LAn=L*iyx^FnRQu!3b+n zENJy{UN}E=gkaeQx{occ25MXlClk%!QeGh&A6lTSDBhX;Tn{~(cf56J z3ezGIZIW85$!-r(Q2d6aWNT7J*u}u|Y18kO0{W%Sfq@zsV%lS8cOXmzd#+&T~Wk*Uni953WD&u(7A^13h)HuDlAY z#ff(|9fj5wL-lQ{bvPn}VC~9=vYsl2AZZma`SncFp$?`j2DWpn>-VOO5^9TWuvHH4 zI^``>yB2ntGb`eMfjqp75e?$^KqHUJ)p#n}4SRb(YkLipTY%{fT)pLll_%W8qd&F( zG)~K5eiO)3iXgq+LG`?P%@nSjV<5)S#BZ)+shPP?qdBZGBfoxT>~A8V>ci-`05rMH zVyo#k+N~IM4O`ymm6`Q>UsWp83k51&u%An6&7dh;IL!{JFb^Z_A*49P{N`myaPyrA zRLj8i5#lrzk_Bu-|Cw~N7+SwBr|M=&Jb8EEoa{5}CJhJ!ql{7Y6UvaAAOGL#i5l`r zUur*y5Z0uPvv1RLC5!vxEQBES9?AOl&-(Hi|06}EX5sF9Tu@75PRBwc&LvEKNoBM` z+hE=GwLLr2RXoqkd(PjTf>d7oaQH}-xluR9Y6&A8HW&jgHu|-b=GCUcZsTNH(7#aW zzUnbmQrzpVQH|g&907P1%Gz-r^>RBxI92ggYy{)|6o>}C^xV~R- zZ%2Ej<~vMmP6Bo{EEug++Q5cW5-Qpk1p=-{6bjLjvr1@$_=Vk^FnZ(^4}E~00ZXlK zcd$t$vFo$W)Myxfqd%_AzcKnRF?A98$cwcuBC0i3+q!`qn1uR8-l3;QQ^6sA((Dm) zyA%?Tn^s@TD3viZn()UZtZiOYySDCDD})>}4Gn`or^9yB>S`~DZnZXw za)R4|a31O|M?yCfm({Lf7?EJ$1^pJmKW_Qg8cs7tEgh*=|(a^{379Gp9mpiLSGF?xNpTr4uM3IInkzD zUj)&=-c@YQt?W<*8uBB3`;W!k_iMjelw0%QO|(s3-2#}ps*SrlU_ijX>N()`*;UPa zOd^~%e~yiCQe~5cL~0~B@e#ydN|7qQ8;__AHGSWEK6dp8Z6r7)+q}h^^pKr0Q{=ce z^L50;HV{9jtQ=3>V4$8>>Lo-)Bk#op9jNkT?;@le{Knv$ql0D06LEz76ds(_4jZPBN#9!ejZPpAr zWNos1EQtgHB@wvUERl=qhKGefY4(sdK=d3opF26S)fbsu1^UH#tXz&oeqp8lz2T3N zONF)hf-HWF6nN>-1CrOJw7_Ha!7{FhQ>X!&vh5?7sRk)J_ThvW@$ z4ff_%*T&e5Eoh<+b1kY8YU>f(GlVN{LyX=){ zy267$)B%4Q<}vyMw6Wq9HZx9gSZ*5N6o4z<;6Ea2%eBx_q#p<_X$VqkB>UXAAn78`&40RV}!|t2D!U{SIk_4*ZfNuR^IbL z8;#Bv2~}MeJ^t#yQK(2&%v^wZe4j#)`ySn|+79nX2s9X(dAQg)Z%YL8f>HqF_)AL< zA18(cc0w)k`G0QJD55Zf$sPL4vDyk$1(z(vx5rfE3l4rVmN4!#?G75Pgb0zlCj(zNS=-)v9>UDPa(dqrF=C z2Qh?o_M`qfG%(IChbu^9k9tW+dW4VO*70zV2V^T02=G%CM&8?WLL)mq@HX=lSj3JE zXLvb}6t;@rP<+Q3r8{JNIIFv24fvGd_=(Atnpx78mz>PAP@FQ;)%(;{Fv@PYh{Da4-2WKflT-;=>?4JthOz5r8`*BT9EYJ8TJvh*^4HfD zU@!*6@2+X~J;;gE;jWA=Tk)3cS*<7{uI`4H?D~wCW;rk7o48Lwb5S{vR2x5NdoIQ^ z{^O9%%Q)hY(|HA+74kKc{PUFGM1d+C%#!WEi8?E!R4R&MJQz||k0R6#x7n#B(5&>_ zgm7wgyY}28qcuRj(eg3oBQoIy-#7( zX*;*GR$siMa~a3|3YU(G4;avBXpDwGlG(+m(OZuCSACMV1#J?)W3$>-fEVaWA}Zb{ z*KM+B42Rxq2&)}bTZvAJU~tkl3gyn#20nTZ5vsVp2pNMVKg&c35VQ8@SB1DR!xHcK z$+1tiC`BR{k$VrBN%#?cR3@mGsV}($%R=k~hrzjVj=``22T22csR5Qt@4ev8H#pw3 z=rIzpxnFzn4AMz?(INKlK(KZQb}D(@vP9JdSCbhWC#l}RXKhmo!b5O?KQwX&GaRrA z`yc%J_98&}CViodee|V^={!Ok@bpCpQ6+E75Jm)zv~bChQ0C2lDhwH;vv!r_%+>G(nh` zLn%~069o;u(-T>>p{0ZN&aCg*dzHTMu`eMm;Ke7Xk$+67qhvZ(-lxS_4&<_1QD4jV z@gk&4L^Fde3>vrc%{Z1alIrwf44J0?O9~;($;WX9Ai7a{fzj`p^+8^(j-@j?kgp(V4lUbQ$;zmRbAnGg8#t?4FApx#WsG3PIhP zOu{0Jsq;HOhmW;02hCsuw@xOLq)5pH2v?2jD`sZV4%49=@#o+^nkHyoR{HR?@0!nj%%G36662oE`d zHHGXghD+)RXP*1}nNb5oVFG>XTV-+TdKmii(>4s>^tHa&;I5@I0`+>B8#f9QuSCZwYXEdACE79;Xsbwo`JVrpDbM zE{TA$&q1Z|wJUK2SwH?V_oxA6>*lUH`q$@WXy5*1=s~`PJ;~BU4rwLr2&lQi^06%cbPDR4x#*VG7}`AV3iDL7l)A%COHT)Cd}1X7_=Re zvXJ;3x6~K?FYguo{>!su*|UM|{G_NQs@{hRzvs1)?&subho;A!mM*1Z<)l8pYIh#I z0$@I#u@$ve*0MocIOXjCd*Ke=Q7{38FJecR0vrLsQy7OPL(b(J*t9=gUr%hfn*QQu zV{Y}35L+3&Rr7{uH(~qcIWeZ+wFrRn2xrUBCJ3ShvJbic^aO8Y_$djP7Fj{6)}!s` zv+tOGW#|V8EMrH`g;+Do1RZriuYWcb&#yc|vNoP>*uDldnp+qyT47e#nV2a$bHHbD z^}g#`I6mf53XY@o|E>rkV=i#B7NGfQFK#poub4c%&Jo@LDI^xgbi@|B6@{#mRu3zJ zJQeIx=;V?>F`_XKg$et4)D){c{({cBGjdHi4oNj!6!|&H>dG)#My;?jmdHW6&&jFv zL4OR#ym9h28?_H%`Jj6{`CgoOw_Kj|6cOyYxL>7s>iZ+sl3O8N)~9y~ah68{uuf?-7_M^j=G{*6hM zC~zRNC_yh}(ImeF?)R!ItKb+qEPXp5I8=z?YUKEihWnwS_xF8g?q8uf%C#Q!C!rS{ z0{bQ?!O(>z@fcNk~U8Kcfa|m{T$swZW_5&Lq--q&-32aEkoRX7=9iHNC>!GUs zxq2?37O+#zW=wORi+w?a)H}By8o#Xt$y4kDF-e&%*(UpZ5|j!K7Lu%k6be){MrAa5 z=CVlvjzF5i{2!Ve`-^kaUeP_#3M5jP%Bt{-u`@(f*<)6EXNbQBU6=KGQ9%dr|h zEJg1|UDp_%U-L^yNavpHX@{OdfOZYhZhv6cLPogpY%E=FRr(l5?R@jcu}h*fjsn&B z(z3?3f87p&_EE<6&cTeZHZf4&Yn-ew&&jWmb-6%q`SsR*qB&>yhOF!}_ehuiK^8bf z%*e5s2R6${=mD?_JN_nmT)Dj}yWJ~4+t?GkNd071+`Rok=AGj_4NMwmSqc9x#YvWg;KT$OKv{bTMcaTyB%MEKEw5~EM zK3P`BBj6oj5qYy}nsFt7EW4a-dCS$c0xY8lQn|xk>+gygb{#)Pf8GfH(4E5^|5qK? z1g{aV96J@2S7MQJ~9{;3U16owfH0%Zy}rc9-FqmX5AfU5VK0CU%j9>_02p^rnr+kjh)E)= zMHEUAxaim&fRh4aTEsHt6AxUV{wDl@;kJlJzJ!<^-LAnJW+Su380;g=wS*&7*|F?6 z({-+j38Yn#OGbw%`9fd=&)9>xsZ`yXBMPCb-TXrS?u@yw%yWoL#SHDH^@G23!JN=_q=DwJ3$_t3H#l#D4l7cQcdq#*&$#%UG2D5d63{s|eI ztoMdlLp$+aPj+NhRo^_NF1Ly~ zM%C)PUIprNA6xAU)V4k!OV-ia=VP4wqfq0JdvkIS(7EBtM*T*Kg-;Cp@(IvVxn+*A z=YcBn=yCxD1V_o)ML*&Yu$KXaoxh%!OnuF&DHL@z3)WAW>q%Mgg_7EHXWXYgBF69C zYan;n)jAAgA`j%DX14i__C>Uc$rC*iuz)O#EwGxU{#&44m8Hes)Y@%N$Bq>YahUqo z2@_6h2jK2WLW_J$dr5MNmz;Yl^xB%#eR?E^X%FF|b(*Gq&;VCZd!^z|n%7+#)ta0T zmy8mzT;Y7Mw0U1!cpb{zJLVk+TR+r5>9c=wMJOpzF|yF567ZcKr)(ok@m|PWO@{Z7SAM^X1%7%jl}gmW(^XY`jlXC!8&RXUuyVu(xr-Q} zVd_Bw$O$q|rv!7$q4B>Dc)UE3k^7rNCL5C2A%5&TmpZ`3n;&odGNBd~#|@)vBhFo1 z$AQ1BHtXU=ee*`6)9z(%XU!dx+q9_d--`;ChIB{H7OK)wTh(|PkWgMA^DFPANBH94}x^dciafB(r+;td0(wQb_gkOf$RQP__6s-MR zf=i@Q&3aoVQ`hX~PHF1He9{u3ce#oN04LIP^TsPP7IzkkDCobsnDw^g#6#xE*gOpJ z)uC~^Mi{;jtlznk{nPJ%FO~vBM&{d53%f{&gXhMb&hzkr-VY%3*VW9&#LioXFA$M$ z5ic$lvakL@3!O$JKcTKG9<)3(cPj-h%EMXG&JzcKN_}_4hWm;x%ei2o8zd59VJUra zrD#I2nHu+l+(|Jjig)A-Q4L!$+UBBsTJ=eNy^hR!6rfKwVo&E*xnacTBRIjs#gyPo z@bJu`!d9&f2gY8Bn9ih5wee(+znsJjQ2k!HT{22@D=^njV|tZj8pGW7Glzk1#q5Vt zRb{;N*!A!gaWS|WF=-ZBgC}OAGEflNE!qpA5{d^6@G!I&5!j4VEyO`NvOi=g3nq&r zfrY?817WhM!P`x^3IrHXSok(uw8CVBafbXeOt6>%pA?alEYp|7^!j>+D8_E@QZgBd}$UbMjyMf=`&;Q+f-Dwo`l9S zkrq3_eNwu_d*}HCV=3?ge#MfCnZJpHGM8JAGQvPDH$L zz)e`Abrx7FLK@oDN;lDgXHp|GM4F z=Ev}&*zzh5e!aHZ_lTFTU8Hi!n|*foWZ4|ufq;v|_ME>9drVd%V7KYnq=amB*3gx* z#=YiO*>p}IBCmRp1azk@?ceI9L%soZ(vkOlXzK;X{b^d62CUUV1I3=uvV{W1lE?+P z$kmYoB1){%OyLFQ!GhYD)R$6iAeAT#S56=J$z>}Fhg0sjNAZIg&n&Z>RxIi7D+lP?cEAB#_3l+cN|1 zP9eET8_#04o0-Wx_vv55&{yD#o|N-pLki`e)N>D79e89({c@v0m^2R@oH|%A;PuQqlPOiU zs9@jWw3xjeOGYTE0hIq%)|(hz6+@t@LdUMGob(Y@N#puj2^{7sDQ|O=f-K7rxDpty zXso*bonsJ79-W}ybIYPvq5Nf6BmxS)HCLlT1L5&e+O@bst*8#ukGR~!sV%#A6u)wW zg=+o_{_c(?o(xZ|>TSl9m0j{`9*`GQSRd-M`QrVlb+w*hEJ>snSk+E?MWF$<=eC)5tq8{0`d}+4COW;J?ehOAeNsgLNq)jmcb{+}LV!LJm{vClQ zAw$2Y_13(%p~s3NQUG^JLhj1yclI1dB@&fIgj=ZDwGClql=S17JRDT%JuBQ2@itH&)-k?DcOlyK!+0kXY!!Z5uaO__XSnT-{iWfY8Bgo-@cRx%moi@iNKw z&BD$_jt&>X_+)o()@@Z=VUwE-tOQ*@mNwvXl=Qc<#Jq`obJrzFWU-(gs}f&k4~cdmPzKY-Zvu97`PW3+0*Xo7L1DY?PS zw>QVtlgG0Ed{(%cwYjQZ^4@niJK#Fdnm_8*){~Zc{AL~VpW}D4~fVZ6e>tuM`v!9t1GY5RjGmUii6_=7>e7nv*&;#75!JMHAn?vn*w#QnZE}yMVLzpu*>W$(3n5EEn?H}EDVmTUjV%Ei5&Tc$c$DZZDl2F3oT5A*QJ=7qX1d*%S zpW*K<&<~-d$cU3OkOzNu_EC+9mEb5C*5Twf52;(_`NPjkXk&x98ooSTF8<-_%ny=? zEw`Z=oUK;D3_QVM(#eQ!5`~8^<5+j7X00;kQk)>??v?OSBcSF7B{G+04*dAycB$(F zuakSVNDQruD1$^<=UlMGMoL56Ii5UzMc+SJ5FCW$eaCTcYoFXvW%pLbn50xbe^N7U z;hw!r7;NbEAD4)lv^bjK2c!R}9xQd`HuRS+(c;pwA{?I@}l<+GVW2qf)8QufKvd7z;Q^2A(hbC4V~lH}-|$R%`~d zLm5@d=-B3etAY4dJYT`mkO7R6*6qVIDVn#YFDa7!tSf0S&-mJMGs?rD>t;~MeXm&L z0deZF6u+nCJ?w$owmfe!f5dw4b}-UN;q-mNJAWt1nr55r{m9uT>-XzRbuQqC^Ug$M z%9iTD1XZL&ASRcEIzLsEYHbQptHSXMR$BJGobLf#n7gun{yhmJou{rJJF4JOc>M9* zP^x2368zsII+)yHgcC46+DOViFe#u6!md36ilX^(`XBF^?m&kL6BWp27yZKWs8SCT zw`Ja8YfS`L8LQu8 zL+r0=aHbQ5o!`yAVUkURL}_2nDu^A|E9gGKugXe=edRF^bd`12M1?3bNW(cU5y4KN zf4@(w3or^YO*&oTHH70D(Yi0fA~$jKdvlz_vm%myN;~9%Ju*}5_-GR~dVfC*riM0V z<|vVFSSWAyhX)lydjS#|Wl!a)LFr&r%vZtL-mFiPJ$;=cnZyZA?u3b>_2MtUrP>i0 z8j}n}fNBrl0&YtFyj5l*U98_Pp`hDz7e>T^bO4~(O4TtYEgLE_Gyz}I=8L4E_(A4% zDpxJmoQC_09m>j?l#2CAVcY_M43K50hj42oz}a1_)1@82@X&R_RX(Y-iKdZe<$KPx z2++(!Et*aE0u+8wycE}4~{fp1HcC5k(7ovK_{Ir%E2M#?q5Se_Y#4_0~TkE6vOy9oqtLnb8Ro z(OcYvL~9bUIFc+bX-I`Z^(lgfuvBuwgX3FIQ`jp4xI`RYd_TsL3k9b~9s{OJEuo}L z7Tpi(D#vBxtej3xv-b+LM@GowdGLTVP0F_~JNLSC^DY`$20pKUKX%?nzeW^amK%u5 z4QgZ;o9Cvj7zjZoV857nB_0QpIBlKpbSfr&a!F?tfFIqN0GnKf^hBdk4m`7A{2-{} z&2kUBqC@#NoG!yG$o@D{@;23-HZ_p zkZsGAJ6~MvEfu*o2bqm>xjf)(rmK%HdP7(h%c7$uLEJ^v43i?CI%DB>+$U8M8+?!o z4e5bZXgZ3&PO4;8dbXEsG=)kZO;04&OH0Q8M5Wp@?}XK(aP%80isLlZdFMnCHtits z@pmbZrOe#i2lOeXnAmt=n5kP&Kh<7xpYE)@2qRa9p}!-IG&!nXM3L2_Ske_BUuh@E9WI^!GLwEhGTsKxr?V|5dW7hnRK0yF!FbXZp{o&;ifZu-J}+!Xr~8JBlj zM12#sL=hN_g23I~2BZg)u^$d*Uv+oI0g=d?lXKfzNy8IZ-EKy)uvpZp8%uPzXBCrE z3=*=%4*LqdIAt}0_*bp7m;1<9OJ-kDL)f%gKZ0WfSv&L`IihNeepb`GxX3UCr^!jW zQb5eV{Cre7z1mzD@0Lkpl<>>?Pi87N7lvY?b@%A2c`hYG4G7C&0rCy&j?uP{z_RR` zX+(JbA=1fIfo8({$!^wqkxFJ?7VExZyF=wx+5|wSca;azmt2hFo0Pwm0#m06iYrXV zN5)k&DOVF}m6)G>uYM^j)VMqG{nSS=AvL&kz|pzPXPEo23O z+}2{W^x0m4*sJ;i7dP7?OJ;p76MSL7g5G=;1h01oQ`JceFESQ1FHJh)O!?n@8PgGn zEZF_o7xsS4)%mvAH*-K$uNPX8=W0H!K+4M3N!^wfuEp@4A2Bs%DWl!oAhbW4XTZ$1 zw3w1sLFgbx5UFCZ6CG}`_$>3-AzjpA%7SxbCo{q+H-1^?;btXcfK}{y=ZA^TrS#!4 zh8%TG>=eT1iHXRb(Agyjrmjw-avhNPT_RD-Na7-o!O_{;B9P&F$})25#I7iK(|;Z1 zC!YOyUrH@A7&l@Y@?Y}6Se(N-O>fFnt(Z7!^^oMT<{1T(!)wMj28ga)L9P z@l@h!vq#AV@RZU1b7ynGB+x?rozX3fc?aiTcM@k1(qb+LC6Z%U%Itv#OpxG2FqZ1Avcm&mc(my@RRleXM12!Z^Zpi-ZB%Ri6^b@6@VCi} zKr{6T0cu*ombsZ$v%9UyDO(o{`H}578p6z<4-Y?yf?D-_jsMNd&XX~g1;9e#KJILc2a8;n%BTBpY4fve41>WtscIkUa3kmVrlljI&IIDtP z2Z6gMcG{!%S>Mo%cKT326{r2X9@M{D+yuYIvnpH}kYiL$+@rITQ4OGI_0M~__K$d{ z(F*#VXtwzHCw9BO`tbw9y$8sVK6umK9$mMtOs^ZJjQx8F$@WGyP6}+|t+SI_(g(Kg z03%sQ8ki>tP*jXZ=kNM2i`kARVA6?#Es; zLD^bk2;)=cW$ZT|zwmlDn}rk0Ur5aA_UcjkRo+i2R(*!!P`j(>UPn{O4MM`B^{Hul z<2s+g+v8@1{w?v1k^M7k#{Ee2eRt%H30C1S2015HPeob&3;{RNdd5`$^wW^2R;88a z{Q%?@ZN>{>h?8D3ItTDBQ$$D<8H)c7kn@CmK$Cim4CX&$aZm zeqk7w$}X6~oFcg3s?fk}Yuq!z`Py`SKF%XW@u3C~f> z79K~CS1S_sEt;XDilYOUvMqDslR7;bUY$EIk=9p}!q*#alhuH<3w$UPy&<~fE56(=ylYXhx$jMyD}uL69$9wFo>4NbH^5{ zSLd>*htLL<)J{|%?u#U4*x+xX6z~bv<-!?%oO`)!Nc=K5Aoei$hftMQR?D6;ZqkV1 z#s%&fA$WaAqbPQYA_#X|Dv9u9UHJ;OAO%OqM4!(0H9}JzY=$@aD9`c+Y<1iG*~qPK z(+HU`T6omfZ?~cLeAwiLmnjC0(fQOiJ4hqva}CrRMuE)ia zMBKkycIyER&C$aB7sX=0J9ueZ?L^y7xh=s% zE_w}k+e?5%lr7x2-yAt)(oq6f3fX)f?w@XRspbGubxeN*EpnUF<%N z&+yq|gx<=IBp)NnpOI3K0Yr5EV@nJ6Z7^UNYLN#caa}vq$Yj*cc;#-N zVWF2j+P?8OrT+BB05ztdchE0A!EwC^S!cD}P)ZdWDbg+kOmgGH}+uUbU_nWT< zPKJpQ#MVDqWKupgv~E|((aAz>{2YM?wbn*HVP=wAd$X-=f66dL1jPdKD4m$UkPkG6vh_{$LovPV!k z{as>WPq`U#PEyh1ca?Z-LQgmL1ult?gsG9L?%F2L`lY3i+#26cMtsqPf=S%)h7tay zS(2BRG9WHz_euG;Zxw1vsd-$f3T1f z?y@$is`yUSCdY^J;95XXY6#=#uSWdzSAJ0tXb~$j8!CuG15(oT2Jr*(l2O2kI+%&# z{5;@Bc}$ z#naVF6Plp1l<*E`b)to;6I6PYY4%CFs=WzRiU(7jp>cyGc%8jSepd*`pq_oT_Q&T& zexTqE)KAR4tkJ14oZVKTOnNX47eRXbtr2N^oSl&(w| zc@@&&Ny2rQ9={3!l;us+eQU}id}Hyk#5xL$KYZ>9$7ar?U!nh)ap}qZV*FgFU;>u_ zLS)o~QtcS3H3@Q*X&Y<{x0?HhPyJwk79nrJ79Z?t!znec}EDhCKZmr?f_#$lzCDKrPMu>nZnjcjc z-#1b4?5a?G^^rrbLDiMUfEJO>Xc_zvzaN$K%rqmme7QfNIsYq6NxqU)ihPP)^O*O( zQ;6IvRMqhq8e{VXtGe(nc!0MwT%D1zM^DFUpC8&1$a|fa{3iD)-0_!3gEJrghfiQR zu_5`d3eR+v!l+jeaLTTfkB+P``DtzlPU@@NxH^CEhYb|H@9tz1t8(4Hu&w#OCRD=j z3U|RJAk$?IldaAFY5}`uaE7#91s)R^90T11y*dG}QpM4aWF^j*LuJPhVj-H>H37)} z>CJ&|rHQRM|0c3$8~-;hp&X(iAnPX745-t8WmEKPTb;7=F}!U)l0U0lFz zZ9XkL+%!4Ip18e8w*Bh7*JXP7BZ0=hIaoBNZ z9tTp&W>j9$0^|7)+<0s)bi$`tgW{>qNg+AUKfc-W@)Jq5Y3(U3)OxGOqGr27pbhIN z{`w($P*h2U){SJkmy}EB6nzRU0`j{7iz#3ca;ZTxMhx1nao`TKA+F{#BUz--S-^>M zud?cMI_J4$qqs>8s!=^KT|ypb#YxECYaRqKZnW^4IpLQh)Z_@O+*T7{fMPa+jbeFK z-s29%Hn^uzaSo*mtV@R3!(G_NYoce+=&5eiLsTE)vUWU6)B6hbaPD%6g<;9v>|v;O^O?=<~jXX1r_WXu|^a463cuCOZ>zs z6vU&QmuXZXFSlawH8p>{TY7d+Q(ZQusHtEelN*`+%urOTRe(n;Mn5JfI3FqfMJ*sx z@Rz=iEAxu!1A%-n1;^P&mffNZFf>qE5Mv%JGuKjO0G#eLYfiWpRVp!ss#-a4;Q-pd zAL2LbhmXc3yxjoJ{|B3di z#xOx(Tl{(-6gU0$Zwb{BR`X@vXGtiK^Bw14e`~dA296L@QraES^ZPesIx%0e|9*1N z95P^yFO2wfysf8F2-Uz=0GNIp#M87)GwmqPJTgME?&r&%{*C`>?H5>!~;xi4*^WhniKY)3&%0-A9Bc3R& zMqg*nHMvF-Rh&p+3c%|!Dl97Yi}HCGYZ$jpXPU9F+mo+nl5lVRc)R9jljBMf#@vEq zhuGP{%vxFd5ogd(L&P`8hG{FYW9TMobQyoHPKt#Tl7|hcC6#6Vk6z$K4~sl|R-M)7 z;Alt3K}Phis{raV4LeRLMqTdVd3juvYq0}Lfh_U3 zh#6))In{4IvU z6Y0OI)|kG^ye^|&%#u6}$ohKF*9>R@xZTM|s%vEdL?aX`?Re;p{8_Tmo( zWp$EJ5?u5h@=}g6l;=6!)0tV{_DRae@1_Ru)E$>|i0j~ZS`=xS`Ij-tlMlOKajpI$w+%%#_S z4z);d&mR>HOYsr*-92!eocaYIV0e2fPP`W;f`okf#5C;1OpA;P#6x5oD=pq-$aGE1 znZl1{g1bdX`qEuZaB(f(K?dL!-Pszflout9Cs`l~KGkU=C+5UMwBYU5SiGUn`*l2` z32zSqp9oudSJ@M+A~ubVC?0|PigeB&X{w8w$3!-^o9|s+-)KzGgfolcM?+12*)HMa z`4%Qn%)PO6cv<^5L38_Zyei&EPtwFQ?{LFiUlib>Bw}a~dG4#89N>=wp+_D&Zu2^- zr9Qpoge=EXLUwZYjw=92>~&376V*K>E}*VzN#3?p?8Vm(aWF+L){DxI+~_~`o2AVO zqN`$ZE|Ddbix$-AvVv^%PJ@&N$>4v(yKjv4rW94=ZbIJd%EfozZB`T*uD*w6tC?yn zi>!TK*66-V((X|Mj4xu4X8NIz))7)f=#ZR9G zy79E+w~!6x+I0-r-SL$h0=`8O4Bn}gc;<-rhfTU=Tsrh;vz&`Yt`wG}5nT9r9v(U? zIRrJu0*Tp^|5zLbr6j#IZW=Rh*VJfzx#=kGs~p2yd>3*EByV#C*p1y$_&%Fq@D+|^ zzjL8u!#zOo&Mk}5q2MeG6@M55+y)QF&jElfxxa0=oXI7QP57jlgVn^6q#E_y0z<#P9`{E|F-PU~rMKx<6Wnm)-;@hxwxuRw5 zs*64-HE^i`^Na-rSwtO7jb@?rb7`ajC?7PAq+Nhfo(!C%`lRiRTz zqzbg554UQ;>G(_(zDt9_9W}r&Upo?XVJ_%)$N5Wn3hl12-*3kitsah(5yjM`N!yDt z%91v<=>%(ny@_7K?dc5M)WmU19rDYnH1@EW`Cd6fABI+yJC2{uYB{U`bb=MKALK>Z zYO^Vqv{mgMHrlXa8Xgvv?qpj)t&dFGf1i09h0CuWYniTNGf?3)lvlI(r@XjjACS!~ z&}X-A(nz$1 zA)g{1e?VOb$0eFc^Ph+Siw^^G@LcGqh>FuyLV?RePUh~|J=`$B&KYAb4!p*2p1N-0 z4N!i0n-6Ap7{ZanW&aDVwrC}AFIq0tE>-5QPwOx+UisDzBP!xdTembSq(W+r%f`kZ zCo>|U(a9~=FOM;m1U|iB&Rz;5ZUD@d?{ar3qLG)G?*}}Il8&wWu8f^cdfChtt+rXJ zDo%qcv#2hHjcvDDgv0Z7R~Mu1C{8$H^>)M=Q5BS9gU-9e+iodU4^V6;-v?EJVlVR( zvpIec%xn(?(^7Gt;f6r$p)FLtLy$v5-sAFtOR5@cAh&dlIE_b+^PuM-mU5G;W@XYJ zqe`ThD1vVfzdW|KbyQY+ywxO3@nwjw25FPi(xGi&*{#KpRH0teJ2r`vtu1RiPijkmorI)Nn~<8&9OgycRi#o zSTC65?!R_1$E+bK|MpR+orvo-O*OLFCMDY;=Vw130kVtqyKDiPu=yzxT|cK54|^M15j9w1L0|(w*Dz<)W^xGcfL$3`7_FA z8z2p2smhWUe#23YCx26j&z0u=;-IUspS_h8&QeNoYtX6u8kU)22o8<%-L#7k4Zzu> zM;f-^rsX>WroMNvhFrfhV4kWbAu7P$8kc4v6=MKV^p>X&L{brOhBq?4)Dw#aW_Qd7 zkmvBwNh)u){+!#y+I31AAxwB!lEkZ1)QeY^*!a`*i!_j)ke{e4X#fI1{lDG`bgoq# zAsuaQ6#eAB-ZjM%s0Hp}uGkn{)x8PPgMC2TLcn>Q!kdS& zQ_)!VENnkkQqQK~V^oWOJ*?_ZBD%J5U9|b}gN@`mCeMoKY`553w zDul62VCpX4f`?a%HhDTW2`KrbPnre)F6yu3*)ui2u(~#pb`|xNm5Vb%(?mPZ$)Ep0 z04Sr8m^gm&v3?f@?VyT^8pe_*!)Z=l@ilSh^W*!H-JN*z=@vNR^Tf=N8Mt6BL}YcqDVcjRyM0 zz)J#=z;cw@UG3^)53&37sD~@5cQ$pdut)fuQNLn!AhoSs8Xkp|mna4S@gW4-0A2@2aLR`G-lKYSO(zm=?$b7|d>^ve`h4)e`BppB#8 z&qI;C>_j^&KHH>1c*Ywtu987FgBzMOxecCc*gj%B$AKIUwy5LP5eW2B6-Z0P7lKiF z97b^20b*?qX@%*!XAmTqF>u2ytkzwzEs;dmM}zT$sc$oot71)&X|R znjEt_C%ClUb$=jq=qO;jjj)lhh|c$F zfPsT*&<6l-G?RW-+wb9>O4HbsrZx6}jrdN}${4IOyA_yUi?BGoj#WekD zhCeusa}iWkY3sK7d8$;0&5?&Z;k8&=lluqZyVeMj+atoW-AnoDwDyZ@= z*4tyY%gKc1IE`O+0=TE>Xmay&TD=;IZ=9j;gi6Au{|yADQGGhr`dXBnyr4^VKw~|f zv64=^a=GfA8dyXx@Acy5z%Sm&T+WR2odag$ExtBm1ToAtOd;G!sSq&SVJQ6~CZg3B zKd&Yh@+aS|2hEI$9cO4}EluY9=G1AGp5Xws|Nj(7L zd?l_sk|Takg5*QZk_~pSMLn=tvPq0ba%o+ou?dX2^1*4r)w%xjCLS=IGy%n`2<>6A zE+d~F`gXc^F5}FYtsnblGY-}JfV1~^Vx@GMEgF9Ig@`Im?YET7=YE1Zf2yGz0g#&? z>4mZi)+YRxkch<8)DXJTNp)~{1-8%t3Gvlm$wPcd1qAPLFg`kd~T$xcq z65m6pN@x_VGhWtEEX&q;Uc%x_EFOVljgzbpPLM_0&k~MUkMC^DtgM$^_8wpgNX`MW zPn3SI?5!!7G0c};2r`q5jSK11>~)81>Efon+lD=jG1?kDck$%ws%gfl zehC#W(AGu&@NKZ?s$Z}(k^A#71PWBQ(gCDt5(!YmfMM$J!$ShQ6w&KzG<7(PSz*(h zIDuhOLaIVr-A_z8TP`-Xz`-r=LAi$-*N!JA?t zOyMo;zg6wCTl<&sOw2Sp4#-!IpV-y1Bzol_m4rU;6VSg?`+2tsJ6ulBLIhPFno3hf zH6&5NMW)~%4)j^no+_y^xJ6VSOMI;YXdW!aP))35i&46wzUO=VPo8ZiNe4`2CR!mI zCCPOH=PMnZPe(X>Fi89VRb^iahvMUlrN$!+FcTC)hrFEh!~H0pepef8Uy z$?`>W{L1~o{#;XR%_7L-K}Ycdce2fQ1o1QMuE|*_HoH#3s+ycaspXJ8YXSMr1Ytq+ z95wz;kd7wZK2bE)${5bSE!uvnw4uBfs=KYId*?kg(?Qc^nJmmKIT`XOJ z@-%3XF3V`HYH%aSZ+!xXQ}EH0lwXj<958`r9l@iMeE@p42zrj$D5%veXTfQjOf?CT z_qj|?yD4YtB{L&46csq-6wZ3C+=iJx|0*=&&XZ(l424NH0-DRncnh4nfN5^-t$ zOuAJ8*8XSNm;@2qGRmfE=J;d*?{h%$`k)pKXKbqC2Qon?vFl}xo$X%tnqvs^$&XbcQc&aysa;uPpZ|9NeOvjPHY@BibCah zx?}hCrfQMBL!ZBt46$vTMvE}=e_j4VMWPSyb>nQiyoC&PEuCoC%$9=Nk`(3NBZNr*rjowE z&wOdH4Q#%t%OssJ&$9Q;+98(svs`5q!yRQ6k!FXIw~D^Q<>2Uj>bR3*q4_GT!OU8h zke#ZFhjuJ#XaBfsU9X;#58UK9RKcydUZ*QIfxR^SEv;g}MO;F>@lI%j-($*>8h9Vj zA|UF!UJc{>&9+%bUup!c{ z+eW}w^=|8{K&7VcY57z{`FH(vGr1Un?KHG4*v0#V$ay30Q(o3Em`_}mmf$LC%P;i- zOzbLjewEZ#mj-u_jwbVH`VV2qk2u?$wFOjI6u z_1%yQ@HBGCEmjD*z~1OYSH|U;6Q|+1Y5J~Uupg3~cybucG&+ zz2Dte{nX*t41#n}ugc`c}d4`T^_MDbVU}q_Pr=+^|4}K=?ELxct%y;_Uq_jbY_M z=u!Av`y3ny_4c!fWLah{?jdk&85a+)kc`o9o#VV7kvN?UgGjB8l1>H`>65ZY#ghmmuM0==npRY&9q$m(}E%PGYo#74^f5>k*? z0^{P|3khHfbsafj_;%VG;!1GE6Z=VZ>yoPL6AV1(7TvHih#?v+^+P3ie_|Px%j>)6q9cS zc9R}rLTL6t@PG6jU(u`fd92GfrKV@n;w8S+K=vAKFlFYs94p@5>9CI<%5tjN3Vxoru|5CfQKzh0_PtNV2_x)+@C0r8Uyxx^Ej z8h3bFCNe22Ks4<`0?4O8?X&(qejkTMFPZ7QB4F3XSZL-Z^6K$!*}7ezf$bt;Tw&T3 z%Gw+Ua$y7}Uig#L3l=8QDWh-?A07~eQ`gi5gdpM}K2#s^y^ zsvDo7HvQsS7K8s$l~q~#!Dz-Vcmlqj`}TJe8%G$pXotDMqc@q0uf{qUB~{bw>+*FEok&TnykiRc$27Q+H-9af%D#jm&arF8BTV5-X zC2>cUs)|E!!23-VRsegU>~@ngPjSS=1vdN32d?FnLDmhQ z_=-ur%9M@FM{w4GDa$ucjxP>SL=o!-hQJC{$BNBvk@g4h03p)#Y7@&Y%(}PQ6J}Jv zDE~8|X!8v7G?X#>)!S@a@KW)u+le!#Y5kzYVZy3JFwH!jBGb%5;Osf4teFbXssH80DR=G#tGz@_bEB_gEnW>^l;b=X zlpB;dTSKg0PkY=KzH1Ku&Zyd)O@mCQ+;WJQHm*D6_)-(G`JA^aa=!meDovv}Z1!0R zL4-O|4A|N~r0YEown3aLLh6*J=YZM4!C1D#$E_UA`3iWJI&y0oXNt>sJ6zj}Rjzh9CB;b4qG-8hHeNOAX)68-Q-2@dVejV3XgW5C6+MT3 zkmF@6O4W5OCl{B?q>(IWN>EUe_gO2h=%4V>WcPxptz8MmVmHtyG7$YE=3OuVYDV9{Z_gytozL>aJiW#Wc;c5&Ny= zWjt#kdw%R=e1sx1{yLtDp;*^!s%4IN+G(>9H`g7Xi@aOkY0cG+{~LS^48+x`Do6P>g-#~~`@!#ESDAN-j zKV$x8OJRz{6B&B8cS&v6+|RX0eYbrtF2!4tx*Fy?c|$1z7*G8uSus4sc@0DDjDeY2 zG|g=->eKL-@pAVw=Cbx11`q%P80gMpmscj21=GOvXu;VJWye|_iz)-3mc5Szz@Vy9 zKo5COYVQI_LTIJf7wPT01ngiD4ckR`yfJ@*qkyP*LSI26r`VQSw=#!cqymzJ;|x>r z>~uuXAY5ZdqP4QUb#h33d^KD>eeEDe6<+KNiUGgS!hiP%|^waIi}Pvoal~Y zolc2mxqjJZZTEvM5jgzw`wA1)eMW<33SX`bTOuAEP{eS7z5qw9R)74+kdjc!i*!H= zonXGkihlt~-u9Kr)q}mi;Qw);t{|m|CT%JKv`9B9g8Csb1WQqPPdO_tMmT}o6q24K zoYAT*C@@^V%*Xj(h`vi)HEOsC%iY=~-?`XibY2l8UgL)~s56g^scb}{B^{IBqIg>{ ziS}}dPl;PXRCye7nmL@hNi4}KxjZdqKy6-=8WXvdw2qi!Ew`n<0|7bliMyTQhDECW zl0)Wk_VKhi3du%1K9%W9vO#C|KHdV51#7KzjuETlc7h?ZvHF75YJBr}KMjt8C2p97kC z;5M=lNxp+4h=E_njIb%mscZtR9z|QW#3bTEqJuE2B}!}sE_1OL#fNs2m6?&G4ubRb zjF2hbCL=E+_F6l;?VywpC7}R3NTu?yr_&E~RJ^8ctf4O#2|~(WN~;@HG+5C!1h5R7 zd5VGV+zI_GN;|!w%7A%%;=rPSM6ZC7hS+Z7A%^>Z>euUzk@t9OBS#a_g%x@6pHM-` zS$SVkX|a8|9z%tc4;4X{myckD1zNt!$FM@KojF>Yj1(IRqMXv z$7D$Hy7@vmkHAF=$pDKS?Jw|L!OjF&YGe5H4`XGwOtn)JM@}0 z4A%$Zv`CYF-~XPI9T)KI9iW5Il|j}S^klEvYp@dl+V7C^+vm-y5(7ZWyb~6PgqaRX z!Qdvq5#3+$li-gTpm&qTu>f$9)cU$cTUOz--741ZT-@v{_5B&)p+F)^L@|hXEn-&H zzwdO9Pib0ilm7`%^!a+ugKF1scWjv8x;p3T@@f%rxzVp*SGAIahm$%=$~0aEXqNZP z6Gj;N7XO^?^>E!HxQwC8qTrjYBRG=Vc(a`dxWEq$F8U%U{vijkdOd+oMpecfZt}jx zq!tk#690JJjoc-1;Wl5p@TN)oDN%|32wnIc6@Ci06COAK56uGzkIXR+N1O?`+#20{ z^JCd8*g9NV)Z~4C5J3=76TIk?sP(njR0Ia7x*JDJomI@37P4AX(v5O?g6in(ynv&> zDuti70dySNC$uMe1Pk$Iqe=RA$Oc{OWyyKwm!yUF!sYvG29*DIGD#<(N^+%p_9for z;efO*UGzw{ojFM*t?Y;bS~u2b{!Nm>FDZn7>1qM;gmmtsIU)(7LZoEiED^J~G`WXP z{owRKGJ)C2dyD9{JLlI7X(#Wn$k?TN3MvJ!%^=*nsQ5TKj8iR45rGZ|+T`mg1FDV+ za~}>-2>oEbX5&P(03d#1iph$a?kxu|gsj%#kh4`QM zb#br-_D$fp#VC0Z`1sUoCL$fUxoTQ~Fok!7i8^3<(8O0K$h*d7v`eBpzk^&x$L>~T zn0rF@UtGznjx}9D4`FS{tt^g&(dg&1OC1FQ78#h;A3oHxs|+Ja&)e>dYHt2s=(oQ4Sl)xYeVL(7*xEET zqz?vwTL2ckp1Ay<#wn-bRE%;jke$W{SP}LHpzzWs$spG?xfJon1vrbfT9*~304F^U zL>b)SDb`H!(L3?pjWep=41`mYf|!ZjOX)X8qR(&2foKfxCtTcixagvtor_6$&eSS8 z7`BU`^P$20uB^tLj*?4A4s*dosaT4kL7@uDyvq4P8g3VX@JAPNC3l86z}n3K*I!k= z)S(bm^9SiY`3(NC2MQ0kk%b!=l}nGW7xB>4MVGjK;PKO>UH6Q!MJvA!=0VeTAJa?d z7JaWM%6(@QlcE9f)i9WnGz&pdf|?IU4wI{D`!A@5V9pn?DI04JMNSk>OlvkAz@7YW zd~U27IW4cTqZMNREEAM#{oBGHo24@-@jpsFqsox-ERYD*mVT&5VADaz2Q`^S`R=hm zYpktB$y;hK0{vYR%+V=o_f|A0BRV0yX+$GVk&sy`_G+!AYRZicE%p2$Ot)WeJr&X} z+&4i0ahDs@`5SuQ{YRZtH284OjOTk+1r6i+OjJe4Hn}YrV1?RfMOE+4n&$siM7&65 zu<|DC=cB0GwT}nm%(ZQo9=jP@~l_d&Z>Q8pkC zw8G!7-!LpWXso4(e{qpOPYb)$fKC_Ud{IX$Mhz!^#D<~FIn9>9);h?+8Zdo-Qe{iSw4#(oGGTYwkYHFsRELUk|BRoAJ46{a4<@crjNu@WBgq zU#ugEUVzCHHTK#4EciDy1c%?;dWUNeWtub?&)4tS$GVi-fpIo8o}cD(@UpyMfv9G{ z#oZqz!8kUIoa{73v~6PcRd7|B}b9)JSdjPuO}n-)L<@JlJEPGXXl zoWItuI#Sg%4GK&=TauufjUP^`T!<0)nl=q$&}#=q1}HmiXDj3qdb^RE%a&!%-3r8< z&>xNgdWHM_j^}1ft-2j~IAwcAG2yp#an_pG9!`m?e5u7oQXOs1>VROZ4rqku=H&fQ zEjVB#2hhkr{>T(i3iS?wn~;c}IoF6?WVft6uxU&IIiHoMLLN34RoNp1(&(ba-4y4M zU@>!){Q_+OzWxk{;hS<;UdXvF$LHEPTXyj+FYp?8P{&a{a!$jUZ4csALBuQ`uGI># z>VX5LY{tl?MaBDSjBSy&Y(|k)ftWsFtzlgWtI|*}cfj32w#}3 z&v!uY2+a+)kPTZqP5eqED3Ws>Nv;&T+Dd(TVtv$(ik-{lLMEmiX;Y}sG4OHyS7)Ll z)&8P#27$<1h~G_(yjja>6~v_}Bq@JXTD@?7EMY}9d44TsXQezM?wi~!NQIoi%ufcR zW#c>_wA!28li{B0tC!hDOJFypfOhWf!ntI&f3ql3$l9hhZE zbmY7eB4V*f>TehZ$81QCMIu$O!>vEbifJfe!%4MK9;w(CmQw{|6Rwg$?r_?LK5NpI zN5jQRyJ7O4;gzj3az^RPic`$9*z}{$bMdqv#=8x}y*ndFZJtqOV@qnKfxW{=@s?VHI3l!@K z{zWD%Z)tKRfNq!=s^ zQyS_o3gGpYChIeYDctc$OT@02&{RseXJ#RIpkVod$Xd57bv&pHr_Xid(*%#KmY6UX zZ$NpvUe>HEwP1uMqd&SS)Y_?RJdB*jHR9Ysd4|~yQA#FOwFC9|^K5DynB~T-yl-9{ z;`4rpU23B9Kb~F&HtR)J#tZyxa3L)1o|B?G552$yiQur*=hirik2p0gwzVh$-Ty{#d=YgiVS zpxN|{Y{12T`X8r$OvhN{{KC>LES@VRbf4ZnosEw4PHe@Fe1J5jW=s)Iw9!_TvFFS? z3gGm+YJun+IpaCwYeE;>l0l!Mfyw^qJeCZ+ujXI@6)idFaJivyobn@L6rD&2BH7oo|8c*oGT zWJOvhcFM*!S;^yMsa6yXQ(6ZHLCQ9?3j8B&@WJw z%6B@%w&;S!|U2Lv)UfK$=h1|D32V8K8cB75BBz`BxG^e~pc!8C+L zV(DG8HeY%tCoz+RU+chp6GZ$h*?)TH;#Vv?^vhde6UdLQ>guW==s`EwG6Nd|>27hs zjAgm1bS7CQ7Z%BZ%AJ5O=D7BFCpi{({YhPT$2#t+Ne8s(ImOVnfFk1GV%Zv9g)+qP zN?LkjJCoo;#%f6 z?qg8cS``AE|A?ay28D?lhDWTFI$_lK1*oai!TvqqJOxeXm&6=Lo&i3yl`WM@;laRG zdRA5-ZLfIF=6g=;^JtcYdHbn$zCO!Y`(YC-fy_^wZyaUKqxio%%Ey)k+nBRcl6(WG z6Y$B7aF@aIx#+w+)>E2W*4y10V1{8Yfdeox8p4&#m=T+OwPP1hIs`P}GLxcYg5RTr zthywJ#;HE88FCFWH~uv-`z)N`E62ywkSEbk0uTyJo;wTSDagCS@^AuD)|5k2h@Cb}uzqZJwb#X}y_Zk~043`t{N_k*&>w-z4wZ0)O(@INF&%D?c9)8%Z+a%M0sO$Om=9xa|S}xU$Xk9v_4ZWZ&X<5kYv;jnY z*1G=9vva7l`lWkr;wqk@u$S@&d}MW9oASdy^72U0@2F5Cu%`X zn!czlLmOuTZiqS0Iv4)oNhNUSsbIw*@u($*BSk7=n{uAzgf2AqwA^KI*}5T7_`rPu z<-1&ttooz2xuMOKZnl;sA9O$2povKcfrLzG?KKy$z~Y(Y1G0$t6c_ko zfQt3;@z4)f#TS$OPFMD516-cX6sX9fZ>Ex;RJWw-N&K|n;9^|P3d>W}ouOgp-N-Z- z{4X6=F%c%384Gd4fKz1McpN*~Yg&ln9>Jn=7kLXBPTLm&%^<}OsMfec zsa5@VOUb3W%Kw5t#?>QJtulm(xh1i+jjnhW3q3ptV~Oa;a$eq&~YcO zY)cGas!a@@HAjR<#ys4a+3tUBJ@>ot7vq$>cKc zIa!~sKaCwtK9CItNTbWidy2I~B6kE}wfZ{J0paBu2c40bo;AXk*^a zx{JbN_awZyEhRB{N#C?u*IU^$UD#P4C6}6xecY?EmBh9A)gL+Xp4TFZXGNx4M889? zrLHjkkxwhwp&fFlpR|VIfy)sn@YOEa9e#Up^SSC2q4>MxQI!W_Lh+?K;QJC_8wG=K zPC=P3JqNvHx>Oe!x^Z`nw1wZ9r1C<`3w#Zs`ImnM3Lwg*uvSD1643qY4<_adaHiV@ zaWi0j8qHHql=b*?4v+z}tjff<+D8mSuQlm0IUrndjQI5|S}U7CP4%9-Ic$xIwDGT> zCIRf@kT?4%1dO5pLwf?-pK-$HMEuTSL$jLj+uz)90ie?a{8^SJq^N7=8WU+__>c>o zg($jnWRmA0qYW{@e+yEdPkw$N%ANp~JaM-LEBhrWvLH z2w+;5rPU}xXzUW+RnkF)G_GloPjX|Mc-F`%A&r)xpuvz?;_cQeFn}!-GJm+gjez)I z>>({gkykw+Ltr>oCG;XxJ3}kwNgsgnMg6g%n~;jYJo))FwE#R!a%Mu>h$)JrJn6s1 z>X6*K72)JF8%mUj?2-@bVz$+LblZ_1f>xfRx^S2XA6mifV;5G0*uu{%0%90?BVIT{ zyTc6DBmw*tIV{ey6Awy9cIcNLbg7`T| zh%jlzXeUz-mSXG`HF&^YG(3{&Ym4#STK!PeYbCK}yXWaLppi;icIwGh%lb?Ghk1*y zE%{N5c^=rRA}lGntoPytKNI(~4ts*Kib=CqpgLEdB=aOZBV91aS* zx$rykEO1*U`t7=((Bp9X#AblKC^++G1XgNi1pC2p2Jug0a2Q;gP?nS0x8}xg>UwI~ z85Q3O6s+foBGUu6jbD~HoCh)Ko9uD;rvfBo5aCt@@FaeF#K5g%pjA99^m3n``4E&c zBPj%VZ487Mp-1AZK>UivzvOWzh?SWW>52IOWWs-6D_|=hMyuy=$R#I-{>gJzFmi}b z!;0{gptV%6y;E+}9lhSy*6mZ~Zyy10C7@WcTU14)`(!TMn=D!_FYDYdw39c3@OrUf zQeEsZo)-ORp_j49P>l3|okqT>Ns(o{(ZViu+_aL+Vv4>eg5?L_SNOePdaLG#ks;fR zl$5&!vfb2`ZJ3Ovb4(0nC)HtJBEnLcw_a^n>->s%J)1D{Js{gGbw)rGI^OaCNl7x1 zQh;oFA_b*Zm>}Ko-ZIJLazas=tP}qw#`%esFsrr#o7^E-el;G_C~72 zlTV|oF`jh-C$p`#h%>i;kQTP5DXmaO1%@i<$ge8`fUtzU>5S;w-z_oiBP{>3EALZ{ z0*`bQpryKL3}etD=668zrq?1cvd6htpLl!COe0d7IpfD)FjI1?HUn?0k;mAt@uX$2 z-y6S5Xmhrs7{ZgG?7OM>$Em`zQLN9?>mn}L3StH@xFa}Ya=10ff~pW~x%eZRyEsBy zkvd?j66_ytCwRE>Qf=4xm+C_Tok5^hpxHm#;z*-Wy=m28_Z($M+gW^et*p3HDuhE@=vRmRebYLw}#o+yPeijE^wS=@Y52aR(M|6Cj$_iYsvCmW6&NULAH`JYTMN zx(r4zh_A6zkA->310S#Y8iX&(*WZf$BGuxb{oke|2BYywEg_xkAj8NYqZWyJvm`Ql zCa)$HL#^mNf+hP`Pwk=kavA2H5Cr4OIb{Y*+cE}NMz`jLkQeZ5u>1!E={(Ul#Y|F| z{p*3IRVFnAH9VIdjrW_aA4)KQ~$^uI(yv9S#;?^U)f*>P#V>^Qqcnt`(RGj(B|v&+nl zrU){AMP0FM(RPtIWg2Ms!~DU;?-=MR+jZ`1Q(O}g7bhnMA>l~XWwt)1#NX>9*7)A} zEuh>Cv4PRu`W801Lgw_+W4Dc8>k@z=KyY^MuXUpgvh375+ijBCi>Z{Xl^iUHJIF$) z=0`mQnTYNAm90WFkali zKHnOz)BY$dSx95`;WUsowT^dv{CwFR5K4GFA-eJDHN9{|bq|o8s(hE7a+lIkuc4gM zoYUYdgR@$P6qU8I9N$&HSY<5A9C#C!dH#vA-BUE8rtpsJ?=nEJ>mnOUN53^U$Ex(P z|9|rJPG(ChQn2Fhh1`O;LbQAl6g_(V`WqT(X{|&*xes)VTy@o|MDCS&>23b?T+LdN ztVrE&MNan9Y>nkmw$`rabckuGE`HR%6HTq$#v5{oKQ@)GShX@gU;dU~$vdY}+Y@cE zYBx!z{JPCR>gN&Q@u^s%2?Jbe<+WaV-32G>+IbYJbfGhR=iWK~e6dj15}VZCtIRUz zQ?bmifB)AfawtL70>EaQzv>+T21Ax&iGK2YaYo@}s>DTuAqS*=Ep!AC z>}UgxVpmQXtCKYkZnXmBrzR-ddHAhW?2KVu*_W|zHz=@rxQ_qRjwD$nS9dr!`4V8w z+kqc=MIw0<8i=M)6@Mj`bu%lxzGeYxvRl$-I0SV?wakhYC2wvmYF)tXAdy11GIjb8 zN9JQG?F0@qaDEpbjS>Vx{v=UHj?XAL~mS;7vaWZ$6!%_E&5n<-JBn=@}DHL>rqys4I$Y5+5%QQ53b#mNrH| zJYcWFNjU&<`Tj($n40Q-`^5O9dCC}?ygi=%e3bHQA$2?R?La?;FFZ zjV7PjtQ+kMizseLPo_F9$8l|!6{md*Pft5idh?ApG%Zs=c>wS9in-l#YjG!qxD6N2 zxZHKTMi!MW6EB`*WFDD@xRI~^<{L2Fhwi*+aTZfawpY3q)otc5WLKLwiie%6$crlZ zT>3od>V^;CDy6bAPYrkgQ;4WrkrT`hhdQ3y40-XXhmaXiZ6^4=E(auU_1JNwQC*kr zoC#%7B^!&{2KdCzevE$KiXYbGtW&O_2lTU_sd0YIo{PHYc0HC4=%q*v-@O3-?&MiF z4tNqsue&$}!rwAqcch|^$y7SuN3DaG6A;bSG+bo=4l>dYe}~8&08obhuhhJ`wTT+n z`&X`FcpOB-!Be?m{~J_yyTYPKaIlBw||#$={tH6?(UXsO~e7nU>q6@r@dLnRtV7 z%`oBY7#of|&dR55%o+9WoeTT|zwP5z6kxh^qTzZN1pP%k0np!AxqP84X1ZDJC9;k# zLRux$?tz^~@`(%C4g;@hHJ*q?gZwG@!9Zm&cUfzd5sVKT)JO7{;0HlSzr+LDFgqCR zxK^cS0*%e$>vAR0VIgXA9nFE2m^EY$=s9K%V2y!+Yd{=(UCT&J`U%?RHP$CY=`ZV2Sxrj&% zL-rV=HOn0U+_QeDP2a=haxl&)fdQXMA;i9k8lUZ_9cjN!+^(p=1n_4m6J^Ztl7p=? zGstutGBQWCp{-h*EycFA&xG2r&A*`<3)^K+>bH}(I!e?Q3J8YVHbxX-3)FsVKvb_> z*4uD8Gb;UNAsyJ_qX~e-b8UHO(rq^@<51s6tm0-UavMd^4MIt0qR7(gT!!Y7EsdHK z5#J5NGv=*#YOj&}rPtOKryGKa4dXHCIWZU6D~L&Sf^-VDTsSVywXoxY-0s}yd&ijD zC>lTlg>{z1tt0{kn>$JkxXE!}3!BtfmRHWiLOkHAtsK^O=oNCL8W7#M7tTY#w`#8+|CAOLYO3=vj7B;1uZOumZ zv)L%F2OV&rMOXvu-Yf4zM|2=L6T1kQh7&G5f~YH$vR>i3T`Ij4F3GaloyXzvUUrUH z=F2`CYQTdx*pR1(~0YXqAl;N z3j1-N4PQ-munp`geVTp4iCncqRhPSbyK9A?m^~v@dJNsQ2?de$+QXhJ!EEb#;0($p zNE_@V?^j^WFx))S8bjhMxKw_L*wO}^zu9>PxN07i>xcPa$hBlrf9jdMKWq)**Te?t zXT;L3yVMZG5n@zWKku{iw;eukGp7M48LEu^60TDkC)7H`=`y9wPu;y8fws)b$fp*u z-m05;k=!CACb5Z#ct=2WQRO`>)2j?fhi3^>M(wVt)Bc+W)RCp;R>CCE+~LD5hVG5M zTrsh1rmr`s8MMTqp1D@8hM)e6a{JTI$`RXA?k!gzxAth}_i}$CNky*u0aG}>A!@1z z7*H8lr8mRceZQGJyDi0VPm@uO>=eDPB?0Z^IxmFm z6m%*(3YOX4MTu9n-{RUv!1VFdJ~1;8G^~J$9qnFx=aB9-f1RKq;(abY5N0ludqE&a zv=`kE!}uPW%|UV}fSc7ouuqqv^LgxnYNL@yqEpIgc4-*1is;FHdX_V;nHgEOJ&p_^x;^wmnQEE1|N}l@%BeYbC8LSXGb3X$#Y7W0I+SpnnC9} zmP;ushhsbU7Iu-icgW6hR^VZ1TFa6%c;TXDwsfX<5~DTjogy>TaR@<9r#aVIWzxP*#n-$SysP? z0XAo(EMOPhtW$Nu?|3VVi{czWs6&u7J?|X#Fk(!IKMe_pO`(3<8ZGfo`ziuC7Zf%y zDG~31U^p&xrou|Lz8eR*@;y&v7rQ^;kY#;r#c!OdZ-7H@gPIvjZ94?apW2v`m<*sX zFkL0Lg^u8+aN|4}%fE@u@)}JNXzbXaTt}p4!idXZ$5vLCB?n289SopmmJikx|Fply zYmK*BN8zs|C7O6mTGT%2y11G%QW+2IGU6wIo%5e{a&W(06sQ1h`v9ntIS>b#YTS~= zD9kya-W{mDu-p}WJbb(zt2UyUCMS_jKkk0%C|$45ZFIkt;Gip6fo5&YJRnd^03a=Y z@j^`SdMVikdqen{jSg$PSbG5bq^O=+6^ttE)6Cuy@x zD0nfeT1%5GO!dKiM^3HaHI(f2Azax4kKqQ_678&c8Ki+ocZlFnIm8KR50sV!z*SYY zAuS#_!p{I?3LzmKR{vKvH$}N+y_Y-ymWZ1?Z9&cjmf=oaq3^b@RB#9{D30bIQuIT+Vq)jY@if!im(mC}B&L{{{EBBkMix#%5@ z6-s`T(!05y_uOhA`SP-c_&g>Jz~li^qL7j*u}85NygyKhVtb*G7?_Pt|G4 zZNc7g%}AXV732W}r7^)*;G5M^iP6Q1+#6t5UL1>Da_6lPiFQ2;jb)899r)E0CNn=u zOJ9<846=KozkAvX6%%FbDE3|PXat&{c7oF4bf@mux>l&qs%dU@7smM@WWgu>{@fH~ zAlDw(1w~zV6y-V;{HaE)qn43+$*II{?vE{O#1a{$v9e5izA)1WI%`4$<$u}ro8lCT zW1`)}_odt2q#C~OV63F7LFU%GQPK7s8->@DnA2yR-bh&14>}T#FPT}G-DNlZa|I|C zoawcWDfPuPYXBLwYF1@lw&8WL1t?8l)$9PY{=>cxHv%nTnXvriQ4S(M`8-7!C1Ey6 zD;7DAjXm?q?od<^WIkwo*s+X z#=x+P1l9)FOx$C-Tzcb-(tXT*j?iydC27f>(|JWk)#YS{wo#!AJ5FSaRiUc4K7`W! zv^eaNnAF}o?kCN$r{S9Dw%|Se>;5QDH~25sm7k2z*a7e~zOp+2ac}DXQi5F4nD5C7 zMty^D4Z12@R1OCSrVoJhv*+#djBU8YL{(O0tR*s>zZ*w%VFmu8e=5MjC-(bpu0;kj zTjsyUs&qNx^=1NLqh(Zio&oq>(|eB039&;@Um9ERe$INEWUc@ywD)_(G{siVRvEYV z4@p(BVg!4spkq`stW7os$MB!I5YX~wKWj?)MH$BLEhS?*L%6S9v0=p6$?gAVzc$!y z+Y``36h`>RF$HI9&?}3rdp%jHH>BlUCZw$gA-X5Q|i#xc|VYPX4;W_Q2eg!oIe8r7Uw5D~iJJV@g|!fUW>GR@xm zJ*sp%TV>%mGUvt3moE<*s~q$80Mw0JwVAS|J+80%z|o zrq_!0be2E``?dSwzI~MI&J{(19enWFL}!CfK*%0f^kc}oprc!gb07Z|c(+N9BejtP zURYAKhnhTL7Q}gADo|9Ci{ReUfkJ_ZodZ{Q#JiUL9qpVcotKL%?TQp z0RKM#z{LVn$JN{!buhC-|Bmauh1EUUX!*iy5k+n8V;ph9Wi$U~&tdrJoXkZs@Q*54 z%JOBqSRZ~;!C8_&!Mw^k%F#tm53so#;Qnr29;#rc=U_Q9&ogKATe>NU^uFjg@bh`|ewG&dkyl(i zakl!}`@ir})PYaa7irzmS$}H7prWu!L0l%sWYH$<9P}fk;4-Z~4(Q#~&V+YJ z0`Q33TXkb@j6SO6`K6a;75)+-_|wfcwog%Ci}L(RPG#{WKpFSGl^i9O=POouqoOL- zQhkb9O;kADA;Xb(QkFCNv&aDQR6IfrzSplT%KhU&`*j1S-Bgr_#wl)7D*}!%o{o`s z44?=I5+KI_&&|5oAH0dFEvV|AM>`hk{c()L zJ_rm!RqtQSdH+giIXhbpgr312jV~&g{(i6#&lJ|wr?yFQl;yT(ivN2;>Av0r4iYMk z1NCzcXZ4ey#;N5~CB|V({vnmx$>1_iGo(c1E5Ag0ly{OO|>YfiMRY zCZ21dXJ2i$wK-o2r@7&W|HeU#gEKk0`WJ-ap7(=RVG#X%fFtU!5_a_)O*(a`76P5p zJB^=s(}yh0O5dv+OpH~e_R=4Ip#HFeRjc_N;~JfFCvlUN*EqALK;PPg5l}<=yFQwH z{mL7uVKLde1@_OZf&abj#IqxyiP7pG=@|`OH!|6hKT9P9nEWHOq-&G>HO5WP>CSEI z3sC+dTpbkfOnYSnx7S1cIFklCBeBl824)HJXE11h=hi@gfR$aV zaA=jJ?d-t5=MF0r#VvFkj_ZZecc#r96nFm#@sk$cS3wS_1I$LQ{#4xI-khaC^-)1~ zkhwa4`wC&LP2Zo0@{s=O3IuFTqwXqM7b%vu^KAJLO*&EK9cW2G=&dgDZe#KeV1{j6 z+ge_9p)bl?jGY>Uo+|VSUu;8DoXB5iHTh9$G=9EpKHu?efYf(XUxY~0Xh4N&KU4rA ze}|bP`0;DB`wxo8JS#z>r!__S}&0=;ngTMf{I7z|y4wZ;OC zl`{VdMe&`CVY4tnV(>+gpn#N)XAU32$AHIs&>V0)bm9z~6u)KsZ^61iyGADl=RAuG z2qAVgQ+M95XQ7gFfe4`qWGgbsto)wS}PnxKwZNkp}3g6Bl{#WrfitA*I zJCJgh+)5Dm(=vxT#2@LhJNniG0$%|gvtoJEp?#x%_u*Q@=D!%l?(tcFr7Qa<#498F zfLu2k5A5dp?*c>9)v*c-Um1q>ggHh-PA}uKGD9VgtP^Up&SS1^M-UffuWKzMC;5rp zAu53L)da;8J;%a8d->I$^Wd^CBX$)XMocS8V%^POuYx>*i!CZ5JK@Ic7+QrU^PP-2 z!Mlg(K6IQX{{p1$INdT0ydek(b+I02`^4hkY9}Ms%g^6|Z}nxhx}|)xfAv4l1-=d< z=P`L#YKG9o6CQ)JUPFN>0+p1~dJx6zKdn$;LS%7c8c)9pM7Guz1j$B>LAX1RbQ8OP zwLeIe?8?I`=j8Lp7F*7GP2!wVW;KLJtESuPlgLJsF?8cI~|0Pduv_A zR?z259civ-?}}h{pf~L`nK$QChCL>4?Z>c*$%rFVQ2C2iv5hk%LCw;|qPm2e7_fhRlkA!l5J)j(9{A$R4|?QrU$LBGzq zgkEATf}mh%u=L7D7(DHC@4~4Om?k$H%X=Qzg3HOnRcywEb#1{kk#x7g0P=DcOsaOY z?BPsy)T-G;3fdi>?TY&I!~(ud)EVyA9c}hhb=e~h_DqFtQza*V z=AuBKF#8x8mNx;#v5z6jdgz*KFYNi3G|{~i7+}k`O@wEZX!SLAx#@T#>C(4hlda69 zF*Q`?c|Iq?k!SjfX@WA}s*cKeSyR|zuk+2n?s(fj&dFYNXF!y1 z2#g2>OSXQ@>>AR90!`<9sFGcnxp7&b7zNT~2d5-0KrcVhsRnc-Vl+WE>uu}7TQ~Mq z(0Fe>#ikk>T%PD|>oi3>=WB#EnZ8F|W(K(|mid*4-IsOu))^eP>U+F~hGd|pH_r+JC88n14 z_2)Dk`nMylyVz*cM_SO#4Myd1&+XY?a86oUpi?fWIwH1eSnR0~=SB6wagH?=&jyKr zMQ-1Ga)7dRSruW1*Gn${Bdu3|X5+kg9hR87N_iK?aziu+jYXMJB~dXSD$v`nj`J6t zepuZX!*YTew9ZOo?cJG<9@Usv(0%x^M*@h_7mKD3d%)8Qxpy3@009h!vBI=@E?c#^ z!zsefVM66aHn0Cp*KC3Bv^BGAeYK8GOF5$VquIE!Z@=^=}L@ZT>;2|GP~mdmcQfO$xrRt3f`Tr*|F{= zem1n~Na4cok#m$Pjl*k%Ey5$u(gdM%>av$HQB1QN`{oXYAn=05NT%zz1k=Ya-iTmj zgonQ)OTur+oWtMYK1?5@FzBsw%JZpzK{>2Gk&O=F(0~+~-CvEMXOD6z7nu5@^VJbT zJOIXw?KAIGDo!@p#5cOgc9O5{A@?!*O!R>?d@|^P>$pWEQ)m2T^q#rtvDp$i(}ZTx zy+~U$nlLw@9^;P}RkiOJt_qv)Ww*kCdt^ysXE17B%htrgz^H_}vg@0`t$pH8?drY4 z0)@^LkwJTdZ)W}7JP470or(xJ%AOV#km1{FNjE2ngcta@)2rF~ao*m_u+SgjAF`MvXtf^FGWQiYMR1qo z03{(%4xw7>;60Jo{6~m&E{@GHqg;_3AK>X-e0@%0$}FXmw%;rz&r_>NaFCM&R#~r% z+ne!iup$)ZL-}|um-%}tw{d=V?-Zf&*<;Rj2@rB&R% zb+G~z4z7XfF?!c&^lcYe+7aqPkN85h11{F|lkfLtGp6-^d7m2N5Sg{_n(@W5uBGc957MRuDBs| zP}I2sbVT#@?S@nog;;15%P+2uAnKqpMNj;3NUp!DN2=HTnWi1!KNgJ&JcQp#*8ZNE zQp1R5;+Ls}VsUT_y^yV(p>S5RjlaoMH*HqAU$v#dcsbc;y8a~t6|J+VD-OwO`0X!o z=lZ9JQ?;VQ7#soSMG$7z>$6{9=|--VuVDgIR$J0?0}&)tXC*8Fw1yK1|CVHo$LY8* zKRA&u@ESBGdQHwgIuIE|#$4JJ#KfZVBwhm+;2KvRO)4k`mOf4lQQ;b#=8E$rAnwQ3 zz=g>=wCb3xv(AY|Hg?0^0wWzZ`)ujbV8=uUqlB$}*@E<_e8*$fEF*bH;}%4HgsG)Z z#8=ORUYQ6YPZPRSFXJr7&}E|ThDcNFzJwAB`ny$>Qjmh@&V%(C{2HwUBB6;VT^vc3 zVNY@B!-K5HPwOpO7(CS3aAGiX2MC@xQG?12D_*1GC+{s0$k4~nE>S?p8~8_Nmjj%5 zdEU?OXw-?!<14RgnO|HH7QGIh*J^pa zH$wH4-tHibNo+sK?x$z(o_Wd9EDS5o(z(sx5a7Em<57TLIC7V~sD?6Io%Mv>9TTLT z5MR=Y{O~Uxx40e(Rhj7u!GU}CkGE?uxxl8*x4kpIB6dQZq67HL*D+%RWT=&d`|H4G z+X`OhFSwu1qASUewsYrBa@$9r4Hz5;dtfTZ1P85!1Hm=)|K9{*)Azwx4wK1mHESU~ zy-xL00sli@BpOEUdZENB@8N&+EA&CMxrM)OOgWgHp8#w; zVa&xuteH&3R8kx11qu;4ae%p^4 zU94|GUJLgTmVqiT@e^Fei=CzvD@v&}1T%lW6amq6r2;Vf#38=NZPW!);^tS`d>s1Ow<`o8 z)W3Dy+GaO!*`eU&(amGSSfL2vnwc4tYdGHqKguDW%w>>$Lvj894S`Cq!0d(#nct4K zf`|ZOKEivECRt6RP{w5(UWWw9!hel9a8wNT0`wtXdZS|;oE$z0{PcVHmP2k2nFP?I7K{yc|gV`^3>C zo|EG*1ixTQI1{3Gch9Yr%sR8Hb4IL+Y*Z8o#i-{8CrU-HAn0gSTk}WL{ve|qZ0jpw z;?f(I$bD&L4ceVJX7DhK*C?3Q$2P>h{wV>6UL`CF&nUOUQt0d*m&f+-1S0v-GuNHgYtC0yIG@y^kk@~5k!ux(Dd9Tv*<9@{1`5N$=6n|6iqCawDAE0v;UfGqMnvWPmWdp@Y zm(Qi|*v13wUQj3K6#3}5-(6{CjU*9JS`5Y?INL($kWfKf03Er6wfvHu z=wcj|@o&O^fJ0`Bu_Ba;R1xdIT6*^g?%rctX-8%zh^~8I7~TWvW9Cuk6yHKTA}&{T zL$Ax<4<*rCQ{qdK?2^ceSA6*h+acU;g?8E_A7P3A)YO>_*`pn4vSLnG3%QQP$RO%1 zBVK2?OcbL6qU@27gDLwz&OQ!zdoltBIO^eP2@oj>ka*@)(y57Rw;-xC$Yb*}~G zF%Q~8*AFGaCKUl%_gCbY+Eb3~%W%ZNd`bsgHRQ}e`Ev2*OT&917{X}+KSwv?-8SV` zH4sr>PG9nDpjV2%zMK`mf|{$=aj#8wEOWw@osiz6QqhL+^)fe`|3U%Opbv|*lFw7Y z>q|8;Vv0X5qoUrOs6QNVX)+nJy{vc!QcM!0={-|`MkMi_7$#|-@a%A~%0FIiBDZw; zDd@Iq@7b4d+he`FNe};rE}-i}*%~%tVzsTq-OL{0wI>gQnVKs?CbZ{SW3Nu;=0s(+ z=uRO0fZh>OEhfkrNvMmJdYe=!zmAzlVRceqH>Pqdev(6=#XUWSQ@~!lixX zX>b(w^SzAd{-@>$IM#-f>CI+}!m9kyqhM`dKng;AEhR-1x$T0cA@u~}{_v|~@_2+c zUc3Iaq5Wz|xa^9eUVo_%dmE>BW-CyKZsxtm_;~71zvxpbis<|~s$C)A_p@23;RuNF zg!)QA_u*+R*%?7WWPlF^Qbrf7sa`7ahF?Fz>hWyLX<)%lK(JC|YKQzM501ff_yxd= zM@I8llI6lqo5+GfGzW3k(8(gicpz|^+%5~P=LG!&l~y|%onV%kvai{1#~o@iq{4Zk$XbCx(IRnah$yjbx&yV$xMJO(x{v6U&-#QjMsN zp%ZiBUO=^0=gxS(=iW_;%Zwxg!gf9UOUNq;^q~0r-N3mpyqT^S#e?F@*lv?17;$Z- zNNTXY42alseIDLXzLjU3@d4CPUugPt!OG%VJ&W{K{$_tm(=q>`1i4hhQA(6t931f4G;17qI@Tj%o1g3g|AGA8LHTb!3~=To9C36wE&dA^TtB7gceZk7P&zxu0y=tN z-if}0``WR0`TGd13xvX!_2w$~ihg`qLjKmayHWeD;j7gFm)u5v0e|SQ?Ba)jPjn{x zlW~#R5=%HAjbjK?o6iY9d*mL2L*WENe+F#>6l+Lj)!>>R5Ck6I2F+W=SX> z(!`8EEq$|9W68h!w-pHLi(5I!f&6{=nS zz){2hjmwS{$%zR6G=B7ZCbN<}g|ogUlCx{5ca~THgfF^$27pgsKlYnVBB4Q*$L{hI z#NR9#*{<2MT(0MTG*4|9kY24xuGHmvHlBn&8k83r-^PXGJ1`=%mYej>gFUM1zb8G% zqlK>RNMUp{#C|}&Q}YZ<^95WS-=HwqBFrseMwzu~ZwyNFm_q1jw@(m{IhL$@nLx2F ziD#OeX4)oxlU0Sy(eY4-(BZloUY;OK>|+_SU-rBsR-c(CX88$|XnD4R`vy_=B@n}_ z*dy7RyAe`v3fS#2Sg%1G^G{RViPOt=%QaFw>Tcu?G zbDp0q0Pb(X*Iaah&voxxY}#q3Sf3ekpG1usbYRxseDgwH{SQ1lEoyR-)i>Myj?|!s zGo#v;rF)O!kXt4|F>#jckHDkGlEnpaNC8)=)Rp<0y-Yy9Bp@5q&ymRWYapOF*$Ocb&lLB<;Nw zc=K%7+akLX@j3cPC-6?qaN!CG#%{=^a!ZXHpN5S3>GT$yrBlnw&Hna;9kInb0}CnL zvJ>&~mlM_THHXD8rP7(p^=ft74zR?F+y_78A}Q9ZuWtoJy5M)~iB?@9Rns3!tD67_ zX`-sH<&JlGWpuUpZ3D0%o}OzC9!`sy89;ehhD-FaJf)}*wxkk7s^3T@O^QpD5w9}= z#IFYFjC^h@${>qCaBM@@P$c0_*&GG}CenS@UXZn4wg_j^A3UGL*a%MfW#j>d4?{i4 zbPz>7ORmvo#5F;0K^vj?XjcU7m$k67vk))y_FR?+X*bFrdgoH`DrL%J<%hXu_K{B> z9&vFcYZWFSv@JoSlC!d1nLIOqK2e&T%f$wP@o;RvGD7kZ+SiAoOxtlZ-5OT+uj){yTCM4-ggCi&&{KH zC^JF*IxBBu=uMdkQr8#@=#0A>JRx2`?T69nE zvZN}*Jf|YB#}*9|6V4w4p6reQetS;LH&+Fn!r#ue+}x z>z`jdO!0mfuOo(1+-s;El8uWvRFs>zo|9-Jw;=FYSYGq}XauW*dCAPO3sc9fRqLWQ zIjW?9^uqVC1bjryZY~R}s~}>P^??M?FHhAhCPu*7|6VH_7gn9fWDcB|E%X+%d6yr0 z_!Z_ZRa!4fq3C}_?0PRBv98@+djeh%Oin|Ow_S_0>vT4z6g3EVLsgRo?@5fFErBJP zpXM@EFjm*hCEAE#-r@p+{ULh%L9k(R8#MqG!C!A9v7z3DbZ|_yHjm#%BS#w}6L_E< zbv_~uS_Ml;W09|~6Q~`Jnp3~f<`O_MT_GwY;ys8G>!oPZC8#-cS$nYuQXM}Zo=qTa z=v$~pMFfVImYITcn1t=BjZFS3L=FNn9%6=%;sV8y3(h4AHj0&w*>@}jnPtC?_N+VV zEc{{Y4BUh@+Z1%ud^+^n<=*=`KoMzEr$;-!&T$$}|wQe~=uB=%p zXEul(wI8cQJ(`wa!~=+gL;6HX_p6sXu{|m&6rn31eI@cDsGU2?1*F1p#dW9-jK2Z} zFQu!(A!M6+9U+Jw7XFe(k?f7Q%Eyb%6d@dUBCnZ4TD@qYYeH?{jQJQK8xz&8)Bs$C{)Az7{}N}Noc zQvl}ZcC-BaY zyo&U#F(36-wi1;o?(P6gTa`=6tN9gWvJrw=@#UnrSAzpl1H_v&tlJ2*;*1cMJ2^XU zz4^64psi48=d~Rm2UopJ$^QyP{0(M#NcJNf#@I5+DkV=pr2M^RaroD+9uo zx7f6iXmylaj{n`_+3U$xyg}PD_{T3k~FJ21?(#ic_yxsWY8SXUe zIe%18Tjc6#CSpxtJw&$viW!Z4r49@R8SU4kn?L&L_T5OD&YYUkED~0sw<(~Zfe_b2~zwFaaRStwcwPqYY<4&%(*VX%^ zgfui2%VNN+%HEARN=?aw6s9DGrzI;*PA86g?1!x6p>u90V0`)7sJ=FI6;TD2^aHwo zJ7N6-7=pqnJQzRQ5E>hGXnXDWhSBnpN6+^pS*l_Ch2~*K)_UXnfn~9QhRR)4z!wNR z53GI(hslMH8YxJMM32U*BaREI|-Y?l3Vrm;_2_${%IhoLNXdNWW|(w;E4N zw8>QC;sLhuSIq-Z#|`S~P8_$^k4VV2l{{3#R@7kJvQSVj)Gh93NSa$LKe9?(oR3_` z9JQ&{h@);iqBllov%R~o`xHzvQiB9-7O-bJC-prgmeX>69mZ)G!`9Z1&e@QnqHXa@ z`Gr$-qQsJuNhObEN2hK@yD@Ow#`X!Eh9$VZ2mUJ-lf z=O&(dbl7fjLeyE~Nho9*GABB$=hqi|k(*5g75MQt9Uqjv{sOy?@8@s{m?j1leucbmWlW@0{9E+<&Z9HoXbr?BIvI?>ChdF2;aiHEkJ~>jx{O$T#FG|}Qz9EDv z`zeUyuft$Hj$aGMPni%t7vC%xEmTVDfv`%D^Qdein1=f6c#SVHMq3YGZ=GBXm28{d zN&Y)n&+J^ypVIhBs=F>32HooI=j%Yvi1t79SRFXMo7dv9;I>=HX3Zwr}Bkv*$J9ijX~93HL{I@2iUzPg}WMQ+u*wD5P*#pOj}(Jx*~ zHd3`j!)?VD;9@6J)tixII~Ple=PF-Sx2*my>nTyZ1a8-Cd?CE~x_H>gQtctd?R_-aN1{1Esa=B-~SZ0e1f1XuG*^J%oI- zogO}xz=FGu62_af#*ODFWlD181h_B~CS(o>5(X)d770HVbs(-?DH(kTGI2U%(jgz6e*O#4eO+yZ1@`6MpL$QV<39v;x6v$?CUPY8 zZUpQ<&2H`5C$c@L%>ROy7XXhNDQ=;fo+QX-&Sw0pU5R+cJB)$8o`ZjY&yhqUAl!Mu zmDrHYFM;E=@|j7Yx0<7q3-9ZISl(p`ZhX2G-OoeO=78rN0Y9w{YtMya+pW$2;wKKY;LrcTJgc_Y{lF?on1NpvgAR zI`EGP1lwErSCWa~49cLoZd=Cojwz#)xS;dAwH1aogc3=G2Yxr_ME$ z94Ls{-#n8=3*jL7g?Y?t8)P>M9rXdjnns;yv=ZVTWRFLGyqga;Q?AhkaZ3pk@`tu__#)_>CN%`u&>b#^a-MM58FodvU>6W*r;#C~1D)&5ROBO*^w4D#Zc+l5FqH@7_?^vgM z5yMGQpf#kKx7cDz`YdgqoKwiO#sUEKS= z_?n_jX?YT5-&gS@2J<`;MpmV)l)%(ImM-x>m(UKX;IZvB9x-5Dntkv8qrekMVJd`+ zwh5LL*}EB;fs8ghyh}GDvpkmG^Zde2{f>-9Y-R*YB!;aI^JH|B{M z9n03_?CVr0GL-XS1!Yj`J=s5O!$G-&BW@@voGEXyW7z*9fHm!ymS+;$Yu1^3YvaW{ zN~fw1D{-B=b%z4iKl(3E0fXG%V_N8LA`FDo1|0R=wo2-G*|RI;=cLE4l+27)oRXP#C+HW z72LWoTfjCHn3BxSo?xv0Wg9}TZ|;)~ZQ6Vy&lKoQemHZ?Br`w+1bZN3qVnhNcX|mu zVip!&vvWjy+PAMZiOdqE2igM9t{Tys)XCfO4SI*YyP=HM2{O&V5%@HP_v`ml(Cg}H zRMjvvz&kX2dN2bazLoUoXmV~~@}JTP+BF_$#Tc3@I3iy&sQ%J=59Xzm6}vblatXy1 zXSQ1unhCSpn3FAaPaj#XxO-Gm1uWN!DF(9GGoAYmG_zmZ1L%-gQDA3>R8`WU{Z<4B z#EnlLAT9>Ukovo0DRvZ7c9rLuyISo0gHZxoZbY!}>EJcb)rb*a_RV3DI;F3ANr}%X z@QF!Q5|~?4Zd7W#DYRXSs+7I#%TT8P5A0Ps|CFx>ax@jHs~U~e)OSJ&`_C|8v?2Kf;WN(sKG$B^@?ekx z5C&(<(-#{pQ|DFhK}rwbhr5~?lp7jdip9k5fSYxL{$$dGrUs|@>7ZCoK}I;1#Zl45 z{Y0FFiEW?>FZx6ZDxKzfp4)3kt`f^MfVEhL=2`J={u&!{iuhMU%4to33Kv+IoDEj_ zof~pxko493h%OFVCE8Sog_Wmw9)rWP+Txh%$qOh5!6X8bBxTJnFKWTPYejvUT7(d1p zJ56uaeHgP773k-YJ%`f{F}G(FQJM=>zK-g#Bl?W^^`w{5OPYe~#Fe+0`h3Hpyl<+mo29W*3RqWW0+6*iOPrnljwHLaEf9`(M>@o2HIdc_ z<<;ZgyE?zLIg#9Bs}m-3dn=>d{`(_stg}=&G@G>rUR7$E99Kn%cxpe8eB}Dss?FP$ zk1MDqf}Cx#-6vdj;QWg9L157?MT%f~o<0T_Vh(lY`M`#Cj_{rTV&0DfGBS29GvHU~ z7*AGwT$z~m=F6q~7BN*=^2)Di$A}VO(4_zc%0fQWVcK6|%bs^CK|JBN`05PU+n$Ylb*=Sj`7>%7+wTvc9vKjIE>COHhb!x>h`eUAN=4f7_?E)-U`we#6i0{9AXx4Upm3b*6^bcEaxJ3!r18}!`QUG@a#Lw5h8!s z*!(E>Q1FV!D7m1#pM!1rwfP&OZ5BNgCd9exv0_mplRx#C)Il$Dk+UZUgQJk(VVPl( z1(AoZzwfl*+1*#*nkTx{d-O@VC5TQxs{ z-vX--&XV1+oRtItxO~{??6=w8hl72a`tzD{T9VC&gw%l^)sW{MwC}Y>vFvo3v_=kM z<%s}?-S(L-CpPTDCTzW?I+I)_A!w@3IR9xy8+gf2x3xY)D6k3{c5nX4T=RJ=Nl1+V z1UFQ}n5#|OYrH@LSm4{$jr}ew?bo_An{kY;8gF4lRn+_nqDRBENq8|lnQW2?r+_@ zx_)2d(B++>GlzCkqyYJK))*=b%dJD_5?#1FRFo5Gwud_Nr>oV86OtKFSc`Y>ZRHgX zSu9dcYXC1fx6}1uz{-=1@baLISDa-e70De*EHJ1Sf=NOd-k1)V;>1}`gEBNYwy;w(JnD4Qj&^y$q=7xj8{7=%#LG+vub3G1C>gm6>Dy@)#|cH z$1+%b3IYHnGvV&$)^?`EYPpAE1$~u6f32XNI!5=-L7Rbx&ru=jx#)`rjB@XO7vdyB ztpH5fN=~J_q0n{VfIY}J%Kn)ZdHy~Mc8rFbOjEti_X<^XHOj_W2Mda%!x|ceXcU&= zcvTkLeaM6_SjX1$S&vDGG^cDLk;YtJ13Gtec24-FSPI_jl&QA0D#1Q8sbC&aV*WqJ640>HQE zAJgfyt{BnMsFIR)OA9t&u-F%#n9R{W6WmF~)rtj;4S<2P`SJ&&qIAs#Mfi;CjN%nU zcTqDc=p#4=cgc8cpS`aOn+lWVZpOj2Z`o%8R{wKRrn@drL-o0aTBy!Vsi4ZxUv+cU zi^CW94*$ouS#-9=R@~Y^5#f+MCYJ5o@3&N_IT}@iz6zjSOKGwJv9uY(b5gpWGe`T> zv}3hiwv~{_3t7lEQ?ust#{wY$=>TNiU`l?fG{M_4Bgw_*O-{;?+L6&#Y3kUT88eKb zB9yFs=FjcsJ-j^%$@H|weEF1t3)V(PW&0-f15~L{CHB4JnO&w3cgNZaAZgzfeTdi59jm|fwhUog5G!NxLuj{_ha4)3AV!p)9w>Fy+b8RO-OupHS5Rs zt%g#>PUH^ouh*GEyyL=J3fX{z%Vd40ZUm=%0h+KOm1P}tx5wv=*-KT%Ti{bGMv=UE z(s0>i5*t|&Sm^7zB7Vog@&jg-A`;{PRjR;eZfj@)0wln|xoQl6gRf@gchjfN_ttsm zOxRbBKbzLGc2I*2mERYdO}gob2}>clDNmpBV1mlqyZ$}RZWcmZc>`2qd@CJW=5`7L zZJr=cT;>~KLc1JJ=$hQkS-$Vqhv;AUVT}b*;3#h~-do-~a%vJ0|CjQ(= z%A?>cCh_I7AeUfx&KiJmj>~TFR0Y|a%f!{Gg7JW@0j^mB0=(1wMl&bDefJ`PDuc8tT1f;* zU9M15_7SDUGMels_&NnS=_z7}DtlsbOQ}L!Ngm{z6?0zOh1@jAMfV%_~_*n@qb}*!ktyAZ>S5QHBG=1D1OM3a^=0 z3vsVm{cllOBaX3Im@4#Q2#XJPp?~U(4Kuot+0?>cSJ|@=f6_A8A`~w~jgXN;{O@Pq zuIQ>~Vs>xX34Nphd0RjXvlGK!^b!K!A3#+{BliFFnS2=L5x-cU4TI;5AvPZeTTR~! znnQaX!xeg4EzdN`eR~%Izmu$XSYCDJ)@ES5t)ZTic4%}E?^bjG2C@yI8C3j$%?w*YG;Db0N$UJyEt?G3yA8L{%ozp}M|z;J z&8tf9%m#Y)G~%`Z(nKTEAn^ChhB2Ar;nx-*nkG5EJz&@(=JYg+Yc5^8qSu4pROj~- z-g6i_4wD^!n8>Rsq3)Q#UQPd$;jnSmi1mSW!?q?3!5cbO_=x+n2Z!_%e{OZVI#i-5nPhUVh%Xf4RbzOusLwEYdEdXlkaxw1L2hpYnUkXeeWbp$$r z6Hd29VPhgQ9)Us=JLrFnxcZ8uSX zxgccZI;Ct?0{L?qI9q9_oLTN`pmU&wLlA^}-_>P!T|Dzzu+j$-1g6kD-<|I8+jkDq zEYAd+7aVjxJzyy}7F~!7W#%y0^ko*?gps2FA??ACrkZUz^C>PY4c3u_nxopvuq>x& zws6-%bTtooXZs7eWUG~*2H+L<2}rCK0=E}J2{WW zt@JUfE&V=P4pC4=UZCl!OLLyygz6abyooEq6ZlESlIqOp29TB+X-gyEYzH2~R-ySb z;9DUs(VKpm1t*EUBS1Ed5a1v>mVm+zLk?m{)_o=&^`&jDH^S2h@WT5gpO3y~=v-^yYyzYP6)y2!3F^@TSb%?SVvYt$)a%szq=4uAMfC z+tC`3%Q&A4awvp|N<$`hLV~S=bSt54n!rM})}XS-Ngzfgc%09&ZoSO^&(ozOxM|AUKw=au85)q_Ophw&s{bFah2_f$NLGDz4YW7XyN z=*HcgkR~~AK~S=1`@loak*CxV7<{tkd@%x8Nx9iHbF*n9QYSvh%_p?B;QnFKK$@Js zmoh7r5N)H$0PBaY%YG*MS}r)u^0zrRlKms8m!D11oR_-(U-U=m1x#{k&VX8vV+aiK zcOLH7yi274mUxoYU|VKwutH6{*E8)wdi}6~m)G~txI+;DaN0ht;M%z$(Y!N5SD!3J zxojMQ+=shUz~>dVZlK5DP9(vS_6EfE9IX}QFptMC9+uI5(R(~89KV5v4!lu{$e|u$ zDOX66s8h^SQctNG6b^f|T7Zb}P>~pRWr-3{wga33PhJYPy)d&3IXA*C)n^))|5XL9 zh(PZ&u3zy0Gtrnb%e9`tMwmAm6b`ph@FFQaNrdDpcasQ#1DQJnVRx>eMN?^CBsinD zjCPxnay+6yg~nNe#prDXPj}U#gG(cg%U3+bvr}j!b%ll$VoJ*L1jJcal`_*kG7c*c z+Y963i1IHhV}5&_%(KuCf8AA_REHDvVcZi&!WMrIb4j4c|AmdZEaK3Pot*-bY|u`c zE1|@3_)IUkcIs1j)7YJ22n4~6j}m}jwnGdQi&(WULV#N=o1my&UEeyH4W~E>A^C2g zXBFALnjHhGH+lPd6s!3~SQQ}NvgHmOxGjM@wmelsaLw!032* z-LtrDARRqgs??bz>v81Nm{$iB!J}FEl%txB&ns7DP6K?0=n;@0F&;FYSf&Gp1sAjN zk{n2&KBALUjkYCax9^odG*MSRTZ9RDwUEZ_OP`+ySD;8Ga6ujOD$4-G(H=g$wGFSC zEUo0!$xTaLR9F)YQUL5t_Nxg*v*?A#z8vL(>sQ6>35gr95sC}ucfkV{>=S;X2A2*N zB=~~c+&;22dp(}FR`cuU9f}J~??2AzXyavu^I*3IX?e6gm>{N1P#v`SN0;#a2AKoA zo}rZa%d5Js0RKM#z%5IWNi;>OEkYf4Zu=d9-};AZv{CYWrp6snsgBMn9ar~h{zw!GDUje z2HR>NFexx0-v2AwR5!Wxh($?p>+A4qxsq5!x0*d}|9&R=jk{(+OS zkWKGW5nvvPrRD_?w0YXM1b5zdWIH8vmynUKsN=tCwEt2e1svtZy5sr&+l2**#_LZ# zpp<46V9F9Eu*?%tJ6^N8X4MqlzQTnr5lkcP4);oXH-!7O@w~6>O*j~MR)YEnX_t^E z{L_@|TPhdYbgad?TiJ%=lrwW0DofGq6gmwuF?~c)-yZ)3&JdX(R$8wUYJG*%qrqP- zFFKW)$q-!_#Y{!KFFZRj{hY4*WR~k5{qY%@Q@J#Ni#EF(yh7C!^661K+%b8J*6=Ev z2A-VUQN9gI`5@LKfiVh)z|?gbN}*Aawl~xW!yf7>@2FmiKaL|uh1H=vhcAjwY1f1V ztaAFPnm+M`{R^3~?P8E0?$i^Y-R1{5VmyR+8^q-RiG4gooiGy_5bDohAKT)qG3|Cy znpo7)gUosLhCHU$7xd~>06XggAkp5RGfYOB3YL-2NF;o;Al_+Ly|lW!OolI=wtsjb z*{v=ynaSDOmltCC;#=`{<}*_U!FSYCLR7!?G%J9kO+fF^G`bBoP6)iP!}d01^q=43 zZ*A+BkMTaUWL?GRR%Pn^FB{qCa9t9yo)I&O>rO5&z*8K+_b&{)-f1N3TS%vxHaNIt z4Sr4He4L(j2lrZ!i5g3C)U~W9l;ksa2BW^uZMGz_0+sMnE-DvL8WAW-_lZqKj{;Qs z_kj>Nud>Mosx)|qN#_@wb9cy_$i!P#ya@4VMev9ReVOw}k;KMayU>Sv)aT?MFID3P zA?Haf1zYB}%=h&S^In+C-V(@%)w<7$Wb-F1pajL)vloh=)A7qy+L}`DOqB zs3>5}hj;k>*JMZpkJFJ{U7zi!)2T!WwlrwOnN1-%h4*e)!Ck7Sfk|;`-)ML6f>J<{ z$fyXaPG6KX)6$snIOOm40O!`|+Eae>KAUr%onTKr0|K?RF~C$)(?OS-nPqSM zpi8F#rz%s)M=MiBh3Fo*7+|-fGJo^5lpE;v%>4PNTd8iUvo*au0439JuNkw0bTkKd zG$X9R;1dA3%qpMAF@u~gfQNyXojf`ZJQtIdK<(Uqse#bDTOeVw9!GJws_+h$Wjiu) z@>nX}6DwU0hvf%YJn<+vYqM}cN&H+Kf=6P-I)&v>isP)#=et%cuX#Gp!IQd7x28H) zhzzFdr~y_O{qHrPc* z)c?XdrfU*Li8nYay-f>a#Lf$07VR$lh!3jPZ(NB$2eEwb>(uJzW;Wm+i$Wt^CA6yl zlOZ#~#T%v0JM9b!AQvr$kw64eQb=zpObj~n|2{aP4J42I?s(0wz5fD**4;T<2dlE> zk&T28sKvP^Vqw`vk=f#k{W!($&+`nV#Ou1>vlvUIgH$xex=Ei|!M%UCbiMH`!}r8# z!bX_q;GDh=`@$Lyp^@y}yLn92Duo#B>;`)y8KxC79mtJ+@O8NN=Mv7~>JwYLTm$0^ zcZ|0i(<=B&H(T-COU3h}vDmo$Xn@oaMKNm#iiILvjlm@mTG4-iikGB96F!%^@;3O( zM0)PTB#XthfO$r7rzpk9SjpMAU-UF`cT+{`l(pFSn(DzTQLBFRl{A8CLJ5raxkFs-LCeVLGjh+0eam$5+ZZ5f zF8q_VK{r7T6){k{hX&kf&BLqd=4WhT6nbuWUDKYdgdcCNX&BMGfe4>8;H{Dw%ANq{ zQZ`&Wn}L&3Pi(S)j3S~342fF(4A z#7S&XB(dA1)nKWF-6OBz!AJMr@gv`ZZQ7*Z3wG${?$Crstf^%pkSnr~I@`g3EjhJI z&Q@M|Sn{eZ&^fbUyB|eSTEJa3317?)6#)U&Dgt7%r@xf*lrFNOC`Pn`vKPMI1|;tcru{XfyBD*1{s>!zO|W! zIh$~s#oNn3N&%PBo0(M)1jvNIaOCHQR|#a}Hu*2b<c`BV6doPq1AhIGe@t#xmp<@&%tH1>L-w8c|tn~RwPZ+=<9CLc#Au?kmE*RiRIJdXJTVzh2B?+a;@T?v&2)Ch>o z^68{|KB%mz;)IhXKoS|$3r;SVE$j^@bGHf*qFZemrHXan^j)(dh20E4N3hYY9A*l$ z*40b=Mtv1Ljw~NBeS@?}9qg|DZnx72&<|q6w_v@0bbCK$QWrdC1!y#f-9c8oTA+|w zrbr0nBpo@K70%g#`Bq?4-|ac_J3+P15W2dFpei4WijXt+ZQMc~sop%qsnSE4*mo;M z-7C}uuWzgpW5268(rqL)4mB$fF`Cjyqbd@!T{}QO zs8ze^61qV+n}Qfdx(}`KD-9DWsXDwx&_*T+Vt8K0u91T}W0Pt_jsNdor!}93LS#fP zIt0`VND-AeraQGI)B3vEf^9#3T>(Z_Phl_c=MawZkeA+uMBC0p7lc&{fg^x7jwU*v zECBc@H{HJZ_L1}<5N#hbzvim`Bnn+_E3>0a;Elvz z(5P0;B>D;1EHyvk{5?ehDorr4Jl@mvu7kfnJrzf&DI;`(o+@WtxcXR7Up4lziKd26 zA{q7GbMcFi5oSq`k%Ogpw2ZiqsaJZD*PpT9=o$Ep1DH&M}-qi;lRn`*vEd)cR} zFR1MCK{(u51rr1uO6)rEV+{;--`rHgMSr{Dr=&{tru8*y74EFf-K&4Qxm8N`poV8p0|ONFki6p7<6y$^ zkk^Uts;T=LXdLBiA}Q>%?f z$fZYRvgDGc)KrbXg{8HOMm4B*fy4Js0Nxp_EJ0hLse zB|+i-`cNPElGHIgZRDANMnpQ~9~;v5{=XoI;Kw0l>V3IAdi9;J{tgw9Q-+Sd4BbZW zFB1qr6a0sQUZde_!yR#Uw{uz=*nDU^0)cZyga%RK;jn~uoxzRTs_V$5)O93l(L8yB z;S2wuNRxEh9s7mW-JG*b!d+J}czwuCM0yT7DY1M@!nb50Bq_e5=CmNnA?^gb7Thf) z9iqi#!oI5u^0wp>#M~xHQK>U@tBh+Qse4`<))iO7)IxK7#>@uGj^Ic<{ZL{ICnJAi z`==IKIh6m{X9*}trVsP(G3xx*n^j?i;QC2&i(~R=inYkFF(X?pY7zsHUIsI(qNi5A zpJ=V>>WK^o_bir?*lzjVaTpC%rBvsKuGs_tzQ9H~-TJBcZc1%tM}sYrY7S`8E8-Ocg}I;Cc@4tsRNc}dJx3^mvT zo<7OCqDJn_Y`1E8zTz+h;%$`9h|QYL5IPqI^8~A&wi^7pDl1;>K(eP5Sr&XWUx&ik z%b~X|s)%wX?3lT9uHgNi@~Hlo^zF6R8>--z;Hh%P-=>akr|cdEw@bpoby&B&PYHJB z8Fu|l^wS!C0Tq+LqJzfs-c2F>@_jL%6E|C+087{F2#>HKT;w5^D$dP)UE;tNHX0& z{6NP>c{wX#>FEUXr^$gC$B)CaL*QABLULlt;()oxP{L6z5PPfnht|bcFtkvZi}dD2 ze#Pi?Zy#gxNt_p$f{2!_nS*P2`%ZS8mA{Py_ zQFWCH`MP-*S6?$o?4+T6w`?$<7L}v2*zpNf!t&_;zY3BqkoQk&5G}{2?QFMbD8KOI zi!n^35A)K6tTd_6r;%g;tH`EWc#ch|q%0}Og83q!1^Z7>HLp-FOM)DwCBR|(4!;vm zDuhyGybs4yx~8d?LN12bTFnrgnB!^Xr#*7SHZe!r0lQB!6j`+NCO0{G-oWLKypgIA zPvaH!k1g6Mia$STq$_dzZ1Py_-wUb11=~cCZ*x)E<*(lX5TvdcbtCGVfSdRj-7c%?L2yyT}4q^(l*_?{idcb(j zSE9|9!^1Ev-9fsV09j4;HMF>d6I&Kl*eM`476e1b+r5k8E`v7D1dd|64ya(--W@Xo zcwUdk@r=rBX~L$LuzORDSotW>o=ZNi`5;rQQi}1wF`5)6%nzP2opGW(lii2mmzU7C z-&~Q|7&E1yHIb`X8lE%D3##_X(({Z=KmHC?L#@{%HMYNJRl4GQD{KMlJ zBUYR&SkmCOlsUqyEBym@cE>@vJRbPm8INm<Z^;EMa{ANd8rtF@tFKnB!&yFW=fK#Ow@dY zA3!DJfW7*wayCv+(pRwCswJEjS~n*S;lC&!fM5R^xJ`s~_!WbY0D8*v$-T^91EPbA zXc<--mVq6N0oUBPU&b_(d4R}>CRgXri~@0=A?$SpxBKY#7~e-yo=R4hMQ%9m6}*~o z9b>dN+(OjvH0GxG?Ib1->F@mjS2z&Q^e7}8mJc_blU;P{mPkdN!~BYkZ+cdNTP}x%$AVq7DOxZuS29;IVpmtPe+Ue1P`D)pt^HjQw z8gr0TX}G!%dKJqJblXFvYOLh5P@yg}M-^56TM9}-L2n@=M^vtjvvt^1^}x^DF`r7> z$qbq`^#-E(OSIgvl>W%_i1$@DTe!HXdcAEsrE<1@AH2-l?|HUkQ&vj_2y(7F2nzaS zB|~a7oII4`9pRLhM$dOqn-z+cQ^N?4~h9hWH1Xz4NW`M9niV}|b0xukY6*0QDhc+L!9FF3ygxTFt-(6@=Y z*7#=~LAeVXsYqT$m%zc_&xlVB-*sn-EkQHCNXmV?E^Vb={2rFG&LuI|llb&JEP`3m zqIYm)C;Bvf>_ts1cwS-HUNI8IeLji--c`nb)4L2+y9_^s7>AGaO|(LrRe+JBa5Gj3 zMYYQ_n~H|H6Q>;BbT#!NN`OCfNjzKtNMW-f)e+MIChTwxW#w>3Quf-c*`I)NW|~$^1b)2F zf8mu812K8}*-*b9tPHKqNdEqU1I;!S&9LR(T+KE(E)zf32GdY`%{u}ODCZppKQO#g zk_}|TN`5cEtR14yUBnoYvzqps6l7(1CIo!r3b*uDKjY}w364ye>VkW8GK?gEWZU#44{?+Vf zXF@#g?R1$}Y)Hc4jT#ylX6Sk}I35az*6Kyg@27j$7T$fRJ{JHgH5Jc zd*y#&#}PYazR45OaDLA8DSzEwu>EyV5zR0(8fXmh4^{> zmY<3CJ!0HylH}T+`qI{WN#;85Tr(&mezoKsa&oxW5gcCCxr~4y2|l>&wi3B}7}eK0 z0~UeeLvO2U%2E5|P4D&)@qCN6I`L6Nd0xjP!;A#Nm8gI^xcr!2#v6pr4j-@4C4-G% z(rFu?=@|yE3OA(RPN(XvQMG`Z)M!|6<&TOLgJHe*O(%AKY~w#1-{y4=p!j>)5NDVMkXY6m1-@P+#l+wD@n4aD1p9_6NR#Ob5~n7xt$JVOIx-Uu zrnhHtzFSl@4lfvCi62SPVH+wBm?d7AYm>{~AsgRZtCcUoM4N!(*Q4MPC7NkRWIoGC zGV0xXBFBR<`Z|G5R0&erPtvaQ+ue6c%vnR`No!A78{ag&|6n(pn09~d7~S>g8*y#d z2Dc#NiZonSG<`rOEz->%0ExygXQY29X?5ATZWp`-*Y?AqtUX8K0bD3oT*cx^fM};n zk9$h!;|vhT4piG}zqkSjl#B9#`DUgseo?1xd%wOb^3EJbac>XMP3D+3R2EY z*^-Nptzz~e2%`UNzw>A`Su&b{8t8HrBdyb*!A)kC8$k?p-TYcNUeoK5kbFS4x@+v8 zqWpnO;(flp`sL){ITC!NOH*Si1ng*gd&1$;XDhc~>uD^f1Cz}&dE**N7_EtEo$0KI zvB^)qO`e7A6P$nM(J z#`ZuLe(6HY`@STvk2^QCVubxSrK;2E7?t?(K6qu&S&+cMAJQyoZa4Yyh{@kyUZxX7 zc=+ksq9S6=`1h?ZO*|@*+fWEzm(7cP3hX;`hsZfcol&F0;tbMts;YZ+HF{`)BW#Vo z5LDO0%qB`W|Gue~j$*!R@oORxfN8WWKIpGCLc z8e~{!nUue=_hQ#Qk4``HBiC*&(7L|o`*%FtE{v77n_sVWqFV0=dfu&0>UMUkITQ&R z7(!!KkwaIjGbZf-TgOoV0frk1i4<}Je*eC1Pc@xMwJdmQ7&Zi8fl<#oIFYP^NO<3N zWWd@1!??|_v6&^WJ}YutgTV@22Ybf=dY#-n^k0j8@2ZGj1Z*gDgF z_4u%Y=PzZ{U}7+ZJ68dLa=yyVt3jw~!q^jXT^<|&EN7o-mciwP3%w;z!D#wQcC;e2 z|NpWtxH=Ig7}(C^<5+J{CVy)@AD`qgy+;N{PI{xH*AKgEu4POVNIW3B>I6q_QP5Y< z*=;C-Gp0f8hMHdwF`4vTUc zZSP!%kzyL6a_>&M>sX(a841u<(q2TS{$B2w}*rr_`GB}(7Kqd17_ z<=$H{A@F~p<|N!u@1aHy*75%35Gt5a7X&gUocN80CDx;iBH-lK#w64#H(B{MRvtkk z;Z>E#ae(5EL5Em4VU%d)vqwY~1e+Fsa}}(uedQ%Wcl5Fn<%a*d_`dONwYJ7*SH}wS zS=_iJv~2jrZPV$V5@TOrL?PK($_$R%5{Y2onbef%8t>^@TJugU5E+Lp*C{8)%Dt1s zs^F#gMkZbTV0^cJybHQMSw)gg=KdY-Nrm6n4WBzStI~aBIQ~VWYc;Z3`vNfuY+YtI z#5#PtSCZVB_C{o*%~U*vGW=U081UGvL1^UZMun}nJIaC=UU00=I!oR~juQCl)O*Al z8@j@GyVq=Lf-5IMR0+62s z_>+1{?1<)aYT?zKvm62Mw+pB&49fAf6z`P3C+#{7=s6{EeG*r{1C^NBkL;g$nH|Uk zI9V@*Rpw^Cf0TPDT8F_UPK#(peEQnc16Qu5-<*; zejn+-QD#+3UT@W65;-#~{|eSqL>tV-aKA%TO(0qN<)RtFr~L1sym7XqC)wE@N9p0% zp`dhRJO}?96NP&C>R?$v!!S4`w=(kw*Ni9C!Yz^BmF$`#m=QvQpdX%q|8vS5XiAg}rFw3CaYt(VgHE@?5+JLf2#1JggU?KS4)KtJewq`*H3!uSV%|Cxz z4S5mB39dlGL(94XndF2QT|GN|(Lz0p3CK9GZh}Y;!gxsJZ$BJ*53>?=^%Fuz2ug7@ zt+@Ff+2rP)V?Y3?0^LtEmtb*;!V?JYH;2&-wOiVW)Pr`ifi?<*qV!=SYbVoTj!3|C z4hP)F&#ua!e%KM{2l^%7lh#!*%5vn1D`AygnkZ)CyyX}uv)1k{vKkztu?O4a-3WO8 zjMBu)3}jiemuaAzu1hhGW6NYohU@Pt;sqHW7BZvf#mijs z;s079>Ar}PAjqB)HS^f!`cOQGCN-GaSwl+(Rw&R#XkM4O*!=$gG^D;-SEzkJ00Z?-o2r^SI1s?Q||YULZCUFJHm_e{W_i+8loCS3dVt)6lx?#jylx zd{JOv=1h3a8W!ftL_6NUZ?8#VnRzSk#pYuM$wMy3;5Ki!N@rCHaW=j)IS=JAganRc z^@tCNt#BO|G?e&X(7T!;xEK9d**K`U{tiBV$N^sC(GE|nQZ`qjj8=MX!@gFScXHN= zYtsP%JICoW6;9yL-%y(Q155{Gg7kUryx`j&4wxF=b z;!&dL?JXwc$?tb~wqMtPj*#9MG?}6&dt}9k$1k#~md3OUor}j&1)@cvJ2rtqDLrRs z10_Nqe7i?JcDRxdtKa_)$Aj1Im-SqRGo_5uhHkCFPx^j9i$*;aE@2fl@fS&=zzh@E zGN!Cw)C=KvrHc4ji>1QWoh#2BK%UOdqo6mF_!}D;Kz?miM%oGIlWUIzU@)5g`7G7% zmTojtK%QH=`)DZCo>J4|;?p0Xh>n}XKI2?+a9oHDHyD3=);p0 z>{i}ug#abt9C#L2Q;8IYntpU6HrkMU<3Z-x6W=^RQ+hP6ZMIbdDj_@3etLGhA?t*P z0Y&z9(R`hMi(1j$TxH#iF3}j4LV9A zrV7n^|0~%GTGOI~KMD_8#9~chVXwWb9|6<9KL>T26-$KhfvfP z)C4%3jk%Ja6{wwFOaffv%No5bf;0@Uqt^_Y+8z16A!z$Kn#|a2(Gg$%!ts3qhpv;b zvH79dsTmB6`Fpg5I&6~~;29(pkn{IJt?sKaCu-&_BF8|KOxSBEc95{5mnQ(WiRPC}B9(1u#qy z=}l^3#St3;ZhZr!)eCi9T$Eg3!@Q)GU zCzEb6zYGNGgRnRYM9~%Q8`M5L^FXTK@tqAivwxz8ONX;T5A_aTxO+-KrBZ+SZp+|U ziY-X`QY4(ZTB7BCq|Q~IWUVMsR+FnFqnS&?0dKClHhBpSrOdbH2(B5rQYw0swpXHT zLn=Sb!s#U1Q6A|b|0+y=$>Lt-iX%qRt~iIK@f;e=1PKeShNU0-T2nT4>ujF|=e+26 zNSrxN7|DB(dwEB813Z3w*u$gEbBqu4e1e$81dMg{&4mQNm4>aL{$snGSGU=@8#ZaF z*FgX?gX%h0XDHTl{)&||@^+oPoA0~7m zWi(eaLE{k3gQE&|2ZQ_znh}Pdq(-~cYow|UxukE9#P5+rl~}eCmP6a0)dqtOS=5A(+BE;lblBV0;p7(l$D$VJ^Vyn>U7Yr)j9jxq|nCV zy|;n|eRvxcEE(FF>Sd;E$o#-^LdT7{Od(?e>NKs$u<0U-&>=+sgX+_-C_Z;g(GW(l z_Y`=(tpYc5gA%e8c_s!dJbv_HEuU{o8dnLZ1g_Xfz^PxxD=;VoEpd;(&$j`*8x31vpS$Q?|cefz`8P6Slf1sFf!2!mt=E zC5puzWtqaViWKU0?0o=Sl<5z+aww?%$OD0p&etG+)KgtT4~9FAW4G9P-@#9n2s3nD6K47Ss{+`567vFx=zqwH1%E z*`lx20ZTG(Bz)QyU%)`_DHKk`8@l5Hrod`0j(%7?ERifUaE%5j`l}U|Xx7>!ta};W z(@W$J^?tYp!S8VHAX&M%_Yi^idV?4v9RIb0y;WA-c_uTXP{xe+vU+MG&Dzy7jS~0( zBz7ZjDyY%#np7*2x65rQ~|#ZdmYyicqi5Fh(&ZzZkGm?xUki zD>ZaYL{`(5gjX(ttDxJ1x1vM-=kSFJ4?#R>%8M;OD_r2zyPGI22qriqx-cc7Eb&0z zT{!*EMWG@dgGQn#S@IU2KD*FG)M{1ebeer>Y-J0Q*=?I7wu@skX<#*@+dUS_+)K!B z!%pSy2?YydX_(*5GF-Ig5uv>0q2f!<@SQq7Q%#GzbhNtjg?9HvZX=Qx2rKSnA`(UQi!zGk^YBU`EZnMX!3XlSM4n;e_$YkdIFv|;1-J*fSh)kvN@5z{T2CnL)vj-QV! z(3$4^hgD^)9tx@d5#jW~*Hl$uW^_nAESpWJ%YaLej)AK~|1sEjNbaMnzSNMi`_L|M zhWhnO8gOsqVEF^z>R~SEjw+^gA}#;lLiQ6@(Xo3eHex@H2oZ47hx{o|C$o1NPayEZrG|n`~!k9)-vxOPnExZSPzU^@;Hdhpme)ZYN^Tx zqBQzrhGNe{nhAI=-qr82hiLI}G*Y4my^a~NdeBYp*LI5lNb@y(Zx*2yMV$v>+Tj*S z=xW4m1Yemg0MJkd8VzmDrUd5gSBiYJdht2zvy7@SzHzd|^`8@TE)pgNvbBg~6}kMC zYL0Nh{MkzNfMn^#Gn-spkV)rDW%Jeo^InpAa+vAGi6^K>0MJ;IWleXUK$Efc3^MP> zrLMENq6UMPG@7MKqwhOth&;@2p)hBa)r28>r6KD8T}O8>4kJHhlU(FQB2OHoP5QQc z^Od?^K&A?*g`!1vunG%&K{|ayqH%F3rvg6jnNgWEB5-N3*H=yVOr-eLbKBqu0ph`n zAFb$tYtACbP#cELD(aoIYx)V@OWq2jRLP{SyX^8Ttwn)rAYKAEeu&OnGg~p{pIcHF z5p)Z`yYO_7-|YADEYdqE-pX_pX9F#52cIc%BM$jsW4OE<2slPL$h#`36foU4$ryl7xNRwhhPutB>q0c+Zx9YD!kQT`naT^I^$XU0L4D6OuCpq#B0QRE(hDr_|Ag^h zz}v}o#GxcY5a?Aasj~AofVr-aFV!_%I;`XOotn%IgH%P~*Fs11Y~CaGqcnx!l=VtS zqHX5_z18A-fqx@)bjdp6JvwWD1Qdlc(orIU5G_ou5_Ppo#j~0J(lr6p?dun0YyVko z=^L>!4QWqynoHt&Eu641yV&a+Z0g}IQA@Byp^0+_ZWYqJ*NtEwcqu96=fF#wY#qD* ziExjjo}4*@EL3`xq9;ciqM<-bLPtE7M`WX-({*H9vC-3byw}2Iqw}T>yWD9ZgilYG z_SBE0`X2z>i5VCKOuEa*P@=QWlb52ewmoW_eZHAMR>h7JSZTebL9UgEN=#T^huE=~flA~7eY3Y~U@?s1LO z-5c9A*n!^o1Iv5mu2`8~-%O-uogJ9w#)9gmnIh|(A6A$W9;uvwmg3fI;AJU@r;s%8 zO}@+DhpUP7IkCE}=t9uBn4G51u=t4gG9CmJF)cGj_%ScAR%yu&6*OlNOzYw&EH+5u z9+82>hp;BBpj%HSAMhFID#H}=S1j@EsPh-e@dPf_k}bA~u5Yyon2!KRw>B<}v=Agm z$8?fyGj(H~OEhNg{0sp0P~w{Dl;zWYA;<=KnBr|tOCwd zTzn*rd#iqZ)G_M-RzDY`eGO&Ykv!IiwOSlDp>Y19?<+_q=hoA@q>wlbo>bMG;pC^W zJrsHwTFDm;WVo&;*@`A7Zir~>&A~TR(z7p;r%apvxscsRGZ5aw2?OaufW@2qpY#_{ zS|ll$(`$VuNh%556>syP?8&CIEz&lSzS>xr;{Fzw>y?`BK)!^EMe~(#A9v^Yx7=_- zw8nNgcru<}Uiubu1X>qO^8}rq@DY=hTCEls>UAI69^Me={2TC56B!Bv;mI*x<}+*3 zGXJkpZtvJ#MeoGPLSL<`F4C-^MeC84s{Ol9t#Sv-G~!t<#qR8#*@z0MDyhtTVO{h^ zpR{wqXn=tn-%2Mt{7<iRyXJ7+>>9v+U+dgb6WR5HH1 z+FO-S?K!Ro$O_P)*evyync3j(>ax>@A88EMeARa zoONoZ&t&MaOzuEusGE3~?Nf}9YbFdBQ^ly2BVLcB%$@xb+I!zn3dt0Fwk35b_g4JD zp#rC(2}FKkRf0mJJq_i)S_I+C2da$sr`&LHH*0G>xN!NVu!s!%!&}##zt&tT8hI(u zPX8otv_g8Ds%`~M9gvC#!v!NP(b_?5uwA>t&llwQaE$*Hf-w;?ePACOYay<4>Wtm@ zwq~58jNHT2t~6NxlEnpf+_X?4n3DNWMyPtmpqoivZDjqZ(;Pl4_l-zR!1uH0r5?a_ z7Nqf17?-T*%i6t0(#X6j@W&tCF1NGWvwa0+b0MpiDF7*RSW%?H=6ei4`$S9p$ZpH5 z5xvPI&N#$#ucVES_#(nkM}u`dgvoVIV;l2=5_b;tW4^xO*Q0I1ZKp>soeg#`$VBaEM7^x)150h)#;)wuz4CN0 zzkR~v^e=7V)*wCh$|eBUn;}LihIjp(6TBDqIpSyt?AB_&1qHS6;pQ_S$bZKuA7#c5 z7WY=Mk}%A8;7Zjn0dCl5KRT~>mo(T1x{#{YGqZsByz^7lmuGspBWo89XD7MQ%>6FA zi38yYyyGu`A}Kca5&z+%Bk&f2dnmK%nePRzj5$S=|Dp1O>W~)Az<`mngxH45Pi$K2c^&mK1D}r6^8(B%atwAEUFF?3)rkPJ>|Iy_Vd9B@I8Nq{z14EvAOP<=bjJ&fQc*j6WWj zQNL~4?28!Cd*T|Jg|#akNfHw^qi3^RaI)v8l#%}g-A#A|*(!4UmyzH7gk1w;r{(kC zwuiL8in3uy+X3>~DAc|BG(IqO*d6XvpW;@n^6vYXEHq3n<=gqL>rSAA;*pwM;D@^$ zrN3KU?NOdr-%R{Fji#X3vcstzH$V7*$SJ{f#6k_Jxa|ypxf2#m`{f$$rfrpv1NckG5Sp9-?>Wv|%_ODdC$-!l)Ub@Fu zAak9AeP$>R7U2|#SxUswu|0HQs-j0#WTh)H6l_>>X`LZBl^dum zbX_fnja$`BStqqM;;4jIMk|4?9l-DVRLXijeN{h9ygln>*g4SlDpWbmfE1s;-Y`l@ z<|x8aP2{@Z@iC%KQ`aW(R5DI!w;9{rnva|uQzuZ&nJ!*;-f;;bbGnQ9GGe^L+>&>-#Z%pHd3Crf-6mT=@yFF`S`rO6Txb(RK5 zfkMaEMy|d>FH2_&X>;Z;rR69r?eKhv_$vR`JAVdXyIv(wTk!5m{M5iMXi!`Q-u^;D zB^<&GSDoBpK`-MVX{OEWHKnh(8(ZkJ{vRnQU0#K~@lwEfEg)}Ek&+*!%S*f&@>`T> z<&ny}3gdmFOgx515ZlOw04<0;V)&!3${G2)%f`NG8c5389_~^gT8cT$1s0C@=RT;I zepSQ>#j9}>tsDS*POA3=tF#m$Z5TOSx{&N_vr)LY`gwf0cF@&5EX3c4xuvvaom3<=j~ddk^0ZVH zW4&U<+OY5>T+rcpei11AX3>{0%}KK{2lXrmU+|undk`*m;R5@0s)$3tQy6)JZNl~< z#@?r`KWZ_*H@kSGeJE2YW$7o4dYi*Up9{&u!vOq_Hr^=JM|D4Q=O9!%_Y53_Ngb(1+bN(p(Ubw5-~V`J zL6hJISu*KycvjxTAa;*AWPDZe(N8FQ>-x+^FSj$K_0W1SG|msTE@)V7v`3)2Ud0(v zdI7%RQ5;^9Ka^#vq2uWaL__kfmP@7|`{_a)n|*lJ9Vp|2drCZP4D(GHAvzP^ezeVN z))@hejgfL18z(u=Aut3+%_2)^bN;9frr>OqQAx$(F{TdT=24G za7ElgH%<1gC2PCr2Qgj%=Ld!SJg{;v<5Qx-Kyb zf(h!O0TVZB>rQnY~{0VQzhEd0M^HMx6CiWAgB3UxXwN*J@)3=3ji?JxO8rjYr# z(R+KT)&A#^;7-Yj!Zt{L3{M$ziqt@RzDfVbn7sZO1B)h2S>O1&{2(Xjt5xz)MqYo; z2vfIz0&dZ(XUm2K={eGCyWML%B7jtc8rrx9a`7At6a~!pX8k_1kJmubSO?k ze1bZz&;VSz@~`~X6S87#h}{!`1n&I;fI_hU{{CQHi6)P4l{mb}EMDWUOv%27+^avQZ4hy`LRBC7kpqabj6i3@Z^C**gN>=9)T1(eMTwGkWf z3Uc+;NL5I`8-S*WRhEo|uZ?Y(^BxH>P7K8dIL)1=e^08O3J-!K)YX-`gaao%L32RU zS5E`kOkki$B^U}s5VHQb)4I$tX)UBA>P>skVZErwA5zvw#2lDm_(E}|wPVkYG+#QF zJqbgzm0K_Z9JT^;%TRixFJVaJZT${udl@~ArQ4;nMHyRC{~TPs)pIe8()IqH@MSY~ zo#|p2cE4nNo#8c&co^48(|iW4X!!0o2xwC|xQ!Ng>6PUXLFI>Z`UjaEdbP86jg8m4 z_N|pk;vZHV0qiz0r;52Kp>+9>eE-A)=GPMTVs;`T++VrgCSF!kRF@ASoW;E)^O$dt-UALx zV(}=zgEsOQC#9v1EFEo%V*QyrHLpg9z;kgAC$VCjtbPT=P|T|OWKUnm ze?6`RW6oug7lqKHv}<*_zMonK|3992K3#f4$BUnJGB5>#d=q)Je+j(ASRUDA3U zo`zHIRL?+}jP+M;8XiF;dF)&Xg3F)T$glZyVGSh|tLoU0A7CUwdH};4TS|DnwKk(`x7;~KRa zb>8pRQWF|ZI%0znonGhI85S|Ou_ZMMXmyKTW7y;{oei*vk+q<)07;L zFF(Fz)z@=bT}o+XgjlOx)Du_FZ1j|5hi~6dZk6mCzqQuN7AB>H1$MnL zn@et$4K*SEMl4y%`<59Rcp&-(8)OSJp)*!>z5sja_bW>D#!uy5?iE-K87#0EexfyO zbj7hPdUsG0w1kfzA>XKHtFXwyb{yDU$Iry9nfz^=qgeLV{*7=#8`!j>zr*o0Yb)Jg z+97!nTGR7R3bIF=Y%`&Z6j&v&8bMAW#G_`tTL%iQ|Lt>hJ*6}nQwV1czQg?%Tl&fl zYlDQanz!hB2bUuk5tgi;X#Cs<`7{QbsfL+NKxmGCIpGZb{Qt_(kr@o?G5ttWk_!MWJHY_m?fwKvRmgFbVfhEaF{w@!mrONBSuneF zf$CdF^}n_Ch`&^aUs){sUs70s%V#o*X+tbfj-35%l~mU?wkYPM@0YzlYB#OeJyLr< zz~kgs#nbfs-9i`!mXMJ6&N!v|n~{5&AM6orb5GUG+wS%tuq*$g18Q9zKNX}g{2itI zE(5Uw&fecT9A>k^)9JhS9TNa~tBZVPH~}amC0Ut?ochI!SpOn3BvLHwp1}NS>*j$T z#edUt#<_7D4BhEnUae=$%DZ+fT&|I_|VAqvkoO9??MxW+rtg_EKt zrG*H;$t@d(Z?Fw%oGfIGiE_vS=aQMP)H0uNVL3$6keRJ6!sBZ_Kfit+(h zj+J-IKKOnbILBcnR(U)!1WmNdff2?T7uWNVnJ>m-`KL#0YXBOXbH-xf=86Qi=eL@lI1$9bC4O7KHNaa#&#Rej&Cxm)e1DrB^cv~ zKA+^kzXSErIJ{=Ye=H_mo`6_Ea1T_kB^MPyceIzGz=#2HFB6gALpJlm3z_6zB!RrluashA*aia2 z&>BX9oy47U&hoo>;k+iGab_!0s+?;V*txmGZ`~h)%l~y&+YN_4D}z6U^UD=?AKtEd zBgd7gJKUwCC94kvISy%q6|ETLLeh5J8rZ;u2y~^xCbj`ne3Un^Mn;FSFgW8PG<=LW zdtei2RMPn#stvR~y)o<34IZgJsw=^N_T*JoZj>eidI4%;r&-G zAql~yS%Tr)G@~@c?k#iyu>*CE8i!8S`1q*+k~U|V3=kG;q;a+NN2G8DYT^BCm480` zBo^Cr4*XN$ax(GeJ6#@r*|id%L-ZFTNi^bby;176_cfA*QFdGi}j(xPw z2_vYjNJMSV9(eihvtY?HyU&^PIhNO^H{S>o9})-Ue!DRrJ8?*^bH4hF#BIVvK2kErjlBb6sGR%eiaK6rW9h8kCB-lM6$iN2VQ=(&{qzao{bmxN2~Gv5$vVFebG zmIy^vcf$o=%|;nR40Se}{S|_bS!ncU0+E^|JAk@B4yYhS&wn?lNvV!7qnaPsvh8i@%l@nRmRuQ-=&M*iZRR z<%B!g6{kz?Nm9s@%$|T%kEGA<7$*U+_l!N}dqP;KO?^0sU8%bYPvQDRlA3<*`h|~79{LsSd717kb z&vh2Lh29jKUHydrS-C0*m? zzb=g7!rFB9$dZJZO-n0|N--9ZjN@R+i+vd7Qiz$}ZXI?|4#K z$678hPJikCu=+dls+NpM7TfFInmlldN6mY-$lkQ}k)=C0xu~F~kdUAv^^@VL%<={W zp3Av_M4(9a1KsmY=C~fIw+EPS=vN`*e2dWL^5ad5@a4s-<>ZGf>|=^Jkn*kC$(?rw zMmx~vBHJ-s=s2Am-~!egq&$z#bt(fvF}YG7MWclK!rL-q(t~I`8d86@P2lvh8G{Q> z#6r{TPZ{wZouXfOZbuMA0+!D;a=Hi2b3{RMohZ*>0)UzVBMN^M6+QQM+|^6CIFgax zX0y8gTqxuJ3_w$TB_}gYF$5>Q0!{L2aW#s#4;fTr`L=K4k;QHjhBxCD>DjYH6 zjEuY}3L$oDA>vgLAc{iY~`(2Q+1MA{Ielbr5H$Ab4 zZ{fRpcL&=cFV>27rchP)UV!Rz?)CUMnxeBS-PCGC3;9F-lGMg5)?1$^aD-TsH4O5= zc!4EYplw2aclkoKl}W_k z)U^|TT=HW0#vyyPW#DX4Jxk5hN-FT)ZGZAULh6Zj&Tt&z3S$F<%O07Q95h)t_1rJX z!$2Q5S}m3P<`82Ow<%BfZtx~&U?*AFh4O;|KrMh8n|L%nykSNAeQ>p{vFaGky3#}t zJXID*;4}Nb709!0y_0>zG;7f_Bb6BQ^&phz>Wz3^qE#9U=DzP1BY8S-Ee+fm&6HHum2$F1yyAK1Y5|0$F%HBhkA(FlUk`sHr9sHT6!SBjsc$j}Yf5?NEh zNq{=0HtA(@;T)9SyjdWNE-C|iN`F-a5IBf&23!4>#VMY6kg@z!)CHam4ea))p|0M{ zo5n|!dRO62(jr3WHuG?4)=$ePSO)B(lhIIUtFlZnSiua$ z?OCc57lLWIqbW{;lqjwJj^5mfy2 z@@Zw!Gk$r|^f;0oCb*LZ7moT)8hi`w(alf;VPYW+Sd?v93%iq@;VuL{U%>QyEGa0_ zVsieoO0}jU-R5Yt+jCMq`B3S!e{Id$nbETfx~`co7rki)E+fvEHf-vV5Ea2G9QzQO zJbCJbESrAdok2diDc+{M%MOkn5E>xpLR3^vHw3wIi7V#t`eVE>WSB>mn$ban67&dr zEJ$do+V(ae-3s*pu~cZ~{XFpsOT}1lg|!z6>Ge4b%9;|--3(pv$4RLh1c4);i9GLw zaQllkR$`na89#0n{f-M*&%Gxm#Mfh%^P!|d7epFIRb(QDTkag}rwwaDgo8yuu9>(~ z_M_}!4z{OqutfEQhv(fj!|aOPFoS(j#VV$24Q59slg!x`z!;Ck-Op9k#m?$(*G&k| z8Bs$=*<7<^%jRpuBZoTp?4uMXHJap5uWn05#4>oZI%Eu76SimUA*$ORK!BKzZ)x@! z-_SAdz7b)8XN)~N_}R9i8s(yVLJaKM6lpg`=-->O!_4y1pdDvbY~^6)e@1EKfS5%K6X07?b7_Tiy=aYE6mj`hhQj< zDx?XSDpf$=iPRf!bKnV?!1N0`_p$NM!ejrcg`F-Ig6^fs2yy%s z-9V=Uhr#K0a&0F@8MIhE9?fp8YFGrKf@qeUBd3ZyrCm;XS{{uf7@JPs0Ag%PgtgEY zSmB$XU8=mI$LekH`4foeZ0q4zdu#vv;=}(Kz)?s^%ko#fRp(UV?i$La2vRY9646-3 zK$6RlVVW8-ns^N;gSN4_Q}oO|&kk*%U6=jhY;R4&C#x z-$3_0V1VxbTrO42!T@Cat_s8*m6MPFg>-}xGEgqXm$eoT0vidcywcT~Mx2fXgsx?} z3O@T2YtWe~@^(kns`{x#jv<Gh=>WM(inj-o9T zrG{n|d)f7o*KapfN`=b}9nZ%W7uZ%-(bi@?K+eW*>918C{44-(+B-xLW*d<_L!uP3 z{q@xQo@q+FRQHpZ^V?GYkOs2?xw~i~OCVv>Y*O(otU^$tCU*Vp2yT3v4nKq2W!nu@ zHw28Zn@|J%W4L$UL>C+l@$iI&udp~$QmkpwC0yAPgPW&dxWwLDtPC&35eTcKW*xdQ zGg*vFupy%Vy>O(UC%DzTlD6`OgG4G_IA7|DX6pRl|4 zUS0EayDbTlQtb^)H|KPPq)t)&OVqd))}+TEl&7hHHu46dX9AZTcDq&KjHae6*hZ$6 zAQ1walz*?iw*c#oy`ZdjZtKlbSRXZ~)LVZKE+k*HWPds}-26Rk<$A6?O)L*pgk17L zg6q)NVTT6`GGFopEe*vykxd64rSh+DGT18v0}K*h8gcT{PIKD2(_i4vhM9UO3RZuX zcJ5zjNhF5R8cpr_K6Oh1uS?J8TFj>M&F-=%i{iwcs%_f;B<}z01=a+mFBL<$eM^8# zC;;%&ZlOm$xg9I~gueqMgRSz)ut}ZZpAjcB!Qk{cno#?_V^Vh(R8Fr%TazVBM~+2c ziUY=8@IkVgL^6CH1t>lhBE+3*5bc%mNUm|7`vmrq#hFn5Go%lBq%>M&kt(kUovy+) zE%>mk)}HOWI7mmvTu3$D?5CRr_H4k9P}DYjN{q&%@mr zR==$BDt1PO8awInwwIhJ)x2x=>-b&rP6&ORwm2Gt=7ZDuFnN+_HFDzw_>yB1wx0ef7CD#Lbt{LbI&B3|I?KG8ovt zM(k_$BhqveMfujZf}gBhPq@->@XGl>P67j}tIqn40R$uHzETFRIlV8(!`Y zTS8S`W+O6c4oEs25zkthjM+tDZ{@o}#Ke*`d@B&bcP&+WPz;XvC$nw#_1klW&KZ;M zdZ#%EVn>N(v#d@>#Zp{}F5)oD%B?P3EzdMOJwE>ybOm;7Q~tA(>0Xw{Y)~@<@;bw4 zt4B6_W@)$?TXzwv=dy* zM)K7Ms)hmZt6fXj_KXn(LlPVMy&B8d1*lT19P+(2>n(a^w4TT9P+UnDr9)nTNB? zqwQ}4+d=#6A$#gyS4$S5a9v6F#n|jJJl{<&X0Y5G5M!t3B3<^ogTzCaH-Z$>7~ATS zun{h31ZWu&7ns`fV&0fe zs>13xGGuR||L-ba=xXHDdt#p+@t$h`to#SXn>8_tX>v1AdRsJ|^~7eQa1i-6aFUEF zM6E9+0Dw{Nb>r3C-&+DjV%Hz#w=L)%E>5JRk8?lj>2K910}F<{<|vQHIme5K35U-g zU`%k482Z^ePv-53HyS7sfuTo>43&KvZZ8Id;gk_mN61+kixHTAA5U59OFv0x9M7I( zLrRZVGULKCmEpI`$;6S}XdA_~u|{RS{x8GgM8CBxl7!scZQA&On9RIn-0SFpe7fyl z6NYmtNR05-kh0QO68)c45gsKi!U9_hUd=$HNnWs3cA-JME0j}O>JM}uY5(#KEi;yF zy*dw5$}4BrOc3|!ETs0q_k~FBAL=JJ@IYETrk~*=`W*#9+UMyK&vstmMySo^olGFM z5&|%6)l`p4RA_JcS%4WE4yusFrq{30lnpsM?j~^lmd@2cy$G}XW>)Y|B=^fpvr@Jp z2ZR%SWlBLu6L4~RlCImt_1`U^!{3luG1unA#FR%^Ayf~1RMj9827ZTn^8*p!XWh?7a{wsPd z-~>`L@FG6kj*fSIcJ_USBk_Lyl(Bh{raV6G{WQv{CWHtukG+0H_PDypXZVcDhe{G} zNL250f*tUEsG{VSBW*MENyhePQ+^55#6o0+ktQ=RRK&7?S^*9kptv~N@3U}270~6v z%8U8dfWfxUpfbExJ{FxNaEZQx)+JH=UxWmXNIz_j8x%u1Eb~9y;@nbaWAivq*t9E{ zwH(-$S;H?qM9h_%1ExU?p1Ak)CIS&?x}N@TecOaXX&AG@(k>@Ugi%@VTiwx%iS zSDTkDFI~9W7ysBcr6yd_$VVebyBo4KHPW8pl z4p;S?UB8&FsTk`)b;HA6q3u!{*Ot9hgDr9>m6CPzZn(El4s*1Y{;Bx$!+WKT?0>H1 zMsbUiSvP`gYb?hO_(uhM+46)SzumW5rFRsaYL%e@?&6b3Bglp-txU&&#YZTm#MPoG z1nAXP%~rC|^CEM?rDkm=&3Q4)pOA&v3s4+(^}?VPQj@(#W1uc92~D{e3W7vl2~>of z4ndImSWN;h>t#Ufl#$U*-C$ib0>{uht`#mW+HS|G65pU7mv@8XL1-l)FZcDGmHoBe zF#Z~leyt}Qt06a+tLyC^7_-Z;9*{R0OBZxHPkC+|g8@eAJwB9@+8q7Nr$r1e82wV1 zDRI51f7ef1B3?IPoTGX9*_?qsm(@tFdD=)(V3%VfoX%(3D7U0F;meK51m3YAa=#-* zQ5daNpBs!Y95k2rG$R3N$Qvlz`?UMh3zPNdOUN?B@}`edH-Sa?1o1JM9e!yk1V)HQ zg=z#9>!?d56?_%z1knyucW5IrO!t=gSAl@RUMATuHx4=|0s%fvU~)+_%BNFoL#!x$vx>D-ZQlk? zF`FX^9C!TDZUg<|>m#EB><>GrceIA19>{*!Ycd{|nzoK~>1Y;bVL1y2iWvkH==|32 zBFPHKsOQm?l3)#0HKI}g^93LH&|TNW#7~Iv-xQ%PfNTg}i+S#rpaGJgW5r>}mr8IY zr+<9@G7&kOOHBz}nwEk|ya_5*e7Y33(CB@SkWY+dLh6hGmve`x!JTGgvyta2K7<&6 zT=b`gONdlw8frj#5C8IA95)T+4?p`carv5=WlYYkx-PT^RKuxNOZ;-!vKUutzW=03 zpNt$?Ii8~{T3IfE2C{973U@Lpqzgy(x{3Q|zcz);_w%8FPlfYo zEK5zr*+HD46_LS6Tc>2FGt@2DwPH9jyou@94ckh}nE0w9=zZd&fiM81MZq@G*qR5*NND>j`9)f z{3ivl6f-{vnYsL)3Co1947wK?q5FzxjrW_*Xrl6*qXjMNz#06UWnl-k42OITneksn z1g{n?kAQyJI;v&I_iUj|lW3- zL975;O;bA9S~LlL+ff(Hwd`q>nh^e_Rstd8;nRN3)&vr#3|clPGtpuRn-|n!@Fm30 znBwg}%^`=86>)MnuEmYOZ>`=dO)5(^37gKCpaGbEjcQ);=?7Vi7bRN5E}c~-LT!?x z6pk=mv|Yms*;#>KUKWu>ZCo895J;};an&UVpAeMZCixtr2KtZcs@fONnGPBFw6rRj zT`R%jD>g=DPd~FA-l)wO zcY;k42-MEzl84ICdgh}eT4JZlDw&Ha`+=AuR*PD=@;1v%C5aQo-``mF zwLb|wXJuIRzEfWyuB%~tM%Z66G+pV@1UBo@FDC-5StR79bg7AD^Gu`s%oMdp6(HNU z+5j%fInQ}|p5Zme^QWtfkjyZx#d>;4@slEomrb=M^=E953jJ;^6*F>h-r zTVf(_)=0IwR zwcH^IdJu?s$c-e%@iVe;&y+lLhN;D+h?yoY85XO%9J<0j;%oIvmq}7B8pp{(0Y(h zQ7cRYErC>V4{_tKWfSiSases=Lr>$8YOv&uY1=PA?W}Ab?on=-ljo%Hq8s)LpqQ(> zGT_FhSEnG92paDg$XUKfNP%lKFrJMR;~gl#ZhsjRNh$qdYdqM{UdIs%%6x|eVN!J} zZMLoosBb~d4mJ8?WJ6HJN$5ZgkVlT3xN!qn4-v@&xiHH}RDAmq4bPBy-P7veSm@B` z|HZ#w_v+@D0sA@ZLL@@v4X_~87|L}Er~Go%nk|~(YI_V`ZaExjQ&-GOVcr^9>(lE_ zMBb#)3u*%Q0a`J}PI!+E9WZFZ3h$b?iaCXUEqFz2jnm+3dQ2RITKbD#h0mS*7F0MQ zvvwP9{7`^Jd?>hC5prDD^jatpIpJ~2%TPD|o<%`+>uuyRi`yVuGvvBYQ68<_8t>;k z5a4xiem^Mdrx8D$+@ddLhzXByftD#eUu9}`@OyLoR&`nEgtmNSxv+^TYX2s=J%Mn- zEy|{uGT6VoRt0Boh=0Y#Wm=ZNpJ$^6(o0iW z`n~*iE*?JJ&WI9FaeBwr0sPuC_9eqo&e&;QM5&90IP?UOmW34At@t-38mKO2_B|)( zjtM7^byu5fNR@BmEyMUu{%Hmyf7qJ3t2^$qj6TQb8Bt}a8|v4HGmb;IL#1~Nz<#=M z0I*_%GkUdDR}7M)&{TF8%JeeYF6zx2D)3#L^YYbAj;xZEn6F@;-jdTT>ku4XQr@*` z2tXQQxdVZou}&9Wck7#$?5=%tlO!6+7V+<%okPBu%{_C)ph;UIkf{Z z{d3G!G7;Z(vzfKf%aVXw@Kf5kJ{GHvY=+wnDb{gK1a;@sk-+Q>gi1+7Al%!ln>7L0 zaf9M0f_rOJh}k)lv46iR)2P|VaDnHBMC{|LKq|S$bvbYWSi(M8TZ=bEfrCDO<&_Tm zBdauMoQX;ttMtpXksn@-@Dm_oWW|$7K)b-s)W0xUT`z_%#7#FuFxd})>*Nsx7Xi>X z1*Aim{EBABeaX8UgPQ^NSpV_+YW_9LQ(A_NGw>jSi z;Fbxk5%R_j`C01rYwI#Fu`U93pCk*d?8MaCY!Fcv4GS z>{pF=(m=J^ZOFHQQyvPKKac~?A9u;>C%#N;rzBDN{yWrL_IU5r%|xY^>o5d_`zfjO zT<$nTuKML|pK4_-;7on~83c}O&I~b`CWzaqRh?v&BJ+qBOtg;Mnf+y0g#AIJ>0O%N z9movmc1gEGFZn6?@ID}D6IWK4stTg;#nfvVfr?}Qa0A0YLO04241;YO1yoyTEk#gu zSsRNmOB>TLQ1$&Nl3B{WF%BmlW^*@$z13 zo@5Nz9inbtcT*TExek^Y2C_&}g}QicJJmJ_^P?FWgMR}Q$DGLxbrLGjCpcXXd=u!j zbo8oyoc(XfupO>R)HBc%LT=9ysUme;zfI3P;1UDLp>&J42aH~Qxm`uz89)gcjr7C@ z1Pe&46UlHd^Giu`-U%18tr`~TP?cN)@$&{^dmw0qp1MM=zdOC+wam-dfIfzbKU4jX zZM`8~{s4|0M9KWJgw2A+eIk_~cN7cd^Wq3<;wQ<2 z#jB@FEFriFct^E2df{o)%W&T4Bb&+DND{{|)`uC$R3-tSC+;#Xk$-?%9k0SW=@N#< z$4zMj+#&!w7dw(3I`W24tT=0D7>h)v)qY%O)RW)A5zRh5BK`2g;HMBSj3O%zO~a~R zFh>1THCF_v<$PkL`q&f+?>&L!g|T!Jkwe#O(0TB9`I0Ofb(D8gObFY?S zfcpcV+k&#}XqHy?oEsOcum`58j=G*|mj=fFen<-afHCuLNxW1CbcJZ(C*@ zsK)XIiJVY@WW+3wUJetwPA+<|aUVrRCN&?F;F41Jq=T2$6H#tlqeBlO0FvNJfd%E-Jwfjq_6aA6zO`{b>W{MT+=_wzH*MPMVE{kf0XfXd%+`R0P-Um z>CEB_AHlXXZe>?N30$W&O>jj;byd~~OQrPuNwFDES+E+8(`@0GfCx;4RPkXH$_*7Q z8?$LYvq@B6q3Z3eAmCsOvD*tPl~FdrfQvn$QwPAl=>W*tL!v`jlem!&XnwpzIGiz$nS*#0V;GCf!{V z!v|-uJHtD65+IuAJLO*eY_*5|bQc*E zOm-m_C(4FcvCnA3-lug=%^4NYZ3-O}C451-&l+{6exSIo#B@R8k~;rsy{A@4!6`t= zsBw$jok|-;w&H1WB&1E$327ZoTFN2p$zb_@YFe-*oFSDgB$oHG>G`OgfB?(hfhVUb zdR?hWjahj#NG6Xg4MPcsznr<1nL<#TxseHNv@b z-<|=ynVEyY7FomGwEH2DLn{sgQ!k22>8yd2;stUYWSy;bNWQQ$+7tr7ynMPblQ81A zfl_6>ti0q`=-+G6?%Lc&x(V4+>{E@oAP##O7UnnVNzNC?`4IJ=!LwB(_r#$J{GerR zxox;XpQ#)p$XoiU64MUhHp`_g`n*&icNW;&7XsWUqJQm3a?z9TNogE5@XH|egoY0h zllG`SFA0?4^bN2aDDLxNlI9WhI0o`A2=~+EWV)PGwlGYU({tJI~Eho!U}r z#U5C|bt&IX+20A!0}728MCL7L;C*-|YXLg}Q-Hzw7hVKik$cxg(S@pQz z(tqz4(4y#^lW0uvW~i=_XvwMvp1W2G)ecn5;o$m7^$Cb9O_l<%h(@It9jA$6P4k0! zR}f=$hbcP{pqJnC{08mO;0*UPUS=xT(8uk(2-wCR9f-X2WYkz_=B1NW-oN>QK1SX= z%w?rt3rI=1hldb@wG?dx@dl8|3cw9Ry~Mbb!8kf?>-78rTm6I0BZQu zBWNU~VBqsq!W8Yc#Xepzj-nsbj)aCoCKLxfJrPB!KeH6!HJ^c2#DkL(I*yEdvZFJh zGQj{oRePFB0|IUhpmH^Dd`_Q_Al6Uf!uS2xWQksCrBs%`y`NUKV8x-_pU-e^2%hIJ zEy?7OzQ-)xr`ORNQUg;dbrjq`^8M883GGAB4vdM($P4+$YSwsPp%pI^+iv|3FORD+ zz}D3<@duTw|K#FDT_x-gJ6WUtQKwNx4|onr4ZJMVR#NEhQo95RO5xd*))=)J1UlLz z`mZSZuDIcp4ZRjl8`&W~sjAQ&6CNuo6h?P=;{_RiOQ&IX zK0GwOXw({IeZ+mqwoVeK&Stofjs8~Xy{HMF;%ULPV><3Njn~VTJH0^Q?7`Hzir^FV zCARwRC>%d?r4}b$?KCjCZ3E*qDk)@EPoZgat+V$b$21Ynq+>8OdYNou@aR`A0`}zs z)Thtl6?A71iK31%@|h*$UWv(Mm4b&3=(*}?{uD!O7K@)iZ*43<6JYc$0d{DJi93SB zHpnoh{U<=AWZVOdfL+4_ed%!0zzQZ0NKO+&N~XX(@4>QA;I~AfuqQ?r;mp82pYQK< zF6D>fWD9B(g&`57Y#RIzMC+G)PcnTXoEKk<)koWnXElM#8Pl7&C2bP8RpeNhc%2}9 z_gFk=fTMo^6v!H@_KvKA!6KO&0#%HAPg-pAKYkUqjmgFId>uRm{q>sP7<^T^VbCse zj4Ux*8jih`i1erfH-za7kLKiy?HH>9EX#=tPIFslXG+fG*y+x7Nkw$7rC{_4`w*_J zTG?%m`3kKe8ngundj{%wa3Iy^=J*EJOA5M^OAGbjc1#52Hoaamqhb<}e~#x?s#DAH zT&&q`HN%^MF(9+f_~9VYNLAU`-W$Hp-YZoZ6ZCj>t0)b*1<=s~9!}szky|j3Ls03wT>@R_S(#ktX`ytP zH(TEJR!gS00}&6lKT=&%m2H}qaW|WPdKJdnZ3l~qZD{TZK!7F}3#tXY>_-OLXf4FR z7%E&Dqzg6^oZSh{-1ZB6Pd4*FhikDZ3cZx0}~E?{ZIod!4jD?nHX^L_RN%9$pIiGq!+VVM=c~0`#$%l zxst?HJ{ic={a*6>V{N~cQp2w1dYr&BqL$}3`46_$X9I( z)mFen6SI<%&D@(CZlk7ViR7H{vqM|P750-l4%CA4L{F^FYdCNEAx(erS@&E!rVSd@ z49=&p%1C9Rn`UW#e<2)IoncCtX_Nx(q1pU?`F3!U3PzTWBhEm)FVKK!kl%lLFBYT- zVvFhggq|hDAE1_tf7q(K?v|W;S53HL0rbR z-#A9?GZq|gl%9rMG%e2z(;=wEbltPG;ev0_P(`=Hp@r^4x`noFtB`-*!IA!==|^)= zV8gD-mp0bRzRBp7x`*8+Z*A1ZErF|UM(CDj6)B{9<_LO$A7EiwXuSOl$Q?etXGQn1 z5K)lh$iohV2pKrnsH^qnlF%P|mWF;6r@J0I;lRafrV~|9eAFV|=N&qpQly{;U>@`} z_m?cLrDxT(w;~N-I)GvxPI!uW#*K$074Xy;lucU^yvQp0ImyHdrGw#>CO7i@@k*wA zMGH(wl`SOGrX0;gJ5{MLC8kx56)g((RnZmKt_+54$_UzU;w+DAlY%A?| zk%_?#$bVUIce9`e#+8wO#fEm9eY%~K2vZUHjtu@n5t8-^9;qQI{AjPOR*iN8<3*U-$bVxaheLD<&13J^I>LGc1D;t!QDZIe=nqZ!=fvw^s)ycu=!~9{E8Sbh;9vk?u zXadFC!S1S2IuM&kQ&?F2zcP(#v|3&@AD$FqS}*wV3+@FlO!iASzFd_ctI4c{K7o?5R&68NafJGn z{?`g;zQ1#RcFC-wJlL!vzx1qCZK1}c@Wh@yqI_imAoph@6KsqZF>a>^77a6Q)|EoE zR@^z(d?q8guNgVAXrM9QP9_2t9Y6rBX%mON-YICYWyB@7EjQ z?-JA{^H;H3gQwiE|9X&7r?`z;b0jdurd8A3DZs(O>Jn5M+|-Ka{i}rHBI=c!&^TMg z7>SigH5h>^?f^*Z=0Y}ZA>zx(H6BH(MCEZHTi8RA5z3+PObXp(z zWVviLoA<%9+NPaRvXo<)k?i=mc=9(9c0+0-l8k=?9ZN`O=zx{0L;>t3BuNc~sFSA4 zyjomc+~M&wWg_nD{Tzr1vb;Y>IQq0&xEbovL-n0AH*-|m67fq+vaZXB#T%I5$ebxy zyc2oc>Edqu{^Z(OZ`s-QzE4t~f5y1`mtmJF@sHdUvpN5~Id@#4be*e`bGS~^Op;4M zU{G}f#QIn}D)(b_vhE}1MJ%!wuMh4cE<|90ut#04-qq7CW=U2Gl+W23gZDPQ4%%Mu zO-xEy^`Qop(ha_oxX;%i%WCpiaS+rg|KM~`oC>%Skn{gH&VAl$^}rz~cPXOYEpB zi#h>5PG~p*i$v0Q>}2V$ zjQjubB|g5gD?JBAk!dZAx;GMf^@gQ;6FcqCmP6&#!Tz!u+H7B4ANW9mxA{!cj>>1t zHty+G0+QStj>m<6zOUyAny0eRaO9wmk{ycE$stA{;}!#K)2``=3Lplz#{eQHj#6T% z9|lfR6L3qJj`I2RR>r2LnIk-8HA5C`1@(eee>QQe>XwYhir0;(F==KsW5#(=0og{W z<;Gh$B8az}(-gs_A+aTR5P(=BX^1=sD)yj*fSRm(r%&m9tgCG>kY%I3>G+Q9mKVE3 z{IoEdz|tdFQ(t$qlg%+!VQCUzND1tocg066U=^|~o|QKL1+j^a0n1Csic6bLSy)Km zddAp%Za`#a>VS@HxdWs~51f7&q{37rE*18k0WkzarrkbWm6C7eMf)LER8bv@pZ-?W z{jf$aEH$JO-G<;}qDT`PLm^XA8xx!vsx1X&x>s)DF5Mv^E+7R*FT^r}OkiiCq5%b4}Dg zEGd7ZEry|VuRo1JSctBlZOFH_=TsQ^>FdLW;BRKKz>H~>aNd9Q?$V;Ra6lJoN2f|9 zJUTikphd1kNyC)F!)|M7dXw&`{e$PKlyWP7^OV{fLXrWHt6@M%gPWoC&U6Ze`>jD( z`wa&NCB&Gfh)Fmmmr|(=ai$Wt->bWhcnmlL8VD%NJ8{Bz-)~zr&vciLA zDZC=InZ3sexlpKI+xf2MjPEH>(|Mf&wU25KOGgrWuUz-A`bY-Lm)DxlvirdO{5|RZ z8cGfTp))gT=)fiQ^>zzKKZ$5)OCu)l?>K?Q)%vc5|sUDF4zZ zfgxriVd2D7Tkh%zR%;*pE0r3 z9rD{IzWRLN<_IK=jX|{AdMT*YJcq9T$!~AHS*`V)Fzn8;E2Bb9pn zuwc+$+8Jt{^9Tt!;**!7aC)iwuV6-2g99b2J2ez@|911jrK6ywW|l zsOT!2dk{#l6-RCT5kP^aus`>P`bx3TF|I{uR2wx*S6HC<%!i>&B=fXJR~U1(hQHYZ zX>lJ`diZUuR{9Fsdl4@PU+3W$35s@3+u(6`5t4be)glUL z_^@s$-3TIozEAP+IyX?V*Xq%#{b+X-YeKy<1%za{%SgUP6qBvye z0LHgeEc_`sWfy=DU_JpipFORkip;YR$-qI+ZNv1;6n%J&%k;oCj2EV7G-#S%dG$Ji zB-GFEN`rKK6|wH9Qq9Mqyvn2I)>&F{yR4OtNxt#oIt=NIznFO45W$7YM*>8;OilOK*UF(V0!iR%Q(-Q?DOL#ScP}-HJ70efa3t>69ZR_ z9uT7=Bmu@PL?{9q=M(inkO3c*-cgpN4AWdB0yxb!MF_8(g)@1TW|Ml(&k-HpoBM8d ztvX%spmG^+G5S~?owni1(mV{yiy;~^WBr8_hYAnkJ{q}Mk6}s--;QX*4@d+Bt-jft z1>)uk{^id#+d0?*@-d0y_M54!19NF$u4Q)0i<&wjcB~Xw!G1jo%mPqhM-#p9>VeEb1 zSa_cIXe#he59L%LY&1h)3J;f)=1$Kc3Z3=${SGGWYni^U-)>b7-$+w-vBLl;P2CNu zbG)j`4e8j>5o~eb)q(87MqLu-dDWw(N}G^LQ_(~(sSE3*$YC5HwLb?_hQvN z9}YB}!voC5q>dqDUS+1Hek>g_+3t}=A@ji5M8KWyFZEzL_^0F~m`>o2>BlJTJn%%5?o&rAdEd~5NEA0|U-9p0Q`jV1f9}d`&c7TlcNvf#4XMiYo!LUO zb5@X$0nZtz@(?8xCp?@&k#RU>v5&y-5;}$lRQra7sAo-Uti~M66|bRD2{Zrlo)#If z*h@UkRES_UiN~q)ZtxI$!M$8TikfkZhS6@Ftw7_5#!_KQc$rhbP@^9nr6*e$D_4sZ$4i{uJyhM#h zI-?={bST73&$^xPYu>CTC0`!rrNt~Q@a}>y>#K^~Rpn`&Zl)uqpb_9PMO%~_Qu`^F zgvaforocgH%dYJ|@UAN-BO~QfGIH|<3LQJ@N5e#s(hgWVZkX}C@Fi5ZGiJZu^xQQkvzRKL$q3~P2WcE`RqW7k*gJVd>(U$qydNcgv#Rww!p_?CA+iRnQxseDX_qN-@# zor=sC`(-?3lc#Bbi#k9{MQ3*L-NTDV2aSlN!_ zAL56O{{3X3`<$Vgq;!s-ydwuWaNyS)^?X;}O!RL0V%JVv^TzgEqooX^e1*A1m7@0x z#0dZR*zUUWA}9|5D#vbl{oC$X*qXy6Bu`u9fGO$hhB3>t>+K(}w@Ed#T3;(V5)*ht zqd%I+f>#EO(ff|AT7>70;+NQ(%KP<#%*b&XVMHW`%`>j|3-;xAy!>M@2|-DAkOIH@ z+J`UrMhF<2Vn9!jX^cZhtx8Lz0e%aq!@8VHn1ny0XG8{KEc)Z;Sip)8w%hD4G}&t!VI>EXF<#@ zTzR5g0Z0S#_A{T2zo0d>&FnaHaOMfYv6BFEuc7x9hWFPaKwFuA>dVcG*+qNVUVMVw#xj&5h70vE?{LAt`z4r;~p-3}=;U$OXZ#E*TkOV$0q z0I_)YbP3m!LHjXrkggRVO=t4`anhq=G-@2;@xjl|wojB%}GwxW@9NNs|YC5_X z)R6uVSU1b&$$T|Chsdx+g#%-c##eL+b5_&9B~uk9@Y4rdF4OQ^Y<5@lXeOL>v8z=3 zV8>Quya-BQqCt1Qn8m|wnKgfU< z|A7R?3wpw5bUiP&VV2oAXz9o`I;6NmbwfuL?52bL2;IjOu<57picio=XvIZBjNgPW zy$4ffV7>Vy*F*(S75TQskv$8f8+32T@}?XXiQ$4^k~1Y>uzRyy$yvM~=DeabUE;YW zStv-AC4XiO8>>P1jGzmUlgjA{hP?M2R0qz{>Nv*~AO$z)gwX{B3 zPLfh(XD0CU4SxX%{c_vuH;3_<0=JMMY`{ZhQ4vRO_Z79UghR)0aN2C#7hzFAix9{U zsu~VH=M?^wC;o@#4y&RoNrPCdO#CySc$0QVhNDEnr+RyKdr)P7#cDv^qJdTmo8g~T@#c;tE zhO@+denf%=P!bGX{SmzE&QN8^2`&h8H1{L7w#zaasp83ftP{azhh)z1Cv*yws0ixY{(a1f^$jcNX3#m z%b>s!@od|{AotCw5P6h3=n3uIWUzgDKQ?GvH~tN>ax5++w~0DIv*yrN51e`S1>NdV zwgOv?`pcjrx2yjGUu>jYsFC9y8Yv8%(l&m4bfi;K=yHSgie!}RHvX3~!W8yZ_n}}b zOY$(Bc8_V_@(>+8^v~iz9<>8Tfs}@DTd@0HPe31Sd>-*|#&!kS>4~*StgAB*&Y22m z15l!x8=-wLyj$QtVa-jzSG<8hTdc60 za+)~zt%ewj+v{C^FgC0MoHH#n@7~IGfe#d!gE>1Lw`uLaSsNq7TK8S||C_`JNIt9j zYVRX(*`obKo9A&R*HV6;k(F9(y|L@Ff!)qP<#eilvKC$wE@&|-hY}sB3PSkj#(i0) zM~byIt-QS~a_J~6M=}#{DHSoQPiM3d+u`Qx#%v$fzNYU_FE4` zl?y%*EBsl%)D}chdG-7k96fGp%6Di56%5$|Z>tYZ(wXgERX$-M z@5xPgD-e>bYk%(pcmOEfZmnT`*ezz^*|gM7RL;&sf`?F`ec!L8~q);(h)d3E!Ws4@$x3^`+* zDvhgm6wp2;4vPKeg_FUtqtG33%{)Id5Hw6HWQM!N%Xj%r+KCSRQ8x)!KGZ8^D)ta& zUQYFR!KQ*fR_8R@gt^Bo#)eR*31dtVeQ3mbS2XSL`P70F>jI5F;S9+OhupXd?qbQq zaI$Lf_->aQk0mWzxYH5S6e|dRmuHMrvo-Vaoy+#rMw(DRteyau63<7|OH$f>yl29Y z!YPJdb-nkHmX9qpt)T`43{g&BqAg4Swz&{Jh?$xwvk-o zc5_aZeKIr00tr*pFz2i(H3Hm!UpJeLfUIjYARo5tQ9H6#0AYwdV2w9x*^C-oI?2|O zI70$*vb5D}V(t|Dwb~U;!g33+3!CS`)GFoA{e4PFyq56`&AjJQX^9JxW(`?iaFaMYxJ8D6{im&#wJZXJ z06x~OuTf6d|HYU?Zo}G#!^-V7vizyRTW@D4!TnsPo$Y-}Wq;uFA#V=dBztlo%&|?k zld&h+`7ZbksH~;`0Fx=ValIXa9Wrm|BvZw)hi@3u^UR43ZjHw}T{cCFtP1X}Tk?*} z4FM-c@?nHnh$mR=^gS|cj#;+xDm5Q;i-{uHk|8D{%X|1@7=LRE2_dks=gw^?b+=Vg zHUF@IGcEr#o`ed!(>}z(SEqZmU>m~Gf7mP5GaF<_w}4E`n-^MZS{s=9rIqinV0Emu zr#~_u|4i6U>*vYU<<8>fG8f$VqD-A6u!z|CG9p7$GsUO1t1~kma7O|S@jk9Aa>4|j zr~<3pF{`g6g?JXo*%==XQpa`HAW)MgdW;bFo0=oy9+qW^NOkLktm~#lXlOEc#dq%$ z?^XH^7>CEf(-AX{T3T57B%S(!_oHmzb-D9%4;`%pCv6CrpW7RnXDg8#Qfu-%$$+TF ze=GU#3Cx#vjN=Yb)r?VOvR@NGFpe-E8{6>s=x?O;hwQSQU|^QRMjQ2PBOed_8Q zs4J&PoV6xl--Er_+14GK7Cn1^SbE(C9 z3)s&;RZDwVH^I7$M5-()3&O&j!Dzz$+*-U33^2gUSb6?&K~9!?Q}5w}g4m7Q+(jZB zgtD|3=z3sduuMEQo=*|v?<0n@3+aCz?Ltk;TWuzsO3(@Jk1uvs2q)E`G|ODk3S6Gx zC#13+K&WOxn4k1?l08Vi!@eqN&G&g}&FZJkbt>`k#v5&vBcr;A4~3XlK`j@c3CE5+ z5ru@H}sp_|WiBTN-=^JRY zrUOCSb={x$%n51p(($+SndI3`Mafze+3MJRv*}YnJu;l=4v-EJVk!Sq5d9{)=3OR4 z;IZx#F;!o{%X0NFTcx}(kZ?~IM0DdOGC!lx8Lt+6k=t#df|gs=@k)G|Rg%+qf^l(x zlMU8m04f6tv$R(BDEWCHZtWs1iAodA_~Uh2d)L`LJ~p188U2lPdl!dv$_e1QKcXm~ zt>|mA!q@}nMxu(xTZL>R1SzSPUL9GAQYD-)5xuT~2{B6vh|-B(tS4Rt6Of>ISphA1 zj}kaM6rUy@X>-HwOp*-7{wr-lzb()FqBCx!2KUTok^rO3Bw%T`6arRX6>;rXD#_NU*{RI&+BNocR!h13)FCfgNBz`^ao z5>kN&E~$+xsPrldt$(!j2G@a{FiZqeK0}A7Cx7w6pl?+a$Xc+gRxl>jRRz8wwF0RV zB;up$M2gMQo@=g)u;?s#x>Eba465buZJt>|Z2e8XzrC~3BHtn$e|xx8oq8=wB~X51 zs-o^^Fg`WV*zMg7lHiuY9lt1Owo(f>rYiCLObI4@{w;|=MU1%Oc=T4@n zx(+)%omT;}-K)n1@WQrM91&+;Ww7jukId@CV~f;0#x)A-EGe&a~to+4PrErqhRW;GH|DKGU{w+@4>0eOA^31~h?BO;f@mX&5|MfZ`_-nxr-M?*y% zc2W&mx_2n!!T3DkeyQ~->kv>C|F{AMY;yH*V-5&{t8#E6ROIuMNkpN9J^*a?V_er< zI+by?t9FGpb!Q-3*t@~d^$udR33|Ir1c+EJ)rp5V%5CYI*X~$^g~RK(qFnVnyplc} zn=0m}K%V?l=Jt>XMP|fZFOyKGs-e^51rXzfhTD0=DO?s_WyvZku1&DI#jO2lnU>Ti zQ&+}$O+NG-)&$k8Ao}SeAV${YF%L3PWRb@^4luW5swr6|G{gA4mzD{jB#S;~SLjXX z)*-s9sJpm-N*O`5HtEnc`R4ax0}ooZWaRMA;u$RQB`sR>p@RySKPrVS712E2C>-KD zgh>&PN?<*Kem*U1c>^T4GleWN{4}!}^?h?r13ggRYaKXGEMl!+TkubCOJwnsPtaKu zt^6NmKJL`q57c4wedpXZI}Q(;Q^--ppzOmi6$mfuaNz;3{<^n`@_6U4uVRPaN zFm#`>X?ABCL+6Y~W_HNimBmD2K-F`w_qhwMc^` zH#xJA*A=KU+$Ppa$8gJL_t`h6n-vDnR}zP)H+KreAFl|R3K9eRLhX2rS6*K`cD*SZ zaFw)@tRsTxz4?jN7Y3VRQJ!w@y_F*6E<#8hgGuDzJFbXRE-Nef&PtVA*jo~*jgMv~ zmp0PtVUS9zqgMg^)~P|1Et=U|O(2hf^EMHf_}J=Fpf*V^WP#ZEtin1>Kijy|qz>>@ z(q}7;yF+Q55_#f{jUmT(dfwuYDzbN5-TPGz(zdhw=G4xAg1e>TaBVL5)ITZ!`)~o# zyYxOzh^j^vWF^#CA~!3j$R1oxAKX>7V!P?p%N9eg&ZL*J_f3PJE|)%kiLDU~-vV(W z1M5hSVC}waDLXu$OP>&Ct~k+(mdYXYraaQgRIvb*mY_`E+6-R`#64vEdC^pB${M)y z^ts=L2}Z!S?By7xf5lv%gosac}8TS8H^EwdOy$-ur`=)9(SY*;~G8z&j{JC#I>Xd z@7%=yvxR$A*Q>GonUWF4Vp@>J@gGyI#R3G1)S%KGVz6vB9S@9M6mFaWaTtt^@D${V z)of!HrES)wbqHB)zc=gx!5pFLPgY<$3op0!soQs*r$TXLT~w(%wd*!k&%{Kv3{aVo z`l=l0Q@d1qJ6>v%Mf0X3Vdm(GC75sy!Mg-@gsK-~_I7 zwKQyxk#id<1T~Fe@TYCWb-(Ak{maYTd~@!l>bOd%fmhm~J_E*Gh}=c%dKU#8aWi`! zY`$bk066lbkaCGARZqE}Ow~x&H?Ny{@du|$y)DYsitLSW_tts?R@{3#O+$IEkwn}f{rJF1R%1rTUrcgx7YKvstrAQ*=vB%;nObrFcl@|d@Hu+ zGa;k(4G9`(w&;wl-ziXXqa|@fY?_o+L9T3`)Km<>rCE#kH+I~7oz5T?)4BC z1BE@RcanPb@;&+kgNQm%aVwx2D+C+px65<}-H)43of-WywyKq1A4}iScD0xqm6XxJ+Mfv3222aK1usjML?N_^|W5_nX!Nw57u$C&(vWT zIpEBT;sG~ga-dxa(THlq`YD?chgbGZUZP%eEsMC|gq|IEGD~xU9~Aab+#TiI1ZcDy zKjh5o*~eZ}rvM8id7f(AJbdd*TuhL7GT2c4=SEvdyv0ih5usR_J7w4mYLMT_nKd;7 z*uu4duDHsCBaRDiOGMGq{-JJ_CA^Zt0n$0J7%mbW*1@|fTK2P;*}2s#nWO7wXzZ3L z$z=z|TDu~zz>;hej9_Bq71JaJ{6WD5DLto)@6p&5N-g4&63k(UHPQC;K2mDqoZg14 zt#ihTfv<}9{41cRNRxM&?BDJp`z<68b%Izhj#~6721*(U^Q3ZFV+nR13+`{B_m5_mUkFmAf#g#;v8t%tO z*hnR?YSW>dscIulIaU zl=xi=Sm#p|{f*yX-3TS6>wUvIb5gb1Qw)up$)#opwQaWg(7{rv3WaZ*HgPAU>Fy@D z2mN0b2xOF3%orP4X7PLWvF|yV=Sic*HvwQSE2AL3VK;GuuXuY%6C2^tC<52xie*O1 zYITthC7>r;yhZ5Qr6u#)YPOC$k0;PIhHb*jXIY%T&bZr)%R6~<2fQw%lP~=cgo6IJ z60yFX1Rh|&=~2!jPX8UjlBI|xCQN}mpq%JXcIa3+Wvu%h94uH-o@BJL9|X#A3DrE) z74ud?(5tdc1((q9cec`6o^xi$_W zUS*`Vk->+{uJ0i$S`i^3%Oe+k*jCcg^$IHRYhEnQmziypprwx6*sLP)ehCpJ{?YxU z1CjeV_*4R#>6FB3fKh62C71ijX~%vfjetfCW1T*xVaU#ANSp~Fx3Oo&lVRDpN}tND z9CloaX15GCgr5rc`tA*FcZ~(?bt8W*pI#|eM!XYtV|7X@Kn_qk2nRUxkJnzkT8QV1HKZyKBe* znP-!Mk~?k$(=`Xb7dbuaekJL7M-}d_)p1w{O837dWU0qV>Ji@;IaN6Suc*i?N_k!< zu;9&!if}^Ou+^>0u`wUgDexp6g+*IdI1gZRPjr0c24;$7%$hbec}O0f(=a9?VqS}3 z?oD@8cwOi5F_GqVSy6gm9g zZL*>%dVTJ5R4*!prtxLhS8xh&O0v#H!Y_J^G9~1%#pKFxv1^5sXgY(!JO7}vk(XX! zLpsumz!Dt~_Y#gYMY*G$7iN;mVZ-YQHH*0_8V%~b z;1EHXeAf2ONqC750&t-nx2j?xq{`^@7Q1@_!jVSHhGpktg@Loy80R(1$TW}r#np8B z#1yh^cRC~a)1SF?Rbs&L%)&K-9*+3C^d5 z#Hde6rY>zHyIL|8lQ`tzz9H2d7f&SY#fL9Tc6AFPk}_QUi)`E#VmmCDBAE!pn&sF$ zBn>*X+y-Z_gHLkG& ziJuu|*Sm_g3*``-SseZ^$~P4n8q2bGXdVms*JxZ@4+)-k{3nI!P!*9P?wtMULFp%d&l52y~m z_AkqNO&f@cT+x)}A26S|FSONn{V*}wGSnJ?sme=|fSlqT$84VLB`Z!n#DzPVaSN)T zPaZcgRxCVjEJtPrh!!;XLoX11AF^-$UFIf|BYCmR~l43-} z6Ozv@q%nm|EJsO zNf3PXIN498v{N$cIUJ~@Gd9737XKGm8KX;Er#-9cpSTo<6(nO)1X+A8W4kqu zut1am#^P=ri>Kn{Mrht)GGZ4jYYJdz+3=YYGXN(nfcj_8vR~!N!kvJ7wVHyNDxKGj%yr{1Gsmg{{88Xb;Fowb;72vFtjk2G_aLb_;9|oaN%Mk;9 zEw;r3(a?n-s`&R;lL|XyN@ahI)JbHM&7pFUHp?b-{go=^gtnGIp5lL0h1QCmiVf3o zBOd8%4DQ!zFMcK+QM39Aq(P=gIM^+GpD^u~$>=41x#G9P;9$PQr>EzQB|0S43T1o9 zy%<0szGF+9GCKrzQr=Y+F-MPkC#?I!&Eejo4n5!6GaNVloT%Q*Z;@Y;a-@RaBmJc? zNq>Cw%ABvYo4fUZ$SF4_pL@3jYQIR525ypkBq|BAN;Z^k74GNJOBTnR>3JjyM2&12 zy%7uauZm)0Cx;i#n- zerA`}R5M(LwWtC4z7vuR8la%~DmnT?vY#-JO!?d}fxa3sh&NE=RKjgLIJ|^2YfY{= z*72INq2!QJP=iSHWK5UbEkB=D`R$WAT;EHcd1TG;)|Vv~Wy?CkI=#Ts@e?+{VWdp( zrGY)jev4vE)=BjTpisJyLZ?DDOvVN>`sd1CM<*GK*E~La;M^5wO_Qg0w0HIDOl9F4 z$HL}Dz!kGuEUDouH7!_Diccs13Rf`bL`@%k%F(-+G)svBf85Vj4F-$2{sNDogZfJm zVmh~0m{YqtLdDG3RU-69;TUDvp@6CM6spi#BnDsz`;{F?CvrW{<0+*gJtvI~tN=YY z!BGp~62_+BdaD|?4`(U|4FiOVGcKWo6WEF0*~UDES%GFC!l8IHqsBA1YrMsNPGPqd zbTnc{h)LoTWq`v3cKS$tn1^qZ$H0-L069<@T9GvX$za6R8)kI)-a`t+$xsW{HX9JM zsRDljrjT;xe8Wu(eB@sq;l4ZTGm%XmzH)i0m{)>Ci~IofQ^$Y4Nz(fbAmU*OndL86 zeIo}pw@qQr=9zwVYR3Wg}x<7beT zLuV=)X_8Vm9%2Xj@O~LSOkyJc|HwNsYh=a8A>Uhhw&XrJ-d6_pj!Sp(Zel-n=*ffK zfv~iA%*TQ!B$@@>%`d0NeUxEm-wS<%7P34$(zSqW1^DchdWkX68D$fhx%?>vB!~2; z8o`37<$gv&(PO7T61`Ie1nFce#7QY4-=>K1bFofp+ayDyF*}EAZUa43rEE`=tVbmm zS0peGMK^TQLsGNT^RT3Nc#t!fpot_}M?v$%zpF_tnx*In*H$NQtNlmx0X!|{tT&1t z!HTc(wrMPW!4`}9lt^Kl(o0AKD6cA!usU3SH)&??v;4&2>fG2wpYE@h&=E!8b0@om-Eed+7HW;! zTJ1}cx`)eDvG2rDo?H;Y0Q5UnU*(}iOGy-f(y_Ac4Tbu}$@yh64iFApJtXUtZ{H+<-^M}(zP zBk5i(I3ie~-uV@j`D)JfsZitW;?K9IP}Fl=v*w~J`4A<)tt{JHh-13!9NAq9tILz6 z(iDgrPgk8ygQ`~Fu}$`<)4&4uWn`~KqhS@el`!iQkHcYb#r7SEzIOF(tLH=OTQsHR z5j_uw2O38bO+I-MQbNu5)^9y&=X;?vR!j>Kv0KX{1o{~I(T$}2;Y9S0nL{%2m~pcR zfw{#pERaIB$!1ScDb6XeF;B9?XCShC_m26~w9V0(Y>~kGJSZew7%&nS%z12I_K%Z_ zOyoqS)jS}ku7Yx1QWKdKp$55y+eeV%oFU8$_m!DCYB#uLTmJ`1mcHHZL=+BX(@9lk z&TN8cE-037EV7$wwihcr7&XY5q*nIIpqe zNykf&Y+AR_fIr_otLY5~%mZPRsNm5@H-xTw?;ejjI=@iSVfjTx4Ug272=EYTrnlQ{ zPg06JvZ$`|a+`BqU+pavp>71WOrfB5+{+FDG5K4jZ%$95erUo%_0$nkDzpF)9hDrT z*Q_rdT0uNo<6zo2zc>sDUj;K&$Jjp7VKVi?2!O&dCcBi8j&hTx#;!!5O78$n$pab! zC~qWo1opG`N^WYuiZ5PbdSnu(UpW^c7zJF>hnRg=SIgk6Yjxb<0r&aZ&rnC$g6lrq zB-VxS_;3}M=fG&0NY<^Hs%rQnK>PTf2=~kx9pKPyCVY4c z74Ndkj~3^PM{2Fcyce zF1TicL>?9Oi9$D~Xxuslc#qyreWV0q4QE_bJKSGYDf$T*cE3uYL>}CoA9_OrS5>cHJ7g+?rYA;b$*g&H0^40881CYpcx+3v54wvF$5ZWoI z^GqXAQNQzIVo7*%t(FsoB^n&sb|h^=H-wG} zzhfC8!H((F;qWC?p8oZ2#xSF;rUi8N@L8E+Z5l2*!rIagCs>gP+jbz5O#z`QY1cJj zD)gM>+NK}|K3lz6EARTg{AR3qekR9?R#0LE{SufFL1%=65VGLsCq;4k2RHbhTEdWR z_r*o#)cd`PMk5#+0Ccgd6(nuLa4&2F-az3A2fP z>vn9zUBew`*MdiHpV5ez@jSlliy1}9l}zWxh{wEV;fY*X)vTi8c&JJ6B!Ba^?_^?( zuInMxWldMbfYhpxJpez&Uf}O@m${d}j+Oa|NkyPcXUZAL13>@DaaaR4p zK)I{sBsv6uA2+{E=-0xO0`Wu{NlH7zF1o4Y_B2@901uL~;lJL)y;gQE|DiG|v)k1R zi7XH;;-v==9Sl#TKwAN42+er`}y{>y{$-BmL=T ze>1t!^NU5d@K6tYH|SRN?-<^m1El+*N$wBiz-nReGN3t~o{l%`PTQ2qf5F6JT_l(* z|BKeJ-1HHdSXr$x zr1Cg07t=@-(yQ#PuX73bD#jSWD=Y)pV)J!;a^CM8?g^dQ(6`-@n2!f~BBmXfPs7nr zerb#_GrvpQc;u)}ZQ+GpKd*X$p?I*GmaOnoD|&Wx?FHyR{0i$6OrS44VLl_ zDc<*l!@I$&$wD6qhn;Rir~?H0Txkge$}cO;WB-7Qcq9_yq8fqTmXt8W+r;+9P#$p2 z;2o~d!uiDIqZynuirscyn;(5oGn_i&1Gm{&dP}eBCV=66ziMx>ZmTBMY#BwVA>@6t zUr)llE7of=K8&@aOjMZxzmTb$xYsZiuPt>I1mmb>xtu#4d60D-!QydDHG3e1y(D^uwv{mrAzV5 zrh+By62w8L?R<>XEB6YzaNEMf$_&TJ`npC-Rda>*dgjzdfIo*oI#S$YWBBy-*veb1 zT&2WhV9X}wvJZy!_$lQxct<>`gH($=p!L8K0tP&%bRh{_CY7MG5ex z@Nf+K#?Bqa-D5_Qf^kx&ORL8OMwI&aFLy)x)b(3V883s=2#8eMhZhJ4ZGus(U7aS3 z!+BtsQ4FVSmxZjNbgSjUmnkjoZ;>Lj;`rN3JNa|h>^X4;PruM&3yz8&a)%XwN5h6Z zjw%Ps!vbZJaGx&+q4EB_eG}Q_?zc3T$%E~3=so~I;i*Vgok^<*eouB;N}`J_cwkM&11E5akK;HH>P+4>(azt% zv=R*YKxu@-2930cgY_-$wd#Jj-cgHk*cu5>T8o#9cfvP~@}Wteq@k`PL43PdaH#a* zMX$oG%ckGnF-dUPB!NxJ{FDqDBzJVxptgLYt7cKQzj%h@moUJ*1R4PnDgnus@mf&ph5&oItQCHk^tKzImiYEiP>Tz%GCZuDQ+; zP*3rh+Opsz;HY8gl=xc*2ww8)e~|OIhHHGS3ZBd15jFo}KSY)JRp^6lRI#Q!?mX*y zEN3jugEB|sc+RJmN#)WqT>o#8Zn_%jxgG616AW0flp0;;HIP854@Vw$dfh`^V%QO; zoF|)s;u*bg&?f_@UjlP5YElE4DK94xQ_1=#^Jrl@@I2pI2OSCk`PKEuf|yVt=shr) z)1c9pLV7uXLA;?nqix65Xe%-Lng!y&skxMuU93SfymaX0T*JsS9;Y|xg`}h)lUqlX zoFuf~$2~jnenz>tYEb4nJbSZ;zG^P#w2%7k-=S^Wv*b;T~ zI8v@29&JEpxxV>*9$!&%7jMc(6q!h8KVv9GE{EY7nW7`nj{AlNAhAk1!ZM?7)dNJ= z;hy3cauxUSwJ2_wdCZh5i8?*LHU~4bEU5OW7`VW=g~hBo&lnE^vakyYtE0L`@k+xHB_gR61mqnSh)DtefG@HVopxpBJ9xz=O1hhHeX z2#if<&m3zlZw}BZ08>Q+f7nLM*oUuaeU5dvDeJ|%jMT2*|B){aE&)IH>nBh5__(L9 zD&_?1=sDL~jsF-^d|+kgh$VhVc4tJ5-D@Mk(?Tyzjkzn&gl6THSN8}oZ0Jb|H&!=n zh1*`$)s;{YbDhB5+OEiKRldy~Ebz61n;Vx3(O1AtZa}}PrIRd~LE)7CP_4JskRN*! zKc&uIyiGMLBd@G#J7n|)a85ne{I#5%3$4q#=$Urdfz}4TUy6EyEGmp%T=gBiAF2Vq zXkY7|Ik6q3ie|E}!k940`Z%Gl$x_Ee2fmrdTkv!h>^sF>MYN?j((}Q)Wn>fNaS|3h zJm701X2J^kA}^ak>&LO%d=OQq)1l<_VToC0%sC%}HaW(()lEzvCbNP;g~&2*`Vwxe zch5@Moom-kTEjD?JE#W~uTI|EdcxWTnU-(=D#>Am| zU@9;c$$?uXuEa7J*V%Qk-0P9Y3sU_D+#u-g1U|j@l1RU`I5Cg zv-&qjpRy9hx&7U}`eMEp6CZgGYJFMy-=36#>L5MsZo_DcLEWbKU%%qNlX?$i?aP=5 zTpJNCu2ed)V&Gm48i=ihr$@Xz@GYlIr>pq?(bB^9{g6Wyqavx?=T2XB6REUVeb}fw z>$Vnsr)~3tLOUZ1MS9p6aS7sV`!}c-UWeCSAJyKu!JcqKN+TA9Veq5B0K}iNx%`{7|2+HSP}>d!n)* zV+_?L!F#(gH=hh6IuRzKU6yt-|H98+2agzw52=(%o(TqFI{X%(Ao2(aF0u^7k?T z5lz}?1%gy)85@ZC9SOYBkwxb9gNhEVM4hRJn;e72eQQNs^{??P34W$Osz64PU-4^9k^m(@REFdSBz9E;36-NArvJ zI!4vzV6fL*SRpv%^lBNyYxB}9*NiB4iG}6m)d){uw5e3K=X$isB-T0^CsftT+UD@k z)S~IgpvBtXmkj%mrz0Nl0M~E5Aa3eh!5)z1T$YdRM<+M3N{`MVu>EQ|CYv_pkQO?i zaWNXX0L8*%{tYgvade?{2QWQOCEO! z69~W}rq801eG67}{bU1Qq7G`lQVrMo7)mO{m@;oM-i@RLof`p}0x~}Hd_dr+X9C=` zjdtS_Cu>6g873~#OJfYiyHe$A?b3u3zW;nB3tsi+`NKeF_2e5+4!SNqtaW+4jLVxK zbe_cH7%?F8UVfJ1|D$j8`Ix2tA?jg_m^S7Q6g|e~8%qPwSGp>xLILK+fO@7#ASUA1 ztI7g^1EN`ICHblzL2fqW=|L(NamPeTEnrd&*z{5?wb7Ox{}x|}VW;>%nYn8k({{wY zLZnZe-jX<-Wa64WF3QxvlYBD}@^0Vk@;Z~$k&i=P!C^Bir&^jsQiv)LF>9ie-75o^ zT0RAFrX3U8R@=Nq+uA;7bUIq~5dYu$`l1qy<3FG~1{M1#73bVtfYdrwGPMjdn@emt2B= z#oo2suJ$kRC^}Rf|M3P(nz2K>hL{Nxg@fJw3JUAve)(NwPWFrrM}nJ2&S?HFictKI zYP?9~i1UplUvU`@t^c7>hqYry1j>KF3IwxZ{e!aes!0RKM#z)MddP%_dN5}~?&Bs~gu zBrdL+wV;#F(X5d9sMj4LXn(55e%0IlOkW-h0YOJ{vHbUwFaFlc%RosmmGdwc1)OoI ze93ilEib_`Gf4Km5WIUi8}#*$+9OhBCIp&{mRB=P8m(!*Lovw|1vC5Ek4+`e*{VeR zM$b}2OX@&tjvWi3LJlzi?Vrr_2It%LP5|5nrEp5#$5zz7H#h z+AF+sBH`+?V%)0TF+9_Ap$zIoRSV{NEfek|WyghD)oaG)>hr2@#z@~tNQPXJ{iF@O zb3i+~zC4;%eekHP7>shpdDs+F#$toJgkQYlD0s^C55VMyPLU_?%x8_0%)ZE@qP+T3_k6c9%S=&0#97`{>W&wRkDjOLuDybng{ zq;*q%U7K4wX*-?amFJB*u}`N^lU!jOHmyeHQtjm=m#u%v18PI?0DU?YS||80P%p0( zOqpbeQ~pS6OM7O%LYwTOc4}M}uE_elg;4&ZrVLdq5xQeLN@GXyt)Fr8c$LBpN3EYE z`dG5)a8=}`5=Um+=2sKQ43S&}O4P^xu9 zOdM&&S|+CgOvK-*A-Aa72)9Jh`>^;g?#*(7PVz|2%n_`Zeaiv%@JayoAbfTARiDNJ z>amc4GW`K*Md!4XV&_DRt52# z_FsPJxc*Xg#w@#E^iY{60urD^@C2;My}Nt;)-OJ7ky{NgcgidPX({(oONTspOzV9r z1D!uq8OzWg&^T=9tx9dwG<7XL!)bAu*8_Dg59lquF1lCy@&$|xK&PbzdxN|g#k()S z3w%`$>nA7l5#oRIc}STzVM$)0$4~P$y>LT`2fw5VuvdZ^PNJ z%b^kE;OI5omGMChKNt)%d6vAuS)_=I!QV5KROD(suAgW#dcI9JrVzZbB10MqOlT+s z_OYd63F#4hLtFc?@O~FobnEr%3*-!0g=wlZ*TY8?rFD1naIYV6adP_Lx(J?*QcXd) z`U_cpX7D;(`N(-+a2_Qo=3xJuT72tMvEWV;GD=&CHc=<2EN;B2+lQYt8PE3~v0wKA zC<(@}NB0S#N&^w%`f{~*wY~Pyi?eEkezF@*K44}LoN-TV{_-4X>GdpmT};(0;;iNrC&@2BLIK~jBd z7%F4oOY?^3$V}QKVsRG~j_DML2?(9twz+x4+fe+z`I*~&(-Tsjytimuw}u@WNy33m z@af)*rlk5TZdK5CpGi-4FCAhP*fS6^txMMAQEb_M^{j|4qEl2p%uF~JsNc`&h~*RO zJ6TgYRy}(itN>--B_D{F28qd%ka^mIfqtDtRtJ3$Zaj^sRtpj;0cMr8RB&}{&lPo< zk)bHf+YevtGL^TG6-~UC+?s)w09I=9gFZ!fxJAilMvHNvc~eC7Fe~o}x3)GejT50T z!Vtc?wRob$$h?&=cx6JdoK&Z%znVog#4j=-wg75Bebh zhB#4;VwX=yoG8_PP*;a9yP4V&dKE2&8Xc);lc27(zXk|moYj(fFxu5p8TdYxkPbJ2 zxI^^GU)D3n;m;%>`&+YuWx!^i;nhKLoHQWd!@;>zry*6f9M&)eAsoQX zofH|I{^g{ifuVRQMu~M1*^_(Uy#-DrShVlG(=yQ%$7=Q=S`B16?KI?i%!d-IAvk>B z46p&gNkCV^2M(?g?YjTxa_!y4a4(ok&N=e0r*JQ~ai^!%%Ic_GNiPpyTqa9}lEb6% z;U;z*a=ig;>kf3pZJ5TFPx?N?(e$wA#M7S?hb$Ebj+rE9j^n9iMA*~90jV1^Fbx$LkgS4%n+4^f$M^32xCc19!Q1TE<2 zOC0ZlPyaQMKsD5^DQSLIwkbAz@+(>I^urziIcAK6O89c=V z135K=6?+ykn22ldRhelGg!Ly}K9s)GaZYG_;aQ-_2z?cHqkjmuo>RqDm|*$?(teg< z(U(dy*^OOC*20JdYT=IuNym8|J2~d~hj3_03kB|vY0WbM z!jjBxGI#(J|M;#^J~gIP``&K=BRatU##T;e(HZ5ED8AUgaj%pj>WvISm0X!7-1xJ+ujJkiz>N?~z)sB?~nb^hi?n3AkF3(%_pN zJbVN1;%CgA5o1MsBZ7EqRUhHMhgi~yH>ZB)4<6$K8|5C9)jkmeRC(9$E1xQkMmdT! zyN&M@WND8haY@4Ae;X0`o)#^N#T>31($9*xTq_bepikSayq|8@79JL|qzzygpwlz~ zo^uC24bvT#>DH#95UOG}z-%lu^RtSsrYx?+%%wx_VqF9V!djR(c;5Hhr5| z3g0YYU(eq|Dee-E2T}j$HeXRNR4Q48Iak#7j&Tv7aoT>fP;+QgmzQS0p7t}7mxi}8 zvpq^Y_rFzEgonmUFBbSXN5QbR+_TOmE}}dM!%b(crR-or*TLr}U)yd;dICN(2PE=)P|l%cHeP61M`f-W!CP9M|Jj!tK+~^#%A~#<4%57 zm;uV~#zx<_Z=GM1M^El!f*+Jy>8^Lm!Elpn|HuI{l@g|}{P5JYTJ72Z;>;{eBPqFtnj@TT3%QgArK`Mox4zJy##22{#M2wV~ z3@{)9xChc-_{9Ch=WB!=lSJahxTbfsG6MX}HRo9Yt&4dkt!<`C#L-g=rtb?>Y2+f4 zr86t9uZ-b5{omskDiqK}<6!rY3K&MruShG#(?yZ;ZZ>G@%_MvYe{RLDq9(&E)&1HC z`*^IJCLFP*QvLDfhRY_^r)juRnDX12gN3;6lteH$2X-1%+(K z4m<`9>sEzsX7G_9yXa9+kbd0kFYLLxLXBF0rQt z+~o`Jpbz-t2!Q(lP`V&fvjKnjHR7E#s&i)8MG3)#&^k2N$JKBsfqHc=p0|9eoMZQT zPfwd&^9est{CeM)c?}0^KFLEg0?O1PAVVQo3@-4gX4lBc0yG$z|E#@;v+Gtf9@n~C z+ia%fIfxx9YJ$L#UD|kZNssKu&t-6^!v{-Ovo@R{dn~1~XfdCPbY;0hk!F0w)OgHK zX!8g%+ZXRe+G9JEv2@O*x|o4oAVm#{@#zxeu3pc6wgLHUmgi%fuzryT4Nky~DuJ~?p@$0q z;~Gz`XR$Z~S79Gb@TumFoH;>YmGMwEcDyRbU4 zRdK2NvPivWlZqZMlyXtEZ4t;W=`#$|(p&z~mCVN)bRk#2x(zeJ#KyNXz$elV99^U` zt!1pCO4Nqj3G)m$h}#_AntL^oGxKoLKM093LIshRrm|V3#)LPsVu2+S zLHHO$4(q29K?<~Efc)joOSOZEuLl+On7xAq1Qj##A=8k64#Cv0Jp&j) z!I-!XZ~xG93`s_Pg&%r{?zUTHY(Zp>Zaxm=29!JFbmtZolPWrS4Qy*+tGX(tyu#K+ z=DaHv@jx+|z4*mvdU!PhVN#pFB7!rK(XxD`6f1kQ|818OA5kMe_Vo@CFj|3~#aSaf z+H46!a+Cn`_PF(f!x<$Plq`5nH%N6=vd>f0~(^J z)G(@%A+zE<#DnD-^nx3f6f!Z*z@3dP4tj)F{1(L`sx&B5jl_b%pE6X-Q zwDWAH9gnUhYLx$cyU(&zU#>NSl-l-p0@*Mqzhzki2S~|}PjB-O|yTC>>`;@b-Gi)PwDG=w*wX`^z=b)t9??gCzSYt(&b;G0-s|>$=SjxbZ_V z`67@{42X|4Tc=B^UQq^{*M#X*V5VW>3Y+i4|(K!Ue_ zXEP777y-N8^kHVp**9bGF+oj~{a`N1u6 zuP9Bz?*KL(y$HKy+HHi;X@@?o#R*j$)l3H5z1w!J>va@bGE)&0dS}#B+lgPnCgaseJ!YQs}PI*tR>8JOFrf=^M-uyJ{?&!;81Fg z_?g$IIudA9{#om6%{(r{$$nP{TNSD{V=+>%@{tbKEd#W>H)K5Yn;w_5|oi)Fxi zcYDt&tI)E!Wg!|f$*n)S@p|bI(DpgpBFQ=6!k{y>t3lz2gr`iS%c?OZ)pDfdx!^}d zvjxmPqR;}zert%Z-c@})N;0{;KPE$%9avkmtpgKAuxBk7i}|5dN}mM&;(k0eN5NZv zf<)h_i!x6&9%y_)yeOs|s>#N_&`?}?zE)x)pDau9 zrG>f7F16U2&@UY(%3U87Btf!lYcTB$N@+=BJPw|MBOD`%Y2`d`Wnehsq2%6Pf+kqJ z<)~`S_ft{A#T5y|%TQwMY$meBF~!SV%}D*!XHP&w(3`QrtZxqqKUY3D95d(ddQ)kMBIu2mC)j4lo&_5 z8G<@~c116y^8pi`!cHcH*sJg5=b&Rn5rtK$tWAY1d5rg^r0T~#Gq7e?j+u^1A3O*) z<9wZ6Cr@5RBTx8PJ-!;XgE+atEU3s|W%=U6M)=iG_B#*-e8r^sq&9C!8B(H$dsoQj zD86*tWx*1BbHrw$R_9LW`h2%@2gggi;MR%hn(GXkh_*JuYdcKzqFimUKegk4z($#z z7eZ(~JKE|8mSDm0AK0Z|PeeT?LjliTi>*af%QXT1c`lE(pcjyfKfAboH{p)v5d%lD z?a;<#XODh3lF`feJmvyfOW0j`J;1ok~7%~8Kg^4?R(4D{EB4wyPGe+(k0jmSzh zKfoz&^ko+jL@f^1>YcRXVQEwX zyG<=~>Ha%I^3;pf0s*y2srG})R*@#-Q*yG7H)pdN=e)VPcar8TC*Wl3z{0PplX-or zAO)+Q?9e3ggYO3(156%5neSV_OX0K@QEk*0$e)gJ9Iz^ksWo4z%s9dFfMdMm3J!12 zojGo^@e&(x3gEpSpWzDdK&msMv}T;={b*Kr8|O9}$x=88PIl=j=+ft((dPe`MFy-S zD!40 z|MFu_=$Q|g-ePZkJ1~^!3MSj*Wxif|bwl|2bi}GkEoz?jqH@zqi@hBG@LMlMQ7`Vo z`pU29QgQ*tuD{D8efN~BKn+=m2FH){1j%l)-=Yb%_NzIj8eB`>#HCHrR>GfX!nT4a z-3~c>sWift`mJD7UAfOdb^0JGyZK`(-KwbP+M0W2YaNX@lg6R};e>YUM$JYC2L_37jp!>16aLrxA{9>{+e5hQ8tg*N3)b-s?6WY%1fb1!x7W6!5*t!JV({iVgf;%t>z zDyDB#nTYg)b?1!cni^+VKWu#WvQ&gXawq?jc@#2IhrI^tRCtyCgIag=$^!g%=C^yP zmxPo~#jlXnWNagyWKkN53nlo8{Z@YQaA?E7#pvJK3p35 z57eUzf20l=4nS{ey7cPz@f)`#^nwjf{&h8V-RLh$K}EGcD>Xw2Z8jTuLAz6a{~7^i z<}r&eEQE-rvw4}!%pgl_vPC6~m2lhigqs0cn`gk>fg7yPpkGG8dvF7#JW;WNN~hOj z`S4J)-s*?;bG3YiBn*AmU{#NutLE6`rf}L;QVEJ9UdMF=}B~j>Wdh1@!^SrrB+WE>R6)!nGm=_avoMh=Q^YFoYc7iwasO8#T{`Sa@s) zqo=<=;q5N_gYJs`c^~50?9^Z}5kZDZl;6SSeiQrLH4=Q=+Ra z!(G@RD+?1Y|5o!YVv1Yc`%mW<@U=i;#B01(?+bv)cod`%sHhwmx*>3Kjo>H#9jvH4;iE`IVMKdaDbk7F_C zhGHg}??gk}%mXNIGWHjcWeSdpPGDAwUcUSgs8GljSL zVRkM;W7&kspRFO;pGFWsh(y!lbMC?nX$YG*FR8?PSS!^xlwb1ah~Vd00oc%R9Q1L@ z-|fC4bp~O_X3NmHj5ofne$@jU?1?9M=deeryN_oH97f;3Av@$vuJYg?(KsJ*SiJY(lmJku&w2EqZJzeO z%j1C;IvPf;tX51)d+i=L{G{5RUB&+~=VwET`x9|KNd1$-sLJcFoZyk<7CpVla`^(; z>g4#x7!ny3o4NF(e8#2)3Nmoiz}LG^1$uLVOpVPIA&~U~_f}NIT$K+o!DfV$@mRbA zXvI`q%v2P?!6iI6NTx%J&{MS?--UgA$VxcO5`IO_O&4U96w`nK8CZTM7^Vd*AH-~K5 zWf?O=Pnzi)wK=&Kh}$_(n-{;`F!uPV^9?gUPfzV(-}3zd_=5gd&=J)8GtnMwDA`$j zRO1Ss>El)I0APEm(Ot}-CT^S5*#a&VkiI$+G9rr<@oZc{Rh%P+qmU$m{y<;ak z8{pG2S}j6g#kaG^p&wsYS{HPU>+Im`bJ0G&R@;7MKT14FTF3IVTW_@W}kn=dc}#>E;raOOy>( zeP<$dsqWkG)c6^-ZJQrH75^8aWo|KnW=hDqN2?=Gkijul;XSt>00XG&&DZTZ$6%l) zbW25wFiN4p{MP8&Qy?S!$c`Hn4%54e2cZ2ts!6aRQgPB41aC`JhL zQm-0=7#vr(hOIKN=TUL3(tkPLuhh54Z`0BToDMq#Zi&CK;1rc-JEkFz#_@+R-Ga7M}pobfRLnl+j^pS5U?|QD` zt|}SM16##l3=rte&PVg8i-`au7qS5LJ?lk38;#>q`!Y9Y*8^?y(!WVZ6jLXNS=i6S zwwC$;Ii0$&R7+ne^6k@;(xd9^bf(jqPR=R~mAJYxNNe3MNZVfeT>=n&CP^W&$qwF= z#wV%po(v1Mu03K3;Vecz(3hH01bz;+w@+stIOD4yt*q3kqnfe$9_F9&NgqP8#|#lx zz|#R59MvK{3Vxt>+4s_Np5&23w@8whk3F6ENQ$j(=JfdO4&=(J?yLN?iQjkJQA!aZ zJW5b=TJ+`xSP~l3~-IjZ!wx)kFcN*oLA9}`h z83rvC%wTD5c`ZwJS6mKJad1^3+1Z4 zg08~0M;h_2DgTrM9X>T0^WWRhd^#*ViHqNma}v|F;N4Hun-st-jFlGQhF(CIxEeC3?&l{c}99}6e;hu{)c z$^uz1hBwuU&0-fif6|&rTj`bFwFObL-aM&-3yV4h>)j%l4{r9!v^RlZfcE(d4JJQ|hI!PcE4p34zq&-^8U9(Fj0;=iwwwPrfF zwMz92lLua5&j zs23f*=Y_x3P03zouoh!D$ugz+X&k#2#Q9Tsj>%y)gG<6e4DMcuB4Al_@~Vhc0_a&{RGmyS}gV| zz&4s-GYpxfwE3-FTm+uTHomF_WZ&ITIKcVq+brzT)|lpCbvK4#nypaY)mH1!n-c|l zi{2h}gXvHefS0tN(iie9SIOJtQLsQG`<7keL-8)cQKG&-s@lt8ylJ1e%9-vIRS7-5 znh^naNY^`o-=JWUbm~qSfa>ab@efZqMlk>X<|TCx4?dI>a)M-pKms;OVqM0B7U#V) z&@yHE<4N22n3Cn{7FdXwwxzJaX-$$9nE-8blX*7_vI!hCcHFXfTT69hZ4pA1Yu{FZ z?JOh^wA*U>Gjk-MZI{`0`?KePYR6=haNjmBf69UAr);L-blznMTJX%GbH2%#(s46u z5ec6QE@N^7SJ1MmmI<4gFB59z{(Z&d(t||RkhTVbT9!^?>La~=FjKOAj%@~~yyTvM zgd*>tu&bQfMgJ`60X!vNUtlD>RW+ggfW|bJ+&%0GZXk6wI|i57ReUc#nY3dp6^_!s z-P4Z=G@o*{`%Fe?Wvp5oCL4x|HS5>YLGsA zZLo;!jG?uUGx8Ry&WFg)J-QdBw9|ql0K}JD&nwGn<7FJN9C+}J{=FW)RWlSU_nl4e zR7`hX1>84Y{kTb<4U=M{Yssm7o4Dpqz6U%rG_}*Wc~Br{1G8C*Pa{BX?;O)?JdUw_ zG{*^D;*K;h$HiJ|zd7S<+Iy6S>d=p`oS^^21I2G8Utmtng!NU6u$6pvVMvBpuBPT0 z?UdF)`lb{$-Y8pE&-Mo9OZHPpW~mVTtAIrR+V>=DOeU<`@xuf(qMh8NJ6tZ7i)26U zyjbGkZQ1u(8>8j+=yu3%s|Y9;LTHK?bDSyKgQI{;C*>QHgL{|?kW?Nrumiz^%k-p` zqNd$#YGdSz#A#FFdb7?=0!8eJy8`mrgKZYF1VC|x?1C1|YrH?2KBd@%;)=knfo?^+ zigdiNgEff{L=4s!PCzTczgeF%XHlFJI9mj);AFzP);YP~rAcVGyH8{KFZlmkMnP_# z*rjU~ffYK0D#PO27m+UgC8Iy2hgg|aN&qlbp^Ym2qV3?p*S&zEPR)H?xvop|Hbd9Z z`=Ro18U6CP=-HS4a@!+qWM!mC=mrZA`v)oDS`d(y#u~$2>xOeEmIOVn86K3CWYb1< zm-N{ruDt6(Z7vsh=EANiZ8yO*pbMt3B5=YNciE`4BxN87u{4S=@h?3_E(zg$h{7nj zDs)H%c`^frC{jVV!&J-d_AbdA;vL}``%2}kZbgT84Y<6()Y^dLrzjP&wSF*o@bp?_ zqs|zD3H@eKC~`$GX#2KX@jQjvdf;hCV*)j0`}8UTKx)DxrSbi6M_oc>`QTHD3P zVDp>une!Vo{pUhjI=bOBm@dO+h(Jr82i&Y9T8^LNacZ_0&?1Wl2Nhh;6`fR_SD9S< zoDdaC>dqV+CjE1<^NHbsqOzN+umb<=J+?Tv{T-q-e^wrAbHz{oJ~m;G0J|Ay z2Bd_0O^5mRqf{Vi*S_e*aP3tZVj`m9qmY;)O{=^P2>T3W&jh|564;i>hm|a=ZFG*5Twlcfg|oHwqf6Ngd+BEApXxCD3PG-%*P^ zJXy&HBqIUOr1S57BB21-o4Ht1BXO)rJNjVLR1qi5s}C8M#wj&6FvdEiB;{oWZY1AmIPXh|ePk=El3 zaF$Mo_x*c8_OjAzVb+O$6J_VVp$fD)Zc9cOQd8cuEyPG}-^5p?=Hqd>V1dKHt21K? z>%Df&xMZ`9ocf#9D=iqG@K4|4{aj_F_mUJK*{e0;IEI{X{pO`Q0TO}=SO~qILiAEK zFqJy@eSOBJp#+KA^!6UtWNs_J<&ynKEsAn2@!4bn=Gau0BQ=slPp5@wIpX+>}) z7q-&>rIB*CT?ff!8&>T zNKOw8jdRn|+^pDw5TM>Yz@0aoM&Ly)RefLu{A?zVpd7327;;qI@ZB}Wh{eeo+W8-k z$Ib#B3Jfb#z+g=?4mN4PRSP#C6TwkEOeM;Pji$HsIFN`blP%*_mriM;5w_XFg9!KH zFV#$n%Fc=^P#wOLSmcCDBqW&P4^tx)Pe0Q|p`OcHZWYZ|7THgQulm_&)|A>lPSlVsO8T^R zN-Q^Dh^;WbXgi5Krb+O7TT8@sXIsO5Q`u*u+R%&51ab743lsZVYr;2*HtFM4E!Z6> zv2oGvgl-@7CtTi)i4Z)GJ<`7UMw~U(``{KvSge3S7qYnO3c#Y@AY76EpEP9HFBmNm z-<=+n52iP&hNbgsRh)0(lOkHQimO0uqVV;)q2Tl*L|bS^A99$o4^NX&Q+ueP64$iL zN6&!_L0DX6{%W1hYNAv3E|)bJw_k{&e-=Ujs1dT5?6ENbRrP_{C;4Q(DKcec0l=7_ zed;|q^`ujOUn|QiZ~ScavP^|e8i8hUKN_bl@h9pb(J?!e;GQ>(qRAc|wR^*r>m7~I zPq%s`Jv1;S^QI+N;@iu*XA5EXJmCXWm&5g6yJ5eXQ7>^O%+G28h9Lt7oUI_0&{|w( z^Ur1kao<$+l;FCCnz9?RE=DNE{>6$v`%cg-iXjfv8g-)pN<#)a z&tM5|5EELP{$_RLarX!#2cnV;NQ7jpP#GFv%8IvWPYpqOBo7*&v)J`vmJZi3#7$p=Vsvz@iHCQ^sc`HOM^PNa~RU!i0rCrwKUF{R7C*%17pWwE~{d_y>=g41tqeT zUa&}HL-Pb>evq2v>On9gppy$YTMxefBL|G8i0dF~dj7c!m{Th~N|A1*W~ts>BmiUB zWcETsF_~523};CpL1Lo+ zRpvnbD9;0moUw>1_{dsR2h&SJ`!jy|E7(9`h4)`Og(9gTt~0RECP{4!bf<2`{1IYu zg~1C0m}?)3qaEKJ0s={*1ilE`5}ZHDJEg2Alx75ks2!ZZWzj8Z^|hInomiVE+DJJf zGy0=xI1&P_-hS-CaBQQSd#l%>d0cm5;v834M+F=zqpd;wMC1957D{j;>(kA1Yl4?>GFUHIDD^H=ps%Uj2jl1tLR4*!=pf;e0@BR|pfhA`V3RPBh?J!(D;2&Hd0BuAE zJ2gtY@ihx(f9qL`s`G;*2qaA%mJ$n}N_TM55wc1ecvA6ez9wM78 z^GpGgGtyj}OBe2k*dyFMFX=lP41j@J4;N`=VWktr1abGQ#O0~UMB3uonu+tGlrC*n zeu*uH8;@`k(b*>V#z9=c3aXtH@{mb~kx_S!Wm&=z5G7Lbu*cH-4>db}x7pr+UiFg| zYN;eSVk2Y7wl`yIR3cF{j;AP+<5ujN%#IBc$a@6dM5q#gqBJH_=-2^iIq#b4KG2X+ z@0~m$iW(W;o@8dMgDb~kWiu@yChb&zJ8efqOwp1;fN`<)WPh2yATcbcBYSwS@#lje zn+9c|b8ofX9z&z<=!nA*ThH~I8;k%0i_SF_qV;RGnNPCGweU}&Qv~i!TAlf8noj|B zaWr-{2yB?QGtj9CMec3T-wrWVJ)!Dvw(@XSxsU$ExS6*oEaq(N0g!<8+a|GqV|2y=wbcy11nH;I(@ER$uANyw=drp^s^g&W zrQrf-cc~uStOj>{VP=__`?O%7r(XYrIrec`=xv7sPKL&U#6`C5=gL_%f5>iTVT6yJw#wl7XT;TmPdzV3?T0+WAem^;r= zZ!#xAYEnL>QHUoQeLvOy@W)0QsSxx0Z)3Yz1k_MV@P*UWOFZvwxV7OqOdwXF2MBJKXk<0#H+%F^mP#R= zDURt~JBYA*vZqiHIW|;dK&IMX1<;&Y9HEASsB1Y`50Us=#{!KaL&L^%weB=5swYfT zZSN7QQp5@^wQ@Zz3`Vb$2uc`92z;@y;9Cc(>8GSS69yK5;DgkEd=0fu%wZL78JT3? zie5P?g<5r+KO+JrhP}m}-aHwi%Xg|!XZ1W`4=@Ic;#(yUxG?GKGjs*g2o@#OT^hXd zCv+o&T^`BVArHM(W!Qzg?y=;)GO-7Xg9xz@7*4)=H3Z(;v{jS)Fe>ysqT5=s)nkwUd|7+V@<3y8+1_+FPVRrqWWiZ|yOQLc- zu()SV6ZmVCWLO&UWfFJN#Q{RS_8T*FL`cfvhs~MZa7EMj z^JAs&f99B_xelmBJ8^)wb}Z0-89Nk>18R~MrujeSXc};aW!g&_zC`-My!*I;zR%Wu z90)kK^M8Kcb}^0*+|!DMjOTza&kVDK?twH0(} znASW0cegbJTB^+SK&U7~qg=+^T~n5)yxARMPv;nx3#4j4Kp@49EKLu(;_X$)tgw7N z_7I0rZ1#A_tQmB>ewt=&y>tE-X1GXd>HKM;<{fl1V zsu8F-*-)4--9xH5)b^2bu~LU=C=f{5Sr02~d~0c;tT8OSrrt`4=kRV-^Jr}WzMF)9 zj$@3?X3b@!nD?zR*ZY=GlpyV8)$7W=yaF2(q$mJPT)}MSTvBBHJ7Diz^CKXLj03);uOc0>ly{v zj#m%8w_bJkUubOl?7e++8dLn%bA_WrO`r%CX3P0S<=^sgahCm86qQN}7WkyJV1aui z1In1k;tGS0NuTBw;$^ivwl{Trm!dZWL%GdxF25ji&3HKSzEvJJ-K@ke`I0<8f8d)f-uXJ_I{T|{PB7i|c}Uy|{ntQ@y&MVg3Vr{>zlJl^ zzwzEC)Bdr_%K-?7ct#nP1%TM*q#+M(OTLxF@-0zoZKUXsNKv`v@lp;rS_PP(M3pY_ z{&TUDahqP0$BMw2u0&bmEV10|Mdq*Uo<07gXPo_WZq++5Kq0E~+rlYGXu211%%j-& zOyW>_6|IdS{BK?4=&BHJud2#RRWm@5QyU=ZZV}lzw6fTgp1b+YoFw3`D=vk7Y>4GR zzLbkr?ilc!z0{@%D@~bsL;(%V_ug5^Pb>6Y@czQXkpM*5$7M8J%VsJom{^d@_Wj${ zjCb>pV{<0S2iaU!y$zNPOZtr^JSjXyGu#KjECS+Uo3ChhJ7N~j{yJayl)>4N`6${! z-xKf>OWyvaWCg|l({#%p)5+dx@S0MS*{V#zSD}8^&&TDaD?O2Y${!{)Es}}ns=~^? zt&H<`RU1k&L7i?&UZK5yQVpWJj(W}+KE2!TMD(mg{pqp}pY}{5#mWIuK-xGXyo5Hn z1v)O5Y55Ane<$)o*yC{Us8hG3-T(eHmtg|kprZZWie)C=oPqO(@_L@6A0zmS zqd-|a%Gb>e&{X@MJLB-$#uGijbTkb{JE4I|PdPAL?uzol-#QfLp^cdb42)vDS|hN`F-jUG9tFQ%d7zmMTSQG`LV`TD5(hYCr~X z^tB%$2`Hd7Y{u+Jtu=A$nTsEa4LzJl+v$*A=(a7Zm;O|Ga2F$q$ZlbroJ3aR!<=Y< zhM|#F+x6*%HC6~$c883el(Q*{hhQHb0+PfpcJ$`IVB$_ zTBcD;DMBEU-1Ie6vWFdW#z94amfToX_I1I!i?ejUsh59nH-{K~v|dmZfcB@k1mx=ZWIU0RGeWGd^uuJNs&XGZ5iA=>G;@1pq1FF3i(~rg_aAr);+3qt zNivqdqgtU?eSkj`*Y&amJqq{6Y!hHfm_#Z@n-vM0S<9D(GOJ9gJR8g@JA94MQb>^| z`gm0+M&={3hL$~TgVtOB%0dW+?ozHpzlWkn%!B6s^oIv%v?A*O?mW{diFEr4p3Ms6 zxl}6nQUGqTGycz0$t^}NGG907r^j}2@$HF?jc=$rJ%YY#Q?WStB8ph=%EdNIk+H!> zl__zbSr$wGF=W>b6SG%R66mGb^BbhSN)1+d7^lT8R# zk0&?tG=0YlddNxwvd~(E!*Y^e=F6FP&fhj~ z`_ax-TjI54m5O*3m2I$`7MA@Mkx94iTrs1zq`C(m1IXsep~a zqiG<7`=j)VT9puXQ`% zClVn6-KnZ&I#W2gPh)trWrKe7HqqyH`E0ze01pW^98q7x$_D$#=p!lQI8U`QkI7(G zouPZsSBbgEaf>VH0eb=7)HK;BAd+FMbk}$jb11nC1$>Y1xzvsyzHl5O3V)vK z?BWS!^z)<{Y^j$W+DXgTv)!q)cQ+f8w_>VwJa}9hy53?XTdOdRr?k@|TM*zgqOAfHQ*8)tpMyxgsJl=g5j-eM1u1at1qc8u zVhcXdPt^JXYVRBCnsrAn$wW_Y&50YEsqKXIrjn=$)hXl6F7MPgyeH%M-?~P^Vf&e3 zs9@PPi$eUJD(_o2AQE8(q_ZN#;dW2{pa>Dw7a0-na@^7Qp&x=RG<3}qN(?lMp*=$MzG zCeo+9C~MZuFvIoBwx!c~Twja1Iamj7WVW~Cw^)j#E=@Nq^FXAx=WS(K9-yP-Q$^P& z&FSVu;bBfvhC8oq;`fjzOeW@9+iX|z2le3+a(IB&G}%{c*Cf4g#DpA|t9slVOBb$f zJoPW6bBarKlJ@qH!ia*vh;Q{1jef1N&7n%COM>@~%zU7oIW71w0RKM#z+@XoWD75l z!xL%}J}a_MTrCK_j;xhcA*7W{%rUL&GPG0^pWyjX+eu5#1-X0gp&aP z<8;a1GHfTQpY*62ERea#+!LxqeYzPwks~eeYV-$cO}&E~wa2q2(BT3S?GGATjpfpn zc6rT(-1N@ILqj~X1f0U8DghB#kV)hUcoBrexSm7zQi-Gj)TZAv4xQ`Y^@gmU&x9{= z%@S#@Ty|!Y9%u9zqZuO2uy^h+?1Nca@>dH&;Q`#$g116P{-$l-Chwq|J(H7-4+y_+ z*1V7dxS8(QPyC>nG2H5M-0^#D99-ZI3dsxX2)Ftd<#1VZCHWAweygIi6FK~sBUojG zV!GKl|8z{3H&Y$Ae>$a@(><~e=Qg(E+NDLDk~|csv8($`zmuXAHFW*0nd(V!ZI?!z zPr`9?`i1Kb2?;z*-0ZQ&TnD#zPy_=@pNeRgc{<{bW4uY~O&f$>dUhEB1;S8Hu_~xo zVQCh1qo&6kfr1Sq`J* zaqkh{a-$0tb6>#+1tSj(vLvou+iryMEyU=a+ydXZi_Mx5P1DDW21EI_{QHnQbxv@Nb`v( zATV~?NY+nsn#F1-geFg`6Ke~4t5pp2#2E&Nakv~CZm_+hS+Y0{OhHx#P=?=Y?zNl9$G(w^nADKKkwAi@i znLLONbwwDvGZtFOi+N~=FcjZ@ytsn!r;2}PvdtKpylIr!=>0;{lF>4C-*M7VR!u%Y zOv8PrYAvk)zY77Yy-lRE>^c%PsNiHk=Zl^+Z36K&cnKTu38Z{R`VW6DvP{jd*Ma-A zx|5-%87o$4lr)*0IBKm9;fe#mm~bm6{;=y{e_8UZ7EkR314PtMG_mkS+sp@6&*Bww ze`gXo;RdNEIl@Z6jA9KZ^PD~*>^x`dx!(g7DJ|7O#F0I_SJKndO-iX(6bkPb%>aNk zd?dOw*rMbBAn&&9?-2qJVT^w8*=9;Brb?cZXYM_gvbf7JP{rNm2nX~I_Fe4~T1q1YNM zi48AFyFR$hhnEK2*91Mhf6Wh`pE{P?I;j$Tk$sGxCYTT63wqhBdfn3KLx)vJ&9}}V z(Lq3jF@3p+kwUVL_M5P3;X%COG8I17lI`02s0+3X^l0Wj14^mhg6}G{i2BS(o z++(+=_t7KC@ajtnc1b^+@#_&PF57}@!Hsc|gf2w3U$U&t_VMeT-M4IhvD9ywBGe36 zI~gPQU~UDNzF8=yQ86t6l1916$AtC;7i~#4BAxUTQ`|XSVcIIB!*pc8kpRv)BSmKv zEXuen99s1=DqKYQr=voAFb*Z6T=SBGH1dALZOq2>!+BF(#b;-tAL=Z2RW}G?Z>vY^ z1APIK!n(<~q zb|e^#dwcX+CiCSn#a>Kyg;&mk9wVj~Mi@3q=|DvY?}bMUpaNHcaGApI%go4FfuEnX zL?j@5zpLu!@mJ4EoTQX8s)RCHyp$hFMuGEAGL{b{5pJ*mnot#?N$+B0Dh-+YCZ;pq zoTCciF@oKxDbGHtX{l|@rqB?yq_M6t6jiN9iwcy&POi)BfkVLi0S`(Y6)kG|Ab zQ55YLn21|feGkSuptJ6p@(;o%)W~`%A;);O?9&54j=N`E-+#Rv7Ya`-%wKk5N)Nnd z#R;Y4Vre}UXQhrov@4DLm%}_`ivjUXWIoB6=Wb0{%h-v1aemg0oR422Y0LJ=_wdQg zW}fmWT-J`_(QC-pGG9I#OF_kcSX+-9bPXAvP;_bj`o?rWB?^9j#1a>HZ+NJj0ASUw z{)1+w$%$wYou)=cU<$Ts-%Ka>Flu!vFu)VFfJE_hcXUaoFP^v(KSv1h)y|0gjCanVB=-BU zY3^+yqmn?oZF9p$^*C{2JObuuxA$shQgluaJYxO1N3=sOuVFR*NYrtv7X>}#4Sqc3 z+r3-r;y9CI-f?Vm$W?YFCbRH;P|dSK8$fNzSG94=Z92GrsY~`uy5$-mh5p}N8b zFTk8vaLE@6r7b5}@>K2HPo+0Au03-XF9E0$rXlxt<>GOrb&FtUEt2SI#)*)kR$&n0 zZnzGotud9+EAennhaJEANL}CSuanRS-qr5Ui!mel%pTYwImJftyRbdmt$L=_u=Wt% zVsG}u30gTD?L2()!-fqrNU0(sgOY>3P{?)(9K8c+YAMrd+B!pI3syt;W%Gak((7kD zfV~Qpk?n^voibAwZ-b)wC8r0)7TlS7F!n-KtL-b#JE?6090V(Rcv5s|?!A#!@ZvA^ zM^=BUzr-6ey1BK@+1`E;OqvG)9obqBNJIS2e5BrfF~(swjU0*+nX_vl#M{abxegdx&oI;;D)0FgzC!Vawpn}G6L78 zyWe!{95AW?W-MQIvirN0wkh0mkj&dYOKZ&u1*>z}FdA~q+ivVBJ|YBrzZ<@3(nYeM&>vf z&$St@B;vNBx0>~(6^^$%s#+;&#PAlVGaaj0=D^=VMxlu3Ly5sy z`6feiK4Fo!q-P9l-gRj`qQGL=-uLxi0qw4?3*#CcorRI(0?+82*-3?cKkMysU9!?z zCIkYxWDiy`S;w`j32eKt^qG9I8kw*3uvNj(f@(>|eh9nRV@BoH$nUd^rMdK;<6)E+ z5Bdl@BO2$KmuICu*67P59MHCwe-@=|IpZP$=2p4Y zc6kbozW=CUd^WKaCkiDCZbJJ+p6`CfUI{;CIj?vG8<5ampXjBA^M2udA|W?&PVwOK z?V}uLJ&zvfYo6ZypBdZ6xL%rU=&JB7J5}Vw?MPjYJxa~Kns9M5U&)RWVq>x9f!K9a z6Z9P*z;qLLf}&%ZWVkxhf6hn^h!i}rEV`xf&!a&Q;HE@0E!xe7)9duoJk&4EL=Z;s8y01cS@f|->Z+WNQ`^{yOOipjY=r7 z#v7nr$KdSvip7Z?qG;1`W_?U|&+(YK1 zbUzjmI>c*3@G@*IM2z7Kd5RL%7Kh63iZF%qrI#A*aGddN(hzLbI*+Zc$2r~ckA&{F zS5VQ7$C6W03>TW-+s@@ZsbI9{13gBCan+8$KnngFfAjZRGMx&NLc!Psvp4#)2JHYI z@)p1fGCTtX#+SQaf331YwdJ}&i_}AaCY#xk_!9X?a+Q=Ckc*9TKf=4-jXo3qkT;82 zA<}aj!u|u#9Uh{a|A3WjiQmhT=@DMZ->mG*q&se786+-3p!Jv*o^~EdQQiC@qK%+? z)pwcyB9VNRL7W$crvywvt$# zKC9REO?U3U>R6iUA>=5Ht=OEv@WM>9Z+gd2$JP&x zp^BU^x?w7h@5s=}l}XJSq#CG%-0bKsbXgIw;%Z8;!aNO-Ltdd!yBzN!2RZg5=l&z7 zplL;DSHB6R(8Uv>>#;OknvUq!EJ&r^?Q%S^5MFiv8xg*NCK_?M&cK8NlMz`@Ndu`% z9e0_(-n=Nt{F;yNrUrcsfvl`e#orHW2i?ie>`^TSTF z=SA|mICygV^tFh<{Rc5uEu#=GXnEpM`vRG5Wl4p=^YU}{4@7hm>m)&4teO46{iFzt zXiss|VfdTM%fr4Hp|Rh1?B^QpP`pT|u@d|AoYTO7kDZM~2DDKLq7Qeq$mo-}8%($d zJ;24OiCExQ%8v(e)7S)ZU33XoY?R*<#^mw7>8P8M5jTEb>SRSY`|0O7DuOZ^p^wUM zeLZwC;Yl}TnkajGFf*%&k~o1I>}Jo%*My6`20Qzh&kP24KqN*>q^^g$=?xRP@8tAz>DB_rF(WR24`O!h{L_2-gfmuQ)Y>YPbM2R<+w5Jp^>SGJVL8vwLU@jAY4o_XjuVu)0qt>u*OQvUcS6R)glw z~V?k6!e%x z&0(JQ-(6ugk&Q;eLJ_zsclaw4sivv^@TsHMjTip7i)gWI6_P-U;`X<7{p*Y)vT&>D z8KKv_#Mn$9Q6kUZl)fvxK-zGF3@RR434!*^f`XsK*@K3~%^f;yTS`>^;Q?Pn(Klcr zxqs^A8jkC$s^IAv<}qZPj!G9B@_eT*ZOkHo#338h@ci^yU|^=!F0M$VFtNIrO2!VH zBuMb;&@r>2HA86$!t3==QY82O=7Q^kZPk3ue|j0Gc(-w!X)l;Da;8#Qb;$D2~AbDYGtchn>kE<5d7u)wGY5E2t@siQ;|E7u~K$ixzA*(8i!dO0m-l@8yyMxbw^nk+Mg2Vb701rXFT zEvcFv^ni{4jk8{=JuwC8VbE5i$L@Rz2y-GfANH9fWF|R9s>~><*38C=5R&ln0H;`e zU4f0Bb(>!fov`?UwdQu$l4&N1Eo>?JBCvDgYwu{Af2kRk$?c*jR)B-Xy9rD=SDgEj zxr{UWQ^}}CMm+wCa8MyQkYmL%m*S1N@Co_p$Tw;Mk%ZxY-TXU( z*xd#}z$@K?oGUHP(l9G3r|>~B#&$#yh1a48_^Yzn-2fr(0y znod$6q6{N5^eL8R-rJuGh!PtI2>V{g+vWb+;qRU?k8+CU7x#bR!Nmpk zC(AWCl9gPX9e8Mvwlgf4>63;8(J|r<7U^%$U|0gp_>6V+R!K=S3#(03BXs96Ih5@( zNC*#aFVtGo6QP$RPuy>;V|3hHr_CFV8soC&M2|ik%#Jz95l-keM~(t=4HBCZ6k;^L z{;40YS+mFCeJkic{DWnn8(pC(gK0h*^=>Q;HO*T3>(Nws9Pe5B7;o?;Ll1*G^nH`>(JAvI?9k1cAgw25fN zOe@E@`hY$`$ZIQnL(%3 z=}88sARv^7+@GD{9b^*ThdZV1@^xK8&7up4>1I&TagB#bZRjQ#;EB`*KzH&+u#*wA zy49v{RujC6_W>#qU^Nfoq&nUunK&4qmT}&fK?1yziU&XB)35x&E1bceo%;Oyd$ZtWLiHjy|+@`Z5;IeJy=mPh#<~+;q zUebDyJVwf_9NbFl6fp8<^30Pk-n68@^+yxEtLqWss(vRL&6@(&!ZYjj%!?%x&2ZsJ zJ8R+?{a(c3MQKG%*axhRF2CXG4nYzAQq4^d!BVxNFCzWiX7-o1frAn;=-((&00TL@ z<}7L9sbrS%phQTVXi{kcr62(0-3L;{+%#D1w}8?T*rr-#xiDfDRotNvw$C}IBcqYe zcN$Pc!kIz=ZLx8JeVRkomW{A+FtnB3vE(Qk9}_%IjBD9746s_8Qb)-C7Ys_$vWIwJ zjEPJM4hO)k#O}?!Ogh+lDa$!9Op|gL;rus>?hxeG&4X|Qa&m8p94N7RN?@Qj&aq6^v!mvv zs60?(EPS62S+yo({B3c1h6}MHU{OFPc}btigBD8vX~vvdcOfx>0hV} zay?Av{PlH2FxEO}8VVd>(n{^LP0vHW3|o#$_Iv*D)Of{1oGV3BLXti!?J#KRb;*fg z=z`3!pxH5%#ZCCU%4e!xi<0kvj=4f+8UCg+C$~zeP_+QV9ZIRDSt!}kJp5Vo9_k87 zwkxtOPDB~Vp}oITHMBzjdC#+oV{jIdIaWSpZ_0p1=+u65lIVNy?3Kk8EYlq6I*mj5 zr{3ts&Lu7UV~ASm1Fdo_Onati)zejqhxVjK3+b61HqcmYHy1B#2@}t>HZ!-%H5q^& zD5@@)`lN_j33Sza^@cJQU2vQlj=2wpVSlqV@!1>W{Xl@`K|&aZYnz}toL#^$Kn|38 zGvII$pq9$32I5MPi&&k?WU3W+p`IbS+~I{9RMXYM$~gj5V8J;aip`mUcY?3p0c~d| z>c26+kfgT2&!fo{1Vz0v3A|veGI;2PmI9Adw&%SM`j;Gj5v3`vZ;JCKb|9oUWNXXM z0$DH7`vDBe6mrP2q|yzkDff#F_}SFGnJ+*a@3lMQ#I}(*i^o1mUCbR4dM=yH;h0 zh@t}^hDG8NyP>+dM9v9c@aX})(ixaXz=!k)x@H2d^nYjJf*&hdSjm0Y=WT$F3%8nY z*m>OBM$m{#hZyTS;U+K&moqI+$ zg}Ewz#Rd*}F{Q zHil3n^eFGht7#s&8HOs|nwk&?y9}OPAZLq$GnRaq_z-4qqe4S!)u?gh%P7_I7EnZb zo%vy)Y?BMjbH_A#9mxr;KxH7zLphu`rzALSq~g$Y*C_!}xv%gDwd}|$egG=o-l1TYl>fEa&VWbIbfcSP&ZKFKeZ&%=z;Ei=lp}b}Mx{0TB9ZT&Ar5vWq7CY}>*tD7IBAwwCn+?%kov(N~+@bOxe6KrilD!ww;AI)v__Q!PT<*G&`);{yP5 z7CkX0ORP%l>@$>E8GAO^0Tv6pcL@GBS!+;7_h9a-WR!l5aNB(hK{LA=jG@VnNxiY9 zP`ze%NG7(Ov&kq-_tCv&wj>-t=rs)~H2Kgtz5SBHw@Y30yJOSgcT*$ux(RHR@M9Yr z68z}`fVw4{cuU-+V}4yb{l$9{zuyWpN}k8BUTE?nuXlOQ8gSaIgJD*Pasu9l)+82Z zmO@Lbow?-16}e$A+m!rIh|r`&!;jbu;%5=!YM0|$CsC1hP7Bt=-f@aPELEhy96x&5 z1&4~1%!H3YsIWqKt|+oEW0t9PwalY17e^d>k1v=O#ikY@%loG`P_Muk^*}N%Y41DwMEQpp~AUZwU_yB#95SmvoxRd@#KKr6RI296xg~U|H0Bt}lXQr5~ znbenfS}*+{T1)a<1Mm~@^$ZifQ+Oo7Q^y>I7GLV1%8$I_9*K5{h<5}0dEZT8Sb!68uWGvMhQL=%W zT7+JM1Xv(#;csyol*~7JV8v1xh~^?2M6yqCtnX8!s?GZ)D#z+tu+6>rM)_jzn@mcN zph2idZN@SZ0xgtnBCz`$}OkvQhr$H0}nWqEPcd>}}{(MCtl6YqRUBS1%UiAsRm=W&TH%!`|Y zsmMt|PeI0* z1u`k}!Fmk~7^OW$zQ^)k$>xCpo_aW4XFRgDTZJ~5w` z%ps9*clqe~)&2{GHHV}3<<}ED{1M`HcR3*dj?;ZHD}awXy_im~R$Ea8*dlwOi0lf< z@+-KR;Ua|J$nJfdD1m5)1=%aGx~B6BILf#oyX_m(r21Z=gNHOt_jGA@!i1uqlXl1H zIZ~QDX2dt;_#YrfSufh+{P(R%qwQ*`+$*Z2E_lP3_W3>XYsh&b8r_X@R8%lC5;i|Z zNg+3zJp<5LlXqG7o`<(s&27b^j;t%&f88}mZR%;6gGATEN>Tl9aJFm|7`FZnff)`% zRYj zqx4B$Tm(k|{SAHRb8HyS`L8i7X(#oa6b`IvR*^fV{3;MME?Y=cfM0Buuzy1Hyl#CJN`%7)N@zX0DvreDRfej;!nE%nv+V{dO@K@^A zACBFeA>tL2Zu2|Ovj?-%AJd~fGBhv1f+7~iH*b**rr2bKfPnvSrmh@G4HlFzkl?05 z2r94WTS+@h9_X`s*E0&kl>kxIcp)=aw?X`;@|>bcNu8dUnEwV}U7PxYa3fEwkRw4$ zr@57}yto8dCe6zx=2g1>dpjhUo4UB#fdA$Nxog0#mi~shm;-`-J8(RBvLRE#JIKr) z!iW-d=LPh$|MuA^sVs9DSv|+uO}g7#pyMSRL6!ZbhtbA!t}c10NAKM59^eeeki8~0 z=YbM+=_yn5wx|4?+)uC+7pa16600t!ZjblZj0|^(KRD{B&@M@i!O|DCzd85( zjsIl)(Xc*9z4ZJkA!4_K-@``%5sY_U@GbQy!S5)B?FKcAneh&{s}Sto&u={$YsD;V zI3UoAjNaPJMcO{bs9dCu7Y~Ox<3%kB7%tQ=z~2oO5xSW!<2m0ckpV~C7<}hSU|r%F zK}n3+N0dJ*jmi>^C@V#1JrQs15K2(dRwNFlv zOIzI=1g9BY{%EG z3!6YWK2Ufa`vPP}z&J74GDpY2|BffDPujRX8$Zj-AqG8eosD>{kf<)bA+G>>k?OCr z?}j#md`Et?-YP*$SZBWDs~_3r|FP)rut_)4y7!ZYJR#+Rg_aiv!O3h`tWRd3;7t8hgqx&DCqEXxksAar6DDtqz{?f?&QZj*#E5-B$vc>ZclW1_{}Pu z4Wd<)n+u9MA6@c@eW3tgUoI-Bdcv|dJ_iEAjY}QGM}CXQ=`yU$;*-%gDm|nA-cR7z z$fci0r{#@s#!i(3W3ab7$3?f$PWOK;&n_ByS+<-x0PTsU1F1`)Q$@}dW%w+XGBG;Q z+y{)2dEAP?#$n+9xC-@{Pn@uDFYGit)H zgd0}bAMGHS*dY+=DQLOOb`vwvT>ri1i)~9DOHS3lGNnHxX#Bu~Qb&4rbEWLbeWvF3 zIg%oGR{d{%F!X20yiaO^nbe{j|7e49Z-((;FprGnpZ^qd@=!TdsyH_HbQ#Em z9w|&k#k$_v;N4np1tRF1eua0-D89jo^H@tu!lc{{;5Skbb{}=;_ZHH#Dj4A%1-q+X z;&i?xjH(Ui0$3>8rXzB5gm+sW2VN+mP$L5i6|Rba$zeil92qh}=AA14S1Fzr1LEy8 zR2%LCS93ZTTmXV#q7~Q%*yF8@@^f1G-3M&on!#{Nh7IBUKwfhwP7j6=QK@CLe1^hc zY)a&Bjc`%57?m#OoxO$~&q`yrK9B}2udlG;xl##mo$1_71+eSD7PZQ;2DW6xlGHNVwj@_DXta@`)pW1BcTgm zTNawF^V5&qJWmo9AAo`ryrr5%bM?Ov)A@vMnhY;qm+>JCzo{10soZL01V#Y0F7O;s&>iY)Nh&?bYtoFN%5o#wse704jE)UAT&{;h_}MNlYR0Tx#{ z98#w8tN_3qay>7pPG?TCCNt5Tq(U8jHd$qZ9wkO}CSt>>p~C($EWVTT<8{7APjN|+ zwjB1w>1bcu0r{#!jMGL}Lu2L0C+eQ$0Mk)ZYY-vy$6Aqc+OBi@Omt z)yzvEhOXabBZFE42T)H7O8zi9H}HfoXwppog(_if7r9&%bop>iDS8v(m)IHve8(wn zmoIpCM(RM5iQ{baGlpUu1Wqj$$8s;IWJY41on zrm!y~L<@z_e1_FrdR(E*n87eMfO5C;G}XcTpRG~|Yh&T2~51%K-y_*03*fUF?7Lhqln#gJv0?xyap(XbL zBpx9y&YaFM4dQ*#JK@YAnd?UG*vKrIl*w!&dRe$46D`8;gQ}FG(br7ENW=zX2p<0R zsZmO=>UxZoCO~MFc0N@|3E$8jQ^fcBb+juQhq7VCayqQ+IEGsis$Bo(Ye{jD#VCS0>QHNuCQ=YC=E8`GZxGsi}{?NReR6sR(Po#-a@)`4e_H#hoXrc#6>L z!k{m7`_wEK-$qDu{tTAM4CzWh_GW0tc%`GIqw;7TQ>n+_((Lxew1dN~QjUpLu!ihs z8r2=LkMRX~kEx5AOj){nFKAe%wf!H_-1GRbYV?ksq;I5wW#NO-?3XJ5W+2dW(?(RP zzLc>-@Hiq!ZN=}d@&+fYTbJ3dPz>K=&HbFl$Rczt$X+{1HERC4YUjct-doQuWD*I% zRX|^9QN-OikN#(XFkByb#mY2oInQz%Gl(Auk~s6a3try$TVj>1d%Ct{j$g!@+qpm| z9YZ-wKw=>{wk%^BlZtU}XoWk-$;omb--%^#^(ZD}g|&7|OxIMQR2Y4LY!1k8x-KLt zEs#s3pNTFuq%tPaCE3aW#8@;S&&L&RS*w}}uy+>+I^o)cPwv?At6D_f&HytsHh(*5 zG==3i+)xxTfr?XR0hE@#w5PAM+py)n$8*tckFC<;-|37lKs>P7?c!wgf$6Jf1sp}` z_vnOrdArL<1jj;ucFwx&F*1QUs?7S$$1kHi6RY5Hj7E=kkX(9w6W28qZ85jsuvPPv z&#^bEhE9fl=SbF_azn|+OVAc1Bk@b67oU-4(DZ)yPq&#%_Lny*W{NT8(pyVRL#wLq zxWq4XDB|&H9jyHUIlgN`=)}lJ!$Moy70Oj<#~{h6_@4@&tV&uV${3$ajD@`vmG@kA zpZutN%G+7q;F2OFd0p?~68fU{q~>ZclDg(Xmi+PWbKF2OUC8o7n* zC%4B1p;n-JE~rP)_j+!!yw=-FBx503%is5cID%21*lr;L2R5AF4~o&%JUrpU7l#k+ zRfLqe#InQrm44DytGI>dJ&|RExbD@histui0{D|nI=hUfq)MDb^DC#kc012_*Yy*L z+YJFUOpL}Hzjk^*$GBDyiG?0h-T#9VD=f1d-H$CB-FVbaw=+DF^eSr>l;|&?H`{v0 zSErrx-Logr5W;(b#h5}XvnJR<^f-K zrTpftnn)H*Q{T7C^5VVHNUT;6o4B#3iT3b0jOz#BgqA{#`AULshzk+v|yg$TBwNW6rsbQ&ylpu&vR!0*Sf|?sEU&D9|9RBlJ4_LV96W(HI?L}nPR&<)da_I`E&Wf}!6Tv`e068YrFFwL zs!~WeU0HwnJcGDav7=IZGWD-p1AO*esEQj(w62`jX^XYoTq~&dO4ChEN?vuPZLngP zq5YL0Q&wjT@S^R@*nIEB5N@Joy6^!?zX{d*v!gYYiP?Z4;tuh-)9Gt#&6ON{+rA27 zEtj&Egx_%38}B!4>9h_OjAA5&+i#cqogHiLcPHKwQJ@Q9!XHRk{yYOf)qt&y^X z&&m}&)y6osk`(z)T&K&@RvP2O+k-J2If)~nAW(Hm%rarQeI%Yn48q=zvW{1aSq7@G z(oDDlYD&j0+F7*t>`|PptV~_|+9U|Bm69kT5N>V7oH137AHk|hWH6iUX>q^UQ}hq) zkg_k?&ZGiC!V>#+DsIL(q$4$5EF;WZQKU9{`j#7yn;?C*)>m&hx zx2}tY@dUlHubBt!<+kgu5r0DRo64+|z>YDdHq%pg9x6<4cUIs~{tCFyXgN>zxra>i59$(D$%Xk;} zSCDJ^_{~OAku;(NXESKO${m1=t2*|N)RBCah;-pv;u%gLH-nR?A1TxEqk|&cH{!oV zOI%RH;kCQc4NMNKNKWYQYYXFtg*%F{qDJXNQ z1m0!JQ1{c}{rybIwh*&w*KG`z@pFmfb25R5;EVJs|IX*V9O-FsyD+w^PV34Swdo3D6J=LoZW!k* z!@~$fI%JKJhllvb!MTc0-#0OIeTSAP*bsG{%=5KruJb8;+d-;JNo{9XW?M07Yi ztO4%f69K*Lx3(b8Z;z)@8ntT1iPmLin%0iVfl*M^r=NbAN8RHSY|8rmgv|m>z=4Pp zHqXATfj~YvXZdo4!0kpp7BDn#wvvA7jqK@XC4egW^p;;ffvEUJu@+Dq5f_fovB09v zgrjPj!Tw%>QmNQe!SDJC(??Z9{Vw{D33y!M{4r|qV9>#kwsFs*iJ7=}?av!=Vd{mq zP$0)CMzvu2c6LhlC|=xW*ip;ElvJZWKO|{NMAk|k`SVt!!_gaYI_>}2_54+=^1-nn zVGxT56X%NsX{bIDbD=bOwWyVkR9kOy`1m~^z`FyL9S}2j995*NZ`B~vjM&tz{$##a z%x%S$XVN82MqQ8ZwOW*cyj7%a*3YcY4WkS`xUIdPpI}R8mpuar?^-44kq~QoXjKeW zUt(?CpCNZk(~LiGDz?nk1)u)t!?e0^@I*ayiY5ZoRaKrNlhFZf z70sXCBFA#>i)E#3*9X{wBXm<5jSj1O(BryG=+i*PXQo)!5)xQ86hd-gT63L*)#K`oqd&PJ7L*I^ppZ>b)rnQi535+YZa&C5euQsd^<}7Olz^AS$qg7DQa;G+OUGhSyQ# zsOqdkILvP}*E^)W*W6Yd$c>duH%VLA#Fnzk<QcpVRM8)A{v9Qs?~AJ z#VqJa0FhufAZO^LGul(t9w<*a-espiW=BabLv9^E1?^1Do3AJ>B;jgfnH~La7AN7` zejl>Bw&YU0gh6bX5f1CUQUjS}ZY_J_N&;P`p&XchGZcm7 z;~A~tDE0CX0@#%oG=E@ohJ`#vW9hkFEGhS~Q-^GK)rDy{5ve6n%eOV?hmF?@S=5_) zAnY@5=$JLWF>eLqxWwClrq915zKVzy75IoSRmFX_j3twc1BA1-Ucb|P5Ao1t92ayE z#}|JUvo4GZLyv~4eaOg`lUU9B@?kqqVnSLtxskA4aG#E|qHn{2J;~${9hP!Znx@y# znl#6m*g>&g^+a|=@WQBMMkXQYKHA)!>a=nW!MAgXCg zIH7+T)L&ib`o(VpXaf#8sn~}cSbD67ebX6d5ktTF_GCAC9R#%IMZIw=oKo)5NpU*N za2#&d7lb_hm=3$>(6A0^^LaC&19mf!Kfi3*0Se76GLm`iJ-CWTj^bv6AHl)GBNPSS z7%QkDxQXG|{7dR(y!u#R!N;O?!!DnZs@ATAl5*h6&D_T9!S+vgK^|Ff{E7vqstYly z>+5omLAE9g)j#O~u12G9nxelDZvYnfW^w#eZ$!D{6QXvc02HlDG;*m3j3~BEJoLgTKVvEmp&01%7MstgE z5TlcY@$)!|nZa|M3%xWJE^k_j5TxSXQOUF0s74+zM3^{g_Qau^n|kGK2|5-mN&@tP zt+3=K+`ph}hPeMqOOM9w-Z_h-O|{xc@zp)TlORD9$0{Q18EfV>*mR(DZNt!!&ljjT zjnjVK)@jz=JG4}X6X!+mmqVET=C0PxJG3wNk6XCVA>upcDaR&zy} zPR(8kXKu*3T2~O;v(xLJ*V)YT6hQZU+T+>gpWdJpM;)JUw|UB^ErM9)ZI$@%saKD6 z%VXNNpqgd=3hl3gTHU>)dD#*F&dA+Ba&lrcS-vF%hhWhC#?{VrT}z%UiJBzbPG(=F zgYINd#MGf^_PgMw_)aad@y)ZkdCu+EWhmUK7lrBcR9gXDtq}LKp__>zF<7uYG$6_1=f$*atr#%i@KKIv_HBm5D}rY8;$AV{&F&x`m5 z<8UcmDq(rDye@W2q((hX%Gv}vQ4#xO3n=)(Q87weRJNm1Sqw7j)G!&s%mrZ_y!{do zRDN&T|K~8JRgh}lutKDlVOCxX==!_p03-uc00j_W1hmgs8$~!EHgJl&!`?dTwWh-M>XdMPow&D81ZmS!UWr< zD~Pn>GT};gZf_TN;)6->zIbk30LmQ&-kARt9bIb{{wdRZE^h!XuIhFczj3|liKE*g zlnX1fx2wLi)Kj1#dFR3u=ovBi>}I2H2W1&;lHJfTpqu4yne^bntx^LU*y5F|C&St1 z4Edg4<(0Q{M19;3UPg`tyJnBzn5GKAWeOn^!&)IGn*Gq~iH#Gn=PyHjCJ3Q)SBc|z z0A7TIYd7LNQ2E9sx{Ll(tqx`D1~N4-;zYHX3z%{6%`beKQ|BrwL}sU~*R<}k!AOee z&t||=#17)`PSwEw2Ye+VdUn12na0`YE-^~O*o9?fQ_i4GyjsL6&|9>Ze!w9qlD}M{zYPH*ITXgMo%eC)D^Ze$rP3#jP3;-eJ z>fGHkZ9dBy)Au**g99Ee5Z)B8O`sY@-u%97WaR4e^A4*LS5`e=HIwLVl&g4wcG*#% z?p4=btf5@6BthZ8?kO`0B2hyhb5FaZS%puV({F}b)Ah8Ph^!yo0VECE z^62u$<3(LeMklwk>9(!-*i97SzGvCSCCvG%gzMR05BO3Gu6!e@7vJlcEVIX@LEHd?N*#-Jc6bE92`M4}gvu6jqeUJA3*tf!e6rAM2 zw~c~`)k@zvG3(e8asrr0iTB7k_QKc4tObD7deR2PNi`NT_4?vQ&jgrQmr&hg33{!@ zW-NaEf?(-c$3*-GKKg^Ngs$ks9hjUnRg5Tm!Z^#QdYCmjj|-q<$*C(>3xVyjDvi+a zPF?;Ci8ec%V#OO5dyU}CK(dq!Br3u&JmLeRIt&5XfSqWrsLDhA3R80OQ97(#-6H3ZY2@sa+JrZT!c^&sUTeO#}u;Z&!nGmdxg z{b2JCPFyVORo-&Yhe0ldfIN>1Uy644S-=LmYWC+d`kiTSi7x_`DTA==|q zsbj3{A}~M%`udv>S=cOX8&$6RWG9(upuv?K=^=hkAhSlIgiHx#Sq|ORieU;B3v9lh z^}+Vdk9ePcvo!-D!8x$u3|1M!Kt}4WmT^d5g`{6)_Q{WVT8_4!%i1m%e%5*>c83Cl-<^y0IL)m(M&G)mlSp&o^(_(>RAh zj`EKHVCLwV9S~N+(0dfVY17tl(LxXuO?b>nPBjD7K`VU=5sdNZL#s+Lt6Pkqd0qu( z`panX`J>wcwX-b)+p)Ej59V9Cl0{y4Gr=cEkCPbgcpxNa&%0%ELpg(lxM1E#EAkJ0 ziSBRO>!0agVRY1qpJi*hi^&kL z6O6&l)D*X*`*a&^Tm+tbsK-*B{;f>Ht12z~XFT_OXum40(Mh@{9&|cTIFk+Zjceuv!?^f~bB;8IT+siU9gIS}PPJFR z7G|h9Nu9Z#Y_b$-Sk^G-);Z|pjVwTf`E>g*1a`kh_TB2Vu0IMR@$IfoI+s>;rgwZK zuFM@wPIiA>5VzqFjQ1WAE4paf?Z{`2E9NJGVuV8zw`+Il?GEG@D4P#|FpoEC0nEwc z;)7SFa$UsnS^O9hz%|qE%Eu>OIxp$oHniHkh;a<;PXo)BQaY-YPX^v2;Nw2sz0_r2 z$6xhhg!0;{^*0XPwMe7JN}hEIDRuYH0?cIUtvkcs5{te{vOGqMW=poqmT-Xfr5t^9 zc^>x=ZN4^uPDRkS`R=ozRhRTtgad{94e5sFHv8k|eKv!BelylAAoEDtX#IrXPG`LH zZV9cz3Yw)(JP?8q7Q9%06EeU*M0>(?vJ%WBm{dp^o%pIyq0A(VAQzx=SC7uV99BEM&injI@OZ`Qxr^c2csJ6 z;r$0m*wE{+5JKmm5~Bp7&|g)e--9$uQ+TEQ(u6S`7ip<$4*6mPi-3O)`=D;lQYiUl zMr@KbVwG_7{6c`lo$7s6@@k#o$@mAoer=;PF;!HtHXmcOL5WZxb+^YsT8}_>Q!scP z4fyjiH1PA*Qos8%zy16rx4B#0;}jl^D3~A4w)Q!4W7gm??5%4S0cUi4ayQ_Rs?H0BQE*R|jw_+naL&6+ij zbSMA<*{78I$_e_Fve$^aqEi_v{F$v^pjhp{>*YqEI!-L)CkQS-$h%cs6FummTOPqz z&F4H{jjeC9m({w^0=c#{z1jKE^8U00aj-*3E;Gw_BE<^VyY$-TAg=liMYaIV8SH~V zjBTC`(TrCXUY78=&|GuHPMOT`l>#Ka)B?t8DQfdLJk&pXYIghzLAhlbdnANtjq?a* zl@C3~JMN%(7-XqQ6Ev1*;)paQAc~#1sV3?_QnbiH+_wwpDJwgE@jyzUraBUV<=dj) z;HbKbikql@5SPCEij9TYiYw;Q@P!f+BBbVP75@i1BT;X$g6>}8FBqrh7d%&{z%C{{ z$h*8ZY~6$|1%PiFb+At)n(V2btz`_Lw@puQ;|)0hlL>simx<;l6_>Ad_Ppbi<>{1H6> zf3Jaq1OX*icINKHOMo1@0G}5eIK@@IHT$WySz+3bMLNkmTN@ABjLU8^ykW?kXqp82 zghMJ99LkA-SHL~aRXzl8 zmnfBPf(WB0UHdrG%n#)sg!ixeDBrUOV^xH=E?NpLw9_L8E|TW_I46)uDkRe>uWH^5 z$4*o|(LxnF)JdTXcX#OfvL*`k0x}!*YWG)0R+E8CRN=~kquqa|r$DDDXty=}B0L_3 zXgo(>HILvL!_X~x^Nb9x7eKDL!xZwT0%>gGq`2+0&(F|+v}Wi2h;GB?5%!JmM`|SJ z1t&Vk(7=3-%PBzmkEO5=)F$T751_xRI9N4DEcFk`fE8j~ZDy%kfJBa4cAVLM); zEMhqcyHMu3pQ*$T+)@mTX#s&0%BAE)TepJ&|GB}AH+Z29=f#ucgw3iLFwe&ng1h|6=afbt7kCG7J(qH}Tjewh zO?c164Rz^Vb-&Vdt&(U9mmjz&tM_L0+6L4j$6L^7M;lxyHj1}dur47bw?i$cM$b9w zLI%Q+$4IP>(+Wvv8#z#7hJMDn$0hAhXsOGgbPQOwlWz4M?oM^h;m>UXegeDX*JzM{|OZbKZ#{o4#D&|C@@)-f2p5xFCvSjd&3-z1)V*posoy|Rcj6|I#f{_umgkhc? z*8IkdmmrIK6&g82OePgXWPZa%zVJUHzf4}G!2657$I%44rb$a_SBu(?tHh$@c{C-S zpOSu6X`#>b+?+nKsdXvYzrsmrt9e#(Ic?HLMa2|s+{|3bK1FPb1NG?F)Y+gIcjd(J zuZqU6dC`FQY~PC$x)0;=s-9$&3s4T0cd#`fmMwQIXorLYP9XC;=wnNbyTBiIi1Jfx o7Y{!FQNTKCaF+pumNq5f#U0qn%Biz)BlyfLhY<;Bfn`u`@ApPPB>(^b literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508220002-Config.rsc b/MikroMaster/20260508/20260508220002-Config.rsc new file mode 100644 index 0000000..5506d58 --- /dev/null +++ b/MikroMaster/20260508/20260508220002-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 22:00:03 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=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" 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!!!! disabled=yes 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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.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.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 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=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-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-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 +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 src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN 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" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=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" 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 check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" 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/20260508/20260508220002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508220002-Diff-Config.rsc new file mode 100644 index 0000000..b11f116 --- /dev/null +++ b/MikroMaster/history/20260508/20260508220002-Diff-Config.rsc @@ -0,0 +1,14 @@ +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4403,4404c4403,4404 +< dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ +< VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +--- +> disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ +> log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 -- 2.52.0